summaryrefslogtreecommitdiff
path: root/client-qt
diff options
context:
space:
mode:
Diffstat (limited to 'client-qt')
-rw-r--r--client-qt/udm-client-qt/downloads_model.cpp47
-rw-r--r--client-qt/udm-client-qt/downloads_model.h11
-rw-r--r--client-qt/udm-client-qt/udm_main.cpp9
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;