1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-06-08 06:57:46 +00:00

Begin port to Qt6

This commit is contained in:
Joshua Goins 2023-09-16 17:32:38 -04:00
parent 37bce25e6f
commit d1045c4500
11 changed files with 69 additions and 70 deletions

View file

@ -8,9 +8,9 @@ All of these packages are required for Astra to build with a minimal set of feat
* Linux * Linux
* Windows, macOS and other systems may work but are currently unsupported. * Windows, macOS and other systems may work but are currently unsupported.
* CMake 3.16 or later * CMake 3.25 or later
* Qt 5.15 or later * Qt 6.5 or later
* KDE Frameworks 5.83 or later * KDE Frameworks 6
* Extra CMake Modules, Kirigami, I18n, Config, and CoreAddons. * Extra CMake Modules, Kirigami, I18n, Config, and CoreAddons.
* Rust * Rust
* unshield * unshield

View file

@ -1,7 +1,7 @@
# SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com> # SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.25)
project(Astra VERSION 0.5.0 LANGUAGES CXX) project(Astra VERSION 0.5.0 LANGUAGES CXX)
# build options used for distributors # build options used for distributors
@ -19,8 +19,8 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(QT_MIN_VERSION 5.15) set(QT_MIN_VERSION 6.5)
set(KF5_MIN_VERSION 5.83) set(KF_MIN_VERSION 5.240)
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
@ -40,13 +40,13 @@ ecm_setup_version(${PROJECT_VERSION}
VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/astra-version.h VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/astra-version.h
) )
find_package(Qt5 ${QT_MIN_VERSION} NO_MODULE REQUIRED COMPONENTS find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS
Core Core
Widgets Widgets
Network Network
QuickControls2 QuickControls2
WebEngine) WebView)
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 I18n Config CoreAddons) find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 I18n Config CoreAddons)
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
if (ENABLE_WATCHDOG) if (ENABLE_WATCHDOG)
@ -69,8 +69,8 @@ if (ENABLE_STEAM)
endif () endif ()
endif () endif ()
find_package(Qt5Keychain REQUIRED) find_package(Qt6Keychain REQUIRED)
find_package(QuaZip-Qt5 REQUIRED) find_package(QuaZip-Qt6 REQUIRED)
add_subdirectory(external) add_subdirectory(external)
add_subdirectory(launcher) add_subdirectory(launcher)

View file

