From 7c7e333e184d93f2c6812c9a3c69f734058eabd6 Mon Sep 17 00:00:00 2001
From: zecke <zecke>
Date: Wed, 27 Mar 2002 21:16:14 +0000
Subject: here comes the skeleton of the new fileselector.

Please comment on the api? Sissi are you reading this?
Please send me input
---
(limited to 'libopie')

diff --git a/libopie/libopie.pro b/libopie/libopie.pro
index ab56473..4ba2836 100644
--- a/libopie/libopie.pro
+++ b/libopie/libopie.pro
@@ -1,7 +1,7 @@
 TEMPLATE        = lib
 CONFIG          += qte warn_on release
-HEADERS 	= tododb.h todoevent.h todoresource.h todovcalresource.h xmltree.h oconfig.h
-SOURCES		= xmltree.cc tododb.cpp todoevent.cpp todovcalresource.cpp oconfig.cpp
+HEADERS 	= ofileselector.h tododb.h todoevent.h todoresource.h todovcalresource.h xmltree.h oconfig.h
+SOURCES		= ofileselector.cc xmltree.cc tododb.cpp todoevent.cpp todovcalresource.cpp oconfig.cpp
 TARGET		= opie
 INCLUDEPATH += $(OPIEDIR)/include
 DESTDIR         = $(QTDIR)/lib$(PROJMAK)
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
new file mode 100644
index 0000000..53616f7
--- a/dev/null
+++ b/libopie/ofileselector.cc
@@ -0,0 +1,353 @@
+/*
+� � � � � � � �=.            This file is part of the OPIE Project
+� � � � � � �.=l.            Copyright (c)  2002 <>
+� � � � � �.>+-=
+�_;:, � � .> � �:=|.         This library is free software; you can 
+.> <`_, � > �. � <=          redistribute it and/or  modify it under
+:`=1 )Y*s>-.-- � :           the terms of the GNU Library General Public
+.="- .-=="i, � � .._         License as published by the Free Software
+�- . � .-<_> � � .<>         Foundation; either version 2 of the License,
+� � �._= =} � � � :          or (at your option) any later version.
+� � .%`+i> � � � _;_.        
+� � .i_,=:_. � � �-<s.       This library is distributed in the hope that  
+� � �+ �. �-:. � � � =       it will be useful,  but WITHOUT ANY WARRANTY;
+� � : .. � �.:, � � . . .    without even the implied warranty of
+� � =_ � � � �+ � � =;=|`    MERCHANTABILITY or FITNESS FOR A
+� _.=:. � � � : � �:=>`:     PARTICULAR PURPOSE. See the GNU
+..}^=.= � � � = � � � ;      Library General Public License for more
+++= � -. � � .` � � .:       details.
+�: � � = �...= . :.=-        
+�-. � .:....=;==+<;          You should have received a copy of the GNU
+� -_. . . � )=. �=           Library General Public License along with
+� � -- � � � �:-=`           this library; see the file COPYING.LIB. 
+                             If not, write to the Free Software Foundation,
+                             Inc., 59 Temple Place - Suite 330,
+                             Boston, MA 02111-1307, USA.
+
+*/
+
+#include <qnamespace.h>
+#include <qpushbutton.h>
+#include <qcombobox.h>
+#include <qhbox.h>
+#include <qvbox.h>
+#include <qlayout.h>
+#include <qwidgetstack.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+
+#include <qpe/fileselector.h>
+
+#include "ofileselector.h"
+
+
+OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName,
+			     const QString &fileName, const QStringList mimetypes ) : QWidget( wid )
+{
+  m_selector = selector;
+  m_currentDir = dirName;
+  m_name = fileName;
+  m_mimetypes = mimetypes;
+  m_mode = mode;
+  m_shTool = true;
+  m_shPerm = true;
+  m_shLne = true;
+  m_shChooser = true;
+  m_shYesNo = true;
+  // for FILESELECTOR only view is interesting
+  m_location = 0;
+  m_homeButton = 0;
+  m_docButton = 0;
+  m_hideButton = 0;
+  m_ok = 0;
+  m_cancel = 0;
+  m_reread = 0;
+  m_up = 0;
+  m_View = 0;
+  m_select = 0;
+  m_stack = 0;
+
+  m_select = 0;
+  m_stack = 0;
+  m_lay = 0;
+  m_boxToolbar = 0;
+  m_boxOk = 0;
+  m_edit = 0;
+
+  m_fnLabel = 0;
+  m_checkPerm = 0;
+  m_mimeCheck = 0;
+  m_viewCheck = 0;
+
+  m_lay = new QVBoxLayout(this);
+  init();
+}
+
+// let's initialize the gui
+/**
+   --------------------
+   | cmbBox   Button  |
+   --------------------
+   | FileSlector      |
+   |       or         |
+   | OSelector        |
+   |                  |
+   |                  |
+   ____________________
+   | LineEdit         |
+   ____________________
+   | Permission Bar   |
+   ____________________
+   | ViewChoose       |
+   ____________________
+   | Save       Cancel|
+   ____________________
+ */
+void OFileSelector::delItems()
+{
+  QLayoutIterator it = m_lay->iterator();
+  while ( it.current() != 0 ){
+    it.deleteCurrent();
+  }
+}
+void OFileSelector::init()
+{
+
+  m_stack = new QWidgetStack(this, "wstack" );
+  m_select = new FileSelector(m_mimetypes.join(";"), m_stack, "fileselector", FALSE, FALSE );
+  m_stack->addWidget(m_select, NORMAL );
+  m_lay->addWidget(m_stack );
+  m_stack->raiseWidget(NORMAL );
+
+  if(m_shLne ){ 
+    initializeName();
+  }
+
+  if(m_shPerm ){
+    m_checkPerm = new QCheckBox(tr("Set Permission"), this, "Permission" );
+    m_checkPerm->setChecked( false );
+    m_lay->addWidget(m_checkPerm ); 
+  }
+
+  if( m_shChooser )
+    initializeChooser();
+
+  if(m_shYesNo )
+    initializeYes();
+ 
+  
+};
+
+void OFileSelector::setShowYesCancel( bool show )
+{
+  if ( show == m_shYesNo )
+    return;
+  m_shYesNo = show;
+  if( !show ){
+    delete m_ok;
+    delete m_cancel; 
+    m_ok = 0;
+    m_cancel = 0;
+    // delete m_boxOk; all ready deleted in delItems
+  }
+  updateLay(); // recreate it and save the other states
+}
+
+void OFileSelector::setShowToolbar( bool show )
+{
+  if ( m_shTool == show )
+    return;
+  /*  if( show ){
+
+  }else {
+
+  }*/
+}
+
+void OFileSelector::setShowPermissionBar( bool show )
+{
+  if( show == m_shPerm )
+    return;
+
+  m_shPerm = show;
+
+  updateLay();
+}
+void OFileSelector::setShowLineEdit( bool show )
+{
+  if( show == m_shLne )
+    return;
+
+  m_shLne = show;
+  if( !show ){
+    delete m_edit;
+    delete m_fnLabel;
+    m_edit = 0;
+    m_fnLabel = 0;
+    //delete m_boxName; will be deleted 
+  }
+  updateLay();
+}
+void OFileSelector::setShowChooser( bool show )
+{
+  if( show = m_shChooser )
+    return;
+  m_shChooser = show;
+  if( !show ){
+    delete m_mimeCheck;
+    delete m_viewCheck;
+    m_mimeCheck = 0;
+    m_viewCheck = 0;
+  }
+  updateLay();
+}
+QCheckBox* OFileSelector::permissionCheckbox( )
+{
+  return m_checkPerm;
+}
+bool OFileSelector::setPermission( ) const
+{
+  if( m_checkPerm == 0 )
+    return false;
+  else
+    return m_checkPerm->isChecked(); 
+}
+void OFileSelector::setPermissionChecked( bool check )
+{
+  if( m_checkPerm == 0 )
+    return;
+  m_checkPerm->setChecked( check );
+}
+QString OFileSelector::selectedName( )
+{
+  QString string;
+  return string;
+}
+const DocLnk* OFileSelector::selectedDocument( )const
+{
+  return 0;
+}
+void OFileSelector::updateLay()
+{
+  /* if( m_shTool )
+    //
+  else
+    // hide
+  */
+  // save the state
+  bool check = false;
+  if( m_checkPerm != 0 )
+    check = m_checkPerm->isChecked();
+  QString text;
+
+  if( m_edit != 0 )
+    text = m_edit->text();
+  // save current mimetype
+
+  delItems();
+  delete m_checkPerm;
+  delete m_edit;
+  delete m_fnLabel;
+  delete m_ok;
+  delete m_cancel;
+  delete m_mimeCheck;
+  delete m_viewCheck;
+  delete m_select; // test
+  delete m_stack;
+  //delete m_list;
+  init();
+  if( m_shLne )
+    m_edit->setText(text );
+  if( m_shPerm )
+    m_checkPerm->setChecked(check );
+}
+void OFileSelector::reparse()
+{
+
+}
+QString OFileSelector::directory()
+{
+  QString string;
+  return string;
+}
+int OFileSelector::fileCount()
+{
+  return 0;
+}
+void OFileSelector::slotOk( )
+{
+  emit ok();
+}
+void OFileSelector::slotCancel( )
+{
+  emit cancel();
+}
+
+void OFileSelector::initializeName()
+{
+  m_boxName = new QHBoxLayout(this );
+  m_edit = new QLineEdit(this );
+  m_fnLabel = new QLabel(this );
+  m_fnLabel->setText(tr("Name:") );
+  m_boxName->addWidget(m_fnLabel );
+  m_boxName->insertSpacing(1, 8 );
+  m_boxName->addWidget(m_edit, 100 );
+
+  m_lay->addLayout(m_boxName);
+}
+void OFileSelector::initializeYes()
+{
+  m_ok = new QPushButton("&Save", this, "save" );
+  m_cancel = new QPushButton("C&ancel", this, "cancel" );
+  m_boxOk = new QHBoxLayout(this );
+  m_boxOk->addWidget( m_ok, Qt::AlignHCenter );
+  m_boxOk->insertSpacing(1, 8 );
+  m_boxOk->addWidget( m_cancel, Qt::AlignHCenter);
+  m_lay->addLayout(m_boxOk );
+  connect(m_ok, SIGNAL(clicked() ),
+	  this, SLOT(slotOk() )  );
+  connect(m_cancel, SIGNAL(clicked() ),
+	  this, SLOT(slotCancel() )  );
+
+}
+void OFileSelector::initializeChooser()
+{
+  m_boxView = new QHBoxLayout(this );
+
+  m_mimeCheck = new QComboBox(this, "mime check");
+  m_viewCheck = new QComboBox(this, "view check");
+  m_boxView->addWidget(m_viewCheck, 0 );
+  m_boxView->insertSpacing(1, 8 );
+  m_boxView->addWidget(m_mimeCheck, 0 );
+  m_lay->addLayout(m_boxView );
+
+  m_viewCheck->insertItem(tr("Documents") );
+  m_viewCheck->insertItem(tr("Files") );
+  m_viewCheck->insertItem(tr("All Files") );
+
+  connect( m_viewCheck, SIGNAL(activated(const QString &) ),
+	   this, SLOT(slotViewCheck(const QString & ) ) );
+  
+}
+
+
+void OFileSelector::slotViewCheck(const QString &view ){
+  qWarning("changed: show %s", view.latin1() );
+  // if the current view is the one
+
+  if( view == QString::fromLatin1("Documents") ){
+    // get the mimetype now
+    // check if we're the current widget and return
+  }else if(view == QString::fromLatin1("Files") ){
+    if( m_select != 0 ){
+      // remove from the stack
+      delete m_select;
+      m_select = 0;
+    }
+  }else if(view == QString::fromLatin1("All Files") ) {
+    // remove from the stack
+    delete m_select;
+    m_select = 0;
+  };
+};
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h
index 405a3ce..3f53fa9 100644
--- a/libopie/ofileselector.h
+++ b/libopie/ofileselector.h
@@ -37,6 +37,7 @@
 #include <qwidget.h>
 #include <qstring.h>
 #include <qpixmap.h>
