adding selection model in progress to library

This commit is contained in:
Chris Cochrun 2023-02-21 09:56:23 -06:00
parent 1421a068df
commit 891f6e395d

View file

@ -3,6 +3,7 @@ import QtQuick.Controls 2.15 as Controls
import QtQuick.Layouts 1.2 import QtQuick.Layouts 1.2
import Qt.labs.platform 1.1 as Labs import Qt.labs.platform 1.1 as Labs
import QtQuick.Pdf 5.15 import QtQuick.Pdf 5.15
import QtQml.Models 2.15
import org.kde.kirigami 2.13 as Kirigami import org.kde.kirigami 2.13 as Kirigami
import "./" as Presenter import "./" as Presenter
import org.presenter 1.0 import org.presenter 1.0
@ -120,15 +121,13 @@ Item {
}, },
Kirigami.Action { Kirigami.Action {
displayComponent: Component { id: songSearchField
Kirigami.SearchField { displayComponent: Kirigami.SearchField {
id: songSearchField id: searchField
height: parent.height height: parent.height
width: parent.width - 40 width: parent.width - 40
onAccepted: songProxyModel.setFilterRegularExpression(songSearchField.text) onAccepted: songProxyModel.setFilterRegularExpression(searchField.text)
}
} }
/* visible: selectedLibrary == "songs" */
} }
] ]
@ -147,6 +146,15 @@ Item {
Layout.alignment: Qt.AlignTop Layout.alignment: Qt.AlignTop
id: songLibraryList id: songLibraryList
model: songProxyModel model: songProxyModel
ItemSelectionModel {
id: songSelectionModel
model: songProxyModel
onSelectionChanged: {
showPassiveNotification("deslected: " + deselected);
showPassiveNotification("selected: " + selected);
console.log(selected);
}
}
delegate: songDelegate delegate: songDelegate
state: "selected" state: "selected"
@ -184,6 +192,7 @@ Item {
id: songListItem id: songListItem
property bool rightMenu: false property bool rightMenu: false
property bool selected: songSelectionModel.isSelected(songProxyModel.idx(index))
implicitWidth: songLibraryList.width implicitWidth: songLibraryList.width
height: selectedLibrary == "songs" ? 50 : 0 height: selectedLibrary == "songs" ? 50 : 0
@ -193,20 +202,16 @@ Item {
icon: "folder-music-symbolic" icon: "folder-music-symbolic"
iconSize: Kirigami.Units.gridUnit iconSize: Kirigami.Units.gridUnit
supportsMouseEvents: false supportsMouseEvents: false
backgroundColor: { backgroundColor: Kirigami.Theme.backgroundColor;
if (parent.ListView.isCurrentItem) { Binding on backgroundColor {
Kirigami.Theme.highlightColor; when: songDragHandler.containsMouse || (songSelectionModel.hasSelection && songSelectionModel.isSelected(songProxyModel.idx(index)))
} else if (songDragHandler.containsMouse){ value: Kirigami.Theme.highlightColor
Kirigami.Theme.highlightColor;
} else {
Kirigami.Theme.backgroundColor;
}
} }
textColor: {
if (parent.ListView.isCurrentItem || songDragHandler.containsMouse) textColor: Kirigami.Theme.textColor;
activeTextColor; Binding on textColor {
else when: songDragHandler.containsMouse || (songSelectionModel.hasSelection && songSelectionModel.isSelected(songProxyModel.idx(index)))
Kirigami.Theme.textColor; value: Kirigami.Theme.highlightedTextColor
} }
Behavior on height { Behavior on height {
@ -268,17 +273,24 @@ Item {
anchors.fill: parent anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: { onClicked: {
if(mouse.button == Qt.RightButton) if (mouse.button === Qt.RightButton)
rightClickSongMenu.popup() rightClickSongMenu.popup()
else{ else if ((mouse.button === Qt.LeftButton) &&
/* showPassiveNotification(title + id, 3000); */ (mouse.modifiers === Qt.ShiftModifier)) {
songLibraryList.currentIndex = index; selectSongs(index);
if (!editMode) } else {
editMode = true; songSelectionModel.select(songProxyModel.idx(index),
editType = "song"; ItemSelectionModel.ClearAndSelect);
editSwitch(id);
} }
} }
onDoubleClicked: {
songLibraryList.currentIndex = index;
if (!editMode)
editMode = true;
editType = "song";
editSwitch(id);
}
} }
} }
@ -312,8 +324,8 @@ Item {
} }
function newSong() { function newSong() {
songProxyModel.setFilterRegularExpression("");
songProxyModel.songModel.newSong(); songProxyModel.songModel.newSong();
songSearchField.clear();
songLibraryList.currentIndex = songProxyModel.songModel.rowCount() - 1; songLibraryList.currentIndex = songProxyModel.songModel.rowCount() - 1;
if (!editMode) if (!editMode)
editMode = true; editMode = true;
@ -422,7 +434,10 @@ Item {
icon.name: "document-new" icon.name: "document-new"
text: "New Video" text: "New Video"
tooltip: "Add a new video" tooltip: "Add a new video"
onTriggered: videoLibraryList.newVideo() onTriggered: {
videoProxyModel.setFilterRegularExpression("");
videoLibraryList.newVideo();
}
/* visible: selectedLibrary == "videos" */ /* visible: selectedLibrary == "videos" */
}, },
@ -717,7 +732,10 @@ Item {
icon.name: "document-new" icon.name: "document-new"
text: "New Image" text: "New Image"
tooltip: "Add a new image" tooltip: "Add a new image"
onTriggered: imageLibraryList.newImage() onTriggered: {
imageProxyModel.setFilterRegularExpression("");
imageLibraryList.newImage();
}
/* visible: selectedLibrary == "images" */ /* visible: selectedLibrary == "images" */
}, },
@ -1011,7 +1029,7 @@ Item {
icon.name: "document-new" icon.name: "document-new"
text: "New Presentation" text: "New Presentation"
tooltip: "Add a new presentation" tooltip: "Add a new presentation"
onTriggered: presentationLibraryList.newPresentation() onTriggered: presentationLibraryList.newPresentation();
/* visible: selectedLibrary == "presentations" */ /* visible: selectedLibrary == "presentations" */
}, },
@ -1204,6 +1222,9 @@ Item {
active: hovered || pressed active: hovered || pressed
} }
function newPresentation() {
presProxyModel.setFilterRegularExpression("");
}
} }
Rectangle { Rectangle {