-rw-r--r-- | libopie/ofileselector/ofilelistview.cpp | 85 | ||||
-rw-r--r-- | libopie/ofileselector/ofilelistview.h | 7 | ||||
-rw-r--r-- | libopie/ofileselector/ofileselector.cpp | 283 | ||||
-rw-r--r-- | libopie/ofileselector/ofileselector.h | 39 | ||||
-rw-r--r-- | libopie/ofileselector/ofileview.cpp | 7 | ||||
-rw-r--r-- | libopie/ofileselector/ofileview.h | 2 |
6 files changed, 153 insertions, 270 deletions
diff --git a/libopie/ofileselector/ofilelistview.cpp b/libopie/ofileselector/ofilelistview.cpp index 7108a5b..bb15764 100644 --- a/libopie/ofileselector/ofilelistview.cpp +++ b/libopie/ofileselector/ofilelistview.cpp @@ -1,4 +1,7 @@ +#include <qheader.h> + #include <qpe/mimetype.h> #include <qpe/resource.h> +#include <qpe/qpeapplication.h> @@ -12,3 +15,25 @@ OFileListView::OFileListView( QWidget* parent, OFileSelector* sel) { - + QPEApplication::setStylusOperation( viewport(), + QPEApplication::RightOnHold); + addColumn(" " ); + addColumn(tr("Name"), 135 ); + addColumn(tr("Size"), -1 ); + addColumn(tr("Date"), 60 ); + addColumn(tr("Mime Type"), -1 ); + QHeader *head = header(); + head->hide(); + setSorting( 1 ); + setAllColumnsShowFocus( TRUE ); + + connect(this, SIGNAL(selectionChanged() ), + this, SLOT(slotSelectionChanged() ) ); + + connect(this, SIGNAL(currentChanged(QListViewItem *) ), + this, SLOT(slotCurrentChanged(QListViewItem * ) ) ); + + connect(this, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ), + this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) ); + + connect(this, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )), + this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) ); } @@ -125 +150,59 @@ int OFileListView::fileCount() { } +void OFileListView::sort() { + QListView::sort(); +} +void OFileListView::slotSelectionChanged() { + +} +void OFileListView::slotCurrentChanged( QListViewItem* item) { + if (!item ) + return; + + OFileSelectorItem* sel = (OFileSelectorItem*) item; + + qWarning("current changed"); + if(!sel->isDir() ){ + updateLine( sel->text(1) ); + + if (selector()->mode() == OFileSelector::Fileselector ) { + QStringList str = QStringList::split("->", sel->text(1) ); + QString path =sel->directory() + "/" + str[0].stripWhiteSpace(); + DocLnk lnk( path ); + fileSelected(lnk ); + fileSelected( path ); + } + } +} +void OFileListView::slotClicked( int button, QListViewItem* item, + const QPoint&, int ) { + if ( !item ) + return; + + if( button != Qt::LeftButton ) + return; + + OFileSelectorItem *sel = (OFileSelectorItem*)item; + + if(!sel->isLocked() ){ + QStringList str = QStringList::split("->", sel->text(1) ); + if( sel->isDir() ){ + changedDir( sel->directory() + "/" + str[0].stripWhiteSpace() ); + }else{ + updateLine( str[0].stripWhiteSpace() ); + QString path = sel->directory(); + path += "/"; + path += str[0].stripWhiteSpace(); + + DocLnk lnk( path ); + fileSelected( path ); + fileSelected( lnk ); + } + } +} +void OFileListView::slotRightButton( int button, QListViewItem* item, + const QPoint&, int ) { + if (!item || (button != Qt::RightButton )) + return; + + /* raise contextmenu */ +} diff --git a/libopie/ofileselector/ofilelistview.h b/libopie/ofileselector/ofilelistview.h index c7e9223..a83d70d 100644 --- a/libopie/ofileselector/ofilelistview.h +++ b/libopie/ofileselector/ofilelistview.h @@ -34,2 +34,3 @@ public: QWidget* widget(); + void sort(); @@ -41,3 +42,7 @@ public: int fileCount(); - +private slots: + void slotSelectionChanged(); + void slotCurrentChanged(QListViewItem* ); + void slotClicked( int, QListViewItem*, const QPoint&, int ); + void slotRightButton(int, QListViewItem*, const QPoint&, int ); }; diff --git a/libopie/ofileselector/ofileselector.cpp b/libopie/ofileselector/ofileselector.cpp index 16ee3ee..98b61f7 100644 --- a/libopie/ofileselector/ofileselector.cpp +++ b/libopie/ofileselector/ofileselector.cpp @@ -33,3 +33,3 @@ #include "ofileselector.h" - +#include "olister.h" @@ -38,13 +38,14 @@ QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0; namespace { - int indexByString( const QComboBox *box, const QString &str ){ - int index= 0; - for(int i= 0; i < box->count(); i++ ){ - if( str == box->text(i ) ){ - index= i; - break; - } + /* let's find the index for a specified string */ + int indexByString( const QComboBox *box, const QString &str ){ + int index= 0; + for(int i= 0; i < box->count(); i++ ){ + /* found */ + if( str == box->text(i ) ){ + index= i; + break; + } + } + return index; } - return index; - } - } @@ -60,3 +61,5 @@ OFileSelector::OFileSelector( QWidget *wid, int mode, int selector, m_name = fileName; + initVars(); + m_mode = mode; @@ -65,3 +68,2 @@ OFileSelector::OFileSelector( QWidget *wid, int mode, int selector, init(); - //QTimer::singleShot(6*1000, this, SLOT( slotTest() ) ); } @@ -73,2 +75,3 @@ OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent, { + /* update the mimefilter */ if (!mimeFilter.isEmpty() ) { @@ -156,2 +159,3 @@ void OFileSelector::setToolbarVisible( bool show ) initializeListView(); // FIXME see above waste of memory + if(!m_shTool ){ @@ -634,22 +638,2 @@ void OFileSelector::initVars() } -void OFileSelector::addFile(const QString &, QFileInfo *info, bool ) -{ - if(!m_files) - return; - // if( !compliesMime(info->absFilePath(), mime ) ) - // return; - MimeType type( info->absFilePath() ); - if (!compliesMime( type.id() ) ) - return; - -} -void OFileSelector::addDir(const QString &, QFileInfo *, bool ) -{ - if(!m_dir) - return; -} -void OFileSelector::delItems() -{ - -} void OFileSelector::initializeName() @@ -731,2 +715,3 @@ void OFileSelector::initializeChooser() m_viewCheck->insertItem( tr("All Files") ); + /* update to custom views */ updateMimeCheck(); @@ -816,28 +801,4 @@ void OFileSelector::initializeListView() // make a QWidgetStack first so Views can share the Toolbar - m_View = new QListView( m_pseudo, "Extended view"); - QPEApplication::setStylusOperation( m_View->viewport(), - QPEApplication::RightOnHold); - m_View->addColumn(" " ); - m_View->addColumn(tr("Name"), 135 ); - m_View->addColumn(tr("Size"), -1 ); - m_View->addColumn(tr("Date"), 60 ); - m_View->addColumn(tr("Mime Type"), -1 ); - QHeader *header = m_View->header(); - header->hide(); - m_View->setSorting( 1 ); - m_View->setAllColumnsShowFocus( TRUE ); - - connect(m_View, SIGNAL(selectionChanged() ), - this, SLOT(slotSelectionChanged() ) ); - - connect(m_View, SIGNAL(currentChanged(QListViewItem *) ), - this, SLOT(slotCurrentChanged(QListViewItem * ) ) ); - - connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ), - this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) ); - - connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )), - this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) ); - - m_pseudoLayout->addWidget( m_View, 288 ); + + // m_pseudoLayout->addWidget( m_View, 288 ); m_stack->addWidget( m_pseudo, Extended ); @@ -851,3 +812,2 @@ void OFileSelector::initializePerm() m_lay->addWidget( m_checkPerm ); - } @@ -859,2 +819,3 @@ void OFileSelector::initPics() QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); + QPainter painter( &pm ); @@ -918,6 +879,2 @@ bool OFileSelector::compliesMime( const QString& mime ) { } - // dump it now - //for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { - // qWarning( "%s", (*it).latin1() ); - //} @@ -947,107 +904,4 @@ void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk ) } -void OFileSelector::slotSelectionChanged() -{ - -} -void OFileSelector::slotCurrentChanged(QListViewItem* /*item*/ ) -{ - /* - if( item == 0 ) - return; - if( m_selector == Extended || m_selector == ExtendedAll ) { - OFileSelectorItem *sel = (OFileSelectorItem*) item; // start to use the C++ casts ;) - qWarning("current changed"); - if(!sel->isDir() ){ - if( m_shLne ) - m_edit->setText( sel->text(1) ); - - if (m_mode == Fileselector ) { - QStringList str = QStringList::split("->", sel->text(1) ); - QString path =sel->directory() + "/" + str[0].stripWhiteSpace(); - emit fileSelected(path ); - DocLnk lnk( path ); - emit fileSelected(lnk ); - } - } - } */ -} -void OFileSelector::slotClicked( int /*button*/, QListViewItem */*item*/, const QPoint &, int) - -{ - /* - if ( item == 0 ) - return; - - if( button != Qt::LeftButton ) - return; - - switch( m_selector ){ - default: - break; - case Extended: // fall through - case ExtendedAll:{ - OFileSelectorItem *sel = (OFileSelectorItem*)item; - if(!sel->isLocked() ){ - QStringList str = QStringList::split("->", sel->text(1) ); - if( sel->isDir() ){ - cd( sel->directory() + "/" + str[0].stripWhiteSpace() ); - // if MODE Dir m_shLne set the Text - }else{ - if( m_shLne ) - m_edit->setText( str[0].stripWhiteSpace() ); - qWarning("selected here in slot clicked"); - emit fileSelected( sel->directory() + "/" + str[0].stripWhiteSpace() ); - DocLnk lnk( sel->directory() + "/" + str[0].stripWhiteSpace() ); - qWarning("file selected"); - emit fileSelected( lnk ); - } - } - break; - } - } */ -} -void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int ) -{ - if( item == 0 ) - return; - if( button != Qt::RightButton ) - return; - slotContextMenu( item ); -} -void OFileSelector::slotContextMenu( QListViewItem */*item*/) -{ - -} -void OFileSelector::slotChangedDir() -{ - /* - OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); - if(sel->isDir() ){ - QStringList str = QStringList::split("->", sel->text(1) ); - cd( sel->directory() + "/" + str[0].stripWhiteSpace() ); - } - */ -} -void OFileSelector::slotOpen() -{ - /* - OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); - if(!sel->isDir() ){ - QStringList str = QStringList::split("->", sel->text(1) ); - slotFileSelected( sel->directory() +"/" +str[0].stripWhiteSpace() ); - qWarning("slot open"); - // DocLnk lnk( sel->directory() + "/" + str[0].stripWhiteSpace() ); - //emit fileSelected( lnk ); - } - */ -} -void OFileSelector::slotRescan() -{ -} -void OFileSelector::slotRename() -{ - reparse(); -} void OFileSelector::slotDelete() @@ -1103,6 +957,5 @@ void OFileSelector::reparse() return; - if( m_selector == Extended || m_selector == ExtendedAll ) - m_View->clear(); - else // custom view - ; // currentView()->clear(); + + currentView()->clear(); + if( m_shChooser) @@ -1111,2 +964,3 @@ void OFileSelector::reparse() QString currentMimeType; + // let's update the mimetype @@ -1120,21 +974,4 @@ void OFileSelector::reparse() // let's find possible mimetypes - QDir dir( m_currentDir ); - 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->absFilePath() ); - if( !m_mimetypes.contains( type.id() ) ){ - //qWarning("Type %s", type.id().latin1() ); - m_mimetypes.insert( type.id(), type.id() ); - } - - ++it; - } + m_mimetypes = currentLister()->mimeTypes( m_currentDir ); + // add them to the chooser @@ -1147,6 +984,5 @@ void OFileSelector::reparse() - if( m_shChooser ){ + if( m_shChooser ) currentMimeType = m_mimeCheck->currentText(); -// updateMimeCheck(); - } + } @@ -1154,58 +990,7 @@ void OFileSelector::reparse() - QDir dir( m_currentDir ); + currentLister()->reparse( m_currentDir ); + /* we're done with adding let's sort */ + currentView()->sort(); + - int sort; - if ( m_case ) - sort = (QDir::IgnoreCase | QDir::Name | QDir::DirsFirst | QDir::Reversed); - else - sort = (QDir::Name | QDir::DirsFirst | QDir::Reversed); - dir.setSorting( sort ); - - int filter; - if( m_selector == ExtendedAll /*|| m_selector ==CUSTOM_ALL */ ){ - filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; - }else - filter = QDir::Files | QDir::Dirs | QDir::All; - dir.setFilter( filter ); - - // now go through all files - const QFileInfoList *list = dir.entryInfoList(); - QFileInfoListIterator it( *list ); - QFileInfo *fi; - while( (fi=it.current() ) ){ - //qWarning("True and only" ); - if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){ - //qWarning(".. or ." ); - ++it; - continue; - } - if( fi->isSymLink() ){ - QString file = fi->dirPath( true ) + "/" + fi->readLink(); - for( int i = 0; i<=4; i++) { // 5 tries to prevent dos - QFileInfo info( file ); - if( !info.exists() ){ - addSymlink( currentMimeType, fi, TRUE ); - break; - }else if( info.isDir() ){ - addDir( currentMimeType, fi, TRUE ); - break; - }else if( info.isFile() ){ - addFile( currentMimeType, fi, TRUE ); - break; - }else if( info.isSymLink() ){ - file = info.dirPath(true ) + "/" + info.readLink() ; - break; - }else if( i == 4){ - addSymlink( currentMimeType, fi ); - } - } // off for loop - }else if( fi->isDir() ){ - addDir( currentMimeType, fi ); - }else if( fi->isFile() ){ - addFile( currentMimeType, fi ); - } - //qWarning( "%s", fi->fileName().latin1() ); - ++it; - } // of while loop - m_View->sort(); if( m_shTool ){ @@ -1254,2 +1039,3 @@ void OFileSelector::internChangedDir( const QString& s) { emit dirSelected( s ); + cd(s ); } @@ -1262 +1048,4 @@ QPixmap OFileSelector::pixmap( const QString& s ) { } +OLister* OFileSelector::currentLister()const { + return 0l; +} diff --git a/libopie/ofileselector/ofileselector.h b/libopie/ofileselector/ofileselector.h index 12af732..a7b363f 100644 --- a/libopie/ofileselector/ofileselector.h +++ b/libopie/ofileselector/ofileselector.h @@ -70,2 +70,3 @@ class QHBox; class OFileView; +class OLister; // @@ -339,2 +340,3 @@ class OFileSelector : public QWidget { OFileView* currentView()const; + OLister* currentLister()const; int filter(); @@ -371,5 +373,14 @@ class OFileSelector : public QWidget { int m_mode, m_selector; - QComboBox *m_location, *m_mimeCheck, *m_viewCheck; - QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel; - QPushButton *m_reread, *m_up, *m_new, *m_close; + QComboBox *m_location, + *m_mimeCheck, + *m_viewCheck; + + QPushButton *m_homeButton, + *m_docButton, + *m_hideButton, + *m_ok, *m_cancel; + QPushButton *m_reread, + *m_up, + *m_new, + *m_close; QListView *m_View; @@ -379,5 +390,4 @@ class OFileSelector : public QWidget { - QString m_currentDir; - QString m_name; -// QStringList m_mimetypes; + QString m_currentDir; + QString m_name; QMap<QString, QStringList> m_mimetypes; @@ -390,4 +400,4 @@ class OFileSelector : public QWidget { QHBox *m_boxToolbar; - QHBox *m_boxOk; // (no layout anymore) wait - QHBox *m_boxName; // (no Layout anymore) wait + QHBox *m_boxOk; + QHBox *m_boxName; QHBox *m_boxView; @@ -414,5 +424,3 @@ class OFileSelector : public QWidget { void initVars(); - virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE ); - virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE ); - virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){}; + void delItems(); @@ -443,13 +451,4 @@ private slots: void slotFileBridgeSelected( const DocLnk & ); - virtual void slotSelectionChanged(); - virtual void slotCurrentChanged(QListViewItem* ); - virtual void slotClicked( int, QListViewItem *item, const QPoint &, int); - virtual void slotRightButton(int, QListViewItem *, const QPoint &, int ); - virtual void slotContextMenu( QListViewItem *item); // listview above // popup below - virtual void slotChangedDir(); - virtual void slotOpen(); - virtual void slotRescan(); - virtual void slotRename(); virtual void slotDelete(); diff --git a/libopie/ofileselector/ofileview.cpp b/libopie/ofileselector/ofileview.cpp index 9bb40c9..38f722c 100644 --- a/libopie/ofileselector/ofileview.cpp +++ b/libopie/ofileselector/ofileview.cpp @@ -1 +1,3 @@ +#include <qlineedit.h> + #include <qpe/applnk.h> @@ -3,3 +5,2 @@ #include "ofileselector.h" - #include "ofileview.h" @@ -31 +32,5 @@ OFileSelector* OFileView::selector() const { } +void OFileView::updateLine( const QString& str ) { + if (m_sel->m_shLne ) + m_sel->m_edit->setText( str ); +} diff --git a/libopie/ofileselector/ofileview.h b/libopie/ofileselector/ofileview.h index 1b397f5..a4b1748 100644 --- a/libopie/ofileselector/ofileview.h +++ b/libopie/ofileselector/ofileview.h @@ -83,2 +83,3 @@ public: virtual int fileCount() = 0; + virtual void sort() =0; @@ -92,2 +93,3 @@ protected: void changedDir(const QDir & ); + void updateLine( const QString& ); OFileSelector* selector()const; |