-rw-r--r-- | libopie/libopie.pro | 4 | ||||
-rw-r--r-- | libopie/ofileselector.cc | 353 | ||||
-rw-r--r-- | libopie/ofileselector.h | 65 |
3 files changed, 404 insertions, 18 deletions
diff --git a/libopie/libopie.pro b/libopie/libopie.pro index ab56473..4ba2836 100644 --- a/libopie/libopie.pro +++ b/libopie/libopie.pro @@ -1,8 +1,8 @@ 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) #VERSION = 1.0.0
\ No newline at end of file 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 @@ -1,139 +1,172 @@ /* This is based on code and idea 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 <qwidget.h> #include <qstring.h> #include <qpixmap.h> +#include <qstringlist.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 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 ); setText(3, date ); dir = isDir; } bool isDir()const{ return dir; } QString path()const{ return text(1 ); } private: bool dir:1; }; class OFileSelector : public QWidget { Q_OBJECT 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) ; void setShowChooser( bool chooser ); QCheckBox* permissionCheckbox(); 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(); int fileCount(); signals: void fileSelected( const DocLnk & ); void fileSelected( const QString & ); 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; }; #endif |