-rw-r--r-- | core/launcher/launcher.cpp | 910 |
1 files changed, 570 insertions, 340 deletions
diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp index fd89410..dc81c9e 100644 --- a/core/launcher/launcher.cpp +++ b/core/launcher/launcher.cpp | |||
@@ -1,6 +1,5 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (c) 2002 Holger zecke Freyther | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
4 | ** | 3 | ** |
5 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
6 | ** | 5 | ** |
@@ -25,4 +24,5 @@ | |||
25 | 24 | ||
26 | #include <qpe/config.h> | 25 | #ifdef QWS |
27 | #include <qpe/qcopenvelope_qws.h> | 26 | #include <qpe/qcopenvelope_qws.h> |
27 | #endif | ||
28 | #include <qpe/resource.h> | 28 | #include <qpe/resource.h> |
@@ -36,5 +36,8 @@ | |||
36 | 36 | ||
37 | #include <qdatetime.h> | 37 | #include <qpe/version.h> |
38 | |||
38 | #include <qdir.h> | 39 | #include <qdir.h> |
40 | #ifdef QWS | ||
39 | #include <qwindowsystem_qws.h> | 41 | #include <qwindowsystem_qws.h> |
42 | #endif | ||
40 | #include <qtimer.h> | 43 | #include <qtimer.h> |
@@ -54,2 +57,3 @@ | |||
54 | #include <qtextstream.h> | 57 | #include <qtextstream.h> |
58 | #include <qpopupmenu.h> | ||
55 | 59 | ||
@@ -73,7 +77,3 @@ | |||
73 | #include "mediummountgui.h" | 77 | #include "mediummountgui.h" |
74 | //#define SHOW_ALL | ||
75 | |||
76 | // uidGen | ||
77 | 78 | ||
78 | // uidGen | ||
79 | namespace { | 79 | namespace { |
@@ -110,2 +110,19 @@ namespace { | |||
110 | 110 | ||
111 | |||
112 | //#define SHOW_ALL | ||
113 | |||
114 | class CategoryTab : public QTab | ||
115 | { | ||
116 | public: | ||
117 | CategoryTab( const QIconSet &icon, const QString &text=QString::null ) | ||
118 | : QTab( icon, text ) | ||
119 | { | ||
120 | } | ||
121 | |||
122 | QColor bgColor; | ||
123 | QColor fgColor; | ||
124 | }; | ||
125 | |||
126 | //=========================================================================== | ||
127 | |||
111 | CategoryTabWidget::CategoryTabWidget( QWidget* parent ) : | 128 | CategoryTabWidget::CategoryTabWidget( QWidget* parent ) : |
@@ -120,5 +137,5 @@ void CategoryTabWidget::prevTab() | |||
120 | if ( categoryBar ) { | 137 | if ( categoryBar ) { |
121 | int n = categoryBar->count(); | 138 | int n = categoryBar->count(); |
122 | int tab = categoryBar->currentTab(); | 139 | int tab = categoryBar->currentTab(); |
123 | if ( tab >= 0 ) | 140 | if ( tab >= 0 ) |
124 | categoryBar->setCurrentTab( (tab - 1 + n)%n ); | 141 | categoryBar->setCurrentTab( (tab - 1 + n)%n ); |
@@ -130,5 +147,5 @@ void CategoryTabWidget::nextTab() | |||
130 | if ( categoryBar ) { | 147 | if ( categoryBar ) { |
131 | int n = categoryBar->count(); | 148 | int n = categoryBar->count(); |
132 | int tab = categoryBar->currentTab(); | 149 | int tab = categoryBar->currentTab(); |
133 | categoryBar->setCurrentTab( (tab + 1)%n ); | 150 | categoryBar->setCurrentTab( (tab + 1)%n ); |
134 | } | 151 | } |
@@ -141,22 +158,30 @@ void CategoryTabWidget::addItem( const QString& linkfile ) | |||
141 | if ( !app->isValid() ) { | 158 | if ( !app->isValid() ) { |
142 | delete app; | 159 | delete app; |
143 | return; | 160 | app=0; |
144 | } | 161 | } |
145 | if ( !app->file().isEmpty() ) { | 162 | if ( !app || !app->file().isEmpty() ) { |
146 | // A document | 163 | // A document |
147 | delete app; | 164 | delete app; |
148 | app = new DocLnk(linkfile); | 165 | app = new DocLnk(linkfile); |
149 | ((LauncherView*)(stack->widget(ids.count()-1)))->addItem(app); | 166 | if ( app->fileKnown() ) { |
150 | return; | 167 | ((LauncherView*)(stack->widget(ids.count()-1)))->addItem(app); |
168 | } else { | ||
169 | ((LauncherView*)(stack->widget(ids.count()-1)))->sort(); | ||
170 | delete app; | ||
171 | } | ||
172 | return; | ||
151 | } | 173 | } |
174 | // An application | ||
152 | for ( QStringList::Iterator it=ids.begin(); it!=ids.end(); ++it) { | 175 | for ( QStringList::Iterator it=ids.begin(); it!=ids.end(); ++it) { |
153 | if ( !(*it).isEmpty() ) { | 176 | if ( !(*it).isEmpty() ) { |
154 | QRegExp tf(*it,FALSE,TRUE); | 177 | QRegExp tf(*it,FALSE,TRUE); |
155 | if ( tf.match(app->type()) >= 0 ) { | 178 | if ( tf.match(app->type()) >= 0 ) { |
156 | ((LauncherView*)stack->widget(i))->addItem(app); | 179 | ((LauncherView*)stack->widget(i))->addItem(app); |
157 | return; | 180 | return; |
158 | } | 181 | } |
159 | i++; | 182 | i++; |
160 | } | 183 | } |
161 | } | 184 | } |
185 | |||
186 | QCopEnvelope e("QPE/TaskBar","reloadApps()"); | ||
162 | } | 187 | } |
@@ -164,3 +189,3 @@ void CategoryTabWidget::addItem( const QString& linkfile ) | |||
164 | void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder, | 189 | void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder, |
165 | AppLnkSet* docFolder, const QList<FileSystem> &fs) | 190 | AppLnkSet* docFolder, const QList<FileSystem> &fs) |
166 | { | 191 | { |
@@ -179,7 +204,10 @@ void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder, | |||
179 | 204 | ||
205 | Config cfg("Launcher"); | ||
206 | |||
180 | QStringList types = rootFolder->types(); | 207 | QStringList types = rootFolder->types(); |
181 | for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) { | 208 | for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) { |
182 | if ( !(*it).isEmpty() ) { | 209 | if ( !(*it).isEmpty() ) { |
183 | newView(*it,rootFolder->typePixmap(*it),rootFolder->typeName(*it)); | 210 | (void)newView(*it,rootFolder->typePixmap(*it),rootFolder->typeName(*it)); |
184 | } | 211 | setTabAppearance( *it, cfg ); |
212 | } | ||
185 | } | 213 | } |
@@ -188,14 +216,14 @@ void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder, | |||
188 | while ( (l=it.current()) ) { | 216 | while ( (l=it.current()) ) { |
189 | if ( l->type() == "Separator" ) { | 217 | if ( l->type() == "Separator" ) { // No tr |
190 | rootFolder->remove(l); | 218 | rootFolder->remove(l); |
191 | delete l; | 219 | delete l; |
192 | } else { | 220 | } else { |
193 | int i=0; | 221 | int i=0; |
194 | for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) { | 222 | for ( QStringList::Iterator it=types.begin(); it!=types.end(); ++it) { |
195 | if ( *it == l->type() ) | 223 | if ( *it == l->type() ) |
196 | ((LauncherView*)stack->widget(i))->addItem(l,FALSE); | 224 | ((LauncherView*)stack->widget(i))->addItem(l,FALSE); |
197 | i++; | 225 | i++; |
198 | } | 226 | } |
199 | } | 227 | } |
200 | ++it; | 228 | ++it; |
201 | } | 229 | } |
@@ -203,6 +231,10 @@ void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder, | |||
203 | for (int i=0; i<tabs; i++) | 231 | for (int i=0; i<tabs; i++) |
204 | ((LauncherView*)stack->widget(i))->sort(); | 232 | ((LauncherView*)stack->widget(i))->sort(); |
205 | 233 | ||
206 | // all documents | 234 | // all documents |
207 | docview = newView( QString::null, Resource::loadPixmap("DocsIcon"), tr("Documents")); | 235 | QImage img( Resource::loadImage( "DocsIcon" ) ); |
236 | QPixmap pm; | ||
237 | pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); | ||
238 | docview = newView( "Documents", // No tr | ||
239 | pm, tr("Documents")); | ||
208 | docview->populate( docFolder, QString::null ); | 240 | docview->populate( docFolder, QString::null ); |
@@ -211,2 +243,3 @@ void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder, | |||
211 | docview->setToolsEnabled(TRUE); | 243 | docview->setToolsEnabled(TRUE); |
244 | setTabAppearance( "Documents", cfg ); // No tr | ||
212 | 245 | ||
@@ -220,2 +253,44 @@ void CategoryTabWidget::initializeCategories(AppLnkSet* rootFolder, | |||
220 | 253 | ||
254 | void CategoryTabWidget::setTabAppearance( const QString &id, Config &cfg ) | ||
255 | { | ||
256 | QString grp( "Tab %1" ); // No tr | ||
257 | cfg.setGroup( grp.arg(id) ); | ||
258 | LauncherView *v = view( id ); | ||
259 | int idx = ids.findIndex( id ); | ||
260 | CategoryTab *tab = (CategoryTab *)categoryBar->tab( idx ); | ||
261 | |||
262 | // View | ||
263 | QString view = cfg.readEntry( "View", "Icon" ); | ||
264 | if ( view == "List" ) // No tr | ||
265 | v->setViewMode( LauncherView::List ); | ||
266 | QString bgType = cfg.readEntry( "BackgroundType", "Ruled" ); | ||
267 | if ( bgType == "Image" ) { // No tr | ||
268 | QString pm = cfg.readEntry( "BackgroundImage", "wallpaper/marble" ); | ||
269 | v->setBackgroundType( LauncherView::Image, pm ); | ||
270 | } else if ( bgType == "SolidColor" ) { | ||
271 | QString c = cfg.readEntry( "BackgroundColor" ); | ||
272 | v->setBackgroundType( LauncherView::SolidColor, c ); | ||
273 | } | ||
274 | QString textCol = cfg.readEntry( "TextColor" ); | ||
275 | if ( textCol.isEmpty() ) | ||
276 | v->setTextColor( QColor() ); | ||
277 | else | ||
278 | v->setTextColor( QColor(textCol) ); | ||
279 | QStringList font = cfg.readListEntry( "Font", ',' ); | ||
280 | if ( font.count() == 4 ) | ||
281 | v->setViewFont( QFont(font[0], font[1].toInt(), font[2].toInt(), font[3].toInt()!=0) ); | ||
282 | |||
283 | // Tabs | ||
284 | QString tabCol = cfg.readEntry( "TabColor" ); | ||
285 | if ( tabCol.isEmpty() ) | ||
286 | tab->bgColor = QColor(); | ||
287 | else | ||
288 | tab->bgColor = QColor(tabCol); | ||
289 | QString tabTextCol = cfg.readEntry( "TabTextColor" ); | ||
290 | if ( tabTextCol.isEmpty() ) | ||
291 | tab->fgColor = QColor(); | ||
292 | else | ||
293 | tab->fgColor = QColor(tabTextCol); | ||
294 | } | ||
295 | |||
221 | void CategoryTabWidget::updateDocs(AppLnkSet* docFolder, const QList<FileSystem> &fs) | 296 | void CategoryTabWidget::updateDocs(AppLnkSet* docFolder, const QList<FileSystem> &fs) |
@@ -228,2 +303,22 @@ void CategoryTabWidget::updateDocs(AppLnkSet* docFolder, const QList<FileSystem> | |||
228 | 303 | ||
304 | void CategoryTabWidget::tabProperties() | ||
305 | { | ||
306 | LauncherView *view = (LauncherView*)stack->widget( categoryBar->currentTab() ); | ||
307 | QPopupMenu *m = new QPopupMenu( this ); | ||
308 | m->insertItem( tr("Icon View"), LauncherView::Icon ); | ||
309 | m->insertItem( tr("List View"), LauncherView::List ); | ||
310 | m->setItemChecked( (int)view->viewMode(), TRUE ); | ||
311 | int rv = m->exec( QCursor::pos() ); | ||
312 | if ( rv >= 0 && rv != view->viewMode() ) { | ||
313 | view->setViewMode( (LauncherView::ViewMode)rv ); | ||
314 | } | ||
315 | |||
316 | delete m; | ||
317 | } | ||
318 | |||
319 | QString CategoryTabWidget::getAllDocLinkInfo() const | ||
320 | { | ||
321 | return docview->getAllDocLinkInfo(); | ||
322 | } | ||
323 | |||
229 | LauncherView* CategoryTabWidget::newView( const QString& id, const QPixmap& pm, const QString& label ) | 324 | LauncherView* CategoryTabWidget::newView( const QString& id, const QPixmap& pm, const QString& label ) |
@@ -232,7 +327,7 @@ LauncherView* CategoryTabWidget::newView( const QString& id, const QPixmap& pm, | |||
232 | connect( view, SIGNAL(clicked(const AppLnk*)), | 327 | connect( view, SIGNAL(clicked(const AppLnk*)), |
233 | this, SIGNAL(clicked(const AppLnk*))); | 328 | this, SIGNAL(clicked(const AppLnk*))); |
234 | connect( view, SIGNAL(rightPressed(AppLnk*)), | 329 | connect( view, SIGNAL(rightPressed(AppLnk*)), |
235 | this, SIGNAL(rightPressed(AppLnk*))); | 330 | this, SIGNAL(rightPressed(AppLnk*))); |
236 | ids.append(id); | 331 | ids.append(id); |
237 | categoryBar->addTab( new QTab( pm, label ) ); | 332 | categoryBar->addTab( new CategoryTab( pm, label ) ); |
238 | stack->addWidget( view, tabs++ ); | 333 | stack->addWidget( view, tabs++ ); |
@@ -246,4 +341,4 @@ void CategoryTabWidget::updateLink(const QString& linkfile) | |||
246 | while ((view = (LauncherView*)stack->widget(i++))) { | 341 | while ((view = (LauncherView*)stack->widget(i++))) { |
247 | if ( view->removeLink(linkfile) ) | 342 | if ( view->removeLink(linkfile) ) |
248 | break; | 343 | break; |
249 | } | 344 | } |
@@ -266,8 +361,15 @@ void CategoryTabWidget::setBusy(bool on) | |||
266 | if ( on ) | 361 | if ( on ) |
267 | ((LauncherView*)stack->visibleWidget())->setBusy(TRUE); | 362 | ((LauncherView*)stack->visibleWidget())->setBusy(TRUE); |
268 | else | 363 | else |
269 | for (int i=0; i<tabs; i++) | 364 | for (int i=0; i<tabs; i++) |
270 | ((LauncherView*)stack->widget(i))->setBusy(FALSE); | 365 | ((LauncherView*)stack->widget(i))->setBusy(FALSE); |
271 | } | 366 | } |
272 | 367 | ||
368 | LauncherView *CategoryTabWidget::view( const QString &id ) | ||
369 | { | ||
370 | int idx = ids.findIndex( id ); | ||
371 | return (LauncherView *)stack->widget(idx); | ||
372 | } | ||
373 | |||
374 | //=========================================================================== | ||
273 | 375 | ||
@@ -287,5 +389,7 @@ void CategoryTabBar::layoutTabs() | |||
287 | if ( !count() ) | 389 | if ( !count() ) |
288 | return; | 390 | return; |
289 | 391 | ||
290 | // int percentFalloffTable[] = { 100, 70, 40, 12, 6, 3, 1, 0 }; | 392 | // int percentFalloffTable[] = { 100, 70, 40, 12, 6, 3, 1, 0 }; |
393 | int available = width()-1; | ||
394 | QFontMetrics fm = fontMetrics(); | ||
291 | int hiddenTabWidth = -7; | 395 | int hiddenTabWidth = -7; |
@@ -294,3 +398,2 @@ void CategoryTabBar::layoutTabs() | |||
294 | style().tabbarMetrics( this, hframe, vframe, overlap ); | 398 | style().tabbarMetrics( this, hframe, vframe, overlap ); |
295 | QFontMetrics fm = fontMetrics(); | ||
296 | int x = 0; | 399 | int x = 0; |
@@ -298,55 +401,72 @@ void CategoryTabBar::layoutTabs() | |||
298 | QTab *t; | 401 | QTab *t; |
299 | int available = width()-1; | ||
300 | int required = 0; | 402 | int required = 0; |
403 | int eventabwidth = (width()-1)/count(); | ||
404 | enum Mode { HideBackText, Pack, Even } mode=Even; | ||
301 | for ( int i = 0; i < count(); i++ ) { | 405 | for ( int i = 0; i < count(); i++ ) { |
302 | t = tab(i); | 406 | t = tab(i); |
303 | // if (( i < (middleTab - 1) ) || ( i > (middleTab + 1) )) { | 407 | int iw = fm.width( t->text() ) + hframe - overlap; |
304 | if ( i != middleTab ) { | 408 | if ( i != middleTab ) { |
305 | // required += hiddenTabWidth + hframe - overlap; | 409 | available -= hiddenTabWidth + hframe - overlap; |
306 | available -= hiddenTabWidth + hframe - overlap; | 410 | if ( t->iconSet() != 0 ) |
307 | if ( t->iconSet() != 0 ) | 411 | available -= t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); |
308 | available -= t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); | 412 | } |
309 | } else { | 413 | if ( t->iconSet() != 0 ) |
310 | required += fm.width( t->text() ) + hframe - overlap; | 414 | iw += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); |
311 | if ( t->iconSet() != 0 ) | 415 | required += iw; |
312 | required += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); | 416 | // As space gets tight, packed looks better than even. "10" must be at least 0. |
313 | } | 417 | if ( iw >= eventabwidth-10 ) |
418 | mode = Pack; | ||
314 | } | 419 | } |
420 | if ( mode == Pack && required > width()-1 ) | ||
421 | mode = HideBackText; | ||
315 | for ( int i = 0; i < count(); i++ ) { | 422 | for ( int i = 0; i < count(); i++ ) { |
316 | t = tab(i); | 423 | t = tab(i); |
317 | // if (( i < (middleTab - 1) ) || ( i > (middleTab + 1) )) { | 424 | if ( mode != HideBackText ) { |
318 | if ( i != middleTab ) { | 425 | int w = fm.width( t->text() ); |
319 | int w = hiddenTabWidth; | 426 | int ih = 0; |
320 | int ih = 0; | 427 | if ( t->iconSet() != 0 ) { |
321 | if ( t->iconSet() != 0 ) { | 428 | w += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); |
322 | w += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); | 429 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); |
323 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); | 430 | } |
324 | } | 431 | int h = QMAX( fm.height(), ih ); |
325 | int h = QMAX( fm.height(), ih ); | 432 | h = QMAX( h, QApplication::globalStrut().height() ); |
326 | h = QMAX( h, QApplication::globalStrut().height() ); | 433 | |
327 | 434 | h += vframe; | |
328 | h += vframe; | 435 | w += hframe; |
329 | w += hframe; | 436 | |
330 | 437 | QRect tr(x, 0, | |
331 | t->setRect( QRect(x, 0, w, h) ); | 438 | mode == Even ? eventabwidth : w * (width()-1)/required, h); |
332 | x += t->rect().width() - overlap; | 439 | t->setRect(tr); |
333 | r = r.unite( t->rect() ); | 440 | x += tr.width() - overlap; |
334 | } else { | 441 | r = r.unite(tr); |
335 | int w = fm.width( t->text() ); | 442 | } else if ( i != middleTab ) { |
336 | int ih = 0; | 443 | int w = hiddenTabWidth; |
337 | if ( t->iconSet() != 0 ) { | 444 | int ih = 0; |
338 | w += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); | 445 | if ( t->iconSet() != 0 ) { |
339 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); | 446 | w += t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width(); |
340 | } | 447 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); |
341 | int h = QMAX( fm.height(), ih ); | 448 | } |
342 | h = QMAX( h, QApplication::globalStrut().height() ); | 449 | int h = QMAX( fm.height(), ih ); |
343 | 450 | h = QMAX( h, QApplication::globalStrut().height() ); | |
344 | h += vframe; | 451 | |
345 | w += hframe; | 452 | h += vframe; |
346 | 453 | w += hframe; | |
347 | // t->setRect( QRect(x, 0, w * available/required, h) ); | 454 | |
348 | t->setRect( QRect(x, 0, available, h) ); | 455 | t->setRect( QRect(x, 0, w, h) ); |
349 | x += t->rect().width() - overlap; | 456 | x += t->rect().width() - overlap; |
350 | r = r.unite( t->rect() ); | 457 | r = r.unite( t->rect() ); |
351 | } | 458 | } else { |
459 | int ih = 0; | ||
460 | if ( t->iconSet() != 0 ) { | ||
461 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); | ||
462 | } | ||
463 | int h = QMAX( fm.height(), ih ); | ||
464 | h = QMAX( h, QApplication::globalStrut().height() ); | ||
465 | |||
466 | h += vframe; | ||
467 | |||
468 | t->setRect( QRect(x, 0, available, h) ); | ||
469 | x += t->rect().width() - overlap; | ||
470 | r = r.unite( t->rect() ); | ||
471 | } | ||
352 | } | 472 | } |
@@ -369,2 +489,15 @@ void CategoryTabBar::paint( QPainter * p, QTab * t, bool selected ) const | |||
369 | { | 489 | { |
490 | CategoryTabBar *that = (CategoryTabBar *) this; | ||
491 | CategoryTab *ct = (CategoryTab *)t; | ||
492 | QPalette pal = palette(); | ||
493 | bool setPal = FALSE; | ||
494 | if ( ct->bgColor.isValid() ) { | ||
495 | pal.setColor( QPalette::Active, QColorGroup::Background, ct->bgColor ); | ||
496 | pal.setColor( QPalette::Active, QColorGroup::Button, ct->bgColor ); | ||
497 | pal.setColor( QPalette::Inactive, QColorGroup::Background, ct->bgColor ); | ||
498 | pal.setColor( QPalette::Inactive, QColorGroup::Button, ct->bgColor ); | ||
499 | that->setUpdatesEnabled( FALSE ); | ||
500 | that->setPalette( pal ); | ||
501 | setPal = TRUE; | ||
502 | } | ||
370 | #if QT_VERSION >= 300 | 503 | #if QT_VERSION >= 300 |
@@ -382,5 +515,12 @@ void CategoryTabBar::paint( QPainter * p, QTab * t, bool selected ) const | |||
382 | if ( selected ) | 515 | if ( selected ) |
383 | f.setBold( TRUE ); | 516 | f.setBold( TRUE ); |
384 | p->setFont( f ); | 517 | p->setFont( f ); |
385 | 518 | ||
519 | if ( ct->fgColor.isValid() ) { | ||
520 | pal.setColor( QPalette::Active, QColorGroup::Foreground, ct->fgColor ); | ||
521 | pal.setColor( QPalette::Inactive, QColorGroup::Foreground, ct->fgColor ); | ||
522 | that->setUpdatesEnabled( FALSE ); | ||
523 | that->setPalette( pal ); | ||
524 | setPal = TRUE; | ||
525 | } | ||
386 | int iw = 0; | 526 | int iw = 0; |
@@ -388,4 +528,4 @@ void CategoryTabBar::paint( QPainter * p, QTab * t, bool selected ) const | |||
388 | if ( t->iconSet() != 0 ) { | 528 | if ( t->iconSet() != 0 ) { |
389 | iw = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 2; | 529 | iw = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 2; |
390 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); | 530 | ih = t->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height(); |
391 | } | 531 | } |
@@ -394,9 +534,13 @@ void CategoryTabBar::paint( QPainter * p, QTab * t, bool selected ) const | |||
394 | paintLabel( p, QRect( r.left() + (r.width()-w)/2 - 3, | 534 | paintLabel( p, QRect( r.left() + (r.width()-w)/2 - 3, |
395 | r.top() + (r.height()-h)/2, w, h ), t, | 535 | r.top() + (r.height()-h)/2, w, h ), t, |
396 | #if QT_VERSION >= 300 | 536 | #if QT_VERSION >= 300 |
397 | t->identifier() == keyboardFocusTab() | 537 | t->identifier() == keyboardFocusTab() |
398 | #else | 538 | #else |
399 | t->identitifer() == keyboardFocusTab() | 539 | t->identitifer() == keyboardFocusTab() |
400 | #endif | 540 | #endif |
401 | ); | 541 | ); |
542 | if ( setPal ) { | ||
543 | that->unsetPalette(); | ||
544 | that->setUpdatesEnabled( TRUE ); | ||
545 | } | ||
402 | } | 546 | } |
@@ -405,3 +549,3 @@ void CategoryTabBar::paint( QPainter * p, QTab * t, bool selected ) const | |||
405 | void CategoryTabBar::paintLabel( QPainter* p, const QRect&, | 549 | void CategoryTabBar::paintLabel( QPainter* p, const QRect&, |
406 | QTab* t, bool has_focus ) const | 550 | QTab* t, bool has_focus ) const |
407 | { | 551 | { |
@@ -412,11 +556,11 @@ void CategoryTabBar::paintLabel( QPainter* p, const QRect&, | |||
412 | if ( t->iconSet() ) { | 556 | if ( t->iconSet() ) { |
413 | // the tab has an iconset, draw it in the right mode | 557 | // the tab has an iconset, draw it in the right mode |
414 | QIconSet::Mode mode = (t->isEnabled() && isEnabled()) ? QIconSet::Normal : QIconSet::Disabled; | 558 | QIconSet::Mode mode = (t->isEnabled() && isEnabled()) ? QIconSet::Normal : QIconSet::Disabled; |
415 | if ( mode == QIconSet::Normal && has_focus ) | 559 | if ( mode == QIconSet::Normal && has_focus ) |
416 | mode = QIconSet::Active; | 560 | mode = QIconSet::Active; |
417 | QPixmap pixmap = t->iconSet()->pixmap( QIconSet::Small, mode ); | 561 | QPixmap pixmap = t->iconSet()->pixmap( QIconSet::Small, mode ); |
418 | int pixw = pixmap.width(); | 562 | int pixw = pixmap.width(); |
419 | int pixh = pixmap.height(); | 563 | int pixh = pixmap.height(); |
420 | p->drawPixmap( r.left() + 6, r.center().y() - pixh / 2 + 1, pixmap ); | 564 | p->drawPixmap( r.left() + 6, r.center().y() - pixh / 2 + 1, pixmap ); |
421 | r.setLeft( r.left() + pixw + 5 ); | 565 | r.setLeft( r.left() + pixw + 5 ); |
422 | } | 566 | } |
@@ -426,3 +570,3 @@ void CategoryTabBar::paintLabel( QPainter* p, const QRect&, | |||
426 | if ( r.width() < 20 ) | 570 | if ( r.width() < 20 ) |
427 | return; | 571 | return; |
428 | 572 | ||
@@ -430,13 +574,13 @@ void CategoryTabBar::paintLabel( QPainter* p, const QRect&, | |||
430 | #if defined(_WS_WIN32_) | 574 | #if defined(_WS_WIN32_) |
431 | if ( colorGroup().brush( QColorGroup::Button ) == colorGroup().brush( QColorGroup::Background ) ) | 575 | if ( colorGroup().brush( QColorGroup::Button ) == colorGroup().brush( QColorGroup::Background ) ) |
432 | p->setPen( colorGroup().buttonText() ); | 576 | p->setPen( colorGroup().buttonText() ); |
433 | else | 577 | else |
434 | p->setPen( colorGroup().foreground() ); | 578 | p->setPen( colorGroup().foreground() ); |
435 | #else | 579 | #else |
436 | p->setPen( colorGroup().foreground() ); | 580 | p->setPen( colorGroup().foreground() ); |
437 | #endif | 581 | #endif |
438 | p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() ); | 582 | p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() ); |
439 | } else { | 583 | } else { |
440 | p->setPen( palette().disabled().foreground() ); | 584 | p->setPen( palette().disabled().foreground() ); |
441 | p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() ); | 585 | p->drawText( tr, AlignCenter | AlignVCenter | ShowPrefix, t->text() ); |
442 | } | 586 | } |
@@ -459,5 +603,6 @@ Launcher::Launcher( QWidget* parent, const char* name, WFlags fl ) | |||
459 | docsFolder = 0; | 603 | docsFolder = 0; |
604 | |||
460 | int stamp = uidgen.generate(); // this is our timestamp to see which devices we know | 605 | int stamp = uidgen.generate(); // this is our timestamp to see which devices we know |
461 | //uidgen.store( stamp ); | 606 | //uidgen.store( stamp ); |
462 | m_timeStamp = QString::number( stamp ); | 607 | m_timeStamp = QString::number( stamp ); |
463 | 608 | ||
@@ -468,7 +613,7 @@ Launcher::Launcher( QWidget* parent, const char* name, WFlags fl ) | |||
468 | connect( tabs, SIGNAL(selected(const QString&)), | 613 | connect( tabs, SIGNAL(selected(const QString&)), |
469 | this, SLOT(viewSelected(const QString&)) ); | 614 | this, SLOT(viewSelected(const QString&)) ); |
470 | connect( tabs, SIGNAL(clicked(const AppLnk*)), | 615 | connect( tabs, SIGNAL(clicked(const AppLnk*)), |
471 | this, SLOT(select(const AppLnk*))); | 616 | this, SLOT(select(const AppLnk*))); |
472 | connect( tabs, SIGNAL(rightPressed(AppLnk*)), | 617 | connect( tabs, SIGNAL(rightPressed(AppLnk*)), |
473 | this, SLOT(properties(AppLnk*))); | 618 | this, SLOT(properties(AppLnk*))); |
474 | 619 | ||
@@ -478,2 +623,5 @@ Launcher::Launcher( QWidget* parent, const char* name, WFlags fl ) | |||
478 | this, SLOT(systemMessage( const QCString &, const QByteArray &)) ); | 623 | this, SLOT(systemMessage( const QCString &, const QByteArray &)) ); |
624 | QCopChannel *channel = new QCopChannel( "QPE/Launcher", this ); | ||
625 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), | ||
626 | this, SLOT(launcherMessage(const QCString&, const QByteArray&)) ); | ||
479 | #endif | 627 | #endif |
@@ -493,2 +641,4 @@ Launcher::~Launcher() | |||
493 | { | 641 | { |
642 | delete rootFolder; | ||
643 | delete docsFolder; | ||
494 | } | 644 | } |
@@ -497,2 +647,3 @@ static bool isVisibleWindow(int wid) | |||
497 | { | 647 | { |
648 | #ifdef QWS | ||
498 | const QList<QWSWindow> &list = qwsServer->clientWindows(); | 649 | const QList<QWSWindow> &list = qwsServer->clientWindows(); |
@@ -500,5 +651,6 @@ static bool isVisibleWindow(int wid) | |||
500 | for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { | 651 | for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { |
501 | if ( w->winId() == wid ) | 652 | if ( w->winId() == wid ) |
502 | return !w->isFullyObscured(); | 653 | return !w->isFullyObscured(); |
503 | } | 654 | } |
655 | #endif | ||
504 | return FALSE; | 656 | return FALSE; |
@@ -509,5 +661,5 @@ void Launcher::showMaximized() | |||
509 | if ( isVisibleWindow( winId() ) ) | 661 | if ( isVisibleWindow( winId() ) ) |
510 | doMaximize(); | 662 | doMaximize(); |
511 | else | 663 | else |
512 | QTimer::singleShot( 20, this, SLOT(doMaximize()) ); | 664 | QTimer::singleShot( 20, this, SLOT(doMaximize()) ); |
513 | } | 665 | } |
@@ -528,10 +680,11 @@ void Launcher::updateMimeTypes(AppLnkSet* folder) | |||
528 | for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) { | 680 | for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) { |
529 | AppLnk *app = it.current(); | 681 | AppLnk *app = it.current(); |
530 | if ( app->type() == "Folder" ) | 682 | if ( app->type() == "Folder" ) // No tr |
531 | updateMimeTypes((AppLnkSet *)app); | 683 | updateMimeTypes((AppLnkSet *)app); |
532 | else { | 684 | else { |
533 | MimeType::registerApp(*app); | 685 | MimeType::registerApp(*app); |
534 | } | 686 | } |
535 | } | 687 | } |
536 | } | 688 | } |
689 | |||
537 | /** This is a HACK.... | 690 | /** This is a HACK.... |
@@ -677,14 +830,14 @@ void Launcher::select( const AppLnk *appLnk ) | |||
677 | { | 830 | { |
678 | if ( appLnk->type() == "Folder" ) { | 831 | if ( appLnk->type() == "Folder" ) { // No tr |
679 | // Not supported: flat is simpler for the user | 832 | // Not supported: flat is simpler for the user |
680 | } else { | 833 | } else { |
681 | if ( appLnk->exec().isNull() ) { | 834 | if ( appLnk->exec().isNull() ) { |
682 | QMessageBox::information(this,tr("No application"), | 835 | QMessageBox::information(this,tr("No application"), |
683 | tr("<p>No application is defined for this document." | 836 | tr("<p>No application is defined for this document." |
684 | "<p>Type is %1.").arg(appLnk->type())); | 837 | "<p>Type is %1.").arg(appLnk->type())); |
685 | return; | 838 | return; |
686 | } | 839 | } |
687 | tabs->setBusy(TRUE); | 840 | tabs->setBusy(TRUE); |
688 | emit executing( appLnk ); | 841 | emit executing( appLnk ); |
689 | appLnk->execute(); | 842 | appLnk->execute(); |
690 | } | 843 | } |
@@ -700,15 +853,15 @@ void Launcher::properties( AppLnk *appLnk ) | |||
700 | { | 853 | { |
701 | if ( appLnk->type() == "Folder" ) { | 854 | if ( appLnk->type() == "Folder" ) { // No tr |
702 | // Not supported: flat is simpler for the user | 855 | // Not supported: flat is simpler for the user |
703 | } else { | 856 | } else { |
704 | in_lnk_props = TRUE; | 857 | in_lnk_props = TRUE; |
705 | got_lnk_change = FALSE; | 858 | got_lnk_change = FALSE; |
706 | LnkProperties prop(appLnk); | 859 | LnkProperties prop(appLnk); |
707 | connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); | 860 | connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); |
708 | prop.showMaximized(); | 861 | prop.showMaximized(); |
709 | prop.exec(); | 862 | prop.exec(); |
710 | in_lnk_props = FALSE; | 863 | in_lnk_props = FALSE; |
711 | if ( got_lnk_change ) { | 864 | if ( got_lnk_change ) { |
712 | updateLink(lnk_change); | 865 | updateLink(lnk_change); |
713 | } | 866 | } |
714 | } | 867 | } |
@@ -719,7 +872,7 @@ void Launcher::updateLink(const QString& link) | |||
719 | if (link.isNull()) | 872 | if (link.isNull()) |
720 | updateTabs(); | 873 | updateTabs(); |
721 | else if (link.isEmpty()) | 874 | else if (link.isEmpty()) |
722 | updateDocs(); | 875 | updateDocs(); |
723 | else | 876 | else |
724 | tabs->updateLink(link); | 877 | tabs->updateLink(link); |
725 | } | 878 | } |
@@ -729,62 +882,59 @@ void Launcher::systemMessage( const QCString &msg, const QByteArray &data) | |||
729 | QDataStream stream( data, IO_ReadOnly ); | 882 | QDataStream stream( data, IO_ReadOnly ); |
730 | if ( msg == "closing(QString)" ){ | 883 | if ( msg == "linkChanged(QString)" ) { |
731 | QString app; | 884 | QString link; |
732 | stream >> app; | 885 | stream >> link; |
733 | //qWarning("app closed %s", app.latin1() ); | 886 | if ( in_lnk_props ) { |
734 | // MRUList::removeTask( app ); | 887 | got_lnk_change = TRUE; |
735 | }else if ( msg == "linkChanged(QString)" ) { | 888 | lnk_change = link; |
736 | QString link; | 889 | } else { |
737 | stream >> link; | 890 | updateLink(link); |
738 | if ( in_lnk_props ) { | 891 | } |
739 | got_lnk_change = TRUE; | ||
740 | lnk_change = link; | ||
741 | } else { | ||
742 | updateLink(link); | ||
743 | } | ||
744 | } else if ( msg == "busy()" ) { | 892 | } else if ( msg == "busy()" ) { |
745 | emit busy(); | 893 | emit busy(); |
746 | } else if ( msg == "notBusy(QString)" ) { | 894 | } else if ( msg == "notBusy(QString)" ) { |
747 | QString app; | 895 | QString app; |
748 | stream >> app; | 896 | stream >> app; |
749 | tabs->setBusy(FALSE); | 897 | tabs->setBusy(FALSE); |
750 | emit notBusy(app); | 898 | emit notBusy(app); |
751 | } else if ( msg == "mkdir(QString)" ) { | 899 | } else if ( msg == "mkdir(QString)" ) { |
752 | QString dir; | 900 | QString dir; |
753 | stream >> dir; | 901 | stream >> dir; |
754 | if ( !dir.isEmpty() ) | 902 | if ( !dir.isEmpty() ) |
755 | mkdir( dir ); | 903 | mkdir( dir ); |
756 | } else if ( msg == "rdiffGenSig(QString,QString)" ) { | 904 | } else if ( msg == "rdiffGenSig(QString,QString)" ) { |
757 | QString baseFile, sigFile; | 905 | QString baseFile, sigFile; |
758 | stream >> baseFile >> sigFile; | 906 | stream >> baseFile >> sigFile; |
759 | QRsync::generateSignature( baseFile, sigFile ); | 907 | QRsync::generateSignature( baseFile, sigFile ); |
760 | } else if ( msg == "rdiffGenDiff(QString,QString,QString)" ) { | 908 | } else if ( msg == "rdiffGenDiff(QString,QString,QString)" ) { |
761 | QString baseFile, sigFile, deltaFile; | 909 | QString baseFile, sigFile, deltaFile; |
762 | stream >> baseFile >> sigFile >> deltaFile; | 910 | stream >> baseFile >> sigFile >> deltaFile; |
763 | QRsync::generateDiff( baseFile, sigFile, deltaFile ); | 911 | QRsync::generateDiff( baseFile, sigFile, deltaFile ); |
764 | } else if ( msg == "rdiffApplyPatch(QString,QString)" ) { | 912 | } else if ( msg == "rdiffApplyPatch(QString,QString)" ) { |
765 | QString baseFile, deltaFile; | 913 | QString baseFile, deltaFile; |
766 | stream >> baseFile >> deltaFile; | 914 | stream >> baseFile >> deltaFile; |
767 | if ( !QFile::exists( baseFile ) ) { | 915 | if ( !QFile::exists( baseFile ) ) { |
768 | QFile f( baseFile ); | 916 | QFile f( baseFile ); |
769 | f.open( IO_WriteOnly ); | 917 | f.open( IO_WriteOnly ); |
770 | f.close(); | 918 | f.close(); |
771 | } | 919 | } |
772 | QRsync::applyDiff( baseFile, deltaFile ); | 920 | QRsync::applyDiff( baseFile, deltaFile ); |
773 | QCopEnvelope e( "QPE/Desktop", "patchApplied(QString)" ); | 921 | #ifndef QT_NO_COP |
774 | e << baseFile; | 922 | QCopEnvelope e( "QPE/Desktop", "patchApplied(QString)" ); |
923 | e << baseFile; | ||
924 | #endif | ||
775 | } else if ( msg == "rdiffCleanup()" ) { | 925 | } else if ( msg == "rdiffCleanup()" ) { |
776 | mkdir( "/tmp/rdiff" ); | 926 | mkdir( "/tmp/rdiff" ); |
777 | QDir dir; | 927 | QDir dir; |
778 | dir.setPath( "/tmp/rdiff" ); | 928 | dir.setPath( "/tmp/rdiff" ); |
779 | QStringList entries = dir.entryList(); | 929 | QStringList entries = dir.entryList(); |
780 | for ( QStringList::Iterator it = entries.begin(); it != entries.end(); ++it ) | 930 | for ( QStringList::Iterator it = entries.begin(); it != entries.end(); ++it ) |
781 | dir.remove( *it ); | 931 | dir.remove( *it ); |
782 | } else if ( msg == "sendHandshakeInfo()" ) { | 932 | } else if ( msg == "sendHandshakeInfo()" ) { |
783 | QString home = getenv( "HOME" ); | 933 | QString home = getenv( "HOME" ); |
784 | QCopEnvelope e( "QPE/Desktop", "handshakeInfo(QString,bool)" ); | 934 | #ifndef QT_NO_COP |
785 | e << home; | 935 | QCopEnvelope e( "QPE/Desktop", "handshakeInfo(QString,bool)" ); |
786 | int locked = (int) Desktop::screenLocked(); | 936 | e << home; |
787 | e << locked; | 937 | int locked = (int) Desktop::screenLocked(); |
788 | // register an app for autostart | 938 | e << locked; |
789 | // if clear is send the list is cleared. | 939 | #endif |
790 | } else if ( msg == "autoStart(QString)" ) { | 940 | } else if ( msg == "autoStart(QString)" ) { |
@@ -831,101 +981,134 @@ void Launcher::systemMessage( const QCString &msg, const QByteArray &data) | |||
831 | } | 981 | } |
982 | } else if ( msg == "sendVersionInfo()" ) { | ||
983 | QCopEnvelope e( "QPE/Desktop", "versionInfo(QString)" ); | ||
984 | QString v = QPE_VERSION; | ||
985 | QStringList l = QStringList::split( '.', v ); | ||
986 | QString v2 = l[0] + '.' + l[1]; | ||
987 | e << v2; | ||
988 | //qDebug("version %s\n", line.latin1()); | ||
832 | } else if ( msg == "sendCardInfo()" ) { | 989 | } else if ( msg == "sendCardInfo()" ) { |
833 | QCopEnvelope e( "QPE/Desktop", "cardInfo(QString)" ); | 990 | #ifndef QT_NO_COP |
834 | const QList<FileSystem> &fs = storage->fileSystems(); | 991 | QCopEnvelope e( "QPE/Desktop", "cardInfo(QString)" ); |
835 | QListIterator<FileSystem> it ( fs ); | 992 | #endif |
836 | QString s; | 993 | const QList<FileSystem> &fs = storage->fileSystems(); |
837 | QString homeDir = getenv("HOME"); | 994 | QListIterator<FileSystem> it ( fs ); |
838 | QString hardDiskHome; | 995 | QString s; |
839 | for ( ; it.current(); ++it ) { | 996 | QString homeDir = getenv("HOME"); |
840 | if ( (*it)->isRemovable() || (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) | 997 | QString hardDiskHome, hardDiskHomePath; |
841 | s += (*it)->name() + "=" + (*it)->path() + "/Documents " | 998 | for ( ; it.current(); ++it ) { |
842 | + QString::number( (*it)->availBlocks() * (*it)->blockSize() ) | 999 | int k4 = (*it)->blockSize()/256; |
843 | + " " + (*it)->options() + ";"; | 1000 | if ( (*it)->isRemovable() || (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs") { |
844 | else if ( (*it)->disk() == "/dev/mtdblock1" || | 1001 | s += (*it)->name() + "=" + (*it)->path() + "/Documents " |
845 | (*it)->disk() == "/dev/mtdblock/1" ) | 1002 | + QString::number( (*it)->availBlocks() * k4/4 ) |
846 | s += (*it)->name() + "=" + homeDir + "/Documents " | 1003 | + "K " + (*it)->options() + ";"; |
847 | + QString::number( (*it)->availBlocks() * (*it)->blockSize() ) | 1004 | } else if ( (*it)->disk() == "/dev/mtdblock1" || |
848 | + " " + (*it)->options() + ";"; | 1005 | (*it)->disk() == "/dev/mtdblock/1" ) { |
849 | else if ( (*it)->name().contains( tr("Hard Disk") ) && | 1006 | s += (*it)->name() + "=" + homeDir + "/Documents " |
850 | homeDir.contains( (*it)->path() ) && | 1007 | + QString::number( (*it)->availBlocks() * k4/4 ) |
851 | (*it)->path().length() > hardDiskHome.length() ) | 1008 | + "K " + (*it)->options() + ";"; |
852 | hardDiskHome = | 1009 | } else if ( (*it)->name().contains( "Hard Disk") && |
853 | (*it)->name() + "=" + homeDir + "/Documents " | 1010 | homeDir.contains( (*it)->path() ) && |
854 | + QString::number( (*it)->availBlocks() * (*it)->blockSize() ) | 1011 | (*it)->path().length() > hardDiskHomePath.length() ) { |
855 | + " " + (*it)->options() + ";"; | 1012 | hardDiskHomePath = (*it)->path(); |
856 | } | 1013 | hardDiskHome = |
857 | if ( !hardDiskHome.isEmpty() ) | 1014 | (*it)->name() + "=" + homeDir + "/Documents " |
858 | s += hardDiskHome; | 1015 | + QString::number( (*it)->availBlocks() * k4/4 ) |
1016 | + "K " + (*it)->options() + ";"; | ||
1017 | } | ||
1018 | } | ||
1019 | if ( !hardDiskHome.isEmpty() ) | ||
1020 | s += hardDiskHome; | ||
859 | 1021 | ||
860 | e << s; | 1022 | #ifndef QT_NO_COP |
1023 | e << s; | ||
1024 | #endif | ||
861 | } else if ( msg == "sendSyncDate(QString)" ) { | 1025 | } else if ( msg == "sendSyncDate(QString)" ) { |
862 | QString app; | 1026 | QString app; |
863 | stream >> app; | 1027 | stream >> app; |
864 | Config cfg( "qpe" ); | 1028 | Config cfg( "qpe" ); |
865 | cfg.setGroup("SyncDate"); | 1029 | cfg.setGroup("SyncDate"); |
866 | QCopEnvelope e( "QPE/Desktop", "syncDate(QString,QString)" ); | 1030 | #ifndef QT_NO_COP |
867 | e << app << cfg.readEntry( app ); | 1031 | QCopEnvelope e( "QPE/Desktop", "syncDate(QString,QString)" ); |
868 | //qDebug("QPE/System sendSyncDate for %s: response %s", app.latin1(), | 1032 | e << app << cfg.readEntry( app ); |
869 | //cfg.readEntry( app ).latin1() ); | 1033 | #endif |
1034 | //qDebug("QPE/System sendSyncDate for %s: response %s", app.latin1(), | ||
1035 | //cfg.readEntry( app ).latin1() ); | ||
870 | } else if ( msg == "setSyncDate(QString,QString)" ) { | 1036 | } else if ( msg == "setSyncDate(QString,QString)" ) { |
871 | QString app, date; | 1037 | QString app, date; |
872 | stream >> app >> date; | 1038 | stream >> app >> date; |
873 | Config cfg( "qpe" ); | 1039 | Config cfg( "qpe" ); |
874 | cfg.setGroup("SyncDate"); | 1040 | cfg.setGroup("SyncDate"); |
875 | cfg.writeEntry( app, date ); | 1041 | cfg.writeEntry( app, date ); |
876 | //qDebug("setSyncDate(QString,QString) %s %s", app.latin1(), date.latin1()); | 1042 | //qDebug("setSyncDate(QString,QString) %s %s", app.latin1(), date.latin1()); |
877 | } else if ( msg == "startSync(QString)" ) { | 1043 | } else if ( msg == "startSync(QString)" ) { |
878 | QString what; | 1044 | QString what; |
879 | stream >> what; | 1045 | stream >> what; |
880 | delete syncDialog; syncDialog = 0; | 1046 | delete syncDialog; syncDialog = 0; |
881 | syncDialog = new SyncDialog( this, "syncProgress", FALSE, | 1047 | syncDialog = new SyncDialog( this, "syncProgress", FALSE, |
882 | WStyle_Tool | WStyle_Customize | | 1048 | WStyle_Tool | WStyle_Customize | |
883 | Qt::WStyle_StaysOnTop ); | 1049 | Qt::WStyle_StaysOnTop ); |
884 | syncDialog->showMaximized(); | 1050 | syncDialog->showMaximized(); |
885 | syncDialog->whatLabel->setText( "<b>" + what + "</b>" ); | 1051 | syncDialog->whatLabel->setText( "<b>" + what + "</b>" ); |
886 | connect( syncDialog->buttonCancel, SIGNAL( clicked() ), | 1052 | connect( syncDialog->buttonCancel, SIGNAL( clicked() ), |
887 | SLOT( cancelSync() ) ); | 1053 | SLOT( cancelSync() ) ); |
888 | } else if ( msg == "stopSync()") { | 1054 | } else if ( msg == "stopSync()") { |
889 | delete syncDialog; syncDialog = 0; | 1055 | delete syncDialog; syncDialog = 0; |
890 | } else if ( msg == "getAllDocLinks()" ) { | 1056 | } else if ( msg == "getAllDocLinks()" ) { |
891 | loadDocs(); | 1057 | loadDocs(); |
892 | 1058 | ||
893 | QString contents; | 1059 | QString contents; |
894 | 1060 | ||
895 | for ( QListIterator<DocLnk> it( docsFolder->children() ); it.current(); ++it ) { | 1061 | //Categories cats; |
896 | DocLnk *doc = it.current(); | 1062 | for ( QListIterator<DocLnk> it( docsFolder->children() ); it.current(); ++it ) { |
897 | QFileInfo fi( doc->file() ); | 1063 | DocLnk *doc = it.current(); |
898 | if ( !fi.exists() ) | 1064 | QFileInfo fi( doc->file() ); |
899 | continue; | 1065 | if ( !fi.exists() ) |
900 | 1066 | continue; | |
901 | bool fake = !doc->linkFileKnown(); | 1067 | |
902 | if ( !fake ) { | 1068 | bool fake = !doc->linkFileKnown(); |
903 | QFile f( doc->linkFile() ); | 1069 | if ( !fake ) { |
904 | if ( f.open( IO_ReadOnly ) ) { | 1070 | QFile f( doc->linkFile() ); |
905 | QTextStream ts( &f ); | 1071 | if ( f.open( IO_ReadOnly ) ) { |
906 | ts.setEncoding( QTextStream::UnicodeUTF8 ); | 1072 | QTextStream ts( &f ); |
907 | contents += ts.read(); | 1073 | ts.setEncoding( QTextStream::UnicodeUTF8 ); |
908 | f.close(); | 1074 | contents += ts.read(); |
909 | } else | 1075 | f.close(); |
910 | fake = TRUE; | 1076 | } else |
911 | } | 1077 | fake = TRUE; |
912 | if (fake) { | 1078 | } |
913 | contents += "[Desktop Entry]\n"; | 1079 | if (fake) { |
914 | contents += "Categories = " + Qtopia::Record::idsToString( doc->categories() ) + "\n"; | 1080 | contents += "[Desktop Entry]\n"; |
915 | contents += "File = "+doc->file()+"\n"; | 1081 | contents += "Categories = " + // No tr |
916 | contents += "Name = "+doc->name()+"\n"; | 1082 | // cats.labels("Document View",doc->categories()).join(";") + "\n"; // No tr |
917 | contents += "Type = "+doc->type()+"\n"; | 1083 | Qtopia::Record::idsToString( doc->categories() ) + "\n"; |
918 | } | 1084 | contents += "Name = "+doc->name()+"\n"; // No tr |
919 | contents += QString("Size = %1\n").arg( fi.size() ); | 1085 | contents += "Type = "+doc->type()+"\n"; // No tr |
920 | } | 1086 | } |
921 | 1087 | contents += "File = "+doc->file()+"\n"; // No tr // (resolves path) | |
922 | //qDebug( "sending length %d", contents.length() ); | 1088 | contents += QString("Size = %1\n").arg( fi.size() ); // No tr |
923 | QCopEnvelope e( "QPE/Desktop", "docLinks(QString)" ); | 1089 | } |
924 | e << contents; | ||
925 | |||
926 | qDebug( "================ \n\n%s\n\n===============", | ||
927 | contents.latin1() ); | ||
928 | 1090 | ||
929 | delete docsFolder; | 1091 | //qDebug( "sending length %d", contents.length() ); |
930 | docsFolder = 0; | 1092 | #ifndef QT_NO_COP |
1093 | QCopEnvelope e( "QPE/Desktop", "docLinks(QString)" ); | ||
1094 | e << contents; | ||
1095 | #endif | ||
1096 | |||
1097 | //qDebug( "================ \n\n%s\n\n===============", | ||
1098 | //contents.latin1() ); | ||
1099 | |||
1100 | delete docsFolder; | ||
1101 | docsFolder = 0; | ||
1102 | #ifdef QWS | ||
1103 | } else if ( msg == "setMouseProto(QString)" ) { | ||
1104 | QString mice; | ||
1105 | stream >> mice; | ||
1106 | setenv("QWS_MOUSE_PROTO",mice.latin1(),1); | ||
1107 | qwsServer->openMouse(); | ||
1108 | } else if ( msg == "setKeyboard(QString)" ) { | ||
1109 | QString kb; | ||
1110 | stream >> kb; | ||
1111 | setenv("QWS_KEYBOARD",kb.latin1(),1); | ||
1112 | qwsServer->openKeyboard(); | ||
1113 | #endif | ||
931 | } | 1114 | } |
@@ -935,3 +1118,48 @@ void Launcher::cancelSync() | |||
935 | { | 1118 | { |
1119 | #ifndef QT_NO_COP | ||
936 | QCopEnvelope e( "QPE/Desktop", "cancelSync()" ); | 1120 | QCopEnvelope e( "QPE/Desktop", "cancelSync()" ); |
1121 | #endif | ||
1122 | } | ||
1123 | |||
1124 | void Launcher::launcherMessage( const QCString &msg, const QByteArray &data) | ||
1125 | { | ||
1126 | QDataStream stream( data, IO_ReadOnly ); | ||
1127 | if ( msg == "setTabView(QString,int)" ) { | ||
1128 | QString id; | ||
1129 | stream >> id; | ||
1130 | int mode; | ||
1131 | stream >> mode; | ||
1132 | if ( tabs->view(id) ) | ||
1133 | tabs->view(id)->setViewMode( (LauncherView::ViewMode)mode ); | ||
1134 | } else if ( msg == "setTabBackground(QString,int,QString)" ) { | ||
1135 | QString id; | ||
1136 | stream >> id; | ||
1137 | int mode; | ||
1138 | stream >> mode; | ||
1139 | QString pixmapOrColor; | ||
1140 | stream >> pixmapOrColor; | ||
1141 | if ( tabs->view(id) ) | ||
1142 | tabs->view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); | ||
1143 | } else if ( msg == "setTextColor(QString,QString)" ) { | ||
1144 | QString id; | ||
1145 | stream >> id; | ||
1146 | QString color; | ||
1147 | stream >> color; | ||
1148 | if ( tabs->view(id) ) | ||
1149 | tabs->view(id)->setTextColor( QColor(color) ); | ||
1150 | } else if ( msg == "setFont(QString,QString,int,int,int)" ) { | ||
1151 | QString id; | ||
1152 | stream >> id; | ||
1153 | QString fam; | ||
1154 | stream >> fam; | ||
1155 | int size; | ||
1156 | stream >> size; | ||
1157 | int weight; | ||
1158 | stream >> weight; | ||
1159 | int italic; | ||
1160 | stream >> italic; | ||
1161 | if ( tabs->view(id) ) | ||
1162 | tabs->view(id)->setViewFont( QFont(fam, size, weight, italic!=0) ); | ||
1163 | qDebug( "setFont: %s, %d, %d, %d", fam.latin1(), size, weight, italic ); | ||
1164 | } | ||
937 | } | 1165 | } |
@@ -941,6 +1169,6 @@ void Launcher::storageChanged() | |||
941 | if ( in_lnk_props ) { | 1169 | if ( in_lnk_props ) { |
942 | got_lnk_change = TRUE; | 1170 | got_lnk_change = TRUE; |
943 | lnk_change = ""; | 1171 | lnk_change = QString::null; |
944 | } else { | 1172 | } else { |
945 | updateDocs(); | 1173 | updateLink( QString::null ); |
946 | } | 1174 | } |
@@ -953,3 +1181,3 @@ bool Launcher::mkdir(const QString &localPath) | |||
953 | if (fullDir.exists()) | 1181 | if (fullDir.exists()) |
954 | return true; | 1182 | return true; |
955 | 1183 | ||
@@ -965,4 +1193,4 @@ bool Launcher::mkdir(const QString &localPath) | |||
965 | if (dirIndex == -1) { | 1193 | if (dirIndex == -1) { |
966 | //qDebug("No seperators found in path %s", localPath.latin1()); | 1194 | //qDebug("No seperators found in path %s", localPath.latin1()); |
967 | checkedPath = QDir::currentDirPath(); | 1195 | checkedPath = QDir::currentDirPath(); |
968 | } | 1196 | } |
@@ -970,21 +1198,21 @@ bool Launcher::mkdir(const QString &localPath) | |||
970 | while (checkedPath != localPath) { | 1198 | while (checkedPath != localPath) { |
971 | // no more seperators found, use the local path | 1199 | // no more seperators found, use the local path |
972 | if (dirIndex == -1) | 1200 | if (dirIndex == -1) |
973 | checkedPath = localPath; | 1201 | checkedPath = localPath; |
974 | else { | 1202 | else { |
975 | // the next directory to check | 1203 | // the next directory to check |
976 | checkedPath = localPath.left(dirIndex) + "/"; | 1204 | checkedPath = localPath.left(dirIndex) + "/"; |
977 | // advance the iterator; the next dir seperator | 1205 | // advance the iterator; the next dir seperator |
978 | dirIndex = localPath.find(dirSeps, dirIndex+1); | 1206 | dirIndex = localPath.find(dirSeps, dirIndex+1); |
979 | } | 1207 | } |
980 | 1208 | ||
981 | QDir checkDir(checkedPath); | 1209 | QDir checkDir(checkedPath); |
982 | if (!checkDir.exists()) { | 1210 | if (!checkDir.exists()) { |
983 | //qDebug("mkdir making dir %s", checkedPath.latin1()); | 1211 | //qDebug("mkdir making dir %s", checkedPath.latin1()); |
984 | 1212 | ||
985 | if (!checkDir.mkdir(checkedPath)) { | 1213 | if (!checkDir.mkdir(checkedPath)) { |
986 | qDebug("Unable to make directory %s", checkedPath.latin1()); | 1214 | qDebug("Unable to make directory %s", checkedPath.latin1()); |
987 | return FALSE; | 1215 | return FALSE; |
988 | } | 1216 | } |
989 | } | 1217 | } |
990 | 1218 | ||
@@ -1000,3 +1228,5 @@ void Launcher::preloadApps() | |||
1000 | for (QStringList::ConstIterator it=apps.begin(); it!=apps.end(); ++it) { | 1228 | for (QStringList::ConstIterator it=apps.begin(); it!=apps.end(); ++it) { |
1001 | QCopEnvelope e("QPE/Application/"+(*it).local8Bit(), "enablePreload()"); | 1229 | #ifndef QT_NO_COP |
1230 | QCopEnvelope e("QPE/Application/"+(*it).local8Bit(), "enablePreload()"); | ||
1231 | #endif | ||
1002 | } | 1232 | } |