Ver código fonte

removal of folders added

Klaas Freitag 14 anos atrás
pai
commit
cb359ba89d

+ 46 - 19
src/mirall/application.cpp

@@ -12,15 +12,8 @@
  * for more details.
  */
 
-#include <QDebug>
-#include <QDesktopServices>
-#include <QDir>
-#include <QIcon>
-#include <QMenu>
-#include <QNetworkConfigurationManager>
-#include <QSettings>
-#include <QStringList>
-#include <QSystemTrayIcon>
+#include <QtCore>
+#include <QtGui>
 
 #include "mirall/constants.h"
 #include "mirall/application.h"
@@ -57,6 +50,9 @@ Application::Application(int argc, char **argv) :
     _statusDialog = new StatusDialog();
     _folderConfigPath = QDesktopServices::storageLocation(QDesktopServices::DataLocation) + "/folders";
 
+    connect( _statusDialog, SIGNAL(removeFolderAlias( const QString&)),
+             SLOT(slotRemoveFolder(const QString&)));
+
     setupActions();
     setupSystemTray();
 
@@ -207,18 +203,49 @@ void Application::slotAddFolder()
     qDebug() << "* Folder wizard cancelled";
 }
 
+void Application::slotRemoveFolder( const QString& alias )
+{
+  QString configFile = folderConfigPath() + "/" + alias;
+  QFile file( configFile );
+
+  int ret = QMessageBox::question( 0, tr("Confirm Folder Remove"), tr("Do you really want to remove upload folder <i>%1</i>?").arg(alias),
+                                    QMessageBox::Yes|QMessageBox::No );
+
+  if( ret == QMessageBox::No ) {
+    return;
+  }
+
+  if( _folderMap.contains( alias )) {
+    Folder *f = _folderMap.take( alias );
+    delete f;
+  }
+
+  if( file.exists() ) {
+    qDebug() << "Remove folder config file " << configFile;
+    file.remove();
+  }
+
+  SitecopyConfig scConfig;
+  if( ! scConfig.removeFolderConfig( alias ) ) {
+    qDebug() << "Failed to remove folder config for " << alias;
+  } else {
+    setupKnownFolders();
+    _statusDialog->setFolderList( _folderMap );
+  }
+}
+
 void Application::setupKnownFolders()
 {
-    qDebug() << "* Setup folders from " << folderConfigPath();
-
-    _folderMap.clear();
-    QDir dir(folderConfigPath());
-    dir.setFilter(QDir::Files);
-    QStringList list = dir.entryList();
-    foreach (QString file, list) {
-        setupFolderFromConfigFile(file);
-    }
-    if( list.size() ) _tray->setIcon(QIcon::fromTheme(FOLDER_ICON));
+  qDebug() << "* Setup folders from " << folderConfigPath();
+
+  _folderMap.clear();
+  QDir dir(folderConfigPath());
+  dir.setFilter(QDir::Files);
+  QStringList list = dir.entryList();
+  foreach (QString file, list) {
+    setupFolderFromConfigFile(file);
+  }
+  if( list.size() ) _tray->setIcon(QIcon::fromTheme(FOLDER_ICON));
 }
 
 // filename is the name of the file only, it does not include

+ 1 - 0
src/mirall/application.h

@@ -45,6 +45,7 @@ protected slots:
 
     void slotReparseConfiguration();
     void slotAddFolder();
+    void slotRemoveFolder( const QString& );
 
     void slotFolderSyncStarted();
     void slotFolderSyncFinished(const SyncResult &);

+ 1 - 1
src/mirall/owncloudsetup.cpp

@@ -270,7 +270,7 @@ void OwncloudSetup::setupLocalSyncFolder()
   } else {
 
     if( fi.mkpath( syncFolder ) ) {
-      QString targetPath = "/";
+      QString targetPath = "mirall";
       qDebug() << "Successfully created " << fi.path();
 
       // Create a sitecopy config file

+ 31 - 0
src/mirall/sitecopyconfig.cpp

@@ -76,9 +76,19 @@ void SitecopyConfig::writeSiteConfig( const QString& localPath,
 
   qDebug() << "** Now Writing!";
 
+  if( sitecopyConfigToFile() ) {
+    qDebug() << "Success in writing the sitecopy config file.";
+  } else {
+    qDebug() << "Failed to write the sitecopy config file.";
+  }
+}
+
+bool SitecopyConfig::sitecopyConfigToFile()
+{
   QFile configFile( QDir::homePath() + "/.sitecopyrc" );
   if( !configFile.open( QIODevice::WriteOnly | QIODevice::Text )) {
     qDebug() << "Failed to open config file to write.";
+    return false;
   }
   QTextStream out(&configFile);
 
@@ -103,8 +113,29 @@ void SitecopyConfig::writeSiteConfig( const QString& localPath,
                              QFile::ReadOwner | QFile::WriteOwner | QFile::ExeUser );
     }
   }
+  return true;
+}
+
+bool SitecopyConfig::removeFolderConfig( const QString& alias )
+{
+  bool res = false;
+  if( alias.isEmpty() ) return res;
+
+  if( parseSiteConfig() ) {
+    if( _Sites.contains( alias )) {
+      _Sites.remove( alias );
+      if( sitecopyConfigToFile() ) {
+        qDebug() << "Successfully removed sitecopy folder config for " << alias;
+        res = true;
+      }
+    } else {
+      qDebug() << "Can not remove alias " << alias << " - not in sitecopy config.";
+    }
+  }
+  return res;
 }
 
+
 bool SitecopyConfig::parseSiteConfig( )
 {
   QFile configFile( QDir::homePath() + "/.sitecopyrc" );

+ 4 - 0
src/mirall/sitecopyconfig.h

@@ -33,10 +33,14 @@ public:
                         const QString& host, const QString& user,
                         const QString& passwd,
                         const QString& remoteFolder = QString() );
+
+  bool removeFolderConfig( const QString& );
+
   bool parseSiteConfig();
 
 private:
   void processConfigLine( const QString& );
+  bool sitecopyConfigToFile();
 
   QHash<QString, QHash<QString, QString> > _Sites;
   QHash<QString, QString>                  _CurrSite;

+ 8 - 1
src/mirall/statusdialog.cpp

@@ -125,7 +125,14 @@ void StatusDialog::setFolderList( Folder::Map folders )
 
 void StatusDialog::slotRemoveFolder()
 {
-    qDebug() << "Remove Folder!";
+  QModelIndex selected = _folderList->selectionModel()->currentIndex();
+  if( selected.isValid() ) {
+    QString alias = _model->data( selected, FolderViewDelegate::FolderNameRole ).toString();
+    qDebug() << "Remove Folder alias " << alias;
+    if( !alias.isEmpty() ) {
+      emit(removeFolderAlias( alias ));
+    }
+  }
 }
 
 }

+ 1 - 0
src/mirall/statusdialog.h

@@ -45,6 +45,7 @@ public:
     void setFolderList( QHash<QString, Folder*> );
 
 signals:
+    void removeFolderAlias(const QString&);
 
 public slots:
     void slotRemoveFolder();