summaryrefslogtreecommitdiff
path: root/noncore/graphics/opie-eye/impl/dcim
Unidiff
Diffstat (limited to 'noncore/graphics/opie-eye/impl/dcim') (more/less context) (show whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/impl/dcim/dcim.pro10
-rw-r--r--noncore/graphics/opie-eye/impl/dcim/dcim_dirview.cpp28
-rw-r--r--noncore/graphics/opie-eye/impl/dcim/dcim_dirview.h26
-rw-r--r--noncore/graphics/opie-eye/impl/dcim/dcim_ifaceinfo.cpp22
-rw-r--r--noncore/graphics/opie-eye/impl/dcim/dcim_ifaceinfo.h22
-rw-r--r--noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp181
-rw-r--r--noncore/graphics/opie-eye/impl/dcim/dcim_lister.h71
7 files changed, 360 insertions, 0 deletions
diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim.pro b/noncore/graphics/opie-eye/impl/dcim/dcim.pro
new file mode 100644
index 0000000..a8e8f05
--- a/dev/null
+++ b/noncore/graphics/opie-eye/impl/dcim/dcim.pro
@@ -0,0 +1,10 @@
1HEADERS += impl/dcim/dcim_dirview.h \
2 impl/dcim/dcim_ifaceinfo.h \
3 impl/dcim/dcim_lister.h
4
5
6
7SOURCES += impl/dcim/dcim_dirview.cpp \
8 impl/dcim/dcim_ifaceinfo.cpp \
9 impl/dcim/dcim_lister.cpp
10
diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.cpp b/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.cpp
new file mode 100644
index 0000000..e55c27a
--- a/dev/null
+++ b/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.cpp
@@ -0,0 +1,28 @@
1#include "dcim_dirview.h"
2
3#include "dcim_lister.h"
4#include "dcim_ifaceinfo.h"
5
6PHUNK_VIEW_INTERFACE( "Digital Camera", DCIM_DirView );
7
8DCIM_DirView::DCIM_DirView( const Config& cfg )
9 : PDirView( cfg ), m_lister( 0l ), m_info( 0l )
10{}
11
12DCIM_DirView::~DCIM_DirView()
13{}
14
15PInterfaceInfo* DCIM_DirView::interfaceInfo()const {
16 if ( !m_info )
17 m_info = new DCIM_InterfaceInfo;
18
19 return m_info;
20}
21
22
23PDirLister* DCIM_DirView::dirLister()const {
24 if ( !m_lister )
25 m_lister = new DCIM_DirLister();
26
27 return m_lister;
28}
diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.h b/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.h
new file mode 100644
index 0000000..7fc38ec
--- a/dev/null
+++ b/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.h
@@ -0,0 +1,26 @@
1/*
2 * GPLv2 only zecke@handhelds.org
3 */
4
5#ifndef DCIM_DIR_VIEW_H
6#define DCIM_DIR_VIEW_H
7
8#include <iface/dirview.h>
9
10/*
11 * Implementation for USB Host Digital Cameras
12 * like my Casio QV 500 and boring Yakumo
13 */
14struct DCIM_DirView : public PDirView {
15 DCIM_DirView( const Config& );
16 ~DCIM_DirView();
17
18 PInterfaceInfo* interfaceInfo()const;
19 PDirLister * dirLister ()const;
20
21private:
22 mutable PDirLister *m_lister;
23 mutable PInterfaceInfo *m_info ;
24};
25
26#endif
diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim_ifaceinfo.cpp b/noncore/graphics/opie-eye/impl/dcim/dcim_ifaceinfo.cpp
new file mode 100644
index 0000000..ca94dc5
--- a/dev/null
+++ b/noncore/graphics/opie-eye/impl/dcim/dcim_ifaceinfo.cpp
@@ -0,0 +1,22 @@
1/*
2 * GPLv2
3 * zecke@handhelds.org
4 */
5
6
7#include "dcim_ifaceinfo.h"
8
9#include <qobject.h>
10
11DCIM_InterfaceInfo::DCIM_InterfaceInfo() {}
12DCIM_InterfaceInfo::~DCIM_InterfaceInfo() {}
13
14QString DCIM_InterfaceInfo::name()const {
15 return QObject::tr( "Digital Camera View" );
16}
17
18QWidget* DCIM_InterfaceInfo::configWidget( const Config& ) {
19 return 0l;
20}
21
22void DCIM_InterfaceInfo::writeConfig( QWidget*, Config& ) {}
diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim_ifaceinfo.h b/noncore/graphics/opie-eye/impl/dcim/dcim_ifaceinfo.h
new file mode 100644
index 0000000..6396047
--- a/dev/null
+++ b/noncore/graphics/opie-eye/impl/dcim/dcim_ifaceinfo.h
@@ -0,0 +1,22 @@
1/*
2 * GPLv2
3 * zecke@handhelds.org
4 */
5
6#ifndef DCIM_IFACE_INFO_H
7#define DCIM_IFACE_INFO_H
8
9#include <iface/ifaceinfo.h>
10
11class DCIM_InterfaceInfo : public PInterfaceInfo {
12public:
13 DCIM_InterfaceInfo();
14 virtual ~DCIM_InterfaceInfo();
15
16 QString name()const;
17 QWidget* configWidget( const Config& );
18 void writeConfig( QWidget* wid, Config& );
19};
20
21
22#endif
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 @@
1/*
2 * GPLv2 zecke@handhelds.org
3 */
4
5#include "dcim_lister.h"
6#include <lib/slavemaster.h>
7
8#include <opie2/odebug.h>
9#include <qpe/storage.h>
10
11#include <qdir.h>
12#include <qfileinfo.h>
13#include <qimage.h>
14
15DCIM_DirLister::DCIM_DirLister()
16 : PDirLister( "dcim_dirlister" )
17{
18
19 /*
20 * create a SlaveMaster and lets connect the signal of
21 * it to our interface
22 */
23 SlaveHelper::slaveConnectSignals( this );
24 m_mode = ListingUnknown;
25}
26
27DCIM_DirLister::~DCIM_DirLister() {}
28
29QString DCIM_DirLister::defaultPath()const {
30 m_mode = ListingStart;
31 return QString::null;
32}
33
34QString DCIM_DirLister::setStartPath( const QString& str) {
35 /**
36 * IconView adds a '/' to path. Lets strip
37 * that.
38 */
39 QString st = str.mid( 1 );
40 if ( ListingStart == m_mode && m_map.contains( st ) ) {
41 m_path = m_map[st]+ "/dcim";
42 m_mode = ListingFolder;
43 }else if ( m_mode == ListingFolder ) {
44 m_mode = ListingFiles;
45 m_path = str;
46 }else if ( m_mode == ListingReFolder ) {
47 m_mode = ListingFolder;
48 }
49
50 owarn << " StartPath2 " << str << " " << m_path << oendl;
51
52 return m_path;
53}
54
55
56QString DCIM_DirLister::currentPath()const {
57 return m_path;
58}
59
60/*
61 * depending on the mode we will either
62 * Find Digital Cameras
63 */
64QStringList DCIM_DirLister::folders()const {
65 QStringList lst;
66
67 switch( m_mode ) {
68 case ListingUnknown:
69 case ListingStart:
70 lst = findCameras();
71 break;
72 case ListingFolder:
73 lst = findAlbums();
74 break;
75 case ListingFiles:
76 default:
77 break;
78 }
79
80 return lst;
81}
82
83QStringList DCIM_DirLister::files()const {
84 if ( m_mode != ListingFiles )
85 return QStringList();
86 else
87 return findImages();
88}
89
90QString DCIM_DirLister::dirUp( const QString& p )const {
91 QString str;
92
93 switch( m_mode ) {
94 case ListingFiles:
95 m_mode = ListingReFolder;
96 str = PDirLister::dirUp( p );
97 break;
98 case ListingFolder:
99 m_mode = ListingStart;
100 break;
101 case ListingUnknown:
102 case ListingStart:
103 default:
104 break;
105 }
106
107 /* down cases */
108 owarn << " New String " << str << " old path " << m_mode << oendl;
109 m_path = str;
110 return str;
111}
112
113
114QStringList DCIM_DirLister::findCameras()const {
115 QStringList lst;
116 StorageInfo inf;
117
118 m_map.clear();
119
120 const QList<FileSystem> &list = inf.fileSystems();
121 QListIterator<FileSystem> it( list );
122
123
124 FileSystem *sys;
125 for ( sys = it.current(); (sys=it.current())!=0 ; ++it )
126 if ( QFileInfo( sys->path() + "/dcim/" ).exists() ) {
127 lst << sys->name();
128 m_map.insert( sys->name(), sys->path() );
129 }
130
131 if ( lst.isEmpty() ) {
132 m_mode = ListingUnknown;
133 lst << QObject::tr("Error no Camera Dir found");
134 }else
135 m_mode = ListingStart;
136
137 return lst;
138}
139
140QStringList DCIM_DirLister::findAlbums()const {
141 QStringList lst = QDir( m_path ).entryList( QDir::Dirs );
142 lst.remove( "." );
143 lst.remove( ".." );
144
145 return lst;
146}
147
148QStringList DCIM_DirLister::findImages()const {
149 return QDir( m_path ).entryList("*.jpg *.jpeg *.png", QDir::Files );
150}
151
152void DCIM_DirLister::deleteImage( const QString& fl ) {
153 QFileInfo inf( fl );
154 QFile::remove( fl );
155 QFile::remove( inf.dirPath ()+"/preview"+
156 inf.fileName() );
157}
158
159void DCIM_DirLister::thumbNail( const QString& _str, int w, int h ) {
160 QFileInfo inf( _str );
161 QString str = QFileInfo( inf.dirPath()+"/preview"+ inf.fileName() ).exists() ?
162 inf.dirPath()+"/preview"+ inf.fileName() : _str;
163
164 SlaveMaster::self()->thumbNail( str, w, h );
165}
166
167QImage DCIM_DirLister::image( const QString& str, Factor f, int m ) {
168 return SlaveMaster::self()->image( str, f, m );
169}
170
171void DCIM_DirLister::imageInfo( const QString& str ) {
172 SlaveMaster::self()->thumbInfo( str );
173}
174
175void DCIM_DirLister::fullImageInfo( const QString& str ) {
176 SlaveMaster::self()->imageInfo( str );
177}
178
179QString DCIM_DirLister::nameToFname( const QString& name )const {
180 return name;
181}
diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim_lister.h b/noncore/graphics/opie-eye/impl/dcim/dcim_lister.h
new file mode 100644
index 0000000..d0a2031
--- a/dev/null
+++ b/noncore/graphics/opie-eye/impl/dcim/dcim_lister.h
@@ -0,0 +1,71 @@
1/*
2 * GPLv2 zecke@handhelds.org
3 */
4
5#ifndef DCIM_LISTER_H
6#define DCIM_LISTER_H
7
8#include <iface/dirlister.h>
9
10#include <qmap.h>
11
12class Config;
13
14/**
15 * The DirLister is responsible for
16 * telling the GUI about files and folders
17 * and to load them.
18 * The DCIM is a special FileSystem lister
19 * in the that it starts with an overview
20 * of available 'Cameras'. It looks via 'Storage'
21 * for paths including a 'dcim' directory.
22 * And offers these as folders.
23 * Then it only lists Images. It tries to use
24 * the 'preview' directory to generate a thumbnail
25 * but will use the full image for the QImage
26 * call.
27 *
28 */
29class DCIM_DirLister : public PDirLister {
30 Q_OBJECT
31public:
32 enum ListMode{
33 ListingUnknown = -1,
34 ListingStart=1, /* give an overview over files */
35 ListingFolder, /* give access to albums */
36 ListingFiles, /* list the content of the album */
37 ListingReFolder
38 };
39 DCIM_DirLister();
40 ~DCIM_DirLister();
41
42 QString defaultPath()const;
43 QString setStartPath( const QString& );
44
45 QString currentPath()const;
46 QStringList folders()const;
47 QStringList files() const;
48
49 void deleteImage( const QString& );
50
51 void thumbNail( const QString&, int, int );
52 QImage image( const QString&, Factor, int );
53 void imageInfo( const QString& );
54 void fullImageInfo( const QString& );
55
56
57 virtual QString nameToFname( const QString& )const;
58 virtual QString dirUp(const QString& )const;
59
60private:
61 QStringList findCameras()const;
62 QStringList findAlbums ()const;
63 QStringList findImages ()const;
64
65private:
66 mutable QString m_path;
67 mutable ListMode m_mode;
68 mutable QMap<QString, QString> m_map;
69};
70
71#endif