New architecture
[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 }
45
46
47 SelectRemoteDlg::~SelectRemoteDlg()
48 {
49     delete layout;
50 }
51
52 void SelectRemoteDlg::setBusy(bool busy)
53 {
54     setAttribute(Qt::WA_Maemo5ShowProgressIndicator, busy);
55     setEnabled(!busy);
56 }
57
58 void SelectRemoteDlg::alphabetItemChanged(QListWidgetItem *current,
59                                       QListWidgetItem * /*previous*/)
60 {
61     mfgList->clear();
62     modelList->clear();
63     if (current)
64     {
65         mfgList->addItems(remoteDb[current->text()].keys());
66     }
67 }
68
69 void SelectRemoteDlg::mfgItemChanged(QListWidgetItem *current,
70                                      QListWidgetItem * /*previous*/)
71 {
72     modelList->clear();
73     if (current)
74     {
75         QList <Remote> remotes =
76            remoteDb[alphabetList->currentItem()->text()][current->text()];
77         foreach(Remote remote, remotes) {
78             modelList.addItem(RemoteListWidgetItem(remote));
79         }
80     }
81 }
82
83 void SelectRemoteDlg::downloadRemote()
84 {
85     RemoteListWidgetItem *currentModel = modelList->currentItem();
86     if (currentModel)
87     {
88         currentModel->remote().saveFile();
89     }
90 }
91