Website updated.
[irwi] / src / remotetable.cpp
1 #include <QResizeEvent>
2 #include <QHeaderView>
3 #include <QPixmap>
4 #include <QLabel>
5 #include <QWidget>
6 #include <QSettings>
7
8 #include "remotetable.h"
9 #include "remote.h"
10
11 RemoteTable::RemoteTable(QWidget *parent)
12       // Always two columns: Remote name and rating.
13     : QTableWidget(0, 2, parent)
14 {
15     verticalHeader()->setVisible(false);
16     horizontalHeader()->setVisible(false);
17     
18     setSelectionMode(QAbstractItemView::SingleSelection);
19 }
20
21 RemoteTable::~RemoteTable()
22 {
23 }
24
25 QWidget *RemoteTable::selectRatingWidget(int rating)
26 {
27     QSettings settings;
28     QLabel *label = new QLabel;
29     QPixmap pix;
30     if (rating < -45) {
31         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "down_5_thumbs.png");
32     } else if (rating < -25) {
33         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "down_4_thumbs.png");
34     } else if (rating < -12) {
35         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "down_3_thumbs.png");
36     } else if (rating < -5) {
37         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "down_2_thumbs.png");
38     } else if (rating < 0) {
39         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "down_1_thumbs.png");
40     } else if (rating == 0) {
41         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "0_thumbs.png");
42     } else if (rating < 5) {
43         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "up_1_thumbs.png");
44     } else if (rating < 12) {
45         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "up_2_thumbs.png");
46     } else if (rating < 25) {
47         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "up_3_thumbs.png");
48     } else if (rating < 45) {
49         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "up_4_thumbs.png");
50     } else {
51         pix = QPixmap(settings.value("symbolPath", "/usr/share/irwi/symbols/").toString() + "up_5_thumbs.png");
52     }
53
54     label->setPixmap(pix);
55     return label;
56 }
57
58 void RemoteTable::addItem(Remote *remote)
59 {
60     if (remote == NULL) {
61         return;
62     }
63     int currentRow = rowCount(); 
64     remotes[currentRow] = remote;
65
66     QString key = remote->name();
67     QWidget *ratingWidget = selectRatingWidget(remote->rating());
68     QTableWidgetItem *k = new QTableWidgetItem(key);
69     k->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
70     insertRow(currentRow);
71     setItem(currentRow, 0, k);
72     setCellWidget(currentRow, 1, ratingWidget);
73     verticalHeader()->resizeSection(currentRow, 60);
74 }
75
76 Remote *RemoteTable::selected()
77 {
78     QModelIndexList selections = selectedIndexes();
79     if (selections.count() != 1) {
80         return NULL;
81     }
82
83     return remotes[selections[0].row()];
84 }
85
86 void RemoteTable::removeAllRows()
87 {
88     clear();
89     setRowCount(0);
90     remotes.clear();
91 }
92
93 void RemoteTable::resizeEvent(QResizeEvent *e)
94 {
95     setColumnWidth(0, e->size().width() - 148);
96     setColumnWidth(1, 128);
97 }