summaryrefslogtreecommitdiff
path: root/library/global.cpp
Unidiff
Diffstat (limited to 'library/global.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/global.cpp4
1 files changed, 0 insertions, 4 deletions
diff --git a/library/global.cpp b/library/global.cpp
index 2e4d03f..9b908bf 100644
--- a/library/global.cpp
+++ b/library/global.cpp
@@ -587,196 +587,192 @@ void Global::invoke(const QString &c)
587 587
588 QStrList slist; 588 QStrList slist;
589 unsigned int j; 589 unsigned int j;
590 for ( j = 0; j < list.count(); j++ ) 590 for ( j = 0; j < list.count(); j++ )
591 slist.append( list[j].utf8() ); 591 slist.append( list[j].utf8() );
592 592
593 const char **args = new (const char *)[slist.count() + 1]; 593 const char **args = new (const char *)[slist.count() + 1];
594 for ( j = 0; j < slist.count(); j++ ) 594 for ( j = 0; j < slist.count(); j++ )
595 args[j] = slist.at(j); 595 args[j] = slist.at(j);
596 args[j] = NULL; 596 args[j] = NULL;
597 597
598#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 598#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
599 // an attempt to show a wait... 599 // an attempt to show a wait...
600 // more logic should be used, but this will be fine for the moment... 600 // more logic should be used, but this will be fine for the moment...
601 QCopEnvelope ( "QPE/System", "busy()" ); 601 QCopEnvelope ( "QPE/System", "busy()" );
602#endif 602#endif
603 603
604#ifdef HAVE_QUICKEXEC 604#ifdef HAVE_QUICKEXEC
605 QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so"; 605 QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so";
606 qDebug("libfile = %s", libexe.latin1() ); 606 qDebug("libfile = %s", libexe.latin1() );
607 if ( QFile::exists( libexe ) ) { 607 if ( QFile::exists( libexe ) ) {
608 qDebug("calling quickexec %s", libexe.latin1() ); 608 qDebug("calling quickexec %s", libexe.latin1() );
609 quickexecv( libexe.utf8().data(), (const char **)args ); 609 quickexecv( libexe.utf8().data(), (const char **)args );
610 } else 610 } else
611#endif 611#endif
612 { 612 {
613 if ( !::vfork() ) { 613 if ( !::vfork() ) {
614 for ( int fd = 3; fd < 100; fd++ ) 614 for ( int fd = 3; fd < 100; fd++ )
615 ::close( fd ); 615 ::close( fd );
616 ::setpgid( ::getpid(), ::getppid() ); 616 ::setpgid( ::getpid(), ::getppid() );
617 // Try bindir first, so that foo/bar works too 617 // Try bindir first, so that foo/bar works too
618 ::execv( qpeDir()+"/bin/"+args[0], (char * const *)args ); 618 ::execv( qpeDir()+"/bin/"+args[0], (char * const *)args );
619 ::execvp( args[0], (char * const *)args ); 619 ::execvp( args[0], (char * const *)args );
620 _exit( -1 ); 620 _exit( -1 );
621 } 621 }
622 } 622 }
623 StartingAppList::add( list[0] ); 623 StartingAppList::add( list[0] );
624#endif //QT_NO_QWS_MULTIPROCESS 624#endif //QT_NO_QWS_MULTIPROCESS
625} 625}
626 626
627 627
628/*! 628/*!
629 Executes the application identfied by \a c, passing \a 629 Executes the application identfied by \a c, passing \a
630 document if it isn't null. 630 document if it isn't null.
631 631
632 Note that a better approach might be to send a QCop message to the 632 Note that a better approach might be to send a QCop message to the
633 application's QPE/Application/\e{appname} channel. 633 application's QPE/Application/\e{appname} channel.
634*/ 634*/
635void Global::execute( const QString &c, const QString& document ) 635void Global::execute( const QString &c, const QString& document )
636{ 636{
637 if ( qApp->type() != QApplication::GuiServer ) { 637 if ( qApp->type() != QApplication::GuiServer ) {
638 // ask the server to do the work 638 // ask the server to do the work
639#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 639#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
640 if ( document.isNull() ) { 640 if ( document.isNull() ) {
641 QCopEnvelope e( "QPE/System", "execute(QString)" ); 641 QCopEnvelope e( "QPE/System", "execute(QString)" );
642 e << c; 642 e << c;
643 } else { 643 } else {
644 QCopEnvelope e( "QPE/System", "execute(QString,QString)" ); 644 QCopEnvelope e( "QPE/System", "execute(QString,QString)" );
645 e << c << document; 645 e << c << document;
646 } 646 }
647#endif 647#endif
648 return; 648 return;
649 } 649 }
650 650
651 // Attempt to execute the app using a builtin class for the app first 651 // Attempt to execute the app using a builtin class for the app first
652 // else try and find it in the bin directory 652 // else try and find it in the bin directory
653 if (builtin) { 653 if (builtin) {
654 for (int i = 0; builtin[i].file; i++) { 654 for (int i = 0; builtin[i].file; i++) {
655 if ( builtin[i].file == c ) { 655 if ( builtin[i].file == c ) {
656 if ( running[i] ) { 656 if ( running[i] ) {
657 if ( !document.isNull() && builtin[i].documentary ) 657 if ( !document.isNull() && builtin[i].documentary )
658 setDocument(running[i], document); 658 setDocument(running[i], document);
659 running[i]->raise(); 659 running[i]->raise();
660 running[i]->show(); 660 running[i]->show();
661 running[i]->setActiveWindow(); 661 running[i]->setActiveWindow();
662 } else { 662 } else {
663 running[i] = builtin[i].func( builtin[i].maximized ); 663 running[i] = builtin[i].func( builtin[i].maximized );
664 } 664 }
665#ifndef QT_NO_COP 665#ifndef QT_NO_COP
666 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 666 QCopEnvelope e("QPE/System", "notBusy(QString)" );
667 e << c; // that was quick ;-) 667 e << c; // that was quick ;-)
668#endif 668#endif
669 return; 669 return;
670 } 670 }
671 } 671 }
672 } 672 }
673 673
674 //Global::invoke(c, document); 674 //Global::invoke(c, document);
675 675
676 // Convert the command line in to a list of arguments 676 // Convert the command line in to a list of arguments
677 QStringList list = QStringList::split(QRegExp(" *"),c); 677 QStringList list = QStringList::split(QRegExp(" *"),c);
678 678
679#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 679#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
680 QString ap=list[0]; 680 QString ap=list[0];
681 681
682 qDebug("executing %s", ap.latin1() ); 682 qDebug("executing %s", ap.latin1() );
683 if ( ap == "suspend" ) {
684 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
685 return;
686 }
687 683
688 /* if need be, sending a qcop message will result in an invoke, see 684 /* if need be, sending a qcop message will result in an invoke, see
689 preceeding function */ 685 preceeding function */
690 invoke( ap ); 686 invoke( ap );
691 //{ QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); } 687 //{ QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); }
692 if ( !document.isEmpty() ) { 688 if ( !document.isEmpty() ) {
693 QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "setDocument(QString)" ); 689 QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "setDocument(QString)" );
694 env << document; 690 env << document;
695 } 691 }
696#endif 692#endif
697} 693}
698 694
699/*! 695/*!
700 Returns the string \a s with the characters '\', '"', and '$' quoted 696 Returns the string \a s with the characters '\', '"', and '$' quoted
701 by a preceeding '\'. 697 by a preceeding '\'.
702 698
703 \sa stringQuote() 699 \sa stringQuote()
704*/ 700*/
705QString Global::shellQuote(const QString& s) 701QString Global::shellQuote(const QString& s)
706{ 702{
707 QString r="\""; 703 QString r="\"";
708 for (int i=0; i<(int)s.length(); i++) { 704 for (int i=0; i<(int)s.length(); i++) {
709 char c = s[i].latin1(); 705 char c = s[i].latin1();
710 switch (c) { 706 switch (c) {
711 case '\\': case '"': case '$': 707 case '\\': case '"': case '$':
712 r+="\\"; 708 r+="\\";
713 } 709 }
714 r += s[i]; 710 r += s[i];
715 } 711 }
716 r += "\""; 712 r += "\"";
717 return r; 713 return r;
718} 714}
719 715
720/*! 716/*!
721 Returns the string \a s with the characters '\' and '"' quoted by a 717 Returns the string \a s with the characters '\' and '"' quoted by a
722 preceeding '\'. 718 preceeding '\'.
723 719
724 \sa shellQuote() 720 \sa shellQuote()
725*/ 721*/
726QString Global::stringQuote(const QString& s) 722QString Global::stringQuote(const QString& s)
727{ 723{
728 QString r="\""; 724 QString r="\"";
729 for (int i=0; i<(int)s.length(); i++) { 725 for (int i=0; i<(int)s.length(); i++) {
730 char c = s[i].latin1(); 726 char c = s[i].latin1();
731 switch (c) { 727 switch (c) {
732 case '\\': case '"': 728 case '\\': case '"':
733 r+="\\"; 729 r+="\\";
734 } 730 }
735 r += s[i]; 731 r += s[i];
736 } 732 }
737 r += "\""; 733 r += "\"";
738 return r; 734 return r;
739} 735}
740 736
741/*! 737/*!
742 Finds all documents on the system's document directories which 738 Finds all documents on the system's document directories which
743 match the filter \a mimefilter, and appends the resulting DocLnk 739 match the filter \a mimefilter, and appends the resulting DocLnk
744 objects to \a folder. 740 objects to \a folder.
745*/ 741*/
746void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter) 742void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter)
747{ 743{
748 QString homedocs = QString(getenv("HOME")) + "/Documents"; 744 QString homedocs = QString(getenv("HOME")) + "/Documents";
749 DocLnkSet d(homedocs,mimefilter); 745 DocLnkSet d(homedocs,mimefilter);
750 folder->appendFrom(d); 746 folder->appendFrom(d);
751 /** let's do intellegint way of searching these files 747 /** let's do intellegint way of searching these files
752 * a) the user don't want to check mediums global 748 * a) the user don't want to check mediums global
753 * b) the user wants to check but use the global options for it 749 * b) the user wants to check but use the global options for it
754 * c) the user wants to check it but not this medium 750 * c) the user wants to check it but not this medium
755 * d) the user wants to check and this medium as well 751 * d) the user wants to check and this medium as well
756 * 752 *
757 * In all cases we need to apply a different mimefilter to 753 * In all cases we need to apply a different mimefilter to
758 * the medium. 754 * the medium.
759 * a) mimefilter.isEmpty() we need to apply the responding filter 755 * a) mimefilter.isEmpty() we need to apply the responding filter
760 * either the global or the one on the medium 756 * either the global or the one on the medium
761 * 757 *
762 * b) mimefilter is set to an application we need to find out if the 758 * b) mimefilter is set to an application we need to find out if the
763 * mimetypes are included in the mime mask of the medium 759 * mimetypes are included in the mime mask of the medium
764 */ 760 */
765 StorageInfo storage; 761 StorageInfo storage;
766 const QList<FileSystem> &fs = storage.fileSystems(); 762 const QList<FileSystem> &fs = storage.fileSystems();
767 QListIterator<FileSystem> it ( fs ); 763 QListIterator<FileSystem> it ( fs );
768 for ( ; it.current(); ++it ) { 764 for ( ; it.current(); ++it ) {
769 if ( (*it)->isRemovable() ) { // let's find out if we should search on it 765 if ( (*it)->isRemovable() ) { // let's find out if we should search on it
770 // this is a candidate look at the cf and see if we should search on it 766 // this is a candidate look at the cf and see if we should search on it
771 QString path = (*it)->path(); 767 QString path = (*it)->path();
772 if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) ) 768 if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) )
773 continue; 769 continue;
774 DocLnkSet ide( path, mimefilter ); 770 DocLnkSet ide( path, mimefilter );
775 folder->appendFrom(ide); 771 folder->appendFrom(ide);
776 } else if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) { 772 } else if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) {
777 QString path = (*it)->path() + "/Documents"; 773 QString path = (*it)->path() + "/Documents";
778 DocLnkSet ide( path, mimefilter ); 774 DocLnkSet ide( path, mimefilter );
779 folder->appendFrom(ide); 775 folder->appendFrom(ide);
780 } 776 }
781 } 777 }
782} 778}