1 #ifndef DIALOGS_OPTIONSPAGE_H 2 #define DIALOGS_OPTIONSPAGE_H 20 explicit OptionPage(QWidget *parentWindow =
nullptr);
23 QWidget *parentWindow()
const;
25 bool hasBeenShown()
const;
26 virtual bool apply() = 0;
27 virtual void reset() = 0;
28 bool matches(
const QString &searchKeyWord);
29 const QStringList &errors()
const;
32 virtual QWidget *setupWidget() = 0;
33 QStringList &errors();
36 std::unique_ptr<QWidget> m_widget;
37 QWidget *m_parentWindow;
39 bool m_keywordsInitialized;
40 QStringList m_keywords;
49 return m_parentWindow;
57 return m_widget !=
nullptr && m_shown;
86 template <
class UiClass>
97 QWidget *setupWidget();
101 std::unique_ptr<UiClass> m_ui;
107 template <
class UiClass>
115 template <
class UiClass>
122 template <
class UiClass>
125 QWidget *
widget =
new QWidget();
127 m_ui.reset(
new UiClass);
129 m_ui->setupUi(widget);
136 template <
class UiClass>
148 #define BEGIN_DECLARE_OPTION_PAGE(SomeClass) \ 149 typedef ::Dialogs::OptionPage SomeClass ## Base; \ 150 class QT_UTILITIES_EXPORT SomeClass : public ::Dialogs::OptionPage \ 153 explicit SomeClass(QWidget *parentWidget = nullptr); \ 163 #define BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(SomeClass) \ 167 typedef ::Dialogs::UiFileBasedOptionPage<Ui::SomeClass> SomeClass ## Base; \ 168 class QT_UTILITIES_EXPORT SomeClass : public ::Dialogs::UiFileBasedOptionPage<Ui::SomeClass> \ 180 #define BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE(SomeClass) \ 181 BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(SomeClass) \ 183 explicit SomeClass(QWidget *parentWidget = nullptr); \ 189 #define END_DECLARE_OPTION_PAGE \ 196 #define INSTANTIATE_UI_FILE_BASED_OPTION_PAGE(SomeClass) \ 197 namespace Dialogs { \ 198 template class UiFileBasedOptionPage<Ui::SomeClass>; \ 205 #define INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(SomeNamespace, SomeClass) \ 206 namespace Dialogs { \ 207 template class UiFileBasedOptionPage<::SomeNamespace::Ui::SomeClass>; \ 214 #define DECLARE_EXTERN_UI_FILE_BASED_OPTION_PAGE(SomeClass) \ 215 namespace Dialogs { \ 219 extern template class UiFileBasedOptionPage<Ui::SomeClass>; \ 226 #define DECLARE_EXTERN_UI_FILE_BASED_OPTION_PAGE_NS(SomeNamespace, SomeClass) \ 227 namespace SomeNamespace { \ 232 namespace Dialogs { \ 233 extern template class UiFileBasedOptionPage<::SomeNamespace::Ui::SomeClass>; \ 240 #define DECLARE_SETUP_WIDGETS \ 242 QWidget *setupWidget(); \ 249 #define DECLARE_UI_FILE_BASED_OPTION_PAGE(SomeClass) \ 250 BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE(SomeClass) \ 251 END_DECLARE_OPTION_PAGE 257 #define DECLARE_OPTION_PAGE(SomeClass) \ 258 BEGIN_DECLARE_OPTION_PAGE(SomeClass) \ 259 DECLARE_SETUP_WIDGETS \ 260 END_DECLARE_OPTION_PAGE 266 #define DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_SETUP(SomeClass) \ 267 BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE(SomeClass) \ 268 DECLARE_SETUP_WIDGETS \ 269 END_DECLARE_OPTION_PAGE 271 #endif // DIALOGS_OPTIONSPAGE_H QWidget * widget()
Returns the widget for the option page.
UiFileBasedOptionPage(QWidget *parentWindow=nullptr)
Constructs a new UI file based option page.
The OptionPage class is the base class for SettingsDialog pages.
The UiFileBasedOptionPage class is the base class for SettingsDialog pages using UI files to describe...
UiClass * ui()
Provides the derived class access to the UI class.
#define QT_UTILITIES_EXPORT
Marks the symbol to be exported by the qtutilities library.
bool hasBeenShown() const
Returns an indication whether the option page has been shown yet.
Provides common dialogs such as AboutDialog, EnterPasswordDialog and SettingsDialog.
const QStringList & errors() const
Returns the errors which haven been occurred when applying the changes.
The SettingsDialog class provides a framework for creating settings dialogs with different categories...
QWidget * setupWidget()
Inflates the widget for the option page using the UI class.
QWidget * parentWindow() const
Returns the parent window of the option page.
~UiFileBasedOptionPage()
Destroys the option page.