summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/batteryapplet/battery.cpp14
-rw-r--r--core/applets/batteryapplet/batterystatus.cpp2
-rw-r--r--core/applets/cardmon/cardmon.cpp4
-rw-r--r--core/applets/homeapplet/home.h4
-rw-r--r--core/applets/restartapplet2/.cvsignore1
-rw-r--r--core/applets/suspendapplet/suspend.h4
-rw-r--r--core/launcher/launcher.cpp1188
-rw-r--r--core/obex/obex.cc15
-rw-r--r--core/obex/obexhandler.cpp2
-rw-r--r--core/obex/obeximpl.cpp2
-rw-r--r--core/obex/obexsend.cpp2
-rw-r--r--core/obex/receiver.cpp73
-rw-r--r--core/obex/receiver.h5
-rw-r--r--help/en/html/addressbook.html8
-rw-r--r--help/en/html/advancedfm.html55
-rw-r--r--help/en/html/appearance.html7
-rw-r--r--help/en/html/aqpkg.html67
-rw-r--r--help/en/html/backup.html7
-rw-r--r--help/en/html/bluetooth-manager.html7
-rw-r--r--help/en/html/bounce.html7
-rw-r--r--help/en/html/buttonsettings.html7
-rw-r--r--help/en/html/buzzword.html7
-rw-r--r--help/en/html/calculator.html7
-rw-r--r--help/en/html/calibrate.html7
-rw-r--r--help/en/html/checkbook.html7
-rw-r--r--help/en/html/citytime.html7
-rw-r--r--help/en/html/clock.html7
-rw-r--r--help/en/html/confedit.html42
-rw-r--r--help/en/html/datebook.html8
-rw-r--r--help/en/html/drawpad.html8
-rw-r--r--help/en/html/embeddedkonsole.html (renamed from help/en/html/opie-embeddedkonsole.html)0
-rw-r--r--help/en/html/euroconv.html7
-rw-r--r--help/en/html/fifteen.html7
-rw-r--r--help/en/html/formatter.html (renamed from help/en/html/opie-formatter.html)0
-rw-r--r--help/en/html/go.html7
-rw-r--r--help/en/html/gsmtool.html7
-rw-r--r--help/en/html/index.html18
-rw-r--r--help/en/html/kbill.html7
-rw-r--r--help/en/html/kcheckers.html7
-rw-r--r--help/en/html/keypebble.html7
-rw-r--r--help/en/html/kpacman.html7
-rw-r--r--help/en/html/language.html7
-rw-r--r--help/en/html/launchersettings.html7
-rw-r--r--help/en/html/light-and-power.html7
-rw-r--r--help/en/html/mail.html8
-rw-r--r--help/en/html/mailit.html15
-rw-r--r--help/en/html/mediummount.html7
-rw-r--r--help/en/html/mindbreaker.html7
-rw-r--r--help/en/html/minesweep.html7
-rw-r--r--help/en/html/mobilemsg.html7
-rw-r--r--help/en/html/networksettings.html7
-rw-r--r--help/en/html/odict.html7
-rw-r--r--help/en/html/opie-advancedfm.html54
-rw-r--r--help/en/html/opie-appearance-help-en.control9
-rw-r--r--help/en/html/opie-appskey-help-en.control11
-rw-r--r--help/en/html/opie-appskey.html24
-rw-r--r--help/en/html/opie-backgammon-help-en.control10
-rw-r--r--help/en/html/opie-backup-help-en.control10
-rw-r--r--help/en/html/opie-bluetooth-manager-help-en.control10
-rw-r--r--help/en/html/opie-bounce-help-en.control9
-rw-r--r--help/en/html/opie-buttonsettings-help-en.control9
-rw-r--r--help/en/html/opie-buzzword-help-en.control9
-rw-r--r--help/en/html/opie-calculator-help-en.control9
-rw-r--r--help/en/html/opie-calibrate-help-en.control9
-rw-r--r--help/en/html/opie-checkbook-help-en.control9
-rw-r--r--help/en/html/opie-citytime-help-en.control9
-rw-r--r--help/en/html/opie-clock-help-en.control9
-rw-r--r--help/en/html/opie-confedit-help-en.control9
-rw-r--r--help/en/html/opie-euroconv-help-en.control9
-rw-r--r--help/en/html/opie-fifteen-help-en.control9
-rw-r--r--help/en/html/opie-go-help-en.control9
-rw-r--r--help/en/html/opie-gsmtool-help-en.control9
-rw-r--r--help/en/html/opie-kbill-help-en.control9
-rw-r--r--help/en/html/opie-kcheckers-help-en.control9
-rw-r--r--help/en/html/opie-kpacman-help-en.control9
-rw-r--r--help/en/html/opie-language-help-en.control9
-rw-r--r--help/en/html/opie-launchersettings-help-en.control9
-rw-r--r--help/en/html/opie-light-and-power-help-en.control9
-rw-r--r--help/en/html/opie-mediummount-help-en.control9
-rw-r--r--help/en/html/opie-mindbreaker-help-en.control9
-rw-r--r--help/en/html/opie-minesweep-help-en.control9
-rw-r--r--help/en/html/opie-mobilemsg-help-en.control9
-rw-r--r--help/en/html/opie-networksettings-help-en.control9
-rw-r--r--help/en/html/opie-odict-help-en.control9
-rw-r--r--help/en/html/opie-opie-write-help-en.control9
-rw-r--r--help/en/html/opie-opieftp-help-en.control9
-rw-r--r--help/en/html/opie-opieirc-help-en.control9
-rw-r--r--help/en/html/opie-opieplayer-help-en.control9
-rw-r--r--help/en/html/opie-opierec-help-en.control9
-rw-r--r--help/en/html/opie-oxygen-help-en.control9
-rw-r--r--help/en/html/opie-parashoot-help-en.control9
-rw-r--r--help/en/html/opie-patience-help-en.control9
-rw-r--r--help/en/html/opie-qasteroids-help-en.control9
-rw-r--r--help/en/html/opie-qpdf-help-en.control9
-rw-r--r--help/en/html/opie-reader-help-en.control9
-rw-r--r--help/en/html/opie-remote-help-en.control9
-rw-r--r--help/en/html/opie-rotation-help-en.control9
-rw-r--r--help/en/html/opie-security-help-en.control9
-rw-r--r--help/en/html/opie-sfcave-help-en.control9
-rw-r--r--help/en/html/opie-sheetqt-help-en.control9
-rw-r--r--help/en/html/opie-showimg-help-en.control9
-rw-r--r--help/en/html/opie-shutdown-help-en.control9
-rw-r--r--help/en/html/opie-snake-help-en.control9
-rw-r--r--help/en/html/opie-sound-help-en.control9
-rw-r--r--help/en/html/opie-sshkeys-help-en.control9
-rw-r--r--help/en/html/opie-sysinfo-help-en.control9
-rw-r--r--help/en/html/opie-systemtime-help-en.control9
-rw-r--r--help/en/html/opie-tableviewer-help-en.control9
-rw-r--r--help/en/html/opie-tetrix-help-en.control9
-rw-r--r--help/en/html/opie-tictac-help-en.control9
-rw-r--r--help/en/html/opie-tinykate-help-en.control9
-rw-r--r--help/en/html/opie-ubrowser-help-en.control9
-rw-r--r--help/en/html/opie-usermanager-help-en.control9
-rw-r--r--help/en/html/opie-vmemo.html46
-rw-r--r--help/en/html/opie-wlansetup-help-en.control9
-rw-r--r--help/en/html/opie-wordgame-help-en.control9
-rw-r--r--help/en/html/opie-write.html7
-rw-r--r--help/en/html/opieftp.html7
-rw-r--r--help/en/html/opieplayer.html7
-rw-r--r--help/en/html/opierec.html71
-rw-r--r--help/en/html/osearch.html20
-rw-r--r--help/en/html/oxygen.html7
-rw-r--r--help/en/html/parashoot.html7
-rw-r--r--help/en/html/patience.html7
-rw-r--r--help/en/html/qasteroids.html7
-rw-r--r--help/en/html/qpdf.html7
-rw-r--r--help/en/html/reader.html7
-rw-r--r--help/en/html/remote.html7
-rw-r--r--help/en/html/rotation.html7
-rw-r--r--help/en/html/security.html7
-rw-r--r--help/en/html/sfcave.html7
-rw-r--r--help/en/html/showimg.html7
-rw-r--r--help/en/html/shutdown.html7
-rw-r--r--help/en/html/snake.html7
-rw-r--r--help/en/html/sound.html7
-rw-r--r--help/en/html/sshkeys.html7
-rw-r--r--help/en/html/sysinfo.html61
-rw-r--r--help/en/html/systemtime.html23
-rw-r--r--help/en/html/tableviewer.html7
-rw-r--r--help/en/html/tetrix.html7
-rw-r--r--help/en/html/textedit.html8
-rw-r--r--help/en/html/tictac.html7
-rw-r--r--help/en/html/tinykate.html7
-rw-r--r--help/en/html/today.html8
-rw-r--r--help/en/html/todolist.html8
-rw-r--r--help/en/html/ubrowser.html7
-rw-r--r--help/en/html/usermanager.html7
-rw-r--r--help/en/html/vmemo-help-en.control11
-rw-r--r--help/en/html/wlansetup.html7
-rw-r--r--help/en/html/wordgame.html7
150 files changed, 1954 insertions, 857 deletions
diff --git a/core/applets/batteryapplet/battery.cpp b/core/applets/batteryapplet/battery.cpp
index 480d261..078ce8d 100644
--- a/core/applets/batteryapplet/battery.cpp
+++ b/core/applets/batteryapplet/battery.cpp
@@ -1,176 +1,166 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "battery.h" 20#include "battery.h"
21#include "batterystatus.h" 21#include "batterystatus.h"
22 22
23#include <qpe/applnk.h> 23#include <qpe/applnk.h>
24#include <qpe/config.h> 24#include <qpe/config.h>
25#include <qpe/power.h> 25#include <qpe/power.h>
26#include <qpe/qpeapplication.h> 26#include <qpe/qpeapplication.h>
27 27
28#include <qpainter.h> 28#include <qpainter.h>
29#include <qtimer.h> 29#include <qtimer.h>
30 30
31 31
32BatteryMeter::BatteryMeter( QWidget *parent ) 32BatteryMeter::BatteryMeter( QWidget *parent )
33 : QWidget( parent ), charging(false) 33 : QWidget( parent ), charging(false)
34{ 34{
35 ps = new PowerStatus; 35 ps = new PowerStatus;
36 startTimer( 10000 ); 36 startTimer( 10000 );
37 setFixedHeight( AppLnk::smallIconSize() ); 37 setFixedHeight( AppLnk::smallIconSize() );
38 chargeTimer = new QTimer( this ); 38 chargeTimer = new QTimer( this );
39 connect( chargeTimer, SIGNAL(timeout()), this, SLOT(chargeTimeout()) ); 39 connect( chargeTimer, SIGNAL(timeout()), this, SLOT(chargeTimeout()) );
40 timerEvent(0); 40 timerEvent(0);
41 QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); 41 QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold );
42 Config c( "qpe" ); 42 Config c( "qpe" );
43 c.setGroup( "Battery" ); 43 c.setGroup( "Battery" );
44 style = c.readNumEntry( "Style", 0 ); 44 style = c.readNumEntry( "Style", 0 );
45} 45}
46 46
47BatteryMeter::~BatteryMeter() 47BatteryMeter::~BatteryMeter()
48{ 48{
49 delete ps; 49 delete ps;
50} 50}
51 51
52QSize BatteryMeter::sizeHint() const 52QSize BatteryMeter::sizeHint() const
53{ 53{
54 return QSize(10, height() ); 54 return QSize(10, height() );
55} 55}
56 56
57void BatteryMeter::mousePressEvent( QMouseEvent* e ) 57void BatteryMeter::mousePressEvent( QMouseEvent* e )
58{ 58{
59 if ( e->button() == RightButton ) 59 if ( e->button() == RightButton )
60 { 60 {
61 style = 1-style; 61 style = 1-style;
62 Config c( "qpe" ); 62 Config c( "qpe" );
63 c.setGroup( "Battery" ); 63 c.setGroup( "Battery" );
64 c.writeEntry( "Style", style ); 64 c.writeEntry( "Style", style );
65 repaint( true ); 65 repaint( true );
66 } 66 }
67 QWidget::mousePressEvent( e ); 67 QWidget::mousePressEvent( e );
68} 68}
69 69
70void BatteryMeter::mouseReleaseEvent( QMouseEvent* e) 70void BatteryMeter::mouseReleaseEvent( QMouseEvent* e)
71{ 71{
72 if ( batteryView && batteryView->isVisible() ) { 72 if ( batteryView && batteryView->isVisible() ) {
73 delete (QWidget *) batteryView; 73 delete (QWidget *) batteryView;
74 } else { 74 } else {
75 if ( !batteryView ) batteryView = new BatteryStatus( ps ); 75 if ( !batteryView ) batteryView = new BatteryStatus( ps );
76 batteryView->showMaximized(); 76 batteryView->showMaximized();
77 batteryView->raise(); 77 batteryView->raise();
78 batteryView->show(); 78 batteryView->show();
79 } 79 }
80} 80}
81 81
82void BatteryMeter::timerEvent( QTimerEvent * ) 82void BatteryMeter::timerEvent( QTimerEvent * )
83{ 83{
84 PowerStatus prev = *ps; 84 PowerStatus prev = *ps;
85 85
86 *ps = PowerStatusManager::readStatus(); 86 *ps = PowerStatusManager::readStatus();
87 87
88 if ( prev != *ps ) { 88 if ( prev != *ps ) {
89 percent = ps->batteryPercentRemaining(); 89 percent = ps->batteryPercentRemaining();
90 if ( !charging && ps->batteryStatus() == PowerStatus::Charging && percent < 0 ) { 90 if ( !charging && ps->batteryStatus() == PowerStatus::Charging && percent < 0 ) {
91 percent = 0; 91 percent = 0;
92 charging = true; 92 charging = true;
93 chargeTimer->start( 500 ); 93 chargeTimer->start( 500 );
94 } else if ( charging && ps->batteryStatus() != PowerStatus::Charging ) { 94 } else if ( charging && ps->batteryStatus() != PowerStatus::Charging ) {
95 charging = false; 95 charging = false;
96 chargeTimer->stop(); 96 chargeTimer->stop();
97 if ( batteryView ) 97 if ( batteryView )
98 batteryView->updatePercent( percent ); 98 batteryView->updatePercent( percent );
99 } 99 }
100 repaint( style != 0 ); 100 repaint( style != 0 );
101 if ( batteryView ) 101 if ( batteryView )
102 batteryView->repaint(); 102 batteryView->repaint();
103 } 103 }
104} 104}
105 105
106void BatteryMeter::chargeTimeout() 106void BatteryMeter::chargeTimeout()
107{ 107{
108 percent += 20; 108 percent += 20;
109 if ( percent > 100 ) 109 if ( percent > 100 )
110 percent = 0; 110 percent = 0;
111 111
112 repaint(FALSE); 112 repaint(FALSE);
113 if ( batteryView ) 113 if ( batteryView )
114 batteryView->updatePercent( percent ); 114 batteryView->updatePercent( percent );
115} 115}
116 116
117void BatteryMeter::paintEvent( QPaintEvent* ) 117void BatteryMeter::paintEvent( QPaintEvent* )
118{ 118{
119 if ( style == 1 ) 119 if ( style == 1 )
120 { 120 {
121 QPainter p(this); 121 QPainter p(this);
122 QFont f( "Fixed", AppLnk::smallIconSize()/2 ); 122 QFont f( "Fixed", AppLnk::smallIconSize()/2 );
123 QFontMetrics fm( f ); 123 QFontMetrics fm( f );
124 p.setFont( f ); 124 p.setFont( f );
125 if ( percent > 98 ) { 125 p.drawText( 0, AppLnk::smallIconSize()/2, QString::number( percent ) );
126 p.drawText( 0, 0, width(), height(), Qt::AlignCenter, tr( "F" ) ); 126 p.drawText( AppLnk::smallIconSize()/4, AppLnk::smallIconSize(), "%" );
127 }
128 else if ( percent < 5 )
129 {
130 p.drawText( 0, 0, width(), height(), Qt::AlignCenter, tr( "E" ) );
131 }
132 else
133 {
134 p.drawText( 0, AppLnk::smallIconSize()/2, QString::number( percent ) );
135 p.drawText( AppLnk::smallIconSize()/4, AppLnk::smallIconSize(), "%" );
136 }
137 return; 127 return;
138 } 128 }
139 129
140 QPainter p(this); 130 QPainter p(this);
141 QColor color; 131 QColor color;
142 QColor g = gray.light( 160 ); 132 QColor g = gray.light( 160 );
143 switch ( ps->acStatus() ) 133 switch ( ps->acStatus() )
144 { 134 {
145 case PowerStatus::Offline: color = blue.light( 150 ); break; 135 case PowerStatus::Offline: color = blue.light( 150 ); break;
146 case PowerStatus::Online: color = green.dark( 130 ).light( 180 ); break; 136 case PowerStatus::Online: color = green.dark( 130 ).light( 180 ); break;
147 default: color = red.light( 160 ); 137 default: color = red.light( 160 );
148 } 138 }
149 139
150 int w = height() / 2; 140 int w = height() / 2;
151 if ( !(w%2) ) w--; // should have an odd value to get a real middle line 141 if ( !(w%2) ) w--; // should have an odd value to get a real middle line
152 int h = height() - 4; 142 int h = height() - 4;
153 int pix = (percent * h) / 100; 143 int pix = (percent * h) / 100;
154 int y2 = height() -2; 144 int y2 = height() -2;
155 int y = y2 - pix; 145 int y = y2 - pix;
156 int x1 = (width() - w ) / 2; 146 int x1 = (width() - w ) / 2;
157 147
158 p.setPen(QColor(80,80,80)); 148 p.setPen(QColor(80,80,80));
159 p.drawLine(x1+w/4,0,x1+w/4+w/2+1,0); // header 149 p.drawLine(x1+w/4,0,x1+w/4+w/2+1,0); // header
160 p.drawRect(x1,1,w,height()-1); // corpus 150 p.drawRect(x1,1,w,height()-1); // corpus
161 p.setBrush(color); 151 p.setBrush(color);
162 152
163 int extra = ((percent * h) % 100)/(100/4); 153 int extra = ((percent * h) % 100)/(100/4);
164 154
165 int middle = w/2; 155 int middle = w/2;
166 for ( int i = 0; i < middle; i++ ) 156 for ( int i = 0; i < middle; i++ )
167 { 157 {
168 p.setPen( gray.dark( 100+i*20 ) ); 158 p.setPen( gray.dark( 100+i*20 ) );
169 p.drawLine( x1+middle-i, 2, x1+middle-i, y-1 ); 159 p.drawLine( x1+middle-i, 2, x1+middle-i, y-1 );
170 p.drawLine( x1+middle+i, 2, x1+middle+i, y-1 ); 160 p.drawLine( x1+middle+i, 2, x1+middle+i, y-1 );
171 p.setPen( color.dark( 100+i*20 ) ); 161 p.setPen( color.dark( 100+i*20 ) );
172 p.drawLine( x1+middle-i, y, x1+middle-i, y2 ); 162 p.drawLine( x1+middle-i, y, x1+middle-i, y2 );
173 p.drawLine( x1+middle+i, y, x1+middle+i, y2 ); 163 p.drawLine( x1+middle+i, y, x1+middle+i, y2 );
174 } 164 }
175} 165}
176 166
diff --git a/core/applets/batteryapplet/batterystatus.cpp b/core/applets/batteryapplet/batterystatus.cpp
index 092a48d..5936b5d 100644
--- a/core/applets/batteryapplet/batterystatus.cpp
+++ b/core/applets/batteryapplet/batterystatus.cpp
@@ -115,141 +115,141 @@ bool BatteryStatus::getProcApmStatusIpaq() {
115 115
116 jackStatus == (" ( " + jackStatus + " )"); 116 jackStatus == (" ( " + jackStatus + " )");
117 117
118 return true; 118 return true;
119} 119}
120 120
121 121
122void BatteryStatus::updatePercent( int pc ) { 122void BatteryStatus::updatePercent( int pc ) {
123 percent = pc; 123 percent = pc;
124 repaint(FALSE); 124 repaint(FALSE);
125} 125}
126 126
127void BatteryStatus::drawSegment( QPainter *p, const QRect &r, const QColor &topgrad, const QColor &botgrad, const QColor &highlight, int hightlight_height ) { 127void BatteryStatus::drawSegment( QPainter *p, const QRect &r, const QColor &topgrad, const QColor &botgrad, const QColor &highlight, int hightlight_height ) {
128 int h1, h2, s1, s2, v1, v2, ng = r.height(), hy = ng*30/100, hh = hightlight_height; 128 int h1, h2, s1, s2, v1, v2, ng = r.height(), hy = ng*30/100, hh = hightlight_height;
129 topgrad.hsv( &h1, &s1, &v1 ); 129 topgrad.hsv( &h1, &s1, &v1 );
130 botgrad.hsv( &h2, &s2, &v2 ); 130 botgrad.hsv( &h2, &s2, &v2 );
131 for ( int j = 0; j < hy-2; j++ ) { 131 for ( int j = 0; j < hy-2; j++ ) {
132 p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), s1 + ((s2-s1)*j)/(ng-1), 132 p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), s1 + ((s2-s1)*j)/(ng-1),
133 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) ); 133 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) );
134 p->drawLine( r.x(), r.top()+hy-2-j, r.x()+r.width(), r.top()+hy-2-j ); 134 p->drawLine( r.x(), r.top()+hy-2-j, r.x()+r.width(), r.top()+hy-2-j );
135 } 135 }
136 for ( int j = 0; j < hh; j++ ) { 136 for ( int j = 0; j < hh; j++ ) {
137 p->setPen( highlight ); 137 p->setPen( highlight );
138 p->drawLine( r.x(), r.top()+hy-2+j, r.x()+r.width(), r.top()+hy-2+j ); 138 p->drawLine( r.x(), r.top()+hy-2+j, r.x()+r.width(), r.top()+hy-2+j );
139 } 139 }
140 for ( int j = 0; j < ng-hy-hh; j++ ) { 140 for ( int j = 0; j < ng-hy-hh; j++ ) {
141 p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), s1 + ((s2-s1)*j)/(ng-1), 141 p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), s1 + ((s2-s1)*j)/(ng-1),
142 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) ); 142 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) );
143 p->drawLine( r.x(), r.top()+hy+hh-2+j, r.x()+r.width(), r.top()+hy+hh-2+j ); 143 p->drawLine( r.x(), r.top()+hy+hh-2+j, r.x()+r.width(), r.top()+hy+hh-2+j );
144 } 144 }
145} 145}
146 146
147void BatteryStatus::paintEvent( QPaintEvent * ) { 147void BatteryStatus::paintEvent( QPaintEvent * ) {
148 148
149 149
150 int screenWidth = qApp->desktop()->width(); 150 int screenWidth = qApp->desktop()->width();
151 int screenHeight = qApp->desktop()->height(); 151 int screenHeight = qApp->desktop()->height();
152 152
153 QPainter p(this); 153 QPainter p(this);
154 QString text; 154 QString text;
155 if ( ps->batteryStatus() == PowerStatus::Charging ) { 155 if ( ps->batteryStatus() == PowerStatus::Charging ) {
156 if (bat2) { 156 if (bat2) {
157 text = tr("Charging both devices"); 157 text = tr("Charging both devices");
158 } else { 158 } else {
159 text = tr("Charging"); 159 text = tr("Charging");
160 } 160 }
161 } else if ( ps->batteryPercentAccurate() ) { 161 } else if ( ps->batteryPercentAccurate() ) {
162 text.sprintf( tr("Percentage battery remaining") + ": %i%%", percent ); 162 text.sprintf( tr("Percentage battery remaining") + ": %i%%", percent );
163 } else { 163 } else {
164 text = tr("Battery status: "); 164 text = tr("Battery status: ");
165 switch ( ps->batteryStatus() ) { 165 switch ( ps->batteryStatus() ) {
166 case PowerStatus::High: 166 case PowerStatus::High:
167 text += tr("Good"); 167 text += tr("Good");
168 break; 168 break;
169 case PowerStatus::Low: 169 case PowerStatus::Low:
170 text += tr("Low"); 170 text += tr("Low");
171 break; 171 break;
172 case PowerStatus::VeryLow: 172 case PowerStatus::VeryLow:
173 text += tr("Very Low"); 173 text += tr("Very Low");
174 break; 174 break;
175 case PowerStatus::Critical: 175 case PowerStatus::Critical:
176 text += tr("Critical"); 176 text += tr("Critical");
177 break; 177 break;
178 default: // NotPresent, etc. 178 default: // NotPresent, etc.
179 text += tr("Unknown"); 179 text += tr("Unknown");
180 } 180 }
181 } 181 }
182 p.drawText( 10, 90, text ); 182 p.drawText( 10, 90, text );
183 183
184 if ( ps->acStatus() == PowerStatus::Backup ) 184 if ( ps->acStatus() == PowerStatus::Backup )
185 p.drawText( 10, 110, tr("On backup power") ); 185 p.drawText( 10, 110, tr("On backup power") );
186 else if ( ps->acStatus() == PowerStatus::Online ) 186 else if ( ps->acStatus() == PowerStatus::Online )
187 p.drawText( 10, 110, tr("Power on-line") ); 187 p.drawText( 10, 110, tr("Power on-line") );
188 else if ( ps->acStatus() == PowerStatus::Offline ) 188 else if ( ps->acStatus() == PowerStatus::Offline )
189 p.drawText( 10, 110, tr("External power disconnected") ); 189 p.drawText( 10, 110, tr("External power disconnected") );
190 190
191 if ( ps->batteryTimeRemaining() >= 0 ) { 191 if ( ps->batteryTimeRemaining() >= 0 ) {
192 text.sprintf( tr("Battery time remaining") + ": %im %02is", 192 text.sprintf( tr("Battery time remaining") + ": %im %02is",
193 ps->batteryTimeRemaining() / 60, ps->batteryTimeRemaining() % 60 ); 193 ps->batteryTimeRemaining() / 60, ps->batteryTimeRemaining() % 60 );
194 p.drawText( 10, 130, text ); 194 p.drawText( 10, 130, text );
195 } 195 }
196 196
197 QColor c; 197 QColor c;
198 QColor darkc; 198 QColor darkc;
199 QColor lightc; 199 QColor lightc;
200 if ( ps->acStatus() == PowerStatus::Offline ) { 200 if ( ps->acStatus() == PowerStatus::Offline ) {
201 c = blue.light(120); 201 c = blue.light(120);
202 darkc = c.dark(280); 202 darkc = c.dark(280);
203 lightc = c.light(145); 203 lightc = c.light(145);
204 } else if ( ps->acStatus() == PowerStatus::Online ) { 204 } else if ( ps->acStatus() == PowerStatus::Online ) {
205 c = green.dark(130); 205 c = green.dark(130);
206 darkc = c.dark(200); 206 darkc = c.dark(200);
207 lightc = c.light(220); 207 lightc = c.light(220);
208 } else { 208 } else {
209 c = red; 209 c = red;
210 darkc = c.dark(280); 210 darkc = c.dark(280);
211 lightc = c.light(140); 211 lightc = c.light(140);
212 } 212 }
213 if ( percent < 0 ) 213 if ( percent < 0 )
214 return; 214 return;
215 215
216 int rightEnd1 = screenWidth - 47; 216 int rightEnd1 = screenWidth - 47;
217 int rightEnd2 = screenWidth - 35; 217 int rightEnd2 = screenWidth - 35;
218 int percent2 = ( percent / 100.0 ) * rightEnd1 ; 218 int percent2 = ( percent / 100.0 ) * rightEnd1 ;
219 p.setPen( black ); 219 p.setPen( black );
220 qDrawShadePanel( &p, 9, 30, rightEnd1 , 39, colorGroup(), TRUE, 1, NULL); 220 qDrawShadePanel( &p, 9, 30, rightEnd1 , 39, colorGroup(), TRUE, 1, NULL);
221 qDrawShadePanel( &p, rightEnd2, 37, 12, 24, colorGroup(), TRUE, 1, NULL); 221 qDrawShadePanel( &p, rightEnd2, 37, 12, 24, colorGroup(), TRUE, 1, NULL);
222 drawSegment( &p, QRect( 10, 30, percent2, 40 ), lightc, darkc, lightc.light(115), 6 ); 222 drawSegment( &p, QRect( 10, 30, percent2, 40 ), lightc, darkc, lightc.light(115), 6 );
223 drawSegment( &p, QRect( 11 + percent2, 30, rightEnd1 - percent2, 40 ), white.light(80), black, white.light(90), 6 ); 223 drawSegment( &p, QRect( 11 + percent2, 30, rightEnd1 - percent2, 40 ), white.light(80), black, white.light(90), 6 );
224 drawSegment( &p, QRect( rightEnd2, 37, 10, 25 ), white.light(80), black, white.light(90), 2 ); 224 drawSegment( &p, QRect( rightEnd2, 37, 10, 25 ), white.light(80), black, white.light(90), 2 );
225 p.setPen( black); 225 p.setPen( black);
226 226
227 227
228 if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) { 228 if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
229 229
230 p.drawText(15, 50, tr ("Ipaq " + ipaqChem)); 230 p.drawText(15, 50, tr ("Ipaq " + ipaqChem));
231 231
232 QString jacketMsg; 232 QString jacketMsg;
233 if (bat2) { 233 if (bat2) {
234 p.setPen(black); 234 p.setPen(black);
235 p.drawText(10,220, tr("Percentage battery remaining: ") + perc2 + " " + jackStatus); 235 p.drawText(10,220, tr("Percentage battery remaining: ") + perc2 + " " + jackStatus);
236 p.drawText(10,240, tr("Battery time remaining: ") + sec2); 236 p.drawText(10,240, tr("Battery time remaining: ") + sec2);
237 jacketMsg = tr("Jacket " + jackChem); 237 jacketMsg = tr("Jacket " + jackChem);
238 } else { 238 } else {
239 jackPercent = 0; 239 jackPercent = 0;
240 jacketMsg = tr("No jacket with battery inserted"); 240 jacketMsg = tr("No jacket with battery inserted");
241 } 241 }
242 242
243 int jackPerc = ( jackPercent / 100.0 ) * screenWidth - 47; 243 int jackPerc = ( jackPercent / 100.0 ) * ( screenWidth - 47 ) ;
244 244
245 qDrawShadePanel( &p, 9, 160, rightEnd1, 39, colorGroup(), TRUE, 1, NULL); 245 qDrawShadePanel( &p, 9, 160, rightEnd1, 39, colorGroup(), TRUE, 1, NULL);
246 qDrawShadePanel( &p, rightEnd2, 167, 12, 24, colorGroup(), TRUE, 1, NULL); 246 qDrawShadePanel( &p, rightEnd2, 167, 12, 24, colorGroup(), TRUE, 1, NULL);
247 drawSegment( &p, QRect( 10, 160, jackPerc, 40 ), lightc, darkc, lightc.light(115), 6 ); 247 drawSegment( &p, QRect( 10, 160, jackPerc, 40 ), lightc, darkc, lightc.light(115), 6 );
248 drawSegment( &p, QRect( 11 + jackPerc, 160, rightEnd1 - jackPerc, 40 ), white.light(80), black, white.light(90), 6 ); 248 drawSegment( &p, QRect( 11 + jackPerc, 160, rightEnd1 - jackPerc, 40 ), white.light(80), black, white.light(90), 6 );
249 drawSegment( &p, QRect( rightEnd2, 167, 10, 25 ), white.light(80), black, white.light(90), 2 ); 249 drawSegment( &p, QRect( rightEnd2, 167, 10, 25 ), white.light(80), black, white.light(90), 2 );
250 p.setPen( black ); 250 p.setPen( black );
251 p.drawText(15, 180, jacketMsg); 251 p.drawText(15, 180, jacketMsg);
252 } 252 }
253 253
254} 254}
255 255
diff --git a/core/applets/cardmon/cardmon.cpp b/core/applets/cardmon/cardmon.cpp
index b8c4553..4ed09b8 100644
--- a/core/applets/cardmon/cardmon.cpp
+++ b/core/applets/cardmon/cardmon.cpp
@@ -147,203 +147,207 @@ void CardMonitor::mousePressEvent(QMouseEvent *)
147 qDebug("Could not execute `/sbin/cardctl eject 0'! err=%d", 147 qDebug("Could not execute `/sbin/cardctl eject 0'! err=%d",
148 err); 148 err);
149 popUp(tr("CF/PCMCIA card eject failed!")); 149 popUp(tr("CF/PCMCIA card eject failed!"));
150 } 150 }
151 } else if (opt == 0) { 151 } else if (opt == 0) {
152 if (ODevice::inst()->system() == System_Familiar) { 152 if (ODevice::inst()->system() == System_Familiar) {
153 cmd = "umount /dev/mmc/part1"; 153 cmd = "umount /dev/mmc/part1";
154 } else { 154 } else {
155 cmd = "umount /dev/mmcda1"; 155 cmd = "umount /dev/mmcda1";
156 } 156 }
157 err = system((const char *) cmd); 157 err = system((const char *) cmd);
158 if (err != 0) { 158 if (err != 0) {
159 popUp(tr("SD/MMC card eject failed!")); 159 popUp(tr("SD/MMC card eject failed!"));
160 } 160 }
161 } else if (opt == 2) { 161 } else if (opt == 2) {
162 cmd = "/sbin/cardctl eject 1"; 162 cmd = "/sbin/cardctl eject 1";
163 err = system((const char *) cmd); 163 err = system((const char *) cmd);
164 if (err != 0) { 164 if (err != 0) {
165 qDebug("Could not execute `/sbin/cardctl eject 1'! err=%d", 165 qDebug("Could not execute `/sbin/cardctl eject 1'! err=%d",
166 err); 166 err);
167 popUp(tr("CF/PCMCIA card eject failed!")); 167 popUp(tr("CF/PCMCIA card eject failed!"));
168 } 168 }
169 } 169 }
170 delete menu; 170 delete menu;
171} 171}
172 172
173 173
174void CardMonitor::cardMessage(const QCString & msg, const QByteArray &) 174void CardMonitor::cardMessage(const QCString & msg, const QByteArray &)
175{ 175{
176 if (msg == "stabChanged()") { 176 if (msg == "stabChanged()") {
177 // qDebug("Pcmcia: stabchanged"); 177 // qDebug("Pcmcia: stabchanged");
178 getStatusPcmcia(); 178 getStatusPcmcia();
179 } else if (msg == "mtabChanged()") { 179 } else if (msg == "mtabChanged()") {
180 // qDebug("CARDMONAPPLET: mtabchanged"); 180 // qDebug("CARDMONAPPLET: mtabchanged");
181 getStatusSd(); 181 getStatusSd();
182 } 182 }
183} 183}
184 184
185bool CardMonitor::getStatusPcmcia(int showPopUp) 185bool CardMonitor::getStatusPcmcia(int showPopUp)
186{ 186{
187 187
188 bool cardWas0 = cardInPcmcia0;// remember last state 188 bool cardWas0 = cardInPcmcia0;// remember last state
189 bool cardWas1 = cardInPcmcia1; 189 bool cardWas1 = cardInPcmcia1;
190 190
191 QString fileName; 191 QString fileName;
192 192
193 // one of these 3 files should exist 193 // one of these 3 files should exist
194 if (QFile::exists("/var/run/stab")) { 194 if (QFile::exists("/var/run/stab")) {
195 fileName = "/var/run/stab"; 195 fileName = "/var/run/stab";
196 } else if (QFile::exists("/var/state/pcmcia/stab")) { 196 } else if (QFile::exists("/var/state/pcmcia/stab")) {
197 fileName = "/var/state/pcmcia/stab"; 197 fileName = "/var/state/pcmcia/stab";
198 } else { 198 } else {
199 fileName = "/var/lib/pcmcia/stab"; 199 fileName = "/var/lib/pcmcia/stab";
200 } 200 }
201 201
202 QFile f(fileName); 202 QFile f(fileName);
203 203
204 if (f.open(IO_ReadOnly)) { 204 if (f.open(IO_ReadOnly)) {
205 QStringList list; 205 QStringList list;
206 QTextStream stream(&f); 206 QTextStream stream(&f);
207 QString streamIn; 207 QString streamIn;
208 streamIn = stream.read(); 208 streamIn = stream.read();
209 list = QStringList::split("\n", streamIn); 209 list = QStringList::split("\n", streamIn);
210 for (QStringList::Iterator line = list.begin(); line != list.end(); 210 for (QStringList::Iterator line = list.begin(); line != list.end();
211 line++) { 211 line++) {
212 if ((*line).startsWith("Socket 0:")) { 212 if ((*line).startsWith("Socket 0:")) {
213 if ((*line).startsWith("Socket 0: empty") && cardInPcmcia0) { 213 if ((*line).startsWith("Socket 0: empty") && cardInPcmcia0) {
214 cardInPcmcia0 = FALSE; 214 cardInPcmcia0 = FALSE;
215 } else if (!(*line).startsWith("Socket 0: empty") 215 } else if (!(*line).startsWith("Socket 0: empty")
216 && !cardInPcmcia0) { 216 && !cardInPcmcia0) {
217 cardInPcmcia0Name = 217 cardInPcmcia0Name =
218 (*line).mid(((*line).find(':') + 1), 218 (*line).mid(((*line).find(':') + 1),
219 (*line).length() - 9); 219 (*line).length() - 9);
220 cardInPcmcia0Name.stripWhiteSpace(); 220 cardInPcmcia0Name.stripWhiteSpace();
221 cardInPcmcia0 = TRUE; 221 cardInPcmcia0 = TRUE;
222 show(); 222 show();
223 line++; 223 line++;
224 int pos = (*line).find('\t') + 1; 224 int pos = (*line).find('\t') + 1;
225 cardInPcmcia0Type = 225 cardInPcmcia0Type =
226 (*line).mid(pos, (*line).find("\t", pos) - pos); 226 (*line).mid(pos, (*line).find("\t", pos) - pos);
227 } 227 }
228 } else if ((*line).startsWith("Socket 1:")) { 228 } else if ((*line).startsWith("Socket 1:")) {
229 if ((*line).startsWith("Socket 1: empty") && cardInPcmcia1) { 229 if ((*line).startsWith("Socket 1: empty") && cardInPcmcia1) {
230 cardInPcmcia1 = FALSE; 230 cardInPcmcia1 = FALSE;
231 } else if (!(*line).startsWith("Socket 1: empty") 231 } else if (!(*line).startsWith("Socket 1: empty")
232 && !cardInPcmcia1) { 232 && !cardInPcmcia1) {
233 cardInPcmcia1Name = 233 cardInPcmcia1Name =
234 (*line).mid(((*line).find(':') + 1), 234 (*line).mid(((*line).find(':') + 1),
235 (*line).length() - 9); 235 (*line).length() - 9);
236 cardInPcmcia1Name.stripWhiteSpace(); 236 cardInPcmcia1Name.stripWhiteSpace();
237 cardInPcmcia1 = TRUE; 237 cardInPcmcia1 = TRUE;
238 show(); 238 show();
239 line++; 239 line++;
240 int pos = (*line).find('\t') + 1; 240 int pos = (*line).find('\t') + 1;
241 cardInPcmcia1Type = 241 cardInPcmcia1Type =
242 (*line).mid(pos, (*line).find("\t", pos) - pos); 242 (*line).mid(pos, (*line).find("\t", pos) - pos);
243 } 243 }
244 } 244 }
245 } 245 }
246 f.close(); 246 f.close();
247 247
248 if (!showPopUp 248 if (!showPopUp
249 && (cardWas0 != cardInPcmcia0 || cardWas1 != cardInPcmcia1)) { 249 && (cardWas0 != cardInPcmcia0 || cardWas1 != cardInPcmcia1)) {
250 QString text = QString::null; 250 QString text = QString::null;
251 QString what = QString::null; 251 QString what = QString::null;
252 if (cardWas0 != cardInPcmcia0) { 252 if (cardWas0 != cardInPcmcia0) {
253 if (cardInPcmcia0) { 253 if (cardInPcmcia0) {
254 text += tr("New card: "); 254 text += tr("New card: ");
255 what = "on"; 255 what = "on";
256 } else { 256 } else {
257 text += tr("Ejected: "); 257 text += tr("Ejected: ");
258 what = "off"; 258 what = "off";
259 } 259 }
260 text += cardInPcmcia0Name; 260 text += cardInPcmcia0Name;
261 popUp(text, "cardmon/" + cardInPcmcia0Type); 261 popUp(text, "cardmon/" + cardInPcmcia0Type);
262 } 262 }
263 263
264 if (cardWas1 != cardInPcmcia1) { 264 if (cardWas1 != cardInPcmcia1) {
265 if (cardInPcmcia1) { 265 if (cardInPcmcia1) {
266 text += tr("New card: "); 266 text += tr("New card: ");
267 what = "on"; 267 what = "on";
268 } else { 268 } else {
269 text += tr("Ejected: "); 269 text += tr("Ejected: ");
270 what = "off"; 270 what = "off";
271 } 271 }
272 text += cardInPcmcia1Name; 272 text += cardInPcmcia1Name;
273 popUp(text, "cardmon/" + cardInPcmcia1Type); 273 popUp(text, "cardmon/" + cardInPcmcia1Type);
274 } 274 }
275#ifndef QT_NO_SOUND
275 QSound::play(Resource::findSound("cardmon/card" + what)); 276 QSound::play(Resource::findSound("cardmon/card" + what));
277#endif
276 } 278 }
277 } else { 279 } else {
278 // no file found 280 // no file found
279 qDebug("no file found"); 281 qDebug("no file found");
280 cardInPcmcia0 = FALSE; 282 cardInPcmcia0 = FALSE;
281 cardInPcmcia1 = FALSE; 283 cardInPcmcia1 = FALSE;
282 } 284 }
283 repaint( FALSE ); 285 repaint( FALSE );
284 return ((cardWas0 == cardInPcmcia0 286 return ((cardWas0 == cardInPcmcia0
285 && cardWas1 == cardInPcmcia1) ? FALSE : TRUE); 287 && cardWas1 == cardInPcmcia1) ? FALSE : TRUE);
286 288
287} 289}
288 290
289 291
290bool CardMonitor::getStatusSd(int showPopUp) 292bool CardMonitor::getStatusSd(int showPopUp)
291{ 293{
292 294
293 bool cardWas = cardInSd;// remember last state 295 bool cardWas = cardInSd;// remember last state
294 cardInSd = FALSE; 296 cardInSd = FALSE;
295 297
296#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 298#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
297 struct mntent *me; 299 struct mntent *me;
298 FILE *mntfp = setmntent("/etc/mtab", "r"); 300 FILE *mntfp = setmntent("/etc/mtab", "r");
299 301
300 if (mntfp) { 302 if (mntfp) {
301 while ((me = getmntent(mntfp)) != 0) { 303 while ((me = getmntent(mntfp)) != 0) {
302 QString fs = me->mnt_fsname; 304 QString fs = me->mnt_fsname;
303 //qDebug( fs ); 305 //qDebug( fs );
304 if (fs.left(14) == "/dev/mmc/part1" || fs.left(7) == "/dev/sd" 306 if (fs.left(14) == "/dev/mmc/part1" || fs.left(7) == "/dev/sd"
305 || fs.left(9) == "/dev/mmcd") { 307 || fs.left(9) == "/dev/mmcd") {
306 cardInSd = TRUE; 308 cardInSd = TRUE;
307 show(); 309 show();
308 } 310 }
309// else { 311// else {
310// cardInSd = FALSE; 312// cardInSd = FALSE;
311// } 313// }
312 } 314 }
313 endmntent(mntfp); 315 endmntent(mntfp);
314 } 316 }
315 317
316 if (!showPopUp && cardWas != cardInSd) { 318 if (!showPopUp && cardWas != cardInSd) {
317 QString text = QString::null; 319 QString text = QString::null;
318 QString what = QString::null; 320 QString what = QString::null;
319 if (cardInSd) { 321 if (cardInSd) {
320 text += "New card: SD/MMC"; 322 text += "New card: SD/MMC";
321 what = "on"; 323 what = "on";
322 } else { 324 } else {
323 text += "Ejected: SD/MMC"; 325 text += "Ejected: SD/MMC";
324 what = "off"; 326 what = "off";
325 } 327 }
326 //qDebug("TEXT: " + text ); 328 //qDebug("TEXT: " + text );
329#ifndef QT_NO_SOUND
327 QSound::play(Resource::findSound("cardmon/card" + what)); 330 QSound::play(Resource::findSound("cardmon/card" + what));
331#endif
328 popUp(text, "cardmon/ide");// XX add SD pic 332 popUp(text, "cardmon/ide");// XX add SD pic
329 } 333 }
330#else 334#else
331#error "Not on Linux" 335#error "Not on Linux"
332#endif 336#endif
333 repaint( FALSE ); 337 repaint( FALSE );
334 return ((cardWas == cardInSd) ? FALSE : TRUE); 338 return ((cardWas == cardInSd) ? FALSE : TRUE);
335} 339}
336 340
337void CardMonitor::paintEvent(QPaintEvent *) 341void CardMonitor::paintEvent(QPaintEvent *)
338{ 342{
339 343
340 QPainter p(this); 344 QPainter p(this);
341 345
342 if ( cardInPcmcia0 || cardInPcmcia1 || cardInSd ) { 346 if ( cardInPcmcia0 || cardInPcmcia1 || cardInSd ) {
343 p.drawPixmap(0, 0, pm ); 347 p.drawPixmap(0, 0, pm );
344 show(); 348 show();
345 } else { 349 } else {
346 //p.eraseRect(rect()); 350 //p.eraseRect(rect());
347 hide(); 351 hide();
348 } 352 }
349} 353}
diff --git a/core/applets/homeapplet/home.h b/core/applets/homeapplet/home.h
index 64af97d..1186caf 100644
--- a/core/applets/homeapplet/home.h
+++ b/core/applets/homeapplet/home.h
@@ -1,49 +1,49 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef __OPIE_HOME_APPLET_H__ 20#ifndef __OPIE_HOME_APPLET_H__
21#define __OPIE_HOME_APPLET_H__ 21#define __OPIE_HOME_APPLET_H__
22 22
23#include <qpe/menuappletinterface.h> 23#include <qpe/menuappletinterface.h>
24 24
25class HomeApplet : public QObject, public MenuAppletInterface 25class HomeApplet : public QObject, public MenuAppletInterface
26{ 26{
27public: 27public:
28 HomeApplet ( ); 28 HomeApplet ( );
29 virtual ~HomeApplet ( ); 29 virtual ~HomeApplet ( );
30 30
31 QRESULT queryInterface( const QUuid&, QUnknownInterface** ); 31 QRESULT queryInterface( const QUuid&, QUnknownInterface** );
32 Q_REFCOUNT 32 Q_REFCOUNT
33 33
34 virtual int position() const; 34 virtual int position() const;
35 35
36 virtual QString name ( ) const; 36 virtual QString name ( ) const;
37 virtual QIconSet icon ( ) const; 37 virtual QIconSet icon ( ) const;
38 virtual QString text ( ) const; 38 virtual QString text ( ) const;
39 virtual QString tr( const char* ) const; 39 virtual QString tr( const char* ) const;
40 virtual QString tr( const char*, const char* ) const; 40 virtual QString tr( const char*, const char* ) const;
41 virtual QPopupMenu *popup ( QWidget *parent ) const; 41 virtual QPopupMenu *popup ( QWidget *parent ) const;
42 42
43 virtual void activated ( ); 43 virtual void activated ( );
44 44
45private: 45private:
46 ulong ref; 46 ulong ref;
47}; 47};
48 48
49#endif 49#endif
diff --git a/core/applets/restartapplet2/.cvsignore b/core/applets/restartapplet2/.cvsignore
index a403d26..4943911 100644
--- a/core/applets/restartapplet2/.cvsignore
+++ b/core/applets/restartapplet2/.cvsignore
@@ -1,7 +1,6 @@
1*.moc 1*.moc
2*.~ 2*.~
3Makefile* 3Makefile*
4config.in 4config.in
5moc_* 5moc_*
6opieobjconfig.in 6opieobjconfig.in
7opieobj
diff --git a/core/applets/suspendapplet/suspend.h b/core/applets/suspendapplet/suspend.h
index 0c92bcb..75467c1 100644
--- a/core/applets/suspendapplet/suspend.h
+++ b/core/applets/suspendapplet/suspend.h
@@ -1,49 +1,49 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef __OPIE_SUSPEND_APPLET_H__ 20#ifndef __OPIE_SUSPEND_APPLET_H__
21#define __OPIE_SUSPEND_APPLET_H__ 21#define __OPIE_SUSPEND_APPLET_H__
22 22
23#include <qpe/menuappletinterface.h> 23#include <qpe/menuappletinterface.h>
24 24
25class SuspendApplet : public QObject, public MenuAppletInterface 25class SuspendApplet : public QObject, public MenuAppletInterface
26{ 26{
27public: 27public:
28 SuspendApplet ( ); 28 SuspendApplet ( );
29 virtual ~SuspendApplet ( ); 29 virtual ~SuspendApplet ( );
30 30
31 QRESULT queryInterface( const QUuid&, QUnknownInterface** ); 31 QRESULT queryInterface( const QUuid&, QUnknownInterface** );
32 Q_REFCOUNT 32 Q_REFCOUNT
33 33
34 virtual int position() const; 34 virtual int position() const;
35 35
36 virtual QString name ( ) const; 36 virtual QString name ( ) const;
37 virtual QIconSet icon ( ) const; 37 virtual QIconSet icon ( ) const;
38 virtual QString text ( ) const; 38 virtual QString text ( ) const;
39 virtual QString tr( const char* ) const; 39 virtual QString tr( const char* ) const;
40 virtual QString tr( const char*, const char* ) const; 40 virtual QString tr( const char*, const char* ) const;
41 virtual QPopupMenu *popup ( QWidget *parent ) const; 41 virtual QPopupMenu *popup ( QWidget *parent ) const;
42 42
43 virtual void activated ( ); 43 virtual void activated ( );
44 44
45private: 45private:
46 ulong ref; 46 ulong ref;
47}; 47};
48 48
49#endif 49#endif
diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp
index 0205622..8b2907a 100644
--- a/core/launcher/launcher.cpp
+++ b/core/launcher/launcher.cpp
@@ -1,1355 +1,1319 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21// WARNING: Do *NOT* define this yourself. The SL5xxx from SHARP does NOT 21// WARNING: Do *NOT* define this yourself. The SL5xxx from SHARP does NOT
22// have this class. 22// have this class.
23#define QTOPIA_INTERNAL_FSLP 23#define QTOPIA_INTERNAL_FSLP
24 24
25//#include <opie/ofiledialog.h>
26#include <opie/ofileselector.h>
27#include <qpe/qcopenvelope_qws.h> 25#include <qpe/qcopenvelope_qws.h>
28#include <qpe/resource.h> 26#include <qpe/resource.h>
29#include <qpe/applnk.h> 27#include <qpe/applnk.h>
30#include <qpe/config.h> 28#include <qpe/config.h>
31#include <qpe/global.h> 29#include <qpe/global.h>
32#include <qpe/qpeapplication.h> 30#include <qpe/qpeapplication.h>
33#include <qpe/mimetype.h> 31#include <qpe/mimetype.h>
34#include <qpe/storage.h> 32#include <qpe/storage.h>
35#include <qpe/palmtoprecord.h> 33#include <qpe/palmtoprecord.h>
36 34
37#include <qpe/version.h> 35#include <qpe/version.h>
38 36
39#include <qdir.h> 37#include <qdir.h>
40#ifdef QWS 38#ifdef QWS
41#include <qwindowsystem_qws.h> 39#include <qwindowsystem_qws.h>
42#endif 40#endif
43#include <qtimer.h> 41#include <qtimer.h>
44#include <qcombobox.h> 42#include <qcombobox.h>
45#include <qvbox.h> 43#include <qvbox.h>
46#include <qlayout.h> 44#include <qlayout.h>
47#include <qstyle.h> 45#include <qstyle.h>
48#include <qpushbutton.h> 46#include <qpushbutton.h>
49#include <qtabbar.h> 47#include <qtabbar.h>
50#include <qwidgetstack.h> 48#include <qwidgetstack.h>
51#include <qlayout.h> 49#include <qlayout.h>
52#include <qregexp.h> 50#include <qregexp.h>
53#include <qmessagebox.h> 51#include <qmessagebox.h>
54#include <qframe.h> 52#include <qframe.h>
55#include <qpainter.h> 53#include <qpainter.h>
56#include <qlabel.h> 54#include <qlabel.h>
57#include <qtextstream.h> 55#include <qtextstream.h>
58#include <qpopupmenu.h> 56#include <qpopupmenu.h>
59 57
60#include <opie/owait.h> 58#include <opie/owait.h>
61 59
62 60
63#include "launcherview.h" 61#include "launcherview.h"
64#include "launcher.h" 62#include "launcher.h"
65#include "syncdialog.h" 63#include "syncdialog.h"
66#include "desktop.h" 64#include "desktop.h"
67#include <qpe/lnkproperties.h> 65#include <qpe/lnkproperties.h>
68//#include "mrulist.h" 66//#include "mrulist.h"
69#include "qrsync.h" 67#include "qrsync.h"
70#include <stdlib.h> 68#include <stdlib.h>
71#include <unistd.h> 69#include <unistd.h>
72 70
73#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 71#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
74#include <stdio.h> 72#include <stdio.h>
75#include <sys/vfs.h> 73#include <sys/vfs.h>
76#include <mntent.h> 74#include <mntent.h>
77#endif 75#endif
78 76
79#include <qpe/storage.h> 77#include <qpe/storage.h>
80#include "mediummountgui.h" 78#include "mediummountgui.h"
81 79
82namespace { 80namespace {
83 QStringList configToMime( Config *cfg ){ 81 QStringList configToMime( Config *cfg ){
84 QStringList mimes; 82 QStringList mimes;
85 bool tmpMime = true; 83 bool tmpMime = true;
86 cfg->setGroup("mimetypes" ); 84 cfg->setGroup("mimetypes" );
87 tmpMime = cfg->readBoolEntry("all" ,true); 85 tmpMime = cfg->readBoolEntry("all" ,true);
88 if( tmpMime ){ 86 if( tmpMime ){
89 mimes << QString::null; 87 mimes << QString::null;
90 return mimes; 88 return mimes;
91 }else{ 89 }else{
92 tmpMime = cfg->readBoolEntry("audio", true ); 90 tmpMime = cfg->readBoolEntry("audio", true );
93 if(tmpMime ) 91 if(tmpMime )
94 mimes.append("audio/*" ); 92 mimes.append("audio/*" );
95 93
96 tmpMime = cfg->readBoolEntry("image", true ); 94 tmpMime = cfg->readBoolEntry("image", true );
97 if(tmpMime ) 95 if(tmpMime )
98 mimes.append("image/*" ); 96 mimes.append("image/*" );
99 97
100 tmpMime = cfg->readBoolEntry("text", true ); 98 tmpMime = cfg->readBoolEntry("text", true );
101 if(tmpMime ) 99 if(tmpMime )
102 mimes.append("text/*"); 100 mimes.append("text/*");
103 101
104 tmpMime = cfg->readBoolEntry("video", true ); 102 tmpMime = cfg->readBoolEntry("video", true );
105 if(tmpMime ) 103 if(tmpMime )
106 mimes.append("video/*" ); 104 mimes.append("video/*" );
107 } 105 }
108 return mimes; 106 return mimes;
109 } 107 }
110 108
111} 109}
112 110
113 111
114 112
115//#define SHOW_ALL 113//#define SHOW_ALL
116 114
117class CategoryTab : public QTab 115class CategoryTab : public QTab
118{ 116{
119public: 117public:
120 CategoryTab( const QIconSet &icon, const QString &text=QString::null ) 118 CategoryTab( const QIconSet &icon, const QString &text=QString::null )
121 : QTab( icon, text ) 119 : QTab( icon, text )
122 { 120 {
123 } 121 }
124 122
125 QColor bgColor; 123 QColor bgColor;
126 QColor fgColor; 124 QColor fgColor;
127}; 125};
128 126
129//=========================================================================== 127//===========================================================================
130 128
131CategoryTabWidget::CategoryTabWidget( QWidget* parent ) : 129CategoryTabWidget::CategoryTabWidget( QWidget* parent ) :
132 QVBox( parent ) 130 QVBox( parent )
133{ 131{
134 categoryBar = 0; 132 categoryBar = 0;
135 stack = 0; 133 stack = 0;
136} 134}
137 135
138void CategoryTabWidget::prevTab() 136void CategoryTabWidget::prevTab()
139{ 137{
140 if ( categoryBar ) { 138 if ( categoryBar ) {
141 int n = categoryBar->count(); 139 int n = categoryBar->count();
142 int tab = categoryBar->currentTab(); 140 int tab = categoryBar->currentTab();
143 if ( tab >= 0 ) 141 if ( tab >= 0 )
144 categoryBar->setCurrentTab( (tab - 1 + n)%n ); 142 categoryBar->setCurrentTab( (tab - 1 + n)%n );
145 } 143 }
146} 144}
147 145
148void CategoryTabWidget::nextTab() 146void CategoryTabWidget::nextTab()
149{ 147{
150 if ( categoryBar ) { 148 if ( categoryBar ) {
151 int n = categoryBar->count(); 149 int n = categoryBar->count();
152 int tab = categoryBar->currentTab(); 150 int tab = categoryBar->currentTab();
153 categoryBar->setCurrentTab( (tab + 1)%n ); 151 categoryBar->setCurrentTab( (tab + 1)%n );
154 } 152 }
155} 153}
156 154
157 155
158void CategoryTabWidget::showTab(const QString& id) 156void CategoryTabWidget::showTab(const QString& id)
159{ 157{
160 if ( categoryBar ) { 158 if ( categoryBar ) {
161 int idx = ids.findIndex( id ); 159 int idx = ids.findIndex( id );
162 categoryBar->setCurrentTab( idx ); 160 categoryBar->setCurrentTab( idx );
163 } 161 }
164} 162}
165 163
166void CategoryTabWidget::addItem( const QString& linkfile ) 164void CategoryTabWidget::addItem( const QString& linkfile )
167{ 165{
168// int i=0; 166 int i=0;
169// AppLnk *app = new AppLnk(linkfile); 167 AppLnk *app = new AppLnk(linkfile);
170// if ( !app->isValid() ) { 168 if ( !app->isValid() ) {
171// delete app; 169 delete app;
172// app=0; 170 app=0;
173// } 171 }
174// if ( !app || !app->file().isEmpty() ) { 172 if ( !app || !app->file().isEmpty() ) {
175 // A document 173 // A document
176// delete app; 174 delete app;
177// app = new DocLnk(linkfile); 175 app = new DocLnk(linkfile);
178// if ( app->fileKnown() ) { 176 if ( app->fileKnown() ) {
179// ((LauncherView*)(stack->widget(ids.count()-1)))->addItem(app); 177 ((LauncherView*)(stack->widget(ids.count()-1)))->addItem(app);
180// } else { 178 } else {
181// ((LauncherView*)(stack->widget(ids.count()-1)))->sort(); 179 ((LauncherView*)(stack->widget(ids.count()-1)))->sort();
182// delete app; 180 delete app;
183// } 181 }
184// return; 182 return;
185// } 183 }
186 // An application 184 // An application
187// for ( QStringList::Iterator it=ids.begin(); it!=ids.end(); ++it) { 185 for ( QStringList::Iterator it=ids.begin(); it!=ids.end(); ++it) {
188// if ( !(*it).isEmpty() ) { 186 if ( !(*it).isEmpty() ) {
189// QRegExp tf(*it,FALSE,TRUE); 187 QRegExp tf(*it,FALSE,TRUE);
190// if ( tf.match(app->type()) >= 0 ) { 188 if ( tf.match(app->type()) >= 0 ) {
191// ((LauncherView*)stack->widget(i))->addItem(app); 189 ((LauncherView*)stack->widget(i))->addItem(app);
192// return; 190 return;
193// } 191 }
194// i++; 192 i++;
195 // } 193 }
196 // } 194 }
197 195
198 QCopEnvelope e("QPE/TaskBar","reloadApps()"); 196 QCopEnvelope e("QPE/TaskBar","reloadApps()");
199} 197}
200 198
201void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder, 199void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder,
202 AppLnkSet* /*docFolder*/, const QList<FileSystem> & /*fs*/) 200 AppLnkSet* docFolder, const QList<FileSystem> &fs)
203{ 201{
204 QString current; 202 QString current;
205 if ( categoryBar ) { 203 if ( categoryBar ) {
206 int c = categoryBar->currentTab(); 204 int c = categoryBar->currentTab();
207 if ( c >= 0 ) current = ids[c]; 205 if ( c >= 0 ) current = ids[c];
208 } 206 }
209 207
210 delete categoryBar; 208 delete categoryBar;
211 categoryBar = new CategoryTabBar( this ); 209 categoryBar = new CategoryTabBar( this );
212 QPalette pal = categoryBar->palette(); 210 QPalette pal = categoryBar->palette();
213 pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) ); 211 pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) );
214 pal.setColor( QColorGroup::Background, pal.active().background().light(110) ); 212 pal.setColor( QColorGroup::Background, pal.active().background().light(110) );
215 categoryBar->setPalette( pal ); 213 categoryBar->setPalette( pal );
216 214
217 delete stack; 215 delete stack;
218 stack = new QWidgetStack(this); 216 stack = new QWidgetStack(this);
219 tabs=0; 217 tabs=0;
220 218
221 ids.clear(); 219 ids.clear();
222 220
223 Config cfg("Launcher"); 221 Config cfg("Launcher");
224 222
225 QStringList types = rootFolder->types(); 223 QStringList types = rootFolder->types();
226 for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) { 224 for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) {
227 if ( !(*it).isEmpty() ) { 225 if ( !(*it).isEmpty() ) {
228 (void)newView(*it,rootFolder->typePixmap(*it),rootFolder->typeName(*it)); 226 (void)newView(*it,rootFolder->typePixmap(*it),rootFolder->typeName(*it));
229 setTabAppearance( *it, cfg ); 227 setTabAppearance( *it, cfg );
230 } 228 }
231 } 229 }
232 QListIterator<AppLnk> it( rootFolder->children() ); 230 QListIterator<AppLnk> it( rootFolder->children() );
233 AppLnk* l; 231 AppLnk* l;
234 while ( (l=it.current()) ) { 232 while ( (l=it.current()) ) {
235 if ( l->type() == "Separator" ) { // No tr 233 if ( l->type() == "Separator" ) { // No tr
236 rootFolder->remove(l); 234 rootFolder->remove(l);
237 delete l; 235 delete l;
238 } else { 236 } else {
239 int i=0; 237 int i=0;
240 for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) { 238 for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) {
241 if ( *it == l->type() ) 239 if ( *it == l->type() )
242 ((LauncherView*)stack->widget(i))->addItem(l,FALSE); 240 ((LauncherView*)stack->widget(i))->addItem(l,FALSE);
243 i++; 241 i++;
244 } 242 }
245 } 243 }
246 ++it; 244 ++it;
247 } 245 }
248 rootFolder->detachChildren(); 246 rootFolder->detachChildren();
249 for (int i=0; i<tabs; i++) 247 for (int i=0; i<tabs; i++)
250 ((LauncherView*)stack->widget(i))->sort(); 248 ((LauncherView*)stack->widget(i))->sort();
251 249
252 // all documents 250 // all documents
253 QImage img( Resource::loadImage( "DocsIcon" ) ); 251 QImage img( Resource::loadImage( "DocsIcon" ) );
254 QPixmap pm; 252 QPixmap pm;
255 pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); 253 pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() );
254 docview = newView( "Documents", // No tr
255 pm, tr("Documents"));
256 docview->populate( docFolder, QString::null );
257 docFolder->detachChildren();
258 docview->setFileSystems(fs);
259 docview->setToolsEnabled(TRUE);
260 setTabAppearance( "Documents", cfg ); // No tr
256 261
257 //ljpotter 262 connect( categoryBar, SIGNAL(selected(int)), stack, SLOT(raiseWidget(int)) );
258 CategoryTab *catTab ;
259 catTab = new CategoryTab( pm, "Documents" );
260
261 categoryBar->addTab( catTab );
262
263 fileSel = new DocumentTab( stack, 4, 0, "/","");
264 stack->addWidget( fileSel, tabs++ );
265
266 // fileSel->hide();
267
268 connect( fileSel, SIGNAL( fileSelected( const DocLnk & )),
269 this, SLOT(clickie(const DocLnk&)) );
270
271// connect( fileSel, SIGNAL( fileSelected( const QString & )),
272// this, SLOT(clickie(const QString&)) );
273
274 connect( categoryBar, SIGNAL(selected(int)), stack, SLOT(raiseWidget(int)) );
275 263
276 ((LauncherView*)stack->widget(0))->setFocus(); 264 ((LauncherView*)stack->widget(0))->setFocus();
277 265
278 cfg. setGroup ( "GUI" ); 266 cfg. setGroup ( "GUI" );
279 setBusyIndicatorType ( cfg. readEntry ( "BusyType", QString::null )); 267 setBusyIndicatorType ( cfg. readEntry ( "BusyType", QString::null ));
280 268
281 if ( !current.isNull() ) { 269 if ( !current.isNull() ) {
282 showTab(current); 270 showTab(current);
283 } 271 }
284 272
285 categoryBar->show(); 273 categoryBar->show();
286 stack->show(); 274 stack->show();
287 275
288
289 QCopEnvelope e("QPE/TaskBar","reloadApps()"); 276 QCopEnvelope e("QPE/TaskBar","reloadApps()");
290} 277}
291 278
292void CategoryTabWidget::clickie(const DocLnk &lnk) {
293 lnk.execute();
294 // fileSel->reparse();
295}
296
297void CategoryTabWidget::clickie(const QString &appStr) {
298// DocLnk lnk(appStr);
299// lnk.execute();
300}
301
302void CategoryTabWidget::setTabAppearance( const QString &id, Config &cfg ) 279void CategoryTabWidget::setTabAppearance( const QString &id, Config &cfg )
303{ 280{
304 QString grp( "Tab %1" ); // No tr 281 QString grp( "Tab %1" ); // No tr
305 cfg.setGroup( grp.arg(id) ); 282 cfg.setGroup( grp.arg(id) );
306 LauncherView *v = view( id ); 283 LauncherView *v = view( id );
307 int idx = ids.findIndex( id ); 284 int idx = ids.findIndex( id );
308 CategoryTab *tab = (CategoryTab *)categoryBar->tab( idx ); 285 CategoryTab *tab = (CategoryTab *)categoryBar->tab( idx );
309 286
310 // View 287 // View
311 QString view = cfg.readEntry( "View", "Icon" ); 288 QString view = cfg.readEntry( "View", "Icon" );
312 if ( view == "List" ) // No tr 289 if ( view == "List" ) // No tr
313 v->setViewMode( LauncherView::List ); 290 v->setViewMode( LauncherView::List );
314 QString bgType = cfg.readEntry( "BackgroundType", "Image" ); 291 QString bgType = cfg.readEntry( "BackgroundType", "Image" );
315 if ( bgType == "Image" ) { // No tr 292 if ( bgType == "Image" ) { // No tr
316 QString pm = cfg.readEntry( "BackgroundImage", "launcher/opie-background" ); 293 QString pm = cfg.readEntry( "BackgroundImage", "launcher/opie-background" );
317 v->setBackgroundType( LauncherView::Image, pm ); 294 v->setBackgroundType( LauncherView::Image, pm );
318 } else if ( bgType == "SolidColor" ) { 295 } else if ( bgType == "SolidColor" ) {
319 QString c = cfg.readEntry( "BackgroundColor" ); 296 QString c = cfg.readEntry( "BackgroundColor" );
320 v->setBackgroundType( LauncherView::SolidColor, c ); 297 v->setBackgroundType( LauncherView::SolidColor, c );
321 } 298 }
322 QString textCol = cfg.readEntry( "TextColor" ); 299 QString textCol = cfg.readEntry( "TextColor" );
323 if ( textCol.isEmpty() ) 300 if ( textCol.isEmpty() )
324 v->setTextColor( QColor() ); 301 v->setTextColor( QColor() );
325 else 302 else
326 v->setTextColor( QColor(textCol) ); 303 v->setTextColor( QColor(textCol) );
327 QStringList font = cfg.readListEntry( "Font", ',' ); 304 QStringList font = cfg.readListEntry( "Font", ',' );
328 if ( font.count() == 4 ) 305 if ( font.count() == 4 )
329 v->setViewFont( QFont(font[0], font[1].toInt(), font[2].toInt(), font[3].toInt()!=0) ); 306 v->setViewFont( QFont(font[0], font[1].toInt(), font[2].toInt(), font[3].toInt()!=0) );
330 307
331 // Tabs 308 // Tabs
332 QString tabCol = cfg.readEntry( "TabColor" ); 309 QString tabCol = cfg.readEntry( "TabColor" );
333 if ( tabCol.isEmpty() ) 310 if ( tabCol.isEmpty() )
334 tab->bgColor = QColor(); 311 tab->bgColor = QColor();
335 else 312 else
336 tab->bgColor = QColor(tabCol); 313 tab->bgColor = QColor(tabCol);
337 QString tabTextCol = cfg.readEntry( "TabTextColor" ); 314 QString tabTextCol = cfg.readEntry( "TabTextColor" );
338 if ( tabTextCol.isEmpty() ) 315 if ( tabTextCol.isEmpty() )
339 tab->fgColor = QColor(); 316 tab->fgColor = QColor();
340 else 317 else
341 tab->fgColor = QColor(tabTextCol); 318 tab->fgColor = QColor(tabTextCol);
342} 319}
343 320
344//void CategoryTabWidget::updateDocs(AppLnkSet* docFolder, const QList<FileSystem> & /*fs*/) 321void CategoryTabWidget::updateDocs(AppLnkSet* docFolder, const QList<FileSystem> &fs)
345//{ 322{
346 // docFolder->detachChildren(); 323 docview->populate( docFolder, QString::null );
347//} 324 docFolder->detachChildren();
325 docview->setFileSystems(fs);
326 docview->updateTools();
327}
348 328
349void CategoryTabWidget::tabProperties() 329void CategoryTabWidget::tabProperties()
350{ 330{
351 LauncherView *view = (LauncherView*)stack->widget( categoryBar->currentTab() ); 331 LauncherView *view = (LauncherView*)stack->widget( categoryBar->currentTab() );
352 QPopupMenu *m = new QPopupMenu( this ); 332 QPopupMenu *m = new QPopupMenu( this );
353 m->insertItem( tr("Icon View"), LauncherView::Icon ); 333 m->insertItem( tr("Icon View"), LauncherView::Icon );
354 m->insertItem( tr("List View"), LauncherView::List ); 334 m->insertItem( tr("List View"), LauncherView::List );
355 m->setItemChecked( (int)view->viewMode(), TRUE ); 335 m->setItemChecked( (int)view->viewMode(), TRUE );
356 int rv = m->exec( QCursor::pos() ); 336 int rv = m->exec( QCursor::pos() );
357 if ( rv >= 0 && rv != view->viewMode() ) { 337 if ( rv >= 0 && rv != view->viewMode() ) {
358 view->setViewMode( (LauncherView::ViewMode)rv ); 338 view->setViewMode( (LauncherView::ViewMode)rv );
359 } 339 }
360 340
361 delete m; 341 delete m;
362} 342}
363 343
364QString CategoryTabWidget::getAllDocLinkInfo() const 344QString CategoryTabWidget::getAllDocLinkInfo() const
365{ 345{
366 return ""; 346 return docview->getAllDocLinkInfo();
367} 347}
368 348
369LauncherView* CategoryTabWidget::newView( const QString& id, const QPixmap& pm, const QString& label ) 349LauncherView* CategoryTabWidget::newView( const QString& id, const QPixmap& pm, const QString& label )
370{ 350{
371 LauncherView* view = new LauncherView( stack ); 351 LauncherView* view = new LauncherView( stack );
372 connect( view, SIGNAL(clicked(const AppLnk*)), 352 connect( view, SIGNAL(clicked(const AppLnk*)),
373 this, SIGNAL(clicked(const AppLnk*))); 353 this, SIGNAL(clicked(const AppLnk*)));
374 connect( view, SIGNAL(rightPressed(AppLnk*)), 354 connect( view, SIGNAL(rightPressed(AppLnk*)),
375 this, SIGNAL(rightPressed(AppLnk*))); 355 this, SIGNAL(rightPressed(AppLnk*)));
376 ids.append(id); 356 ids.append(id);
377 categoryBar->addTab( new CategoryTab( pm, label ) ); 357 categoryBar->addTab( new CategoryTab( pm, label ) );
378 stack->addWidget( view, tabs++ ); 358 stack->addWidget( view, tabs++ );
379 return view; 359 return view;
380} 360}
381 361
382void CategoryTabWidget::updateLink(const QString& linkfile) 362void CategoryTabWidget::updateLink(const QString& linkfile)
383{ 363{
384 // LauncherView* view; 364 int i=0;
385 qApp->processEvents(); 365 LauncherView* view;
386// while ((view = (LauncherView*)stack->widget(i++))) { 366 //qApp->processEvents();
387// if ( view->removeLink(linkfile) ) 367 while ((view = (LauncherView*)stack->widget(i++))) {
388// break; 368 if ( view->removeLink(linkfile) )
389// } 369 break;
390 // addItem(linkfile); 370 }
391 fileSel->reparse(); 371 addItem(linkfile);
372 docview->updateTools();
392} 373}
393 374
394void CategoryTabWidget::paletteChange( const QPalette &p ) 375void CategoryTabWidget::paletteChange( const QPalette &p )
395{ 376{
396 QVBox::paletteChange( p ); 377 QVBox::paletteChange( p );
397 QPalette pal = palette(); 378 QPalette pal = palette();
398 pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) ); 379 pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) );
399 pal.setColor( QColorGroup::Background, pal.active().background().light(110) ); 380 pal.setColor( QColorGroup::Background, pal.active().background().light(110) );
400 categoryBar->setPalette( pal ); 381 categoryBar->setPalette( pal );
401 categoryBar->update(); 382 categoryBar->update();
402} 383}
403 384
404void CategoryTabWidget::setBusy(bool on) 385void CategoryTabWidget::setBusy(bool on)
405{ 386{
406 if ( on ) 387 if ( on )
407 ((LauncherView*)stack->visibleWidget())->setBusy(TRUE); 388 ((LauncherView*)stack->visibleWidget())->setBusy(TRUE);
408 else 389 else
409 for (int i=0; i<tabs-1; i++) 390 for (int i=0; i<tabs; i++)
410 ((LauncherView*)stack->widget(i))->setBusy(FALSE); 391 ((LauncherView*)stack->widget(i))->setBusy(FALSE);
411} 392}
412 393
413LauncherView *CategoryTabWidget::view( const QString &id ) 394LauncherView *CategoryTabWidget::view( const QString &id )
414{ 395{
415 int idx = ids.findIndex( id ); 396 int idx = ids.findIndex( id );
416 return (LauncherView *)stack->widget(idx); 397 return (LauncherView *)stack->widget(idx);
417} 398}
418 399
419void CategoryTabWidget::setBusyIndicatorType ( const QString &type ) 400void CategoryTabWidget::setBusyIndicatorType ( const QString &type )
420{ 401{
421 for ( QStringList::Iterator it = ids. begin ( ); it != ids. end ( ); ++it ) 402 for ( QStringList::Iterator it = ids. begin ( ); it != ids. end ( ); ++it )
422 view ( *it )-> setBusyIndicatorType ( type ); 403 view ( *it )-> setBusyIndicatorType ( type );
423} 404}
424 405
425//=========================================================================== 406//===========================================================================
426 407
427CategoryTabBar::CategoryTabBar( QWidget *parent, const char *name ) 408CategoryTabBar::CategoryTabBar( QWidget *parent, const char *name )
428 : QTabBar( parent, name ) 409 : QTabBar( parent, name )
429{ 410{
430 setFocusPolicy( NoFocus ); 411 setFocusPolicy( NoFocus );
431 connect( this, SIGNAL( selected(int) ), this, SLOT( layoutTabs() ) ); 412 connect( this, SIGNAL( selected(int) ), this, SLOT( layoutTabs() ) );
432} 413}
433 414
434CategoryTabBar::~CategoryTabBar() 415CategoryTabBar::~CategoryTabBar()
435{ 416{
436} 417}
437 418
438void CategoryTabBar::layoutTabs() 419void CategoryTabBar::layoutTabs()
439{ 420{
440 if ( !count() ) 421 if ( !count() )
441 return; 422 return;
442 423
443// int percentFalloffTable[] = { 100, 70, 40, 12, 6, 3, 1, 0 }; 424// int percentFalloffTable[] = { 100, 70, 40, 12, 6, 3, 1, 0 };
444 int available = width()-1; 425 int available = width()-1;
445 QFontMetrics fm = fontMetrics(); 426 QFontMetrics fm = fontMetrics();
446 int hiddenTabWidth = -7; 427 int hiddenTabWidth = -7;
447 int middleTab = currentTab(); 428 int middleTab = currentTab();
448 int hframe, vframe, overlap; 429 int hframe, vframe, overlap;
449 style().tabbarMetrics( this, hframe, vframe, overlap ); 430 style().tabbarMetrics( this, hframe, vframe, overlap );
450 int x = 0; 431 int x = 0;
451 QRect r; 432 QRect r;
452 QTab *t; 433 QTab *t;
453 int required = 0; 434 int required = 0;
454 int eventabwidth = (width()-1)/count(); 435 int eventabwidth = (width()-1)/count();
455 enum Mode { HideBackText, Pack, Even } mode=Even; 436 enum Mode { HideBackText, Pack, Even } mode=Even;
456 for ( int i = 0; i < count(); i++ ) { 437 for ( int i = 0; i < count(); i++ ) {
457 t = tab(i); 438 t = tab(i);
458 int iw = fm.width( t->text() ) + hframe - overlap; 439 int iw = fm.width( t->text() ) + hframe - overlap;
459 if ( i != middleTab ) { 440 if ( i != middleTab ) {
460 available -= hiddenTabWidth + hframe - overlap; 441 available -= hiddenTabWidth + hframe - overlap;
461 if ( t->iconSet() != 0 ) 442 if ( t->iconSet() != 0 )
462 available -= t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); 443 available -= t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width();
463 } 444 }
464 if ( t->iconSet() != 0 ) 445 if ( t->iconSet() != 0 )
465 iw += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); 446 iw += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width();
466 required += iw; 447 required += iw;
467 // As space gets tight, packed looks better than even. "10" must be at least 0. 448 // As space gets tight, packed looks better than even. "10" must be at least 0.
468 if ( iw >= eventabwidth-10 ) 449 if ( iw >= eventabwidth-10 )
469 mode = Pack; 450 mode = Pack;
470 } 451 }
471 if ( mode == Pack && required > width()-1 ) 452 if ( mode == Pack && required > width()-1 )
472 mode = HideBackText; 453 mode = HideBackText;
473 for ( int i = 0; i < count(); i++ ) { 454 for ( int i = 0; i < count(); i++ ) {
474 t = tab(i); 455 t = tab(i);
475 if ( mode != HideBackText ) { 456 if ( mode != HideBackText ) {
476 int w = fm.width( t->text() ); 457 int w = fm.width( t->text() );
477 int ih = 0; 458 int ih = 0;
478 if ( t->iconSet() != 0 ) { 459 if ( t->iconSet() != 0 ) {
479 w += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); 460 w += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width();
480 ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); 461 ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height();
481 } 462 }
482 int h = QMAX( fm.height(), ih ); 463 int h = QMAX( fm.height(), ih );
483 h = QMAX( h, QApplication::globalStrut().height() ); 464 h = QMAX( h, QApplication::globalStrut().height() );
484 465
485 h += vframe; 466 h += vframe;
486 w += hframe; 467 w += hframe;
487 468
488 QRect tr(x, 0, 469 QRect tr(x, 0,
489 mode == Even ? eventabwidth : w * (width()-1)/required, h); 470 mode == Even ? eventabwidth : w * (width()-1)/required, h);
490 t->setRect(tr); 471 t->setRect(tr);
491 x += tr.width() - overlap; 472 x += tr.width() - overlap;
492 r = r.unite(tr); 473 r = r.unite(tr);
493 } else if ( i != middleTab ) { 474 } else if ( i != middleTab ) {
494 int w = hiddenTabWidth; 475 int w = hiddenTabWidth;
495 int ih = 0; 476 int ih = 0;
496 if ( t->iconSet() != 0 ) { 477 if ( t->iconSet() != 0 ) {
497 w += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); 478 w += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width();
498 ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); 479 ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height();
499 } 480 }
500 int h = QMAX( fm.height(), ih ); 481 int h = QMAX( fm.height(), ih );
501 h = QMAX( h, QApplication::globalStrut().height() ); 482 h = QMAX( h, QApplication::globalStrut().height() );
502 483
503 h += vframe; 484 h += vframe;
504 w += hframe; 485 w += hframe;
505 486
506 t->setRect( QRect(x, 0, w, h) ); 487 t->setRect( QRect(x, 0, w, h) );
507 x += t->rect().width() - overlap; 488 x += t->rect().width() - overlap;
508 r = r.unite( t->rect() ); 489 r = r.unite( t->rect() );
509 } else { 490 } else {
510 int ih = 0; 491 int ih = 0;
511 if ( t->iconSet() != 0 ) { 492 if ( t->iconSet() != 0 ) {
512 ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); 493 ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height();
513 } 494 }
514 int h = QMAX( fm.height(), ih ); 495 int h = QMAX( fm.height(), ih );
515 h = QMAX( h, QApplication::globalStrut().height() ); 496 h = QMAX( h, QApplication::globalStrut().height() );
516 497
517 h += vframe; 498 h += vframe;
518 499
519 t->setRect( QRect(x, 0, available, h) ); 500 t->setRect( QRect(x, 0, available, h) );
520 x += t->rect().width() - overlap; 501 x += t->rect().width() - overlap;
521 r = r.unite( t->rect() ); 502 r = r.unite( t->rect() );
522 } 503 }
523 } 504 }
524 505
525 QRect rr = tab(count()-1)->rect(); 506 QRect rr = tab(count()-1)->rect();
526 rr.setRight(width()-1); 507 rr.setRight(width()-1);
527 tab(count()-1)->setRect( rr ); 508 tab(count()-1)->setRect( rr );
528 509
529 for ( t = tabList()->first(); t; t = tabList()->next() ) { 510 for ( t = tabList()->first(); t; t = tabList()->next() ) {
530 QRect tr = t->rect(); 511 QRect tr = t->rect();
531 tr.setHeight( r.height() ); 512 tr.setHeight( r.height() );
532 t->setRect( tr ); 513 t->setRect( tr );
533 } 514 }
534 515
535 update(); 516 update();
536} 517}
537 518
538 519
539void CategoryTabBar::paint( QPainter * p, QTab * t, bool selected ) const 520void CategoryTabBar::paint( QPainter * p, QTab * t, bool selected ) const
540{ 521{
541 CategoryTabBar *that = (CategoryTabBar *) this; 522 CategoryTabBar *that = (CategoryTabBar *) this;
542 CategoryTab *ct = (CategoryTab *)t; 523 CategoryTab *ct = (CategoryTab *)t;
543 QPalette pal = palette(); 524 QPalette pal = palette();
544 bool setPal = FALSE; 525 bool setPal = FALSE;
545 if ( ct->bgColor.isValid() ) { 526 if ( ct->bgColor.isValid() ) {
546 pal.setColor( QPalette::Active, QColorGroup::Background, ct->bgColor ); 527 pal.setColor( QPalette::Active, QColorGroup::Background, ct->bgColor );
547 pal.setColor( QPalette::Active, QColorGroup::Button, ct->bgColor ); 528 pal.setColor( QPalette::Active, QColorGroup::Button, ct->bgColor );
548 pal.setColor( QPalette::Inactive, QColorGroup::Background, ct->bgColor ); 529 pal.setColor( QPalette::Inactive, QColorGroup::Background, ct->bgColor );
549 pal.setColor( QPalette::Inactive, QColorGroup::Button, ct->bgColor ); 530 pal.setColor( QPalette::Inactive, QColorGroup::Button, ct->bgColor );
550 that->setUpdatesEnabled( FALSE ); 531 that->setUpdatesEnabled( FALSE );
551 that->setPalette( pal ); 532 that->setPalette( pal );
552 setPal = TRUE; 533 setPal = TRUE;
553 } 534 }
554#if QT_VERSION >= 300 535#if QT_VERSION >= 300
555 QStyle::SFlags flags = QStyle::Style_Default; 536 QStyle::SFlags flags = QStyle::Style_Default;
556 if ( selected ) 537 if ( selected )
557 flags |= QStyle::Style_Selected; 538 flags |= QStyle::Style_Selected;
558 style().drawControl( QStyle::CE_TabBarTab, p, this, t->rect(), 539 style().drawControl( QStyle::CE_TabBarTab, p, this, t->rect(),
559 colorGroup(), flags, QStyleOption(t) ); 540 colorGroup(), flags, QStyleOption(t) );
560#else 541#else
561 style().drawTab( p, this, t, selected ); 542 style().drawTab( p, this, t, selected );
562#endif 543#endif
563 544
564 QRect r( t->rect() ); 545 QRect r( t->rect() );
565 QFont f( font() ); 546 QFont f( font() );
566 if ( selected ) 547 if ( selected )
567 f.setBold( TRUE ); 548 f.setBold( TRUE );
568 p->setFont( f ); 549 p->setFont( f );
569 550
570 if ( ct->fgColor.isValid() ) { 551 if ( ct->fgColor.isValid() ) {
571 pal.setColor( QPalette::Active, QColorGroup::Foreground, ct->fgColor ); 552 pal.setColor( QPalette::Active, QColorGroup::Foreground, ct->fgColor );
572 pal.setColor( QPalette::Inactive, QColorGroup::Foreground, ct->fgColor ); 553 pal.setColor( QPalette::Inactive, QColorGroup::Foreground, ct->fgColor );
573 that->setUpdatesEnabled( FALSE ); 554 that->setUpdatesEnabled( FALSE );
574 that->setPalette( pal ); 555 that->setPalette( pal );
575 setPal = TRUE; 556 setPal = TRUE;
576 } 557 }
577 int iw = 0; 558 int iw = 0;
578 int ih = 0; 559 int ih = 0;
579 if ( t->iconSet() != 0 ) { 560 if ( t->iconSet() != 0 ) {
580 iw = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 2; 561 iw = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 2;
581 ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); 562 ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height();
582 } 563 }
583 int w = iw + p->fontMetrics().width( t->text() ) + 4; 564 int w = iw + p->fontMetrics().width( t->text() ) + 4;
584 int h = QMAX(p->fontMetrics().height() + 4, ih ); 565 int h = QMAX(p->fontMetrics().height() + 4, ih );
585 paintLabel( p, QRect( r.left() + (r.width()-w)/2 - 3, 566 paintLabel( p, QRect( r.left() + (r.width()-w)/2 - 3,
586 r.top() + (r.height()-h)/2, w, h ), t, 567 r.top() + (r.height()-h)/2, w, h ), t,
587#if QT_VERSION >= 300 568#if QT_VERSION >= 300
588 t->identifier() == keyboardFocusTab() 569 t->identifier() == keyboardFocusTab()
589#else 570#else
590 t->identitifer() == keyboardFocusTab() 571 t->identitifer() == keyboardFocusTab()
591#endif 572#endif
592 ); 573 );
593 if ( setPal ) { 574 if ( setPal ) {
594 that->unsetPalette(); 575 that->unsetPalette();
595 that->setUpdatesEnabled( TRUE ); 576 that->setUpdatesEnabled( TRUE );
596 } 577 }
597} 578}
598 579
599 580
600void CategoryTabBar::paintLabel( QPainter* p, const QRect&, 581void CategoryTabBar::paintLabel( QPainter* p, const QRect&,
601 QTab* t, bool has_focus ) const 582 QTab* t, bool has_focus ) const
602{ 583{
603 QRect r = t->rect(); 584 QRect r = t->rect();
604 // if ( t->id != currentTab() ) 585 // if ( t->id != currentTab() )
605 //r.moveBy( 1, 1 ); 586 //r.moveBy( 1, 1 );
606 // 587 //
607 if ( t->iconSet() ) { 588 if ( t->iconSet() ) {
608 // the tab has an iconset, draw it in the right mode 589 // the tab has an iconset, draw it in the right mode
609 QIconSet::Mode mode = (t->isEnabled() && isEnabled()) ? QIconSet::Normal : QIconSet::Disabled; 590 QIconSet::Mode mode = (t->isEnabled() && isEnabled()) ? QIconSet::Normal : QIconSet::Disabled;
610 if ( mode == QIconSet::Normal && has_focus ) 591 if ( mode == QIconSet::Normal && has_focus )
611 mode = QIconSet::Active; 592 mode = QIconSet::Active;
612 QPixmap pixmap = t->iconSet()->pixmap( QIconSet::Small, mode ); 593 QPixmap pixmap = t->iconSet()->pixmap( QIconSet::Small, mode );
613 int pixw = pixmap.width(); 594 int pixw = pixmap.width();
614 int pixh = pixmap.height(); 595 int pixh = pixmap.height();
615 p->drawPixmap( r.left() + 6, r.center().y() - pixh / 2 + 1, pixmap ); 596 p->drawPixmap( r.left() + 6, r.center().y() - pixh / 2 + 1, pixmap );
616 r.setLeft( r.left() + pixw + 5 ); 597 r.setLeft( r.left() + pixw + 5 );
617 } 598 }
618 599
619 QRect tr = r; 600 QRect tr = r;
620 601
621 if ( r.width() < 20 ) 602 if ( r.width() < 20 )
622 return; 603 return;
623 604
624 if ( t->isEnabled() && isEnabled() ) { 605 if ( t->isEnabled() && isEnabled() ) {
625#if defined(_WS_WIN32_) 606#if defined(_WS_WIN32_)
626 if ( colorGroup().brush( QColorGroup::Button ) == colorGroup().brush( QColorGroup::Background ) ) 607 if ( colorGroup().brush( QColorGroup::Button ) == colorGroup().brush( QColorGroup::Background ) )
627 p->setPen( colorGroup().buttonText() ); 608 p->setPen( colorGroup().buttonText() );
628 else 609 else
629 p->setPen( colorGroup().foreground() ); 610 p->setPen( colorGroup().foreground() );
630#else 611#else
631 p->setPen( colorGroup().foreground() ); 612 p->setPen( colorGroup().foreground() );
632#endif 613#endif
633 p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() ); 614 p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() );
634 } else { 615 } else {
635 p->setPen( palette().disabled().foreground() ); 616 p->setPen( palette().disabled().foreground() );
636 p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() ); 617 p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() );
637 } 618 }
638} 619}
639 620
640//--------------------------------------------------------------------------- 621//---------------------------------------------------------------------------
641 622
642Launcher::Launcher( QWidget* parent, const char* name, WFlags fl ) 623Launcher::Launcher( QWidget* parent, const char* name, WFlags fl )
643 : QMainWindow( parent, name, fl ) 624 : QMainWindow( parent, name, fl )
644{ 625{
645 setCaption( tr("Launcher") ); 626 setCaption( tr("Launcher") );
646 627
647 syncDialog = 0; 628 syncDialog = 0;
648 629
649 // we have a pretty good idea how big we'll be 630 // we have a pretty good idea how big we'll be
650 setGeometry( 0, 0, qApp->desktop()->width(), qApp->desktop()->height() ); 631 setGeometry( 0, 0, qApp->desktop()->width(), qApp->desktop()->height() );
651 632
652 tabs = 0; 633 tabs = 0;
653 rootFolder = 0; 634 rootFolder = 0;
654 docsFolder = 0; 635 docsFolder = 0;
655 636
656 int stamp = uidgen.generate(); // this is our timestamp to see which devices we know 637 int stamp = uidgen.generate(); // this is our timestamp to see which devices we know
657 //uidgen.store( stamp ); 638 //uidgen.store( stamp );
658 m_timeStamp = QString::number( stamp ); 639 m_timeStamp = QString::number( stamp );
659 640
660 tabs = new CategoryTabWidget( this ); 641 tabs = new CategoryTabWidget( this );
661 setCentralWidget( tabs ); 642 setCentralWidget( tabs );
662 643
663 connect( tabs, SIGNAL(selected(const QString&)), 644 connect( tabs, SIGNAL(selected(const QString&)),
664 this, SLOT(viewSelected(const QString&)) ); 645 this, SLOT(viewSelected(const QString&)) );
665 connect( tabs, SIGNAL(clicked(const AppLnk*)), 646 connect( tabs, SIGNAL(clicked(const AppLnk*)),
666 this, SLOT(select(const AppLnk*))); 647 this, SLOT(select(const AppLnk*)));
667 connect( tabs, SIGNAL(rightPressed(AppLnk*)), 648 connect( tabs, SIGNAL(rightPressed(AppLnk*)),
668 this, SLOT(properties(AppLnk*))); 649 this, SLOT(properties(AppLnk*)));
669
670 650
671#if !defined(QT_NO_COP) 651#if !defined(QT_NO_COP)
672 QCopChannel* sysChannel = new QCopChannel( "QPE/System", this ); 652 QCopChannel* sysChannel = new QCopChannel( "QPE/System", this );
673 connect( sysChannel, SIGNAL(received(const QCString &, const QByteArray &)), 653 connect( sysChannel, SIGNAL(received(const QCString &, const QByteArray &)),
674 this, SLOT(systemMessage( const QCString &, const QByteArray &)) ); 654 this, SLOT(systemMessage( const QCString &, const QByteArray &)) );
675 QCopChannel *channel = new QCopChannel( "QPE/Launcher", this ); 655 QCopChannel *channel = new QCopChannel( "QPE/Launcher", this );
676 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 656 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
677 this, SLOT(launcherMessage(const QCString&, const QByteArray&)) ); 657 this, SLOT(launcherMessage(const QCString&, const QByteArray&)) );
678#endif 658#endif
679 659
680 storage = new StorageInfo( this ); 660 storage = new StorageInfo( this );
681 connect( storage, SIGNAL( disksChanged() ), SLOT( storageChanged() ) ); 661 connect( storage, SIGNAL( disksChanged() ), SLOT( storageChanged() ) );
682 662
683 updateTabs(); 663 updateTabs();
684 664
685 preloadApps(); 665 preloadApps();
686 666
687 in_lnk_props = FALSE; 667 in_lnk_props = FALSE;
688 got_lnk_change = FALSE; 668 got_lnk_change = FALSE;
689} 669}
690 670
691Launcher::~Launcher() 671Launcher::~Launcher()
692{ 672{
693 delete rootFolder; 673 delete rootFolder;
694 delete docsFolder; 674 delete docsFolder;
695} 675}
696 676
697static bool isVisibleWindow(int wid) 677static bool isVisibleWindow(int wid)
698{ 678{
699#ifdef QWS 679#ifdef QWS
700 const QList<QWSWindow> &list = qwsServer->clientWindows(); 680 const QList<QWSWindow> &list = qwsServer->clientWindows();
701 QWSWindow* w; 681 QWSWindow* w;
702 for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { 682 for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) {
703 if ( w->winId() == wid ) 683 if ( w->winId() == wid )
704 return !w->isFullyObscured(); 684 return !w->isFullyObscured();
705 } 685 }
706#endif 686#endif
707 return FALSE; 687 return FALSE;
708} 688}
709 689
710void Launcher::showMaximized() 690void Launcher::showMaximized()
711{ 691{
712 if ( isVisibleWindow( winId() ) ) 692 if ( isVisibleWindow( winId() ) )
713 doMaximize(); 693 doMaximize();
714 else 694 else
715 QTimer::singleShot( 20, this, SLOT(doMaximize()) ); 695 QTimer::singleShot( 20, this, SLOT(doMaximize()) );
716} 696}
717 697
718void Launcher::doMaximize() 698void Launcher::doMaximize()
719{ 699{
720 QMainWindow::showMaximized(); 700 QMainWindow::showMaximized();
721 tabs->setMaximumWidth( qApp->desktop()->width() ); 701 tabs->setMaximumWidth( qApp->desktop()->width() );
722} 702}
723 703
724void Launcher::updateMimeTypes() 704void Launcher::updateMimeTypes()
725{ 705{
726 MimeType::clear(); 706 MimeType::clear();
727 updateMimeTypes(rootFolder); 707 updateMimeTypes(rootFolder);
728} 708}
729 709
730void Launcher::updateMimeTypes(AppLnkSet* folder) 710void Launcher::updateMimeTypes(AppLnkSet* folder)
731{ 711{
732 for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) { 712 for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) {
733 AppLnk *app = it.current(); 713 AppLnk *app = it.current();
734 if ( app->type() == "Folder" ) // No tr 714 if ( app->type() == "Folder" ) // No tr
735 updateMimeTypes((AppLnkSet *)app); 715 updateMimeTypes((AppLnkSet *)app);
736 else { 716 else {
737 MimeType::registerApp(*app); 717 MimeType::registerApp(*app);
738 } 718 }
739 } 719 }
740} 720}
741 721
742/** This is a HACK.... 722/** This is a HACK....
743 * Reason: scanning huge mediums, microdirvers for examples 723 * Reason: scanning huge mediums, microdirvers for examples
744 * consomes time. To avoid that we invented the MediumMountCheck 724 * consomes time. To avoid that we invented the MediumMountCheck
745 * 725 *
746 * a) the user globally disabled medium checking. We can ignore 726 * a) the user globally disabled medium checking. We can ignore
747 * all removable medium 727 * all removable medium
748 * b) the user enabled medium checking globally and we need to use this mimefilter 728 * b) the user enabled medium checking globally and we need to use this mimefilter
749 * c) the user enabled medium checking on a per medium bases 729 * c) the user enabled medium checking on a per medium bases
750 * c1) we already checked and its not ask again turns 730 * c1) we already checked and its not ask again turns
751 * c2) we need to ask and then apply the mimefilter 731 * c2) we need to ask and then apply the mimefilter
752 */ 732 */
753void Launcher::loadDocs() // ok here comes a hack belonging to Global:: 733void Launcher::loadDocs() // ok here comes a hack belonging to Global::
754{ 734{
755 OWait *owait = new OWait(); 735
756 Global::statusMessage( tr( "Finding documents" ) ); 736 OWait *owait = new OWait();
757 737 Global::statusMessage( tr( "Finding documents" ) );
758 owait->show(); 738
759 qApp->processEvents(); 739 owait->show();
760 if(docsFolder) delete docsFolder; 740 qApp->processEvents();
761 docsFolder = new DocLnkSet; 741
762 DocLnkSet *tmp = 0; 742 delete docsFolder;
763 QString home = QString(getenv("HOME")) + "/Documents"; 743 docsFolder = new DocLnkSet;
764 tmp = new DocLnkSet( home , QString::null); 744
765 docsFolder->appendFrom( *tmp ); 745 DocLnkSet *tmp = 0;
766 delete tmp; 746 QString home = QString(getenv("HOME")) + "/Documents";
767 747 tmp = new DocLnkSet( home , QString::null);
768 // RAM documents 748 docsFolder->appendFrom( *tmp );
769 StorageInfo storage; 749 delete tmp;
770 const QList<FileSystem> &fileSystems = storage.fileSystems(); 750
771 QListIterator<FileSystem> it ( fileSystems ); 751 // RAM documents
772 752 StorageInfo storage;
773 for ( ; it.current(); ++it ) { 753 const QList<FileSystem> &fileSystems = storage.fileSystems();
774 if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) { 754 QListIterator<FileSystem> it ( fileSystems );
775 tmp = new DocLnkSet( (*it)->path(), QString::null ); 755
776 docsFolder->appendFrom( *tmp ); 756 for ( ; it.current(); ++it ) {
777 delete tmp; 757 if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) {
778 } 758 tmp = new DocLnkSet( (*it)->path(), QString::null );
779 } 759 docsFolder->appendFrom( *tmp );
780 760 delete tmp;
781 Config mediumCfg( "medium"); 761 }
782 mediumCfg.setGroup("main"); 762 }
783 // a) -zecke we don't want to check 763
784 if(!mediumCfg.readBoolEntry("use", true ) ) { 764 Config mediumCfg( "medium");
785 owait->hide(); 765 mediumCfg.setGroup("main");
786 delete owait; 766 // a) -zecke we don't want to check
767 if(!mediumCfg.readBoolEntry("use", true ) )
787 return; 768 return;
788 }
789 // find out wich filesystems are new in this round
790 // We will do this by having a timestamp inside each mountpoint
791 // if the current timestamp doesn't match this is a new file system and
792 // come up with our MediumMountGui :) let the hacking begin
793 int stamp = uidgen.generate();
794 769
795 QString newStamp = QString::number( stamp ); // generates newtime Stamp 770 // find out wich filesystems are new in this round
771 // We will do this by having a timestamp inside each mountpoint
772 // if the current timestamp doesn't match this is a new file system and
773 // come up with our MediumMountGui :) let the hacking begin
774 int stamp = uidgen.generate();
775
776 QString newStamp = QString::number( stamp ); // generates newtime Stamp
796 777
797 // b) 778 // b)
798 if( mediumCfg.readBoolEntry("global", true ) ){ 779 if( mediumCfg.readBoolEntry("global", true ) ){
799 QString mime = configToMime(&mediumCfg).join(";"); 780 QString mime = configToMime(&mediumCfg).join(";");
800 for( it.toFirst(); it.current(); ++it ){ 781 for( it.toFirst(); it.current(); ++it ){
801 if( (*it)->isRemovable() ){ 782 if( (*it)->isRemovable() ){
802 tmp = new DocLnkSet( (*it)->path(), mime ); 783 tmp = new DocLnkSet( (*it)->path(), mime );
803 docsFolder->appendFrom( *tmp ); 784 docsFolder->appendFrom( *tmp );
804 delete tmp; 785 delete tmp;
805 } 786 }
806 } // done 787 } // done
807 owait->hide();
808 delete owait;
809 return; // save the else 788 return; // save the else
810 } 789 }
811 // c) zecke 790 // c) zecke
812 for ( it.toFirst(); it.current(); ++it ) { 791 for ( it.toFirst(); it.current(); ++it ) {
813 if ( (*it)->isRemovable() ) { // let's find out if we should search on it 792 if ( (*it)->isRemovable() ) { // let's find out if we should search on it
814 Config cfg( (*it)->path() + "/.opiestorage.cf", Config::File); 793 Config cfg( (*it)->path() + "/.opiestorage.cf", Config::File);
815 cfg.setGroup("main"); 794 cfg.setGroup("main");
816 QString stamp = cfg.readEntry("timestamp", QDateTime::currentDateTime().toString() ); 795 QString stamp = cfg.readEntry("timestamp", QDateTime::currentDateTime().toString() );
817 /** This medium is uptodate 796 /** This medium is uptodate
818 */ 797 */
819 if( stamp == m_timeStamp ){ // ok we know this card 798 if( stamp == m_timeStamp ){ // ok we know this card
820 cfg.writeEntry("timestamp", newStamp ); //just write a new timestamp 799 cfg.writeEntry("timestamp", newStamp ); //just write a new timestamp
821 // we need to scan the list now. Hopefully the cache will be there 800 // we need to scan the list now. Hopefully the cache will be there
822 // read the mimetypes from the config and search for documents 801 // read the mimetypes from the config and search for documents
823 QStringList mimetypes = configToMime( &cfg); 802 QStringList mimetypes = configToMime( &cfg);
824 //qApp->processEvents(); 803 //qApp->processEvents();
825 Global::statusMessage( tr( "Searching documents" ) );
826 tmp = new DocLnkSet( (*it)->path(), mimetypes.join(";") );
827 docsFolder->appendFrom( *tmp );
828 delete tmp;
829
830 } else { // come up with the gui cause this a new card
831 MediumMountGui medium(&cfg, (*it)->path() );
832 if( medium.check() ){ // we did not ask before or ask again is off
833 /** c2) */
834 if( medium.exec() ){ // he clicked yes so search it
835 // speicher
836 //cfg.read(); // cause of a race we need to reread - fixed
837 cfg.setGroup("main");
838 cfg.writeEntry("timestamp", newStamp );
839 cfg.write();
840
841 //qApp->processEvents();
842 tmp = new DocLnkSet( (*it)->path(), medium.mimeTypes().join(";" ) );
843 docsFolder->appendFrom( *tmp );
844 delete tmp;
845 }// no else
846 /** c1) */
847 } else { // we checked
848 // do something different see what we need to do
849 // let's see if we should check the device
850 cfg.setGroup("main" );
851 bool check = cfg.readBoolEntry("autocheck", true );
852 if( check ){ // find the documents
853
854 //qApp->processEvents();
855 Global::statusMessage( tr( "Searching documents" ) ); 804 Global::statusMessage( tr( "Searching documents" ) );
856 tmp = new DocLnkSet( (*it)->path(), configToMime(&cfg ).join(";") ); 805 tmp = new DocLnkSet( (*it)->path(), mimetypes.join(";") );
857 docsFolder->appendFrom( *tmp ); 806 docsFolder->appendFrom( *tmp );
858 delete tmp; 807 delete tmp;
859 } 808
860 } 809 }else{ // come up with the gui cause this a new card
861 } 810 MediumMountGui medium(&cfg, (*it)->path() );
862 } 811 if( medium.check() ){ // we did not ask before or ask again is off
863 } 812 /** c2) */
864 m_timeStamp = newStamp; 813 if( medium.exec() ){ // he clicked yes so search it
865 owait->hide(); 814 // speicher
866 delete owait; 815 //cfg.read(); // cause of a race we need to reread - fixed
816 cfg.setGroup("main");
817 cfg.writeEntry("timestamp", newStamp );
818 cfg.write();
819
820 //qApp->processEvents();
821 tmp = new DocLnkSet( (*it)->path(), medium.mimeTypes().join(";" ) );
822 docsFolder->appendFrom( *tmp );
823 delete tmp;
824 }// no else
825 /** c1) */
826 }else{ // we checked
827 // do something different see what we need to do
828 // let's see if we should check the device
829 cfg.setGroup("main" );
830 bool check = cfg.readBoolEntry("autocheck", true );
831 if( check ){ // find the documents
832
833 //qApp->processEvents();
834 Global::statusMessage( tr( "Searching documents" ) );
835 tmp = new DocLnkSet( (*it)->path(), configToMime(&cfg ).join(";") );
836 docsFolder->appendFrom( *tmp );
837 delete tmp;
838 }
839 }
840 }
841 }
842 }
843 m_timeStamp = newStamp;
844 owait->hide();
845 delete owait;
867} 846}
868 847
869void Launcher::updateTabs() 848void Launcher::updateTabs()
870{ 849{
871 MimeType::updateApplications(); // ### reads all applnks twice 850 MimeType::updateApplications(); // ### reads all applnks twice
851
872 delete rootFolder; 852 delete rootFolder;
873 rootFolder = new AppLnkSet( MimeType::appsFolderName() ); 853 rootFolder = new AppLnkSet( MimeType::appsFolderName() );
874 854
875 loadDocs(); 855 loadDocs();
876 856
877 tabs->initializeCategories(rootFolder, docsFolder, storage->fileSystems()); 857 tabs->initializeCategories(rootFolder, docsFolder, storage->fileSystems());
878} 858}
879 859
880void Launcher::updateDocs() 860void Launcher::updateDocs()
881{ 861{
882 loadDocs(); 862 loadDocs();
883 // tabs->updateDocs(docsFolder,storage->fileSystems()); 863 tabs->updateDocs(docsFolder,storage->fileSystems());
884} 864}
885 865
886void Launcher::viewSelected(const QString& s) 866void Launcher::viewSelected(const QString& s)
887{ 867{
888 setCaption( s + tr(" - Launcher") ); 868 setCaption( s + tr(" - Launcher") );
889} 869}
890 870
891void Launcher::nextView() 871void Launcher::nextView()
892{ 872{
893 tabs->nextTab(); 873 tabs->nextTab();
894} 874}
895 875
896void Launcher::showTab(const QString& id) 876void Launcher::showTab(const QString& id)
897{ 877{
898 tabs->showTab(id); 878 tabs->showTab(id);
899 raise(); 879 raise();
900} 880}
901 881
902void Launcher::select( const AppLnk *appLnk ) 882void Launcher::select( const AppLnk *appLnk )
903{ 883{
904 if ( appLnk->type() == "Folder" ) { // No tr 884 if ( appLnk->type() == "Folder" ) { // No tr
905 // Not supported: flat is simpler for the user 885 // Not supported: flat is simpler for the user
906 } else { 886 } else {
907 if ( appLnk->exec().isNull() ) { 887 if ( appLnk->exec().isNull() ) {
908 QMessageBox::information(this,tr("No application"), 888 QMessageBox::information(this,tr("No application"),
909 tr("<p>No application is defined for this document." 889 tr("<p>No application is defined for this document."
910 "<p>Type is %1.").arg(appLnk->type())); 890 "<p>Type is %1.").arg(appLnk->type()));
911 return; 891 return;
912 } 892 }
913 tabs->setBusy(TRUE); 893 tabs->setBusy(TRUE);
914 emit executing( appLnk ); 894 emit executing( appLnk );
915 appLnk->execute(); 895 appLnk->execute();
916 } 896 }
917} 897}
918 898
919void Launcher::externalSelected(const AppLnk *appLnk) 899void Launcher::externalSelected(const AppLnk *appLnk)
920{ 900{
921 tabs->setBusy(TRUE); 901 tabs->setBusy(TRUE);
922 emit executing( appLnk ); 902 emit executing( appLnk );
923} 903}
924 904
925void Launcher::properties( AppLnk *appLnk ) 905void Launcher::properties( AppLnk *appLnk )
926{ 906{
927 if ( appLnk->type() == "Folder" ) { // No tr 907 if ( appLnk->type() == "Folder" ) { // No tr
928 // Not supported: flat is simpler for the user 908 // Not supported: flat is simpler for the user
929 } else { 909 } else {
930 in_lnk_props = TRUE; 910 in_lnk_props = TRUE;
931 got_lnk_change = FALSE; 911 got_lnk_change = FALSE;
932 LnkProperties prop(appLnk); 912 LnkProperties prop(appLnk);
933 connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); 913 connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *)));
934 prop.showMaximized(); 914 prop.showMaximized();
935 prop.exec(); 915 prop.exec();
936 in_lnk_props = FALSE; 916 in_lnk_props = FALSE;
937 if ( got_lnk_change ) { 917 if ( got_lnk_change ) {
938 updateLink(lnk_change); 918 updateLink(lnk_change);
939 } 919 }
940 } 920 }
941} 921}
942 922
943void Launcher::updateLink(const QString& link) 923void Launcher::updateLink(const QString& link)
944{ 924{
945 bool notify_sm = false; 925 bool notify_sm = false;
946 926
947 if (link.isNull()) { 927 if (link.isNull()) {
948 updateTabs(); 928 updateTabs();
949 notify_sm = true; 929 notify_sm = true;
950 } 930 }
951 else if (link.isEmpty()) { 931 else if (link.isEmpty()) {
952 updateDocs(); 932 updateDocs();
953 } 933 }
954 else { 934 else {
955 tabs->updateLink(link); 935 tabs->updateLink(link);
956 notify_sm = true; 936 notify_sm = true;
957 } 937 }
958 938
959 if ( notify_sm ) 939 if ( notify_sm )
960 QCopEnvelope e ( "QPE/TaskBar", "reloadApps()" ); 940 QCopEnvelope e ( "QPE/TaskBar", "reloadApps()" );
961} 941}
962 942
963void Launcher::systemMessage( const QCString &msg, const QByteArray &data) 943void Launcher::systemMessage( const QCString &msg, const QByteArray &data)
964{ 944{
965 QDataStream stream( data, IO_ReadOnly ); 945 QDataStream stream( data, IO_ReadOnly );
966 if ( msg == "linkChanged(QString)" ) { 946 if ( msg == "linkChanged(QString)" ) {
967 QString link; 947 QString link;
968 stream >> link; 948 stream >> link;
969 if ( in_lnk_props ) { 949 if ( in_lnk_props ) {
970 got_lnk_change = TRUE; 950 got_lnk_change = TRUE;
971 lnk_change = link; 951 lnk_change = link;
972 } else { 952 } else {
973 updateLink(link); 953 updateLink(link);
974 } 954 }
975 } else if ( msg == "busy()" ) { 955 } else if ( msg == "busy()" ) {
976 emit busy(); 956 emit busy();
977 } else if ( msg == "notBusy(QString)" ) { 957 } else if ( msg == "notBusy(QString)" ) {
978 QString app; 958 QString app;
979 stream >> app; 959 stream >> app;
980 tabs->setBusy(FALSE); 960 tabs->setBusy(FALSE);
981 emit notBusy(app); 961 emit notBusy(app);
982 } else if ( msg == "mkdir(QString)" ) { 962 } else if ( msg == "mkdir(QString)" ) {
983 QString dir; 963 QString dir;
984 stream >> dir; 964 stream >> dir;
985 if ( !dir.isEmpty() ) 965 if ( !dir.isEmpty() )
986 mkdir( dir ); 966 mkdir( dir );
987 } else if ( msg == "rdiffGenSig(QString,QString)" ) { 967 } else if ( msg == "rdiffGenSig(QString,QString)" ) {
988 QString baseFile, sigFile; 968 QString baseFile, sigFile;
989 stream >> baseFile >> sigFile; 969 stream >> baseFile >> sigFile;
990 QRsync::generateSignature( baseFile, sigFile ); 970 QRsync::generateSignature( baseFile, sigFile );
991 } else if ( msg == "rdiffGenDiff(QString,QString,QString)" ) { 971 } else if ( msg == "rdiffGenDiff(QString,QString,QString)" ) {
992 QString baseFile, sigFile, deltaFile; 972 QString baseFile, sigFile, deltaFile;
993 stream >> baseFile >> sigFile >> deltaFile; 973 stream >> baseFile >> sigFile >> deltaFile;
994 QRsync::generateDiff( baseFile, sigFile, deltaFile ); 974 QRsync::generateDiff( baseFile, sigFile, deltaFile );
995 } else if ( msg == "rdiffApplyPatch(QString,QString)" ) { 975 } else if ( msg == "rdiffApplyPatch(QString,QString)" ) {
996 QString baseFile, deltaFile; 976 QString baseFile, deltaFile;
997 stream >> baseFile >> deltaFile; 977 stream >> baseFile >> deltaFile;
998 if ( !QFile::exists( baseFile ) ) { 978 if ( !QFile::exists( baseFile ) ) {
999 QFile f( baseFile ); 979 QFile f( baseFile );
1000 f.open( IO_WriteOnly ); 980 f.open( IO_WriteOnly );
1001 f.close(); 981 f.close();
1002 } 982 }
1003 QRsync::applyDiff( baseFile, deltaFile ); 983 QRsync::applyDiff( baseFile, deltaFile );
1004#ifndef QT_NO_COP 984#ifndef QT_NO_COP
1005 QCopEnvelope e( "QPE/Desktop", "patchApplied(QString)" ); 985 QCopEnvelope e( "QPE/Desktop", "patchApplied(QString)" );
1006 e << baseFile; 986 e << baseFile;
1007#endif 987#endif
1008 } else if ( msg == "rdiffCleanup()" ) { 988 } else if ( msg == "rdiffCleanup()" ) {
1009 mkdir( "/tmp/rdiff" ); 989 mkdir( "/tmp/rdiff" );
1010 QDir dir; 990 QDir dir;
1011 dir.setPath( "/tmp/rdiff" ); 991 dir.setPath( "/tmp/rdiff" );
1012 QStringList entries = dir.entryList(); 992 QStringList entries = dir.entryList();
1013 for ( QStringList::Iterator it = entries.begin(); it != entries.end(); ++it ) 993 for ( QStringList::Iterator it = entries.begin(); it != entries.end(); ++it )
1014 dir.remove( *it ); 994 dir.remove( *it );
1015 } else if ( msg == "sendHandshakeInfo()" ) { 995 } else if ( msg == "sendHandshakeInfo()" ) {
1016 QString home = getenv( "HOME" ); 996 QString home = getenv( "HOME" );
1017#ifndef QT_NO_COP 997#ifndef QT_NO_COP
1018 QCopEnvelope e( "QPE/Desktop", "handshakeInfo(QString,bool)" ); 998 QCopEnvelope e( "QPE/Desktop", "handshakeInfo(QString,bool)" );
1019 e << home; 999 e << home;
1020 int locked = (int) Desktop::screenLocked(); 1000 int locked = (int) Desktop::screenLocked();
1021 e << locked; 1001 e << locked;
1022#endif 1002#endif
1023 } else if ( msg == "autoStart(QString)" ) { 1003 } else if ( msg == "autoStart(QString)" ) {
1024 QString appName; 1004 QString appName;
1025 stream >> appName; 1005 stream >> appName;
1026 Config cfg( "autostart" ); 1006 Config cfg( "autostart" );
1027 cfg.setGroup( "AutoStart" ); 1007 cfg.setGroup( "AutoStart" );
1028 if ( appName.compare("clear") == 0){ 1008 if ( appName.compare("clear") == 0){
1029 cfg.writeEntry("Apps", ""); 1009 cfg.writeEntry("Apps", "");
1030 } 1010 }
1031 } else if ( msg == "autoStart(QString,QString)" ) { 1011 } else if ( msg == "autoStart(QString,QString)" ) {
1032 QString modifier, appName; 1012 QString modifier, appName;
1033 stream >> modifier >> appName; 1013 stream >> modifier >> appName;
1034 Config cfg( "autostart" ); 1014 Config cfg( "autostart" );
1035 cfg.setGroup( "AutoStart" ); 1015 cfg.setGroup( "AutoStart" );
1036 if ( modifier.compare("add") == 0 ){ 1016 if ( modifier.compare("add") == 0 ){
1037 // only add if appname is entered 1017 // only add if appname is entered
1038 if (!appName.isEmpty()) { 1018 if (!appName.isEmpty()) {
1039 cfg.writeEntry("Apps", appName); 1019 cfg.writeEntry("Apps", appName);
1040 } 1020 }
1041 } else if (modifier.compare("remove") == 0 ) { 1021 } else if (modifier.compare("remove") == 0 ) {
1042 // need to change for multiple entries 1022 // need to change for multiple entries
1043 // actually remove is right now simular to clear, but in future there 1023 // actually remove is right now simular to clear, but in future there
1044 // should be multiple apps in autostart possible. 1024 // should be multiple apps in autostart possible.
1045 QString checkName; 1025 QString checkName;
1046 checkName = cfg.readEntry("Apps", ""); 1026 checkName = cfg.readEntry("Apps", "");
1047 if (checkName == appName) { 1027 if (checkName == appName) {
1048 cfg.writeEntry("Apps", ""); 1028 cfg.writeEntry("Apps", "");
1049 } 1029 }
1050 } 1030 }
1051 // case the autostart feature should be delayed 1031 // case the autostart feature should be delayed
1052 } else if ( msg == "autoStart(QString,QString,QString)") { 1032 } else if ( msg == "autoStart(QString,QString,QString)") {
1053 QString modifier, appName, delay; 1033 QString modifier, appName, delay;
1054 stream >> modifier >> appName >> delay; 1034 stream >> modifier >> appName >> delay;
1055 Config cfg( "autostart" ); 1035 Config cfg( "autostart" );
1056 cfg.setGroup( "AutoStart" ); 1036 cfg.setGroup( "AutoStart" );
1057 if ( modifier.compare("add") == 0 ){ 1037 if ( modifier.compare("add") == 0 ){
1058 // only add it appname is entered 1038 // only add it appname is entered
1059 if (!appName.isEmpty()) { 1039 if (!appName.isEmpty()) {
1060 cfg.writeEntry("Apps", appName); 1040 cfg.writeEntry("Apps", appName);
1061 cfg.writeEntry("Delay", delay); 1041 cfg.writeEntry("Delay", delay);
1062 } 1042 }
1063 } else { 1043 } else {
1064 } 1044 }
1065 } 1045 }
1066 /* 1046 /*
1067 * QtopiaDesktop relies on the major number 1047 * QtopiaDesktop relies on the major number
1068 * to start with 1. We're at 0.9 1048 * to start with 1. We're at 0.9
1069 * so wee need to fake at least 1.4 to be able 1049 * so wee need to fake at least 1.4 to be able
1070 * to sync with QtopiaDesktop1.6 1050 * to sync with QtopiaDesktop1.6
1071 */ 1051 */
1072 else if ( msg == "sendVersionInfo()" ) { 1052 else if ( msg == "sendVersionInfo()" ) {
1073 QCopEnvelope e( "QPE/Desktop", "versionInfo(QString)" ); 1053 QCopEnvelope e( "QPE/Desktop", "versionInfo(QString)" );
1074 QString v2 = QString::fromLatin1("1.4"); 1054 QString v2 = QString::fromLatin1("1.4");
1075 e << v2; 1055 e << v2;
1076 //qDebug("version %s\n", line.latin1()); 1056 //qDebug("version %s\n", line.latin1());
1077 } else if ( msg == "sendCardInfo()" ) { 1057 } else if ( msg == "sendCardInfo()" ) {
1078#ifndef QT_NO_COP 1058#ifndef QT_NO_COP
1079 QCopEnvelope e( "QPE/Desktop", "cardInfo(QString)" ); 1059 QCopEnvelope e( "QPE/Desktop", "cardInfo(QString)" );
1080#endif 1060#endif
1081 const QList<FileSystem> &fs = storage->fileSystems(); 1061 const QList<FileSystem> &fs = storage->fileSystems();
1082 QListIterator<FileSystem> it ( fs ); 1062 QListIterator<FileSystem> it ( fs );
1083 QString s; 1063 QString s;
1084 QString homeDir = getenv("HOME"); 1064 QString homeDir = getenv("HOME");
1085 QString hardDiskHome, hardDiskHomePath; 1065 QString hardDiskHome, hardDiskHomePath;
1086 for ( ; it.current(); ++it ) { 1066 for ( ; it.current(); ++it ) {
1087 int k4 = (*it)->blockSize()/256; 1067 int k4 = (*it)->blockSize()/256;
1088 if ( (*it)->isRemovable() || (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs") { 1068 if ( (*it)->isRemovable() || (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs") {
1089 s += (*it)->name() + "=" + (*it)->path() + "/Documents " 1069 s += (*it)->name() + "=" + (*it)->path() + "/Documents "
1090 + QString::number( (*it)->availBlocks() * k4/4 ) 1070 + QString::number( (*it)->availBlocks() * k4/4 )
1091 + "K " + (*it)->options() + ";"; 1071 + "K " + (*it)->options() + ";";
1092 } else if ( (*it)->disk() == "/dev/mtdblock1" || 1072 } else if ( (*it)->disk() == "/dev/mtdblock1" ||
1093 (*it)->disk() == "/dev/mtdblock/1" ) { 1073 (*it)->disk() == "/dev/mtdblock/1" ) {
1094 s += (*it)->name() + "=" + homeDir + "/Documents " 1074 s += (*it)->name() + "=" + homeDir + "/Documents "
1095 + QString::number( (*it)->availBlocks() * k4/4 ) 1075 + QString::number( (*it)->availBlocks() * k4/4 )
1096 + "K " + (*it)->options() + ";"; 1076 + "K " + (*it)->options() + ";";
1097 } else if ( (*it)->name().contains( "Hard Disk") && 1077 } else if ( (*it)->name().contains( "Hard Disk") &&
1098 homeDir.contains( (*it)->path() ) && 1078 homeDir.contains( (*it)->path() ) &&
1099 (*it)->path().length() > hardDiskHomePath.length() ) { 1079 (*it)->path().length() > hardDiskHomePath.length() ) {
1100 hardDiskHomePath = (*it)->path(); 1080 hardDiskHomePath = (*it)->path();
1101 hardDiskHome = 1081 hardDiskHome =
1102 (*it)->name() + "=" + homeDir + "/Documents " 1082 (*it)->name() + "=" + homeDir + "/Documents "
1103 + QString::number( (*it)->availBlocks() * k4/4 ) 1083 + QString::number( (*it)->availBlocks() * k4/4 )
1104 + "K " + (*it)->options() + ";"; 1084 + "K " + (*it)->options() + ";";
1105 } 1085 }
1106 } 1086 }
1107 if ( !hardDiskHome.isEmpty() ) 1087 if ( !hardDiskHome.isEmpty() )
1108 s += hardDiskHome; 1088 s += hardDiskHome;
1109 1089
1110#ifndef QT_NO_COP 1090#ifndef QT_NO_COP
1111 e << s; 1091 e << s;
1112#endif 1092#endif
1113 } else if ( msg == "sendSyncDate(QString)" ) { 1093 } else if ( msg == "sendSyncDate(QString)" ) {
1114 QString app; 1094 QString app;
1115 stream >> app; 1095 stream >> app;
1116 Config cfg( "qpe" ); 1096 Config cfg( "qpe" );
1117 cfg.setGroup("SyncDate"); 1097 cfg.setGroup("SyncDate");
1118#ifndef QT_NO_COP 1098#ifndef QT_NO_COP
1119 QCopEnvelope e( "QPE/Desktop", "syncDate(QString,QString)" ); 1099 QCopEnvelope e( "QPE/Desktop", "syncDate(QString,QString)" );
1120 e << app << cfg.readEntry( app ); 1100 e << app << cfg.readEntry( app );
1121#endif 1101#endif
1122 //qDebug("QPE/System sendSyncDate for %s: response %s", app.latin1(), 1102 //qDebug("QPE/System sendSyncDate for %s: response %s", app.latin1(),
1123 //cfg.readEntry( app ).latin1() ); 1103 //cfg.readEntry( app ).latin1() );
1124 } else if ( msg == "setSyncDate(QString,QString)" ) { 1104 } else if ( msg == "setSyncDate(QString,QString)" ) {
1125 QString app, date; 1105 QString app, date;
1126 stream >> app >> date; 1106 stream >> app >> date;
1127 Config cfg( "qpe" ); 1107 Config cfg( "qpe" );
1128 cfg.setGroup("SyncDate"); 1108 cfg.setGroup("SyncDate");
1129 cfg.writeEntry( app, date ); 1109 cfg.writeEntry( app, date );
1130 //qDebug("setSyncDate(QString,QString) %s %s", app.latin1(), date.latin1()); 1110 //qDebug("setSyncDate(QString,QString) %s %s", app.latin1(), date.latin1());
1131 } else if ( msg == "startSync(QString)" ) { 1111 } else if ( msg == "startSync(QString)" ) {
1132 QString what; 1112 QString what;
1133 stream >> what; 1113 stream >> what;
1134 delete syncDialog; syncDialog = 0; 1114 delete syncDialog; syncDialog = 0;
1135 syncDialog = new SyncDialog( this, "syncProgress", FALSE, 1115 syncDialog = new SyncDialog( this, "syncProgress", FALSE,
1136 WStyle_Tool | WStyle_Customize | 1116 WStyle_Tool | WStyle_Customize |
1137 Qt::WStyle_StaysOnTop ); 1117 Qt::WStyle_StaysOnTop );
1138 syncDialog->showMaximized(); 1118 syncDialog->showMaximized();
1139 syncDialog->whatLabel->setText( "<b>" + what + "</b>" ); 1119 syncDialog->whatLabel->setText( "<b>" + what + "</b>" );
1140 connect( syncDialog->buttonCancel, SIGNAL( clicked() ), 1120 connect( syncDialog->buttonCancel, SIGNAL( clicked() ),
1141 SLOT( cancelSync() ) ); 1121 SLOT( cancelSync() ) );
1142 } else if ( msg == "stopSync()") { 1122 } else if ( msg == "stopSync()") {
1143 delete syncDialog; syncDialog = 0; 1123 delete syncDialog; syncDialog = 0;
1144 } else if ( msg == "getAllDocLinks()" ) { 1124 } else if ( msg == "getAllDocLinks()" ) {
1145 loadDocs(); 1125 loadDocs();
1146 1126
1147 // directly show updated docs in document tab 1127 // directly show updated docs in document tab
1148 updateDocs(); 1128 updateDocs();
1149 1129
1150 QString contents; 1130 QString contents;
1151 1131
1152// Categories cats; 1132 //Categories cats;
1153 for ( QListIterator<DocLnk> it( docsFolder->children() ); it.current(); ++it ) { 1133 for ( QListIterator<DocLnk> it( docsFolder->children() ); it.current(); ++it ) {
1154 DocLnk *doc = it.current(); 1134 DocLnk *doc = it.current();
1155 QFileInfo fi( doc->file() ); 1135 QFileInfo fi( doc->file() );
1156 if ( !fi.exists() ) 1136 if ( !fi.exists() )
1157 continue; 1137 continue;
1158 1138
1159 bool fake = !doc->linkFileKnown(); 1139 bool fake = !doc->linkFileKnown();
1160 if ( !fake ) { 1140 if ( !fake ) {
1161 QFile f( doc->linkFile() ); 1141 QFile f( doc->linkFile() );
1162 if ( f.open( IO_ReadOnly ) ) { 1142 if ( f.open( IO_ReadOnly ) ) {
1163 QTextStream ts( &f ); 1143 QTextStream ts( &f );
1164 ts.setEncoding( QTextStream::UnicodeUTF8 ); 1144 ts.setEncoding( QTextStream::UnicodeUTF8 );
1165 contents += ts.read(); 1145 contents += ts.read();
1166 f.close(); 1146 f.close();
1167 } else 1147 } else
1168 fake = TRUE; 1148 fake = TRUE;
1169 } 1149 }
1170 if (fake) { 1150 if (fake) {
1171 contents += "[Desktop Entry]\n"; 1151 contents += "[Desktop Entry]\n";
1172 contents += "Categories = " + // No tr 1152 contents += "Categories = " + // No tr
1173// cats.labels("Document View",doc->categories()).join(";") + "\n"; // No tr 1153 // cats.labels("Document View",doc->categories()).join(";") + "\n"; // No tr
1174 Qtopia::Record::idsToString( doc->categories() ) + "\n"; 1154 Qtopia::Record::idsToString( doc->categories() ) + "\n";
1175 contents += "Name = "+doc->name()+"\n"; // No tr 1155 contents += "Name = "+doc->name()+"\n"; // No tr
1176 contents += "Type = "+doc->type()+"\n"; // No tr 1156 contents += "Type = "+doc->type()+"\n"; // No tr
1177 } 1157 }
1178 contents += "File = "+doc->file()+"\n"; // No tr // (resolves path) 1158 contents += "File = "+doc->file()+"\n"; // No tr // (resolves path)
1179 contents += QString("Size = %1\n").arg( fi.size() ); // No tr 1159 contents += QString("Size = %1\n").arg( fi.size() ); // No tr
1180 } 1160 }
1181 1161
1182 //qDebug( "sending length %d", contents.length() ); 1162 //qDebug( "sending length %d", contents.length() );
1183#ifndef QT_NO_COP 1163#ifndef QT_NO_COP
1184 QCopEnvelope e( "QPE/Desktop", "docLinks(QString)" ); 1164 QCopEnvelope e( "QPE/Desktop", "docLinks(QString)" );
1185 e << contents; 1165 e << contents;
1186#endif 1166#endif
1187 1167
1188 //qDebug( "================ \n\n%s\n\n===============", 1168 //qDebug( "================ \n\n%s\n\n===============",
1189 //contents.latin1() ); 1169 //contents.latin1() );
1190 1170
1191 delete docsFolder; 1171 delete docsFolder;
1192 docsFolder = 0; 1172 docsFolder = 0;
1193#ifdef QWS 1173#ifdef QWS
1194 } else if ( msg == "setMouseProto(QString)" ) { 1174 } else if ( msg == "setMouseProto(QString)" ) {
1195 QString mice; 1175 QString mice;
1196 stream >> mice; 1176 stream >> mice;
1197 setenv("QWS_MOUSE_PROTO",mice.latin1(),1); 1177 setenv("QWS_MOUSE_PROTO",mice.latin1(),1);
1198 qwsServer->openMouse(); 1178 qwsServer->openMouse();
1199 } else if ( msg == "setKeyboard(QString)" ) { 1179 } else if ( msg == "setKeyboard(QString)" ) {
1200 QString kb; 1180 QString kb;
1201 stream >> kb; 1181 stream >> kb;
1202 setenv("QWS_KEYBOARD",kb.latin1(),1); 1182 setenv("QWS_KEYBOARD",kb.latin1(),1);
1203 qwsServer->openKeyboard(); 1183 qwsServer->openKeyboard();
1204#endif 1184#endif
1205 } 1185 }
1206} 1186}
1207 1187
1208void Launcher::cancelSync() 1188void Launcher::cancelSync()
1209{ 1189{
1210#ifndef QT_NO_COP 1190#ifndef QT_NO_COP
1211 QCopEnvelope e( "QPE/Desktop", "cancelSync()" ); 1191 QCopEnvelope e( "QPE/Desktop", "cancelSync()" );
1212#endif 1192#endif
1213} 1193}
1214 1194
1215void Launcher::launcherMessage( const QCString &msg, const QByteArray &data) 1195void Launcher::launcherMessage( const QCString &msg, const QByteArray &data)
1216{ 1196{
1217 QDataStream stream( data, IO_ReadOnly ); 1197 QDataStream stream( data, IO_ReadOnly );
1218 if ( msg == "setTabView(QString,int)" ) { 1198 if ( msg == "setTabView(QString,int)" ) {
1219 QString id; 1199 QString id;
1220 stream >> id; 1200 stream >> id;
1221 int mode; 1201 int mode;
1222 stream >> mode; 1202 stream >> mode;
1223 if ( tabs->view(id) ) 1203 if ( tabs->view(id) )
1224 tabs->view(id)->setViewMode( (LauncherView::ViewMode)mode ); 1204 tabs->view(id)->setViewMode( (LauncherView::ViewMode)mode );
1225 } else if ( msg == "setTabBackground(QString,int,QString)" ) { 1205 } else if ( msg == "setTabBackground(QString,int,QString)" ) {
1226 QString id; 1206 QString id;
1227 stream >> id; 1207 stream >> id;
1228 int mode; 1208 int mode;
1229 stream >> mode; 1209 stream >> mode;
1230 QString pixmapOrColor; 1210 QString pixmapOrColor;
1231 stream >> pixmapOrColor; 1211 stream >> pixmapOrColor;
1232 if ( tabs->view(id) ) 1212 if ( tabs->view(id) )
1233 tabs->view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); 1213 tabs->view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor );
1234 } else if ( msg == "setTextColor(QString,QString)" ) { 1214 } else if ( msg == "setTextColor(QString,QString)" ) {
1235 QString id; 1215 QString id;
1236 stream >> id; 1216 stream >> id;
1237 QString color; 1217 QString color;
1238 stream >> color; 1218 stream >> color;
1239 if ( tabs->view(id) ) 1219 if ( tabs->view(id) )
1240 tabs->view(id)->setTextColor( QColor(color) ); 1220 tabs->view(id)->setTextColor( QColor(color) );
1241 } else if ( msg == "setFont(QString,QString,int,int,int)" ) { 1221 } else if ( msg == "setFont(QString,QString,int,int,int)" ) {
1242 QString id; 1222 QString id;
1243 stream >> id; 1223 stream >> id;
1244 QString fam; 1224 QString fam;
1245 stream >> fam; 1225 stream >> fam;
1246 int size; 1226 int size;
1247 stream >> size; 1227 stream >> size;
1248 int weight; 1228 int weight;
1249 stream >> weight; 1229 stream >> weight;
1250 int italic; 1230 int italic;
1251 stream >> italic; 1231 stream >> italic;
1252 if ( tabs->view(id) ) 1232 if ( tabs->view(id) )
1253 if ( !fam. isEmpty ( )) 1233 if ( !fam. isEmpty ( ))
1254 tabs->view(id)->setViewFont( QFont(fam, size, weight, italic!=0) ); 1234 tabs->view(id)->setViewFont( QFont(fam, size, weight, italic!=0) );
1255 else 1235 else
1256 tabs->view(id)->unsetViewFont(); 1236 tabs->view(id)->unsetViewFont();
1257 qDebug( "setFont: %s, %d, %d, %d", fam.latin1(), size, weight, italic ); 1237 qDebug( "setFont: %s, %d, %d, %d", fam.latin1(), size, weight, italic );
1258 } 1238 }
1259 else if ( msg == "setBusyIndicatorType(QString)" ) { 1239 else if ( msg == "setBusyIndicatorType(QString)" ) {
1260 QString type; 1240 QString type;
1261 stream >> type; 1241 stream >> type;
1262 tabs->setBusyIndicatorType(type); 1242 tabs->setBusyIndicatorType(type);
1263 } 1243 }
1264 else if ( msg == "home()" ) { 1244 else if ( msg == "home()" ) {
1265 if ( isVisibleWindow( winId ( ))) 1245 if ( isVisibleWindow( winId ( )))
1266 nextView ( ); 1246 nextView ( );
1267 else 1247 else
1268 raise ( ); 1248 raise ( );
1269 1249
1270 } 1250 }
1271} 1251}
1272 1252
1273void Launcher::storageChanged() 1253void Launcher::storageChanged()
1274{ 1254{
1275 if ( in_lnk_props ) { 1255 if ( in_lnk_props ) {
1276 got_lnk_change = TRUE; 1256 got_lnk_change = TRUE;
1277 lnk_change = QString::null; 1257 lnk_change = QString::null;
1278 } else { 1258 } else {
1279 updateLink( QString::null ); 1259 updateLink( QString::null );
1280 } 1260 }
1281} 1261}
1282 1262
1283 1263
1284bool Launcher::mkdir(const QString &localPath) 1264bool Launcher::mkdir(const QString &localPath)
1285{ 1265{
1286 QDir fullDir(localPath); 1266 QDir fullDir(localPath);
1287 if (fullDir.exists()) 1267 if (fullDir.exists())
1288 return true; 1268 return true;
1289 1269
1290 // at this point the directory doesn't exist 1270 // at this point the directory doesn't exist
1291 // go through the directory tree and start creating the direcotories 1271 // go through the directory tree and start creating the direcotories
1292 // that don't exist; if we can't create the directories, return false 1272 // that don't exist; if we can't create the directories, return false
1293 1273
1294 QString dirSeps = "/"; 1274 QString dirSeps = "/";
1295 int dirIndex = localPath.find(dirSeps); 1275 int dirIndex = localPath.find(dirSeps);
1296 QString checkedPath; 1276 QString checkedPath;
1297 1277
1298 // didn't find any seps; weird, use the cur dir instead 1278 // didn't find any seps; weird, use the cur dir instead
1299 if (dirIndex == -1) { 1279 if (dirIndex == -1) {
1300 //qDebug("No seperators found in path %s", localPath.latin1()); 1280 //qDebug("No seperators found in path %s", localPath.latin1());
1301 checkedPath = QDir::currentDirPath(); 1281 checkedPath = QDir::currentDirPath();
1302 } 1282 }
1303 1283
1304 while (checkedPath != localPath) { 1284 while (checkedPath != localPath) {
1305 // no more seperators found, use the local path 1285 // no more seperators found, use the local path
1306 if (dirIndex == -1) 1286 if (dirIndex == -1)
1307 checkedPath = localPath; 1287 checkedPath = localPath;
1308 else { 1288 else {
1309 // the next directory to check 1289 // the next directory to check
1310 checkedPath = localPath.left(dirIndex) + "/"; 1290 checkedPath = localPath.left(dirIndex) + "/";
1311 // advance the iterator; the next dir seperator 1291 // advance the iterator; the next dir seperator
1312 dirIndex = localPath.find(dirSeps, dirIndex+1); 1292 dirIndex = localPath.find(dirSeps, dirIndex+1);
1313 } 1293 }
1314 1294
1315 QDir checkDir(checkedPath); 1295 QDir checkDir(checkedPath);
1316 if (!checkDir.exists()) { 1296 if (!checkDir.exists()) {
1317 //qDebug("mkdir making dir %s", checkedPath.latin1()); 1297 //qDebug("mkdir making dir %s", checkedPath.latin1());
1318 1298
1319 if (!checkDir.mkdir(checkedPath)) { 1299 if (!checkDir.mkdir(checkedPath)) {
1320 qDebug("Unable to make directory %s", checkedPath.latin1()); 1300 qDebug("Unable to make directory %s", checkedPath.latin1());
1321 return FALSE; 1301 return FALSE;
1322 } 1302 }
1323 } 1303 }
1324 1304
1325 } 1305 }
1326 return TRUE; 1306 return TRUE;
1327} 1307}
1328 1308
1329void Launcher::preloadApps() 1309void Launcher::preloadApps()
1330{ 1310{
1331 Config cfg("Launcher"); 1311 Config cfg("Launcher");
1332 cfg.setGroup("Preload"); 1312 cfg.setGroup("Preload");
1333 QStringList apps = cfg.readListEntry("Apps",','); 1313 QStringList apps = cfg.readListEntry("Apps",',');
1334 for (QStringList::ConstIterator it=apps.begin(); it!=apps.end(); ++it) { 1314 for (QStringList::ConstIterator it=apps.begin(); it!=apps.end(); ++it) {
1335#ifndef QT_NO_COP 1315#ifndef QT_NO_COP
1336 QCopEnvelope e("QPE/Application/"+(*it).local8Bit(), "enablePreload()"); 1316 QCopEnvelope e("QPE/Application/"+(*it).local8Bit(), "enablePreload()");
1337#endif 1317#endif
1338 } 1318 }
1339} 1319}
1340
1341DocumentTab::DocumentTab( QWidget *parent, int mode, int selector, const QString &dirName, const QString &fileName)
1342 : OFileSelector(parent,mode,selector,dirName,fileName)
1343{
1344 setYesCancelVisible(false);
1345 setToolbarVisible(false);
1346 setPermissionBarVisible(false);
1347 setLineEditVisible(false) ;
1348 //setChooserVisible( bool chooser );
1349
1350}
1351
1352DocumentTab::~DocumentTab() {
1353
1354}
1355
diff --git a/core/obex/obex.cc b/core/obex/obex.cc
index 595fed9..2a306de 100644
--- a/core/obex/obex.cc
+++ b/core/obex/obex.cc
@@ -1,212 +1,203 @@
1 1
2#include <qapplication.h> 2#include <qapplication.h>
3#include <qfile.h> 3#include <qfile.h>
4#include <qfileinfo.h> 4#include <qfileinfo.h>
5#include <qtextcodec.h> 5#include <qtextcodec.h>
6 6
7#include <qpe/qcopenvelope_qws.h> 7#include <qpe/qcopenvelope_qws.h>
8 8
9#include <opie/oprocess.h> 9#include <opie/oprocess.h>
10#include "obex.h" 10#include "obex.h"
11 11
12using namespace OpieObex; 12using namespace OpieObex;
13 13
14/* TRANSLATOR OpieObex::Obex */
15
14Obex::Obex( QObject *parent, const char* name ) 16Obex::Obex( QObject *parent, const char* name )
15 : QObject(parent, name ) 17 : QObject(parent, name )
16{ 18{
17 m_rec = 0; 19 m_rec = 0;
18 m_send=0; 20 m_send=0;
19 m_count = 0; 21 m_count = 0;
20 m_receive = false; 22 m_receive = false;
21 connect( this, SIGNAL(error(int) ), // for recovering to receive 23 connect( this, SIGNAL(error(int) ), // for recovering to receive
22 SLOT(slotError() ) ); 24 SLOT(slotError() ) );
23 connect( this, SIGNAL(sent(bool) ), 25 connect( this, SIGNAL(sent(bool) ),
24 SLOT(slotError() ) ); 26 SLOT(slotError() ) );
25}; 27};
26Obex::~Obex() { 28Obex::~Obex() {
27 delete m_rec; 29 delete m_rec;
28 delete m_send; 30 delete m_send;
29} 31}
30void Obex::receive() { 32void Obex::receive() {
31 m_receive = true; 33 m_receive = true;
32 m_outp = QString::null; 34 m_outp = QString::null;
33 qWarning("Receive" ); 35 qWarning("Receive" );
34 m_rec = new OProcess(); 36 m_rec = new OProcess();
35 *m_rec << "irobex_palm3"; 37 *m_rec << "irobex_palm3";
36 // connect to the necessary slots 38 // connect to the necessary slots
37 connect(m_rec, SIGNAL(processExited(OProcess*) ), 39 connect(m_rec, SIGNAL(processExited(OProcess*) ),
38 this, SLOT(slotExited(OProcess*) ) ); 40 this, SLOT(slotExited(OProcess*) ) );
39 41
40 connect(m_rec, SIGNAL(receivedStdout(OProcess*, char*, int ) ), 42 connect(m_rec, SIGNAL(receivedStdout(OProcess*, char*, int ) ),
41 this, SLOT(slotStdOut(OProcess*, char*, int) ) ); 43 this, SLOT(slotStdOut(OProcess*, char*, int) ) );
42 44
43 if(!m_rec->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { 45 if(!m_rec->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
44 qWarning("could not start :("); 46 qWarning("could not start :(");
45 emit done( false ); 47 emit done( false );
46 delete m_rec; 48 delete m_rec;
47 m_rec = 0; 49 m_rec = 0;
48 } 50 }
49// emit currentTry(m_count ); 51// emit currentTry(m_count );
50 52
51} 53}
52void Obex::send( const QString& fileName) { // if currently receiving stop it send receive 54void Obex::send( const QString& fileName) { // if currently receiving stop it send receive
53 m_count = 0; 55 m_count = 0;
54 m_file = fileName; 56 m_file = fileName;
55 qWarning("send %s", fileName.latin1() ); 57 qWarning("send %s", fileName.latin1() );
56 if (m_rec != 0 ) { 58 if (m_rec != 0 ) {
57 qWarning("running"); 59 qWarning("running");
58 if (m_rec->isRunning() ) { 60 if (m_rec->isRunning() ) {
59 emit error(-1 ); 61 emit error(-1 );
60 qWarning("is running"); 62 qWarning("is running");
61 delete m_rec; 63 delete m_rec;
62 m_rec = 0; 64 m_rec = 0;
63 65
64 }else{ 66 }else{
65 qWarning("is not running"); 67 qWarning("is not running");
66 emit error( -1 ); // we did not delete yet but it's not running slotExited is pending 68 emit error( -1 ); // we did not delete yet but it's not running slotExited is pending
67 return; 69 return;
68 } 70 }
69 } 71 }
70 sendNow(); 72 sendNow();
71} 73}
72void Obex::sendNow(){ 74void Obex::sendNow(){
73 qWarning("sendNow"); 75 qWarning("sendNow");
74 if ( m_count >= 25 ) { // could not send 76 if ( m_count >= 25 ) { // could not send
75 emit error(-1 ); 77 emit error(-1 );
76 emit sent(false); 78 emit sent(false);
77 return; 79 return;
78 } 80 }
79 // OProcess inititialisation 81 // OProcess inititialisation
80 m_send = new OProcess(); 82 m_send = new OProcess();
81 *m_send << "irobex_palm3"; 83 *m_send << "irobex_palm3";
82 *m_send << QFile::encodeName(m_file); 84 *m_send << QFile::encodeName(m_file);
83 85
84 // connect to slots Exited and and StdOut 86 // connect to slots Exited and and StdOut
85 connect(m_send, SIGNAL(processExited(OProcess*) ), 87 connect(m_send, SIGNAL(processExited(OProcess*) ),
86 this, SLOT(slotExited(OProcess*)) ); 88 this, SLOT(slotExited(OProcess*)) );
87 connect(m_send, SIGNAL(receivedStdout(OProcess*, char*, int )), 89 connect(m_send, SIGNAL(receivedStdout(OProcess*, char*, int )),
88 this, SLOT(slotStdOut(OProcess*, char*, int) ) ); 90 this, SLOT(slotStdOut(OProcess*, char*, int) ) );
89 91
90 // now start it 92 // now start it
91 if (!m_send->start(/*OProcess::NotifyOnExit, OProcess::AllOutput*/ ) ) { 93 if (!m_send->start(/*OProcess::NotifyOnExit, OProcess::AllOutput*/ ) ) {
92 qWarning("could not send" ); 94 qWarning("could not send" );
93 m_count = 25; 95 m_count = 25;
94 emit error(-1 ); 96 emit error(-1 );
95 delete m_send; 97 delete m_send;
96 m_send=0; 98 m_send=0;
97 } 99 }
98 // end 100 // end
99 m_count++; 101 m_count++;
100 emit currentTry( m_count ); 102 emit currentTry( m_count );
101} 103}
102 104
103void Obex::slotExited(OProcess* proc ){ 105void Obex::slotExited(OProcess* proc ){
104 if (proc == m_rec ) { // receive process 106 if (proc == m_rec ) { // receive process
105 received(); 107 received();
106 }else if ( proc == m_send ) { 108 }else if ( proc == m_send ) {
107 sendEnd(); 109 sendEnd();
108 } 110 }
109} 111}
110void Obex::slotStdOut(OProcess* proc, char* buf, int len){ 112void Obex::slotStdOut(OProcess* proc, char* buf, int len){
111 if ( proc == m_rec ) { // only receive 113 if ( proc == m_rec ) { // only receive
112 for (int i = 0; i < len; i++ ) { 114 QByteArray ar( len );
113 printf("%c", buf[i] );
114 }
115 printf("\n");
116 QByteArray ar( len );
117 memcpy( ar.data(), buf, len ); 115 memcpy( ar.data(), buf, len );
118 qWarning("parsed: %s", ar.data() ); 116 qWarning("parsed: %s", ar.data() );
119 m_outp.append( ar ); 117 m_outp.append( ar );
120 } 118 }
121} 119}
122 120
123void Obex::received() { 121void Obex::received() {
124 if (m_rec->normalExit() ) { 122 if (m_rec->normalExit() ) {
125 if ( m_rec->exitStatus() == 0 ) { // we got one 123 if ( m_rec->exitStatus() == 0 ) { // we got one
126 QString filename = parseOut(); 124 QString filename = parseOut();
127 qWarning("ACHTUNG %s", filename.latin1() ); 125 qWarning("ACHTUNG %s", filename.latin1() );
128 if (filename.contains( 'ö' ) || filename.contains( 'ä' ) || filename.contains('ü' ) ) {
129 qWarning("renaming!!!!");
130 QFileInfo inf( filename );
131 QString newName = "/tmp/opie-obex." + inf.extension();
132 ::rename( QFile::encodeName( filename ).data(), newName );
133 qWarning("name is %s", QFile::encodeName( filename ).data() );
134 }
135 emit receivedFile( filename ); 126 emit receivedFile( filename );
136 } 127 }
137 }else{ 128 }else{
138 emit done(false); 129 emit done(false);
139 }; 130 };
140 delete m_rec; 131 delete m_rec;
141 m_rec = 0; 132 m_rec = 0;
142 receive(); 133 receive();
143} 134}
144 135
145void Obex::sendEnd() { 136void Obex::sendEnd() {
146 if (m_send->normalExit() ) { 137 if (m_send->normalExit() ) {
147 if ( m_send->exitStatus() == 0 ) { 138 if ( m_send->exitStatus() == 0 ) {
148 delete m_send; 139 delete m_send;
149 m_send=0; 140 m_send=0;
150 qWarning("done" ); 141 qWarning("done" );
151 emit sent(true); 142 emit sent(true);
152 }else if (m_send->exitStatus() == 255 ) { // it failed maybe the other side wasn't ready 143 }else if (m_send->exitStatus() == 255 ) { // it failed maybe the other side wasn't ready
153 // let's try it again 144 // let's try it again
154 delete m_send; 145 delete m_send;
155 m_send = 0; 146 m_send = 0;
156 qWarning("try sending again" ); 147 qWarning("try sending again" );
157 sendNow(); 148 sendNow();
158 } 149 }
159 }else { 150 }else {
160 emit error( -1 ); 151 emit error( -1 );
161 delete m_send; 152 delete m_send;
162 m_send = 0; 153 m_send = 0;
163 } 154 }
164} 155}
165QString Obex::parseOut( ){ 156QString Obex::parseOut( ){
166 QString path; 157 QString path;
167 QStringList list = QStringList::split("\n", m_outp); 158 QStringList list = QStringList::split("\n", m_outp);
168 QStringList::Iterator it; 159 QStringList::Iterator it;
169 for (it = list.begin(); it != list.end(); ++it ) { 160 for (it = list.begin(); it != list.end(); ++it ) {
170 if ( (*it).startsWith("Wrote" ) ) { 161 if ( (*it).startsWith("Wrote" ) ) {
171 int pos = (*it).findRev('(' ); 162 int pos = (*it).findRev('(' );
172 if ( pos > 0 ) { 163 if ( pos > 0 ) {
173 qWarning( "%d %s", pos, (*it).mid(6 ).latin1() ) ; 164 qWarning( "%d %s", pos, (*it).mid(6 ).latin1() ) ;
174 qWarning("%d %d", (*it).length(), (*it).length()-pos ); 165 qWarning("%d %d", (*it).length(), (*it).length()-pos );
175 166
176 path = (*it).remove( pos, (*it).length() - pos ); 167 path = (*it).remove( pos, (*it).length() - pos );
177 qWarning("%s", path.latin1() ); 168 qWarning("%s", path.latin1() );
178 path = path.mid(6 ); 169 path = path.mid(6 );
179 path = path.stripWhiteSpace(); 170 path = path.stripWhiteSpace();
180 qWarning("path %s", path.latin1() ); 171 qWarning("path %s", path.latin1() );
181 } 172 }
182 } 173 }
183 } 174 }
184 return path; 175 return path;
185} 176}
186/** 177/**
187 * when sent is done slotError is called we will start receive again 178 * when sent is done slotError is called we will start receive again
188 */ 179 */
189void Obex::slotError() { 180void Obex::slotError() {
190 qWarning("slotError"); 181 qWarning("slotError");
191 if ( m_receive ) 182 if ( m_receive )
192 receive(); 183 receive();
193}; 184};
194void Obex::setReceiveEnabled( bool receive ) { 185void Obex::setReceiveEnabled( bool receive ) {
195 if ( !receive ) { // 186 if ( !receive ) { //
196 m_receive = false; 187 m_receive = false;
197 shutDownReceive(); 188 shutDownReceive();
198 } 189 }
199} 190}
200 191
201void Obex::shutDownReceive() { 192void Obex::shutDownReceive() {
202 if (m_rec != 0 ) { 193 if (m_rec != 0 ) {
203 qWarning("running"); 194 qWarning("running");
204 if (m_rec->isRunning() ) { 195 if (m_rec->isRunning() ) {
205 emit error(-1 ); 196 emit error(-1 );
206 qWarning("is running"); 197 qWarning("is running");
207 delete m_rec; 198 delete m_rec;
208 m_rec = 0; 199 m_rec = 0;
209 } 200 }
210 } 201 }
211 202
212} 203}
diff --git a/core/obex/obexhandler.cpp b/core/obex/obexhandler.cpp
index 6509d12..5aaf63c 100644
--- a/core/obex/obexhandler.cpp
+++ b/core/obex/obexhandler.cpp
@@ -1,65 +1,67 @@
1#include <qcopchannel_qws.h> 1#include <qcopchannel_qws.h>
2 2
3#include <qpe/qcopenvelope_qws.h> 3#include <qpe/qcopenvelope_qws.h>
4 4
5#include "obexsend.h" 5#include "obexsend.h"
6#include "receiver.h" 6#include "receiver.h"
7#include "obexhandler.h" 7#include "obexhandler.h"
8 8
9using namespace OpieObex; 9using namespace OpieObex;
10 10
11/* TRANSLATOR OpieObex::ObexHandler */
12
11ObexHandler::ObexHandler() { 13ObexHandler::ObexHandler() {
12 m_wasRec = false; 14 m_wasRec = false;
13 m_sender = 0l; 15 m_sender = 0l;
14 m_receiver = 0l; 16 m_receiver = 0l;
15 QCopChannel* chan = new QCopChannel("QPE/Obex"); 17 QCopChannel* chan = new QCopChannel("QPE/Obex");
16 connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), 18 connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ),
17 this, SLOT(irdaMessage(const QCString&, const QByteArray& ) ) ); 19 this, SLOT(irdaMessage(const QCString&, const QByteArray& ) ) );
18} 20}
19ObexHandler::~ObexHandler() { 21ObexHandler::~ObexHandler() {
20 delete m_sender; 22 delete m_sender;
21 delete m_receiver; 23 delete m_receiver;
22} 24}
23void ObexHandler::doSend(const QString& str, const QString& desc) { 25void ObexHandler::doSend(const QString& str, const QString& desc) {
24 delete m_sender; 26 delete m_sender;
25 m_sender = new SendWidget; 27 m_sender = new SendWidget;
26 m_sender->raise(); 28 m_sender->raise();
27 m_sender->showMaximized(); 29 m_sender->showMaximized();
28 connect(m_sender, SIGNAL(done() ), 30 connect(m_sender, SIGNAL(done() ),
29 this, SLOT(slotSent() ) ); 31 this, SLOT(slotSent() ) );
30 m_sender->send( str, desc ); 32 m_sender->send( str, desc );
31} 33}
32void ObexHandler::doReceive(bool b) { 34void ObexHandler::doReceive(bool b) {
33 if (m_receiver && b ) return; // we should enable receiver and it is on 35 if (m_receiver && b ) return; // we should enable receiver and it is on
34 else if (!m_receiver && !b ) return; // we should disbale receiver and it is off 36 else if (!m_receiver && !b ) return; // we should disbale receiver and it is off
35 else if (m_receiver && !b ) { 37 else if (m_receiver && !b ) {
36 delete m_receiver; 38 delete m_receiver;
37 m_receiver=0; 39 m_receiver=0;
38 }else if (!m_receiver && b ) { 40 }else if (!m_receiver && b ) {
39 m_receiver= new Receiver; 41 m_receiver= new Receiver;
40 } 42 }
41} 43}
42void ObexHandler::slotSent() { 44void ObexHandler::slotSent() {
43 QString file = m_sender->file(); 45 QString file = m_sender->file();
44 delete m_sender; 46 delete m_sender;
45 m_sender = 0; 47 m_sender = 0;
46 QCopEnvelope e ("QPE/Obex", "done(QString)" ); 48 QCopEnvelope e ("QPE/Obex", "done(QString)" );
47 e << file; 49 e << file;
48 doReceive(m_wasRec ); 50 doReceive(m_wasRec );
49 m_wasRec = false; 51 m_wasRec = false;
50} 52}
51void ObexHandler::irdaMessage( const QCString& msg, const QByteArray& data) { 53void ObexHandler::irdaMessage( const QCString& msg, const QByteArray& data) {
52 QDataStream stream( data, IO_ReadOnly ); 54 QDataStream stream( data, IO_ReadOnly );
53 if ( msg == "send(QString,QString,QString)" ) { 55 if ( msg == "send(QString,QString,QString)" ) {
54 QString name, desc; 56 QString name, desc;
55 stream >> desc; 57 stream >> desc;
56 stream >> name; 58 stream >> name;
57 m_wasRec = (m_receiver != 0 ); 59 m_wasRec = (m_receiver != 0 );
58 doReceive( false ); 60 doReceive( false );
59 doSend(name, desc); 61 doSend(name, desc);
60 }else if (msg == "receive(int)") { 62 }else if (msg == "receive(int)") {
61 int rec; 63 int rec;
62 stream >> rec; 64 stream >> rec;
63 doReceive(rec); 65 doReceive(rec);
64 } 66 }
65} 67}
diff --git a/core/obex/obeximpl.cpp b/core/obex/obeximpl.cpp
index 12a078f..5bfc779 100644
--- a/core/obex/obeximpl.cpp
+++ b/core/obex/obeximpl.cpp
@@ -1,28 +1,30 @@
1#include "obexhandler.h" 1#include "obexhandler.h"
2#include "obeximpl.h" 2#include "obeximpl.h"
3 3
4using namespace OpieObex; 4using namespace OpieObex;
5 5
6/* TRANSLATOR OpieObex::ObexImpl */
7
6ObexImpl::ObexImpl() { 8ObexImpl::ObexImpl() {
7 m_handler = new ObexHandler; 9 m_handler = new ObexHandler;
8} 10}
9ObexImpl::~ObexImpl() { 11ObexImpl::~ObexImpl() {
10 delete m_handler; 12 delete m_handler;
11} 13}
12QRESULT ObexImpl::queryInterface( const QUuid& uuid, QUnknownInterface **iface ) { 14QRESULT ObexImpl::queryInterface( const QUuid& uuid, QUnknownInterface **iface ) {
13 *iface = 0; 15 *iface = 0;
14 if ( uuid == IID_QUnknown ) { 16 if ( uuid == IID_QUnknown ) {
15 *iface = this; 17 *iface = this;
16 }else if ( uuid == IID_ObexInterface ) 18 }else if ( uuid == IID_ObexInterface )
17 *iface = this; 19 *iface = this;
18 20
19 if (*iface) 21 if (*iface)
20 (*iface)->addRef(); 22 (*iface)->addRef();
21 23
22 return QS_OK; 24 return QS_OK;
23} 25}
24 26
25 27
26Q_EXPORT_INTERFACE() { 28Q_EXPORT_INTERFACE() {
27 Q_CREATE_INSTANCE( ObexImpl ) 29 Q_CREATE_INSTANCE( ObexImpl )
28} 30}
diff --git a/core/obex/obexsend.cpp b/core/obex/obexsend.cpp
index 2931cf7..cf5d958 100644
--- a/core/obex/obexsend.cpp
+++ b/core/obex/obexsend.cpp
@@ -1,145 +1,147 @@
1#include <qpushbutton.h> 1#include <qpushbutton.h>
2#include <qlabel.h> 2#include <qlabel.h>
3#include <qhbox.h> 3#include <qhbox.h>
4#include <qlayout.h> 4#include <qlayout.h>
5#include <qtimer.h> 5#include <qtimer.h>
6#include <qtl.h> 6#include <qtl.h>
7 7
8#include <qcopchannel_qws.h> 8#include <qcopchannel_qws.h>
9 9
10#include <qpe/resource.h> 10#include <qpe/resource.h>
11#include <qpe/qcopenvelope_qws.h> 11#include <qpe/qcopenvelope_qws.h>
12 12
13#include "obex.h" 13#include "obex.h"
14#include "obexsend.h" 14#include "obexsend.h"
15 15
16using namespace OpieObex; 16using namespace OpieObex;
17 17
18/* TRANSLATOR OpieObex::SendWidget */
19
18 20
19SendWidget::SendWidget( QWidget* parent, const char* name ) 21SendWidget::SendWidget( QWidget* parent, const char* name )
20 : QWidget( parent, name ) { 22 : QWidget( parent, name ) {
21 initUI(); 23 initUI();
22} 24}
23SendWidget::~SendWidget() { 25SendWidget::~SendWidget() {
24} 26}
25void SendWidget::initUI() { 27void SendWidget::initUI() {
26 m_obex = new Obex(this, "obex"); 28 m_obex = new Obex(this, "obex");
27 connect(m_obex, SIGNAL(error(int) ), 29 connect(m_obex, SIGNAL(error(int) ),
28 this, SLOT(slotIrError(int) ) ); 30 this, SLOT(slotIrError(int) ) );
29 connect(m_obex, SIGNAL(sent(bool) ), 31 connect(m_obex, SIGNAL(sent(bool) ),
30 this, SLOT(slotIrSent(bool) ) ); 32 this, SLOT(slotIrSent(bool) ) );
31 connect(m_obex, SIGNAL(currentTry(unsigned int ) ), 33 connect(m_obex, SIGNAL(currentTry(unsigned int ) ),
32 this, SLOT(slotIrTry(unsigned int ) ) ); 34 this, SLOT(slotIrTry(unsigned int ) ) );
33 35
34 QCopChannel* chan = new QCopChannel("QPE/IrDaAppletBack", this ); 36 QCopChannel* chan = new QCopChannel("QPE/IrDaAppletBack", this );
35 connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), 37 connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ),
36 this, SLOT(dispatchIrda(const QCString&, const QByteArray& ) ) ); 38 this, SLOT(dispatchIrda(const QCString&, const QByteArray& ) ) );
37 39
38 chan = new QCopChannel("QPE/BluetoothBack", this ); 40 chan = new QCopChannel("QPE/BluetoothBack", this );
39 connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), 41 connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ),
40 this, SLOT(dispatchBt(const QCString&, const QByteArray& ) ) ); 42 this, SLOT(dispatchBt(const QCString&, const QByteArray& ) ) );
41 43
42 QVBoxLayout* lay = new QVBoxLayout(this); 44 QVBoxLayout* lay = new QVBoxLayout(this);
43 45
44 QHBox* nameBox = new QHBox(this); 46 QHBox* nameBox = new QHBox(this);
45 QLabel* name = new QLabel(nameBox); 47 QLabel* name = new QLabel(nameBox);
46 name->setText( tr("<qt><h1>Sending:</h1></qt>") ); 48 name->setText( tr("<qt><h1>Sending:</h1></qt>") );
47 name->setAlignment( AlignLeft | AlignTop ); 49 name->setAlignment( AlignLeft | AlignTop );
48 m_lblFile = new QLabel(nameBox); 50 m_lblFile = new QLabel(nameBox);
49 lay->addWidget(nameBox, 0); 51 lay->addWidget(nameBox, 0);
50 52
51 QFrame* frame = new QFrame(this); 53 QFrame* frame = new QFrame(this);
52 frame->setFrameShape( QFrame::HLine ); 54 frame->setFrameShape( QFrame::HLine );
53 frame->setFrameShadow( QFrame::Sunken ); 55 frame->setFrameShadow( QFrame::Sunken );
54 lay->addWidget(frame, 10); 56 lay->addWidget(frame, 10);
55 57
56 QLabel* devices = new QLabel(this); 58 QLabel* devices = new QLabel(this);
57 devices->setText("<qt><b>Devices:</b></qt>"); 59 devices->setText("<qt><b>Devices:</b></qt>");
58 devices->setAlignment( AlignLeft | AlignTop ); 60 devices->setAlignment( AlignLeft | AlignTop );
59 lay->addWidget( devices,10 ); 61 lay->addWidget( devices,10 );
60 62
61 m_devBox = new DeviceBox(this); 63 m_devBox = new DeviceBox(this);
62 lay->addWidget( m_devBox, 50 ); 64 lay->addWidget( m_devBox, 50 );
63 connect(m_devBox, SIGNAL(selectedDevice(int, int ) ), 65 connect(m_devBox, SIGNAL(selectedDevice(int, int ) ),
64 this, SLOT(slotSelectedDevice(int, int) ) ); 66 this, SLOT(slotSelectedDevice(int, int) ) );
65 67
66 QPushButton *but = new QPushButton(this); 68 QPushButton *but = new QPushButton(this);
67 but->setText(tr("Done") ); 69 but->setText(tr("Done") );
68 connect(but, SIGNAL(clicked() ), 70 connect(but, SIGNAL(clicked() ),
69 this, SLOT(slotDone() ) ); 71 this, SLOT(slotDone() ) );
70 72
71 lay->addWidget( but ); 73 lay->addWidget( but );
72 m_lay = lay; 74 m_lay = lay;
73 75
74 // QT does not like if you add items to an layout which already exits.... 76 // QT does not like if you add items to an layout which already exits....
75 // and was layouted invalidate() does not help too 77 // and was layouted invalidate() does not help too
76 // so we use RichText.... 78 // so we use RichText....
77} 79}
78 80
79/* 81/*
80 * in send we'll first set everything up 82 * in send we'll first set everything up
81 * and then wait for a list of devices. 83 * and then wait for a list of devices.
82 */ 84 */
83void SendWidget::send( const QString& file, const QString& desc ) { 85void SendWidget::send( const QString& file, const QString& desc ) {
84 m_file = file; 86 m_file = file;
85 m_irDa.clear(); 87 m_irDa.clear();
86 m_start = 0; 88 m_start = 0;
87 m_lblFile->setText(desc.isEmpty() ? file : desc ); 89 m_lblFile->setText(desc.isEmpty() ? file : desc );
88 90
89 if ( !QCopChannel::isRegistered("QPE/IrDaApplet") ) { 91 if ( !QCopChannel::isRegistered("QPE/IrDaApplet") ) {
90 m_irDeSearch = m_devBox->addDevice( tr("IrDa is not enabled!"), DeviceBox::Error ); 92 m_irDeSearch = m_devBox->addDevice( tr("IrDa is not enabled!"), DeviceBox::Error );
91 m_start++; 93 m_start++;
92 }else 94 }else
93 m_irDeSearch = m_devBox->addDevice( tr("Searching for IrDa Devices."), DeviceBox::Search ); 95 m_irDeSearch = m_devBox->addDevice( tr("Searching for IrDa Devices."), DeviceBox::Search );
94 96
95 if ( !QCopChannel::isRegistered("QPE/Bluetooth") ) { 97 if ( !QCopChannel::isRegistered("QPE/Bluetooth") ) {
96 m_btDeSearch = m_devBox->addDevice( tr("Bluetooth is not available"), DeviceBox::Error ); 98 m_btDeSearch = m_devBox->addDevice( tr("Bluetooth is not available"), DeviceBox::Error );
97 m_start++; 99 m_start++;
98 }else 100 }else
99 m_btDeSearch = m_devBox->addDevice( tr("Searching for bluetooth Devices."), DeviceBox::Search ); 101 m_btDeSearch = m_devBox->addDevice( tr("Searching for bluetooth Devices."), DeviceBox::Search );
100 102
101 if (m_start != 2 ) { 103 if (m_start != 2 ) {
102 QCopEnvelope e0("QPE/IrDaApplet", "enableIrda()"); 104 QCopEnvelope e0("QPE/IrDaApplet", "enableIrda()");
103 QCopEnvelope e1("QPE/Bluetooth", "enableBluetooth()"); 105 QCopEnvelope e1("QPE/Bluetooth", "enableBluetooth()");
104 QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); 106 QCopEnvelope e2("QPE/IrDaApplet", "listDevices()");
105 QCopEnvelope e3("QPE/Bluetooth", "listDevices()"); 107 QCopEnvelope e3("QPE/Bluetooth", "listDevices()");
106 } 108 }
107} 109}
108void SendWidget::slotIrDaDevices( const QStringList& list) { 110void SendWidget::slotIrDaDevices( const QStringList& list) {
109 qWarning("slot it irda devices "); 111 qWarning("slot it irda devices ");
110 for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) { 112 for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) {
111 int id = m_devBox->addDevice( (*it), DeviceBox::IrDa, tr("Scheduling for beam.") ); 113 int id = m_devBox->addDevice( (*it), DeviceBox::IrDa, tr("Scheduling for beam.") );
112 m_irDa.insert( id, (*it) ); 114 m_irDa.insert( id, (*it) );
113 } 115 }
114 m_devBox->removeDevice( m_irDeSearch ); 116 m_devBox->removeDevice( m_irDeSearch );
115 m_irDaIt = m_irDa.begin(); 117 m_irDaIt = m_irDa.begin();
116 118
117 slotStartIrda(); 119 slotStartIrda();
118} 120}
119 121
120void SendWidget::slotBTDevices( const QMap<QString, QString>& str ) { 122void SendWidget::slotBTDevices( const QMap<QString, QString>& str ) {
121 for(QMap<QString, QString>::ConstIterator it = str.begin(); it != str.end(); ++it ) { 123 for(QMap<QString, QString>::ConstIterator it = str.begin(); it != str.end(); ++it ) {
122 int id = m_devBox->addDevice( it.key(), DeviceBox::BT, tr("Click to beam") ); 124 int id = m_devBox->addDevice( it.key(), DeviceBox::BT, tr("Click to beam") );
123 m_bt.insert( id, Pair( it.key(), it.data() ) ); 125 m_bt.insert( id, Pair( it.key(), it.data() ) );
124 } 126 }
125 m_devBox->removeDevice( m_btDeSearch ); 127 m_devBox->removeDevice( m_btDeSearch );
126} 128}
127void SendWidget::slotSelectedDevice( int name, int dev ) { 129void SendWidget::slotSelectedDevice( int name, int dev ) {
128 qWarning("Start beam? %d %d", name, dev ); 130 qWarning("Start beam? %d %d", name, dev );
129 if ( name == m_irDeSearch ) { 131 if ( name == m_irDeSearch ) {
130 for (QMap<int, QString>::Iterator it= m_irDa.begin(); it != m_irDa.end(); ++it ) 132 for (QMap<int, QString>::Iterator it= m_irDa.begin(); it != m_irDa.end(); ++it )
131 m_devBox->removeDevice( it.key() ); 133 m_devBox->removeDevice( it.key() );
132 134
133 QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); 135 QCopEnvelope e2("QPE/IrDaApplet", "listDevices()");
134 } 136 }
135} 137}
136void SendWidget::dispatchIrda( const QCString& str, const QByteArray& ar ) { 138void SendWidget::dispatchIrda( const QCString& str, const QByteArray& ar ) {
137 qWarning("dispatch irda %s", str.data() ); 139 qWarning("dispatch irda %s", str.data() );
138 if ( str == "devices(QStringList)" ) { 140 if ( str == "devices(QStringList)" ) {
139 QDataStream stream( ar, IO_ReadOnly ); 141 QDataStream stream( ar, IO_ReadOnly );
140 QStringList list; 142 QStringList list;
141 stream >> list; 143 stream >> list;
142 slotIrDaDevices( list ); 144 slotIrDaDevices( list );
143 } 145 }
144} 146}
145void SendWidget::dispatchBt( const QCString&, const QByteArray& ) { 147void SendWidget::dispatchBt( const QCString&, const QByteArray& ) {
diff --git a/core/obex/receiver.cpp b/core/obex/receiver.cpp
index 31c6afe..bf9e30c 100644
--- a/core/obex/receiver.cpp
+++ b/core/obex/receiver.cpp
@@ -1,172 +1,203 @@
1#include <sys/types.h> 1#include <sys/types.h>
2#include <sys/stat.h> 2#include <sys/stat.h>
3#include <sys/mman.h> 3#include <sys/mman.h>
4#include <stdlib.h> // int system
4#include <unistd.h> 5#include <unistd.h>
5 6
6#include <fcntl.h> 7#include <fcntl.h>
7 8
8#include <qfile.h> 9#include <qfile.h>
9#include <qfileinfo.h> 10#include <qfileinfo.h>
10#include <qlabel.h> 11#include <qlabel.h>
11#include <qhbox.h> 12#include <qhbox.h>
13#include <qregexp.h>
12#include <qtextview.h> 14#include <qtextview.h>
13#include <qpushbutton.h> 15#include <qpushbutton.h>
14 16
15#include <qpe/applnk.h> 17#include <qpe/applnk.h>
16#include <qpe/qpeapplication.h> 18#include <qpe/qpeapplication.h>
17#include <qpe/qcopenvelope_qws.h> 19#include <qpe/qcopenvelope_qws.h>
20#include <qpe/global.h>
18 21
19#include "obex.h" 22#include "obex.h"
20#include "receiver.h" 23#include "receiver.h"
21 24
22using namespace OpieObex; 25using namespace OpieObex;
23 26
27/* TRANSLATOR OpieObex::Receiver */
28
24Receiver::Receiver() { 29Receiver::Receiver() {
25 m_obex = new Obex(this, "Receiver"); 30 m_obex = new Obex(this, "Receiver");
26 connect(m_obex, SIGNAL(receivedFile(const QString& ) ), 31 connect(m_obex, SIGNAL(receivedFile(const QString& ) ),
27 this, SLOT(slotReceived(const QString& ) ) ); 32 this, SLOT(slotReceived(const QString& ) ) );
28 m_obex->receive(); 33 m_obex->receive();
29} 34}
30Receiver::~Receiver() { 35Receiver::~Receiver() {
31 m_obex->setReceiveEnabled( false ); 36 m_obex->setReceiveEnabled( false );
32 delete m_obex; 37 delete m_obex;
33} 38}
34void Receiver::slotReceived( const QString& file ) { 39void Receiver::slotReceived( const QString& _file ) {
40 QString file = _file;
35 int check = checkFile(file); 41 int check = checkFile(file);
36 if ( check == AddressBook ) 42 if ( check == AddressBook )
37 handleAddr( file ); 43 handleAddr( file );
38 else if ( check == Datebook ) 44 else if ( check == Datebook )
39 handleDateTodo( file ); 45 handleDateTodo( file );
40 else 46 else
41 handleOther( file ); 47 handleOther( file );
42} 48}
43void Receiver::handleAddr( const QString& str ) { 49void Receiver::handleAddr( const QString& str ) {
44 QCopEnvelope e("QPE/Application/addressbook", "setDocument(QString)" ); 50 QCopEnvelope e("QPE/Application/addressbook", "setDocument(QString)" );
45 e << str; 51 e << str;
46} 52}
47/* we can not say for sure if it's a VEevent ot VTodo */ 53/* we can not say for sure if it's a VEevent ot VTodo */
48void Receiver::handleDateTodo( const QString& str ) { 54void Receiver::handleDateTodo( const QString& str ) {
49 QCopEnvelope e0("QPE/Application/todolist", "setDocument(QString)"); 55 QCopEnvelope e0("QPE/Application/todolist", "setDocument(QString)");
50 e0 << str; 56 e0 << str;
51 QCopEnvelope e1("QPE/Application/datebook", "setDocument(QString)" ); 57 QCopEnvelope e1("QPE/Application/datebook", "setDocument(QString)" );
52 e1 << str; 58 e1 << str;
53} 59}
54/* 60/*
55 * Handle other asks if it should accept the 61 * Handle other asks if it should accept the
56 * beamed object and creates a DocLnk 62 * beamed object and creates a DocLnk
57 */ 63 */
58void Receiver::handleOther( const QString& other ) { 64void Receiver::handleOther( const QString& other ) {
59 OtherHandler* hand = new OtherHandler(); 65 OtherHandler* hand = new OtherHandler();
60 hand->handle( other ); 66 hand->handle( other );
61} 67}
62int Receiver::checkFile( const QString& file ) { 68void Receiver::tidyUp( QString& _file, const QString& ending) {
69 /* libversit fails on BASE64 encoding we try to sed it away */
70 QString file = _file;
71 char foo[24]; // big enough
72 (void)::strcpy(foo, "/tmp/opie-XXXXXX");
73
74 int fd = ::mkstemp(foo);
75
76 if ( fd == -1 )
77 return;
78
79 (void)::strncat( foo, ending.latin1(), 4 );
80 _file = QString::fromLatin1( foo );
81 QString cmd = QString("sed -e \"s/^\\(X-MICROSOFT-BODYINK\\)\\;/\\1:/;\" < %2 > %2 ").arg( Global::shellQuote(file)).arg( Global::shellQuote(_file) );
82 qWarning("Executing: %s", cmd.latin1() );
83 (void)::system( cmd.latin1() );
84
85 cmd = QString("rm %1").arg( Global::shellQuote(file) );
86 (void)::system( cmd.latin1() );
87}
88int Receiver::checkFile( QString& file ) {
63 qWarning("check file!! %s", file.latin1() ); 89 qWarning("check file!! %s", file.latin1() );
64 int ret; 90 int ret;
91 QString ending;
92
65 if (file.right(4) == ".vcs" ) { 93 if (file.right(4) == ".vcs" ) {
66 ret = Datebook; 94 ret = Datebook;
95 ending = QString::fromLatin1(".vcs");
67 }else if ( file.right(4) == ".vcf") { 96 }else if ( file.right(4) == ".vcf") {
68 ret = AddressBook; 97 ret = AddressBook;
98 ending = QString::fromLatin1(".vcf");
69 }else 99 }else
70 ret = Other; 100 ret = Other;
71 101
72 102
103 if (ending.isEmpty() )
104 return ret;
105
106 /**
107 * currently the parser is broken in regard of BASE64 encoding
108 * and M$ likes to send that. So we will executed a small
109 * tidy up system sed script
110 * At this point we can also remove umlaute from the filename
111 */
112 tidyUp( file, ending );
113
73 qWarning("check it now %d", ret ); 114 qWarning("check it now %d", ret );
74 return ret; 115 return ret;
75} 116}
76 117
118/* TRANSLATOR OpieObex::OtherHandler */
119
77OtherHandler::OtherHandler() 120OtherHandler::OtherHandler()
78 : QVBox() 121 : QVBox()
79{ 122{
80 QHBox* box = new QHBox(this); 123 QHBox* box = new QHBox(this);
81 QLabel* lbl = new QLabel(box); 124 QLabel* lbl = new QLabel(box);
82 lbl->setText(tr("<qt><b>Received:</b></qt>")); 125 lbl->setText(tr("<qt><b>Received:</b></qt>"));
83 m_na = new QLabel(box); 126 m_na = new QLabel(box);
84 127
85 QFrame* frame = new QFrame(this); 128 QFrame* frame = new QFrame(this);
86 frame->setFrameShape( QFrame::HLine ); 129 frame->setFrameShape( QFrame::HLine );
87 frame->setFrameShadow( QFrame::Sunken ); 130 frame->setFrameShadow( QFrame::Sunken );
88 131
89 m_view = new QTextView(this); 132 m_view = new QTextView(this);
90 133
91 box = new QHBox(this); 134 box = new QHBox(this);
92 QPushButton *but = new QPushButton(box); 135 QPushButton *but = new QPushButton(box);
93 but->setText(tr("Accept") ); 136 but->setText(tr("Accept") );
94 connect(but, SIGNAL(clicked() ), 137 connect(but, SIGNAL(clicked() ),
95 this, SLOT(accept()) ); 138 this, SLOT(accept()) );
96 139
97 but = new QPushButton(box); 140 but = new QPushButton(box);
98 but->setText(tr("Deny") ); 141 but->setText(tr("Deny") );
99 connect(but, SIGNAL(clicked() ), 142 connect(but, SIGNAL(clicked() ),
100 this, SLOT(deny() ) ); 143 this, SLOT(deny() ) );
101 144
102 raise(); 145 raise();
103 showMaximized(); 146 showMaximized();
104} 147}
105OtherHandler::~OtherHandler() { 148OtherHandler::~OtherHandler() {
106 149
107} 150}
108void OtherHandler::handle( const QString& file ) { 151void OtherHandler::handle( const QString& file ) {
109 m_file = file; 152 m_file = file;
110 m_na->setText(file); 153 m_na->setText(file);
111 DocLnk lnk(file); 154 DocLnk lnk(file);
112 qWarning(" %s %s", lnk.type().latin1(), lnk.icon().latin1() ); 155 qWarning(" %s %s", lnk.type().latin1(), lnk.icon().latin1() );
113 156
114 QString str = tr("<p>You received a file of type %1 (<img src=\"%2\"> )What do you want to do?").arg(lnk.type() ).arg(lnk.icon() ); 157 QString str = tr("<p>You received a file of type %1 (<img src=\"%2\"> )What do you want to do?").arg(lnk.type() ).arg(lnk.icon() );
115 m_view->setText( str ); 158 m_view->setText( str );
116} 159}
117 160
118/* 161/*
119 * hehe evil evil mmap ahead :) 162 * hehe evil evil mmap ahead :)
120 * we quickly copy the file and then we'll create a DocLnk for it 163 * we quickly copy the file and then we'll create a DocLnk for it
121 */ 164 */
122void OtherHandler::accept() { 165void OtherHandler::accept() {
123 QString na = targetName( m_file ); 166 QString na = targetName( m_file );
124 copy(m_file, na ); 167 copy(m_file, na );
125 DocLnk lnk(na); 168 DocLnk lnk(na);
126 lnk.writeLink(); 169 lnk.writeLink();
127 QFile::remove(m_file); 170 QFile::remove(m_file);
128 delete this; 171 delete this;
129} 172}
130void OtherHandler::deny() { 173void OtherHandler::deny() {
131 QFile::remove( m_file ); 174 QFile::remove( m_file );
132 delete this; 175 delete this;
133} 176}
134QString OtherHandler::targetName( const QString& file ) { 177QString OtherHandler::targetName( const QString& file ) {
135 QFileInfo info( file ); 178 QFileInfo info( file );
179
180 /* $HOME needs to be set!!!! */
181 Global::createDocDir();
182
136 QString newFile = QPEApplication::documentDir()+ "/"+ info.baseName(); 183 QString newFile = QPEApplication::documentDir()+ "/"+ info.baseName();
137 QString newFileBase = newFile; 184 QString newFileBase = newFile;
138 185
139 int trie = 0; 186 int trie = 0;
140 while (QFile::exists(newFile + "."+info.extension() ) ) { 187 while (QFile::exists(newFile + "."+info.extension() ) ) {
141 newFile = newFileBase + "_"+QString::number(trie) ; 188 newFile = newFileBase + "_"+QString::number(trie) ;
142 trie++; 189 trie++;
143 } 190 }
144 newFile += "." + info.extension(); 191 newFile += "." + info.extension();
145 192
146 return newFile; 193 return newFile;
147} 194}
148 195
149/* fast cpy */ 196/* fast cpy */
150void OtherHandler::copy(const QString& src, const QString& file) { 197void OtherHandler::copy(const QString& src, const QString& file) {
151 qWarning("src %s, dest %s", src.latin1(),file.latin1() ); 198 qWarning("src %s, dest %s", src.latin1(),file.latin1() );
152 int src_fd = ::open( QFile::encodeName( src ), O_RDONLY ); 199 QString cmd = QString("mv %1 %2").arg( Global::shellQuote( src )).
153 int to_fd = ::open( QFile::encodeName( file), O_RDWR| O_CREAT| O_TRUNC, 200 arg( Global::shellQuote( file ) );
154 S_IRUSR, S_IWUSR, S_IRGRP, S_IRGRP ); 201 ::system( cmd.latin1() );
155
156 struct stat stater;
157 ::fstat(src_fd, &stater );
158 ::lseek(to_fd, stater.st_size-1, SEEK_SET );
159 ::write(to_fd, "", 1 );
160
161 void *src_addr, *dest_addr;
162 src_addr = ::mmap(0, stater.st_size, PROT_READ,
163 MAP_FILE | MAP_SHARED, src_fd, 0 );
164 dest_addr= ::mmap(0, stater.st_size, PROT_READ | PROT_WRITE,
165 MAP_FILE | MAP_PRIVATE, to_fd, 0 );
166
167 ::memcpy(dest_addr , src_addr, stater.st_size );
168 ::munmap(src_addr , stater.st_size );
169 ::munmap(dest_addr, stater.st_size );
170
171 // done 202 // done
172} 203}
diff --git a/core/obex/receiver.h b/core/obex/receiver.h
index 5b20146..e1d54df 100644
--- a/core/obex/receiver.h
+++ b/core/obex/receiver.h
@@ -1,55 +1,58 @@
1#ifndef OPIE_OBEX_RECEIVER_H 1#ifndef OPIE_OBEX_RECEIVER_H
2#define OPIE_OBEX_RECEIVER_H 2#define OPIE_OBEX_RECEIVER_H
3 3
4#include <qobject.h> 4#include <qobject.h>
5#include <qvbox.h> 5#include <qvbox.h>
6#include <qstring.h> 6#include <qstring.h>
7 7
8class QLabel; 8class QLabel;
9class QTextView; 9class QTextView;
10namespace OpieObex { 10namespace OpieObex {
11 class Obex; 11 class Obex;
12 class OtherHandler; 12 class OtherHandler;
13 class Receiver : public QObject { 13 class Receiver : public QObject {
14 Q_OBJECT 14 Q_OBJECT
15 public: 15 public:
16 enum { Datebook , AddressBook, Other }; 16 enum { Datebook , AddressBook, Other };
17 Receiver(); 17 Receiver();
18 ~Receiver(); 18 ~Receiver();
19 19
20 private: 20 private:
21 void handleAddr(const QString& ); 21 void handleAddr(const QString& );
22 void handleDateTodo(const QString& ); 22 void handleDateTodo(const QString& );
23 void handleOther(const QString& ); 23 void handleOther(const QString& );
24 int checkFile( const QString& file ); 24 /* will alter the file name */
25 int checkFile( QString& file );
25 bool testDateTodo(const QString& file); 26 bool testDateTodo(const QString& file);
26 bool testAddressbook(const QString& file); 27 bool testAddressbook(const QString& file);
28 /* called by checkFile */
29 void tidyUp( QString& file, const QString& ending );
27 30
28 private slots: 31 private slots:
29 void slotReceived( const QString& ); 32 void slotReceived( const QString& );
30 33
31 private: 34 private:
32 Obex* m_obex; 35 Obex* m_obex;
33 }; 36 };
34 37
35 class OtherHandler : public QVBox { 38 class OtherHandler : public QVBox {
36 Q_OBJECT 39 Q_OBJECT
37 public: 40 public:
38 OtherHandler(); 41 OtherHandler();
39 ~OtherHandler(); 42 ~OtherHandler();
40 43
41 void handle( const QString& file ); 44 void handle( const QString& file );
42 private slots: 45 private slots:
43 void accept(); 46 void accept();
44 void deny(); 47 void deny();
45 private: 48 private:
46 QString targetName( const QString& file ); 49 QString targetName( const QString& file );
47 void copy( const QString& src, const QString& dest ); 50 void copy( const QString& src, const QString& dest );
48 QLabel* m_na; 51 QLabel* m_na;
49 QTextView* m_view; 52 QTextView* m_view;
50 QString m_file; 53 QString m_file;
51 }; 54 };
52} 55}
53 56
54 57
55#endif 58#endif
diff --git a/help/en/html/addressbook.html b/help/en/html/addressbook.html
new file mode 100644
index 0000000..5de011c
--- a/dev/null
+++ b/help/en/html/addressbook.html
@@ -0,0 +1,8 @@
1<html><head><title>Addressbook</title></head><body>
2<img src="addressbook/AddressBook.png">
3<h1>Addressbook</h1>
4<P align="center">FIXME Description<br>
5<ul align="left">
6<li><a href="addressbook/about.html">About</a></li>
7</ul>
8</body></html>
diff --git a/help/en/html/advancedfm.html b/help/en/html/advancedfm.html
new file mode 100644
index 0000000..7362dc0
--- a/dev/null
+++ b/help/en/html/advancedfm.html
@@ -0,0 +1,55 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
2<html> <head>
3<title>AdvancedFm</title>
4</head>
5
6<body><center>
7<h1>Advancedfm</h1>
8<h2>The Advanced File Manager</h2>
9</center>
10<br>
11<table width=100%>
12<tr><td width=50% valign="top">
13
14</td>
15<td width=50% valign="top">
16
17</td>
18</tr>
19</table>
20<P><B>AdvancedFm</b> is a file manager for Opie. Using the two
21tabs, you can move, rename, copy, symlink, set file permissions between the two directories.
22<br>All actions on a file can be found by holding your stylus down on a
23file. A popup menu will appear.
24<br>If you have a <b>Control</b> key available, you can select multiple
25files, by holding the <b>Ctrl</b> key while you highlight the files.
26This way you can symlink all the selected files in a directory to the directory
27in the other tab.
28
29<P>You can also run commands on files, on in a directory by
30selecting <b>"Run Command"</b> from the menu. <b>"Run Command with output"</b> will
31send the standard output from your command to a widget so you can see, or study it. You
32can also save it to a file if you wish.
33
34<P>The buttons at top change your current directory to (from left to
35right)<br>
36<b>[cd up parent dir] [$QPEDIR] [CF card] [SD] [Documents directory] [$HOME]</b>
37<br>The button to the left of the combo box, is a directory
38bookmark. Click on it to bookmark the current directory, so you can
39come back to it easily.
40<P>You can type a directory into the edit combo at the top, hit enter
41and change to it.
42
43<P>The titlebar at top tells you what filesystem is used on the
44current directory, and how much free space is available there.
45
46
47
48
49<hr>
50<address><center><pre>
51&copy; 2002-2003<a href="mailto:llornkcor@handhelds.org">ljp</a> llornkcor@handhelds.org</a></pre></address>
52<!-- hhmts start -->
53Last modified: Mon Jun 9 15:11:16 MDT 2003
54<!-- hhmts end -->
55</body> </html>
diff --git a/help/en/html/appearance.html b/help/en/html/appearance.html
new file mode 100644
index 0000000..5b852ce
--- a/dev/null
+++ b/help/en/html/appearance.html
@@ -0,0 +1,7 @@
1<html> <head> <title>appearance</title> </head>
2<body>
3 <center><h1>appearance</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/aqpkg.html b/help/en/html/aqpkg.html
index ba6baf1..5e1bf32 100644
--- a/help/en/html/aqpkg.html
+++ b/help/en/html/aqpkg.html
@@ -1,47 +1,20 @@
1<html><head><title>Welcome to AQPkg</title></head><body> 1<html><head><title>AQPkg</title></head><body>
2AQPkg is the default package manager for Opie.<br> 2<p align="center">
3<h3>Basic Instructions:</h3> 3<img src="aqpkg/aqpkg">
4On startup, you will be shown a window. The main part of the window is taken up 4<h1>AQPkg</h1>
5by a list box showing packages. The packages shown will depend on the server selected.<br> 5<b>Package management for Opie</b>
6The servers list contains network servers containing feeds of packages that can be downloaded 6<p align="left">
7and installed onto your handheld. These are held in the file /etc/ipkg.conf and can be maintained 7<hr>
8using AQPkg. In addition to the servers defined in ipkg.conf file, there are two other servers - 8AQPkg is the default package manager for Opie.&nbsp;
9local and local IPKGs. These are not network servers but views of your handheld.<br> 9It allows the user to manage multiple package feeds
10The local server shows all installed packages, and the local IPKGs server shows all ipks 10and install, remove and update packages.<br>
11that are stored on your handheld.<br> 11<ul>
12On the local server, you can only remove packages. On the local IPKGs server you can only 12<li><a href="aqpkg/update.html"><img src="aqpkg/update">Update lists</a></li>
13install and delete packages - removing installed packages is currently not working. On all other 13<li><a href="aqpkg/upgrade.html"><img src="aqpkg/upgrade">Upgrade packages</a></li>
14servers you can install, uninstall, upgrade and download packages.<br> 14<li><a href="aqpkg/remove.html"><img src="aqpkg/remove">Remove local packages</a></li>
15To get the latest package list for a server (or refresh the view), select the server you 15<li><a href="aqpkg/download.html"><img src="aqpkg/download">Download packages</a></li>
16wish to update and click the Refresh List button.<br> 16<li><a href="aqpkg/apply.html"><img src="aqpkg/apply">Apply changes</a></li>
17To download a package from a remote server, select the server (any except local and local IPKGs), 17<li><a href="aqpkg/configuration.html"><img src="SettingsIcon">Configuration</a></li>
18then select the package(s) you wish to download (by tapping in the box next to the package 18<li><a href="aqpkg/about.html"><img src="UtilsIcon">About</a></li>
19name so that a tick appears in the box) and click the Download button. Enter the path where you 19</ul>
20want the package to be downloaded to and click OK to download the package.<br> 20</body></html>
21To install, upgrade or remove a package select the packages you wish to install and click the Apply
22button. You will then be shown a dialog which allows you to select which destination you wish
23to install the package to, which packages will be installed, removed and upgraded. You can also
24set various options. (for the moment, see the documentation for IPKG for more details on these
25options). To start the process, click Start. This will perform the necessary operations and
26will show you what is happening. Once everything has completed click the Close button.<br>
27Note: Currently, the operation to perform for a package is automatically decided based on the
28following rules:<br>
29If a package isn't installed, then it will be installed.<br>
30If a package is installed and there isn't a later version available then it will be removed.<br>
31If a package is installed and a different version is available then it will be upgraded. (Note,
32I haven't yet found a way to determine if an available package is newer or older than the one
33currently installed so it is possible that a package may be downgraded).<br>
34As previously mentioned, a package can be explicitly removed by using the local server.<br><br>
35A couple of last notes, in the main window, the following may be useful:<br>
36If a package is installed then it will have (installed) after it.<br>
37If a different version is available then it will have a * after the package name.<br>
38You can view details of a package by tapping twice (quickly) on the package name (NOT the
39box next to the package name). This will show you a brief description of the package, the
40version installed (if it is installed), and the version available for download/installation
41(if a different on is available).<br><br><br>
42Well, hope you enjoy using this program. If you have any ideas/suggestions/ideas for improvements
43then please let me know at andy.qua@blueyonder.co.uk.<br><br>
44Thanks for using this.
45Andy.
46
47</body></html> \ No newline at end of file
diff --git a/help/en/html/backup.html b/help/en/html/backup.html
new file mode 100644
index 0000000..a793038
--- a/dev/null
+++ b/help/en/html/backup.html
@@ -0,0 +1,7 @@
1<html> <head> <title>backup</title> </head>
2<body>
3 <center><h1>backup</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/bluetooth-manager.html b/help/en/html/bluetooth-manager.html
new file mode 100644
index 0000000..7afd864
--- a/dev/null
+++ b/help/en/html/bluetooth-manager.html
@@ -0,0 +1,7 @@
1<html> <head> <title>bluetooth-manager</title> </head>
2<body>
3 <center><h1>bluetooth-manager</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/bounce.html b/help/en/html/bounce.html
new file mode 100644
index 0000000..2edcef9
--- a/dev/null
+++ b/help/en/html/bounce.html
@@ -0,0 +1,7 @@
1<html> <head> <title>bounce</title> </head>
2<body>
3 <center><h1>bounce</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/buttonsettings.html b/help/en/html/buttonsettings.html
new file mode 100644
index 0000000..a169bf5
--- a/dev/null
+++ b/help/en/html/buttonsettings.html
@@ -0,0 +1,7 @@
1<html> <head> <title>buttonsettings</title> </head>
2<body>
3 <center><h1>buttonsettings</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/buzzword.html b/help/en/html/buzzword.html
new file mode 100644
index 0000000..0c1db84
--- a/dev/null
+++ b/help/en/html/buzzword.html
@@ -0,0 +1,7 @@
1<html> <head> <title>buzzword</title> </head>
2<body>
3 <center><h1>buzzword</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/calculator.html b/help/en/html/calculator.html
new file mode 100644
index 0000000..65db274
--- a/dev/null
+++ b/help/en/html/calculator.html
@@ -0,0 +1,7 @@
1<html> <head> <title>calculator</title> </head>
2<body>
3 <center><h1>calculator</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/calibrate.html b/help/en/html/calibrate.html
new file mode 100644
index 0000000..ff2feb3
--- a/dev/null
+++ b/help/en/html/calibrate.html
@@ -0,0 +1,7 @@
1<html> <head> <title>calibrate</title> </head>
2<body>
3 <center><h1>calibrate</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/checkbook.html b/help/en/html/checkbook.html
new file mode 100644
index 0000000..adc22ad
--- a/dev/null
+++ b/help/en/html/checkbook.html
@@ -0,0 +1,7 @@
1<html> <head> <title>checkbook</title> </head>
2<body>
3 <center><h1>checkbook</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/citytime.html b/help/en/html/citytime.html
new file mode 100644
index 0000000..7f823e3
--- a/dev/null
+++ b/help/en/html/citytime.html
@@ -0,0 +1,7 @@
1<html> <head> <title>citytime</title> </head>
2<body>
3 <center><h1>citytime</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/clock.html b/help/en/html/clock.html
new file mode 100644
index 0000000..22909fd
--- a/dev/null
+++ b/help/en/html/clock.html
@@ -0,0 +1,7 @@
1<html> <head> <title>clock</title> </head>
2<body>
3 <center><h1>clock</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/confedit.html b/help/en/html/confedit.html
new file mode 100644
index 0000000..14b78b8
--- a/dev/null
+++ b/help/en/html/confedit.html
@@ -0,0 +1,42 @@
1<html> <head> <title>confedit</title> </head>
2<body>
3 <center>
4 <h1>confedit</h1>
5 <hr>
6 <h1>A big fat Warning: <br><br>
7 Do <b>NOT</b> use confedit!</h1>
8 unless you know what you are doing...<br>
9 <br><hr>
10 </center>
11 <h2>Possible Actions</h2>
12 By highlighting an item a editor will show up. <br>
13 After pressing on a item for some time a popup menu
14 with the possible actions will show up.
15 <h3>conf file</h3>
16 <ul>
17<li>Save:<br>save the changes</li>
18<li>Revert:<br>revert the file to the backup copy<br>
19i.e. undo the last change</li>
20<li>Delete:<br>delete the file from the filesystem<br>
21This cannot be undone, your settings will be lost and
22reverted to the default!</li>
23 </ul>
24 <h3>group</h3>
25 <ul>
26<li>Revert:<br>revert the group to the saved version<br>
27i.e. undo the last change</li>
28<li>Delete:<br>delete the group<br>
29This cannot be undone, your settings will be lost and
30reverted to the default!</li>
31 </ul>
32 <h3>entry</h3>
33 <ul>
34<li>Revert:<br>revert the entry to the saved version<br>
35i.e. undo the last change</li>
36<li>Delete:<br>delete the entry<br>
37This cannot be undone, your settings will be lost and
38reverted to the default!</li>
39 </ul>
40</body>
41</html>
42
diff --git a/help/en/html/datebook.html b/help/en/html/datebook.html
new file mode 100644
index 0000000..0a16409
--- a/dev/null
+++ b/help/en/html/datebook.html
@@ -0,0 +1,8 @@
1<html><head><title>Datebook</title></head><body>
2<img src="datebook/DateBook.png">
3<h1>Datebook</h1>
4<P align="center">FIXME Description<br>
5<ul align="left">
6<li><a href="datebook/about.html">About</a></li>
7</ul>
8</body></html>
diff --git a/help/en/html/drawpad.html b/help/en/html/drawpad.html
new file mode 100644
index 0000000..e651d35
--- a/dev/null
+++ b/help/en/html/drawpad.html
@@ -0,0 +1,8 @@
1<html><head><title>Drawpad</title></head><body>
2<img src="drawpad/DrawPad.png">
3<h1>Drawpad</h1>
4<P align="center">FIXME Description<br>
5<ul align="left">
6<li><a href="drawpad/about.html">About</a></li>
7</ul>
8</body></html>
diff --git a/help/en/html/opie-embeddedkonsole.html b/help/en/html/embeddedkonsole.html
index 732cbd5..732cbd5 100644
--- a/help/en/html/opie-embeddedkonsole.html
+++ b/help/en/html/embeddedkonsole.html
diff --git a/help/en/html/euroconv.html b/help/en/html/euroconv.html
new file mode 100644
index 0000000..f952180
--- a/dev/null
+++ b/help/en/html/euroconv.html
@@ -0,0 +1,7 @@
1<html> <head> <title>euroconv</title> </head>
2<body>
3 <center><h1>euroconv</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/fifteen.html b/help/en/html/fifteen.html
new file mode 100644
index 0000000..4e5516d
--- a/dev/null
+++ b/help/en/html/fifteen.html
@@ -0,0 +1,7 @@
1<html> <head> <title>fifteen</title> </head>
2<body>
3 <center><h1>fifteen</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/opie-formatter.html b/help/en/html/formatter.html
index 5512a61..5512a61 100644
--- a/help/en/html/opie-formatter.html
+++ b/help/en/html/formatter.html
diff --git a/help/en/html/go.html b/help/en/html/go.html
new file mode 100644
index 0000000..55d4d50
--- a/dev/null
+++ b/help/en/html/go.html
@@ -0,0 +1,7 @@
1<html> <head> <title>go</title> </head>
2<body>
3 <center><h1>go</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/gsmtool.html b/help/en/html/gsmtool.html
new file mode 100644
index 0000000..832d52a
--- a/dev/null
+++ b/help/en/html/gsmtool.html
@@ -0,0 +1,7 @@
1<html> <head> <title>gsmtool</title> </head>
2<body>
3 <center><h1>gsmtool</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/index.html b/help/en/html/index.html
new file mode 100644
index 0000000..8468786
--- a/dev/null
+++ b/help/en/html/index.html
@@ -0,0 +1,18 @@
1<html>
2<head>
3<title>OPIE</title>
4</head>
5<body>
6<h1 align=center>Qtopia</h1>
7<p><center> <img align="middle" src="logo32.png" width="64" height="32">
8</center> <center> Built with <a href="help/about-qt-embedded.html">Qt/Embedded</a> from Trolltech. </center></p>
9<h2><a href="help/help.html">Using Qtopia</a></h2>
10<h2><a href="help/sync.html">Synchronizing with a PC</a></h2>
11<h2><a href="help/applications.html">Applications</a></h2>
12<h2><a href="help/1Pim.html">PIM</a></h2>
13<h2><a href="help/games.html">Games</a></h2>
14<h2><a href="help/settings.html">Settings</a></h2>
15<h2><a href="help/documents.html">Documents</a></h2>
16<h2><a href="help/about.html">About OPIE</a></h2w>
17</body>
18</html>
diff --git a/help/en/html/kbill.html b/help/en/html/kbill.html
new file mode 100644
index 0000000..1a43b42
--- a/dev/null
+++ b/help/en/html/kbill.html
@@ -0,0 +1,7 @@
1<html> <head> <title>kbill</title> </head>
2<body>
3 <center><h1>kbill</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/kcheckers.html b/help/en/html/kcheckers.html
new file mode 100644
index 0000000..9cdcdfd
--- a/dev/null
+++ b/help/en/html/kcheckers.html
@@ -0,0 +1,7 @@
1<html> <head> <title>kcheckers</title> </head>
2<body>
3 <center><h1>kcheckers</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/keypebble.html b/help/en/html/keypebble.html
new file mode 100644
index 0000000..e968ddc
--- a/dev/null
+++ b/help/en/html/keypebble.html
@@ -0,0 +1,7 @@
1<html> <head> <title>keypebble</title> </head>
2<body>
3 <center><h1>keypebble</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/kpacman.html b/help/en/html/kpacman.html
new file mode 100644
index 0000000..d9c2126
--- a/dev/null
+++ b/help/en/html/kpacman.html
@@ -0,0 +1,7 @@
1<html> <head> <title>kpacman</title> </head>
2<body>
3 <center><h1>kpacman</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/language.html b/help/en/html/language.html
new file mode 100644
index 0000000..71e23e3
--- a/dev/null
+++ b/help/en/html/language.html
@@ -0,0 +1,7 @@
1<html> <head> <title>language</title> </head>
2<body>
3 <center><h1>language</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/launchersettings.html b/help/en/html/launchersettings.html
new file mode 100644
index 0000000..aa46099
--- a/dev/null
+++ b/help/en/html/launchersettings.html
@@ -0,0 +1,7 @@
1<html> <head> <title>launchersettings</title> </head>
2<body>
3 <center><h1>launchersettings</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/light-and-power.html b/help/en/html/light-and-power.html
new file mode 100644
index 0000000..2365075
--- a/dev/null
+++ b/help/en/html/light-and-power.html
@@ -0,0 +1,7 @@
1<html> <head> <title>light-and-power</title> </head>
2<body>
3 <center><h1>light-and-power</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/mail.html b/help/en/html/mail.html
new file mode 100644
index 0000000..b84242c
--- a/dev/null
+++ b/help/en/html/mail.html
@@ -0,0 +1,8 @@
1<html><head><title>E-Mail</title></head><body>
2<img src="mail/desktopicon.png">
3<h1>E-Mail</h1>
4<P align="center">FIXME Description<br>
5<ul align="left">
6<li><a href="mail/about.html">About</a></li>
7</ul>
8</body></html>
diff --git a/help/en/html/mailit.html b/help/en/html/mailit.html
new file mode 100644
index 0000000..f93cc56
--- a/dev/null
+++ b/help/en/html/mailit.html
@@ -0,0 +1,15 @@
1<html><head><title>Mail It</title></head><body>
2<img src="../../../pics/mailit/desktopicon.png"></img>
3<h1>Mail It</h1>
4<P align="center"><I>MailIt</I> is a lightweight POP3 mailing application<br>
5<ul align="left">
6<li><a href="mailit/features.html">Features</a></li>
7<li><a href="mailit/mview.html">Main view</a></li>
8<li><a href="mailit/readmail.html">Mail reader view</a></li>
9<li><a href="mailit/sendmail.html">Send view</a></li>
10<li><a href="mailit/attachments.html">Attachment editor</a></li>
11<li><a href="mailit/statusbar.html">Statusbar</a></li>
12<li><a href="mailit/settings.html">Settings editor</a></li>
13<li><a href="mailit/about.html">About</a></li>
14</ul>
15</body></html>
diff --git a/help/en/html/mediummount.html b/help/en/html/mediummount.html
new file mode 100644
index 0000000..b4d23ad
--- a/dev/null
+++ b/help/en/html/mediummount.html
@@ -0,0 +1,7 @@
1<html> <head> <title>mediummount</title> </head>
2<body>
3 <center><h1>mediummount</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/mindbreaker.html b/help/en/html/mindbreaker.html
new file mode 100644
index 0000000..2259876
--- a/dev/null
+++ b/help/en/html/mindbreaker.html
@@ -0,0 +1,7 @@
1<html> <head> <title>mindbreaker</title> </head>
2<body>
3 <center><h1>mindbreaker</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/minesweep.html b/help/en/html/minesweep.html
new file mode 100644
index 0000000..ddacb12
--- a/dev/null
+++ b/help/en/html/minesweep.html
@@ -0,0 +1,7 @@
1<html> <head> <title>minesweep</title> </head>
2<body>
3 <center><h1>minesweep</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/mobilemsg.html b/help/en/html/mobilemsg.html
new file mode 100644
index 0000000..97c2a0f
--- a/dev/null
+++ b/help/en/html/mobilemsg.html
@@ -0,0 +1,7 @@
1<html> <head> <title>mobilemsg</title> </head>
2<body>
3 <center><h1>mobilemsg</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/networksettings.html b/help/en/html/networksettings.html
new file mode 100644
index 0000000..7ea1fc0
--- a/dev/null
+++ b/help/en/html/networksettings.html
@@ -0,0 +1,7 @@
1<html> <head> <title>networksettings</title> </head>
2<body>
3 <center><h1>networksettings</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/odict.html b/help/en/html/odict.html
new file mode 100644
index 0000000..5808650
--- a/dev/null
+++ b/help/en/html/odict.html
@@ -0,0 +1,7 @@
1<html> <head> <title>odict</title> </head>
2<body>
3 <center><h1>odict</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/opie-advancedfm.html b/help/en/html/opie-advancedfm.html
deleted file mode 100644
index ad75237..0000000
--- a/help/en/html/opie-advancedfm.html
+++ b/dev/null
@@ -1,54 +0,0 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
2<html> <head>
3<title>AdvancedFm</title>
4</head>
5
6<body><center>
7<h1>Opie-AdvancedFm</h1>
8<h2>Advanced File Manager</h2>
9</center>
10<br>
11<table width=100%>
12<tr><td width=50% valign="top">
13
14</td>
15<td width=50% valign="top">
16
17</td>
18</tr>
19</table>
20<P>&nbsp;&nbsp;&nbsp;&nbsp;AdvancedFm is an advanced file management for Opie. Using the two
21tabs, you can move, rename, copy, symlink, set file permissions between the two directories.
22<br>All actions on a file can be found by holding your stylus down on a
23file. A popup menu will appear.
24<br>If you have a Control key available, you can select multiple
25files, by holding the Ctrl key while you highlight the files.
26This way you can symlink selected files in a directory to the directory
27in the other tab.
28
29<P>&nbsp;&nbsp;&nbsp;&nbsp;You can also run commands on files, on in a directory by
30selecting "Run Command" from the menu. "Run Command with output" will
31send the standard output from your command to a widget so you can see, or study it. You
32can also save it to a file if you wish.
33
34<P>&nbsp;&nbsp;&nbsp;&nbsp;The buttons at top change your current directory to (from left to
35right)<br>
36[$QPEDIR] [/mnt/cf] [/mnt/sd] (<-for those that have it) [cd up parent dir]
37[~/Documents] [$HOME]
38
39<P>&nbsp;&nbsp;&nbsp;&nbsp;You can type a directory into the edit combo at the top, hit enter
40and change to it.
41
42<P>&nbsp;&nbsp;&nbsp;&nbsp;The titlebar at top tells you what filesystem is used on the
43current directory, and how much free space is available there.
44
45
46
47
48<hr>
49<address><center><pre>
50&copy; 2002<a href="mailto:llornkcor@handhelds.org">ljp</a> llornkcor@handhelds.org</a></pre></address>
51<!-- hhmts start -->
52Last modified: Thu Oct 17 23:45:41 +0000 2002
53<!-- hhmts end -->
54</body> </html>
diff --git a/help/en/html/opie-appearance-help-en.control b/help/en/html/opie-appearance-help-en.control
new file mode 100644
index 0000000..7cf47f2
--- a/dev/null
+++ b/help/en/html/opie-appearance-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-appearance-help-en
2Files: help/en/html/appearance.html help/en/html/appearance
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-appearance
7License: GPL
8Description: appearance help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-appskey-help-en.control b/help/en/html/opie-appskey-help-en.control
deleted file mode 100644
index 257e64d..0000000
--- a/help/en/html/opie-appskey-help-en.control
+++ b/dev/null
@@ -1,11 +0,0 @@
1Package: opie-appskey-help-en
2Files: help/en/html/opie-appskey.html
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: ljp <llornkcor@handhelds.org>
6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION
8Depends: opie-appskey
9License: GPL
10Description: Application Key help files (english)
11
diff --git a/help/en/html/opie-appskey.html b/help/en/html/opie-appskey.html
deleted file mode 100644
index 02b3742..0000000
--- a/help/en/html/opie-appskey.html
+++ b/dev/null
@@ -1,24 +0,0 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
2<html> <head>
3<title>Opie-Appskey</title>
4</head>
5
6<body>
7<center><h1>Opie-Appskey</h1></center>
8
9<P>Opie Application Key is a program to select which buttons on your
10Zaurus, or Ipaq starts which programs.<br>
11The icons should match which button it controls.<br>
12It scans the /opt/QtPalmtop/apps directory for executables.
13<br>Appskey does not really remap the buttons, and can only execute binaries
14in the .desktop files in /opt/QtPalmtop/apps directory.
15
16
17<hr>
18<center>
19<address><center><pre>
20&copy; 2002<a href="mailto:llornkcor@handhelds.org">ljp</a> llornkcor@handhelds.org</a></pre></address>
21<!-- hhmts start -->
22Last modified: Fri Oct 18 02:28:04 +0000 2002
23<!-- hhmts end -->
24</body> </html>
diff --git a/help/en/html/opie-backgammon-help-en.control b/help/en/html/opie-backgammon-help-en.control
new file mode 100644
index 0000000..50f7963
--- a/dev/null
+++ b/help/en/html/opie-backgammon-help-en.control
@@ -0,0 +1,10 @@
1Package: opie-backgammon-help-en
2Files: help/en/html/backgammon.html help/en/html/backgammon
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Architecture: arm
7Depends: opie-backgammon
8License: GPL
9Description: backgammon help files (en)
10Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-backup-help-en.control b/help/en/html/opie-backup-help-en.control
new file mode 100644
index 0000000..fb20668
--- a/dev/null
+++ b/help/en/html/opie-backup-help-en.control
@@ -0,0 +1,10 @@
1Package: opie-backup-help-en
2Files: help/en/html/backup.html help/en/html/backup
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Architecture: arm
7Depends: opie-backup
8License: GPL
9Description: backup help files (en)
10Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-bluetooth-manager-help-en.control b/help/en/html/opie-bluetooth-manager-help-en.control
new file mode 100644
index 0000000..425e8c3
--- a/dev/null
+++ b/help/en/html/opie-bluetooth-manager-help-en.control
@@ -0,0 +1,10 @@
1Package: opie-bluetooth-manager-help-en
2Files: help/en/html/bluetooth-manager.html help/en/html/bluetooth-manager
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Architecture: arm
7Depends: opie-bluetooth-manager
8License: GPL
9Description: bluetooth-manager help files (en)
10Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-bounce-help-en.control b/help/en/html/opie-bounce-help-en.control
new file mode 100644
index 0000000..b0a381e
--- a/dev/null
+++ b/help/en/html/opie-bounce-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-bounce-help-en
2Files: help/en/html/bounce.html help/en/html/bounce
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-bounce
7License: GPL
8Description: bounce help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-buttonsettings-help-en.control b/help/en/html/opie-buttonsettings-help-en.control
new file mode 100644
index 0000000..0d57177
--- a/dev/null
+++ b/help/en/html/opie-buttonsettings-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-buttonsettings-help-en
2Files: help/en/html/buttonsettings.html help/en/html/buttonsettings
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-buttonsettings
7License: GPL
8Description: buttonsettings help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-buzzword-help-en.control b/help/en/html/opie-buzzword-help-en.control
new file mode 100644
index 0000000..0fa6474
--- a/dev/null
+++ b/help/en/html/opie-buzzword-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-buzzword-help-en
2Files: help/en/html/buzzword.html help/en/html/buzzword
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-buzzword
7License: GPL
8Description: buzzword help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-calculator-help-en.control b/help/en/html/opie-calculator-help-en.control
new file mode 100644
index 0000000..7076632
--- a/dev/null
+++ b/help/en/html/opie-calculator-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-calculator-help-en
2Files: help/en/html/calculator.html help/en/html/calculator
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-calculator
7License: GPL
8Description: calculator help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-calibrate-help-en.control b/help/en/html/opie-calibrate-help-en.control
new file mode 100644
index 0000000..169cc93
--- a/dev/null
+++ b/help/en/html/opie-calibrate-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-calibrate-help-en
2Files: help/en/html/calibrate.html help/en/html/calibrate
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-calibrate
7License: GPL
8Description: calibrate help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-checkbook-help-en.control b/help/en/html/opie-checkbook-help-en.control
new file mode 100644
index 0000000..66d19f3
--- a/dev/null
+++ b/help/en/html/opie-checkbook-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-checkbook-help-en
2Files: help/en/html/checkbook.html help/en/html/checkbook
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-checkbook
7License: GPL
8Description: checkbook help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-citytime-help-en.control b/help/en/html/opie-citytime-help-en.control
new file mode 100644
index 0000000..b27c58b
--- a/dev/null
+++ b/help/en/html/opie-citytime-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-citytime-help-en
2Files: help/en/html/citytime.html help/en/html/citytime
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-citytime
7License: GPL
8Description: citytime help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-clock-help-en.control b/help/en/html/opie-clock-help-en.control
new file mode 100644
index 0000000..f452350
--- a/dev/null
+++ b/help/en/html/opie-clock-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-clock-help-en
2Files: help/en/html/clock.html help/en/html/clock
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-clock
7License: GPL
8Description: clock help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-confedit-help-en.control b/help/en/html/opie-confedit-help-en.control
new file mode 100644
index 0000000..a1bd441
--- a/dev/null
+++ b/help/en/html/opie-confedit-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-confedit-help-en
2Files: help/en/html/confedit.html help/en/html/confedit
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-confedit
7License: GPL
8Description: confedit help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-euroconv-help-en.control b/help/en/html/opie-euroconv-help-en.control
new file mode 100644
index 0000000..f83660c
--- a/dev/null
+++ b/help/en/html/opie-euroconv-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-euroconv-help-en
2Files: help/en/html/euroconv.html help/en/html/euroconv
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-euroconv
7License: GPL
8Description: euroconv help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-fifteen-help-en.control b/help/en/html/opie-fifteen-help-en.control
new file mode 100644
index 0000000..f431487
--- a/dev/null
+++ b/help/en/html/opie-fifteen-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-fifteen-help-en
2Files: help/en/html/fifteen.html help/en/html/fifteen
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-fifteen
7License: GPL
8Description: fifteen help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-go-help-en.control b/help/en/html/opie-go-help-en.control
new file mode 100644
index 0000000..824f762
--- a/dev/null
+++ b/help/en/html/opie-go-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-go-help-en
2Files: help/en/html/go.html help/en/html/go
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-go
7License: GPL
8Description: go help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-gsmtool-help-en.control b/help/en/html/opie-gsmtool-help-en.control
new file mode 100644
index 0000000..224cf13
--- a/dev/null
+++ b/help/en/html/opie-gsmtool-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-gsmtool-help-en
2Files: help/en/html/gsmtool.html help/en/html/gsmtool
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-gsmtool
7License: GPL
8Description: gsmtool help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-kbill-help-en.control b/help/en/html/opie-kbill-help-en.control
new file mode 100644
index 0000000..39e5214
--- a/dev/null
+++ b/help/en/html/opie-kbill-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-kbill-help-en
2Files: help/en/html/kbill.html help/en/html/kbill
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-kbill
7License: GPL
8Description: kbill help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-kcheckers-help-en.control b/help/en/html/opie-kcheckers-help-en.control
new file mode 100644
index 0000000..3684de8
--- a/dev/null
+++ b/help/en/html/opie-kcheckers-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-kcheckers-help-en
2Files: help/en/html/kcheckers.html help/en/html/kcheckers
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-kcheckers
7License: GPL
8Description: kcheckers help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-kpacman-help-en.control b/help/en/html/opie-kpacman-help-en.control
new file mode 100644
index 0000000..d572fe1
--- a/dev/null
+++ b/help/en/html/opie-kpacman-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-kpacman-help-en
2Files: help/en/html/kpacman.html help/en/html/kpacman
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-kpacman
7License: GPL
8Description: kpacman help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-language-help-en.control b/help/en/html/opie-language-help-en.control
new file mode 100644
index 0000000..616c636
--- a/dev/null
+++ b/help/en/html/opie-language-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-language-help-en
2Files: help/en/html/language.html help/en/html/language
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-language
7License: GPL
8Description: language help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-launchersettings-help-en.control b/help/en/html/opie-launchersettings-help-en.control
new file mode 100644
index 0000000..3bc8ead
--- a/dev/null
+++ b/help/en/html/opie-launchersettings-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-launchersettings-help-en
2Files: help/en/html/launchersettings.html help/en/html/launchersettings
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-launchersettings
7License: GPL
8Description: launchersettings help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-light-and-power-help-en.control b/help/en/html/opie-light-and-power-help-en.control
new file mode 100644
index 0000000..b563f60
--- a/dev/null
+++ b/help/en/html/opie-light-and-power-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-light-and-power-help-en
2Files: help/en/html/light-and-power.html help/en/html/light-and-power
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-light-and-power
7License: GPL
8Description: light-and-power help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-mediummount-help-en.control b/help/en/html/opie-mediummount-help-en.control
new file mode 100644
index 0000000..22261ce
--- a/dev/null
+++ b/help/en/html/opie-mediummount-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-mediummount-help-en
2Files: help/en/html/mediummount.html help/en/html/mediummount
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-mediummount
7License: GPL
8Description: mediummount help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-mindbreaker-help-en.control b/help/en/html/opie-mindbreaker-help-en.control
new file mode 100644
index 0000000..828dde7
--- a/dev/null
+++ b/help/en/html/opie-mindbreaker-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-mindbreaker-help-en
2Files: help/en/html/mindbreaker.html help/en/html/mindbreaker
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-mindbreaker
7License: GPL
8Description: mindbreaker help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-minesweep-help-en.control b/help/en/html/opie-minesweep-help-en.control
new file mode 100644
index 0000000..e81ba2d
--- a/dev/null
+++ b/help/en/html/opie-minesweep-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-minesweep-help-en
2Files: help/en/html/minesweep.html help/en/html/minesweep
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-minesweep
7License: GPL
8Description: minesweep help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-mobilemsg-help-en.control b/help/en/html/opie-mobilemsg-help-en.control
new file mode 100644
index 0000000..a976e6d
--- a/dev/null
+++ b/help/en/html/opie-mobilemsg-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-mobilemsg-help-en
2Files: help/en/html/mobilemsg.html help/en/html/mobilemsg
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-mobilemsg
7License: GPL
8Description: mobilemsg help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-networksettings-help-en.control b/help/en/html/opie-networksettings-help-en.control
new file mode 100644
index 0000000..2cf7ca9
--- a/dev/null
+++ b/help/en/html/opie-networksettings-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-networksettings-help-en
2Files: help/en/html/networksettings.html help/en/html/networksettings
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-networksettings
7License: GPL
8Description: networksettings help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-odict-help-en.control b/help/en/html/opie-odict-help-en.control
new file mode 100644
index 0000000..43ec937
--- a/dev/null
+++ b/help/en/html/opie-odict-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-odict-help-en
2Files: help/en/html/odict.html help/en/html/odict
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-odict
7License: GPL
8Description: odict help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-opie-write-help-en.control b/help/en/html/opie-opie-write-help-en.control
new file mode 100644
index 0000000..cf1fe49
--- a/dev/null
+++ b/help/en/html/opie-opie-write-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-opie-write-help-en
2Files: help/en/html/opie-write.html help/en/html/opie-write
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-opie-write
7License: GPL
8Description: opie-write help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-opieftp-help-en.control b/help/en/html/opie-opieftp-help-en.control
new file mode 100644
index 0000000..d7da397
--- a/dev/null
+++ b/help/en/html/opie-opieftp-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-opieftp-help-en
2Files: help/en/html/opieftp.html help/en/html/opieftp
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-opieftp
7License: GPL
8Description: opieftp help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-opieirc-help-en.control b/help/en/html/opie-opieirc-help-en.control
new file mode 100644
index 0000000..a5027e0
--- a/dev/null
+++ b/help/en/html/opie-opieirc-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-opieirc-help-en
2Files: help/en/html/opieirc.html help/en/html/opieirc
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-opieirc
7License: GPL
8Description: opieirc help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-opieplayer-help-en.control b/help/en/html/opie-opieplayer-help-en.control
new file mode 100644
index 0000000..d3ac2fd
--- a/dev/null
+++ b/help/en/html/opie-opieplayer-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-opieplayer-help-en
2Files: help/en/html/opieplayer.html help/en/html/opieplayer
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-opieplayer
7License: GPL
8Description: opieplayer help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-opierec-help-en.control b/help/en/html/opie-opierec-help-en.control
new file mode 100644
index 0000000..bc17507
--- a/dev/null
+++ b/help/en/html/opie-opierec-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-opierec-help-en
2Files: help/en/html/opierec.html
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-opierec
7License: GPL
8Description: opierec help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-oxygen-help-en.control b/help/en/html/opie-oxygen-help-en.control
new file mode 100644
index 0000000..8ee0c52
--- a/dev/null
+++ b/help/en/html/opie-oxygen-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-oxygen-help-en
2Files: help/en/html/oxygen.html help/en/html/oxygen
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-oxygen
7License: GPL
8Description: oxygen help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-parashoot-help-en.control b/help/en/html/opie-parashoot-help-en.control
new file mode 100644
index 0000000..56e2ed2
--- a/dev/null
+++ b/help/en/html/opie-parashoot-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-parashoot-help-en
2Files: help/en/html/parashoot.html help/en/html/parashoot
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-parashoot
7License: GPL
8Description: parashoot help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-patience-help-en.control b/help/en/html/opie-patience-help-en.control
new file mode 100644
index 0000000..b81862d
--- a/dev/null
+++ b/help/en/html/opie-patience-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-patience-help-en
2Files: help/en/html/patience.html help/en/html/patience
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-patience
7License: GPL
8Description: patience help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-qasteroids-help-en.control b/help/en/html/opie-qasteroids-help-en.control
new file mode 100644
index 0000000..ba81572
--- a/dev/null
+++ b/help/en/html/opie-qasteroids-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-qasteroids-help-en
2Files: help/en/html/qasteroids.html help/en/html/qasteroids
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-qasteroids
7License: GPL
8Description: qasteroids help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-qpdf-help-en.control b/help/en/html/opie-qpdf-help-en.control
new file mode 100644
index 0000000..a87b8bb
--- a/dev/null
+++ b/help/en/html/opie-qpdf-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-qpdf-help-en
2Files: help/en/html/qpdf.html help/en/html/qpdf
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-qpdf
7License: GPL
8Description: qpdf help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-reader-help-en.control b/help/en/html/opie-reader-help-en.control
new file mode 100644
index 0000000..2a4194e
--- a/dev/null
+++ b/help/en/html/opie-reader-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-reader-help-en
2Files: help/en/html/reader.html help/en/html/reader
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-reader
7License: GPL
8Description: reader help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-remote-help-en.control b/help/en/html/opie-remote-help-en.control
new file mode 100644
index 0000000..94f03a8
--- a/dev/null
+++ b/help/en/html/opie-remote-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-remote-help-en
2Files: help/en/html/remote.html help/en/html/remote
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-remote
7License: GPL
8Description: remote help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-rotation-help-en.control b/help/en/html/opie-rotation-help-en.control
new file mode 100644
index 0000000..b5593b1
--- a/dev/null
+++ b/help/en/html/opie-rotation-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-rotation-help-en
2Files: help/en/html/rotation.html help/en/html/rotation
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-rotation
7License: GPL
8Description: rotation help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-security-help-en.control b/help/en/html/opie-security-help-en.control
new file mode 100644
index 0000000..3aef0e0
--- a/dev/null
+++ b/help/en/html/opie-security-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-security-help-en
2Files: help/en/html/security.html help/en/html/security
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-security
7License: GPL
8Description: security help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-sfcave-help-en.control b/help/en/html/opie-sfcave-help-en.control
new file mode 100644
index 0000000..b8f1ab6
--- a/dev/null
+++ b/help/en/html/opie-sfcave-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-sfcave-help-en
2Files: help/en/html/sfcave.html help/en/html/sfcave
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-sfcave
7License: GPL
8Description: sfcave help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-sheetqt-help-en.control b/help/en/html/opie-sheetqt-help-en.control
new file mode 100644
index 0000000..de47fe5
--- a/dev/null
+++ b/help/en/html/opie-sheetqt-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-sheetqt-help-en
2Files: help/en/html/sheetqt.html help/en/html/sheetqt
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-sheetqt
7License: GPL
8Description: sheetqt help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-showimg-help-en.control b/help/en/html/opie-showimg-help-en.control
new file mode 100644
index 0000000..e4fced5
--- a/dev/null
+++ b/help/en/html/opie-showimg-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-showimg-help-en
2Files: help/en/html/showimg.html help/en/html/showimg
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-showimg
7License: GPL
8Description: showimg help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-shutdown-help-en.control b/help/en/html/opie-shutdown-help-en.control
new file mode 100644
index 0000000..cf4b153
--- a/dev/null
+++ b/help/en/html/opie-shutdown-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-shutdown-help-en
2Files: help/en/html/shutdown.html help/en/html/shutdown
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-shutdown
7License: GPL
8Description: shutdown help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-snake-help-en.control b/help/en/html/opie-snake-help-en.control
new file mode 100644
index 0000000..4b82cf9
--- a/dev/null
+++ b/help/en/html/opie-snake-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-snake-help-en
2Files: help/en/html/snake.html help/en/html/snake
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-snake
7License: GPL
8Description: snake help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-sound-help-en.control b/help/en/html/opie-sound-help-en.control
new file mode 100644
index 0000000..cb34934
--- a/dev/null
+++ b/help/en/html/opie-sound-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-sound-help-en
2Files: help/en/html/sound.html help/en/html/sound
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-sound
7License: GPL
8Description: sound help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-sshkeys-help-en.control b/help/en/html/opie-sshkeys-help-en.control
new file mode 100644
index 0000000..f3528c2
--- a/dev/null
+++ b/help/en/html/opie-sshkeys-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-sshkeys-help-en
2Files: help/en/html/sshkeys.html help/en/html/sshkeys
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-sshkeys
7License: GPL
8Description: sshkeys help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-sysinfo-help-en.control b/help/en/html/opie-sysinfo-help-en.control
new file mode 100644
index 0000000..21ccd27
--- a/dev/null
+++ b/help/en/html/opie-sysinfo-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-sysinfo-help-en
2Files: help/en/html/sysinfo.html help/en/html/sysinfo
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-sysinfo
7License: GPL
8Description: sysinfo help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-systemtime-help-en.control b/help/en/html/opie-systemtime-help-en.control
new file mode 100644
index 0000000..6b16f46
--- a/dev/null
+++ b/help/en/html/opie-systemtime-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-systemtime-help-en
2Files: help/en/html/systemtime.html help/en/html/systemtime
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-systemtime
7License: GPL
8Description: systemtime help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-tableviewer-help-en.control b/help/en/html/opie-tableviewer-help-en.control
new file mode 100644
index 0000000..3394367
--- a/dev/null
+++ b/help/en/html/opie-tableviewer-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-tableviewer-help-en
2Files: help/en/html/tableviewer.html help/en/html/tableviewer
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-tableviewer
7License: GPL
8Description: tableviewer help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-tetrix-help-en.control b/help/en/html/opie-tetrix-help-en.control
new file mode 100644
index 0000000..c5a09f9
--- a/dev/null
+++ b/help/en/html/opie-tetrix-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-tetrix-help-en
2Files: help/en/html/tetrix.html help/en/html/tetrix
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-tetrix
7License: GPL
8Description: tetrix help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-tictac-help-en.control b/help/en/html/opie-tictac-help-en.control
new file mode 100644
index 0000000..5336b2a
--- a/dev/null
+++ b/help/en/html/opie-tictac-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-tictac-help-en
2Files: help/en/html/tictac.html help/en/html/tictac
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-tictac
7License: GPL
8Description: tictac help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-tinykate-help-en.control b/help/en/html/opie-tinykate-help-en.control
new file mode 100644
index 0000000..602bfd2
--- a/dev/null
+++ b/help/en/html/opie-tinykate-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-tinykate-help-en
2Files: help/en/html/tinykate.html help/en/html/tinykate
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-tinykate
7License: GPL
8Description: tinykate help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-ubrowser-help-en.control b/help/en/html/opie-ubrowser-help-en.control
new file mode 100644
index 0000000..98b3b7a
--- a/dev/null
+++ b/help/en/html/opie-ubrowser-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-ubrowser-help-en
2Files: help/en/html/ubrowser.html help/en/html/ubrowser
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-ubrowser
7License: GPL
8Description: ubrowser help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-usermanager-help-en.control b/help/en/html/opie-usermanager-help-en.control
new file mode 100644
index 0000000..9642da1
--- a/dev/null
+++ b/help/en/html/opie-usermanager-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-usermanager-help-en
2Files: help/en/html/usermanager.html help/en/html/usermanager
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-usermanager
7License: GPL
8Description: usermanager help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-vmemo.html b/help/en/html/opie-vmemo.html
deleted file mode 100644
index f22e8a7..0000000
--- a/help/en/html/opie-vmemo.html
+++ b/dev/null
@@ -1,46 +0,0 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
2<html> <head>
3<title>Vmemo</title>
4</head>
5
6<body>
7<center><h1>Vmemo</h1></center>
8Vmemo is a voice recording taskbar applet. It needs the vmemo-settings
9package to also be installed.
10<br>This document covers both Vmemo taskbar
11applet and Vmemo settings app.
12
13<h2>Vmemo usage:</h2>
14<P>Vmemo must first be set up in the <b>Vmemo Settings</b> app available from the
15Settings tab.
16<br>Once you do that, you can either start recording by a key press, or
17clicking on the microphone icon on the taskbar.
18<br>You stop the recording by pressing your chosen recording key again, or
19by clicking on the taskbar icon a second time, if you are using that.
20
21<h2>Vmemo Settings usage:</h2>
22In Vmemo settings you can select various options for recording with
23vmemo.
24<BR><B>Visual Alerts</b> will raise a window when you are recording,
25and will disappear when it stops recording.
26<BR><B>Sample Rate</B> will allow you to select various sample rates
27available. The higher the sample rate, the better quality sound, but
28also larger files.
29<BR><B>Recording Directory</B> allows you to select where you want the
30files to be placed when recording.
31<BR><B>Recording Key</B> Selects which button start/ends recording or
32to use the taskbar icon for recording.
33<BR><B>Recording Limit</B> Lets you choose how long the recording
34will last. Unlimited will continue recording until you stop it by
35pushing your selected recording button again, or by pusching on the
36taskbar icon.
37<BR><B>Restart Opie if needed</B> will restart opie after you close
38Vmemo Settings app, if you have chosen a different recording key.
39
40<hr>
41<address><center><pre>
42&copy; 2002<a href="mailto:llornkcor@handhelds.org">ljp</a> llornkcor@handhelds.org</a></pre></address>
43<!-- hhmts start -->
44Last modified: Fri Oct 18 01:16:44 +0000 2002
45<!-- hhmts end -->
46</body> </html>
diff --git a/help/en/html/opie-wlansetup-help-en.control b/help/en/html/opie-wlansetup-help-en.control
new file mode 100644
index 0000000..7f555f7
--- a/dev/null
+++ b/help/en/html/opie-wlansetup-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-wlansetup-help-en
2Files: help/en/html/wlansetup.html help/en/html/wlansetup
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-wlansetup
7License: GPL
8Description: wlansetup help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-wordgame-help-en.control b/help/en/html/opie-wordgame-help-en.control
new file mode 100644
index 0000000..f9961fc
--- a/dev/null
+++ b/help/en/html/opie-wordgame-help-en.control
@@ -0,0 +1,9 @@
1Package: opie-wordgame-help-en
2Files: help/en/html/wordgame.html help/en/html/wordgame
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: Team Opie <opie@handhelds.org>
6Depends: opie-wordgame
7License: GPL
8Description: wordgame help files (en)
9Version: $QPE_VERSION$EXTRAVERSION
diff --git a/help/en/html/opie-write.html b/help/en/html/opie-write.html
new file mode 100644
index 0000000..c6d92f1
--- a/dev/null
+++ b/help/en/html/opie-write.html
@@ -0,0 +1,7 @@
1<html> <head> <title>opie-write</title> </head>
2<body>
3 <center><h1>opie-write</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/opieftp.html b/help/en/html/opieftp.html
new file mode 100644
index 0000000..bf9db2a
--- a/dev/null
+++ b/help/en/html/opieftp.html
@@ -0,0 +1,7 @@
1<html> <head> <title>opieftp</title> </head>
2<body>
3 <center><h1>opieftp</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/opieplayer.html b/help/en/html/opieplayer.html
new file mode 100644
index 0000000..8acc0ec
--- a/dev/null
+++ b/help/en/html/opieplayer.html
@@ -0,0 +1,7 @@
1<html> <head> <title>opieplayer</title> </head>
2<body>
3 <center><h1>opieplayer</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/opierec.html b/help/en/html/opierec.html
new file mode 100644
index 0000000..6644a07
--- a/dev/null
+++ b/help/en/html/opierec.html
@@ -0,0 +1,71 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
2<html> <head>
3<title>Opierec</title>
4</head>
5
6<body>
7<h1>Opierec</h1>
8<h4>
9Opierec</h4> is a simple voice recording and audio sampling application for embedded devices.<P>
10Opierec is easy to use, and can record just by pushing your PDA's
11<B>toggle</B> switch, or by clicking on Opierec's
12<B>Rec</B> button.<BR>
13It can be used for voice memos, or CD quality audio sampling.
14<P>
15You first need to configure where you want your file to be recorded at,
16depending on what's available CF, or SD cards. The default is
17recording to your devices main memory. You
18can record wave files using Intel/DVI ADPCM compression format, so they won't take so much space on your device. You will need to
19choose your default recording length, but can always stop recording by
20hitting the <B>toggle</B> button, or the <B>Stop</B> button.
21<P>You can delete, rename, beam (via Ir, if available), or play files by holding the stylus down on
22the selected file in the file view.
23<P>You can also 'scroll' through a file by either grabbing the slider,
24or by using the <B>Forward</B> or <B>Backward</B> buttons, or the
25<B>right</B> and <B>left toggle</B> button.
26<P>On the Configuration tab, you have a choice between sampling rates,
27bit rates ( disabled when using compressed wave), size limit in
28seconds, and file destination media. You are also able to adjust the
29sound's input and output levels, or quickly mute either.
30<P><P>
31Opierec's audio files are compatible with desktop audio editors
32and players.
33<P><P>
34<HR><P>
35Opierec was written by <a
36href="mailto:llornkcor@handhelds.org">L.J. Potter</a> llornkcor@handhelds.org<br>
37Copyright
38&copy; 2002 by L.J. Potter
39<HR>
40ADPCM encoding is<P>
41<CODE>
42
43Copyright 1992 by Stichting Mathematisch Centrum, Amsterdam, The
44Netherlands.
45
46 All Rights Reserved
47
48Permission to use, copy, modify, and distribute this software and its
49documentation for any purpose and without fee is hereby granted,
50provided that the above copyright notice appear in all copies and that
51both that copyright notice and this permission notice appear in
52supporting documentation, and that the names of Stichting Mathematisch
53Centrum or CWI not be used in advertising or publicity pertaining to
54distribution of the software without specific, written prior permission.
55
56STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
57THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
58FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
59FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
60WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
61ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
62OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
63
64</CODE>
65<P><P><a href="http://www.trolltech.com">Trolltech</a>
66<hr>
67<address></address>
68<!-- hhmts start -->
69Last modified: Mon Jun 9 15:56:41 MDT 2003
70<!-- hhmts end -->
71</body> </html>
diff --git a/help/en/html/osearch.html b/help/en/html/osearch.html
new file mode 100644
index 0000000..7c9f571
--- a/dev/null
+++ b/help/en/html/osearch.html
@@ -0,0 +1,20 @@
1<html><head><title>Search Opie</title></head><body>
2<p align="center">
3<img src="osearch/OSearch.png">
4<h1>Search Opie with OSearch</h1>
5<hr>
6<p align="left">
7OSearch is a search tool for the Opie PIM entries.
8It also searches for documents and applications.
9<br>
10<ul>
11<li><a href="osearch/search.html">Search</a></li>
12<li><a href="osearch/addressbook.html">Addressbook</a></li>
13<li><a href="osearch/datebook.html">Datebook</a></li>
14<li><a href="osearch/todo.html">Todolist</a></li>
15<li><a href="osearch/documents.html">Documents</a></li>
16<li><a href="osearch/applications.html">Applications</a></li>
17<li><a href="osearch/settings.html">Settings</a></li>
18<li><a href="osearch/about.html">About</a></li>
19</ul>
20</body></html>
diff --git a/help/en/html/oxygen.html b/help/en/html/oxygen.html
new file mode 100644
index 0000000..07469e3
--- a/dev/null
+++ b/help/en/html/oxygen.html
@@ -0,0 +1,7 @@
1<html> <head> <title>oxygen</title> </head>
2<body>
3 <center><h1>oxygen</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/parashoot.html b/help/en/html/parashoot.html
new file mode 100644
index 0000000..2df27e7
--- a/dev/null
+++ b/help/en/html/parashoot.html
@@ -0,0 +1,7 @@
1<html> <head> <title>parashoot</title> </head>
2<body>
3 <center><h1>parashoot</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/patience.html b/help/en/html/patience.html
new file mode 100644
index 0000000..2880501
--- a/dev/null
+++ b/help/en/html/patience.html
@@ -0,0 +1,7 @@
1<html> <head> <title>patience</title> </head>
2<body>
3 <center><h1>patience</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/qasteroids.html b/help/en/html/qasteroids.html
new file mode 100644
index 0000000..c5e484f
--- a/dev/null
+++ b/help/en/html/qasteroids.html
@@ -0,0 +1,7 @@
1<html> <head> <title>qasteroids</title> </head>
2<body>
3 <center><h1>qasteroids</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/qpdf.html b/help/en/html/qpdf.html
new file mode 100644
index 0000000..31303c2
--- a/dev/null
+++ b/help/en/html/qpdf.html
@@ -0,0 +1,7 @@
1<html> <head> <title>qpdf</title> </head>
2<body>
3 <center><h1>qpdf</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/reader.html b/help/en/html/reader.html
new file mode 100644
index 0000000..5bb5e29
--- a/dev/null
+++ b/help/en/html/reader.html
@@ -0,0 +1,7 @@
1<html> <head> <title>reader</title> </head>
2<body>
3 <center><h1>reader</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/remote.html b/help/en/html/remote.html
new file mode 100644
index 0000000..d08316c
--- a/dev/null
+++ b/help/en/html/remote.html
@@ -0,0 +1,7 @@
1<html> <head> <title>remote</title> </head>
2<body>
3 <center><h1>remote</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/rotation.html b/help/en/html/rotation.html
new file mode 100644
index 0000000..2ea68d3
--- a/dev/null
+++ b/help/en/html/rotation.html
@@ -0,0 +1,7 @@
1<html> <head> <title>rotation</title> </head>
2<body>
3 <center><h1>rotation</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/security.html b/help/en/html/security.html
new file mode 100644
index 0000000..6d1c51c
--- a/dev/null
+++ b/help/en/html/security.html
@@ -0,0 +1,7 @@
1<html> <head> <title>security</title> </head>
2<body>
3 <center><h1>security</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/sfcave.html b/help/en/html/sfcave.html
new file mode 100644
index 0000000..1c05056
--- a/dev/null
+++ b/help/en/html/sfcave.html
@@ -0,0 +1,7 @@
1<html> <head> <title>sfcave</title> </head>
2<body>
3 <center><h1>sfcave</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/showimg.html b/help/en/html/showimg.html
new file mode 100644
index 0000000..85aa7d4
--- a/dev/null
+++ b/help/en/html/showimg.html
@@ -0,0 +1,7 @@
1<html> <head> <title>showimg</title> </head>
2<body>
3 <center><h1>showimg</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/shutdown.html b/help/en/html/shutdown.html
new file mode 100644
index 0000000..01079bf
--- a/dev/null
+++ b/help/en/html/shutdown.html
@@ -0,0 +1,7 @@
1<html> <head> <title>shutdown</title> </head>
2<body>
3 <center><h1>shutdown</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/snake.html b/help/en/html/snake.html
new file mode 100644
index 0000000..9a68fe0
--- a/dev/null
+++ b/help/en/html/snake.html
@@ -0,0 +1,7 @@
1<html> <head> <title>snake</title> </head>
2<body>
3 <center><h1>snake</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/sound.html b/help/en/html/sound.html
new file mode 100644
index 0000000..7a85cc8
--- a/dev/null
+++ b/help/en/html/sound.html
@@ -0,0 +1,7 @@
1<html> <head> <title>sound</title> </head>
2<body>
3 <center><h1>sound</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/sshkeys.html b/help/en/html/sshkeys.html
new file mode 100644
index 0000000..4f44cf0
--- a/dev/null
+++ b/help/en/html/sshkeys.html
@@ -0,0 +1,7 @@
1<html> <head> <title>sshkeys</title> </head>
2<body>
3 <center><h1>sshkeys</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/sysinfo.html b/help/en/html/sysinfo.html
new file mode 100644
index 0000000..7de7cfe
--- a/dev/null
+++ b/help/en/html/sysinfo.html
@@ -0,0 +1,61 @@
1<html><head><title>SysInfo</title></head><body>
2<p align="center">
3<img src="sysinfo/SystemInfo">
4<h1>SysInfo</h1>
5<b>System information viewer</b>
6<p align="left">
7<hr>
8This application presents a set of tabbed pages each containing
9information about the current status of the device's <b>Memory</b>,
10<b>Storage</b>, <b>CPU</b>, <b>Processes</b>, <b>Kernal Modules</b>,
11and software <b>Versions</b>.
12</p>
13<p>
14
15<img src="sysinfo/memorytabicon"><b>Memory</b>
16<br>
17Displays memory use.&nbsp;Used memory is displayed on the left of
18the bar in red.&nbsp;Total available memory equals Free
19<em>plus</em> Cached memory.&nbsp;Opie makes use of spare Free
20memory as Cache to improve speed, but will reclaim Cached memory
21whenever necessary.
22<p>
23
24<img src="sysinfo/storagetabicon"><b>Storage</b>
25<br>
26Displays storage available for any media currently in use.
27<p>
28
29<img src="sysinfo/cputabicon"><b>CPU</b>
30<br>
31Displays the CPU usage, or how hard the processor is working.
32<p>
33
34<img src="sysinfo/processtabicon"><b>Processes</b>
35<br>
36Displays all processes currently running on the system.&nbsp;
37Additional information about the process can be viewed by clicking
38and holding the desired process.&nbsp;Signals can be sent to a
39process by selecting the process, selecting the desired signal
40and then clicking the <b>Send</b> button.
41<p>
42<b>WARNING:</b>&nbsp;Stopping processes can render the device
43unstable until it is rebooted.
44<p>
45
46<img src="sysinfo/moduletabicon"><b>Kernel Modules</b>
47<br>
48Displays all kernel modules currently loaded on the system.&nbsp;
49Additional information about the module can be viewed by clicking
50and holding the desired module.&nbsp;A module can be removed
51by selecting the process, selecting the desired removal option and
52then clicking the <b>Send</b> button.
53<p>
54<b>WARNING:</b>&nbsp;Removing modules can render the device
55unstable until it is rebooted.
56<p>
57
58<img src="sysinfo/versiontabicon"><b>Version</b>
59<br>
60Displays software version numbers.
61</body></html>
diff --git a/help/en/html/systemtime.html b/help/en/html/systemtime.html
new file mode 100644
index 0000000..1b5b146
--- a/dev/null
+++ b/help/en/html/systemtime.html
@@ -0,0 +1,23 @@
1<html><head><title>SystemTime</title></head><body>
2<p align="center">
3<img src="netsystemtime/DateTime">
4<h1>SystemTime</h1>
5<b>Set system clock</b>
6<p align="left">
7<hr>
8This application sets the device's date, time and Opie global display
9options.&nbsp;The date and time can be set manually, set using an NTP
10time server or predicted based on previous time drift information.
11<p>
12This application can be accessed by either the icon on the Settings tab
13or by clicking on the clock in the lower right-hand corner of the screen.
14<br>
15<ul>
16<li><a href="systemtime/time.html"><img src="netsystemtime/DateTime" width="16" height="16">Setting time/date</a></li>
17<li><a href="systemtime/format.html"><img src="netsystemtime/formattab">Time/date formatting</a></li>
18<li><a href="systemtime/configuration.html"><img src="SettingsIcon">Configuration</a></li>
19<li><a href="systemtime/ntp.html"><img src="netsystemtime/ntptab">Time sever synchronization</a></li>
20<li><a href="systemtime/predict.html"><img src="netsystemtime/predicttab">Time prediction</a></li>
21<li><a href="systemtime/about.html"><img src="UtilsIcon">About</a></li>
22</ul>
23</body></html>
diff --git a/help/en/html/tableviewer.html b/help/en/html/tableviewer.html
new file mode 100644
index 0000000..ea8aa06
--- a/dev/null
+++ b/help/en/html/tableviewer.html
@@ -0,0 +1,7 @@
1<html> <head> <title>tableviewer</title> </head>
2<body>
3 <center><h1>tableviewer</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/tetrix.html b/help/en/html/tetrix.html
new file mode 100644
index 0000000..07df6e1
--- a/dev/null
+++ b/help/en/html/tetrix.html
@@ -0,0 +1,7 @@
1<html> <head> <title>tetrix</title> </head>
2<body>
3 <center><h1>tetrix</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/textedit.html b/help/en/html/textedit.html
new file mode 100644
index 0000000..54de3ad
--- a/dev/null
+++ b/help/en/html/textedit.html
@@ -0,0 +1,8 @@
1<html><head><title>Text Editor</title></head><body>
2<img src="textedit/TextEditor.png">
3<h1>Text Editor</h1>
4<P align="center">FIXME Description<br>
5<ul align="left">
6<li><a href="textedit/about.html">About</a></li>
7</ul>
8</body></html>
diff --git a/help/en/html/tictac.html b/help/en/html/tictac.html
new file mode 100644
index 0000000..a7947bf
--- a/dev/null
+++ b/help/en/html/tictac.html
@@ -0,0 +1,7 @@
1<html> <head> <title>tictac</title> </head>
2<body>
3 <center><h1>tictac</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/tinykate.html b/help/en/html/tinykate.html
new file mode 100644
index 0000000..9960a40
--- a/dev/null
+++ b/help/en/html/tinykate.html
@@ -0,0 +1,7 @@
1<html> <head> <title>tinykate</title> </head>
2<body>
3 <center><h1>tinykate</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/today.html b/help/en/html/today.html
new file mode 100644
index 0000000..90fe53b
--- a/dev/null
+++ b/help/en/html/today.html
@@ -0,0 +1,8 @@
1<html><head><title>Today</title></head><body>
2<img src="today/today_icon.png">
3<h1>Today</h1>
4<P align="center">FIXME Description<br>
5<ul align="left">
6<li><a href="today/about.html">About</a></li>
7</ul>
8</body></html>
diff --git a/help/en/html/todolist.html b/help/en/html/todolist.html
new file mode 100644
index 0000000..3bc77fb
--- a/dev/null
+++ b/help/en/html/todolist.html
@@ -0,0 +1,8 @@
1<html><head><title>Todolist</title></head><body>
2<img src="todo/TodoList.png">
3<h1>Todolist</h1>
4<P align="center">FIXME Description<br>
5<ul align="left">
6<li><a href="todolist/about.html">About</a></li>
7</ul>
8</body></html>
diff --git a/help/en/html/ubrowser.html b/help/en/html/ubrowser.html
new file mode 100644
index 0000000..06ccfdd
--- a/dev/null
+++ b/help/en/html/ubrowser.html
@@ -0,0 +1,7 @@
1<html> <head> <title>ubrowser</title> </head>
2<body>
3 <center><h1>ubrowser</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/usermanager.html b/help/en/html/usermanager.html
new file mode 100644
index 0000000..692885d
--- a/dev/null
+++ b/help/en/html/usermanager.html
@@ -0,0 +1,7 @@
1<html> <head> <title>usermanager</title> </head>
2<body>
3 <center><h1>usermanager</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/vmemo-help-en.control b/help/en/html/vmemo-help-en.control
deleted file mode 100644
index 8753aec..0000000
--- a/help/en/html/vmemo-help-en.control
+++ b/dev/null
@@ -1,11 +0,0 @@
1Package: vmemo-help-en
2Files: help/en/html/vmemo.html
3Priority: optional
4Section: opie/onlinedoc
5Maintainer: ljp <llornkcor@handhelds.org>
6Architecture: arm
7Version: $QPE_VERSION-$SUB_VERSION
8Depends: vmemo
9License: GPL
10Description: Opie Vmemo voice recording help files (english)
11
diff --git a/help/en/html/wlansetup.html b/help/en/html/wlansetup.html
new file mode 100644
index 0000000..9dda990
--- a/dev/null
+++ b/help/en/html/wlansetup.html
@@ -0,0 +1,7 @@
1<html> <head> <title>wlansetup</title> </head>
2<body>
3 <center><h1>wlansetup</h1></center>
4 <hr>
5</body>
6</html>
7
diff --git a/help/en/html/wordgame.html b/help/en/html/wordgame.html
new file mode 100644
index 0000000..d400584
--- a/dev/null
+++ b/help/en/html/wordgame.html
@@ -0,0 +1,7 @@
1<html> <head> <title>wordgame</title> </head>
2<body>
3 <center><h1>wordgame</h1></center>
4 <hr>
5</body>
6</html>
7