From 4e94de413ba60a1da91715a41c8ba8caa8474728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 7 Feb 2015 10:43:09 +0100 Subject: [PATCH] SCRATCH no more gui includes in logic --- CMakeLists.txt | 3 ++ gui/ConsoleWindow.cpp | 6 ++-- gui/InstancePageProvider.cpp | 0 gui/InstancePageProvider.h | 52 ++++++++++++++++++++++++++++++ gui/MainWindow.cpp | 15 ++++++--- logic/minecraft/OneSixInstance.cpp | 33 +------------------ logic/minecraft/OneSixInstance.h | 7 +--- 7 files changed, 72 insertions(+), 44 deletions(-) create mode 100644 gui/InstancePageProvider.cpp create mode 100644 gui/InstancePageProvider.h diff --git a/CMakeLists.txt b/CMakeLists.txt index d35753cb..b4281d5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -284,6 +284,9 @@ SET(MULTIMC_SOURCES gui/ConsoleWindow.h gui/ConsoleWindow.cpp + gui/InstancePageProvider.h + gui/InstancePageProvider.cpp + # GUI - page dialog pages gui/pages/BasePage.h gui/pages/VersionPage.cpp diff --git a/gui/ConsoleWindow.cpp b/gui/ConsoleWindow.cpp index 1f7c63cf..a9c1f455 100644 --- a/gui/ConsoleWindow.cpp +++ b/gui/ConsoleWindow.cpp @@ -29,6 +29,7 @@ #include #include "widgets/PageContainer.h" #include "pages/LogPage.h" +#include "InstancePageProvider.h" #include "logic/icons/IconList.h" @@ -71,8 +72,9 @@ ConsoleWindow::ConsoleWindow(BaseProcess *process, QWidget *parent) // Add page container { auto mainLayout = new QVBoxLayout; - auto provider = std::dynamic_pointer_cast(m_proc->instance()); - auto proxy_provider = std::make_shared(provider, new LogPage(m_proc)); + auto provider = std::make_shared(m_proc->instance()); + auto baseprovider = std::dynamic_pointer_cast(provider); + auto proxy_provider = std::make_shared(baseprovider, new LogPage(m_proc)); m_container = new PageContainer(proxy_provider, "console", this); mainLayout->addWidget(m_container); mainLayout->setSpacing(0); diff --git a/gui/InstancePageProvider.cpp b/gui/InstancePageProvider.cpp new file mode 100644 index 00000000..e69de29b diff --git a/gui/InstancePageProvider.h b/gui/InstancePageProvider.h new file mode 100644 index 00000000..d4f7cb91 --- /dev/null +++ b/gui/InstancePageProvider.h @@ -0,0 +1,52 @@ +#pragma once +#include "logic/minecraft/OneSixInstance.h" +#include "pages/BasePage.h" +#include "pages/VersionPage.h" +#include "pages/ModFolderPage.h" +#include "pages/ResourcePackPage.h" +#include "pages/TexturePackPage.h" +#include "pages/NotesPage.h" +#include "pages/ScreenshotsPage.h" +#include "pages/InstanceSettingsPage.h" +#include "pages/OtherLogsPage.h" +#include "pages/BasePageProvider.h" +#include + +class InstancePageProvider : public QObject, public BasePageProvider +{ + Q_OBJECT +public: + explicit InstancePageProvider(InstancePtr parent) + { + inst = parent; + } + + virtual ~InstancePageProvider() {}; + virtual QList getPages() override + { + QList values; + std::shared_ptr onesix = std::dynamic_pointer_cast(inst); + if(onesix) + { + values.append(new VersionPage(onesix.get())); + values.append(new ModFolderPage(onesix.get(), onesix->loaderModList(), "mods", "loadermods", + tr("Loader mods"), "Loader-mods")); + values.append(new CoreModFolderPage(onesix.get(), onesix->coreModList(), "coremods", "coremods", + tr("Core mods"), "Core-mods")); + values.append(new ResourcePackPage(onesix.get())); + values.append(new TexturePackPage(onesix.get())); + values.append(new NotesPage(onesix.get())); + values.append(new ScreenshotsPage(PathCombine(onesix->minecraftRoot(), "screenshots"))); + values.append(new InstanceSettingsPage(onesix.get())); + values.append(new OtherLogsPage(onesix->minecraftRoot())); + } + return values; + } + + virtual QString dialogTitle() override + { + return tr("Edit Instance (%1)").arg(inst->name()); + } +protected: + InstancePtr inst; +}; diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index 7ad93f07..f5382ed0 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -381,6 +381,7 @@ namespace Ui { #include "logic/BaseProcess.h" #include "logic/java/JavaUtils.h" #include "gui/NagUtils.h" +#include "InstancePageProvider.h" #include "logic/minecraft/SkinUtils.h" //#include "logic/minecraft/LegacyInstance.h" @@ -1366,6 +1367,12 @@ void ShowPageDialog(T raw_provider, QWidget * parent, QString open_page = QStrin dlg.exec(); } +void ShowInstancePageDialog(InstancePtr instance, QWidget * parent, QString open_page = QString()) +{ + auto provider = std::make_shared(instance); + ShowPageDialog(provider, parent, open_page); +} + void MainWindow::on_actionSettings_triggered() { ShowPageDialog(m_globalSettingsProvider, this, "global-settings"); @@ -1378,22 +1385,22 @@ void MainWindow::on_actionSettings_triggered() void MainWindow::on_actionInstanceSettings_triggered() { - ShowPageDialog(m_selectedInstance, this, "settings"); + ShowInstancePageDialog(m_selectedInstance, this, "settings"); } void MainWindow::on_actionEditInstNotes_triggered() { - ShowPageDialog(m_selectedInstance, this, "notes"); + ShowInstancePageDialog(m_selectedInstance, this, "notes"); } void MainWindow::on_actionEditInstance_triggered() { - ShowPageDialog(m_selectedInstance, this); + ShowInstancePageDialog(m_selectedInstance, this); } void MainWindow::on_actionScreenshots_triggered() { - ShowPageDialog(m_selectedInstance, this, "screenshots"); + ShowInstancePageDialog(m_selectedInstance, this, "screenshots"); } diff --git a/logic/minecraft/OneSixInstance.cpp b/logic/minecraft/OneSixInstance.cpp index ebba22d6..f43275ab 100644 --- a/logic/minecraft/OneSixInstance.cpp +++ b/logic/minecraft/OneSixInstance.cpp @@ -28,15 +28,7 @@ #include "logic/minecraft/AssetsUtils.h" #include "logic/icons/IconList.h" -#include "gui/pagedialog/PageDialog.h" -#include "gui/pages/VersionPage.h" -#include "gui/pages/ModFolderPage.h" -#include "gui/pages/ResourcePackPage.h" -#include "gui/pages/TexturePackPage.h" -#include "gui/pages/InstanceSettingsPage.h" -#include "gui/pages/NotesPage.h" -#include "gui/pages/ScreenshotsPage.h" -#include "gui/pages/OtherLogsPage.h" + OneSixInstance::OneSixInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString &rootDir) : MinecraftInstance(globalSettings, settings, rootDir) { @@ -53,29 +45,6 @@ void OneSixInstance::createProfile() m_version.reset(new MinecraftProfile(new OneSixProfileStrategy(this))); } - -QList OneSixInstance::getPages() -{ - QList values; - values.append(new VersionPage(this)); - values.append(new ModFolderPage(this, loaderModList(), "mods", "loadermods", - tr("Loader mods"), "Loader-mods")); - values.append(new CoreModFolderPage(this, coreModList(), "coremods", "coremods", - tr("Core mods"), "Core-mods")); - values.append(new ResourcePackPage(this)); - values.append(new TexturePackPage(this)); - values.append(new NotesPage(this)); - values.append(new ScreenshotsPage(PathCombine(minecraftRoot(), "screenshots"))); - values.append(new InstanceSettingsPage(this)); - values.append(new OtherLogsPage(minecraftRoot())); - return values; -} - -QString OneSixInstance::dialogTitle() -{ - return tr("Edit Instance (%1)").arg(name()); -} - QSet OneSixInstance::traits() { auto version = getMinecraftProfile(); diff --git a/logic/minecraft/OneSixInstance.h b/logic/minecraft/OneSixInstance.h index 3a9e528e..79e67bd2 100644 --- a/logic/minecraft/OneSixInstance.h +++ b/logic/minecraft/OneSixInstance.h @@ -19,9 +19,8 @@ #include "logic/minecraft/MinecraftProfile.h" #include "logic/minecraft/ModList.h" -#include "gui/pages/BasePageProvider.h" -class OneSixInstance : public MinecraftInstance, public BasePageProvider +class OneSixInstance : public MinecraftInstance { Q_OBJECT public: @@ -30,10 +29,6 @@ public: virtual void init(); - ////// Edit Instance Dialog stuff ////// - virtual QList getPages(); - virtual QString dialogTitle(); - ////// Mod Lists ////// std::shared_ptr loaderModList() const; std::shared_ptr coreModList() const;