From 52249707de038363a57bdb9bfed18d2da04e4aaf Mon Sep 17 00:00:00 2001 From: Torste Aikio Date: Thu, 8 Jul 2010 11:43:11 +0300 Subject: [PATCH] Thumbs up/down icons in selectremotedlg --- data/symbols/symbol_thumbs_down.svg | 81 +++++++++++++++++++++++++++++++++++ data/symbols/symbol_thumbs_up.svg | 81 +++++++++++++++++++++++++++++++++++ src/remotelistwidgetitem.cpp | 7 +++ src/remotetable.cpp | 68 +++++++++++++++++++++++++++++ src/remotetable.h | 31 ++++++++++++++ src/selectremotedlg.cpp | 18 ++++---- src/selectremotedlg.h | 3 +- src/src.pro | 9 +++- 8 files changed, 287 insertions(+), 11 deletions(-) create mode 100644 data/symbols/symbol_thumbs_down.svg create mode 100644 data/symbols/symbol_thumbs_up.svg create mode 100644 src/remotetable.cpp create mode 100644 src/remotetable.h diff --git a/data/symbols/symbol_thumbs_down.svg b/data/symbols/symbol_thumbs_down.svg new file mode 100644 index 0000000..7c376dd --- /dev/null +++ b/data/symbols/symbol_thumbs_down.svg @@ -0,0 +1,81 @@ + + + +image/svg+xml + + + + + + + \ No newline at end of file diff --git a/data/symbols/symbol_thumbs_up.svg b/data/symbols/symbol_thumbs_up.svg new file mode 100644 index 0000000..e87c263 --- /dev/null +++ b/data/symbols/symbol_thumbs_up.svg @@ -0,0 +1,81 @@ + + + +image/svg+xml + + + + + + + \ No newline at end of file diff --git a/src/remotelistwidgetitem.cpp b/src/remotelistwidgetitem.cpp index 26bac27..0479728 100644 --- a/src/remotelistwidgetitem.cpp +++ b/src/remotelistwidgetitem.cpp @@ -1,4 +1,7 @@ #include +#include +#include + #include "remotelistwidgetitem.h" RemoteListWidgetItem::RemoteListWidgetItem(Remote *remote, QListWidget *parent) @@ -12,9 +15,13 @@ QVariant RemoteListWidgetItem::data(int role) const { QString str = m_remote->name() + " (" + QString::number(m_remote->rating()) + ")"; + QPixmap pix = QPixmap(48,48); + pix.fill(Qt::red); switch (role) { case Qt::DisplayRole: return QVariant(str); + case Qt::DecorationRole: + return QVariant(pix); default: return QVariant(); } diff --git a/src/remotetable.cpp b/src/remotetable.cpp new file mode 100644 index 0000000..b27301e --- /dev/null +++ b/src/remotetable.cpp @@ -0,0 +1,68 @@ +#include +#include +#include +#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); +} +*/ diff --git a/src/remotetable.h b/src/remotetable.h new file mode 100644 index 0000000..e783cf7 --- /dev/null +++ b/src/remotetable.h @@ -0,0 +1,31 @@ +#ifndef _REMOTETABLE_H_ +#define _REMOTETABLE_H_ + +#include +#include +#include + +class QResizeEvent; +class Remote; + +class RemoteTable : public QTableWidget +{ +public: + RemoteTable(QWidget *parent = 0); + ~RemoteTable(); + + void addItem(Remote *remote); + void removeAllRows(); + Remote *selected(); + +protected: + //void resizeEvent(QResizeEvent *); + +private: + QMap remotes; + QString thumbsUp; + QString thumbsDown; +}; + +#endif // _REMOTETABLE_H_ + diff --git a/src/selectremotedlg.cpp b/src/selectremotedlg.cpp index 89a69f6..b6fefb2 100644 --- a/src/selectremotedlg.cpp +++ b/src/selectremotedlg.cpp @@ -3,6 +3,7 @@ #include "remote.h" #include "remotelistwidgetitem.h" #include "onlinepollerthread.h" +#include "remotetable.h" #include #include @@ -39,7 +40,7 @@ SelectRemoteDlg::SelectRemoteDlg(QWidget *parent) this, SLOT(mfgItemChanged(QListWidgetItem*, QListWidgetItem*))); - modelList = new QListWidget(this); + modelList = new RemoteTable(this); layout->addWidget(modelList); downloadBtn = new QPushButton(tr("Download"), this); @@ -78,7 +79,7 @@ void SelectRemoteDlg::alphabetItemChanged(QListWidgetItem *current, QListWidgetItem * /*previous*/) { mfgList->clear(); - modelList->clear(); + modelList->removeAllRows(); if (current) { mfgList->addItems((*remoteDB)[current->text()].keys()); @@ -88,29 +89,28 @@ void SelectRemoteDlg::alphabetItemChanged(QListWidgetItem *current, void SelectRemoteDlg::mfgItemChanged(QListWidgetItem *current, QListWidgetItem * /*previous*/) { - modelList->clear(); + modelList->removeAllRows(); if (current) { RemoteList remotes = (*remoteDB)[alphabetList->currentItem()->text()][current->text()]; foreach(Remote *remote, remotes) { - modelList->addItem(new RemoteListWidgetItem(remote)); + modelList->addItem(remote); } } } void SelectRemoteDlg::downloadRemote() { - RemoteListWidgetItem *currentModel = - static_cast(modelList->currentItem()); + Remote *currentModel = modelList->selected(); if (currentModel) { setBusy(); - connect(currentModel->remote(), SIGNAL(saveFinished()), + connect(currentModel, SIGNAL(saveFinished()), this, SLOT(close())); - currentModel->remote()->saveToFile(); + currentModel->saveToFile(); - emit remoteChanged(*(currentModel->remote())); + emit remoteChanged(*currentModel); } } diff --git a/src/selectremotedlg.h b/src/selectremotedlg.h index c4821f2..90170cd 100644 --- a/src/selectremotedlg.h +++ b/src/selectremotedlg.h @@ -11,6 +11,7 @@ class QHBoxLayout; class QListWidget; class QListWidgetItem; +class RemoteTable; class QSettings; class QNetworkAccessManager; class QNetworkReply; @@ -52,7 +53,7 @@ private: QHBoxLayout *layout; QListWidget *alphabetList; QListWidget *mfgList; - QListWidget *modelList; + RemoteTable *modelList; QPushButton *downloadBtn; RemoteDB *remoteDB; OnlinePollerThread *onlinePollerThread; diff --git a/src/src.pro b/src/src.pro index b0592ad..98d82c0 100644 --- a/src/src.pro +++ b/src/src.pro @@ -16,6 +16,7 @@ SOURCES += settingstable.cpp SOURCES += aboutdlg.cpp SOURCES += remotelistwidgetitem.cpp SOURCES += onlinepollerthread.cpp +SOURCES += remotetable.cpp HEADERS += rating.h HEADERS += settingsdlg.h @@ -29,6 +30,7 @@ HEADERS += settingstable.h HEADERS += aboutdlg.h HEADERS += remotelistwidgetitem.h HEADERS += onlinepollerthread.h +HEADERS += remotetable.h include(qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.pri) @@ -38,6 +40,7 @@ MOC_DIR = moc QT += network QT += xml QT += dbus +QT += svg CONFIG += mobility MOBILITY += bearer @@ -55,7 +58,7 @@ DEFINES += DATADIR=\\\"$$DATADIR\\\" PKGDATADIR=\\\"$$PKGDATADIR\\\" #MAKE INSTALL -INSTALLS += target desktop iconxpm icon26 icon48 icon64 +INSTALLS += target desktop iconxpm icon26 icon48 icon64 symbols target.path = $$PREFIX/lib/hildon-desktop @@ -73,5 +76,9 @@ INSTALLS += target desktop iconxpm icon26 icon48 icon64 icon64.path = $$DATADIR/icons/hicolor/64x64/apps icon64.files += ../data/64x64/$${TARGET}.png + + symbols.path = $$DATADIR/irwi/symbols + symbols.files += ../data/symbols/symbol_thumbs_up.svg + symbols.files += ../data/symbols/symbol_thumbs_down.svg } -- 1.7.9.5