@ -45,18 +45,18 @@ target_link_libraries(astra PRIVATE
cotp cotp
crypto crypto
QuaZip::QuaZip QuaZip::QuaZip
Qt5Keychain::Qt5Keychain Qt6Keychain::Qt6Keychain
Qt5::Core Qt6::Core
Qt5::Network Qt6::Network
Qt5::Widgets Qt6::Widgets
Qt5::Quick Qt6::Quick
Qt5::QuickControls2 Qt6::QuickControls2
Qt5::WebEngine Qt6::WebView
KF5::Kirigami2 KF6::Kirigami2
KF5::I18n KF6::I18n
KF5::ConfigCore KF6::ConfigCore
KF5::ConfigGui KF6::ConfigGui
KF5::CoreAddons) KF6::CoreAddons)
if (ENABLE_WATCHDOG) if (ENABLE_WATCHDOG)
target_sources(astra PRIVATE target_sources(astra PRIVATE

View file

@ -93,7 +93,7 @@ void LauncherCore::beginVanillaGame(const QString &gameExecutablePath, const Pro
{ {
auto gameProcess = new QProcess(this); auto gameProcess = new QProcess(this);
gameProcess->setProcessEnvironment(QProcessEnvironment::systemEnvironment()); gameProcess->setProcessEnvironment(QProcessEnvironment::systemEnvironment());
connect(gameProcess, qOverload<int>(&QProcess::finished), this, [this](int exitCode) { connect(gameProcess, &QProcess::finished, this, [this](int exitCode) {
Q_UNUSED(exitCode) Q_UNUSED(exitCode)
Q_EMIT gameClosed(); Q_EMIT gameClosed();
}); });
@ -133,7 +133,7 @@ void LauncherCore::beginDalamudGame(const QString &gameExecutablePath, const Pro
const QString dalamudInjector = dalamudInstallDir.absoluteFilePath("Dalamud.Injector.exe"); const QString dalamudInjector = dalamudInstallDir.absoluteFilePath("Dalamud.Injector.exe");
auto dalamudProcess = new QProcess(this); auto dalamudProcess = new QProcess(this);
connect(dalamudProcess, qOverload<int>(&QProcess::finished), this, [this](int exitCode) { connect(dalamudProcess, &QProcess::finished, this, [this](int exitCode) {
Q_UNUSED(exitCode) Q_UNUSED(exitCode)
Q_EMIT gameClosed(); Q_EMIT gameClosed();
}); });

View file

@ -7,7 +7,7 @@
#include <QApplication> #include <QApplication>
#include <QCommandLineParser> #include <QCommandLineParser>
#include <QQuickStyle> #include <QQuickStyle>
#include <QtWebEngine> #include <QtWebView>
#include "astra-version.h" #include "astra-version.h"
#include "compatibilitytoolinstaller.h" #include "compatibilitytoolinstaller.h"
@ -17,10 +17,7 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QtWebView::initialize();
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
QtWebEngine::initialize();
QApplication app(argc, argv); QApplication app(argc, argv);
// Default to org.kde.desktop style unless the user forces another style // Default to org.kde.desktop style unless the user forces another style

View file

@ -1,13 +1,14 @@
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com> // SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-License-Identifier: GPL-3.0-or-later
import QtCore
import QtQuick 2.15 import QtQuick 2.15
import QtQuick.Window 2.15 import QtQuick.Window 2.15
import org.kde.kirigami 2.20 as Kirigami import org.kde.kirigami 2.20 as Kirigami
import QtQuick.Controls 2.15 as Controls import QtQuick.Controls 2.15 as Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts 1.15
import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm
import QtQuick.Dialogs 1.0 import QtQuick.Dialogs
import zone.xiv.astra 1.0 import zone.xiv.astra 1.0
MobileForm.FormButtonDelegate { MobileForm.FormButtonDelegate {
@ -23,6 +24,6 @@ MobileForm.FormButtonDelegate {
FileDialog { FileDialog {
id: dialog id: dialog
folder: shortcuts.home currentFolder: StandardPaths.standardLocations(StandardPaths.HomeLocation)[0]
} }
} }

View file

@ -1,13 +1,14 @@
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com> // SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-License-Identifier: GPL-3.0-or-later
import QtCore
import QtQuick 2.15 import QtQuick 2.15
import QtQuick.Window 2.15 import QtQuick.Window 2.15
import org.kde.kirigami 2.20 as Kirigami import org.kde.kirigami 2.20 as Kirigami
import QtQuick.Controls 2.15 as Controls import QtQuick.Controls 2.15 as Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts 1.15
import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm
import QtQuick.Dialogs 1.0 import QtQuick.Dialogs
import zone.xiv.astra 1.0 import zone.xiv.astra 1.0
MobileForm.FormButtonDelegate { MobileForm.FormButtonDelegate {
@ -20,11 +21,9 @@ MobileForm.FormButtonDelegate {
onClicked: dialog.open() onClicked: dialog.open()
FileDialog { FolderDialog {
id: dialog id: dialog
selectFolder: true currentFolder: StandardPaths.standardLocations(StandardPaths.HomeLocation)[0]
folder: shortcuts.home
} }
} }

View file

@ -7,6 +7,7 @@ import org.kde.kirigami 2.20 as Kirigami
import QtQuick.Controls 2.15 as Controls import QtQuick.Controls 2.15 as Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts 1.15
import org.kde.kirigamiaddons.formcard 1.0 as FormCard import org.kde.kirigamiaddons.formcard 1.0 as FormCard
import org.kde.kirigamiaddons.components as Components
import zone.xiv.astra 1.0 import zone.xiv.astra 1.0
Controls.Control { Controls.Control {
@ -91,7 +92,7 @@ Controls.Control {
text: i18n("Current Account") text: i18n("Current Account")
description: page.profile.account.name description: page.profile.account.name
leading: Kirigami.Avatar leading: Components.Avatar
{ {
source: page.profile.account.avatarUrl source: page.profile.account.avatarUrl
} }

View file

@ -16,19 +16,8 @@ Kirigami.Page {
title: i18n("Home") title: i18n("Home")
actions.contextualActions: Kirigami.Action { actions: [
text: i18n("Settings") Kirigami.Action {
icon.name: "configure"
onTriggered: applicationWindow().pushDialogLayer('qrc:/ui/Settings/SettingsPage.qml')
}
actions.right: Kirigami.Action {
text: i18n("Server Status")
icon.name: "cloudstatus"
onTriggered: applicationWindow().openUrl('https://na.finalfantasyxiv.com/lodestone/worldstatus/')
}
actions.main: Kirigami.Action {
text: i18n("Tools") text: i18n("Tools")
icon.name: "tools-symbolic" icon.name: "tools-symbolic"
@ -49,7 +38,18 @@ Kirigami.Page {
icon.name: "application-x-executable" icon.name: "application-x-executable"
onTriggered: LauncherCore.openConfigBackup(loginPage.profile) onTriggered: LauncherCore.openConfigBackup(loginPage.profile)
} }
},
Kirigami.Action {
text: i18n("Server Status")
icon.name: "cloudstatus"
onTriggered: applicationWindow().openUrl('https://na.finalfantasyxiv.com/lodestone/worldstatus/')
},
Kirigami.Action {
text: i18n("Settings")
icon.name: "configure"
onTriggered: applicationWindow().pushDialogLayer('qrc:/ui/Settings/SettingsPage.qml')
} }
]
RowLayout { RowLayout {
anchors.fill: parent anchors.fill: parent

View file

@ -7,7 +7,7 @@ import org.kde.kirigami 2.20 as Kirigami
import QtQuick.Controls 2.15 as Controls import QtQuick.Controls 2.15 as Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts 1.15
import org.kde.kirigamiaddons.formcard 1.0 as FormCard import org.kde.kirigamiaddons.formcard 1.0 as FormCard
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects 1.0
import zone.xiv.astra 1.0 import zone.xiv.astra 1.0
Controls.Control { Controls.Control {

View file

@ -7,6 +7,7 @@ import org.kde.kirigami 2.20 as Kirigami
import QtQuick.Controls 2.15 as Controls import QtQuick.Controls 2.15 as Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts 1.15
import org.kde.kirigamiaddons.formcard 1.0 as FormCard import org.kde.kirigamiaddons.formcard 1.0 as FormCard
import org.kde.kirigamiaddons.components as Components
import zone.xiv.astra 1.0 import zone.xiv.astra 1.0
FormCard.FormCardPage { FormCard.FormCardPage {
@ -25,7 +26,7 @@ FormCard.FormCardPage {
text: account.name text: account.name
leading: Kirigami.Avatar leading: Components.Avatar
{ {
source: account.avatarUrl source: account.avatarUrl
} }