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 <QPushButton>
 | 
			
		||||
#include <QSortFilterProxyModel>
 | 
			
		||||
#include <QUrl>
 | 
			
		||||
#include "MultiMC.h"
 | 
			
		||||
#include <QStyledItemDelegate>
 | 
			
		||||
#include <QListView>
 | 
			
		||||
@@ -25,6 +26,7 @@
 | 
			
		||||
#include <QLabel>
 | 
			
		||||
#include <QDialogButtonBox>
 | 
			
		||||
#include <QGridLayout>
 | 
			
		||||
#include <QDesktopServices>
 | 
			
		||||
#include <settingsobject.h>
 | 
			
		||||
 | 
			
		||||
#include "PageDialog_p.h"
 | 
			
		||||
@@ -127,38 +129,36 @@ void PageDialog::createUI()
 | 
			
		||||
	m_pageStack->setMargin(0);
 | 
			
		||||
	m_pageStack->addWidget(new QWidget(this));
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	QDialogButtonBox *buttons =
 | 
			
		||||
		new QDialogButtonBox(QDialogButtonBox::Help | QDialogButtonBox::Ok |
 | 
			
		||||
							 QDialogButtonBox::Apply | QDialogButtonBox::Cancel);
 | 
			
		||||
	buttons->button(QDialogButtonBox::Ok)->setDefault(true);
 | 
			
		||||
	connect(buttons->button(QDialogButtonBox::Apply), SIGNAL(clicked()), this, SLOT(apply()));
 | 
			
		||||
	connect(buttons, SIGNAL(accepted()), this, SLOT(accept()));
 | 
			
		||||
	connect(buttons, SIGNAL(rejected()), this, SLOT(reject()));
 | 
			
		||||
	*/
 | 
			
		||||
		new QDialogButtonBox(QDialogButtonBox::Help | QDialogButtonBox::Close);
 | 
			
		||||
	buttons->button(QDialogButtonBox::Close)->setDefault(true);
 | 
			
		||||
	connect(buttons->button(QDialogButtonBox::Close), SIGNAL(clicked()), this, SLOT(close()));
 | 
			
		||||
	connect(buttons->button(QDialogButtonBox::Help), SIGNAL(clicked()), this, SLOT(help()));
 | 
			
		||||
 | 
			
		||||
	QGridLayout *mainGridLayout = new QGridLayout;
 | 
			
		||||
	mainGridLayout->addLayout(headerHLayout, 0, 1, 1, 1);
 | 
			
		||||
	mainGridLayout->addWidget(m_pageList, 0, 0, 2, 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);
 | 
			
		||||
	setLayout(mainGridLayout);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PageDialog::showPage(int row)
 | 
			
		||||
{
 | 
			
		||||
	auto page = m_model->pages().at(row);
 | 
			
		||||
	m_pageStack->setCurrentIndex(page->stackIndex);
 | 
			
		||||
	m_header->setText(page->displayName());
 | 
			
		||||
	m_iconHeader->setIcon(page->icon());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PageDialog::currentChanged(const QModelIndex ¤t)
 | 
			
		||||
{
 | 
			
		||||
	if (current.isValid())
 | 
			
		||||
	if(row != -1)
 | 
			
		||||
	{
 | 
			
		||||
		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
 | 
			
		||||
	{
 | 
			
		||||
@@ -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;
 | 
			
		||||
	for(auto page: m_model->pages())
 | 
			
		||||
	{
 | 
			
		||||
		accepted &= page->accept();
 | 
			
		||||
		accepted &= page->apply();
 | 
			
		||||
	}
 | 
			
		||||
	if(accepted)
 | 
			
		||||
	{
 | 
			
		||||
		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();
 | 
			
		||||
private
 | 
			
		||||
slots:
 | 
			
		||||
	void apply();
 | 
			
		||||
	virtual void reject();
 | 
			
		||||
	virtual void accept();
 | 
			
		||||
	void currentChanged(const QModelIndex ¤t);
 | 
			
		||||
	void showPage(int row);
 | 
			
		||||
	void help();
 | 
			
		||||
	virtual void closeEvent(QCloseEvent *event);
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	BasePage * m_currentPage;
 | 
			
		||||
	QSortFilterProxyModel *m_proxyModel;
 | 
			
		||||
	PageModel *m_model;
 | 
			
		||||
	QStackedLayout *m_pageStack;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,14 +25,6 @@ public:
 | 
			
		||||
	virtual QString id() = 0;
 | 
			
		||||
	virtual QString displayName() = 0;
 | 
			
		||||
	virtual QIcon icon() = 0;
 | 
			
		||||
	virtual bool accept()
 | 
			
		||||
	{
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	virtual bool reject()
 | 
			
		||||
	{
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	virtual bool apply()
 | 
			
		||||
	{
 | 
			
		||||
		return true;
 | 
			
		||||
@@ -41,6 +33,10 @@ public:
 | 
			
		||||
	{
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	virtual QString helpPage()
 | 
			
		||||
	{
 | 
			
		||||
		return QString();
 | 
			
		||||
	}
 | 
			
		||||
	int stackIndex = -1;
 | 
			
		||||
	int listIndex = -1;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -28,10 +28,6 @@ InstanceSettingsPage::InstanceSettingsPage(SettingsObject *s, QWidget *parent)
 | 
			
		||||
{
 | 
			
		||||
	ui->setupUi(this);
 | 
			
		||||
	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()
 | 
			
		||||
@@ -42,7 +38,6 @@ InstanceSettingsPage::~InstanceSettingsPage()
 | 
			
		||||
bool InstanceSettingsPage::apply()
 | 
			
		||||
{
 | 
			
		||||
	applySettings();
 | 
			
		||||
	loadSettings();
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ public:
 | 
			
		||||
	virtual QIcon icon() override;
 | 
			
		||||
	virtual QString id() override;
 | 
			
		||||
	virtual bool apply();
 | 
			
		||||
 | 
			
		||||
	virtual QString helpPage() override { return "InstanceSettingsPage"; };
 | 
			
		||||
private:
 | 
			
		||||
	void updateCheckboxStuff();
 | 
			
		||||
private slots:
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <x>0</x>
 | 
			
		||||
    <y>0</y>
 | 
			
		||||
    <width>458</width>
 | 
			
		||||
    <height>476</height>
 | 
			
		||||
    <height>426</height>
 | 
			
		||||
   </rect>
 | 
			
		||||
  </property>
 | 
			
		||||
  <property name="windowTitle">
 | 
			
		||||
@@ -425,16 +425,6 @@
 | 
			
		||||
     </widget>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </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>
 | 
			
		||||
 </widget>
 | 
			
		||||
 <resources/>
 | 
			
		||||
 
 | 
			
		||||
@@ -37,6 +37,7 @@ public:
 | 
			
		||||
	virtual QString displayName();
 | 
			
		||||
	virtual QIcon icon();
 | 
			
		||||
	virtual QString id();
 | 
			
		||||
	virtual QString helpPage() override { return "LegacyJarModPage"; };
 | 
			
		||||
 | 
			
		||||
private
 | 
			
		||||
slots:
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,7 @@ public:
 | 
			
		||||
	virtual QString displayName() override;
 | 
			
		||||
	virtual QIcon icon() override;
 | 
			
		||||
	virtual QString id() override;
 | 
			
		||||
	virtual QString helpPage() override { return "LegacyUpgradePage"; };
 | 
			
		||||
private
 | 
			
		||||
slots:
 | 
			
		||||
	void on_upgradeButton_clicked();
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ QString ModFolderPage::id()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
{
 | 
			
		||||
	ui->setupUi(this);
 | 
			
		||||
@@ -57,6 +57,7 @@ ModFolderPage::ModFolderPage(std::shared_ptr<ModList> mods, QString id, QString
 | 
			
		||||
	m_id = id;
 | 
			
		||||
	m_displayName = displayName;
 | 
			
		||||
	m_iconName = iconName;
 | 
			
		||||
	m_helpName = helpPage;
 | 
			
		||||
	ui->modTreeView->setModel(m_mods.get());
 | 
			
		||||
	ui->modTreeView->installEventFilter(this);
 | 
			
		||||
	m_mods->startWatching();
 | 
			
		||||
 
 | 
			
		||||
@@ -33,12 +33,12 @@ class ModFolderPage : public QWidget, public BasePage
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	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 QString displayName() override;
 | 
			
		||||
	virtual QIcon icon() override;
 | 
			
		||||
	virtual QString id() override;
 | 
			
		||||
 | 
			
		||||
	virtual QString helpPage() override { return m_helpName; };
 | 
			
		||||
protected:
 | 
			
		||||
	bool eventFilter(QObject *obj, QEvent *ev);
 | 
			
		||||
	bool modListFilter(QKeyEvent *ev);
 | 
			
		||||
@@ -49,6 +49,7 @@ private:
 | 
			
		||||
	QString m_iconName;
 | 
			
		||||
	QString m_id;
 | 
			
		||||
	QString m_displayName;
 | 
			
		||||
	QString m_helpName;
 | 
			
		||||
 | 
			
		||||
public slots:
 | 
			
		||||
	void modCurrent(const QModelIndex ¤t, const QModelIndex &previous);
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ class ResourcePackPage : public ModFolderPage
 | 
			
		||||
public:
 | 
			
		||||
	explicit ResourcePackPage(BaseInstance *instance, QWidget *parent = 0)
 | 
			
		||||
		: ModFolderPage(instance->texturePackList(), "resourcepacks", "resourcepacks",
 | 
			
		||||
						tr("Resource packs"), parent)
 | 
			
		||||
						tr("Resource packs"), "TexturePacksPage", parent)
 | 
			
		||||
	{
 | 
			
		||||
		m_inst = instance;
 | 
			
		||||
	}
 | 
			
		||||
@@ -17,7 +17,6 @@ public:
 | 
			
		||||
		return !m_inst->traits().contains("no-texturepacks") &&
 | 
			
		||||
			   !m_inst->traits().contains("texturepacks");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	BaseInstance *m_inst;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ class TexturePackPage : public ModFolderPage
 | 
			
		||||
public:
 | 
			
		||||
	explicit TexturePackPage(BaseInstance *instance, QWidget *parent = 0)
 | 
			
		||||
		: ModFolderPage(instance->texturePackList(), "texturepacks", "resourcepacks",
 | 
			
		||||
						tr("Texture packs"), parent)
 | 
			
		||||
						tr("Texture packs"), "ResourcePacksPage", parent)
 | 
			
		||||
	{
 | 
			
		||||
		m_inst = instance;
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,7 @@ public:
 | 
			
		||||
	virtual QString displayName() override;
 | 
			
		||||
	virtual QIcon icon() override;
 | 
			
		||||
	virtual QString id() override;
 | 
			
		||||
	virtual QString helpPage() override { return "VersionPage"; };
 | 
			
		||||
private
 | 
			
		||||
slots:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user