summaryrefslogtreecommitdiff
path: root/libopie/ofileselector
Side-by-side diff
Diffstat (limited to 'libopie/ofileselector') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofileselector/ofilelistview.cpp20
-rw-r--r--libopie/ofileselector/ofilelistview.h15
-rw-r--r--libopie/ofileselector/ofileselector.cpp25
-rw-r--r--libopie/ofileselector/ofileselectoritem.cpp5
-rw-r--r--libopie/ofileselector/ofileselectoritem.h5
-rw-r--r--libopie/ofileselector/ofileview.cpp14
-rw-r--r--libopie/ofileselector/ofileview.h33
-rw-r--r--libopie/ofileselector/olister.cpp58
-rw-r--r--libopie/ofileselector/olister.h61
-rw-r--r--libopie/ofileselector/olocallister.cpp3
10 files changed, 199 insertions, 40 deletions
diff --git a/libopie/ofileselector/ofilelistview.cpp b/libopie/ofileselector/ofilelistview.cpp
index 691bf42..9cfdc48 100644
--- a/libopie/ofileselector/ofilelistview.cpp
+++ b/libopie/ofileselector/ofilelistview.cpp
@@ -43,12 +43,13 @@ OFileListView::~OFileListView() {
void OFileListView::clear() {
QListView::clear();
}
void OFileListView::addFile( const QPixmap& pix,
const QString&,
QFileInfo* info,
+ const QString& /*extra*/,
bool isSymlink ) {
QString dir;
QString name;
bool locked = false;
dir = info->dirPath( true );
@@ -67,17 +68,21 @@ void OFileListView::addFile( const QPixmap& pix,
info->lastModified().toString(),
QString::number( info->size() ),
dir, locked );
}
void OFileListView::addFile( const QPixmap&,
const QString& /*mime*/, const QString& /*dir*/,
- const QString& /*file*/, bool /*isSyml*/ ) {
+ const QString& /*file*/,
+ const QString& /*extra*/,
+ bool /*isSyml*/ ) {
}
void OFileListView::addDir( const QPixmap& pix, const QString&,
- QFileInfo* info, bool symlink ) {
+ QFileInfo* info,
+ const QString& /*extra */,
+ bool symlink ) {
bool locked = false;
QString name;
name = symlink ? info->fileName() + "->" + info->dirPath(true) + "/" +info->readLink() : info->fileName() ;
@@ -87,24 +92,29 @@ void OFileListView::addDir( const QPixmap& pix, const QString&,
info->dirPath( true ), locked,
true );
}
void OFileListView::addDir( const QPixmap&,
const QString& /*mime*/, const QString& /*dir*/,
- const QString& /*file*/, bool ) {
+ const QString& /*file*/,
+ const QString& /*extra*/,
+ bool ) {
}
void OFileListView::addSymlink( const QPixmap&,
const QString& /*mime*/,
QFileInfo* /*info*/,
+ const QString& /*extra*/,
bool /*isSym*/ ) {
}
void OFileListView::addSymlink(const QPixmap&,
const QString& /*m*/, const QString& /*path*/,
- const QString& /*file*/, bool /*isSym*/ ) {
+ const QString& /*file*/,
+ const QString& /*extra*/,
+ bool /*isSym*/ ) {
}
void OFileListView::cd( const QString& ) {
}
QWidget* OFileListView::widget() {
@@ -124,13 +134,13 @@ QStringList OFileListView::selectedNames()const {
}
QString OFileListView::selectedPath()const {
return QString::null;
}
QStringList OFileListView::selectedPaths()const {
QStringList list;
- list << selectedPath();
+b list << selectedPath();
return list;
}
int OFileListView::fileCount() {
return childCount();
}
void OFileListView::sort() {
diff --git a/libopie/ofileselector/ofilelistview.h b/libopie/ofileselector/ofilelistview.h
index c8cdfd1..0f625ec 100644
--- a/libopie/ofileselector/ofilelistview.h
+++ b/libopie/ofileselector/ofilelistview.h
@@ -13,34 +13,43 @@ public:
~OFileListView();
void clear();
void addFile( const QPixmap&,
const QString& mine,
QFileInfo* info,
+ const QString& extra = QString::null,
bool isSymlink = FALSE );
void addFile( const QPixmap&,
const QString& mime,
const QString& dir,
const QString& file,
+ const QString& extra = QString::null,
bool = false );
void addDir( const QPixmap&,
const QString& mime,
+ const QString& extra = QString::null,
QFileInfo* info, bool = FALSE );
void addDir( const QPixmap&,
const QString& mime, const QString& dir,
- const QString& file, bool = FALSE );
+ const QString& file,
+ const QString& extra = QString::null,
+ bool = FALSE );
void addSymlink( const QPixmap&,
const QString& mime,
- QFileInfo* info, bool = FALSE );
+ QFileInfo* info,
+ const QString& extra = QString::null,
+ bool = FALSE );
void addSymlink( const QPixmap&,
const QString& mine, const QString& path,
- const QString& file, bool isSymlink = FALSE );
+ const QString& file,
+ const QString& extra,
+ bool isSymlink = FALSE );
void cd( const QString& path );
QWidget* widget();
void sort();
QString selectedName()const ;
QStringList selectedNames()const;
diff --git a/libopie/ofileselector/ofileselector.cpp b/libopie/ofileselector/ofileselector.cpp
index 4ab744c..0ccb3cb 100644
--- a/libopie/ofileselector/ofileselector.cpp
+++ b/libopie/ofileselector/ofileselector.cpp
@@ -390,27 +390,26 @@ QString OFileSelector::currentMimeType() const{
}
}
return mime;
}
void OFileSelector::slotMimeCheck(const QString &mime)
{
- if( m_selector == Normal ){
- initializeOldSelector();
+ if( m_selector == Normal ){
+ initializeOldSelector();
- updateMimes();
- updateMimeCheck();
- m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
- }else{ // others
- qWarning("Mime %s", mime.latin1() );
- if(m_shChooser ){
- qWarning("Current Text %s", m_mimeCheck->currentText().latin1() );
- //m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
+ updateMimes();
+ updateMimeCheck();
+ m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
+ }else{ // others
+ qWarning("Mime %s", mime.latin1() );
+ if(m_shChooser ){
+ qWarning("Current Text %s", m_mimeCheck->currentText().latin1() );
+ //m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
+ }
+ reparse();
}
- reparse();
- }
-
}
/*
* Ok if a non dir gets inserted into this combobox
* we need to change it
* QFileInfo and dirPath will give us the right Dir
*/
diff --git a/libopie/ofileselector/ofileselectoritem.cpp b/libopie/ofileselector/ofileselectoritem.cpp
index 1e745a1..d31046b 100644
--- a/libopie/ofileselector/ofileselectoritem.cpp
+++ b/libopie/ofileselector/ofileselectoritem.cpp
@@ -3,23 +3,25 @@
OFileSelectorItem::OFileSelectorItem( QListView*view,
const QPixmap& pix,
const QString& path,
const QString& date,
const QString& size,
const QString& dir,
+ const QString& extra,
bool isLocked,
bool isDir )
: QListViewItem( view )
{
setPixmap( 0, pix );
setText( 1, path );
setText( 2, size );
setText( 3, date );
m_dir = isDir;
m_locked = isLocked;
m_dirStr = dir;
+ m_extra = extra;
}
OFileSelectorItem::~OFileSelectorItem() {
}
bool OFileSelectorItem::isLocked()const {
return m_locked;
}
@@ -48,6 +50,9 @@ QString OFileSelectorItem::key( int id, bool ) {
}else if( id == 3 ){ // date
return text(3);
}
return ke;
}
+QString OFileSelector::extra()const {
+ return m_extra;
+}
diff --git a/libopie/ofileselector/ofileselectoritem.h b/libopie/ofileselector/ofileselectoritem.h
index 21460c4..81966ae 100644
--- a/libopie/ofileselector/ofileselectoritem.h
+++ b/libopie/ofileselector/ofileselectoritem.h
@@ -9,22 +9,27 @@ public:
const QPixmap&,
const QString& path,
const QString& date,
const QString& size,
const QString& dir,
bool isLocked,
+ const QString& extra,
bool isDir = false);
~OFileSelectorItem();
bool isLocked() const;
QString directory()const;
bool isDir()const;
QString path()const;
QString key(int id, bool );
+ QString extra()const;
private:
bool m_locked : 1;
bool m_dir : 1;
QString m_dirStr;
+ QString m_extra;
+ class Private;
+ Private* d;
};
#endif
diff --git a/libopie/ofileselector/ofileview.cpp b/libopie/ofileselector/ofileview.cpp
index 38f722c..72d2f60 100644
--- a/libopie/ofileselector/ofileview.cpp
+++ b/libopie/ofileselector/ofileview.cpp
@@ -9,26 +9,20 @@
OFileView::OFileView( OFileSelector* sel)
: m_sel( sel )
{
}
OFileView::~OFileView() {
}
-void OFileView::fileSelected( const QString& s ) {
- m_sel->internFileSelected( s );
-}
-void OFileView::fileSelected( const DocLnk& s) {
- m_sel->internFileSelected( s );
+void OFileView::fileSelected( const QString& dir,const QString& file,const QString& extra ) {
+ m_sel->currentLister()->fileSelected( dir,file,extra );
}
void OFileView::contextMenu() {
m_sel->internContextMenu();
}
-void OFileView::changedDir( const QString& s) {
- m_sel->internChangedDir( s );
-}
-void OFileView::changedDir( const QDir& d ) {
- m_sel->internChangedDir( d );
+void OFileView::changedDir( const QString& s, const QString& file, const QString& extra) {
+ m_sel->currentLister()->changedDir( s, file,extra );
}
OFileSelector* OFileView::selector() const {
return m_sel;
}
void OFileView::updateLine( const QString& str ) {
if (m_sel->m_shLne )
diff --git a/libopie/ofileselector/ofileview.h b/libopie/ofileselector/ofileview.h
index d7ea4a2..808587f 100644
--- a/libopie/ofileselector/ofileview.h
+++ b/libopie/ofileselector/ofileview.h
@@ -53,35 +53,43 @@ public:
virtual ~OFileView();
virtual void clear() = 0;
virtual void addFile(const QPixmap&,
const QString &mine,
QFileInfo *info,
+ const QString& extra = QString::null,
bool isSymlink = FALSE ) = 0;
virtual void addFile(const QPixmap&,
const QString& mine, const QString& dir,
- const QString& file, bool = FALSE ) = 0;
+ const QString& file,
+ const QString& extra = QString::null,
+ bool = FALSE ) = 0;
virtual void addDir (const QPixmap&,
const QString &mine,
QFileInfo *info,
+ const QString& extra = QString::null,
bool isSymlink = FALSE ) = 0;
virtual void addDir (const QPixmap&,
const QString& mine, const QString& dir,
- const QString& file, bool = FALSE) = 0;
+ const QString& file,
+ const QString& extra = QString::null,
+ bool = FALSE) = 0;
virtual void addSymlink(const QPixmap&,
const QString &mime,
QFileInfo *info,
+ const QString& extra = QString::null,
bool isSymlink = FALSE ) = 0;
virtual void addSymlink(const QPixmap&,
const QString& mine,
const QString& path,
const QString& file,
+ const QString& extra = QString::null,
bool isSymlink = FALSE ) = 0;
virtual void cd(const QString &path ) = 0;
virtual QWidget* widget() = 0;
virtual QString selectedName()const = 0;
@@ -91,17 +99,28 @@ public:
virtual int fileCount() = 0;
virtual void sort() =0;
/*signals:*/
protected:
- void fileSelected(const QString &);
- void fileSelected(const DocLnk & );
- void contextMenu();
- void changedDir(const QString &);
- void changedDir(const QDir & );
+ /**
+ * @param dir The dir name
+ * @param file The file name
+ * @param extra The extra information
+ */
+ void fileSelected(const QString &dir, const QString& file, const QString& extra = QString::nulll);
+ void contextMenu();
+
+ /**
+ *
+ * @param dir The dir name
+ * @param file The file name
+ * @param extra The extra informations
+ */
+ void changedDir(const QString &dir, const QString& file, const QString& extra = QString::null);
+ void changedDir(const QDir & );
/* updates the file name line of the FileSelector */
void updateLine( const QString& );
OFileSelector* selector()const;
private:
diff --git a/libopie/ofileselector/olister.cpp b/libopie/ofileselector/olister.cpp
index b6b03cd..378c69d 100644
--- a/libopie/ofileselector/olister.cpp
+++ b/libopie/ofileselector/olister.cpp
@@ -1,14 +1,16 @@
+#include <qcombobox.h>
+
#include "olister.h"
#include "ofileview.h"
#include "opixmapprovider.h"
#include "ofileselector.h"
OLister::OLister( OFileSelector* view)
- : m_view( view )
+ : m_view( view ), m_acc( 0l )
{
m_prov = new OPixmapProvider( view );
}
OLister::~OLister() {
delete m_prov;
}
@@ -21,86 +23,140 @@ bool OLister::showFiles()const {
}
bool OLister::showDirs()const {
return m_view->showDirs();
}
void OLister::addFile( const QString& mine,
QFileInfo* info,
+ const QString& extra,
bool isSymlink ) {
int t = isSymlink ? OPixmapProvider::File | OPixmapProvider::Symlink :
OPixmapProvider::File;
QPixmap pix = provider()->pixmap(t, mine,
info);
view()->currentView()->addFile( pix,
mine,
info,
+ extra,
isSymlink );
}
void OLister::addFile( const QString& mine,
const QString& path,
const QString& file,
+ const QString& extra,
bool isSymlink ) {
int t = isSymlink ? OPixmapProvider::File | OPixmapProvider::Symlink :
OPixmapProvider::File;
QPixmap pix = provider()->pixmap(t, mine, path, file );
view()->currentView()->addFile( pix,
mine,
path,
file,
+ extra,
isSymlink );
}
void OLister::addDir( const QString& mine,
QFileInfo* info,
+ const QString& extra,
bool isSymlink ) {
int t = isSymlink ? OPixmapProvider::Dir | OPixmapProvider::Symlink :
OPixmapProvider::Dir;
QPixmap pix = provider()->pixmap(t, mine, info );
view()->currentView()->addDir( pix,
mine,
info,
+ extra,
isSymlink );
}
void OLister::addDir( const QString& mine,
const QString& path,
const QString& dir,
+ const QString& extra,
bool isSymlink ) {
int t = isSymlink ? OPixmapProvider::Dir | OPixmapProvider::Symlink :
OPixmapProvider::Dir;
QPixmap pix = provider()->pixmap(t, mine, path, dir );
view()->currentView()->addDir( pix,
mine,
path,
dir,
+ extra,
isSymlink );
}
void OLister::addSymlink( const QString& mine,
QFileInfo* info,
+ const QString& extra,
bool isSymlink ) {
QPixmap pix = provider()->pixmap( OPixmapProvider::Symlink, mine, info );
view()->currentView()->addSymlink( pix,
mine,
info,
+ extra,
isSymlink );
}
void OLister::addSymlink( const QString& mine,
const QString& path,
const QString& name,
+ const QString& extra,
bool isSymlink ) {
QPixmap pix = provider()->pixmap( OPixmapProvider::Symlink, mine,
path, name );
view()->currentView()->addSymlink( pix,
mine,
path,
name,
+ extra,
isSymlink );
}
OFileSelector* OLister::view() {
return m_view;
}
OPixmapProvider* OLister::provider() {
return m_prov;
}
bool OLister::compliesMime( const QString& mime ) {
return view()->compliesMime( mime );
}
+OListerCmbAccess* OLister::comboBox() {
+ if (!m_acc )
+ m_acc = new OListerCmbAccess( view()->m_location );
+
+ return m_acc;
+}
+
+
+OListerCmbAccess::OListerCmbAccess(QComboBox* box )
+ : m_cmb( cmb )
+{}
+OListerCmbAccess::~OListerCmbAccess() {
+}
+void OListerCmbAccess::clear() {
+ if ( m_cmb )
+ m_cmb->clear();
+}
+void OListerCmbAccess::setCurrentItem( const QString& add, bool FORCE_ADD) {
+ if ( !m_cmb ) return;
+
+
+ int c = m_cmb->count();
+ for ( int i = 0; i < m_cmb->count(); i++ ) {
+ if ( m_cmb->text(i) == add ) {
+ bo->setCurrentItem( i );
+ return;
+ }
+ }
+ m_cmb->insertItem(add );
+ m_cmb->setCurrentItem( c );
+}
+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;
+}
diff --git a/libopie/ofileselector/olister.h b/libopie/ofileselector/olister.h
index 0885525..79d5409 100644
--- a/libopie/ofileselector/olister.h
+++ b/libopie/ofileselector/olister.h
@@ -3,62 +3,123 @@
#include <qfileinfo.h>
#include <qmap.h>
#include <qstring.h>
#include <qstringlist.h>
+class QComboBox;
class OPixmapProvider;
class OFileSelector;
+
+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;
/**
* return a list of available mimetypes
*/
virtual QMap<QString, QStringList> mimeTypes( const QString& dir ) = 0;
void setPixmapProvider( OPixmapProvider* );
+
+ /* some way a slot */
+ void fileSelected( const QString& dir, const QString& file, const QString& extra ) = 0;
+ void changeDir( const QString& dir, const QString& file, const QString& extra ) = 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;
bool compliesMime( const QString& mime );
void addFile( const QString& mine,
QFileInfo*,
+ const QString& extra = QString::null,
bool isSymlink = FALSE );
+
void addFile( const QString& mine,
const QString& path,
const QString& file,
+ const QString& extra = QString::null,
bool isSymlink = FALSE );
void addDir( const QString& mine,
QFileInfo*,
bool isSymlink = FALSE );
void addDir( const QString& mine,
const QString& path,
const QString& dir,
+ 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();
OPixmapProvider* provider();
private:
OFileSelector* m_view;
OPixmapProvider* m_prov;
+ OListerCmbAccess* m_acc;
+
+ class Private;
+ Private *d;
+};
+
+class OListerCmbAccess {
+ friend class OLister;
+public:
+ OListerCmbAccess( QComboBox* = 0l);
+ ~OListerCmbAccess();
+
+ /**
+ * clears the combobox
+ */
+ void clear();
+
+ /**
+ * set's @param add to be the current Item
+ * if the item is not present it'll be removed
+ */
+ void setCurrentItem( const QString& add, bool FORECE_ADD = TRUE );
+
+ /**
+ * inserts the the String at
+ * a non predictable position... The position is determined
+ * by the QComboBox code
+ */
+ void insert( const QString& );
+
+ /**
+ *
+ */
+ QString currentText()const;
+private:
+ class Private;
+ Private* d;
+ QComboBox* m_cmb;
};
#endif
diff --git a/libopie/ofileselector/olocallister.cpp b/libopie/ofileselector/olocallister.cpp
index 6ffcf1e..2306b14 100644
--- a/libopie/ofileselector/olocallister.cpp
+++ b/libopie/ofileselector/olocallister.cpp
@@ -40,13 +40,14 @@ QMap<QString, QStringList> OLocalLister::mimeTypes( const QString& curDir ) {
++it;
}
return mimes;
}
-/* FIXME mimecheck
+/**
+ * FIXME mimecheck
* use mime check for that
* filter dirs
* filter filters
* filter files
* filter mimetypes
*/