Implement delete call with context menu on longpress
* src/ui/call-record-row.ui: Add menu, GtkPopover. Surround existing elements with GtkEventBox to capture longpress/rightclicks * src/calls-call-record-row.c: Provide functions emiting "call-delete" signal, add widgets from ui file * src/calls-record.c: Add "call-delete" signal * src/calls-history-box.c: Add callback for "call-delete" signal * src/calls-record-store.c: Add callback for "call-delete" signal * src/util.c: Add convenience function calls_find_in_store for finding items in ListModel * src/util.h: Add declaration of calls_find_in_store
This commit is contained in:
@@ -81,6 +81,56 @@ struct _CallsRecordStore
|
||||
G_DEFINE_TYPE (CallsRecordStore, calls_record_store, G_TYPE_LIST_STORE);
|
||||
|
||||
|
||||
static void
|
||||
delete_record_cb (GomResource *resource,
|
||||
GAsyncResult *res,
|
||||
CallsRecordStore *self)
|
||||
{
|
||||
g_autoptr (GError) error = NULL;
|
||||
gboolean ok;
|
||||
guint id;
|
||||
|
||||
ok = gom_resource_delete_finish (resource,
|
||||
res,
|
||||
&error);
|
||||
|
||||
g_object_get (G_OBJECT (resource),
|
||||
"id",
|
||||
&id,
|
||||
NULL);
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
if (error)
|
||||
{
|
||||
g_warning ("Error deleting call record with id %u from database %s",
|
||||
id, error->message);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_warning ("Unknown error deleting call record with id %u from database",
|
||||
id);
|
||||
}
|
||||
}
|
||||
else {
|
||||
g_debug ("Successfully deleted call record with id %u from database",
|
||||
id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
delete_call_cb (CallsCallRecord *record,
|
||||
CallsRecordStore *self)
|
||||
{
|
||||
gom_resource_delete_async (GOM_RESOURCE (record),
|
||||
(GAsyncReadyCallback) delete_record_cb,
|
||||
self);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
load_calls_fetch_cb (GomResourceGroup *group,
|
||||
GAsyncResult *res,
|
||||
@@ -127,6 +177,11 @@ load_calls_fetch_cb (GomResourceGroup *group,
|
||||
{
|
||||
g_date_time_unref (end);
|
||||
}
|
||||
|
||||
g_signal_connect (record,
|
||||
"call-delete",
|
||||
G_CALLBACK (delete_call_cb),
|
||||
self);
|
||||
}
|
||||
|
||||
g_list_store_splice (G_LIST_STORE (self),
|
||||
|
||||
Reference in New Issue
Block a user