Update plasma
This commit is contained in:
parent
cf88cf4a7b
commit
d83c5a0a54
160 changed files with 7837 additions and 0 deletions
209
local/share/plasma/plasmoids/Nori.Weather/contents/ui/main.qml
Normal file
209
local/share/plasma/plasmoids/Nori.Weather/contents/ui/main.qml
Normal file
|
@ -0,0 +1,209 @@
|
|||
import QtQuick
|
||||
import QtQuick.Layouts 1.1
|
||||
import org.kde.plasma.plasmoid
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import "components" as Components
|
||||
import org.kde.kirigami as Kirigami
|
||||
import org.kde.ksvg as KSvg
|
||||
|
||||
PlasmoidItem {
|
||||
|
||||
id: wrapper
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
Components.WeatherData {
|
||||
id: weatherData
|
||||
}
|
||||
|
||||
signal reset
|
||||
|
||||
//property bool dashWindowIsFocus: true
|
||||
property string currentTemp: weatherData.currentTemperature
|
||||
property string unitsTemperature: plasmoid.configuration.temperatureUnit
|
||||
//property string textUnitsTemper: ? "C" : "F"
|
||||
property string location: weatherData.city
|
||||
property string weather: weatherData.weatherShottext
|
||||
property string currentIcon: weatherData.iconWeatherCurrent
|
||||
property string currentMaxMin: weatherData.maxweatherCurrent + "°/" + weatherData.minweatherCurrent + "°"
|
||||
property var temps: weatherData.tempHours
|
||||
property var icons: weatherData.iconHours
|
||||
property alias forecastHours: hoursWeatherModel
|
||||
property alias forecastFullModel: forecastModel
|
||||
property bool isUpdate: false
|
||||
property date currentDateTime: new Date()
|
||||
|
||||
readonly property int currentDayOfWeek: currentDateTime.getDay()
|
||||
|
||||
ListModel {
|
||||
id: hoursWeatherModel
|
||||
}
|
||||
ListModel {
|
||||
id: forecastModel
|
||||
}
|
||||
|
||||
function getTranslatedDayInitial(dayIndex) {
|
||||
var tempDate = new Date(currentDateTime);
|
||||
tempDate.setDate(tempDate.getDate() + dayIndex);
|
||||
return tempDate.toLocaleString(Qt.locale(), "dddd");
|
||||
}
|
||||
|
||||
|
||||
|
||||
function hoursForModel(v) {
|
||||
const now = new Date();
|
||||
const hoursC = now.getHours(); // Horas (0-23)
|
||||
const minutes = now.getMinutes(); // Minutos (0-59)
|
||||
const currentTime = minutes > 44 ? hoursC + 2 : hoursC + 1;
|
||||
|
||||
var hoursForecast = [currentTime, currentTime + 1, currentTime + 2, currentTime + 3, currentTime + 4]
|
||||
return hoursForecast[v]
|
||||
}
|
||||
|
||||
function hoursForecast() {
|
||||
|
||||
hoursWeatherModel.clear()
|
||||
for (var i = 0; i < 5; i++) {
|
||||
hoursWeatherModel.append({
|
||||
icon: icons[i],
|
||||
temp: temps[i],
|
||||
hours: hoursForModel(i)
|
||||
});
|
||||
}
|
||||
}
|
||||
function hoursForecastUpdate() {
|
||||
for (var o = 0; o < hoursWeatherModel.count; o++) {
|
||||
hoursWeatherModel.set(o, { "icon": icons[o] });
|
||||
hoursWeatherModel.set(o, { "temp": String(parseFloat(temps[o])) });
|
||||
hoursWeatherModel.set(o, { "hours": hoursForModel(o) });
|
||||
}
|
||||
}
|
||||
|
||||
function updateUnitsTempe() {
|
||||
|
||||
let Maxs = {
|
||||
0: weatherData.oneMax,
|
||||
1: weatherData.twoMax,
|
||||
2: weatherData.threeMax,
|
||||
3: weatherData.fourMax,
|
||||
4: weatherData.fiveMax,
|
||||
}
|
||||
let Mins = {
|
||||
0: weatherData.oneMin,
|
||||
1: weatherData.twoMin,
|
||||
2: weatherData.threeMin,
|
||||
3: weatherData.fourMin,
|
||||
4: weatherData.fiveMin,
|
||||
}
|
||||
|
||||
|
||||
for (var z = 0; z < forecastModel.count; z++) {
|
||||
forecastModel.set(z, { "maxTemp": Maxs[z], "minTemp": Mins[z] })
|
||||
}
|
||||
for (var e = 0; e < hoursWeatherModel.count; e++) {
|
||||
var roles = hoursWeatherModel.get(e);
|
||||
console.log("Roles for index " + e + ":", JSON.stringify(roles));
|
||||
|
||||
// Convierte temps[e] a cadena antes de asignarlo
|
||||
var gy = String(parseFloat(temps[e]));
|
||||
hoursWeatherModel.set(e, { "temp": gy });
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: checkUpdateTimer
|
||||
interval: 5000 // 20 segundos
|
||||
repeat: true
|
||||
running: true
|
||||
onTriggered: {
|
||||
if (weatherData.lastUpdate !== "") {
|
||||
let now = new Date()
|
||||
let lastUpdateDate = new Date(weatherData.lastUpdate) // Crear objeto Date desde la cadena almacenada
|
||||
let diffMinutes = (now - lastUpdateDate) / 60000 // Convertir la diferencia a minutos
|
||||
if (diffMinutes > 17) {
|
||||
forms()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function updateForecastModel() {
|
||||
|
||||
let icons = {
|
||||
0: weatherData.oneIcon,
|
||||
1: weatherData.twoIcon,
|
||||
2: weatherData.threeIcon,
|
||||
3: weatherData.fourIcon,
|
||||
4: weatherData.fiveIcon,
|
||||
}
|
||||
let Maxs = {
|
||||
0: weatherData.oneMax,
|
||||
1: weatherData.twoMax,
|
||||
2: weatherData.threeMax,
|
||||
3: weatherData.fourMax,
|
||||
4: weatherData.fiveMax,
|
||||
}
|
||||
let Mins = {
|
||||
0: weatherData.oneMin,
|
||||
1: weatherData.twoMin,
|
||||
2: weatherData.threeMin,
|
||||
3: weatherData.fourMin,
|
||||
4: weatherData.fiveMin,
|
||||
}
|
||||
forecastModel.clear();
|
||||
for (var i = 1; i < 4; i++) {
|
||||
var icon = icons[i]
|
||||
var maxTemp = Maxs[i]
|
||||
var minTemp = Mins[i]
|
||||
var date = getTranslatedDayInitial(i)
|
||||
|
||||
forecastModel.append({
|
||||
date: date,
|
||||
icon: icon,
|
||||
maxTemp: maxTemp,
|
||||
minTemp: minTemp
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function forms() {
|
||||
if (isUpdate) {
|
||||
currentDateTime = new Date()
|
||||
hoursForecastUpdate()
|
||||
updateForecastModel()
|
||||
} else {
|
||||
currentDateTime = new Date()
|
||||
hoursForecast()
|
||||
updateForecastModel()
|
||||
isUpdate = true
|
||||
}
|
||||
}
|
||||
|
||||
onUnitsTemperatureChanged: {
|
||||
//hoursForecast()
|
||||
updateUnitsTempe()
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
weatherData.dataChanged.connect(() => {
|
||||
Qt.callLater(forms); // Asegura que la función se ejecute al final del ciclo de eventos
|
||||
});
|
||||
}
|
||||
|
||||
preferredRepresentation: compactRepresentation
|
||||
compactRepresentation: compactRepresentation
|
||||
fullRepresentation: compactRepresentation
|
||||
|
||||
|
||||
|
||||
Component {
|
||||
id: compactRepresentation
|
||||
CompactRepresentation {}
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue