summaryrefslogtreecommitdiff
path: root/libopie/ofileselector.cc
Side-by-side diff
Diffstat (limited to 'libopie/ofileselector.cc') (more/less context) (show whitespace changes)
-rw-r--r--libopie/ofileselector.cc118
1 files changed, 92 insertions, 26 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index 7a67ab2..6c59f89 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -100,16 +100,18 @@ namespace {
OFileSelector::OFileSelector( QWidget *wid, int mode, int selector,
const QString &dirName,
const QString &fileName,
- const QStringList &mimeTypes )
+ const QMap<QString,QStringList>& mimeTypes)
: QWidget( wid, "OFileSelector")
{
m_mimetypes = mimeTypes;
+ if (mode == SAVE )
+ m_name = fileName;
initVars();
m_mode = mode;
m_selector = selector;
m_currentDir = dirName;
init();
-QTimer::singleShot(6*1000, this, SLOT( slotTest() ) );
+ //QTimer::singleShot(6*1000, this, SLOT( slotTest() ) );
}
OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent,
@@ -117,7 +119,10 @@ OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent,
bool closeVisible )
: QWidget( parent, name )
{
- m_mimetypes = QStringList::split(";", mimeFilter );
+ if (!mimeFilter.isEmpty() ) {
+ QStringList list = QStringList::split(";", mimeFilter );
+ m_mimetypes.insert(mimeFilter, list );
+ }
initVars();
m_currentDir = QPEApplication::documentDir();
m_mode = OPEN;
@@ -135,6 +140,7 @@ OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent,
OFileSelector::~OFileSelector()
{
+
}
void OFileSelector::setNewVisible( bool visible )
@@ -143,8 +149,8 @@ void OFileSelector::setNewVisible( bool visible )
if( m_selector == NORMAL ){
delete m_select;
// we need to initialize but keep the selected mimetype
- QString mime = m_mimeCheck == 0 ? QString::null : m_mimeCheck->currentText() ;
- m_select = new FileSelector( m_autoMime ? mime : m_mimetypes.join(";") ,
+ QString mime = currentMimeType();
+ m_select = new FileSelector( mime ,
m_stack, "fileselector",
m_shNew, m_shClose);
connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
@@ -425,7 +431,9 @@ void OFileSelector::slotViewCheck(const QString &sel)
if( sel == tr("Documents" ) ){
if( m_select == 0 ){
// autMime? fix cause now we use All and not the current
- m_select = new FileSelector(m_autoMime ? QString::null : m_mimetypes.join(";"),
+ // yes currentMime fixes that for us
+ QString mime = currentMimeType();
+ m_select = new FileSelector(mime,
m_stack, "fileselector",
FALSE, FALSE);
connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
@@ -448,12 +456,43 @@ void OFileSelector::slotViewCheck(const QString &sel)
m_stack->raiseWidget( EXTENDED ); // same widget other QFileFilter
}
}
+// not yet finished.....
+QString OFileSelector::currentMimeType() const{
+ QString mime;
+ QString currentText;
+ if (m_shChooser )
+ currentText = m_mimeCheck->currentText();
+
+ if (tr("All") == currentText ) return QString::null;
+ else if (currentText.isEmpty() ) {
+ ;
+ }else {
+ QMap<QString, QStringList>::ConstIterator it;
+ it = m_mimetypes.find( currentText );
+ if ( it == m_mimetypes.end() ) {
+ mime = it.data().join(";");
+ }else{
+ mime = currentText;
+ }
+ }
+ return mime;
+}
void OFileSelector::slotMimeCheck(const QString &mime)
{
if( m_selector == NORMAL ){
- if( m_autoMime ){
+ //if( m_autoMime ){
+ QString newMimeType;
+ if (mime != tr("All") ) {
+ QMap<QString, QStringList>::Iterator it;
+ it = m_mimetypes.find(mime);
+ if ( it != m_mimetypes.end() ) {
+ newMimeType = it.data().join(";");
+ }else{
+ newMimeType = mime;
+ }
+ }
delete m_select;
- m_select = new FileSelector( mime == tr("All") ? QString::null : mime,
+ m_select = new FileSelector( newMimeType,
m_stack, "fileselector",
FALSE, FALSE);
@@ -463,10 +502,9 @@ void OFileSelector::slotMimeCheck(const QString &mime)
m_stack->addWidget( m_select, NORMAL );
m_stack->raiseWidget( NORMAL );
updateMimes();
- m_mimeCheck->clear();
- m_mimeCheck->insertStringList(m_mimetypes );
+ updateMimeCheck();
m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
- }
+ //}
}else{ // others
qWarning("Mime %s", mime.latin1() );
if(m_shChooser ){
@@ -512,7 +550,15 @@ void OFileSelector::init()
m_stack = new QWidgetStack( this );
if( m_selector == NORMAL ){
- m_select = new FileSelector(m_autoMime ? QString::null : m_mimetypes.join(";"),
+ QString mime;
+ if (!m_autoMime) {
+ if (!m_mimetypes.isEmpty() ) {
+ QMap<QString, QStringList>::Iterator it;
+ it = m_mimetypes.begin(); // cause we're in the init
+ mime = it.data().join(";");
+ }
+ }
+ m_select = new FileSelector(mime,
m_stack, "fileselector",
FALSE, FALSE);
@@ -545,14 +591,14 @@ void OFileSelector::updateMimes()
{
if( m_autoMime ){
m_mimetypes.clear();
- m_mimetypes.append( tr("All") );
+ m_mimetypes.insert( tr("All"), QString::null );
if( m_selector == NORMAL ){
DocLnkSet set;
Global::findDocuments(&set, QString::null );
QListIterator<DocLnk> dit( set.children() );
for( ; dit.current(); ++dit ){
if( !m_mimetypes.contains( (*dit)->type() ) )
- m_mimetypes.append( (*dit)->type() );
+ m_mimetypes.insert( (*dit)->type(), (*dit)->type() );
}
}// else done in reparse
}
@@ -681,6 +727,7 @@ void OFileSelector::initializeName()
m_fnLabel = new QLabel( m_boxName );
m_fnLabel->setText( tr("Name:") );
m_edit = new QLineEdit( m_boxName );
+ m_edit->setText( m_name );
//m_boxName->addWidget( m_fnLabel );
m_boxName->setMargin( 5 );
m_boxName->setSpacing( 8 );
@@ -713,6 +760,24 @@ void OFileSelector::initializeYes()
this, SLOT( slotCancel() ) );
}
}
+/*
+ * OK m_mimeCheck is a QComboBox we now want to fill
+ * out that combobox
+ * if automime we need to update the mimetypes
+ */
+void OFileSelector::updateMimeCheck() {
+ m_mimeCheck->clear();
+ if (m_autoMime ) {
+ //m_mimeCheck->insertItem( tr("All") );
+ updateMimes();
+ }
+
+ QMap<QString, QStringList>::Iterator it;
+ for (it = m_mimetypes.begin(); it != m_mimetypes.end(); ++it ) {
+ m_mimeCheck->insertItem( it.key() );
+ }
+}
+
void OFileSelector::initializeChooser()
{
if( m_boxView == 0 ){
@@ -725,12 +790,8 @@ void OFileSelector::initializeChooser()
m_viewCheck->insertItem( tr("Documents") );
m_viewCheck->insertItem( tr("Files") );
m_viewCheck->insertItem( tr("All Files") );
- if(!m_autoMime )
- m_mimeCheck->insertItem(m_mimetypes.join(",") );
- else{
- updateMimes();
- m_mimeCheck->insertStringList( m_mimetypes );
- }
+ updateMimeCheck();
+
connect( m_viewCheck, SIGNAL( activated(const QString & ) ),
this, SLOT( slotViewCheck(const QString & ) ) );
connect( m_mimeCheck, SIGNAL( activated(const QString & ) ),
@@ -876,7 +937,12 @@ bool OFileSelector::compliesMime( const QString &path, const QString &mime )
return true;
return false;
}
+/* check if the mimetype in mime
+ * complies with the one which is current
+ */
+bool OFileSelector::compliesMime( const QString& mime ) {
+}
void OFileSelector::slotFileSelected( const QString &string )
{
if( m_shLne )
@@ -1050,22 +1116,22 @@ void OFileSelector::reparse()
MimeType type( fi->absFilePath() );
if( !m_mimetypes.contains( type.id() ) ){
//qWarning("Type %s", type.id().latin1() );
- m_mimetypes.append( type.id() );
+ m_mimetypes.insert( type.id(), type.id() );
}
++it;
}
// add them to the chooser
- m_mimeCheck->insertItem( tr("All") );
- m_mimeCheck->insertStringList( m_mimetypes );
+ updateMimeCheck();
m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currentMimeType ) );
currentMimeType = m_mimeCheck->currentText();
}
}else { // no autoMime
- currentMimeType = m_mimetypes.join(";");
+ // let the mimetype be set from out side the m_mimeCheck FEATURE
+
if( m_shChooser ){
- m_mimeCheck->clear();
- m_mimeCheck->insertItem(m_mimetypes.join(",") );
+ currentMimeType = m_mimeCheck->currentText();
+ updateMimeCheck();
}
}
// now we got our mimetypes we can add the files