File: main.cpp

package info (click to toggle)
kirigami-addons 1.11.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,324 kB
  • sloc: ansic: 31,525; cpp: 3,607; xml: 82; java: 76; makefile: 4; sh: 1
file content (89 lines) | stat: -rw-r--r-- 4,733 bytes parent folder | download | duplicates (2)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
 * Copyright 2023 Evgeny Chesnokov <echesnokov@astralinux.ru>
 * SPDX-License-Identifier: LGPL-2.0-or-later
 */

#include <KAboutData>
#include <KLocalizedContext>
#include <KLocalizedString>
#include <QApplication>
#include <QIcon>
#include <QQmlApplicationEngine>
#include <QQuickStyle>
#include <QtQml>

#include "book.h"
#include "booklistmodel.h"
#include "booktablemodel.h"

int main(int argCount, char *argVector[])
{
    QApplication app(argCount, argVector);
    KLocalizedString::setApplicationDomain("org.kde.tableviewexample");

    KAboutData aboutData(QStringLiteral("tableviewexample"),
                         i18nc("@title:window", "Kirigami Addons Table Example"),
                         QStringLiteral("1.0"),
                         i18nc("@info", "This program shows how to use TableView component from Kirigami Addons"),
                         KAboutLicense::GPL_V3,
                         QStringLiteral("(C) 2023"),
                         i18nc("@info", "Optional text shown in the About"),
                         QStringLiteral("https://kde.org"));

    aboutData.addAuthor(i18nc("@info:credit", "John Doe"), i18nc("@info:credit", "Maintainer"));

    KAboutData::setApplicationData(aboutData);

    if (qEnvironmentVariableIsEmpty("QT_QUICK_CONTROLS_STYLE")) {
        QQuickStyle::setStyle(QStringLiteral("org.kde.desktop"));
    }
    QApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("kde")));

    qmlRegisterUncreatableType<BookListModel>("org.kde.kirigamiaddons.BookListModel",
                                              1,
                                              0,
                                              "BookRoles",
                                              QStringLiteral("Cannot create instances of BookListModel"));

    qmlRegisterUncreatableType<BookTableModel>("org.kde.kirigamiaddons.BookTableModel",
                                               1,
                                               0,
                                               "BookRoles",
                                               QStringLiteral("Cannot create instances of BookTableModel"));

    QList<Book *> bookList;
    bookList.append(new Book(QStringLiteral("Harry Potter and the Philosopher's Stone"), QStringLiteral("J.K. Rowling"), 1997, 4.5));
    bookList.append(new Book(QStringLiteral("Fantastic Beasts and Where to Find Them"), QStringLiteral("J.K. Rowling"), 2001, 4.3));
    bookList.append(new Book(QStringLiteral("The Dark Tower"), QStringLiteral("Stephen King"), 1982, 4.0));
    bookList.append(new Book(QStringLiteral("American Gods"), QStringLiteral("Neil Gaiman"), 2001, 4.1));
    bookList.append(new Book(QStringLiteral("The Hobbit"), QStringLiteral("J.R.R. Tolkien"), 1937, 4.4));
    bookList.append(new Book(QStringLiteral("1984"), QStringLiteral("George Orwell"), 1949, 4.3));
    bookList.append(new Book(QStringLiteral("To Kill a Mockingbird"), QStringLiteral("Harper Lee"), 1960, 4.5));
    bookList.append(new Book(QStringLiteral("The Great Gatsby"), QStringLiteral("F. Scott Fitzgerald"), 1925, 3.9));
    bookList.append(new Book(QStringLiteral("Moby Dick"), QStringLiteral("Herman Melville"), 1851, 3.6));
    bookList.append(new Book(QStringLiteral("War and Peace"), QStringLiteral("Leo Tolstoy"), 1867, 4.3));
    bookList.append(new Book(QStringLiteral("Pride and Prejudice"), QStringLiteral("Jane Austen"), 1813, 4.1));
    bookList.append(new Book(QStringLiteral("The Catcher in the Rye"), QStringLiteral("J.D. Salinger"), 1951, 3.9));
    bookList.append(new Book(QStringLiteral("Ulysses"), QStringLiteral("James Joyce"), 1922, 3.7));
    bookList.append(new Book(QStringLiteral("One Hundred Years of Solitude"), QStringLiteral("Gabriel Garcia Marquez"), 1967, 4.4));

    BookListModel *bookListModel = new BookListModel(bookList, &app);
    BookTableModel *bookTableModel = new BookTableModel(bookList, &app);

    QSortFilterProxyModel *listProxy = new QSortFilterProxyModel(&app);
    listProxy->setSourceModel(bookListModel);
    listProxy->setSortRole(BookListModel::YearRole);
    listProxy->sort(0, Qt::AscendingOrder);

    QSortFilterProxyModel *tableProxy = new QSortFilterProxyModel(&app);
    tableProxy->setSourceModel(bookTableModel);
    tableProxy->setSortRole(Qt::DisplayRole);
    tableProxy->sort(BookTableModel::YearRole, Qt::AscendingOrder);

    QQmlApplicationEngine engine;
    engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
    engine.rootContext()->setContextProperty(QStringLiteral("bookListModel"), listProxy);
    engine.rootContext()->setContextProperty(QStringLiteral("bookTableModel"), tableProxy);
    engine.load(QStringLiteral("qrc:/main.qml"));
    app.exec();
}