More implementation
[irwi] / src / mainwidget.cpp
1 #include "mainwidget.h"
2 #include "settingsdlg.h"
3
4 #include <QInputDialog>
5 #include <QPainter>
6 #include <QGridLayout>
7 #include <QToolButton>
8 #include <QSettings>
9
10 MainWidget::MainWidget (QWidget *parent)
11     : QWidget(parent)
12 {
13     layout = new QGridLayout(this);
14
15     settings = new QSettings(this);
16
17     char iconNames[][128] = {
18         "/usr/share/icons/hicolor/48x48/hildon/statusarea_volumelevel4.png",
19         "/usr/share/icons/hicolor/48x48/hildon/statusarea_volumelevel1.png",
20         "/usr/share/icons/hicolor/48x48/hildon/rss_reader_move_up.png",
21         "/usr/share/icons/hicolor/48x48/hildon/rss_reader_move_down.png",
22         "/usr/share/icons/hicolor/48x48/hildon/location_applet_on.png",
23         "/usr/share/icons/hicolor/48x48/hildon/statusarea_volume_mute.png"
24     };
25
26     for (int i = 0; i < BUTTON_COUNT; ++i)
27     {
28         QToolButton *button = new QToolButton(this);
29         button->setIcon(QIcon(QString(
30             settings->value(QString("buttonIcon") + QString::number(i),
31                 iconNames[i]).toString()))); 
32         buttons[i] = button;
33         button->setSizePolicy(QSizePolicy::MinimumExpanding,
34                 QSizePolicy::MinimumExpanding);
35         layout->addWidget(button, i%2, i/2);
36     }
37
38     this->setContentsMargins(0, 0, 0, 0);
39     layout->setContentsMargins(0, 0, 0, 0);
40     this->setLayout(layout);
41     this->setAttribute(Qt::WA_TranslucentBackground);
42     this->setAttribute(Qt::WA_OpaquePaintEvent);
43     resize();
44
45     showSettingsDialog();
46 }
47
48 MainWidget::~MainWidget()
49 {
50     delete settings;
51 }
52
53 void MainWidget::paintEvent(QPaintEvent*)
54 {
55     int bgAlpha = settings->value("bgAlpha", "192").toInt();
56     QPainter p(this);
57     p.fillRect(rect(), QColor(0, 0, 0, bgAlpha));
58     p.end();
59 }
60  
61 void MainWidget::showSettingsDialog()
62 {
63     SettingsDlg dlg(this);
64     dlg.exec();
65     update(); // Repaint required if bgAlpha value was changed
66     resize();
67 }
68
69 void MainWidget::resize()
70 {
71     int w = settings->value("width", "250").toInt();
72     int h = settings->value("height", "148").toInt();
73     if (w < 1)
74         w = 250;
75     if (h < 1)
76         h = 148;
77     QWidget::resize(w, h);
78 }
79
80