wifi: reference resources directly
[gregoa/zavai.git] / src / app_wifi.vala
1 /*
2  * app_wifi - WiFi buttons
3  * copied from app_gps.vala
4  *
5  * Copyright (C) 2009  Enrico Zini <enrico@enricozini.org>
6  * Copyright (C) 2009  gregor herrmann <gregor.herrmann@comodo.priv.at>
7  *
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.
12  *
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.
17  *
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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22
23 using GLib;
24
25 namespace zavai {
26 namespace ui {
27 namespace wifi {
28
29 public class WiFiRequest : Gtk.ToggleButton
30 {
31         protected string label_start;
32         protected string label_stop;
33         protected zavai.StatusIcon status_icon;
34         protected bool power = false;
35
36         public WiFiRequest()
37         {
38                 label_start = "Start WiFi";
39                 label_stop = "Stop WiFi";
40                 set_size_request(0, zavai.config.min_button_height);
41                 toggled += on_toggled;
42
43                 set_label(get_active() ? label_stop : label_start);
44
45                 //tooltip = "WiFi status";
46                 try {
47                         power = zavai.wifi.wifi.device.GetPower();
48                 } catch (Error e) {
49                         power = false;
50                 }
51                 zavai.wifi.wifi.device.Power += on_power_status_changed;
52
53                 // WiFi status icon
54                 status_icon = new zavai.StatusIcon();
55                 status_icon.install();
56                 status_icon.clicked += on_status_clicked;
57                 update_icon();
58         }
59
60         protected void update_icon()
61         {
62                 string name;
63                 if (power)
64                         name = zavai.config.icondir + "/" + "wifi_1.png";
65                 else
66                         name = zavai.config.icondir + "/" + "wifi_0.png";
67                 status_icon.set_from_file(name);
68         }
69
70         private void on_power_status_changed(dynamic DBus.Object pos, string device, bool power)
71         {
72                 this.power = power;
73                 update_icon();
74         }
75
76         private void on_toggled(Gtk.Button src)
77         {
78         if (get_active())
79             zavai.wifi.wifi.request("servicerequestlink");
80         else
81             zavai.wifi.wifi.release("servicerequestlink");
82         set_label(get_active() ? label_stop : label_start);
83         update_icon();
84         }
85
86         private void on_status_clicked(Gtk.Button b)
87         {
88                 set_active(!get_active());
89         }
90 }
91
92 WiFiRequest wifirequest;
93
94 public void init()
95 {
96     wifirequest = new WiFiRequest();
97 }
98
99 }
100 }
101 }