Merge branch 'master' of ssh://mercury/var/git/irwi
[irwi] / src / remotetable.cpp
diff --git a/src/remotetable.cpp b/src/remotetable.cpp
new file mode 100644 (file)
index 0000000..b27301e
--- /dev/null
@@ -0,0 +1,68 @@
+#include <QResizeEvent>
+#include <QHeaderView>
+#include <QSvgWidget>
+#include "remotetable.h"
+#include "remote.h"
+
+RemoteTable::RemoteTable(QWidget *parent)
+      // Always two columns: Remote name and rating.
+    : QTableWidget(0, 2, parent),
+    thumbsUp("/usr/share/irwi/symbols/symbol_thumbs_up.svg"),
+    thumbsDown("/usr/share/irwi/symbols/symbol_thumbs_down.svg")
+{
+    verticalHeader()->setVisible(false);
+    horizontalHeader()->setVisible(false);
+    
+    setSelectionMode(QAbstractItemView::SingleSelection);
+}
+
+RemoteTable::~RemoteTable()
+{
+}
+
+void RemoteTable::addItem(Remote *remote)
+{
+    if (remote == NULL) {
+        return;
+    }
+    int currentRow = rowCount(); 
+    remotes[currentRow] = remote;
+
+    QString key = remote->name();
+    QWidget *ratingWidget = NULL;
+    if (remote->rating() > 5) {
+        ratingWidget = new QSvgWidget(thumbsUp);
+    } else {
+        ratingWidget = new QSvgWidget(thumbsDown);
+    }
+    QTableWidgetItem *k = new QTableWidgetItem(key);
+    k->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
+    insertRow(currentRow);
+    setItem(currentRow, 0, k);
+    setCellWidget(currentRow, 1, ratingWidget);
+    verticalHeader()->resizeSection(currentRow, 60);
+}
+
+Remote *RemoteTable::selected()
+{
+    QModelIndexList selections = selectedIndexes();
+    if (selections.count() != 1) {
+        return NULL;
+    }
+
+    return remotes[selections[0].row()];
+}
+
+void RemoteTable::removeAllRows()
+{
+    clear();
+    setRowCount(0);
+    remotes.clear();
+}
+/*
+void RemoteTable::resizeEvent(QResizeEvent *e)
+{
+    setColumnWidth(0, (2 * e->size().width() / 3) - 10);
+    setColumnWidth(1, (e->size().width() / 3) - 10);
+}
+*/