summaryrefslogtreecommitdiff
path: root/libopie/ofileselector/ofileselector.h
authorzecke <zecke>2002-09-15 17:52:30 (UTC)
committer zecke <zecke>2002-09-15 17:52:30 (UTC)
commit1c5780f34ec9b4dc004714488b46997fe1a0909b (patch) (side-by-side diff)
tree524719fe92e4738dbcebf4bc792d6901cf215df9 /libopie/ofileselector/ofileselector.h
parent8c161a2699a842e527ade4410189fd18964d1c31 (diff)
downloadopie-1c5780f34ec9b4dc004714488b46997fe1a0909b.zip
opie-1c5780f34ec9b4dc004714488b46997fe1a0909b.tar.gz
opie-1c5780f34ec9b4dc004714488b46997fe1a0909b.tar.bz2
Ok the demand for filters, listers and views were great so I'm currently
implementing it This OFileSelector will be in a different subdir but it'll be still linked into libopie. This makes it more easy to find all files which belong to the OFileSelector an OLister is able to list for example files and dirs ( OLocalLister ) a ftp lister a bluetooth lister whcich would show available devices a DocLnkSet lister for the Documents Tab a CrossReference lister a View is responsible for showing files to the user... and I renamed *.cc to *.cpp
Diffstat (limited to 'libopie/ofileselector/ofileselector.h') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofileselector/ofileselector.h474
1 files changed, 474 insertions, 0 deletions
diff --git a/libopie/ofileselector/ofileselector.h b/libopie/ofileselector/ofileselector.h
new file mode 100644
index 0000000..937569d
--- a/dev/null
+++ b/libopie/ofileselector/ofileselector.h
@@ -0,0 +1,474 @@
+/*
+ This is based on code and ideas of
+ L. J. Potter ljp@llornkcor.com
+ Thanks a lot
+
+
+               =. This file is part of the OPIE Project
+             .=l. Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
+           .>+-=
+ _;:,     .>    :=|. 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.
+
+*/
+
+#ifndef opiefileselector_h
+#define opiefileselector_h
+
+#include <qpe/fileselector.h>
+
+#include <qdir.h>
+#include <qwidget.h>
+#include <qstring.h>
+#include <qpixmap.h>
+#include <qstringlist.h>
+#include <qmap.h>
+#include <qvaluelist.h>
+
+#include <qpe/applnk.h>
+#include <qlistview.h>
+
+/** This is OPIEs FileDialog Widget. You can use it
+ * as a dropin replacement of the fileselector and
+ * or use any of the new features.
+ * This is also a complete FileSave and FileLoad widget
+ * If you look for a Dialog check OFileDialog
+ *
+ */
+class DocLnk;
+class QCheckBox;
+class QComboBox;
+class QPushButton;
+class QGridLayout;
+class QLineEdit;
+class QLabel;
+class QWidgetStack;
+class QHBoxLayout;
+class QVBoxLayout;
+class QPopupMenu;
+class QFileInfo;
+class QHBox;
+class OFileView;
+//
+
+/* the mimetypes one name and a list of mimetypes */
+typedef QMap< QString, QStringList> MimeTypes;
+
+/**
+ * FIXME later
+ */
+struct OPopupMenuFactory {
+ OPopupMenuFactory() {}
+
+};
+
+
+/**
+ * Opie the default OFileSelector
+ * It features multiple views.
+ */
+class OFileSelector : public QWidget {
+ Q_OBJECT
+
+ /* friends are evil but I don't want to make the
+ * methods public
+ */
+ friend class OLister;
+ friend class OFileView;
+ public:
+ /**
+ * The mode of the file selector
+ * Either open, save, fileselector or dir browsing mode
+ *
+ */
+ enum Mode {Open = 1, Save = 2, Fileselector = 4, Dir = 8 };
+
+ /**
+ * Selector. Either Normal for the one shipped with
+ * libqpe or Extended. for the Extended
+ * ExtendedAll also shows 'hidden' files
+ */
+ enum Selector{Normal=0, Extended = 1, ExtendedAll =2 };
+
+ /**
+ * This is reserved for futrue views
+ */
+ enum View { Dirs = 1, Files = 2, Tree = 4, Icon = 8 };
+
+ /**
+ * A c'tor which should be used for advanced mode
+ * @param wid the parent
+ * @param mode the Mode of the Selector
+ * @param selector the current View of the Selector
+ * @param dirName in which dir to start
+ * @param fileName a proposed filename
+ * @param mimetypes A list of mimetypes \
+ * QString is for a identifier name like "Text files"
+ * the coresponding QStringList is used for the mimetypes
+ * if empty it'll fill the list of mimetypes depending
+ * on the content of the current directory
+ */
+
+ OFileSelector(QWidget *wid, int mode, int selector,
+ const QString &dirName,
+ const QString &fileName = QString::null,
+ const MimeTypes &mimetypes = MimeTypes() );
+
+
+ /**
+ * This is a QPE compatible c'tor
+ */
+ OFileSelector(const QString &mimeFilter, QWidget *parent,
+ const char *name, bool newVisible = TRUE,
+ bool closeVisible = FALSE );
+
+ ~OFileSelector();
+
+ // currently only for the FileSelector Mode
+ /* compability mode but only work
+ * with FileSelector
+ */
+ void setNewVisible( bool /*b*/ );
+ void setCloseVisible(bool /*b*/ );
+
+ // end file selector mode
+ // deprecated
+ void reread();
+ // make sure not to leak please
+ const DocLnk *selected();
+ // end deprecated
+
+ /**
+ * @return if the toolbar is visible
+ */
+ bool isToolbarVisible() const { return m_shTool; };
+
+ /**
+ * @return if the permissionBas is visible
+ */
+ bool isPermissionBarVisible() const { return m_shPerm; };
+
+ /**
+ * @return if the lineEdit is visible
+ */
+ bool isLineEditVisible()const { return m_shLne; };
+
+ /**
+ * if the chooser is visible
+ */
+ bool isChooserVisible( )const { return m_shChooser; };
+
+ /**
+ * @return if the yesCancel Bar is visible
+ */
+ bool isYesCancelVisible()const { return m_shYesNo; };
+
+ /**
+ * set Yes/Cancel visible
+ */
+ void setYesCancelVisible( bool show );
+
+ /**
+ * set the toolbar visible
+ */
+ void setToolbarVisible( bool show );
+
+ /**
+ * set the permissionBar to be visible
+ */
+ void setPermissionBarVisible( bool show );
+
+ /**
+ * set the lineedit for file entering visible
+ */
+ void setLineEditVisible(bool show) ;
+
+ /**
+ * set the chooser is visible
+ */
+ void setChooserVisible( bool chooser );
+
+ /**
+ * The permissionCheckbox
+ *
+ */
+ QCheckBox* permissionCheckbox();
+
+ /**
+ * setPermission
+ */
+ bool setPermission() const;
+
+ /**
+ * set ther permission to bool
+ */
+ void setPermissionChecked( bool check );
+
+ /**
+ * set the Selector Mode
+ */
+ void setMode( int );
+
+ /**
+ * whether or not to show dirs
+ */
+ bool showDirs()const { return m_dir; }
+
+ /**
+ * setShowDirs
+ */
+ void setShowDirs(bool );
+
+ /**
+ * set CaseSensetive
+ */
+ bool isCaseSensetive()const { return m_case; }
+
+ /**
+ * set if to be case sensetive
+ */
+ void setCaseSensetive(bool caSe );
+
+ /**
+ * @return if to show files
+ */
+ bool showFiles()const { return m_files; };
+
+ /**
+ * set if files should be shown
+ */
+ void setShowFiles(bool );
+
+ /**
+ * change dir to path
+ */
+ bool cd(const QString &path );
+
+
+ /**
+ * return the mode of the fileselector
+ */
+ int mode()const { return m_mode; };
+
+ /**
+ * return the selector
+ */
+ int selector()const { return m_selector; };
+
+ /**
+ * set the Selector
+ */
+ void setSelector( int );
+
+ /**
+ * wether or not to show popups
+ */
+ bool showPopup()const { return m_showPopup; };
+
+ /**
+ * set show popups
+ */
+ void setShowPopup( bool pop ) { m_showPopup = pop; }
+
+ /**
+ * set the popup factory
+ */
+ void setPopupFactory( OPopupMenuFactory * );
+
+ /**
+ * reparse the current directory and updates
+ * the views + mimetypes
+ */
+ void reparse(); // re reads the dir
+
+ /**
+ * return the selected name
+ */
+ QString selectedName( )const;
+
+ /**
+ * for multiple selections return multiple
+ * filenames
+ */
+ QStringList selectedNames()const;
+
+ /**
+ * return the complete to the file
+ */
+ QString selectedPath() const;
+
+ /**
+ * return the completed paths
+ */
+ QStringList selectedPaths() const;
+
+ /**
+ * the current directory
+ */
+ QString directory()const;
+
+ /**
+ * fileCount
+ */
+ int fileCount();
+
+ DocLnk selectedDocument()const;
+
+ QValueList<DocLnk> selectedDocuments()const;
+
+ OFileView* currentView();
+ int filter();
+ int sorting();
+
+ signals:
+ void fileSelected( const DocLnk & );
+ void fileSelected( const QString & );
+ void dirSelected(const QString &dir );
+ void dirSelected( const QDir& );
+ void closeMe();
+ void ok();
+ void cancel();
+ void contextMenu();
+
+ private slots:
+ void slotOk();
+ void slotCancel();
+ void slotViewCheck(const QString & );
+ void slotMimeCheck(const QString & );
+ void slotLocationActivated(const QString & );
+ void slotInsertLocationPath(const QString &, int);
+ void locationComboChanged();
+
+ private:
+ void init();
+ void updateMimes();
+
+
+ private:
+
+ FileSelector* m_select;
+ int m_mode, m_selector;
+ QComboBox *m_location, *m_mimeCheck, *m_viewCheck;
+ QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel;
+ QPushButton *m_reread, *m_up, *m_new, *m_close;
+ QListView *m_View;
+ QCheckBox *m_checkPerm;
+ QWidget *m_pseudo;
+ QVBoxLayout *m_pseudoLayout;
+
+ QString m_currentDir;
+ QString m_name;
+// QStringList m_mimetypes;
+ QMap<QString, QStringList> m_mimetypes;
+
+
+ QWidgetStack *m_stack;
+ QVBoxLayout *m_lay;
+ QGridLayout *m_Oselector;
+
+ QHBox *m_boxToolbar;
+ QHBox *m_boxOk; // (no layout anymore) wait
+ QHBox *m_boxName; // (no Layout anymore) wait
+ QHBox *m_boxView;
+
+ QPopupMenu *m_custom;
+
+ QLineEdit *m_edit;
+ QLabel *m_fnLabel;
+
+ bool m_shClose : 1;
+ bool m_shNew : 1;
+ bool m_shTool : 1;
+ bool m_shPerm : 1;
+ bool m_shLne : 1;
+ bool m_shChooser : 1;
+ bool m_shYesNo : 1;
+ bool m_boCheckPerm : 1;
+ bool m_autoMime : 1;
+ bool m_case : 1;
+ bool m_dir : 1;
+ bool m_files : 1;
+ bool m_showPopup : 1;
+
+ void initVars();
+ virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE );
+ virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE );
+ virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){};
+ void delItems();
+ void initializeName();
+ void initializeYes();
+ void initializeChooser();
+ void initializeListView();
+ void initializePerm();
+ void initPics();
+ bool compliesMime(const QString &path,
+ const QString &mime);
+ bool compliesMime(const QString& mime );
+ /**
+ * Updates the QComboBox with the current mimetypes
+ */
+ void updateMimeCheck();
+
+ /**
+ * Returns the current mimetype
+ */
+ QString currentMimeType()const;
+ class OFileSelectorPrivate;
+ OFileSelectorPrivate *d;
+ static QMap<QString,QPixmap> *m_pixmaps;
+
+private slots:
+ void slotFileSelected(const QString & ); // not really meant to be a slot
+ void slotFileBridgeSelected( const DocLnk & );
+ virtual void slotSelectionChanged();
+ virtual void slotCurrentChanged(QListViewItem* );
+ virtual void slotClicked( int, QListViewItem *item, const QPoint &, int);
+ virtual void slotRightButton(int, QListViewItem *, const QPoint &, int );
+ virtual void slotContextMenu( QListViewItem *item);
+ // listview above
+ // popup below
+ virtual void slotChangedDir();
+ virtual void slotOpen();
+ virtual void slotRescan();
+ virtual void slotRename();
+ virtual void slotDelete();
+ virtual void cdUP();
+ virtual void slotHome();
+ virtual void slotDoc();
+ virtual void slotNavigate( );
+
+ /* for OLister */
+private:
+
+ /* for OFileView */
+private:
+ void internFileSelected( const QString& );
+ void internFileSelected( const DocLnk& );
+ void internContextMenu();
+ void internChangedDir( const QString& );
+ void internChangedDir( const QDir& ) ;
+
+};
+
+
+#endif
+