1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-06-07 22:47: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
* Windows, macOS and other systems may work but are currently unsupported.
* CMake 3.16 or later
* Qt 5.15 or later
* KDE Frameworks 5.83 or later
* CMake 3.25 or later
* Qt 6.5 or later
* KDE Frameworks 6
* Extra CMake Modules, Kirigami, I18n, Config, and CoreAddons.
* Rust
* unshield

View file

@ -1,7 +1,7 @@
# SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
# 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)
# build options used for distributors
@ -19,8 +19,8 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(QT_MIN_VERSION 5.15)
set(KF5_MIN_VERSION 5.83)
set(QT_MIN_VERSION 6.5)
set(KF_MIN_VERSION 5.240)
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
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
)
find_package(Qt5 ${QT_MIN_VERSION} NO_MODULE REQUIRED COMPONENTS
find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS
Core
Widgets
Network
QuickControls2
WebEngine)
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 I18n Config CoreAddons)
WebView)
find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 I18n Config CoreAddons)
find_package(PkgConfig REQUIRED)
if (ENABLE_WATCHDOG)
@ -69,8 +69,8 @@ if (ENABLE_STEAM)
endif ()
endif ()
find_package(Qt5Keychain REQUIRED)
find_package(QuaZip-Qt5 REQUIRED)
find_package(Qt6Keychain REQUIRED)
find_package(QuaZip-Qt6 REQUIRED)
add_subdirectory(external)
add_subdirectory(launcher)

View file

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

View file

@ -93,7 +93,7 @@ void LauncherCore::beginVanillaGame(const QString &gameExecutablePath, const Pro
{
auto gameProcess = new QProcess(this);
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_EMIT gameClosed();
});
@ -133,7 +133,7 @@ void LauncherCore::beginDalamudGame(const QString &gameExecutablePath, const Pro
const QString dalamudInjector = dalamudInstallDir.absoluteFilePath("Dalamud.Injector.exe");
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_EMIT gameClosed();
});

View file

@ -7,7 +7,7 @@
#include <QApplication>
#include <QCommandLineParser>
#include <QQuickStyle>
#include <QtWebEngine>
#include <QtWebView>
#include "astra-version.h"
#include "compatibilitytoolinstaller.h"
@ -17,10 +17,7 @@
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
QtWebEngine::initialize();
QtWebView::initialize();
QApplication app(argc, argv);
// 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-License-Identifier: GPL-3.0-or-later
import QtCore
import QtQuick 2.15
import QtQuick.Window 2.15
import org.kde.kirigami 2.20 as Kirigami
import QtQuick.Controls 2.15 as Controls
import QtQuick.Layouts 1.15
import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm
import QtQuick.Dialogs 1.0
import QtQuick.Dialogs
import zone.xiv.astra 1.0
MobileForm.FormButtonDelegate {
@ -23,6 +24,6 @@ MobileForm.FormButtonDelegate {
FileDialog {
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-License-Identifier: GPL-3.0-or-later
import QtCore
import QtQuick 2.15
import QtQuick.Window 2.15
import org.kde.kirigami 2.20 as Kirigami
import QtQuick.Controls 2.15 as Controls
import QtQuick.Layouts 1.15
import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm
import QtQuick.Dialogs 1.0
import QtQuick.Dialogs
import zone.xiv.astra 1.0
MobileForm.FormButtonDelegate {
@ -20,11 +21,9 @@ MobileForm.FormButtonDelegate {
onClicked: dialog.open()
FileDialog {
FolderDialog {
id: dialog
selectFolder: true
folder: shortcuts.home
currentFolder: StandardPaths.standardLocations(StandardPaths.HomeLocation)[0]
}
}

View file

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

View file

@ -16,40 +16,40 @@ Kirigami.Page {
title: i18n("Home")
actions.contextualActions: Kirigami.Action {
text: i18n("Settings")
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")
icon.name: "tools-symbolic"
actions: [
Kirigami.Action {
text: i18n("Open Official Launcher")
icon.name: "application-x-executable"
onTriggered: LauncherCore.openOfficialLauncher(loginPage.profile)
}
text: i18n("Tools")
icon.name: "tools-symbolic"
Kirigami.Action {
text: i18n("Open System Info")
icon.name: "application-x-executable"
onTriggered: LauncherCore.openSystemInfo(loginPage.profile)
}
Kirigami.Action {
text: i18n("Open Official Launcher")
icon.name: "application-x-executable"
onTriggered: LauncherCore.openOfficialLauncher(loginPage.profile)
}
Kirigami.Action {
text: i18n("Open System Info")
icon.name: "application-x-executable"
onTriggered: LauncherCore.openSystemInfo(loginPage.profile)
}
Kirigami.Action {
text: i18n("Open Config Backup")
icon.name: "application-x-executable"
onTriggered: LauncherCore.openConfigBackup(loginPage.profile)
}
},
Kirigami.Action {
text: i18n("Open Config Backup")
icon.name: "application-x-executable"
onTriggered: LauncherCore.openConfigBackup(loginPage.profile)
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 {
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.Layouts 1.15
import org.kde.kirigamiaddons.formcard 1.0 as FormCard
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects 1.0
import zone.xiv.astra 1.0
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.Layouts 1.15
import org.kde.kirigamiaddons.formcard 1.0 as FormCard
import org.kde.kirigamiaddons.components as Components
import zone.xiv.astra 1.0
FormCard.FormCardPage {
@ -25,7 +26,7 @@ FormCard.FormCardPage {
text: account.name
leading: Kirigami.Avatar
leading: Components.Avatar
{
source: account.avatarUrl
}