[Goodies-commits] r6927 - in gigolo/trunk: . src

Enrico Troeger enrico at xfce.org
Mon Mar 16 22:27:02 CET 2009


Author: enrico
Date: 2009-03-16 21:27:02 +0000 (Mon, 16 Mar 2009)
New Revision: 6927

Modified:
   gigolo/trunk/ChangeLog
   gigolo/trunk/src/browsenetworkdialog.c
   gigolo/trunk/src/window.c
   gigolo/trunk/src/window.h
Log:
Disable the 'Create Bookmark' action in the 'Browse Network' dialog when the selected share is already bookmarked.

Modified: gigolo/trunk/ChangeLog
===================================================================
--- gigolo/trunk/ChangeLog	2009-03-16 21:26:40 UTC (rev 6926)
+++ gigolo/trunk/ChangeLog	2009-03-16 21:27:02 UTC (rev 6927)
@@ -11,6 +11,9 @@
    Network' dialog on parent items.
  * src/bookmarkdialog.c:
    Use a Close button to close the dialog instead of a OK button.
+ * src/browsenetworkdialog.c, src/window.c, src/window.h:
+   Disable the 'Create Bookmark' action in the 'Browse Network' dialog
+   when the selected share is already bookmarked.
 
 
 2009-03-05  Enrico Tröger  <enrico(at)xfce(dot)org>

Modified: gigolo/trunk/src/browsenetworkdialog.c
===================================================================
--- gigolo/trunk/src/browsenetworkdialog.c	2009-03-16 21:26:40 UTC (rev 6926)
+++ gigolo/trunk/src/browsenetworkdialog.c	2009-03-16 21:27:02 UTC (rev 6927)
@@ -61,7 +61,6 @@
 {
 	COLUMN_NAME,
 	COLUMN_URI,
-	COLUMN_SHARE,
 	COLUMN_ICON,
 	COLUMN_CAN_MOUNT,
 	N_COLUMNS,
@@ -352,16 +351,34 @@
 	GtkTreeModel *model;
 	GtkTreeIter iter;
 	gboolean set = FALSE;
+	gboolean is_bookmark = FALSE;
 
 	if (selection != NULL && gtk_tree_selection_get_selected(selection, &model, &iter))
 	{
-		gtk_tree_model_get(model, &iter, COLUMN_CAN_MOUNT, &set, -1);
+		gchar *uri, *share;
+		gtk_tree_model_get(model, &iter,
+			COLUMN_CAN_MOUNT, &set,
+			COLUMN_URI, &uri,
+			COLUMN_NAME, &share,
+			-1);
+
+		if (set)
+		{
+			gchar *full_uri = g_strconcat(uri, share, "/", NULL);
+
+			is_bookmark = (gigolo_window_find_bookmark_by_uri(
+								GIGOLO_WINDOW(priv->parent), full_uri) != NULL);
+
+			g_free(full_uri);
+		}
+		g_free(share);
+		g_free(uri);
 	}
 
 	gtk_widget_set_sensitive(priv->button_connect, set);
-	gtk_widget_set_sensitive(priv->button_bookmark, set);
+	gtk_widget_set_sensitive(priv->button_bookmark, set && ! is_bookmark);
 	gtk_widget_set_sensitive(priv->item_connect, set);
-	gtk_widget_set_sensitive(priv->item_bookmark, set);
+	gtk_widget_set_sensitive(priv->item_bookmark, set && ! is_bookmark);
 }
 
 
@@ -376,7 +393,7 @@
 
 	tree = gtk_tree_view_new();
 	store = gtk_tree_store_new(N_COLUMNS,
-		G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_ICON, G_TYPE_BOOLEAN);
+		G_TYPE_STRING, G_TYPE_STRING, G_TYPE_ICON, G_TYPE_BOOLEAN);
 
     column = gtk_tree_view_column_new();
 

Modified: gigolo/trunk/src/window.c
===================================================================
--- gigolo/trunk/src/window.c	2009-03-16 21:26:40 UTC (rev 6926)
+++ gigolo/trunk/src/window.c	2009-03-16 21:27:02 UTC (rev 6927)
@@ -244,15 +244,21 @@
 }
 
 
