summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie/ofileselector/ofilelistview.cpp85
-rw-r--r--libopie/ofileselector/ofilelistview.h7
-rw-r--r--libopie/ofileselector/ofileselector.cpp261
-rw-r--r--libopie/ofileselector/ofileselector.h35
-rw-r--r--libopie/ofileselector/ofileview.cpp7
-rw-r--r--libopie/ofileselector/ofileview.h2
6 files changed, 140 insertions, 257 deletions
diff --git a/libopie/ofileselector/ofilelistview.cpp b/libopie/ofileselector/ofilelistview.cpp
index 7108a5b..bb15764 100644
--- a/libopie/ofileselector/ofilelistview.cpp
+++ b/libopie/ofileselector/ofilelistview.cpp
@@ -1,7 +1,10 @@
+#include <qheader.h>
+
#include <qpe/mimetype.h>
#include <qpe/resource.h>
+#include <qpe/qpeapplication.h>
#include "ofileselector.h"
#include "ofileselectoritem.h"
#include "ofilelistview.h"
@@ -9,9 +12,31 @@
OFileListView::OFileListView( QWidget* parent, OFileSelector* sel)
: QListView( parent ), OFileView( sel )
{
-
+ QPEApplication::setStylusOperation( viewport(),
+ QPEApplication::RightOnHold);
+ addColumn(" " );
+ addColumn(tr("Name"), 135 );
+ addColumn(tr("Size"), -1 );
+ addColumn(tr("Date"), 60 );
+ addColumn(tr("Mime Type"), -1 );
+ QHeader *head = header();
+ head->hide();
+ setSorting( 1 );
+ setAllColumnsShowFocus( TRUE );
+
+ connect(this, SIGNAL(selectionChanged() ),
+ this, SLOT(slotSelectionChanged() ) );
+
+ connect(this, SIGNAL(currentChanged(QListViewItem *) ),
+ this, SLOT(slotCurrentChanged(QListViewItem * ) ) );
+
+ connect(this, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ),
+ this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
+
+ connect(this, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )),
+ this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
}
OFileListView::~OFileListView() {
}
@@ -122,4 +147,62 @@ QStringList OFileListView::selectedPaths()const {
}
int OFileListView::fileCount() {
return childCount();
}
+void OFileListView::sort() {
+ QListView::sort();
+}
+void OFileListView::slotSelectionChanged() {
+
+}
+void OFileListView::slotCurrentChanged( QListViewItem* item) {
+ if (!item )
+ return;
+
+ OFileSelectorItem* sel = (OFileSelectorItem*) item;
+
+ qWarning("current changed");
+ if(!sel->isDir() ){
+ updateLine( sel->text(1) );
+
+ if (selector()->mode() == OFileSelector::Fileselector ) {
+ QStringList str = QStringList::split("->", sel->text(1) );
+ QString path =sel->directory() + "/" + str[0].stripWhiteSpace();
+ DocLnk lnk( path );
+ fileSelected(lnk );
+ fileSelected( path );
+ }
+ }
+}
+void OFileListView::slotClicked( int button, QListViewItem* item,
+ const QPoint&, int ) {
+ if ( !item )
+ return;
+
+ if( button != Qt::LeftButton )
+ return;
+
+ OFileSelectorItem *sel = (OFileSelectorItem*)item;
+
+ if(!sel->isLocked() ){
+ QStringList str = QStringList::split("->", sel->text(1) );
+ if( sel->isDir() ){
+ changedDir( sel->directory() + "/" + str[0].stripWhiteSpace() );
+ }else{
+ updateLine( str[0].stripWhiteSpace() );
+ QString path = sel->directory();
+ path += "/";
+ path += str[0].stripWhiteSpace();
+
+ DocLnk lnk( path );
+ fileSelected( path );
+ fileSelected( lnk );
+ }
+ }
+}
+void OFileListView::slotRightButton( int button, QListViewItem* item,
+ const QPoint&, int ) {
+ if (!item || (button != Qt::RightButton ))
+ return;
+
+ /* raise contextmenu */
+}
diff --git a/libopie/ofileselector/ofilelistview.h b/libopie/ofileselector/ofilelistview.h
index c7e9223..a83d70d 100644
--- a/libopie/ofileselector/ofilelistview.h
+++ b/libopie/ofileselector/ofilelistview.h
@@ -31,15 +31,20 @@ public:
void addSymlink( const QString& mine, const QString& path,
const QString& file, bool isSymlink = FALSE );
void cd( const QString& path );
QWidget* widget();
+ void sort();
QString selectedName()const ;
QStringList selectedNames()const;
QString selectedPath()const;
QStringList selectedPaths()const;
int fileCount();
-
+private slots:
+ void slotSelectionChanged();
+ void slotCurrentChanged(QListViewItem* );
+ void slotClicked( int, QListViewItem*, const QPoint&, int );
+ void slotRightButton(int, QListViewItem*, const QPoint&, int );
};
#endif
diff --git a/libopie/ofileselector/ofileselector.cpp b/libopie/ofileselector/ofileselector.cpp
index 16ee3ee..98b61f7 100644
--- a/libopie/ofileselector/ofileselector.cpp
+++ b/libopie/ofileselector/ofileselector.cpp
@@ -30,24 +30,25 @@
#include <sys/stat.h>
#include "ofileview.h"
#include "ofileselector.h"
-
+#include "olister.h"
QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0;
namespace {
+ /* let's find the index for a specified string */
int indexByString( const QComboBox *box, const QString &str ){
int index= 0;
for(int i= 0; i < box->count(); i++ ){
+ /* found */
if( str == box->text(i ) ){
index= i;
break;
}
}
return index;
}
-
}
OFileSelector::OFileSelector( QWidget *wid, int mode, int selector,
const QString &dirName,
@@ -57,21 +58,23 @@ OFileSelector::OFileSelector( QWidget *wid, int mode, int selector,
{
m_mimetypes = mimeTypes;
if (mode == Save )
m_name = fileName;
+
initVars();
+
m_mode = mode;
m_selector = selector;
m_currentDir = dirName;
init();
- //QTimer::singleShot(6*1000, this, SLOT( slotTest() ) );
}
OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent,
const char *name, bool newVisible,
bool closeVisible )
: QWidget( parent, name )
{
+ /* update the mimefilter */
if (!mimeFilter.isEmpty() ) {
QStringList list = QStringList::split(";", mimeFilter );
m_mimetypes.insert(mimeFilter, list );
}
@@ -153,8 +156,9 @@ void OFileSelector::setYesCancelVisible( bool show )
void OFileSelector::setToolbarVisible( bool show )
{
m_shTool = show;
initializeListView(); // FIXME see above waste of memory
+
if(!m_shTool ){
m_location->hide();
m_up->hide();
m_homeButton->hide();
@@ -631,28 +635,8 @@ void OFileSelector::initVars()
m_fnLabel = 0;
m_new = 0;
m_close = 0;
}
-void OFileSelector::addFile(const QString &, QFileInfo *info, bool )
-{
- if(!m_files)
- return;
- // if( !compliesMime(info->absFilePath(), mime ) )
- // return;
- MimeType type( info->absFilePath() );
- if (!compliesMime( type.id() ) )
- return;
-
-}
-void OFileSelector::addDir(const QString &, QFileInfo *, bool )
-{
- if(!m_dir)
- return;
-}
-void OFileSelector::delItems()
-{
-
-}
void OFileSelector::initializeName()
{
/** Name Layout Line
* This is the Layout line arranged in
@@ -728,8 +712,9 @@ void OFileSelector::initializeChooser()
m_viewCheck->insertItem( tr("Documents") );
m_viewCheck->insertItem( tr("Files") );
m_viewCheck->insertItem( tr("All Files") );
+ /* update to custom views */
updateMimeCheck();
connect( m_viewCheck, SIGNAL( activated(const QString & ) ),
this, SLOT( slotViewCheck(const QString & ) ) );
@@ -813,34 +798,10 @@ void OFileSelector::initializeListView()
} // off toolbar
// the Main ListView
// make a QWidgetStack first so Views can share the Toolbar
- m_View = new QListView( m_pseudo, "Extended view");
- QPEApplication::setStylusOperation( m_View->viewport(),
- QPEApplication::RightOnHold);
- m_View->addColumn(" " );
- m_View->addColumn(tr("Name"), 135 );
- m_View->addColumn(tr("Size"), -1 );
- m_View->addColumn(tr("Date"), 60 );
- m_View->addColumn(tr("Mime Type"), -1 );
- QHeader *header = m_View->header();
- header->hide();
- m_View->setSorting( 1 );
- m_View->setAllColumnsShowFocus( TRUE );
-
- connect(m_View, SIGNAL(selectionChanged() ),
- this, SLOT(slotSelectionChanged() ) );
-
- connect(m_View, SIGNAL(currentChanged(QListViewItem *) ),
- this, SLOT(slotCurrentChanged(QListViewItem * ) ) );
-
- connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ),
- this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
-
- connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )),
- this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
-
- m_pseudoLayout->addWidget( m_View, 288 );
+
+ // m_pseudoLayout->addWidget( m_View, 288 );
m_stack->addWidget( m_pseudo, Extended );
}
}
void OFileSelector::initializePerm()
@@ -848,16 +809,16 @@ 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 );
-
}
}
void OFileSelector::initPics()
{
m_pixmaps = new QMap<QString,QPixmap>;
QPixmap pm = Resource::loadPixmap( "folder" );
QPixmap lnk = Resource::loadPixmap( "opie/symlink" );
+
QPainter painter( &pm );
painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk );
pm.setMask( pm.createHeuristicMask( FALSE ) );
m_pixmaps->insert("dirsymlink", pm );
@@ -915,12 +876,8 @@ bool OFileSelector::compliesMime( const QString& mime ) {
it = m_mimetypes.find(currentText );
if ( it == m_mimetypes.end() ) qWarning("not there"), list << currentText;
else qWarning("found"), list = it.data();
}
- // dump it now
- //for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
- // qWarning( "%s", (*it).latin1() );
- //}
if ( list.contains(mime) ) return true;
qWarning("list doesn't contain it ");
@@ -944,113 +901,10 @@ void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk )
{
slotFileSelected( lnk.name() );
// emit fileSelected( lnk );
}
-void OFileSelector::slotSelectionChanged()
-{
-
-}
-void OFileSelector::slotCurrentChanged(QListViewItem* /*item*/ )
-{
- /*
- if( item == 0 )
- return;
- if( m_selector == Extended || m_selector == ExtendedAll ) {
- OFileSelectorItem *sel = (OFileSelectorItem*) item; // start to use the C++ casts ;)
- qWarning("current changed");
- if(!sel->isDir() ){
- if( m_shLne )
- m_edit->setText( sel->text(1) );
-
- if (m_mode == Fileselector ) {
- QStringList str = QStringList::split("->", sel->text(1) );
- QString path =sel->directory() + "/" + str[0].stripWhiteSpace();
- emit fileSelected(path );
- DocLnk lnk( path );
- emit fileSelected(lnk );
- }
- }
- } */
-}
-void OFileSelector::slotClicked( int /*button*/, QListViewItem */*item*/, const QPoint &, int)
-{
- /*
- if ( item == 0 )
- return;
-
- if( button != Qt::LeftButton )
- return;
-
- switch( m_selector ){
- default:
- break;
- case Extended: // fall through
- case ExtendedAll:{
- OFileSelectorItem *sel = (OFileSelectorItem*)item;
- if(!sel->isLocked() ){
- QStringList str = QStringList::split("->", sel->text(1) );
- if( sel->isDir() ){
- cd( sel->directory() + "/" + str[0].stripWhiteSpace() );
- // if MODE Dir m_shLne set the Text
- }else{
- if( m_shLne )
- m_edit->setText( str[0].stripWhiteSpace() );
- qWarning("selected here in slot clicked");
- emit fileSelected( sel->directory() + "/" + str[0].stripWhiteSpace() );
- DocLnk lnk( sel->directory() + "/" + str[0].stripWhiteSpace() );
- qWarning("file selected");
- emit fileSelected( lnk );
- }
- }
- break;
- }
- } */
-}
-void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int )
-{
- if( item == 0 )
- return;
- if( button != Qt::RightButton )
- return;
- slotContextMenu( item );
-}
-void OFileSelector::slotContextMenu( QListViewItem */*item*/)
-{
-
-}
-void OFileSelector::slotChangedDir()
-{
- /*
- OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
- if(sel->isDir() ){
- QStringList str = QStringList::split("->", sel->text(1) );
- cd( sel->directory() + "/" + str[0].stripWhiteSpace() );
- }
- */
-}
-void OFileSelector::slotOpen()
-{
- /*
- OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
- if(!sel->isDir() ){
- QStringList str = QStringList::split("->", sel->text(1) );
- slotFileSelected( sel->directory() +"/" +str[0].stripWhiteSpace() );
- qWarning("slot open");
- // DocLnk lnk( sel->directory() + "/" + str[0].stripWhiteSpace() );
- //emit fileSelected( lnk );
- }
- */
-}
-void OFileSelector::slotRescan()
-{
-
-}
-void OFileSelector::slotRename()
-{
- reparse();
-}
void OFileSelector::slotDelete()
{
/*
OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
@@ -1100,16 +954,16 @@ void OFileSelector::slotNavigate( )
void OFileSelector::reparse()
{
if( m_selector == Normal )
return;
- if( m_selector == Extended || m_selector == ExtendedAll )
- m_View->clear();
- else // custom view
- ; // currentView()->clear();
+
+ currentView()->clear();
+
if( m_shChooser)
qWarning("reparse %s", m_mimeCheck->currentText().latin1() );
QString currentMimeType;
+
// let's update the mimetype
if( m_autoMime ){
m_mimetypes.clear();
// ok we can change mimetype so we need to be able to give a selection
@@ -1117,98 +971,29 @@ void OFileSelector::reparse()
currentMimeType = m_mimeCheck->currentText();
m_mimeCheck->clear();
// let's find possible mimetypes
- QDir dir( m_currentDir );
- dir.setFilter( QDir::Files | QDir::Readable );
- dir.setSorting( QDir::Size );
- const QFileInfoList *list = dir.entryInfoList();
- QFileInfoListIterator it( *list );
- QFileInfo *fi;
- while( (fi=it.current() ) ) {
- if( fi->extension() == QString::fromLatin1("desktop") ){
- ++it;
- continue;
- }
- MimeType type( fi->absFilePath() );
- if( !m_mimetypes.contains( type.id() ) ){
- //qWarning("Type %s", type.id().latin1() );
- m_mimetypes.insert( type.id(), type.id() );
- }
+ m_mimetypes = currentLister()->mimeTypes( m_currentDir );
- ++it;
- }
// add them to the chooser
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 ){
+ if( m_shChooser )
currentMimeType = m_mimeCheck->currentText();
-// updateMimeCheck();
- }
+
}
// now we got our mimetypes we can add the files
- QDir dir( m_currentDir );
+ currentLister()->reparse( m_currentDir );
+ /* we're done with adding let's sort */
+ currentView()->sort();
- int sort;
- if ( m_case )
- sort = (QDir::IgnoreCase | QDir::Name | QDir::DirsFirst | QDir::Reversed);
- else
- sort = (QDir::Name | QDir::DirsFirst | QDir::Reversed);
- dir.setSorting( sort );
- int filter;
- if( m_selector == ExtendedAll /*|| m_selector ==CUSTOM_ALL */ ){
- filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
- }else
- filter = QDir::Files | QDir::Dirs | QDir::All;
- dir.setFilter( filter );
-
- // now go through all files
- const QFileInfoList *list = dir.entryInfoList();
- QFileInfoListIterator it( *list );
- QFileInfo *fi;
- while( (fi=it.current() ) ){
- //qWarning("True and only" );
- if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){
- //qWarning(".. or ." );
- ++it;
- continue;
- }
- if( fi->isSymLink() ){
- QString file = fi->dirPath( true ) + "/" + fi->readLink();
- for( int i = 0; i<=4; i++) { // 5 tries to prevent dos
- QFileInfo info( file );
- if( !info.exists() ){
- addSymlink( currentMimeType, fi, TRUE );
- break;
- }else if( info.isDir() ){
- addDir( currentMimeType, fi, TRUE );
- break;
- }else if( info.isFile() ){
- addFile( currentMimeType, fi, TRUE );
- break;
- }else if( info.isSymLink() ){
- file = info.dirPath(true ) + "/" + info.readLink() ;
- break;
- }else if( i == 4){
- addSymlink( currentMimeType, fi );
- }
- } // off for loop
- }else if( fi->isDir() ){
- addDir( currentMimeType, fi );
- }else if( fi->isFile() ){
- addFile( currentMimeType, fi );
- }
- //qWarning( "%s", fi->fileName().latin1() );
- ++it;
- } // of while loop
- m_View->sort();
if( m_shTool ){
m_location->insertItem( m_currentDir );
}
@@ -1251,12 +1036,16 @@ void OFileSelector::internContextMenu() {
emit contextMenu();
}
void OFileSelector::internChangedDir( const QString& s) {
emit dirSelected( s );
+ cd(s );
}
void OFileSelector::internChangedDir( const QDir& s) {
emit dirSelected( s );
}
QPixmap OFileSelector::pixmap( const QString& s ) {
return (*m_pixmaps)[s];
}
+OLister* OFileSelector::currentLister()const {
+ return 0l;
+}
diff --git a/libopie/ofileselector/ofileselector.h b/libopie/ofileselector/ofileselector.h
index 12af732..a7b363f 100644
--- a/libopie/ofileselector/ofileselector.h
+++ b/libopie/ofileselector/ofileselector.h
@@ -67,8 +67,9 @@ class QVBoxLayout;
class QPopupMenu;
class QFileInfo;
class QHBox;
class OFileView;
+class OLister;
//
/* the mimetypes one name and a list of mimetypes */
typedef QMap< QString, QStringList> MimeTypes;
@@ -336,8 +337,9 @@ class OFileSelector : public QWidget {
QValueList<DocLnk> selectedDocuments()const;
OFileView* currentView();
OFileView* currentView()const;
+ OLister* currentLister()const;
int filter();
int sorting();
QPixmap pixmap( const QString& );
@@ -368,29 +370,37 @@ class OFileSelector : public QWidget {
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;
+ 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_boxOk;
+ QHBox *m_boxName;
QHBox *m_boxView;
QPopupMenu *m_custom;
@@ -411,11 +421,9 @@ class OFileSelector : public QWidget {
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();
@@ -440,19 +448,10 @@ class OFileSelector : public QWidget {
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();
diff --git a/libopie/ofileselector/ofileview.cpp b/libopie/ofileselector/ofileview.cpp
index 9bb40c9..38f722c 100644
--- a/libopie/ofileselector/ofileview.cpp
+++ b/libopie/ofileselector/ofileview.cpp
@@ -1,8 +1,9 @@
+#include <qlineedit.h>
+
#include <qpe/applnk.h>
#include "ofileselector.h"
-
#include "ofileview.h"
OFileView::OFileView( OFileSelector* sel)
@@ -28,4 +29,8 @@ void OFileView::changedDir( const QDir& d ) {
}
OFileSelector* OFileView::selector() const {
return m_sel;
}
+void OFileView::updateLine( const QString& str ) {
+ if (m_sel->m_shLne )
+ m_sel->m_edit->setText( str );
+}
diff --git a/libopie/ofileselector/ofileview.h b/libopie/ofileselector/ofileview.h
index 1b397f5..a4b1748 100644
--- a/libopie/ofileselector/ofileview.h
+++ b/libopie/ofileselector/ofileview.h
@@ -80,8 +80,9 @@ public:
virtual QStringList selectedNames()const = 0;
virtual QString selectedPath()const = 0;
virtual QStringList selectedPaths()const = 0;
virtual int fileCount() = 0;
+ virtual void sort() =0;
/*signals:*/
protected:
@@ -89,8 +90,9 @@ protected:
void fileSelected(const DocLnk & );
void contextMenu();
void changedDir(const QString &);
void changedDir(const QDir & );
+ void updateLine( const QString& );
OFileSelector* selector()const;
private:
OFileSelector* m_sel;