diff --git a/CMakeLists.txt b/CMakeLists.txt index e69de29..915d12e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.20) +project(kirigami-testing) + +find_package(ECM 6.0.0 REQUIRED NO_MODULE) +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) + +include(KDEInstallDirs) +include(KDECMakeSettings) +include(KDECompilerSettings NO_POLICY_SCOPE) +include(ECMFindQmlModule) +include(ECMQmlModule) + +find_package(Qt6 REQUIRED COMPONENTS + Core + Quick + Test + Gui + QuickControls2 + Widgets +) + +find_package(KF6 REQUIRED COMPONENTS + Kirigami + I18n + CoreAddons + QQC2DesktopStyle + IconThemes +) + +ecm_find_qmlmodule(org.kde.kirigami) + +add_subdirectory(src) + +install(PROGRAMS xyz.toast003.kirigami-testing.desktop DESTINATION ${KDE_INSTALL_APPDIR}) + +feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/flake.nix b/flake.nix index d7854fe..6d3f0ed 100644 --- a/flake.nix +++ b/flake.nix @@ -9,7 +9,7 @@ lib = nixpkgs.lib; in { - devShells.x86_64-linux.default = pkgs.mkShellNoCC { + devShells.x86_64-linux.default = pkgs.mkShell { name = "kirigami-devshell"; packages = let diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e69de29..ff599cd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -0,0 +1,30 @@ +add_executable(kirigami-testing) + +ecm_add_qml_module(kirigami-testing + URI + xyz.toast003.kirigamiTesting +) + +target_sources(kirigami-testing + PRIVATE + main.cpp +) + +ecm_target_qml_sources(kirigami-testing + SOURCES + Main.qml +) + +target_link_libraries(kirigami-testing + PRIVATE + Qt6::Quick + Qt6::Qml + Qt6::Gui + Qt6::QuickControls2 + Qt6::Widgets + KF6::I18n + KF6::CoreAddons + KF6::IconThemes +) + +install(TARGETS kirigami-testing ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) diff --git a/src/Main.qml b/src/Main.qml index e69de29..14d687b 100644 --- a/src/Main.qml +++ b/src/Main.qml @@ -0,0 +1,29 @@ +// Includes relevant modules used by the QML +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls as Controls +import org.kde.kirigami as Kirigami + +// Provides basic features needed for all kirigami applications +Kirigami.ApplicationWindow { + // Unique identifier to reference this object + id: root + + width: 400 + height: 300 + + // Window title + // i18nc() makes a string translatable + // and provides additional context for the translators + title: i18nc("@title:window", "Hello World") + + // Set the first page that will be loaded when the app opens + // This can also be set to an id of a Kirigami.Page + pageStack.initialPage: Kirigami.Page { + Controls.Label { + // Center label horizontally and vertically within parent object + anchors.centerIn: parent + text: i18n("Hello from kirigami!") + } + } +} diff --git a/src/main.cpp b/src/main.cpp index e69de29..570244c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -0,0 +1,35 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + KIconTheme::initTheme(); + QApplication app(argc, argv); + KLocalizedString::setApplicationDomain("kirigami-testing"); + QApplication::setOrganizationName(QStringLiteral("Toast")); + QApplication::setOrganizationDomain(QStringLiteral("toast003.xyz")); + QApplication::setApplicationName(QStringLiteral("Kirigami Testing")); + QApplication::setDesktopFileName(QStringLiteral("xyz.toast003.kirigami-testing.desktop")); + + QApplication::setStyle(QStringLiteral("breeze")); + if (qEnvironmentVariableIsEmpty("QT_QUICK_CONTROLS_STYLE")) { + QQuickStyle::setStyle(QStringLiteral("org.kde.desktop")); + } + + QQmlApplicationEngine engine; + + engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); + engine.loadFromModule("xyz.toast003.kirigamiTesting", "Main"); + + if (engine.rootObjects().isEmpty()) { + return -1; + } + + return app.exec(); +} diff --git a/xyz.toast003.kirigami-testing.desktop b/xyz.toast003.kirigami-testing.desktop index e69de29..32073c9 100644 --- a/xyz.toast003.kirigami-testing.desktop +++ b/xyz.toast003.kirigami-testing.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Kirigami testing +Name[es]=Prueba de kirigami +Exec=kirigami-testing +Icon=kde +Type=Application +Terminal=false +Categories=Utility