From 53ac5427a83db13cd22ad2c772a7b188ac57d986 Mon Sep 17 00:00:00 2001 From: Klaas Freitag Date: Tue, 8 Oct 2013 14:12:05 +0200 Subject: [PATCH] Integrate progress dialog into settings dialog. --- src/CMakeLists.txt | 6 +-- src/mirall/accountsettings.cpp | 3 +- src/mirall/accountsettings.h | 5 +- src/mirall/application.h | 1 - src/mirall/owncloudgui.cpp | 24 ++++------ src/mirall/owncloudgui.h | 4 +- ...mprogressdialog.cpp => protocolwidget.cpp} | 47 ++++++++----------- ...{itemprogressdialog.h => protocolwidget.h} | 23 ++++----- ...temprogressdialog.ui => protocolwidget.ui} | 6 +-- src/mirall/settingsdialog.cpp | 16 ++++++- src/mirall/settingsdialog.h | 3 ++ 11 files changed, 66 insertions(+), 72 deletions(-) rename src/mirall/{itemprogressdialog.cpp => protocolwidget.cpp} (89%) rename src/mirall/{itemprogressdialog.h => protocolwidget.h} (74%) rename src/mirall/{itemprogressdialog.ui => protocolwidget.ui} (93%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e765e1b2d..7caabe9c0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -187,7 +187,7 @@ mirall/generalsettings.ui mirall/networksettings.ui mirall/accountsettings.ui mirall/ignorelisteditor.ui -mirall/itemprogressdialog.ui +mirall/protocolwidget.ui wizard/owncloudsetupnocredspage.ui wizard/owncloudhttpcredspage.ui wizard/owncloudwizardresultpage.ui @@ -201,6 +201,7 @@ set(mirall_SRCS mirall/systray.cpp mirall/folderwizard.cpp mirall/folderstatusmodel.cpp + mirall/protocolwidget.cpp wizard/owncloudwizard.cpp wizard/owncloudsetuppage.cpp wizard/owncloudhttpcredspage.cpp @@ -218,7 +219,6 @@ set(mirall_SRCS mirall/networksettings.cpp mirall/accountsettings.cpp mirall/ignorelisteditor.cpp - mirall/itemprogressdialog.cpp mirall/owncloudgui.cpp mirall/socketapi.cpp ) @@ -244,7 +244,7 @@ set(mirall_HEADERS mirall/networksettings.h mirall/accountsettings.h mirall/ignorelisteditor.h - mirall/itemprogressdialog.h + mirall/protocolwidget.h mirall/owncloudgui.h mirall/socketapi.h ) diff --git a/src/mirall/accountsettings.cpp b/src/mirall/accountsettings.cpp index 0ced6ee55..0c1d0056f 100644 --- a/src/mirall/accountsettings.cpp +++ b/src/mirall/accountsettings.cpp @@ -25,7 +25,6 @@ #include "mirall/owncloudsetupwizard.h" #include "mirall/mirallconfigfile.h" #include "mirall/ignorelisteditor.h" -#include "mirall/itemprogressdialog.h" #include @@ -749,7 +748,7 @@ void AccountSettings::slotIgnoreFilesEditor() void AccountSettings::slotInfoAboutCurrentFolder() { - emit(openProgressDialog()); + emit(openProtocol()); } AccountSettings::~AccountSettings() diff --git a/src/mirall/accountsettings.h b/src/mirall/accountsettings.h index a66aa7622..0fffad85e 100644 --- a/src/mirall/accountsettings.h +++ b/src/mirall/accountsettings.h @@ -23,7 +23,6 @@ #include "mirall/folder.h" #include "mirall/progressdispatcher.h" -#include "mirall/itemprogressdialog.h" class QStandardItemModel; class QModelIndex; @@ -38,7 +37,6 @@ class AccountSettings; } class FolderMan; -class ItemProgressDialog; class IgnoreListEditor; class AccountSettings : public QWidget @@ -54,7 +52,7 @@ public: signals: void folderChanged(); - void openProgressDialog(); + void openProtocol(); void openFolderAlias( const QString& ); void infoFolderAlias( const QString& ); @@ -94,7 +92,6 @@ private: void showConnectionLabel( const QString& message, const QString& tooltip = QString() ); Ui::AccountSettings *ui; - QPointer _fileItemDialog; QPointer _ignoreEditor; QStandardItemModel *_model; QUrl _OCUrl; diff --git a/src/mirall/application.h b/src/mirall/application.h index a45f5c59e..18bbb3a3e 100644 --- a/src/mirall/application.h +++ b/src/mirall/application.h @@ -43,7 +43,6 @@ class FolderWatcher; class ownCloudInfo; class SslErrorDialog; class SettingsDialog; -class ItemProgressDialog; class SocketApi; class Application : public SharedTools::QtSingleApplication diff --git a/src/mirall/owncloudgui.cpp b/src/mirall/owncloudgui.cpp index bf5b69c9c..82d5371e5 100644 --- a/src/mirall/owncloudgui.cpp +++ b/src/mirall/owncloudgui.cpp @@ -19,7 +19,6 @@ #include "mirall/mirallconfigfile.h" #include "mirall/utility.h" #include "mirall/progressdispatcher.h" -#include "mirall/itemprogressdialog.h" #include "mirall/owncloudsetupwizard.h" #include "mirall/settingsdialog.h" #include "mirall/logger.h" @@ -35,7 +34,6 @@ ownCloudGui::ownCloudGui(Application *parent) : QObject(parent), _tray(0), _settingsDialog(0), - _progressDialog(0), _logBrowser(0), _contextMenu(0), _recentActionsMenu(0), @@ -118,9 +116,10 @@ void ownCloudGui::slotSyncStateChange( const QString& alias ) qDebug() << "Sync state changed for folder " << alias << ": " << result.statusString(); - if( _progressDialog ) { - _progressDialog->setSyncResult(result); - } + // Promote sync result to settings-dialog for sync protocol? + // if( _progressDialog ) { + // _progressDialog->setSyncResult(result); + // } if (result.status() == SyncResult::Success || result.status() == SyncResult::Error) { Logger::instance()->enterNextLogFile(); } @@ -315,7 +314,7 @@ void ownCloudGui::setupActions() _actionRecent = new QAction(tr("Details..."), this); _actionRecent->setEnabled( true ); - QObject::connect(_actionRecent, SIGNAL(triggered(bool)), SLOT(slotItemProgressDialog())); + QObject::connect(_actionRecent, SIGNAL(triggered(bool)), SLOT(slotShowSyncProtocol())); QObject::connect(_actionSettings, SIGNAL(triggered(bool)), SLOT(slotSettings())); _actionHelp = new QAction(tr("Help"), this); QObject::connect(_actionHelp, SIGNAL(triggered(bool)), SLOT(slotHelp())); @@ -441,22 +440,17 @@ void ownCloudGui::slotSettings() Utility::raiseDialog(_settingsDialog.data()); } -void ownCloudGui::slotItemProgressDialog() +// open sync protocol widget +void ownCloudGui::slotShowSyncProtocol() { - if (_progressDialog.isNull()) { - _progressDialog = new ItemProgressDialog(_app); - _progressDialog->setAttribute( Qt::WA_DeleteOnClose, true ); - _progressDialog->setupList(); - _progressDialog->show(); - } - Utility::raiseDialog(_progressDialog.data()); + slotSettings(); // FIXME: Show the protocol tab. + _settingsDialog->slotShowProtocol(); } void ownCloudGui::slotShutdown() { // those do delete on close if (!_settingsDialog.isNull()) _settingsDialog->close(); - if (!_progressDialog.isNull()) _progressDialog->close(); if (!_logBrowser.isNull()) _logBrowser->deleteLater(); } diff --git a/src/mirall/owncloudgui.h b/src/mirall/owncloudgui.h index df8affa5f..70beb4d4b 100644 --- a/src/mirall/owncloudgui.h +++ b/src/mirall/owncloudgui.h @@ -27,7 +27,6 @@ namespace Mirall { class SettingsDialog; -class ItemProgressDialog; class Application; class LogBrowser; @@ -56,7 +55,7 @@ public slots: void slotUpdateProgress(const QString &folder, const Progress::Info& progress); void slotShowGuiMessage(const QString &title, const QString &message); void slotFoldersChanged(); - void slotItemProgressDialog(); + void slotShowSyncProtocol(); void slotSettings(); void slotShutdown(); void slotSyncStateChange( const QString& alias ); @@ -74,7 +73,6 @@ private: QPointer _tray; QPointer _settingsDialog; - QPointer _progressDialog; QPointer_logBrowser; // tray's menu QMenu *_contextMenu; diff --git a/src/mirall/itemprogressdialog.cpp b/src/mirall/protocolwidget.cpp similarity index 89% rename from src/mirall/itemprogressdialog.cpp rename to src/mirall/protocolwidget.cpp index ede516470..0659efd3b 100644 --- a/src/mirall/itemprogressdialog.cpp +++ b/src/mirall/protocolwidget.cpp @@ -16,7 +16,7 @@ #include #endif -#include "mirall/itemprogressdialog.h" +#include "mirall/protocolwidget.h" #include "mirall/syncresult.h" #include "mirall/logger.h" #include "mirall/utility.h" @@ -24,23 +24,23 @@ #include "mirall/folderman.h" #include "mirall/syncfileitem.h" -#include "ui_itemprogressdialog.h" +#include "ui_protocolwidget.h" namespace Mirall { -ItemProgressDialog::ItemProgressDialog(Application*, QWidget *parent) : - QDialog(parent), +ProtocolWidget::ProtocolWidget(QWidget *parent) : + QWidget(parent), ErrorIndicatorRole( Qt::UserRole +1 ), - _ui(new Ui::ItemProgressDialog) + _ui(new Ui::ProtocolWidget) { _ui->setupUi(this); - connect(_ui->_dialogButtonBox->button(QDialogButtonBox::Close), SIGNAL(clicked()), - this, SLOT(accept())); + + _ui->_errorLabel->setVisible(false); connect(ProgressDispatcher::instance(), SIGNAL(progressInfo(QString,Progress::Info)), this, SLOT(slotProgressInfo(QString,Progress::Info))); connect(ProgressDispatcher::instance(), SIGNAL(progressSyncProblem(const QString&,const Progress::SyncProblem&)), - this, SLOT(slotProgressErrors(const QString&, const Progress::SyncProblem&))); + this, SLOT(slotProgressProblem(const QString&, const Progress::SyncProblem&))); connect(_ui->_treeWidget, SIGNAL(itemActivated(QTreeWidgetItem*,int)), SLOT(slotOpenFile(QTreeWidgetItem*,int))); @@ -61,11 +61,9 @@ ItemProgressDialog::ItemProgressDialog(Application*, QWidget *parent) : QPushButton *copyBtn = _ui->_dialogButtonBox->addButton(tr("Copy"), QDialogButtonBox::ActionRole); connect(copyBtn, SIGNAL(clicked()), SLOT(copyToClipboard())); - setWindowTitle(tr("Sync Protocol")); + } -} - -void ItemProgressDialog::setSyncResultStatus(const SyncResult& result ) +void ProtocolWidget::setSyncResultStatus(const SyncResult& result ) { if( result.errorStrings().count() ) { _ui->_errorLabel->setVisible(true); @@ -94,7 +92,7 @@ void ItemProgressDialog::setSyncResultStatus(const SyncResult& result ) } -void ItemProgressDialog::setSyncResult( const SyncResult& result ) +void ProtocolWidget::setSyncResult( const SyncResult& result ) { setSyncResultStatus(result); @@ -167,7 +165,7 @@ void ItemProgressDialog::setSyncResult( const SyncResult& result ) } } -void ItemProgressDialog::setupList() +void ProtocolWidget::setupList() { // get the folders to set up the top level list. Folder::Map map = FolderMan::instance()->map(); @@ -199,17 +197,17 @@ void ItemProgressDialog::setupList() QList problemList = ProgressDispatcher::instance()->recentProblems(0); foreach( Progress::SyncProblem prob, problemList ) { - slotProgressErrors(prob.folder, prob); + slotProgressProblem(prob.folder, prob); folderHash[prob.folder] = 1; } } -ItemProgressDialog::~ItemProgressDialog() +ProtocolWidget::~ProtocolWidget() { delete _ui; } -void ItemProgressDialog::copyToClipboard() +void ProtocolWidget::copyToClipboard() { QString text; QTextStream ts(&text); @@ -238,12 +236,7 @@ void ItemProgressDialog::copyToClipboard() emit guiLog(tr("Copied to clipboard"), tr("The sync protocol has been copied to the clipboard.")); } -void ItemProgressDialog::accept() -{ - QDialog::accept(); -} - -void ItemProgressDialog::cleanErrors( const QString& folder ) // FIXME: Use the folder to detect which errors can be deleted. +void ProtocolWidget::cleanErrors( const QString& folder ) // FIXME: Use the folder to detect which errors can be deleted. { _problemCounter = 0; QList wipeList; @@ -261,7 +254,7 @@ void ItemProgressDialog::cleanErrors( const QString& folder ) // FIXME: Use the qDeleteAll(wipeList.begin(), wipeList.end()); } -QString ItemProgressDialog::timeString(QDateTime dt, QLocale::FormatType format) const +QString ProtocolWidget::timeString(QDateTime dt, QLocale::FormatType format) const { QLocale loc = QLocale::system(); QString timeStr; @@ -279,7 +272,7 @@ QString ItemProgressDialog::timeString(QDateTime dt, QLocale::FormatType format) return timeStr; } -void ItemProgressDialog::slotProgressErrors( const QString& folder, const Progress::SyncProblem& problem ) +void ProtocolWidget::slotProgressProblem( const QString& folder, const Progress::SyncProblem& problem ) { QStringList columns; QString timeStr = timeString(problem.timestamp); @@ -306,7 +299,7 @@ void ItemProgressDialog::slotProgressErrors( const QString& folder, const Progre Q_UNUSED(item); } -void ItemProgressDialog::slotOpenFile( QTreeWidgetItem *item, int ) +void ProtocolWidget::slotOpenFile( QTreeWidgetItem *item, int ) { QString folderName = item->text(2); QString fileName = item->text(1); @@ -320,7 +313,7 @@ void ItemProgressDialog::slotOpenFile( QTreeWidgetItem *item, int ) } } -void ItemProgressDialog::slotProgressInfo( const QString& folder, const Progress::Info& progress ) +void ProtocolWidget::slotProgressInfo( const QString& folder, const Progress::Info& progress ) { if( progress.kind == Progress::StartSync ) { cleanErrors( folder ); diff --git a/src/mirall/itemprogressdialog.h b/src/mirall/protocolwidget.h similarity index 74% rename from src/mirall/itemprogressdialog.h rename to src/mirall/protocolwidget.h index cfb9f39f5..528828a15 100644 --- a/src/mirall/itemprogressdialog.h +++ b/src/mirall/protocolwidget.h @@ -11,8 +11,8 @@ * for more details. */ -#ifndef FILEITEMDIALOG_H -#define FILEITEMDIALOG_H +#ifndef PROTOCOLWIDGET_H +#define PROTOCOLWIDGET_H #include #include @@ -20,24 +20,22 @@ #include "mirall/progressdispatcher.h" -#include "ui_itemprogressdialog.h" - -class QSignalMapper; +#include "ui_protocolwidget.h" namespace Mirall { class SyncResult; namespace Ui { - class ItemProgressDialog; + class ProtocolWidget; } class Application; -class ItemProgressDialog : public QDialog +class ProtocolWidget : public QWidget { Q_OBJECT public: - explicit ItemProgressDialog(Application *app, QWidget *parent = 0); - ~ItemProgressDialog(); + explicit ProtocolWidget(QWidget *parent = 0); + ~ProtocolWidget(); void setupList(); void setSyncResult( const SyncResult& result ); @@ -45,9 +43,8 @@ public: signals: public slots: - void accept(); void slotProgressInfo( const QString& folder, const Progress::Info& progress ); - void slotProgressErrors( const QString& folder, const Progress::SyncProblem& problem ); + void slotProgressProblem( const QString& folder, const Progress::SyncProblem& problem ); void slotOpenFile( QTreeWidgetItem* item, int ); protected slots: @@ -62,9 +59,9 @@ private: QString timeString(QDateTime dt, QLocale::FormatType format = QLocale::NarrowFormat) const; const int ErrorIndicatorRole; - Ui::ItemProgressDialog *_ui; + Ui::ProtocolWidget *_ui; int _problemCounter; }; } -#endif // FILEITEMDIALOG_H +#endif // PROTOCOLWIDGET_H diff --git a/src/mirall/itemprogressdialog.ui b/src/mirall/protocolwidget.ui similarity index 93% rename from src/mirall/itemprogressdialog.ui rename to src/mirall/protocolwidget.ui index 35ac14f73..87942425f 100644 --- a/src/mirall/itemprogressdialog.ui +++ b/src/mirall/protocolwidget.ui @@ -1,7 +1,7 @@ - Mirall::ItemProgressDialog - + Mirall::ProtocolWidget + 0 @@ -74,7 +74,7 @@ - QDialogButtonBox::Close + QDialogButtonBox::NoButton diff --git a/src/mirall/settingsdialog.cpp b/src/mirall/settingsdialog.cpp index 979f16b15..158158602 100644 --- a/src/mirall/settingsdialog.cpp +++ b/src/mirall/settingsdialog.cpp @@ -22,6 +22,7 @@ #include "mirall/mirallconfigfile.h" #include "mirall/progressdispatcher.h" #include "mirall/owncloudgui.h" +#include "mirall/protocolwidget.h" #include #include @@ -51,6 +52,13 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) : _accountSettings = new AccountSettings(this); addAccount(tr("Account"), _accountSettings); + QIcon protocolIcon(QLatin1String(":/mirall/resources/settings.png")); + QListWidgetItem *protocol= new QListWidgetItem(protocolIcon, tr("Protocol"), _ui->labelWidget); + protocol->setSizeHint(QSize(0, 32)); + _ui->labelWidget->addItem(protocol); + ProtocolWidget *protocolWidget = new ProtocolWidget; + _protocolIdx = _ui->stack->addWidget(protocolWidget); + QIcon generalIcon(QLatin1String(":/mirall/resources/settings.png")); QListWidgetItem *general = new QListWidgetItem(generalIcon, tr("General"), _ui->labelWidget); general->setSizeHint(QSize(0, 32)); @@ -73,7 +81,7 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) : connect( _accountSettings, SIGNAL(folderChanged()), gui, SLOT(slotFoldersChanged())); connect( _accountSettings, SIGNAL(openFolderAlias(const QString&)), gui, SLOT(slotFolderOpenAction(QString))); - connect( _accountSettings, SIGNAL(openProgressDialog()), gui, SLOT(slotItemProgressDialog())); + connect( _accountSettings, SIGNAL(openProtocol()), SLOT(slotShowProtocol())); connect( ProgressDispatcher::instance(), SIGNAL(progressInfo(QString, Progress::Info)), _accountSettings, SLOT(slotSetProgress(QString, Progress::Info)) ); @@ -140,6 +148,12 @@ void SettingsDialog::slotSyncStateChange(const QString& alias) } } +void SettingsDialog::slotShowProtocol() +{ + qDebug() << "Show protocol window!"; + _ui->labelWidget->setCurrentRow(_protocolIdx); +} + void SettingsDialog::setGeneralErrors(const QStringList &errors) { if( _accountSettings ) { diff --git a/src/mirall/settingsdialog.h b/src/mirall/settingsdialog.h index 1496e27d5..ff57867c8 100644 --- a/src/mirall/settingsdialog.h +++ b/src/mirall/settingsdialog.h @@ -45,6 +45,7 @@ public: public slots: void slotSyncStateChange(const QString& alias); + void slotShowProtocol(); protected: void reject(); @@ -54,6 +55,8 @@ private: Ui::SettingsDialog *_ui; AccountSettings *_accountSettings; QListWidgetItem *_accountItem; + + int _protocolIdx; }; }