+#include <qstringlist.h>
 
 #include <qlistview.h>
 /** This is OPIEs FileDialog Widget. You can use it
@@ -52,12 +53,17 @@ class QComboBox;
 class QPushButton;
 class FileSelector;
 class QGridLayout;
+class QLineEdit;
+class QLabel;
+class QWidgetStack;
+class QHBoxLayout;
+class QVBoxLayout;
 
 class OFileSelectorItem : public QListViewItem {
  public:
-  OFileSelectorItem(const QPixmap &pixmap, const QString &path,
+  OFileSelectorItem(QListView *view, const QPixmap &pixmap, const QString &path,
 		    const QString &date, const QString &size,
-		    bool isDir=false ){
+		    bool isDir=false ): QListViewItem(view) {
     setPixmap(0, pixmap );
     setText(1, path );
     setText(2, size );
@@ -79,11 +85,14 @@ class OFileSelector : public QWidget {
  public:
   enum Mode {OPEN=1, SAVE, FILESELECTOR };
   enum Selector{NORMAL=1, EXTENDED };
-  OFileSelector(int mode, const QString &dirName, const QString &fileName = Qtring::null, const QStringList mimetypes = QStringList() );
-  bool showToolbar() const;
-  bool showPermissionBar() const;
-  bool showLineEdit()const;
-  bool showChooser( )const;
+  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;  };
+  bool showPermissionBar() const {  return m_shPerm; };
+  bool showLineEdit()const { return m_shLne; };
+  bool showChooser( )const { return m_shChooser; };
+  bool showYesCancel()const { return m_shYesNo;  };
+  void setShowYesCancel( bool show );
   void setShowToolbar( bool show );
   void setShowPermissionBar( bool show );
   void setShowLineEdit(bool show) ;
@@ -92,10 +101,12 @@ class OFileSelector : public QWidget {
   bool setPermission() const;
   void setPermissionChecked( bool check );
   void setMode( int );
-  int mode()const;
-
+  int mode()const { return m_mode;  };
+  int selector()const { return m_selector; };
+  void setSelector( int );
   QString selectedName( );
   const DocLnk* selectedDocument()const;
+  void updateLay();
 
   void reparse(); // re reads the dir
   QString directory();
@@ -107,29 +118,51 @@ class OFileSelector : public QWidget {
   void closeMe();
   void ok();
   void cancel();
- protected:
+
+ protected slots:
   void slotOk();
   void slotCancel();
-
+  void slotViewCheck(const QString & );
+ protected:
+  void init();
   int m_mode, m_selector;
-  QComboBox *m_location;
+  QComboBox *m_location, *m_mimeCheck, *m_viewCheck;
   QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel;
   QPushButton  *m_reread, *m_up;
   QListView *m_View;
+  QCheckBox *m_checkPerm;
+
   QString m_currentDir;
-  FileSelector *m_Select;
+  QString m_name;
+  QStringList m_mimetypes;
+
+  FileSelector *m_select;
   QWidgetStack *m_stack;
-  QGridLayout *m_lay;
-  QHBox *m_toolbar;
-  QHBox *m_ok;
+  QVBoxLayout *m_lay;
+  QGridLayout *m_Oselector;
+
+  QHBoxLayout *m_boxToolbar;
+  QHBoxLayout *m_boxOk;
+  QHBoxLayout *m_boxName;
+  QHBoxLayout *m_boxView;
+
+  QLineEdit *m_edit;
+  QLabel *m_fnLabel;
   bool m_shTool:1;
   bool m_shPerm:1;
   bool m_shLne:1;
   bool m_shChooser:1;
+  bool m_shYesNo:1;
+  bool m_boCheckPerm:1;
 
  protected:
 
  private:
+  void delItems();
+  void initializeName();
+  void initializeYes();
+  void initializeChooser();
+
   class OFileSelectorPrivate;
   OFileSelectorPrivate *d;
 
--
cgit v0.9.0.2