summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-23 03:03:41 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-07-02 10:10:18 -0400
commitcbdc4cc3284f13477bfbf292d15c4a5742627091 (patch)
tree7f50bb71db03fed7a57df70bc217a3ffd63d597a /src
parent8d1c121f648f2f6a8e0a5e2ad76cd245e318290d (diff)
split notes tab
added new HTMLEditor that triggers an editingFinished() on focus our, used by notes tab
Diffstat (limited to 'src')
-rw-r--r--src/modinfodialog.cpp14
-rw-r--r--src/modinfodialog.ui17
-rw-r--r--src/modinfodialognexus.cpp2
-rw-r--r--src/modinfodialogtab.cpp39
-rw-r--r--src/modinfodialogtab.h16
-rw-r--r--src/texteditor.cpp10
-rw-r--r--src/texteditor.h17
7 files changed, 94 insertions, 21 deletions
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 30110d14..b78f4515 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -19,7 +19,6 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "modinfodialog.h"
#include "ui_modinfodialog.h"
-#include "descriptionpage.h"
#include "mainwindow.h"
#include "modidlineedit.h"
@@ -173,9 +172,6 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo
m_RootPath = modInfo->absolutePath();
- ui->commentsEdit->setText(modInfo->comments());
- ui->notesEdit->setText(modInfo->notes());
-
//TODO: No easy way to delegate links
//ui->descriptionView->page()->acceptNavigationRequest(QWebEnginePage::DelegateAllLinks);
@@ -238,14 +234,6 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo
ModInfoDialog::~ModInfoDialog()
{
- m_ModInfo->setComments(ui->commentsEdit->text());
-
- //Avoid saving html stump if notes field is empty.
- if (ui->notesEdit->toPlainText().isEmpty())
- m_ModInfo->setNotes(ui->notesEdit->toPlainText());
- else
- m_ModInfo->setNotes(ui->notesEdit->toHtml());
-
delete ui;
}
@@ -264,7 +252,7 @@ std::vector<std::unique_ptr<ModInfoDialogTab>> ModInfoDialog::createTabs()
{
return createTabsImpl<
TextFilesTab, IniFilesTab, ImagesTab, ESPsTab,
- ConflictsTab, CategoriesTab, NexusTab>(
+ ConflictsTab, CategoriesTab, NexusTab, NotesTab>(
*m_OrganizerCore, *m_PluginContainer, this, ui);
}
diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui
index 29a7400f..360ecc79 100644
--- a/src/modinfodialog.ui
+++ b/src/modinfodialog.ui
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>790</width>
+ <width>735</width>
<height>534</height>
</rect>
</property>
@@ -20,7 +20,7 @@
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
- <number>0</number>
+ <number>7</number>
</property>
<property name="movable">
<bool>true</bool>
@@ -180,7 +180,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>741</width>
+ <width>686</width>
<height>436</height>
</rect>
</property>
@@ -859,7 +859,7 @@ text-align: left;</string>
</item>
</layout>
</widget>
- <widget class="QWidget" name="tabNexus1">
+ <widget class="QWidget" name="tabNexus">
<attribute name="icon">
<iconset resource="resources.qrc">
<normaloff>:/MO/gui/resources/internet-web-browser.png</normaloff>:/MO/gui/resources/internet-web-browser.png</iconset>
@@ -963,7 +963,7 @@ p, li { white-space: pre-wrap; }
</widget>
</item>
<item>
- <widget class="QLabel" name="versionLabel1">
+ <widget class="QLabel" name="versionLabel">
<property name="whatsThis">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
@@ -1071,7 +1071,7 @@ p, li { white-space: pre-wrap; }
</widget>
</item>
<item>
- <widget class="QTextEdit" name="notesEdit">
+ <widget class="HTMLEditor" name="notesEdit">
<property name="toolTip">
<string>Enter notes about the mod here. These can be viewed in the mod list by hovering over the notes column or the flags column.</string>
</property>
@@ -1210,6 +1210,11 @@ p, li { white-space: pre-wrap; }
<extends>QPlainTextEdit</extends>
<header>texteditor.h</header>
</customwidget>
+ <customwidget>
+ <class>HTMLEditor</class>
+ <extends>QTextEdit</extends>
+ <header>texteditor.h</header>
+ </customwidget>
</customwidgets>
<resources>
<include location="resources.qrc"/>
diff --git a/src/modinfodialognexus.cpp b/src/modinfodialognexus.cpp
index 753d43de..55b55439 100644
--- a/src/modinfodialognexus.cpp
+++ b/src/modinfodialognexus.cpp
@@ -248,8 +248,6 @@ void NexusTab::refreshData(int modID)
} else {
onModChanged();
}
-
- //MessageDialog::showMessage(tr("Info requested, please wait"), this);
}
bool NexusTab::tryRefreshData(int modID)
diff --git a/src/modinfodialogtab.cpp b/src/modinfodialogtab.cpp
index ae0de5e8..b59f4dcc 100644
--- a/src/modinfodialogtab.cpp
+++ b/src/modinfodialogtab.cpp
@@ -1,4 +1,6 @@
#include "modinfodialogtab.h"
+#include "ui_modinfodialog.h"
+#include "texteditor.h"
ModInfoDialogTab::ModInfoDialogTab(
OrganizerCore& oc, PluginContainer& plugin,
@@ -73,3 +75,40 @@ void ModInfoDialogTab::emitModOpen(QString name)
{
emit modOpen(name);
}
+
+
+NotesTab::NotesTab(
+ OrganizerCore& oc, PluginContainer& plugin,
+ QWidget* parent, Ui::ModInfoDialog* ui)
+ : ModInfoDialogTab(oc, plugin, parent, ui)
+{
+ connect(ui->commentsEdit, &QLineEdit::editingFinished, [&]{ onComments(); });
+ connect(ui->notesEdit, &HTMLEditor::editingFinished, [&]{ onNotes(); });
+}
+
+void NotesTab::clear()
+{
+ ui->commentsEdit->clear();
+ ui->notesEdit->clear();
+}
+
+void NotesTab::update()
+{
+ ui->commentsEdit->setText(mod()->comments());
+ ui->notesEdit->setText(mod()->notes());
+}
+
+void NotesTab::onComments()
+{
+ mod()->setComments(ui->commentsEdit->text());
+}
+
+void NotesTab::onNotes()
+{
+ // Avoid saving html stub if notes field is empty.
+ if (ui->notesEdit->toPlainText().isEmpty()) {
+ mod()->setNotes({});
+ } else {
+ mod()->setNotes(ui->notesEdit->toHtml());
+ }
+}
diff --git a/src/modinfodialogtab.h b/src/modinfodialogtab.h
index dd851b31..60371954 100644
--- a/src/modinfodialogtab.h
+++ b/src/modinfodialogtab.h
@@ -60,4 +60,20 @@ private:
MOShared::FilesOrigin* m_origin;
};
+
+class NotesTab : public ModInfoDialogTab
+{
+public:
+ NotesTab(
+ OrganizerCore& oc, PluginContainer& plugin,
+ QWidget* parent, Ui::ModInfoDialog* ui);
+
+ void clear() override;
+ void update() override;
+
+private:
+ void onComments();
+ void onNotes();
+};
+
#endif // MODINFODIALOGTAB_H
diff --git a/src/texteditor.cpp b/src/texteditor.cpp
index 99490b22..6c1685da 100644
--- a/src/texteditor.cpp
+++ b/src/texteditor.cpp
@@ -458,3 +458,13 @@ void TextEditorToolbar::onWordWrap(bool b)
{
m_wordWrap->setChecked(b);
}
+
+
+void HTMLEditor::focusOutEvent(QFocusEvent* e)
+{
+ if (document() && document()->isModified()) {
+ emit editingFinished();
+ }
+
+ QTextEdit::focusInEvent(e);
+}
diff --git a/src/texteditor.h b/src/texteditor.h
index eef5ca52..f3031731 100644
--- a/src/texteditor.h
+++ b/src/texteditor.h
@@ -137,4 +137,21 @@ private:
void paintLineNumbers(QPaintEvent* e, const QColor& textColor);
};
+
+class HTMLEditor : public QTextEdit
+{
+ Q_OBJECT;
+
+public:
+ using QTextEdit::QTextEdit;
+
+signals:
+ void editingFinished();
+
+protected:
+ void focusOutEvent(QFocusEvent* e);
+
+private:
+};
+
#endif // MO_TEXTEDITOR_H