author | alwin <alwin> | 2004-11-10 23:42:14 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-11-10 23:42:14 (UTC) |
commit | 79060b829e9231cddc0acfe2dd2b7da3f13dfbc4 (patch) (side-by-side diff) | |
tree | 0e7a6a344bfce1aaf76bedd939a9765014f6ec09 /noncore/graphics/opie-eye/impl | |
parent | a57e46d9b290712fa1ff106a1be133f4f9751a96 (diff) | |
download | opie-79060b829e9231cddc0acfe2dd2b7da3f13dfbc4.zip opie-79060b829e9231cddc0acfe2dd2b7da3f13dfbc4.tar.gz opie-79060b829e9231cddc0acfe2dd2b7da3f13dfbc4.tar.bz2 |
lister modules can insert special widgets.
doc_dirlister will insert a category select widget
Diffstat (limited to 'noncore/graphics/opie-eye/impl') (more/less context) (show whitespace changes)
8 files changed, 69 insertions, 3 deletions
diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.cpp b/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.cpp index e55c27a..3f6044f 100644 --- a/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.cpp +++ b/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.cpp @@ -26,3 +26,8 @@ PDirLister* DCIM_DirView::dirLister()const { return m_lister; } + +QWidget* DCIM_DirView::widget(QWidget*) +{ + return 0L; +} diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.h b/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.h index 7fc38ec..8394b34 100644 --- a/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.h +++ b/noncore/graphics/opie-eye/impl/dcim/dcim_dirview.h @@ -17,7 +17,7 @@ struct DCIM_DirView : public PDirView { PInterfaceInfo* interfaceInfo()const; PDirLister * dirLister ()const; - + virtual QWidget* widget(QWidget*); private: mutable PDirLister *m_lister; mutable PInterfaceInfo *m_info ; diff --git a/noncore/graphics/opie-eye/impl/dir/dir_dirview.cpp b/noncore/graphics/opie-eye/impl/dir/dir_dirview.cpp index fc502d4..9c2c840 100644 --- a/noncore/graphics/opie-eye/impl/dir/dir_dirview.cpp +++ b/noncore/graphics/opie-eye/impl/dir/dir_dirview.cpp @@ -31,3 +31,8 @@ PDirLister* Dir_DirView::dirLister()const{ } return m_lister; } + +QWidget* Dir_DirView::widget(QWidget*) +{ + return 0L; +}
\ No newline at end of file diff --git a/noncore/graphics/opie-eye/impl/dir/dir_dirview.h b/noncore/graphics/opie-eye/impl/dir/dir_dirview.h index 89cf6c9..ae53a5c 100644 --- a/noncore/graphics/opie-eye/impl/dir/dir_dirview.h +++ b/noncore/graphics/opie-eye/impl/dir/dir_dirview.h @@ -14,6 +14,7 @@ struct Dir_DirView : public PDirView { PInterfaceInfo* interfaceInfo()const; PDirLister* dirLister()const; + virtual QWidget* widget(QWidget*); private: bool m_cfg : 1; bool m_recursive:1; diff --git a/noncore/graphics/opie-eye/impl/doc/doc_dirview.cpp b/noncore/graphics/opie-eye/impl/doc/doc_dirview.cpp index 0d6e25f..2cc897b 100644 --- a/noncore/graphics/opie-eye/impl/doc/doc_dirview.cpp +++ b/noncore/graphics/opie-eye/impl/doc/doc_dirview.cpp @@ -26,3 +26,10 @@ PDirLister* Doc_DirView::dirLister()const{ m_lister = new Doc_DirLister(); return m_lister; } + +QWidget* Doc_DirView::widget(QWidget*parent) +{ + if (!m_lister) + dirLister(); + return m_lister->widget(parent); +} diff --git a/noncore/graphics/opie-eye/impl/doc/doc_dirview.h b/noncore/graphics/opie-eye/impl/doc/doc_dirview.h index 3a2fd71..55ba6f2 100644 --- a/noncore/graphics/opie-eye/impl/doc/doc_dirview.h +++ b/noncore/graphics/opie-eye/impl/doc/doc_dirview.h @@ -7,6 +7,7 @@ #include <iface/dirview.h> +class Doc_DirLister; struct Doc_DirView : public PDirView { Doc_DirView( const Config& ); @@ -14,9 +15,10 @@ struct Doc_DirView : public PDirView { PInterfaceInfo* interfaceInfo()const; PDirLister* dirLister()const; + QWidget* widget(QWidget*parent); private: bool m_cfg : 1; - mutable PDirLister* m_lister; + mutable Doc_DirLister* m_lister; mutable PInterfaceInfo *m_info; }; diff --git a/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp b/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp index 722fb95..d60149f 100644 --- a/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp +++ b/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp @@ -12,6 +12,9 @@ #include <qpe/qpeapplication.h> #include <qpe/applnk.h> +#include <qtopia/private/categories.h> +#include <qtopia/categoryselect.h> + using namespace Opie::Core; /* QT */ @@ -22,6 +25,7 @@ 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()) ); @@ -40,6 +44,15 @@ QString Doc_DirLister::defaultPath()const { return QString::null; } +bool Doc_DirLister::matchCat(const AppLnk* app) +{ + 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_namemap.isEmpty()) { @@ -47,7 +60,8 @@ QString Doc_DirLister::setStartPath(const QString&) { Global::findDocuments(&ds,Mtype_str); QListIterator<DocLnk> dit(ds.children()); for( ; dit.current(); ++dit) { -// if (! (*dit)->isValid()) continue; + if (! (*dit)->isValid()) continue; + if (!matchCat((*dit))) continue; m_namemap[(*dit)->name()]=(*dit)->file(); m_filemap[(*dit)->file()]=(*dit)->name(); } @@ -147,3 +161,28 @@ QString Doc_DirLister::nameToFname(const QString&name)const 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) +{ + Categories cat; + cat.load( categoryFileName() ); + m_catFilter = which==-2?0:which; + m_namemap.clear(); + setStartPath(""); + emit sig_reloadDir(); +} diff --git a/noncore/graphics/opie-eye/impl/doc/doc_lister.h b/noncore/graphics/opie-eye/impl/doc/doc_lister.h index 5884a35..e148ac0 100644 --- a/noncore/graphics/opie-eye/impl/doc/doc_lister.h +++ b/noncore/graphics/opie-eye/impl/doc/doc_lister.h @@ -11,6 +11,8 @@ #include <qmap.h> class Config; +class AppLnk; + class Doc_DirLister : public PDirLister { Q_OBJECT public: @@ -30,13 +32,18 @@ public: void fullImageInfo( const QString& ); virtual QString nameToFname(const QString&name)const; QString dirUp( const QString& )const; + QWidget* widget(QWidget*parent); private: QMap<QString,QString> m_namemap,m_filemap; + int m_catFilter; + bool matchCat(const AppLnk* app); + protected slots: virtual void slotFullInfo(const QString&, const QString&); virtual void slotThumbInfo(const QString&, const QString&); virtual void slotThumbNail(const QString&, const QPixmap&); + virtual void showCategory(int); }; #endif |