+
-
-
-
- Qt::ScrollBarAlwaysOn
-
-
- Qt::ScrollBarAlwaysOff
-
-
-
- -
-
+
-
-
-
- &Add
+
+
+ Qt::ScrollBarAlwaysOn
+
+
+ Qt::ScrollBarAlwaysOff
-
-
-
- &Remove
-
-
-
- -
-
-
- MCForge
-
-
-
- -
-
-
- Website
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- Move &Up
-
-
-
- -
-
-
- Move &Down
-
-
+
+
-
+
+
+ &Add
+
+
+
+ -
+
+
+ &Remove
+
+
+
+ -
+
+
+ MCForge
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Move &Up
+
+
+
+ -
+
+
+ Move &Down
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
Core Mods
-
+
-
-
-
- QAbstractItemView::DropOnly
-
-
-
- -
-
+
-
-
-
- &Add
+
+
+ QAbstractItemView::DropOnly
-
-
-
- &Remove
-
-
-
- -
-
-
- Website
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- &View Folder
-
-
+
+
-
+
+
+ &Add
+
+
+
+ -
+
+
+ &Remove
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ &View Folder
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
Loader Mods
-
+
-
-
-
- true
-
-
- QAbstractItemView::DropOnly
-
-
-
- -
-
+
-
-
-
- &Add
+
+
+ true
+
+
+ QAbstractItemView::DropOnly
-
-
-
- &Remove
-
-
-
- -
-
-
- Website
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- &View Folder
-
-
+
+
-
+
+
+ &Add
+
+
+
+ -
+
+
+ &Remove
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ &View Folder
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
@@ -291,6 +312,12 @@
QTreeView
+
+ MCModInfoFrame
+ QFrame
+
+ 1
+
diff --git a/gui/MCModInfoFrame.cpp b/gui/MCModInfoFrame.cpp
new file mode 100644
index 00000000..70cfd46a
--- /dev/null
+++ b/gui/MCModInfoFrame.cpp
@@ -0,0 +1,92 @@
+/* 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 "MCModInfoFrame.h"
+#include "ui_MCModInfoFrame.h"
+
+void handleModInfoUpdate(Mod &m, MCModInfoFrame *frame)
+{
+ if(m.type() == m.MOD_FOLDER)
+ {
+ frame->setName("Select a mod to view information...
");
+ frame->setDescription("Mod description
");
+ frame->setAuthors("Mod authors
");
+ frame->setCredits("Mod credits
");
+ frame->setWebsite("Mod website
");
+
+ return;
+ }
+
+ QString missing = "Missing from mcmod.info
";
+
+ QString name = m.name();
+ if(name.isEmpty()) name = missing;
+ QString description = m.description();
+ if(description.isEmpty()) description = missing;
+ QString authors = m.authors();
+ if(authors.isEmpty()) authors = missing;
+ QString credits = m.credits();
+ if(credits.isEmpty()) credits = missing;
+ QString website = m.homeurl();
+ if(website.isEmpty()) website = missing;
+ else website = "" + website + "";
+
+ frame->setName("" + name + "
");
+ frame->setDescription(description);
+ frame->setAuthors(authors);
+ frame->setCredits(credits);
+ frame->setWebsite(website);
+}
+
+MCModInfoFrame::MCModInfoFrame(QWidget *parent) :
+ QFrame(parent),
+ ui(new Ui::MCModInfoFrame)
+{
+ ui->setupUi(this);
+}
+
+MCModInfoFrame::~MCModInfoFrame()
+{
+ delete ui;
+}
+
+void MCModInfoFrame::setName(QString name)
+{
+ ui->label_Name->setText(name);
+ ui->label_Name->setToolTip(name);
+}
+
+void MCModInfoFrame::setDescription(QString description)
+{
+ ui->label_Description->setText(description);
+ ui->label_Description->setToolTip(description);
+}
+
+void MCModInfoFrame::setAuthors(QString authors)
+{
+ ui->label_Authors->setText(authors);
+ ui->label_Authors->setToolTip(authors);
+}
+
+void MCModInfoFrame::setCredits(QString credits)
+{
+ ui->label_Credits->setText(credits);
+ ui->label_Credits->setToolTip(credits);
+}
+
+void MCModInfoFrame::setWebsite(QString website)
+{
+ ui->label_Website->setText(website);
+}
diff --git a/gui/MCModInfoFrame.h b/gui/MCModInfoFrame.h
new file mode 100644
index 00000000..516fc5ed
--- /dev/null
+++ b/gui/MCModInfoFrame.h
@@ -0,0 +1,44 @@
+/* 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.
+ */
+
+#pragma once
+
+#include
+#include "logic/Mod.h"
+
+namespace Ui {
+class MCModInfoFrame;
+}
+
+class MCModInfoFrame : public QFrame
+{
+ Q_OBJECT
+
+public:
+ explicit MCModInfoFrame(QWidget *parent = 0);
+ ~MCModInfoFrame();
+
+ void setName(QString name);
+ void setDescription(QString description);
+ void setAuthors(QString authors);
+ void setCredits(QString credits);
+ void setWebsite(QString website);
+
+
+private:
+ Ui::MCModInfoFrame *ui;
+};
+
+void handleModInfoUpdate(Mod &m, MCModInfoFrame *frame);
diff --git a/gui/MCModInfoFrame.ui b/gui/MCModInfoFrame.ui
new file mode 100644
index 00000000..73b93a2e
--- /dev/null
+++ b/gui/MCModInfoFrame.ui
@@ -0,0 +1,261 @@
+
+
+ MCModInfoFrame
+
+
+
+ 0
+ 0
+ 571
+ 55
+
+
+
+ Frame
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 250
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 9
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 250
+ 0
+
+
+
+
+ 16777215
+ 92
+
+
+
+ <html><head/><body><p><span style=" font-size:9pt; font-weight:600; font-style:italic;">Select a mod to view information...</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 250
+ 0
+
+
+
+
+ 16777215
+ 92
+
+
+
+ <html><head/><body><p><span style=" font-style:italic;">Mod description</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+
+ -
+
+
+ QLayout::SetDefaultConstraint
+
+
+ QFormLayout::AllNonFixedFieldsGrow
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
-
+
+
+ Authors:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+
+ -
+
+
+
+ 200
+ 0
+
+
+
+
+ 16777215
+ 92
+
+
+
+ <html><head/><body><p><span style=" font-style:italic; color:#4a4a4a;">Mod authors</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+ -
+
+
+ Website:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+
+ -
+
+
+
+ 200
+ 0
+
+
+
+
+ 16777215
+ 92
+
+
+
+ <html><head/><body><p><span style=" font-style:italic; color:#4a4a4a;">Mod website</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+ true
+
+
+
+ -
+
+
+
+ 200
+ 0
+
+
+
+
+ 16777215
+ 92
+
+
+
+ <html><head/><body><p><span style=" font-style:italic; color:#4a4a4a;">Mod credits</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+ -
+
+
+ Credits:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+
+
+
+
+
+
+
+
diff --git a/gui/ModListView.h b/gui/ModListView.h
index a9408fe7..69a26755 100644
--- a/gui/ModListView.h
+++ b/gui/ModListView.h
@@ -9,4 +9,5 @@ class ModListView: public QTreeView
public:
explicit ModListView ( QWidget* parent = 0 );
virtual void setModel ( QAbstractItemModel* model );
-};
\ No newline at end of file
+
+};
diff --git a/gui/OneSixModEditDialog.cpp b/gui/OneSixModEditDialog.cpp
index 788a61d0..9724cec5 100644
--- a/gui/OneSixModEditDialog.cpp
+++ b/gui/OneSixModEditDialog.cpp
@@ -298,12 +298,15 @@ void OneSixModEditDialog::on_viewResPackBtn_clicked()
openDirInDefaultProgram(m_inst->resourcePacksDir(), true);
}
-void OneSixModEditDialog::on_loaderWebsite_clicked()
+void OneSixModEditDialog::on_loaderModTreeView_pressed(const QModelIndex &index)
{
int first, last;
auto list = ui->loaderModTreeView->selectionModel()->selectedRows();
if (!lastfirst(list, first, last))
return;
- showWebsiteForMod(this, m_mods->operator[](first));
+
+ Mod &m = m_mods->operator[](first);
+
+ handleModInfoUpdate(m, ui->frame);
}
diff --git a/gui/OneSixModEditDialog.h b/gui/OneSixModEditDialog.h
index ce4da4fe..03ebf7a3 100644
--- a/gui/OneSixModEditDialog.h
+++ b/gui/OneSixModEditDialog.h
@@ -44,9 +44,11 @@ private slots:
void on_forgeBtn_clicked();
void on_customizeBtn_clicked();
void on_revertBtn_clicked();
- void on_loaderWebsite_clicked();
void updateVersionControls();
void disableVersionControls();
+
+ void on_loaderModTreeView_pressed(const QModelIndex &index);
+
protected:
bool eventFilter(QObject *obj, QEvent *ev);
bool loaderListFilter( QKeyEvent* ev );
diff --git a/gui/OneSixModEditDialog.ui b/gui/OneSixModEditDialog.ui
index b97d4304..675a6faa 100644
--- a/gui/OneSixModEditDialog.ui
+++ b/gui/OneSixModEditDialog.ui
@@ -26,7 +26,7 @@
- 0
+ 1
@@ -157,62 +157,79 @@
Loader Mods
-
+
-
-
-
- true
-
-
- QAbstractItemView::DropOnly
-
-
-
- -
-
+
-
-
-
- &Add
-
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ true
+
+
+ QAbstractItemView::DropOnly
+
+
+
+
-
-
-
- &Remove
-
-
-
- -
-
-
- Website
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- &View Folder
-
-
+
+
-
+
+
+ &Add
+
+
+
+ -
+
+
+ &Remove
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ &View Folder
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
@@ -290,6 +307,12 @@
QTreeView
+
+ MCModInfoFrame
+ QFrame
+
+ 1
+
diff --git a/logic/Mod.cpp b/logic/Mod.cpp
index 825e663f..c45e3ad2 100644
--- a/logic/Mod.cpp
+++ b/logic/Mod.cpp
@@ -119,6 +119,18 @@ void Mod::ReadMCModInfo(QByteArray contents)
m_name = firstObj.value("name").toString();
m_version = firstObj.value("version").toString();
m_homeurl = firstObj.value("url").toString();
+ m_description = firstObj.value("description").toString();
+ QJsonArray authors = firstObj.value("authors").toArray();
+ if(authors.size() == 0) m_authors = "";
+ else if(authors.size() >= 1)
+ {
+ m_authors = authors.at(0).toString();
+ for(int i = 1; i < authors.size(); i++)
+ {
+ m_authors += ", " + authors.at(i).toString();
+ }
+ }
+ m_credits = firstObj.value("credits").toString();
return;
}
;
diff --git a/logic/Mod.h b/logic/Mod.h
index 9831fdc0..f3aaf18b 100644
--- a/logic/Mod.h
+++ b/logic/Mod.h
@@ -63,6 +63,21 @@ public:
return m_homeurl;
}
+ QString description() const
+ {
+ return m_description;
+ }
+
+ QString authors() const
+ {
+ return m_authors;
+ }
+
+ QString credits() const
+ {
+ return m_credits;
+ }
+
// delete all the files of this mod
bool destroy();
// replace this mod with a copy of the other
@@ -99,6 +114,9 @@ protected:
QString m_version;
QString m_mcversion;
QString m_homeurl;
+ QString m_description;
+ QString m_authors;
+ QString m_credits;
ModType m_type;
};