diff options
Diffstat (limited to 'apps/radio')
-rw-r--r-- | apps/radio/radio.c | 6 | ||||
-rw-r--r-- | apps/radio/radio.h | 4 | ||||
-rw-r--r-- | apps/radio/radio_skin.c | 73 |
3 files changed, 27 insertions, 56 deletions
diff --git a/apps/radio/radio.c b/apps/radio/radio.c index 74bdb4bc75..e5badb10a8 100644 --- a/apps/radio/radio.c +++ b/apps/radio/radio.c | |||
@@ -422,7 +422,7 @@ int radio_screen(void) | |||
422 | { | 422 | { |
423 | radio_load_presets(global_settings.fmr_file); | 423 | radio_load_presets(global_settings.fmr_file); |
424 | } | 424 | } |
425 | fms_get(SCREEN_MAIN)->state->id3 = NULL; | 425 | skin_get_global_state()->id3 = NULL; |
426 | #ifdef HAVE_ALBUMART | 426 | #ifdef HAVE_ALBUMART |
427 | radioart_init(true); | 427 | radioart_init(true); |
428 | #endif | 428 | #endif |
@@ -469,7 +469,7 @@ int radio_screen(void) | |||
469 | #endif | 469 | #endif |
470 | fms_fix_displays(FMS_ENTER); | 470 | fms_fix_displays(FMS_ENTER); |
471 | FOR_NB_SCREENS(i) | 471 | FOR_NB_SCREENS(i) |
472 | skin_update(fms_get(i), SKIN_REFRESH_ALL); | 472 | skin_update(FM_SCREEN, i, SKIN_REFRESH_ALL); |
473 | 473 | ||
474 | if(radio_preset_count() < 1 && yesno_pop(ID2P(LANG_FM_FIRST_AUTOSCAN))) | 474 | if(radio_preset_count() < 1 && yesno_pop(ID2P(LANG_FM_FIRST_AUTOSCAN))) |
475 | presets_scan(NULL); | 475 | presets_scan(NULL); |
@@ -800,7 +800,7 @@ int radio_screen(void) | |||
800 | { | 800 | { |
801 | #endif | 801 | #endif |
802 | FOR_NB_SCREENS(i) | 802 | FOR_NB_SCREENS(i) |
803 | skin_update(fms_get(i), update_type); | 803 | skin_update(FM_SCREEN, i, update_type); |
804 | } | 804 | } |
805 | } | 805 | } |
806 | update_type = 0; | 806 | update_type = 0; |
diff --git a/apps/radio/radio.h b/apps/radio/radio.h index 7c263ce218..daeaee9ca7 100644 --- a/apps/radio/radio.h +++ b/apps/radio/radio.h | |||
@@ -50,10 +50,6 @@ int radio_current_preset(void); | |||
50 | int radio_preset_count(void); | 50 | int radio_preset_count(void); |
51 | const struct fmstation *radio_get_preset(int preset); | 51 | const struct fmstation *radio_get_preset(int preset); |
52 | 52 | ||
53 | /* skin functions */ | ||
54 | void fms_data_load(enum screen_type screen, const char *buf, bool isfile); | ||
55 | void fms_skin_init(void); | ||
56 | |||
57 | /* callbacks for the radio settings */ | 53 | /* callbacks for the radio settings */ |
58 | void set_radio_region(int region); | 54 | void set_radio_region(int region); |
59 | void toggle_mono_mode(bool mono); | 55 | void toggle_mono_mode(bool mono); |
diff --git a/apps/radio/radio_skin.c b/apps/radio/radio_skin.c index 28bd784ad4..0217c83f92 100644 --- a/apps/radio/radio_skin.c +++ b/apps/radio/radio_skin.c | |||
@@ -33,45 +33,37 @@ | |||
33 | #include "option_select.h" | 33 | #include "option_select.h" |
34 | 34 | ||
35 | 35 | ||
36 | extern struct wps_state wps_state; /* from wps.c */ | 36 | char* default_radio_skin(enum screen_type screen) |
37 | static struct gui_wps fms_skin[NB_SCREENS] = {{ .data = NULL }}; | ||
38 | static struct wps_data fms_skin_data[NB_SCREENS] = {{ .wps_loaded = 0 }}; | ||
39 | static struct wps_sync_data fms_skin_sync_data = { .do_full_update = false }; | ||
40 | |||
41 | void fms_data_load(enum screen_type screen, const char *buf, bool isfile) | ||
42 | { | 37 | { |
43 | struct wps_data *data = fms_skin[screen].data; | 38 | (void)screen; |
44 | int success; | 39 | static char default_fms[] = |
45 | success = buf && skin_data_load(screen, data, buf, isfile); | 40 | "%s%?Ti<%Ti. |>%?Tn<%Tn|%Tf>\n" |
46 | 41 | "%Sx(Station:) %tf MHz\n" | |
47 | if (!success ) /* load the default */ | 42 | "%?St(force fm mono)<%Sx(Force Mono)|%?ts<%Sx(Stereo)|%Sx(Mono)>>\n" |
48 | { | 43 | "%Sx(Mode:) %?tm<%Sx(Scan)|%Sx(Preset)>\n" |
49 | const char default_fms[] = "%s%?Ti<%Ti. |>%?Tn<%Tn|%Tf>\n" | ||
50 | "%Sx(Station:) %tf MHz\n" | ||
51 | "%?St(force fm mono)<%Sx(Force Mono)|%?ts<%Sx(Stereo)|%Sx(Mono)>>\n" | ||
52 | "%Sx(Mode:) %?tm<%Sx(Scan)|%Sx(Preset)>\n" | ||
53 | #if CONFIG_CODEC != SWCODEC && !defined(SIMULATOR) | 44 | #if CONFIG_CODEC != SWCODEC && !defined(SIMULATOR) |
54 | "%?Rr<%Sx(Time:) %Rh:%Rn:%Rs|%?St(prerecording time)<%pm|%Sx(Prerecord Time) %Rs>>\n" | 45 | "%?Rr<%Sx(Time:) %Rh:%Rn:%Rs|%?St(prerecording time)<%pm|%Sx(Prerecord Time) %Rs>>\n" |
55 | #endif | 46 | #endif |
56 | "%pb\n" | 47 | "%pb\n" |
57 | #ifdef HAVE_RDS_CAP | 48 | #ifdef HAVE_RDS_CAP |
58 | "\n%s%ty\n" | 49 | "\n%s%ty\n" |
59 | "%s%tz\n" | 50 | "%s%tz\n" |
60 | #endif | 51 | #endif |
61 | ; | 52 | ; |
62 | skin_data_load(screen, data, default_fms, false); | 53 | return default_fms; |
63 | } | ||
64 | } | 54 | } |
55 | |||
65 | void fms_fix_displays(enum fms_exiting toggle_state) | 56 | void fms_fix_displays(enum fms_exiting toggle_state) |
66 | { | 57 | { |
67 | int i; | 58 | int i; |
68 | FOR_NB_SCREENS(i) | 59 | FOR_NB_SCREENS(i) |
69 | { | 60 | { |
61 | struct wps_data *data = skin_get_gwps(FM_SCREEN, i)->data; | ||
70 | if (toggle_state == FMS_ENTER) | 62 | if (toggle_state == FMS_ENTER) |
71 | { | 63 | { |
72 | viewportmanager_theme_enable(i, skin_has_sbs(i, fms_skin[i].data), NULL); | 64 | viewportmanager_theme_enable(i, skin_has_sbs(i, data), NULL); |
73 | #if LCD_DEPTH > 1 || defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 | 65 | #if LCD_DEPTH > 1 || defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 |
74 | screens[i].backdrop_show(fms_skin[i].data->backdrop); | 66 | skin_backdrop_show(data->backdrop_id); |
75 | #endif | 67 | #endif |
76 | screens[i].clear_display(); | 68 | screens[i].clear_display(); |
77 | /* force statusbar/skin update since we just cleared the whole screen */ | 69 | /* force statusbar/skin update since we just cleared the whole screen */ |
@@ -81,46 +73,29 @@ void fms_fix_displays(enum fms_exiting toggle_state) | |||
81 | { | 73 | { |
82 | screens[i].stop_scroll(); | 74 | screens[i].stop_scroll(); |
83 | #if LCD_DEPTH > 1 || defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 | 75 | #if LCD_DEPTH > 1 || defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 |
84 | screens[i].backdrop_show(sb_get_backdrop(i)); | 76 | skin_backdrop_show(sb_get_backdrop(i)); |
85 | #endif | 77 | #endif |
86 | viewportmanager_theme_undo(i, skin_has_sbs(i, fms_skin[i].data)); | 78 | viewportmanager_theme_undo(i, skin_has_sbs(i, data)); |
87 | } | 79 | } |
88 | } | 80 | } |
89 | #ifdef HAVE_TOUCHSCREEN | 81 | #ifdef HAVE_TOUCHSCREEN |
90 | if (!fms_skin[SCREEN_MAIN].data->touchregions) | 82 | if (i==SCREEN_MAIN && !data->touchregions) |
91 | touchscreen_set_mode(toggle_state == FMS_ENTER ? | 83 | touchscreen_set_mode(toggle_state == FMS_ENTER ? |
92 | TOUCHSCREEN_BUTTON : global_settings.touch_mode); | 84 | TOUCHSCREEN_BUTTON : global_settings.touch_mode); |
93 | #endif | 85 | #endif |
94 | } | 86 | } |
95 | 87 | ||
96 | 88 | ||
97 | void fms_skin_init(void) | ||
98 | { | ||
99 | int i; | ||
100 | FOR_NB_SCREENS(i) | ||
101 | { | ||
102 | #ifdef HAVE_ALBUMART | ||
103 | fms_skin_data[i].albumart = NULL; | ||
104 | fms_skin_data[i].playback_aa_slot = -1; | ||
105 | #endif | ||
106 | fms_skin[i].data = &fms_skin_data[i]; | ||
107 | fms_skin[i].display = &screens[i]; | ||
108 | /* Currently no seperate wps_state needed/possible | ||
109 | so use the only available ( "global" ) one */ | ||
110 | fms_skin[i].state = &wps_state; | ||
111 | fms_skin[i].sync_data = &fms_skin_sync_data; | ||
112 | } | ||
113 | } | ||
114 | |||
115 | int fms_do_button_loop(bool update_screen) | 89 | int fms_do_button_loop(bool update_screen) |
116 | { | 90 | { |
117 | int button = skin_wait_for_action(fms_skin, CONTEXT_FM, | 91 | int button = skin_wait_for_action(FM_SCREEN, CONTEXT_FM, |
118 | update_screen ? TIMEOUT_NOBLOCK : HZ/5); | 92 | update_screen ? TIMEOUT_NOBLOCK : HZ/5); |
119 | #ifdef HAVE_TOUCHSCREEN | 93 | #ifdef HAVE_TOUCHSCREEN |
120 | struct touchregion *region; | 94 | struct touchregion *region; |
121 | int offset; | 95 | int offset; |
122 | if (button == ACTION_TOUCHSCREEN) | 96 | if (button == ACTION_TOUCHSCREEN) |
123 | button = skin_get_touchaction(&fms_skin_data[SCREEN_MAIN], &offset, ®ion); | 97 | button = skin_get_touchaction(skin_get_gwps(FM_SCREEN, SCREEN_MAIN)->data, |
98 | &offset, ®ion) | ||
124 | switch (button) | 99 | switch (button) |
125 | { | 100 | { |
126 | case ACTION_WPS_STOP: | 101 | case ACTION_WPS_STOP: |
@@ -152,5 +127,5 @@ int fms_do_button_loop(bool update_screen) | |||
152 | 127 | ||
153 | struct gui_wps *fms_get(enum screen_type screen) | 128 | struct gui_wps *fms_get(enum screen_type screen) |
154 | { | 129 | { |
155 | return &fms_skin[screen]; | 130 | return skin_get_gwps(FM_SCREEN, screen); |
156 | } | 131 | } |