[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