introduce AppletAbilities as qml library

--introduce AppletAbilities qml library which is going
to be available to all applets to use it freely. In the stage
all components will be qml-only but in the future when
any of the components have been stabilized for their
apis then many of them could gain c++ implementation
pull/15/head
Michail Vourlakos 5 years ago
parent 810dd5a1b4
commit 3bee600a98

@ -19,7 +19,6 @@
import QtQuick 2.7
import org.kde.latte 0.2 as Latte
import org.kde.latte.core 0.2 as LatteCore
Item{

@ -19,7 +19,7 @@
import QtQuick 2.7
import org.kde.latte.abilities 0.1 as Abilities
import org.kde.latte.container.abilities 0.1 as ContainerAbility
import "../../../code/AppletIdentifier.js" as AppletIdentifier
@ -52,13 +52,9 @@ Item{
//! END OF PROPERTIES
//! BEGIN OF PUBLIC PROPERTIES SET THROUGH LATTEBRIDGE.ACTIONS
readonly property Item requires: Abilities.AppletRequirements{}
readonly property Item requires: ContainerAbility.AppletRequirements{}
//! END OF PUBLIC PROPERTIES SET THROUGH LATTEBRIDGE.ACTIONS
//! BEGIN OF PROPERTY CHANGES
//! END OF PROPERTY CHANGES
property bool windowsTrackingEnabledSent: false
//! BEGIN OF FUNCTIONS

@ -1,5 +1,6 @@
add_subdirectory(core)
install(DIRECTORY abilities/ DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/latte/abilities)
install(DIRECTORY applet/ DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/latte/applet)
install(DIRECTORY components/ DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/latte/components)
install(DIRECTORY container/ DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/latte/container)

@ -0,0 +1,83 @@
/*
* Copyright 2020 Michail Vourlakos <mvourlakos@gmail.com>
*
* 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 <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.0
import org.kde.latte.container.abilities 0.1 as ContainerAbility
ContainerAbility.AppletRequirements{
id: requirements
readonly property bool isActive: bridge !== null
property Item bridge: null
onIsActiveChanged: {
if (isActive) {
bridge.applet.activeIndicatorEnabled = requirements.activeIndicatorEnabled;
bridge.applet.latteSideColoringEnabled = requirements.latteSideColoringEnabled;
bridge.applet.latteIconOverlayEnabled = requirements.latteIconOverlayEnabled;
bridge.applet.lengthMarginsEnabled = requirements.lengthMarginsEnabled;
bridge.applet.parabolicEffectLocked = requirements.parabolicEffectLocked;
bridge.applet.screenEdgeMarginSupported = requirements.screenEdgeMarginSupported;
bridge.applet.windowsTrackingEnabled = requirements.windowsTrackingEnabled;
}
}
onActiveIndicatorEnabledChanged: {
if (isActive) {
bridge.applet.activeIndicatorEnabled = requirements.activeIndicatorEnabled;
}
}
onLatteSideColoringEnabledChanged: {
if (isActive) {
bridge.applet.latteSideColoringEnabled = requirements.latteSideColoringEnabled;
}
}
onLatteIconOverlayEnabledChanged: {
if (bridge) {
bridge.applet.latteIconOverlayEnabled = requirements.latteIconOverlayEnabled;
}
}
onLengthMarginsEnabledChanged: {
if (isActive) {
bridge.applet.lengthMarginsEnabled = requirements.lengthMarginsEnabled;
}
}
onParabolicEffectLockedChanged: {
if (isActive) {
bridge.applet.parabolicEffectLocked = requirements.parabolicEffectLocked;
}
}
onScreenEdgeMarginSupportedChanged: {
if (isActive) {
bridge.applet.screenEdgeMarginSupported = requirements.screenEdgeMarginSupported;
}
}
onWindowsTrackingEnabledChanged: {
if (isActive) {
bridge.applet.windowsTrackingEnabled = requirements.windowsTrackingEnabled;
}
}
}

@ -0,0 +1,3 @@
module org.kde.latte.applet.abilities
Requirements 0.1 Requirements.qml

@ -1,3 +1,3 @@
module org.kde.latte.abilities
module org.kde.latte.container.abilities
AppletRequirements 0.1 AppletRequirements.qml

@ -34,6 +34,8 @@ import org.kde.activities 0.1 as Activities
import org.kde.latte 0.2 as Latte
import org.kde.latte.core 0.2 as LatteCore
import org.kde.latte.components 1.0 as LatteComponents
import org.kde.latte.applet.abilities 0.1 as AppletAbility
import "abilities" as Ability
import "previews" as Previews
@ -272,20 +274,11 @@ Item {
//BEGIN Latte Dock Communicator
property QtObject latteBridge: null
onLatteBridgeChanged: {
if (latteBridge) {
latteBridge.actions.setProperty(plasmoid.id, "latteSideColoringEnabled", false);
latteBridge.actions.setProperty(plasmoid.id, "screenEdgeMarginSupported", true);
}
}
readonly property int screenEdgeMargin: latteBridge ? latteBridge.screenEdgeMargin : 0
//END Latte Dock Communicator
//BEGIN Latte based properties
readonly property bool enforceLattePalette: latteBridge && latteBridge.applyPalette && latteBridge.palette
readonly property bool latteInEditMode: latteBridge && latteBridge.inEditMode
//END Latte based properties
readonly property int screenEdgeMargin: latteBridge ? latteBridge.screenEdgeMargin : 0
//END Latte Dock Communicator
Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation
Plasmoid.backgroundHints: PlasmaCore.Types.NoBackground
@ -967,11 +960,17 @@ Item {
id: _tasksExtendedManager
}
Ability.ContainerAbility {
Ability.Container {
id: _container
localIconSize: Math.max(plasmoid.configuration.iconSize, 16)
}
AppletAbility.Requirements{
latteSideColoringEnabled: false
screenEdgeMarginSupported: true
bridge: latteBridge
}
Component{
id: attentionTimerComponent

Loading…
Cancel
Save