summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/applauncher.cpp11
-rw-r--r--core/launcher/config.in6
-rw-r--r--core/launcher/documentlist.cpp11
-rw-r--r--core/launcher/main.cpp9
-rw-r--r--core/launcher/qcopbridge.cpp7
-rw-r--r--core/launcher/screensaver.cpp2
-rw-r--r--core/launcher/server.cpp4
-rw-r--r--core/launcher/server.pro7
-rw-r--r--core/launcher/startmenu.cpp2
-rw-r--r--core/launcher/transferserver.cpp27
-rw-r--r--core/launcher/wait.cpp2
11 files changed, 45 insertions, 43 deletions
diff --git a/core/launcher/applauncher.cpp b/core/launcher/applauncher.cpp
index 0db99dd..f161e98 100644
--- a/core/launcher/applauncher.cpp
+++ b/core/launcher/applauncher.cpp
@@ -1,112 +1,111 @@
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#ifndef QTOPIA_INTERNAL_PRELOADACCESS 21#ifndef QTOPIA_INTERNAL_PRELOADACCESS
22#define QTOPIA_INTERNAL_PRELOADACCESS 22#define QTOPIA_INTERNAL_PRELOADACCESS
23#endif 23#endif
24#ifndef QTOPIA_INTERNAL_FILEOPERATIONS 24#ifndef QTOPIA_INTERNAL_FILEOPERATIONS
25#define QTOPIA_INTERNAL_FILEOPERATIONS 25#define QTOPIA_INTERNAL_FILEOPERATIONS
26#endif 26#endif
27#ifndef QTOPIA_PROGRAM_MONITOR 27#ifndef QTOPIA_PROGRAM_MONITOR
28#define QTOPIA_PROGRAM_MONITOR 28#define QTOPIA_PROGRAM_MONITOR
29#endif 29#endif
30#include <qtopia/global.h> 30#include <opie2/oglobal.h>
31 31
32#ifndef Q_OS_WIN32 32#ifndef Q_OS_WIN32
33#include <sys/stat.h> 33#include <sys/stat.h>
34#include <sys/wait.h> 34#include <sys/wait.h>
35#include <sys/file.h> 35#include <sys/file.h>
36#include <unistd.h> 36#include <unistd.h>
37#include <sys/time.h> 37#include <sys/time.h>
38#include <sys/resource.h> 38#include <sys/resource.h>
39#include <errno.h> 39#include <errno.h>
40#else 40#else
41#include <process.h> 41#include <process.h>
42#include <windows.h> 42#include <windows.h>
43#include <winbase.h> 43#include <winbase.h>
44#endif 44#endif
45 45
46#include <signal.h> 46#include <signal.h>
47#include <sys/types.h> 47#include <sys/types.h>
48#include <stdlib.h> 48#include <stdlib.h>
49 49
50#include <qtimer.h> 50#include <qtimer.h>
51#include <qwindowsystem_qws.h> 51#include <qwindowsystem_qws.h>
52#include <qmessagebox.h> 52#include <qmessagebox.h>
53#include <qfile.h> 53#include <qfile.h>
54#include <qfileinfo.h> 54#include <qfileinfo.h>
55 55
56#include <qtopia/qcopenvelope_qws.h> 56#include <qtopia/qcopenvelope_qws.h>
57#include <qtopia/applnk.h> 57#include <qtopia/applnk.h>
58#include <qtopia/qpeapplication.h> 58#include <qtopia/qpeapplication.h>
59#include <qtopia/config.h> 59#include <qtopia/config.h>
60#include <qtopia/global.h> 60#include <qtopia/global.h>
61 61
62#include "applauncher.h" 62#include "applauncher.h"
63#include "documentlist.h" 63#include "documentlist.h"
64#include "launcherglobal.h"
65 64
66const int AppLauncher::RAISE_TIMEOUT_MS = 5000; 65const int AppLauncher::RAISE_TIMEOUT_MS = 5000;
67 66
68//--------------------------------------------------------------------------- 67//---------------------------------------------------------------------------
69 68
70static AppLauncher* appLauncherPtr; 69static AppLauncher* appLauncherPtr;
71 70
72const int appStopEventID = 1290; 71const int appStopEventID = 1290;
73 72
74class AppStoppedEvent : public QCustomEvent 73class AppStoppedEvent : public QCustomEvent
75{ 74{
76public: 75public:
77 AppStoppedEvent(int pid, int status) 76 AppStoppedEvent(int pid, int status)
78 : QCustomEvent( appStopEventID ), mPid(pid), mStatus(status) { } 77 : QCustomEvent( appStopEventID ), mPid(pid), mStatus(status) { }
79 78
80 int pid() { return mPid; } 79 int pid() { return mPid; }
81 int status() { return mStatus; } 80 int status() { return mStatus; }
82 81
83private: 82private:
84 int mPid, mStatus; 83 int mPid, mStatus;
85}; 84};
86 85
87AppLauncher::AppLauncher(QObject *parent, const char *name) 86AppLauncher::AppLauncher(QObject *parent, const char *name)
88 : QObject(parent, name), qlPid(0), qlReady(FALSE), 87 : QObject(parent, name), qlPid(0), qlReady(FALSE),
89 appKillerBox(0) 88 appKillerBox(0)
90{ 89{
91 connect(qwsServer, SIGNAL(newChannel(const QString&)), this, SLOT(newQcopChannel(const QString&))); 90 connect(qwsServer, SIGNAL(newChannel(const QString&)), this, SLOT(newQcopChannel(const QString&)));
92 connect(qwsServer, SIGNAL(removedChannel(const QString&)), this, SLOT(removedQcopChannel(const QString&))); 91 connect(qwsServer, SIGNAL(removedChannel(const QString&)), this, SLOT(removedQcopChannel(const QString&)));
93 QCopChannel* channel = new QCopChannel( "QPE/System", this ); 92 QCopChannel* channel = new QCopChannel( "QPE/System", this );
94 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 93 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
95 this, SLOT(received(const QCString&, const QByteArray&)) ); 94 this, SLOT(received(const QCString&, const QByteArray&)) );
96 95
97 channel = new QCopChannel( "QPE/Server", this ); 96 channel = new QCopChannel( "QPE/Server", this );
98 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 97 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
99 this, SLOT(received(const QCString&, const QByteArray&)) ); 98 this, SLOT(received(const QCString&, const QByteArray&)) );
100 99
101#ifndef Q_OS_WIN32 100#ifndef Q_OS_WIN32
102 signal(SIGCHLD, signalHandler); 101 signal(SIGCHLD, signalHandler);
103#else 102#else
104 runningAppsProc.setAutoDelete( TRUE ); 103 runningAppsProc.setAutoDelete( TRUE );
105#endif 104#endif
106 QString tmp = qApp->argv()[0]; 105 QString tmp = qApp->argv()[0];
107 int pos = tmp.findRev('/'); 106 int pos = tmp.findRev('/');
108 if ( pos > -1 ) 107 if ( pos > -1 )
109 tmp = tmp.mid(++pos); 108 tmp = tmp.mid(++pos);
110 runningApps[::getpid()] = tmp; 109 runningApps[::getpid()] = tmp;
111 110
112 appLauncherPtr = this; 111 appLauncherPtr = this;
@@ -359,190 +358,190 @@ void AppLauncher::sigStopped(int sigPid, int sigStatus)
359 Config cfg("Launcher"); 358 Config cfg("Launcher");
360 cfg.setGroup("Preload"); 359 cfg.setGroup("Preload");
361 QStringList apps = cfg.readListEntry("Apps",','); 360 QStringList apps = cfg.readListEntry("Apps",',');
362 QString exe = app->exec(); 361 QString exe = app->exec();
363 apps.remove(exe); 362 apps.remove(exe);
364 cfg.writeEntry("Apps",apps,','); 363 cfg.writeEntry("Apps",apps,',');
365 preloadDisabled = TRUE; 364 preloadDisabled = TRUE;
366 } 365 }
367 366
368 // clean up 367 // clean up
369 if ( exitStatus ) { 368 if ( exitStatus ) {
370 QCopEnvelope e("QPE/System", "notBusy(QString)"); 369 QCopEnvelope e("QPE/System", "notBusy(QString)");
371 e << app->exec(); 370 e << app->exec();
372 } 371 }
373/* 372/*
374 // debug info 373 // debug info
375 for (it = runningApps.begin(); it != runningApps.end(); ++it) { 374 for (it = runningApps.begin(); it != runningApps.end(); ++it) {
376 qDebug("running according to internal list: %s, with pid %d", (*it).data(), it.key() ); 375 qDebug("running according to internal list: %s, with pid %d", (*it).data(), it.key() );
377 } 376 }
378*/ 377*/
379 378
380#ifdef QTOPIA_PROGRAM_MONITOR 379#ifdef QTOPIA_PROGRAM_MONITOR
381 if ( crashed ) { 380 if ( crashed ) {
382 QString sig; 381 QString sig;
383 switch( exitStatus ) { 382 switch( exitStatus ) {
384 case SIGABRT: sig = "SIGABRT"; break; 383 case SIGABRT: sig = "SIGABRT"; break;
385 case SIGALRM: sig = "SIGALRM"; break; 384 case SIGALRM: sig = "SIGALRM"; break;
386 case SIGBUS: sig = "SIGBUS"; break; 385 case SIGBUS: sig = "SIGBUS"; break;
387 case SIGFPE: sig = "SIGFPE"; break; 386 case SIGFPE: sig = "SIGFPE"; break;
388 case SIGHUP: sig = "SIGHUP"; break; 387 case SIGHUP: sig = "SIGHUP"; break;
389 case SIGILL: sig = "SIGILL"; break; 388 case SIGILL: sig = "SIGILL"; break;
390 case SIGKILL: sig = "SIGKILL"; break; 389 case SIGKILL: sig = "SIGKILL"; break;
391 case SIGPIPE: sig = "SIGPIPE"; break; 390 case SIGPIPE: sig = "SIGPIPE"; break;
392 case SIGQUIT: sig = "SIGQUIT"; break; 391 case SIGQUIT: sig = "SIGQUIT"; break;
393 case SIGSEGV: sig = "SIGSEGV"; break; 392 case SIGSEGV: sig = "SIGSEGV"; break;
394 case SIGTERM: sig = "SIGTERM"; break; 393 case SIGTERM: sig = "SIGTERM"; break;
395 case SIGTRAP: sig = "SIGTRAP"; break; 394 case SIGTRAP: sig = "SIGTRAP"; break;
396 default: sig = QString("Unkown %1").arg(exitStatus); 395 default: sig = QString("Unkown %1").arg(exitStatus);
397 } 396 }
398 if ( preloadDisabled ) 397 if ( preloadDisabled )
399 sig += tr("<qt><p>Fast loading has been disabled for this application. Tap and hold the application icon to reenable it.</qt>"); 398 sig += tr("<qt><p>Fast loading has been disabled for this application. Tap and hold the application icon to reenable it.</qt>");
400 399
401 QString str = tr("<qt><b>%1</b> was terminated due to signal code %2</qt>").arg( app->name() ).arg( sig ); 400 QString str = tr("<qt><b>%1</b> was terminated due to signal code %2</qt>").arg( app->name() ).arg( sig );
402 QMessageBox::information(0, tr("Application terminated"), str ); 401 QMessageBox::information(0, tr("Application terminated"), str );
403 } else { 402 } else {
404 if ( exitStatus == 255 ) { //could not find app (because global returns -1) 403 if ( exitStatus == 255 ) { //could not find app (because global returns -1)
405 QMessageBox::information(0, tr("Application not found"), tr("<qt>Could not locate application <b>%1</b></qt>").arg( app->exec() ) ); 404 QMessageBox::information(0, tr("Application not found"), tr("<qt>Could not locate application <b>%1</b></qt>").arg( app->exec() ) );
406 } else { 405 } else {
407 QFileInfo fi(Opie::Global::tempDir() + "qcop-msg-" + appName); 406 QFileInfo fi(OGlobal::tempDirPath() + "qcop-msg-" + appName);
408 if ( fi.exists() && fi.size() ) { 407 if ( fi.exists() && fi.size() ) {
409 emit terminated(sigPid, appName); 408 emit terminated(sigPid, appName);
410 qWarning("Re executing obmitted for %s", appName.latin1() ); 409 qWarning("Re executing obmitted for %s", appName.latin1() );
411 // execute( appName, QString::null ); 410 // execute( appName, QString::null );
412 return; 411 return;
413 } 412 }
414 } 413 }
415 } 414 }
416 415
417#endif 416#endif
418 417
419 emit terminated(sigPid, appName); 418 emit terminated(sigPid, appName);
420} 419}
421#else 420#else
422void AppLauncher::sigStopped(int sigPid, int sigStatus) 421void AppLauncher::sigStopped(int sigPid, int sigStatus)
423{ 422{
424 qDebug("Unhandled signal : AppLauncher::sigStopped(int sigPid, int sigStatus)"); 423 qDebug("Unhandled signal : AppLauncher::sigStopped(int sigPid, int sigStatus)");
425} 424}
426#endif // Q_OS_WIN32 425#endif // Q_OS_WIN32
427 426
428bool AppLauncher::isRunning(const QString &app) 427bool AppLauncher::isRunning(const QString &app)
429{ 428{
430 for (QMap<int,QString>::ConstIterator it = runningApps.begin(); it != runningApps.end(); ++it) { 429 for (QMap<int,QString>::ConstIterator it = runningApps.begin(); it != runningApps.end(); ++it) {
431 if ( *it == app ) { 430 if ( *it == app ) {
432#ifdef Q_OS_UNIX 431#ifdef Q_OS_UNIX
433 pid_t t = ::__getpgid( it.key() ); 432 pid_t t = ::__getpgid( it.key() );
434 if ( t == -1 ) { 433 if ( t == -1 ) {
435 qDebug("appLauncher bug, %s believed running, but pid %d is not existing", app.data(), it.key() ); 434 qDebug("appLauncher bug, %s believed running, but pid %d is not existing", app.data(), it.key() );
436 runningApps.remove( it.key() ); 435 runningApps.remove( it.key() );
437 return FALSE; 436 return FALSE;
438 } 437 }
439#endif 438#endif
440 return TRUE; 439 return TRUE;
441 } 440 }
442 } 441 }
443 442
444 return FALSE; 443 return FALSE;
445} 444}
446 445
447bool AppLauncher::executeBuiltin(const QString &c, const QString &document) 446bool AppLauncher::executeBuiltin(const QString &c, const QString &document)
448{ 447{
449 Global::Command* builtin = Opie::Global::builtinCommands(); 448 Global::Command* builtin = OGlobal::builtinCommands();
450 QGuardedPtr<QWidget> *running = Opie::Global::builtinRunning(); 449 QGuardedPtr<QWidget> *running = OGlobal::builtinRunning();
451 450
452 // Attempt to execute the app using a builtin class for the app 451 // Attempt to execute the app using a builtin class for the app
453 if (builtin) { 452 if (builtin) {
454 for (int i = 0; builtin[i].file; i++) { 453 for (int i = 0; builtin[i].file; i++) {
455 if ( builtin[i].file == c ) { 454 if ( builtin[i].file == c ) {
456 if ( running[i] ) { 455 if ( running[i] ) {
457 if ( !document.isNull() && builtin[i].documentary ) 456 if ( !document.isNull() && builtin[i].documentary )
458 Global::setDocument(running[i], document); 457 Global::setDocument(running[i], document);
459 running[i]->raise(); 458 running[i]->raise();
460 running[i]->show(); 459 running[i]->show();
461 running[i]->setActiveWindow(); 460 running[i]->setActiveWindow();
462 } else { 461 } else {
463 running[i] = builtin[i].func( builtin[i].maximized ); 462 running[i] = builtin[i].func( builtin[i].maximized );
464 } 463 }
465#ifndef QT_NO_COP 464#ifndef QT_NO_COP
466 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 465 QCopEnvelope e("QPE/System", "notBusy(QString)" );
467 e << c; // that was quick ;-) 466 e << c; // that was quick ;-)
468#endif 467#endif
469 return TRUE; 468 return TRUE;
470 } 469 }
471 } 470 }
472 } 471 }
473 472
474 // Convert the command line in to a list of arguments 473 // Convert the command line in to a list of arguments
475 QStringList list = QStringList::split(QRegExp(" *"),c); 474 QStringList list = QStringList::split(QRegExp(" *"),c);
476 QString ap=list[0]; 475 QString ap=list[0];
477 476
478 if ( ap == "suspend" ) { // No tr 477 if ( ap == "suspend" ) { // No tr
479 QWSServer::processKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); 478 QWSServer::processKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
480 return TRUE; 479 return TRUE;
481 } 480 }
482 481
483 return FALSE; 482 return FALSE;
484} 483}
485 484
486bool AppLauncher::execute(const QString &c, const QString &docParam, bool noRaise) 485bool AppLauncher::execute(const QString &c, const QString &docParam, bool noRaise)
487{ 486{
488 qWarning("AppLauncher::execute"); 487 qWarning("AppLauncher::execute");
489 // Convert the command line in to a list of arguments 488 // Convert the command line in to a list of arguments
490 QStringList list = QStringList::split(QRegExp(" *"),c); 489 QStringList list = QStringList::split(QRegExp(" *"),c);
491 if ( !docParam.isEmpty() ) 490 if ( !docParam.isEmpty() )
492 list.append( docParam ); 491 list.append( docParam );
493 492
494 QString appName = list[0]; 493 QString appName = list[0];
495 if ( isRunning(appName) ) { 494 if ( isRunning(appName) ) {
496 QCString channel = "QPE/Application/"; 495 QCString channel = "QPE/Application/";
497 channel += appName.latin1(); 496 channel += appName.latin1();
498 497
499 // Need to lock it to avoid race conditions with QPEApplication::processQCopFile 498 // Need to lock it to avoid race conditions with QPEApplication::processQCopFile
500 QFile f(Opie::Global::tempDir() + "qcop-msg-" + appName); 499 QFile f(OGlobal::tempDirPath() + "qcop-msg-" + appName);
501 if ( !noRaise && f.open(IO_WriteOnly | IO_Append) ) { 500 if ( !noRaise && f.open(IO_WriteOnly | IO_Append) ) {
502#ifndef Q_OS_WIN32 501#ifndef Q_OS_WIN32
503 flock(f.handle(), LOCK_EX); 502 flock(f.handle(), LOCK_EX);
504#endif 503#endif
505 504
506 QDataStream ds(&f); 505 QDataStream ds(&f);
507 QByteArray b; 506 QByteArray b;
508 QDataStream bstream(b, IO_WriteOnly); 507 QDataStream bstream(b, IO_WriteOnly);
509 if ( !f.size() ) { 508 if ( !f.size() ) {
510 ds << channel << QCString("raise()") << b; 509 ds << channel << QCString("raise()") << b;
511 if ( !waitingHeartbeat.contains( appName ) && appKillerName != appName ) { 510 if ( !waitingHeartbeat.contains( appName ) && appKillerName != appName ) {
512 int id = startTimer(RAISE_TIMEOUT_MS); 511 int id = startTimer(RAISE_TIMEOUT_MS);
513 waitingHeartbeat.insert( appName, id ); 512 waitingHeartbeat.insert( appName, id );
514 } 513 }
515 } 514 }
516 if ( !docParam.isEmpty() ) { 515 if ( !docParam.isEmpty() ) {
517 bstream << docParam; 516 bstream << docParam;
518 ds << channel << QCString("setDocument(QString)") << b; 517 ds << channel << QCString("setDocument(QString)") << b;
519 } 518 }
520 519
521 f.flush(); 520 f.flush();
522#ifndef Q_OS_WIN32 521#ifndef Q_OS_WIN32
523 flock(f.handle(), LOCK_UN); 522 flock(f.handle(), LOCK_UN);
524#endif 523#endif
525 f.close(); 524 f.close();
526 } 525 }
527 if ( QCopChannel::isRegistered(channel) ) // avoid unnecessary warnings 526 if ( QCopChannel::isRegistered(channel) ) // avoid unnecessary warnings
528 QCopChannel::send(channel,"QPEProcessQCop()"); 527 QCopChannel::send(channel,"QPEProcessQCop()");
529 528
530 return TRUE; 529 return TRUE;
531 } 530 }
532 531
533#ifdef QT_NO_QWS_MULTIPROCESS 532#ifdef QT_NO_QWS_MULTIPROCESS
534 QMessageBox::warning( 0, tr("Error"), tr("<qt>Could not find the application %1</qt>").arg(c), 533 QMessageBox::warning( 0, tr("Error"), tr("<qt>Could not find the application %1</qt>").arg(c),
535 tr("OK"), 0, 0, 0, 1 ); 534 tr("OK"), 0, 0, 0, 1 );
536#else 535#else
537 536
538 QStrList slist; 537 QStrList slist;
539 unsigned j; 538 unsigned j;
540 for ( j = 0; j < list.count(); j++ ) 539 for ( j = 0; j < list.count(); j++ )
541 slist.append( list[j].utf8() ); 540 slist.append( list[j].utf8() );
542 541
543 const char **args = new const char *[slist.count() + 1]; 542 const char **args = new const char *[slist.count() + 1];
544 for ( j = 0; j < slist.count(); j++ ) 543 for ( j = 0; j < slist.count(); j++ )
545 args[j] = slist.at(j); 544 args[j] = slist.at(j);
546 args[j] = NULL; 545 args[j] = NULL;
547 546
548#ifndef Q_OS_WIN32 547#ifndef Q_OS_WIN32
diff --git a/core/launcher/config.in b/core/launcher/config.in
index 2d9c1c2..db39210 100644
--- a/core/launcher/config.in
+++ b/core/launcher/config.in
@@ -1,16 +1,16 @@
1 config LAUNCHER 1 config LAUNCHER
2 boolean "opie-taskbar (program launcher qpe for Opie)" 2 boolean "opie-taskbar (program launcher qpe for Opie)"
3 default "y" 3 default "y"
4 depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE 4 depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2UI
5 5
6if LAUNCHER 6if LAUNCHER
7 config PRELOAD 7 config PRELOAD
8 boolean 8 boolean
9 default "y" 9 default "y"
10 depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && LAUNCHER 10 depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2UI && LAUNCHER
11 11
12 config LAUNCHER_CORE 12 config LAUNCHER_CORE
13 boolean 13 boolean
14 default "y" 14 default "y"
15 depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && LAUNCHER && PRELOAD 15 depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2UI && LAUNCHER && PRELOAD
16endif 16endif
diff --git a/core/launcher/documentlist.cpp b/core/launcher/documentlist.cpp
index ece6931..440bf1e 100644
--- a/core/launcher/documentlist.cpp
+++ b/core/launcher/documentlist.cpp
@@ -1,141 +1,144 @@
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#include "documentlist.h" 20#include "documentlist.h"
21#include "serverinterface.h" 21#include "serverinterface.h"
22#include "launcherglobal.h" 22
23#include <opie2/oglobal.h>
23 24
24#include <qtopia/config.h> 25#include <qtopia/config.h>
25#include <qtopia/mimetype.h> 26#include <qtopia/mimetype.h>
26#include <qtopia/resource.h> 27#include <qtopia/resource.h>
27#include <qtopia/global.h>
28#include <qtopia/private/categories.h> 28#include <qtopia/private/categories.h>
29#include <qtopia/qpeapplication.h> 29#include <qtopia/qpeapplication.h>
30#include <qtopia/applnk.h> 30#include <qtopia/applnk.h>
31#include <qtopia/storage.h> 31#include <qtopia/storage.h>
32#ifdef Q_WS_QWS 32#ifdef Q_WS_QWS
33#include <qtopia/qcopenvelope_qws.h> 33#include <qtopia/qcopenvelope_qws.h>
34#endif 34#endif
35 35
36#include <qtimer.h> 36#include <qtimer.h>
37#include <qfileinfo.h> 37#include <qfileinfo.h>
38#include <qtextstream.h> 38#include <qtextstream.h>
39#include <qfile.h> 39#include <qfile.h>
40#include <qdir.h> 40#include <qdir.h>
41#include <qpainter.h> 41#include <qpainter.h>
42#include <qimage.h> 42#include <qimage.h>
43#include <qcopchannel_qws.h> 43#include <qcopchannel_qws.h>
44#include <qlistview.h> 44#include <qlistview.h>
45#include <qlist.h> 45#include <qlist.h>
46#include <qpixmap.h> 46#include <qpixmap.h>
47 47
48 48
49AppLnkSet *DocumentList::appLnkSet = 0; 49AppLnkSet *DocumentList::appLnkSet = 0;
50 50
51static const int MAX_SEARCH_DEPTH = 10; 51static const int MAX_SEARCH_DEPTH = 10;
52 52
53 53
54class DocumentListPrivate : public QObject { 54class DocumentListPrivate : public QObject {
55 Q_OBJECT 55 Q_OBJECT
56public: 56public:
57 DocumentListPrivate( ServerInterface *gui ); 57 DocumentListPrivate( ServerInterface *gui );
58 ~DocumentListPrivate(); 58 ~DocumentListPrivate();
59 59
60 void initialize(); 60 void initialize();
61 61
62 const QString nextFile(); 62 const QString nextFile();
63 const DocLnk *iterate(); 63 const DocLnk *iterate();
64 bool store( DocLnk* dl ); 64 bool store( DocLnk* dl );
65 void estimatedPercentScanned(); 65 void estimatedPercentScanned();
66 66
67 DocLnkSet dls; 67 DocLnkSet dls;
68 QDict<void> reference; 68 QDict<void> reference;
69 QDictIterator<void> *dit; 69 QDictIterator<void> *dit;
70 enum { Find, RemoveKnownFiles, MakeUnknownFiles, Done } state; 70 enum { Find, RemoveKnownFiles, MakeUnknownFiles, Done } state;
71 71
72 QStringList docPaths; 72 QStringList docPaths;
73 unsigned int docPathsSearched; 73 unsigned int docPathsSearched;
74 74
75 int searchDepth; 75 int searchDepth;
76 QDir *listDirs[MAX_SEARCH_DEPTH]; 76 QDir *listDirs[MAX_SEARCH_DEPTH];
77 const QFileInfoList *lists[MAX_SEARCH_DEPTH]; 77 const QFileInfoList *lists[MAX_SEARCH_DEPTH];
78 unsigned int listPositions[MAX_SEARCH_DEPTH]; 78 unsigned int listPositions[MAX_SEARCH_DEPTH];
79 79
80 StorageInfo *storage; 80 StorageInfo *storage;
81 81
82 int tid; 82 int tid;
83 83
84 ServerInterface *serverGui; 84 ServerInterface *serverGui;
85 85
86 bool needToSendAllDocLinks; 86 bool needToSendAllDocLinks;
87 bool sendAppLnks; 87 bool sendAppLnks;
88 bool sendDocLnks; 88 bool sendDocLnks;
89 bool scanDocs; 89 bool scanDocs;
90}; 90};
91 91
92 92
93DocumentList::DocumentList( ServerInterface *serverGui, bool scanDocs, 93/*
94 * scandocs will be read from Config
95 */
96DocumentList::DocumentList( ServerInterface *serverGui, bool /*scanDocs*/,
94 QObject *parent, const char *name ) 97 QObject *parent, const char *name )
95 : QObject( parent, name ) 98 : QObject( parent, name )
96{ 99{
97 appLnkSet = new AppLnkSet( MimeType::appsFolderName() ); 100 appLnkSet = new AppLnkSet( MimeType::appsFolderName() );
98 d = new DocumentListPrivate( serverGui ); 101 d = new DocumentListPrivate( serverGui );
99 d->needToSendAllDocLinks = false; 102 d->needToSendAllDocLinks = false;
100 103
101 Config cfg( "Launcher" ); 104 Config cfg( "Launcher" );
102 cfg.setGroup( "DocTab" ); 105 cfg.setGroup( "DocTab" );
103 d->scanDocs = cfg.readBoolEntry( "Enable", true ); 106 d->scanDocs = cfg.readBoolEntry( "Enable", true );
104 qDebug( "DocumentList::DocumentList() : scanDocs = %d", d->scanDocs ); 107 qDebug( "DocumentList::DocumentList() : scanDocs = %d", d->scanDocs );
105 108
106 QTimer::singleShot( 10, this, SLOT( startInitialScan() ) ); 109 QTimer::singleShot( 10, this, SLOT( startInitialScan() ) );
107} 110}
108 111
109void DocumentList::startInitialScan() 112void DocumentList::startInitialScan()
110{ 113{
111 reloadAppLnks(); 114 reloadAppLnks();
112 reloadDocLnks(); 115 reloadDocLnks();
113} 116}
114 117
115DocumentList::~DocumentList() 118DocumentList::~DocumentList()
116{ 119{
117 delete appLnkSet; 120 delete appLnkSet;
118 delete d; 121 delete d;
119} 122}
120 123
121 124
122void DocumentList::add( const DocLnk& doc ) 125void DocumentList::add( const DocLnk& doc )
123{ 126{
124 if ( d->serverGui && QFile::exists( doc.file() ) ) 127 if ( d->serverGui && QFile::exists( doc.file() ) )
125 d->serverGui->documentAdded( doc ); 128 d->serverGui->documentAdded( doc );
126} 129}
127 130
128 131
129void DocumentList::start() 132void DocumentList::start()
130{ 133{
131 resume(); 134 resume();
132} 135}
133 136
134 137
135void DocumentList::pause() 138void DocumentList::pause()
136{ 139{
137 //qDebug("pause %i", d->tid); 140 //qDebug("pause %i", d->tid);
138 killTimer( d->tid ); 141 killTimer( d->tid );
139 d->tid = 0; 142 d->tid = 0;
140} 143}
141 144
@@ -224,97 +227,97 @@ void DocumentList::reloadAppLnks()
224 pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); 227 pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() );
225 bgPm = img.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() ); 228 bgPm = img.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() );
226 } 229 }
227 230
228 //qDebug("adding type %s", (*ittypes).latin1()); 231 //qDebug("adding type %s", (*ittypes).latin1());
229 232
230 // ### our current launcher expects docs tab to be last 233 // ### our current launcher expects docs tab to be last
231 d->serverGui->typeAdded( *ittypes, name.isNull() ? (*ittypes) : name, pm, bgPm ); 234 d->serverGui->typeAdded( *ittypes, name.isNull() ? (*ittypes) : name, pm, bgPm );
232 } 235 }
233 prevTypeList.remove(*ittypes); 236 prevTypeList.remove(*ittypes);
234 } 237 }
235 } 238 }
236 for ( QStringList::Iterator ittypes=prevTypeList.begin(); ittypes!=prevTypeList.end(); ++ittypes) { 239 for ( QStringList::Iterator ittypes=prevTypeList.begin(); ittypes!=prevTypeList.end(); ++ittypes) {
237 //qDebug("removing type %s", (*ittypes).latin1()); 240 //qDebug("removing type %s", (*ittypes).latin1());
238 d->serverGui->typeRemoved(*ittypes); 241 d->serverGui->typeRemoved(*ittypes);
239 } 242 }
240 prevTypeList = types; 243 prevTypeList = types;
241 } 244 }
242 245
243 QListIterator<AppLnk> itapp( appLnkSet->children() ); 246 QListIterator<AppLnk> itapp( appLnkSet->children() );
244 AppLnk* l; 247 AppLnk* l;
245 while ( (l=itapp.current()) ) { 248 while ( (l=itapp.current()) ) {
246 ++itapp; 249 ++itapp;
247 if ( d->sendAppLnks && d->serverGui ) 250 if ( d->sendAppLnks && d->serverGui )
248 d->serverGui->applicationAdded( l->type(), *l ); 251 d->serverGui->applicationAdded( l->type(), *l );
249 } 252 }
250 253
251 if ( d->sendAppLnks && d->serverGui ) 254 if ( d->sendAppLnks && d->serverGui )
252 d->serverGui->applicationScanningProgress( 100 ); 255 d->serverGui->applicationScanningProgress( 100 );
253} 256}
254 257
255void DocumentList::reloadDocLnks() 258void DocumentList::reloadDocLnks()
256{ 259{
257 if ( !d->scanDocs ) 260 if ( !d->scanDocs )
258 return; 261 return;
259 262
260 if ( d->sendDocLnks && d->serverGui ) { 263 if ( d->sendDocLnks && d->serverGui ) {
261 d->serverGui->documentScanningProgress( 0 ); 264 d->serverGui->documentScanningProgress( 0 );
262 d->serverGui->allDocumentsRemoved(); 265 d->serverGui->allDocumentsRemoved();
263 } 266 }
264 267
265 rescan(); 268 rescan();
266} 269}
267 270
268void DocumentList::linkChanged( QString arg ) 271void DocumentList::linkChanged( QString arg )
269{ 272{
270 //qDebug( "linkchanged( %s )", arg.latin1() ); 273 //qDebug( "linkchanged( %s )", arg.latin1() );
271 274
272 if ( arg.isNull() || Opie::Global::isAppLnkFileName( arg ) ) { 275 if ( arg.isNull() || OGlobal::isAppLnkFileName( arg ) ) {
273 reloadAppLnks(); 276 reloadAppLnks();
274 } else { 277 } else {
275 278
276 const QList<DocLnk> &list = d->dls.children(); 279 const QList<DocLnk> &list = d->dls.children();
277 QListIterator<DocLnk> it( list ); 280 QListIterator<DocLnk> it( list );
278 while ( it.current() ) { 281 while ( it.current() ) {
279 DocLnk *doc = it.current(); 282 DocLnk *doc = it.current();
280 ++it; 283 ++it;
281 if ( ( doc->linkFileKnown() && doc->linkFile() == arg ) 284 if ( ( doc->linkFileKnown() && doc->linkFile() == arg )
282 || ( doc->fileKnown() && doc->file() == arg ) ) { 285 || ( doc->fileKnown() && doc->file() == arg ) ) {
283 //qDebug( "found old link" ); 286 //qDebug( "found old link" );
284 DocLnk* dl = new DocLnk( arg ); 287 DocLnk* dl = new DocLnk( arg );
285 // add new one if it exists and matches the mimetype 288 // add new one if it exists and matches the mimetype
286 if ( d->store( dl ) ) { 289 if ( d->store( dl ) ) {
287 // Existing link has been changed, send old link ref and a ref 290 // Existing link has been changed, send old link ref and a ref
288 // to the new link 291 // to the new link
289 //qDebug( "change case" ); 292 //qDebug( "change case" );
290 if ( d->serverGui ) 293 if ( d->serverGui )
291 d->serverGui->documentChanged( *doc, *dl ); 294 d->serverGui->documentChanged( *doc, *dl );
292 295
293 } else { 296 } else {
294 // Link has been removed or doesn't match the mimetypes any more 297 // Link has been removed or doesn't match the mimetypes any more
295 // so we aren't interested in it, so take it away from the list 298 // so we aren't interested in it, so take it away from the list
296 //qDebug( "removal case" ); 299 //qDebug( "removal case" );
297 if ( d->serverGui ) 300 if ( d->serverGui )
298 d->serverGui->documentRemoved( *doc ); 301 d->serverGui->documentRemoved( *doc );
299 302
300 } 303 }
301 d->dls.remove( doc ); // remove old link from docLnkSet 304 d->dls.remove( doc ); // remove old link from docLnkSet
302 delete doc; 305 delete doc;
303 return; 306 return;
304 } 307 }
305 } 308 }
306 // Didn't find existing link, must be new 309 // Didn't find existing link, must be new
307 DocLnk* dl = new DocLnk( arg ); 310 DocLnk* dl = new DocLnk( arg );
308 if ( d->store( dl ) ) { 311 if ( d->store( dl ) ) {
309 // Add if it's a link we are interested in 312 // Add if it's a link we are interested in
310 //qDebug( "add case" ); 313 //qDebug( "add case" );
311 add( *dl ); 314 add( *dl );
312 } 315 }
313 316
314 } 317 }
315} 318}
316 319
317void DocumentList::restoreDone() 320void DocumentList::restoreDone()
318{ 321{
319 reloadAppLnks(); 322 reloadAppLnks();
320 reloadDocLnks(); 323 reloadDocLnks();
diff --git a/core/launcher/main.cpp b/core/launcher/main.cpp
index 988e432..bf06e75 100644
--- a/core/launcher/main.cpp
+++ b/core/launcher/main.cpp
@@ -1,122 +1,123 @@
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#ifndef QTOPIA_INTERNAL_FILEOPERATIONS 21#ifndef QTOPIA_INTERNAL_FILEOPERATIONS
22#define QTOPIA_INTERNAL_FILEOPERATIONS 22#define QTOPIA_INTERNAL_FILEOPERATIONS
23#endif 23#endif
24#include "server.h" 24#include "server.h"
25#include "serverapp.h" 25#include "serverapp.h"
26#include "taskbar.h" 26#include "taskbar.h"
27#include "stabmon.h" 27#include "stabmon.h"
28#include "launcher.h" 28#include "launcher.h"
29#include "firstuse.h" 29#include "firstuse.h"
30#include "launcherglobal.h" 30
31#include <opie2/oglobal.h>
31 32
32#include <qtopia/qpeapplication.h> 33#include <qtopia/qpeapplication.h>
33#include <qtopia/network.h> 34#include <qtopia/network.h>
34#include <qtopia/config.h> 35#include <qtopia/config.h>
35//#include <qtopia/custom.h> 36//#include <qtopia/custom.h>
36#include <qtopia/global.h> 37
37 38
38#include <qfile.h> 39#include <qfile.h>
39#include <qdir.h> 40#include <qdir.h>
40#ifdef QWS 41#ifdef QWS
41#include <qwindowsystem_qws.h> 42#include <qwindowsystem_qws.h>
42#include <qtopia/qcopenvelope_qws.h> 43#include <qtopia/qcopenvelope_qws.h>
43#endif 44#endif
44#include <qtopia/alarmserver.h> 45#include <qtopia/alarmserver.h>
45 46
46#include <stdlib.h> 47#include <stdlib.h>
47#include <stdio.h> 48#include <stdio.h>
48#include <signal.h> 49#include <signal.h>
49#ifndef Q_OS_WIN32 50#ifndef Q_OS_WIN32
50#include <unistd.h> 51#include <unistd.h>
51#else 52#else
52#include <process.h> 53#include <process.h>
53#endif 54#endif
54 55
55#include "calibrate.h" 56#include "calibrate.h"
56 57
57 58
58#ifdef QT_QWS_LOGIN 59#ifdef QT_QWS_LOGIN
59#include "../login/qdmdialogimpl.h" 60#include "../login/qdmdialogimpl.h"
60#endif 61#endif
61 62
62#ifdef Q_WS_QWS 63#ifdef Q_WS_QWS
63#include <qkeyboard_qws.h> 64#include <qkeyboard_qws.h>
64#endif 65#endif
65 66
66#include <qmessagebox.h> 67#include <qmessagebox.h>
67#include <opie/odevice.h> 68#include <opie2/odevice.h>
68 69
69using namespace Opie; 70using namespace Opie;
70 71
71 72
72static void cleanup() 73static void cleanup()
73{ 74{
74 QDir dir( Opie::Global::tempDir(), "qcop-msg-*" ); 75 QDir dir( OGlobal::tempDirPath(), "qcop-msg-*" );
75 76
76 QStringList stale = dir.entryList(); 77 QStringList stale = dir.entryList();
77 QStringList::Iterator it; 78 QStringList::Iterator it;
78 for ( it = stale.begin(); it != stale.end(); ++it ) { 79 for ( it = stale.begin(); it != stale.end(); ++it ) {
79 dir.remove( *it ); 80 dir.remove( *it );
80 } 81 }
81} 82}
82 83
83static void refreshTimeZoneConfig() 84static void refreshTimeZoneConfig()
84{ 85{
85 /* ### FIXME timezone handling */ 86 /* ### FIXME timezone handling */
86#if 0 87#if 0
87 // We need to help WorldTime in setting up its configuration for 88 // We need to help WorldTime in setting up its configuration for
88 // the current translation 89 // the current translation
89 // BEGIN no tr 90 // BEGIN no tr
90 const char *defaultTz[] = { 91 const char *defaultTz[] = {
91 "America/New_York", 92 "America/New_York",
92 "America/Los_Angeles", 93 "America/Los_Angeles",
93 "Europe/Oslo", 94 "Europe/Oslo",
94 "Asia/Tokyo", 95 "Asia/Tokyo",
95 "Asia/Hong_Kong", 96 "Asia/Hong_Kong",
96 "Australia/Brisbane", 97 "Australia/Brisbane",
97 0 98 0
98 }; 99 };
99 // END no tr 100 // END no tr
100 101
101 TimeZone curZone; 102 TimeZone curZone;
102 QString zoneID; 103 QString zoneID;
103 int zoneIndex; 104 int zoneIndex;
104 Config cfg = Config( "WorldTime" ); 105 Config cfg = Config( "WorldTime" );
105 cfg.setGroup( "TimeZones" ); 106 cfg.setGroup( "TimeZones" );
106 if (!cfg.hasKey( "Zone0" )){ 107 if (!cfg.hasKey( "Zone0" )){
107 // We have no existing timezones use the defaults which are untranslated strings 108 // We have no existing timezones use the defaults which are untranslated strings
108 QString currTz = TimeZone::current().id(); 109 QString currTz = TimeZone::current().id();
109 QStringList zoneDefaults; 110 QStringList zoneDefaults;
110 zoneDefaults.append( currTz ); 111 zoneDefaults.append( currTz );
111 for ( int i = 0; defaultTz[i] && zoneDefaults.count() < 6; i++ ) { 112 for ( int i = 0; defaultTz[i] && zoneDefaults.count() < 6; i++ ) {
112 if ( defaultTz[i] != currTz ) 113 if ( defaultTz[i] != currTz )
113 zoneDefaults.append( defaultTz[i] ); 114 zoneDefaults.append( defaultTz[i] );
114 } 115 }
115 zoneIndex = 0; 116 zoneIndex = 0;
116 for (QStringList::Iterator it = zoneDefaults.begin(); it != zoneDefaults.end() ; ++it){ 117 for (QStringList::Iterator it = zoneDefaults.begin(); it != zoneDefaults.end() ; ++it){
117 cfg.writeEntry( "Zone" + QString::number( zoneIndex ) , *it); 118 cfg.writeEntry( "Zone" + QString::number( zoneIndex ) , *it);
118 zoneIndex++; 119 zoneIndex++;
119 } 120 }
120 } 121 }
121 // We have an existing list of timezones refresh the 122 // We have an existing list of timezones refresh the
122 // translations of TimeZone name 123 // translations of TimeZone name
diff --git a/core/launcher/qcopbridge.cpp b/core/launcher/qcopbridge.cpp
index 9cb56ce..b45f0cc 100644
--- a/core/launcher/qcopbridge.cpp
+++ b/core/launcher/qcopbridge.cpp
@@ -1,106 +1,107 @@
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#include "qcopbridge.h" 21#include "qcopbridge.h"
22#include "transferserver.h" 22#include "transferserver.h"
23 23
24#include <opie2/oglobal.h>
25
24#ifdef Q_WS_QWS 26#ifdef Q_WS_QWS
25#include <qtopia/qcopenvelope_qws.h> 27#include <qtopia/qcopenvelope_qws.h>
26#endif 28#endif
27#include <qtopia/qpeapplication.h> 29#include <qtopia/qpeapplication.h>
28#include <qtopia/global.h> 30
29#include <qtopia/version.h> 31#include <qtopia/version.h>
30#include <qtopia/config.h> 32#include <qtopia/config.h>
31 33
32#include <qdir.h> 34#include <qdir.h>
33#include <qfile.h> 35#include <qfile.h>
34#include <qtextstream.h> 36#include <qtextstream.h>
35#include <qdatastream.h> 37#include <qdatastream.h>
36#include <qcstring.h> 38#include <qcstring.h>
37#include <qstringlist.h> 39#include <qstringlist.h>
38#include <qfileinfo.h> 40#include <qfileinfo.h>
39#include <qregexp.h> 41#include <qregexp.h>
40#include <qtimer.h> 42#include <qtimer.h>
41#ifdef Q_WS_QWS 43#ifdef Q_WS_QWS
42#include <qcopchannel_qws.h> 44#include <qcopchannel_qws.h>
43#endif 45#endif
44 46
45#ifndef _XOPEN_SOURCE 47#ifndef _XOPEN_SOURCE
46#define _XOPEN_SOURCE 48#define _XOPEN_SOURCE
47#endif 49#endif
48#ifndef Q_OS_WIN32 50#ifndef Q_OS_WIN32
49#include <pwd.h> 51#include <pwd.h>
50#include <unistd.h> 52#include <unistd.h>
51#include <sys/types.h> 53#include <sys/types.h>
52#endif 54#endif
53 55
54#if defined(_OS_LINUX_) 56#if defined(_OS_LINUX_)
55#include <shadow.h> 57#include <shadow.h>
56#endif 58#endif
57 59
58#include "launcherglobal.h"
59 60
60//#define INSECURE 61//#define INSECURE
61 62
62const int block_size = 51200; 63const int block_size = 51200;
63 64
64QCopBridge::QCopBridge( Q_UINT16 port, QObject *parent, 65QCopBridge::QCopBridge( Q_UINT16 port, QObject *parent,
65 const char* name ) 66 const char* name )
66 : QServerSocket( port, 1, parent, name ), 67 : QServerSocket( port, 1, parent, name ),
67 desktopChannel( 0 ), 68 desktopChannel( 0 ),
68 cardChannel( 0 ) 69 cardChannel( 0 )
69{ 70{
70 if ( !ok() ) 71 if ( !ok() )
71 qWarning( "Failed to bind to port %d", port ); 72 qWarning( "Failed to bind to port %d", port );
72 else { 73 else {
73#ifndef QT_NO_COP 74#ifndef QT_NO_COP
74 desktopChannel = new QCopChannel( "QPE/Desktop", this ); 75 desktopChannel = new QCopChannel( "QPE/Desktop", this );
75 connect( desktopChannel, SIGNAL(received(const QCString &, const QByteArray &)), 76 connect( desktopChannel, SIGNAL(received(const QCString &, const QByteArray &)),
76 this, SLOT(desktopMessage( const QCString &, const QByteArray &)) ); 77 this, SLOT(desktopMessage( const QCString &, const QByteArray &)) );
77 cardChannel = new QCopChannel( "QPE/Card", this ); 78 cardChannel = new QCopChannel( "QPE/Card", this );
78 connect( cardChannel, SIGNAL(received(const QCString &, const QByteArray &)), 79 connect( cardChannel, SIGNAL(received(const QCString &, const QByteArray &)),
79 this, SLOT(desktopMessage( const QCString &, const QByteArray &)) ); 80 this, SLOT(desktopMessage( const QCString &, const QByteArray &)) );
80#endif 81#endif
81 } 82 }
82 sendSync = FALSE; 83 sendSync = FALSE;
83 openConnections.setAutoDelete( TRUE ); 84 openConnections.setAutoDelete( TRUE );
84 authorizeConnections(); 85 authorizeConnections();
85} 86}
86 87
87QCopBridge::~QCopBridge() 88QCopBridge::~QCopBridge()
88{ 89{
89#ifndef QT_NO_COP 90#ifndef QT_NO_COP
90 delete desktopChannel; 91 delete desktopChannel;
91#endif 92#endif
92} 93}
93 94
94void QCopBridge::authorizeConnections() 95void QCopBridge::authorizeConnections()
95{ 96{
96 Config cfg("Security"); 97 Config cfg("Security");
97 cfg.setGroup("SyncMode"); 98 cfg.setGroup("SyncMode");
98 m_mode = Mode(cfg.readNumEntry("Mode", Sharp )); 99 m_mode = Mode(cfg.readNumEntry("Mode", Sharp ));
99 QListIterator<QCopBridgePI> it(openConnections); 100 QListIterator<QCopBridgePI> it(openConnections);
100 while ( it.current() ) { 101 while ( it.current() ) {
101 if ( !it.current()->verifyAuthorised() ) { 102 if ( !it.current()->verifyAuthorised() ) {
102 disconnect ( it.current(), SIGNAL( connectionClosed( QCopBridgePI *) ), this, SLOT( closed( QCopBridgePI *) ) ); 103 disconnect ( it.current(), SIGNAL( connectionClosed( QCopBridgePI *) ), this, SLOT( closed( QCopBridgePI *) ) );
103 openConnections.removeRef( it.current() ); 104 openConnections.removeRef( it.current() );
104 } else 105 } else
105 ++it; 106 ++it;
106 } 107 }
@@ -280,97 +281,97 @@ QCopBridgePI::QCopBridgePI( int socket, QObject *parent, const char* name )
280 intro += "loginname="; intro += SyncAuthentication::loginName(); intro += ";"; 281 intro += "loginname="; intro += SyncAuthentication::loginName(); intro += ";";
281 intro += "displayname="; intro += SyncAuthentication::ownerName(); intro += ";"; 282 intro += "displayname="; intro += SyncAuthentication::ownerName(); intro += ";";
282 send( intro ); 283 send( intro );
283 state = Wait_USER; 284 state = Wait_USER;
284 } 285 }
285 sendSync = FALSE; 286 sendSync = FALSE;
286 connect( this, SIGNAL( connectionClosed() ), SLOT( myConnectionClosed() ) ); 287 connect( this, SIGNAL( connectionClosed() ), SLOT( myConnectionClosed() ) );
287 288
288 // idle timer to close connections when not used anymore 289 // idle timer to close connections when not used anymore
289 timer = new QTimer(this); 290 timer = new QTimer(this);
290 connect( timer, SIGNAL(timeout()), this, SLOT(myConnectionClosed()) ); 291 connect( timer, SIGNAL(timeout()), this, SLOT(myConnectionClosed()) );
291 timer->start( 300000, TRUE ); 292 timer->start( 300000, TRUE );
292} 293}
293 294
294 295
295QCopBridgePI::~QCopBridgePI() 296QCopBridgePI::~QCopBridgePI()
296{ 297{
297} 298}
298 299
299bool QCopBridgePI::verifyAuthorised() 300bool QCopBridgePI::verifyAuthorised()
300{ 301{
301 if ( !SyncAuthentication::isAuthorized(peerAddress()) ) { 302 if ( !SyncAuthentication::isAuthorized(peerAddress()) ) {
302 state = Forbidden; 303 state = Forbidden;
303 return FALSE; 304 return FALSE;
304 } 305 }
305 return TRUE; 306 return TRUE;
306} 307}
307 308
308void QCopBridgePI::myConnectionClosed() 309void QCopBridgePI::myConnectionClosed()
309{ 310{
310 emit connectionClosed( this ); 311 emit connectionClosed( this );
311} 312}
312 313
313void QCopBridgePI::sendDesktopMessage( const QString &msg ) 314void QCopBridgePI::sendDesktopMessage( const QString &msg )
314{ 315{
315 QString str = "CALL QPE/Desktop " + msg; // No tr 316 QString str = "CALL QPE/Desktop " + msg; // No tr
316 send ( str ); 317 send ( str );
317} 318}
318 319
319void QCopBridgePI::sendDesktopMessage( const QCString &msg, const QByteArray& data ) 320void QCopBridgePI::sendDesktopMessage( const QCString &msg, const QByteArray& data )
320{ 321{
321 if ( !isOpen() ) // eg. Forbidden 322 if ( !isOpen() ) // eg. Forbidden
322 return; 323 return;
323 324
324 const char hdr[]="CALLB QPE/Desktop "; 325 const char hdr[]="CALLB QPE/Desktop ";
325 writeBlock(hdr,sizeof(hdr)-1); 326 writeBlock(hdr,sizeof(hdr)-1);
326 writeBlock(msg,msg.length()); 327 writeBlock(msg,msg.length());
327 writeBlock(" ",1); 328 writeBlock(" ",1);
328 QByteArray b64 = Opie::Global::encodeBase64(data); 329 QByteArray b64 = OGlobal::encodeBase64(data);
329 writeBlock(b64.data(),b64.size()); 330 writeBlock(b64.data(),b64.size());
330 writeBlock("\r\n",2); 331 writeBlock("\r\n",2);
331 332
332} 333}
333 334
334 335
335void QCopBridgePI::send( const QString& msg ) 336void QCopBridgePI::send( const QString& msg )
336{ 337{
337 if ( !isOpen() ) // eg. Forbidden 338 if ( !isOpen() ) // eg. Forbidden
338 return; 339 return;
339 QTextStream os( this ); 340 QTextStream os( this );
340 os << msg << endl; 341 os << msg << endl;
341 //qDebug( "sending qcop message: %s", msg.latin1() ); 342 //qDebug( "sending qcop message: %s", msg.latin1() );
342} 343}
343 344
344void QCopBridgePI::read() 345void QCopBridgePI::read()
345{ 346{
346 while ( canReadLine() ) { 347 while ( canReadLine() ) {
347 timer->start( 300000, TRUE ); 348 timer->start( 300000, TRUE );
348 process( readLine().stripWhiteSpace() ); 349 process( readLine().stripWhiteSpace() );
349 } 350 }
350} 351}
351 352
352void QCopBridgePI::process( const QString& message ) 353void QCopBridgePI::process( const QString& message )
353{ 354{
354 //qDebug( "Command: %s", message.latin1() ); 355 //qDebug( "Command: %s", message.latin1() );
355 356
356 // split message using "," as separator 357 // split message using "," as separator
357 QStringList msg = QStringList::split( " ", message ); 358 QStringList msg = QStringList::split( " ", message );
358 if ( msg.isEmpty() ) return; 359 if ( msg.isEmpty() ) return;
359 360
360 // command token 361 // command token
361 QString cmd = msg[0].upper(); 362 QString cmd = msg[0].upper();
362 363
363 // argument token 364 // argument token
364 QString arg; 365 QString arg;
365 if ( msg.count() >= 2 ) 366 if ( msg.count() >= 2 )
366 arg = msg[1]; 367 arg = msg[1];
367 368
368 // we always respond to QUIT, regardless of state 369 // we always respond to QUIT, regardless of state
369 if ( cmd == "QUIT" ) { 370 if ( cmd == "QUIT" ) {
370 send( "211 Have a nice day!" ); // No tr 371 send( "211 Have a nice day!" ); // No tr
371 close(); 372 close();
372 return; 373 return;
373 } 374 }
374 375
375 // connected to client 376 // connected to client
376 if ( Connected == state ) 377 if ( Connected == state )
diff --git a/core/launcher/screensaver.cpp b/core/launcher/screensaver.cpp
index 48770e8..1146dcd 100644
--- a/core/launcher/screensaver.cpp
+++ b/core/launcher/screensaver.cpp
@@ -1,56 +1,56 @@
1 1
2#include "screensaver.h" 2#include "screensaver.h"
3 3
4#include <qpe/config.h> 4#include <qpe/config.h>
5#include <qpe/power.h> 5#include <qpe/power.h>
6#include <qpe/network.h> 6#include <qpe/network.h>
7 7
8#include <opie/odevice.h> 8#include <opie2/odevice.h>
9 9
10 10
11using namespace Opie; 11using namespace Opie;
12 12
13 13
14 14
15OpieScreenSaver::OpieScreenSaver ( ) 15OpieScreenSaver::OpieScreenSaver ( )
16 : QObject ( 0, "screensaver" ), QWSScreenSaver ( ) 16 : QObject ( 0, "screensaver" ), QWSScreenSaver ( )
17{ 17{
18 m_disable_suspend = 100; 18 m_disable_suspend = 100;
19 m_enable_dim = false; 19 m_enable_dim = false;
20 m_enable_lightoff = false; 20 m_enable_lightoff = false;
21 m_enable_suspend = false; 21 m_enable_suspend = false;
22 m_onlylcdoff = false; 22 m_onlylcdoff = false;
23 23
24 m_enable_dim_ac = false; 24 m_enable_dim_ac = false;
25 m_enable_lightoff_ac = false; 25 m_enable_lightoff_ac = false;
26 m_enable_suspend_ac = false; 26 m_enable_suspend_ac = false;
27 m_onlylcdoff_ac = false; 27 m_onlylcdoff_ac = false;
28 28
29 m_use_light_sensor = false; 29 m_use_light_sensor = false;
30 m_backlight_sensor = -1; 30 m_backlight_sensor = -1;
31 ::memset ( m_sensordata, 0xff, LS_Count * sizeof( m_sensordata [0] )); 31 ::memset ( m_sensordata, 0xff, LS_Count * sizeof( m_sensordata [0] ));
32 32
33 m_lcd_status = true; 33 m_lcd_status = true;
34 34
35 m_backlight_normal = -1; 35 m_backlight_normal = -1;
36 m_backlight_current = -1; 36 m_backlight_current = -1;
37 m_backlight_forcedoff = false; 37 m_backlight_forcedoff = false;
38 38
39 m_on_ac = false; 39 m_on_ac = false;
40 40
41 m_level = -1; 41 m_level = -1;
42 42
43 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) 43 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off)
44 ODevice::inst ( )-> setDisplayStatus ( true ); 44 ODevice::inst ( )-> setDisplayStatus ( true );
45 setBacklight ( -1 ); 45 setBacklight ( -1 );
46} 46}
47 47
48 48
49/** 49/**
50 * Stops the screen saver 50 * Stops the screen saver
51 */ 51 */
52void OpieScreenSaver::restore() 52void OpieScreenSaver::restore()
53{ 53{
54 m_level = -1; 54 m_level = -1;
55 55
56 if ( !m_lcd_status ) { // We must have turned it off 56 if ( !m_lcd_status ) { // We must have turned it off
diff --git a/core/launcher/server.cpp b/core/launcher/server.cpp
index b9580c7..32fcdd0 100644
--- a/core/launcher/server.cpp
+++ b/core/launcher/server.cpp
@@ -6,98 +6,98 @@
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#include "server.h" 21#include "server.h"
22#include "serverapp.h" 22#include "serverapp.h"
23#include "launcher.h" 23#include "launcher.h"
24#include "startmenu.h" 24#include "startmenu.h"
25#include "transferserver.h" 25#include "transferserver.h"
26#include "qcopbridge.h" 26#include "qcopbridge.h"
27#include "irserver.h" 27#include "irserver.h"
28#include "packageslave.h" 28#include "packageslave.h"
29#include "calibrate.h" 29#include "calibrate.h"
30#include "qrsync.h" 30#include "qrsync.h"
31#include "syncdialog.h" 31#include "syncdialog.h"
32#include "launcher.h" 32#include "launcher.h"
33#include "shutdownimpl.h" 33#include "shutdownimpl.h"
34#include "applauncher.h" 34#include "applauncher.h"
35#if 0 35#if 0
36#include "suspendmonitor.h" 36#include "suspendmonitor.h"
37#endif 37#endif
38#include "documentlist.h" 38#include "documentlist.h"
39 39
40#include <qtopia/applnk.h> 40#include <qtopia/applnk.h>
41#include <qtopia/private/categories.h> 41#include <qtopia/private/categories.h>
42#include <qtopia/mimetype.h> 42#include <qtopia/mimetype.h>
43#include <qtopia/config.h> 43#include <qtopia/config.h>
44#include <qtopia/resource.h> 44#include <qtopia/resource.h>
45#include <qtopia/version.h> 45#include <qtopia/version.h>
46#include <qtopia/storage.h> 46#include <qtopia/storage.h>
47 47
48#include <qtopia/qcopenvelope_qws.h> 48#include <qtopia/qcopenvelope_qws.h>
49#include <qwindowsystem_qws.h> 49#include <qwindowsystem_qws.h>
50#include <qgfx_qws.h> 50#include <qgfx_qws.h>
51#include <qtopia/global.h> 51#include <qtopia/global.h>
52//#include <qtopia/custom.h> 52//#include <qtopia/custom.h>
53 53
54#include <opie/odevicebutton.h> 54#include <opie2/odevicebutton.h>
55#include <opie/odevice.h> 55#include <opie2/odevice.h>
56 56
57#include <unistd.h> 57#include <unistd.h>
58#include <qmainwindow.h> 58#include <qmainwindow.h>
59#include <qmessagebox.h> 59#include <qmessagebox.h>
60#include <qtimer.h> 60#include <qtimer.h>
61#include <qtextstream.h> 61#include <qtextstream.h>
62 62
63#include <stdlib.h> 63#include <stdlib.h>
64 64
65extern QRect qt_maxWindowRect; 65extern QRect qt_maxWindowRect;
66 66
67using namespace Opie; 67using namespace Opie;
68 68
69static QWidget *calibrate(bool) 69static QWidget *calibrate(bool)
70{ 70{
71#ifdef Q_WS_QWS 71#ifdef Q_WS_QWS
72 Calibrate *c = new Calibrate; 72 Calibrate *c = new Calibrate;
73 c->show(); 73 c->show();
74 return c; 74 return c;
75#else 75#else
76 return 0; 76 return 0;
77#endif 77#endif
78} 78}
79 79
80#define FACTORY(T) \ 80#define FACTORY(T) \
81 static QWidget *new##T( bool maximized ) { \ 81 static QWidget *new##T( bool maximized ) { \
82 QWidget *w = new T( 0, 0, QWidget::WDestructiveClose | QWidget::WGroupLeader ); \ 82 QWidget *w = new T( 0, 0, QWidget::WDestructiveClose | QWidget::WGroupLeader ); \
83 if ( maximized ) { \ 83 if ( maximized ) { \
84 if ( qApp->desktop()->width() <= 350 ) { \ 84 if ( qApp->desktop()->width() <= 350 ) { \
85 w->showMaximized(); \ 85 w->showMaximized(); \
86 } else { \ 86 } else { \
87 w->resize( QSize( 300, 300 ) ); \ 87 w->resize( QSize( 300, 300 ) ); \
88 } \ 88 } \
89 } \ 89 } \
90 w->show(); \ 90 w->show(); \
91 return w; \ 91 return w; \
92 } 92 }
93 93
94 94
95#ifdef SINGLE_APP 95#ifdef SINGLE_APP
96#define APP(a,b,c,d) FACTORY(b) 96#define APP(a,b,c,d) FACTORY(b)
97#include "apps.h" 97#include "apps.h"
98#undef APP 98#undef APP
99#endif // SINGLE_APP 99#endif // SINGLE_APP
100 100
101static Global::Command builtins[] = { 101static Global::Command builtins[] = {
102 102
103#ifdef SINGLE_APP 103#ifdef SINGLE_APP
diff --git a/core/launcher/server.pro b/core/launcher/server.pro
index 0513536..f82c741 100644
--- a/core/launcher/server.pro
+++ b/core/launcher/server.pro
@@ -1,125 +1,124 @@
1 TEMPLATE= app 1 TEMPLATE= app
2 2
3 CONFIG += qtopia warn_on release 3 CONFIG += qtopia warn_on release
4 4
5 DESTDIR = $$(OPIEDIR)/bin 5 DESTDIR = $$(OPIEDIR)/bin
6 6
7 HEADERS += server.h \ 7 HEADERS += server.h \
8 serverinterface.h \ 8 serverinterface.h \
9 launchertab.h \ 9 launchertab.h \
10 documentlist.h \ 10 documentlist.h \
11 appicons.h \ 11 appicons.h \
12 taskbar.h \ 12 taskbar.h \
13 runningappbar.h \ 13 runningappbar.h \
14 applauncher.h \ 14 applauncher.h \
15 stabmon.h \ 15 stabmon.h \
16 inputmethods.h \ 16 inputmethods.h \
17 systray.h \ 17 systray.h \
18 wait.h \ 18 wait.h \
19 shutdownimpl.h \ 19 shutdownimpl.h \
20 launcher.h \ 20 launcher.h \
21 launcherview.h \ 21 launcherview.h \
22 $$(OPIEDIR)/core/apps/calibrate/calibrate.h \ 22 $$(OPIEDIR)/core/apps/calibrate/calibrate.h \
23 startmenu.h \ 23 startmenu.h \
24 transferserver.h \ 24 transferserver.h \
25 qcopbridge.h \ 25 qcopbridge.h \
26 packageslave.h \ 26 packageslave.h \
27 irserver.h \ 27 irserver.h \
28 firstuse.h \ 28 firstuse.h \
29 $$(OPIEDIR)/rsync/buf.h \ 29 $$(OPIEDIR)/rsync/buf.h \
30 $$(OPIEDIR)/rsync/checksum.h \ 30 $$(OPIEDIR)/rsync/checksum.h \
31 $$(OPIEDIR)/rsync/command.h \ 31 $$(OPIEDIR)/rsync/command.h \
32 $$(OPIEDIR)/rsync/emit.h \ 32 $$(OPIEDIR)/rsync/emit.h \
33 $$(OPIEDIR)/rsync/job.h \ 33 $$(OPIEDIR)/rsync/job.h \
34 $$(OPIEDIR)/rsync/netint.h \ 34 $$(OPIEDIR)/rsync/netint.h \
35 $$(OPIEDIR)/rsync/protocol.h \ 35 $$(OPIEDIR)/rsync/protocol.h \
36 $$(OPIEDIR)/rsync/prototab.h \ 36 $$(OPIEDIR)/rsync/prototab.h \
37 $$(OPIEDIR)/rsync/rsync.h \ 37 $$(OPIEDIR)/rsync/rsync.h \
38 $$(OPIEDIR)/rsync/search.h \ 38 $$(OPIEDIR)/rsync/search.h \
39 $$(OPIEDIR)/rsync/stream.h \ 39 $$(OPIEDIR)/rsync/stream.h \
40 $$(OPIEDIR)/rsync/sumset.h \ 40 $$(OPIEDIR)/rsync/sumset.h \
41 $$(OPIEDIR)/rsync/trace.h \ 41 $$(OPIEDIR)/rsync/trace.h \
42 $$(OPIEDIR)/rsync/types.h \ 42 $$(OPIEDIR)/rsync/types.h \
43 $$(OPIEDIR)/rsync/util.h \ 43 $$(OPIEDIR)/rsync/util.h \
44 $$(OPIEDIR)/rsync/whole.h \ 44 $$(OPIEDIR)/rsync/whole.h \
45 $$(OPIEDIR)/rsync/config_rsync.h \ 45 $$(OPIEDIR)/rsync/config_rsync.h \
46 $$(OPIEDIR)/rsync/qrsync.h \ 46 $$(OPIEDIR)/rsync/qrsync.h \
47 syncdialog.h \ 47 syncdialog.h \
48 serverapp.h \ 48 serverapp.h \
49 launcherglobal.h \
50 qprocess.h \ 49 qprocess.h \
51 screensaver.h 50 screensaver.h
52 51
53 SOURCES += server.cpp \ 52 SOURCES += server.cpp \
54 serverinterface.cpp \ 53 serverinterface.cpp \
55 launchertab.cpp \ 54 launchertab.cpp \
56 documentlist.cpp \ 55 documentlist.cpp \
57 appicons.cpp \ 56 appicons.cpp \
58 taskbar.cpp \ 57 taskbar.cpp \
59 runningappbar.cpp \ 58 runningappbar.cpp \
60 applauncher.cpp \ 59 applauncher.cpp \
61 stabmon.cpp \ 60 stabmon.cpp \
62 inputmethods.cpp \ 61 inputmethods.cpp \
63 systray.cpp \ 62 systray.cpp \
64 wait.cpp \ 63 wait.cpp \
65 shutdownimpl.cpp \ 64 shutdownimpl.cpp \
66 launcher.cpp \ 65 launcher.cpp \
67 launcherview.cpp \ 66 launcherview.cpp \
68 $$(OPIEDIR)/core/apps/calibrate/calibrate.cpp \ 67 $$(OPIEDIR)/core/apps/calibrate/calibrate.cpp \
69 transferserver.cpp \ 68 transferserver.cpp \
70 packageslave.cpp \ 69 packageslave.cpp \
71 irserver.cpp \ 70 irserver.cpp \
72 qcopbridge.cpp \ 71 qcopbridge.cpp \
73 startmenu.cpp \ 72 startmenu.cpp \
74 main.cpp \ 73 main.cpp \
75 firstuse.cpp \ 74 firstuse.cpp \
76 $$(OPIEDIR)/rsync/base64.c \ 75 $$(OPIEDIR)/rsync/base64.c \
77 $$(OPIEDIR)/rsync/buf.c \ 76 $$(OPIEDIR)/rsync/buf.c \
78 $$(OPIEDIR)/rsync/checksum.c \ 77 $$(OPIEDIR)/rsync/checksum.c \
79 $$(OPIEDIR)/rsync/command.c \ 78 $$(OPIEDIR)/rsync/command.c \
80 $$(OPIEDIR)/rsync/delta.c \ 79 $$(OPIEDIR)/rsync/delta.c \
81 $$(OPIEDIR)/rsync/emit.c \ 80 $$(OPIEDIR)/rsync/emit.c \
82 $$(OPIEDIR)/rsync/hex.c \ 81 $$(OPIEDIR)/rsync/hex.c \
83 $$(OPIEDIR)/rsync/job.c \ 82 $$(OPIEDIR)/rsync/job.c \
84 $$(OPIEDIR)/rsync/mdfour.c \ 83 $$(OPIEDIR)/rsync/mdfour.c \
85 $$(OPIEDIR)/rsync/mksum.c \ 84 $$(OPIEDIR)/rsync/mksum.c \
86 $$(OPIEDIR)/rsync/msg.c \ 85 $$(OPIEDIR)/rsync/msg.c \
87 $$(OPIEDIR)/rsync/netint.c \ 86 $$(OPIEDIR)/rsync/netint.c \
88 $$(OPIEDIR)/rsync/patch.c \ 87 $$(OPIEDIR)/rsync/patch.c \
89 $$(OPIEDIR)/rsync/prototab.c \ 88 $$(OPIEDIR)/rsync/prototab.c \
90 $$(OPIEDIR)/rsync/readsums.c \ 89 $$(OPIEDIR)/rsync/readsums.c \
91 $$(OPIEDIR)/rsync/scoop.c \ 90 $$(OPIEDIR)/rsync/scoop.c \
92 $$(OPIEDIR)/rsync/search.c \ 91 $$(OPIEDIR)/rsync/search.c \
93 $$(OPIEDIR)/rsync/stats.c \ 92 $$(OPIEDIR)/rsync/stats.c \
94 $$(OPIEDIR)/rsync/stream.c \ 93 $$(OPIEDIR)/rsync/stream.c \
95 $$(OPIEDIR)/rsync/sumset.c \ 94 $$(OPIEDIR)/rsync/sumset.c \
96 $$(OPIEDIR)/rsync/trace.c \ 95 $$(OPIEDIR)/rsync/trace.c \
97 $$(OPIEDIR)/rsync/tube.c \ 96 $$(OPIEDIR)/rsync/tube.c \
98 $$(OPIEDIR)/rsync/util.c \ 97 $$(OPIEDIR)/rsync/util.c \
99 $$(OPIEDIR)/rsync/version.c \ 98 $$(OPIEDIR)/rsync/version.c \
100 $$(OPIEDIR)/rsync/whole.c \ 99 $$(OPIEDIR)/rsync/whole.c \
101 $$(OPIEDIR)/rsync/qrsync.cpp \ 100 $$(OPIEDIR)/rsync/qrsync.cpp \
102 syncdialog.cpp \ 101 syncdialog.cpp \
103 serverapp.cpp \ 102 serverapp.cpp \
104 launcherglobal.cpp \
105 qprocess.cpp \ 103 qprocess.cpp \
106 qprocess_unix.cpp \ 104 qprocess_unix.cpp \
107 screensaver.cpp 105 screensaver.cpp
108 106
109 107
110INCLUDEPATH += $(OPIEDIR)/core/apps/calibrate 108INCLUDEPATH += $(OPIEDIR)/core/apps/calibrate
111 DEPENDPATH+= $(OPIEDIR)/core/apps/calibrate 109 DEPENDPATH+= $(OPIEDIR)/core/apps/calibrate
112 110
113INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/rsync 111INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/rsync
114 DEPENDPATH+= $(OPIEDIR)/rsync 112 DEPENDPATH+= $(OPIEDIR)/rsync
115 113
116 TARGET = qpe 114 TARGET = qpe
117 115
116#needs OWait and ODevice
118CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX ) 117CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX )
119contains( CONFTEST, y ){ 118contains( CONFTEST, y ){
120 LIBS += -lqpe -lopie 119 LIBS += -lqpe -lopiecore2 -lopieui2
121}else{ 120}else{
122 LIBS+= -lcrypt -lqpe -lopie 121 LIBS+= -lcrypt -lqpe -lopiecore2 -lopieui2
123} 122}
124 123
125include ( $(OPIEDIR)/include.pro ) 124include ( $(OPIEDIR)/include.pro )
diff --git a/core/launcher/startmenu.cpp b/core/launcher/startmenu.cpp
index b84eed8..c199063 100644
--- a/core/launcher/startmenu.cpp
+++ b/core/launcher/startmenu.cpp
@@ -309,86 +309,86 @@ void StartMenu::clearApplets()
309void StartMenu::loadApplets() 309void StartMenu::loadApplets()
310{ 310{
311 Config cfg( "StartMenu" ); 311 Config cfg( "StartMenu" );
312 cfg.setGroup( "Applets" ); 312 cfg.setGroup( "Applets" );
313 313
314 // SafeMode causes too much problems, so we disable it for now -- 314 // SafeMode causes too much problems, so we disable it for now --
315 // maybe we should reenable it for OPIE 1.0 - sandman 26.09.02 315 // maybe we should reenable it for OPIE 1.0 - sandman 26.09.02
316 // removed in the remerge PluginManager could handle it 316 // removed in the remerge PluginManager could handle it
317 // we don't currently use it -zecke 317 // we don't currently use it -zecke
318 318
319 QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' ); 319 QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' );
320 320
321 QString lang = getenv( "LANG" ); 321 QString lang = getenv( "LANG" );
322 QString path = QPEApplication::qpeDir() + "/plugins/applets"; 322 QString path = QPEApplication::qpeDir() + "/plugins/applets";
323 QDir dir( path, "lib*.so" ); 323 QDir dir( path, "lib*.so" );
324 QStringList list = dir.entryList(); 324 QStringList list = dir.entryList();
325 QStringList::Iterator it; 325 QStringList::Iterator it;
326 int napplets = 0; 326 int napplets = 0;
327 MenuApplet* *xapplets = new MenuApplet*[list.count()]; 327 MenuApplet* *xapplets = new MenuApplet*[list.count()];
328 for ( it = list.begin(); it != list.end(); ++it ) { 328 for ( it = list.begin(); it != list.end(); ++it ) {
329 if ( exclude.find( *it ) != exclude.end() ) 329 if ( exclude.find( *it ) != exclude.end() )
330 continue; 330 continue;
331 MenuAppletInterface *iface = 0; 331 MenuAppletInterface *iface = 0;
332 QLibrary *lib = new QLibrary( path + "/" + *it ); 332 QLibrary *lib = new QLibrary( path + "/" + *it );
333 if (( lib->queryInterface( IID_MenuApplet, (QUnknownInterface**)&iface ) == QS_OK ) && iface ) { 333 if (( lib->queryInterface( IID_MenuApplet, (QUnknownInterface**)&iface ) == QS_OK ) && iface ) {
334 MenuApplet *applet = new MenuApplet; 334 MenuApplet *applet = new MenuApplet;
335 xapplets[napplets++] = applet; 335 xapplets[napplets++] = applet;
336 applet->library = lib; 336 applet->library = lib;
337 applet->iface = iface; 337 applet->iface = iface;
338 338
339 QTranslator *trans = new QTranslator(qApp); 339 QTranslator *trans = new QTranslator(qApp);
340 QString type = (*it).left( (*it).find(".") ); 340 QString type = (*it).left( (*it).find(".") );
341 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; 341 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm";
342 if ( trans->load( tfn )) 342 if ( trans->load( tfn ))
343 qApp->installTranslator( trans ); 343 qApp->installTranslator( trans );
344 else 344 else
345 delete trans; 345 delete trans;
346 } else { 346 } else {
347 exclude += *it; 347 exclude += *it;
348 delete lib; 348 delete lib;
349 } 349 }
350 } 350 }
351 cfg.writeEntry( "ExcludeApplets", exclude, ',' ); 351 cfg.writeEntry( "ExcludeApplets", exclude, ',' );
352 qsort(xapplets, napplets, sizeof(menuApplets[0]), compareAppletPositions); 352 qsort(xapplets, napplets, sizeof(menuApplets[0]), compareAppletPositions);
353 353
354 354
355 while ( napplets-- ) { 355 while ( napplets-- ) {
356 MenuApplet *applet = xapplets[napplets]; 356 MenuApplet *applet = xapplets[napplets];
357
358 applet->popup = applet->iface->popup( this ); 357 applet->popup = applet->iface->popup( this );
359 358
360 // menuApplets got an id < -1 359 // menuApplets got an id < -1
361 menuApplets.insert( -( currentItem + 2 ), new MenuApplet( *applet ) ); 360 menuApplets.insert( -( currentItem + 2 ), new MenuApplet( *applet ) );
362 currentItem++; 361 currentItem++;
363 } 362 }
364 delete [] xapplets; 363 delete [] xapplets;
365 364
366 addApplets( launchMenu ); 365 addApplets( launchMenu );
367} 366}
368 367
369 368
370/* 369/*
371 * Launcher calls loadMenu too often fix that 370 * Launcher calls loadMenu too often fix that
372 */ 371 */
373void StartMenu::addApplets(QPopupMenu* pop) { 372void StartMenu::addApplets(QPopupMenu* pop) {
374 QIntDict<MenuApplet> dict; 373 QIntDict<MenuApplet> dict;
375 if( pop-> count ( )) 374 if( pop-> count ( ))
376 pop-> insertSeparator ( ); 375 pop-> insertSeparator ( );
377 376
378 for ( QIntDictIterator<MenuApplet> it( menuApplets ); it.current(); ++it ) { 377 for ( QIntDictIterator<MenuApplet> it( menuApplets ); it.current(); ++it ) {
379 MenuApplet *applet = it.current(); 378 MenuApplet *applet = it.current();
380 if ( applet->popup ) 379 if ( applet->popup )
381 applet->id = pop->insertItem( applet->iface->icon(), 380 applet->id = pop->insertItem( applet->iface->icon(),
382 applet->iface->text(), applet->popup ); 381 applet->iface->text(), applet->popup );
383 else 382 else
384 applet->id = pop->insertItem( applet->iface->icon(), 383 applet->id = pop->insertItem( applet->iface->icon(),
385 applet->iface->text() ); 384 applet->iface->text() );
386 385
386
387 dict.insert( applet->id, new MenuApplet( *applet ) ); 387 dict.insert( applet->id, new MenuApplet( *applet ) );
388 } 388 }
389 /* need to update the key */ 389 /* need to update the key */
390 menuApplets.setAutoDelete( true ); 390 menuApplets.setAutoDelete( true );
391 menuApplets.clear(); 391 menuApplets.clear();
392 menuApplets.setAutoDelete( false ); 392 menuApplets.setAutoDelete( false );
393 menuApplets = dict; 393 menuApplets = dict;
394} 394}
diff --git a/core/launcher/transferserver.cpp b/core/launcher/transferserver.cpp
index 9519d11..9cb9d7a 100644
--- a/core/launcher/transferserver.cpp
+++ b/core/launcher/transferserver.cpp
@@ -1,280 +1,279 @@
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//#define _XOPEN_SOURCE 20//#define _XOPEN_SOURCE
21 21
22#include <qtopia/global.h> 22#include <opie2/oglobal.h>
23#include <qtopia/qpeapplication.h> 23#include <qtopia/qpeapplication.h>
24 24
25#ifndef Q_OS_WIN32 25#ifndef Q_OS_WIN32
26#include <pwd.h> 26#include <pwd.h>
27#include <sys/types.h> 27#include <sys/types.h>
28#include <unistd.h> 28#include <unistd.h>
29#include <stdlib.h> 29#include <stdlib.h>
30#include <time.h> 30#include <time.h>
31 31
32#ifndef Q_OS_MACX 32#ifndef Q_OS_MACX
33#include <shadow.h> 33#include <shadow.h>
34#include <crypt.h> 34#include <crypt.h>
35#endif /* Q_OS_MACX */ 35#endif /* Q_OS_MACX */
36 36
37#else 37#else
38#include <stdlib.h> 38#include <stdlib.h>
39#include <time.h> 39#include <time.h>
40#endif 40#endif
41 41
42 42
43#if defined(_OS_LINUX_) 43#if defined(_OS_LINUX_)
44#include <shadow.h> 44#include <shadow.h>
45#endif 45#endif
46 46
47#include <qdir.h> 47#include <qdir.h>
48#include <qfile.h> 48#include <qfile.h>
49#include <qtextstream.h> 49#include <qtextstream.h>
50#include <qdatastream.h> 50#include <qdatastream.h>
51#include <qmessagebox.h> 51#include <qmessagebox.h>
52#include <qstringlist.h> 52#include <qstringlist.h>
53#include <qfileinfo.h> 53#include <qfileinfo.h>
54#include <qregexp.h> 54#include <qregexp.h>
55//#include <qtopia/qcopchannel_qws.h> 55//#include <qtopia/qcopchannel_qws.h>
56#include <qtopia/process.h> 56#include <qtopia/process.h>
57#include <qtopia/global.h> 57#include <qtopia/global.h>
58#include <qtopia/config.h> 58#include <qtopia/config.h>
59#include <qtopia/private/contact.h> 59#include <qtopia/private/contact.h>
60#include <qtopia/quuid.h> 60#include <qtopia/quuid.h>
61#include <qtopia/version.h> 61#include <qtopia/version.h>
62#ifdef Q_WS_QWS 62#ifdef Q_WS_QWS
63#include <qtopia/qcopenvelope_qws.h> 63#include <qtopia/qcopenvelope_qws.h>
64#endif 64#endif
65 65
66#include "launcherglobal.h"
67 66
68#include "transferserver.h" 67#include "transferserver.h"
69#include <qtopia/qprocess.h> 68#include <qtopia/qprocess.h>
70 69
71const int block_size = 51200; 70const int block_size = 51200;
72 71
73TransferServer::TransferServer( Q_UINT16 port, QObject *parent, 72TransferServer::TransferServer( Q_UINT16 port, QObject *parent,
74 const char* name) 73 const char* name)
75 : QServerSocket( port, 1, parent, name ) 74 : QServerSocket( port, 1, parent, name )
76{ 75{
77 connections.setAutoDelete( TRUE ); 76 connections.setAutoDelete( TRUE );
78 if ( !ok() ) 77 if ( !ok() )
79 qWarning( "Failed to bind to port %d", port ); 78 qWarning( "Failed to bind to port %d", port );
80} 79}
81 80
82void TransferServer::authorizeConnections() 81void TransferServer::authorizeConnections()
83{ 82{
84 QListIterator<ServerPI> it(connections); 83 QListIterator<ServerPI> it(connections);
85 while ( it.current() ) { 84 while ( it.current() ) {
86 if ( !it.current()->verifyAuthorised() ) { 85 if ( !it.current()->verifyAuthorised() ) {
87 disconnect( it.current(), SIGNAL(connectionClosed(ServerPI *)), this, SLOT( closed(ServerPI *)) ); 86 disconnect( it.current(), SIGNAL(connectionClosed(ServerPI *)), this, SLOT( closed(ServerPI *)) );
88 connections.removeRef( it.current() ); 87 connections.removeRef( it.current() );
89 } else 88 } else
90 ++it; 89 ++it;
91 } 90 }
92} 91}
93 92
94void TransferServer::closed(ServerPI *item) 93void TransferServer::closed(ServerPI *item)
95{ 94{
96 connections.removeRef(item); 95 connections.removeRef(item);
97} 96}
98 97
99TransferServer::~TransferServer() 98TransferServer::~TransferServer()
100{ 99{
101} 100}
102 101
103void TransferServer::newConnection( int socket ) 102void TransferServer::newConnection( int socket )
104{ 103{
105 ServerPI *ptr = new ServerPI( socket, this ); 104 ServerPI *ptr = new ServerPI( socket, this );
106 connect( ptr, SIGNAL(connectionClosed(ServerPI *)), this, SLOT( closed(ServerPI *)) ); 105 connect( ptr, SIGNAL(connectionClosed(ServerPI *)), this, SLOT( closed(ServerPI *)) );
107 connections.append( ptr ); 106 connections.append( ptr );
108} 107}
109 108
110QString SyncAuthentication::serverId() 109QString SyncAuthentication::serverId()
111{ 110{
112 Config cfg("Security"); 111 Config cfg("Security");
113 cfg.setGroup("Sync"); 112 cfg.setGroup("Sync");
114 QString r = cfg.readEntry("serverid"); 113 QString r = cfg.readEntry("serverid");
115 114
116 if ( r.isEmpty() ) { 115 if ( r.isEmpty() ) {
117 r = Opie::Global::uuid(); 116 r = OGlobal::generateUuid();
118 cfg.writeEntry("serverid", r ); 117 cfg.writeEntry("serverid", r );
119 } 118 }
120 return r; 119 return r;
121} 120}
122 121
123QString SyncAuthentication::ownerName() 122QString SyncAuthentication::ownerName()
124{ 123{
125 QString vfilename = Global::applicationFileName("addressbook", 124 QString vfilename = Global::applicationFileName("addressbook",
126 "businesscard.vcf"); 125 "businesscard.vcf");
127 if (QFile::exists(vfilename)) { 126 if (QFile::exists(vfilename)) {
128 Contact c; 127 Contact c;
129 c = Contact::readVCard( vfilename )[0]; 128 c = Contact::readVCard( vfilename )[0];
130 return c.fullName(); 129 return c.fullName();
131 } 130 }
132 131
133 return QString::null; 132 return QString::null;
134} 133}
135 134
136QString SyncAuthentication::loginName() 135QString SyncAuthentication::loginName()
137{ 136{
138 struct passwd *pw = 0L; 137 struct passwd *pw = 0L;
139#ifndef Q_OS_WIN32 138#ifndef Q_OS_WIN32
140 pw = getpwuid( geteuid() ); 139 pw = getpwuid( geteuid() );
141 return QString::fromLocal8Bit( pw->pw_name ); 140 return QString::fromLocal8Bit( pw->pw_name );
142#else 141#else
143 //### revise 142 //### revise
144 return QString(); 143 return QString();
145#endif 144#endif
146} 145}
147 146
148int SyncAuthentication::isAuthorized(QHostAddress peeraddress) 147int SyncAuthentication::isAuthorized(QHostAddress peeraddress)
149{ 148{
150 Config cfg("Security"); 149 Config cfg("Security");
151 cfg.setGroup("Sync"); 150 cfg.setGroup("Sync");
152 // QString allowedstr = cfg.readEntry("auth_peer","192.168.1.0"); 151 // QString allowedstr = cfg.readEntry("auth_peer","192.168.1.0");
153 uint auth_peer = cfg.readNumEntry("auth_peer", 0xc0a80100); 152 uint auth_peer = cfg.readNumEntry("auth_peer", 0xc0a80100);
154 153
155 // QHostAddress allowed; 154 // QHostAddress allowed;
156 // allowed.setAddress(allowedstr); 155 // allowed.setAddress(allowedstr);
157 // uint auth_peer = allowed.ip4Addr(); 156 // uint auth_peer = allowed.ip4Addr();
158 uint auth_peer_bits = cfg.readNumEntry("auth_peer_bits", 24); 157 uint auth_peer_bits = cfg.readNumEntry("auth_peer_bits", 24);
159 uint mask = auth_peer_bits >= 32 // shifting by 32 is not defined 158 uint mask = auth_peer_bits >= 32 // shifting by 32 is not defined
160 ? 0xffffffff : (((1 << auth_peer_bits) - 1) << (32 - auth_peer_bits)); 159 ? 0xffffffff : (((1 << auth_peer_bits) - 1) << (32 - auth_peer_bits));
161 160
162 return (peeraddress.ip4Addr() & mask) == auth_peer; 161 return (peeraddress.ip4Addr() & mask) == auth_peer;
163} 162}
164 163
165bool SyncAuthentication::checkUser( const QString& user ) 164bool SyncAuthentication::checkUser( const QString& user )
166{ 165{
167 if ( user.isEmpty() ) return FALSE; 166 if ( user.isEmpty() ) return FALSE;
168 QString euser = loginName(); 167 QString euser = loginName();
169 return user == euser; 168 return user == euser;
170} 169}
171 170
172bool SyncAuthentication::checkPassword( const QString& password ) 171bool SyncAuthentication::checkPassword( const QString& password )
173{ 172{
174#ifdef ALLOW_UNIX_USER_FTP 173#ifdef ALLOW_UNIX_USER_FTP
175 // First, check system password... 174 // First, check system password...
176 175
177 struct passwd *pw = 0; 176 struct passwd *pw = 0;
178 struct spwd *spw = 0; 177 struct spwd *spw = 0;
179 178
180 pw = getpwuid( geteuid() ); 179 pw = getpwuid( geteuid() );
181 spw = getspnam( pw->pw_name ); 180 spw = getspnam( pw->pw_name );
182 181
183 QString cpwd = QString::fromLocal8Bit( pw->pw_passwd ); 182 QString cpwd = QString::fromLocal8Bit( pw->pw_passwd );
184 if ( cpwd == "x" && spw ) 183 if ( cpwd == "x" && spw )
185 cpwd = QString::fromLocal8Bit( spw->sp_pwdp ); 184 cpwd = QString::fromLocal8Bit( spw->sp_pwdp );
186 185
187 // Note: some systems use more than crypt for passwords. 186 // Note: some systems use more than crypt for passwords.
188 QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) ); 187 QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) );
189 if ( cpwd == cpassword ) 188 if ( cpwd == cpassword )
190 return TRUE; 189 return TRUE;
191#endif 190#endif
192 191
193 static int lastdenial=0; 192 static int lastdenial=0;
194 static int denials=0; 193 static int denials=0;
195 int now = time(0); 194 int now = time(0);
196 195
197 Config cfg("Security"); 196 Config cfg("Security");
198 cfg.setGroup("Sync"); 197 cfg.setGroup("Sync");
199 QString syncapp = cfg.readEntry("syncapp","Qtopia"); 198 QString syncapp = cfg.readEntry("syncapp","Qtopia");
200 199
201 //No password needed if the user really wants it 200 //No password needed if the user really wants it
202 if (syncapp == "IntelliSync") { 201 if (syncapp == "IntelliSync") {
203 return TRUE; 202 return TRUE;
204 } 203 }
205 204
206 // Detect old Qtopia Desktop (no password) 205 // Detect old Qtopia Desktop (no password)
207 if ( password.isEmpty() ) { 206 if ( password.isEmpty() ) {
208 if ( denials < 3 || now > lastdenial+600 ) { 207 if ( denials < 3 || now > lastdenial+600 ) {
209 QMessageBox unauth( 208 QMessageBox unauth(
210 tr("Sync Connection"), 209 tr("Sync Connection"),
211 tr("<p>An unauthorized system is requesting access to this device." 210 tr("<p>An unauthorized system is requesting access to this device."
212 "<p>If you are using a version of Qtopia Desktop older than 1.5.1, " 211 "<p>If you are using a version of Qtopia Desktop older than 1.5.1, "
213 "please upgrade or change the security setting to use IntelliSync." ), 212 "please upgrade or change the security setting to use IntelliSync." ),
214 QMessageBox::Warning, 213 QMessageBox::Warning,
215 QMessageBox::Cancel, QMessageBox::NoButton, QMessageBox::NoButton, 214 QMessageBox::Cancel, QMessageBox::NoButton, QMessageBox::NoButton,
216 0, QString::null, TRUE, WStyle_StaysOnTop); 215 0, QString::null, TRUE, WStyle_StaysOnTop);
217 unauth.setButtonText(QMessageBox::Cancel, tr("Deny")); 216 unauth.setButtonText(QMessageBox::Cancel, tr("Deny"));
218 unauth.exec(); 217 unauth.exec();
219 218
220 denials++; 219 denials++;
221 lastdenial=now; 220 lastdenial=now;
222 } 221 }
223 return FALSE; 222 return FALSE;
224 223
225 } 224 }
226 225
227 // Second, check sync password... 226 // Second, check sync password...
228 227
229 static int lock=0; 228 static int lock=0;
230 if ( lock ) return FALSE; 229 if ( lock ) return FALSE;
231 230
232 ++lock; 231 ++lock;
233 232
234 /* 233 /*
235 * we need to support old Sync software and QtopiaDesktop 234 * we need to support old Sync software and QtopiaDesktop
236 */ 235 */
237 if ( password.left(6) == "Qtopia" || password.left(6) == "rootme" ) { 236 if ( password.left(6) == "Qtopia" || password.left(6) == "rootme" ) {
238 Config cfg( "Security" ); 237 Config cfg( "Security" );
239 cfg.setGroup("Sync"); 238 cfg.setGroup("Sync");
240 QStringList pwds = cfg.readListEntry("Passwords",' '); 239 QStringList pwds = cfg.readListEntry("Passwords",' ');
241 for (QStringList::ConstIterator it=pwds.begin(); it!=pwds.end(); ++it) { 240 for (QStringList::ConstIterator it=pwds.begin(); it!=pwds.end(); ++it) {
242#ifndef Q_OS_WIN32 241#ifndef Q_OS_WIN32
243 QString cpassword = QString::fromLocal8Bit( 242 QString cpassword = QString::fromLocal8Bit(
244 crypt( password.mid(8).local8Bit(), (*it).left(2).latin1() ) ); 243 crypt( password.mid(8).local8Bit(), (*it).left(2).latin1() ) );
245#else 244#else
246 // ### revise 245 // ### revise
247 QString cpassword(""); 246 QString cpassword("");
248#endif 247#endif
249 if ( *it == cpassword ) { 248 if ( *it == cpassword ) {
250 lock--; 249 lock--;
251 return TRUE; 250 return TRUE;
252 } 251 }
253 } 252 }
254 253
255 // Unrecognized system. Be careful... 254 // Unrecognized system. Be careful...
256 QMessageBox unrecbox( 255 QMessageBox unrecbox(
257 tr("Sync Connection"), 256 tr("Sync Connection"),
258 tr("<p>An unrecognized system is requesting access to this device." 257 tr("<p>An unrecognized system is requesting access to this device."
259 "<p>If you have just initiated a Sync for the first time, this is normal."), 258 "<p>If you have just initiated a Sync for the first time, this is normal."),
260 QMessageBox::Warning, 259 QMessageBox::Warning,
261 QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton, 260 QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton,
262 0, QString::null, TRUE, WStyle_StaysOnTop); 261 0, QString::null, TRUE, WStyle_StaysOnTop);
263 unrecbox.setButtonText(QMessageBox::Cancel, tr("Deny")); 262 unrecbox.setButtonText(QMessageBox::Cancel, tr("Deny"));
264 unrecbox.setButtonText(QMessageBox::Yes, tr("Allow")); 263 unrecbox.setButtonText(QMessageBox::Yes, tr("Allow"));
265 264
266 if ( (denials > 2 && now < lastdenial+600) 265 if ( (denials > 2 && now < lastdenial+600)
267 || unrecbox.exec() != QMessageBox::Yes) 266 || unrecbox.exec() != QMessageBox::Yes)
268 { 267 {
269 denials++; 268 denials++;
270 lastdenial=now; 269 lastdenial=now;
271 lock--; 270 lock--;
272 return FALSE; 271 return FALSE;
273 } else { 272 } else {
274 const char salty[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/."; 273 const char salty[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/.";
275 char salt[2]; 274 char salt[2];
276 salt[0]= salty[rand() % (sizeof(salty)-1)]; 275 salt[0]= salty[rand() % (sizeof(salty)-1)];
277 salt[1]= salty[rand() % (sizeof(salty)-1)]; 276 salt[1]= salty[rand() % (sizeof(salty)-1)];
278#ifndef Q_OS_WIN32 277#ifndef Q_OS_WIN32
279 QString cpassword = QString::fromLocal8Bit( 278 QString cpassword = QString::fromLocal8Bit(
280 crypt( password.mid(8).local8Bit(), salt ) ); 279 crypt( password.mid(8).local8Bit(), salt ) );
diff --git a/core/launcher/wait.cpp b/core/launcher/wait.cpp
index ab53a07..34ffd1a 100644
--- a/core/launcher/wait.cpp
+++ b/core/launcher/wait.cpp
@@ -1,74 +1,74 @@
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#include "wait.h" 21#include "wait.h"
22 22
23#include <qtopia/resource.h> 23#include <qtopia/resource.h>
24#include <qtopia/config.h> 24#include <qtopia/config.h>
25 25
26#include <opie/owait.h> 26#include <opie2/owait.h>
27 27
28#include <qwidget.h> 28#include <qwidget.h>
29#include <qpixmap.h> 29#include <qpixmap.h>
30#include <qpainter.h> 30#include <qpainter.h>
31 31
32 32
33Wait *lastWaitObject = NULL; 33Wait *lastWaitObject = NULL;
34 34
35 35
36Wait::Wait( QWidget *parent ) : QWidget( parent ), 36Wait::Wait( QWidget *parent ) : QWidget( parent ),
37 pm( Resource::loadPixmap( "wait" ) ), waiting( FALSE ) 37 pm( Resource::loadPixmap( "wait" ) ), waiting( FALSE )
38{ 38{
39 setFixedSize( pm.size() ); 39 setFixedSize( pm.size() );
40 lastWaitObject = this; 40 lastWaitObject = this;
41 m_centralWait = new OWait( 0l ); 41 m_centralWait = new OWait( 0l );
42 m_centralWait->hide(); 42 m_centralWait->hide();
43 hide(); 43 hide();
44} 44}
45 45
46 46
47Wait *Wait::getWaitObject() 47Wait *Wait::getWaitObject()
48{ 48{
49 return lastWaitObject; 49 return lastWaitObject;
50} 50}
51 51
52 52
53void Wait::setWaiting( bool w ) 53void Wait::setWaiting( bool w )
54{ 54{
55 Config cfg ( "Launcher" ); 55 Config cfg ( "Launcher" );
56 cfg.setGroup("GUI"); 56 cfg.setGroup("GUI");
57 57
58 58
59 waiting = w; 59 waiting = w;
60 if ( w ) { 60 if ( w ) {
61 if ( cfg. readBoolEntry( "BigBusy" ) ) 61 if ( cfg. readBoolEntry( "BigBusy" ) )
62 m_centralWait->show(); 62 m_centralWait->show();
63 else 63 else
64 show(); 64 show();
65 }else{ 65 }else{
66 m_centralWait->hide(); 66 m_centralWait->hide();
67 hide(); 67 hide();
68 } 68 }
69} 69}
70 70
71 71
72void Wait::paintEvent( QPaintEvent * ) 72void Wait::paintEvent( QPaintEvent * )
73{ 73{
74 QPainter p( this ); 74 QPainter p( this );