diff options
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/mainwindow.cpp | 31 | ||||
-rw-r--r-- | qt-ui/mainwindow.h | 5 |
2 files changed, 34 insertions, 2 deletions
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 4d416d2be..7593caf47 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -58,7 +58,8 @@ MainWindow::MainWindow() : QMainWindow(), actionPreviousDive(0), helpView(0), state(VIEWALL), - survey(0) + survey(0), + spinner(0) { Q_ASSERT_X(m_Instance == NULL, "MainWindow", "MainWindow recreated!"); m_Instance = this; @@ -374,6 +375,7 @@ void MainWindow::on_actionCloudstorageopen_triggered() int error; + startSpinner(); QByteArray fileNamePtr = QFile::encodeName(filename); error = parse_file(fileNamePtr.data()); if (!error) { @@ -382,6 +384,7 @@ void MainWindow::on_actionCloudstorageopen_triggered() } getNotificationWidget()->hideNotification(); process_dives(false, false); + stopSpinner(); refreshDisplay(); ui.actionAutoGroup->setChecked(autogroup); } @@ -397,10 +400,15 @@ void MainWindow::on_actionCloudstoragesave_triggered() if (information()->isEditing()) information()->acceptChanges(); + startSpinner(); + if (save_dives(filename.toUtf8().data())) { getNotificationWidget()->showNotification(get_error_string(), KMessageWidget::Error); return; } + + stopSpinner(); + getNotificationWidget()->showNotification(get_error_string(), KMessageWidget::Error); set_filename(filename.toUtf8().data(), true); setTitle(MWTF_FILENAME); @@ -1762,3 +1770,24 @@ void MainWindow::setApplicationState(const QByteArray& state) { } #undef SET_CURRENT_INDEX } + +void MainWindow::startSpinner() +{ + if (!spinner) { + spinner = new QtWaitingSpinner(Qt::WindowModal, this, true); + spinner->setRevolutionsPerSecond(1); + spinner->setColor(WHITE1); + spinner->setLineWidth(7); + spinner->setRoundness(40.0); + spinner->setMinimumTrailOpacity(0.25); + } + int shorterEdge = MIN(this->geometry().height(), this->geometry().width()); + spinner->setInnerRadius(shorterEdge / 12); + spinner->setLineLength(shorterEdge / 8); + spinner->start(); +} + +void MainWindow::stopSpinner() +{ + spinner->stop(); +} diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h index 226e9b6ee..759132146 100644 --- a/qt-ui/mainwindow.h +++ b/qt-ui/mainwindow.h @@ -15,6 +15,7 @@ #include "ui_mainwindow.h" #include "notificationwidget.h" #include "windowtitleupdate.h" +#include "qtwaitingspinner.h" struct DiveList; class QSortFilterProxyModel; @@ -189,7 +190,8 @@ slots: void planCreated(); void setEnabledToolbar(bool arg1); void setPlanNotes(); - + void startSpinner(); + void stopSpinner(); private: Ui::MainWindow ui; @@ -244,6 +246,7 @@ private: QHash<QByteArray, PropertiesForQuadrant> stateProperties; WindowTitleUpdate *wtu; + QtWaitingSpinner *spinner; }; #endif // MAINWINDOW_H |