trying to fix
This commit is contained in:
parent
fa407dfeb6
commit
e013d7569e
22945 changed files with 447936 additions and 0 deletions
368
%backup%~
Normal file
368
%backup%~
Normal file
|
@ -0,0 +1,368 @@
|
|||
/*
|
||||
SPDX-FileCopyrightText: 2014 Marco Martin <mart@kde.org>
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
import QtQuick 2.6
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Window 2.1
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import org.kde.plasma.components 2.0 as PlasmaComponents // For Highlight
|
||||
import org.kde.plasma.components 3.0 as PlasmaComponents3
|
||||
import org.kde.plasma.extras 2.0 as PlasmaExtras
|
||||
import org.kde.milou 0.1 as Milou
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
property string query
|
||||
property string runner
|
||||
property bool showHistory: false
|
||||
property alias runnerManager: results.runnerManager
|
||||
|
||||
LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft
|
||||
LayoutMirroring.childrenInherit: true
|
||||
|
||||
onQueryChanged: {
|
||||
queryField.text = query;
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: runnerWindow
|
||||
function onVisibleChanged() {
|
||||
if (runnerWindow.visible) {
|
||||
queryField.forceActiveFocus();
|
||||
listView.currentIndex = -1
|
||||
if (runnerManager.retainPriorSearch) {
|
||||
// If we manually specified a query(D-Bus invocation) we don't want to retain the prior search
|
||||
if (!query) {
|
||||
queryField.text = runnerManager.priorSearch
|
||||
queryField.select(root.query.length, 0)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (runnerManager.retainPriorSearch) {
|
||||
runnerManager.priorSearch = root.query
|
||||
}
|
||||
root.runner = ""
|
||||
root.query = ""
|
||||
root.showHistory = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: root
|
||||
function onShowHistoryChanged() {
|
||||
if (showHistory) {
|
||||
// we store 50 entries in the history but only show 20 in the UI so it doesn't get too huge
|
||||
listView.model = runnerManager.history.slice(0, 20)
|
||||
} else {
|
||||
listView.model = []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
PlasmaComponents3.ToolButton {
|
||||
icon.name: "configure"
|
||||
onClicked: {
|
||||
runnerWindow.visible = false
|
||||
runnerWindow.displayConfiguration()
|
||||
}
|
||||
Accessible.name: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Configure")
|
||||
Accessible.description: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Configure Search Plugins")
|
||||
visible: runnerWindow.canConfigure
|
||||
PlasmaComponents3.ToolTip {
|
||||
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Configure KRunner…")
|
||||
}
|
||||
}
|
||||
PlasmaComponents3.TextField {
|
||||
id: queryField
|
||||
property bool allowCompletion: false
|
||||
|
||||
clearButtonShown: true
|
||||
Layout.minimumWidth: PlasmaCore.Units.gridUnit * 25
|
||||
Layout.maximumWidth: PlasmaCore.Units.gridUnit * 25
|
||||
|
||||
inputMethodHints: Qt.ImhNoPredictiveText
|
||||
|
||||
activeFocusOnPress: true
|
||||
placeholderText: results.runnerName ? i18ndc("plasma_lookandfeel_org.kde.lookandfeel",
|
||||
"Textfield placeholder text, query specific KRunner",
|
||||
"Search '%1'…", results.runnerName)
|
||||
: i18ndc("plasma_lookandfeel_org.kde.lookandfeel",
|
||||
"Textfield placeholder text", "Search…")
|
||||
|
||||
PlasmaComponents3.BusyIndicator {
|
||||
anchors {
|
||||
right: parent.right
|
||||
top: parent.top
|
||||
bottom: parent.bottom
|
||||
margins: PlasmaCore.Units.smallSpacing
|
||||
rightMargin: height
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: queryTimer
|
||||
property bool queryDisplay: false
|
||||
running: results.querying
|
||||
repeat: true
|
||||
onRunningChanged: if (queryDisplay && !running) {
|
||||
queryDisplay = false
|
||||
}
|
||||
onTriggered: if (!queryDisplay) {
|
||||
queryDisplay = true
|
||||
}
|
||||
interval: 500
|
||||
}
|
||||
|
||||
running: queryTimer.queryDisplay
|
||||
}
|
||||
function move_up() {
|
||||
if (length === 0) {
|
||||
root.showHistory = true;
|
||||
if (listView.count > 0) {
|
||||
listView.forceActiveFocus();
|
||||
}
|
||||
} else if (results.count > 0) {
|
||||
results.forceActiveFocus();
|
||||
results.decrementCurrentIndex();
|
||||
}
|
||||
}
|
||||
|
||||
function move_down() {
|
||||
if (length === 0) {
|
||||
root.showHistory = true;
|
||||
if (listView.count > 0) {
|
||||
listView.forceActiveFocus();
|
||||
}
|
||||
} else if (results.count > 0) {
|
||||
results.forceActiveFocus();
|
||||
results.incrementCurrentIndex();
|
||||
}
|
||||
}
|
||||
|
||||
onTextChanged: {
|
||||
root.query = queryField.text
|
||||
if (allowCompletion && length > 0 && runnerManager.historyEnabled) {
|
||||
var oldText = text
|
||||
var suggestedText = runnerManager.getHistorySuggestion(text);
|
||||
if (suggestedText.length > 0) {
|
||||
text = text + suggestedText.substr(oldText.length)
|
||||
select(text.length, oldText.length)
|
||||
}
|
||||
}
|
||||
}
|
||||
Keys.onPressed: {
|
||||
allowCompletion = (event.key !== Qt.Key_Backspace && event.key !== Qt.Key_Delete)
|
||||
|
||||
if (event.modifiers & Qt.ControlModifier) {
|
||||
if (event.key === Qt.Key_J) {
|
||||
move_down()
|
||||
event.accepted = true;
|
||||
} else if (event.key === Qt.Key_K) {
|
||||
move_up()
|
||||
event.accepted = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Keys.onUpPressed: move_up()
|
||||
Keys.onDownPressed: move_down()
|
||||
function closeOrRun(event) {
|
||||
// Close KRunner if no text was typed and enter was pressed, FEATURE: 211225
|
||||
if (!root.query) {
|
||||
runnerWindow.visible = false
|
||||
} else {
|
||||
results.runCurrentIndex(event)
|
||||
}
|
||||
}
|
||||
Keys.onEnterPressed: closeOrRun(event)
|
||||
Keys.onReturnPressed: closeOrRun(event)
|
||||
|
||||
Keys.onEscapePressed: {
|
||||
runnerWindow.visible = false
|
||||
}
|
||||
|
||||
PlasmaCore.SvgItem {
|
||||
anchors {
|
||||
right: parent.right
|
||||
rightMargin: 6 // from PlasmaStyle TextFieldStyle
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
// match clear button
|
||||
width: Math.max(parent.height * 0.8, PlasmaCore.Units.iconSizes.small)
|
||||
height: width
|
||||
svg: PlasmaCore.Svg {
|
||||
imagePath: "widgets/arrows"
|
||||
colorGroup: PlasmaCore.Theme.ButtonColorGroup
|
||||
}
|
||||
elementId: "down-arrow"
|
||||
visible: queryField.length === 0 && runnerManager.historyEnabled
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onPressed: {
|
||||
root.showHistory = !root.showHistory
|
||||
if (root.showHistory) {
|
||||
listView.forceActiveFocus(); // is the history list
|
||||
} else {
|
||||
queryField.forceActiveFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PlasmaComponents3.ToolButton {
|
||||
checkable: true
|
||||
checked: runnerWindow.pinned
|
||||
onToggled: runnerWindow.pinned = checked
|
||||
icon.name: "window-pin"
|
||||
Accessible.name: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Pin")
|
||||
Accessible.description: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Pin Search")
|
||||
PlasmaComponents3.ToolTip {
|
||||
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Keep Open")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PlasmaExtras.ScrollArea {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
visible: results.count > 0
|
||||
enabled: visible
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: Math.min(Screen.height, results.contentHeight)
|
||||
|
||||
Milou.ResultsView {
|
||||
id: results
|
||||
queryString: root.query
|
||||
runner: root.runner
|
||||
|
||||
Keys.onPressed: {
|
||||
var ctrl = event.modifiers & Qt.ControlModifier;
|
||||
if (ctrl && event.key === Qt.Key_J) {
|
||||
incrementCurrentIndex()
|
||||
} else if (ctrl && event.key === Qt.Key_K) {
|
||||
decrementCurrentIndex()
|
||||
} else if (event.text !== "") {
|
||||
// This prevents unprintable control characters from being inserted
|
||||
if (!/[\x00-\x1F\x7F]/.test(event.text)) {
|
||||
queryField.text += event.text;
|
||||
}
|
||||
queryField.cursorPosition = queryField.text.length
|
||||
queryField.focus = true;
|
||||
}
|
||||
}
|
||||
|
||||
Keys.onEscapePressed: {
|
||||
runnerWindow.visible = false
|
||||
}
|
||||
|
||||
onActivated: {
|
||||
runnerWindow.visible = false
|
||||
}
|
||||
|
||||
onUpdateQueryString: {
|
||||
queryField.text = text
|
||||
queryField.cursorPosition = cursorPosition
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PlasmaExtras.ScrollArea {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
Layout.fillWidth: true
|
||||
visible: root.query.length === 0 && listView.count > 0
|
||||
// don't accept keyboard input when not visible so the keys propagate to the other list
|
||||
enabled: visible
|
||||
Layout.preferredHeight: Math.min(Screen.height, listView.contentHeight)
|
||||
|
||||
ListView {
|
||||
id: listView // needs this id so the delegate can access it
|
||||
keyNavigationWraps: true
|
||||
highlight: PlasmaComponents.Highlight {}
|
||||
highlightMoveDuration: 0
|
||||
activeFocusOnTab: true
|
||||
model: []
|
||||
delegate: Milou.ResultDelegate {
|
||||
id: resultDelegate
|
||||
width: listView.width
|
||||
typeText: index === 0 ? i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Recent Queries") : ""
|
||||
additionalActions: [{
|
||||
icon: "list-remove",
|
||||
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Remove")
|
||||
}]
|
||||
Accessible.description: i18n("in category recent queries")
|
||||
}
|
||||
|
||||
onActiveFocusChanged: {
|
||||
if (!activeFocus && currentIndex == listView.count-1) {
|
||||
currentIndex = 0;
|
||||
}
|
||||
}
|
||||
Keys.onReturnPressed: runCurrentIndex(event)
|
||||
Keys.onEnterPressed: runCurrentIndex(event)
|
||||
|
||||
Keys.onTabPressed: {
|
||||
if (currentIndex == listView.count-1) {
|
||||
listView.nextItemInFocusChain(true).forceActiveFocus();
|
||||
} else {
|
||||
incrementCurrentIndex()
|
||||
}
|
||||
}
|
||||
Keys.onBacktabPressed: {
|
||||
if (currentIndex == 0) {
|
||||
listView.nextItemInFocusChain(false).forceActiveFocus();
|
||||
} else {
|
||||
decrementCurrentIndex()
|
||||
}
|
||||
}
|
||||
Keys.onPressed: {
|
||||
var ctrl = event.modifiers & Qt.ControlModifier;
|
||||
if (ctrl && event.key === Qt.Key_J) {
|
||||
incrementCurrentIndex()
|
||||
} else if (ctrl && event.key === Qt.Key_K) {
|
||||
decrementCurrentIndex()
|
||||
} else if (event.text !== "") {
|
||||
// This prevents unprintable control characters from being inserted
|
||||
if (event.key == Qt.Key_Escape) {
|
||||
root.showHistory = false
|
||||
} else if (!/[\x00-\x1F\x7F]/.test(event.text)) {
|
||||
queryField.text += event.text;
|
||||
}
|
||||
queryField.focus = true;
|
||||
}
|
||||
}
|
||||
|
||||
Keys.onUpPressed: decrementCurrentIndex()
|
||||
Keys.onDownPressed: incrementCurrentIndex()
|
||||
|
||||
function runCurrentIndex(event) {
|
||||
var entry = runnerManager.history[currentIndex]
|
||||
if (entry) {
|
||||
// If user presses Shift+Return to invoke an action, invoke the first runner action
|
||||
if (event && event.modifiers === Qt.ShiftModifier
|
||||
&& currentItem.additionalActions && currentItem.additionalActions.length > 0) {
|
||||
runAction(0);
|
||||
return
|
||||
}
|
||||
|
||||
queryField.text = entry
|
||||
queryField.forceActiveFocus();
|
||||
}
|
||||
}
|
||||
|
||||
function runAction(actionIndex) {
|
||||
if (actionIndex === 0) {
|
||||
// QStringList changes just reset the model, so we'll remember the index and set it again
|
||||
var currentIndex = listView.currentIndex
|
||||
runnerManager.removeFromHistory(currentIndex)
|
||||
model = runnerManager.history
|
||||
listView.currentIndex = currentIndex
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue