[Pkg-running-devel] [openambit] 11/131: Improved syncronization feedback a bit
Christian Perrier
bubulle at moszumanska.debian.org
Thu Jul 17 20:19:06 UTC 2014
This is an automated email from the git hooks/post-receive script.
bubulle pushed a commit to branch master
in repository openambit.
commit 144f9a000d00c8a44b6b0beaf4f5f7bdb59066f1
Author: Emil Ljungdahl <emil at kratern.se>
Date: Thu Dec 12 21:42:02 2013 +0100
Improved syncronization feedback a bit
---
src/openambit/devicemanager.cpp | 7 ++--
src/openambit/devicemanager.h | 1 -
src/openambit/mainwindow.cpp | 76 +++++++++++++++++++++++++++++++++++++++++
src/openambit/mainwindow.h | 28 +++++++++++++++
src/openambit/mainwindow.ui | 3 ++
5 files changed, 112 insertions(+), 3 deletions(-)
diff --git a/src/openambit/devicemanager.cpp b/src/openambit/devicemanager.cpp
index b670d33..60c8e73 100644
--- a/src/openambit/devicemanager.cpp
+++ b/src/openambit/devicemanager.cpp
@@ -62,17 +62,20 @@ void DeviceManager::detect()
void DeviceManager::startSync(bool readAllLogs = false)
{
int res = -1;
+
mutex.lock();
if (this->deviceObject != NULL) {
+ emit this->syncProgressInform(QString(tr("Reading personal settings")), true, 0);
res = libambit_personal_settings_get(this->deviceObject, ¤tPersonalSettings);
if (res != -1) {
+ emit this->syncProgressInform(QString(tr("Reading log files")), true, 0);
res = libambit_log_read(this->deviceObject, readAllLogs ? NULL : &log_skip_cb, &log_push_cb, &log_progress_cb, this);
}
}
mutex.unlock();
- emit syncFinished(res == 0);
+ emit syncFinished(res >= 0);
if (res == -1) {
// Failed to read! We better try another detect
@@ -126,5 +129,5 @@ void DeviceManager::log_push_cb(void *ref, ambit_log_entry_t *log_entry)
void DeviceManager::log_progress_cb(void *ref, uint16_t log_count, uint16_t log_current, uint8_t progress_percent)
{
DeviceManager *manager = static_cast<DeviceManager*> (ref);
- emit manager->syncProgressInform(QString("Downloading message %1 of %2").arg(log_current).arg(log_count), false, progress_percent);
+ emit manager->syncProgressInform(QString(tr("Downloading message %1 of %2")).arg(log_current).arg(log_count), false, progress_percent);
}
diff --git a/src/openambit/devicemanager.h b/src/openambit/devicemanager.h
index 5af7e77..aa7e1f6 100644
--- a/src/openambit/devicemanager.h
+++ b/src/openambit/devicemanager.h
@@ -66,7 +66,6 @@ private:
MovesCount movesCount;
Settings settings;
LogStore logStore;
-
};
#endif // DEVICEMANAGER_H
diff --git a/src/openambit/mainwindow.cpp b/src/openambit/mainwindow.cpp
index a56545f..138b28b 100644
--- a/src/openambit/mainwindow.cpp
+++ b/src/openambit/mainwindow.cpp
@@ -81,6 +81,12 @@ void MainWindow::showSettings()
void MainWindow::syncNowClicked()
{
ui->buttonSyncNow->setEnabled(false);
+ currentLogMessageRow = NULL;
+ QLayoutItem *tmpItem;
+ while ((tmpItem = ui->verticalLayoutLogMessages->takeAt(0)) != NULL) {
+ delete tmpItem->widget();
+ delete tmpItem;
+ }
ui->syncProgressBar->setHidden(false);
ui->syncProgressBar->setValue(0);
emit MainWindow::syncNow(false);
@@ -126,12 +132,43 @@ void MainWindow::deviceCharge(quint8 percent)
void MainWindow::syncFinished(bool success)
{
+ if (currentLogMessageRow != NULL) {
+ currentLogMessageRow->setStatus(LogMessageRow::StatusSuccess);
+ }
+ if (success) {
+ currentLogMessageRow = new LogMessageRow(this);
+ currentLogMessageRow->setMessage(tr("Syncronization complete"));
+ currentLogMessageRow->setStatus(LogMessageRow::StatusSuccess);
+ ui->verticalLayoutLogMessages->addLayout(currentLogMessageRow);
+ }
+ else {
+ currentLogMessageRow = new LogMessageRow(this);
+ currentLogMessageRow->setMessage(tr("Syncronization failed"));
+ currentLogMessageRow->setStatus(LogMessageRow::StatusFailed);
+ ui->verticalLayoutLogMessages->addLayout(currentLogMessageRow);
+ }
ui->buttonSyncNow->setEnabled(true);
ui->syncProgressBar->setHidden(true);
+
+ updateLogList();
}
void MainWindow::syncProgressInform(QString message, bool newRow, quint8 percentDone)
{
+ if (newRow) {
+ if (currentLogMessageRow != NULL) {
+ currentLogMessageRow->setStatus(LogMessageRow::StatusSuccess);
+ }
+ currentLogMessageRow = new LogMessageRow(this);
+ currentLogMessageRow->setMessage(message);
+ currentLogMessageRow->setStatus(LogMessageRow::StatusRunning);
+ ui->verticalLayoutLogMessages->addLayout(currentLogMessageRow);
+ }
+ else {
+ if (currentLogMessageRow != NULL) {
+ currentLogMessageRow->setMessage(message);
+ }
+ }
ui->syncProgressBar->setValue(percentDone);
}
@@ -179,3 +216,42 @@ void MainWindow::updateLogList()
ui->logsList->addItem(item);
}
}
+
+MainWindow::LogMessageRow::LogMessageRow(QWidget *parent) :
+ QHBoxLayout(parent)
+{
+ iconLabel = new QLabel(parent);
+ iconLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ textLabel = new QLabel(parent);
+ this->addWidget(iconLabel);
+ this->addWidget(textLabel);
+}
+
+MainWindow::LogMessageRow::~LogMessageRow()
+{
+ this->removeWidget(iconLabel);
+ this->removeWidget(textLabel);
+ delete iconLabel;
+ delete textLabel;
+}
+
+void MainWindow::LogMessageRow::setMessage(QString message)
+{
+ textLabel->setText(message);
+}
+
+void MainWindow::LogMessageRow::setStatus(Status status)
+{
+ QIcon icon;
+
+ if (status == StatusRunning) {
+ icon = QIcon::fromTheme("task-ongoing");
+ }
+ else if (status == StatusSuccess) {
+ icon = QIcon::fromTheme("task-complete");
+ }
+ else if (status == StatusFailed) {
+ icon = QIcon::fromTheme("task-reject");
+ }
+ iconLabel->setPixmap(icon.pixmap(8,8));
+}
diff --git a/src/openambit/mainwindow.h b/src/openambit/mainwindow.h
index 7a7ec93..f4632bd 100644
--- a/src/openambit/mainwindow.h
+++ b/src/openambit/mainwindow.h
@@ -26,6 +26,9 @@
#include "settingsdialog.h"
#include <QMainWindow>
#include <QThread>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QLabel>
namespace Ui {
class MainWindow;
@@ -59,12 +62,37 @@ private slots:
void updateLogList();
private:
+ void addLogMessageRow(QString message);
+ void updateLogMessageRow(QString message);
+ void finalizeLogMessageRow();
+
Ui::MainWindow *ui;
SettingsDialog *settingsDialog;
DeviceManager *deviceManager;
LogStore logStore;
MovesCount movesCount;
QThread deviceWorkerThread;
+
+ class LogMessageRow : public QHBoxLayout
+ {
+ public:
+ enum Status {
+ StatusRunning,
+ StatusSuccess,
+ StatusFailed
+ };
+ explicit LogMessageRow(QWidget *parent);
+ ~LogMessageRow();
+
+ void setMessage(QString message);
+ void setStatus(Status status);
+
+ private:
+ QLabel *iconLabel;
+ QLabel *textLabel;
+ };
+
+ LogMessageRow *currentLogMessageRow = NULL;
};
#endif // MAINWINDOW_H
diff --git a/src/openambit/mainwindow.ui b/src/openambit/mainwindow.ui
index c1b6e10..1936aec 100644
--- a/src/openambit/mainwindow.ui
+++ b/src/openambit/mainwindow.ui
@@ -199,6 +199,9 @@
</widget>
</item>
<item>
+ <layout class="QVBoxLayout" name="verticalLayoutLogMessages"/>
+ </item>
+ <item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-running/openambit.git
More information about the Pkg-running-devel
mailing list