PimEventsConfig.qml 3.68 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
/*
 * Copyright 2016 Daniel Vrátil <dvratil@kde.org>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License or (at your option) version 3 or any later version
 * accepted by the membership of KDE e.V. (or its successor approved
 * by the membership of KDE e.V.), which shall act as a proxy
 * defined in Section 14 of version 3 of the license.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 */

import QtQuick 2.0
22 23 24
import QtQuick.Controls 1.4
// gives us TextSingleton
import QtQuick.Controls.Private 1.0
25 26
import QtQuick.Layouts 1.0
import QtQuick.Dialogs 1.1
27 28
import org.kde.plasma.core 2.0
import org.kde.plasma.PimCalendars 1.0
29 30 31 32 33 34

Item {
    id: pimEventsConfig
    width: parent.width
    height: parent.height

35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
    signal configurationChanged

    function saveConfig()
    {
        calendarModel.saveConfig();
    }

    PimCalendarsModel {
            id: calendarModel
    }

    // Invisible, used to measure implicitHeight of checkboxes so we can
    // adjust row height in rowDelegate
    CheckBox {
        id: checkboxSize
50 51
        visible: false
    }
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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

    TreeView {
        id: calendarTreeView;

        anchors.fill: parent

        model: calendarModel

        TableViewColumn {
            role: "data"
            title: "Select Calendars";
            delegate: Item {
                CheckBox {
                    id: checkbox
                    visible: styleData.value["enabled"]
                    checked: styleData.value["checked"]
                    onCheckedChanged: {
                        if (checked == styleData.value["checked"]) {
                            return;
                        }
                        calendarModel.setChecked(styleData.value["id"], checked);
                        pimEventsConfig.configurationChanged();
                    }
                    width: 24
                    height: 24
                }
                IconItem {
                    id: icon
                    anchors.left: checkbox.visible ? checkbox.right : parent.left
                    visible: valid
                    source: styleData.value["iconName"]
                    height: 20
                    width: 20
                }
                Text {
                    anchors.left: icon.visible ? icon.right : checkbox.visible ? checkbox.right : parent.left

                    text: styleData.value["name"]
                    horizontalAlignment: Qt.AlignLeft
                    verticalAlignment: Qt.AlignVCenter
                    color: styleData.textColor
                    height: 24
                }
            }
        }

        // Based on Desktop.TableViewStyle
        rowDelegate: BorderImage {
            visible: styleData.selected || styleData.alternate
            source: "image://__tablerow/" + (styleData.alternate ? "alternate_" : "")
                        + (styleData.selected ? "selected_" : "")
                        + (calendarTreeView.activeFocus ? "active" : "")
            // Make sure the checkbox always fits, add 4 for some small margin
            height: Math.min(checkboxSize.implicitHeight, Math.max(16, TextSingleton.implicitHeight * 1.2)) + 4
            border {
                left: 4
                right: 4
            }
        }
    }
112
}