[evolution-kolab] EPlugin: read MYRIGHTS and ACL from IMAP server and display result
- From: Christian Hilberg <chilberg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-kolab] EPlugin: read MYRIGHTS and ACL from IMAP server and display result
- Date: Fri, 5 Oct 2012 16:32:41 +0000 (UTC)
commit ce7846c0ab6f21a09088223fe9349dcb705ad745
Author: Christian Hilberg <hilberg kernelconcepts de>
Date: Fri Oct 5 18:28:31 2012 +0200
EPlugin: read MYRIGHTS and ACL from IMAP server and display result
* in the "KolabFolderProperties..." context menu dialog,
read the ACL and MYRIGHTS data from the IMAP server
and update the UI accordingly for displaying that data
src/eplugin/e-kolab-folder-permissions.c | 63 ++++++++++++++++++++++++++++--
1 files changed, 59 insertions(+), 4 deletions(-)
---
diff --git a/src/eplugin/e-kolab-folder-permissions.c b/src/eplugin/e-kolab-folder-permissions.c
index 7abca84..d114551 100644
--- a/src/eplugin/e-kolab-folder-permissions.c
+++ b/src/eplugin/e-kolab-folder-permissions.c
@@ -363,7 +363,7 @@ e_kolab_folder_permissions_ui_new (void)
gtk_widget_set_margin_right (myrights_lbl, 4);
gtk_widget_set_margin_top (myrights_lbl, 2);
gtk_widget_set_margin_bottom (myrights_lbl, 2);
- uidata->widgets->myrights_lbl = myrights;
+ uidata->widgets->myrights_lbl = myrights_lbl;
gtk_container_add (GTK_CONTAINER (myrights), myrights_lbl);
gtk_grid_attach (GTK_GRID (grid), myrights, 0, row, 2, 1);
@@ -426,9 +426,53 @@ e_kolab_folder_permissions_ui_free (KolabFolderPermUIData *uidata)
void
e_kolab_folder_permissions_ui_update_from_uidata (KolabFolderPermUIData *uidata)
{
+ GtkTreeView *treeview = NULL;
+ GtkListStore *liststore = NULL;
+ GList *acl_ptr = NULL;
+
g_return_if_fail (uidata != NULL);
+ g_return_if_fail (uidata->permissions != NULL);
+ g_return_if_fail (uidata->widgets != NULL);
+ g_return_if_fail (GTK_IS_TREE_VIEW (uidata->widgets->treeview));
+ g_return_if_fail (GTK_IS_LABEL (uidata->widgets->myrights_lbl));
- g_warning ("%s: FIXME implement me", __func__);
+ treeview = GTK_TREE_VIEW (uidata->widgets->treeview);
+ liststore = GTK_LIST_STORE (gtk_tree_view_get_model (treeview));
+
+ acl_ptr = uidata->permissions->acl;
+ while (acl_ptr != NULL) {
+ CamelImapxAclEntry *entry = NULL;
+ gchar *access_id = NULL;
+ gchar *rights = NULL;
+
+ entry = (CamelImapxAclEntry *) acl_ptr->data;
+ if (entry == NULL)
+ goto skip;
+
+ access_id = entry->access_id;
+ rights = entry->rights;
+
+ gtk_list_store_insert_with_values (liststore,
+ NULL, /* GtkTreeIter not needed */
+ -1, /* append to liststore */
+ 0, g_strdup (access_id),
+ 1, g_strdup (rights),
+ -1);
+ skip:
+ acl_ptr = g_list_next (acl_ptr);
+ }
+
+ if (uidata->permissions->myrights != NULL) {
+ GtkWidget *label = uidata->widgets->myrights_lbl;
+ gpointer data = uidata->permissions->myrights->data;
+ gchar *rights = NULL;
+
+ if (data != NULL)
+ rights = ((CamelImapxAclEntry *) data)->rights;
+
+ gtk_label_set_text (GTK_LABEL (label),
+ rights);
+ }
}
gboolean
@@ -439,7 +483,7 @@ e_kolab_folder_permissions_ui_query_store (KolabFolderPermUIData *uidata,
CamelKolabIMAPXStore *kstore = NULL;
gchar *selected_path = NULL;
GError *tmp_err = NULL;
- gboolean ok = FALSE;
+ gboolean ok = TRUE;
g_return_val_if_fail (uidata != NULL, FALSE);
/* cancellable may be NULL */
@@ -474,14 +518,25 @@ e_kolab_folder_permissions_ui_query_store (KolabFolderPermUIData *uidata,
FALSE, /* general ACL (no myrights) */
cancellable,
&tmp_err);
- g_free (selected_path);
+ if (tmp_err != NULL)
+ goto exit;
+ uidata->permissions->myrights =
+ camel_kolab_imapx_store_get_folder_permissions (kstore,
+ selected_path,
+ TRUE, /* myrights only */
+ cancellable,
+ &tmp_err);
exit:
+
if (tmp_err != NULL) {
g_propagate_error (err, tmp_err);
ok = FALSE;
}
+ if (selected_path != NULL)
+ g_free (selected_path);
+
if (kstore != NULL)
g_object_unref (kstore);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]