Started working on task system and login system.
This commit is contained in:
		@@ -96,11 +96,15 @@ data/instancebase.cpp
 | 
			
		||||
data/instancemodel.cpp
 | 
			
		||||
data/stdinstance.cpp
 | 
			
		||||
data/version.cpp
 | 
			
		||||
data/userinfo.cpp
 | 
			
		||||
data/loginresponse.cpp
 | 
			
		||||
 | 
			
		||||
gui/mainwindow.cpp
 | 
			
		||||
gui/modeditwindow.cpp
 | 
			
		||||
gui/settingsdialog.cpp
 | 
			
		||||
gui/newinstancedialog.cpp
 | 
			
		||||
gui/logindialog.cpp
 | 
			
		||||
gui/taskdialog.cpp
 | 
			
		||||
 | 
			
		||||
util/pathutils.cpp
 | 
			
		||||
util/osutils.cpp
 | 
			
		||||
@@ -109,6 +113,7 @@ java/javautils.cpp
 | 
			
		||||
java/annotations.cpp
 | 
			
		||||
 | 
			
		||||
tasks/task.cpp
 | 
			
		||||
tasks/logintask.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
SET(MULTIMC_HEADERS
 | 
			
		||||
@@ -116,6 +121,8 @@ gui/mainwindow.h
 | 
			
		||||
gui/modeditwindow.h
 | 
			
		||||
gui/settingsdialog.h
 | 
			
		||||
gui/newinstancedialog.h
 | 
			
		||||
gui/logindialog.h
 | 
			
		||||
gui/taskdialog.h
 | 
			
		||||
 | 
			
		||||
data/appsettings.h
 | 
			
		||||
data/inifile.h
 | 
			
		||||
@@ -123,6 +130,8 @@ data/instancebase.h
 | 
			
		||||
data/instancemodel.h
 | 
			
		||||
data/stdinstance.h
 | 
			
		||||
data/version.h
 | 
			
		||||
data/userinfo.h
 | 
			
		||||
data/loginresponse.h
 | 
			
		||||
 | 
			
		||||
util/apputils.h
 | 
			
		||||
util/pathutils.h
 | 
			
		||||
@@ -139,6 +148,7 @@ java/javautils.h
 | 
			
		||||
java/membuffer.h
 | 
			
		||||
 | 
			
		||||
tasks/task.h
 | 
			
		||||
tasks/logintask.h
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
SET(MULTIMC5_UIS
 | 
			
		||||
@@ -146,6 +156,8 @@ gui/mainwindow.ui
 | 
			
		||||
gui/modeditwindow.ui
 | 
			
		||||
gui/settingsdialog.ui
 | 
			
		||||
gui/newinstancedialog.ui
 | 
			
		||||
gui/logindialog.ui
 | 
			
		||||
gui/taskdialog.ui
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
IF(WIN32)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										49
									
								
								data/loginresponse.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								data/loginresponse.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
/* 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 "loginresponse.h"
 | 
			
		||||
 | 
			
		||||
LoginResponse::LoginResponse(const QString& username, const QString& sessionID, QObject *parent) :
 | 
			
		||||
	QObject(parent)
 | 
			
		||||
{
 | 
			
		||||
	this->username = username;
 | 
			
		||||
	this->sessionID = sessionID;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
LoginResponse::LoginResponse(const LoginResponse &other)
 | 
			
		||||
{
 | 
			
		||||
	this->username = other.username;
 | 
			
		||||
	this->sessionID = other.sessionID;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString LoginResponse::getUsername() const
 | 
			
		||||
{
 | 
			
		||||
	return username;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoginResponse::setUsername(const QString& username)
 | 
			
		||||
{
 | 
			
		||||
	this->username = username;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString LoginResponse::getSessionID() const
 | 
			
		||||
{
 | 
			
		||||
	return sessionID;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoginResponse::setSessionID(const QString& sessionID)
 | 
			
		||||
{
 | 
			
		||||
	this->sessionID = sessionID;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										39
									
								
								data/loginresponse.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								data/loginresponse.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
/* 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 LOGINRESPONSE_H
 | 
			
		||||
#define LOGINRESPONSE_H
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
 | 
			
		||||
class LoginResponse : public QObject
 | 
			
		||||
{
 | 
			
		||||
	Q_OBJECT
 | 
			
		||||
public:
 | 
			
		||||
	explicit LoginResponse(const QString &username, const QString &sessionID, QObject *parent = 0);
 | 
			
		||||
	LoginResponse(const LoginResponse& other);
 | 
			
		||||
	
 | 
			
		||||
	QString getUsername() const;
 | 
			
		||||
	void setUsername(const QString& username);
 | 
			
		||||
	
 | 
			
		||||
	QString getSessionID() const;
 | 
			
		||||
	void setSessionID(const QString& sessionID);
 | 
			
		||||
	
 | 
			
		||||
private:
 | 
			
		||||
	QString username;
 | 
			
		||||
	QString sessionID;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // LOGINRESPONSE_H
 | 
			
		||||
							
								
								
									
										49
									
								
								data/userinfo.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								data/userinfo.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
/* 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 "userinfo.h"
 | 
			
		||||
 | 
			
		||||
UserInfo::UserInfo(const QString &username, const QString &password, QObject *parent) :
 | 
			
		||||
	QObject(parent)
 | 
			
		||||
{
 | 
			
		||||
	this->username = username;
 | 
			
		||||
	this->password = password;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
UserInfo::UserInfo(const UserInfo &other)
 | 
			
		||||
{
 | 
			
		||||
	this->username = other.username;
 | 
			
		||||
	this->password = other.password;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString UserInfo::getUsername() const
 | 
			
		||||
{
 | 
			
		||||
	return username;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UserInfo::setUsername(const QString &username)
 | 
			
		||||
{
 | 
			
		||||
	this->username = username;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString UserInfo::getPassword() const
 | 
			
		||||
{
 | 
			
		||||
	return password;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UserInfo::setPassword(const QString &password)
 | 
			
		||||
{
 | 
			
		||||
	this->password = password;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										39
									
								
								data/userinfo.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								data/userinfo.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
/* 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 USERINFO_H
 | 
			
		||||
#define USERINFO_H
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
 | 
			
		||||
class UserInfo : public QObject
 | 
			
		||||
{
 | 
			
		||||
	Q_OBJECT
 | 
			
		||||
public:
 | 
			
		||||
	explicit UserInfo(const QString& username, const QString& password, QObject *parent = 0);
 | 
			
		||||
	explicit UserInfo(const UserInfo& other);
 | 
			
		||||
	
 | 
			
		||||
	QString getUsername() const;
 | 
			
		||||
	void setUsername(const QString& username);
 | 
			
		||||
	
 | 
			
		||||
	QString getPassword() const;
 | 
			
		||||
	void setPassword(const QString& password);
 | 
			
		||||
	
 | 
			
		||||
protected:
 | 
			
		||||
	QString username;
 | 
			
		||||
	QString password;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // USERINFO_H
 | 
			
		||||
							
								
								
									
										51
									
								
								gui/logindialog.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								gui/logindialog.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
			
		||||
/* 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 "logindialog.h"
 | 
			
		||||
#include "ui_logindialog.h"
 | 
			
		||||
 | 
			
		||||
LoginDialog::LoginDialog(QWidget *parent, const QString& loginErrMsg) :
 | 
			
		||||
	QDialog(parent),
 | 
			
		||||
	ui(new Ui::LoginDialog)
 | 
			
		||||
{
 | 
			
		||||
	ui->setupUi(this);
 | 
			
		||||
	
 | 
			
		||||
	if (loginErrMsg.isEmpty())
 | 
			
		||||
		ui->loginErrorLabel->setVisible(false);
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		ui->loginErrorLabel->setVisible(true);
 | 
			
		||||
		ui->loginErrorLabel->setText(QString("<span style=\" color:#ff0000;\">%1</span>").
 | 
			
		||||
								   arg(loginErrMsg));
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	resize(minimumSizeHint());
 | 
			
		||||
	layout()->setSizeConstraint(QLayout::SetFixedSize);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
LoginDialog::~LoginDialog()
 | 
			
		||||
{
 | 
			
		||||
	delete ui;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString LoginDialog::getUsername() const
 | 
			
		||||
{
 | 
			
		||||
	return ui->usernameTextBox->text();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString LoginDialog::getPassword() const
 | 
			
		||||
{
 | 
			
		||||
	return ui->passwordTextBox->text();
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								gui/logindialog.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								gui/logindialog.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
/* 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 LOGINDIALOG_H
 | 
			
		||||
#define LOGINDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
namespace Ui {
 | 
			
		||||
class LoginDialog;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class LoginDialog : public QDialog
 | 
			
		||||
{
 | 
			
		||||
	Q_OBJECT
 | 
			
		||||
	
 | 
			
		||||
public:
 | 
			
		||||
	explicit LoginDialog(QWidget *parent = 0, const QString& loginErrMsg = "");
 | 
			
		||||
	~LoginDialog();
 | 
			
		||||
	
 | 
			
		||||
	QString getUsername() const;
 | 
			
		||||
	QString getPassword() const;
 | 
			
		||||
	
 | 
			
		||||
private:
 | 
			
		||||
	Ui::LoginDialog *ui;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // LOGINDIALOG_H
 | 
			
		||||
							
								
								
									
										146
									
								
								gui/logindialog.ui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								gui/logindialog.ui
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,146 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<ui version="4.0">
 | 
			
		||||
 <class>LoginDialog</class>
 | 
			
		||||
 <widget class="QDialog" name="LoginDialog">
 | 
			
		||||
  <property name="geometry">
 | 
			
		||||
   <rect>
 | 
			
		||||
    <x>0</x>
 | 
			
		||||
    <y>0</y>
 | 
			
		||||
    <width>365</width>
 | 
			
		||||
    <height>145</height>
 | 
			
		||||
   </rect>
 | 
			
		||||
  </property>
 | 
			
		||||
  <property name="windowTitle">
 | 
			
		||||
   <string>Login</string>
 | 
			
		||||
  </property>
 | 
			
		||||
  <layout class="QVBoxLayout" name="verticalLayout">
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QLabel" name="loginErrorLabel">
 | 
			
		||||
     <property name="text">
 | 
			
		||||
      <string><span style=" color:#ff0000;">Error</span></string>
 | 
			
		||||
     </property>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <layout class="QGridLayout" name="gridLayout">
 | 
			
		||||
     <item row="0" column="0">
 | 
			
		||||
      <widget class="QLabel" name="usernameLabel">
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>Username:</string>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item row="0" column="1">
 | 
			
		||||
      <widget class="QLineEdit" name="usernameTextBox">
 | 
			
		||||
       <property name="placeholderText">
 | 
			
		||||
        <string>Username</string>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item row="1" column="0">
 | 
			
		||||
      <widget class="QLabel" name="passwordLabel">
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>Password:</string>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item row="1" column="1">
 | 
			
		||||
      <widget class="QLineEdit" name="passwordTextBox">
 | 
			
		||||
       <property name="echoMode">
 | 
			
		||||
        <enum>QLineEdit::Password</enum>
 | 
			
		||||
       </property>
 | 
			
		||||
       <property name="placeholderText">
 | 
			
		||||
        <string>Password</string>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
    </layout>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <layout class="QHBoxLayout" name="checkboxLayout">
 | 
			
		||||
     <item>
 | 
			
		||||
      <widget class="QPushButton" name="forceUpdateButton">
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>&Force Update</string>
 | 
			
		||||
       </property>
 | 
			
		||||
       <property name="checkable">
 | 
			
		||||
        <bool>true</bool>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item>
 | 
			
		||||
      <widget class="QCheckBox" name="rememberUsernameCheckbox">
 | 
			
		||||
       <property name="sizePolicy">
 | 
			
		||||
        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
 | 
			
		||||
         <horstretch>1</horstretch>
 | 
			
		||||
         <verstretch>0</verstretch>
 | 
			
		||||
        </sizepolicy>
 | 
			
		||||
       </property>
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>&Remember Username?</string>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item>
 | 
			
		||||
      <widget class="QCheckBox" name="rememberPasswordCheckbox">
 | 
			
		||||
       <property name="sizePolicy">
 | 
			
		||||
        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
 | 
			
		||||
         <horstretch>1</horstretch>
 | 
			
		||||
         <verstretch>0</verstretch>
 | 
			
		||||
        </sizepolicy>
 | 
			
		||||
       </property>
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>R&emember Password?</string>
 | 
			
		||||
       </property>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
    </layout>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QDialogButtonBox" name="loginButtonBox">
 | 
			
		||||
     <property name="orientation">
 | 
			
		||||
      <enum>Qt::Horizontal</enum>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="standardButtons">
 | 
			
		||||
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
 | 
			
		||||
     </property>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </item>
 | 
			
		||||
  </layout>
 | 
			
		||||
 </widget>
 | 
			
		||||
 <resources/>
 | 
			
		||||
 <connections>
 | 
			
		||||
  <connection>
 | 
			
		||||
   <sender>loginButtonBox</sender>
 | 
			
		||||
   <signal>accepted()</signal>
 | 
			
		||||
   <receiver>LoginDialog</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>loginButtonBox</sender>
 | 
			
		||||
   <signal>rejected()</signal>
 | 
			
		||||
   <receiver>LoginDialog</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>
 | 
			
		||||
@@ -26,10 +26,14 @@
 | 
			
		||||
 | 
			
		||||
#include "gui/settingsdialog.h"
 | 
			
		||||
#include "gui/newinstancedialog.h"
 | 
			
		||||
#include "gui/logindialog.h"
 | 
			
		||||
#include "gui/taskdialog.h"
 | 
			
		||||
 | 
			
		||||
#include "data/appsettings.h"
 | 
			
		||||
#include "data/version.h"
 | 
			
		||||
 | 
			
		||||
#include "tasks/logintask.h"
 | 
			
		||||
 | 
			
		||||
MainWindow::MainWindow(QWidget *parent) :
 | 
			
		||||
	QMainWindow(parent),
 | 
			
		||||
	ui(new Ui::MainWindow)
 | 
			
		||||
@@ -121,3 +125,31 @@ void MainWindow::on_instanceView_customContextMenuRequested(const QPoint &pos)
 | 
			
		||||
	
 | 
			
		||||
	instContextMenu->exec(ui->instanceView->mapToGlobal(pos));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void MainWindow::on_actionLaunchInstance_triggered()
 | 
			
		||||
{
 | 
			
		||||
	doLogin();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::doLogin(const QString &errorMsg)
 | 
			
		||||
{
 | 
			
		||||
	LoginDialog* loginDlg = new LoginDialog(this, errorMsg);
 | 
			
		||||
	if (loginDlg->exec())
 | 
			
		||||
	{
 | 
			
		||||
		UserInfo uInfo(loginDlg->getUsername(), loginDlg->getPassword());
 | 
			
		||||
		
 | 
			
		||||
		TaskDialog* tDialog = new TaskDialog(this);
 | 
			
		||||
		LoginTask* loginTask = new LoginTask(uInfo, tDialog);
 | 
			
		||||
		connect(loginTask, SIGNAL(loginComplete(LoginResponse)),
 | 
			
		||||
				SLOT(onLoginComplete(LoginResponse)));
 | 
			
		||||
		connect(loginTask, SIGNAL(loginFailed(QString)),
 | 
			
		||||
				SLOT(doLogin(QString)));
 | 
			
		||||
		tDialog->exec(loginTask);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::onLoginComplete(LoginResponse response)
 | 
			
		||||
{
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,8 @@
 | 
			
		||||
 | 
			
		||||
#include <QMainWindow>
 | 
			
		||||
 | 
			
		||||
#include "../data/instancemodel.h"
 | 
			
		||||
#include "data/instancemodel.h"
 | 
			
		||||
#include "data/loginresponse.h"
 | 
			
		||||
 | 
			
		||||
namespace Ui
 | 
			
		||||
{
 | 
			
		||||
@@ -58,6 +59,14 @@ private slots:
 | 
			
		||||
	
 | 
			
		||||
	void on_instanceView_customContextMenuRequested(const QPoint &pos);
 | 
			
		||||
	
 | 
			
		||||
	void on_actionLaunchInstance_triggered();
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	void doLogin(const QString& errorMsg = "");
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	void onLoginComplete(LoginResponse response);
 | 
			
		||||
	
 | 
			
		||||
private:
 | 
			
		||||
	Ui::MainWindow *ui;
 | 
			
		||||
	
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										109
									
								
								gui/taskdialog.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								gui/taskdialog.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,109 @@
 | 
			
		||||
/* 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 "taskdialog.h"
 | 
			
		||||
#include "ui_taskdialog.h"
 | 
			
		||||
 | 
			
		||||
#include <QKeyEvent>
 | 
			
		||||
 | 
			
		||||
#include "tasks/task.h"
 | 
			
		||||
 | 
			
		||||
TaskDialog::TaskDialog(QWidget *parent) :
 | 
			
		||||
	QDialog(parent),
 | 
			
		||||
	ui(new Ui::TaskDialog)
 | 
			
		||||
{
 | 
			
		||||
	ui->setupUi(this);
 | 
			
		||||
	updateSize();
 | 
			
		||||
	
 | 
			
		||||
	changeProgress(0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TaskDialog::~TaskDialog()
 | 
			
		||||
{
 | 
			
		||||
	delete ui;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TaskDialog::updateSize()
 | 
			
		||||
{
 | 
			
		||||
	resize(QSize(480, minimumSizeHint().height()));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TaskDialog::exec(Task *task)
 | 
			
		||||
{
 | 
			
		||||
	this->task = task;
 | 
			
		||||
	
 | 
			
		||||
	// Connect signals.
 | 
			
		||||
	connect(task, SIGNAL(taskStarted(Task*)),
 | 
			
		||||
			this, SLOT(onTaskStarted(Task*)));
 | 
			
		||||
	connect(task, SIGNAL(taskEnded(Task*)),
 | 
			
		||||
			this, SLOT(onTaskEnded(Task*)));
 | 
			
		||||
	connect(task, SIGNAL(statusChanged(const QString&)),
 | 
			
		||||
			this, SLOT(changeStatus(const QString&)));
 | 
			
		||||
	connect(task, SIGNAL(progressChanged(int)),
 | 
			
		||||
			this, SLOT(changeProgress(int)));
 | 
			
		||||
	
 | 
			
		||||
	task->startTask();
 | 
			
		||||
	QDialog::exec();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Task* TaskDialog::getTask()
 | 
			
		||||
{
 | 
			
		||||
	return task;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TaskDialog::onTaskStarted(Task*)
 | 
			
		||||
{
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TaskDialog::onTaskEnded(Task*)
 | 
			
		||||
{
 | 
			
		||||
	close();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TaskDialog::changeStatus(const QString &status)
 | 
			
		||||
{
 | 
			
		||||
	ui->statusLabel->setText(status);
 | 
			
		||||
	updateSize();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TaskDialog::changeProgress(int progress)
 | 
			
		||||
{
 | 
			
		||||
	if (progress < 0)
 | 
			
		||||
		progress = 0;
 | 
			
		||||
	else if (progress > 100)
 | 
			
		||||
		progress = 100;
 | 
			
		||||
	
 | 
			
		||||
	ui->taskProgressBar->setValue(progress);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TaskDialog::keyPressEvent(QKeyEvent* e)
 | 
			
		||||
{
 | 
			
		||||
	if (e->key() == Qt::Key_Escape)
 | 
			
		||||
		return;
 | 
			
		||||
	QDialog::keyPressEvent(e);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TaskDialog::closeEvent(QCloseEvent* e)
 | 
			
		||||
{
 | 
			
		||||
	if (task && task->isRunning())
 | 
			
		||||
	{
 | 
			
		||||
		e->ignore();
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		QDialog::closeEvent(e);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										63
									
								
								gui/taskdialog.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								gui/taskdialog.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
			
		||||
/* 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 TASKDIALOG_H
 | 
			
		||||
#define TASKDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
class Task;
 | 
			
		||||
 | 
			
		||||
namespace Ui {
 | 
			
		||||
class TaskDialog;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class TaskDialog : public QDialog
 | 
			
		||||
{
 | 
			
		||||
	Q_OBJECT
 | 
			
		||||
	
 | 
			
		||||
public:
 | 
			
		||||
	explicit TaskDialog(QWidget *parent = 0);
 | 
			
		||||
	~TaskDialog();
 | 
			
		||||
	
 | 
			
		||||
	void updateSize();
 | 
			
		||||
	
 | 
			
		||||
	void exec(Task* task);
 | 
			
		||||
	
 | 
			
		||||
	Task* getTask();
 | 
			
		||||
	
 | 
			
		||||
public slots:
 | 
			
		||||
	void onTaskStarted(Task*);
 | 
			
		||||
	void onTaskEnded(Task*);
 | 
			
		||||
	
 | 
			
		||||
	void changeStatus(const QString& status);
 | 
			
		||||
	void changeProgress(int progress);
 | 
			
		||||
	
 | 
			
		||||
	void test() { qDebug("Lol"); }
 | 
			
		||||
	
 | 
			
		||||
signals:
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
protected:
 | 
			
		||||
	virtual void keyPressEvent(QKeyEvent* e);
 | 
			
		||||
	virtual void closeEvent(QCloseEvent* e);
 | 
			
		||||
	
 | 
			
		||||
private:
 | 
			
		||||
	Ui::TaskDialog *ui;
 | 
			
		||||
	
 | 
			
		||||
	Task* task;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // TASKDIALOG_H
 | 
			
		||||
							
								
								
									
										53
									
								
								gui/taskdialog.ui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								gui/taskdialog.ui
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<ui version="4.0">
 | 
			
		||||
 <class>TaskDialog</class>
 | 
			
		||||
 <widget class="QDialog" name="TaskDialog">
 | 
			
		||||
  <property name="geometry">
 | 
			
		||||
   <rect>
 | 
			
		||||
    <x>0</x>
 | 
			
		||||
    <y>0</y>
 | 
			
		||||
    <width>400</width>
 | 
			
		||||
    <height>58</height>
 | 
			
		||||
   </rect>
 | 
			
		||||
  </property>
 | 
			
		||||
  <property name="minimumSize">
 | 
			
		||||
   <size>
 | 
			
		||||
    <width>400</width>
 | 
			
		||||
    <height>0</height>
 | 
			
		||||
   </size>
 | 
			
		||||
  </property>
 | 
			
		||||
  <property name="maximumSize">
 | 
			
		||||
   <size>
 | 
			
		||||
    <width>600</width>
 | 
			
		||||
    <height>16777215</height>
 | 
			
		||||
   </size>
 | 
			
		||||
  </property>
 | 
			
		||||
  <property name="windowTitle">
 | 
			
		||||
   <string>Please wait...</string>
 | 
			
		||||
  </property>
 | 
			
		||||
  <layout class="QVBoxLayout" name="verticalLayout">
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QLabel" name="statusLabel">
 | 
			
		||||
     <property name="text">
 | 
			
		||||
      <string>Task Status...</string>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="wordWrap">
 | 
			
		||||
      <bool>true</bool>
 | 
			
		||||
     </property>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QProgressBar" name="taskProgressBar">
 | 
			
		||||
     <property name="value">
 | 
			
		||||
      <number>24</number>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="textVisible">
 | 
			
		||||
      <bool>false</bool>
 | 
			
		||||
     </property>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </item>
 | 
			
		||||
  </layout>
 | 
			
		||||
 </widget>
 | 
			
		||||
 <resources/>
 | 
			
		||||
 <connections/>
 | 
			
		||||
</ui>
 | 
			
		||||
							
								
								
									
										44
									
								
								tasks/logintask.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								tasks/logintask.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "logintask.h"
 | 
			
		||||
 | 
			
		||||
LoginTask::LoginTask(const UserInfo &uInfo, QObject *parent) :
 | 
			
		||||
	Task(parent), uInfo(uInfo)
 | 
			
		||||
{
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoginTask::executeTask()
 | 
			
		||||
{
 | 
			
		||||
	setStatus("Logging in...");
 | 
			
		||||
	
 | 
			
		||||
	// TODO: PLACEHOLDER
 | 
			
		||||
	for (int p = 0; p < 100; p++)
 | 
			
		||||
	{
 | 
			
		||||
		msleep(25);
 | 
			
		||||
		setProgress(p);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (uInfo.getUsername() == "test")
 | 
			
		||||
	{
 | 
			
		||||
		LoginResponse response("test", "Fake Session ID");
 | 
			
		||||
		emit loginComplete(response);
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		emit loginFailed("Testing");
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								tasks/logintask.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								tasks/logintask.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
/* 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 LOGINTASK_H
 | 
			
		||||
#define LOGINTASK_H
 | 
			
		||||
 | 
			
		||||
#include "task.h"
 | 
			
		||||
 | 
			
		||||
#include "data/userinfo.h"
 | 
			
		||||
#include "data/loginresponse.h"
 | 
			
		||||
 | 
			
		||||
class LoginTask : public Task
 | 
			
		||||
{
 | 
			
		||||
	Q_OBJECT
 | 
			
		||||
public:
 | 
			
		||||
	explicit LoginTask(const UserInfo& uInfo, QObject *parent = 0);
 | 
			
		||||
	
 | 
			
		||||
signals:
 | 
			
		||||
	void loginComplete(const LoginResponse& loginResponse);
 | 
			
		||||
	void loginFailed(const QString& errorMsg);
 | 
			
		||||
	
 | 
			
		||||
protected:
 | 
			
		||||
	void executeTask();
 | 
			
		||||
	
 | 
			
		||||
	UserInfo uInfo;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // LOGINTASK_H
 | 
			
		||||
@@ -29,7 +29,7 @@ QString Task::getStatus() const
 | 
			
		||||
void Task::setStatus(const QString &status)
 | 
			
		||||
{
 | 
			
		||||
	this->status = status;
 | 
			
		||||
	statusChanged(status);
 | 
			
		||||
	emit statusChanged(status);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int Task::getProgress() const
 | 
			
		||||
@@ -40,7 +40,7 @@ int Task::getProgress() const
 | 
			
		||||
void Task::setProgress(int progress)
 | 
			
		||||
{
 | 
			
		||||
	this->progress = progress;
 | 
			
		||||
	progressChanged(progress);
 | 
			
		||||
	emit progressChanged(progress);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Task::startTask()
 | 
			
		||||
@@ -50,7 +50,7 @@ void Task::startTask()
 | 
			
		||||
 | 
			
		||||
void Task::run()
 | 
			
		||||
{
 | 
			
		||||
	taskStarted(this);
 | 
			
		||||
	emit taskStarted(this);
 | 
			
		||||
	executeTask();
 | 
			
		||||
	taskEnded(this);
 | 
			
		||||
	emit taskEnded(this);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,10 @@ public:
 | 
			
		||||
	QString getStatus() const;
 | 
			
		||||
	int getProgress() const;
 | 
			
		||||
	
 | 
			
		||||
public slots:
 | 
			
		||||
	void setStatus(const QString& status);
 | 
			
		||||
	void setProgress(int progress);
 | 
			
		||||
	
 | 
			
		||||
signals:
 | 
			
		||||
	void taskStarted(Task* task);
 | 
			
		||||
	void taskEnded(Task* task);
 | 
			
		||||
@@ -40,9 +44,6 @@ signals:
 | 
			
		||||
	void progressChanged(int progress);
 | 
			
		||||
	
 | 
			
		||||
protected:
 | 
			
		||||
	void setStatus(const QString& status);
 | 
			
		||||
	void setProgress(int progress);
 | 
			
		||||
	
 | 
			
		||||
	virtual void run();
 | 
			
		||||
	virtual void executeTask() = 0;
 | 
			
		||||
	
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user