Index: src-qt4/pc-mounttray/fsDialog.cpp
===================================================================
--- src-qt4/pc-mounttray/fsDialog.cpp	(revision 763957706243f234b9c633e56f4569788f027782)
+++ src-qt4/pc-mounttray/fsDialog.cpp	(revision 891636ad36e661382190989ec3a98ee1ec5e50b1)
@@ -61,5 +61,5 @@
   QHBoxLayout *hb = new QHBoxLayout();
   hb->addStretch();
-  QPushButton *closeButton = new QPushButton("Close");
+  QPushButton *closeButton = new QPushButton(QIcon(":icons/application-exit.png"),tr("Close"));
   hb->addWidget(closeButton);
   hb->addStretch();
Index: src-qt4/pc-mounttray/fsDialog.h
===================================================================
--- src-qt4/pc-mounttray/fsDialog.h	(revision be298e4aee51fda1fe7f281b281c8d753fec3303)
+++ src-qt4/pc-mounttray/fsDialog.h	(revision 891636ad36e661382190989ec3a98ee1ec5e50b1)
@@ -12,4 +12,5 @@
 #include <QBrush>
 #include <QColor>
+#include <QIcon>
 
 #include "fsWatcher.h"
Index: src-qt4/pc-mounttray/fsWatcher.cpp
===================================================================
--- src-qt4/pc-mounttray/fsWatcher.cpp	(revision bb6089a93c3601a82e306f9ccc494153f2f01ed5)
+++ src-qt4/pc-mounttray/fsWatcher.cpp	(revision 891636ad36e661382190989ec3a98ee1ec5e50b1)
@@ -4,4 +4,5 @@
   //setup the timer
   timer = new QTimer();
+  timer->setSingleShot(TRUE);
   QObject::connect(timer, SIGNAL(timeout()), this, SLOT(checkFS()));
 }
@@ -11,5 +12,7 @@
 
 void FSWatcher::start(int ms){ 
-    timer->start(ms); 
+    timer->stop();
+    timer->setInterval(ms); //max time between system checks
+    timer->start(); 
     QTimer::singleShot(2000,this,SLOT(checkFS()) ); //make sure to perform a check when it starts up
 }
@@ -100,5 +103,5 @@
 }
 
-//====== Private Slot =======
+//====== Public Slot =======
 void FSWatcher::checkFS(){
   QStringList devList = getFSmountpoints();
@@ -117,6 +120,8 @@
     emit FSWarning(title,message);
   }
+  timer->start(); //reset the timer again
 }
 
+//===== Calculate Percentages =====
 int FSWatcher::calculatePercentage(int used, int total){
   double U = used;
Index: src-qt4/pc-mounttray/fsWatcher.h
===================================================================
--- src-qt4/pc-mounttray/fsWatcher.h	(revision bb6089a93c3601a82e306f9ccc494153f2f01ed5)
+++ src-qt4/pc-mounttray/fsWatcher.h	(revision 891636ad36e661382190989ec3a98ee1ec5e50b1)
@@ -10,4 +10,5 @@
 #include <QCoreApplication>
 #include <QDebug>
+
 
 class FSWatcher : public QObject
@@ -31,5 +32,5 @@
   static int calculatePercentage(int,int);
   
-private slots:
+public slots:
   void checkFS(); //function in a timer loop
 
Index: src-qt4/pc-mounttray/mountTray.cpp
===================================================================
--- src-qt4/pc-mounttray/mountTray.cpp	(revision d386893c1b485e961b459d1cf4028ba3eb3f9b90)
+++ src-qt4/pc-mounttray/mountTray.cpp	(revision 891636ad36e661382190989ec3a98ee1ec5e50b1)
@@ -21,4 +21,5 @@
   getInitialUsername(); //try to detect the non-root user who is running the program with root permissions
   getDefaultFileManager(); //try to detect the default file-manager for opening the mount directory
+  loadSavedSettings();
   
   trayIcon = new QSystemTrayIcon(this);
@@ -33,5 +34,5 @@
     //Add the setting dialog option seperately
     sysMenu->addSeparator();
-    sysMenu->addAction( QIcon(":icons/config.png"), tr("Settings"), this, SLOT(slotOpenSettings()) );
+    sysMenu->addAction( QIcon(":icons/config.png"), tr("Change Settings"), this, SLOT(slotOpenSettings()) );
     //Add the Close button seperately
     sysMenu->addSeparator();
@@ -57,8 +58,10 @@
   
   //Start up the filesystem watcher
-  qDebug() << "-Starting up the disk space alert system";
   diskWatcher = new FSWatcher();
   connect(diskWatcher,SIGNAL(FSWarning(QString,QString)),this,SLOT(slotDisplayWarning(QString,QString)));
-  diskWatcher->start(3600000); // check every 1 hour in milliseconds
+  if(useDiskWatcher){ 
+    qDebug() << "-Starting up the disk space alert system";
+    diskWatcher->start(diskTimerMaxMS); 
+  }
   
   //Update the tray menu and icons
@@ -173,5 +176,5 @@
 
 void MountTray::newDevdMessage(){	
-  devdTimer->start(1000); //wait 1.5 seconds before checking for device changes
+  devdTimer->start(1500); //wait 1.5 seconds before checking for device changes
   return;
 }
@@ -251,4 +254,7 @@
     }
   } //end loop over cd/dvd devices
