2006-06-07 James Livingston <doclivingston@gmail.com>
[rhythmbox.git] / daapsharing / rb-daap-dialog.c
blobf8bd023e0f93acc440394465e22f55f2d09b54d4
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
3 * Implementation of DAAP (iTunes Music Sharing) dialogs
4 * (password & name collision)
6 * Copyright (C) 2005 Charles Schmidt <cschmidt2@emich.edu>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24 #include "config.h"
26 #include <string.h>
28 #include <glib/gi18n.h>
29 #include <glib/gprintf.h>
30 #include <gtk/gtk.h>
32 #include "rb-daap-dialog.h"
34 char *
35 rb_daap_password_dialog_new_run (GtkWindow *parent,
36 const char *name)
38 GtkWidget *dialog;
39 GtkWidget *hbox;
40 GtkWidget *image;
41 GtkWidget *vbox;
42 char *s;
43 GtkWidget *label;
44 GtkWidget *entry;
45 gint resp;
46 char *ret;
48 dialog = gtk_dialog_new_with_buttons (_("Password Required"),
49 parent,
50 GTK_DIALOG_DESTROY_WITH_PARENT,
51 GTK_STOCK_CANCEL,
52 GTK_RESPONSE_CANCEL,
53 GTK_STOCK_OK,
54 GTK_RESPONSE_OK,
55 NULL);
57 gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
58 gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
60 hbox = gtk_hbox_new (FALSE, 6);
61 gtk_container_set_border_width (GTK_CONTAINER (hbox), 12);
62 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 0);
64 image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG);
65 gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
67 vbox = gtk_vbox_new (FALSE, 6);
68 gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
70 s = g_strdup_printf (_("The music share '%s' requires a password to connect"), name);
71 label = gtk_label_new_with_mnemonic (s);
72 g_free (s);
73 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
75 hbox = gtk_hbox_new (FALSE, 6);
76 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
78 label = gtk_label_new_with_mnemonic (_("_Password:"));
79 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
81 entry = gtk_entry_new ();
82 gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
83 gtk_entry_set_visibility (GTK_ENTRY (entry), FALSE);
84 gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
85 gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
87 gtk_widget_show_all (dialog);
89 resp = gtk_dialog_run (GTK_DIALOG (dialog));
91 switch (resp) {
92 case GTK_RESPONSE_OK: {
93 ret = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
94 break;
96 case GTK_RESPONSE_CANCEL:
97 default:
98 ret = g_strdup ("");
99 break;
102 gtk_widget_destroy (dialog);
104 return ret;
107 char *
108 rb_daap_collision_dialog_new_run (GtkWindow *parent,
109 const char *old_name)
111 GtkWidget *dialog;
112 GtkWidget *hbox;
113 GtkWidget *image;
114 GtkWidget *vbox;
115 char *s;
116 GtkWidget *label;
117 GtkWidget *entry;
118 gint resp;
120 dialog = gtk_dialog_new_with_buttons (_("Invalid share name"),
121 parent,
122 GTK_DIALOG_DESTROY_WITH_PARENT,
123 GTK_STOCK_OK,
124 GTK_RESPONSE_OK,
125 NULL);
126 gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
127 gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
129 hbox = gtk_hbox_new (FALSE, 6);
130 gtk_container_set_border_width (GTK_CONTAINER (hbox), 12);
131 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 0);
133 image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG);
134 gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
136 vbox = gtk_vbox_new (FALSE, 6);
137 gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
139 s = g_strdup_printf (_("The shared music name '%s' is already taken. Please choose another."), old_name);
140 label = gtk_label_new (s);
141 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
142 g_free (s);
144 hbox = gtk_hbox_new (FALSE, 12);
145 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
147 label = gtk_label_new_with_mnemonic (_("Shared music _name:"));
148 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
150 entry = gtk_entry_new ();
151 gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
152 gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
153 gtk_entry_set_text (GTK_ENTRY (entry), old_name);
154 gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
156 gtk_widget_show_all (dialog);
158 do {
159 resp = gtk_dialog_run (GTK_DIALOG (dialog));
160 } while (resp != GTK_RESPONSE_OK);
162 s = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
163 gtk_widget_destroy (dialog);
165 return s;