From d014c4a3afce3053bb731bb72d7f626b2a1497e0 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Sat, 25 Apr 2015 17:09:52 +0200 Subject: [PATCH 01/41] copied progress dialog from "Repository" module (ProgressDlg) to libMacGitverCore with required minor changes --- Libs/libMacGitverCore/CMakeLists.txt | 3 + Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 163 ++++++++++++++++++ Libs/libMacGitverCore/Widgets/ProgressDlg.hpp | 45 +++++ Libs/libMacGitverCore/Widgets/ProgressDlg.ui | 157 +++++++++++++++++ 4 files changed, 368 insertions(+) create mode 100644 Libs/libMacGitverCore/Widgets/ProgressDlg.cpp create mode 100644 Libs/libMacGitverCore/Widgets/ProgressDlg.hpp create mode 100644 Libs/libMacGitverCore/Widgets/ProgressDlg.ui diff --git a/Libs/libMacGitverCore/CMakeLists.txt b/Libs/libMacGitverCore/CMakeLists.txt index b95cfac2..1403542a 100644 --- a/Libs/libMacGitverCore/CMakeLists.txt +++ b/Libs/libMacGitverCore/CMakeLists.txt @@ -55,6 +55,7 @@ SET( SRC_FILES Widgets/FlatTreeComboBox.cpp Widgets/FlatTreeModel.cpp Widgets/FlatTreeDelegate.cpp + Widgets/ProgressDlg.cpp Widgets/SHA1Input.cpp Widgets/ShortCommitModel.cpp Widgets/RepoStateWidget.cpp @@ -102,6 +103,7 @@ SET( PUB_HDR_FILES Widgets/FlatTreeComboBox.h Widgets/FlatTreeModel.h Widgets/FlatTreeDelegate.h + Widgets/ProgressDlg.hpp Widgets/SHA1Input.h Widgets/ShortCommitModel.h Widgets/TreeViewCtxMenu.hpp @@ -149,6 +151,7 @@ SET( UI_FILES RepoMan/Config/RepoManConfigPage.ui Widgets/ExpandableDlg.ui + Widgets/ProgressDlg.ui ) SET( HID_FILES diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp new file mode 100644 index 00000000..3bbeb34e --- /dev/null +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -0,0 +1,163 @@ + +#include "ProgressDlg.hpp" +#include "ui_ProgressDlg.h" + +#include +#include +#include +#include +#include + + +ProgressDlg::ProgressDlg() + : BlueSky::Dialog() + , ui( new Ui::ProgressDlg ) + , mDone( false ) +{ + ui->setupUi( this ); + + QPushButton* close = ui->buttonBox->button( QDialogButtonBox::Close ); + close->setEnabled( false ); + connect( close, &QPushButton::clicked, this, &ProgressDlg::close ); + + QPalette p; + p.setColor( QPalette::Base, p.color( QPalette::Window ) ); + p.setColor( QPalette::Text, p.color( QPalette::WindowText ) ); + ui->txtLog->setPalette( p ); +} + +ProgressDlg::~ProgressDlg() +{ + delete ui; +} + +void ProgressDlg::setAction( const QString& action, + const QStringList& open, + const QStringList& current, + const QStringList& done ) +{ + QString act = action; + + foreach( QString s, done ) + { + act += QStringLiteral( " (" ) % s % QStringLiteral( ")" ); + } + + foreach( QString s, current ) + { + act += QStringLiteral( " (" ) % s % QStringLiteral( ")" ); + } + + foreach( QString s, open ) + { + act += QStringLiteral( " (" ) % s % QStringLiteral( ")" ); + } + + ui->lblAction->setText( act ); +} + +void ProgressDlg::setCurrent(QObject* current) +{ + mCurrent = current; + + connect( mCurrent, SIGNAL(remoteMessage(QString)), + this, SLOT(remoteMessage(QString)) ); + connect( mCurrent, SIGNAL(transportProgress(quint32, quint32, quint32, quint64)), + this, SLOT(transportProgress(quint32, quint32, quint32, quint64)) ); +} + +void ProgressDlg::closeEvent( QCloseEvent* ev ) +{ + if( !mDone ) + { + ev->ignore(); + return; + } + + QDialog::closeEvent( ev ); +} + +void ProgressDlg::transportProgress( quint32 totalObjects, + quint32 indexedObjects, + quint32 receivedObjects, + quint64 receivedBytes ) +{ + QString recv; + if( receivedBytes > 1024 * 1024 * 950 ) /* 950 is so we get 0.9 gb */ + { + recv = QString::number( receivedBytes / (1024*1024*1024.0), 'f', 2 ) % QStringLiteral( " Gb" ); + } + else if( receivedBytes > 1024 * 950 ) + { + recv = QString::number( receivedBytes / (1024*1024.0), 'f', 2 ) % QStringLiteral( " Mb" ); + } + else if( receivedBytes > 950 ) + { + recv = QString::number( receivedBytes / 1024.0, 'f', 2 ) % QStringLiteral( " Kb" ); + } + else + { + recv = QString::number( receivedBytes ); + } + ui->lblTransferSize->setText( recv ); + + ui->progressBar->setRange( 0, totalObjects * 2 ); + ui->progressBar->setValue( indexedObjects + receivedObjects ); +} + +void ProgressDlg::remoteMessage( const QString& msg ) +{ + mRawRemoteMessage += msg; + + QString output; + QChar outputBuffer[ 256 ]; + int outBufPos = 0, outBufLen = 0; + + for( int i = 0; i < mRawRemoteMessage.length(); ++i ) + { + if( mRawRemoteMessage[ i ] == QChar( L'\r' ) ) + { + outBufPos = 0; + } + else if( mRawRemoteMessage[ i ] == QChar( L'\n' ) ) + { + if( outBufLen ) + output += QString( outputBuffer, outBufLen ); + output += QChar( L'\n' ); + outBufPos = outBufLen = 0; + } + else + { + outputBuffer[ outBufPos++] = mRawRemoteMessage[ i ]; + outBufLen = qMax( outBufLen, outBufPos ); + } + } + + if( outBufLen ) + output += QString( outputBuffer, outBufLen ); + + QString log = mBaseLog % QStringLiteral( "
" ) % + output.replace( QChar( L'\n' ), QLatin1String("
") ).simplified(); + + ui->txtLog->setHtml( log ); +} + +void ProgressDlg::beginStep( const QString& step ) +{ + mBaseLog += tr( "%1
" ).arg( step ); + ui->txtLog->setHtml( mBaseLog ); +} + +void ProgressDlg::finalizeStep() +{ + mBaseLog = ui->txtLog->toHtml() % QStringLiteral( "
" ); + mRawRemoteMessage = QString(); + + ui->txtLog->setHtml( mBaseLog ); +} + +void ProgressDlg::setDone() +{ + mDone = true; + ui->buttonBox->button( QDialogButtonBox::Close )->setEnabled( true ); +} diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp new file mode 100644 index 00000000..12354d9e --- /dev/null +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp @@ -0,0 +1,45 @@ + +#pragma once + +#include "libMacGitverCore/MacGitverApi.hpp" +#include "libBlueSky/Dialog.hpp" + +namespace Ui +{ + class ProgressDlg; +}; + +class MGV_CORE_API ProgressDlg : public BlueSky::Dialog +{ + Q_OBJECT +public: + ProgressDlg(); + ~ProgressDlg(); + +public: + void setAction( const QString& action, const QStringList& open, + const QStringList& current, const QStringList& done ); + void setCurrent(QObject* current); + +private slots: + void transportProgress( quint32 totalObjects, quint32 indexedObjects, + quint32 receivedObjects, quint64 receivedBytes ); + void remoteMessage( const QString& msg ); + +public: + void setDone(); + void beginStep( const QString& step ); + void finalizeStep(); + +protected: + void closeEvent( QCloseEvent* ev ); + +private: + Ui::ProgressDlg* ui; + +private: + bool mDone; + QString mBaseLog; + QObject* mCurrent; + QString mRawRemoteMessage; +}; diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.ui b/Libs/libMacGitverCore/Widgets/ProgressDlg.ui new file mode 100644 index 00000000..19bf883d --- /dev/null +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.ui @@ -0,0 +1,157 @@ + + + ProgressDlg + + + Qt::ApplicationModal + + + + 0 + 0 + 484 + 291 + + + + + 0 + 0 + + + + Progress + + + true + + + + + + QDialogButtonBox::Close + + + + + + + + 0 + 0 + + + + + 0 + 60 + + + + Log + + + + QLayout::SetDefaultConstraint + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QFrame::NoFrame + + + QFrame::Plain + + + + + + + + + + Current operation + + + + 3 + + + 3 + + + 3 + + + 3 + + + 6 + + + 2 + + + + + + 0 + 0 + + + + + + + + + + + + + + + <b>Progress</(b> + + + + + + + <b>Action</b> + + + + + + + + + + + + + + + + + + From 9529a75c704c4307463daebb8225a8834d08badd Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Tue, 21 Apr 2015 14:41:48 +0200 Subject: [PATCH 02/41] add ProgressWdgt, preparing for unified progress dialog The ProgressWdgt is going to be used internally by ProgressDlg to represent a single activity or step. --- Libs/libMacGitverCore/CMakeLists.txt | 2 + Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 29 ++++++++++++++ Libs/libMacGitverCore/Widgets/ProgressDlg.hpp | 12 ++++++ Libs/libMacGitverCore/Widgets/ProgressWdgt.ui | 38 +++++++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 Libs/libMacGitverCore/Widgets/ProgressWdgt.ui diff --git a/Libs/libMacGitverCore/CMakeLists.txt b/Libs/libMacGitverCore/CMakeLists.txt index 1403542a..6decadc9 100644 --- a/Libs/libMacGitverCore/CMakeLists.txt +++ b/Libs/libMacGitverCore/CMakeLists.txt @@ -152,6 +152,8 @@ SET( UI_FILES Widgets/ExpandableDlg.ui Widgets/ProgressDlg.ui + + Widgets/ProgressWdgt.ui ) SET( HID_FILES diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 3bbeb34e..2539d18d 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -1,6 +1,7 @@ #include "ProgressDlg.hpp" #include "ui_ProgressDlg.h" +#include "ui_ProgressWdgt.h" #include #include @@ -8,6 +9,34 @@ #include #include +namespace Private +{ + + class ProgressWdgt : public QWidget, public Ui::ProgressWdgt + { + public: + typedef QMap< QString, QPointer > Steps; + + enum Status { Running = 0, Stopped }; + + public: + ProgressWdgt(const QString& description) + { + setupUi(this); + progressBar->setMinimum(0); + progressBar->setMaximum(100); + txtHeader->setText( description ); + } + + public: + Steps mSteps; + Status mStatus = Running; + + qreal mPercentage = 0.; + }; + +} + ProgressDlg::ProgressDlg() : BlueSky::Dialog() diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp index 12354d9e..b1e02a2e 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp @@ -4,6 +4,14 @@ #include "libMacGitverCore/MacGitverApi.hpp" #include "libBlueSky/Dialog.hpp" +#include +#include + +namespace Private +{ + class ProgressWdgt; +}; + namespace Ui { class ProgressDlg; @@ -12,6 +20,10 @@ namespace Ui class MGV_CORE_API ProgressDlg : public BlueSky::Dialog { Q_OBJECT + +public: + typedef QMap< QPointer, QPointer > Activities; + public: ProgressDlg(); ~ProgressDlg(); diff --git a/Libs/libMacGitverCore/Widgets/ProgressWdgt.ui b/Libs/libMacGitverCore/Widgets/ProgressWdgt.ui new file mode 100644 index 00000000..3b780075 --- /dev/null +++ b/Libs/libMacGitverCore/Widgets/ProgressWdgt.ui @@ -0,0 +1,38 @@ + + + ProgressWdgt + + + + 0 + 0 + 448 + 83 + + + + Progress + + + + + + Progress: + + + + + + + + + + Not started... + + + + + + + + From 5f36edf0875e4f6e6a4268ea9d4a648bca015ede Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Sat, 25 Apr 2015 17:15:32 +0200 Subject: [PATCH 03/41] redesign ProgressDlg to visualize the progress of multiple activities An activity must contain at least one step to be processed. Note: There's no logging available yet. --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 144 +++++++------ Libs/libMacGitverCore/Widgets/ProgressDlg.hpp | 41 ++-- Libs/libMacGitverCore/Widgets/ProgressDlg.ui | 201 +++++++----------- 3 files changed, 188 insertions(+), 198 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 2539d18d..e6679df8 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -5,9 +5,7 @@ #include #include -#include #include -#include namespace Private { @@ -53,6 +51,9 @@ ProgressDlg::ProgressDlg() p.setColor( QPalette::Base, p.color( QPalette::Window ) ); p.setColor( QPalette::Text, p.color( QPalette::WindowText ) ); ui->txtLog->setPalette( p ); + + connect(&mUpdater, &QTimer::timeout, this, &ProgressDlg::updateActivities); + mUpdater.start(250); } ProgressDlg::~ProgressDlg() @@ -60,39 +61,54 @@ ProgressDlg::~ProgressDlg() delete ui; } -void ProgressDlg::setAction( const QString& action, - const QStringList& open, - const QStringList& current, - const QStringList& done ) +int ProgressDlg::updateInterval() const { - QString act = action; + return mUpdater.interval(); +} - foreach( QString s, done ) - { - act += QStringLiteral( " (" ) % s % QStringLiteral( ")" ); - } +void ProgressDlg::setUpdateInterval(int msec) +{ + mUpdater.setInterval(msec); +} - foreach( QString s, current ) - { - act += QStringLiteral( " (" ) % s % QStringLiteral( ")" ); - } +void ProgressDlg::addActivity(const QString& description, QObject* activity, + const StepInfo::List& steps) +{ + Q_ASSERT(activity); - foreach( QString s, open ) - { - act += QStringLiteral( " (" ) % s % QStringLiteral( ")" ); + Private::ProgressWdgt* a( new Private::ProgressWdgt(description) ); + mActivities[activity] = a; + + QTreeWidgetItem* activityItem(new QTreeWidgetItem); + ui->treeProgress->addTopLevelItem(activityItem); + ui->treeProgress->setItemWidget(activityItem, 0, a); + + foreach (const StepInfo& sir, steps) { + Private::ProgressWdgt* s = new Private::ProgressWdgt(sir.desc); + a->mSteps[sir.name] = s; + + QTreeWidgetItem* stepItem(new QTreeWidgetItem); + activityItem->addChild(stepItem); + ui->treeProgress->setItemWidget(stepItem, 0, s); } +} + +void ProgressDlg::setStatusInfo(QObject* activity, const QString& step, + const QString& text) +{ + Q_ASSERT(activity && !step.isEmpty()); - ui->lblAction->setText( act ); + Private::ProgressWdgt* s = findStep(activity, step); + s->txtStatusInfo->setText(text); } -void ProgressDlg::setCurrent(QObject* current) +void ProgressDlg::setPercentage(QObject* activity, const QString& step, + qreal percent) { - mCurrent = current; + Q_ASSERT(activity && !step.isEmpty()); - connect( mCurrent, SIGNAL(remoteMessage(QString)), - this, SLOT(remoteMessage(QString)) ); - connect( mCurrent, SIGNAL(transportProgress(quint32, quint32, quint32, quint64)), - this, SLOT(transportProgress(quint32, quint32, quint32, quint64)) ); + Private::ProgressWdgt* s = findStep(activity, step); + s->mPercentage = qMin( qMax(percent, 0.), 1. ) * 100.; } void ProgressDlg::closeEvent( QCloseEvent* ev ) @@ -106,35 +122,7 @@ void ProgressDlg::closeEvent( QCloseEvent* ev ) QDialog::closeEvent( ev ); } -void ProgressDlg::transportProgress( quint32 totalObjects, - quint32 indexedObjects, - quint32 receivedObjects, - quint64 receivedBytes ) -{ - QString recv; - if( receivedBytes > 1024 * 1024 * 950 ) /* 950 is so we get 0.9 gb */ - { - recv = QString::number( receivedBytes / (1024*1024*1024.0), 'f', 2 ) % QStringLiteral( " Gb" ); - } - else if( receivedBytes > 1024 * 950 ) - { - recv = QString::number( receivedBytes / (1024*1024.0), 'f', 2 ) % QStringLiteral( " Mb" ); - } - else if( receivedBytes > 950 ) - { - recv = QString::number( receivedBytes / 1024.0, 'f', 2 ) % QStringLiteral( " Kb" ); - } - else - { - recv = QString::number( receivedBytes ); - } - ui->lblTransferSize->setText( recv ); - - ui->progressBar->setRange( 0, totalObjects * 2 ); - ui->progressBar->setValue( indexedObjects + receivedObjects ); -} - -void ProgressDlg::remoteMessage( const QString& msg ) +void ProgressDlg::remoteMessage(const QString& msg) { mRawRemoteMessage += msg; @@ -166,27 +154,53 @@ void ProgressDlg::remoteMessage( const QString& msg ) output += QString( outputBuffer, outBufLen ); QString log = mBaseLog % QStringLiteral( "
" ) % - output.replace( QChar( L'\n' ), QLatin1String("
") ).simplified(); + output.replace( QChar( L'\n' ), QStringLiteral("
") ).simplified(); ui->txtLog->setHtml( log ); } -void ProgressDlg::beginStep( const QString& step ) +void ProgressDlg::finished(QObject* activity) { - mBaseLog += tr( "%1
" ).arg( step ); - ui->txtLog->setHtml( mBaseLog ); + mActivities[activity]->mStatus = Private::ProgressWdgt::Stopped; + + bool done = true; + foreach (Private::ProgressWdgt* a, mActivities) { + done &= (a->mStatus == Private::ProgressWdgt::Stopped); + if (!done) { + break; + } + } + + if (done) { + mDone = true; + ui->buttonBox->button( QDialogButtonBox::Close )->setEnabled( true ); + } } -void ProgressDlg::finalizeStep() +void ProgressDlg::finished(QObject* activity, const QString& step) { - mBaseLog = ui->txtLog->toHtml() % QStringLiteral( "
" ); - mRawRemoteMessage = QString(); + Q_ASSERT(activity && !step.isEmpty()); + + Private::ProgressWdgt* a = mActivities[activity]; + a->mSteps[step]->mStatus = Private::ProgressWdgt::Stopped; +} - ui->txtLog->setHtml( mBaseLog ); +void ProgressDlg::updateActivities() +{ + foreach(Private::ProgressWdgt* a, mActivities) { + a->mPercentage = 0; + foreach (Private::ProgressWdgt* s, a->mSteps) { + s->progressBar->setValue(qRound(s->mPercentage)); + qreal stepPercent = s->mPercentage / a->mSteps.size(); + a->mPercentage += qMin( qMax(stepPercent, 0.), 100.); + } + + a->progressBar->setValue(qRound(a->mPercentage)); + } } -void ProgressDlg::setDone() +Private::ProgressWdgt* ProgressDlg::findStep(QObject* activity, const QString& step) const { - mDone = true; - ui->buttonBox->button( QDialogButtonBox::Close )->setEnabled( true ); + Private::ProgressWdgt* a = mActivities[activity]; + return step.isEmpty() || !a ? nullptr : a->mSteps[step]; } diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp index b1e02a2e..c1d458a0 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp @@ -6,6 +6,7 @@ #include #include +#include namespace Private { @@ -22,6 +23,14 @@ class MGV_CORE_API ProgressDlg : public BlueSky::Dialog Q_OBJECT public: + struct StepInfo + { + typedef QVector List; + + QString name; + QString desc; + }; + typedef QMap< QPointer, QPointer > Activities; public: @@ -29,29 +38,37 @@ class MGV_CORE_API ProgressDlg : public BlueSky::Dialog ~ProgressDlg(); public: - void setAction( const QString& action, const QStringList& open, - const QStringList& current, const QStringList& done ); - void setCurrent(QObject* current); + int updateInterval() const; + void setUpdateInterval(int msec); -private slots: - void transportProgress( quint32 totalObjects, quint32 indexedObjects, - quint32 receivedObjects, quint64 receivedBytes ); - void remoteMessage( const QString& msg ); + void addActivity(const QString& description, QObject* activity, + const StepInfo::List& steps); -public: - void setDone(); - void beginStep( const QString& step ); - void finalizeStep(); + void setStatusInfo(QObject* activity, const QString& step, + const QString& text); + void setPercentage(QObject* activity, const QString& step, qreal percent); + void remoteMessage(const QString& msg); + + void finished(QObject* activity); + void finished(QObject* activity, const QString& step); + +private slots: + void updateActivities(); protected: void closeEvent( QCloseEvent* ev ); +private: + Private::ProgressWdgt* findStep(QObject* activity, const QString& step) const; + private: Ui::ProgressDlg* ui; private: bool mDone; QString mBaseLog; - QObject* mCurrent; QString mRawRemoteMessage; + Activities mActivities; + + QTimer mUpdater; }; diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.ui b/Libs/libMacGitverCore/Widgets/ProgressDlg.ui index 19bf883d..f5cce393 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.ui +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.ui @@ -9,16 +9,10 @@ 0 0 - 484 - 291 + 603 + 332 - - - 0 - 0 - - Progress @@ -26,128 +20,93 @@ true - - - - QDialogButtonBox::Close - - - - - - - - 0 - 0 - - - - - 0 - 60 - + + + + Qt::Vertical - - Log - - - - QLayout::SetDefaultConstraint + + + + 0 + 2 + + + + QAbstractItemView::ScrollPerPixel - - 0 + + true - - 0 + + true - - 0 + + false + + + + 1 + + + + + + + 0 + 1 + - - 0 + + + 0 + 60 + - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Plain - - - - + + Details: + + + + QLayout::SetDefaultConstraint + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QFrame::NoFrame + + + QFrame::Plain + + + + + - - - - Current operation + + + + QDialogButtonBox::Close - - - 3 - - - 3 - - - 3 - - - 3 - - - 6 - - - 2 - - - - - - 0 - 0 - - - - - - - - - - - - - - - <b>Progress</(b> - - - - - - - <b>Action</b> - - - - - - - - - - - From 097162811ca7c755e2f5e4be970b9f98c9cc64b3 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Sat, 25 Apr 2015 19:58:42 +0200 Subject: [PATCH 04/41] use assignment operator instead of copy c'tor --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index e6679df8..7dd97b93 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -76,7 +76,7 @@ void ProgressDlg::addActivity(const QString& description, QObject* activity, { Q_ASSERT(activity); - Private::ProgressWdgt* a( new Private::ProgressWdgt(description) ); + Private::ProgressWdgt* a = new Private::ProgressWdgt(description); mActivities[activity] = a; QTreeWidgetItem* activityItem(new QTreeWidgetItem); From edad9153b120605d1da96ea3c7c3a474d67501fc Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Sat, 25 Apr 2015 19:59:36 +0200 Subject: [PATCH 05/41] restart timer when active while changing the interval --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 7dd97b93..cd3ad3e2 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -68,7 +68,13 @@ int ProgressDlg::updateInterval() const void ProgressDlg::setUpdateInterval(int msec) { - mUpdater.setInterval(msec); + if (mUpdater.isActive()) { + // restart timer with the new interval + mUpdater.start(msec); + } + else { + mUpdater.setInterval(msec); + } } void ProgressDlg::addActivity(const QString& description, QObject* activity, From 26abca737abba0b150e4856c4f4fd0667afd46fd Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Sat, 25 Apr 2015 20:03:38 +0200 Subject: [PATCH 06/41] set text according to state of progress (running/finished) TODO: error state is missing --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index cd3ad3e2..85785044 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -97,6 +97,8 @@ void ProgressDlg::addActivity(const QString& description, QObject* activity, activityItem->addChild(stepItem); ui->treeProgress->setItemWidget(stepItem, 0, s); } + + a->txtStatusInfo->setText(tr("Running...")); } void ProgressDlg::setStatusInfo(QObject* activity, const QString& step, @@ -167,7 +169,9 @@ void ProgressDlg::remoteMessage(const QString& msg) void ProgressDlg::finished(QObject* activity) { - mActivities[activity]->mStatus = Private::ProgressWdgt::Stopped; + Private::ProgressWdgt* a = mActivities[activity]; + a->mStatus = Private::ProgressWdgt::Stopped; + a->txtStatusInfo->setText(tr("Finished!")); bool done = true; foreach (Private::ProgressWdgt* a, mActivities) { From 3c33fc9f51612fbed5d8a15fd77800f0581f3192 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Sat, 25 Apr 2015 20:22:30 +0200 Subject: [PATCH 07/41] removed obsolete method ProgressDlg::remoteMessage --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 37 ------------------- Libs/libMacGitverCore/Widgets/ProgressDlg.hpp | 1 - 2 files changed, 38 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 85785044..e9af0a8e 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -130,43 +130,6 @@ void ProgressDlg::closeEvent( QCloseEvent* ev ) QDialog::closeEvent( ev ); } -void ProgressDlg::remoteMessage(const QString& msg) -{ - mRawRemoteMessage += msg; - - QString output; - QChar outputBuffer[ 256 ]; - int outBufPos = 0, outBufLen = 0; - - for( int i = 0; i < mRawRemoteMessage.length(); ++i ) - { - if( mRawRemoteMessage[ i ] == QChar( L'\r' ) ) - { - outBufPos = 0; - } - else if( mRawRemoteMessage[ i ] == QChar( L'\n' ) ) - { - if( outBufLen ) - output += QString( outputBuffer, outBufLen ); - output += QChar( L'\n' ); - outBufPos = outBufLen = 0; - } - else - { - outputBuffer[ outBufPos++] = mRawRemoteMessage[ i ]; - outBufLen = qMax( outBufLen, outBufPos ); - } - } - - if( outBufLen ) - output += QString( outputBuffer, outBufLen ); - - QString log = mBaseLog % QStringLiteral( "
" ) % - output.replace( QChar( L'\n' ), QStringLiteral("
") ).simplified(); - - ui->txtLog->setHtml( log ); -} - void ProgressDlg::finished(QObject* activity) { Private::ProgressWdgt* a = mActivities[activity]; diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp index c1d458a0..feb0a34f 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp @@ -47,7 +47,6 @@ class MGV_CORE_API ProgressDlg : public BlueSky::Dialog void setStatusInfo(QObject* activity, const QString& step, const QString& text); void setPercentage(QObject* activity, const QString& step, qreal percent); - void remoteMessage(const QString& msg); void finished(QObject* activity); void finished(QObject* activity, const QString& step); From 8a1831eb76586fbbdc447d72d3539bf71d848c5b Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:05:41 +0200 Subject: [PATCH 08/41] minor cleanup in ProgressDlg --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index e9af0a8e..2d196a65 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -3,9 +3,9 @@ #include "ui_ProgressDlg.h" #include "ui_ProgressWdgt.h" -#include #include #include +#include namespace Private { @@ -13,10 +13,10 @@ namespace Private class ProgressWdgt : public QWidget, public Ui::ProgressWdgt { public: - typedef QMap< QString, QPointer > Steps; - enum Status { Running = 0, Stopped }; + typedef QMap< QString, QPointer > Steps; + public: ProgressWdgt(const QString& description) { From 8ee8f51149130bdebd72408834bc112becebb870 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:17:21 +0200 Subject: [PATCH 09/41] ProgressDlg: moved initializers back to c'tor --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 2d196a65..47834833 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -19,6 +19,8 @@ namespace Private public: ProgressWdgt(const QString& description) + : mStatus(Running) + , mPercentage(0.) { setupUi(this); progressBar->setMinimum(0); @@ -28,9 +30,9 @@ namespace Private public: Steps mSteps; - Status mStatus = Running; + Status mStatus; - qreal mPercentage = 0.; + qreal mPercentage; }; } From 3a344366924be8f85a81c082ff5e34b21559dc23 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:19:13 +0200 Subject: [PATCH 10/41] ProgressDlg: removed customized palette for log view --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 47834833..e14fd407 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -49,10 +49,6 @@ ProgressDlg::ProgressDlg() close->setEnabled( false ); connect( close, &QPushButton::clicked, this, &ProgressDlg::close ); - QPalette p; - p.setColor( QPalette::Base, p.color( QPalette::Window ) ); - p.setColor( QPalette::Text, p.color( QPalette::WindowText ) ); - ui->txtLog->setPalette( p ); connect(&mUpdater, &QTimer::timeout, this, &ProgressDlg::updateActivities); mUpdater.start(250); From aed4564d12cfb540ab1ad6492b966d31a3a9f339 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:20:11 +0200 Subject: [PATCH 11/41] ProgressDlg: minor cleanup --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index e14fd407..38070119 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -45,10 +45,9 @@ ProgressDlg::ProgressDlg() { ui->setupUi( this ); - QPushButton* close = ui->buttonBox->button( QDialogButtonBox::Close ); + QPushButton* close = ui->buttonBox->button(QDialogButtonBox::Close); close->setEnabled( false ); - connect( close, &QPushButton::clicked, this, &ProgressDlg::close ); - + connect(close, &QPushButton::clicked, this, &ProgressDlg::close); connect(&mUpdater, &QTimer::timeout, this, &ProgressDlg::updateActivities); mUpdater.start(250); From 8e1dcdbdd922e8696f71afcef3e551113c78b98f Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:25:24 +0200 Subject: [PATCH 12/41] ProgressDlg: add methods isDone() and setCanClose() --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 10 ++++++++++ Libs/libMacGitverCore/Widgets/ProgressDlg.hpp | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 38070119..1b31d3f1 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -174,3 +174,13 @@ Private::ProgressWdgt* ProgressDlg::findStep(QObject* activity, const QString& s Private::ProgressWdgt* a = mActivities[activity]; return step.isEmpty() || !a ? nullptr : a->mSteps[step]; } + +void ProgressDlg::setCanClose() +{ + const bool wasDone = mDone; + mDone = isDone(); + + if (mDone != wasDone) { + ui->buttonBox->button( QDialogButtonBox::Close )->setEnabled( mDone ); + } +} diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp index feb0a34f..cd6ff44e 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp @@ -60,6 +60,9 @@ private slots: private: Private::ProgressWdgt* findStep(QObject* activity, const QString& step) const; + bool isDone() const; + void setCanClose(); + private: Ui::ProgressDlg* ui; @@ -71,3 +74,8 @@ private slots: QTimer mUpdater; }; + +inline bool ProgressDlg::isDone() const +{ + return mActivities.isEmpty(); +} From d6add328e346d49c6ae1cb35853685944a9d7c48 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:28:34 +0200 Subject: [PATCH 13/41] ProgressDlg: move asserts --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 1b31d3f1..c70f6beb 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -101,18 +101,18 @@ void ProgressDlg::addActivity(const QString& description, QObject* activity, void ProgressDlg::setStatusInfo(QObject* activity, const QString& step, const QString& text) { - Q_ASSERT(activity && !step.isEmpty()); - Private::ProgressWdgt* s = findStep(activity, step); + Q_ASSERT(s); + s->txtStatusInfo->setText(text); } void ProgressDlg::setPercentage(QObject* activity, const QString& step, qreal percent) { - Q_ASSERT(activity && !step.isEmpty()); - Private::ProgressWdgt* s = findStep(activity, step); + Q_ASSERT(s); + s->mPercentage = qMin( qMax(percent, 0.), 1. ) * 100.; } @@ -130,6 +130,8 @@ void ProgressDlg::closeEvent( QCloseEvent* ev ) void ProgressDlg::finished(QObject* activity) { Private::ProgressWdgt* a = mActivities[activity]; + Q_ASSERT(a); + a->mStatus = Private::ProgressWdgt::Stopped; a->txtStatusInfo->setText(tr("Finished!")); From c3bb441ce610fa5542d2bae55dde4c74e05eabf9 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:34:45 +0200 Subject: [PATCH 14/41] ProgressDlg: remove invalid activities from progress updating Activities become invalid, when they where deleted (pointer == nullptr). --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index c70f6beb..317c2854 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -159,15 +159,27 @@ void ProgressDlg::finished(QObject* activity, const QString& step) void ProgressDlg::updateActivities() { - foreach(Private::ProgressWdgt* a, mActivities) { - a->mPercentage = 0; - foreach (Private::ProgressWdgt* s, a->mSteps) { - s->progressBar->setValue(qRound(s->mPercentage)); - qreal stepPercent = s->mPercentage / a->mSteps.size(); - a->mPercentage += qMin( qMax(stepPercent, 0.), 100.); + Activities::Iterator it = mActivities.begin(); + while ( it != mActivities.end() ) { + if (!it.key()) { + // remove invalid activities + it = mActivities.erase(it); + } + else { + Private::ProgressWdgt* a = *it; + a->mPercentage = 0.; + + foreach (Private::ProgressWdgt* s, a->mSteps) { + s->progressBar->setValue(qRound(s->mPercentage)); + qreal stepPercent = s->mPercentage / a->mSteps.size(); + a->mPercentage += qMin( qMax(stepPercent, 0.), 100.); + } + + a->progressBar->setValue(qRound(a->mPercentage)); + + ++it; } - a->progressBar->setValue(qRound(a->mPercentage)); } } From 51ce155017842f30bb99e916c6ffb79c819a1b2b Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:39:02 +0200 Subject: [PATCH 15/41] add ProgressDlg::setError() --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 13 +++++++++++-- Libs/libMacGitverCore/Widgets/ProgressDlg.hpp | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 317c2854..72611926 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -151,10 +151,19 @@ void ProgressDlg::finished(QObject* activity) void ProgressDlg::finished(QObject* activity, const QString& step) { - Q_ASSERT(activity && !step.isEmpty()); + Private::ProgressWdgt* s = findStep(activity, step); + Q_ASSERT(s); + + s->mStatus = Private::ProgressWdgt::Stopped; +} +void ProgressDlg::setError(QObject* activity, const QString& message) +{ Private::ProgressWdgt* a = mActivities[activity]; - a->mSteps[step]->mStatus = Private::ProgressWdgt::Stopped; + Q_ASSERT(a); + a->setToolTip(tr("Activity failed!
%1").arg(message)); + a->txtStatusInfo->setText(tr("Failed!")); + a->mStatus = Private::ProgressWdgt::Stopped; } void ProgressDlg::updateActivities() diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp index cd6ff44e..750b3de9 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp @@ -51,6 +51,8 @@ class MGV_CORE_API ProgressDlg : public BlueSky::Dialog void finished(QObject* activity); void finished(QObject* activity, const QString& step); + void setError(QObject* activity, const QString& message); + private slots: void updateActivities(); From 4e2de0cbd4d74763e0dda224e763e8662198f6ff Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:41:40 +0200 Subject: [PATCH 16/41] ProgressDlg: prevent accept() or reject() before activities are finished --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 13 +++++++++++++ Libs/libMacGitverCore/Widgets/ProgressDlg.hpp | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 72611926..9827eb96 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -188,7 +188,20 @@ void ProgressDlg::updateActivities() ++it; } + } +} +void ProgressDlg::accept() +{ + if (isDone()) { + BlueSky::Dialog::accept(); + } +} + +void ProgressDlg::reject() +{ + if (isDone()) { + BlueSky::Dialog::reject(); } } diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp index 750b3de9..12d3c9f0 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp @@ -53,6 +53,11 @@ class MGV_CORE_API ProgressDlg : public BlueSky::Dialog void setError(QObject* activity, const QString& message); +public: + // virtual slots + void accept(); + void reject(); + private slots: void updateActivities(); From cb2425b73f4172ed66a263304a0d33fc382747d6 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:45:11 +0200 Subject: [PATCH 17/41] PrgressDlg: frequently update close buttons --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 9827eb96..9784dc2c 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -135,18 +135,6 @@ void ProgressDlg::finished(QObject* activity) a->mStatus = Private::ProgressWdgt::Stopped; a->txtStatusInfo->setText(tr("Finished!")); - bool done = true; - foreach (Private::ProgressWdgt* a, mActivities) { - done &= (a->mStatus == Private::ProgressWdgt::Stopped); - if (!done) { - break; - } - } - - if (done) { - mDone = true; - ui->buttonBox->button( QDialogButtonBox::Close )->setEnabled( true ); - } } void ProgressDlg::finished(QObject* activity, const QString& step) @@ -189,6 +177,8 @@ void ProgressDlg::updateActivities() ++it; } } + + setCanClose(); } void ProgressDlg::accept() From 8eb42bfe6120397ac6885fcca7b41998192a47d8 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:46:35 +0200 Subject: [PATCH 18/41] ProgressDlg: set step percentage to 100% when finished --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 9784dc2c..3791a44a 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -143,6 +143,7 @@ void ProgressDlg::finished(QObject* activity, const QString& step) Q_ASSERT(s); s->mStatus = Private::ProgressWdgt::Stopped; + s->mPercentage = 100.; } void ProgressDlg::setError(QObject* activity, const QString& message) From 9139128e79af5d130af5660ac5344ad5965fc96e Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:47:59 +0200 Subject: [PATCH 19/41] ProgressDlg: mark finished and error state of an activity by coloring the progress bar --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 3791a44a..d583ac35 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -134,6 +134,7 @@ void ProgressDlg::finished(QObject* activity) a->mStatus = Private::ProgressWdgt::Stopped; a->txtStatusInfo->setText(tr("Finished!")); + a->setStyleSheet(QStringLiteral("QProgressBar::chunk{background-color: #55FF55;}")); } @@ -144,6 +145,7 @@ void ProgressDlg::finished(QObject* activity, const QString& step) s->mStatus = Private::ProgressWdgt::Stopped; s->mPercentage = 100.; + s->setStyleSheet(QStringLiteral("QProgressBar::chunk{background-color: #55FF55;}")); } void ProgressDlg::setError(QObject* activity, const QString& message) @@ -153,6 +155,7 @@ void ProgressDlg::setError(QObject* activity, const QString& message) a->setToolTip(tr("Activity failed!
%1").arg(message)); a->txtStatusInfo->setText(tr("Failed!")); a->mStatus = Private::ProgressWdgt::Stopped; + a->setStyleSheet(QStringLiteral("QProgressBar{background-color: #FF5555;} QProgressBar::chunk{background-color: red;}")); } void ProgressDlg::updateActivities() From c6aa567cfa52b841f2ac1da3225fc1a67cf15370 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 14:04:40 +0200 Subject: [PATCH 20/41] ProgressDlg: fixed erase activities --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index d583ac35..df91906b 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -162,22 +162,22 @@ void ProgressDlg::updateActivities() { Activities::Iterator it = mActivities.begin(); while ( it != mActivities.end() ) { + Private::ProgressWdgt* a = *it; + a->mPercentage = 0.; + + foreach (Private::ProgressWdgt* s, a->mSteps) { + s->progressBar->setValue(qRound(s->mPercentage)); + qreal stepPercent = s->mPercentage / a->mSteps.size(); + a->mPercentage += qMin( qMax(stepPercent, 0.), 100.); + } + + a->progressBar->setValue(qRound(a->mPercentage)); + + // remove invalid activities after updating if (!it.key()) { - // remove invalid activities it = mActivities.erase(it); } else { - Private::ProgressWdgt* a = *it; - a->mPercentage = 0.; - - foreach (Private::ProgressWdgt* s, a->mSteps) { - s->progressBar->setValue(qRound(s->mPercentage)); - qreal stepPercent = s->mPercentage / a->mSteps.size(); - a->mPercentage += qMin( qMax(stepPercent, 0.), 100.); - } - - a->progressBar->setValue(qRound(a->mPercentage)); - ++it; } } From 415425d9ec82a14644707baeaba8e2a51c44f2a6 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 1 May 2015 12:47:47 +0200 Subject: [PATCH 21/41] ProgressDlg: make internal progress widgets use the cells background on painting --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index df91906b..4f560ac1 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -23,6 +23,7 @@ namespace Private , mPercentage(0.) { setupUi(this); + setAttribute(Qt::WA_NoSystemBackground); progressBar->setMinimum(0); progressBar->setMaximum(100); txtHeader->setText( description ); From ad5433b76934841439044f5d04b957e27dadd3cf Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 1 May 2015 12:52:49 +0200 Subject: [PATCH 22/41] ProgressDlg: a progress widget has no "running" state; an "active" flag better reflects what I mean here --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 4f560ac1..e8d749dc 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -13,13 +13,12 @@ namespace Private class ProgressWdgt : public QWidget, public Ui::ProgressWdgt { public: - enum Status { Running = 0, Stopped }; typedef QMap< QString, QPointer > Steps; public: ProgressWdgt(const QString& description) - : mStatus(Running) + : mActive(true) , mPercentage(0.) { setupUi(this); @@ -31,8 +30,8 @@ namespace Private public: Steps mSteps; - Status mStatus; + bool mActive; qreal mPercentage; }; @@ -133,7 +132,7 @@ void ProgressDlg::finished(QObject* activity) Private::ProgressWdgt* a = mActivities[activity]; Q_ASSERT(a); - a->mStatus = Private::ProgressWdgt::Stopped; + a->mActive = false; a->txtStatusInfo->setText(tr("Finished!")); a->setStyleSheet(QStringLiteral("QProgressBar::chunk{background-color: #55FF55;}")); @@ -144,7 +143,7 @@ void ProgressDlg::finished(QObject* activity, const QString& step) Private::ProgressWdgt* s = findStep(activity, step); Q_ASSERT(s); - s->mStatus = Private::ProgressWdgt::Stopped; + s->mActive = false; s->mPercentage = 100.; s->setStyleSheet(QStringLiteral("QProgressBar::chunk{background-color: #55FF55;}")); } @@ -153,9 +152,9 @@ void ProgressDlg::setError(QObject* activity, const QString& message) { Private::ProgressWdgt* a = mActivities[activity]; Q_ASSERT(a); + a->mActive = false; a->setToolTip(tr("Activity failed!
%1").arg(message)); a->txtStatusInfo->setText(tr("Failed!")); - a->mStatus = Private::ProgressWdgt::Stopped; a->setStyleSheet(QStringLiteral("QProgressBar{background-color: #FF5555;} QProgressBar::chunk{background-color: red;}")); } From 72f0db4420c6b24e0698cf7d47ec930a5a4902f2 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 1 May 2015 12:57:50 +0200 Subject: [PATCH 23/41] ProgressDlg: refine the appearance of progress bars by using the activiy's result and minor cleanup --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 57 +++++++++++++++++-- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index e8d749dc..2de3a7f3 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -13,6 +13,7 @@ namespace Private class ProgressWdgt : public QWidget, public Ui::ProgressWdgt { public: + enum Result { Undefined = 0, Ok, Error }; typedef QMap< QString, QPointer > Steps; @@ -23,16 +24,61 @@ namespace Private { setupUi(this); setAttribute(Qt::WA_NoSystemBackground); + resultChanged(Result::Undefined); progressBar->setMinimum(0); progressBar->setMaximum(100); txtHeader->setText( description ); } public: - Steps mSteps; + void resultChanged(Result result) + { + QColor barColor; + + switch (result) { + case Result::Ok: + barColor = QColor(0x55, 0xFF, 0x55); + break; + + case Result::Error: + barColor = QColor(0xFF, 0x55, 0x55); + break; + + case Result::Undefined: + default: + barColor = QColor(0x99, 0x99, 0x99); + break; + } + + progressBar->setStyleSheet( + QStringLiteral( + "QProgressBar{" + "text-align: center;" + "border: 2px solid silver;" + "border-radius: 5px;" + "background: QLinearGradient(" + "x1: 0, y1: 0, x2: 0, y2: 1," + "stop: 0 %1," + "stop: 1 %2);" + "}") + .arg(barColor.darker(150).name()).arg(barColor.name()) % + + QStringLiteral( + "QProgressBar::chunk{" + "background: QLinearGradient(" + "x1: 0, y1: 0, x2: 0, y2: 1," + "stop: 0 %1," + "stop: 1 %2);" + "}") + .arg(barColor.lighter(150).name()).arg(barColor.name()) + ); + } + public: bool mActive; qreal mPercentage; + + Steps mSteps; }; } @@ -134,8 +180,7 @@ void ProgressDlg::finished(QObject* activity) a->mActive = false; a->txtStatusInfo->setText(tr("Finished!")); - a->setStyleSheet(QStringLiteral("QProgressBar::chunk{background-color: #55FF55;}")); - + a->resultChanged(Private::ProgressWdgt::Result::Ok); } void ProgressDlg::finished(QObject* activity, const QString& step) @@ -145,7 +190,7 @@ void ProgressDlg::finished(QObject* activity, const QString& step) s->mActive = false; s->mPercentage = 100.; - s->setStyleSheet(QStringLiteral("QProgressBar::chunk{background-color: #55FF55;}")); + s->resultChanged(Private::ProgressWdgt::Result::Ok); } void ProgressDlg::setError(QObject* activity, const QString& message) @@ -153,9 +198,9 @@ void ProgressDlg::setError(QObject* activity, const QString& message) Private::ProgressWdgt* a = mActivities[activity]; Q_ASSERT(a); a->mActive = false; - a->setToolTip(tr("Activity failed!
%1").arg(message)); a->txtStatusInfo->setText(tr("Failed!")); - a->setStyleSheet(QStringLiteral("QProgressBar{background-color: #FF5555;} QProgressBar::chunk{background-color: red;}")); + a->setToolTip(tr("Activity failed!
%1").arg(message)); + a->resultChanged(Private::ProgressWdgt::Result::Error); } void ProgressDlg::updateActivities() From ce0fda400323035909f711b6f66b267895888d63 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Thu, 7 May 2015 08:27:47 +0200 Subject: [PATCH 24/41] ProgressDlg: add an assert, because currently the activity widget *must* be valid --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 2de3a7f3..93a3f9e2 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -208,6 +208,8 @@ void ProgressDlg::updateActivities() Activities::Iterator it = mActivities.begin(); while ( it != mActivities.end() ) { Private::ProgressWdgt* a = *it; + Q_ASSERT(a); + a->mPercentage = 0.; foreach (Private::ProgressWdgt* s, a->mSteps) { From e5cf9daaf2abeaa9625401d83eb860391ae76ec7 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 8 May 2015 08:12:56 +0200 Subject: [PATCH 25/41] ProgressDlg: inline the info text in the progress bar --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 8 ++++---- Libs/libMacGitverCore/Widgets/ProgressWdgt.ui | 11 ++++------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 93a3f9e2..799e7693 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -141,7 +141,7 @@ void ProgressDlg::addActivity(const QString& description, QObject* activity, ui->treeProgress->setItemWidget(stepItem, 0, s); } - a->txtStatusInfo->setText(tr("Running...")); + a->progressBar->setFormat(tr("Running...")); } void ProgressDlg::setStatusInfo(QObject* activity, const QString& step, @@ -150,7 +150,7 @@ void ProgressDlg::setStatusInfo(QObject* activity, const QString& step, Private::ProgressWdgt* s = findStep(activity, step); Q_ASSERT(s); - s->txtStatusInfo->setText(text); + s->progressBar->setFormat(text); } void ProgressDlg::setPercentage(QObject* activity, const QString& step, @@ -179,7 +179,7 @@ void ProgressDlg::finished(QObject* activity) Q_ASSERT(a); a->mActive = false; - a->txtStatusInfo->setText(tr("Finished!")); + a->progressBar->setFormat(tr("Finished!")); a->resultChanged(Private::ProgressWdgt::Result::Ok); } @@ -198,7 +198,7 @@ void ProgressDlg::setError(QObject* activity, const QString& message) Private::ProgressWdgt* a = mActivities[activity]; Q_ASSERT(a); a->mActive = false; - a->txtStatusInfo->setText(tr("Failed!")); + a->progressBar->setFormat(tr("Failed!")); a->setToolTip(tr("Activity failed!
%1").arg(message)); a->resultChanged(Private::ProgressWdgt::Result::Error); } diff --git a/Libs/libMacGitverCore/Widgets/ProgressWdgt.ui b/Libs/libMacGitverCore/Widgets/ProgressWdgt.ui index 3b780075..a997fc8a 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressWdgt.ui +++ b/Libs/libMacGitverCore/Widgets/ProgressWdgt.ui @@ -7,7 +7,7 @@ 0 0 448 - 83 + 62 @@ -22,12 +22,9 @@ - - - - - - Not started... + + + From f5dc6dde345fb385e38f37fdca8283b957b8ff43 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 8 May 2015 09:07:11 +0200 Subject: [PATCH 26/41] ProgressDlg: use C++11 enum class --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 799e7693..fcd85046 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -13,7 +13,7 @@ namespace Private class ProgressWdgt : public QWidget, public Ui::ProgressWdgt { public: - enum Result { Undefined = 0, Ok, Error }; + enum class Result { Undefined = 0, Ok, Error }; typedef QMap< QString, QPointer > Steps; From 800a368fadf5fababe943ea3727d935c43cbad7e Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 8 May 2015 09:54:51 +0200 Subject: [PATCH 27/41] ProgressDlg: remove "running" and "finished" text --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index fcd85046..42e1534c 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -140,8 +140,6 @@ void ProgressDlg::addActivity(const QString& description, QObject* activity, activityItem->addChild(stepItem); ui->treeProgress->setItemWidget(stepItem, 0, s); } - - a->progressBar->setFormat(tr("Running...")); } void ProgressDlg::setStatusInfo(QObject* activity, const QString& step, @@ -179,7 +177,6 @@ void ProgressDlg::finished(QObject* activity) Q_ASSERT(a); a->mActive = false; - a->progressBar->setFormat(tr("Finished!")); a->resultChanged(Private::ProgressWdgt::Result::Ok); } From b50fd0c552f542efc995badbe655d458e81e3289 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 8 May 2015 09:56:15 +0200 Subject: [PATCH 28/41] ProgressDlg: add a more descriptive "failed" text --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 42e1534c..0b75f898 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -195,8 +195,8 @@ void ProgressDlg::setError(QObject* activity, const QString& message) Private::ProgressWdgt* a = mActivities[activity]; Q_ASSERT(a); a->mActive = false; - a->progressBar->setFormat(tr("Failed!")); - a->setToolTip(tr("Activity failed!
%1").arg(message)); + a->progressBar->setFormat(tr("Failed. See tool tip for details.")); + a->setToolTip(tr("Activity failed.
%1").arg(message)); a->resultChanged(Private::ProgressWdgt::Result::Error); } From c1b5baac27ead1efe0166f6e5f24938f647ee67e Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 8 May 2015 10:00:08 +0200 Subject: [PATCH 29/41] ProgressDlg: only the activity has a finished slot When a step progress reaches 100%, the progress bar changes to a green background. --- Libs/libMacGitverCore/Widgets/ProgressDlg.cpp | 14 ++++---------- Libs/libMacGitverCore/Widgets/ProgressDlg.hpp | 1 - 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp index 0b75f898..7b064e47 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.cpp @@ -158,6 +158,10 @@ void ProgressDlg::setPercentage(QObject* activity, const QString& step, Q_ASSERT(s); s->mPercentage = qMin( qMax(percent, 0.), 1. ) * 100.; + + if (s->mPercentage >= 100.) { + s->resultChanged(Private::ProgressWdgt::Result::Ok); + } } void ProgressDlg::closeEvent( QCloseEvent* ev ) @@ -180,16 +184,6 @@ void ProgressDlg::finished(QObject* activity) a->resultChanged(Private::ProgressWdgt::Result::Ok); } -void ProgressDlg::finished(QObject* activity, const QString& step) -{ - Private::ProgressWdgt* s = findStep(activity, step); - Q_ASSERT(s); - - s->mActive = false; - s->mPercentage = 100.; - s->resultChanged(Private::ProgressWdgt::Result::Ok); -} - void ProgressDlg::setError(QObject* activity, const QString& message) { Private::ProgressWdgt* a = mActivities[activity]; diff --git a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp index 12d3c9f0..ab672960 100644 --- a/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp +++ b/Libs/libMacGitverCore/Widgets/ProgressDlg.hpp @@ -49,7 +49,6 @@ class MGV_CORE_API ProgressDlg : public BlueSky::Dialog void setPercentage(QObject* activity, const QString& step, qreal percent); void finished(QObject* activity); - void finished(QObject* activity, const QString& step); void setError(QObject* activity, const QString& message); From 5a601a871bf64d7fa289f84a53366cb4387eb01f Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Sat, 25 Apr 2015 17:52:43 +0200 Subject: [PATCH 30/41] Repository Module: reimplemented CloneDlg that inherits ExpandableDlg --- Modules/Repository/CMakeLists.txt | 10 +- Modules/Repository/CloneOptionsWdgt.cpp | 33 ---- Modules/Repository/CloneOptionsWdgt.hpp | 35 ---- Modules/Repository/CloneRepositoryDlg.cpp | 136 +++++++------ ...RepositoryDlg.h => CloneRepositoryDlg.hpp} | 77 ++++++-- Modules/Repository/CloneRepositoryDlg.ui | 183 +++++------------- Modules/Repository/RepositoryModule.cpp | 4 +- 7 files changed, 186 insertions(+), 292 deletions(-) delete mode 100644 Modules/Repository/CloneOptionsWdgt.cpp delete mode 100644 Modules/Repository/CloneOptionsWdgt.hpp rename Modules/Repository/{CloneRepositoryDlg.h => CloneRepositoryDlg.hpp} (53%) diff --git a/Modules/Repository/CMakeLists.txt b/Modules/Repository/CMakeLists.txt index 4960338b..8b18181b 100644 --- a/Modules/Repository/CMakeLists.txt +++ b/Modules/Repository/CMakeLists.txt @@ -16,9 +16,8 @@ SET( SRC_FILES RepoTreeView.cpp RepositoryContext.cpp - CreateRepositoryDlg.cpp CloneRepositoryDlg.cpp - CloneOptionsWdgt.cpp + CreateRepositoryDlg.cpp ProgressDlg.cpp ) @@ -30,18 +29,17 @@ SET( HDR_FILES RepoTreeView.hpp RepositoryContext.hpp + CloneRepositoryDlg.hpp CreateRepositoryDlg.h - CloneRepositoryDlg.h - CloneOptionsWdgt.hpp ProgressDlg.hpp ) SET( UI_FILES - CreateRepositoryDlg.ui - CloneRepositoryDlg.ui CloneOptionsWdgt.ui ProgressDlg.ui + CloneRepositoryDlg.ui + CreateRepositoryDlg.ui ) SET( HID_FILES diff --git a/Modules/Repository/CloneOptionsWdgt.cpp b/Modules/Repository/CloneOptionsWdgt.cpp deleted file mode 100644 index f596a257..00000000 --- a/Modules/Repository/CloneOptionsWdgt.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "CloneOptionsWdgt.hpp" - -#include - - -CloneOptionsWdgt::CloneOptionsWdgt(QWidget *parent) : - QWidget(parent) -{ - setupUi(this); - - // margin is controlled by the parent widget's layout - layout()->setMargin(0); -} - -CloneOptionsWdgt::~CloneOptionsWdgt() -{ -} - -void CloneOptionsWdgt::on_txtCloneMode_currentIndexChanged(int index) -{ - // Note: clone modes are fixed - mCloneMode = static_cast( index ); - grpSubmodules->setEnabled( mCloneMode == cmCheckout ); -} - -void CloneOptionsWdgt::on_chkInitSubmodules_toggled(bool checked) -{ - chkSubmodulesRecursive->setEnabled( checked ); - if( !checked ) - { - chkSubmodulesRecursive->setChecked( false ); - } -} diff --git a/Modules/Repository/CloneOptionsWdgt.hpp b/Modules/Repository/CloneOptionsWdgt.hpp deleted file mode 100644 index c96d6594..00000000 --- a/Modules/Repository/CloneOptionsWdgt.hpp +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef UICLONEOPTIONS_HPP -#define UICLONEOPTIONS_HPP - -#include - -#include "ui_CloneOptionsWdgt.h" - - -class CloneOptionsWdgt : public QWidget, Ui::CloneOptionsWdgt -{ - Q_OBJECT - - friend class CloneRepositoryDlg; - -public: - enum CloneMode { - cmCheckout = 0, - cmBare, - cmMirror - }; - -public: - explicit CloneOptionsWdgt(QWidget *parent = 0); - ~CloneOptionsWdgt(); - -private slots: - void on_txtCloneMode_currentIndexChanged(int index); - - void on_chkInitSubmodules_toggled(bool checked); - -private: - CloneMode mCloneMode; -}; - -#endif // UICLONEOPTIONS_HPP diff --git a/Modules/Repository/CloneRepositoryDlg.cpp b/Modules/Repository/CloneRepositoryDlg.cpp index ed59a40e..0ba9dec6 100644 --- a/Modules/Repository/CloneRepositoryDlg.cpp +++ b/Modules/Repository/CloneRepositoryDlg.cpp @@ -1,6 +1,9 @@ /* * MacGitver - * Copyright (C) 2012 Sascha Cunz + * Copyright (C) 2015 The MacGitver-Developers + * + * (C) Sascha Cunz + * (C) Nils Fenner * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License (Version 2) as published by the Free Software Foundation. @@ -14,8 +17,7 @@ * */ -#include -#include +#include "CloneRepositoryDlg.hpp" #include "libMacGitverCore/Config/Config.h" @@ -23,22 +25,42 @@ #include "libMacGitverCore/App/MacGitver.hpp" -#include "CloneRepositoryDlg.h" -#include "CloneOptionsWdgt.hpp" +#include +#include #include "ProgressDlg.hpp" -CloneRepositoryDlg::CloneRepositoryDlg() - : mProgress( NULL ) + +CloneOptionsWdgt::CloneOptionsWdgt() { - setupUi( this ); + setupUi(this); +} - connect( btnBrowseTo, SIGNAL(clicked()), SLOT(onBrowse()) ); - connect( txtPath, SIGNAL(textChanged(QString)), SLOT(checkValid()) ); +void CloneOptionsWdgt::on_txtCloneMode_currentIndexChanged(int index) +{ + // Note: clone modes are fixed + mCloneMode = static_cast( index ); + grpSubmodules->setEnabled( mCloneMode == cmCheckout ); +} - checkValid(); +void CloneOptionsWdgt::on_chkInitSubmodules_toggled(bool checked) +{ + chkSubmodulesRecursive->setEnabled( checked ); + if( !checked ) + { + chkSubmodulesRecursive->setChecked( false ); + } } -void CloneRepositoryDlg::onBrowse() + +CloneWdgt::CloneWdgt() +{ + setupUi( this ); + + connect(btnBrowseTo, &QAbstractButton::clicked, + this, &CloneWdgt::onBrowse); +} + +void CloneWdgt::onBrowse() { QString fn = txtPath->text(); if( fn.isEmpty() ) @@ -59,7 +81,7 @@ void CloneRepositoryDlg::onBrowse() fd->open( this, SLOT(onBrowseHelper(QString)) ); } -void CloneRepositoryDlg::onBrowseHelper( const QString& directory ) +void CloneWdgt::onBrowseHelper( const QString& directory ) { if( directory.isEmpty() ) { @@ -70,12 +92,30 @@ void CloneRepositoryDlg::onBrowseHelper( const QString& directory ) txtPath->setText( directory ); } -void CloneRepositoryDlg::checkValid() + +CloneDlg::CloneDlg() + : mCloneWdgt(new CloneWdgt) + , mCloneOptsWdgt(new CloneOptionsWdgt) { - bool okay = !txtPath->text().isEmpty() && - !txtUrl->text().isEmpty(); + setDialogWidgets(mCloneWdgt, mCloneOptsWdgt); + + connect(mCloneWdgt->txtPath, &QLineEdit::textChanged, + this, &CloneDlg::checkValid); - QDir wanted( QDir::toNativeSeparators( txtPath->text() ) ); + checkValid(); +} + +void CloneDlg::checkValid() +{ + if (!mCloneWdgt) { + setAcceptable(false); + return; + } + + bool okay = !mCloneWdgt->txtPath->text().isEmpty() && + !mCloneWdgt->txtUrl->text().isEmpty(); + + QDir wanted( QDir::toNativeSeparators( mCloneWdgt->txtPath->text() ) ); if( wanted.exists() ) { QStringList sl = wanted.entryList( QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot ); @@ -85,16 +125,20 @@ void CloneRepositoryDlg::checkValid() } } - buttonBox->button( QDialogButtonBox::Ok )->setEnabled( okay ); + setAcceptable( okay ); } -void CloneRepositoryDlg::accept() +void CloneDlg::accept() { Git::CloneOperation* clone = new Git::CloneOperation( this ); - QString repoName = QUrl( txtUrl->text() ).adjusted( QUrl::NormalizePathSegments | QUrl::StripTrailingSlash ).toString(); - QString targetDir = QUrl( txtPath->text() ).adjusted( QUrl::NormalizePathSegments | QUrl::StripTrailingSlash ).toString(); - - if ( chkAppendRepoName->isChecked() ) + QString repoName = QUrl(mCloneWdgt->txtUrl->text() ) + .adjusted(QUrl::NormalizePathSegments | + QUrl::StripTrailingSlash ).toString(); + QString targetDir = QUrl(mCloneWdgt->txtPath->text() ) + .adjusted(QUrl::NormalizePathSegments | + QUrl::StripTrailingSlash ).toString(); + + if ( mCloneWdgt->chkAppendRepoName->isChecked() ) { targetDir += QString::fromUtf8("/%1") .arg( QUrl( repoName ).fileName() ); @@ -103,13 +147,13 @@ void CloneRepositoryDlg::accept() clone->setBackgroundMode( true ); clone->setUrl( repoName ); clone->setPath( targetDir ); - clone->setRemoteAlias( txtRemoteAlias->text() ); + clone->setRemoteAlias( mCloneWdgt->txtRemoteAlias->text() ); - if ( mCloneOpts ) + if ( mCloneOptsWdgt ) { - clone->setBare( mCloneOpts->mCloneMode == CloneOptionsWdgt::cmBare ); - clone->setReference( mCloneOpts->txtBranch->text() ); - clone->setDepth( mCloneOpts->txtCloneDepth->value() ); + clone->setBare( mCloneOptsWdgt->mCloneMode == CloneOptionsWdgt::cmBare ); + clone->setReference( mCloneOptsWdgt->txtBranch->text() ); + clone->setDepth( mCloneOptsWdgt->txtCloneDepth->value() ); } mProgress = new ProgressDlg; @@ -140,7 +184,7 @@ void CloneRepositoryDlg::accept() clone->execute(); } -void CloneRepositoryDlg::beginDownloading() +void CloneDlg::beginDownloading() { disconnect( sender(), SIGNAL(transportProgress(quint32,quint32,quint32,quint64)), this, SLOT(beginDownloading()) ); @@ -151,13 +195,13 @@ void CloneRepositoryDlg::beginDownloading() updateAction(); } -void CloneRepositoryDlg::doneDownload() +void CloneDlg::doneDownload() { mStates[ Download ] = Done; updateAction(); } -void CloneRepositoryDlg::doneIndexing() +void CloneDlg::doneIndexing() { mStates[ Index ] = Done; @@ -167,13 +211,13 @@ void CloneRepositoryDlg::doneIndexing() updateAction(); } -void CloneRepositoryDlg::doneCheckout() +void CloneDlg::doneCheckout() { mStates[ Checkout ] = Done; updateAction(); } -void CloneRepositoryDlg::rootCloneFinished() +void CloneDlg::rootCloneFinished() { Git::BaseOperation* operation = static_cast( sender() ); Q_ASSERT( operation ); @@ -189,7 +233,7 @@ void CloneRepositoryDlg::rootCloneFinished() mProgress->reject(); } -void CloneRepositoryDlg::updateAction() +void CloneDlg::updateAction() { QStringList open, current, done; @@ -213,27 +257,3 @@ void CloneRepositoryDlg::updateAction() mProgress->setAction( mAction, open, current, done ); } - -void CloneRepositoryDlg::on_btnCloneopts_toggled(bool checked) -{ - if ( checked ) - { - if ( !mCloneOpts ) - { - mCloneOpts = new CloneOptionsWdgt(); - } - - optsLayout->addWidget( mCloneOpts ); - mCloneOpts->show(); - } - else - { - optsLayout->removeWidget( mCloneOpts ); - if ( mCloneOpts ) - { - mCloneOpts->hide(); - } - layout()->activate(); - resize( width(), minimumSizeHint().height() ); - } -} diff --git a/Modules/Repository/CloneRepositoryDlg.h b/Modules/Repository/CloneRepositoryDlg.hpp similarity index 53% rename from Modules/Repository/CloneRepositoryDlg.h rename to Modules/Repository/CloneRepositoryDlg.hpp index 0599c13e..4d569422 100644 --- a/Modules/Repository/CloneRepositoryDlg.h +++ b/Modules/Repository/CloneRepositoryDlg.hpp @@ -1,6 +1,9 @@ /* * MacGitver - * Copyright (C) 2012 Sascha Cunz + * Copyright (C) 2015 The MacGitver-Developers + * + * (C) Sascha Cunz + * (C) Nils Fenner * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License (Version 2) as published by the Free Software Foundation. @@ -14,28 +17,70 @@ * */ -#ifndef CLONE_REPOSITORY_DLG_H -#define CLONE_REPOSITORY_DLG_H +#pragma once + +#include "libMacGitverCore/Widgets/ExpandableDlg.hpp" -#include "ui_CloneRepositoryDlg.h" +#include "ui_CloneWdgt.h" +#include "ui_CloneOptionsWdgt.h" #include class ProgressDlg; -class CloneOptionsWdgt; -class CloneRepositoryDlg : public QDialog, Ui::CloneRepositoryDlg +class CloneOptionsWdgt : public QWidget, Ui::CloneOptionsWdgt { Q_OBJECT + + friend class CloneDlg; + public: - CloneRepositoryDlg(); + enum CloneMode { + cmCheckout = 0, + cmBare, + cmMirror + }; -protected: - void accept(); +public: + CloneOptionsWdgt(); + +private slots: + void on_txtCloneMode_currentIndexChanged(int index); + void on_chkInitSubmodules_toggled(bool checked); + +private: + CloneMode mCloneMode; +}; + +class CloneWdgt : public QWidget, Ui::CloneWdgt +{ + Q_OBJECT + + friend class CloneDlg; + +public: + CloneWdgt(); private slots: void onBrowse(); void onBrowseHelper( const QString& directory ); +}; + +class CloneDlg : public ExpandableDlg +{ + Q_OBJECT + +private: + enum State { Unused, Open, Done, Current }; + enum Tasks { Prepare, Download, Index, Checkout }; + +public: + CloneDlg(); + +protected: + void accept(); + +private slots: void checkValid(); void beginDownloading(); @@ -44,22 +89,14 @@ private slots: void doneCheckout(); void rootCloneFinished(); - void on_btnCloneopts_toggled(bool checked); - -private: - enum State { Unused, Open, Done, Current }; - enum Tasks { Prepare, Download, Index, Checkout }; - private: void updateAction(); private: - QPointer mCloneOpts; - - ProgressDlg* mProgress; + ProgressDlg* mProgress = nullptr; QString mAction; QHash< Tasks, State > mStates; + QPointer mCloneWdgt; + QPointer mCloneOptsWdgt; }; - -#endif diff --git a/Modules/Repository/CloneRepositoryDlg.ui b/Modules/Repository/CloneRepositoryDlg.ui index 79b596c8..6e5b7d24 100644 --- a/Modules/Repository/CloneRepositoryDlg.ui +++ b/Modules/Repository/CloneRepositoryDlg.ui @@ -1,44 +1,44 @@ - CloneRepositoryDlg - + CloneWdgt + 0 0 - 602 - 107 + 518 + 70 - Clone repository - - - true + Form - - + + + + + 0 + 0 + + - Clone Options + From: - - true + + txtUrl - - - - Append repository name - - + + + true - - + + 0 @@ -46,48 +46,34 @@ - To: + Alias: - txtPath + txtRemoteAlias - - + + - + 0 0 - - true - - - - - - ... + - - - - - - - 0 - 0 - + + origin true - - + + 0 @@ -95,78 +81,37 @@ - From: + To: - txtUrl + txtPath - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + true - - - - 0 - - - - - - - - 0 - 0 - - + + - Alias: - - - txtRemoteAlias + ... - - - - - 0 - 0 - - + + - - - - origin + Append repository name - + true - - - - Qt::Horizontal - - - - 40 - 20 - - - - @@ -176,44 +121,6 @@
libMacGitverCore/Widgets/LineEdit.h
- - txtUrl - txtPath - chkAppendRepoName - - - - buttonBox - accepted() - CloneRepositoryDlg - accept() - - - 222 - 342 - - - 157 - 274 - - - - - buttonBox - rejected() - CloneRepositoryDlg - reject() - - - 290 - 348 - - - 286 - 274 - - - - +
diff --git a/Modules/Repository/RepositoryModule.cpp b/Modules/Repository/RepositoryModule.cpp index a77bd736..21a135b7 100644 --- a/Modules/Repository/RepositoryModule.cpp +++ b/Modules/Repository/RepositoryModule.cpp @@ -28,7 +28,7 @@ #include "RepositoryModule.h" #include "RepoTreeView.hpp" -#include "CloneRepositoryDlg.h" +#include "CloneRepositoryDlg.hpp" #include "CreateRepositoryDlg.h" RepositoryModule::RepositoryModule() @@ -132,7 +132,7 @@ void RepositoryModule::onRepositoryOpenHelper() void RepositoryModule::onRepositoryClone() { - CloneRepositoryDlg().exec(); + CloneDlg().exec(); } void RepositoryModule::onRecentRepositoryOpen( const QVariant& path ) From 00c2e3d7a0b5a3d458874d944b21b63c18d0c44c Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Sat, 25 Apr 2015 18:13:13 +0200 Subject: [PATCH 31/41] replaced old ProgressDlg in "Repository" module with the central one The progress dialog is part of the MGV-Core API now. --- Modules/Repository/CMakeLists.txt | 4 - Modules/Repository/CloneRepositoryDlg.cpp | 2 +- Modules/Repository/ProgressDlg.cpp | 157 ---------------------- Modules/Repository/ProgressDlg.hpp | 43 ------ Modules/Repository/ProgressDlg.ui | 142 ------------------- 5 files changed, 1 insertion(+), 347 deletions(-) delete mode 100644 Modules/Repository/ProgressDlg.cpp delete mode 100644 Modules/Repository/ProgressDlg.hpp delete mode 100644 Modules/Repository/ProgressDlg.ui diff --git a/Modules/Repository/CMakeLists.txt b/Modules/Repository/CMakeLists.txt index 8b18181b..da32b007 100644 --- a/Modules/Repository/CMakeLists.txt +++ b/Modules/Repository/CMakeLists.txt @@ -18,7 +18,6 @@ SET( SRC_FILES CloneRepositoryDlg.cpp CreateRepositoryDlg.cpp - ProgressDlg.cpp ) SET( HDR_FILES @@ -31,13 +30,11 @@ SET( HDR_FILES CloneRepositoryDlg.hpp CreateRepositoryDlg.h - ProgressDlg.hpp ) SET( UI_FILES CloneOptionsWdgt.ui - ProgressDlg.ui CloneRepositoryDlg.ui CreateRepositoryDlg.ui ) @@ -61,4 +58,3 @@ ADD_MGV_MODULE( ${UIC_FILES} ${UI_FILES} ${HIC_FILES} ${HID_FILES} ) - diff --git a/Modules/Repository/CloneRepositoryDlg.cpp b/Modules/Repository/CloneRepositoryDlg.cpp index 0ba9dec6..dd6dfd7f 100644 --- a/Modules/Repository/CloneRepositoryDlg.cpp +++ b/Modules/Repository/CloneRepositoryDlg.cpp @@ -24,10 +24,10 @@ #include "libGitWrap/Operations/CloneOperation.hpp" #include "libMacGitverCore/App/MacGitver.hpp" +#include "libMacGitverCore/Widgets/ProgressDlg.hpp" #include #include -#include "ProgressDlg.hpp" CloneOptionsWdgt::CloneOptionsWdgt() diff --git a/Modules/Repository/ProgressDlg.cpp b/Modules/Repository/ProgressDlg.cpp deleted file mode 100644 index 832e0862..00000000 --- a/Modules/Repository/ProgressDlg.cpp +++ /dev/null @@ -1,157 +0,0 @@ - -#include -#include -#include -#include -#include - -#include "ProgressDlg.hpp" - - -ProgressDlg::ProgressDlg() - : BlueSky::Dialog() - , mDone( false ) -{ - setupUi( this ); - - QPushButton* close = buttonBox->button( QDialogButtonBox::Close ); - close->setEnabled( false ); - connect( close, SIGNAL(clicked()), this, SLOT(close ()) ); - - QPalette p; - p.setColor( QPalette::Base, p.color( QPalette::Window ) ); - p.setColor( QPalette::Text, p.color( QPalette::WindowText ) ); - txtLog->setPalette( p ); - -} - -void ProgressDlg::setAction( const QString& action, - const QStringList& open, - const QStringList& current, - const QStringList& done ) -{ - QString act = action; - - foreach( QString s, done ) - { - act += QStringLiteral( " (" ) % s % QStringLiteral( ")" ); - } - - foreach( QString s, current ) - { - act += QStringLiteral( " (" ) % s % QStringLiteral( ")" ); - } - - foreach( QString s, open ) - { - act += QStringLiteral( " (" ) % s % QStringLiteral( ")" ); - } - - lblAction->setText( act ); -} - -void ProgressDlg::setCurrent(QObject* current) -{ - mCurrent = current; - - connect( mCurrent, SIGNAL(remoteMessage(QString)), - this, SLOT(remoteMessage(QString)) ); - connect( mCurrent, SIGNAL(transportProgress(quint32, quint32, quint32, quint64)), - this, SLOT(transportProgress(quint32, quint32, quint32, quint64)) ); -} - -void ProgressDlg::closeEvent( QCloseEvent* ev ) -{ - if( !mDone ) - { - ev->ignore(); - return; - } - - QDialog::closeEvent( ev ); -} - -void ProgressDlg::transportProgress( quint32 totalObjects, - quint32 indexedObjects, - quint32 receivedObjects, - quint64 receivedBytes ) -{ - QString recv; - if( receivedBytes > 1024 * 1024 * 950 ) /* 950 is so we get 0.9 gb */ - { - recv = QString::number( receivedBytes / (1024*1024*1024.0), 'f', 2 ) % QStringLiteral( " Gb" ); - } - else if( receivedBytes > 1024 * 950 ) - { - recv = QString::number( receivedBytes / (1024*1024.0), 'f', 2 ) % QStringLiteral( " Mb" ); - } - else if( receivedBytes > 950 ) - { - recv = QString::number( receivedBytes / 1024.0, 'f', 2 ) % QStringLiteral( " Kb" ); - } - else - { - recv = QString::number( receivedBytes ); - } - lblTransferSize->setText( recv ); - - progressBar->setRange( 0, totalObjects * 2 ); - progressBar->setValue( indexedObjects + receivedObjects ); -} - -void ProgressDlg::remoteMessage( const QString& msg ) -{ - mRawRemoteMessage += msg; - - QString output; - QChar outputBuffer[ 256 ]; - int outBufPos = 0, outBufLen = 0; - - for( int i = 0; i < mRawRemoteMessage.length(); ++i ) - { - if( mRawRemoteMessage[ i ] == QChar( L'\r' ) ) - { - outBufPos = 0; - } - else if( mRawRemoteMessage[ i ] == QChar( L'\n' ) ) - { - if( outBufLen ) - output += QString( outputBuffer, outBufLen ); - output += QChar( L'\n' ); - outBufPos = outBufLen = 0; - } - else - { - outputBuffer[ outBufPos++] = mRawRemoteMessage[ i ]; - outBufLen = qMax( outBufLen, outBufPos ); - } - } - - if( outBufLen ) - output += QString( outputBuffer, outBufLen ); - - QString log = mBaseLog % QStringLiteral( "
" ) % - output.replace( QChar( L'\n' ), QLatin1String("
") ).simplified(); - - txtLog->setHtml( log ); -} - -void ProgressDlg::beginStep( const QString& step ) -{ - mBaseLog += tr( "%1
" ).arg( step ); - txtLog->setHtml( mBaseLog ); -} - -void ProgressDlg::finalizeStep() -{ - mBaseLog = txtLog->toHtml() % QStringLiteral( "
" ); - mRawRemoteMessage = QString(); - - txtLog->setHtml( mBaseLog ); -} - -void ProgressDlg::setDone() -{ - mDone = true; - buttonBox->button( QDialogButtonBox::Close )->setEnabled( true ); -} diff --git a/Modules/Repository/ProgressDlg.hpp b/Modules/Repository/ProgressDlg.hpp deleted file mode 100644 index 7b1ecd69..00000000 --- a/Modules/Repository/ProgressDlg.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef MODREPO_PROGRESS_DLG_HPP -#define MODREPO_PROGRESS_DLG_HPP - -#include "libBlueSky/Dialog.hpp" - -#include "ui_ProgressDlg.h" - - -class ProgressDlg - : public BlueSky::Dialog - , private Ui::ProgressDlg -{ - Q_OBJECT -public: - ProgressDlg(); - -public: - void setAction( const QString& action, const QStringList& open, - const QStringList& current, const QStringList& done ); - void setCurrent(QObject* current); - -private slots: - void transportProgress( quint32 totalObjects, quint32 indexedObjects, - quint32 receivedObjects, quint64 receivedBytes ); - void remoteMessage( const QString& msg ); - -public: - void setDone(); - void beginStep( const QString& step ); - void finalizeStep(); - -protected: - void closeEvent( QCloseEvent* ev ); - -private: - bool mDone; - QString mBaseLog; - QObject* mCurrent; - QString mRawRemoteMessage; -}; - -#endif diff --git a/Modules/Repository/ProgressDlg.ui b/Modules/Repository/ProgressDlg.ui deleted file mode 100644 index c2670eb4..00000000 --- a/Modules/Repository/ProgressDlg.ui +++ /dev/null @@ -1,142 +0,0 @@ - - - ProgressDlg - - - Qt::ApplicationModal - - - - 0 - 0 - 484 - 291 - - - - - 0 - 0 - - - - Progress - - - false - - - true - - - - - - QDialogButtonBox::Close - - - - - - - - 0 - 0 - - - - - 0 - 60 - - - - Log - - - - QLayout::SetDefaultConstraint - - - 0 - - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Plain - - - - - - - - - - Current operation - - - - -1 - - - 2 - - - 3 - - - - - - 0 - 0 - - - - - - - - - - - - - - - <b>Progress</(b> - - - - - - - <b>Action</b> - - - - - - - - - - - - - - - - - - From 96e228a12ac863560a1ab580a6e9eeaeaa99ed91 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Sun, 10 May 2015 10:55:23 +0200 Subject: [PATCH 32/41] Remotes Module / Repository Module: moved clone action to "Remotes" module --- Libs/libMacGitverCore/App/MgvPrimaryWindowActions.hid | 2 ++ Modules/Remotes/CMakeLists.txt | 5 ++++- Modules/{Repository => Remotes}/CloneOptionsWdgt.ui | 0 Modules/{Repository => Remotes}/CloneRepositoryDlg.cpp | 0 Modules/{Repository => Remotes}/CloneRepositoryDlg.hpp | 0 .../CloneRepositoryDlg.ui => Remotes/CloneWdgt.ui} | 0 Modules/Remotes/RemotesModule.cpp | 7 +++++++ Modules/Remotes/RemotesModule.h | 4 ++++ Modules/Remotes/RemotesModuleActions.hid | 9 +++++++++ Modules/Repository/CMakeLists.txt | 4 ---- Modules/Repository/RepositoryModule.cpp | 6 ------ Modules/Repository/RepositoryModule.h | 1 - Modules/Repository/RepositoryModule.hid | 6 ------ 13 files changed, 26 insertions(+), 18 deletions(-) rename Modules/{Repository => Remotes}/CloneOptionsWdgt.ui (100%) rename Modules/{Repository => Remotes}/CloneRepositoryDlg.cpp (100%) rename Modules/{Repository => Remotes}/CloneRepositoryDlg.hpp (100%) rename Modules/{Repository/CloneRepositoryDlg.ui => Remotes/CloneWdgt.ui} (100%) diff --git a/Libs/libMacGitverCore/App/MgvPrimaryWindowActions.hid b/Libs/libMacGitverCore/App/MgvPrimaryWindowActions.hid index 11a375b5..059a9ef6 100644 --- a/Libs/libMacGitverCore/App/MgvPrimaryWindowActions.hid +++ b/Libs/libMacGitverCore/App/MgvPrimaryWindowActions.hid @@ -26,7 +26,9 @@ Ui MgvPrimaryWindowActions { StatusToolTip "Repository related functions."; MergePlace RepositoryMenuMP; + Separator; + MergePlace CloneMP; Separator; Action RepositoryQuit { diff --git a/Modules/Remotes/CMakeLists.txt b/Modules/Remotes/CMakeLists.txt index f76cf72a..180ea75d 100644 --- a/Modules/Remotes/CMakeLists.txt +++ b/Modules/Remotes/CMakeLists.txt @@ -10,7 +10,7 @@ INCLUDE_DIRECTORIES( BEFORE SET( SRC_FILES - RemotesModule.cpp + CloneRepositoryDlg.cpp RemotesView.cpp RemotesViewContext.cpp RemoteCreateEditDlg.cpp @@ -18,6 +18,7 @@ SET( SRC_FILES SET( HDR_FILES + CloneRepositoryDlg.hpp RemotesModule.h RemotesView.h RemotesViewContext.h @@ -27,6 +28,8 @@ SET( HDR_FILES SET( UI_FILES RemoteCreateEditDlg.ui + CloneOptionsWdgt.ui + CloneWdgt.ui ) SET( HID_FILES diff --git a/Modules/Repository/CloneOptionsWdgt.ui b/Modules/Remotes/CloneOptionsWdgt.ui similarity index 100% rename from Modules/Repository/CloneOptionsWdgt.ui rename to Modules/Remotes/CloneOptionsWdgt.ui diff --git a/Modules/Repository/CloneRepositoryDlg.cpp b/Modules/Remotes/CloneRepositoryDlg.cpp similarity index 100% rename from Modules/Repository/CloneRepositoryDlg.cpp rename to Modules/Remotes/CloneRepositoryDlg.cpp diff --git a/Modules/Repository/CloneRepositoryDlg.hpp b/Modules/Remotes/CloneRepositoryDlg.hpp similarity index 100% rename from Modules/Repository/CloneRepositoryDlg.hpp rename to Modules/Remotes/CloneRepositoryDlg.hpp diff --git a/Modules/Repository/CloneRepositoryDlg.ui b/Modules/Remotes/CloneWdgt.ui similarity index 100% rename from Modules/Repository/CloneRepositoryDlg.ui rename to Modules/Remotes/CloneWdgt.ui diff --git a/Modules/Remotes/RemotesModule.cpp b/Modules/Remotes/RemotesModule.cpp index 05e7d295..1a9ff351 100644 --- a/Modules/Remotes/RemotesModule.cpp +++ b/Modules/Remotes/RemotesModule.cpp @@ -19,6 +19,7 @@ #include "libMacGitverCore/App/MacGitver.hpp" +#include "CloneRepositoryDlg.hpp" #include "RemoteCreateEditDlg.h" #include "RemotesModule.h" #include "RemotesView.h" @@ -35,6 +36,7 @@ BlueSky::View* RemotesModule::createRemotesView() void RemotesModule::initialize() { setupActions( this ); + acCloneAC->mergeInto( "CloneMP" ); acRemotesAC->mergeInto( "RemotesMP" ); MacGitver::self().registerView( "Remotes", tr( "Remotes" ), @@ -46,6 +48,11 @@ void RemotesModule::deinitialize() MacGitver::self().unregisterView( "Remotes" ); } +void RemotesModule::onClone() +{ + CloneDlg().exec(); +} + void RemotesModule::onRemoteCreate() { RemoteCreateEditDlg().exec(); diff --git a/Modules/Remotes/RemotesModule.h b/Modules/Remotes/RemotesModule.h index fd72b521..c1aefc09 100644 --- a/Modules/Remotes/RemotesModule.h +++ b/Modules/Remotes/RemotesModule.h @@ -37,6 +37,10 @@ class RemotesModule : public Module, public RemotesModuleActions private: static BlueSky::View* createRemotesView(); +private slots: + // CloneAC + void onClone(); + private slots: void onRemoteCreate(); }; diff --git a/Modules/Remotes/RemotesModuleActions.hid b/Modules/Remotes/RemotesModuleActions.hid index 4f7ffe4a..26987603 100644 --- a/Modules/Remotes/RemotesModuleActions.hid +++ b/Modules/Remotes/RemotesModuleActions.hid @@ -19,6 +19,15 @@ Ui RemotesModuleActions { Container RemotesAC { Menu Remotes { + Container CloneAC { + + Action Clone { + Text "&Clone..."; + _ConnectTo onClone(); + }; + + }; + Text "R&emotes"; diff --git a/Modules/Repository/CMakeLists.txt b/Modules/Repository/CMakeLists.txt index da32b007..f7bb8142 100644 --- a/Modules/Repository/CMakeLists.txt +++ b/Modules/Repository/CMakeLists.txt @@ -16,7 +16,6 @@ SET( SRC_FILES RepoTreeView.cpp RepositoryContext.cpp - CloneRepositoryDlg.cpp CreateRepositoryDlg.cpp ) @@ -28,14 +27,11 @@ SET( HDR_FILES RepoTreeView.hpp RepositoryContext.hpp - CloneRepositoryDlg.hpp CreateRepositoryDlg.h ) SET( UI_FILES - CloneOptionsWdgt.ui - CloneRepositoryDlg.ui CreateRepositoryDlg.ui ) diff --git a/Modules/Repository/RepositoryModule.cpp b/Modules/Repository/RepositoryModule.cpp index 21a135b7..df1b7e5e 100644 --- a/Modules/Repository/RepositoryModule.cpp +++ b/Modules/Repository/RepositoryModule.cpp @@ -28,7 +28,6 @@ #include "RepositoryModule.h" #include "RepoTreeView.hpp" -#include "CloneRepositoryDlg.hpp" #include "CreateRepositoryDlg.h" RepositoryModule::RepositoryModule() @@ -130,11 +129,6 @@ void RepositoryModule::onRepositoryOpenHelper() // repo.isBare() ? repoDir : repo.basePath() ); } -void RepositoryModule::onRepositoryClone() -{ - CloneDlg().exec(); -} - void RepositoryModule::onRecentRepositoryOpen( const QVariant& path ) { QString repoPath = path.toString(); diff --git a/Modules/Repository/RepositoryModule.h b/Modules/Repository/RepositoryModule.h index ac7086b2..d0799ca4 100644 --- a/Modules/Repository/RepositoryModule.h +++ b/Modules/Repository/RepositoryModule.h @@ -57,7 +57,6 @@ class RepositoryModule private slots: void onRepositoryCreate(); - void onRepositoryClone(); void onRepositoryOpen(); void onRecentRepositoryOpen( const QVariant& path ); diff --git a/Modules/Repository/RepositoryModule.hid b/Modules/Repository/RepositoryModule.hid index 96b7a472..5b0f7d29 100644 --- a/Modules/Repository/RepositoryModule.hid +++ b/Modules/Repository/RepositoryModule.hid @@ -25,11 +25,6 @@ Ui RepositoryActions { ConnectTo onRepositoryOpen(); }; - Action RepositoryClone { - Text "&Clone..."; - ConnectTo onRepositoryClone(); - }; - Action RepositoryCreate { Text "&New..."; Shortcut "Ctrl+N"; @@ -49,7 +44,6 @@ Ui RepositoryActions { Menu RepoOpenRecent; Separator; Action RepositoryCreate; - Action RepositoryClone; }; From 2cbbeed2112c8f2a13715efb38c6ef6619397104 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Tue, 21 Apr 2015 14:58:26 +0200 Subject: [PATCH 33/41] Clone: removed incompatible code to unified ProgressDlg --- Modules/Remotes/CloneRepositoryDlg.cpp | 56 +------------------------- Modules/Remotes/CloneRepositoryDlg.hpp | 4 -- 2 files changed, 1 insertion(+), 59 deletions(-) diff --git a/Modules/Remotes/CloneRepositoryDlg.cpp b/Modules/Remotes/CloneRepositoryDlg.cpp index dd6dfd7f..09e1c7e4 100644 --- a/Modules/Remotes/CloneRepositoryDlg.cpp +++ b/Modules/Remotes/CloneRepositoryDlg.cpp @@ -158,7 +158,6 @@ void CloneDlg::accept() mProgress = new ProgressDlg; mProgress->show(); - mProgress->setCurrent( clone ); if( repoName.endsWith( QLatin1String( ".git" ) ) ) repoName = repoName.left( repoName.length() - 4 ); @@ -166,55 +165,21 @@ void CloneDlg::accept() if( repoName.lastIndexOf( QChar( L'/' ) ) != -1 ) repoName.remove( 0, repoName.lastIndexOf( QChar( L'/' ) ) + 1 ); - mAction = tr( "Cloning %1" ).arg( repoName ); - mProgress->beginStep( mAction ); - mStates.clear(); - mStates[ Prepare ] = Current; - mStates[ Download ] = Open; - mStates[ Index ] = Open; - mStates[ Checkout ] = Open; - updateAction(); - - connect( clone, SIGNAL(finished()), this, SLOT(rootCloneFinished()) ); - connect( clone, SIGNAL(transportProgress(quint32,quint32,quint32,quint64)), - this, SLOT(beginDownloading()) ); - connect( clone, SIGNAL(doneDownloading()), this, SLOT(doneDownload()) ); - connect( clone, SIGNAL(doneIndexing()), this, SLOT(doneIndexing()) ); - connect( clone, SIGNAL(doneCheckout()), this, SLOT(doneCheckout()) ); - clone->execute(); -} -void CloneDlg::beginDownloading() -{ - disconnect( sender(), SIGNAL(transportProgress(quint32,quint32,quint32,quint64)), - this, SLOT(beginDownloading()) ); - mStates[ Prepare ] = Done; - mStates[ Download ] = Current; - mStates[ Index ] = Current; - updateAction(); + clone->execute(); } void CloneDlg::doneDownload() { - mStates[ Download ] = Done; - updateAction(); } void CloneDlg::doneIndexing() { - mStates[ Index ] = Done; - - if( mStates.contains( Checkout ) ) - mStates[ Checkout ] = Current; - - updateAction(); } void CloneDlg::doneCheckout() { - mStates[ Checkout ] = Done; - updateAction(); } void CloneDlg::rootCloneFinished() @@ -224,7 +189,6 @@ void CloneDlg::rootCloneFinished() if ( operation->result() ) { - mProgress->setDone(); return; } @@ -233,27 +197,9 @@ void CloneDlg::rootCloneFinished() mProgress->reject(); } -void CloneDlg::updateAction() { - QStringList open, current, done; - - QHash< Tasks, QString > t; - t.insert( Prepare, tr( "Prepare" ) ); - t.insert( Index, tr( "Indexing" ) ); - t.insert( Download, tr( "Downloading" ) ); - t.insert( Checkout, tr( "Check out" ) ); - foreach( Tasks task, mStates.keys() ) { - QStringList* sl = NULL; - - if( mStates[ task ] == Open ) sl = &open; - else if( mStates[ task ] == Done ) sl = &done; - else if( mStates[ task ] == Current ) sl = ¤t; - - if( sl ) - sl->append( t[ task ] ); } - mProgress->setAction( mAction, open, current, done ); } diff --git a/Modules/Remotes/CloneRepositoryDlg.hpp b/Modules/Remotes/CloneRepositoryDlg.hpp index 4d569422..0d744122 100644 --- a/Modules/Remotes/CloneRepositoryDlg.hpp +++ b/Modules/Remotes/CloneRepositoryDlg.hpp @@ -89,13 +89,9 @@ private slots: void doneCheckout(); void rootCloneFinished(); -private: - void updateAction(); private: ProgressDlg* mProgress = nullptr; - QString mAction; - QHash< Tasks, State > mStates; QPointer mCloneWdgt; QPointer mCloneOptsWdgt; From 60f92fddb3ae462a77d60cd0470a3999c3dd171e Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Tue, 21 Apr 2015 15:13:55 +0200 Subject: [PATCH 34/41] Use the reimplemented ProgressDlg in CloneDlg, making it functional again. --- Modules/Remotes/CloneRepositoryDlg.cpp | 76 ++++++++++++++++++++++++++ Modules/Remotes/CloneRepositoryDlg.hpp | 8 +++ 2 files changed, 84 insertions(+) diff --git a/Modules/Remotes/CloneRepositoryDlg.cpp b/Modules/Remotes/CloneRepositoryDlg.cpp index 09e1c7e4..e0e27598 100644 --- a/Modules/Remotes/CloneRepositoryDlg.cpp +++ b/Modules/Remotes/CloneRepositoryDlg.cpp @@ -157,6 +157,8 @@ void CloneDlg::accept() } mProgress = new ProgressDlg; + + // TODO: implement a ProgressDlg::minimumDuration mProgress->show(); if( repoName.endsWith( QLatin1String( ".git" ) ) ) @@ -165,21 +167,47 @@ void CloneDlg::accept() if( repoName.lastIndexOf( QChar( L'/' ) ) != -1 ) repoName.remove( 0, repoName.lastIndexOf( QChar( L'/' ) ) + 1 ); + ProgressDlg::StepInfo::List steps; + steps << ProgressDlg::StepInfo{ QStringLiteral("transfer"), tr("Download Git objects.") } + << ProgressDlg::StepInfo{ QStringLiteral("index"), tr("Add objects to Git index.") }; + + if (!clone->bare()) { + steps << ProgressDlg::StepInfo{ QStringLiteral("checkout"), + tr("Checkout the worktree.") }; + connect( clone, &Git::CloneOperation::doneCheckout, + this, &CloneDlg::doneCheckout ); + } + + mProgress->addActivity(tr("Cloning %1 to %2") + .arg(repoName).arg(targetDir), clone, steps); + connect( clone, &Git::CloneOperation::finished, + this, &CloneDlg::rootCloneFinished ); + connect( clone, &Git::CloneOperation::transportProgress, + this, &CloneDlg::onTransportProgress ); + connect( clone, &Git::CloneOperation::checkoutProgress, + this, &CloneDlg::onCheckoutProgress ); + connect( clone, &Git::CloneOperation::doneDownloading, + this, &CloneDlg::doneDownload ); + connect( clone, &Git::CloneOperation::doneIndexing, + this, &CloneDlg::doneIndexing ); clone->execute(); } void CloneDlg::doneDownload() { + mProgress->finished(sender(), QStringLiteral("transfer")); } void CloneDlg::doneIndexing() { + mProgress->finished(sender(), QStringLiteral("index")); } void CloneDlg::doneCheckout() { + mProgress->finished(sender(), QStringLiteral("checkout")); } void CloneDlg::rootCloneFinished() @@ -189,6 +217,7 @@ void CloneDlg::rootCloneFinished() if ( operation->result() ) { + mProgress->finished(sender()); return; } @@ -197,9 +226,56 @@ void CloneDlg::rootCloneFinished() mProgress->reject(); } +void CloneDlg::onCheckoutProgress(const QString& fileName, quint64 totalFiles, + quint64 completedFiles) { + QObject* s = sender(); + + const QString stepCheckout( QStringLiteral("checkout") ); + mProgress->setPercentage( s, stepCheckout, + (qreal)completedFiles / totalFiles ); + mProgress->setStatusInfo( s, stepCheckout, + tr("Checked out %1 of %2 files (last file: %3).") + .arg(completedFiles).arg(totalFiles).arg(fileName) ); +} +void CloneDlg::onTransportProgress(quint32 totalObjects, + quint32 indexedObjects, + quint32 receivedObjects, + quint64 receivedBytes) +{ + QString recv; + if( receivedBytes > 1024 * 1024 * 950 ) /* 950 is so we get 0.9 gb */ + { + recv = QString::number( receivedBytes / (1024*1024*1024.0), 'f', 2 ) + QStringLiteral(" Gb"); + } + else if( receivedBytes > 1024 * 950 ) + { + recv = QString::number( receivedBytes / (1024*1024.0), 'f', 2 ) + QStringLiteral(" Mb"); + } + else if( receivedBytes > 950 ) + { + recv = QString::number( receivedBytes / 1024.0, 'f', 2 ) + QStringLiteral(" Kb"); + } + else { + recv = QString::number( receivedBytes ); } + QObject* s = sender(); + const QString stepTransfer(QStringLiteral("transfer")); + mProgress->setPercentage( s, stepTransfer, + (qreal)receivedObjects / totalObjects ); + mProgress->setStatusInfo( s, stepTransfer, + tr("Received %1 of %2 objects (%3).") + .arg(receivedObjects) + .arg(totalObjects) + .arg(recv) ); + + const QString stepIndex(QStringLiteral("index")); + mProgress->setPercentage( s, stepIndex, + (qreal)indexedObjects / totalObjects ); + mProgress->setStatusInfo( s, stepIndex, tr("Indexed %1 of %2 objects.") + .arg(indexedObjects) + .arg(totalObjects) ); } diff --git a/Modules/Remotes/CloneRepositoryDlg.hpp b/Modules/Remotes/CloneRepositoryDlg.hpp index 0d744122..6f48ed0e 100644 --- a/Modules/Remotes/CloneRepositoryDlg.hpp +++ b/Modules/Remotes/CloneRepositoryDlg.hpp @@ -89,6 +89,14 @@ private slots: void doneCheckout(); void rootCloneFinished(); + void onCheckoutProgress(const QString& fileName, + quint64 totalFiles, + quint64 completedFiles); + + void onTransportProgress(quint32 totalObjects, + quint32 indexedObjects, + quint32 receivedObjects, + quint64 receivedBytes); private: ProgressDlg* mProgress = nullptr; From 903b9bd62109b53a9c54e776e287b3d9ff050832 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:49:45 +0200 Subject: [PATCH 35/41] clone dialog: adjust finished signal to ProgressDlg --- Modules/Remotes/CloneRepositoryDlg.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Modules/Remotes/CloneRepositoryDlg.cpp b/Modules/Remotes/CloneRepositoryDlg.cpp index e0e27598..8cb9f460 100644 --- a/Modules/Remotes/CloneRepositoryDlg.cpp +++ b/Modules/Remotes/CloneRepositoryDlg.cpp @@ -215,15 +215,13 @@ void CloneDlg::rootCloneFinished() Git::BaseOperation* operation = static_cast( sender() ); Q_ASSERT( operation ); - if ( operation->result() ) - { - mProgress->finished(sender()); - return; + if ( operation->result() ) { + mProgress->finished(operation); + } + else { + mProgress->setError(operation, operation->result().errorText()); } - QMessageBox::critical(mProgress, tr("Errors while cloning repository."), - tr("Cloning failed:\nGit Message: %1").arg(operation->result().errorText())); - mProgress->reject(); } void CloneDlg::onCheckoutProgress(const QString& fileName, quint64 totalFiles, From 1d13d73da8eb3808a1d942f090f6bc3512c6a604 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:08:14 +0200 Subject: [PATCH 36/41] clone dialog: use QStringLiteral --- Modules/Remotes/CloneRepositoryDlg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Remotes/CloneRepositoryDlg.cpp b/Modules/Remotes/CloneRepositoryDlg.cpp index 8cb9f460..5f257749 100644 --- a/Modules/Remotes/CloneRepositoryDlg.cpp +++ b/Modules/Remotes/CloneRepositoryDlg.cpp @@ -140,7 +140,7 @@ void CloneDlg::accept() if ( mCloneWdgt->chkAppendRepoName->isChecked() ) { - targetDir += QString::fromUtf8("/%1") + targetDir += QStringLiteral("/%1") .arg( QUrl( repoName ).fileName() ); } From 23bcc4fec8967af2d6b13220934cb20f349f3f3e Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Mon, 27 Apr 2015 13:07:22 +0200 Subject: [PATCH 37/41] minor textual changes in clone dialog --- Modules/Remotes/CloneRepositoryDlg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Remotes/CloneRepositoryDlg.cpp b/Modules/Remotes/CloneRepositoryDlg.cpp index 5f257749..7bbeae33 100644 --- a/Modules/Remotes/CloneRepositoryDlg.cpp +++ b/Modules/Remotes/CloneRepositoryDlg.cpp @@ -178,7 +178,7 @@ void CloneDlg::accept() this, &CloneDlg::doneCheckout ); } - mProgress->addActivity(tr("Cloning %1 to %2") + mProgress->addActivity(tr("Clone %1 to %2") .arg(repoName).arg(targetDir), clone, steps); connect( clone, &Git::CloneOperation::finished, From 3a1cd4eea3e0629962bd759826297096b4d47e39 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 8 May 2015 10:08:20 +0200 Subject: [PATCH 38/41] CloneDlg: use QStringLiteral --- Modules/Remotes/CloneRepositoryDlg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Remotes/CloneRepositoryDlg.cpp b/Modules/Remotes/CloneRepositoryDlg.cpp index 7bbeae33..c6d0c7c1 100644 --- a/Modules/Remotes/CloneRepositoryDlg.cpp +++ b/Modules/Remotes/CloneRepositoryDlg.cpp @@ -161,7 +161,7 @@ void CloneDlg::accept() // TODO: implement a ProgressDlg::minimumDuration mProgress->show(); - if( repoName.endsWith( QLatin1String( ".git" ) ) ) + if( repoName.endsWith( QStringLiteral( ".git" ) ) ) repoName = repoName.left( repoName.length() - 4 ); if( repoName.lastIndexOf( QChar( L'/' ) ) != -1 ) From cedc2dffe4d6f42445ef614fd1febff5efc51c58 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 8 May 2015 10:05:30 +0200 Subject: [PATCH 39/41] CloneDlg: remove signal/slot connections of steps The "finished" status of a step is artificially generated through it's progress (>=100%). The progress dialog now does this by itself. --- Modules/Remotes/CloneRepositoryDlg.cpp | 21 --------------------- Modules/Remotes/CloneRepositoryDlg.hpp | 3 --- 2 files changed, 24 deletions(-) diff --git a/Modules/Remotes/CloneRepositoryDlg.cpp b/Modules/Remotes/CloneRepositoryDlg.cpp index c6d0c7c1..253b2e1c 100644 --- a/Modules/Remotes/CloneRepositoryDlg.cpp +++ b/Modules/Remotes/CloneRepositoryDlg.cpp @@ -174,8 +174,6 @@ void CloneDlg::accept() if (!clone->bare()) { steps << ProgressDlg::StepInfo{ QStringLiteral("checkout"), tr("Checkout the worktree.") }; - connect( clone, &Git::CloneOperation::doneCheckout, - this, &CloneDlg::doneCheckout ); } mProgress->addActivity(tr("Clone %1 to %2") @@ -187,29 +185,10 @@ void CloneDlg::accept() this, &CloneDlg::onTransportProgress ); connect( clone, &Git::CloneOperation::checkoutProgress, this, &CloneDlg::onCheckoutProgress ); - connect( clone, &Git::CloneOperation::doneDownloading, - this, &CloneDlg::doneDownload ); - connect( clone, &Git::CloneOperation::doneIndexing, - this, &CloneDlg::doneIndexing ); clone->execute(); } -void CloneDlg::doneDownload() -{ - mProgress->finished(sender(), QStringLiteral("transfer")); -} - -void CloneDlg::doneIndexing() -{ - mProgress->finished(sender(), QStringLiteral("index")); -} - -void CloneDlg::doneCheckout() -{ - mProgress->finished(sender(), QStringLiteral("checkout")); -} - void CloneDlg::rootCloneFinished() { Git::BaseOperation* operation = static_cast( sender() ); diff --git a/Modules/Remotes/CloneRepositoryDlg.hpp b/Modules/Remotes/CloneRepositoryDlg.hpp index 6f48ed0e..463f67db 100644 --- a/Modules/Remotes/CloneRepositoryDlg.hpp +++ b/Modules/Remotes/CloneRepositoryDlg.hpp @@ -84,9 +84,6 @@ private slots: void checkValid(); void beginDownloading(); - void doneDownload(); - void doneIndexing(); - void doneCheckout(); void rootCloneFinished(); void onCheckoutProgress(const QString& fileName, From 97f394da9b4e64c4869d0e956a6d37c3e355707d Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Fri, 8 May 2015 10:07:33 +0200 Subject: [PATCH 40/41] CloneDlg: signal/slot connection for checkout progress is only required in a non-bare clone context --- Modules/Remotes/CloneRepositoryDlg.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/Remotes/CloneRepositoryDlg.cpp b/Modules/Remotes/CloneRepositoryDlg.cpp index 253b2e1c..db8f5ca5 100644 --- a/Modules/Remotes/CloneRepositoryDlg.cpp +++ b/Modules/Remotes/CloneRepositoryDlg.cpp @@ -174,6 +174,8 @@ void CloneDlg::accept() if (!clone->bare()) { steps << ProgressDlg::StepInfo{ QStringLiteral("checkout"), tr("Checkout the worktree.") }; + connect( clone, &Git::CloneOperation::checkoutProgress, + this, &CloneDlg::onCheckoutProgress ); } mProgress->addActivity(tr("Clone %1 to %2") @@ -183,8 +185,6 @@ void CloneDlg::accept() this, &CloneDlg::rootCloneFinished ); connect( clone, &Git::CloneOperation::transportProgress, this, &CloneDlg::onTransportProgress ); - connect( clone, &Git::CloneOperation::checkoutProgress, - this, &CloneDlg::onCheckoutProgress ); clone->execute(); } From 6bf58e3817435d099941a9b66345d9683fffc773 Mon Sep 17 00:00:00 2001 From: Nils Fenner Date: Sun, 10 May 2015 13:28:33 +0200 Subject: [PATCH 41/41] CloneDlg: corrected description of "index" step --- Modules/Remotes/CloneRepositoryDlg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Remotes/CloneRepositoryDlg.cpp b/Modules/Remotes/CloneRepositoryDlg.cpp index db8f5ca5..7ee7ba4c 100644 --- a/Modules/Remotes/CloneRepositoryDlg.cpp +++ b/Modules/Remotes/CloneRepositoryDlg.cpp @@ -169,7 +169,7 @@ void CloneDlg::accept() ProgressDlg::StepInfo::List steps; steps << ProgressDlg::StepInfo{ QStringLiteral("transfer"), tr("Download Git objects.") } - << ProgressDlg::StepInfo{ QStringLiteral("index"), tr("Add objects to Git index.") }; + << ProgressDlg::StepInfo{ QStringLiteral("index"), tr("Indexing Git objects.") }; if (!clone->bare()) { steps << ProgressDlg::StepInfo{ QStringLiteral("checkout"),