Replace notes dialog with a page.

This commit is contained in:
Petr Mrázek 2014-06-18 01:15:01 +02:00
parent 702e00e059
commit d911c9908c
9 changed files with 124 additions and 164 deletions

View File

@ -301,6 +301,8 @@ SET(MULTIMC_SOURCES
gui/pages/ResourcePackPage.h
gui/pages/ModFolderPage.cpp
gui/pages/ModFolderPage.h
gui/pages/NotesPage.cpp
gui/pages/NotesPage.h
gui/pages/LegacyUpgradePage.cpp
gui/pages/LegacyUpgradePage.h
gui/pages/LegacyJarModPage.cpp
@ -321,8 +323,6 @@ SET(MULTIMC_SOURCES
gui/dialogs/CustomMessageBox.h
gui/dialogs/EditAccountDialog.cpp
gui/dialogs/EditAccountDialog.h
gui/dialogs/EditNotesDialog.cpp
gui/dialogs/EditNotesDialog.h
gui/dialogs/IconPickerDialog.cpp
gui/dialogs/IconPickerDialog.h
gui/dialogs/LoginDialog.cpp
@ -615,6 +615,7 @@ SET(MULTIMC_UIS
gui/pages/LegacyUpgradePage.ui
gui/pages/LegacyJarModPage.ui
gui/pages/InstanceSettingsPage.ui
gui/pages/NotesPage.ui
# Dialogs
gui/dialogs/SettingsDialog.ui
@ -625,7 +626,6 @@ SET(MULTIMC_UIS
gui/dialogs/LwjglSelectDialog.ui
gui/dialogs/ProgressDialog.ui
gui/dialogs/IconPickerDialog.ui
gui/dialogs/EditNotesDialog.ui
gui/dialogs/AccountListDialog.ui
gui/dialogs/AccountSelectDialog.ui
gui/dialogs/EditAccountDialog.ui

View File

@ -57,7 +57,6 @@
#include "gui/dialogs/CustomMessageBox.h"
#include "gui/dialogs/LwjglSelectDialog.h"
#include "gui/dialogs/IconPickerDialog.h"
#include "gui/dialogs/EditNotesDialog.h"
#include "gui/dialogs/CopyInstanceDialog.h"
#include "gui/dialogs/AccountListDialog.h"
#include "gui/dialogs/AccountSelectDialog.h"
@ -941,17 +940,31 @@ void MainWindow::on_actionSettings_triggered()
updateToolsMenu();
}
void MainWindow::on_actionInstanceSettings_triggered()
template <typename T>
void ShowPageDialog(T raw_provider, QWidget * parent, QString open_page = QString())
{
if (!m_selectedInstance)
return;
auto provider = std::dynamic_pointer_cast<BasePageProvider>(m_selectedInstance);
auto provider = std::dynamic_pointer_cast<BasePageProvider>(raw_provider);
if(!provider)
return;
PageDialog dlg(provider, "settings" , this);
PageDialog dlg(provider, open_page, parent);
dlg.exec();
}
void MainWindow::on_actionInstanceSettings_triggered()
{
ShowPageDialog(m_selectedInstance, this, "settings");
}
void MainWindow::on_actionEditInstNotes_triggered()
{
ShowPageDialog(m_selectedInstance, this, "notes");
}
void MainWindow::on_actionEditInstance_triggered()
{
ShowPageDialog(m_selectedInstance, this);
}
void MainWindow::on_actionManageAccounts_triggered()
{
AccountListDialog dialog(this);
@ -1040,17 +1053,6 @@ void MainWindow::on_actionViewSelectedInstFolder_triggered()
}
}
void MainWindow::on_actionEditInstance_triggered()
{
if (!m_selectedInstance)
return;
auto provider = std::dynamic_pointer_cast<BasePageProvider>(m_selectedInstance);
if(!provider)
return;
PageDialog dlg(provider, "" , this);
dlg.exec();
}
void MainWindow::closeEvent(QCloseEvent *event)
{
// Save the window state and geometry.
@ -1398,20 +1400,6 @@ void MainWindow::selectionBad()
setSelectedInstanceById(MMC->settings()->get("SelectedInstance").toString());
}
void MainWindow::on_actionEditInstNotes_triggered()
{
if (!m_selectedInstance)
return;
EditNotesDialog noteedit(m_selectedInstance->notes(), m_selectedInstance->name(), this);
noteedit.exec();
if (noteedit.result() == QDialog::Accepted)
{
m_selectedInstance->setNotes(noteedit.getText());
}
}
void MainWindow::instanceEnded()
{
this->show();

View File

@ -1,43 +0,0 @@
/* Copyright 2013 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "EditNotesDialog.h"
#include "ui_EditNotesDialog.h"
#include "gui/Platform.h"
#include <QIcon>
#include <QApplication>
EditNotesDialog::EditNotesDialog(QString notes, QString name, QWidget *parent)
: QDialog(parent), ui(new Ui::EditNotesDialog), m_instance_name(name),
m_instance_notes(notes)
{
MultiMCPlatform::fixWM_CLASS(this);
ui->setupUi(this);
ui->noteEditor->setText(notes);
setWindowTitle(tr("Edit notes of %1").arg(m_instance_name));
// connect(ui->closeButton, SIGNAL(clicked()), SLOT(close()));
}
EditNotesDialog::~EditNotesDialog()
{
delete ui;
}
QString EditNotesDialog::getText()
{
QString test = ui->noteEditor->toPlainText();
return test;
}

View File

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>EditNotesDialog</class>
<widget class="QDialog" name="EditNotesDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>459</width>
<height>399</height>
</rect>
</property>
<property name="windowTitle">
<string>Edit Notes</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTextEdit" name="noteEditor">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="acceptRichText">
<bool>false</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextEditable|Qt::TextEditorInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>EditNotesDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>EditNotesDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

35
gui/pages/NotesPage.cpp Normal file
View File

@ -0,0 +1,35 @@
#include "NotesPage.h"
#include "ui_NotesPage.h"
QString NotesPage::displayName()
{
return tr("Notes");
}
QIcon NotesPage::icon()
{
return QIcon::fromTheme("news");
}
QString NotesPage::id()
{
return "notes";
}
NotesPage::NotesPage(BaseInstance *inst, QWidget *parent)
: QWidget(parent), ui(new Ui::NotesPage), m_inst(inst)
{
ui->setupUi(this);
ui->noteEditor->setText(m_inst->notes());
}
NotesPage::~NotesPage()
{
delete ui;
}
bool NotesPage::apply()
{
m_inst->setNotes(ui->noteEditor->toPlainText());
return true;
}

View File

@ -1,4 +1,4 @@
/* Copyright 2013 MultiMC Contributors
/* Copyright 2014 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -14,25 +14,32 @@
*/
#pragma once
#include <QWidget>
#include <QDialog>
#include <logic/BaseInstance.h>
#include <logic/net/NetJob.h>
#include "BasePage.h"
class EnabledItemFilter;
namespace Ui
{
class EditNotesDialog;
class NotesPage;
}
class EditNotesDialog : public QDialog
class NotesPage : public QWidget, public BasePage
{
Q_OBJECT
public:
explicit EditNotesDialog(QString notes, QString name, QWidget *parent = 0);
~EditNotesDialog();
QString getText();
explicit NotesPage(BaseInstance *inst, QWidget *parent = 0);
virtual ~NotesPage();
virtual QString displayName() override;
virtual QIcon icon() override;
virtual QString id() override;
virtual bool apply();
virtual QString helpPage() override { return "Notes"; };
private:
Ui::EditNotesDialog *ui;
QString m_instance_name;
QString m_instance_notes;
Ui::NotesPage *ui;
BaseInstance *m_inst;
};

46
gui/pages/NotesPage.ui Normal file
View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>NotesPage</class>
<widget class="QWidget" name="NotesPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTextEdit" name="noteEditor">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="acceptRichText">
<bool>false</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextEditable|Qt::TextEditorInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -33,6 +33,7 @@
#include "gui/pages/LegacyJarModPage.h"
#include <gui/pages/TexturePackPage.h>
#include <gui/pages/InstanceSettingsPage.h>
#include <gui/pages/NotesPage.h>
LegacyInstance::LegacyInstance(const QString &rootDir, SettingsObject *settings,
QObject *parent)
@ -55,6 +56,7 @@ QList<BasePage *> LegacyInstance::getPages()
values.append(new ModFolderPage(coreModList(), "coremods", "plugin-green", tr("Core mods"),
"Core-mods"));
values.append(new TexturePackPage(this));
values.append(new NotesPage(this));
values.append(new InstanceSettingsPage(&settings()));
return values;
}

View File

@ -35,6 +35,7 @@
#include <gui/pages/ResourcePackPage.h>
#include <gui/pages/TexturePackPage.h>
#include <gui/pages/InstanceSettingsPage.h>
#include <gui/pages/NotesPage.h>
OneSixInstance::OneSixInstance(const QString &rootDir, SettingsObject *settings,
QObject *parent)
@ -67,6 +68,7 @@ QList<BasePage *> OneSixInstance::getPages()
"Core-mods"));
values.append(new ResourcePackPage(this));
values.append(new TexturePackPage(this));
values.append(new NotesPage(this));
values.append(new InstanceSettingsPage(&settings()));
return values;
}