-rw-r--r-- | core/apps/textedit/fileBrowser.cpp | 35 | ||||
-rw-r--r-- | core/apps/textedit/fileBrowser.h | 3 |
2 files changed, 28 insertions, 10 deletions
diff --git a/core/apps/textedit/fileBrowser.cpp b/core/apps/textedit/fileBrowser.cpp index 7a3a703..8c942a1 100644 --- a/core/apps/textedit/fileBrowser.cpp +++ b/core/apps/textedit/fileBrowser.cpp @@ -149,25 +149,22 @@ fileBrowser::fileBrowser( QWidget* parent, const char* name, bool modal, WFlags typemb->setFixedHeight(22); layout->addMultiCellWidget( typemb, 2, 2, 4, 7 ); updateMimeTypeMenu() ; currentDir.setPath(QDir::currentDirPath()); currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden */| QDir::All); + currentDir.setNameFilter(filterStr); populateList(); move(0,15); } fileBrowser::~fileBrowser() { } -void fileBrowser::setMimeType(const QString &type) { - mimeType = type; -} - void fileBrowser::setFileView( int selection ) { SelectionCombo->setCurrentItem( selection ); selectionChanged( SelectionCombo->currentText() ); } @@ -176,13 +173,12 @@ void fileBrowser::populateList() ListView->clear(); bool isDir=FALSE; //qDebug(currentDir.canonicalPath()); currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); currentDir.setMatchAllDirs(TRUE); - currentDir.setNameFilter(filterStr); // currentDir.setNameFilter("*.txt;*.etx"); QString fileL, fileS, fileDate; const QFileInfoList *list = currentDir.entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/); QFileInfoListIterator it(*list); QFileInfo *fi; while ( (fi=it.current()) ) { @@ -383,13 +379,13 @@ void fileBrowser::showListMenu(QListViewItem *item) { QPopupMenu m;// = new QPopupMenu( Local_View ); if( item->text(0).find("/",0,TRUE)) m.insertItem( tr( "Change Directory" ), this, SLOT( doCd() )); else m.insertItem( tr( "Make Directory" ), this, SLOT( makDir() )); - m.insertItem( tr( "Rescan" ), this, SLOT( populateList()() )); + m.insertItem( tr( "Rescan" ), this, SLOT( populateList() )); m.insertItem( tr( "Rename" ), this, SLOT( localRename() )); m.insertSeparator(); m.insertItem( tr( "Delete" ), this, SLOT( localDelete() )); m.exec( QCursor::pos() ); } @@ -478,43 +474,66 @@ void fileBrowser::updateMimeTypeMenu() { connect(typemb, SIGNAL(selected(const QString&)), this, SLOT(showType(const QString&))); } void fileBrowser::showType(const QString &t) { qDebug(t); - mimeType = t+"/*"; + if(t.find("All",0,TRUE) != -1) { + filterStr = "*"; + } else { + QStringList list = mimetypes.grep( t,TRUE); + QString ext; + for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { + mimeType =(*it); + MimeType mt( mimeType); + qDebug("mime "+mimeType); +// qDebug("description "+mt.description()); +// qDebug( "id "+mt.id()); + qDebug("extension "+mt.extension()); + if( mt.extension().isEmpty()) + filterStr = "*"; + else + filterStr = "*."+ mt.extension()+" "; +// printf( "%s \n", (*it).latin1() ); + } + } + currentDir.setNameFilter(filterStr); + + populateList(); + update(); // if(fileSelector) { // disconnect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( docOpen( const DocLnk & ) ) ); // delete fileSelector; // } // fileSelector = new FileSelector( mimeType, FileStack, "fileselector" , FALSE, FALSE); //buggy // connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( showEditTools() ) ); // connect( fileSelector, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) ); // connect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( docOpen( const DocLnk & ) ) ); // fileSelector->reread(); - repaint(); // if ( t == tr("All") ) { // icons->setTypeFilter("",TRUE); // } else { // icons->setTypeFilter(t+"/*",TRUE); // } } QStringList fileBrowser::getMimeTypes() { + QStringList r; AppLnkSet apps( QPEApplication::qpeDir() + "apps" ); QFile file( QPEApplication::qpeDir()+"etc/available.mime"); file.open( IO_WriteOnly|IO_Truncate);//) for ( QListIterator<AppLnk> it( apps.children() ); it.current(); ++it ) { AppLnk* l; l = it.current(); QStringList maj = l->mimeTypes(); QStringList::ConstIterator f; for ( f = maj.begin(); f != maj.end(); f++ ) { QString temp = *f; + mimetypes << temp; int sl = temp.find('/'); if (sl >= 0) { QString k = temp.left(sl); if( r.grep(k,TRUE).isEmpty() ) { r << k; k+="\n"; diff --git a/core/apps/textedit/fileBrowser.h b/core/apps/textedit/fileBrowser.h index 1138d80..339483f 100644 --- a/core/apps/textedit/fileBrowser.h +++ b/core/apps/textedit/fileBrowser.h @@ -55,22 +55,21 @@ public: QString selectedFileName; QFile file; QStringList fileList; QComboBox *SelectionCombo; public slots: void setFileView( int ); - void setMimeType(const QString &); private: // QDict<void> mimes; QPushButton *buttonOk, *buttonCancel, *homeButton, *docButton, *hideButton, *cdUpButton; QListView* ListView; QLabel *dirLabel; QString filterStr, mimeType; QDir currentDir; - QStringList dirPathStringList; + QStringList dirPathStringList, mimetypes; QListViewItem * item; QComboBox *dirPathCombo; MenuButton *typemb; QWidgetStack *FileStack; FileSelector *fileSelector; QRegExp tf; |