-rw-r--r-- | core/launcher/documentlist.cpp | 610 | ||||
-rw-r--r-- | core/launcher/documentlist.h | 3 | ||||
-rw-r--r-- | core/launcher/launcher.cpp | 107 | ||||
-rw-r--r-- | core/launcher/launcher.h | 1 | ||||
-rw-r--r-- | core/launcher/launcherview.cpp | 4 | ||||
-rw-r--r-- | core/launcher/server.cpp | 210 |
6 files changed, 483 insertions, 452 deletions
diff --git a/core/launcher/documentlist.cpp b/core/launcher/documentlist.cpp index d8e7a83..9781a32 100644 --- a/core/launcher/documentlist.cpp +++ b/core/launcher/documentlist.cpp @@ -91,25 +91,25 @@ public: bool needToSendAllDocLinks; bool sendAppLnks; bool sendDocLnks; bool scanDocs; }; /* * scandocs will be read from Config */ DocumentList::DocumentList( ServerInterface *serverGui, bool /*scanDocs*/, - QObject *parent, const char *name ) + QObject *parent, const char *name ) : QObject( parent, name ) { appLnkSet = new AppLnkSet( MimeType::appsFolderName() ); d = new DocumentListPrivate( serverGui ); d->needToSendAllDocLinks = false; Config cfg( "Launcher" ); cfg.setGroup( "DocTab" ); d->scanDocs = cfg.readBoolEntry( "Enable", true ); odebug << "DocumentList::DocumentList() : scanDocs = " << d->scanDocs << "" << oendl; QTimer::singleShot( 10, this, SLOT( startInitialScan() ) ); @@ -122,301 +122,309 @@ void DocumentList::startInitialScan() } DocumentList::~DocumentList() { delete appLnkSet; delete d; } void DocumentList::add( const DocLnk& doc ) { if ( d->serverGui && QFile::exists( doc.file() ) ) - d->serverGui->documentAdded( doc ); + d->serverGui->documentAdded( doc ); } void DocumentList::start() { resume(); } void DocumentList::pause() { //odebug << "pause " << d->tid << "" << oendl; killTimer( d->tid ); d->tid = 0; } void DocumentList::resume() { if ( d->tid == 0 ) { - d->tid = startTimer( 20 ); + d->tid = startTimer( 20 ); //odebug << "resumed " << d->tid << "" << oendl; } } /* void DocumentList::resend() { // Re-emits all the added items to the list (firstly letting everyone know to // clear what they have as it is being sent again) pause(); emit allRemoved(); QTimer::singleShot( 5, this, SLOT( resendWorker() ) ); } void DocumentList::resendWorker() { const QList<DocLnk> &list = d->dls.children(); for ( QListIterator<DocLnk> it( list ); it.current(); ++it ) - add( *(*it) ); + add( *(*it) ); resume(); } */ void DocumentList::rescan() { //odebug << "rescan" << oendl; pause(); d->initialize(); resume(); } void DocumentList::timerEvent( QTimerEvent *te ) { if ( te->timerId() == d->tid ) { - // Do 3 at a time + // Do 3 at a time if ( d->serverGui ) d->serverGui->aboutToAddBegin(); - for (int i = 0; i < 3; i++ ) { - const DocLnk *lnk = d->iterate(); - if ( lnk ) { - add( *lnk ); - } else { - // stop when done - pause(); - if ( d->serverGui ) - d->serverGui->documentScanningProgress( 100 ); - if ( d->needToSendAllDocLinks ) - sendAllDocLinks(); - break; - } + for (int i = 0; i < 3; i++ ) { + const DocLnk *lnk = d->iterate(); + if ( lnk ) { + add( *lnk ); + } else { + // stop when done + pause(); + if ( d->serverGui ) + d->serverGui->documentScanningProgress( 100 ); + if ( d->needToSendAllDocLinks ) + sendAllDocLinks(); + break; + } } if ( d->serverGui ) d->serverGui->aboutToAddEnd(); } } void DocumentList::reloadAppLnks() { if ( d->sendAppLnks && d->serverGui ) { - d->serverGui->applicationScanningProgress( 0 ); - d->serverGui->allApplicationsRemoved(); + d->serverGui->applicationScanningProgress( 0 ); + d->serverGui->allApplicationsRemoved(); } delete appLnkSet; appLnkSet = new AppLnkSet( MimeType::appsFolderName() ); if ( d->sendAppLnks && d->serverGui ) { - static QStringList prevTypeList; - QStringList types = appLnkSet->types(); - for ( QStringList::Iterator ittypes=types.begin(); ittypes!=types.end(); ++ittypes) { - if ( !(*ittypes).isEmpty() ) { - if ( !prevTypeList.contains(*ittypes) ) { - QString name = appLnkSet->typeName(*ittypes); - QPixmap pm = appLnkSet->typePixmap(*ittypes); - QPixmap bgPm = appLnkSet->typeBigPixmap(*ittypes); - - if (pm.isNull()) { - QImage img( Resource::loadImage( "UnknownDocument" ) ); - pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); - bgPm = img.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() ); - } + static QStringList prevTypeList; + QStringList types = appLnkSet->types(); + for ( QStringList::Iterator ittypes=types.begin(); ittypes!=types.end(); ++ittypes) { + if ( !(*ittypes).isEmpty() ) { + if ( !prevTypeList.contains(*ittypes) ) { + QString name = appLnkSet->typeName(*ittypes); + QPixmap pm = appLnkSet->typePixmap(*ittypes); + QPixmap bgPm = appLnkSet->typeBigPixmap(*ittypes); + + if (pm.isNull()) { + QImage img( Resource::loadImage( "UnknownDocument" ) ); + pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); + bgPm = img.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() ); + } //odebug << "adding type " << (*ittypes) << "" << oendl; - // ### our current launcher expects docs tab to be last - d->serverGui->typeAdded( *ittypes, name.isNull() ? (*ittypes) : name, pm, bgPm ); - } - prevTypeList.remove(*ittypes); - } - } - for ( QStringList::Iterator ittypes=prevTypeList.begin(); ittypes!=prevTypeList.end(); ++ittypes) { + // ### our current launcher expects docs tab to be last + d->serverGui->typeAdded( *ittypes, name.isNull() ? (*ittypes) : name, pm, bgPm ); + } + prevTypeList.remove(*ittypes); + } + } + for ( QStringList::Iterator ittypes=prevTypeList.begin(); ittypes!=prevTypeList.end(); ++ittypes) { //odebug << "removing type " << (*ittypes) << "" << oendl; - d->serverGui->typeRemoved(*ittypes); - } - prevTypeList = types; + d->serverGui->typeRemoved(*ittypes); + } + prevTypeList = types; } QListIterator<AppLnk> itapp( appLnkSet->children() ); AppLnk* l; while ( (l=itapp.current()) ) { - ++itapp; - if ( d->sendAppLnks && d->serverGui ) - d->serverGui->applicationAdded( l->type(), *l ); + ++itapp; + if ( d->sendAppLnks && d->serverGui ) + d->serverGui->applicationAdded( l->type(), *l ); } if ( d->sendAppLnks && d->serverGui ) - d->serverGui->applicationScanningProgress( 100 ); + d->serverGui->applicationScanningProgress( 100 ); } void DocumentList::reloadDocLnks() { if ( !d->scanDocs ) - return; + return; if ( d->sendDocLnks && d->serverGui ) { - d->serverGui->documentScanningProgress( 0 ); - d->serverGui->allDocumentsRemoved(); + d->serverGui->documentScanningProgress( 0 ); + d->serverGui->allDocumentsRemoved(); } rescan(); } +void DocumentList::reforceDocuments() +{ + Config cfg( "Launcher" ); + cfg.setGroup( "DocTab" ); + d->scanDocs = cfg.readBoolEntry( "Enable", true ); + reloadDocLnks(); +} + void DocumentList::linkChanged( QString arg ) { - //odebug << "linkchanged( " << arg << " )" << oendl; + odebug << "linkchanged( " << arg << " )" << oendl; if ( arg.isNull() || OGlobal::isAppLnkFileName( arg ) ) { - reloadAppLnks(); + reloadAppLnks(); } else { - const QList<DocLnk> &list = d->dls.children(); - QListIterator<DocLnk> it( list ); - while ( it.current() ) { - DocLnk *doc = it.current(); - ++it; - if ( ( doc->linkFileKnown() && doc->linkFile() == arg ) - || ( doc->fileKnown() && doc->file() == arg ) ) { + const QList<DocLnk> &list = d->dls.children(); + QListIterator<DocLnk> it( list ); + while ( it.current() ) { + DocLnk *doc = it.current(); + ++it; + if ( ( doc->linkFileKnown() && doc->linkFile() == arg ) + || ( doc->fileKnown() && doc->file() == arg ) ) { //odebug << "found old link" << oendl; - DocLnk* dl = new DocLnk( arg ); - // add new one if it exists and matches the mimetype - if ( d->store( dl ) ) { - // Existing link has been changed, send old link ref and a ref - // to the new link + DocLnk* dl = new DocLnk( arg ); + // add new one if it exists and matches the mimetype + if ( d->store( dl ) ) { + // Existing link has been changed, send old link ref and a ref + // to the new link //odebug << "change case" << oendl; - if ( d->serverGui ) - d->serverGui->documentChanged( *doc, *dl ); + if ( d->serverGui ) + d->serverGui->documentChanged( *doc, *dl ); - } else { - // Link has been removed or doesn't match the mimetypes any more - // so we aren't interested in it, so take it away from the list + } else { + // Link has been removed or doesn't match the mimetypes any more + // so we aren't interested in it, so take it away from the list //odebug << "removal case" << oendl; - if ( d->serverGui ) - d->serverGui->documentRemoved( *doc ); - - } - d->dls.remove( doc ); // remove old link from docLnkSet - delete doc; - return; - } - } - // Didn't find existing link, must be new - DocLnk* dl = new DocLnk( arg ); - if ( d->store( dl ) ) { - // Add if it's a link we are interested in + if ( d->serverGui ) + d->serverGui->documentRemoved( *doc ); + + } + d->dls.remove( doc ); // remove old link from docLnkSet + delete doc; + return; + } + } + // Didn't find existing link, must be new + DocLnk* dl = new DocLnk( arg ); + if ( d->store( dl ) ) { + // Add if it's a link we are interested in //odebug << "add case" << oendl; - add( *dl ); - } + add( *dl ); + } } } void DocumentList::restoreDone() { reloadAppLnks(); reloadDocLnks(); } void DocumentList::DiffAppLnks() { static AppLnkSet *appLnkSet2; appLnkSet2 = new AppLnkSet( MimeType::appsFolderName() ); if ( d->sendAppLnks && d->serverGui ) { - static QStringList prevTypeList = appLnkSet->types(); - QStringList types = appLnkSet2->types(); - for ( QStringList::Iterator ittypes=types.begin(); ittypes!=types.end(); ++ittypes) { - if ( !(*ittypes).isEmpty() ) { - if ( !prevTypeList.contains(*ittypes) ) { - QString name = appLnkSet2->typeName(*ittypes); - QPixmap pm = appLnkSet2->typePixmap(*ittypes); - QPixmap bgPm = appLnkSet2->typeBigPixmap(*ittypes); - - if (pm.isNull()) { - QImage img( Resource::loadImage( "UnknownDocument" ) ); - pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); - bgPm = img.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() ); - } + static QStringList prevTypeList = appLnkSet->types(); + QStringList types = appLnkSet2->types(); + for ( QStringList::Iterator ittypes=types.begin(); ittypes!=types.end(); ++ittypes) { + if ( !(*ittypes).isEmpty() ) { + if ( !prevTypeList.contains(*ittypes) ) { + QString name = appLnkSet2->typeName(*ittypes); + QPixmap pm = appLnkSet2->typePixmap(*ittypes); + QPixmap bgPm = appLnkSet2->typeBigPixmap(*ittypes); + + if (pm.isNull()) { + QImage img( Resource::loadImage( "UnknownDocument" ) ); + pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); + bgPm = img.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() ); + } odebug << "adding type " << (*ittypes) << "" << oendl; - // ### our current launcher expects docs tab to be last - d->serverGui->typeAdded( *ittypes, name.isNull() ? (*ittypes) : name, pm, bgPm ); - } - prevTypeList.remove(*ittypes); - } - } - for ( QStringList::Iterator ittypes=prevTypeList.begin(); ittypes!=prevTypeList.end(); ++ittypes) { + // ### our current launcher expects docs tab to be last + d->serverGui->typeAdded( *ittypes, name.isNull() ? (*ittypes) : name, pm, bgPm ); + } + prevTypeList.remove(*ittypes); + } + } + for ( QStringList::Iterator ittypes=prevTypeList.begin(); ittypes!=prevTypeList.end(); ++ittypes) { odebug << "removing type " << (*ittypes) << "" << oendl; - d->serverGui->typeRemoved(*ittypes); - } - prevTypeList = types; + d->serverGui->typeRemoved(*ittypes); + } + prevTypeList = types; } QListIterator<AppLnk> it1( appLnkSet->children() ); QListIterator<AppLnk> it2( appLnkSet2->children() ); AppLnk *i; AppLnk *j; bool found; while ( (j=it2.current()) ) { - it1 = appLnkSet->children(); - found = false; - while ( (i=it1.current()) ){ - if (strcmp(i->name().ascii(),j->name().ascii()) == 0) - found = true; - ++it1; - } - if (!found) { - odebug << "Item " << j->name().ascii() << " needs to be added" << oendl; - d->serverGui->applicationAdded( j->type(), *j ); - } - ++it2; + it1 = appLnkSet->children(); + found = false; + while ( (i=it1.current()) ){ + if (strcmp(i->name().ascii(),j->name().ascii()) == 0) + found = true; + ++it1; + } + if (!found) { + odebug << "Item " << j->name().ascii() << " needs to be added" << oendl; + d->serverGui->applicationAdded( j->type(), *j ); + } + ++it2; } it1 = appLnkSet->children(); while ( (i=it1.current()) ) { - it2 = appLnkSet2->children(); - found = false; - while ( (j=it2.current()) ){ - if (strcmp(i->name().ascii(),j->name().ascii()) == 0) - found = true; - ++it2; - } - if (!found) { - odebug << "Item " << i->name().ascii() << " needs to be removed" << oendl; - d->serverGui->applicationRemoved( i->type(), *i ); - } + it2 = appLnkSet2->children(); + found = false; + while ( (j=it2.current()) ){ + if (strcmp(i->name().ascii(),j->name().ascii()) == 0) + found = true; + ++it2; + } + if (!found) { + odebug << "Item " << i->name().ascii() << " needs to be removed" << oendl; + d->serverGui->applicationRemoved( i->type(), *i ); + } - ++it1; + ++it1; } delete appLnkSet; appLnkSet = appLnkSet2; } void DocumentList::storageChanged() { QTime t; // ### can implement better t.start(); @@ -427,69 +435,69 @@ void DocumentList::storageChanged() // odebug << "Reload links took " << t.elapsed() << " ms " << oendl; odebug << "Reload All links took " << t.elapsed() << " ms" << oendl; // ### Optimization opportunity // Could be a bit more intelligent and somehow work out which // mtab entry has changed and then only scan that and add and remove // links appropriately. // rescan(); } void DocumentList::sendAllDocLinks() { if ( d->tid != 0 ) { - // We are in the middle of scanning, set a flag so - // we do this when we finish our scanning - d->needToSendAllDocLinks = true; - return; + // We are in the middle of scanning, set a flag so + // we do this when we finish our scanning + d->needToSendAllDocLinks = true; + return; } QString contents; Categories cats; for ( QListIterator<DocLnk> it( d->dls.children() ); it.current(); ++it ) { - DocLnk *doc = it.current(); - QFileInfo fi( doc->file() ); - if ( !fi.exists() ) - continue; - - bool fake = !doc->linkFileKnown(); - if ( !fake ) { - QFile f( doc->linkFile() ); - if ( f.open( IO_ReadOnly ) ) { - QTextStream ts( &f ); - ts.setEncoding( QTextStream::UnicodeUTF8 ); - QString docLnk = ts.read(); - // Strip out the (stale) LinkFile entry - int start = docLnk.find( "\nLinkFile = " ) + 1; - if ( start > 0 ) { - int end = docLnk.find( "\n", start + 1 ) + 1; - contents += docLnk.left(start); - contents += docLnk.mid(end); - } else { - contents += docLnk; - } - contents += "LinkFile = " + doc->linkFile() + "\n"; - - f.close(); - } else - fake = TRUE; - } - if (fake) { - contents += "[Desktop Entry]\n"; // No tr - contents += "Categories = " + // No tr - cats.labels("Document View",doc->categories()).join(";") + "\n"; // No tr - contents += "Name = "+doc->name()+"\n"; // No tr - contents += "Type = "+doc->type()+"\n"; // No tr - } - contents += "File = "+doc->file()+"\n"; // No tr // (resolves path) - contents += QString("Size = %1\n").arg( fi.size() ); // No tr + DocLnk *doc = it.current(); + QFileInfo fi( doc->file() ); + if ( !fi.exists() ) + continue; + + bool fake = !doc->linkFileKnown(); + if ( !fake ) { + QFile f( doc->linkFile() ); + if ( f.open( IO_ReadOnly ) ) { + QTextStream ts( &f ); + ts.setEncoding( QTextStream::UnicodeUTF8 ); + QString docLnk = ts.read(); + // Strip out the (stale) LinkFile entry + int start = docLnk.find( "\nLinkFile = " ) + 1; + if ( start > 0 ) { + int end = docLnk.find( "\n", start + 1 ) + 1; + contents += docLnk.left(start); + contents += docLnk.mid(end); + } else { + contents += docLnk; + } + contents += "LinkFile = " + doc->linkFile() + "\n"; + + f.close(); + } else + fake = TRUE; + } + if (fake) { + contents += "[Desktop Entry]\n"; // No tr + contents += "Categories = " + // No tr + cats.labels("Document View",doc->categories()).join(";") + "\n"; // No tr + contents += "Name = "+doc->name()+"\n"; // No tr + contents += "Type = "+doc->type()+"\n"; // No tr + } + contents += "File = "+doc->file()+"\n"; // No tr // (resolves path) + contents += QString("Size = %1\n").arg( fi.size() ); // No tr } //odebug << "sending length " << contents.length() << "" << oendl; #ifndef QT_NO_COP QCopEnvelope e( "QPE/Desktop", "docLinks(QString)" ); e << contents; #endif //odebug << "================ \n\n" << contents << "\n\n===============" << oendl; d->needToSendAllDocLinks = false; } @@ -512,34 +520,34 @@ void DocumentList::sendAllDocLinks() DocumentListPrivate::DocumentListPrivate( ServerInterface *gui ) { storage = new StorageInfo( this ); serverGui = gui; if ( serverGui ) { - sendAppLnks = serverGui->requiresApplications(); - sendDocLnks = serverGui->requiresDocuments(); + sendAppLnks = serverGui->requiresApplications(); + sendDocLnks = serverGui->requiresDocuments(); } else { - sendAppLnks = false; - sendDocLnks = false; + sendAppLnks = false; + sendDocLnks = false; } for ( int i = 0; i < MAX_SEARCH_DEPTH; i++ ) { - listDirs[i] = 0; - lists[i] = 0; - listPositions[i] = 0; + listDirs[i] = 0; + lists[i] = 0; + listPositions[i] = 0; } initialize(); tid = 0; } void DocumentListPrivate::appendDocpath(FileSystem*fs) { QDir defPath(fs->path()+"/Documents"); QFileInfo f(fs->path()+"/.opiestorage.cf"); if (!f.exists()) { Mediadlg dlg(fs); if (QDialog::Accepted != QPEApplication::execDialog( &dlg )) { @@ -572,232 +580,232 @@ void DocumentListPrivate::appendDocpath(FileSystem*fs) } } void DocumentListPrivate::initialize() { // Reset dls.clear(); docPaths.clear(); reference.clear(); QDir docDir( QPEApplication::documentDir() ); if ( docDir.exists() ) - docPaths += QPEApplication::documentDir(); + docPaths += QPEApplication::documentDir(); int i = 1; const QList<FileSystem> &fs = storage->fileSystems(); QListIterator<FileSystem> it( fs ); for ( ; it.current(); ++it ) { if ( (*it)->isRemovable() ) { appendDocpath((*it)); ++i; } } for ( int i = 0; i < MAX_SEARCH_DEPTH; ++i ) { - if ( listDirs[i] ) { - delete listDirs[i]; - listDirs[i] = 0; - } - lists[i] = 0; - listPositions[i] = 0; + if ( listDirs[i] ) { + delete listDirs[i]; + listDirs[i] = 0; + } + lists[i] = 0; + listPositions[i] = 0; } docPathsSearched = 0; searchDepth = -1; state = Find; dit = 0; } DocumentListPrivate::~DocumentListPrivate() { for ( int i = 0; i < MAX_SEARCH_DEPTH; i++ ) - if ( listDirs[i] ) - delete listDirs[i]; + if ( listDirs[i] ) + delete listDirs[i]; delete dit; } void DocumentListPrivate::estimatedPercentScanned() { double overallProgress = 0.0; double levelWeight = 75.0; int topCount = docPaths.count(); if ( topCount > 1 ) { - levelWeight = levelWeight / topCount; - overallProgress += (docPathsSearched - 1) * levelWeight; + levelWeight = levelWeight / topCount; + overallProgress += (docPathsSearched - 1) * levelWeight; } for ( int d = 0; d <= searchDepth; d++ ) { - if ( listDirs[d] ) { - int items = lists[d]->count(); - if ( items > 1 ) { - levelWeight = levelWeight / items; - // Take in to account "." and ".." - overallProgress += (listPositions[d] - 3) * levelWeight; - } - } else { - break; - } + if ( listDirs[d] ) { + int items = lists[d]->count(); + if ( items > 1 ) { + levelWeight = levelWeight / items; + // Take in to account "." and ".." + overallProgress += (listPositions[d] - 3) * levelWeight; + } + } else { + break; + } } // odebug << "overallProgress: " << overallProgress << "" << oendl; if ( serverGui ) - serverGui->documentScanningProgress( (int)overallProgress ); + serverGui->documentScanningProgress( (int)overallProgress ); } const QString DocumentListPrivate::nextFile() { while ( TRUE ) { - while ( searchDepth < 0 ) { - // go to next base path - if ( docPathsSearched >= docPaths.count() ) { - // end of base paths - return QString::null; - } else { - QDir dir( docPaths[docPathsSearched] ); + while ( searchDepth < 0 ) { + // go to next base path + if ( docPathsSearched >= docPaths.count() ) { + // end of base paths + return QString::null; + } else { + QDir dir( docPaths[docPathsSearched] ); // odebug << "now using base path: " << docPaths[docPathsSearched] << "" << oendl; - docPathsSearched++; - if ( !dir.exists( ".Qtopia-ignore" ) ) { - listDirs[0] = new QDir( dir ); - lists[0] = listDirs[0]->entryInfoList(); - listPositions[0] = 0; - searchDepth = 0; - } - } - } - - const QFileInfoList *fil = lists[searchDepth]; + docPathsSearched++; + if ( !dir.exists( ".Qtopia-ignore" ) ) { + listDirs[0] = new QDir( dir ); + lists[0] = listDirs[0]->entryInfoList(); + listPositions[0] = 0; + searchDepth = 0; + } + } + } + + const QFileInfoList *fil = lists[searchDepth]; if (!fil) { return QString::null; } - QFileInfoList *fl = (QFileInfoList *)fil; - unsigned int pos = listPositions[searchDepth]; - - if ( pos >= fl->count() ) { - // go up a depth - delete listDirs[searchDepth]; - listDirs[searchDepth] = 0; - lists[searchDepth] = 0; - listPositions[searchDepth] = 0; - searchDepth--; - } else { - const QFileInfo *fi = fl->at(pos); - listPositions[searchDepth]++; - QString bn = fi->fileName(); - if ( bn[0] != '.' ) { - if ( fi->isDir() ) { - if ( bn != "CVS" && bn != "Qtopia" && bn != "QtPalmtop" ) { - // go down a depth - QDir dir( fi->filePath() ); + QFileInfoList *fl = (QFileInfoList *)fil; + unsigned int pos = listPositions[searchDepth]; + + if ( pos >= fl->count() ) { + // go up a depth + delete listDirs[searchDepth]; + listDirs[searchDepth] = 0; + lists[searchDepth] = 0; + listPositions[searchDepth] = 0; + searchDepth--; + } else { + const QFileInfo *fi = fl->at(pos); + listPositions[searchDepth]++; + QString bn = fi->fileName(); + if ( bn[0] != '.' ) { + if ( fi->isDir() ) { + if ( bn != "CVS" && bn != "Qtopia" && bn != "QtPalmtop" ) { + // go down a depth + QDir dir( fi->filePath() ); // odebug << "now going in to path: " << bn << "" << oendl; - if ( !dir.exists( ".Qtopia-ignore" ) ) { - if ( searchDepth < MAX_SEARCH_DEPTH - 1) { - searchDepth++; - listDirs[searchDepth] = new QDir( dir ); - lists[searchDepth] = listDirs[searchDepth]->entryInfoList(); - listPositions[searchDepth] = 0; - } - } - } - } else { - estimatedPercentScanned(); - return fl->at(pos)->filePath(); - } - } - } + if ( !dir.exists( ".Qtopia-ignore" ) ) { + if ( searchDepth < MAX_SEARCH_DEPTH - 1) { + searchDepth++; + listDirs[searchDepth] = new QDir( dir ); + lists[searchDepth] = listDirs[searchDepth]->entryInfoList(); + listPositions[searchDepth] = 0; + } + } + } + } else { + estimatedPercentScanned(); + return fl->at(pos)->filePath(); + } + } + } } return QString::null; } bool DocumentListPrivate::store( DocLnk* dl ) { // if ( dl->fileKnown() && !dl->file().isEmpty() ) { if ( dl && dl->fileKnown() ) { - dls.add( dl ); // store - return TRUE; + dls.add( dl ); // store + return TRUE; } // don't store - delete delete dl; return FALSE; } -#define MAGIC_NUMBER ((void*)2) +#define MAGIC_NUMBER ((void*)2) const DocLnk *DocumentListPrivate::iterate() { if ( state == Find ) { //odebug << "state Find" << oendl; - QString file = nextFile(); - while ( !file.isNull() ) { - if ( file.right(8) == ".desktop" ) { // No tr - DocLnk* dl = new DocLnk( file ); - if ( store(dl) ) - return dl; - } else { - reference.insert( file, MAGIC_NUMBER ); - } - file = nextFile(); - } - state = RemoveKnownFiles; - - if ( serverGui ) - serverGui->documentScanningProgress( 75 ); + QString file = nextFile(); + while ( !file.isNull() ) { + if ( file.right(8) == ".desktop" ) { // No tr + DocLnk* dl = new DocLnk( file ); + if ( store(dl) ) + return dl; + } else { + reference.insert( file, MAGIC_NUMBER ); + } + file = nextFile(); + } + state = RemoveKnownFiles; + + if ( serverGui ) + serverGui->documentScanningProgress( 75 ); } static int iterationI; static int iterationCount; if ( state == RemoveKnownFiles ) { //odebug << "state RemoveKnownFiles" << oendl; - const QList<DocLnk> &list = dls.children(); - for ( QListIterator<DocLnk> it( list ); it.current(); ++it ) { - reference.remove( (*it)->file() ); - // ### does this need to be deleted? - } - dit = new QDictIterator<void>(reference); - state = MakeUnknownFiles; + const QList<DocLnk> &list = dls.children(); + for ( QListIterator<DocLnk> it( list ); it.current(); ++it ) { + reference.remove( (*it)->file() ); + // ### does this need to be deleted? + } + dit = new QDictIterator<void>(reference); + state = MakeUnknownFiles; - iterationI = 0; - iterationCount = dit->count(); + iterationI = 0; + iterationCount = dit->count(); } if ( state == MakeUnknownFiles ) { //odebug << "state MakeUnknownFiles" << oendl; - for (void* c; (c=dit->current()); ++(*dit) ) { - if ( c == MAGIC_NUMBER ) { - DocLnk* dl = new DocLnk; - QFileInfo fi( dit->currentKey() ); - dl->setFile( fi.filePath() ); - dl->setName( fi.baseName() ); - if ( store(dl) ) { - ++*dit; - iterationI++; - if ( serverGui ) - serverGui->documentScanningProgress( 75 + (25*iterationI)/iterationCount ); - return dl; - } - } - iterationI++; - } - - delete dit; - dit = 0; - state = Done; + for (void* c; (c=dit->current()); ++(*dit) ) { + if ( c == MAGIC_NUMBER ) { + DocLnk* dl = new DocLnk; + QFileInfo fi( dit->currentKey() ); + dl->setFile( fi.filePath() ); + dl->setName( fi.baseName() ); + if ( store(dl) ) { + ++*dit; + iterationI++; + if ( serverGui ) + serverGui->documentScanningProgress( 75 + (25*iterationI)/iterationCount ); + return dl; + } + } + iterationI++; + } + + delete dit; + dit = 0; + state = Done; } //odebug << "state Done" << oendl; return NULL; } #include "documentlist.moc" diff --git a/core/launcher/documentlist.h b/core/launcher/documentlist.h index 232bb6a..8b69e95 100644 --- a/core/launcher/documentlist.h +++ b/core/launcher/documentlist.h @@ -23,34 +23,35 @@ #include <qobject.h> #include <qtopia/applnk.h> class DocumentListPrivate; class ServerInterface; class DocumentList : public QObject { Q_OBJECT public: DocumentList( ServerInterface *serverGui, bool scanDocs = TRUE, - QObject *parent = 0, const char *name = 0 ); + QObject *parent = 0, const char *name = 0 ); ~DocumentList(); void linkChanged( QString link ); void restoreDone(); void storageChanged(); void sendAllDocLinks(); void reloadAppLnks(); void reloadDocLnks(); + void reforceDocuments(); void DiffAppLnks(); // Orig DocList stuff void start(); void pause(); void resume(); void rescan(); static AppLnkSet *appLnkSet; /* void resend(); diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp index ccc2114..970b8cb 100644 --- a/core/launcher/launcher.cpp +++ b/core/launcher/launcher.cpp @@ -379,83 +379,104 @@ void LauncherTabWidget::setBusyIndicatorType( const QString& str ) { LauncherView *LauncherTabWidget::currentView(void) { return (LauncherView*)stack->visibleWidget(); } void LauncherTabWidget::launcherMessage( const QCString &msg, const QByteArray &data) { QDataStream stream( data, IO_ReadOnly ); if ( msg == "setTabView(QString,int)" ) { - QString id; - stream >> id; - int mode; - stream >> mode; - if ( view(id) ) - view(id)->setViewMode( (LauncherView::ViewMode)mode ); + QString id; + stream >> id; + int mode; + stream >> mode; + if ( view(id) ) + view(id)->setViewMode( (LauncherView::ViewMode)mode ); } else if ( msg == "setTabBackground(QString,int,QString)" ) { - QString id; - stream >> id; - int mode; - stream >> mode; - QString pixmapOrColor; - stream >> pixmapOrColor; - if ( view(id) ) - view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); - if ( id == "Documents" ) - docLoadingWidget->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); + QString id; + stream >> id; + int mode; + stream >> mode; + QString pixmapOrColor; + stream >> pixmapOrColor; + if ( view(id) ) + view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); + if ( id == "Documents" ) + docLoadingWidget->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); } else if ( msg == "setTextColor(QString,QString)" ) { - QString id; - stream >> id; - QString color; - stream >> color; - if ( view(id) ) - view(id)->setTextColor( QColor(color) ); - if ( id == "Documents" ) - docLoadingWidget->setTextColor( QColor(color) ); + QString id; + stream >> id; + QString color; + stream >> color; + if ( view(id) ) + view(id)->setTextColor( QColor(color) ); + if ( id == "Documents" ) + docLoadingWidget->setTextColor( QColor(color) ); } else if ( msg == "setFont(QString,QString,int,int,int)" ) { - QString id; - stream >> id; - QString fam; - stream >> fam; - int size; - stream >> size; - int weight; - stream >> weight; - int italic; - stream >> italic; - if ( view(id) ) { - if ( !fam.isEmpty() ) { - view(id)->setViewFont( QFont(fam, size, weight, italic!=0) ); - odebug << "setFont: " << fam << ", " << size << ", " << weight << ", " << italic << "" << oendl; - } else { - view(id)->clearViewFont(); + QString id; + stream >> id; + QString fam; + stream >> fam; + int size; + stream >> size; + int weight; + stream >> weight; + int italic; + stream >> italic; + if ( view(id) ) { + if ( !fam.isEmpty() ) { + view(id)->setViewFont( QFont(fam, size, weight, italic!=0) ); + odebug << "setFont: " << fam << ", " << size << ", " << weight << ", " << italic << "" << oendl; + } else { + view(id)->clearViewFont(); + } } - } }else if ( msg == "setBusyIndicatorType(QString)" ) { QString type; stream >> type; setBusyIndicatorType( type ); }else if ( msg == "home()" ) { if ( isVisibleWindow( static_cast<QWidget*>(parent())->winId() ) ) { if (categoryBar) categoryBar->nextTab(); - }else + }else { static_cast<QWidget*>(parent())->raise(); + } + } else if (msg=="doctabEnabled(int)") { + int id; stream >> id; + odebug << "Doctab enabled " << id << oendl; + reCheckDoctab(id); } } - +void LauncherTabWidget::reCheckDoctab(int how) +{ + if ((bool)how == docTabEnabled) { + /* nothing to do */ + return; + } + if (docLoadingWidget) { + stack->removeWidget(docLoadingWidget); + delete docLoadingWidget; + docLoadingWidget = 0; + } + createDocLoadingWidget(); + { + QCopEnvelope( "QPE/System", "reforceDocuments()" ); + odebug << "Sending doc rescan" << oendl; + } +} //--------------------------------------------------------------------------- Launcher::Launcher() : QMainWindow( 0, "PDA User Interface", QWidget::WStyle_Customize | QWidget::WGroupLeader ) { tabs = 0; tb = 0; Config cfg( "Launcher" ); cfg.setGroup( "DocTab" ); docTabEnabled = cfg.readBoolEntry( "Enable", true ); } diff --git a/core/launcher/launcher.h b/core/launcher/launcher.h index db6ac54..b741064 100644 --- a/core/launcher/launcher.h +++ b/core/launcher/launcher.h @@ -72,24 +72,25 @@ protected slots: void raiseTabWidget(); void tabProperties(); void initLayout(); private slots: void launcherMessage( const QCString &, const QByteArray &); void appMessage( const QCString &, const QByteArray &); void setProgressStyle(); protected: void paletteChange( const QPalette &p ); void styleChange( QStyle & ); + void reCheckDoctab(int how); private: Launcher *launcher; LauncherView *docview; QWidgetStack *stack; LauncherView *docLoadingWidget; QProgressBar *docLoadingWidgetProgress; bool docLoadingWidgetEnabled; bool docTabEnabled; int m_DocumentTabId; }; diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp index c9efacb..2783423 100644 --- a/core/launcher/launcherview.cpp +++ b/core/launcher/launcherview.cpp @@ -323,27 +323,24 @@ int LauncherIconView::compare(const AppLnk* a, const AppLnk* b) } void LauncherIconView::setSortMethod( SortMethod m ) { if ( sortmeth != m ) { sortmeth = m; sort(); } } void LauncherIconView::setCategoryFilter( int catfilter, bool resort ) { - Categories cat; - cat.load( categoryFileName() ); - QString str; if ( catfilter == -2 ) cf = 0; else cf = catfilter; hideOrShowItems(resort); } void LauncherIconView::setTypeFilter(const QString& typefilter, bool resort) { tf = QRegExp(typefilter,FALSE,TRUE); hideOrShowItems(resort); } @@ -1074,24 +1071,25 @@ void LauncherView::itemPressed( int btn, QIconViewItem *item ) AppLnk *appLnk = ((LauncherItem *)item)->appLnk(); if ( btn == RightButton ) emit rightPressed( appLnk ); else if ( btn == ShiftButton ) emit rightPressed( appLnk ); item->setSelected(FALSE); } } void LauncherView::removeAllItems() { odebug << "LauncherView::removeAllItems()" << oendl; + if (LauncherIconView::sm_EyeCache) LauncherIconView::sm_EyeCache->clear(); icons->clear(); } bool LauncherView::removeLink(const QString& linkfile) { return icons->removeLink(linkfile); } void LauncherView::addItem(AppLnk* app, bool resort) { icons->addItem(app,resort); } diff --git a/core/launcher/server.cpp b/core/launcher/server.cpp index 42186d3..15cd686 100644 --- a/core/launcher/server.cpp +++ b/core/launcher/server.cpp @@ -155,25 +155,25 @@ Server::Server() : appLauncher = new AppLauncher(this); connect(appLauncher, SIGNAL(launched(int,const QString&)), this, SLOT(applicationLaunched(int,const QString&)) ); connect(appLauncher, SIGNAL(terminated(int,const QString&)), this, SLOT(applicationTerminated(int,const QString&)) ); connect(appLauncher, SIGNAL(connected(const QString&)), this, SLOT(applicationConnected(const QString&)) ); storage = new StorageInfo( this ); connect( storage, SIGNAL(disksChanged()), this, SLOT(storageChanged()) ); #ifdef QPE_HAVE_DIRECT_ACCESS QCopChannel *desktopChannel = new QCopChannel( "QPE/Desktop", this ); connect( desktopChannel, SIGNAL(received( const QCString &, const QByteArray & )), - this, SLOT(desktopMessage( const QCString &, const QByteArray & )) ); + this, SLOT(desktopMessage( const QCString &, const QByteArray & )) ); #endif // start services startTransferServer(); (void) new IrServer( this ); packageHandler = new PackageHandler( this ); connect(qApp, SIGNAL(activate(const Opie::Core::ODeviceButton*,bool)), this,SLOT(activate(const Opie::Core::ODeviceButton*,bool))); setGeometry( -10, -10, 9, 9 ); @@ -207,38 +207,38 @@ Server::~Server() #if 0 delete tsmMonitor; #endif } static bool hasVisibleWindow(const QString& clientname, bool partial) { #ifdef QWS const QList<QWSWindow> &list = qwsServer->clientWindows(); QWSWindow* w; for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { - if ( w->client()->identity() == clientname ) { - if ( partial && !w->isFullyObscured() ) - return TRUE; - if ( !partial && !w->isFullyObscured() && !w->isPartiallyObscured() ) { + if ( w->client()->identity() == clientname ) { + if ( partial && !w->isFullyObscured() ) + return TRUE; + if ( !partial && !w->isFullyObscured() && !w->isPartiallyObscured() ) { # if QT_VERSION < 0x030000 - QRect mwr = qt_screen->mapToDevice(qt_maxWindowRect, - QSize(qt_screen->width(),qt_screen->height()) ); + QRect mwr = qt_screen->mapToDevice(qt_maxWindowRect, + QSize(qt_screen->width(),qt_screen->height()) ); # else - QRect mwr = qt_maxWindowRect; + QRect mwr = qt_maxWindowRect; # endif - if ( mwr.contains(w->requested().boundingRect()) ) - return TRUE; - } - } + if ( mwr.contains(w->requested().boundingRect()) ) + return TRUE; + } + } } #endif return FALSE; } void Server::activate(const ODeviceButton* button, bool held) { Global::terminateBuiltin("calibrate"); // No tr OQCopMessage om; if ( held ) { om = button->heldAction(); } else { @@ -333,24 +333,26 @@ void Server::systemMsg(const QCString &msg, const QByteArray &data) #warning FIXME support TempScreenSaverMode #if 0 } else if ( msg == "setTempScreenSaverMode(int,int)" ) { int mode, pid; stream >> mode >> pid; tsmMonitor->setTempMode(mode, pid); #endif } else if ( msg == "linkChanged(QString)" ) { QString link; stream >> link; odebug << "desktop.cpp systemMsg -> linkchanged( " << link << " )" << oendl; docList->linkChanged(link); + } else if (msg =="reforceDocuments()") { + docList->reforceDocuments(); } else if ( msg == "serviceChanged(QString)" ) { MimeType::updateApplications(); } else if ( msg == "mkdir(QString)" ) { QString dir; stream >> dir; if ( !dir.isEmpty() ) mkdir( dir ); } else if ( msg == "rdiffGenSig(QString,QString)" ) { QString baseFile, sigFile; stream >> baseFile >> sigFile; QRsync::generateSignature( baseFile, sigFile ); } else if ( msg == "rdiffGenDiff(QString,QString,QString)" ) { @@ -423,26 +425,26 @@ void Server::systemMsg(const QCString &msg, const QByteArray &data) (*it)->name() + "=" + homeDir + "/Documents " // No tr + QString::number( (*it)->availBlocks() * k4/4 ) + "K " + (*it)->options() + ";"; } } if ( !homeFs.isEmpty() ) s += homeFs; #ifndef QT_NO_COP e << s; #endif } else if ( msg == "sendInstallLocations()" ) { #ifndef QT_NO_COP - QCopEnvelope e( "QPE/Desktop", "installLocations(QString)" ); - e << installLocationsString(); + QCopEnvelope e( "QPE/Desktop", "installLocations(QString)" ); + e << installLocationsString(); #endif } else if ( msg == "sendSyncDate(QString)" ) { QString app; stream >> app; Config cfg( "qpe" ); cfg.setGroup("SyncDate"); #ifndef QT_NO_COP QCopEnvelope e( "QPE/Desktop", "syncDate(QString,QString)" ); e << app << cfg.readEntry( app ); #endif //odebug << "QPE/System sendSyncDate for " << app.latin1() << ": response " // << cfg.readEntry( app ).latin1() << oendl; @@ -461,27 +463,27 @@ void Server::systemMsg(const QCString &msg, const QByteArray &data) syncDialog->show(); connect( syncDialog, SIGNAL(cancel()), SLOT(cancelSync()) ); } else if ( msg == "stopSync()") { delete syncDialog; syncDialog = 0; } else if (msg == "restoreDone(QString)") { docList->restoreDone(); } else if ( msg == "getAllDocLinks()" ) { docList->sendAllDocLinks(); } #ifdef QPE_HAVE_DIRECT_ACCESS else if ( msg == "prepareDirectAccess()" ) { - prepareDirectAccess(); + prepareDirectAccess(); } else if ( msg == "postDirectAccess()" ) { - postDirectAccess(); + postDirectAccess(); } #endif #ifdef Q_WS_QWS else if ( msg == "setMouseProto(QString)" ) { QString mice; stream >> mice; setenv("QWS_MOUSE_PROTO",mice.latin1(),1); qwsServer->openMouse(); } else if ( msg == "setKeyboard(QString)" ) { QString kb; stream >> kb; @@ -548,68 +550,68 @@ void Server::systemMsg(const QCString &msg, const QByteArray &data) #endif } QString Server::cardInfoString() { storage->update(); const QList<FileSystem> &fs = storage->fileSystems(); QListIterator<FileSystem> it ( fs ); QString s; QString homeDir = getenv("HOME"); QString homeFs, homeFsPath; for ( ; it.current(); ++it ) { - int k4 = (*it)->blockSize()/256; - if ( (*it)->isRemovable() ) { - s += (*it)->name() + "=" + (*it)->path() + "/Documents " // No tr - + QString::number( (*it)->availBlocks() * k4/4 ) - + "K " + (*it)->options() + ";"; - } else if ( homeDir.contains( (*it)->path() ) && - (*it)->path().length() > homeFsPath.length() ) { - homeFsPath = (*it)->path(); - homeFs = - (*it)->name() + "=" + homeDir + "/Documents " // No tr - + QString::number( (*it)->availBlocks() * k4/4 ) - + "K " + (*it)->options() + ";"; - } + int k4 = (*it)->blockSize()/256; + if ( (*it)->isRemovable() ) { + s += (*it)->name() + "=" + (*it)->path() + "/Documents " // No tr + + QString::number( (*it)->availBlocks() * k4/4 ) + + "K " + (*it)->options() + ";"; + } else if ( homeDir.contains( (*it)->path() ) && + (*it)->path().length() > homeFsPath.length() ) { + homeFsPath = (*it)->path(); + homeFs = + (*it)->name() + "=" + homeDir + "/Documents " // No tr + + QString::number( (*it)->availBlocks() * k4/4 ) + + "K " + (*it)->options() + ";"; + } } if ( !homeFs.isEmpty() ) - s += homeFs; + s += homeFs; return s; } QString Server::installLocationsString() { storage->update(); const QList<FileSystem> &fs = storage->fileSystems(); QListIterator<FileSystem> it ( fs ); QString s; QString homeDir = getenv("HOME"); QString homeFs, homeFsPath; for ( ; it.current(); ++it ) { - int k4 = (*it)->blockSize()/256; - if ( (*it)->isRemovable() ) { - s += (*it)->name() + "=" + (*it)->path() + " " // No tr - + QString::number( (*it)->availBlocks() * k4/4 ) - + "K " + (*it)->options() + ";"; - } else if ( homeDir.contains( (*it)->path() ) && - (*it)->path().length() > homeFsPath.length() ) { - homeFsPath = (*it)->path(); - homeFs = - (*it)->name() + "=" + homeDir + " " // No tr - + QString::number( (*it)->availBlocks() * k4/4 ) - + "K " + (*it)->options() + ";"; - } + int k4 = (*it)->blockSize()/256; + if ( (*it)->isRemovable() ) { + s += (*it)->name() + "=" + (*it)->path() + " " // No tr + + QString::number( (*it)->availBlocks() * k4/4 ) + + "K " + (*it)->options() + ";"; + } else if ( homeDir.contains( (*it)->path() ) && + (*it)->path().length() > homeFsPath.length() ) { + homeFsPath = (*it)->path(); + homeFs = + (*it)->name() + "=" + homeDir + " " // No tr + + QString::number( (*it)->availBlocks() * k4/4 ) + + "K " + (*it)->options() + ";"; + } } if ( !homeFs.isEmpty() ) - s = homeFs + s; + s = homeFs + s; return s; } void Server::receiveTaskBar(const QCString &msg, const QByteArray &data) { QDataStream stream( data, IO_ReadOnly ); if ( msg == "reloadApps()" ) { docList->reloadAppLnks(); } else if ( msg == "soundAlarm()" ) { ServerApplication::soundAlarm(); } else if ( msg == "setLed(int,bool)" ) { @@ -815,170 +817,170 @@ void Server::prepareDirectAccess() { qDebug( "Server::prepareDirectAccess()" ); // Put up a pretty dialog syncDialog = new SyncDialog( this, tr("USB Lock") ); syncDialog->show(); // Prevent the PDA from acting as a PDA terminateServers(); // suspend the mtab monitor #ifndef QT_NO_COP { - QCopEnvelope e( "QPE/Stabmon", "suspendMonitor()" ); + QCopEnvelope e( "QPE/Stabmon", "suspendMonitor()" ); } #endif // send out a flush message // once flushes are done call runDirectAccess() // We just count the number of apps and set a timer. // Either the timer expires or the correct number of apps responds. // Note: quicklauncher isn't in the runningApps list but it responds // to the flush so we start the counter at 1 pendingFlushes = 1; directAccessRun = FALSE; for ( QMap<int,QString>::ConstIterator it = - appLauncher->runningApplications().begin(); - it != appLauncher->runningApplications().end(); - ++it ) { - pendingFlushes++; + appLauncher->runningApplications().begin(); + it != appLauncher->runningApplications().end(); + ++it ) { + pendingFlushes++; } #ifndef QT_NO_COP QCopEnvelope e1( "QPE/System", "flush()" ); #endif QTimer::singleShot( 10000, this, SLOT(runDirectAccess()) ); #warning FIXME support TempScreenSaverMode #if 0 QPEApplication::setTempScreenSaverMode(QPEApplication::DisableSuspend); #endif } // This is only connected if QPE_HAVE_DIRECT_ACCESS is defined // It fakes the presence of Qtopia Desktop void Server::desktopMessage( const QCString &message, const QByteArray &data ) { QDataStream stream( data, IO_ReadOnly ); if ( message == "flushDone(QString)" ) { - QString app; - stream >> app; - qDebug( "flushDone from %s", app.latin1() ); - if ( --pendingFlushes == 0 ) { - qDebug( "pendingFlushes == 0, all the apps responded" ); - runDirectAccess(); - } + QString app; + stream >> app; + qDebug( "flushDone from %s", app.latin1() ); + if ( --pendingFlushes == 0 ) { + qDebug( "pendingFlushes == 0, all the apps responded" ); + runDirectAccess(); + } } else if ( message == "installStarted(QString)" ) { - QString package; - stream >> package; - qDebug( "\tInstall Started for package %s", package.latin1() ); + QString package; + stream >> package; + qDebug( "\tInstall Started for package %s", package.latin1() ); } else if ( message == "installStep(QString)" ) { - QString step; - stream >> step; - qDebug( "\tInstall Step %s", step.latin1() ); + QString step; + stream >> step; + qDebug( "\tInstall Step %s", step.latin1() ); } else if ( message == "installDone(QString)" ) { - QString package; - stream >> package; - qDebug( "\tInstall Finished for package %s", package.latin1() ); + QString package; + stream >> package; + qDebug( "\tInstall Finished for package %s", package.latin1() ); } else if ( message == "installFailed(QString,int,QString)" ) { - QString package, error; - int status; - stream >> package >> status >> error; - qDebug( "\tInstall Failed for package %s with error code %d and error message %s", - package.latin1(), status, error.latin1() ); + QString package, error; + int status; + stream >> package >> status >> error; + qDebug( "\tInstall Failed for package %s with error code %d and error message %s", + package.latin1(), status, error.latin1() ); } else if ( message == "removeStarted(QString)" ) { - QString package; - stream >> package; - qDebug( "\tRemove Started for package %s", package.latin1() ); + QString package; + stream >> package; + qDebug( "\tRemove Started for package %s", package.latin1() ); } else if ( message == "removeDone(QString)" ) { - QString package; - stream >> package; - qDebug( "\tRemove Finished for package %s", package.latin1() ); + QString package; + stream >> package; + qDebug( "\tRemove Finished for package %s", package.latin1() ); } else if ( message == "removeFailed(QString)" ) { - QString package; - stream >> package; - qDebug( "\tRemove Failed for package %s", package.latin1() ); + QString package; + stream >> package; + qDebug( "\tRemove Failed for package %s", package.latin1() ); } if ( qrr && qrr->waitingForMessages ) - qrr->desktopMessage( message, data ); + qrr->desktopMessage( message, data ); } // This is only connected if QPE_HAVE_DIRECT_ACCESS is defined void Server::runDirectAccess() { #ifdef QPE_HAVE_DIRECT_ACCESS // The timer must have fired after all the apps responded // with flushDone(). Just ignore it. if ( directAccessRun ) - return; + return; directAccessRun = TRUE; ::readyDirectAccess(cardInfoString(), installLocationsString()); #endif } // This is only called if QPE_HAVE_DIRECT_ACCESS is defined void Server::postDirectAccess() { #ifdef QPE_HAVE_DIRECT_ACCESS qDebug( "Server::postDirectAccess()" ); // Categories may have changed QCopEnvelope e1( "QPE/System", "categoriesChanged()" ); // Apps need to reload their data QCopEnvelope e2( "QPE/System", "reload()" ); // Reload DocLinks docList->storageChanged(); // Restart the PDA server stuff startTransferServer(); // restart the mtab monitor #ifndef QT_NO_COP { - QCopEnvelope e( "QPE/Stabmon", "restartMonitor()" ); + QCopEnvelope e( "QPE/Stabmon", "restartMonitor()" ); } #endif // Process queued requests const char *queueFile = ::directAccessQueueFile(); QFile *file = new QFile( queueFile ); if ( !file->exists() ) { - delete file; - // Get rid of the dialog - if ( syncDialog ) { - delete syncDialog; - syncDialog = 0; - } + delete file; + // Get rid of the dialog + if ( syncDialog ) { + delete syncDialog; + syncDialog = 0; + } #warning FIXME support TempScreenSaverMode #if 0 - QPEApplication::setTempScreenSaverMode(QPEApplication::Enable); + QPEApplication::setTempScreenSaverMode(QPEApplication::Enable); #endif } else { - qrr = new QueuedRequestRunner( file, syncDialog ); - connect( qrr, SIGNAL(finished()), - this, SLOT(finishedQueuedRequests()) ); - QTimer::singleShot( 100, qrr, SLOT(process()) ); - // qrr will remove the sync dialog later + qrr = new QueuedRequestRunner( file, syncDialog ); + connect( qrr, SIGNAL(finished()), + this, SLOT(finishedQueuedRequests()) ); + QTimer::singleShot( 100, qrr, SLOT(process()) ); + // qrr will remove the sync dialog later } #endif } void Server::finishedQueuedRequests() { if ( qrr->readyToDelete ) { - delete qrr; - qrr = 0; - // Get rid of the dialog - if ( syncDialog ) { - delete syncDialog; - syncDialog = 0; - } + delete qrr; + qrr = 0; + // Get rid of the dialog + if ( syncDialog ) { + delete syncDialog; + syncDialog = 0; + } #warning FIXME support TempScreenSaverMode #if 0 - QPEApplication::setTempScreenSaverMode(QPEApplication::Enable); + QPEApplication::setTempScreenSaverMode(QPEApplication::Enable); #endif } else { - qrr->readyToDelete = TRUE; - QTimer::singleShot( 0, this, SLOT(finishedQueuedRequests()) ); + qrr->readyToDelete = TRUE; + QTimer::singleShot( 0, this, SLOT(finishedQueuedRequests()) ); } } |