[PC-BSD Commits] r21939 - pcbsd/current/src-qt4/pc-mounttray

svn at pcbsd.org svn at pcbsd.org
Thu Mar 21 13:48:55 PDT 2013


Author: kenmoore
Date: 2013-03-21 20:48:55 +0000 (Thu, 21 Mar 2013)
New Revision: 21939

Modified:
   pcbsd/current/src-qt4/pc-mounttray/main.cpp
   pcbsd/current/src-qt4/pc-mounttray/menuItem.cpp
   pcbsd/current/src-qt4/pc-mounttray/menuItem.h
   pcbsd/current/src-qt4/pc-mounttray/mountTray.cpp
   pcbsd/current/src-qt4/pc-mounttray/mountTray.h
   pcbsd/current/src-qt4/pc-mounttray/pc-mounttray.pro
Log:
Large update to pc-mounttray. First add "-v" or "-debug" flag to turn on enhanced debugging output. Completely revamp the devd detection method. Only use devd for the prompt to perform our own device detection method, this should completely remove all the issues with inconsistent devd prompts (1 sec delay after a prompt to let devices settle). Also setup the detection routines in their own class so that we can be sure to only run them once. It also makes it easier to modify the routines later.



Modified: pcbsd/current/src-qt4/pc-mounttray/main.cpp
===================================================================
--- pcbsd/current/src-qt4/pc-mounttray/main.cpp	2013-03-21 15:44:58 UTC (rev 21938)
+++ pcbsd/current/src-qt4/pc-mounttray/main.cpp	2013-03-21 20:48:55 UTC (rev 21939)
@@ -22,7 +22,7 @@
 {
    //Check for root permissions
    QString id = QProcessEnvironment::systemEnvironment().toStringList().filter("LOGNAME=").join(" ").remove("LOGNAME=").simplified();
-   qDebug() << id;
+   //qDebug() << id;
     if( id != "root" ){
       qDebug() << "pc-mounttray requires root permissions for device management!";
       qDebug() << " - HINT: run 'sudo pc-mounttray' instead";

Modified: pcbsd/current/src-qt4/pc-mounttray/menuItem.cpp
===================================================================
--- pcbsd/current/src-qt4/pc-mounttray/menuItem.cpp	2013-03-21 15:44:58 UTC (rev 21938)
+++ pcbsd/current/src-qt4/pc-mounttray/menuItem.cpp	2013-03-21 20:48:55 UTC (rev 21939)
@@ -2,18 +2,21 @@
 #include "menuItem.h"
 
 
-MenuItem::MenuItem(QWidget* parent, QString newdevice, QString label) : QWidgetAction(parent)
+MenuItem::MenuItem(QWidget* parent, QString newdevice, QString newlabel, QString newtype, QString newfs) : QWidgetAction(parent)
 {
-  //MOUNTDIR="/media/";   //Set the direcectory to mount devices in
   AMFILE= QDir::homePath() + "/.pc-automounttray";   //File to save/load all the devices to be automounted
-  //Set the device
+  //Set the device info variables
+  if( !newdevice.startsWith(DEVICEDIR) ){ newdevice.prepend(DEVICEDIR); }
   device = newdevice;
+  devType = newtype;
+  filesystem = newfs;
   //Create the layout
   QGridLayout* layout = new QGridLayout();
   QHBoxLayout* hlayout = new QHBoxLayout();
   //Create the gui items
   devLabel = new QLabel;
     devLabel->setToolTip(device);
+    devLabel->setText(newlabel);
     
   devIcon = new QLabel;
     devIcon->setToolTip(device);
@@ -34,20 +37,11 @@
   frame = new QWidget();
   frame->setLayout(layout);
   this->setDefaultWidget(frame);
-  //QString style = "Border: inset "; 
-  //frame->setStyleSheet(style);
+
   //Connect the signals/slots
   connect(pushMount,SIGNAL(clicked()), this, SLOT(slotMountClicked()));
   connect(checkAutomount,SIGNAL(toggled(bool)),this,SLOT(slotAutoMountToggled(bool)));
-  //Setup the initial device variables
-  QString nLabel;
-  getDevInfo(newdevice,&devType,&nLabel,&filesystem,&maxSize); //this will set the devType, filesystem, and maxSize variables
-  //Device Label/Name
-  if( (!nLabel.isEmpty() && label.isEmpty()) || (!label.startsWith(nLabel)) ){
-    devLabel->setText(nLabel);  //use auto-detected name if none given initially or a better name auto-detected now
-  }else{
-    devLabel->setText(label);  //use the given label
-  }
+
   //Setup the device Icon based on the type
   if(devType == "USB"){ devIcon->setPixmap(QPixmap(":icons/usb.png")); }
   else if(devType == "SATA"){ devIcon->setPixmap(QPixmap(":icons/harddrive.png")); }
@@ -110,140 +104,20 @@
   if(chk.isEmpty() ){ return FALSE; }
   else{ return TRUE; }
 }
-	
-void MenuItem::getDevInfo(QString dev, QString* type, QString* label, QString* filesystem, QString* maxsize){
-  //Clear the output variables
-  type->clear(); label->clear(); filesystem->clear(); maxsize->clear();
-  //make sure to use the absolute path
-  if(!dev.startsWith(DEVICEDIR)){ dev.prepend(DEVICEDIR); }
-  
-  if(!QFile::symLinkTarget(dev).isEmpty()){ return; } //do not follow sym-links
-  //Check for valid device types
-  QStringList validdev, devtype;
-  validdev << "da" << "ad" << "mmcsd" << "cd"         << "acd";
-  devtype << "USB" << "SATA" << "SD"  << "CD9660" << "CD9660";
-  QString node = dev.section("/",-1);
-  QString detType;
-  //QString sptype = node;
-  for(int i=0; i<validdev.length(); i++){
-    if(node.startsWith(validdev[i])){ 
-	detType = devtype[i]; 
-	//sptype.remove(devtype[i]);
-	break; 
+
+//Cleanup function
+void MenuItem::cleanup(){
+  if( isMounted() ){
+    unmountItem(); //unmount and remove mountpoint
+  }else{
+    //Just check for mountpoint removal
+    if(QFile::exists(mountpoint)){
+      qDebug() << "Removing old mountpoint:" << mountpoint;
+      QString output = Utils::runShellCommand("rmdir "+mountpoint).join(" ");
+      if(!output.isEmpty()){ qDebug() << " -Error:" <<output; }
     }
   }
-  //if(sptype.startsWith("s")){ sptype = "SLICE"; }
-  //else{ sptype = "PARTITION"; }
-  
-  //Make sure we quit before running commands on any invalid device nodes
-  if(detType.isEmpty() || !QFile::exists(dev) ){return;}
-  else{type->append(detType);}
-    
-  //Read the Device Info using "file -s <device>"
-  QString cmd = "file -s "+dev;
-  QString output = Utils::runShellCommand(cmd).join(" ");
-  //qDebug() << "File -s output:" << output;
-  
-  // ** Get the max storage size **
-  QStringList tmp = output.split(",");
-  int kb = 0;
-  bool hasPartitions = FALSE; 
-  bool isMounted = FALSE;
-  //qDebug() << "tmp:" << tmp;
-  if( !tmp.filter("partition ").isEmpty() ){
-    //Check for actual sub-devices (*s[#][a/b/c/....])
-    QDir devDir(DEVICEDIR);
-    QStringList subdevs = devDir.entryList(QStringList(node+"*"), QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::System, QDir::NoSort); 
-    if(subdevs.length() > 1){ hasPartitions = TRUE; } //the main device will always make it length 1
-  }
-  if( !tmp.filter("last mounted on /").isEmpty() ){
-    isMounted = TRUE;
-  }
-  //Now try to get the size of the disk
-  if( !tmp.filter("number of data blocks").isEmpty() ){
-    tmp = tmp.filter("number of data blocks");
-    kb = tmp[0].remove("number of data blocks").simplified().toInt();
-  }else if( !tmp.filter("number of blocks").isEmpty() ){
-    tmp = tmp.filter("number of blocks");
-    kb = tmp[0].remove("number of blocks").simplified().toInt();
-  }else if( !tmp.filter("hidden sectors").isEmpty()){
-    tmp = tmp.filter("hidden sectors");
-    kb = tmp[0].remove("hidden sectors").simplified().toInt();
-  }else if( !tmp.filter("sectors").isEmpty()){
-    tmp = tmp.filter("sectors");
-    //qDebug() << "Det Sectors line:"<<tmp;
-    int num=0;
-    for(int i=0; i<tmp.length(); i++){
-      int n = tmp[i].remove("sectors").section("(",0,0).simplified().toInt();
-      if(n > num){ num = n; }
-    }
-    kb = num;
-  }else{ kb = -1; }
-  bool oksize = (kb > 0);
-  // ** Get the device label **
-  //Get the device label if there is one using glabel
-  QString dlabel;
-  bool hasLabel = FALSE;
-  QString shortDev = dev.section("/",-1);
-    QString glout = Utils::runShellCommandSearch("glabel status "+shortDev, shortDev);
-    if(!glout.contains("No such geom:")){
-      QStringList entries = glout.split("  ", QString::SkipEmptyParts); //should be 3 entries, only need the first
-      //qDebug() << " - entries:" << entries;
-      QString lab = entries[0].simplified();
-      //save the device label
-      dlabel = lab.section("/",-1);
-      hasLabel = TRUE;
-    }
-  //Alternate method to get the device label using the "file -s" output
-  if(dlabel.isEmpty()){
-    dlabel = output.section("label: \"",1,1).section("\"",0,0).simplified(); //device name
-    if( !dlabel.isEmpty() ) { hasLabel = TRUE; }
-  }
-  //qDebug() <<"Detected Size:"<<kb<<"Label:"<<dlabel;
-  //Assign a Name/Label for the device
-  if(dlabel.isEmpty()){
-    dlabel = *type+"-Device"; //this is not a "detected" label
-  }
-  
-  // - trim the label out of the output line for filesystem type detection
-  QString devFSsec = output.section("label:",0,0);
-  QString devFSsec2 = output.section("label:",1,3).section(",",1,1,QString::SectionSkipEmpty);
-  
-  // ** Find the filesystem type for the device **
-  QString filesys;
-  QStringList fsdetect, fslabel;
-  fsdetect << "FAT" << "NTFS" << "EXT" << "ISO 9660" << "Unix Fast File system" << "Reiser" << "XFS"; //string to match for a particular filesystem
-  fslabel << "FAT" << "NTFS" << "EXT" << "CD9660" << "UFS" << "REISERFS" << "XFS"; //internal labels for the filesystems
-  for(int i=0; i<fsdetect.length(); i++){
-    if(devFSsec.contains(fsdetect[i]) || devFSsec2.contains(fsdetect[i]) ){
-      filesys = fslabel[i]; 
-    }
-  }
-  //If the filesystem could not be detected or is not supported
-  bool hasFS = TRUE;
-  if(filesys.isEmpty()){ filesys = "UNKNOWN"; hasFS=FALSE; }
-  
-  //Now perform the final checks to see if it is a good device
-  bool good = FALSE;
-  if( isMounted ){}//Always ignore this device (local FreeBSD installation that is being used)
-  else if( hasPartitions ){} //Ignore devices that have partitions accessible as seperate devices
-  //Allow devices that match 2 of the 3 criteria
-  else if( hasFS && oksize ){ good = TRUE; } //This will catch most good devices
-  else if( hasLabel && oksize ){ good = TRUE; } //allow unknown filesystems if there is a good size reading
-  else if( hasFS && hasLabel ){ good = TRUE; } // allow device if it has a known label and filesystem
-  
-  //Now setup the outputs as appropriate
-  if(good){
-    maxsize->append( QString::number(kb) );
-    label->append(dlabel);
-    filesystem->append(filesys);
-  }else{
-    qDebug() << "Invalid Device:" << node << detType << dlabel << filesys << kb; 
-    if(DEBUG_MODE){qDebug() << " -Detected Flags:" << isMounted << hasPartitions << hasLabel << hasFS << oksize;} 
-  }
-
 }
-
 /*
   PRIVATE FUNCTIONS
 */
@@ -262,7 +136,7 @@
 
 void MenuItem::slotAutoMountToggled(bool checked){
   qDebug() << "Auto-mount toggled for:" << device << checked;
-  QString entry = devLabel->text()+":::"+devType+":::"+filesystem+":::"+maxSize;
+  QString entry = devLabel->text()+":::"+devType+":::"+filesystem;
   if(checked){
     //Add this entry to the auto-mount file
     QString cmd = "echo \""+entry+"\" >> "+AMFILE;
@@ -278,7 +152,7 @@
 bool MenuItem::checkSavedAutoMount(){
   if(QFile::exists(AMFILE)){
     QString cmd = "cat "+AMFILE;
-    QString search = devLabel->text() +" "+ devType +" "+ filesystem +" "+ maxSize;
+    QString search = devLabel->text() +" "+ devType +" "+ filesystem;
     QString chk = Utils::runShellCommandSearch(cmd, search);
     if( chk.isEmpty() ){ return FALSE; }
     else{ return TRUE; }

Modified: pcbsd/current/src-qt4/pc-mounttray/menuItem.h
===================================================================
--- pcbsd/current/src-qt4/pc-mounttray/menuItem.h	2013-03-21 15:44:58 UTC (rev 21938)
+++ pcbsd/current/src-qt4/pc-mounttray/menuItem.h	2013-03-21 20:48:55 UTC (rev 21939)
@@ -25,7 +25,7 @@
 	Q_OBJECT
 
   public:
-	MenuItem(QWidget* parent = 0, QString newdevice = "", QString label = "");
+	MenuItem(QWidget* parent = 0, QString newdevice="", QString newlabel="", QString newtype="", QString newfs="");
 	~MenuItem();
 	
 	QString device;
@@ -45,12 +45,12 @@
 	//Device information
 	bool isConnected();
 	bool isMounted();
-	//static function for getting a device's info
-	static void getDevInfo(QString, QString*, QString*, QString*, QString*);
-        
+	
+	//Device Cleanup
+	void cleanup();
+	
   private:
 	QWidget *frame;
-	//QString MOUNTDIR;
   	QLabel* devLabel;
   	QLabel* devIcon;
   	QProgressBar* currentSpace;

Modified: pcbsd/current/src-qt4/pc-mounttray/mountTray.cpp
===================================================================
--- pcbsd/current/src-qt4/pc-mounttray/mountTray.cpp	2013-03-21 15:44:58 UTC (rev 21938)
+++ pcbsd/current/src-qt4/pc-mounttray/mountTray.cpp	2013-03-21 20:48:55 UTC (rev 21939)
@@ -12,14 +12,16 @@
 #include <pcbsd-hardware.h>
 #include <pcbsd-utils.h>
 
+MountTray::~MountTray(){
+}
+
 void MountTray::programInit()
 {
+  DCheck = new DevCheck(); //initialize class for checking devices
   qDebug() << "pc-mounttray: starting up";
-  //DEVICEDIR = "/dev/";  //Directory that new devices are discovered
-  //MOUNTDIR = "/media/"; //Directory that all devices get mounted to
   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
-
+  
   trayIcon = new QSystemTrayIcon(this);
   trayIconMenu = new QMenu();
 	
@@ -32,6 +34,9 @@
 
   //Startup the devd watching process
   qDebug() << "-Starting up the DEVD watcher";
+  devdTimer = new QTimer();
+  devdTimer->setSingleShot(TRUE);
+  connect(devdTimer,SIGNAL(timeout()),this,SLOT(slotDevChanges()));
   startupDevdProc();
   
   //Do an initial scan of the devices with dmesg
@@ -88,20 +93,8 @@
 }
 
 void MountTray::scanInitialDevices(){
-  //Scan the /dev/ directory for all valid devices and check them 
-  QDir dir(DEVICEDIR);
-  QStringList allDevs = dir.entryList( QDir::System | QDir::NoDotAndDotDot | QDir::NoSymLinks );
-  //Now that we have a quick and dirty list, lets clean it up 
-  QString dType, dLabel, dFS, dSize;
-  for(int i=0; i<allDevs.length(); i++){
-    //Run it through the device info function to filter out all the "invalid" devices (audio, USB hubs, etc...)
-    MenuItem::getDevInfo(allDevs[i], &dType, &dLabel, &dFS, &dSize);
-    if( !dType.isEmpty() && !dLabel.isEmpty() && !dFS.isEmpty() ){ // ignore devices that fail the information check
-        //Add the device to the menu list
-	addDevice(allDevs[i], dLabel);
-    }
-  }
-  
+  slotDevChanges(FALSE);
+  return;
 }
 
 int MountTray::findDeviceInList(QString newDev){
@@ -111,7 +104,7 @@
   return -1;
 }
 
-void MountTray::addDevice(QString dev, QString label){
+void MountTray::addDevice(QString dev, QString label, QString type, QString filesys){
   if(!dev.startsWith(DEVICEDIR)){ dev.prepend(DEVICEDIR); }
   
   //Check if the device is already in the list
@@ -123,8 +116,9 @@
   //See if the label is unique as well, otherwise add a number to the end to make it unique
   if(tot > 0 && !label.isEmpty()){ label.append("-"+QString::number(tot)); }
  
+  qDebug() << "Valid Device Connection:" << dev << type << label << filesys;
   //Create the menu item (will automount if necessary)
-  MenuItem *tmp = new MenuItem(this, dev, label);
+  MenuItem *tmp = new MenuItem(this, dev, label, type, filesys);
   //connect the signals/slots
   connect(tmp, SIGNAL(itemMounted(QString)), this, SLOT(openMediaDir(QString)) );
   connect(tmp, SIGNAL(newMessage(QString,QString)), this, SLOT(slotDisplayPopup(QString,QString)) );
@@ -141,9 +135,11 @@
   int index = findDeviceInList(dev);
   if( index == -1 ){ return; } //does not exist, do nothing
   //Remove the menu entry from the list
+  deviceList[index]->cleanup(); //make sure it is unmounted with mountpoint removed
   deviceList.removeAt(index);
   //Update the menu
   updateMenu();
+  qDebug() << "Valid Device Removal:" <<  dev;
 }
 
 void MountTray::slotTrayActivated(QSystemTrayIcon::ActivationReason reason) {
@@ -163,57 +159,67 @@
   }
 }
 
-void MountTray::newDevdMessage(){
-  //Make sure there are not multiple lines output at the same time
-  QStringList lList;
-  while(devdProc->canReadLine()){
-    lList << devdProc->readLine();
+void MountTray::newDevdMessage(){	
+  devdTimer->start(1000); //wait 1.5 seconds before checking for device changes
+  return;
+}
+
+void MountTray::slotDevChanges(bool showPopup){
+  if(DEBUG_MODE){ qDebug() << "Checking for Device Changes:"; }
+  //oldsysdev is the old device list for the system
+  QStringList osd = oldsysdev;
+  QStringList nsd = DCheck->devChildren("");
+  nsd.sort();
+  oldsysdev = nsd; //save the new list as the old list for later
+  //Now determine new/missing devices
+  nsd.sort();
+  QStringList rmList;
+  for(int i=0; i<osd.length(); i++){
+    int ni = nsd.indexOf(osd[i]); //new index
+    if( ni == -1){ //device removed
+      rmList << osd[i];
+      osd.removeAt(i);
+      i--;
+    }else{ //both lists have device
+      osd.removeAt(i); i--;
+      nsd.removeAt(ni);
+    }
   }
-  //Parse each line seperately
-  for(int i=0; i<lList.length(); i++){
-    QString line = lList[i];
-    bool isAttached=FALSE;
-    bool deviceFound=FALSE;
-    QString cdev, cdevtype, dlab, dmax, dfs;
-    int index;
-    if(line.startsWith("!system=DEVFS")){
-      //qDebug() << line;
-      QString type = line.section("type=",1,1).section(" ",0,0).simplified();
-      cdev = line.section("cdev=",1,1).section(" ",0,0).simplified();
-      cdev.prepend("/dev/");
-      if(type=="CREATE"){ 
-        isAttached=TRUE;
-        if(DEBUG_MODE){qDebug() << "New device attached:" << cdev;}
+  //all that is left in nsd is the new additions
+
+  //Remove any devices that have been disconnected
+  for(int i=0; i<rmList.length(); i++){
+    if(DEBUG_MODE){ qDebug() << "Device Removals:" << rmList; }
+    removeDevice(rmList[i]);
+  }
+  //Add any devices that have been connected
+  for(int i=0; i<nsd.length(); i++){
+    if(DEBUG_MODE){ qDebug() << "Device Additions:" << nsd; }  
+    //Check if it is a good device
+    QString dlabel, dtype, dfs, dsize; //additional output info
+    bool good = DCheck->devInfo(nsd[i],&dtype,&dlabel,&dfs,&dsize);
+    if(good){
+      //Now create a new entry for this device
+      addDevice(nsd[i],dlabel,dtype,dfs);  
+      //Show a message bubble
+      if(showPopup){
+        QString title = tr("New Device");
+        QString message = QString( tr("%1 can now be accessed")).arg(dlabel);
+        slotDisplayPopup(title, message);
       }
-      MenuItem::getDevInfo(cdev, &cdevtype, &dlab, &dfs, &dmax);
-	    
-      //If device is recognized - make sure it is also valid
-      index = findDeviceInList(cdev);
-      if( !cdevtype.isEmpty() ){
-        if( isAttached && !dlab.isEmpty() && (index == -1) ){ deviceFound = TRUE; }
-	
-      }else if( !isAttached && ( index != -1) ){ deviceFound = TRUE; }
     }
-    //Perform action if a device is found
-    if(deviceFound){
-      if(isAttached){
-        qDebug() << "New valid device:" << dlab << cdev << cdevtype << dfs << dmax;
-	addDevice(cdev,dlab);  
-	QString title = tr("New Device");
-	QString message = QString( tr("%1 can now be accessed")).arg(dlab);
-	slotDisplayPopup(title, message);
-      }else{
-	removeDevice(cdev);
-        qDebug() << "Valid device removal detected:" <<  cdev;
-      }
-    }
-  } // end loop over all devd output lines
+  }
+
 }
-
 void MountTray::closeTray(){
   qDebug() << "pc-mounttray: closing down";
   //Kill the devd watching process
+  qDebug() << " -Shutting down DEVD watcher";
   devdProc->disconnectFromServer();
+  qDebug() << " -Unmounting managed devices and mount points";
+  for(int i=0; i<deviceList.length(); i++){
+    deviceList[i]->cleanup();
+  }
   //Close down the application
   exit(0);
 }
@@ -283,6 +289,7 @@
 
 void MountTray::slotRescan(){
   //Display a notification
+  qDebug() << "Re-scanning devices:";
   slotDisplayPopup(tr("Please Wait"),tr("Rescanning devices attached to the system"));
   //Rescan the device list for new devices
   scanInitialDevices();

Modified: pcbsd/current/src-qt4/pc-mounttray/mountTray.h
===================================================================
--- pcbsd/current/src-qt4/pc-mounttray/mountTray.h	2013-03-21 15:44:58 UTC (rev 21938)
+++ pcbsd/current/src-qt4/pc-mounttray/mountTray.h	2013-03-21 20:48:55 UTC (rev 21939)
@@ -2,15 +2,17 @@
 #define MOUNT_TRAY_H
 
 // QT Includes
-//#include <qpair.h>
 #include <QDialog>
 #include <QSystemTrayIcon>
 #include <QMenu>
 #include <QLocalSocket>
 #include <QString>
 #include <QPixmap>
+#include <QList>
+#include <QTimer>
 
 #include "menuItem.h"
+#include "devCheck.h"
 
 extern bool DEBUG_MODE;
 extern QString DEVICEDIR;
@@ -29,12 +31,13 @@
    }
    void programInit();
    
-   virtual ~MountTray() {};
+   ~MountTray();
    
 private slots:
   void closeTray();
   void slotSingleInstance();
   void newDevdMessage();
+  void slotDevChanges(bool showPopup = TRUE);
   void slotTrayActivated(QSystemTrayIcon::ActivationReason);
   void slotOpenMediaDir();
   void openMediaDir(QString); 
@@ -43,20 +46,22 @@
   void slotRescan();
   
 private:
-  //QString MOUNTDIR, DEVICEDIR;
+  DevCheck *DCheck;
   QString USERNAME, FILEMAN;
   QLocalSocket* devdProc;
+  QTimer *devdTimer;  
   int numMount, numAvail;
   QSystemTrayIcon* trayIcon;
   QMenu* trayIconMenu;
   QList<MenuItem*> deviceList;
+  QStringList oldsysdev;
 
+
   void updateMenu();
   void scanInitialDevices();
   int findDeviceInList(QString);
-  void addDevice(QString,QString);
+  void addDevice(QString,QString,QString,QString);
   void startupDevdProc();
-  void setDeviceIcon(QAction*);
   void getInitialUsername();
   void getDefaultFileManager();
 

Modified: pcbsd/current/src-qt4/pc-mounttray/pc-mounttray.pro
===================================================================
--- pcbsd/current/src-qt4/pc-mounttray/pc-mounttray.pro	2013-03-21 15:44:58 UTC (rev 21938)
+++ pcbsd/current/src-qt4/pc-mounttray/pc-mounttray.pro	2013-03-21 20:48:55 UTC (rev 21939)
@@ -6,9 +6,9 @@
 
 LIBS    += -L../libpcbsd -lQtSolutions_SingleApplication-head -lpcbsd
 
-HEADERS	+= mountTray.h menuItem.h
+HEADERS	+= mountTray.h menuItem.h devCheck.h
 
-SOURCES	+= main.cpp mountTray.cpp menuItem.cpp
+SOURCES	+= main.cpp mountTray.cpp menuItem.cpp devCheck.cpp
 
 RESOURCES += pc-mounttray.qrc
 



More information about the Commits mailing list