diff options
Diffstat (limited to 'client-qt')
-rw-r--r-- | client-qt/udm-client-qt/downloads_model.cpp | 47 | ||||
-rw-r--r-- | client-qt/udm-client-qt/downloads_model.h | 11 | ||||
-rw-r--r-- | client-qt/udm-client-qt/udm_main.cpp | 9 |
3 files changed, 58 insertions, 9 deletions
diff --git a/client-qt/udm-client-qt/downloads_model.cpp b/client-qt/udm-client-qt/downloads_model.cpp index 1883a6c..f5d8817 100644 --- a/client-qt/udm-client-qt/downloads_model.cpp +++ b/client-qt/udm-client-qt/downloads_model.cpp @@ -57,15 +57,36 @@ QVariant downloads_model::data(const QModelIndex &index, int role) const break; // case 3: - return (qint64)((double)downloads[index.row()].downloaded() / (double)downloads[index.row()].size()) * 100.0; + if(downloads[index.row()].size()) + return (qint64)((double)downloads[index.row()].downloaded() / (double)downloads[index.row()].size()) * 100.0; + else + return QVariant(); break; - case 4: + case 4: //TODO: + { + switch(downloads[index.row()].state()) + { + case 0: + return tr("Stopped"); + break; + case 1: + return tr("Stopped"); + break; + //TODO: handle module defined states + default: + return QVariant(); + break; + } + return QVariant(); + } + break; + case 5: return downloads[index.row()].module_name().c_str(); break; - case 5: //TODO: + case 6: //TODO: return QVariant(); break; - case 6: //TODO: + case 7: //TODO: return QVariant(); break; @@ -99,12 +120,15 @@ QVariant downloads_model::headerData(int section, Qt::Orientation orientation, i return QString(tr("Progress")); break; case 4: - return QString(tr("Module name")); + return QString(tr("State")); break; case 5: - return QString(tr("Down Speed")); + return QString(tr("Module name")); break; case 6: + return QString(tr("Down Speed")); + break; + case 7: return QString(tr("ETA")); break; } @@ -134,9 +158,18 @@ bool downloads_model::removeRows(int position, int rows, const QModelIndex &/*in return true; } +QModelIndex downloads_model::index ( int row, int column, const QModelIndex & /*parent */) const +{ + return createIndex(row, column); +} +QModelIndex downloads_model::parent ( const QModelIndex & /*index*/) const +{ + return QModelIndex(); +} + void downloads_model::refresh() { - QModelIndex topLeft = createIndex(0,0), bottomRight = createIndex(downloads.size()-1, 5); + QModelIndex topLeft = createIndex(0,0), bottomRight = createIndex(downloads.size() - 1, 6); emit dataChanged(topLeft, bottomRight); } diff --git a/client-qt/udm-client-qt/downloads_model.h b/client-qt/udm-client-qt/downloads_model.h index 08172d5..519d8ba 100644 --- a/client-qt/udm-client-qt/downloads_model.h +++ b/client-qt/udm-client-qt/downloads_model.h @@ -31,12 +31,21 @@ class downloads_model : public QAbstractTableModel Q_OBJECT public: downloads_model(std::vector<download> &downloads, QObject *parent = 0); + int rowCount(const QModelIndex &parent = QModelIndex()) const; + int columnCount ( const QModelIndex & parent = QModelIndex() ) const; + QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; - int columnCount ( const QModelIndex & parent = QModelIndex() ) const; + + QModelIndex index ( int row, int column, const QModelIndex & parent = QModelIndex() ) const; + QModelIndex parent ( const QModelIndex & index ) const; + + bool insertRows(int position, int rows, const QModelIndex &index = QModelIndex()); bool removeRows(int position, int rows, const QModelIndex &index = QModelIndex()); + + void sort ( int column, Qt::SortOrder order = Qt::AscendingOrder ); diff --git a/client-qt/udm-client-qt/udm_main.cpp b/client-qt/udm-client-qt/udm_main.cpp index ee58834..b822163 100644 --- a/client-qt/udm-client-qt/udm_main.cpp +++ b/client-qt/udm-client-qt/udm_main.cpp @@ -220,9 +220,14 @@ void udm_main::server_message_received(server_msg msg) break; case SERVER_MSG_TYPE::SERVER_DOWNLOADS_LIST_REPLY: { - downloads.clear(); //TODO: something better + if(!downloads.empty()) + { + mdl_downloads->removeRows(0, downloads.size()); + downloads.clear(); //TODO: something better + } for(auto i : msg.downloads()) downloads.push_back(i.download()); + mdl_downloads->insertRows(0, downloads.size()); mdl_downloads->refresh(); } break; @@ -233,6 +238,7 @@ void udm_main::server_message_received(server_msg msg) { if(i.id() == msg.download().download().id()) { + //TODO: merge download, not replace i = msg.download().download(); found = true; break; @@ -240,6 +246,7 @@ void udm_main::server_message_received(server_msg msg) } if(!found) downloads.push_back(msg.download().download()); + mdl_downloads->insertRows(downloads.size(), 1); mdl_downloads->refresh(); } break; |