Allow alarms and timers to be deleted
This commit is contained in:
parent
7ddf043fb3
commit
e37fb507e3
83
src/clock.c
83
src/clock.c
|
@ -86,10 +86,12 @@ static void _clock_on_toggled(gpointer data);
|
||||||
static gboolean _clock_on_window_closex(gpointer data);
|
static gboolean _clock_on_window_closex(gpointer data);
|
||||||
|
|
||||||
/* alarm */
|
/* alarm */
|
||||||
|
static void _clock_on_alarm_delete(gpointer data);
|
||||||
static void _clock_on_alarm_toggled(GtkCellRendererToggle * renderer,
|
static void _clock_on_alarm_toggled(GtkCellRendererToggle * renderer,
|
||||||
char * path, gpointer data);
|
char * path, gpointer data);
|
||||||
|
|
||||||
/* timer */
|
/* timer */
|
||||||
|
static void _clock_on_timer_delete(gpointer data);
|
||||||
static void _clock_on_timer_toggled(GtkCellRendererToggle * renderer,
|
static void _clock_on_timer_toggled(GtkCellRendererToggle * renderer,
|
||||||
char * path, gpointer data);
|
char * path, gpointer data);
|
||||||
|
|
||||||
|
@ -186,6 +188,8 @@ static void _new_alarms(Clock * clock, GtkWidget * notebook)
|
||||||
toolitem = gtk_separator_tool_item_new();
|
toolitem = gtk_separator_tool_item_new();
|
||||||
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
||||||
toolitem = gtk_tool_button_new_from_stock(GTK_STOCK_DELETE);
|
toolitem = gtk_tool_button_new_from_stock(GTK_STOCK_DELETE);
|
||||||
|
g_signal_connect_swapped(toolitem, "clicked", G_CALLBACK(
|
||||||
|
_clock_on_alarm_delete), clock);
|
||||||
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
|
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
|
||||||
/* view */
|
/* view */
|
||||||
|
@ -356,6 +360,8 @@ static void _new_timers(Clock * clock, GtkWidget * notebook)
|
||||||
toolitem = gtk_separator_tool_item_new();
|
toolitem = gtk_separator_tool_item_new();
|
||||||
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
||||||
toolitem = gtk_tool_button_new_from_stock(GTK_STOCK_DELETE);
|
toolitem = gtk_tool_button_new_from_stock(GTK_STOCK_DELETE);
|
||||||
|
g_signal_connect_swapped(toolitem, "clicked", G_CALLBACK(
|
||||||
|
_clock_on_timer_delete), clock);
|
||||||
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
|
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
|
||||||
/* view */
|
/* view */
|
||||||
|
@ -549,6 +555,44 @@ static gboolean _clock_on_window_closex(gpointer data)
|
||||||
|
|
||||||
|
|
||||||
/* alarm */
|
/* alarm */
|
||||||
|
/* clock_on_alarm_delete */
|
||||||
|
static void _clock_on_alarm_delete(gpointer data)
|
||||||
|
{
|
||||||
|
Clock * clock = data;
|
||||||
|
GtkTreeSelection * treesel;
|
||||||
|
GList * rows;
|
||||||
|
GList * s;
|
||||||
|
GtkTreeModel * model;
|
||||||
|
GtkTreePath * path;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
|
||||||
|
treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(clock->al_view));
|
||||||
|
if((rows = gtk_tree_selection_get_selected_rows(treesel, &model))
|
||||||
|
== NULL)
|
||||||
|
return;
|
||||||
|
for(s = rows; s != NULL; s = s->next)
|
||||||
|
{
|
||||||
|
if((path = s->data) == NULL)
|
||||||
|
continue;
|
||||||
|
s->data = gtk_tree_row_reference_new(model, path);
|
||||||
|
gtk_tree_path_free(path);
|
||||||
|
}
|
||||||
|
for(s = rows; s != NULL; s = s->next)
|
||||||
|
{
|
||||||
|
if(s->data == NULL)
|
||||||
|
continue;
|
||||||
|
if((path = gtk_tree_row_reference_get_path(s->data)) == NULL)
|
||||||
|
continue;
|
||||||
|
gtk_tree_model_get_iter(model, &iter, path);
|
||||||
|
gtk_tree_path_free(path);
|
||||||
|
/* FIXME really implement */
|
||||||
|
gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
|
||||||
|
}
|
||||||
|
g_list_foreach(rows, (GFunc)gtk_tree_row_reference_free, NULL);
|
||||||
|
g_list_free(rows);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* clock_on_alarm_toggled */
|
/* clock_on_alarm_toggled */
|
||||||
static void _clock_on_alarm_toggled(GtkCellRendererToggle * renderer,
|
static void _clock_on_alarm_toggled(GtkCellRendererToggle * renderer,
|
||||||
char * path, gpointer data)
|
char * path, gpointer data)
|
||||||
|
@ -565,6 +609,45 @@ static void _clock_on_alarm_toggled(GtkCellRendererToggle * renderer,
|
||||||
|
|
||||||
|
|
||||||
/* timer */
|
/* timer */
|
||||||
|
/* clock_on_timer_delete */
|
||||||
|
static void _clock_on_timer_delete(gpointer data)
|
||||||
|
{
|
||||||
|
Clock * clock = data;
|
||||||
|
GtkTreeSelection * treesel;
|
||||||
|
GList * rows;
|
||||||
|
GList * s;
|
||||||
|
GtkTreeModel * model;
|
||||||
|
GtkTreePath * path;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
|
||||||
|
treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(clock->ti_view));
|
||||||
|
if((rows = gtk_tree_selection_get_selected_rows(treesel, &model))
|
||||||
|
== NULL)
|
||||||
|
return;
|
||||||
|
for(s = rows; s != NULL; s = s->next)
|
||||||
|
{
|
||||||
|
if((path = s->data) == NULL)
|
||||||
|
continue;
|
||||||
|
s->data = gtk_tree_row_reference_new(model, path);
|
||||||
|
gtk_tree_path_free(path);
|
||||||
|
}
|
||||||
|
for(s = rows; s != NULL; s = s->next)
|
||||||
|
{
|
||||||
|
if(s->data == NULL)
|
||||||
|
continue;
|
||||||
|
if((path = gtk_tree_row_reference_get_path(s->data)) == NULL)
|
||||||
|
continue;
|
||||||
|
gtk_tree_model_get_iter(model, &iter, path);
|
||||||
|
gtk_tree_path_free(path);
|
||||||
|
/* FIXME really implement */
|
||||||
|
gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
|
||||||
|
}
|
||||||
|
g_list_foreach(rows, (GFunc)gtk_tree_row_reference_free, NULL);
|
||||||
|
g_list_free(rows);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* clock_on_timer_toggled */
|
||||||
static void _clock_on_timer_toggled(GtkCellRendererToggle * renderer,
|
static void _clock_on_timer_toggled(GtkCellRendererToggle * renderer,
|
||||||
char * path, gpointer data)
|
char * path, gpointer data)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user