Login
1 branch 0 tags
Ben (Desktop/Arch) Smoother UI bb6b2c1 1 month ago 72 Commits
moon / src / screens / settings_screen.c
#include "settings_screen.h"
#include <stdlib.h>
#include "../playlist.h"
#include "../topbar.h"
#include "bookmark.h"

static void menu_cancel_cb(lv_event_t* e) {
	(void)e;
	navigate_back(SCREEN_HOME);
}

static void back_cb(lv_event_t* e) {
	if (lv_event_get_code(e) == LV_EVENT_CLICKED) {
		navigate_back(SCREEN_HOME);
	}
}

static void do_reset_bookmarks(void) {
	bookmark_clear_all();
	playlist_clear();
	playlist_save();
}

static void reset_clicked_cb(lv_event_t* e) {
	if (lv_event_get_code(e) == LV_EVENT_CLICKED) {
		navigate_to_confirm("Clear bookmarks?", do_reset_bookmarks,
		                    SCREEN_SETTINGS);
	}
}

ui_state_t setup_settings_screen(lv_obj_t* parent) {
	settings_screen_state_t* state = calloc(1, sizeof(settings_screen_state_t));

	state->list = bvs_list_create(parent);
	topbar_set_title("Settings");

	lv_obj_t* wifi_btn = bvs_list_add_button(state->list, NULL, "WiFi");

	lv_obj_t* reset_btn =
	    bvs_list_add_button(state->list, NULL, "Reset Bookmarks");
	lv_obj_add_event_cb(reset_btn, reset_clicked_cb, LV_EVENT_CLICKED, NULL);

	lv_obj_t* back_btn = bvs_list_add_button(state->list, NULL, "Back");
	lv_obj_add_event_cb(back_btn, back_cb, LV_EVENT_CLICKED, NULL);

	lv_group_add_obj(lv_group_get_default(), wifi_btn);
	lv_group_add_obj(lv_group_get_default(), reset_btn);
	lv_group_add_obj(lv_group_get_default(), back_btn);

	lv_obj_add_event_cb(wifi_btn, menu_cancel_cb, LV_EVENT_CANCEL, NULL);
	lv_obj_add_event_cb(reset_btn, menu_cancel_cb, LV_EVENT_CANCEL, NULL);
	lv_obj_add_event_cb(back_btn, menu_cancel_cb, LV_EVENT_CANCEL, NULL);

	lv_group_focus_obj(reset_btn);

	return (ui_state_t){.type = SCREEN_SETTINGS, .settings = state};
}

void free_settings_screen(settings_screen_state_t* state) {
	if (!state) {
		return;
	}
	free(state);
}

void update_settings_screen(settings_screen_state_t* state) {
	(void)state;
}