Warning, /frameworks/kirigami/Mainpage.dox is written in an unsupported language. File is not indexed.

0001 /*
0002  *  This file is part of Kirigami
0003  *  SPDX-FileCopyrightText: 2016 Marco Martin <mart@kde.org>
0004  *
0005  *  SPDX-License-Identifier: LGPL-2.0-or-later
0006  */
0007 
0008 
0009 /** \mainpage kirigami
0010 
0011 
0012 \subsection overview Introduction
0013 Kirigami is a set of <a href="https://doc.qt.io/qt-6/qtquick-index.html">QtQuick</a> components for building adaptable UIs based on <a href="https://doc.qt.io/qt-6/qtquickcontrols-index.html">QtQuick Controls 2</a>.
0014 
0015 Its goal is to enable creation of convergent applications that look and feel great on mobile as well as desktop devices and follow the <a href="https://develop.kde.org/hig">KDE Human Interface Guidelines</a> while being easy to use and not adding many dependencies.
0016 
0017 Kirigami works on a variety of platforms, such as <a href="https://plasma-mobile.org/">Plasma Mobile</a>, Desktop Linux, Android, MacOS, and Windows.
0018 
0019 It was introduced in <a href="https://kde.org/announcements/frameworks/5/5.37.0/">KDE Frameworks 5.37</a> as a <a href="https://api.kde.org/frameworks/#sg-tier_1">Tier-1 KDE Framework</a>.
0020 
0021 \subsection tutorial Tutorial
0022 A tutorial for Kirigami is available on <a href="https://develop.kde.org/docs/getting-started/kirigami/">our developer platform</a>.
0023 
0024 It is possible to make short mockups using QtQuick and Kirigami in the <a href="https://qmlonline.kde.org/">QML Online website</a> and briefly test individual QML files using the <a href="https://doc.qt.io/qt-6/qtquick-qml-runtime.html">qml tool</a>.
0025 
0026 A list of additional QML learning resources is available in the <a href="https://community.kde.org/Get_Involved/development/Learn#QtQuick/QML">Community Wiki</a>. If you are not familiar with QML at all, the <a href="https://www.qt.io/product/qt6/qml-book">QML book</a> should be a good head start.
0027 
0028 If you have any questions about Kirigami, feel free to drop by the <a href="https://go.kde.org/matrix/#/#kirigami:kde.org">Kirigami group on Matrix</a>.
0029 
0030 \subsection components Main Window Components
0031 - \link org::kde::kirigami::ApplicationWindow  ApplicationWindow \endlink
0032 - \link org::kde::kirigami::Action Action  \endlink
0033 - \link org::kde::kirigami::GlobalDrawer GlobalDrawer  \endlink
0034 - \link org::kde::kirigami::ContextDrawer ContextDrawer  \endlink
0035 - \link org::kde::kirigami::OverlayDrawer OverlayDrawer  \endlink
0036 - \link org::kde::kirigami::Page Page  \endlink
0037 - \link org::kde::kirigami::ScrollablePage ScrollablePage  \endlink
0038 - \link org::kde::kirigami::AboutPage AboutPage \endlink
0039 - \link org::kde::kirigami::PageRow PageRow \endlink
0040 - \link org::kde::kirigami::FormLayout FormLayout \endlink
0041 - \link org::kde::kirigami::CardsLayout CardsLayout \endlink
0042 - \link SizeGroup SizeGroup \endlink
0043 - \link Kirigami::PlatformTheme Theme  \endlink
0044 - \link Kirigami::Units  Units \endlink
0045 
0046 \subsection controls Common Kirigami Controls
0047 
0048 - \link org::kde::kirigami::Card Card \endlink
0049 - \link org::kde::kirigami::templates::OverlaySheet  OverlaySheet \endlink
0050 - \link org::kde::kirigami::SwipeListItem  SwipeListItem \endlink
0051 - \link org::kde::kirigami::Heading Heading  \endlink
0052 - \link org::kde::kirigami::PlaceholderMessage PlaceholderMessage  \endlink
0053 - \link org::kde::kirigami::SearchField SearchField \endlink
0054 - \link org::kde::kirigami::Dialog Dialog \endlink
0055 - \link org::kde::kirigami::NavigationTabBar NavigationTabBar \endlink
0056 - \link Icon Icon  \endlink
0057 
0058 \subsection example Minimal Example
0059 
0060 @code
0061 import QtQuick 2.15
0062 import QtQuick.Controls 2.15 as Controls
0063 import org.kde.kirigami 2.20 as Kirigami
0064 
0065 Kirigami.ApplicationWindow {
0066     id: root
0067 
0068     width: 500
0069     height: 400
0070 
0071     globalDrawer: Kirigami.GlobalDrawer {
0072         actions: [
0073             Kirigami.Action {
0074                 text: "View"
0075                 icon.name: "view-list-icons"
0076                 Kirigami.Action {
0077                     text: "action 1"
0078                 }
0079                 Kirigami.Action {
0080                     text: "action 2"
0081                 }
0082                 Kirigami.Action {
0083                     text: "action 3"
0084                 }
0085             },
0086             Kirigami.Action {
0087                 text: "action 3"
0088             },
0089             Kirigami.Action {
0090                 text: "action 4"
0091             }
0092         ]
0093     }
0094     contextDrawer: Kirigami.ContextDrawer {
0095         id: contextDrawer
0096     }
0097     pageStack.initialPage: mainPageComponent
0098     Component {
0099         id: mainPageComponent
0100         Kirigami.ScrollablePage {
0101             id: page
0102             title: "Hello"
0103             actions {
0104                 main: Kirigami.Action {
0105                     icon.name: sheet.sheetOpen ? "dialog-cancel" : "document-edit"
0106                     onTriggered: {
0107                         print("Action button in buttons page clicked");
0108                         sheet.sheetOpen = !sheet.sheetOpen
0109                     }
0110                 }
0111                 left: Kirigami.Action {
0112                     icon.name: "go-previous"
0113                     onTriggered: {
0114                         print("Left action triggered")
0115                     }
0116                 }
0117                 right: Kirigami.Action {
0118                     icon.name: "go-next"
0119                     onTriggered: {
0120                         print("Right action triggered")
0121                     }
0122                 }
0123                 contextualActions: [
0124                     Kirigami.Action {
0125                         text:"Action for buttons"
0126                         icon.name: "bookmarks"
0127                         onTriggered: print("Action 1 clicked")
0128                     },
0129                     Kirigami.Action {
0130                         text:"Action 2"
0131                         icon.name: "folder"
0132                         enabled: false
0133                     },
0134                     Kirigami.Action {
0135                         text: "Action for Sheet"
0136                         visible: sheet.sheetOpen
0137                     }
0138                 ]
0139             }
0140             Kirigami.OverlaySheet {
0141                 id: sheet
0142                 onSheetOpenChanged: page.actions.main.checked = sheetOpen
0143                 Controls.Label {
0144                     wrapMode: Text.WordWrap
0145                     text: "Lorem ipsum dolor sit amet"
0146                 }
0147             }
0148             //Page contents...
0149             Rectangle {
0150                 anchors.fill: parent
0151                 color: "lightblue"
0152             }
0153         }
0154     }
0155 }
0156 @endcode
0157 
0158 @image html MinimalExample.webp
0159 
0160 \subsection deployment Deployment
0161 CMake is used for both building Kirigami and projects using it, allowing for several configurations depending on how the deployment needs to be done.
0162 
0163 Kirigami can be built in two ways: both as a module or statically linked to the application, leading to four combinations:
0164 
0165 - Kirigami built as a module with CMake
0166 - Kirigami statically built with CMake (needed to link statically from applications built with CMake)
0167 
0168 The simplest and recommended way to use Kirigami is to just use the packages provided by your Linux distribution, or build it as a module and deploy it together with the main application.
0169 
0170 For example, when building an application on Android with CMake, if Kirigami for Android is built and installed in the same temporary directory before the application, the create-apk step of the application will include the Kirigami files as well in the APK.
0171 
0172 Statically linked Kirigami will be used only on Android, while on desktop systems it will use the version provided by the distribution. Which platforms use the static version and which use the dynamic one can be freely adjusted.
0173 
0174 The application needs to have a folder called "3rdparty" containing clones of two KDE repositories: kirigami and breeze-icons (available at git://anongit.kde.org/kirigami.git and git://anongit.kde.org/breeze-icons.git).
0175 
0176 The main.cpp file should then have something like:
0177 
0178 @code
0179 #include <QGuiApplication>
0180 #include <QQmlApplicationEngine>
0181 #ifdef Q_OS_ANDROID
0182 #include "./3rdparty/kirigami/src/kirigamiplugin.h"
0183 #endif
0184 
0185 int main(int argc, char *argv[])
0186 {
0187     QGuiApplication app(argc, argv);
0188 
0189     QQmlApplicationEngine engine;
0190 
0191 #ifdef Q_OS_ANDROID
0192     KirigamiPlugin::getInstance().registerTypes(&engine);
0193 #endif
0194     ...
0195 }
0196 @endcode
0197 
0198 @authors
0199 Marco Martin \<notmart@gmail.com\><br>
0200 Sebastian Kuegler \<sebas@kde.org\><br>
0201 Aleix Pol Gonzalez \<aleixpol@kde.org\><br>
0202 Dirk Hohndel \<dirk@hohndel.org\><br>
0203 
0204 @maintainers
0205 Marco Martin \<notmart@gmail.com\>
0206 
0207 @licenses
0208 @lgpl
0209 
0210 */
0211 
0212 
0213 // DOXYGEN_SET_RECURSIVE = YES
0214 // DOXYGEN_SET_EXCLUDE_PATTERNS += *_p.h */private/* */examples/* */doc/* */styles/*
0215 // DOXYGEN_SET_PROJECT_NAME = Kirigami
0216 // vim:ts=4:sw=4:expandtab:filetype=doxygen