From f78e31382d4e4076a4fb2017c22574859e7afdb3 Mon Sep 17 00:00:00 2001
From: zecke <zecke>
Date: Wed, 27 Mar 2002 23:29:41 +0000
Subject: updates

---
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index 53616f7..c9abde1 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -38,6 +38,8 @@
 #include <qlabel.h>
 
 #include <qpe/fileselector.h>
+#include <qpe/applnk.h>
+#include <qpe/global.h>
 
 #include "ofileselector.h"
 
@@ -49,6 +51,9 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString
   m_currentDir = dirName;
   m_name = fileName;
   m_mimetypes = mimetypes;
+  if( mimetypes.isEmpty() )
+    m_autoMime = true;
+
   m_mode = mode;
   m_shTool = true;
   m_shPerm = true;
@@ -82,6 +87,7 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString
 
   m_lay = new QVBoxLayout(this);
   init();
+  m_edit->setText( fileName );
 }
 
 // let's initialize the gui
@@ -326,28 +332,82 @@ void OFileSelector::initializeChooser()
   m_viewCheck->insertItem(tr("Files") );
   m_viewCheck->insertItem(tr("All Files") );
 
+  if(!m_autoMime )
+    m_mimeCheck->insertItem(m_mimetypes.join("," ) );
+  else{ // check
+    updateMimes();
+    m_mimeCheck->insertStringList( m_mimetypes );
+  }
+
   connect( m_viewCheck, SIGNAL(activated(const QString &) ),
 	   this, SLOT(slotViewCheck(const QString & ) ) );
-  
+
+  connect( m_mimeCheck, SIGNAL(activated(const QString &) ),
+	   this, SLOT(slotMimeCheck(const QString & ) ) );
 }
+void OFileSelector::slotMimeCheck(const QString &view ){
+  if(m_selector == NORMAL ){
+    delete m_select;
+    m_select = new FileSelector(view == "All" ? QString::null : view 
+				, m_stack, "fileselector", FALSE, FALSE );
+    m_stack->addWidget( m_select, NORMAL );
+    m_stack->raiseWidget( NORMAL );
+  }else{
 
 
+  }
+}
+
 void OFileSelector::slotViewCheck(const QString &view ){
   qWarning("changed: show %s", view.latin1() );
   // if the current view is the one
-
+  QString currMime = m_mimeCheck->currentText();
   if( view == QString::fromLatin1("Documents") ){
     // get the mimetype now
     // check if we're the current widget and return
+    delete m_select;
+    m_select = new FileSelector( currMime == "All" ? QString::null : currMime,
+				 m_stack,"fileselector", FALSE, FALSE );
+    m_stack->addWidget( m_select, NORMAL );
+    m_stack->raiseWidget( NORMAL );
+    m_selector = NORMAL;
+
   }else if(view == QString::fromLatin1("Files") ){
     if( m_select != 0 ){
       // remove from the stack
       delete m_select;
       m_select = 0;
+      m_selector = EXTENDED;
+      // create the ListView or IconView
+
+      reparse();
     }
   }else if(view == QString::fromLatin1("All Files") ) {
     // remove from the stack
     delete m_select;
     m_select = 0;
+    m_selector = EXTENDED_ALL;
+
+    reparse();
   };
 };
+
+
+void OFileSelector::updateMimes() // lets check which mode is active
+  // check the current dir for items then
+{
+  m_mimetypes.clear();
+  m_mimetypes.append("All" );
+  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() );
+    }
+  }else{
+
+
+  }
+};
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h
index 3f53fa9..757a960 100644
--- a/libopie/ofileselector.h
+++ b/libopie/ofileselector.h
@@ -84,7 +84,8 @@ class OFileSelector : public QWidget {
   Q_OBJECT
  public:
   enum Mode {OPEN=1, SAVE, FILESELECTOR };
-  enum Selector{NORMAL=1, EXTENDED };
+  enum Selector{NORMAL=1, EXTENDED = 2, EXTENDED_ALL =4 };
+  enum View { DIRS = 1, FILES = 2, TREE = 4, ICON = 8 };
   OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName, const QString &fileName = QString::null, const QStringList mimetypes = QStringList() );
 
   bool showToolbar() const { return m_shTool;  };
@@ -123,8 +124,10 @@ class OFileSelector : public QWidget {
   void slotOk();
   void slotCancel();
   void slotViewCheck(const QString & );
+  void slotMimeCheck(const QString & );
  protected:
   void init();
+  void updateMimes();
   int m_mode, m_selector;
   QComboBox *m_location, *m_mimeCheck, *m_viewCheck;
   QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel;
@@ -154,6 +157,7 @@ class OFileSelector : public QWidget {
   bool m_shChooser:1;
   bool m_shYesNo:1;
   bool m_boCheckPerm:1;
+  bool m_autoMime:1;
 
  protected:
 
--
cgit v0.9.0.2