Suppress compiler warnings about unused function parameters
[lxde/liblxqt.git] / configdialog / lxqtconfigdialog.cpp
index e6cdc10..947a578 100644 (file)
@@ -1,7 +1,7 @@
 /* BEGIN_COMMON_COPYRIGHT_HEADER
  * (c)LGPL2+
  *
- * LXDE-Qt - a lightweight, Qt based, desktop toolset
+ * LXQt - a lightweight, Qt based, desktop toolset
  * http://razor-qt.org
  *
  * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
 #include "lxqtconfigdialog.h"
 #include "ui_lxqtconfigdialog.h"
 
-#include <qtxdg/xdgicon.h>
-#include <QtGui/QPushButton>
+#include <XdgIcon>
+#include <QPushButton>
 
-using namespace LxQt;
+using namespace LXQt;
 
 ConfigDialog::ConfigDialog(const QString& title, Settings* settings, QWidget* parent) :
     QDialog(parent),
@@ -40,7 +40,13 @@ ConfigDialog::ConfigDialog(const QString& title, Settings* settings, QWidget* pa
     setWindowTitle(title);
     connect(ui->buttons, SIGNAL(clicked(QAbstractButton*)), SLOT(dialogButtonsAction(QAbstractButton*)));
     ui->moduleList->setVisible(false);
-    connect(Settings::globalSettings(), SIGNAL(settingsChanged()), this, SLOT(updateIcons()));
+    foreach(QPushButton* button, ui->buttons->findChildren<QPushButton*>())
+        button->setAutoDefault(false);
+}
+
+void ConfigDialog::setButtons(QDialogButtonBox::StandardButtons buttons)
+{
+    ui->buttons->setStandardButtons(buttons);
     foreach(QPushButton* button, ui->buttons->findChildren<QPushButton*>())
         button->setAutoDefault(false);
 }
@@ -52,6 +58,21 @@ void ConfigDialog::addPage(QWidget* page, const QString& name, const QString& ic
 
 void ConfigDialog::addPage(QWidget* page, const QString& name, const QStringList& iconNames)
 {
+    Q_ASSERT(page);
+    if (!page)
+    {
+        return;
+    }
+
+    /* We set the layout margin to 0. In the default configuration, one page
+     *  only, it aligns buttons with the page. In multi-page it saves a little
+     *  bit of space, without clutter.
+     */
+    if (page->layout())
+    {
+        page->layout()->setMargin(0);
+    }
+
     QStringList icons = QStringList(iconNames) << "application-x-executable";
     new QListWidgetItem(XdgIcon::fromTheme(icons), name, ui->moduleList);
     mIcons.append(icons);
@@ -60,8 +81,10 @@ void ConfigDialog::addPage(QWidget* page, const QString& name, const QStringList
     {
         ui->moduleList->setVisible(true);
         ui->moduleList->setCurrentRow(0);
-        mMaxSize = QSize(qMax(page->geometry().width() + ui->moduleList->geometry().width(), mMaxSize.width()),
-                         qMax(page->geometry().height() + ui->buttons->geometry().height(), mMaxSize.height()));
+        mMaxSize = QSize(qMax(page->geometry().width() + ui->moduleList->geometry().width(),
+                              mMaxSize.width()),
+                         qMax(page->geometry().height() + ui->buttons->geometry().height(),
+                              mMaxSize.height()));
     }
     else
     {
@@ -70,21 +93,40 @@ void ConfigDialog::addPage(QWidget* page, const QString& name, const QStringList
     resize(mMaxSize);
 }
 
+void ConfigDialog::showPage(QWidget* page)
+{
+    int index = ui->stackedWidget->indexOf(page);
+    if (index < 0)
+        return;
+
+    ui->stackedWidget->setCurrentIndex(index);
+    ui->moduleList->setCurrentRow(index);
+}
+
+bool ConfigDialog::event(QEvent * event)
+{
+    if (QEvent::ThemeChange == event->type())
+        updateIcons();
+    return QDialog::event(event);
+}
+
 void ConfigDialog::closeEvent(QCloseEvent* event)
 {
+    Q_UNUSED(event)
     emit save();
     mSettings->sync();
 }
 
 void ConfigDialog::dialogButtonsAction(QAbstractButton* button)
 {
-    QDialogButtonBox::ButtonRole role = ui->buttons->buttonRole(button);
-    if (role == QDialogButtonBox::ResetRole)
+    QDialogButtonBox::StandardButton standardButton = ui->buttons->standardButton(button);
+    emit clicked(standardButton);
+    if (standardButton == QDialogButtonBox::Reset)
     {
         mCache->loadToSettings();
         emit reset();
     }
-    else
+    else if(standardButton == QDialogButtonBox::Close)
     {
         close();
     }