use crate::operating_system::users::Win32_UserAccount;
use crate::update;
use serde::{Deserialize, Serialize};
use std::time::SystemTime;
use wmi::{COMLibrary, WMIConnection, WMIDateTime};
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct Desktops {
pub desktops: Vec<Win32_Desktop>,
pub last_updated: SystemTime,
}
update!(Desktops, desktops);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct Environments {
pub environments: Vec<Win32_Environment>,
pub last_updated: SystemTime,
}
update!(Environments, environments);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct TimeZones {
pub timezones: Vec<Win32_TimeZone>,
pub last_updated: SystemTime,
}
update!(TimeZones, timezones);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct UserDesktops {
pub user_desktops: Vec<Win32_UserDesktop>,
pub last_updated: SystemTime,
}
update!(UserDesktops, user_desktops);
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_Desktop {
pub Caption: Option<String>,
pub Description: Option<String>,
pub SettingID: Option<String>,
pub BorderWidth: Option<u32>,
pub CoolSwitch: Option<bool>,
pub CursorBlinkRate: Option<u32>,
pub DragFullWindows: Option<bool>,
pub GridGranularity: Option<u32>,
pub IconSpacing: Option<u32>,
pub IconTitleFaceName: Option<String>,
pub IconTitleSize: Option<u32>,
pub IconTitleWrap: Option<bool>,
pub Name: Option<String>,
pub Pattern: Option<String>,
pub ScreenSaverActive: Option<bool>,
pub ScreenSaverExecutable: Option<String>,
pub ScreenSaverSecure: Option<bool>,
pub ScreenSaverTimeout: Option<u32>,
pub Wallpaper: Option<String>,
pub WallpaperStretched: Option<bool>,
pub WallpaperTiled: Option<bool>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_Environment {
pub Caption: Option<String>,
pub Description: Option<String>,
pub InstallDate: Option<WMIDateTime>,
pub Status: Option<String>,
pub Name: Option<String>,
pub SystemVariable: Option<bool>,
pub UserName: Option<String>,
pub VariableValue: Option<String>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_TimeZone {
pub Caption: Option<String>,
pub Description: Option<String>,
pub SettingID: Option<String>,
pub Bias: Option<i32>,
pub DaylightBias: Option<i32>,
pub DaylightDay: Option<u32>,
pub DaylightDayOfWeek: Option<u8>,
pub DaylightHour: Option<u32>,
pub DaylightMillisecond: Option<u32>,
pub DaylightMinute: Option<u32>,
pub DaylightMonth: Option<u32>,
pub DaylightName: Option<String>,
pub DaylightSecond: Option<u32>,
pub DaylightYear: Option<u32>,
pub StandardBias: Option<u32>,
pub StandardDay: Option<u32>,
pub StandardDayOfWeek: Option<u8>,
pub StandardHour: Option<u32>,
pub StandardMillisecond: Option<u32>,
pub StandardMinute: Option<u32>,
pub StandardMonth: Option<u32>,
pub StandardName: Option<String>,
pub StandardSecond: Option<u32>,
pub StandardYear: Option<u32>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_UserDesktop {
pub Element: Option<Win32_UserAccount>,
pub Setting: Option<Win32_Desktop>,
}