diff options
author | Jan Dalheimer <jan@dalheimer.de> | 2014-07-16 00:13:40 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2014-07-20 15:01:02 +0200 |
commit | e178284172396ee51acb77c2daa8135b4855c12b (patch) | |
tree | d37c3d95355073997b023c6bdf34072d3bb468b0 /gui/pages/BasePageProvider.h | |
parent | c91adfb3d18b124b36cf19bcb89973a66c9ef1c9 (diff) | |
download | MultiMC-e178284172396ee51acb77c2daa8135b4855c12b.tar MultiMC-e178284172396ee51acb77c2daa8135b4855c12b.tar.gz MultiMC-e178284172396ee51acb77c2daa8135b4855c12b.tar.lz MultiMC-e178284172396ee51acb77c2daa8135b4855c12b.tar.xz MultiMC-e178284172396ee51acb77c2daa8135b4855c12b.zip |
Merge global settings and accounts into a pagedialog
Also split external tools into it's own page
Diffstat (limited to 'gui/pages/BasePageProvider.h')
-rw-r--r-- | gui/pages/BasePageProvider.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gui/pages/BasePageProvider.h b/gui/pages/BasePageProvider.h index cff9c8e7..5e5a11fb 100644 --- a/gui/pages/BasePageProvider.h +++ b/gui/pages/BasePageProvider.h @@ -17,6 +17,7 @@ #include "BasePage.h" #include <memory> +#include <functional> class BasePageProvider { @@ -25,4 +26,44 @@ public: virtual QString dialogTitle() = 0; }; +class GenericPageProvider : public BasePageProvider +{ + typedef std::function<BasePage *()> PageCreator; +public: + explicit GenericPageProvider(const QString &dialogTitle) + : m_dialogTitle(dialogTitle) + { + } + + QList<BasePage *> getPages() override + { + QList<BasePage *> pages; + for (PageCreator creator : m_creators) + { + pages.append(creator()); + } + return pages; + } + QString dialogTitle() override { return m_dialogTitle; } + + void setDialogTitle(const QString &title) + { + m_dialogTitle = title; + } + void addPageCreator(PageCreator page) + { + m_creators.append(page); + } + + template<typename PageClass> + void addPage() + { + addPageCreator([](){return new PageClass();}); + } + +private: + QList<PageCreator> m_creators; + QString m_dialogTitle; +}; + typedef std::shared_ptr<BasePageProvider> BasePageProviderPtr; |