1/*
2    SPDX-FileCopyrightText: 2012-2013 Daniel Nicoletti <dantti12@gmail.com>
3    SPDX-FileCopyrightText: 2014-2015 Jan Grulich <jgrulich@redhat.com>
4
5    SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8import QtQuick 2.2
9import QtQuick.Controls 1.3
10import org.kde.plasma.extras 2.0 as PlasmaExtras
11import org.kde.plasma.components 2.0 as PlasmaComponents // for Highlight
12import org.kde.plasma.printmanager 0.2 as PrintManager
13
14FocusScope {
15    id: dialog
16
17    property bool scrollBarVisible: printersView.contentHeight > scrollArea.height
18    property bool searchBarVisible: scrollBarVisible || searchBar.text.length !== 0
19
20
21    TextField {
22        id: searchBar
23
24        anchors {
25            left: parent.left
26            right: parent.right
27            top: parent.top
28            rightMargin: Math.round(units.gridUnit / 2)
29        }
30
31        visible: searchBarVisible
32        placeholderText: i18n("Search for a printer...")
33
34        onTextChanged: {
35            printersFilterModel.setFilterWildcard(text)
36        }
37    }
38
39    PrintManager.ProcessRunner {
40        id: processRunner
41    }
42
43    PrintManager.PrinterSortFilterModel {
44        id: printersFilterModel
45        sourceModel: printersModel
46    }
47
48    PlasmaExtras.ScrollArea {
49        id: scrollArea
50        anchors {
51            bottom: parent.bottom
52            left: parent.left
53            right: parent.right
54            top: searchBarVisible ? searchBar.bottom : parent.top
55        }
56
57        ListView {
58            id: printersView
59
60            anchors.fill: parent
61            focus: true
62            currentIndex: -1
63            clip: true
64            model: printersFilterModel
65            highlight: PlasmaComponents.Highlight{ }
66            highlightMoveDuration: 0
67            highlightResizeDuration: 0
68            delegate: PrinterItem {
69                width: printersView.width
70            }
71
72            PlasmaExtras.PlaceholderMessage {
73                anchors.centerIn: parent
74                width: parent.width - (units.largeSpacing * 4)
75
76                visible: printersFilterModel.count === 0 || serverUnavailable
77                text: serverUnavailable ?
78                        printersModelError :
79                        i18n("No printers have been configured or discovered")
80                iconName: serverUnavailable ? "dialog-error" : ""
81            }
82        }
83    }
84}
85