Integrate progress dialog into settings dialog.

This commit is contained in:
Klaas Freitag 2013-10-08 14:12:05 +02:00
parent 1ed8afba09
commit 53ac5427a8
11 changed files with 66 additions and 72 deletions

View file

@ -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
)

View file

@ -25,7 +25,6 @@
#include "mirall/owncloudsetupwizard.h"
#include "mirall/mirallconfigfile.h"
#include "mirall/ignorelisteditor.h"
#include "mirall/itemprogressdialog.h"
#include <math.h>
@ -749,7 +748,7 @@ void AccountSettings::slotIgnoreFilesEditor()
void AccountSettings::slotInfoAboutCurrentFolder()
{
emit(openProgressDialog());
emit(openProtocol());
}
AccountSettings::~AccountSettings()

View file

@ -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<ItemProgressDialog> _fileItemDialog;
QPointer<IgnoreListEditor> _ignoreEditor;
QStandardItemModel *_model;
QUrl _OCUrl;

View file

@ -43,7 +43,6 @@ class FolderWatcher;
class ownCloudInfo;
class SslErrorDialog;
class SettingsDialog;
class ItemProgressDialog;
class SocketApi;
class Application : public SharedTools::QtSingleApplication

View file

@ -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();
}

View file

@ -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<Systray> _tray;
QPointer<SettingsDialog> _settingsDialog;
QPointer<ItemProgressDialog> _progressDialog;
QPointer<LogBrowser>_logBrowser;
// tray's menu
QMenu *_contextMenu;

View file

@ -16,7 +16,7 @@
#include <QtWidgets>
#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<Progress::SyncProblem> 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<QTreeWidgetItem*> 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 );

View file

@ -11,8 +11,8 @@
* for more details.
*/
#ifndef FILEITEMDIALOG_H
#define FILEITEMDIALOG_H
#ifndef PROTOCOLWIDGET_H
#define PROTOCOLWIDGET_H
#include <QDialog>
#include <QDateTime>
@ -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

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Mirall::ItemProgressDialog</class>
<widget class="QWidget" name="Mirall::ItemProgressDialog">
<class>Mirall::ProtocolWidget</class>
<widget class="QWidget" name="Mirall::ProtocolWidget">
<property name="geometry">
<rect>
<x>0</x>
@ -74,7 +74,7 @@
<item>
<widget class="QDialogButtonBox" name="_dialogButtonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Close</set>
<set>QDialogButtonBox::NoButton</set>
</property>
</widget>
</item>

View file

@ -22,6 +22,7 @@
#include "mirall/mirallconfigfile.h"
#include "mirall/progressdispatcher.h"
#include "mirall/owncloudgui.h"
#include "mirall/protocolwidget.h"
#include <QLabel>
#include <QStandardItemModel>
@ -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 ) {

View file

@ -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;
};
}