summaryrefslogtreecommitdiff
path: root/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp
Side-by-side diff
Diffstat (limited to 'noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp181
1 files changed, 181 insertions, 0 deletions
diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp b/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp
new file mode 100644
index 0000000..3c3d702
--- a/dev/null
+++ b/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp
@@ -0,0 +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"+
+ 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;
+}