+  
+  //Run the disk space check if appropriate
+  if(useDiskWatcher && useDiskTimerDevd && showPopup){ diskWatcher->checkFS(); }
 }
 
@@ -340,4 +346,6 @@
     deviceList[i]->updateItem();
   }
+  //Run the disk check if appropriate
+  if(useDiskWatcher){ diskWatcher->checkFS(); }
 }
 
@@ -349,6 +357,22 @@
 
 void MountTray::slotOpenSettings(){
+  //Stop the refresh timer on the watcher
+  diskWatcher->stop();
   //Open up the settings window and apply changes as necessary
-  qDebug() << "Settings window not implemented yet";
+  SettingsDialog *sdlg = new SettingsDialog();
+  sdlg->useDiskWatcher = useDiskWatcher;
+  sdlg->useDiskAutoTimer = useDiskTimerDevd;
+  sdlg->diskRefreshMS = diskTimerMaxMS;
+  sdlg->showDialog();
+  //Now parse the output and save if necessary
+  if(sdlg->SettingsChanged){
+    useDiskWatcher = sdlg->useDiskWatcher;
+    useDiskTimerDevd = sdlg->useDiskAutoTimer;
+    diskTimerMaxMS = sdlg->diskRefreshMS;
+    qDebug() << "INFO: Saving updated settings to file";
+    saveCurrentSettings(); //update the saved settings
+  }
+  //Now restart the disk watcher if enabled
+  if(useDiskWatcher){ diskWatcher->start(diskTimerMaxMS); }
 }
 
@@ -373,2 +397,63 @@
   trayIcon->showMessage(title, msg , QSystemTrayIcon::Warning,5000 );
 }
+
+void MountTray::loadSavedSettings(){
+  //The saved settings file
+  QString filename = QDir::homePath()+"/.mounttray.settings";
+  //Set the defaults
+  useDiskWatcher=TRUE; useDiskTimerDevd=TRUE;
+  diskTimerMaxMS=3600000; //1 hour refresh timer
+  //Now load the file
+  QFile file(filename);
+  if(file.exists()){
+    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){ 
+      qDebug() << "-Could not open settings file: using defaults";
+      return; 
+    }
+    QTextStream in(&file);
+    while(!in.atEnd()){
+      QString line = in.readLine();
+      if(!line.startsWith("#")){ //skip comment lines
+        QString var = line.section(")",0,0,QString::SectionSkipEmpty).simplified();
+        QString val = line.section(")",1,30,QString::SectionSkipEmpty).simplified();
+        if(var=="UseDiskSpaceMonitoring"){ 
+          if(val.toLower() == "true"){ useDiskWatcher = TRUE;}
+          else{ useDiskWatcher = FALSE; }
+        }else if(var=="UseDiskSpaceDevdTiming"){
+          if(val.toLower() == "true"){ useDiskTimerDevd = TRUE;}
+          else{ useDiskTimerDevd = FALSE; }	
+        }else if(var=="DiskSpaceTimingMaxMilliseconds"){
+          diskTimerMaxMS = val.toInt();	
+        }
+      }
+    }
+    file.close();
+  }else{
+    qDebug() << "-Creating new settings file with defaults";
+    saveCurrentSettings();
+  }
+}
+
+void MountTray::saveCurrentSettings(){
+  //The saved settings file
+  QString filename = QDir::homePath()+"/.mounttray.settings";
+  //Now write the current values to the file
+  QFile file(filename);
+  if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){
+    qDebug() << "ERROR: Could not open file to save settings:"<<filename;
+    return;
+  }
+  QTextStream out(&file);
+  out << "#pc-mounttray saved settings file\n";
+  out << "# DO NOT EDIT: Use the settings dialog in the application instead!!\n";
+  //Save the settings
+  out << "UseDiskSpaceMonitoring)";
+  if(useDiskWatcher){ out << "true\n";}
+  else{ out << "false\n"; }
+  out << "UseDiskSpaceDevdTiming)";
+  if(useDiskTimerDevd){ out << "true\n";}
+  else{ out << "false\n"; }
+  out << "DiskSpaceTimingMaxMilliseconds)"+QString::number(diskTimerMaxMS)+"\n";
+  //Now close the file
+  file.close();
+}
Index: src-qt4/pc-mounttray/mountTray.h
===================================================================
--- src-qt4/pc-mounttray/mountTray.h	(revision d386893c1b485e961b459d1cf4028ba3eb3f9b90)
+++ src-qt4/pc-mounttray/mountTray.h	(revision 891636ad36e661382190989ec3a98ee1ec5e50b1)
@@ -11,4 +11,7 @@
 #include <QList>
 #include <QTimer>
