summaryrefslogtreecommitdiffstats
path: root/gui
diff options
context:
space:
mode:
authorrobotbrain <robotbrainify@gmail.com>2014-02-23 16:14:24 -0500
committerrobotbrain <robotbrainify@gmail.com>2014-02-23 16:14:24 -0500
commit4a77524b059c12165e20b38de6c0d4ed08e56419 (patch)
tree72212e305886d4cf37a387bb816b3397a0e56e31 /gui
parent5cf599673db88b39100ffca78e10bbe5e10200d7 (diff)
downloadMultiMC-4a77524b059c12165e20b38de6c0d4ed08e56419.tar
MultiMC-4a77524b059c12165e20b38de6c0d4ed08e56419.tar.gz
MultiMC-4a77524b059c12165e20b38de6c0d4ed08e56419.tar.lz
MultiMC-4a77524b059c12165e20b38de6c0d4ed08e56419.tar.xz
MultiMC-4a77524b059c12165e20b38de6c0d4ed08e56419.zip
Initial stuff. It doesnt work.
Diffstat (limited to 'gui')
-rw-r--r--gui/MainWindow.cpp71
-rw-r--r--gui/MainWindow.h14
-rw-r--r--gui/MainWindow.ui13
-rw-r--r--gui/dialogs/ScreenshotDialog.cpp28
-rw-r--r--gui/dialogs/ScreenshotDialog.h29
-rw-r--r--gui/dialogs/ScreenshotDialog.ui93
6 files changed, 240 insertions, 8 deletions
diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp
index 29f7c8e8..5a22f678 100644
--- a/gui/MainWindow.cpp
+++ b/gui/MainWindow.cpp
@@ -43,7 +43,6 @@
#include "gui/Platform.h"
-
#include "gui/widgets/LabeledToolButton.h"
#include "gui/dialogs/SettingsDialog.h"
@@ -61,6 +60,7 @@
#include "gui/dialogs/AccountSelectDialog.h"
#include "gui/dialogs/UpdateDialog.h"
#include "gui/dialogs/EditAccountDialog.h"
+#include "gui/dialogs/ScreenshotDialog.h"
#include "gui/ConsoleWindow.h"
@@ -80,6 +80,8 @@
#include "logic/status/StatusChecker.h"
#include "logic/net/URLConstants.h"
+#include "logic/net/NetJob.h"
+#include "logic/net/ScreenshotUploader.h"
#include "logic/BaseInstance.h"
#include "logic/InstanceFactory.h"
@@ -143,7 +145,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
{
view = new GroupView(ui->centralWidget);
-
view->setSelectionMode(QAbstractItemView::SingleSelection);
// view->setCategoryDrawer(drawer);
// view->setCollapsibleBlocks(true);
@@ -1499,3 +1500,69 @@ void MainWindow::checkSetDefaultJava()
MMC->settings()->set("JavaPath", QString("java"));
}
}
+
+void MainWindow::on_actionScreenshots_triggered()
+{
+ if (!m_selectedInstance)
+ return;
+ ScreenshotList *list = new ScreenshotList(m_selectedInstance);
+ Task *task = list->load();
+ ProgressDialog prog(this);
+ prog.exec(task);
+ if (!task->successful())
+ {
+ CustomMessageBox::selectable(this, tr("Failed to load screenshots!"),
+ task->failReason(), QMessageBox::Warning)->exec();
+ return;
+ }
+ ScreenshotDialog dialog(list, this);
+ if (dialog.exec() == QDialog::Accepted)
+ {
+ QList<ScreenShot *> screenshots = dialog.selected();
+ if (screenshots.size() == 0)
+ return;
+ NetJob *job = new NetJob("Screenshot Upload");
+ for (ScreenShot *shot : screenshots)
+ job->addNetAction(ScreenShotUpload::make(shot));
+ ProgressDialog prog2(this);
+ prog2.exec(job);
+ connect(job, &NetJob::failed, [this]
+ {
+ CustomMessageBox::selectable(this, tr("Failed to upload screenshots!"),
+ tr("Unknown error"), QMessageBox::Warning)->exec();
+ });
+ connect(job, &NetJob::succeeded, [this, screenshots]
+ { screenshotsUploaded(screenshots); });
+ }
+}
+
+void MainWindow::screenshotsUploaded(QList<ScreenShot *> screenshots)
+{
+ NetJob *job2 = new NetJob("Screenshot Data");
+ for (ScreenShot *shot : screenshots)
+ {
+ job2->addNetAction(ScreenShotGet::make(shot));
+ }
+ ProgressDialog prog3(this);
+ prog3.exec(job2);
+ connect(job2, &NetJob::failed, [this]
+ {
+ CustomMessageBox::selectable(this, tr("Failed to upload screenshots!"),
+ tr("Unknown error"), QMessageBox::Warning)->exec();
+ });
+ connect(job2, &NetJob::succeeded, [this, screenshots]
+ { screenShotsGotten(screenshots); });
+}
+
+void MainWindow::screenShotsGotten(QList<ScreenShot *> screenshots)
+{
+
+ QStringList urls;
+ for (ScreenShot *shot : screenshots)
+ {
+ urls << QString("<a href=\"" + shot->url + "\">Image %s</a>")
+ .arg(QString::number(shot->imgurIndex));
+ }
+ CustomMessageBox::selectable(this, tr("Done uploading!"), urls.join("\n"),
+ QMessageBox::Information)->exec();
+}
diff --git a/gui/MainWindow.h b/gui/MainWindow.h
index 4d9e165d..b57afcf5 100644
--- a/gui/MainWindow.h
+++ b/gui/MainWindow.h
@@ -138,7 +138,9 @@ slots:
// called when an icon is changed in the icon model.
void iconUpdated(QString);
- void showInstanceContextMenu(const QPoint&);
+ void showInstanceContextMenu(const QPoint &);
+
+ void on_actionScreenshots_triggered();
public
slots:
@@ -167,11 +169,15 @@ slots:
void updateStatusFailedUI();
void reloadStatus();
-
+
+ void screenshotsUploaded(QList<class ScreenShot*> screenshots);
+
+ void screenShotsGotten(QList<class ScreenShot*> screenshots);
+
/*!
* Runs the DownloadUpdateTask and installs updates.
*/
- void downloadUpdates(QString repo, int versionId, bool installOnExit=false);
+ void downloadUpdates(QString repo, int versionId, bool installOnExit = false);
protected:
bool eventFilter(QObject *obj, QEvent *ev);
@@ -188,7 +194,7 @@ private:
ConsoleWindow *console;
LabeledToolButton *renameButton;
QToolButton *changeIconButton;
- QToolButton* newsLabel;
+ QToolButton *newsLabel;
BaseInstance *m_selectedInstance;
QString m_currentInstIcon;
diff --git a/gui/MainWindow.ui b/gui/MainWindow.ui
index 8cf26d18..67625ac8 100644
--- a/gui/MainWindow.ui
+++ b/gui/MainWindow.ui
@@ -112,6 +112,8 @@
<addaction name="actionEditInstNotes"/>
<addaction name="actionChangeInstGroup"/>
<addaction name="separator"/>
+ <addaction name="actionScreenshots"/>
+ <addaction name="separator"/>
<addaction name="actionInstanceSettings"/>
<addaction name="actionChangeInstMCVersion"/>
<addaction name="actionChangeInstLWJGLVersion"/>
@@ -528,12 +530,19 @@
<string>Launch the selected instance.</string>
</property>
</action>
+ <action name="actionScreenshots">
+ <property name="text">
+ <string>Upload Screenshots</string>
+ </property>
+ <property name="toolTip">
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;View and upload screenshots for this instance&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ </action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
- <include location="../resources/instances/instances.qrc"/>
<include location="../resources/multimc/multimc.qrc"/>
- <include location="../resources/backgrounds/backgrounds.qrc"/>
+ <include location="../resources/instances/instances.qrc"/>
</resources>
<connections/>
</ui>
diff --git a/gui/dialogs/ScreenshotDialog.cpp b/gui/dialogs/ScreenshotDialog.cpp
new file mode 100644
index 00000000..662c9e84
--- /dev/null
+++ b/gui/dialogs/ScreenshotDialog.cpp
@@ -0,0 +1,28 @@
+#include "ScreenshotDialog.h"
+#include "ui_ScreenshotDialog.h"
+#include "QModelIndex"
+
+ScreenshotDialog::ScreenshotDialog(ScreenshotList *list, QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::ScreenshotDialog),
+ m_list(list)
+{
+ ui->setupUi(this);
+ ui->listView->setModel(m_list);
+}
+
+ScreenshotDialog::~ScreenshotDialog()
+{
+ delete ui;
+}
+
+QList<ScreenShot*> ScreenshotDialog::selected()
+{
+ QList<ScreenShot*> list;
+ QList<ScreenShot*> first = m_list->screenshots();
+ for (QModelIndex index : ui->listView->selectionModel()->selectedIndexes())
+ {
+ list.append(first.at(index.row()));
+ }
+ return list;
+}
diff --git a/gui/dialogs/ScreenshotDialog.h b/gui/dialogs/ScreenshotDialog.h
new file mode 100644
index 00000000..d3f629e7
--- /dev/null
+++ b/gui/dialogs/ScreenshotDialog.h
@@ -0,0 +1,29 @@
+#pragma once
+
+#include <QDialog>
+#include "logic/lists/ScreenshotList.h"
+
+class BaseInstance;
+
+namespace Ui
+{
+class ScreenshotDialog;
+}
+
+class ScreenshotDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit ScreenshotDialog(ScreenshotList *list, QWidget *parent = 0);
+ ~ScreenshotDialog();
+
+ QList<ScreenShot *> selected();
+
+private
+slots:
+
+private:
+ Ui::ScreenshotDialog *ui;
+ ScreenshotList *m_list;
+};
diff --git a/gui/dialogs/ScreenshotDialog.ui b/gui/dialogs/ScreenshotDialog.ui
new file mode 100644
index 00000000..c912dffe
--- /dev/null
+++ b/gui/dialogs/ScreenshotDialog.ui
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ScreenshotDialog</class>
+ <widget class="QDialog" name="ScreenshotDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>470</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Dialog</string>
+ </property>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>260</y>
+ <width>441</width>
+ <height>31</height>
+ </rect>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ <widget class="QListView" name="listView">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>439</width>
+ <height>241</height>
+ </rect>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::MultiSelection</enum>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>480</width>
+ <height>360</height>
+ </size>
+ </property>
+ <property name="flow">
+ <enum>QListView::LeftToRight</enum>
+ </property>
+ <property name="isWrapping" stdset="0">
+ <bool>true</bool>
+ </property>
+ <property name="viewMode">
+ <enum>QListView::ListMode</enum>
+ </property>
+ </widget>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>ScreenshotDialog</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>ScreenshotDialog</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>