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:
parent
37bce25e6f
commit
d1045c4500
11 changed files with 69 additions and 70 deletions
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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();
|
||||||
});
|
});
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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]
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,40 +16,40 @@ Kirigami.Page {
|
||||||
|
|
||||||
title: i18n("Home")
|
title: i18n("Home")
|
||||||
|
|
||||||
actions.contextualActions: Kirigami.Action {
|
actions: [
|
||||||
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"
|
|
||||||
|
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
text: i18n("Open Official Launcher")
|
text: i18n("Tools")
|
||||||
icon.name: "application-x-executable"
|
icon.name: "tools-symbolic"
|
||||||
onTriggered: LauncherCore.openOfficialLauncher(loginPage.profile)
|
|
||||||
}
|
|
||||||
|
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
text: i18n("Open System Info")
|
text: i18n("Open Official Launcher")
|
||||||
icon.name: "application-x-executable"
|
icon.name: "application-x-executable"
|
||||||
onTriggered: LauncherCore.openSystemInfo(loginPage.profile)
|
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 {
|
Kirigami.Action {
|
||||||
text: i18n("Open Config Backup")
|
text: i18n("Server Status")
|
||||||
icon.name: "application-x-executable"
|
icon.name: "cloudstatus"
|
||||||
onTriggered: LauncherCore.openConfigBackup(loginPage.profile)
|
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
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue