From cea6076a8347e0b00f0fec63b104f7047529aeca Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 25 Oct 2014 03:56:58 +0200 Subject: [PATCH] Show a progress dialog on shutdown, when waiting for db jobs. This is actually a bit fake, because the event-loop is blocked, but better than silently blocking shutdown. --- src/tomahawk/TomahawkApp.cpp | 22 ++++++++++++++++++++++ src/tomahawk/TomahawkApp.h | 4 +++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/tomahawk/TomahawkApp.cpp b/src/tomahawk/TomahawkApp.cpp index 6b38d001e..2c663d6c8 100644 --- a/src/tomahawk/TomahawkApp.cpp +++ b/src/tomahawk/TomahawkApp.cpp @@ -101,6 +101,7 @@ #include #include #include +#include #include #include #include @@ -471,6 +472,8 @@ TomahawkApp::initDatabase() m_database = QPointer( new Tomahawk::Database( dbpath, this ) ); // this also connects dbImpl schema update signals + connect( m_database.data(), SIGNAL( waitingForWorkers() ), SLOT( onShutdownDelayed() ) ); + Pipeline::instance()->databaseReady(); } @@ -595,6 +598,25 @@ TomahawkApp::initSIP() } +void +TomahawkApp::onShutdownDelayed() +{ + QProgressDialog* d = new QProgressDialog( tr( "Tomahawk is updating the database. Please wait, this may take a minute!" ), QString(), + 0, 0, 0, Qt::Tool + | Qt::WindowTitleHint + | Qt::CustomizeWindowHint ); + d->setModal( true ); + d->setAutoClose( false ); + d->setAutoReset( false ); + d->setWindowTitle( tr( "Tomahawk" ) ); + +#ifdef Q_OS_MAC + d->setAttribute( Qt::WA_MacAlwaysShowToolWindow ); +#endif + d->show(); +} + + void TomahawkApp::onInfoSystemReady() { diff --git a/src/tomahawk/TomahawkApp.h b/src/tomahawk/TomahawkApp.h index 98288cded..c161d07e5 100644 --- a/src/tomahawk/TomahawkApp.h +++ b/src/tomahawk/TomahawkApp.h @@ -102,13 +102,14 @@ public slots: void instanceStarted( KDSingleApplicationGuard::Instance ); private slots: - void playlistRemoved( const Tomahawk::playlist_ptr& playlist ); void initServent(); void initSIP(); void initHTTP(); void initFactoriesForAccountManager(); void initEnergyEventHandler(); + void onShutdownDelayed(); + void spotifyApiCheckFinished(); void onInfoSystemReady(); @@ -120,6 +121,7 @@ private slots: void updateSplashWidgetMessage( const QString& message ); void killSplashWidget(); + void playlistRemoved( const Tomahawk::playlist_ptr& playlist ); void ipDetectionFailed( QNetworkReply::NetworkError error, QString errorString ); private: