diff options
author | robotbrain <robotbrainify@gmail.com> | 2014-02-23 16:14:24 -0500 |
---|---|---|
committer | robotbrain <robotbrainify@gmail.com> | 2014-02-23 16:14:24 -0500 |
commit | 4a77524b059c12165e20b38de6c0d4ed08e56419 (patch) | |
tree | 72212e305886d4cf37a387bb816b3397a0e56e31 /gui | |
parent | 5cf599673db88b39100ffca78e10bbe5e10200d7 (diff) | |
download | MultiMC-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.cpp | 71 | ||||
-rw-r--r-- | gui/MainWindow.h | 14 | ||||
-rw-r--r-- | gui/MainWindow.ui | 13 | ||||
-rw-r--r-- | gui/dialogs/ScreenshotDialog.cpp | 28 | ||||
-rw-r--r-- | gui/dialogs/ScreenshotDialog.h | 29 | ||||
-rw-r--r-- | gui/dialogs/ScreenshotDialog.ui | 93 |
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><html><head/><body><p>View and upload screenshots for this instance</p></body></html></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> |