use crate::VarOrBool;
use super::attribute_list::{AttributeList, VerticalBar};
use super::intent_filter::IntentFilter;
use super::layout::Layout;
use super::meta_data::MetaData;
use super::resources::{
DrawableResource, MipmapOrDrawableResource, Resource, StringResourceOrString, StyleResource,
};
use super::ui_options::UiOptions;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Default, Clone)]
pub struct Activity {
#[yaserde(attribute = true, prefix = "android", rename = "allowEmbedded")]
pub allow_embedded: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "allowTaskReparenting")]
pub allow_task_reparenting: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "alwaysRetainTaskState")]
pub always_retain_task_state: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "autoRemoveFromRecents")]
pub auto_remove_from_recents: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub banner: Option<Resource<DrawableResource>>,
#[yaserde(attribute = true, prefix = "android", rename = "clearTaskOnLaunch")]
pub clear_task_on_launch: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "colorMode")]
pub color_mode: Option<ColorMode>,
#[yaserde(
attribute = true,
prefix = "android",
rename = "configChanges",
skip_serializing_if = "check_config_changes",
default = "default_config_changes"
)]
#[serde(default, skip_serializing_if = "AttributeList::is_empty")]
pub config_changes: AttributeList<VerticalBar, ConfigChanges>,
#[yaserde(attribute = true, prefix = "android", rename = "directBootAware")]
pub direct_boot_aware: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "documentLaunchMode")]
pub document_launch_mode: Option<DocumentLaunchMode>,
#[yaserde(attribute = true, prefix = "android")]
pub enabled: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "excludeFromRecents")]
pub exclude_from_recents: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub exported: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "finishOnTaskLaunch")]
pub finish_on_task_launch: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "hardwareAccelerated")]
pub hardware_accelerated: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub icon: Option<MipmapOrDrawableResource>,
#[yaserde(attribute = true, prefix = "android")]
pub immersive: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub label: Option<StringResourceOrString>,
#[yaserde(attribute = true, prefix = "android", rename = "launchMode")]
pub launch_mode: Option<LaunchMode>,
#[yaserde(attribute = true, prefix = "android", rename = "lockTaskMode")]
pub lock_task_mode: Option<LockTaskMode>,
#[yaserde(attribute = true, prefix = "android", rename = "maxRecents")]
pub max_recents: Option<u32>,
#[yaserde(attribute = true, prefix = "android", rename = "maxAspectRatio")]
pub max_aspect_ratio: Option<f32>,
#[yaserde(attribute = true, prefix = "android")]
pub multiprocess: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub name: String,
#[yaserde(attribute = true, prefix = "android", rename = "noHistory")]
pub no_history: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "parentActivityName")]
pub parent_activity_name: Option<String>,
#[yaserde(attribute = true, prefix = "android", rename = "persistableMode")]
pub persistable_mode: Option<PersistableMode>,
#[yaserde(attribute = true, prefix = "android")]
pub permission: Option<String>,
#[yaserde(attribute = true, prefix = "android")]
pub process: Option<String>,
#[yaserde(
attribute = true,
prefix = "android",
rename = "relinquishTaskIdentity"
)]
pub relinquish_task_identity: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "resizeableActivity")]
pub resizeable_activity: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "screenOrientation")]
pub screen_orientation: Option<ScreenOrientation>,
#[yaserde(attribute = true, prefix = "android", rename = "showForAllUsers")]
pub show_for_all_users: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "stateNotNeeded")]
pub state_not_needed: Option<VarOrBool>,
#[yaserde(
attribute = true,
prefix = "android",
rename = "supportsPictureInPicture"
)]
pub supports_picture_in_picture: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "taskAffinity")]
pub task_affinity: Option<String>,
#[yaserde(attribute = true, prefix = "android")]
pub theme: Option<Resource<StyleResource>>,
#[yaserde(attribute = true, prefix = "android", rename = "uiOptions")]
pub ui_options: Option<UiOptions>,
#[yaserde(
attribute = true,
prefix = "android",
rename = "windowSoftInputMode",
skip_serializing_if = "check_window_soft_input_mode",
default = "default_window_soft_input_mode"
)]
#[serde(default, skip_serializing_if = "AttributeList::is_empty")]
pub window_soft_input_mode: AttributeList<VerticalBar, WindowSoftInputMode>,
pub layout: Option<Layout>,
#[yaserde(rename = "intent-filter")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub intent_filter: Vec<IntentFilter>,
#[yaserde(rename = "meta-data")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub meta_data: Vec<MetaData>,
#[yaserde(attribute = true, prefix = "tools")]
pub replace: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub remove: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub node: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub ignore: Option<String>,
#[yaserde(attribute = true, prefix = "tools", rename = "targetApi")]
pub target_api: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub selector: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub strict: Option<String>,
}
fn default_config_changes() -> AttributeList<VerticalBar, ConfigChanges> {
AttributeList::default()
}
fn default_window_soft_input_mode() -> AttributeList<VerticalBar, WindowSoftInputMode> {
AttributeList::default()
}
impl Activity {
fn check_config_changes(&self, value: &AttributeList<VerticalBar, ConfigChanges>) -> bool {
value.is_empty()
}
fn check_window_soft_input_mode(
&self,
value: &AttributeList<VerticalBar, WindowSoftInputMode>,
) -> bool {
value.is_empty()
}
}
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
#[derive(Default)]
pub enum ColorMode {
#[yaserde(rename = "hdr")]
#[default]
Hdr,
#[yaserde(rename = "wideColorGamut")]
WideColorGamut,
}
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
#[derive(Default)]
pub enum ConfigChanges {
#[yaserde(rename = "density")]
#[default]
Density,
#[yaserde(rename = "fontScale")]
FontScale,
#[yaserde(rename = "keyboard")]
Keyboard,
#[yaserde(rename = "keyboardHidden")]
KeyboardHidden,
#[yaserde(rename = "layoutDirection")]
LayoutDirection,
#[yaserde(rename = "locale")]
Locale,
#[yaserde(rename = "mcc")]
Mcc,
#[yaserde(rename = "mnc")]
Mnc,
#[yaserde(rename = "navigation")]
Navigation,
#[yaserde(rename = "orientation")]
Orientation,
#[yaserde(rename = "screenLayout")]
ScreenLayout,
#[yaserde(rename = "screenSize")]
ScreenSize,
#[yaserde(rename = "smallestScreenSize")]
SmallestScreenSize,
#[yaserde(rename = "touchscreen")]
Touchscreen,
#[yaserde(rename = "uiMode")]
UiMode,
}
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
#[derive(Default)]
pub enum DocumentLaunchMode {
#[yaserde(rename = "intoExisting")]
IntoExisting,
#[yaserde(rename = "always")]
Always,
#[yaserde(rename = "none")]
#[default]
None,
#[yaserde(rename = "never")]
Never,
}
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
#[derive(Default)]
pub enum LaunchMode {
#[yaserde(rename = "standard")]
#[default]
Standard,
#[yaserde(rename = "singleTop")]
SingleTop,
#[yaserde(rename = "singleTask")]
SingleTask,
#[yaserde(rename = "singleInstance")]
SingleInstance,
}
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
#[derive(Default)]
pub enum LockTaskMode {
#[yaserde(rename = "normal")]
#[default]
Normal,
#[yaserde(rename = "never")]
Never,
#[serde(rename = "if_whitelisted")]
#[yaserde(rename = "if_whitelisted")]
IfWhitelisted,
#[yaserde(rename = "always")]
Always,
}
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
#[derive(Default)]
pub enum PersistableMode {
#[yaserde(rename = "persistRootOnly")]
#[default]
PersistRootOnly,
#[yaserde(rename = "persistAcrossReboots")]
PersistAcrossReboots,
#[yaserde(rename = "persistNever")]
PersistNever,
}
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
#[derive(Default)]
pub enum ScreenOrientation {
#[yaserde(rename = "unspecified")]
#[default]
Unspecified,
#[yaserde(rename = "behind")]
Behind,
#[yaserde(rename = "landscape")]
Landscape,
#[yaserde(rename = "portrait")]
Portrait,
#[yaserde(rename = "reverseLandscape")]
ReverseLandscape,
#[yaserde(rename = "reversePortrait")]
ReversePortrait,
#[yaserde(rename = "sensorLandscape")]
SensorLandscape,
#[yaserde(rename = "sensorPortrait")]
SensorPortrait,
#[yaserde(rename = "userLandscape")]
UserLandscape,
#[yaserde(rename = "userPortrait")]
UserPortrait,
#[yaserde(rename = "sensor")]
Sensor,
#[yaserde(rename = "fullSensor")]
FullSensor,
#[yaserde(rename = "nosensor")]
Nosensor,
#[yaserde(rename = "user")]
User,
#[yaserde(rename = "fullUser")]
FullUser,
#[yaserde(rename = "locked")]
Locked,
}
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
#[derive(Default)]
pub enum WindowSoftInputMode {
#[yaserde(rename = "stateUnspecified")]
#[default]
StateUnspecified,
#[yaserde(rename = "stateUnchanged")]
StateUnchanged,
#[yaserde(rename = "stateHidden")]
StateHidden,
#[yaserde(rename = "stateAlwaysHidden")]
StateAlwaysHidden,
#[yaserde(rename = "stateVisible")]
StateVisible,
#[yaserde(rename = "stateAlwaysVisible")]
StateAlwaysVisible,
#[yaserde(rename = "adjustUnspecified")]
AdjustUnspecified,
#[yaserde(rename = "adjustResize")]
AdjustResize,
#[yaserde(rename = "adjustPan")]
AdjustPan,
}