Warning, /pim/kube/views/search/qml/View.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * Copyright (C) 2017 Michael Bohlender, <michael.bohlender@kdemail.net>
0003 * Copyright (C) 2017 Christian Mollekopf, <mollekopf@kolabsys.com>
0004 *
0005 * This program is free software; you can redistribute it and/or modify
0006 * it under the terms of the GNU General Public License as published by
0007 * the Free Software Foundation; either version 2 of the License, or
0008 * (at your option) any later version.
0009 *
0010 * This program is distributed in the hope that it will be useful,
0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0013 * GNU General Public License for more details.
0014 *
0015 * You should have received a copy of the GNU General Public License along
0016 * with this program; if not, write to the Free Software Foundation, Inc.,
0017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0018 */
0019
0020
0021 import QtQuick 2.7
0022 import QtQuick.Controls 1.3 as Controls1
0023 import QtQuick.Controls 2
0024 import QtQuick.Layouts 1.1
0025
0026 import org.kube.framework 1.0 as Kube
0027
0028 Kube.View {
0029 id: root
0030 property string searchTerm: ""
0031
0032 //Initial search-box overlay
0033 Rectangle {
0034 parent: ApplicationWindow.overlay
0035 height: overlayArea.height
0036 width: overlayArea.width
0037 x: overlayArea.x
0038 y: overlayArea.y
0039
0040 visible: root.visible && root.searchTerm == ""
0041
0042 Row {
0043 anchors.centerIn: parent
0044
0045 spacing: Kube.Units.smallSpacing
0046
0047 Kube.TextField {
0048 id: searchField
0049 anchors.verticalCenter: parent.verticalCenter
0050 width: Kube.Units.gridUnit * 30
0051 focus: true
0052 text: root.searchTerm
0053 Keys.onEscapePressed: root.searchTerm = ""
0054 onAccepted: root.searchTerm = text
0055 }
0056
0057 Kube.PositiveButton {
0058 anchors.verticalCenter: parent.verticalCenter
0059 text: qsTr("Search")
0060 enabled: searchField.text != ""
0061 onClicked: root.searchTerm = searchField.text
0062 }
0063 }
0064 }
0065
0066 RowLayout {
0067 spacing: 0
0068 //Sidebar
0069 Rectangle {
0070 //It contains nothing useful right now
0071 visible: false
0072 Layout.fillHeight: true
0073 width: Kube.Units.gridUnit * 10
0074 color: Kube.Colors.darkBackgroundColor
0075 ColumnLayout {
0076 anchors {
0077 fill: parent
0078 margins: Kube.Units.smallSpacing
0079 }
0080 RowLayout {
0081 Kube.CheckBox {
0082 checked: false
0083 }
0084 Kube.Label {
0085 text: qsTr("Unread")
0086 color: Kube.Colors.highlightedTextColor
0087 }
0088 }
0089 RowLayout {
0090 Kube.CheckBox {
0091 checked: false
0092 }
0093 Kube.Label {
0094 text: qsTr("Important")
0095 color: Kube.Colors.highlightedTextColor
0096 }
0097 }
0098
0099 Kube.Label{
0100 text: qsTr("Accounts")
0101 color: Kube.Colors.highlightedTextColor
0102 font.weight: Font.Bold
0103 }
0104
0105 Kube.ListView {
0106 id: listView
0107 activeFocusOnTab: true
0108
0109 Layout.fillWidth: true
0110 Layout.fillHeight: true
0111 clip: true
0112 currentIndex: -1
0113 highlightFollowsCurrentItem: false
0114
0115 onCurrentItemChanged: {
0116 if (currentItem) {
0117 mailListView.currentAccount = currentItem.currentData.accountId
0118 }
0119 }
0120
0121 model: Kube.AccountsModel {}
0122
0123 delegate: Kube.ListDelegate {
0124 id: delegateRoot
0125
0126 width: listView.availableWidth
0127 height: Kube.Units.gridUnit * 1.5
0128
0129 color: Kube.Colors.darkBackgroundColor
0130 border.width: 0
0131 Kube.Label {
0132 anchors {
0133 centerIn: parent
0134 }
0135 text: model.name
0136 color: Kube.Colors.highlightedTextColor
0137 elide: Text.ElideRight
0138 }
0139 }
0140 }
0141 }
0142 }
0143
0144 Item {
0145 Layout.fillHeight: true
0146 Layout.fillWidth: true
0147 ColumnLayout {
0148 anchors.fill: parent
0149 spacing: 0
0150 Rectangle {
0151 id: toolbar
0152 Layout.fillWidth: true
0153 height: searchBar.height + Kube.Units.smallSpacing * 2
0154 color: Kube.Colors.backgroundColor
0155 Kube.TextField {
0156 id: searchBar
0157 anchors.horizontalCenter: parent.horizontalCenter
0158 anchors.verticalCenter: parent.verticalCenter
0159 text: root.searchTerm
0160 width: parent.width * 0.5
0161 placeholderText: qsTr("Search...")
0162 Keys.onEscapePressed: root.searchTerm = ""
0163 onTextChanged: {
0164 forceActiveFocus()
0165 mailListView.filter = text
0166 }
0167 }
0168 }
0169
0170 Controls1.SplitView {
0171 Layout.fillHeight: true
0172 Layout.fillWidth: true
0173 Kube.MailListView {
0174 id: mailListView
0175 width: Kube.Units.gridUnit * 18
0176 Layout.minimumWidth: Kube.Units.gridUnit * 10
0177 Layout.fillHeight: true
0178 }
0179 Kube.ConversationView {
0180 id: mailView
0181 Layout.minimumWidth: Kube.Units.gridUnit * 5
0182 Layout.fillWidth: true
0183 Layout.fillHeight: true
0184 activeFocusOnTab: true
0185 model: Kube.MailListModel {
0186 filter: {
0187 "singleMail": mailListView.currentMail,
0188 "headersOnly": false,
0189 "fetchMails": true
0190 }
0191 }
0192 }
0193 }
0194 }
0195 }
0196 }
0197 }