Made the version list load in the background on startup.
Resolves JIRA issue MMC-11: https://jira.forkk.net/browse/MMC-11
This commit is contained in:
		@@ -56,6 +56,8 @@
 | 
			
		||||
#include "instancemodel.h"
 | 
			
		||||
#include "instancedelegate.h"
 | 
			
		||||
 | 
			
		||||
#include "minecraftversionlist.h"
 | 
			
		||||
 | 
			
		||||
// Opens the given file in the default application.
 | 
			
		||||
// TODO: Move this somewhere.
 | 
			
		||||
void openInDefaultProgram ( QString filename );
 | 
			
		||||
@@ -75,16 +77,16 @@ MainWindow::MainWindow ( QWidget *parent ) :
 | 
			
		||||
	view->setPalette(pal);
 | 
			
		||||
	*/
 | 
			
		||||
	
 | 
			
		||||
	view->setStyleSheet(
 | 
			
		||||
		"QListView\
 | 
			
		||||
		{\
 | 
			
		||||
			background-image: url(:/backgrounds/kitteh);\
 | 
			
		||||
			background-attachment: fixed;\
 | 
			
		||||
			background-clip: padding;\
 | 
			
		||||
			background-position: top right;\
 | 
			
		||||
			background-repeat: none;\
 | 
			
		||||
			background-color:palette(base);\
 | 
			
		||||
		}");
 | 
			
		||||
//	view->setStyleSheet(
 | 
			
		||||
//		"QListView\
 | 
			
		||||
//		{\
 | 
			
		||||
//			background-image: url(:/backgrounds/kitteh);\
 | 
			
		||||
//			background-attachment: fixed;\
 | 
			
		||||
//			background-clip: padding;\
 | 
			
		||||
//			background-position: top right;\
 | 
			
		||||
//			background-repeat: none;\
 | 
			
		||||
//			background-color:palette(base);\
 | 
			
		||||
//		}");
 | 
			
		||||
	
 | 
			
		||||
	view->setSelectionMode ( QAbstractItemView::SingleSelection );
 | 
			
		||||
	//view->setSpacing( KDialog::spacingHint() );
 | 
			
		||||
@@ -126,6 +128,12 @@ MainWindow::MainWindow ( QWidget *parent ) :
 | 
			
		||||
	instList.at(0)->setGroup("TEST GROUP");
 | 
			
		||||
	instList.at(0)->setName("TEST ITEM");
 | 
			
		||||
	*/
 | 
			
		||||
	
 | 
			
		||||
	if (!MinecraftVersionList::getMainList().isLoaded())
 | 
			
		||||
	{
 | 
			
		||||
		m_versionLoadTask = MinecraftVersionList::getMainList().getLoadTask();
 | 
			
		||||
		startTask(m_versionLoadTask);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MainWindow::~MainWindow()
 | 
			
		||||
@@ -146,6 +154,14 @@ void MainWindow::instanceActivated ( QModelIndex index )
 | 
			
		||||
 | 
			
		||||
void MainWindow::on_actionAddInstance_triggered()
 | 
			
		||||
{
 | 
			
		||||
	if (!MinecraftVersionList::getMainList().isLoaded() &&
 | 
			
		||||
		m_versionLoadTask && m_versionLoadTask->isRunning())
 | 
			
		||||
	{
 | 
			
		||||
		QEventLoop waitLoop;
 | 
			
		||||
		waitLoop.connect(m_versionLoadTask, SIGNAL(ended()), SLOT(quit()));
 | 
			
		||||
		waitLoop.exec();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	NewInstanceDialog *newInstDlg = new NewInstanceDialog ( this );
 | 
			
		||||
	if (newInstDlg->exec())
 | 
			
		||||
	{
 | 
			
		||||
@@ -347,6 +363,26 @@ void MainWindow::onLoginFailed ( QString inst, const QString& errorMsg )
 | 
			
		||||
	doLogin(inst, errorMsg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::taskStart(Task *task)
 | 
			
		||||
{
 | 
			
		||||
	// Nothing to do here yet.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::taskEnd(Task *task)
 | 
			
		||||
{
 | 
			
		||||
	if (task == m_versionLoadTask)
 | 
			
		||||
		m_versionLoadTask = NULL;
 | 
			
		||||
	
 | 
			
		||||
	delete task;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::startTask(Task *task)
 | 
			
		||||
{
 | 
			
		||||
	connect(task, SIGNAL(started(Task*)), SLOT(taskStart(Task*)));
 | 
			
		||||
	connect(task, SIGNAL(ended(Task*)), SLOT(taskEnd(Task*)));
 | 
			
		||||
	task->startTask();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Create A Desktop Shortcut
 | 
			
		||||
void MainWindow::on_actionMakeDesktopShortcut_triggered()
 | 
			
		||||
 
 | 
			
		||||
@@ -87,9 +87,14 @@ private slots:
 | 
			
		||||
	
 | 
			
		||||
	void onLoginComplete( QString inst, LoginResponse response );
 | 
			
		||||
	void onLoginFailed( QString inst, const QString& errorMsg );
 | 
			
		||||
	
 | 
			
		||||
	void taskStart(Task *task);
 | 
			
		||||
	void taskEnd(Task *task);
 | 
			
		||||
 | 
			
		||||
public slots:
 | 
			
		||||
	void instanceActivated ( QModelIndex );
 | 
			
		||||
	
 | 
			
		||||
	void startTask(Task *task);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	Ui::MainWindow *ui;
 | 
			
		||||
@@ -100,6 +105,8 @@ private:
 | 
			
		||||
	InstanceList instList;
 | 
			
		||||
	MinecraftProcess *proc;
 | 
			
		||||
	ConsoleWindow *console;
 | 
			
		||||
	
 | 
			
		||||
	Task *m_versionLoadTask;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // MAINWINDOW_H
 | 
			
		||||
 
 | 
			
		||||
@@ -45,14 +45,10 @@ 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)));
 | 
			
		||||
	connect(task, SIGNAL(started(Task*)), SLOT(onTaskStarted(Task*)));
 | 
			
		||||
	connect(task, SIGNAL(ended(Task*)), SLOT(onTaskEnded(Task*)));
 | 
			
		||||
	connect(task, SIGNAL(statusChanged(const QString&)), SLOT(changeStatus(const QString&)));
 | 
			
		||||
	connect(task, SIGNAL(progressChanged(int)), SLOT(changeProgress(int)));
 | 
			
		||||
	
 | 
			
		||||
	task->startTask();
 | 
			
		||||
	QDialog::exec();
 | 
			
		||||
 
 | 
			
		||||
@@ -48,8 +48,15 @@ public slots:
 | 
			
		||||
	void setProgress(int progress);
 | 
			
		||||
	
 | 
			
		||||
signals:
 | 
			
		||||
	void taskStarted(Task* task);
 | 
			
		||||
	void taskEnded(Task* task);
 | 
			
		||||
	void started(Task* task);
 | 
			
		||||
	void ended(Task* task);
 | 
			
		||||
	
 | 
			
		||||
	void started();
 | 
			
		||||
	void ended();
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	void statusChanged(Task* task, const QString& status);
 | 
			
		||||
	void progressChanged(Task* task, int progress);
 | 
			
		||||
	
 | 
			
		||||
	void statusChanged(const QString& status);
 | 
			
		||||
	void progressChanged(int progress);
 | 
			
		||||
@@ -58,6 +65,12 @@ protected:
 | 
			
		||||
	virtual void run();
 | 
			
		||||
	virtual void executeTask() = 0;
 | 
			
		||||
	
 | 
			
		||||
	virtual void emitStarted();
 | 
			
		||||
	virtual void emitEnded();
 | 
			
		||||
	
 | 
			
		||||
	virtual void emitStatusChange(const QString &status);
 | 
			
		||||
	virtual void emitProgressChange(int progress);
 | 
			
		||||
	
 | 
			
		||||
	QString status;
 | 
			
		||||
	int progress;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ QString Task::getStatus() const
 | 
			
		||||
void Task::setStatus(const QString &status)
 | 
			
		||||
{
 | 
			
		||||
	this->status = status;
 | 
			
		||||
	emit statusChanged(status);
 | 
			
		||||
	emitStatusChange(status);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int Task::getProgress() const
 | 
			
		||||
@@ -45,7 +45,7 @@ void Task::calcProgress(int parts, int whole)
 | 
			
		||||
void Task::setProgress(int progress)
 | 
			
		||||
{
 | 
			
		||||
	this->progress = progress;
 | 
			
		||||
	emit progressChanged(progress);
 | 
			
		||||
	emitProgressChange(progress);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Task::startTask()
 | 
			
		||||
@@ -55,7 +55,29 @@ void Task::startTask()
 | 
			
		||||
 | 
			
		||||
void Task::run()
 | 
			
		||||
{
 | 
			
		||||
	emit taskStarted(this);
 | 
			
		||||
	emitStarted();
 | 
			
		||||
	executeTask();
 | 
			
		||||
	emit taskEnded(this);
 | 
			
		||||
	emitEnded();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Task::emitStarted()
 | 
			
		||||
{
 | 
			
		||||
	emit started();
 | 
			
		||||
	emit started(this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Task::emitEnded()
 | 
			
		||||
{
 | 
			
		||||
	emit ended();
 | 
			
		||||
	emit ended(this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Task::emitStatusChange(const QString &status)
 | 
			
		||||
{
 | 
			
		||||
	emit statusChanged(status);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Task::emitProgressChange(int progress)
 | 
			
		||||
{
 | 
			
		||||
	emit progressChanged(progress);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user