livesplit_core/layout/
component_settings.rs1use super::Component;
2use crate::component::{
3 blank_space, current_comparison, current_pace, delta, detailed_timer, graph, pb_chance,
4 possible_time_save, previous_segment, segment_time, separator, splits, sum_of_best, text,
5 timer, title, total_playtime,
6};
7use crate::platform::prelude::*;
8use serde::{Deserialize, Serialize};
9
10#[derive(Clone, Serialize, Deserialize)]
12pub enum ComponentSettings {
13 BlankSpace(blank_space::Settings),
15 CurrentComparison(current_comparison::Settings),
17 CurrentPace(current_pace::Settings),
19 Delta(delta::Settings),
21 DetailedTimer(Box<detailed_timer::Settings>),
23 Graph(graph::Settings),
25 PbChance(pb_chance::Settings),
27 PossibleTimeSave(possible_time_save::Settings),
29 PreviousSegment(previous_segment::Settings),
31 SegmentTime(segment_time::Settings),
33 Separator,
35 Splits(splits::Settings),
37 SumOfBest(sum_of_best::Settings),
39 Text(text::Settings),
41 Timer(timer::Settings),
43 Title(title::Settings),
45 TotalPlaytime(total_playtime::Settings),
47}
48
49impl From<ComponentSettings> for Component {
50 fn from(settings: ComponentSettings) -> Self {
51 match settings {
52 ComponentSettings::BlankSpace(settings) => {
53 Component::BlankSpace(blank_space::Component::with_settings(settings))
54 }
55 ComponentSettings::CurrentComparison(settings) => {
56 Component::CurrentComparison(current_comparison::Component::with_settings(settings))
57 }
58 ComponentSettings::CurrentPace(settings) => {
59 Component::CurrentPace(current_pace::Component::with_settings(settings))
60 }
61 ComponentSettings::Delta(settings) => {
62 Component::Delta(delta::Component::with_settings(settings))
63 }
64 ComponentSettings::DetailedTimer(settings) => Component::DetailedTimer(Box::new(
65 detailed_timer::Component::with_settings(*settings),
66 )),
67 ComponentSettings::Graph(settings) => {
68 Component::Graph(graph::Component::with_settings(settings))
69 }
70 ComponentSettings::PbChance(settings) => {
71 Component::PbChance(pb_chance::Component::with_settings(settings))
72 }
73 ComponentSettings::PossibleTimeSave(settings) => {
74 Component::PossibleTimeSave(possible_time_save::Component::with_settings(settings))
75 }
76 ComponentSettings::PreviousSegment(settings) => {
77 Component::PreviousSegment(previous_segment::Component::with_settings(settings))
78 }
79 ComponentSettings::SegmentTime(settings) => {
80 Component::SegmentTime(segment_time::Component::with_settings(settings))
81 }
82 ComponentSettings::Separator => Component::Separator(separator::Component::new()),
83 ComponentSettings::Splits(settings) => {
84 Component::Splits(splits::Component::with_settings(settings))
85 }
86 ComponentSettings::SumOfBest(settings) => {
87 Component::SumOfBest(sum_of_best::Component::with_settings(settings))
88 }
89 ComponentSettings::Text(settings) => {
90 Component::Text(text::Component::with_settings(settings))
91 }
92 ComponentSettings::Timer(settings) => {
93 Component::Timer(timer::Component::with_settings(settings))
94 }
95 ComponentSettings::Title(settings) => {
96 Component::Title(title::Component::with_settings(settings))
97 }
98 ComponentSettings::TotalPlaytime(settings) => {
99 Component::TotalPlaytime(total_playtime::Component::with_settings(settings))
100 }
101 }
102 }
103}