1 <!-- ##### SECTION Title ##### -->
4 <!-- ##### SECTION Short_Description ##### -->
7 <!-- ##### SECTION Long_Description ##### -->
15 <!-- hildon-tests/wt/hildon-widgets-combo/testcaptioncontrol.c -->
16 ##include <hildon-widgets/hildon-caption.h>
18 ##include <gtk/gtkwidget.h>
19 ##include <gtk/gtkvbox.h>
20 ##include <gtk/gtkhbox.h>
21 ##include <gtk/gtkcombobox.h>
22 ##include <gtk/gtkcomboboxentry.h>
23 ##include <gtk/gtkentry.h>
24 ##include <gtk/gtkscrolledwindow.h>
25 ##include <gtk/gtkimage.h>
26 ##include <gtk/gtkcheckbutton.h>
27 ##include <glib/glist.h>
28 ##include <gtk/gtktogglebutton.h>
29 ##include <gtk/gtklabel.h>
31 ##include <libintl.h>
32 ##define _(String) gettext(String)
34 static void destroy_callback( GtkWidget *widget );
35 void _testCaptionControl(GtkWidget *parent, gchar **help);
37 gchar *hildon_icons[] = { "hildon-file-open",
43 const int num_icons = sizeof( hildon_icons ) / sizeof( gchar * );
45 static GList *caption_list = NULL;
47 static void text_changed_callback( HildonCaption *caption, gpointer user_data )
49 hildon_caption_set_label( caption, gtk_entry_get_text( user_data ) );
52 static void icon_toggled_callback( HildonCaption *caption, gpointer user_data )
54 GtkWidget *phone_image = NULL;
55 GList *cur = caption_list;
59 if ( !hildon_caption_get_icon_image( HILDON_CAPTION(cur->data) ) )
61 phone_image = gtk_image_new_from_stock( hildon_icons[i], GTK_ICON_SIZE_SMALL_TOOLBAR );
64 hildon_caption_set_icon_image( HILDON_CAPTION( cur->data), phone_image );
67 if ( ++i >= num_icons )
74 static void mandatory_toggled_callback( HildonCaption *caption, gpointer user_data )
76 GList *cur = caption_list;
80 if ( hildon_caption_is_mandatory( HILDON_CAPTION(cur->data) ) )
82 hildon_caption_set_status( HILDON_CAPTION(cur->data), HILDON_CAPTION_OPTIONAL );
86 hildon_caption_set_status( HILDON_CAPTION(cur->data), HILDON_CAPTION_MANDATORY );
90 if ( ++i > num_icons )
97 static void destroy_callback( GtkWidget *widget )
99 g_print( "Destroying the empty label\n" );
102 void _testCaptionControl(GtkWidget *parent, gchar **help)
105 GtkWidget *control = NULL;
106 GtkWidget *caption_control = NULL;
107 GtkWidget *vbox = gtk_vbox_new( FALSE, 0 );
108 GtkWidget *top_vbox = GTK_WIDGET(gtk_vbox_new( FALSE, 0 ));
109 GtkWidget *hbox = GTK_WIDGET(gtk_hbox_new( FALSE, 0 ));
110 GtkSizeGroup *group= GTK_SIZE_GROUP( gtk_size_group_new( GTK_SIZE_GROUP_HORIZONTAL ) );
112 GtkWidget *some_image = gtk_image_new_from_file( "../share/themes/commonimages/question.png" );
114 control = gtk_entry_new();
115 caption_control = hildon_caption_new( group, _("Man Entry"), control,
116 NULL, HILDON_CAPTION_MANDATORY);
117 gtk_box_pack_start( GTK_BOX( top_vbox ), caption_control, FALSE, FALSE, 0 );
119 g_signal_connect( G_OBJECT( control ), "destroy", G_CALLBACK( destroy_callback ), NULL );
121 control = gtk_entry_new();
122 caption_control = hildon_caption_new( group, _("O grow"), control,
123 NULL, HILDON_CAPTION_OPTIONAL);
124 g_signal_connect_swapped( control, "changed",
125 G_CALLBACK( text_changed_callback ), caption_control );
126 gtk_box_pack_start( GTK_BOX( top_vbox ), caption_control, FALSE, FALSE, 0 );
128 gtk_box_pack_end( GTK_BOX( hbox ), some_image, FALSE, FALSE, 0 );
129 gtk_box_pack_end( GTK_BOX( hbox ), top_vbox, TRUE, TRUE, 0 );
131 gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
133 control = gtk_combo_box_entry_new_text();
134 gtk_combo_box_append_text(GTK_COMBO_BOX(control), _("First Item"));
135 gtk_combo_box_append_text(GTK_COMBO_BOX(control), _("Second Item"));
136 gtk_combo_box_append_text(GTK_COMBO_BOX(control), _("Third Item"));
137 gtk_combo_box_append_text(GTK_COMBO_BOX(control), _("Fourth Item"));
138 gtk_combo_box_append_text(GTK_COMBO_BOX(control), _("Fifth Item"));
139 caption_control = hildon_caption_new( group, _("M Com"), control,
140 NULL, HILDON_CAPTION_MANDATORY);
141 gtk_box_pack_start( GTK_BOX( vbox ), caption_control, FALSE, FALSE, 0 );
142 caption_list = g_list_append( caption_list, (gpointer)caption_control );
144 control = gtk_label_new("This text should not be focusable");
145 caption_control = hildon_caption_new (group, _("UFLabel"), control, NULL, HILDON_CAPTION_OPTIONAL);
146 gtk_box_pack_start( GTK_BOX( vbox ), caption_control, FALSE, FALSE, 0 );
147 caption_list = g_list_append (caption_list, (gpointer) caption_control );
149 control = gtk_combo_box_new_text(); /* entry */
151 gtk_combo_box_append_text(GTK_COMBO_BOX(control), _("Tango"));
152 gtk_combo_box_append_text(GTK_COMBO_BOX(control), _("Mambo"));
153 gtk_combo_box_append_text(GTK_COMBO_BOX(control), _("Merengue"));
154 gtk_combo_box_append_text(GTK_COMBO_BOX(control), _("Salsa"));
155 caption_control = hildon_caption_new( group, _("O Option Menu"), control,
156 NULL, HILDON_CAPTION_MANDATORY);
157 gtk_box_pack_start( GTK_BOX( vbox ), caption_control, FALSE, FALSE, 0 );
158 caption_list = g_list_append( caption_list, (gpointer)caption_control );
161 control = gtk_check_button_new();
162 caption_control = hildon_caption_new( group, _("show icon"), control,
163 NULL, HILDON_CAPTION_MANDATORY);
164 g_signal_connect_swapped( control, "toggled",
165 G_CALLBACK( icon_toggled_callback ), caption_control );
166 gtk_box_pack_start( GTK_BOX( vbox ), caption_control, FALSE, FALSE, 0 );
167 caption_list = g_list_append( caption_list, (gpointer)caption_control );
169 control = gtk_check_button_new();
170 caption_control = hildon_caption_new( group, _("toggle status"), control,
171 NULL, HILDON_CAPTION_OPTIONAL);
172 g_signal_connect_swapped( control, "toggled",
173 G_CALLBACK( mandatory_toggled_callback ), caption_control );
174 gtk_box_pack_start( GTK_BOX( vbox ), caption_control, FALSE, FALSE, 0 );
175 caption_list = g_list_append( caption_list, (gpointer)caption_control );
178 gtk_container_add( GTK_CONTAINER( parent ), vbox );
180 gtk_widget_show_all( parent );
183 *help = g_strdup ("");
190 <!-- ##### SECTION See_Also ##### -->
195 <!-- ##### SECTION Stability_Level ##### -->
198 <!-- ##### ENUM HildonCaptionStatus ##### -->
203 @HILDON_CAPTION_OPTIONAL:
204 @HILDON_CAPTION_MANDATORY:
206 <!-- ##### MACRO HILDON_TYPE_CAPTION_STATUS ##### -->
213 <!-- ##### FUNCTION hildon_caption_get_type ##### -->
221 <!-- ##### FUNCTION hildon_caption_new ##### -->
234 <!-- ##### FUNCTION hildon_caption_get_sizegroup ##### -->
243 <!-- ##### FUNCTION hildon_caption_set_sizegroup ##### -->
252 <!-- ##### FUNCTION hildon_caption_is_mandatory ##### -->
261 <!-- ##### FUNCTION hildon_caption_set_status ##### -->
270 <!-- ##### FUNCTION hildon_caption_get_status ##### -->
279 <!-- ##### FUNCTION hildon_caption_set_icon_image ##### -->
288 <!-- ##### FUNCTION hildon_caption_get_icon_image ##### -->
297 <!-- ##### FUNCTION hildon_caption_set_label ##### -->
306 <!-- ##### FUNCTION hildon_caption_get_label ##### -->
315 <!-- ##### FUNCTION hildon_caption_set_separator ##### -->
324 <!-- ##### FUNCTION hildon_caption_get_separator ##### -->
333 <!-- ##### FUNCTION hildon_caption_set_label_alignment ##### -->
342 <!-- ##### FUNCTION hildon_caption_get_label_alignment ##### -->
351 <!-- ##### FUNCTION hildon_caption_get_control ##### -->
360 <!-- ##### FUNCTION hildon_caption_set_control ##### -->
369 <!-- ##### FUNCTION hildon_caption_set_child_expand ##### -->
378 <!-- ##### FUNCTION hildon_caption_get_child_expand ##### -->
387 <!-- ##### SIGNAL HildonCaption::activate ##### -->
392 @hildoncaption: the object which received the signal.
394 <!-- ##### ARG HildonCaption:icon ##### -->
399 <!-- ##### ARG HildonCaption:label ##### -->
404 <!-- ##### ARG HildonCaption:separator ##### -->
409 <!-- ##### ARG HildonCaption:size-group ##### -->
414 <!-- ##### ARG HildonCaption:status ##### -->
419 <!-- ##### ARG HildonCaption:expand ##### -->