mirror of
https://github.com/redstrate/Astra.git
synced 2025-04-20 11:47:46 +00:00
Improve profile/account creation and deletion experience
The windows should properly close when necessary, and the setup can no longer loop itself because it didn't re-read the game version. You can now select another profile's game installation when setting up a new profile.
This commit is contained in:
parent
b34b74bf89
commit
1cbfc17c1a
10 changed files with 62 additions and 14 deletions
|
@ -128,7 +128,7 @@ public:
|
||||||
void setAccount(Account *account);
|
void setAccount(Account *account);
|
||||||
|
|
||||||
void readGameData();
|
void readGameData();
|
||||||
void readGameVersion();
|
Q_INVOKABLE void readGameVersion();
|
||||||
void readWineInfo();
|
void readWineInfo();
|
||||||
|
|
||||||
[[nodiscard]] QString expansionVersionText() const;
|
[[nodiscard]] QString expansionVersionText() const;
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls as QQC2
|
import QtQuick.Controls as QQC2
|
||||||
|
import QtQuick.Window
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
||||||
import org.kde.kirigami as Kirigami
|
import org.kde.kirigami as Kirigami
|
||||||
|
@ -236,7 +237,7 @@ FormCard.FormCardPage {
|
||||||
|
|
||||||
onAccepted: {
|
onAccepted: {
|
||||||
LauncherCore.accountManager.deleteAccount(page.account);
|
LauncherCore.accountManager.deleteAccount(page.account);
|
||||||
applicationWindow().pageStack.layers.pop();
|
page.Window.window.pageStack.layers.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Window
|
||||||
|
|
||||||
import org.kde.kirigami as Kirigami
|
import org.kde.kirigami as Kirigami
|
||||||
import org.kde.kirigamiaddons.formcard as FormCard
|
import org.kde.kirigamiaddons.formcard as FormCard
|
||||||
|
@ -11,6 +12,8 @@ import org.kde.kirigamiaddons.components as Components
|
||||||
import zone.xiv.astra
|
import zone.xiv.astra
|
||||||
|
|
||||||
FormCard.FormCardPage {
|
FormCard.FormCardPage {
|
||||||
|
id: root
|
||||||
|
|
||||||
title: i18nc("@title:window", "Accounts")
|
title: i18nc("@title:window", "Accounts")
|
||||||
|
|
||||||
FormCard.FormCard {
|
FormCard.FormCard {
|
||||||
|
@ -31,7 +34,7 @@ FormCard.FormCardPage {
|
||||||
|
|
||||||
leadingPadding: Kirigami.Units.largeSpacing * 2
|
leadingPadding: Kirigami.Units.largeSpacing * 2
|
||||||
|
|
||||||
onClicked: applicationWindow().pageStack.layers.push(Qt.createComponent("zone.xiv.astra", "AccountSettings"), {
|
onClicked: root.Window.window.pageStack.layers.push(Qt.createComponent("zone.xiv.astra", "AccountSettings"), {
|
||||||
account: account
|
account: account
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -46,7 +49,7 @@ FormCard.FormCardPage {
|
||||||
|
|
||||||
text: i18n("Add Square Enix Account")
|
text: i18n("Add Square Enix Account")
|
||||||
icon.name: "list-add-symbolic"
|
icon.name: "list-add-symbolic"
|
||||||
onClicked: pageStack.layers.push(Qt.createComponent("zone.xiv.astra", "AddSquareEnix"))
|
onClicked: root.Window.window.pageStack.layers.push(Qt.createComponent("zone.xiv.astra", "AddSquareEnix"))
|
||||||
}
|
}
|
||||||
|
|
||||||
FormCard.FormDelegateSeparator {
|
FormCard.FormDelegateSeparator {
|
||||||
|
@ -59,7 +62,7 @@ FormCard.FormCardPage {
|
||||||
|
|
||||||
text: i18n("Add Sapphire Account")
|
text: i18n("Add Sapphire Account")
|
||||||
icon.name: "list-add-symbolic"
|
icon.name: "list-add-symbolic"
|
||||||
onClicked: pageStack.layers.push(Qt.createComponent("zone.xiv.astra", "AddSapphire"))
|
onClicked: root.Window.window.pageStack.layers.push(Qt.createComponent("zone.xiv.astra", "AddSapphire"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -4,6 +4,7 @@
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls as QQC2
|
import QtQuick.Controls as QQC2
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Window
|
||||||
|
|
||||||
import org.kde.kirigami as Kirigami
|
import org.kde.kirigami as Kirigami
|
||||||
import org.kde.kirigamiaddons.formcard as FormCard
|
import org.kde.kirigamiaddons.formcard as FormCard
|
||||||
|
@ -334,7 +335,7 @@ FormCard.FormCardPage {
|
||||||
|
|
||||||
onAccepted: {
|
onAccepted: {
|
||||||
LauncherCore.profileManager.deleteProfile(page.profile);
|
LauncherCore.profileManager.deleteProfile(page.profile);
|
||||||
applicationWindow().pageStack.layers.pop();
|
page.Window.window.pageStack.layers.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Window
|
||||||
|
|
||||||
import org.kde.kirigami as Kirigami
|
import org.kde.kirigami as Kirigami
|
||||||
import org.kde.kirigamiaddons.formcard as FormCard
|
import org.kde.kirigamiaddons.formcard as FormCard
|
||||||
|
@ -10,6 +11,8 @@ import org.kde.kirigamiaddons.formcard as FormCard
|
||||||
import zone.xiv.astra
|
import zone.xiv.astra
|
||||||
|
|
||||||
FormCard.FormCardPage {
|
FormCard.FormCardPage {
|
||||||
|
id: page
|
||||||
|
|
||||||
title: i18nc("@title:window", "Profiles")
|
title: i18nc("@title:window", "Profiles")
|
||||||
|
|
||||||
FormCard.FormCard {
|
FormCard.FormCard {
|
||||||
|
@ -23,7 +26,7 @@ FormCard.FormCardPage {
|
||||||
required property var profile
|
required property var profile
|
||||||
|
|
||||||
text: profile.name
|
text: profile.name
|
||||||
onClicked: applicationWindow().pageStack.layers.push(Qt.createComponent("zone.xiv.astra", "ProfileSettings"), {
|
onClicked: page.Window.window.pageStack.layers.push(Qt.createComponent("zone.xiv.astra", "ProfileSettings"), {
|
||||||
profile: profile
|
profile: profile
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -39,8 +42,8 @@ FormCard.FormCardPage {
|
||||||
text: i18n("Add Profile")
|
text: i18n("Add Profile")
|
||||||
icon.name: "list-add"
|
icon.name: "list-add"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
applicationWindow().currentSetupProfile = LauncherCore.profileManager.addProfile()
|
page.Window.window.close();
|
||||||
applicationWindow().checkSetup()
|
LauncherCore.currentProfile = LauncherCore.profileManager.addProfile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ Kirigami.Page {
|
||||||
}
|
}
|
||||||
|
|
||||||
MobileForm.FormTextDelegate {
|
MobileForm.FormTextDelegate {
|
||||||
text: i18n("Select an account below to use.")
|
text: i18n("Select an account below to use for profile '%1'.", LauncherCore.currentProfile.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
Repeater {
|
Repeater {
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Window
|
||||||
|
|
||||||
import org.kde.kirigami as Kirigami
|
import org.kde.kirigami as Kirigami
|
||||||
import org.kde.kirigamiaddons.labs.mobileform as MobileForm
|
import org.kde.kirigamiaddons.labs.mobileform as MobileForm
|
||||||
|
@ -56,7 +57,7 @@ Kirigami.Page {
|
||||||
page.profile.account = account
|
page.profile.account = account
|
||||||
applicationWindow().checkSetup()
|
applicationWindow().checkSetup()
|
||||||
} else {
|
} else {
|
||||||
applicationWindow().pageStack.layers.pop()
|
page.Window.window.pageStack.layers.pop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Window
|
||||||
|
|
||||||
import org.kde.kirigami as Kirigami
|
import org.kde.kirigami as Kirigami
|
||||||
import org.kde.kirigamiaddons.labs.mobileform as MobileForm
|
import org.kde.kirigamiaddons.labs.mobileform as MobileForm
|
||||||
|
@ -68,7 +69,7 @@ Kirigami.Page {
|
||||||
page.profile.account = account
|
page.profile.account = account
|
||||||
applicationWindow().checkSetup()
|
applicationWindow().checkSetup()
|
||||||
} else {
|
} else {
|
||||||
applicationWindow().pageStack.layers.pop()
|
page.Window.window.pageStack.layers.pop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,8 @@ Kirigami.Page {
|
||||||
target: gameInstaller
|
target: gameInstaller
|
||||||
|
|
||||||
function onInstallFinished() {
|
function onInstallFinished() {
|
||||||
applicationWindow().checkSetup()
|
LauncherCore.currentProfile.readGameVersion();
|
||||||
|
applicationWindow().checkSetup();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onError(message) {
|
function onError(message) {
|
||||||
|
|
|
@ -29,12 +29,49 @@ Kirigami.Page {
|
||||||
}
|
}
|
||||||
|
|
||||||
MobileForm.FormTextDelegate {
|
MobileForm.FormTextDelegate {
|
||||||
text: i18n("The game must be installed to continue. Please select a setup option below.")
|
text: i18n("The profile '%1' must be set up before first.", LauncherCore.currentProfile.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
MobileForm.FormTextDelegate {
|
||||||
|
text: i18n("A copy of the game must be located or installed.")
|
||||||
description: i18n("A valid game account will be required at the end of installation.")
|
description: i18n("A valid game account will be required at the end of installation.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MobileForm.FormCard {
|
||||||
|
Layout.topMargin: Kirigami.Units.largeSpacing
|
||||||
|
Layout.fillWidth: true
|
||||||
|
contentItem: ColumnLayout {
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
|
MobileForm.FormCardHeader {
|
||||||
|
title: i18n("Existing Installations")
|
||||||
|
}
|
||||||
|
|
||||||
|
MobileForm.FormTextDelegate {
|
||||||
|
text: i18n("Select an existing installation from another profile below.")
|
||||||
|
}
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
model: LauncherCore.profileManager
|
||||||
|
|
||||||
|
MobileForm.FormButtonDelegate {
|
||||||
|
required property var profile
|
||||||
|
|
||||||
|
text: profile.name
|
||||||
|
description: profile.gamePath
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
LauncherCore.currentProfile.gamePath = profile.gamePath;
|
||||||
|
LauncherCore.currentProfile.readGameVersion();
|
||||||
|
applicationWindow().checkSetup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MobileForm.FormCard {
|
MobileForm.FormCard {
|
||||||
Layout.topMargin: Kirigami.Units.largeSpacing
|
Layout.topMargin: Kirigami.Units.largeSpacing
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
Loading…
Add table
Reference in a new issue