Add spinner while opening or saving cloud storage

Right now this is quite ugly. And at least in my VM the transparency
doesn't seem to work correctly. But at least we now have some visual
indication that we are doing something while opening or saving cloud
storage.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-08-25 12:49:48 -07:00
parent 6721698fcd
commit 0db80103ca
2 changed files with 34 additions and 2 deletions

View file

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

View file

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