From: <ck...@us...> - 2009-02-14 23:22:37
|
Revision: 6208 http://krusader.svn.sourceforge.net/krusader/?rev=6208&view=rev Author: ckarai Date: 2009-02-14 22:12:32 +0000 (Sat, 14 Feb 2009) Log Message: ----------- Added: interview, updir + filters Modified Paths: -------------- trunk/krusader_kde4/krusader/Panel/krinterview.cpp trunk/krusader_kde4/krusader/Panel/krvfsmodel.cpp trunk/krusader_kde4/krusader/Panel/krvfsmodel.h Modified: trunk/krusader_kde4/krusader/Panel/krinterview.cpp =================================================================== --- trunk/krusader_kde4/krusader/Panel/krinterview.cpp 2009-02-14 21:08:24 UTC (rev 6207) +++ trunk/krusader_kde4/krusader/Panel/krinterview.cpp 2009-02-14 22:12:32 UTC (rev 6208) @@ -201,81 +201,8 @@ void KrInterView::addItems(vfs* v, bool addUpDir) { - _model->setVfs(v); + _model->setVfs(v, addUpDir); this->setCurrentIndex(_model->index(0, 0)); - -#if 0 - Q3ListViewItem * item = firstChild(); - Q3ListViewItem *currentItem = item; - QString size, name; - - // add the up-dir arrow if needed - if ( addUpDir ) { - new KrDetailedViewItem( this, ( Q3ListViewItem* ) 0L, ( vfile* ) 0L ); - } - - // text for updating the status bar - QString statusText = QString("%1/ ").arg( v->vfs_getOrigin().fileName() ) + i18n("Directory"); - - int cnt = 0; - int cl = columnSorted(); - bool as = ascendingSort(); - setSorting( -1 ); // disable sorting - - for ( vfile * vf = v->vfs_getFirstFile(); vf != 0 ; vf = v->vfs_getNextFile() ) { - size = KRpermHandler::parseSize( vf->vfile_getSize() ); - name = vf->vfile_getName(); - bool isDir = vf->vfile_isDir(); - if ( !isDir || ( isDir && ( _properties->filter & KrViewProperties::ApplyToDirs ) ) ) { - switch ( _properties->filter ) { - case KrViewProperties::All : - break; - case KrViewProperties::Custom : - if ( !_properties->filterMask.match( vf ) ) - continue; - break; - case KrViewProperties::Dirs: - if ( !vf->vfile_isDir() ) - continue; - break; - case KrViewProperties::Files: - if ( vf->vfile_isDir() ) - continue; - break; - - case KrViewProperties::ApplyToDirs : - break; // no-op, stop compiler complaints - } - } - - KrDetailedViewItem *dvitem = new KrDetailedViewItem( this, item, vf ); - _dict.insert( vf->vfile_getName(), dvitem ); - if ( isDir ) - ++_numDirs; - else - _countSize += dvitem->VF->vfile_getSize(); - ++_count; - // if the item should be current - make it so - if ( dvitem->name() == nameToMakeCurrent() ) { - currentItem = static_cast<Q3ListViewItem*>(dvitem); - statusText = dvitem->description(); - } - - cnt++; - } - - - // re-enable sorting - setSorting( cl, as ); - sort(); - - if ( !currentItem ) - currentItem = firstChild(); - K3ListView::setCurrentItem( currentItem ); - ensureItemVisible( currentItem ); - - op()->emitItemDescription( statusText ); -#endif } void KrInterView::setup() Modified: trunk/krusader_kde4/krusader/Panel/krvfsmodel.cpp =================================================================== --- trunk/krusader_kde4/krusader/Panel/krvfsmodel.cpp 2009-02-14 21:08:24 UTC (rev 6207) +++ trunk/krusader_kde4/krusader/Panel/krvfsmodel.cpp 2009-02-14 22:12:32 UTC (rev 6208) @@ -63,24 +63,54 @@ typedef bool(*LessThan)(SortProps *,SortProps *); -KrVfsModel::KrVfsModel( KrView * view ): QAbstractListModel(0), _vfs(0), _extensionEnabled( true ), _view( view ), - _lastSortOrder( KrVfsModel::Name ), _lastSortDir(Qt::AscendingOrder) {} +KrVfsModel::KrVfsModel( KrView * view ): QAbstractListModel(0), _extensionEnabled( true ), _view( view ), + _lastSortOrder( KrVfsModel::Name ), _lastSortDir(Qt::AscendingOrder), + _dummyVfile( 0 ), _ready( false ) {} -void KrVfsModel::setVfs(vfs* v) +void KrVfsModel::setVfs(vfs* v, bool upDir) { emit layoutAboutToBeChanged(); - _vfs = v; - - vfile *vf = _vfs->vfs_getFirstFile(); + _dummyVfile = 0; + if( upDir ) { + _dummyVfile = new vfile( "..", 0, "drwxrwxrwx", 0, false, 0, 0, "", "", 0, -1); + _dummyVfile->vfile_setIcon( "go-up" ); + _vfiles.append(_dummyVfile); + } + + vfile *vf = v->vfs_getFirstFile(); while (vf) { - _vfiles.append(vf); - vf = _vfs->vfs_getNextFile(); + bool add = true; + bool isDir = vf->vfile_isDir(); + if ( !isDir || ( isDir && ( properties()->filter & KrViewProperties::ApplyToDirs ) ) ) { + switch ( properties()->filter ) { + case KrViewProperties::All : + break; + case KrViewProperties::Custom : + if ( !properties()->filterMask.match( vf ) ) + add = false; + break; + case KrViewProperties::Dirs: + if ( !isDir ) + add = false; + break; + case KrViewProperties::Files: + if ( isDir ) + add = false; + break; + default: + break; + } + } + if( add ) + _vfiles.append(vf); + vf = v->vfs_getNextFile(); } + _ready = true; // TODO: connect all addedVfile/deleteVfile and friends signals // TODO: make a more efficient implementation that this dummy one :-) - emit dataChanged(index(0, 0), index(_vfs->vfs_noOfFiles()-1, 0)); + emit dataChanged(index(0, 0), index(_vfiles.count()-1, 0)); emit layoutChanged(); sort(); } @@ -98,10 +128,7 @@ int KrVfsModel::rowCount(const QModelIndex& parent) const { - if (!_vfs) return 0; - - // simply return the number of items in the vfs - return _vfs->vfs_noOfFiles(); + return _vfiles.count(); } @@ -111,7 +138,7 @@ QVariant KrVfsModel::data(const QModelIndex& index, int role) const { - if (!index.isValid() || !_vfs) + if (!index.isValid()) return QVariant(); if (index.row() >= rowCount()) @@ -463,7 +490,7 @@ QVector < SortProps * > sorting (_vfiles.count()); for (int i = 0; i < _vfiles.count(); ++i) - sorting[ i ] = new SortProps( _vfiles[ i ], column, properties(), false, order == Qt::AscendingOrder ); + sorting[ i ] = new SortProps( _vfiles[ i ], column, properties(), _vfiles[ i ] == _dummyVfile, order == Qt::AscendingOrder ); LessThan compare = (order == Qt::AscendingOrder ? &itemLessThan : &itemGreaterThan); qSort(sorting.begin(), sorting.end(), compare); Modified: trunk/krusader_kde4/krusader/Panel/krvfsmodel.h =================================================================== --- trunk/krusader_kde4/krusader/Panel/krvfsmodel.h 2009-02-14 21:08:24 UTC (rev 6207) +++ trunk/krusader_kde4/krusader/Panel/krvfsmodel.h 2009-02-14 22:12:32 UTC (rev 6208) @@ -20,8 +20,8 @@ KrVfsModel( KrView * ); virtual ~KrVfsModel(); - inline bool ready() const { return _vfs != 0; } - void setVfs(vfs* v); + inline bool ready() const { return _ready; } + void setVfs(vfs* v, bool upDir); int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; @@ -35,11 +35,12 @@ protected: - vfs * _vfs; QVector<vfile*> _vfiles; bool _extensionEnabled; KrView * _view; int _lastSortOrder; Qt::SortOrder _lastSortDir; + vfile * _dummyVfile; + bool _ready; }; #endif // __krvfsmodel__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |