2008-04-07 Sven Herzberg <sven@imendio.com>
[hildon] / examples / hildon-hvolumebar-timer-example.c
1 /*
2  * This file is a part of hildon examples
3  *
4  * Copyright (C) 2005, 2006 Nokia Corporation, all rights reserved.
5  *
6  * Author: Michael Dominic Kostrzewa <michael.kostrzewa@nokia.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * as published by the Free Software Foundation; version 2.1 of
11  * the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21  * 02110-1301 USA
22  *
23  */
24
25 #include                                        <stdio.h>
26 #include                                        <stdlib.h>
27 #include                                        <glib.h>
28 #include                                        <gtk/gtk.h>
29 #include                                        "hildon.h"
30
31 GtkDialog*                                      dialog = NULL;
32
33 HildonHVolumebar*                               bar = NULL;
34
35 int                                             cycle = 0;
36
37 gboolean
38 on_idle                                         (void)
39 {
40
41     if (dialog == NULL) {
42
43         g_debug ("Creating the dialog!");
44         
45         dialog = GTK_DIALOG (gtk_dialog_new ());
46
47         bar = HILDON_HVOLUMEBAR (hildon_hvolumebar_new ());
48         gtk_widget_set_size_request (GTK_WIDGET (bar), 400, -1);
49         hildon_helper_set_insensitive_message ((GtkWidget *) bar, "Insensitive");
50         hildon_volumebar_set_range_insensitive_message ((GtkWidget *) bar, "Insensitive range");
51
52         gtk_box_pack_start (GTK_BOX (dialog->vbox), GTK_WIDGET (bar), FALSE, FALSE, 0);
53         gtk_dialog_add_button (dialog, "Close", GTK_RESPONSE_CLOSE);
54
55         gtk_widget_show_all (GTK_WIDGET (dialog));
56         gtk_dialog_run (dialog);
57         gtk_widget_hide (GTK_WIDGET (dialog));
58  
59     } else {
60         
61         if (cycle == 0) {
62                 g_debug ("Making insensitive...");
63                 gtk_widget_set_sensitive (GTK_WIDGET (bar), FALSE);
64         } else if (cycle == 1) {
65                 g_debug ("Making sensitive...");
66                 gtk_widget_set_sensitive (GTK_WIDGET (bar), TRUE);
67         } else if (cycle == 2) { 
68                 g_debug ("Showing back...");
69                 gtk_widget_show (GTK_WIDGET (dialog));
70                 gtk_dialog_run (dialog);
71                 gtk_widget_hide (GTK_WIDGET (dialog));
72         }
73          
74         cycle = (cycle + 1) % 3;
75     }
76
77     g_timeout_add (2000, (GSourceFunc) on_idle, NULL);
78     return FALSE;
79 }
80
81 int
82 main                                            (int argc, 
83                                                  char **args)
84 {
85     gtk_init (&argc, &args);
86
87     g_timeout_add (2000, (GSourceFunc) on_idle, NULL);
88
89     gtk_main ();
90     
91     return 0;
92 }
93
94