110 lines
2.9 KiB
C++
110 lines
2.9 KiB
C++
#include "optionpage.h"
|
|
|
|
#include <QLabel>
|
|
#include <QCheckBox>
|
|
#include <QRadioButton>
|
|
#include <QPushButton>
|
|
#include <QGroupBox>
|
|
|
|
namespace Dialogs {
|
|
|
|
/*!
|
|
* \class Dialogs::OptionPage
|
|
* \brief The OptionPage class is the base class for SettingsDialog pages.
|
|
*
|
|
* The specified \a parentWindow might be used by some implementations as parent when showing dialogs.
|
|
*/
|
|
|
|
/*!
|
|
* \brief Constructs a option page.
|
|
*/
|
|
OptionPage::OptionPage(QWidget *parentWindow) :
|
|
m_parentWindow(parentWindow),
|
|
m_shown(false),
|
|
m_keywordsInitialized(false)
|
|
{}
|
|
|
|
/*!
|
|
* \brief Destroys the option page.
|
|
*/
|
|
OptionPage::~OptionPage()
|
|
{}
|
|
|
|
/*!
|
|
* \brief Returns the widget for the option page.
|
|
*
|
|
* If the widget has not been constructed yet, a new widget will be
|
|
* constructed using the OptionPage::setupWidget() method and the
|
|
* current configuration is applied.
|
|
*
|
|
* The option page keeps ownership over the returned widget.
|
|
*/
|
|
QWidget *OptionPage::widget()
|
|
{
|
|
if(!m_widget) {
|
|
m_widget.reset(setupWidget()); // ensure widget has been created
|
|
}
|
|
if(!m_shown) {
|
|
m_shown = true;
|
|
reset(); // show current configuration if not shown yet
|
|
}
|
|
return m_widget.get();
|
|
}
|
|
|
|
/*!
|
|
* \brief Returns whether the pages matches the specified
|
|
* \a searchKeyWord.
|
|
*/
|
|
bool OptionPage::matches(const QString &searchKeyWord)
|
|
{
|
|
if(searchKeyWord.isEmpty()) {
|
|
return true;
|
|
}
|
|
if(displayName().contains(searchKeyWord, Qt::CaseInsensitive)) {
|
|
return true;
|
|
}
|
|
if(!m_keywordsInitialized) {
|
|
if(!m_widget) {
|
|
m_widget.reset(setupWidget()); // ensure widget has been created
|
|
}
|
|
// find common subwidgets
|
|
foreach (const QLabel *label, m_widget->findChildren<QLabel *>())
|
|
m_keywords << label->text();
|
|
foreach (const QCheckBox *checkbox, m_widget->findChildren<QCheckBox *>())
|
|
m_keywords << checkbox->text();
|
|
foreach (const QRadioButton *checkbox, m_widget->findChildren<QRadioButton *>())
|
|
m_keywords << checkbox->text();
|
|
foreach (const QPushButton *pushButton, m_widget->findChildren<QPushButton *>())
|
|
m_keywords << pushButton->text();
|
|
foreach (const QGroupBox *groupBox, m_widget->findChildren<QGroupBox *>())
|
|
m_keywords << groupBox->title();
|
|
m_keywordsInitialized = true;
|
|
}
|
|
foreach (const QString &keyword, m_keywords)
|
|
if (keyword.contains(searchKeyWord, Qt::CaseInsensitive))
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
/*!
|
|
* \fn OptionPage::displayName()
|
|
* \brief Returns the display name of the page.
|
|
*/
|
|
|
|
/*!
|
|
* \fn OptionPage::apply()
|
|
* \brief Applies altered settings.
|
|
*/
|
|
|
|
/*!
|
|
* \fn OptionPage::reset()
|
|
* \brief Discards altered settings and resets relevant widgets.
|
|
*/
|
|
|
|
/*!
|
|
* \fn OptionPage::setupWidget()
|
|
* \brief Creates the widget for the page. Called in the first invocation of widget().
|
|
*/
|
|
|
|
}
|