Make sure that all timeouts in HildonBanner are removed
[hildon] / examples / hildon-time-button-example.c
1 #include                                        <glib.h>
2 #include                                        <gtk/gtk.h>
3 #include                                        <hildon/hildon.h>
4
5 static void
6 on_picker_value_changed (HildonPickerButton * button, gpointer data)
7 {
8   g_print ("Newly selected value: %s\n",
9            hildon_button_get_value (HILDON_BUTTON (button)));
10 }
11
12 static void
13 on_change_policy_clicked (GtkButton *button,
14                           gpointer data)
15 {
16   static HildonTimeSelectorFormatPolicy policy = HILDON_TIME_SELECTOR_FORMAT_POLICY_AUTOMATIC;
17   HildonPickerButton *time_button = NULL;
18   HildonTouchSelector *selector = NULL;
19
20   policy = (policy + 1)%3;
21
22   switch (policy)
23     {
24     case HILDON_TIME_SELECTOR_FORMAT_POLICY_AMPM:
25       hildon_button_set_value (HILDON_BUTTON (button),
26                                "AMPM");
27       break;
28     case HILDON_TIME_SELECTOR_FORMAT_POLICY_24H:
29       hildon_button_set_value (HILDON_BUTTON (button),
30                                "24H");
31       break;
32     case HILDON_TIME_SELECTOR_FORMAT_POLICY_AUTOMATIC:
33       hildon_button_set_value (HILDON_BUTTON (button),
34                                "Automatic");
35       break;
36     }
37
38   time_button = HILDON_PICKER_BUTTON (data);
39   selector = hildon_picker_button_get_selector (time_button);
40
41   g_object_set (G_OBJECT (selector),
42                 "time-format-policy", policy, NULL);
43 }
44
45 int
46 main (int argc, char **argv)
47 {
48   HildonProgram *program = NULL;
49   GtkWidget *window = NULL;
50   GtkWidget *button;
51   GtkWidget *hbox;
52   GtkWidget *button2;
53
54   hildon_gtk_init (&argc, &argv);
55
56   program = hildon_program_get_instance ();
57   g_set_application_name ("hildon-time-button-example");
58
59   window = hildon_stackable_window_new ();
60   gtk_window_set_default_size (GTK_WINDOW (window), 300, 200);
61   hildon_program_add_window (program, HILDON_WINDOW (window));
62
63   button = hildon_time_button_new_step (HILDON_SIZE_AUTO, HILDON_BUTTON_ARRANGEMENT_VERTICAL, 5);
64   g_signal_connect (G_OBJECT (button), "value-changed",
65                     G_CALLBACK (on_picker_value_changed), NULL);
66
67   button2 = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
68                                          HILDON_SIZE_AUTO_HEIGHT,
69                                          HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
70                                          "Change Policy", "Automatic");
71
72   g_signal_connect (G_OBJECT (button2), "clicked",
73                     G_CALLBACK (on_change_policy_clicked), button);
74
75   hbox = gtk_hbox_new (FALSE, 10);
76
77   gtk_container_add (GTK_CONTAINER (hbox), button);
78   gtk_container_add (GTK_CONTAINER (hbox), button2);
79   gtk_container_add (GTK_CONTAINER (window), hbox);
80
81   g_signal_connect (G_OBJECT (window), "delete-event",
82                     G_CALLBACK (gtk_main_quit), NULL);
83
84   gtk_widget_show_all (window);
85
86   gtk_main ();
87
88   return 0;
89 }