Warning, /maui/mauikit-accounts/docs/quickstart.md is written in an unsupported language. File is not indexed.
0001 Quick start tutorial {#quickstart}
0002 ===================
0003
0004 ## Setup
0005
0006 For this guide we will create an image tagging editor, for this purpose will be using most of the MauiKit File Browsing controls and some of the classes.
0007
0008 Our project file structure consists for now of only three file: `main.cpp`, `main.qml` and `CMakeLists.txt`
0009
0010 The starting point is to setup the CMakeLists file by linking to `MauiKitFileBrowsing4` library and its dependencies.
0011
0012 First, to find the needed files for the package one could use the line `find_package(MauiKitFileBrowsing4)`, but given we will also be using MauiKit4 core controls, instead we will use the following components syntax `find_package(MauiKit4 REQUIRED COMPONENT FileBrowsing)`, so both packages can be found and linked- the CMake file would look something like this:
0013
0014 cmake_minimum_required(VERSION 3.14)
0015
0016 project(MuTag VERSION 0.1 LANGUAGES CXX)
0017
0018 set(CMAKE_AUTOMOC ON)
0019 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0020
0021 find_package(ECM NO_MODULE)
0022 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
0023
0024 find_package(Qt6 REQUIRED COMPONENTS Quick Qml)
0025 find_package(KF6 COMPONENTS I18n CoreAddons)
0026 find_package(MauiKit4 REQUIRED COMPONENTS FileBrowsing)
0027
0028 qt_add_executable(${PROJECT_NAME}App
0029 main.cpp)
0030
0031 qt_add_qml_module(${PROJECT_NAME}App
0032 URI ${PROJECT_NAME}
0033 VERSION 1.0
0034 QML_FILES main.qml)
0035
0036 target_link_libraries(${PROJECT_NAME}App
0037 PRIVATE
0038 Qt6::Quick
0039 Qt6::Qml
0040 MauiKit4
0041 MauiKit4::FileBrowsing
0042 KF6::I18n
0043 KF6::CoreAddons)
0044
0045 install(TARGETS ${PROJECT_NAME}App
0046 BUNDLE DESTINATION .
0047 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
0048
0049
0050 The next step is to setup the main entry point with the information about the application. Take a look at the `main.cpp` source file:
0051
0052 #include <QQmlApplicationEngine>
0053 #include <QQmlContext>
0054
0055 #include <QGuiApplication>
0056 #include <QIcon>
0057
0058 #include <KLocalizedString>
0059 #include <KAboutData>
0060
0061 #include <MauiKit3/Core/mauiapp.h>
0062
0063 int main(int argc, char *argv[])
0064 {
0065 QGuiApplication app(argc, argv);
0066
0067 app.setOrganizationName(QStringLiteral("Maui"));
0068 app.setWindowIcon(QIcon(":/assets/mauidemo.svg"));
0069
0070 KLocalizedString::setApplicationDomain("MuTag");
0071 KAboutData about(QStringLiteral("MuTag"),
0072 i18n("MuTag"),
0073 "3.0.0",
0074 i18n("Music Files Tagging."),
0075 KAboutLicense::LGPL_V3); //here you can set information about the application, which will be fetched by the about dialog.
0076
0077 about.addAuthor(i18n("Camilo Higuita"), i18n("Developer"), QStringLiteral("milo.h@aol.com"));
0078 about.setHomepage("https://mauikit.org");
0079 about.setProductName("maui/mutag");
0080 about.setBugAddress("https://invent.kde.org/camiloh/mutag/-/issues");
0081 about.setOrganizationDomain("org.mutag.app");
0082 about.setProgramLogo(app.windowIcon());
0083 about.addComponent("MauiKit File Browsing");
0084
0085 KAboutData::setApplicationData(about);
0086
0087 MauiApp::instance()->setIconName("qrc:/assets/mauidemo.svg"); // this not only sets the path to the icon file asset, but also takes care of initializing the MauiApp singleton instance.
0088
0089 QQmlApplicationEngine engine;
0090 const QUrl url(u"qrc:/MuTag/main.qml"_qs);
0091 QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
0092 &app, [url](QObject *obj, const QUrl &objUrl) {
0093 if (!obj && url == objUrl)
0094 QCoreApplication::exit(-1);
0095 }, Qt::QueuedConnection);
0096
0097 engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
0098
0099 engine.load(url);
0100
0101 return app.exec();
0102 }
0103
0104 In the code snippet above the information about the application is done using the KDE framework KCoreAddons module `KAboutData`. And another important part is to initialize the MauiKit Application instance, so the styling and other parts work correctly, this is done by calling the `MauiApp::instance()` singleton instance with `MauiApp::instance()->setIconName()`.
0105
0106 The next steps will take care of loading our main QML file `main.qml`:
0107
0108 import org.mauikit.controls as Maui
0109
0110 Maui.ApplicationWindow
0111 {
0112 id: root
0113
0114 Maui.Page
0115 {
0116 anchors.fill: parent
0117 Maui.Controls.showCSD: true
0118 }
0119 }
0120
0121 ## The App Requirements
0122 Next step will be to stablish what is the application roles and what building blocks it needs top achieve its main tasks.
0123
0124 The requirements for this demo app are:
0125 - Add, edit and remove tags to any image file selected
0126 - List all the tags
0127 - List all the images associated to a selected tag
0128
0129 To achieve these, the main page of our application will look something like the following image. Where the user can select an existing tag to list all the image files associated to it, or to click on a button to launch a `FileDialog` to select a new image to edit or add new tags to it. So far, the application will have to pages, one for tag browsing an another for the image tags editing.
0130
0131