You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
6.3 KiB
136 lines
6.3 KiB
#include "ubl-settings-bootloader.h"
|
|
|
|
void on_ringtone_accept(GtkWidget *,dictionary *dict){
|
|
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
yon_ringtone_window *window = yon_dictionary_get_data(dict->first->next,yon_ringtone_window*);
|
|
const char *username = gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
|
|
const char *password = gtk_entry_get_text(GTK_ENTRY(window->CodeEntry));
|
|
if (yon_char_is_empty(window->prev_name)){
|
|
GtkTreeIter iter;
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->BootUsersList);
|
|
for_iter(model,&iter){
|
|
char *name;
|
|
int user_created;
|
|
gtk_tree_model_get(model,&iter,1,&name,3,&user_created,-1);
|
|
if (user_created){
|
|
if (!strcmp(name,username)){
|
|
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
|
|
data->action_text = USER_EXIST_LABEL(username);
|
|
if (yon_confirmation_dialog_call(window->Window,data)!=GTK_RESPONSE_ACCEPT){
|
|
return;
|
|
}
|
|
break;
|
|
}
|
|
} else {
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NAME_OCCUPIED_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
yon_ubl_status_highlight_incorrect(window->NameEntry);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
// if (yon_char_is_empty(username)){
|
|
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
// yon_ubl_status_highlight_incorrect(window->NameEntry);
|
|
// return;
|
|
// }
|
|
if (yon_char_is_empty(password)){
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
yon_ubl_status_highlight_incorrect(window->CodeEntry);
|
|
return;
|
|
}
|
|
if (!yon_char_is_empty(window->prev_name)&&strcmp(username,window->prev_name)){
|
|
yon_window_config_erase_instant_parameter(window->prev_name,"melodies");
|
|
char *config_melody = config(GRUB_PLAY_parameter);
|
|
if (!yon_char_is_empty(config_melody)&&!strcmp(config_melody,password)){
|
|
yon_config_remove_by_key(GRUB_PLAY_parameter);
|
|
}
|
|
}
|
|
yon_window_config_add_instant_parameter((char*)username,"melodies",(char*)password,YON_TYPE_STRING);
|
|
gtk_widget_destroy(window->Window);
|
|
yon_interface_update(widgets);
|
|
}
|
|
|
|
void on_ringtone_add_clicked(GtkWidget *,main_window *widgets){
|
|
yon_ringtone_window *window = yon_ringtone_window_new();
|
|
char *title = RINGTONE_ADD_TITLE_LABEL;
|
|
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),title,icon_path,"ringtone_add_window");
|
|
gtk_label_set_text(GTK_LABEL(window->TitleLabel),title);
|
|
|
|
dictionary *dict = NULL;
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
|
|
|
|
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_ringtone_accept),dict);
|
|
gtk_widget_show(window->Window);
|
|
|
|
}
|
|
|
|
void on_ringtone_edit_clicked(GtkWidget *,main_window *widgets){
|
|
|
|
GtkTreeIter iter;
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->BootRingtoneList);
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->BootRingtoneTree)),&model,&iter)){
|
|
yon_ringtone_window *window = yon_ringtone_window_new();
|
|
int is_chosen;
|
|
char *name, *code;
|
|
gtk_tree_model_get(model,&iter,0,&is_chosen,1,&name,2,&code,-1);
|
|
char *title = RINGTONE_EDIT_TITLE_LABEL(name);
|
|
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),title,icon_path,"ringtone_add_window");
|
|
gtk_label_set_text(GTK_LABEL(window->TitleLabel),title);
|
|
free(title);
|
|
window->prev_name = yon_char_new(name);
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->NameEntry),name);
|
|
gtk_entry_set_text(GTK_ENTRY(window->CodeEntry),code);
|
|
dictionary *dict = NULL;
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
|
|
|
|
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_ringtone_accept),dict);
|
|
gtk_widget_show(window->Window);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
void on_ringtone_remove_clicked(GtkWidget *,main_window *widgets){
|
|
GtkTreeIter iter;
|
|
GtkTreeModel *model;
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->BootRingtoneTree)),&model,&iter)){
|
|
char *name, *code;
|
|
gtk_tree_model_get(model,&iter,1,&name,2,&code,-1);
|
|
dialog_confirmation_data *data = new(dialog_confirmation_data);
|
|
data->data=NULL;
|
|
data->function=NULL;
|
|
data->action_text = RINGTONE_REMOVE_CONFIRM_LABEL(name);
|
|
data->title = RINGTONE_DELETE_TITLE_LABEL(name);
|
|
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
|
|
char *config_code = config(GRUB_PLAY_parameter);
|
|
yon_window_config_erase_instant_parameter(name,"melodies");
|
|
if (!yon_char_is_empty(config_code)&&strcmp(code,config_code)){
|
|
yon_config_remove_by_key(GRUB_PLAY_parameter);
|
|
}
|
|
|
|
yon_interface_update(widgets);
|
|
}
|
|
}
|
|
}
|
|
|
|
yon_ringtone_window *yon_ringtone_window_new(){
|
|
yon_ringtone_window *window = new(yon_ringtone_window);
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ringtone);
|
|
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
|
|
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
|
|
window->TitleLabel = yon_gtk_builder_get_widget(builder,"TitleLabel");
|
|
window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
|
|
window->CodeEntry = yon_gtk_builder_get_widget(builder,"CodeEntry");
|
|
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
|
|
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
|
|
window->prev_name = NULL;
|
|
|
|
yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->CodeEntry),"01234567890 ");
|
|
yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->NameEntry));
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
return window;
|
|
} |