summaryrefslogtreecommitdiff
path: root/core/launcher/applauncher.cpp
Unidiff
Diffstat (limited to 'core/launcher/applauncher.cpp') (more/less context) (show whitespace changes)
-rw-r--r--core/launcher/applauncher.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/core/launcher/applauncher.cpp b/core/launcher/applauncher.cpp
index 08a3cb4..efbf426 100644
--- a/core/launcher/applauncher.cpp
+++ b/core/launcher/applauncher.cpp
@@ -438,98 +438,99 @@ bool AppLauncher::isRunning(const QString &app)
438 438
439 return FALSE; 439 return FALSE;
440} 440}
441 441
442bool AppLauncher::executeBuiltin(const QString &c, const QString &document) 442bool AppLauncher::executeBuiltin(const QString &c, const QString &document)
443{ 443{
444 Global::Command* builtin = OGlobal::builtinCommands(); 444 Global::Command* builtin = OGlobal::builtinCommands();
445 QGuardedPtr<QWidget> *running = OGlobal::builtinRunning(); 445 QGuardedPtr<QWidget> *running = OGlobal::builtinRunning();
446 446
447 // Attempt to execute the app using a builtin class for the app 447 // Attempt to execute the app using a builtin class for the app
448 if (builtin) { 448 if (builtin) {
449 for (int i = 0; builtin[i].file; i++) { 449 for (int i = 0; builtin[i].file; i++) {
450 if ( builtin[i].file == c ) { 450 if ( builtin[i].file == c ) {
451 if ( running[i] ) { 451 if ( running[i] ) {
452 if ( !document.isNull() && builtin[i].documentary ) 452 if ( !document.isNull() && builtin[i].documentary )
453 Global::setDocument(running[i], document); 453 Global::setDocument(running[i], document);
454 running[i]->raise(); 454 running[i]->raise();
455 running[i]->show(); 455 running[i]->show();
456 running[i]->setActiveWindow(); 456 running[i]->setActiveWindow();
457 } else { 457 } else {
458 running[i] = builtin[i].func( builtin[i].maximized ); 458 running[i] = builtin[i].func( builtin[i].maximized );
459 } 459 }
460#ifndef QT_NO_COP 460#ifndef QT_NO_COP
461 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 461 QCopEnvelope e("QPE/System", "notBusy(QString)" );
462 e << c; // that was quick ;-) 462 e << c; // that was quick ;-)
463#endif 463#endif
464 return TRUE; 464 return TRUE;
465 } 465 }
466 } 466 }
467 } 467 }
468 468
469 // Convert the command line in to a list of arguments 469 // Convert the command line in to a list of arguments
470 QStringList list = QStringList::split(QRegExp(" *"),c); 470 QStringList list = QStringList::split(QRegExp(" *"),c);
471 QString ap=list[0]; 471 QString ap=list[0];
472 472
473 if ( ap == "suspend" ) { // No tr 473 if ( ap == "suspend" ) { // No tr
474 QWSServer::processKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); 474 QWSServer::processKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
475 return TRUE; 475 return TRUE;
476 } 476 }
477 477
478 return FALSE; 478 return FALSE;
479} 479}
480 480
481bool AppLauncher::execute(const QString &c, const QString &docParam, bool noRaise) 481bool AppLauncher::execute(const QString &c, const QString &docParam, bool noRaise)
482{ 482{
483 qWarning("AppLauncher::execute '%s' '%s'", (const char*) c, (const char*) docParam ); 483 qWarning("AppLauncher::execute '%s' '%s'", (const char*) c, (const char*) docParam );
484 // Convert the command line in to a list of arguments 484 // Convert the command line in to a list of arguments
485 QStringList list = QStringList::split(QRegExp(" *"),c); 485 QStringList list = QStringList::split(QRegExp(" *"),c);
486 if ( !docParam.isEmpty() ) 486 QStringList arglist = QStringList::split(QRegExp(" *"),docParam);
487 list.append( docParam ); 487 for ( QStringList::Iterator it = arglist.begin(); it != arglist.end(); ++it )
488 list.append( *it );
488 489
489 QString appName = list[0]; 490 QString appName = list[0];
490 if ( isRunning(appName) ) { 491 if ( isRunning(appName) ) {
491 QCString channel = "QPE/Application/"; 492 QCString channel = "QPE/Application/";
492 channel += appName.latin1(); 493 channel += appName.latin1();
493 494
494 // Need to lock it to avoid race conditions with QPEApplication::processQCopFile 495 // Need to lock it to avoid race conditions with QPEApplication::processQCopFile
495 QFile f(QString::fromLatin1("/tmp/qcop-msg-") + appName); 496 QFile f(QString::fromLatin1("/tmp/qcop-msg-") + appName);
496 if ( !noRaise && f.open(IO_WriteOnly | IO_Append) ) { 497 if ( !noRaise && f.open(IO_WriteOnly | IO_Append) ) {
497#ifndef Q_OS_WIN32 498#ifndef Q_OS_WIN32
498 flock(f.handle(), LOCK_EX); 499 flock(f.handle(), LOCK_EX);
499#endif 500#endif
500 501
501 QDataStream ds(&f); 502 QDataStream ds(&f);
502 QByteArray b; 503 QByteArray b;
503 QDataStream bstream(b, IO_WriteOnly); 504 QDataStream bstream(b, IO_WriteOnly);
504 if ( !f.size() ) { 505 if ( !f.size() ) {
505 ds << channel << QCString("raise()") << b; 506 ds << channel << QCString("raise()") << b;
506 if ( !waitingHeartbeat.contains( appName ) && appKillerName != appName ) { 507 if ( !waitingHeartbeat.contains( appName ) && appKillerName != appName ) {
507 int id = startTimer(RAISE_TIMEOUT_MS); 508 int id = startTimer(RAISE_TIMEOUT_MS);
508 waitingHeartbeat.insert( appName, id ); 509 waitingHeartbeat.insert( appName, id );
509 } 510 }
510 } 511 }
511 if ( !docParam.isEmpty() ) { 512 if ( !docParam.isEmpty() ) {
512 bstream << docParam; 513 bstream << docParam;
513 ds << channel << QCString("setDocument(QString)") << b; 514 ds << channel << QCString("setDocument(QString)") << b;
514 } 515 }
515 516
516 f.flush(); 517 f.flush();
517#ifndef Q_OS_WIN32 518#ifndef Q_OS_WIN32
518 flock(f.handle(), LOCK_UN); 519 flock(f.handle(), LOCK_UN);
519#endif 520#endif
520 f.close(); 521 f.close();
521 } 522 }
522 if ( QCopChannel::isRegistered(channel) ) // avoid unnecessary warnings 523 if ( QCopChannel::isRegistered(channel) ) // avoid unnecessary warnings
523 QCopChannel::send(channel,"QPEProcessQCop()"); 524 QCopChannel::send(channel,"QPEProcessQCop()");
524 525
525 return TRUE; 526 return TRUE;
526 } 527 }
527 528
528#ifdef QT_NO_QWS_MULTIPROCESS 529#ifdef QT_NO_QWS_MULTIPROCESS
529 QMessageBox::warning( 0, tr("Error"), tr("<qt>Could not find the application %1</qt>").arg(c), 530 QMessageBox::warning( 0, tr("Error"), tr("<qt>Could not find the application %1</qt>").arg(c),
530 tr("OK"), 0, 0, 0, 1 ); 531 tr("OK"), 0, 0, 0, 1 );
531#else 532#else
532 533
533 QStrList slist; 534 QStrList slist;
534 unsigned j; 535 unsigned j;
535 for ( j = 0; j < list.count(); j++ ) 536 for ( j = 0; j < list.count(); j++ )