summaryrefslogtreecommitdiff
authorzecke <zecke>2002-10-06 15:40:28 (UTC)
committer zecke <zecke>2002-10-06 15:40:28 (UTC)
commit8d3e63d01c9a37dfd27f3b6bd9429c8a0274d90f (patch) (side-by-side diff)
treefb73b4dd7035b56fd7271a689e80bc2c2067c719
parent24393565a48df6bb65516c25c124280724af9a75 (diff)
downloadopie-8d3e63d01c9a37dfd27f3b6bd9429c8a0274d90f.zip
opie-8d3e63d01c9a37dfd27f3b6bd9429c8a0274d90f.tar.gz
opie-8d3e63d01c9a37dfd27f3b6bd9429c8a0274d90f.tar.bz2
As promised here is the switching
It's working as expected I'll clean up it a bit fix some UI bugs and then put it into the libopie.pro
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie/ofileselector/ofileselector.cpp100
-rw-r--r--libopie/ofileselector/ofileselector.h8
2 files changed, 94 insertions, 14 deletions
diff --git a/libopie/ofileselector/ofileselector.cpp b/libopie/ofileselector/ofileselector.cpp
index 91a510f..7f38f5b 100644
--- a/libopie/ofileselector/ofileselector.cpp
+++ b/libopie/ofileselector/ofileselector.cpp
@@ -346,55 +346,49 @@ DocLnk OFileSelector::selectedDocument() const
}
return lnk;
}
QValueList<DocLnk> OFileSelector::selectedDocuments() const
{
QValueList<DocLnk> docs;
docs.append( selectedDocument() );
return docs;
}
// slots internal
void OFileSelector::slotOk()
{
emit ok();
}
void OFileSelector::slotCancel()
{
emit cancel();
}
/* switch the views */
void OFileSelector::slotViewCheck(const QString &sel)
{
- if( sel == tr("Documents" ) ){
- initializeOldSelector();
- m_selector = Normal;
-
- }else {
-;
- }
+ setView( sel );
}
QString OFileSelector::currentMimeType() const{
QString mime;
QString currentText;
if (m_shChooser && m_mimeCheck )
currentText = m_mimeCheck->currentText();
qWarning("CurrentText" + 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)
@@ -453,49 +447,48 @@ void OFileSelector::slotInsertLocationPath(const QString &currentPath, int count
* Do not crash anymore
* don't try to change dir to a file
*/
void OFileSelector::locationComboChanged()
{
QFileInfo info( m_location->lineEdit()->text() );
qWarning("info %s %s", info.dirPath(true).latin1(), m_location->lineEdit()->text().latin1() );
if (info.isFile() )
cd(info.dirPath(TRUE) ); //absolute path
else
cd( m_location->lineEdit()->text() );
reparse();
}
void OFileSelector::init()
{
initFactory();
m_lay = new QVBoxLayout( this );
m_lay->setSpacing(0 );
/* take care of the main view... */
initToolbar();
/* initialize the file lister */
- initLister();
if( m_selector == Normal ){
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(";");
}
}
initializeOldSelector();
}else{
initializeView();
}
if( m_shLne ) // the LineEdit with the current FileName
initializeName();
if( m_shPerm ) // the Permission QCheckBox
initializePerm();
if( m_shChooser ) // the Chooser for the view and Mimetypes
initializeChooser();
if( m_shYesNo ) // the Yes No button row
@@ -627,48 +620,49 @@ void OFileSelector::initializeYes()
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 ){
m_boxView = new QHBox( this );
m_viewCheck = new QComboBox( m_boxView, "view check");
m_mimeCheck = new QComboBox( m_boxView, "mime check");
m_boxView->setSpacing( 8 );
m_lay->addWidget(m_boxView, 0 );
updateMimeCheck();
+ fillList();
connect( m_viewCheck, SIGNAL( activated(const QString & ) ),
this, SLOT( slotViewCheck(const QString & ) ) );
connect( m_mimeCheck, SIGNAL( activated(const QString & ) ),
this, SLOT( slotMimeCheck( const QString & ) ) );
}
}
/* generate the buttons for the toolbar */
void OFileSelector::initToolbar() {
m_mainView = new OFileSelectorMain( this );
/* now generate the tool bar */
qWarning( "toolbar" );
m_pseudo = new QWidget( m_mainView, "Pseudo Widget" );
m_pseudoLayout = new QVBoxLayout( m_pseudo );
m_boxToolbar = new QHBox( m_pseudo );
m_boxToolbar->setSpacing( 0 );
// tool bar members now
m_location = new QComboBox( m_boxToolbar );
m_location->setEditable( TRUE );
m_location->setDuplicatesEnabled( FALSE );
connect( m_location, SIGNAL(activated(const QString& ) ),
@@ -702,52 +696,48 @@ void OFileSelector::initToolbar() {
// close button
m_close = new QPushButton( Resource::loadIconSet( "close"), "",
m_boxToolbar );
connect( m_close, SIGNAL(clicked() ), this, SIGNAL(closeMe() ) );
m_close->setFixedSize( 20, 20 );
m_boxToolbar->setFixedHeight( 20 );
m_pseudoLayout->addWidget(m_boxToolbar );
/* init the locations */
initLocations();
if( !m_shTool ){
m_location->hide( );
m_up->hide( );
m_homeButton->hide( );
m_docButton->hide( );
}
if(!m_shClose )
m_close->hide();
m_mainView->setToolbar( m_pseudo );
m_lay->addWidget( m_mainView, 100 );
}
-/* initialize the OLocalLister */
-void OFileSelector::initLister() {
- m_lister = new OLocalLister(this);
-}
/* put default locations into the bar */
void OFileSelector::initLocations () {
// let;s fill the Location ComboBox
StorageInfo storage;
const QList<FileSystem> &fs = storage.fileSystems();
QListIterator<FileSystem> it ( fs );
for( ; it.current(); ++it ){
const QString disk = (*it)->name();
const QString path = (*it)->path();
m_location->insertItem(path+ "<-"+disk );
}
int count = m_location->count();
m_location->insertItem( m_currentDir );
m_location->setCurrentItem( count );
}
void OFileSelector::initializePerm()
{
if( m_checkPerm == 0 ){
m_checkPerm = new QCheckBox(tr("Set Permission"), this, "perm");
m_checkPerm->setChecked( false );
m_lay->addWidget( m_checkPerm );
}
@@ -918,59 +908,127 @@ void OFileSelector::reparse()
updateMimeCheck();
m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currentMimeType ) );
currentMimeType = m_mimeCheck->currentText();
}
}else { // no autoMime
// let the mimetype be set from out side the m_mimeCheck FEATURE
if( m_shChooser )
currentMimeType = m_mimeCheck->currentText();
}
// now we got our mimetypes we can add the files
currentLister()->reparse( m_currentDir );
/* we're done with adding let's sort */
currentView()->sort();
if( m_shTool ){
m_location->insertItem( m_currentDir );
}
// reenable painting and updates
}
+/* switch lister to @param lister */
+void OFileSelector::setLister(const QString& lister) {
+ QStringList listerList = factory()->lister();
+
+ if (listerList.contains(lister) ) {
+ delete (OLister*) m_lister;
+ m_lister = factory()->lister( lister, this );
+ }else if (!m_lister ) {
+ /*
+ * if we do not have a lister
+ * we need to take the default one
+ */
+ m_lister = new OLocalLister(this);
+ }
+ m_listerName = lister;
+}
+void OFileSelector::setView( const QString& lis ) {
+ qWarning("setView ");
+ fillList();
+ if ( lis == tr("Documents") ) {
+ m_selector = Normal;
+ delete m_lister;
+ delete m_fileView;
+ m_lister = 0l;
+ m_fileView = 0l;
+ initializeOldSelector();
+ }else {
+ QString list;
+ delete m_lister;
+ delete m_fileView;
+ delete m_select;
+ m_lister =0l;
+ m_fileView = 0l;
+ m_select = 0l;
+ if ( lis.startsWith("All") ) {
+ m_selector = ExtendedAll;
+ list = lis.mid(4 ).stripWhiteSpace();
+ } else{
+ list = lis;
+ m_selector = Extended;
+ }
+ setLister(m_listerName);
+ m_fileView = factory()->view( list, this, m_mainView );
+ m_mainView->setWidget( m_fileView->widget() );
+ reparse();
+ }
+}
/*
* the factory
*/
void OFileSelector::initFactory() {
m_fileFactory = new OFileFactory();
m_fileFactory->addLister(tr("Files"), newLocalLister );
m_fileFactory->addView(tr("List View"), newFileListView );
/* the factory is just a dummy */
m_fileFactory->addView(tr("Documents"), newFileListView );
}
+void OFileSelector::fillList() {
+ qWarning("fill list");
+ if (!m_viewCheck )
+ return;
+
+ m_viewCheck->clear();
+ QStringList list = factory()->views();
+ qWarning("views: " + list.join(";") );
+ for (QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
+ qWarning( (*it) );
+ if ( (*it) == tr("Documents") ) {
+ m_viewCheck->insertItem( (*it) );
+ }else{
+ m_viewCheck->insertItem( (*it) );
+ m_viewCheck->insertItem( tr("All ") + (*it) );
+ }
+ }
+}
+OFileFactory* OFileSelector::factory() {
+ return m_fileFactory;
+}
OFileView* OFileSelector::currentView() {
return m_fileView;
}
OFileView* OFileSelector::currentView() const{
return m_fileView;
}
int OFileSelector::filter() {
int filter;
if ( m_selector == ExtendedAll )
filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
else
filter = QDir::Files | QDir::Dirs | QDir::All ;
return filter;
}
int OFileSelector::sorting() {
int sort;
if (m_case )
sort = ( QDir::IgnoreCase | QDir::Name | QDir::DirsFirst | QDir::Reversed );
else
sort = ( QDir::Name | QDir::DirsFirst | QDir::Reversed );
@@ -1001,24 +1059,42 @@ OLister* OFileSelector::currentLister()const {
return m_lister;
}
void OFileSelector::initializeOldSelector() {
qWarning("initializeOldSelector");
delete m_select;
// we need to initialize but keep the selected mimetype
/* we default not to show close and new buttons */
QString mime = currentMimeType();
qWarning("MimeType " + mime );
m_select = new FileSelector( mime ,
m_mainView, "fileselector",
FALSE, FALSE);
m_select->setCategorySelectVisible( FALSE );
m_select->setTypeComboVisible( FALSE );
connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
connect(m_select, SIGNAL(closeMe() ),
this, SIGNAL(closeMe() ) );
//connect to close me and other signals as well
m_mainView->setWidget( m_select );
}
+/*
+ * initialize the listview
+ * we will call fillList
+ * setLister
+ * with QString::null to get the default
+ * setView with either Files or All Files
+ * depending on Extended
+ */
+void OFileSelector::initializeView() {
+ setLister(QString::null);
+ fillList();
+ if (m_selector == Extended ) {
+ setView( tr("Files") );
+ }else{
+ setView( tr("All Files") );
+ }
+}
+
diff --git a/libopie/ofileselector/ofileselector.h b/libopie/ofileselector/ofileselector.h
index 3e834fb..76c3ced 100644
--- a/libopie/ofileselector/ofileselector.h
+++ b/libopie/ofileselector/ofileselector.h
@@ -16,48 +16,49 @@
    .%`+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 <qguardedptr.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;
@@ -210,48 +211,50 @@ class OFileSelector : public QWidget {
*/
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 );
+ void setLister( const QString& name );
+ void setView( const QString& all );
/**
* 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; };
@@ -356,48 +359,49 @@ class OFileSelector : public QWidget {
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:
OFileFactory* m_fileFactory;
OFileSelectorMain* m_mainView;
OLister* m_lister;
+ QString m_listerName;
OFileView* m_fileView;
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;
QMap<QString, QStringList> m_mimetypes;
@@ -425,52 +429,52 @@ class OFileSelector : public QWidget {
bool m_autoMime : 1;
bool m_case : 1;
bool m_dir : 1;
bool m_files : 1;
bool m_showPopup : 1;
bool m_showHidden : 1;
void initVars();
void delItems();
void initializeName();
void initializeYes();
void initializeChooser();
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();
void initializeOldSelector();
- void initLister();
void initToolbar();
void initLocations();
- void initializeView() {}; // FIXME
+ void initializeView(); // FIXME
+ void fillList();
void initFactory();
/**
* 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 & );
// listview above
// popup below
virtual void slotDelete();
virtual void cdUP();
virtual void slotHome();
virtual void slotDoc();
virtual void slotNavigate( );
/* for OLister */
private:
/* for OFileView */