diff --git a/containment/package/contents/ui/abilities/Container.qml b/containment/package/contents/ui/abilities/Container.qml index 5710f9bbf..c10e0bca5 100644 --- a/containment/package/contents/ui/abilities/Container.qml +++ b/containment/package/contents/ui/abilities/Container.qml @@ -18,12 +18,46 @@ */ import QtQuick 2.7 +import org.kde.plasma.plasmoid 2.0 -ContainerPrivate { - id: apis +import org.kde.latte.abilities.containers 0.1 as ContainerAbility - readonly property Item publicApi: Item { - readonly property alias iconSize: apis.iconSize - readonly property alias maxIconSize: apis.maxIconSize +ContainerAbility.Container { + id: privateContainer + property Item animations: null + property Item autosize: null + + //! Signals + signal iconSizeAnimationEnded(); + + //! Public Properties + iconSize: autosizeEnabled && autosize.iconSize > 0 ? + Math.min(autosize.iconSize, maxIconSize) : + maxIconSize + maxIconSize: proportionIconSize!==-1 ? proportionIconSize : plasmoid.configuration.iconSize + + + //! Private Properties + readonly property int proportionIconSize: { //icon size based on screen height + if ((plasmoid.configuration.proportionIconSize===-1) || !latteView) + return -1; + + return Math.max(16,Math.round(latteView.screenGeometry.height * plasmoid.configuration.proportionIconSize/100/8)*8); + } + + readonly property bool autosizeEnabled: autosize !== undefined && autosize.isActive + + //! Behaviors + Behavior on iconSize { + enabled: !(root.editMode && root.behaveAsPlasmaPanel) + NumberAnimation { + duration: 0.8 * animations.duration.proposed + + onRunningChanged: { + if (!running) { + privateContainer.iconSizeAnimationEnded(); + } + } + } } } diff --git a/containment/package/contents/ui/abilities/ContainerPrivate.qml b/containment/package/contents/ui/abilities/ContainerPrivate.qml deleted file mode 100644 index f77f19d49..000000000 --- a/containment/package/contents/ui/abilities/ContainerPrivate.qml +++ /dev/null @@ -1,62 +0,0 @@ -/* -* Copyright 2020 Michail Vourlakos -* -* This file is part of Latte-Dock -* -* Latte-Dock is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License, or (at your option) any later version. -* -* Latte-Dock is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -import QtQuick 2.7 -import org.kde.plasma.plasmoid 2.0 - -Item { - id: privateContainer - property Item animations: null - - //! signals - signal iconSizeAnimationEnded(); - - //! properties - property int iconSize: autosizeEnabled && autosize.iconSize > 0 ? - Math.min(autosize.iconSize, maxIconSize) : - maxIconSize - - //what is the highest icon size based on what icon size is used, screen calculated or user specified - readonly property int maxIconSize: proportionIconSize!==-1 ? proportionIconSize : plasmoid.configuration.iconSize - - readonly property int proportionIconSize: { //icon size based on screen height - if ((plasmoid.configuration.proportionIconSize===-1) || !latteView) - return -1; - - return Math.max(16,Math.round(latteView.screenGeometry.height * plasmoid.configuration.proportionIconSize/100/8)*8); - } - - readonly property bool autosizeEnabled: autosize !== undefined && autosize.isActive - - property Item autosize - - //! Behaviors - Behavior on iconSize { - enabled: !(root.editMode && root.behaveAsPlasmaPanel) - NumberAnimation { - duration: 0.8 * animations.duration.proposed - - onRunningChanged: { - if (!running) { - privateContainer.iconSizeAnimationEnded(); - } - } - } - } -} diff --git a/declarativeimports/abilities/applets/Container.qml b/declarativeimports/abilities/applets/Container.qml new file mode 100644 index 000000000..c2380034a --- /dev/null +++ b/declarativeimports/abilities/applets/Container.qml @@ -0,0 +1,32 @@ +/* +* Copyright 2020 Michail Vourlakos +* +* This file is part of Latte-Dock +* +* Latte-Dock is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License, or (at your option) any later version. +* +* Latte-Dock is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +import QtQuick 2.0 + +import org.kde.latte.abilities.definitions 0.1 as AbilityDefinition + +AbilityDefinition.Container { + id: apis + property Item bridge: null + + iconSize: bridge ? bridge.container.iconSize : local.iconSize + maxIconSize: bridge ? bridge.container.maxIconSize : local.iconSize + + readonly property AbilityDefinition.Container local: AbilityDefinition.Container {} +} diff --git a/declarativeimports/abilities/applets/qmldir b/declarativeimports/abilities/applets/qmldir index ca4730efe..0e05c8b13 100644 --- a/declarativeimports/abilities/applets/qmldir +++ b/declarativeimports/abilities/applets/qmldir @@ -1,4 +1,5 @@ module org.kde.latte.abilities.applets Animations 0.1 Animations.qml +Container 0.1 Container.qml Requirements 0.1 Requirements.qml diff --git a/declarativeimports/abilities/containers/Container.qml b/declarativeimports/abilities/containers/Container.qml new file mode 100644 index 000000000..da629bf8e --- /dev/null +++ b/declarativeimports/abilities/containers/Container.qml @@ -0,0 +1,31 @@ +/* +* Copyright 2020 Michail Vourlakos +* +* This file is part of Latte-Dock +* +* Latte-Dock is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License, or (at your option) any later version. +* +* Latte-Dock is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +import QtQuick 2.0 + +import org.kde.latte.abilities.definitions 0.1 as AbilityDefinition + +AbilityDefinition.Container { + id: apis + + readonly property Item publicApi: Item { + readonly property alias iconSize: apis.iconSize + readonly property alias maxIconSize: apis.maxIconSize + } +} diff --git a/declarativeimports/abilities/containers/qmldir b/declarativeimports/abilities/containers/qmldir index f7d306967..16b68fc42 100644 --- a/declarativeimports/abilities/containers/qmldir +++ b/declarativeimports/abilities/containers/qmldir @@ -1,3 +1,4 @@ module org.kde.latte.abilities.containers Animations 0.1 Animations.qml +Container 0.1 Container.qml diff --git a/declarativeimports/abilities/definitions/Container.qml b/declarativeimports/abilities/definitions/Container.qml new file mode 100644 index 000000000..73375c29d --- /dev/null +++ b/declarativeimports/abilities/definitions/Container.qml @@ -0,0 +1,25 @@ +/* +* Copyright 2020 Michail Vourlakos +* +* This file is part of Latte-Dock +* +* Latte-Dock is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License, or (at your option) any later version. +* +* Latte-Dock is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +import QtQuick 2.0 + +Item { + property int iconSize: 48 + property int maxIconSize: 48 +} diff --git a/declarativeimports/abilities/definitions/qmldir b/declarativeimports/abilities/definitions/qmldir index 62a754d68..75d550b54 100644 --- a/declarativeimports/abilities/definitions/qmldir +++ b/declarativeimports/abilities/definitions/qmldir @@ -2,4 +2,5 @@ module org.kde.latte.abilities.definitions Animations 0.1 Animations.qml AppletRequirements 0.1 AppletRequirements.qml +Container 0.1 Container.qml diff --git a/plasmoid/package/contents/ui/abilities/Container.qml b/plasmoid/package/contents/ui/abilities/Container.qml index 3416ae286..23703a4e5 100644 --- a/plasmoid/package/contents/ui/abilities/Container.qml +++ b/plasmoid/package/contents/ui/abilities/Container.qml @@ -19,10 +19,10 @@ import QtQuick 2.7 -Item { - readonly property int iconSize: latteBridge ? latteBridge.container.iconSize : localIconSize - readonly property int maxIconSize: latteBridge ? latteBridge.container.maxIconSize : iconSize +import org.kde.plasma.plasmoid 2.0 - property int localIconSize: 48 +import org.kde.latte.abilities.applets 0.1 as AppletAbility +AppletAbility.Container { + local.iconSize: Math.max(plasmoid.configuration.iconSize, 16) } diff --git a/plasmoid/package/contents/ui/main.qml b/plasmoid/package/contents/ui/main.qml index 0244ced48..648ca7254 100644 --- a/plasmoid/package/contents/ui/main.qml +++ b/plasmoid/package/contents/ui/main.qml @@ -956,7 +956,7 @@ Item { Ability.Container { id: _container - localIconSize: Math.max(plasmoid.configuration.iconSize, 16) + bridge: latteBridge } AppletAbility.Requirements{