[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, &currentPersonalSettings);
 
         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