-rw-r--r-- | core/launcher/documentlist.cpp | 7 | ||||
-rw-r--r-- | core/launcher/mediadlg.cpp | 31 | ||||
-rw-r--r-- | core/launcher/mediadlg.h | 29 | ||||
-rw-r--r-- | core/launcher/server.pro | 12 |
4 files changed, 74 insertions, 5 deletions
diff --git a/core/launcher/documentlist.cpp b/core/launcher/documentlist.cpp index 9736e65..39dc7c9 100644 --- a/core/launcher/documentlist.cpp +++ b/core/launcher/documentlist.cpp @@ -1,117 +1,118 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "documentlist.h" #include "serverinterface.h" +#include "mediadlg.h" #include <opie2/oglobal.h> #include <qtopia/config.h> #include <qtopia/mimetype.h> #include <qtopia/resource.h> #include <qtopia/private/categories.h> #include <qtopia/qpeapplication.h> #include <qtopia/applnk.h> #include <qtopia/storage.h> #ifdef Q_WS_QWS #include <qtopia/qcopenvelope_qws.h> #endif #include <qtimer.h> #include <qfileinfo.h> #include <qtextstream.h> #include <qfile.h> #include <qdir.h> #include <qpainter.h> #include <qimage.h> #include <qcopchannel_qws.h> #include <qlistview.h> #include <qlist.h> #include <qpixmap.h> AppLnkSet *DocumentList::appLnkSet = 0; static const int MAX_SEARCH_DEPTH = 10; class DocumentListPrivate : public QObject { Q_OBJECT public: DocumentListPrivate( ServerInterface *gui ); ~DocumentListPrivate(); void initialize(); const QString nextFile(); const DocLnk *iterate(); bool store( DocLnk* dl ); void estimatedPercentScanned(); void appendDocpath(FileSystem*); DocLnkSet dls; QDict<void> reference; QDictIterator<void> *dit; enum { Find, RemoveKnownFiles, MakeUnknownFiles, Done } state; QStringList docPaths; unsigned int docPathsSearched; int searchDepth; QDir *listDirs[MAX_SEARCH_DEPTH]; const QFileInfoList *lists[MAX_SEARCH_DEPTH]; unsigned int listPositions[MAX_SEARCH_DEPTH]; StorageInfo *storage; int tid; ServerInterface *serverGui; 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, 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 ); qDebug( "DocumentList::DocumentList() : scanDocs = %d", d->scanDocs ); QTimer::singleShot( 10, this, SLOT( startInitialScan() ) ); } void DocumentList::startInitialScan() { reloadAppLnks(); reloadDocLnks(); @@ -341,196 +342,196 @@ 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; } 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 ); contents += ts.read(); 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 } //qDebug( "sending length %d", contents.length() ); #ifndef QT_NO_COP QCopEnvelope e( "QPE/Desktop", "docLinks(QString)" ); e << contents; #endif //qDebug( "================ \n\n%s\n\n===============", contents.latin1() ); d->needToSendAllDocLinks = false; } DocumentListPrivate::DocumentListPrivate( ServerInterface *gui ) { storage = new StorageInfo( this ); serverGui = gui; if ( serverGui ) { sendAppLnks = serverGui->requiresApplications(); sendDocLnks = serverGui->requiresDocuments(); } else { sendAppLnks = false; sendDocLnks = false; } for ( int i = 0; i < MAX_SEARCH_DEPTH; i++ ) { 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()) { - if (defPath.exists()) { - docPaths+=defPath.path(); + Mediadlg dlg(fs); + if (QDialog::Accepted != QPEApplication::execDialog( &dlg )) { + return; } - return; } Config conf(f.filePath(), Config::File ); conf.setGroup("subdirs"); bool read_all = conf.readBoolEntry("wholemedia",true); if (read_all) { docPaths+=fs->path(); return; } QStringList subDirs = conf.readListEntry("subdirs",':'); if (subDirs.isEmpty()) { if (defPath.exists()) { docPaths+=defPath.path(); } return; } for (unsigned c = 0; c < subDirs.count();++c) { QDir docDir(QString(fs->path()+"/"+subDirs[c])); if (docDir.exists()) { docPaths+=docDir.path(); } } } void DocumentListPrivate::initialize() { // Reset dls.clear(); docPaths.clear(); reference.clear(); QDir docDir( QPEApplication::documentDir() ); if ( docDir.exists() ) 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; } 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]; 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; } 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; } } // qDebug( "overallProgress: %f", overallProgress ); if ( serverGui ) serverGui->documentScanningProgress( (int)overallProgress ); diff --git a/core/launcher/mediadlg.cpp b/core/launcher/mediadlg.cpp new file mode 100644 index 0000000..6448863 --- a/dev/null +++ b/core/launcher/mediadlg.cpp @@ -0,0 +1,31 @@ +#include "mediadlg.h" +#include "mediumwidget.h" +#include <qtopia/storage.h> +#include <qpixmap.h> +#include <qlayout.h> + +Mediadlg::Mediadlg(FileSystem*fs,QWidget *parent, const char *name, bool modal, WFlags fl) + : QDialog(parent,name,modal,fl) +{ + m_fs = fs; + m_widget = 0; + init(); +} + +Mediadlg::~Mediadlg() +{ +} + +void Mediadlg::init() +{ + if (!m_fs) return; + m_lay = new QVBoxLayout( this ); + m_widget = new MediumMountSetting::MediumMountWidget(m_fs->path(),QPixmap(),this); + m_lay->addWidget(m_widget); +} + +void Mediadlg::accept() +{ + if (m_widget) m_widget->writeConfig(); + QDialog::accept(); +} diff --git a/core/launcher/mediadlg.h b/core/launcher/mediadlg.h new file mode 100644 index 0000000..f4d552d --- a/dev/null +++ b/core/launcher/mediadlg.h @@ -0,0 +1,29 @@ +#ifndef __MEDIA_DLG_H +#define __MEDIA_DLG_H + +#include <qdialog.h> + +namespace MediumMountSetting { + class MediumMountWidget; +} +class FileSystem; +class QVBoxLayout; + +class Mediadlg:public QDialog +{ + Q_OBJECT +public: + Mediadlg(FileSystem*,QWidget *parent = 0, const char *name = 0 , bool modal = TRUE, WFlags fl = 0); + virtual ~Mediadlg(); +protected slots: + virtual void accept(); + +protected: + MediumMountSetting::MediumMountWidget*m_widget; + FileSystem*m_fs; + QVBoxLayout *m_lay; + void init(); +}; + +#endif + diff --git a/core/launcher/server.pro b/core/launcher/server.pro index f82c741..e341e1a 100644 --- a/core/launcher/server.pro +++ b/core/launcher/server.pro @@ -1,124 +1,132 @@ TEMPLATE = app CONFIG += qtopia warn_on release DESTDIR = $$(OPIEDIR)/bin HEADERS += server.h \ serverinterface.h \ launchertab.h \ documentlist.h \ appicons.h \ taskbar.h \ runningappbar.h \ applauncher.h \ stabmon.h \ inputmethods.h \ systray.h \ wait.h \ shutdownimpl.h \ launcher.h \ launcherview.h \ $$(OPIEDIR)/core/apps/calibrate/calibrate.h \ startmenu.h \ transferserver.h \ qcopbridge.h \ packageslave.h \ irserver.h \ firstuse.h \ $$(OPIEDIR)/rsync/buf.h \ $$(OPIEDIR)/rsync/checksum.h \ $$(OPIEDIR)/rsync/command.h \ $$(OPIEDIR)/rsync/emit.h \ $$(OPIEDIR)/rsync/job.h \ $$(OPIEDIR)/rsync/netint.h \ $$(OPIEDIR)/rsync/protocol.h \ $$(OPIEDIR)/rsync/prototab.h \ $$(OPIEDIR)/rsync/rsync.h \ $$(OPIEDIR)/rsync/search.h \ $$(OPIEDIR)/rsync/stream.h \ $$(OPIEDIR)/rsync/sumset.h \ $$(OPIEDIR)/rsync/trace.h \ $$(OPIEDIR)/rsync/types.h \ $$(OPIEDIR)/rsync/util.h \ $$(OPIEDIR)/rsync/whole.h \ $$(OPIEDIR)/rsync/config_rsync.h \ $$(OPIEDIR)/rsync/qrsync.h \ syncdialog.h \ serverapp.h \ qprocess.h \ - screensaver.h + screensaver.h \ + $$(OPIEDIR)/noncore/settings/mediummount/mediumwidget.h \ + mediadlg.h SOURCES += server.cpp \ serverinterface.cpp \ launchertab.cpp \ documentlist.cpp \ appicons.cpp \ taskbar.cpp \ runningappbar.cpp \ applauncher.cpp \ stabmon.cpp \ inputmethods.cpp \ systray.cpp \ wait.cpp \ shutdownimpl.cpp \ launcher.cpp \ launcherview.cpp \ $$(OPIEDIR)/core/apps/calibrate/calibrate.cpp \ transferserver.cpp \ packageslave.cpp \ irserver.cpp \ qcopbridge.cpp \ startmenu.cpp \ main.cpp \ firstuse.cpp \ $$(OPIEDIR)/rsync/base64.c \ $$(OPIEDIR)/rsync/buf.c \ $$(OPIEDIR)/rsync/checksum.c \ $$(OPIEDIR)/rsync/command.c \ $$(OPIEDIR)/rsync/delta.c \ $$(OPIEDIR)/rsync/emit.c \ $$(OPIEDIR)/rsync/hex.c \ $$(OPIEDIR)/rsync/job.c \ $$(OPIEDIR)/rsync/mdfour.c \ $$(OPIEDIR)/rsync/mksum.c \ $$(OPIEDIR)/rsync/msg.c \ $$(OPIEDIR)/rsync/netint.c \ $$(OPIEDIR)/rsync/patch.c \ $$(OPIEDIR)/rsync/prototab.c \ $$(OPIEDIR)/rsync/readsums.c \ $$(OPIEDIR)/rsync/scoop.c \ $$(OPIEDIR)/rsync/search.c \ $$(OPIEDIR)/rsync/stats.c \ $$(OPIEDIR)/rsync/stream.c \ $$(OPIEDIR)/rsync/sumset.c \ $$(OPIEDIR)/rsync/trace.c \ $$(OPIEDIR)/rsync/tube.c \ $$(OPIEDIR)/rsync/util.c \ $$(OPIEDIR)/rsync/version.c \ $$(OPIEDIR)/rsync/whole.c \ $$(OPIEDIR)/rsync/qrsync.cpp \ syncdialog.cpp \ serverapp.cpp \ qprocess.cpp \ qprocess_unix.cpp \ - screensaver.cpp + screensaver.cpp \ + $$(OPIEDIR)/noncore/settings/mediummount/mediumwidget.cc \ + mediadlg.cpp INCLUDEPATH += $(OPIEDIR)/core/apps/calibrate DEPENDPATH += $(OPIEDIR)/core/apps/calibrate INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/rsync DEPENDPATH += $(OPIEDIR)/rsync +INCLUDEPATH += $(OPIEDIR)/noncore/settings/mediummount +DEPENDPATH += $(OPIEDIR)/noncore/settings/mediummount + + TARGET = qpe #needs OWait and ODevice CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX ) contains( CONFTEST, y ){ LIBS += -lqpe -lopiecore2 -lopieui2 }else{ LIBS += -lcrypt -lqpe -lopiecore2 -lopieui2 } include ( $(OPIEDIR)/include.pro ) |