From 3ba494eb02e72e1f9a732c46ec8085e843f01eca Mon Sep 17 00:00:00 2001 From: zecke Date: Mon, 28 Oct 2002 19:55:18 +0000 Subject: This will probably not compile.. i did not even try to compile it on my machine I changed the data flow to be more extandable the Olister class is now playing a bigger role it's dependant on doing some assembly of the filepath and changedirs. It now has also to take care of the location bar --- (limited to 'libopie') diff --git a/libopie/ofileselector/ofilelistview.cpp b/libopie/ofileselector/ofilelistview.cpp index 691bf42..9cfdc48 100644 --- a/libopie/ofileselector/ofilelistview.cpp +++ b/libopie/ofileselector/ofilelistview.cpp @@ -46,6 +46,7 @@ void OFileListView::clear() { void OFileListView::addFile( const QPixmap& pix, const QString&, QFileInfo* info, + const QString& /*extra*/, bool isSymlink ) { QString dir; QString name; @@ -70,11 +71,15 @@ void OFileListView::addFile( const QPixmap& pix, } void OFileListView::addFile( const QPixmap&, const QString& /*mime*/, const QString& /*dir*/, - const QString& /*file*/, bool /*isSyml*/ ) { + const QString& /*file*/, + const QString& /*extra*/, + bool /*isSyml*/ ) { } void OFileListView::addDir( const QPixmap& pix, const QString&, - QFileInfo* info, bool symlink ) { + QFileInfo* info, + const QString& /*extra */, + bool symlink ) { bool locked = false; QString name; @@ -90,18 +95,23 @@ void OFileListView::addDir( const QPixmap& pix, const QString&, } void OFileListView::addDir( const QPixmap&, const QString& /*mime*/, const QString& /*dir*/, - const QString& /*file*/, bool ) { + const QString& /*file*/, + const QString& /*extra*/, + bool ) { } void OFileListView::addSymlink( const QPixmap&, const QString& /*mime*/, QFileInfo* /*info*/, + const QString& /*extra*/, bool /*isSym*/ ) { } void OFileListView::addSymlink(const QPixmap&, const QString& /*m*/, const QString& /*path*/, - const QString& /*file*/, bool /*isSym*/ ) { + const QString& /*file*/, + const QString& /*extra*/, + bool /*isSym*/ ) { } void OFileListView::cd( const QString& ) { @@ -127,7 +137,7 @@ QString OFileListView::selectedPath()const { } QStringList OFileListView::selectedPaths()const { QStringList list; - list << selectedPath(); +b list << selectedPath(); return list; } int OFileListView::fileCount() { diff --git a/libopie/ofileselector/ofilelistview.h b/libopie/ofileselector/ofilelistview.h index c8cdfd1..0f625ec 100644 --- a/libopie/ofileselector/ofilelistview.h +++ b/libopie/ofileselector/ofilelistview.h @@ -16,28 +16,37 @@ public: void addFile( const QPixmap&, const QString& mine, QFileInfo* info, + const QString& extra = QString::null, bool isSymlink = FALSE ); void addFile( const QPixmap&, const QString& mime, const QString& dir, const QString& file, + const QString& extra = QString::null, bool = false ); void addDir( const QPixmap&, const QString& mime, + const QString& extra = QString::null, QFileInfo* info, bool = FALSE ); void addDir( const QPixmap&, const QString& mime, const QString& dir, - const QString& file, bool = FALSE ); + const QString& file, + const QString& extra = QString::null, + bool = FALSE ); void addSymlink( const QPixmap&, const QString& mime, - QFileInfo* info, bool = FALSE ); + QFileInfo* info, + const QString& extra = QString::null, + bool = FALSE ); void addSymlink( const QPixmap&, const QString& mine, const QString& path, - const QString& file, bool isSymlink = FALSE ); + const QString& file, + const QString& extra, + bool isSymlink = FALSE ); void cd( const QString& path ); QWidget* widget(); void sort(); diff --git a/libopie/ofileselector/ofileselector.cpp b/libopie/ofileselector/ofileselector.cpp index 4ab744c..0ccb3cb 100644 --- a/libopie/ofileselector/ofileselector.cpp +++ b/libopie/ofileselector/ofileselector.cpp @@ -393,21 +393,20 @@ QString OFileSelector::currentMimeType() const{ } void OFileSelector::slotMimeCheck(const QString &mime) { - if( m_selector == Normal ){ - initializeOldSelector(); + if( m_selector == Normal ){ + initializeOldSelector(); - updateMimes(); - updateMimeCheck(); - m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) ); - }else{ // others - qWarning("Mime %s", mime.latin1() ); - if(m_shChooser ){ - qWarning("Current Text %s", m_mimeCheck->currentText().latin1() ); - //m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) ); + updateMimes(); + updateMimeCheck(); + m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) ); + }else{ // others + qWarning("Mime %s", mime.latin1() ); + if(m_shChooser ){ + qWarning("Current Text %s", m_mimeCheck->currentText().latin1() ); + //m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) ); + } + reparse(); } - reparse(); - } - } /* * Ok if a non dir gets inserted into this combobox diff --git a/libopie/ofileselector/ofileselectoritem.cpp b/libopie/ofileselector/ofileselectoritem.cpp index 1e745a1..d31046b 100644 --- a/libopie/ofileselector/ofileselectoritem.cpp +++ b/libopie/ofileselector/ofileselectoritem.cpp @@ -6,6 +6,7 @@ OFileSelectorItem::OFileSelectorItem( QListView*view, const QString& date, const QString& size, const QString& dir, + const QString& extra, bool isLocked, bool isDir ) : QListViewItem( view ) @@ -17,6 +18,7 @@ OFileSelectorItem::OFileSelectorItem( QListView*view, m_dir = isDir; m_locked = isLocked; m_dirStr = dir; + m_extra = extra; } OFileSelectorItem::~OFileSelectorItem() { } @@ -51,3 +53,6 @@ QString OFileSelectorItem::key( int id, bool ) { return ke; } +QString OFileSelector::extra()const { + return m_extra; +} diff --git a/libopie/ofileselector/ofileselectoritem.h b/libopie/ofileselector/ofileselectoritem.h index 21460c4..81966ae 100644 --- a/libopie/ofileselector/ofileselectoritem.h +++ b/libopie/ofileselector/ofileselectoritem.h @@ -12,6 +12,7 @@ public: const QString& size, const QString& dir, bool isLocked, + const QString& extra, bool isDir = false); ~OFileSelectorItem(); bool isLocked() const; @@ -19,12 +20,16 @@ public: bool isDir()const; QString path()const; QString key(int id, bool ); + QString extra()const; private: bool m_locked : 1; bool m_dir : 1; QString m_dirStr; + QString m_extra; + class Private; + Private* d; }; #endif diff --git a/libopie/ofileselector/ofileview.cpp b/libopie/ofileselector/ofileview.cpp index 38f722c..72d2f60 100644 --- a/libopie/ofileselector/ofileview.cpp +++ b/libopie/ofileselector/ofileview.cpp @@ -12,20 +12,14 @@ OFileView::OFileView( OFileSelector* sel) } OFileView::~OFileView() { } -void OFileView::fileSelected( const QString& s ) { - m_sel->internFileSelected( s ); -} -void OFileView::fileSelected( const DocLnk& s) { - m_sel->internFileSelected( s ); +void OFileView::fileSelected( const QString& dir,const QString& file,const QString& extra ) { + m_sel->currentLister()->fileSelected( dir,file,extra ); } void OFileView::contextMenu() { m_sel->internContextMenu(); } -void OFileView::changedDir( const QString& s) { - m_sel->internChangedDir( s ); -} -void OFileView::changedDir( const QDir& d ) { - m_sel->internChangedDir( d ); +void OFileView::changedDir( const QString& s, const QString& file, const QString& extra) { + m_sel->currentLister()->changedDir( s, file,extra ); } OFileSelector* OFileView::selector() const { return m_sel; diff --git a/libopie/ofileselector/ofileview.h b/libopie/ofileselector/ofileview.h index d7ea4a2..808587f 100644 --- a/libopie/ofileselector/ofileview.h +++ b/libopie/ofileselector/ofileview.h @@ -56,29 +56,37 @@ public: virtual void addFile(const QPixmap&, const QString &mine, QFileInfo *info, + const QString& extra = QString::null, bool isSymlink = FALSE ) = 0; virtual void addFile(const QPixmap&, const QString& mine, const QString& dir, - const QString& file, bool = FALSE ) = 0; + const QString& file, + const QString& extra = QString::null, + bool = FALSE ) = 0; virtual void addDir (const QPixmap&, const QString &mine, QFileInfo *info, + const QString& extra = QString::null, bool isSymlink = FALSE ) = 0; virtual void addDir (const QPixmap&, const QString& mine, const QString& dir, - const QString& file, bool = FALSE) = 0; + const QString& file, + const QString& extra = QString::null, + bool = FALSE) = 0; virtual void addSymlink(const QPixmap&, const QString &mime, QFileInfo *info, + const QString& extra = QString::null, bool isSymlink = FALSE ) = 0; virtual void addSymlink(const QPixmap&, const QString& mine, const QString& path, const QString& file, + const QString& extra = QString::null, bool isSymlink = FALSE ) = 0; virtual void cd(const QString &path ) = 0; @@ -94,11 +102,22 @@ public: /*signals:*/ protected: - void fileSelected(const QString &); - void fileSelected(const DocLnk & ); - void contextMenu(); - void changedDir(const QString &); - void changedDir(const QDir & ); + /** + * @param dir The dir name + * @param file The file name + * @param extra The extra information + */ + void fileSelected(const QString &dir, const QString& file, const QString& extra = QString::nulll); + void contextMenu(); + + /** + * + * @param dir The dir name + * @param file The file name + * @param extra The extra informations + */ + void changedDir(const QString &dir, const QString& file, const QString& extra = QString::null); + 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 b6b03cd..378c69d 100644 --- a/libopie/ofileselector/olister.cpp +++ b/libopie/ofileselector/olister.cpp @@ -1,3 +1,5 @@ +#include + #include "olister.h" #include "ofileview.h" #include "opixmapprovider.h" @@ -5,7 +7,7 @@ OLister::OLister( OFileSelector* view) - : m_view( view ) + : m_view( view ), m_acc( 0l ) { m_prov = new OPixmapProvider( view ); } @@ -24,6 +26,7 @@ bool OLister::showDirs()const { } void OLister::addFile( const QString& mine, QFileInfo* info, + const QString& extra, bool isSymlink ) { int t = isSymlink ? OPixmapProvider::File | OPixmapProvider::Symlink : OPixmapProvider::File; @@ -32,11 +35,13 @@ void OLister::addFile( const QString& mine, view()->currentView()->addFile( pix, mine, info, + extra, isSymlink ); } void OLister::addFile( const QString& mine, const QString& path, const QString& file, + const QString& extra, bool isSymlink ) { int t = isSymlink ? OPixmapProvider::File | OPixmapProvider::Symlink : OPixmapProvider::File; @@ -46,10 +51,12 @@ void OLister::addFile( const QString& mine, mine, path, file, + extra, isSymlink ); } void OLister::addDir( const QString& mine, QFileInfo* info, + const QString& extra, bool isSymlink ) { int t = isSymlink ? OPixmapProvider::Dir | OPixmapProvider::Symlink : OPixmapProvider::Dir; @@ -57,11 +64,13 @@ void OLister::addDir( const QString& mine, view()->currentView()->addDir( pix, mine, info, + extra, isSymlink ); } void OLister::addDir( const QString& mine, const QString& path, const QString& dir, + const QString& extra, bool isSymlink ) { int t = isSymlink ? OPixmapProvider::Dir | OPixmapProvider::Symlink : @@ -72,20 +81,24 @@ void OLister::addDir( const QString& mine, mine, path, dir, + extra, isSymlink ); } void OLister::addSymlink( const QString& mine, QFileInfo* info, + const QString& extra, bool isSymlink ) { QPixmap pix = provider()->pixmap( OPixmapProvider::Symlink, mine, info ); view()->currentView()->addSymlink( pix, mine, info, + extra, isSymlink ); } void OLister::addSymlink( const QString& mine, const QString& path, const QString& name, + const QString& extra, bool isSymlink ) { QPixmap pix = provider()->pixmap( OPixmapProvider::Symlink, mine, path, name ); @@ -93,6 +106,7 @@ void OLister::addSymlink( const QString& mine, mine, path, name, + extra, isSymlink ); } OFileSelector* OLister::view() { @@ -104,3 +118,45 @@ OPixmapProvider* OLister::provider() { bool OLister::compliesMime( const QString& mime ) { return view()->compliesMime( mime ); } +OListerCmbAccess* OLister::comboBox() { + if (!m_acc ) + m_acc = new OListerCmbAccess( view()->m_location ); + + return m_acc; +} + + +OListerCmbAccess::OListerCmbAccess(QComboBox* box ) + : m_cmb( cmb ) +{} +OListerCmbAccess::~OListerCmbAccess() { +} +void OListerCmbAccess::clear() { + if ( m_cmb ) + m_cmb->clear(); +} +void OListerCmbAccess::setCurrentItem( const QString& add, bool FORCE_ADD) { + if ( !m_cmb ) return; + + + int c = m_cmb->count(); + for ( int i = 0; i < m_cmb->count(); i++ ) { + if ( m_cmb->text(i) == add ) { + bo->setCurrentItem( i ); + return; + } + } + m_cmb->insertItem(add ); + m_cmb->setCurrentItem( c ); +} +void OListerCmbAccess::insert( const QString& str ) { + if ( m_cmb ) + m_cmb->insertItem( str ); +} +QString OListerCmbAccess::currentText()const { + QString str; + if (m_cmb ) + str = m_cmb->currentText(); + + return str; +} diff --git a/libopie/ofileselector/olister.h b/libopie/ofileselector/olister.h index 0885525..79d5409 100644 --- a/libopie/ofileselector/olister.h +++ b/libopie/ofileselector/olister.h @@ -6,8 +6,11 @@ #include #include +class QComboBox; class OPixmapProvider; class OFileSelector; + +class OListerCmbAccess; /** * lister is something like KIO but very * very basic and currently only for @@ -15,6 +18,7 @@ class OFileSelector; * This is a base class which needs to be implemented. * @see OLocalLister for a filesystem based implementation */ + class OLister { public: OLister( OFileSelector* ); @@ -27,16 +31,32 @@ public: virtual QMap mimeTypes( const QString& dir ) = 0; void setPixmapProvider( OPixmapProvider* ); + + /* some way a slot */ + void fileSelected( const QString& dir, const QString& file, const QString& extra ) = 0; + void changeDir( const QString& dir, const QString& file, const QString& extra ) = 0; protected: + /** + * I hate too big classes + * this is a way to group + * access to a ComboBox + * which might exist or + * not in a secure way + */ + OListerCmbAccess* comboBox(); + bool showFiles()const; bool showDirs()const; bool compliesMime( const QString& mime ); void addFile( const QString& mine, QFileInfo*, + const QString& extra = QString::null, bool isSymlink = FALSE ); + void addFile( const QString& mine, const QString& path, const QString& file, + const QString& extra = QString::null, bool isSymlink = FALSE ); void addDir( const QString& mine, QFileInfo*, @@ -44,20 +64,61 @@ protected: void addDir( const QString& mine, const QString& path, const QString& dir, + const QString& extra = QString::null, bool isSymlink = FALSE ); void addSymlink( const QString& mine, QFileInfo* info, + const QString& extra = QString::null, bool isSymlink = FALSE); void addSymlink( const QString& mine, const QString& path, const QString& name, + const QString& extra = QString::null, bool isSymlink = FALSE ); OFileSelector* view(); OPixmapProvider* provider(); private: OFileSelector* m_view; OPixmapProvider* m_prov; + OListerCmbAccess* m_acc; + + class Private; + Private *d; +}; + +class OListerCmbAccess { + friend class OLister; +public: + OListerCmbAccess( QComboBox* = 0l); + ~OListerCmbAccess(); + + /** + * clears the combobox + */ + void clear(); + + /** + * set's @param add to be the current Item + * if the item is not present it'll be removed + */ + void setCurrentItem( const QString& add, bool FORECE_ADD = TRUE ); + + /** + * inserts the the String at + * a non predictable position... The position is determined + * by the QComboBox code + */ + void insert( const QString& ); + + /** + * + */ + QString currentText()const; +private: + class Private; + Private* d; + QComboBox* m_cmb; }; diff --git a/libopie/ofileselector/olocallister.cpp b/libopie/ofileselector/olocallister.cpp index 6ffcf1e..2306b14 100644 --- a/libopie/ofileselector/olocallister.cpp +++ b/libopie/ofileselector/olocallister.cpp @@ -43,7 +43,8 @@ QMap OLocalLister::mimeTypes( const QString& curDir ) { return mimes; } -/* FIXME mimecheck +/** + * FIXME mimecheck * use mime check for that * filter dirs * filter filters -- cgit v0.9.0.2