Diffstat (limited to 'noncore/net/opietooth/applet/bluezapplet.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/opietooth/applet/bluezapplet.cpp | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/noncore/net/opietooth/applet/bluezapplet.cpp b/noncore/net/opietooth/applet/bluezapplet.cpp new file mode 100644 index 0000000..9569b36 --- a/dev/null +++ b/noncore/net/opietooth/applet/bluezapplet.cpp | |||
@@ -0,0 +1,199 @@ | |||
1 | /* | ||
2 | =. This file is part of the OPIE Project | ||
3 | .=l. Copyright (c) 2002 Maximilian Reiss <max.reiss@gmx.de> | ||
4 | .>+-= | ||
5 | _;:, .> :=|. This library is free software; you can | ||
6 | .> <, > . <= redistribute it and/or modify it under | ||
7 | :=1 )Y*s>-.-- : the terms of the GNU Library General Public | ||
8 | .="- .-=="i, .._ License as published by the Free Software | ||
9 | - . .-<_> .<> Foundation; either version 2 of the License, | ||
10 | ._= =} : or (at your option) any later version. | ||
11 | .%+i> _;_. | ||
12 | .i_,=:_. -<s. This library is distributed in the hope that | ||
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | ||
14 | : .. .:, . . . without even the implied warranty of | ||
15 | =_ + =;=| MERCHANTABILITY or FITNESS FOR A | ||
16 | _.=:. : :=>: PARTICULAR PURPOSE. See the GNU | ||
17 | ..}^=.= = ; Library General Public License for more | ||
18 | ++= -. . .: details. | ||
19 | : = ...= . :.=- | ||
20 | -. .:....=;==+<; You should have received a copy of the GNU | ||
21 | -_. . . )=. = Library General Public License along with | ||
22 | -- :-= this library; see the file COPYING.LIB. | ||
23 | If not, write to the Free Software Foundation, | ||
24 | Inc., 59 Temple Place - Suite 330, | ||
25 | Boston, MA 02111-1307, USA. | ||
26 | |||
27 | */ | ||
28 | |||
29 | |||
30 | #include "bluezapplet.h" | ||
31 | #include <qapplication.h> | ||
32 | |||
33 | #include <qpe/resource.h> | ||
34 | #include <qpe/qcopenvelope_qws.h> | ||
35 | #include <qpe/resource.h> | ||
36 | #include <qpe/config.h> | ||
37 | |||
38 | #include <qpoint.h> | ||
39 | #include <qpainter.h> | ||
40 | #include <qlayout.h> | ||
41 | #include <qframe.h> | ||
42 | #include <qpixmap.h> | ||
43 | #include <qstring.h> | ||
44 | #include <qtimer.h> | ||
45 | #include <qpopupmenu.h> | ||
46 | |||
47 | #include <device.h> | ||
48 | |||
49 | namespace OpieTooth { | ||
50 | |||
51 | BluezApplet::BluezApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) { | ||
52 | setFixedHeight( 18 ); | ||
53 | setFixedWidth( 14 ); | ||
54 | bluezOnPixmap = Resource::loadPixmap( "bluetoothapplet/bluezon" ); | ||
55 | bluezOffPixmap = Resource::loadPixmap( "bluetoothapplet/bluezoff" ); | ||
56 | // bluezDiscoveryOnPixmap = Resource::loadPixmap( "bluetoothapplet/magglass" ); | ||
57 | startTimer(5000); | ||
58 | timerEvent(NULL); | ||
59 | } | ||
60 | |||
61 | BluezApplet::~BluezApplet() { | ||
62 | } | ||
63 | |||
64 | int BluezApplet::checkBluezStatus() { | ||
65 | if (btDevice->isLoaded() ) { | ||
66 | return 1; | ||
67 | } else { | ||
68 | return 0; | ||
69 | } | ||
70 | } | ||
71 | |||
72 | int BluezApplet::setBluezStatus(int c) { | ||
73 | |||
74 | if (c == 1) { | ||
75 | btDevice = new Device("/dev/ttySB0", "scr" ); | ||
76 | // system("hciattach /dev/ttySB0 csr"); | ||
77 | //system("hcid"); | ||
78 | } else { | ||
79 | if (btDevice) { | ||
80 | delete btDevice; | ||
81 | } | ||
82 | //system("killall hciattach"); | ||
83 | //system("killall hcid"); | ||
84 | } | ||
85 | return 0; | ||
86 | } | ||
87 | |||
88 | int BluezApplet::checkBluezDiscoveryStatus() { | ||
89 | } | ||
90 | |||
91 | int BluezApplet::setBluezDiscoveryStatus(int d) { | ||
92 | } | ||
93 | |||
94 | void BluezApplet::mousePressEvent( QMouseEvent *) { | ||
95 | |||
96 | QPopupMenu *menu = new QPopupMenu(); | ||
97 | QPopupMenu *signal = new QPopupMenu(); | ||
98 | int ret=0; | ||
99 | |||
100 | /* Refresh active state */ | ||
101 | timerEvent(NULL); | ||
102 | |||
103 | |||
104 | if (bluezactive) { | ||
105 | menu->insertItem( tr("Disable Bluetooth"), 0 ); | ||
106 | } else { | ||
107 | menu->insertItem( tr("Enable Bluetooth"), 1 ); | ||
108 | } | ||
109 | |||
110 | menu->insertItem( tr("Launch manager"), 2 ); | ||
111 | |||
112 | menu->insertSeparator(6); | ||
113 | menu->insertItem( tr("Signal strength"), signal, 5); | ||
114 | menu->insertSeparator(8); | ||
115 | |||
116 | if (bluezDiscoveryActive) { | ||
117 | menu->insertItem( tr("Disable discovery"), 3 ); | ||
118 | } else { | ||
119 | menu->insertItem( tr("Enable discovery"), 4 ); | ||
120 | } | ||
121 | //menu->insertItem( tr("More..."), 7 ) | ||
122 | |||
123 | QPoint p = mapToGlobal( QPoint(1, -menu->sizeHint().height()-1) ); | ||
124 | ret = menu->exec(p, 2); | ||
125 | |||
126 | // qDebug("ret was %d\n", ret); | ||
127 | |||
128 | switch(ret) { | ||
129 | case 0: | ||
130 | setBluezStatus(0); | ||
131 | timerEvent(NULL); | ||
132 | break; | ||
133 | case 1: | ||
134 | setBluezStatus(1); | ||
135 | timerEvent(NULL); | ||
136 | break; | ||
137 | case 2: | ||
138 | // start bluetoothmanager | ||
139 | launchManager(); | ||
140 | timerEvent(NULL); | ||
141 | break; | ||
142 | case 3: | ||
143 | setBluezDiscoveryStatus(0); | ||
144 | timerEvent(NULL); | ||
145 | break; | ||
146 | case 4: | ||
147 | setBluezDiscoveryStatus(1); | ||
148 | timerEvent(NULL); | ||
149 | break; | ||
150 | //case 7: | ||
151 | // With table of currently-detected devices. | ||
152 | } | ||
153 | } | ||
154 | |||
155 | /** | ||
156 | * Launches the bluetooth manager | ||
157 | */ | ||
158 | void BluezApplet::launchManager() { | ||
159 | QCopEnvelope e("QPE/System", "execute(QString)"); | ||
160 | e << QString("bluetooth-manager"); | ||
161 | } | ||
162 | |||
163 | /** | ||
164 | * Refresh timer | ||
165 | * @param the timer event | ||
166 | */ | ||
167 | void BluezApplet::timerEvent( QTimerEvent * ) { | ||
168 | int oldactive = bluezactive; | ||
169 | int olddiscovery = bluezDiscoveryActive; | ||
170 | |||
171 | bluezactive = checkBluezStatus(); | ||
172 | bluezDiscoveryActive = checkBluezDiscoveryStatus(); | ||
173 | |||
174 | if ((bluezactive != oldactive) || (bluezDiscoveryActive != olddiscovery)) { | ||
175 | paintEvent(NULL); | ||
176 | } | ||
177 | } | ||
178 | |||
179 | /** | ||
180 | * Implementation of the paint event | ||
181 | * @param the QPaintEvent | ||
182 | */ | ||
183 | void BluezApplet::paintEvent( QPaintEvent* ) { | ||
184 | QPainter p(this); | ||
185 | qDebug("paint bluetooth pixmap"); | ||
186 | |||
187 | p.eraseRect ( 0, 0, this->width(), this->height() ); | ||
188 | |||
189 | if (bluezactive > 0) { | ||
190 | p.drawPixmap( 0, 1, bluezOnPixmap ); | ||
191 | } else { | ||
192 | p.drawPixmap( 0, 1, bluezOffPixmap ); | ||
193 | } | ||
194 | |||
195 | if (bluezDiscoveryActive > 0) { | ||
196 | p.drawPixmap( 0, 1, bluezDiscoveryOnPixmap ); | ||
197 | } | ||
198 | } | ||
199 | }; | ||