补充进入搜索框时,带入当前字母;解决重命名和按键焦点冲突问题

This commit is contained in:
qiqi 2023-05-23 11:54:17 +08:00 committed by He Sir
parent f37cf0ece0
commit eb1b79fe43
8 changed files with 94 additions and 24 deletions

View File

@ -19,6 +19,7 @@ MouseArea {
alpha: 0.55 alpha: 0.55
} }
} }
StyleBackground { StyleBackground {
id: controlBase id: controlBase
anchors.fill: parent anchors.fill: parent
@ -84,9 +85,9 @@ MouseArea {
selectByMouse: true selectByMouse: true
maximumLength: 14 maximumLength: 14
onEditingFinished: { function editStatusEnd() {
modelManager.getAppModel().renameFolder(id, text);
control.editStatus = false; control.editStatus = false;
control.focus = true;
} }
function updateTextInputColor() { function updateTextInputColor() {
@ -94,12 +95,15 @@ MouseArea {
selectionColor = themePalette.paletteColor(Palette.Highlight); selectionColor = themePalette.paletteColor(Palette.Highlight);
} }
onEditingFinished: {
modelManager.getAppModel().renameFolder(id, text);
textChange.editStatusEnd();
}
Component.onCompleted: { Component.onCompleted: {
updateTextInputColor(); updateTextInputColor();
themePalette.styleColorChanged.connect(updateTextInputColor); themePalette.styleColorChanged.connect(updateTextInputColor);
forceActiveFocus(); forceActiveFocus();
} }
Component.onDestruction: themePalette.styleColorChanged.disconnect(updateTextInputColor); Component.onDestruction: themePalette.styleColorChanged.disconnect(updateTextInputColor);
} }
@ -120,12 +124,10 @@ MouseArea {
onClicked: { onClicked: {
textChange.text = name; textChange.text = name;
control.editStatus = false; textChange.editStatusEnd();
} }
} }
} }
} }
Loader { Loader {

View File

@ -27,9 +27,9 @@ Item {
id: appListRoot id: appListRoot
property string title: "" property string title: ""
property string idSelect: "" property string idSelect: ""
property bool folderEditStatus: false
signal labelItemClicked() signal labelItemClicked()
signal openFolderPageSignal(string folderId, string folderName); signal openFolderPageSignal(string folderId, string folderName)
function labelSelection(labelId) { function labelSelection(labelId) {
appListView.view.positionViewAtIndex(appListView.model.getLabelIndex(labelId), ListView.Beginning) appListView.view.positionViewAtIndex(appListView.model.getLabelIndex(labelId), ListView.Beginning)
} }
@ -42,6 +42,16 @@ Item {
id: appListView id: appListView
anchors.fill: parent anchors.fill: parent
// listview
//
onContainsMouseChanged: clearViewFocus()
onPositionChanged: clearViewFocus()
function clearViewFocus() {
if(!folderEditStatus) {
appListView.listFocus = false
}
}
model: modelManager.getAppModel() model: modelManager.getAppModel()
delegate: Component { delegate: Component {
Loader { Loader {
@ -188,6 +198,7 @@ Item {
appListView.model.renameText.disconnect(toEditText); appListView.model.renameText.disconnect(toEditText);
} }
onEditStatusChanged: folderEditStatus = editStatus;
function toEditText(idOfIndex){ function toEditText(idOfIndex){
if (id === idOfIndex) { if (id === idOfIndex) {
editStatus = true; editStatus = true;

View File

@ -32,7 +32,7 @@ MouseArea {
property int itemHeight: 40 property int itemHeight: 40
hoverEnabled: true hoverEnabled: true
clip: true clip: true
onContainsMouseChanged: listView.focus = false
AppControls2.StyleBackground { AppControls2.StyleBackground {
anchors.top: parent.top anchors.top: parent.top
width: parent.width width: parent.width
@ -57,6 +57,7 @@ MouseArea {
highlightMoveDuration: 0 highlightMoveDuration: 0
boundsBehavior: Flickable.StopAtBounds boundsBehavior: Flickable.StopAtBounds
ScrollBar.vertical: listViewScrollBar ScrollBar.vertical: listViewScrollBar
// listView // listView
onActiveFocusChanged: currentIndex = 0 onActiveFocusChanged: currentIndex = 0
onCountChanged: currentIndex = 0 onCountChanged: currentIndex = 0

View File

@ -26,13 +26,13 @@ import org.ukui.menu.utils 1.0
Item { Item {
id: appPageHeaderRoot id: appPageHeaderRoot
property string title: "" property string title: ""
required property Item focusToListView property Item focusToListView
property Component content: null property Component content: null
clip: true clip: true
function changeToSearch() { function changeToSearch(keyEvent) {
if (appPageHeaderRoot.content === null) { if (appPageHeaderRoot.content === null) {
loader.item.state = "search"; loader.item.changeToSearchState(keyEvent);
} }
} }
@ -50,6 +50,11 @@ Item {
Item { Item {
id: root id: root
function changeToSearchState(keyEvent) {
state = "search";
searchInputBar.text = keyEvent;
}
state: "normal" state: "normal"
states: [ states: [
State { State {
@ -128,7 +133,7 @@ Item {
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
radius: 16 radius: 16
keyDownTarget: focusToListView changeFocusTarget: focusToListView
onTextChanged: { onTextChanged: {
if (text === "") { if (text === "") {
pluginSelectMenu.model.reactivateProvider(); pluginSelectMenu.model.reactivateProvider();

View File

@ -11,14 +11,14 @@ FocusScope {
} }
function keyPressed(event) { function keyPressed(event) {
// 0-9 a-z // 0-9 a-z
if ((0x2f < event.key && event.key < 0x3a )||(0x40 < event.key && event.key < 0x5b)) { if ((0x2f < event.key && event.key < 0x3a)||(0x40 < event.key && event.key < 0x5b)) {
focus = true; focus = true;
appPage.header.changeToSearch(); appPage.header.changeToSearch(event.text);
// //
} else if ( 0x01000011 < event.key && event.key < 0x01000016) { } else if ((0x01000011 < event.key)&&(event.key < 0x01000016)) {
focus = true; focus = true;
appPage.content.resetFocus();
appPage.content.focus = true; appPage.content.focus = true;
appPage.content.resetFocus();
} }
} }

View File

@ -23,8 +23,8 @@ import org.ukui.menu.core 1.0
import AppControls2 1.0 as AppControls2 import AppControls2 1.0 as AppControls2
AppControls2.StyleBackground { AppControls2.StyleBackground {
property Item keyDownTarget property Item changeFocusTarget
readonly property string text: textInput.text; property alias text: textInput.text;
alpha: 0.04 alpha: 0.04
useStyleTransparent: false useStyleTransparent: false
@ -98,8 +98,14 @@ AppControls2.StyleBackground {
font.pointSize: defaultText.font.pointSize font.pointSize: defaultText.font.pointSize
focus: parent.visible || mainWindow.isFullScreen focus: parent.visible || mainWindow.isFullScreen
KeyNavigation.down: keyDownTarget activeFocusOnTab: true
onEditingFinished: KeyNavigation.down = keyDownTarget function changeFocusToListView() {
if (!mainWindow.isFullScreen) {
changeFocusTarget.focus = true
}
}
onEditingFinished: changeFocusToListView()
Keys.onDownPressed: changeFocusToListView()
// //
property int textColor: mainWindow.isFullScreen ? Palette.HighlightedText : Palette.Text property int textColor: mainWindow.isFullScreen ? Palette.HighlightedText : Palette.Text

View File

@ -99,6 +99,9 @@ Item {
onLoaded: { onLoaded: {
item.send.connect(extensionListView.send); item.send.connect(extensionListView.send);
} }
Keys.onTabPressed: {
extensionListView.focus = true
}
} }
} }
@ -170,6 +173,7 @@ Item {
height: ListView.view ? ListView.view.height : 0 height: ListView.view ? ListView.view.height : 0
activeFocusOnTab: true activeFocusOnTab: true
KeyNavigation.down: extensionLoader
Keys.onPressed: { Keys.onPressed: {
if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) { if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) {
ListView.view.currentIndex = model.index; ListView.view.currentIndex = model.index;

View File

@ -53,6 +53,38 @@ UkuiMenuExtension {
property int exchangedStartIndex: 0 property int exchangedStartIndex: 0
property int spacing: 4 property int spacing: 4
property int itemHeight: 104 property int itemHeight: 104
property int column: Math.floor(width / cellWidth)
//
focus: true
onActiveFocusChanged: currentIndex = 0
onCountChanged: currentIndex = 0
Keys.onRightPressed: {
if(currentIndex === count - 1) {
currentIndex = 0;
return;
}
currentIndex++;
}
Keys.onLeftPressed: {
if(currentIndex === 0) {
currentIndex = count - 1;
return;
}
currentIndex--;
}
Keys.onDownPressed: {
if(currentIndex > count - 1 - column) {
return;
}
currentIndex = currentIndex + column;
}
Keys.onUpPressed: {
if(currentIndex < column) {
return;
}
currentIndex = currentIndex - column;
}
ScrollBar.vertical: AppControls2.ScrollBar { ScrollBar.vertical: AppControls2.ScrollBar {
id: scrollBar id: scrollBar
@ -73,16 +105,26 @@ UkuiMenuExtension {
onEntered: { onEntered: {
visualModel.items.move(drag.source.visualIndex, icon.visualIndex) visualModel.items.move(drag.source.visualIndex, icon.visualIndex)
} }
Binding { target: icon; property: "visualIndex"; value: visualIndex } Binding { target: icon; property: "visualIndex"; value: visualIndex }
focus: true
Keys.onReturnPressed: {
var data = {"id": model.id};
send(data);
}
states: State {
when: delegateRoot.activeFocus
PropertyChanges {
target: icon
alpha: 0.6
}
}
AppControls2.StyleBackground { AppControls2.StyleBackground {
id: icon id: icon
height: favoriteView.itemHeight; width: height height: favoriteView.itemHeight; width: height
property bool hold: false property bool hold: false
property int visualIndex: 0 property int visualIndex: 0
x: 0; y: 0 x: 0; y: 0
radius: 8 radius: 8
useStyleTransparent: false useStyleTransparent: false
scale: icon.hold ? 1.1 :1.0 scale: icon.hold ? 1.1 :1.0
@ -91,7 +133,6 @@ UkuiMenuExtension {
Behavior on scale { Behavior on scale {
NumberAnimation { duration: 300; easing.type: Easing.InOutCubic } NumberAnimation { duration: 300; easing.type: Easing.InOutCubic }
} }
AppControls2.IconLabel { AppControls2.IconLabel {
height: icon.height height: icon.height
width: icon.width - 14 width: icon.width - 14