Login
1 branch 0 tags
Ben (T14/NixOS) Minor Makefile cleanup 7080bfb 28 days ago 85 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 wifi_clicked_cb(lv_event_t* e) {
	if (lv_event_get_code(e) == LV_EVENT_CLICKED) {
		navigate_to(SCREEN_WIFI);
	}
}

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_nav_button(
	    state->list, NULL, "WiFi", wifi_clicked_cb, NULL, menu_cancel_cb);

	bvs_list_add_nav_button(state->list, NULL, "Reset Bookmarks",
	                        reset_clicked_cb, NULL, menu_cancel_cb);

	bvs_list_add_nav_button(state->list, NULL, "Back", back_cb, NULL,
	                        menu_cancel_cb);

	lv_group_focus_obj(wifi_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;
}