64 lines
1.7 KiB
QML
64 lines
1.7 KiB
QML
/*
|
|
* SPDX-FileCopyrightText: 2025 Anton Kharuzhy <publicantroids@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*/
|
|
import "config/effect/"
|
|
import "config/effect/effect.js" as EffectUtils
|
|
import QtQuick
|
|
|
|
Repeater {
|
|
id: effectsRepeater
|
|
|
|
model: plasmoid.configuration.effects
|
|
|
|
property var effectRules: []
|
|
|
|
function updateEffectRules() {
|
|
let rulesList = [];
|
|
for (var i = 0; i < plasmoid.configuration.effectRules.length; i++) {
|
|
const ruleModel = JSON.parse(plasmoid.configuration.effectRules[i]);
|
|
const rule = EffectUtils.Condition.fromModel(ruleModel);
|
|
rulesList[i] = rule;
|
|
}
|
|
effectRules = rulesList;
|
|
updateEffectsState();
|
|
}
|
|
|
|
function updateEffectsState() {
|
|
var effectsState = [];
|
|
for (var i = 0; i < effectsRepeater.effectRules.length; i++) {
|
|
if (!effectsState[i]) {
|
|
const rule = effectsRepeater.effectRules[i];
|
|
effectsState[rule.effectIndex] = rule.checkCondition(root);
|
|
}
|
|
}
|
|
for (var i = 0; i < effectsRepeater.count; i++) {
|
|
const item = effectsRepeater.itemAt(i);
|
|
if (item) {
|
|
item.opacity = effectsState[i] ? 1.0 : 0.0;
|
|
}
|
|
}
|
|
}
|
|
|
|
MergedMultiEffect {
|
|
anchors.fill: widgetRow
|
|
source: widgetRow
|
|
opacity: 0.0
|
|
visible: opacity !== 0.0
|
|
|
|
required property int index
|
|
required property var modelData
|
|
|
|
onModelDataChanged: function () {
|
|
effectModel.updateFromJson(modelData);
|
|
}
|
|
|
|
Behavior on opacity {
|
|
NumberAnimation {
|
|
duration: plasmoid.configuration.widgetButtonsAnimation
|
|
}
|
|
}
|
|
}
|
|
}
|