-static GigoloBookmark *get_bookmark_from_uri(GigoloWindow *window, const gchar *uri)
+GigoloBookmark *gigolo_window_find_bookmark_by_uri(GigoloWindow *window, const gchar *uri)
 {
-	GigoloWindowPrivate *priv = GIGOLO_WINDOW_GET_PRIVATE(window);
-	GigoloBookmarkList *bml = gigolo_settings_get_bookmarks(priv->settings);
+	GigoloWindowPrivate *priv;
+	GigoloBookmarkList *bml;
 	GigoloBookmark *bm = NULL;
 	gboolean found = FALSE;
 	gchar *tmp_uri;
 	guint i;
 
+	g_return_val_if_fail(window != NULL, FALSE);
+	g_return_val_if_fail(uri != NULL, FALSE);
+
+	priv = GIGOLO_WINDOW_GET_PRIVATE(window);
+	bml = gigolo_settings_get_bookmarks(priv->settings);
+
 	for (i = 0; i < bml->len && ! found; i++)
 	{
 		bm = g_ptr_array_index(bml, i);
@@ -373,7 +379,7 @@
 		{
 			gchar *uri;
 			gigolo_backend_gvfs_get_name_and_uri_from_mount(mnt, NULL, &uri);
-			bm = get_bookmark_from_uri(window, uri);
+			bm = gigolo_window_find_bookmark_by_uri(window, uri);
 			if (bm != NULL && gigolo_bookmark_get_autoconnect(bm))
 			{	/* we don't want auto-connection to reconnect this bookmark right
 				   after we unmount it. */
@@ -609,7 +615,7 @@
 
 		gigolo_backend_gvfs_get_name_and_uri_from_mount(ref, NULL, &uri);
 
-		found = (get_bookmark_from_uri(window, uri) != NULL);
+		found = (gigolo_window_find_bookmark_by_uri(window, uri) != NULL);
 
 		g_free(uri);
 		return found;
@@ -881,7 +887,7 @@
 
 			gigolo_backend_gvfs_get_name_and_uri_from_mount(mnt, &name, &uri);
 
-			if (get_bookmark_from_uri(window, uri) == NULL)
+			if (gigolo_window_find_bookmark_by_uri(window, uri) == NULL)
 			{
 				GigoloBookmark *bm = gigolo_bookmark_new_from_uri(name, uri);
 				if (gigolo_bookmark_is_valid(bm))

Modified: gigolo/trunk/src/window.h
===================================================================
--- gigolo/trunk/src/window.h	2009-03-16 21:26:40 UTC (rev 6926)
+++ gigolo/trunk/src/window.h	2009-03-16 21:27:02 UTC (rev 6927)
@@ -46,15 +46,19 @@
 	GtkWindowClass parent_class;
 };
 
-GType		gigolo_window_get_type			(void);
-GtkWidget*	gigolo_window_new				(GigoloSettings *settings);
+GType			gigolo_window_get_type				(void);
+GtkWidget*		gigolo_window_new					(GigoloSettings *settings);
 
-void		gigolo_window_update_bookmarks	(GigoloWindow *window);
-gboolean 	gigolo_window_do_autoconnect	(gpointer data);
+void			gigolo_window_update_bookmarks		(GigoloWindow *window);
+gboolean 		gigolo_window_do_autoconnect		(gpointer data);
 
-void		gigolo_window_mount_from_bookmark(GigoloWindow *window, GigoloBookmark *bookmark,
-											  gboolean show_dialog);
+void			gigolo_window_mount_from_bookmark	(GigoloWindow *window,
+													 GigoloBookmark *bookmark,
+													 gboolean show_dialog);
 
+GigoloBookmark*	gigolo_window_find_bookmark_by_uri	(GigoloWindow *window, const gchar *uri);
+
+
 G_END_DECLS
 
 #endif /* __WINDOW_H__ */




More information about the Goodies-commits mailing list