adsf
[irwi] / src / selectremotedlg.cpp
1 #include "selectremotedlg.h"
2
3 #include "remote.h"
4
5 #include <QHBoxLayout>
6 #include <QLabel>
7 #include <QString>
8 #include <QListWidget>
9 #include <QListWidgetItem>
10 #include <QSettings>
11 #include <QMap>
12 #include <QList>
13 #include <QMessageBox>
14 #include <QPushButton>
15
16 SelectRemoteDlg::SelectRemoteDlg(QWidget *parent)
17     : QDialog(parent)
18 {
19     this->setWindowTitle(tr("Select remote"));
20     this->setMinimumHeight(320);
21
22     layout = new QHBoxLayout(this);
23
24     alphabetList = new QListWidget(this);
25     alphabetList->setMaximumWidth(96);
26     layout->addWidget(alphabetList);
27     connect(alphabetList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
28                 this, SLOT(alphabetItemChanged(QListWidgetItem*, QListWidgetItem*)));
29     
30     mfgList = new QListWidget(this);
31     layout->addWidget(mfgList);
32     connect(mfgList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
33                 this, SLOT(mfgItemChanged(QListWidgetItem*, QListWidgetItem*)));
34
35     modelList = new QListWidget(this);
36     layout->addWidget(modelList);
37
38     downloadBtn = new QPushButton(tr("Download"), this);
39     layout->addWidget(downloadBtn);
40     connect(downloadBtn, SIGNAL(clicked()), 
41             this, SLOT(downloadRemote()));
42
43     this->setLayout(layout);
44     connect(&remoteDbMgr, SIGNAL(RemoteDBMgr::dbReady(RemoteDB*)),
45             this, SLOT(setDb(RemoteDB*)));
46     remoteDbMgr.getDbAsync();
47     setBusy(true);
48 }
49
50
51 SelectRemoteDlg::~SelectRemoteDlg()
52 {
53     delete layout;
54 }
55
56 SelectRemoteDlg::setDb(RemoteDB *db)
57 {
58     remoteDb = db;
59     setBusy(false);
60 }
61
62 void SelectRemoteDlg::setBusy(bool busy)
63 {
64     setAttribute(Qt::WA_Maemo5ShowProgressIndicator, busy);
65     setEnabled(!busy);
66 }
67
68 void SelectRemoteDlg::alphabetItemChanged(QListWidgetItem *current,
69                                       QListWidgetItem * /*previous*/)
70 {
71     mfgList->clear();
72     modelList->clear();
73     if (current)
74     {
75         mfgList->addItems(remoteDb[current->text()].keys());
76     }
77 }
78
79 void SelectRemoteDlg::mfgItemChanged(QListWidgetItem *current,
80                                      QListWidgetItem * /*previous*/)
81 {
82     modelList->clear();
83     if (current)
84     {
85         QList <Remote> remotes =
86            remoteDb[alphabetList->currentItem()->text()][current->text()];
87         foreach(Remote remote, remotes) {
88             modelList.addItem(RemoteListWidgetItem(remote));
89         }
90     }
91 }
92
93 void SelectRemoteDlg::downloadRemote()
94 {
95     RemoteListWidgetItem *currentModel = modelList->currentItem();
96     if (currentModel)
97     {
98         currentModel->remote().saveFile();
99     }
100 }
101