Fixed background transparency bug.
authorJari Jarvi <t7jaja00@students.oamk.fi>
Fri, 28 May 2010 10:32:40 +0000 (13:32 +0300)
committerJari Jarvi <t7jaja00@students.oamk.fi>
Fri, 28 May 2010 10:32:40 +0000 (13:32 +0300)
src/mainwidget.cpp
src/mainwidget.h

index 69cdad2..2ccfae3 100644 (file)
@@ -13,7 +13,7 @@ MainWidget::MainWidget (QWidget *parent)
 {
     layout = new QGridLayout(this);
 
-    QSettings settings(this);
+    settings = new QSettings(this);
 
     char iconNames[][128] = {
         "/usr/share/icons/hicolor/48x48/hildon/statusarea_volumelevel4.png",
@@ -24,16 +24,13 @@ MainWidget::MainWidget (QWidget *parent)
         "/usr/share/icons/hicolor/48x48/hildon/statusarea_volume_mute.png"
     };
 
-    int bgAlpha = settings.value("bgAlpha", "192").toInt();
-
     for (int i = 0; i < BUTTON_COUNT; ++i)
     {
         QToolButton *button = new QToolButton(this);
         button->setIcon(QIcon(QString(
-            settings.value(QString("buttonIcon") + QString::number(i),
+            settings->value(QString("buttonIcon") + QString::number(i),
                 iconNames[i]).toString()))); 
         buttons[i] = button;
-        button->setPalette(QPalette(QColor(0, 0, 0, bgAlpha)));
         layout->addWidget(button, i%2, i/2);
     }
 
@@ -48,21 +45,30 @@ MainWidget::MainWidget (QWidget *parent)
     layout->setContentsMargins(0, 0, 0, 0);
     this->setLayout(layout);
     this->setAttribute(Qt::WA_TranslucentBackground);
+    this->setAttribute(Qt::WA_OpaquePaintEvent);
+}
+
+MainWidget::~MainWidget()
+{
+    delete settings;
 }
 
- void MainWidget::paintEvent(QPaintEvent*)
- {
-     QPainter p(this);
-     p.setBrush(QColor(0, 0, 0, 128));
-     p.setPen(Qt::NoPen);
-     p.drawRect(rect());
-     p.end();
- }
+void MainWidget::paintEvent(QPaintEvent*)
+{
+    int bgAlpha = settings->value("bgAlpha", "192").toInt();
+    QPainter p(this);
+    p.setBrush(QColor(0, 0, 0, bgAlpha));
+    p.setPen(Qt::NoPen);
+    p.drawRect(rect());
+    p.end();
+}
  
 void MainWidget::showSettingsDialog()
 {
     SettingsDlg dlg(this);
     dlg.exec();
+    update(); // Repaint required if bgAlpha value was changed
 }
 
 
+
index 404bef7..cfc0132 100644 (file)
@@ -7,12 +7,14 @@
 
 class QGridLayout;
 class QToolButton;
+class QSettings;
 
 class MainWidget : public QWidget
 {
     Q_OBJECT
 public:
     MainWidget (QWidget *parent = NULL);
+    ~MainWidget();
 
 public slots:
     void showSettingsDialog();
@@ -25,6 +27,7 @@ private:
     QGridLayout *layout;
     QToolButton *buttons[BUTTON_COUNT];
     IrCtrl irCtrl;
+    QSettings *settings;
 };
 
 #endif