author | zecke <zecke> | 2005-02-05 16:05:04 (UTC) |
---|---|---|
committer | zecke <zecke> | 2005-02-05 16:05:04 (UTC) |
commit | 23fc6bad8aa84ee1a690a07124ba9e59650e2aea (patch) (side-by-side diff) | |
tree | 73f5efbf4ae055b781c78d395fa32bebc2705344 | |
parent | 8ba13dd38e7da296177719dcc8fddbbe978a4b9a (diff) | |
download | opie-23fc6bad8aa84ee1a690a07124ba9e59650e2aea.zip opie-23fc6bad8aa84ee1a690a07124ba9e59650e2aea.tar.gz opie-23fc6bad8aa84ee1a690a07124ba9e59650e2aea.tar.bz2 |
Implement deletion for the Document and Camera Liste
This should fix 1540
-rw-r--r-- | noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp | 2 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/impl/doc/doc_lister.cpp | 12 |
2 files changed, 12 insertions, 2 deletions
diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp b/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp index 3c3d702..147eb9c 100644 --- a/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp +++ b/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp @@ -1,181 +1,181 @@ /* * GPLv2 zecke@handhelds.org */ #include "dcim_lister.h" #include <lib/slavemaster.h> #include <opie2/odebug.h> #include <qpe/storage.h> #include <qdir.h> #include <qfileinfo.h> #include <qimage.h> DCIM_DirLister::DCIM_DirLister() : PDirLister( "dcim_dirlister" ) { /* * create a SlaveMaster and lets connect the signal of * it to our interface */ SlaveHelper::slaveConnectSignals( this ); m_mode = ListingUnknown; } DCIM_DirLister::~DCIM_DirLister() {} QString DCIM_DirLister::defaultPath()const { m_mode = ListingStart; return QString::null; } QString DCIM_DirLister::setStartPath( const QString& str) { /** * IconView adds a '/' to path. Lets strip * that. */ QString st = str.mid( 1 ); if ( ListingStart == m_mode && m_map.contains( st ) ) { m_path = m_map[st]+ "/dcim"; m_mode = ListingFolder; }else if ( m_mode == ListingFolder ) { m_mode = ListingFiles; m_path = str; }else if ( m_mode == ListingReFolder ) { m_mode = ListingFolder; } owarn << " StartPath2 " << str << " " << m_path << oendl; return m_path; } QString DCIM_DirLister::currentPath()const { return m_path; } /* * depending on the mode we will either * Find Digital Cameras */ QStringList DCIM_DirLister::folders()const { QStringList lst; switch( m_mode ) { case ListingUnknown: case ListingStart: lst = findCameras(); break; case ListingFolder: lst = findAlbums(); break; case ListingFiles: default: break; } return lst; } QStringList DCIM_DirLister::files()const { if ( m_mode != ListingFiles ) return QStringList(); else return findImages(); } QString DCIM_DirLister::dirUp( const QString& p )const { QString str; switch( m_mode ) { case ListingFiles: m_mode = ListingReFolder; str = PDirLister::dirUp( p ); break; case ListingFolder: m_mode = ListingStart; break; case ListingUnknown: case ListingStart: default: break; } /* down cases */ owarn << " New String " << str << " old path " << m_mode << oendl; m_path = str; return str; } QStringList DCIM_DirLister::findCameras()const { QStringList lst; StorageInfo inf; m_map.clear(); const QList<FileSystem> &list = inf.fileSystems(); QListIterator<FileSystem> it( list ); FileSystem *sys; for ( sys = it.current(); (sys=it.current())!=0 ; ++it ) if ( QFileInfo( sys->path() + "/dcim/" ).exists() ) { lst << sys->name(); m_map.insert( sys->name(), sys->path() ); } if ( lst.isEmpty() ) { m_mode = ListingUnknown; lst << QObject::tr("Error no Camera Dir found"); }else m_mode = ListingStart; return lst; } QStringList DCIM_DirLister::findAlbums()const { QStringList lst = QDir( m_path ).entryList( QDir::Dirs ); lst.remove( "." ); lst.remove( ".." ); return lst; } QStringList DCIM_DirLister::findImages()const { return QDir( m_path ).entryList("*.jpg *.jpeg *.png", QDir::Files ); } void DCIM_DirLister::deleteImage( const QString& fl ) { QFileInfo inf( fl ); QFile::remove( fl ); - QFile::remove( inf.dirPath ()+"/preview"+ + QFile::remove( inf.dirPath ()+"/preview/"+ inf.fileName() ); } void DCIM_DirLister::thumbNail( const QString& _str, int w, int h ) { QFileInfo inf( _str ); QString str = QFileInfo( inf.dirPath()+"/preview"+ inf.fileName() ).exists() ? inf.dirPath()+"/preview"+ inf.fileName() : _str; SlaveMaster::self()->thumbNail( str, w, h ); } QImage DCIM_DirLister::image( const QString& str, Factor f, int m ) { return SlaveMaster::self()->image( str, f, m ); } void DCIM_DirLister::imageInfo( const QString& str ) { SlaveMaster::self()->thumbInfo( str ); } void DCIM_DirLister::fullImageInfo( const QString& str ) { SlaveMaster::self()->imageInfo( str ); } QString DCIM_DirLister::nameToFname( const QString& name )const { return name; } diff --git a/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp b/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp index 4a491e2..5281b75 100644 --- a/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp +++ b/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp @@ -1,208 +1,218 @@ /* * GPLv2 zecke@handhelds.org */ #include "doc_lister.h" #include <lib/slavemaster.h> /* OPIE */ #include <opie2/odebug.h> #include <qpe/config.h> #include <qpe/qpeapplication.h> #include <qpe/applnk.h> #include <opie2/oglobal.h> #include <qtopia/private/categories.h> #include <qtopia/categoryselect.h> using namespace Opie::Core; /* QT */ #include <qdir.h> #include <qfileinfo.h> #include <qtopia/qcopenvelope_qws.h> Doc_DirLister::Doc_DirLister() : PDirLister( "doc_dir_lister" ) { /* connect the signals */ m_catFilter = 0; SlaveMaster* master = SlaveMaster::self(); connect( master, SIGNAL(sig_start()), this, SIGNAL(sig_start()) ); connect( master, SIGNAL(sig_end()), this, SIGNAL(sig_end()) ); connect( master, SIGNAL(sig_thumbInfo(const QString&, const QString&)), this, SLOT(slotThumbInfo(const QString&, const QString&)) ); connect( master, SIGNAL(sig_fullInfo(const QString&, const QString&)), this, SLOT(slotFullInfo(const QString&, const QString&)) ); connect( master, SIGNAL(sig_thumbNail(const QString&, const QPixmap&)), this, SLOT(slotThumbNail(const QString&, const QPixmap&)) ); m_docreads = false; syschannel = new QCopChannel("QPE/System", this); connect(syschannel, SIGNAL(received(const QCString&,const QByteArray&)), this, SLOT(systemMsg(const QCString&,const QByteArray&)) ); } Doc_DirLister::~Doc_DirLister() { } QString Doc_DirLister::defaultPath()const { return QString::null; } bool Doc_DirLister::matchCat(const AppLnk* app)const { if (!app) return false; if (m_catFilter==0 || app->categories().contains(m_catFilter) || m_catFilter == -1 && app->categories().count() == 0 ) { return true; } return false; } QString Doc_DirLister::setStartPath(const QString&) { static const QString Mtype_str("image/jpeg;image/gif;image/bmp;image/png"); if (!m_docreads) { Global::findDocuments(&m_ds,Mtype_str); m_docreads = true; } return QString::null; } QString Doc_DirLister::currentPath()const { return QString::null; } QStringList Doc_DirLister::folders()const { return QStringList(); } QStringList Doc_DirLister::files()const { QStringList out; QListIterator<DocLnk> dit(m_ds.children()); for( ; dit.current(); ++dit) { if (!(*dit)->isValid()) continue; if (!matchCat((*dit))) continue; QString s = (*dit)->name(); s+=char(0); s+=(*dit)->file(); out.append(s); } return out; } -void Doc_DirLister::deleteImage( const QString& ) +void Doc_DirLister::deleteImage( const QString& f) { + /* + * find the file in the set of doclnks + */ + QListIterator<DocLnk> dit(m_ds.children()); + for( ; dit.current(); ++dit) { + if ( f == (*dit)->file() ) { + (*dit)->removeFiles(); + return; + } + } } void Doc_DirLister::thumbNail( const QString& str, int w, int h) { SlaveMaster::self()->thumbNail( str, w, h ); } QImage Doc_DirLister::image( const QString& str, Factor f, int m) { return SlaveMaster::self()->image(str, f, m ); } void Doc_DirLister::imageInfo( const QString& str) { SlaveMaster::self()->thumbInfo( str ); } void Doc_DirLister::fullImageInfo( const QString& str) { SlaveMaster::self()->imageInfo(str); } void Doc_DirLister::slotFullInfo(const QString&f, const QString&t) { emit sig_fullInfo(f, t); } void Doc_DirLister::slotThumbInfo(const QString&f, const QString&t) { emit sig_thumbInfo(f, t); } void Doc_DirLister::slotThumbNail(const QString&f, const QPixmap&p) { emit sig_thumbNail(f, p); } QString Doc_DirLister::nameToFname(const QString&name)const { return name; } QString Doc_DirLister::dirUp( const QString& p ) const{ return p; } QWidget* Doc_DirLister::widget(QWidget*parent) { CategorySelect * catmb = new CategorySelect(parent); Categories cats( 0 ); cats.load( categoryFileName() ); QArray<int> vl( 0 ); catmb->setCategories( vl, "Document View", // No tr "Document View" ); catmb->setRemoveCategoryEdit( TRUE ); catmb->setAllCategories( TRUE ); connect(catmb, SIGNAL(signalSelected(int)), this, SLOT(showCategory(int))); catmb->setCurrentCategory(-2); return catmb; } void Doc_DirLister::showCategory(int which) { odebug<<"Show cat " << which << oendl; m_catFilter = which==-2?0:which; setStartPath(""); odebug<<"Show cat before emit" << oendl; emit sig_reloadDir(); odebug<<"Show cat - emit signal finished" << oendl; } void Doc_DirLister::systemMsg(const QCString &msg, const QByteArray &data) { if ( msg != "linkChanged(QString)"||!m_docreads) { return; } #if 0 // makes big problems on zaurus! QString link; QDataStream stream( data, IO_ReadOnly ); stream >> link; odebug << "Doc_DirLister systemMsg -> linkchanged( " << link << " )" << oendl; if ( link.isNull() || OGlobal::isAppLnkFileName(link) ) { return; } QListIterator<DocLnk> dit(m_ds.children()); bool must_reload = false; bool found = false; while ( dit.current() ) { DocLnk *doc = dit.current(); ++dit; if (doc->linkFile() == link) { found = true; DocLnk* dl = new DocLnk(link); if (dl->fileKnown()) { // changing m_ds.add(dl); } else { delete dl; } if (matchCat(doc) || matchCat(dl)) { must_reload = true; } m_ds.remove( doc ); // remove old link from docLnkSet delete doc; } } if (must_reload) { setStartPath(""); emit sig_reloadDir(); } #endif } |