Add close button to page dialog. Add help button to page dialog.
Smile.
This commit is contained in:
		| @@ -18,6 +18,7 @@ | |||||||
| #include <QStackedLayout> | #include <QStackedLayout> | ||||||
| #include <QPushButton> | #include <QPushButton> | ||||||
| #include <QSortFilterProxyModel> | #include <QSortFilterProxyModel> | ||||||
|  | #include <QUrl> | ||||||
| #include "MultiMC.h" | #include "MultiMC.h" | ||||||
| #include <QStyledItemDelegate> | #include <QStyledItemDelegate> | ||||||
| #include <QListView> | #include <QListView> | ||||||
| @@ -25,6 +26,7 @@ | |||||||
| #include <QLabel> | #include <QLabel> | ||||||
| #include <QDialogButtonBox> | #include <QDialogButtonBox> | ||||||
| #include <QGridLayout> | #include <QGridLayout> | ||||||
|  | #include <QDesktopServices> | ||||||
| #include <settingsobject.h> | #include <settingsobject.h> | ||||||
|  |  | ||||||
| #include "PageDialog_p.h" | #include "PageDialog_p.h" | ||||||
| @@ -127,38 +129,36 @@ void PageDialog::createUI() | |||||||
| 	m_pageStack->setMargin(0); | 	m_pageStack->setMargin(0); | ||||||
| 	m_pageStack->addWidget(new QWidget(this)); | 	m_pageStack->addWidget(new QWidget(this)); | ||||||
|  |  | ||||||
| 	/* |  | ||||||
| 	QDialogButtonBox *buttons = | 	QDialogButtonBox *buttons = | ||||||
| 		new QDialogButtonBox(QDialogButtonBox::Help | QDialogButtonBox::Ok | | 		new QDialogButtonBox(QDialogButtonBox::Help | QDialogButtonBox::Close); | ||||||
| 							 QDialogButtonBox::Apply | QDialogButtonBox::Cancel); | 	buttons->button(QDialogButtonBox::Close)->setDefault(true); | ||||||
| 	buttons->button(QDialogButtonBox::Ok)->setDefault(true); | 	connect(buttons->button(QDialogButtonBox::Close), SIGNAL(clicked()), this, SLOT(close())); | ||||||
| 	connect(buttons->button(QDialogButtonBox::Apply), SIGNAL(clicked()), this, SLOT(apply())); | 	connect(buttons->button(QDialogButtonBox::Help), SIGNAL(clicked()), this, SLOT(help())); | ||||||
| 	connect(buttons, SIGNAL(accepted()), this, SLOT(accept())); |  | ||||||
| 	connect(buttons, SIGNAL(rejected()), this, SLOT(reject())); |  | ||||||
| 	*/ |  | ||||||
|  |  | ||||||
| 	QGridLayout *mainGridLayout = new QGridLayout; | 	QGridLayout *mainGridLayout = new QGridLayout; | ||||||
| 	mainGridLayout->addLayout(headerHLayout, 0, 1, 1, 1); | 	mainGridLayout->addLayout(headerHLayout, 0, 1, 1, 1); | ||||||
| 	mainGridLayout->addWidget(m_pageList, 0, 0, 2, 1); | 	mainGridLayout->addWidget(m_pageList, 0, 0, 2, 1); | ||||||
| 	mainGridLayout->addLayout(m_pageStack, 1, 1, 1, 1); | 	mainGridLayout->addLayout(m_pageStack, 1, 1, 1, 1); | ||||||
| 	//mainGridLayout->addWidget(buttons, 2, 0, 1, 2); | 	mainGridLayout->addWidget(buttons, 2, 0, 1, 2); | ||||||
| 	mainGridLayout->setColumnStretch(1, 4); | 	mainGridLayout->setColumnStretch(1, 4); | ||||||
| 	setLayout(mainGridLayout); | 	setLayout(mainGridLayout); | ||||||
| } | } | ||||||
|  |  | ||||||
| void PageDialog::showPage(int row) | void PageDialog::showPage(int row) | ||||||
| { | { | ||||||
| 	auto page = m_model->pages().at(row); | 	if(row != -1) | ||||||
| 	m_pageStack->setCurrentIndex(page->stackIndex); |  | ||||||
| 	m_header->setText(page->displayName()); |  | ||||||
| 	m_iconHeader->setIcon(page->icon()); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void PageDialog::currentChanged(const QModelIndex ¤t) |  | ||||||
| { |  | ||||||
| 	if (current.isValid()) |  | ||||||
| 	{ | 	{ | ||||||
| 		showPage(m_proxyModel->mapToSource(current).row()); | 		m_currentPage = m_model->pages().at(row); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		m_currentPage = nullptr; | ||||||
|  | 	} | ||||||
|  | 	if(m_currentPage) | ||||||
|  | 	{ | ||||||
|  | 		m_pageStack->setCurrentIndex(m_currentPage->stackIndex); | ||||||
|  | 		m_header->setText(m_currentPage->displayName()); | ||||||
|  | 		m_iconHeader->setIcon(m_currentPage->icon()); | ||||||
| 	} | 	} | ||||||
| 	else | 	else | ||||||
| 	{ | 	{ | ||||||
| @@ -168,45 +168,32 @@ void PageDialog::currentChanged(const QModelIndex ¤t) | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| void PageDialog::accept() | void PageDialog::help() | ||||||
|  | { | ||||||
|  | 	if(m_currentPage) | ||||||
|  | 	{ | ||||||
|  | 		QString pageId = m_currentPage->helpPage(); | ||||||
|  | 		if(pageId.isEmpty()) | ||||||
|  | 			return; | ||||||
|  | 		QDesktopServices::openUrl(QUrl("https://github.com/MultiMC/MultiMC5/wiki/" + pageId)); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PageDialog::currentChanged(const QModelIndex ¤t) | ||||||
|  | { | ||||||
|  | 	showPage(current.isValid() ? m_proxyModel->mapToSource(current).row() : -1); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PageDialog::closeEvent(QCloseEvent * event) | ||||||
| { | { | ||||||
| 	bool accepted = true; | 	bool accepted = true; | ||||||
| 	for(auto page: m_model->pages()) | 	for(auto page: m_model->pages()) | ||||||
| 	{ | 	{ | ||||||
| 		accepted &= page->accept(); | 		accepted &= page->apply(); | ||||||
| 	} | 	} | ||||||
| 	if(accepted) | 	if(accepted) | ||||||
| 	{ | 	{ | ||||||
| 		MMC->settings()->set("PagedGeometry", saveGeometry().toBase64()); | 		MMC->settings()->set("PagedGeometry", saveGeometry().toBase64()); | ||||||
| 		QDialog::accept(); | 		QDialog::closeEvent(event); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| void PageDialog::reject() |  | ||||||
| { |  | ||||||
| 	bool rejected = true; |  | ||||||
| 	for(auto page: m_model->pages()) |  | ||||||
| 	{ |  | ||||||
| 		rejected &= page->reject(); |  | ||||||
| 	} |  | ||||||
| 	if(rejected) |  | ||||||
| 	{ |  | ||||||
| 		MMC->settings()->set("PagedGeometry", saveGeometry().toBase64()); |  | ||||||
| 		QDialog::reject(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void PageDialog::apply() |  | ||||||
| { |  | ||||||
| 	for(auto page: m_model->pages()) |  | ||||||
| 	{ |  | ||||||
| 		page->apply(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void PageDialog::closeEvent(QCloseEvent * event) |  | ||||||
| { |  | ||||||
| 	MMC->settings()->set("PagedGeometry", saveGeometry().toBase64()); |  | ||||||
| 	QDialog::closeEvent(event); |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -38,14 +38,14 @@ private: | |||||||
| 	void createUI(); | 	void createUI(); | ||||||
| private | private | ||||||
| slots: | slots: | ||||||
| 	void apply(); |  | ||||||
| 	virtual void reject(); |  | ||||||
| 	virtual void accept(); |  | ||||||
| 	void currentChanged(const QModelIndex ¤t); | 	void currentChanged(const QModelIndex ¤t); | ||||||
| 	void showPage(int row); | 	void showPage(int row); | ||||||
|  | 	void help(); | ||||||
| 	virtual void closeEvent(QCloseEvent *event); | 	virtual void closeEvent(QCloseEvent *event); | ||||||
| 	 | 	 | ||||||
|  |  | ||||||
| private: | private: | ||||||
|  | 	BasePage * m_currentPage; | ||||||
| 	QSortFilterProxyModel *m_proxyModel; | 	QSortFilterProxyModel *m_proxyModel; | ||||||
| 	PageModel *m_model; | 	PageModel *m_model; | ||||||
| 	QStackedLayout *m_pageStack; | 	QStackedLayout *m_pageStack; | ||||||
|   | |||||||
| @@ -25,14 +25,6 @@ public: | |||||||
| 	virtual QString id() = 0; | 	virtual QString id() = 0; | ||||||
| 	virtual QString displayName() = 0; | 	virtual QString displayName() = 0; | ||||||
| 	virtual QIcon icon() = 0; | 	virtual QIcon icon() = 0; | ||||||
| 	virtual bool accept() |  | ||||||
| 	{ |  | ||||||
| 		return true; |  | ||||||
| 	} |  | ||||||
| 	virtual bool reject() |  | ||||||
| 	{ |  | ||||||
| 		return true; |  | ||||||
| 	} |  | ||||||
| 	virtual bool apply() | 	virtual bool apply() | ||||||
| 	{ | 	{ | ||||||
| 		return true; | 		return true; | ||||||
| @@ -41,6 +33,10 @@ public: | |||||||
| 	{ | 	{ | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
|  | 	virtual QString helpPage() | ||||||
|  | 	{ | ||||||
|  | 		return QString(); | ||||||
|  | 	} | ||||||
| 	int stackIndex = -1; | 	int stackIndex = -1; | ||||||
| 	int listIndex = -1; | 	int listIndex = -1; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -28,10 +28,6 @@ InstanceSettingsPage::InstanceSettingsPage(SettingsObject *s, QWidget *parent) | |||||||
| { | { | ||||||
| 	ui->setupUi(this); | 	ui->setupUi(this); | ||||||
| 	loadSettings(); | 	loadSettings(); | ||||||
| 	connect(ui->buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked(bool)), this, |  | ||||||
| 			SLOT(applySettings())); |  | ||||||
| 	connect(ui->buttonBox->button(QDialogButtonBox::Reset), SIGNAL(clicked(bool)), this, |  | ||||||
| 			SLOT(loadSettings())); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| InstanceSettingsPage::~InstanceSettingsPage() | InstanceSettingsPage::~InstanceSettingsPage() | ||||||
| @@ -42,7 +38,6 @@ InstanceSettingsPage::~InstanceSettingsPage() | |||||||
| bool InstanceSettingsPage::apply() | bool InstanceSettingsPage::apply() | ||||||
| { | { | ||||||
| 	applySettings(); | 	applySettings(); | ||||||
| 	loadSettings(); |  | ||||||
| 	return true; | 	return true; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ public: | |||||||
| 	virtual QIcon icon() override; | 	virtual QIcon icon() override; | ||||||
| 	virtual QString id() override; | 	virtual QString id() override; | ||||||
| 	virtual bool apply(); | 	virtual bool apply(); | ||||||
|  | 	virtual QString helpPage() override { return "InstanceSettingsPage"; }; | ||||||
| private: | private: | ||||||
| 	void updateCheckboxStuff(); | 	void updateCheckboxStuff(); | ||||||
| private slots: | private slots: | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <x>0</x> |     <x>0</x> | ||||||
|     <y>0</y> |     <y>0</y> | ||||||
|     <width>458</width> |     <width>458</width> | ||||||
|     <height>476</height> |     <height>426</height> | ||||||
|    </rect> |    </rect> | ||||||
|   </property> |   </property> | ||||||
|   <property name="windowTitle"> |   <property name="windowTitle"> | ||||||
| @@ -425,16 +425,6 @@ | |||||||
|      </widget> |      </widget> | ||||||
|     </widget> |     </widget> | ||||||
|    </item> |    </item> | ||||||
|    <item> |  | ||||||
|     <widget class="QDialogButtonBox" name="buttonBox"> |  | ||||||
|      <property name="orientation"> |  | ||||||
|       <enum>Qt::Horizontal</enum> |  | ||||||
|      </property> |  | ||||||
|      <property name="standardButtons"> |  | ||||||
|       <set>QDialogButtonBox::Apply|QDialogButtonBox::Reset</set> |  | ||||||
|      </property> |  | ||||||
|     </widget> |  | ||||||
|    </item> |  | ||||||
|   </layout> |   </layout> | ||||||
|  </widget> |  </widget> | ||||||
|  <resources/> |  <resources/> | ||||||
|   | |||||||
| @@ -37,6 +37,7 @@ public: | |||||||
| 	virtual QString displayName(); | 	virtual QString displayName(); | ||||||
| 	virtual QIcon icon(); | 	virtual QIcon icon(); | ||||||
| 	virtual QString id(); | 	virtual QString id(); | ||||||
|  | 	virtual QString helpPage() override { return "LegacyJarModPage"; }; | ||||||
|  |  | ||||||
| private | private | ||||||
| slots: | slots: | ||||||
|   | |||||||
| @@ -36,6 +36,7 @@ public: | |||||||
| 	virtual QString displayName() override; | 	virtual QString displayName() override; | ||||||
| 	virtual QIcon icon() override; | 	virtual QIcon icon() override; | ||||||
| 	virtual QString id() override; | 	virtual QString id() override; | ||||||
|  | 	virtual QString helpPage() override { return "LegacyUpgradePage"; }; | ||||||
| private | private | ||||||
| slots: | slots: | ||||||
| 	void on_upgradeButton_clicked(); | 	void on_upgradeButton_clicked(); | ||||||
|   | |||||||
| @@ -49,7 +49,7 @@ QString ModFolderPage::id() | |||||||
| } | } | ||||||
|  |  | ||||||
| ModFolderPage::ModFolderPage(std::shared_ptr<ModList> mods, QString id, QString iconName, | ModFolderPage::ModFolderPage(std::shared_ptr<ModList> mods, QString id, QString iconName, | ||||||
| 							 QString displayName, QWidget *parent) | 							 QString displayName, QString helpPage, QWidget *parent) | ||||||
| 	: QWidget(parent), ui(new Ui::ModFolderPage) | 	: QWidget(parent), ui(new Ui::ModFolderPage) | ||||||
| { | { | ||||||
| 	ui->setupUi(this); | 	ui->setupUi(this); | ||||||
| @@ -57,6 +57,7 @@ ModFolderPage::ModFolderPage(std::shared_ptr<ModList> mods, QString id, QString | |||||||
| 	m_id = id; | 	m_id = id; | ||||||
| 	m_displayName = displayName; | 	m_displayName = displayName; | ||||||
| 	m_iconName = iconName; | 	m_iconName = iconName; | ||||||
|  | 	m_helpName = helpPage; | ||||||
| 	ui->modTreeView->setModel(m_mods.get()); | 	ui->modTreeView->setModel(m_mods.get()); | ||||||
| 	ui->modTreeView->installEventFilter(this); | 	ui->modTreeView->installEventFilter(this); | ||||||
| 	m_mods->startWatching(); | 	m_mods->startWatching(); | ||||||
|   | |||||||
| @@ -33,12 +33,12 @@ class ModFolderPage : public QWidget, public BasePage | |||||||
|  |  | ||||||
| public: | public: | ||||||
| 	explicit ModFolderPage(std::shared_ptr<ModList> mods, QString id, QString iconName, | 	explicit ModFolderPage(std::shared_ptr<ModList> mods, QString id, QString iconName, | ||||||
| 						   QString displayName, QWidget *parent = 0); | 						   QString displayName, QString helpPage = "" , QWidget *parent = 0); | ||||||
| 	virtual ~ModFolderPage(); | 	virtual ~ModFolderPage(); | ||||||
| 	virtual QString displayName() override; | 	virtual QString displayName() override; | ||||||
| 	virtual QIcon icon() override; | 	virtual QIcon icon() override; | ||||||
| 	virtual QString id() override; | 	virtual QString id() override; | ||||||
|  | 	virtual QString helpPage() override { return m_helpName; }; | ||||||
| protected: | protected: | ||||||
| 	bool eventFilter(QObject *obj, QEvent *ev); | 	bool eventFilter(QObject *obj, QEvent *ev); | ||||||
| 	bool modListFilter(QKeyEvent *ev); | 	bool modListFilter(QKeyEvent *ev); | ||||||
| @@ -49,6 +49,7 @@ private: | |||||||
| 	QString m_iconName; | 	QString m_iconName; | ||||||
| 	QString m_id; | 	QString m_id; | ||||||
| 	QString m_displayName; | 	QString m_displayName; | ||||||
|  | 	QString m_helpName; | ||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
| 	void modCurrent(const QModelIndex ¤t, const QModelIndex &previous); | 	void modCurrent(const QModelIndex ¤t, const QModelIndex &previous); | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ class ResourcePackPage : public ModFolderPage | |||||||
| public: | public: | ||||||
| 	explicit ResourcePackPage(BaseInstance *instance, QWidget *parent = 0) | 	explicit ResourcePackPage(BaseInstance *instance, QWidget *parent = 0) | ||||||
| 		: ModFolderPage(instance->texturePackList(), "resourcepacks", "resourcepacks", | 		: ModFolderPage(instance->texturePackList(), "resourcepacks", "resourcepacks", | ||||||
| 						tr("Resource packs"), parent) | 						tr("Resource packs"), "TexturePacksPage", parent) | ||||||
| 	{ | 	{ | ||||||
| 		m_inst = instance; | 		m_inst = instance; | ||||||
| 	} | 	} | ||||||
| @@ -17,7 +17,6 @@ public: | |||||||
| 		return !m_inst->traits().contains("no-texturepacks") && | 		return !m_inst->traits().contains("no-texturepacks") && | ||||||
| 			   !m_inst->traits().contains("texturepacks"); | 			   !m_inst->traits().contains("texturepacks"); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| private: | private: | ||||||
| 	BaseInstance *m_inst; | 	BaseInstance *m_inst; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ class TexturePackPage : public ModFolderPage | |||||||
| public: | public: | ||||||
| 	explicit TexturePackPage(BaseInstance *instance, QWidget *parent = 0) | 	explicit TexturePackPage(BaseInstance *instance, QWidget *parent = 0) | ||||||
| 		: ModFolderPage(instance->texturePackList(), "texturepacks", "resourcepacks", | 		: ModFolderPage(instance->texturePackList(), "texturepacks", "resourcepacks", | ||||||
| 						tr("Texture packs"), parent) | 						tr("Texture packs"), "ResourcePacksPage", parent) | ||||||
| 	{ | 	{ | ||||||
| 		m_inst = instance; | 		m_inst = instance; | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -36,6 +36,7 @@ public: | |||||||
| 	virtual QString displayName() override; | 	virtual QString displayName() override; | ||||||
| 	virtual QIcon icon() override; | 	virtual QIcon icon() override; | ||||||
| 	virtual QString id() override; | 	virtual QString id() override; | ||||||
|  | 	virtual QString helpPage() override { return "VersionPage"; }; | ||||||
| private | private | ||||||
| slots: | slots: | ||||||
|  |  | ||||||
|   | |||||||
| @@ -50,8 +50,10 @@ QList<BasePage *> LegacyInstance::getPages() | |||||||
| 	QList<BasePage *> values; | 	QList<BasePage *> values; | ||||||
| 	values.append(new LegacyUpgradePage(this)); | 	values.append(new LegacyUpgradePage(this)); | ||||||
| 	values.append(new LegacyJarModPage(this)); | 	values.append(new LegacyJarModPage(this)); | ||||||
| 	values.append(new ModFolderPage(loaderModList(), "mods", "plugin-blue", tr("Loader Mods"))); | 	values.append(new ModFolderPage(loaderModList(), "mods", "plugin-blue", tr("Loader Mods"), | ||||||
| 	values.append(new ModFolderPage(coreModList(), "coremods", "plugin-green", tr("Core Mods"))); | 									"LoaderModsPage")); | ||||||
|  | 	values.append(new ModFolderPage(coreModList(), "coremods", "plugin-green", tr("Core Mods"), | ||||||
|  | 									"CoreModsPage")); | ||||||
| 	values.append(new TexturePackPage(this)); | 	values.append(new TexturePackPage(this)); | ||||||
| 	values.append(new InstanceSettingsPage(&settings())); | 	values.append(new InstanceSettingsPage(&settings())); | ||||||
| 	return values; | 	return values; | ||||||
| @@ -70,7 +72,7 @@ std::shared_ptr<Task> LegacyInstance::doUpdate() | |||||||
| 	return std::shared_ptr<Task>(new LegacyUpdate(this, this)); | 	return std::shared_ptr<Task>(new LegacyUpdate(this, this)); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool LegacyInstance::prepareForLaunch(AuthSessionPtr account, QString & launchScript) | bool LegacyInstance::prepareForLaunch(AuthSessionPtr account, QString &launchScript) | ||||||
| { | { | ||||||
| 	QIcon icon = MMC->icons()->getIcon(iconKey()); | 	QIcon icon = MMC->icons()->getIcon(iconKey()); | ||||||
| 	auto pixmap = icon.pixmap(128, 128); | 	auto pixmap = icon.pixmap(128, 128); | ||||||
|   | |||||||
| @@ -61,8 +61,10 @@ QList<BasePage *> OneSixInstance::getPages() | |||||||
| { | { | ||||||
| 	QList<BasePage *> values; | 	QList<BasePage *> values; | ||||||
| 	values.append(new VersionPage(this)); | 	values.append(new VersionPage(this)); | ||||||
| 	values.append(new ModFolderPage(loaderModList(), "mods", "plugin-blue", tr("Loader Mods"))); | 	values.append(new ModFolderPage(loaderModList(), "mods", "plugin-blue", tr("Loader Mods"), | ||||||
| 	values.append(new ModFolderPage(coreModList(), "coremods", "plugin-green", tr("Core Mods"))); | 									"LoaderModsPage")); | ||||||
|  | 	values.append(new ModFolderPage(coreModList(), "coremods", "plugin-green", tr("Core Mods"), | ||||||
|  | 									"CoreModsPage")); | ||||||
| 	values.append(new ResourcePackPage(this)); | 	values.append(new ResourcePackPage(this)); | ||||||
| 	values.append(new TexturePackPage(this)); | 	values.append(new TexturePackPage(this)); | ||||||
| 	values.append(new InstanceSettingsPage(&settings())); | 	values.append(new InstanceSettingsPage(&settings())); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user