author | zecke <zecke> | 2002-10-05 20:49:38 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-10-05 20:49:38 (UTC) |
commit | 19c0a4610292a95281a64655cef9c2d695a214dc (patch) (side-by-side diff) | |
tree | dde4afda2629a6e10d545d9492ada7b43e431ee7 /libopie/ofileselector | |
parent | d7f9d00fcc9261db9c4af4f1b4afde9d50e8a2a2 (diff) | |
download | opie-19c0a4610292a95281a64655cef9c2d695a214dc.zip opie-19c0a4610292a95281a64655cef9c2d695a214dc.tar.gz opie-19c0a4610292a95281a64655cef9c2d695a214dc.tar.bz2 |
more steps to make ofileselector modular
We now got the API for a factory so switching should work in future
and we now got a OPixmapProvider which provides us with pixmaps....
So an ImageViewer could install a differen OPixmapProvider
and a different OFileView to make Previewing
work
-rw-r--r-- | libopie/ofileselector/ofilefactory.cpp | 40 | ||||
-rw-r--r-- | libopie/ofileselector/ofilefactory.h | 32 | ||||
-rw-r--r-- | libopie/ofileselector/ofilelistview.cpp | 41 | ||||
-rw-r--r-- | libopie/ofileselector/ofilelistview.h | 20 | ||||
-rw-r--r-- | libopie/ofileselector/ofileview.h | 22 | ||||
-rw-r--r-- | libopie/ofileselector/olister.cpp | 48 | ||||
-rw-r--r-- | libopie/ofileselector/olister.h | 4 | ||||
-rw-r--r-- | libopie/ofileselector/opixmapprovider.cpp | 83 | ||||
-rw-r--r-- | libopie/ofileselector/opixmapprovider.h | 41 |
9 files changed, 284 insertions, 47 deletions
diff --git a/libopie/ofileselector/ofilefactory.cpp b/libopie/ofileselector/ofilefactory.cpp new file mode 100644 index 0000000..f752149 --- a/dev/null +++ b/libopie/ofileselector/ofilefactory.cpp @@ -0,0 +1,40 @@ +#include "ofilefactory.h" + +OFileFactory::OFileFactory() { +} +OFileFactory::~OFileFactory() { +} +QStringList OFileFactory::lister()const { + QStringList list; + QMap<QString, listerFact>::ConstIterator it; + for ( it = m_lister.begin(); it != m_lister.end(); ++it ) { + list << (*it); + } + return list; +} +QStringList OFileFactory::views()const { + QStringList list; + + + return list; +} +OFileView* OFileFactory::view( const QString& name, + OFileSelector*, QWidget* ) { + +} +OLister* OFileFactory::lister(const QString&, OFileSelector*) { + +} +void OFileFactory::addLister( const QString&, listerFact fact ) { + +} +void OFileFactory::addView( const QString&, viewFact fact ) { + + +} +void OFileFactory::removeLister( const QString& ) { + +} +void OFileFactory::removeView( const QString& ) { + +} diff --git a/libopie/ofileselector/ofilefactory.h b/libopie/ofileselector/ofilefactory.h new file mode 100644 index 0000000..96fb00d --- a/dev/null +++ b/libopie/ofileselector/ofilefactory.h @@ -0,0 +1,32 @@ +#ifndef OFILE_FACTORY_H +#define OFILE_FACTORY_H + +#include "olister.h" +#include "ofileview.h" +class OFileFactory { +public: + typedef OLister* (*listerFact)(OFileSelector*); + typedef OFileView* (*viewFact)(OFileSelector*, QWidget*); + OFileFactory(); + ~OFileFactory(); + + QStringList lister()const; + QStringList views()const; + + OFileView* view( const QString& name, OFileSelector*, QWidget* ); + OLister* lister( const QString& name, OFileSelector* ); + + void addLister( const QString&, listerFact fact ); + void addView( const QString&, viewFact ); + + void removeLister( const QString& ); + void removeView( const QString& ); + +private: + QMap<QString, listerFact> m_lister; + QMap<QString, viewFact> m_view; + +}; + + +#endif diff --git a/libopie/ofileselector/ofilelistview.cpp b/libopie/ofileselector/ofilelistview.cpp index bb15764..691bf42 100644 --- a/libopie/ofileselector/ofilelistview.cpp +++ b/libopie/ofileselector/ofilelistview.cpp @@ -45,7 +45,6 @@ void OFileListView::clear() { } -void OFileListView::addFile( const QString&, +void OFileListView::addFile( const QPixmap& pix, + const QString&, QFileInfo* info, bool isSymlink ) { - MimeType type( info->absFilePath() ); - QPixmap pix = type.pixmap(); QString dir; @@ -54,5 +53,2 @@ void OFileListView::addFile( const QString&, - if( pix.isNull() ) - pix = Resource::loadPixmap( "UnknownDocument-14"); - dir = info->dirPath( true ); @@ -66,3 +62,3 @@ void OFileListView::addFile( const QString&, - locked = true; pix = Resource::loadPixmap("locked"); + locked = true; } @@ -74,3 +70,4 @@ void OFileListView::addFile( const QString&, } -void OFileListView::addFile( const QString& /*mime*/, const QString& /*dir*/, +void OFileListView::addFile( const QPixmap&, + const QString& /*mime*/, const QString& /*dir*/, const QString& /*file*/, bool /*isSyml*/ ) { @@ -78,3 +75,3 @@ void OFileListView::addFile( const QString& /*mime*/, const QString& /*dir*/, } -void OFileListView::addDir( const QString&, +void OFileListView::addDir( const QPixmap& pix, const QString&, QFileInfo* info, bool symlink ) { @@ -83,17 +80,2 @@ void OFileListView::addDir( const QString&, QString name; - QPixmap pix; - - if( ( selector()->mode() == OFileSelector::Open && !info->isReadable() ) || - ( selector()->mode() == OFileSelector::Save && !info->isWritable() ) ){ - - locked = true; - - if( symlink ) - pix = selector()->pixmap("symlinkedlocked"); - else - pix = Resource::loadPixmap("lockedfolder"); - - }else { // readable - pix = symlink ? selector()->pixmap("dirsymlink") : Resource::loadPixmap("folder") ; - } @@ -108,3 +90,4 @@ void OFileListView::addDir( const QString&, } -void OFileListView::addDir( const QString& /*mime*/, const QString& /*dir*/, +void OFileListView::addDir( const QPixmap&, + const QString& /*mime*/, const QString& /*dir*/, const QString& /*file*/, bool ) { @@ -112,3 +95,4 @@ void OFileListView::addDir( const QString& /*mime*/, const QString& /*dir*/, } -void OFileListView::addSymlink( const QString& /*mime*/, +void OFileListView::addSymlink( const QPixmap&, + const QString& /*mime*/, QFileInfo* /*info*/, @@ -117,4 +101,5 @@ void OFileListView::addSymlink( const QString& /*mime*/, } -void OFileListView::addSymlink( const QString& /*mime*/, const QString& /*path*/, - const QString& /*file*/, bool /*isSym*/ ) { +void OFileListView::addSymlink(const QPixmap&, + const QString& /*m*/, const QString& /*path*/, + const QString& /*file*/, bool /*isSym*/ ) { diff --git a/libopie/ofileselector/ofilelistview.h b/libopie/ofileselector/ofilelistview.h index a83d70d..c8cdfd1 100644 --- a/libopie/ofileselector/ofilelistview.h +++ b/libopie/ofileselector/ofilelistview.h @@ -4,2 +4,3 @@ #include <qlistview.h> +#include <qpixmap.h> @@ -14,3 +15,4 @@ public: void clear(); - void addFile( const QString& mine, + void addFile( const QPixmap&, + const QString& mine, QFileInfo* info, @@ -18,3 +20,4 @@ public: - void addFile( const QString& mime, + void addFile( const QPixmap&, + const QString& mime, const QString& dir, @@ -23,10 +26,15 @@ public: - void addDir( const QString& mime, + void addDir( const QPixmap&, + const QString& mime, QFileInfo* info, bool = FALSE ); - void addDir( const QString& mime, const QString& dir, + + void addDir( const QPixmap&, + const QString& mime, const QString& dir, const QString& file, bool = FALSE ); - void addSymlink( const QString& mime, + void addSymlink( const QPixmap&, + const QString& mime, QFileInfo* info, bool = FALSE ); - void addSymlink( const QString& mine, const QString& path, + void addSymlink( const QPixmap&, + const QString& mine, const QString& path, const QString& file, bool isSymlink = FALSE ); diff --git a/libopie/ofileselector/ofileview.h b/libopie/ofileselector/ofileview.h index a4b1748..d7ea4a2 100644 --- a/libopie/ofileselector/ofileview.h +++ b/libopie/ofileselector/ofileview.h @@ -55,18 +55,26 @@ public: virtual void clear() = 0; - virtual void addFile(const QString &mine, + virtual void addFile(const QPixmap&, + const QString &mine, QFileInfo *info, bool isSymlink = FALSE ) = 0; - virtual void addFile(const QString& mine, const QString& dir, + + virtual void addFile(const QPixmap&, + const QString& mine, const QString& dir, const QString& file, bool = FALSE ) = 0; - virtual void addDir (const QString &mine, + virtual void addDir (const QPixmap&, + const QString &mine, QFileInfo *info, bool isSymlink = FALSE ) = 0; - virtual void addDir (const QString& mine, const QString& dir, + virtual void addDir (const QPixmap&, + const QString& mine, const QString& dir, const QString& file, bool = FALSE) = 0; - virtual void addSymlink(const QString &mime, + virtual void addSymlink(const QPixmap&, + const QString &mime, QFileInfo *info, bool isSymlink = FALSE ) = 0; - virtual void addSymlink(const QString& mine, + + virtual void addSymlink(const QPixmap&, + const QString& mine, const QString& path, @@ -93,2 +101,4 @@ protected: void changedDir(const QDir & ); + + /* updates the file name line of the FileSelector */ void updateLine( const QString& ); diff --git a/libopie/ofileselector/olister.cpp b/libopie/ofileselector/olister.cpp index 6c43043..b6b03cd 100644 --- a/libopie/ofileselector/olister.cpp +++ b/libopie/ofileselector/olister.cpp @@ -2,2 +2,3 @@ #include "ofileview.h" +#include "opixmapprovider.h" #include "ofileselector.h" @@ -8,4 +9,10 @@ OLister::OLister( OFileSelector* view) { + m_prov = new OPixmapProvider( view ); } OLister::~OLister() { + delete m_prov; +} +void OLister::setPixmapProvider( OPixmapProvider* prov ) { + delete m_prov; + m_prov = prov; } @@ -20,3 +27,8 @@ void OLister::addFile( const QString& mine, bool isSymlink ) { - view()->currentView()->addFile( mine, + int t = isSymlink ? OPixmapProvider::File | OPixmapProvider::Symlink : + OPixmapProvider::File; + QPixmap pix = provider()->pixmap(t, mine, + info); + view()->currentView()->addFile( pix, + mine, info, @@ -28,3 +40,8 @@ void OLister::addFile( const QString& mine, bool isSymlink ) { - view()->currentView()->addFile( mine, + int t = isSymlink ? OPixmapProvider::File | OPixmapProvider::Symlink : + OPixmapProvider::File; + + QPixmap pix = provider()->pixmap(t, mine, path, file ); + view()->currentView()->addFile( pix, + mine, path, @@ -36,4 +53,7 @@ void OLister::addDir( const QString& mine, bool isSymlink ) { - - view()->currentView()->addDir( mine, + int t = isSymlink ? OPixmapProvider::Dir | OPixmapProvider::Symlink : + OPixmapProvider::Dir; + QPixmap pix = provider()->pixmap(t, mine, info ); + view()->currentView()->addDir( pix, + mine, info, @@ -45,3 +65,9 @@ void OLister::addDir( const QString& mine, bool isSymlink ) { - view()->currentView()->addDir( mine, + + int t = isSymlink ? OPixmapProvider::Dir | OPixmapProvider::Symlink : + OPixmapProvider::Dir; + QPixmap pix = provider()->pixmap(t, mine, path, dir ); + + view()->currentView()->addDir( pix, + mine, path, @@ -53,3 +79,5 @@ void OLister::addSymlink( const QString& mine, bool isSymlink ) { - view()->currentView()->addSymlink( mine, + QPixmap pix = provider()->pixmap( OPixmapProvider::Symlink, mine, info ); + view()->currentView()->addSymlink( pix, + mine, info, @@ -61,3 +89,6 @@ void OLister::addSymlink( const QString& mine, bool isSymlink ) { - view()->currentView()->addSymlink( mine, + QPixmap pix = provider()->pixmap( OPixmapProvider::Symlink, mine, + path, name ); + view()->currentView()->addSymlink( pix, + mine, path, @@ -69,2 +100,5 @@ OFileSelector* OLister::view() { } +OPixmapProvider* OLister::provider() { + return m_prov; +} bool OLister::compliesMime( const QString& mime ) { diff --git a/libopie/ofileselector/olister.h b/libopie/ofileselector/olister.h index ef61cab..0885525 100644 --- a/libopie/ofileselector/olister.h +++ b/libopie/ofileselector/olister.h @@ -8,2 +8,3 @@ +class OPixmapProvider; class OFileSelector; @@ -26,2 +27,3 @@ public: virtual QMap<QString, QStringList> mimeTypes( const QString& dir ) = 0; + void setPixmapProvider( OPixmapProvider* ); @@ -53,4 +55,6 @@ protected: OFileSelector* view(); + OPixmapProvider* provider(); private: OFileSelector* m_view; + OPixmapProvider* m_prov; diff --git a/libopie/ofileselector/opixmapprovider.cpp b/libopie/ofileselector/opixmapprovider.cpp new file mode 100644 index 0000000..b363e01 --- a/dev/null +++ b/libopie/ofileselector/opixmapprovider.cpp @@ -0,0 +1,83 @@ +#include <qfileinfo.h> + +#include <qpe/mimetype.h> +#include <qpe/resource.h> + +#include "opixmapprovider.h" + + + +OPixmapProvider::OPixmapProvider( OFileSelector* sel ) + : m_sel( sel ){ +} +OPixmapProvider::~OPixmapProvider() { +} +QPixmap OPixmapProvider::pixmap( int t, const QString& , + QFileInfo* info, bool isL ) { + QPixmap pix; + bool sy = t & Symlink ? true : false; + switch (t ) { + case File: + pix = file( info, sy, isL ); + break; + case Dir: + pix = dir( info, sy, isL ); + break; + case Symlink: + pix = sym( info, isL ); + break; + } + return pix; + +} +QPixmap OPixmapProvider::pixmap( int t, const QString& mime, + const QString& dir, const QString& file, + bool isL) { + QFileInfo *inf = new QFileInfo( dir + "/" + file ); + QPixmap pix = pixmap( t, mime, inf, isL ); + delete inf; + return pix; +} +OFileSelector* OPixmapProvider::selector() { + return m_sel; +} +QPixmap OPixmapProvider::file( QFileInfo* inf, bool , bool ) { + MimeType type( inf->absFilePath() ); + QPixmap pix = type.pixmap(); + + if ( pix.isNull() ) + pix = Resource::loadPixmap( "UnknownDocument-14"); + + if ( (selector()->mode() == OFileSelector::Open && + !inf->isReadable() ) || + (selector()->mode() == OFileSelector::Save && + !inf->isWritable() ) ) { + pix = Resource::loadPixmap( "locked" ); + } + return pix; + +} +QPixmap OPixmapProvider::dir( QFileInfo* inf, bool sym, bool ) { + QPixmap pix; + /* + * look at selector()->mode() and determine + * if a dir is locked + */ + if ( (selector()->mode() == OFileSelector::Open && + !inf->isReadable() ) || + (selector()->mode() == OFileSelector::Save && + !inf->isWritable() ) ) { + if ( sym ) + pix = selector()->pixmap("symlinkedlocked"); + else + pix = Resource::loadPixmap("lockedfolder"); + }else { + pix = sym ? selector()->pixmap("lockedfolder") : + Resource::loadPixmap("folder"); + + } + return pix; +} +QPixmap OPixmapProvider::sym( QFileInfo* , bool ) { + return Resource::loadPixmap("opie/symlink"); +} diff --git a/libopie/ofileselector/opixmapprovider.h b/libopie/ofileselector/opixmapprovider.h new file mode 100644 index 0000000..2165fdb --- a/dev/null +++ b/libopie/ofileselector/opixmapprovider.h @@ -0,0 +1,41 @@ +#ifndef OPIE_PIXMPAP_PROVIDER +#define OPIE_PIXMPAP_PROVIDER + +#include <qpixmap.h> + +#include "ofileselector.h" + +/** + * This is a basic interface for a Pixmap provider + * it provides pixmaps for a URL + * So the OLocalLister provides mimetype icons + */ +class QFileInfo; +class OPixmapProvider { +public: + /* you can or these + * but File | Dir would be insane ;) + */ + enum Type { File = 0, Dir = 1, Symlink = 2 }; + OPixmapProvider( OFileSelector* sel ); + virtual ~OPixmapProvider(); + + virtual QPixmap pixmap( int t, const QString& mime, QFileInfo*, + bool isLocked = FALSE ); + virtual QPixmap pixmap( int t, const QString& mime, + const QString& dir, const QString& file, + bool isLocked = FALSE ); + +protected: + OFileSelector* selector(); +private: + QPixmap file( QFileInfo*, + bool sym, bool is ); + QPixmap dir ( QFileInfo*, + bool sym, bool is ); + QPixmap sym ( QFileInfo*, + bool is ); + OFileSelector* m_sel; +}; + +#endif |