diff options
Diffstat (limited to 'gui/MainWindow.h')
-rw-r--r-- | gui/MainWindow.h | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/gui/MainWindow.h b/gui/MainWindow.h new file mode 100644 index 00000000..97aa0d9f --- /dev/null +++ b/gui/MainWindow.h @@ -0,0 +1,167 @@ +/* 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 <QMainWindow> + +#include "logic/lists/InstanceList.h" +#include "logic/net/LoginTask.h" +#include "logic/BaseInstance.h" + +class QToolButton; +class LabeledToolButton; +class QLabel; +class InstanceProxyModel; +class KCategorizedView; +class KCategoryDrawer; +class MinecraftProcess; +class ConsoleWindow; +class OneSixAssets; + +namespace Ui +{ +class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + + void closeEvent(QCloseEvent *event); + + // Browser Dialog + void openWebPage(QUrl url); + + void checkSetDefaultJava(); + +private +slots: + void onCatToggled(bool); + + void on_actionAbout_triggered(); + + void on_actionAddInstance_triggered(); + + void on_actionCopyInstance_triggered(); + + void on_actionChangeInstGroup_triggered(); + + void on_actionChangeInstIcon_triggered(); + + void on_actionViewInstanceFolder_triggered(); + + void on_actionConfig_Folder_triggered(); + + void on_actionViewSelectedInstFolder_triggered(); + + void on_actionRefresh_triggered(); + + void on_actionViewCentralModsFolder_triggered(); + + void on_actionCheckUpdate_triggered(); + + void on_actionSettings_triggered(); + + void on_actionReportBug_triggered(); + + void on_actionNews_triggered(); + + void on_mainToolBar_visibilityChanged(bool); + + // void on_instanceView_customContextMenuRequested(const QPoint &pos); + + void on_actionLaunchInstance_triggered(); + + void on_actionDeleteInstance_triggered(); + + void on_actionRenameInstance_triggered(); + + void on_actionMakeDesktopShortcut_triggered(); + + void on_actionChangeInstMCVersion_triggered(); + + void on_actionEditInstMods_triggered(); + + void on_actionEditInstNotes_triggered(); + + void doLogin(const QString &errorMsg = ""); + void doLogin(QString username, QString password); + void doAutoLogin(); + + void onLoginComplete(); + + void onGameUpdateComplete(); + void onGameUpdateError(QString error); + + void taskStart(); + void taskEnd(); + + void on_actionChangeInstLWJGLVersion_triggered(); + + void instanceEnded(BaseInstance *instance); + + void on_actionInstanceSettings_triggered(); + + void assetsIndexStarted(); + void assetsFilesStarted(); + void assetsFilesProgress(int, int, int); + void assetsFailed(); + void assetsFinished(); + +public +slots: + void instanceActivated(QModelIndex); + + void instanceChanged(const QModelIndex ¤t, const QModelIndex &previous); + + void selectionBad(); + + void startTask(Task *task); + + void launchInstance(BaseInstance *inst, LoginResponse response); + +protected: + bool eventFilter(QObject *obj, QEvent *ev); + void setCatBackground(bool enabled); + +private: + Ui::MainWindow *ui; + KCategoryDrawer *drawer; + KCategorizedView *view; + InstanceProxyModel *proxymodel; + MinecraftProcess *proc; + ConsoleWindow *console; + OneSixAssets *assets_downloader; + LabeledToolButton *renameButton; + QToolButton *changeIconButton; + + BaseInstance *m_selectedInstance; + + // A pointer to the instance we are actively doing stuff with. + // This is set when the user launches an instance and is used to refer to that + // instance throughout the launching process. + BaseInstance *m_activeInst; + LoginResponse m_activeLogin; + + Task *m_versionLoadTask; + + QLabel *m_statusLeft; + QLabel *m_statusRight; +}; |