FormCard Pri paĝoj

Lernu krei Pri paĝoj por krediti vian aplikaĵon.

Kirigami Addons estas plia aro de vidaj komponantoj, kiuj bone funkcias ĉe poŝtelefono kaj labortablo kaj estas garantiitaj esti transplatformaj. Ĝi uzas Kirigami sub la kapuĉo por krei siajn komponentojn.

Kelkaj el tiuj komponantoj permesas vin krediti vian laboron kaj la laboron de aliaj kontribuantoj en via projekto, kaj ankaŭ mencii la kadrojn uzatajn en via aplikaĵo: [Pri KDE](https://api.kde.org/frameworks/kirigami- addons/html/classAboutKDE.html) kaj AboutPage.

Pri KDE

Ĉiu nova butono, kiun ni kreis en la antaŭa paŝo, devus malfermi novan paĝon. Vi povas aldoni novajn paĝojn kreante ilin kiel Components kaj poste uzante pageStack.layers.push() por ĉiu butono por ŝargi tiun paĝon en nia main.qml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import QtQuick
import QtQuick.Layouts

import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard as FormCard

import org.kde.about 1.0

Kirigami.ApplicationWindow {
    id: root
    width: 600
    height: 700

    Component {
        id: aboutkde
        FormCard.AboutKDE {}    // <==========
    }

    pageStack.initialPage: Kirigami.ScrollablePage {
        ColumnLayout {
            FormCard.FormCard {
                FormCard.FormButtonDelegate {
                    id: aboutKDEButton
                    icon.name: "kde"
                    text: i18n("About KDE Page")
                    onClicked: root.pageStack.layers.push(aboutkde)     // <==========
                }

                FormCard.FormButtonDelegate {
                    id: aboutPageButton
                    icon.name: "applications-utilities"
                    text: i18n("About Addons Example")
                }

                FormCard.FormButtonDelegate {
                    id: settingsButton
                    icon.name: "settings-configure"
                    text: i18n("Single Settings Page")
                }
            }
        }
    }
}

Tio estas vere! Necesas nur instantiigi FormCard.Pri KDE. Vi devus vidi ion tian post klakado de la butono Pri KDE:

Pri Paĝo

La AboutPage de la aplikaĵo estas iomete pli kompleksa, sed ĝi estas ankoraŭ tre simpla uzi. Ni aldonos novan QML-dosieron, kiu enhavos la informojn necesajn por nia pri paĝo. Unue en nia dosiero resources.qrc:

<RCC version="1.0">
<qresource prefix="/">
    <file alias="main.qml">contents/ui/main.qml</file>
    <file alias="MyAboutPage.qml">contents/ui/MyAboutPage.qml</file>
</qresource>
</RCC>

Kaj nia contents/ui/MyAboutPage.qml devus havi la jenon:

import org.kde.kirigamiaddons.formcard 1.0 as FormCard
import org.kde.about 1.0

FormCard.AboutPage {
    aboutData: About
}

Ĉi tie ni uzas la informojn, kiujn ni starigis uzante KAboutData en nia main.cpp. Jen mallonga memorigilo pri tio, kio estas en main.cpp:

qmlRegisterSingletonType(
    "org.kde.about",        // <========== uzata en la importo
    1, 0, "About",          // <========== C++-objekto eksportita kiel QML-tipo
    [](QQmlEngine *engine, QJSEngine *) -> QJSValue {
        return engine->toScriptValue(KAboutData::applicationData());
    }
);

La objekto Pri, kiun ni eksportis al la QML-flanko uzante qmlRegisterSingletonType() enhavas la datumojn de KAboutData::applicationData() , kaj tion ni transdonas al la propreco aboutData.

Finfine, ni aldonas nian novan MyAboutPage al nia main.qml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import QtQuick
import QtQuick.Layouts

import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard as FormCard

import org.kde.about 1.0

Kirigami.ApplicationWindow {
    id: root
    width: 600
    height: 700

    Component {
        id: aboutkde
        FormCard.AboutKDE {}
    }

    Component {
        id: aboutpage
        MyAboutPage {}      // <==========
    }

    pageStack.initialPage: Kirigami.ScrollablePage {
        ColumnLayout {
            FormCard.FormCard {
                FormCard.FormButtonDelegate {
                    id: aboutKDEButton
                    icon.name: "kde"
                    text: i18n("About KDE Page")
                    onClicked: root.pageStack.layers.push(aboutkde)
                }

                FormCard.FormButtonDelegate {
                    id: aboutPageButton
                    icon.name: "applications-utilities"
                    text: i18n("About Addons Example")
                    onClicked: root.pageStack.layers.push(aboutpage)    // <==========
                }

                FormCard.FormButtonDelegate {
                    id: settingsButton
                    icon.name: "settings-configure"
                    text: i18n("Single Settings Page")
                }
            }
        }
    }
}

La paĝo Pri de nia aplikaĵo devus aspekti jene:

Uzante JSON anstataŭ KAboutData

Se vi scivolis, kial la paĝo Pri estis konservita aparta anstataŭ enigita en main.qml, tio estas ĉar ĝi permesas agordi laŭmendan modelon por la propreco aboutData.

Anstataŭ lasi vian pri paĝo ricevi informojn de KAboutData , eblas rekte transdoni JSON-objekton. Vi ankoraŭ bezonos uzi QApplication::setWindowIcon() en via main.cpp por ke via aplikaĵa piktogramo aperu.

Ŝanĝu vian `MyAboutPage.json' al io tia:

import org.kde.kirigamiaddons.formcard 1.0 as FormCard
import org.kde.about 1.0

FormCard.AboutPage {
    title: i18nc("@action:button", "About")
    aboutData: {
        "displayName" : "Addons Example",
        "productName" : "",
        "componentName" : "addonsexample",
        "shortDescription" : "This program shows how to use AboutKDE and AboutPage",
        "homepage" : "https://kde.org",
        "bugAddress" : "",
        "version" : "1.0",
        "otherText" : "Optional text shown in the About",
        "authors" : [
            {
                "name" : "John Doe",
                "task" : "Maintainer",
                "emailAddress" : "",
                "webAddress" : "",
                "ocsUsername" : ""
            }
        ],
        "credits" : [],
        "translators" : [],
        "licenses" : [
            {
                "name" : "GPL v3",
                "text" : "Long license text goes here",
                "spdx" : "GPL-3.0"
            }
        ],
        "copyrightStatement" : "© 2023",
        "desktopFileName" : ""
    }

}

La ĉefa JSON-objekto ĉi tie enhavas la ŝlosilojn displayName, productName, hejmpaĝo ktp. La ŝlosiloj aŭtoroj, kreditoj, tradukistoj kaj licencoj povas ĉiu esti pasita tabelo da objektoj. La objektoj transdonitaj al "aŭtoroj", "kreditoj" kaj "tradukistoj" dividas la samajn ŝlosilojn por ke ili povu esti montritaj ĉiu en sia propra sekcio, dum "licencoj" inkluzivas la ŝlosilojn "nomo", "teksto" kaj "spdx" por ĉiu permesilo aldonita, ĉar ne malofte la sama projekto inkluzivas plurajn permesilojn.

Ĉi tiuj ŝlosiloj estas laŭvolaj, sed akceptebla minimuma kvanto da ŝlosiloj estas atendita por ke via aplikaĵo ne havu malplenajn kampojn: displayName, version, priskribo, hejmpaĝo, kopyrightStatement kaj aŭtoroj. Vi estas kuraĝigita plenigi kiel eble plej multajn ŝlosilojn.