diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/lwjglselectdialog.cpp | 68 | ||||
-rw-r--r-- | gui/lwjglselectdialog.h | 46 | ||||
-rw-r--r-- | gui/lwjglselectdialog.ui | 85 | ||||
-rw-r--r-- | gui/mainwindow.cpp | 21 | ||||
-rw-r--r-- | gui/mainwindow.h | 2 |
5 files changed, 222 insertions, 0 deletions
diff --git a/gui/lwjglselectdialog.cpp b/gui/lwjglselectdialog.cpp new file mode 100644 index 00000000..ded299cf --- /dev/null +++ b/gui/lwjglselectdialog.cpp @@ -0,0 +1,68 @@ +/* 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 "lwjglselectdialog.h" +#include "ui_lwjglselectdialog.h" + +#include "lwjglversionlist.h" + +LWJGLSelectDialog::LWJGLSelectDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::LWJGLSelectDialog) +{ + ui->setupUi(this); + ui->labelStatus->setVisible(false); + ui->lwjglListView->setModel(&LWJGLVersionList::get()); + + connect(&LWJGLVersionList::get(), SIGNAL(loadingStateUpdated(bool)), SLOT(loadingStateUpdated(bool))); + connect(&LWJGLVersionList::get(), SIGNAL(loadListFailed(QString)), SLOT(loadingFailed(QString))); + loadingStateUpdated(LWJGLVersionList::get().isLoading()); +} + +LWJGLSelectDialog::~LWJGLSelectDialog() +{ + delete ui; +} + +QString LWJGLSelectDialog::selectedVersion() const +{ + return LWJGLVersionList::get().data( + ui->lwjglListView->selectionModel()->currentIndex(), + Qt::DisplayRole).toString(); +} + +void LWJGLSelectDialog::on_refreshButton_clicked() +{ + if (!LWJGLVersionList::get().isLoading()) + LWJGLVersionList::get().loadList(); +} + +void LWJGLSelectDialog::loadingStateUpdated(bool loading) +{ + setEnabled(!loading); + if (loading) + { + ui->labelStatus->setText("Loading LWJGL version list..."); + ui->labelStatus->setStyleSheet("QLabel { color: black; }"); + } + ui->labelStatus->setVisible(loading); +} + +void LWJGLSelectDialog::loadingFailed(QString error) +{ + ui->labelStatus->setText(error); + ui->labelStatus->setStyleSheet("QLabel { color: red; }"); + ui->labelStatus->setVisible(true); +} diff --git a/gui/lwjglselectdialog.h b/gui/lwjglselectdialog.h new file mode 100644 index 00000000..1772904a --- /dev/null +++ b/gui/lwjglselectdialog.h @@ -0,0 +1,46 @@ +/* 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. + */ + +#ifndef LWJGLSELECTDIALOG_H +#define LWJGLSELECTDIALOG_H + +#include <QDialog> + +namespace Ui +{ +class LWJGLSelectDialog; +} + +class LWJGLSelectDialog : public QDialog +{ + Q_OBJECT + +public: + explicit LWJGLSelectDialog(QWidget *parent = 0); + ~LWJGLSelectDialog(); + + QString selectedVersion() const; + +private slots: + void on_refreshButton_clicked(); + + void loadingStateUpdated(bool loading); + void loadingFailed(QString error); + +private: + Ui::LWJGLSelectDialog *ui; +}; + +#endif // LWJGLSELECTDIALOG_H diff --git a/gui/lwjglselectdialog.ui b/gui/lwjglselectdialog.ui new file mode 100644 index 00000000..c715cc07 --- /dev/null +++ b/gui/lwjglselectdialog.ui @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>LWJGLSelectDialog</class> + <widget class="QDialog" name="LWJGLSelectDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Dialog</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="labelStatus"> + <property name="text"> + <string>Status label...</string> + </property> + </widget> + </item> + <item> + <widget class="QListView" name="lwjglListView"/> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QPushButton" name="refreshButton"> + <property name="text"> + <string>&Refresh</string> + </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> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>LWJGLSelectDialog</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>LWJGLSelectDialog</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> diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 47753b37..e60155c6 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -40,6 +40,7 @@ #include "gui/browserdialog.h" #include "gui/aboutdialog.h" #include "gui/versionselectdialog.h" +#include "gui/lwjglselectdialog.h" #include "gui/consolewindow.h" #include "kcategorizedview.h" @@ -59,6 +60,7 @@ #include "instancedelegate.h" #include "minecraftversionlist.h" +#include "lwjglversionlist.h" // Opens the given file in the default application. // TODO: Move this somewhere. @@ -140,6 +142,11 @@ MainWindow::MainWindow ( QWidget *parent ) : m_versionLoadTask = MinecraftVersionList::getMainList().getLoadTask(); startTask(m_versionLoadTask); } + + if (!LWJGLVersionList::get().isLoaded()) + { + LWJGLVersionList::get().loadList(); + } } MainWindow::~MainWindow() @@ -460,3 +467,17 @@ void MainWindow::on_actionChangeInstMCVersion_triggered() inst->setIntendedVersion(vselect->selectedVersion()->descriptor()); } } + +void MainWindow::on_actionChangeInstLWJGLVersion_triggered() +{ + Instance *inst = selectedInstance(); + + if (!inst) + return; + + LWJGLSelectDialog *lselect = new LWJGLSelectDialog(this); + if (lselect->exec()) + { + + } +} diff --git a/gui/mainwindow.h b/gui/mainwindow.h index 192cdbc4..a9a4d395 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -99,6 +99,8 @@ private slots: void taskStart(Task *task); void taskEnd(Task *task); + void on_actionChangeInstLWJGLVersion_triggered(); + public slots: void instanceActivated ( QModelIndex ); |