GH-1433 with no default account, show profiles instead of accounts in selection dialog
This commit is contained in:
		@@ -110,8 +110,8 @@ SET(MULTIMC_SOURCES
 | 
			
		||||
	SettingsUI.h
 | 
			
		||||
 | 
			
		||||
	# Processes
 | 
			
		||||
	LaunchInteraction.h
 | 
			
		||||
	LaunchInteraction.cpp
 | 
			
		||||
	LaunchController.h
 | 
			
		||||
	LaunchController.cpp
 | 
			
		||||
 | 
			
		||||
	# page provider for instances
 | 
			
		||||
	InstancePageProvider.h
 | 
			
		||||
@@ -168,8 +168,8 @@ SET(MULTIMC_SOURCES
 | 
			
		||||
	# GUI - dialogs
 | 
			
		||||
	dialogs/AboutDialog.cpp
 | 
			
		||||
	dialogs/AboutDialog.h
 | 
			
		||||
	dialogs/AccountSelectDialog.cpp
 | 
			
		||||
	dialogs/AccountSelectDialog.h
 | 
			
		||||
	dialogs/ProfileSelectDialog.cpp
 | 
			
		||||
	dialogs/ProfileSelectDialog.h
 | 
			
		||||
	dialogs/CopyInstanceDialog.cpp
 | 
			
		||||
	dialogs/CopyInstanceDialog.h
 | 
			
		||||
	dialogs/CustomMessageBox.cpp
 | 
			
		||||
@@ -267,7 +267,7 @@ SET(MULTIMC_UIS
 | 
			
		||||
	dialogs/VersionSelectDialog.ui
 | 
			
		||||
	dialogs/ProgressDialog.ui
 | 
			
		||||
	dialogs/IconPickerDialog.ui
 | 
			
		||||
	dialogs/AccountSelectDialog.ui
 | 
			
		||||
	dialogs/ProfileSelectDialog.ui
 | 
			
		||||
	dialogs/EditAccountDialog.ui
 | 
			
		||||
	dialogs/ExportInstanceDialog.ui
 | 
			
		||||
	dialogs/LoginDialog.ui
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <QMainWindow>
 | 
			
		||||
#include "LaunchInteraction.h"
 | 
			
		||||
#include "LaunchController.h"
 | 
			
		||||
#include <QObjectPtr.h>
 | 
			
		||||
#include <QSystemTrayIcon>
 | 
			
		||||
#include "launch/LaunchTask.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
#include "LaunchInteraction.h"
 | 
			
		||||
#include "LaunchController.h"
 | 
			
		||||
#include "MainWindow.h"
 | 
			
		||||
#include <minecraft/auth/MojangAccountList.h>
 | 
			
		||||
#include "MultiMC.h"
 | 
			
		||||
#include "dialogs/CustomMessageBox.h"
 | 
			
		||||
#include "dialogs/AccountSelectDialog.h"
 | 
			
		||||
#include "dialogs/ProfileSelectDialog.h"
 | 
			
		||||
#include "dialogs/ProgressDialog.h"
 | 
			
		||||
#include "dialogs/EditAccountDialog.h"
 | 
			
		||||
#include "InstanceWindow.h"
 | 
			
		||||
@@ -59,8 +59,8 @@ void LaunchController::login()
 | 
			
		||||
	else if (account.get() == nullptr)
 | 
			
		||||
	{
 | 
			
		||||
		// If no default account is set, ask the user which one to use.
 | 
			
		||||
		AccountSelectDialog selectDialog(tr("Which account would you like to use?"),
 | 
			
		||||
										 AccountSelectDialog::GlobalDefaultCheckbox, m_parentWidget);
 | 
			
		||||
		ProfileSelectDialog selectDialog(tr("Which profile would you like to use?"),
 | 
			
		||||
										 ProfileSelectDialog::GlobalDefaultCheckbox, m_parentWidget);
 | 
			
		||||
 | 
			
		||||
		selectDialog.exec();
 | 
			
		||||
 | 
			
		||||
@@ -56,6 +56,7 @@
 | 
			
		||||
#include <launch/LaunchTask.h>
 | 
			
		||||
#include <minecraft/MinecraftVersionList.h>
 | 
			
		||||
#include <minecraft/legacy/LwjglVersionList.h>
 | 
			
		||||
#include <minecraft/auth/MojangAccountList.h>
 | 
			
		||||
#include <SkinUtils.h>
 | 
			
		||||
#include <net/URLConstants.h>
 | 
			
		||||
#include <net/NetJob.h>
 | 
			
		||||
@@ -66,12 +67,11 @@
 | 
			
		||||
#include <updater/DownloadTask.h>
 | 
			
		||||
#include <updater/UpdateChecker.h>
 | 
			
		||||
#include <DesktopServices.h>
 | 
			
		||||
 | 
			
		||||
#include "InstanceWindow.h"
 | 
			
		||||
#include "InstancePageProvider.h"
 | 
			
		||||
#include "InstanceProxyModel.h"
 | 
			
		||||
#include "JavaCommon.h"
 | 
			
		||||
#include "LaunchInteraction.h"
 | 
			
		||||
#include "LaunchController.h"
 | 
			
		||||
#include "SettingsUI.h"
 | 
			
		||||
#include "groupview/GroupView.h"
 | 
			
		||||
#include "groupview/InstanceDelegate.h"
 | 
			
		||||
@@ -84,7 +84,6 @@
 | 
			
		||||
#include "dialogs/CustomMessageBox.h"
 | 
			
		||||
#include "dialogs/IconPickerDialog.h"
 | 
			
		||||
#include "dialogs/CopyInstanceDialog.h"
 | 
			
		||||
#include "dialogs/AccountSelectDialog.h"
 | 
			
		||||
#include "dialogs/UpdateDialog.h"
 | 
			
		||||
#include "dialogs/EditAccountDialog.h"
 | 
			
		||||
#include "dialogs/NotificationDialog.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -13,8 +13,9 @@
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "AccountSelectDialog.h"
 | 
			
		||||
#include "ui_AccountSelectDialog.h"
 | 
			
		||||
#include "ProfileSelectDialog.h"
 | 
			
		||||
#include <SkinUtils.h>
 | 
			
		||||
#include "ui_ProfileSelectDialog.h"
 | 
			
		||||
 | 
			
		||||
#include <QItemSelectionModel>
 | 
			
		||||
 | 
			
		||||
@@ -24,14 +25,39 @@
 | 
			
		||||
 | 
			
		||||
#include <MultiMC.h>
 | 
			
		||||
 | 
			
		||||
AccountSelectDialog::AccountSelectDialog(const QString &message, int flags, QWidget *parent)
 | 
			
		||||
	: QDialog(parent), ui(new Ui::AccountSelectDialog)
 | 
			
		||||
ProfileSelectDialog::ProfileSelectDialog(const QString &message, int flags, QWidget *parent)
 | 
			
		||||
	: QDialog(parent), ui(new Ui::ProfileSelectDialog)
 | 
			
		||||
{
 | 
			
		||||
	ui->setupUi(this);
 | 
			
		||||
 | 
			
		||||
	m_accounts = MMC->accounts();
 | 
			
		||||
	ui->listView->setModel(m_accounts.get());
 | 
			
		||||
	ui->listView->hideColumn(MojangAccountList::ActiveColumn);
 | 
			
		||||
	auto view = ui->listView;
 | 
			
		||||
	//view->setModel(m_accounts.get());
 | 
			
		||||
	//view->hideColumn(MojangAccountList::ActiveColumn);
 | 
			
		||||
	view->setColumnCount(1);
 | 
			
		||||
	view->setRootIsDecorated(false);
 | 
			
		||||
	if(QTreeWidgetItem* header = view->headerItem())
 | 
			
		||||
	{
 | 
			
		||||
		header->setText(0, tr("Name"));
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		view->setHeaderLabel(tr("Name"));
 | 
			
		||||
	}
 | 
			
		||||
	QList <QTreeWidgetItem *> items;
 | 
			
		||||
	for (int i = 0; i < m_accounts->count(); i++)
 | 
			
		||||
	{
 | 
			
		||||
		MojangAccountPtr account = m_accounts->at(i);
 | 
			
		||||
		for (auto profile : account->profiles())
 | 
			
		||||
		{
 | 
			
		||||
			auto item = new QTreeWidgetItem(view);
 | 
			
		||||
			item->setText(0, profile.name);
 | 
			
		||||
			item->setIcon(0, SkinUtils::getFaceFromCache(profile.id));
 | 
			
		||||
			item->setData(0, MojangAccountList::PointerRole, QVariant::fromValue(account));
 | 
			
		||||
			items.append(item);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	view->addTopLevelItems(items);
 | 
			
		||||
 | 
			
		||||
	// Set the message label.
 | 
			
		||||
	ui->msgLabel->setVisible(!message.isEmpty());
 | 
			
		||||
@@ -48,27 +74,27 @@ AccountSelectDialog::AccountSelectDialog(const QString &message, int flags, QWid
 | 
			
		||||
	connect(ui->listView, SIGNAL(doubleClicked(QModelIndex)), SLOT(on_buttonBox_accepted()));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AccountSelectDialog::~AccountSelectDialog()
 | 
			
		||||
ProfileSelectDialog::~ProfileSelectDialog()
 | 
			
		||||
{
 | 
			
		||||
	delete ui;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MojangAccountPtr AccountSelectDialog::selectedAccount() const
 | 
			
		||||
MojangAccountPtr ProfileSelectDialog::selectedAccount() const
 | 
			
		||||
{
 | 
			
		||||
	return m_selected;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AccountSelectDialog::useAsGlobalDefault() const
 | 
			
		||||
bool ProfileSelectDialog::useAsGlobalDefault() const
 | 
			
		||||
{
 | 
			
		||||
	return ui->globalDefaultCheck->isChecked();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool AccountSelectDialog::useAsInstDefaullt() const
 | 
			
		||||
bool ProfileSelectDialog::useAsInstDefaullt() const
 | 
			
		||||
{
 | 
			
		||||
	return ui->instDefaultCheck->isChecked();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AccountSelectDialog::on_buttonBox_accepted()
 | 
			
		||||
void ProfileSelectDialog::on_buttonBox_accepted()
 | 
			
		||||
{
 | 
			
		||||
	QModelIndexList selection = ui->listView->selectionModel()->selectedIndexes();
 | 
			
		||||
	if (selection.size() > 0)
 | 
			
		||||
@@ -79,7 +105,7 @@ void AccountSelectDialog::on_buttonBox_accepted()
 | 
			
		||||
	close();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AccountSelectDialog::on_buttonBox_rejected()
 | 
			
		||||
void ProfileSelectDialog::on_buttonBox_rejected()
 | 
			
		||||
{
 | 
			
		||||
	close();
 | 
			
		||||
}
 | 
			
		||||
@@ -23,10 +23,10 @@
 | 
			
		||||
 | 
			
		||||
namespace Ui
 | 
			
		||||
{
 | 
			
		||||
class AccountSelectDialog;
 | 
			
		||||
class ProfileSelectDialog;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class AccountSelectDialog : public QDialog
 | 
			
		||||
class ProfileSelectDialog : public QDialog
 | 
			
		||||
{
 | 
			
		||||
	Q_OBJECT
 | 
			
		||||
public:
 | 
			
		||||
@@ -52,8 +52,8 @@ public:
 | 
			
		||||
	 * Constructs a new account select dialog with the given parent and message.
 | 
			
		||||
	 * The message will be shown at the top of the dialog. It is an empty string by default.
 | 
			
		||||
	 */
 | 
			
		||||
	explicit AccountSelectDialog(const QString& message="", int flags=0, QWidget *parent = 0);
 | 
			
		||||
	~AccountSelectDialog();
 | 
			
		||||
	explicit ProfileSelectDialog(const QString& message="", int flags=0, QWidget *parent = 0);
 | 
			
		||||
	~ProfileSelectDialog();
 | 
			
		||||
 | 
			
		||||
	/*!
 | 
			
		||||
	 * Gets a pointer to the account that the user selected.
 | 
			
		||||
@@ -86,5 +86,5 @@ protected:
 | 
			
		||||
	MojangAccountPtr m_selected;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	Ui::AccountSelectDialog *ui;
 | 
			
		||||
	Ui::ProfileSelectDialog *ui;
 | 
			
		||||
};
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<ui version="4.0">
 | 
			
		||||
 <class>AccountSelectDialog</class>
 | 
			
		||||
 <widget class="QDialog" name="AccountSelectDialog">
 | 
			
		||||
 <class>ProfileSelectDialog</class>
 | 
			
		||||
 <widget class="QDialog" name="ProfileSelectDialog">
 | 
			
		||||
  <property name="geometry">
 | 
			
		||||
   <rect>
 | 
			
		||||
    <x>0</x>
 | 
			
		||||
    <y>0</y>
 | 
			
		||||
    <width>413</width>
 | 
			
		||||
    <width>465</width>
 | 
			
		||||
    <height>300</height>
 | 
			
		||||
   </rect>
 | 
			
		||||
  </property>
 | 
			
		||||
@@ -17,12 +17,18 @@
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QLabel" name="msgLabel">
 | 
			
		||||
     <property name="text">
 | 
			
		||||
      <string>Select an account.</string>
 | 
			
		||||
      <string>Select a profile.</string>
 | 
			
		||||
     </property>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QTreeView" name="listView"/>
 | 
			
		||||
    <widget class="QTreeWidget" name="listView">
 | 
			
		||||
     <column>
 | 
			
		||||
      <property name="text">
 | 
			
		||||
       <string notr="true">1</string>
 | 
			
		||||
      </property>
 | 
			
		||||
     </column>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <layout class="QHBoxLayout" name="horizontalLayout">
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#include "MultiMC.h"
 | 
			
		||||
#include "MainWindow.h"
 | 
			
		||||
#include "LaunchInteraction.h"
 | 
			
		||||
#include "LaunchController.h"
 | 
			
		||||
#include <InstanceList.h>
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,6 @@
 | 
			
		||||
#include "Env.h"
 | 
			
		||||
 | 
			
		||||
#include "dialogs/ProgressDialog.h"
 | 
			
		||||
#include "dialogs/AccountSelectDialog.h"
 | 
			
		||||
#include "dialogs/LoginDialog.h"
 | 
			
		||||
#include "dialogs/CustomMessageBox.h"
 | 
			
		||||
#include "dialogs/SkinUploadDialog.h"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user