diff --git a/apps/launcher/maindialog.cpp b/apps/launcher/maindialog.cpp index 464dca03a..d9629d658 100644 --- a/apps/launcher/maindialog.cpp +++ b/apps/launcher/maindialog.cpp @@ -108,6 +108,34 @@ void MainDialog::createPages() mPagesWidget->addWidget(mGraphicsPage); mPagesWidget->addWidget(mDataFilesPage); + // Select the first page + mIconWidget->setCurrentItem(mIconWidget->item(0), QItemSelectionModel::Select); + + connect(mPlayPage->mProfilesComboBox, + SIGNAL(currentIndexChanged(int)), + this, SLOT(profileChanged(int))); + + connect(mDataFilesPage->mProfilesComboBox, + SIGNAL(currentIndexChanged(int)), + this, SLOT(profileChanged(int))); + +} + +void MainDialog::profileChanged(int index) +{ + // Just to be sure, should always have a selection + if (!mIconWidget->selectionModel()->hasSelection()) { + return; + } + + QString currentPage = mIconWidget->currentItem()->data(Qt::DisplayRole).toString(); + if (currentPage == QString("Play")) { + mDataFilesPage->mProfilesComboBox->setCurrentIndex(index); + } + + if (currentPage == QString("Data Files")) { + mPlayPage->mProfilesComboBox->setCurrentIndex(index); + } } void MainDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous) @@ -116,31 +144,46 @@ void MainDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous) current = previous; mPagesWidget->setCurrentIndex(mIconWidget->row(current)); +} - if (previous) { - QString previousPage = previous->data(Qt::DisplayRole).toString(); - QString currentPage = current->data(Qt::DisplayRole).toString(); +void MainDialog::closeEvent(QCloseEvent *event) +{ + qDebug() << "Close event"; + mDataFilesPage->writeConfig(); + mDataFilesPage->mLauncherConfig->sync(); - // The user switched from Data Files to Play - if (previousPage == QString("Data Files") && currentPage == QString("Play")) { - mPlayPage->mProfilesComboBox->setCurrentIndex(mDataFilesPage->mProfilesComboBox->currentIndex()); + // Now write to the game config + writeConfig(); + event->accept(); - } +} - // The user switched from Play to Data Files - if (previousPage == QString("Play") && currentPage == QString("Data Files")) { - mDataFilesPage->mProfilesComboBox->setCurrentIndex(mPlayPage->mProfilesComboBox->currentIndex()); - } - } +void MainDialog::play() +{ } -void MainDialog::closeEvent(QCloseEvent *event) +void MainDialog::setupConfig() { - qDebug() << "Close event"; - mDataFilesPage->writeConfig(); - mDataFilesPage->mLauncherConfig->sync(); + // First we read the OpenMW config + QString config = "openmw.cfg"; + QFile file(config); + + if (!file.exists()) { + config = QString::fromStdString(Files::getPath(Files::Path_ConfigUser, + "openmw", "launcher.cfg")); + } + + file.setFileName(config); // Just for displaying information + qDebug() << "Using config file from " << file.fileName(); + file.close(); + + // Open our config file + mGameConfig = new QSettings(config, QSettings::IniFormat); +} +void MainDialog::writeConfig() +{ // Write to the openmw.cfg QString dataPath = mGameConfig->value("data").toString(); dataPath.append("/"); @@ -171,7 +214,7 @@ void MainDialog::closeEvent(QCloseEvent *event) // Now we write back the other config entries if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) { - // File cannot be opened or created TODO: throw error + // File cannot be opened or created TODO: throw error } file.write(buffer); @@ -190,34 +233,5 @@ void MainDialog::closeEvent(QCloseEvent *event) } } - - file.close(); - event->accept(); - -} - -void MainDialog::play() -{ - -} - -void MainDialog::setupConfig() -{ - // First we read the OpenMW config - QString config = "openmw.cfg"; - QFile file(config); - - if (!file.exists()) { - config = QString::fromStdString(Files::getPath(Files::Path_ConfigUser, - "openmw", "launcher.cfg")); - } - - file.setFileName(config); // Just for displaying information - qDebug() << "Using config file from " << file.fileName(); file.close(); - - // Open our config file - mGameConfig = new QSettings(config, QSettings::IniFormat); - - } diff --git a/apps/launcher/maindialog.hpp b/apps/launcher/maindialog.hpp index 430abd9ca..3af217e16 100644 --- a/apps/launcher/maindialog.hpp +++ b/apps/launcher/maindialog.hpp @@ -25,12 +25,14 @@ public: public slots: void changePage(QListWidgetItem *current, QListWidgetItem *previous); void play(); + void profileChanged(int index); private: void createIcons(); void createPages(); void setupConfig(); + void writeConfig(); void closeEvent(QCloseEvent *event); QListWidget *mIconWidget; diff --git a/files/launcher.qss b/files/launcher.qss index c2c21e461..2866f858e 100644 --- a/files/launcher.qss +++ b/files/launcher.qss @@ -20,7 +20,7 @@ QPushButton { stop:0.9 rgba(0, 0, 0, 55), stop:1 rgba(0, 0, 0, 100)); - font: 24pt "Gauntlet Thin"; + font: 24pt "FreeMono"; color: black; border-right: 1px solid rgba(0, 0, 0, 155); @@ -46,7 +46,7 @@ QPushButton:pressed { QLabel { - font: 14pt "Gauntlet Classic"; + font: 14pt "FreeMono"; } @@ -54,19 +54,17 @@ QComboBox { padding: 1px 18px 1px 3px; - background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 gray, stop:0.2 white, stop:1 rgba(255, 255, 255, 55)); + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 white, stop:0.2 rgba(0, 0, 0, 25), stop:1 rgba(255, 255, 255, 200)); border-width: 1px; border-color: rgba(0, 0, 0, 125); border-style: solid; border-radius: 2px; } -/* QComboBox gets the "on" state when the popup is open * / +/*QComboBox gets the "on" state when the popup is open */ QComboBox:!editable:on, QComboBox::drop-down:editable:on { - background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0 #D3D3D3, stop: 0.4 #D8D8D8, - stop: 0.5 #DDDDDD, stop: 1.0 #E1E1E1); -}*/ + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 gray, stop:0.2 white); +} QComboBox { /* shift the text when the popup opens */ @@ -102,7 +100,3 @@ QListWidget { background-attachment: scroll; background-position: right; } - -QListWidgetItem { - alignment: center; -}