+#include <QDir>
+#include <QFile>
+#include <QTextStream>
 
 #include "menuItem.h"
@@ -16,4 +19,5 @@
 #include "fsWatcher.h"
 #include "fsDialog.h"
+#include "settingsDialog.h"
 
 extern bool DEBUG_MODE;
@@ -62,4 +66,7 @@
   FSWatcher *diskWatcher;
   FSDialog *diskDisplay;
+  //Saved Settings
+  bool useDiskWatcher, useDiskTimerDevd;
+  int diskTimerMaxMS; //milliseconds
 
 
@@ -71,4 +78,6 @@
   void getInitialUsername();
   void getDefaultFileManager();
+  void loadSavedSettings();
+  void saveCurrentSettings();
   
 };
Index: src-qt4/pc-mounttray/pc-mounttray.pro
===================================================================
--- src-qt4/pc-mounttray/pc-mounttray.pro	(revision bb6089a93c3601a82e306f9ccc494153f2f01ed5)
+++ src-qt4/pc-mounttray/pc-mounttray.pro	(revision 891636ad36e661382190989ec3a98ee1ec5e50b1)
@@ -11,5 +11,6 @@
 	devCheck.h \
 	fsWatcher.h \
-	fsDialog.h
+	fsDialog.h \
+	settingsDialog.h
 
 SOURCES	+= main.cpp \
@@ -18,5 +19,6 @@
 	devCheck.cpp \
 	fsWatcher.cpp \
-	fsDialog.cpp
+	fsDialog.cpp \
+	settingsDialog.cpp
 
 RESOURCES += pc-mounttray.qrc
Index: src-qt4/pc-mounttray/pc-mounttray.qrc
===================================================================
--- src-qt4/pc-mounttray/pc-mounttray.qrc	(revision d386893c1b485e961b459d1cf4028ba3eb3f9b90)
+++ src-qt4/pc-mounttray/pc-mounttray.qrc	(revision 891636ad36e661382190989ec3a98ee1ec5e50b1)
@@ -14,4 +14,5 @@
     <file>icons/refresh.png</file>
     <file>icons/config.png</file>
+    <file>icons/checkmark.png</file>
   </qresource>
 </RCC>
Index: src-qt4/pc-mounttray/settingsDialog.cpp
===================================================================
--- src-qt4/pc-mounttray/settingsDialog.cpp	(revision 92b4ba0a0f3ba3fa3c497056759a03106d12f2c8)
+++ src-qt4/pc-mounttray/settingsDialog.cpp	(revision 891636ad36e661382190989ec3a98ee1ec5e50b1)
@@ -45,5 +45,7 @@
   groupDiskWatch->setChecked(useDiskWatcher);
   checkDiskAutoTimer->setChecked(useDiskAutoTimer);
-  spinDiskRefreshMin->setValue(diskRefreshMS/60000);
+  int minutes = diskRefreshMS/60000;
+  //qDebug() << "Refresh Time:"<< QString::number(diskRefreshMS)+" ms, "+QString::number(minutes)+" min";
+  spinDiskRefreshMin->setValue(minutes);
     //Apply signals/slots AFTER setting the values
     connect(groupDiskWatch, SIGNAL(clicked(bool)),this,SLOT(slotUpdateUI(bool)) );
Index: src-qt4/pc-mounttray/settingsDialog.h
===================================================================
--- src-qt4/pc-mounttray/settingsDialog.h	(revision 92b4ba0a0f3ba3fa3c497056759a03106d12f2c8)
+++ src-qt4/pc-mounttray/settingsDialog.h	(revision 891636ad36e661382190989ec3a98ee1ec5e50b1)
@@ -14,4 +14,5 @@
 #include <QLabel>
 #include <QIcon>
+#include <QDebug>
 
 class SettingsDialog : public QDialog{
