[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdenetwork/kget
From: Javier Goday <jgoday () gmail ! com>
Date: 2008-07-22 18:08:46
Message-ID: 1216750126.014800.13515.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 836657 by jgoday:
Add a modelobserver and a transfergroupobserver to mainwindow to update the percent in the window title
BUG:164812
M +82 -0 mainwindow.cpp
M +42 -0 mainwindow.h
--- trunk/KDE/kdenetwork/kget/mainwindow.cpp #836656:836657
@@ -90,6 +90,9 @@
//Some of the widgets are initialized in slotDelayedInit()
QTimer::singleShot( 0, this, SLOT(slotDelayedInit()) );
+
+ // Update the title with the active transfers percent each 5 seconds
+// KGet::addObserver(new MainWindowModelObserver(this));
}
MainWindow::~MainWindow()
@@ -112,6 +115,25 @@
return QSize(720, 380);
}
+int MainWindow::transfersPercent()
+{
+ int percent = 0;
+ int activeTransfers = 0;
+ foreach (TransferHandler *handler, KGet::allTransfers()) {
+ if (handler->status() == Job::Running) {
+ activeTransfers ++;
+ percent += handler->percent();
+ }
+ }
+
+ if (activeTransfers > 0) {
+ return percent/activeTransfers;
+ }
+ else {
+ return 0;
+ }
+}
+
void MainWindow::setupActions()
{
QAction *newDownloadAction = actionCollection()->addAction("new_download");
@@ -388,6 +410,18 @@
KGet::addTransfer( KUrl( filename ) );
}
+
+void MainWindow::slotUpdateTitlePercent()
+{
+ int percent = transfersPercent();
+ if (percent > 0) {
+ setPlainCaption(QString("%1 %2\%").arg(i18n("KGet")).arg(percent));
+ }
+ else {
+ setPlainCaption(QString("%1").arg(i18n("KGet")));
+ }
+}
+
void MainWindow::slotQuit()
{
if (KGet::schedulerRunning()) {
@@ -868,4 +902,52 @@
return m_dbusModelObserver->transfersSpeed();
}
+MainWindowModelObserver::MainWindowModelObserver(MainWindow *window)
+ : QObject(window)
+{
+ m_window = window;
+ m_groupObserver = new MainWindowGroupObserver(window);
+}
+
+void MainWindowModelObserver::addedTransferGroupEvent(TransferGroupHandler *group)
+{
+ group->addObserver(m_groupObserver);
+}
+
+void MainWindowModelObserver::removedTransferGroupEvent(TransferGroupHandler *group)
+{
+ group->delObserver(m_groupObserver);
+}
+
+MainWindowGroupObserver::MainWindowGroupObserver(MainWindow *window)
+ : QObject(window)
+{
+ m_window = window;
+}
+
+void MainWindowGroupObserver::groupChangedEvent(TransferGroupHandler * group)
+{
+ TransferGroupHandler::ChangesFlags transferFlags = group->changesFlags(this);
+ if (transferFlags & TransferGroup::Gc_Percent) {
+ m_window->slotUpdateTitlePercent();
+ }
+}
+
+void MainWindowGroupObserver::addedTransferEvent(TransferHandler * transfer, TransferHandler * after)
+{
+ Q_UNUSED(transfer)
+ Q_UNUSED(after)
+}
+
+void MainWindowGroupObserver::removedTransferEvent(TransferHandler * transfer)
+{
+ Q_UNUSED(transfer)
+}
+
+void MainWindowGroupObserver::movedTransferEvent(TransferHandler * transfer, TransferHandler * after)
+{
+ Q_UNUSED(transfer)
+ Q_UNUSED(after)
+}
+
#include "mainwindow.moc"
--- trunk/KDE/kdenetwork/kget/mainwindow.h #836656:836657
@@ -53,6 +53,7 @@
public slots:
void slotQuit();
void slotImportUrl(const QString &url);
+ void slotUpdateTitlePercent();
protected:
// ignore/accept quit events
@@ -112,6 +113,11 @@
void slotShowListLinks();
private:
+ /**
+ * Returns the completed percents of all active transfers
+ */
+ int transfersPercent();
+
// one-time functions
void setupActions();
@@ -139,4 +145,40 @@
HttpServer *m_webinterface;
};
+/**
+* Used to update the mainwindow caption when the groups percents change
+*/
+class MainWindowGroupObserver : public QObject, public TransferGroupObserver
+{
+ public:
+ MainWindowGroupObserver(MainWindow *window);
+ virtual ~MainWindowGroupObserver() {}
+
+ virtual void groupChangedEvent(TransferGroupHandler * group);
+
+ virtual void addedTransferEvent(TransferHandler * transfer, TransferHandler * after);
+
+ virtual void removedTransferEvent(TransferHandler * transfer);
+
+ virtual void movedTransferEvent(TransferHandler * transfer, TransferHandler * after);
+
+ private:
+ MainWindow *m_window;
+};
+
+class MainWindowModelObserver : public QObject, public ModelObserver
+{
+ public:
+ MainWindowModelObserver(MainWindow *window);
+ virtual ~MainWindowModelObserver (){}
+
+ virtual void addedTransferGroupEvent(TransferGroupHandler * group);
+
+ virtual void removedTransferGroupEvent(TransferGroupHandler * group);
+
+ private:
+ MainWindow *m_window;
+ MainWindowGroupObserver *m_groupObserver;
+};
+
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic