-rw-r--r-- | libopie/ofileselector.cc | 132 | ||||
-rw-r--r-- | libopie/ofileselector.h | 12 |
2 files changed, 132 insertions, 12 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc index c9abde1..b911d37 100644 --- a/libopie/ofileselector.cc +++ b/libopie/ofileselector.cc @@ -2,3 +2,3 @@ =. This file is part of the OPIE Project - .=l. Copyright (c) 2002 <> + .=l. Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> .>+-= @@ -38,3 +38,6 @@ #include <qlabel.h> +#include <qheader.h> +#include <qdir.h> +#include <qpe/qpeapplication.h> #include <qpe/fileselector.h> @@ -42,2 +45,3 @@ #include <qpe/global.h> +#include <qpe/mimetype.h> @@ -270,5 +274,77 @@ void OFileSelector::updateLay() } +// let's update the mimetypes. Use the current mimefilter for the 2nd QDir retrieve +// insert QListViewItems with the right options +bool OFileSelector::compliesMime(const QString &path, const QString &mime ) +{ + if( mime == "All" ) + return true; + MimeType type( path ); + if( type.id() == mime ) + return true; + return false; +} + void OFileSelector::reparse() { + if(m_View== 0) + return; + + m_View->clear(); + + QDir dir( m_currentDir ); + QString currMime =m_mimeCheck->currentText(); + // update the mimetype now + if( m_autoMime ) { + m_mimetypes.clear(); + m_mimeCheck->clear(); + dir.setFilter( QDir::Files | QDir::Readable ); + dir.setSorting(QDir::Size ); + const QFileInfoList *list = dir.entryInfoList(); + QFileInfoListIterator it( *list ); + QFileInfo *fi; + while( (fi=it.current()) ){ + if(fi->extension() == QString::fromLatin1("desktop") ){ + ++it; + continue; + } + MimeType type(fi->filePath() ); + if( !m_mimetypes.contains( type.id() ) ) + m_mimetypes.append( type.id() ); + + ++it; + } + m_mimeCheck->insertStringList(m_mimetypes ); + // set it to the current mimetype + }; + dir.setFilter(QDir::All ); + dir.setSorting(QDir::Name | QDir::DirsFirst ); + const QFileInfoList *list = dir.entryInfoList(); + QFileInfoListIterator it( *list ); + QFileInfo *fi; + while( (fi=it.current()) ){ + if(fi->isSymLink() ){ + QString file = fi->readLink(); + for(int i=0; i<=4; i++ ){ // prepend from dos + QFileInfo info( file ); + if( !info.exists() ){ + addSymlink(m_currentDir, info.fileName(), TRUE ); + break; + }else if( info.isDir() ){ + //addDir( ); + }else if( info.isFile() ){ + + }else if( info.isSymLink() ){ + file = info.readLink(); + }else if( i == 4 ){ // just insert it and have the symlink symbol + addSymlink(m_currentDir, info.fileName() ); + } + } + }else if( fi->isDir() ){ + + }else if( fi->isFile() ) { // file ? + + } + ++it; + } } @@ -367,2 +443,5 @@ void OFileSelector::slotViewCheck(const QString &view ){ // check if we're the current widget and return + if( m_View != 0) // delete 0 shouldn't crash but it did :( + delete m_View; + m_View = 0; delete m_select; @@ -375,11 +454,12 @@ void OFileSelector::slotViewCheck(const QString &view ){ }else if(view == QString::fromLatin1("Files") ){ - if( m_select != 0 ){ - // remove from the stack - delete m_select; - m_select = 0; - m_selector = EXTENDED; - // create the ListView or IconView - - reparse(); - } + // remove from the stack + delete m_select; + m_select = 0; + delete m_View; + m_View = 0; + m_selector = EXTENDED; + // create the ListView or IconView + initializeListView(); + + reparse(); }else if(view == QString::fromLatin1("All Files") ) { @@ -388,4 +468,6 @@ void OFileSelector::slotViewCheck(const QString &view ){ m_select = 0; + delete m_View; + m_View = 0; m_selector = EXTENDED_ALL; - + initializeListView(); reparse(); @@ -409,3 +491,3 @@ void OFileSelector::updateMimes() // lets check which mode is active }else{ - + // should be allreday updatet @@ -413 +495,27 @@ void OFileSelector::updateMimes() // lets check which mode is active }; +void OFileSelector::initializeListView() +{ + m_View = new QListView(m_stack, "Extended view" ); + m_stack->addWidget( m_View, EXTENDED ); + m_stack->raiseWidget( EXTENDED ); + QPEApplication::setStylusOperation( m_View->viewport(),QPEApplication::RightOnHold); + // set up the stuff + // Pixmap Name Date Size mime + //(m_View->header() )->hide(); + //m_View->setRootIsDecorated(false); + m_View->addColumn(" "); + m_View->addColumn(tr("Name") ); + m_View->addColumn(tr("Size") ); + m_View->addColumn(tr("Date"), 60 ); + m_View->addColumn(tr("Mime Type") ); + QHeader *header = m_View->header(); + header->hide(); +}; + + + + + + + + diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h index 757a960..a90219f 100644 --- a/libopie/ofileselector.h +++ b/libopie/ofileselector.h @@ -60,2 +60,4 @@ class QHBoxLayout; class QVBoxLayout; +class QPopupMenu; + @@ -104,2 +106,4 @@ class OFileSelector : public QWidget { void setMode( int ); + void setShowDirs(bool dir ) { }; + bool showDirs() {bool turn; return turn; } int mode()const { return m_mode; }; @@ -108,2 +112,4 @@ class OFileSelector : public QWidget { QString selectedName( ); + void setPopupMenu( const QPopupMenu * ); + const DocLnk* selectedDocument()const; @@ -164,2 +170,6 @@ class OFileSelector : public QWidget { private: + // implementation todo + virtual void addFile(const QString &path, const QString &name, bool symlink = FALSE ) {}; + virtual void addDir( const QString &path, const QString &dir , bool symlink = FALSE ){}; + virtual void addSymlink(const QString &path, const QString &name, bool broken = FALSE ){}; void delItems(); @@ -168,2 +178,4 @@ class OFileSelector : public QWidget { void initializeChooser(); + void initializeListView(); + bool compliesMime(const QString &path, const QString &mime); |