author | zecke <zecke> | 2002-06-26 18:58:37 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-06-26 18:58:37 (UTC) |
commit | f6800ca0bed431aac90f09ec98e481fb424c7b31 (patch) (side-by-side diff) | |
tree | a9c9687cc0cecc9a5f4b9caf77662f7735faf941 | |
parent | 8896b1ffe8ffd4da2395a050de63473ba37a2dec (diff) | |
download | opie-f6800ca0bed431aac90f09ec98e481fb424c7b31.zip opie-f6800ca0bed431aac90f09ec98e481fb424c7b31.tar.gz opie-f6800ca0bed431aac90f09ec98e481fb424c7b31.tar.bz2 |
Fix mimetype handling
-rw-r--r-- | libopie/ofileselector.cc | 58 |
1 files changed, 55 insertions, 3 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc index 6c59f89..74b308e 100644 --- a/libopie/ofileselector.cc +++ b/libopie/ofileselector.cc @@ -650,26 +650,27 @@ void OFileSelector::initVars() m_edit = 0; m_fnLabel = 0; m_new = 0; m_close = 0; } void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink) { if(!m_files) return; // if( !compliesMime(info->absFilePath(), mime ) ) // return; MimeType type( info->absFilePath() ); - if( mime != tr("All") && type.id() != mime ) - return; + if (!compliesMime( type.id() ) ) + return; + QPixmap pix = type.pixmap(); QString dir; QString name; bool locked; if( pix.isNull() ) pix = Resource::loadPixmap( "UnknownDocument-14"); dir = info->dirPath( true ); if( symlink ) name = info->fileName() + " -> " +info->dirPath() + "/" + info->readLink(); else { name = info->fileName(); if( ( m_mode == OPEN && !info->isReadable() )|| @@ -931,26 +932,77 @@ void OFileSelector::initPics() 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; } /* check if the mimetype in mime * complies with the one which is current */ +/* + * We've the mimetype of the file + * We need to get the stringlist of the current mimetype + * + * mime = image/jpeg + * QStringList = 'image/*' + * or QStringList = image/jpeg;image/png;application/x-ogg + * or QStringList = application/x-ogg;image/*; + * with all these mime filters it should get acceptes + * to do so we need to look if mime is contained inside + * the stringlist + * if it's contained return true + * if not ( I'm no RegExp expert at all ) we'll look if a '/*' + * is contained in the mimefilter and then we will + * look if both are equal until the '/' + */ bool OFileSelector::compliesMime( const QString& mime ) { + qWarning("mimetype is %s", mime.latin1() ); + QString currentText; + if (m_shChooser ) + currentText = m_mimeCheck->currentText(); + qWarning("current text is %s", currentText.latin1() ); + QMap<QString, QStringList>::Iterator it; + QStringList list; + if ( currentText == tr("All") ) return true; + else if ( currentText.isEmpty() && !m_mimetypes.isEmpty() ) { + it = m_mimetypes.begin(); + list = it.data(); + }else if ( currentText.isEmpty() ) return true; + else{ + it = m_mimetypes.find(currentText ); + if ( it == m_mimetypes.end() ) qWarning("not there"), list << currentText; + else qWarning("found"), list = it.data(); + } + // dump it now + //for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { + // qWarning( "%s", (*it).latin1() ); + //} + + + if ( list.contains(mime) ) return true; + qWarning("list doesn't contain it "); + QStringList::Iterator it2; + int pos; + int pos2; + for ( it2 = list.begin(); it2 != list.end(); ++it2 ) { + pos = (*it2).findRev("/*"); + if ( pos >= 0 ) { + if ( mime.contains( (*it2).left(pos) ) ) return true; + } + } + return false; } void OFileSelector::slotFileSelected( const QString &string ) { if( m_shLne ) m_edit->setText( string ); emit fileSelected( string ); } void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk ) { slotFileSelected( lnk.name() ); // emit fileSelected( lnk ); } @@ -1122,25 +1174,25 @@ void OFileSelector::reparse() ++it; } // add them to the chooser updateMimeCheck(); m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currentMimeType ) ); currentMimeType = m_mimeCheck->currentText(); } }else { // no autoMime // let the mimetype be set from out side the m_mimeCheck FEATURE if( m_shChooser ){ currentMimeType = m_mimeCheck->currentText(); - updateMimeCheck(); +// updateMimeCheck(); } } // now we got our mimetypes we can add the files QDir dir( m_currentDir ); 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 ); |