summaryrefslogtreecommitdiff
authorzecke <zecke>2002-10-29 19:08:40 (UTC)
committer zecke <zecke>2002-10-29 19:08:40 (UTC)
commit2957aae1073f4c41dd6783c41d1199be71cd9f4a (patch) (side-by-side diff)
tree2aa5c4f61105aa151867e170601de58511479fd8
parenta575fd4c862693705018902b4482c5135a8cb6a2 (diff)
downloadopie-2957aae1073f4c41dd6783c41d1199be71cd9f4a.zip
opie-2957aae1073f4c41dd6783c41d1199be71cd9f4a.tar.gz
opie-2957aae1073f4c41dd6783c41d1199be71cd9f4a.tar.bz2
the reverse getting of filenames is actually enabled
There will be some code clean ups... but the interfaces should be fine now
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofileselector/ofileselector.cpp15
-rw-r--r--libopie/ofileselector/olister.cpp10
-rw-r--r--libopie/ofileselector/olister.h18
-rw-r--r--libopie/ofileselector/olocallister.cpp29
-rw-r--r--libopie/ofileselector/olocallister.h5
5 files changed, 62 insertions, 15 deletions
diff --git a/libopie/ofileselector/ofileselector.cpp b/libopie/ofileselector/ofileselector.cpp
index 255e79e..9ce07dd 100644
--- a/libopie/ofileselector/ofileselector.cpp
+++ b/libopie/ofileselector/ofileselector.cpp
@@ -253,38 +253,32 @@ void OFileSelector::setSelector(int mode )
break;
}
slotViewCheck( text );
}
void OFileSelector::setPopupFactory(OPopupMenuFactory */*popup*/ )
{
/* m_custom = popup;
m_showPopup = true;
*/
}
-//void OFileSelector::updateL
-
QString OFileSelector::selectedName() const
{
QString name;
if( m_selector == Normal ){
DocLnk lnk = m_select->selectedDocument();
name = lnk.file();
}else {
- if ( m_shLne ) {
- name = m_currentDir + "/" +m_edit->text();
- }else{
- name = m_currentDir + "/" + currentView()->selectedName();
- }
+ name = currentLister()->selectedName();
}
return name;
}
QStringList OFileSelector::selectedNames()const
{
QStringList list;
if( m_selector == Normal ){
list << selectedName();
}else {
list << selectedName(); // FIXME implement multiple Selections
}
return list;
@@ -413,25 +407,24 @@ void OFileSelector::slotMimeCheck(const QString &mime)
* we need to change it
* QFileInfo and dirPath will give us the right Dir
*/
void OFileSelector::slotLocationActivated(const QString &file)
{
qWarning("slotLocationActivated");
QString name = file.left( file.find("<-", 0, TRUE ) );
QFileInfo info( name );
if ( info.isFile() )
cd(info.dirPath( TRUE ) ); //absolute
else
cd(name );
- reparse();
}
void OFileSelector::slotInsertLocationPath(const QString &currentPath, int count)
{
QStringList pathList;
bool underDog = FALSE;
for(int i=0;i<count;i++) {
pathList << m_location->text(i);
if( m_location->text(i) == currentPath)
underDog = TRUE;
}
if( !underDog) {
m_location->clear();
@@ -445,26 +438,24 @@ 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();
//if( m_shChooser ) // the Chooser for the view and Mimetypes
initializeChooser();
@@ -845,34 +836,34 @@ void OFileSelector::slotDelete()
::system(str.utf8().data() );
break;
}
} else {
QFile::remove( list[0] );
}
m_View->takeItem( sel );
delete sel;
*/
}
void OFileSelector::cdUP()
{
+ // FIXME won't work on non filesystem based systems
+ // better call the Olister
QDir dir( m_currentDir );
dir.cdUp();
if(dir.exists() ){
m_currentDir = dir.absPath();
reparse();
int count = m_location->count();
slotInsertLocationPath( m_currentDir, count);
m_location->setCurrentItem( indexByString( m_location, m_currentDir));
- //this wont work in all instances
- // FIXME
}
}
void OFileSelector::slotHome()
{
cd(QDir::homeDirPath() );
}
void OFileSelector::slotDoc()
{
cd(QPEApplication::documentDir() );
}
void OFileSelector::slotNavigate( )
{
diff --git a/libopie/ofileselector/olister.cpp b/libopie/ofileselector/olister.cpp
index ea09940..aaaf6a2 100644
--- a/libopie/ofileselector/olister.cpp
+++ b/libopie/ofileselector/olister.cpp
@@ -1,13 +1,14 @@
#include <qcombobox.h>
+#include <qlineedit.h>
#include "olister.h"
#include "ofileview.h"
#include "opixmapprovider.h"
#include "ofileselector.h"
OLister::OLister( OFileSelector* view)
: m_view( view ), m_acc( 0l )
{
m_prov = new OPixmapProvider( view );
}
@@ -103,24 +104,27 @@ void OLister::addSymlink( const QString& mine,
QPixmap pix = provider()->pixmap( OPixmapProvider::Symlink, mine,
path, name );
view()->currentView()->addSymlink( pix,
mine,
path,
name,
extra,
isSymlink );
}
OFileSelector* OLister::view() {
return m_view;
}
+OFileSelector* OLister::view()const {
+ return m_view;
+}
OPixmapProvider* OLister::provider() {
return m_prov;
}
bool OLister::compliesMime( const QString& mime ) {
return view()->compliesMime( mime );
}
void OLister::internFileSelected( const QString& dir ) {
view()->internFileSelected( dir );
}
void OLister::internChangedDir( const QString& dir ) {
view()->internChangedDir( dir );
}
@@ -160,12 +164,18 @@ void OListerCmbAccess::setCurrentItem( const QString& add, bool FORCE_ADD) {
}
void OListerCmbAccess::insert( const QString& str ) {
if ( m_cmb )
m_cmb->insertItem( str );
}
QString OListerCmbAccess::currentText()const {
QString str;
if (m_cmb )
str = m_cmb->currentText();
return str;
}
+QString OLister::lineEdit()const {
+ if ( view()->m_shLne )
+ return view()->m_edit->text();
+
+ return QString::null;
+}
diff --git a/libopie/ofileselector/olister.h b/libopie/ofileselector/olister.h
index cd84316..4adb9f8 100644
--- a/libopie/ofileselector/olister.h
+++ b/libopie/ofileselector/olister.h
@@ -14,36 +14,42 @@ class OListerCmbAccess;
/**
* lister is something like KIO but very
* very basic and currently only for
* populating our views.
* This is a base class which needs to be implemented.
* @see OLocalLister for a filesystem based implementation
*/
class OLister {
public:
OLister( OFileSelector* );
virtual ~OLister();
- virtual void reparse(const QString& path) = 0;
+
+ /**
+ * if path == QString::null reread current dir
+ */
+ virtual void reparse(const QString& path = QString::null ) = 0;
/**
* return a list of available mimetypes
*/
virtual QMap<QString, QStringList> mimeTypes( const QString& dir ) = 0;
void setPixmapProvider( OPixmapProvider* );
/* some way a slot */
virtual void fileSelected( const QString& dir, const QString& file, const QString& extra ) = 0;
virtual void changedDir( const QString& dir, const QString& file, const QString& extra ) = 0;
+ virtual QString selectedName()const = 0;
+ virtual QStringList selectedNames()const = 0;
protected:
/**
* I hate too big classes
* this is a way to group
* access to a ComboBox
* which might exist or
* not in a secure way
*/
OListerCmbAccess* comboBox();
bool showFiles()const;
bool showDirs()const;
@@ -68,27 +74,37 @@ protected:
const QString& extra = QString::null,
bool isSymlink = FALSE );
void addSymlink( const QString& mine,
QFileInfo* info,
const QString& extra = QString::null,
bool isSymlink = FALSE);
void addSymlink( const QString& mine,
const QString& path,
const QString& name,
const QString& extra = QString::null,
bool isSymlink = FALSE );
OFileSelector* view();
+ OFileSelector* view()const;
OPixmapProvider* provider();
void internFileSelected( const QString& file );
void internChangedDir( const QString& dir );
+
+ /**
+ * try to take
+ * the text from the mainwindows
+ * lineedit
+ * if it's not available QString::null
+ * will be returned
+ */
+ QString lineEdit()const;
private:
OFileSelector* m_view;
OPixmapProvider* m_prov;
OListerCmbAccess* m_acc;
class Private;
Private *d;
};
class OListerCmbAccess {
friend class OLister;
public:
diff --git a/libopie/ofileselector/olocallister.cpp b/libopie/ofileselector/olocallister.cpp
index 5d7884d..4d36d64 100644
--- a/libopie/ofileselector/olocallister.cpp
+++ b/libopie/ofileselector/olocallister.cpp
@@ -1,24 +1,26 @@
#include <qdir.h>
#include <qfileinfo.h>
#include <qmap.h>
#include <qpe/mimetype.h>
#include "ofileselector.h"
+#include "ofileview.h"
#include "olocallister.h"
OLocalLister::OLocalLister( OFileSelector* file )
: OLister( file )
{
+ m_dir = QDir::homeDirPath();
}
OLocalLister::~OLocalLister() {
}
QMap<QString, QStringList> OLocalLister::mimeTypes( const QString& curDir ) {
QMap<QString, QStringList> mimes;
// let's find possible mimetypes
QDir dir( curDir );
dir.setFilter( QDir::Files | QDir::Readable );
dir.setSorting( QDir::Size );
@@ -42,27 +44,30 @@ QMap<QString, QStringList> OLocalLister::mimeTypes( const QString& curDir ) {
}
return mimes;
}
/**
* FIXME mimecheck
* use mime check for that
* filter dirs
* filter filters
* filter files
* filter mimetypes
*/
-void OLocalLister::reparse( const QString& path ) {
+void OLocalLister::reparse( const QString& pa ) {
+ if (!pa.isEmpty() )
+ m_dir = pa;
+
QString currentMimeType;
- QDir dir( path );
+ QDir dir( m_dir );
dir.setSorting( view()->sorting() );
dir.setFilter( view()->filter() );
const QFileInfoList *list = dir.entryInfoList();
QFileInfoListIterator it( *list );
QFileInfo *fi;
while( (fi=it.current() ) ){
if( fi->fileName() == QString::fromLatin1("..") ||
@@ -114,12 +119,32 @@ void OLocalLister::reparse( const QString& path ) {
addFile( currentMimeType, fi );
}
++it;
} // of while loop
}
/* more accepting it code */
void OLocalLister::fileSelected( const QString& dir, const QString& file, const QString& ) {
internFileSelected( dir + "/" + file );
}
void OLocalLister::changedDir( const QString& dir, const QString& file, const QString& ) {
internChangedDir( dir + "/" + file );
}
+/*
+ * assemble the the Url now
+ */
+QString OLocalLister::selectedName()const {
+ QString str = m_dir;
+ QString name = lineEdit();
+
+ if ( name.isEmpty() )
+ name = view()->currentView()->selectedName();
+
+ str += "/" + name;
+
+ return str;
+}
+QStringList OLocalLister::selectedNames()const {
+ QStringList list;
+ list << selectedName();
+
+ return list;
+}
diff --git a/libopie/ofileselector/olocallister.h b/libopie/ofileselector/olocallister.h
index 01e6f3c..0cdf51f 100644
--- a/libopie/ofileselector/olocallister.h
+++ b/libopie/ofileselector/olocallister.h
@@ -2,15 +2,20 @@
#define OPIE_LOCAL_LISTER
#include "olister.h"
class OLocalLister : public OLister {
public:
OLocalLister( OFileSelector* );
~OLocalLister();
void reparse( const QString& path );
QMap<QString, QStringList> mimeTypes(const QString& dir );
void fileSelected( const QString& dir, const QString& file, const QString& );
void changedDir( const QString& dir, const QString& file,const QString& );
+ QString selectedName()const;
+ QStringList selectedNames()const;
+
+private:
+ QString m_dir;
};
#endif