Remember the last selected instance and select it on startup
This commit is contained in:
		
				
					committed by
					
						 Petr Mrázek
						Petr Mrázek
					
				
			
			
				
	
			
			
			
						parent
						
							eff38858ef
						
					
				
				
					commit
					8831856172
				
			| @@ -327,6 +327,7 @@ void MultiMC::initGlobalSettings() | ||||
|  | ||||
|  | ||||
| 	m_settings->registerSetting(new Setting("InstSortMode", "Name")); | ||||
| 	m_settings->registerSetting(new Setting("SelectedInstance", QString())); | ||||
|  | ||||
| 	// Persistent value for the client ID | ||||
| 	m_settings->registerSetting(new Setting("YggdrasilClientToken", "")); | ||||
|   | ||||
| @@ -244,6 +244,28 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi | ||||
| 		connect(assets_downloader, SIGNAL(finished()), SLOT(assetsFinished())); | ||||
| 		assets_downloader->start(); | ||||
| 	} | ||||
|  | ||||
| 	const QString currentInstanceId = MMC->settings()->get("SelectedInstance").toString(); | ||||
| 	if (!currentInstanceId.isNull()) | ||||
| 	{ | ||||
| 		const QModelIndex index = MMC->instances()->getInstanceIndexById(currentInstanceId); | ||||
| 		if (index.isValid()) | ||||
| 		{ | ||||
| 			const QModelIndex mappedIndex = proxymodel->mapFromSource(index); | ||||
| 			view->setCurrentIndex(mappedIndex); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			view->setCurrentIndex(proxymodel->index(0, 0)); | ||||
| 		} | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		view->setCurrentIndex(proxymodel->index(0, 0)); | ||||
| 	} | ||||
|  | ||||
| 	// removing this looks stupid | ||||
| 	view->setFocus(); | ||||
| } | ||||
|  | ||||
| MainWindow::~MainWindow() | ||||
| @@ -983,10 +1005,14 @@ void MainWindow::instanceChanged(const QModelIndex ¤t, const QModelIndex & | ||||
| 		m_statusLeft->setText(m_selectedInstance->getStatusbarDescription()); | ||||
| 		auto ico = MMC->icons()->getIcon(iconKey); | ||||
| 		ui->actionChangeInstIcon->setIcon(ico); | ||||
|  | ||||
| 		MMC->settings()->set("SelectedInstance", m_selectedInstance->id()); | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		selectionBad(); | ||||
|  | ||||
| 		MMC->settings()->set("SelectedInstance", QString()); | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -362,7 +362,7 @@ int InstanceList::add(InstancePtr t) | ||||
| 	return count() - 1; | ||||
| } | ||||
|  | ||||
| InstancePtr InstanceList::getInstanceById(QString instId) | ||||
| InstancePtr InstanceList::getInstanceById(QString instId) const | ||||
| { | ||||
| 	QListIterator<InstancePtr> iter(m_instances); | ||||
| 	InstancePtr inst; | ||||
| @@ -378,7 +378,12 @@ InstancePtr InstanceList::getInstanceById(QString instId) | ||||
| 		return iter.peekPrevious(); | ||||
| } | ||||
|  | ||||
| int InstanceList::getInstIndex(BaseInstance *inst) | ||||
| QModelIndex InstanceList::getInstanceIndexById(const QString &id) const | ||||
| { | ||||
| 	return index(getInstIndex(getInstanceById(id).get())); | ||||
| } | ||||
|  | ||||
| int InstanceList::getInstIndex(BaseInstance *inst) const | ||||
| { | ||||
| 	for (int i = 0; i < m_instances.count(); i++) | ||||
| 	{ | ||||
|   | ||||
| @@ -91,7 +91,9 @@ public: | ||||
| 	int add(InstancePtr t); | ||||
|  | ||||
| 	/// Get an instance by ID | ||||
| 	InstancePtr getInstanceById(QString id); | ||||
| 	InstancePtr getInstanceById(QString id) const; | ||||
|  | ||||
| 	QModelIndex getInstanceIndexById(const QString &id) const; | ||||
| signals: | ||||
| 	void dataIsInvalid(); | ||||
|  | ||||
| @@ -106,7 +108,7 @@ slots: | ||||
| 	void groupChanged(); | ||||
|  | ||||
| private: | ||||
| 	int getInstIndex(BaseInstance *inst); | ||||
| 	int getInstIndex(BaseInstance *inst) const; | ||||
|  | ||||
| protected: | ||||
| 	QString m_instDir; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user