OpenMW
|
00001 #ifndef USERSETTINGSDIALOG_H 00002 #define USERSETTINGSDIALOG_H 00003 00004 #include <QMainWindow> 00005 #include <QStackedWidget> 00006 #include <QListWidgetItem> 00007 #include <QApplication> 00008 00009 #include "../../model/settings/usersettings.hpp" 00010 #include "../../model/settings/support.hpp" 00011 00012 class QHBoxLayout; 00013 class AbstractWidget; 00014 class QStackedWidget; 00015 class QListWidget; 00016 00017 namespace CSVSettings { 00018 00019 class AbstractPage; 00020 00021 class UserSettingsDialog : public QMainWindow 00022 { 00023 Q_OBJECT 00024 00025 QListWidget *mListWidget; 00026 QStackedWidget *mStackedWidget; 00027 00028 public: 00029 UserSettingsDialog(QMainWindow *parent = 0); 00030 ~UserSettingsDialog(); 00031 00032 private: 00033 00035 void closeEvent (QCloseEvent *event); 00036 00039 AbstractPage &getAbstractPage (int index); 00040 void setWidgetStates (); 00041 void buildPages(); 00042 void writeSettings(); 00043 00045 template <typename T> 00046 void createPage () 00047 { 00048 T *page = new T(mStackedWidget); 00049 00050 mStackedWidget->addWidget (&dynamic_cast<QWidget &>(*page)); 00051 00052 new QListWidgetItem (page->objectName(), mListWidget); 00053 00054 //finishing touches 00055 QFontMetrics fm (QApplication::font()); 00056 int textWidth = fm.width(page->objectName()); 00057 00058 if ((textWidth + 50) > mListWidget->minimumWidth()) 00059 mListWidget->setMinimumWidth(textWidth + 50); 00060 00061 resize (mStackedWidget->sizeHint()); 00062 } 00063 00064 public slots: 00065 00067 void slotChangePage (QListWidgetItem*, QListWidgetItem*); 00068 }; 00069 00070 } 00071 #endif // USERSETTINGSDIALOG_H