shift-shell/components/mobilehomescreencomponents/qml/LauncherGrid.qml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

82 lines
3.1 KiB
QML
Raw Normal View History

/*
2021-03-01 20:03:25 +00:00
* SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
*
2021-03-01 20:03:25 +00:00
* SPDX-License-Identifier: GPL-2.0-or-later
*/
import QtQuick 2.4
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.3 as Controls
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.kquickcontrolsaddons 2.0
import org.kde.kirigami 2.10 as Kirigami
2019-07-30 11:39:07 +00:00
import org.kde.plasma.private.containmentlayoutmanager 1.0 as ContainmentLayoutManager
2020-02-11 12:57:34 +00:00
import org.kde.plasma.private.nanoshell 2.0 as NanoShell
import org.kde.plasma.private.mobilehomescreencomponents 0.1 as HomeScreenComponents
2019-08-22 14:59:30 +00:00
2019-08-16 13:50:37 +00:00
LauncherContainer {
id: root
2019-08-30 14:14:34 +00:00
readonly property int columns: Math.floor(root.flow.width / cellWidth)
2021-09-13 16:40:56 +00:00
readonly property int cellWidth: root.flow.width / Math.floor(root.flow.width / ((availableCellHeight - reservedSpaceForLabel) + PlasmaCore.Units.smallSpacing*4))
2019-08-23 10:54:19 +00:00
readonly property int cellHeight: availableCellHeight
2020-07-16 12:51:58 +00:00
signal launched
2019-08-23 10:54:19 +00:00
frame.width: width
2019-08-16 13:50:37 +00:00
Repeater {
parent: root.flow
model: HomeScreenComponents.ApplicationListModel
delegate: HomeDelegate {
2019-08-16 13:50:37 +00:00
id: delegate
width: root.cellWidth
height: root.cellHeight
2019-08-22 11:14:28 +00:00
parent: parentFromLocation
property Item parentFromLocation: {
2020-03-20 00:58:46 +00:00
switch (model.applicationLocation) {
case HomeScreenComponents.ApplicationListModel.Desktop:
2019-08-16 13:50:37 +00:00
return appletsLayout;
case HomeScreenComponents.ApplicationListModel.Favorites:
2019-08-23 10:54:19 +00:00
return favoriteStrip.flow;
default:
2019-08-16 13:50:37 +00:00
return root.flow;
}
}
2019-09-02 16:23:38 +00:00
Component.onCompleted: {
if (model.applicationLocation === HomeScreenComponents.ApplicationListModel.Desktop) {
2019-09-02 16:23:38 +00:00
appletsLayout.restoreItem(delegate);
}
}
onLaunch: (x, y, icon, title) => {
if (icon !== "") {
NanoShell.StartupFeedback.open(
icon,
title,
delegate.iconItem.Kirigami.ScenePosition.x + delegate.iconItem.width/2,
delegate.iconItem.Kirigami.ScenePosition.y + delegate.iconItem.height/2,
Math.min(delegate.iconItem.width, delegate.iconItem.height));
}
2020-07-16 12:51:58 +00:00
root.launched();
}
onParentFromLocationChanged: {
2019-09-02 16:23:38 +00:00
if (!launcherDragManager.active && parent != parentFromLocation) {
parent = parentFromLocation;
if (model.applicationLocation === HomeScreenComponents.ApplicationListModel.Favorites) {
plasmoid.nativeInterface.stackBefore(delegate, parentFromLocation.children[index]);
} else if (model.applicationLocation === HomeScreenComponents.ApplicationListModel.Grid) {
plasmoid.nativeInterface.stackBefore(delegate, parentFromLocation.children[Math.max(0, index - HomeScreenComponents.ApplicationListModel.favoriteCount)]);
}
}
}
}
}
}
2019-08-16 13:50:37 +00:00