-rw-r--r-- | libopie/TODO | 17 | ||||
-rw-r--r-- | libopie/ofileselector.cc | 191 | ||||
-rw-r--r-- | libopie/ofileselector.h | 37 |
3 files changed, 233 insertions, 12 deletions
diff --git a/libopie/TODO b/libopie/TODO new file mode 100644 index 0000000..c1bf6d1 --- a/dev/null +++ b/libopie/TODO @@ -0,0 +1,17 @@ +- xmltree done + +- tododb + - set Alarms + - multiple categories + - Attendees + +- OFileSelector + - DocLnk when not in Document Mode + - TreeView have a own OFileSelectorItem for this + - IconView add a QIconView to the widgetstack + - Move OFileSelectorItem to it's own files + - add functions to access the member variables + - debug + +- Clickable labels? + Harlekin you wanted them in the libs?
\ No newline at end of file diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc index 128292f..b583125 100644 --- a/libopie/ofileselector.cc +++ b/libopie/ofileselector.cc @@ -41,2 +41,5 @@ #include <qpainter.h> +#include <qaction.h> +#include <qpopupmenu.h> +#include <qcursor.h> @@ -49,2 +52,6 @@ +#include <unistd.h> +#include <stdlib.h> +#include <sys/stat.h> + #include "ofileselector.h" @@ -113,2 +120,3 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString m_files = true; + m_custom = 0; @@ -180,2 +188,3 @@ void OFileSelector::init() m_stack->raiseWidget(NORMAL ); + connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) ); }else { @@ -279,6 +288,6 @@ void OFileSelector::setShowFiles(bool files ){ } -void OFileSelector::setPopupMenu(const QPopupMenu * ) +void OFileSelector::setPopupMenu(QPopupMenu *pop ) { //delete oldpopup; - + m_custom = pop; } @@ -559,3 +568,3 @@ void OFileSelector::slotViewCheck(const QString &view ){ m_stack->raiseWidget( NORMAL ); - + connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) ); @@ -621,2 +630,9 @@ void OFileSelector::initializeListView() m_View->setSorting(1 ); + // connect now + 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 ) ) ); }; @@ -678,3 +694,3 @@ void OFileSelector::addDir(const QString &mime, QFileInfo *info, bool symlink ) { - bool locked; + bool locked=false; QString name; @@ -715,2 +731,169 @@ void OFileSelector::setShowDirs(bool dir ) +void OFileSelector::slotFileSelected(const QString &string ) +{ + if(m_shLne ) + m_edit->setText( string ); + + emit fileSelected( string ); + // do AppLnk stuff +} +void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk ) +{ + slotFileSelected(lnk.name() ); + emit fileSelected( lnk ); +} +void OFileSelector::slotSelectionChanged() // get the current items + // fixme +{ + qWarning("selection changed" ); +} +void OFileSelector::slotCurrentChanged(QListViewItem *item ) +{ + qWarning("current changed" ); + if( item == 0 ) + return; + + if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ + OFileSelectorItem *sel = (OFileSelectorItem*)item; + if(!sel->isDir() ){ + qWarning("is not dir" ); + if(m_shLne ){ + m_edit->setText(sel->text(1) ); + qWarning("setTexy" ); + } + } + }else { + qWarning("mode not extended" ); + } +} +// either select or change dir +void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &point, int ) +{ + if( item == 0 ) + return; + + if( button != Qt::LeftButton ) + return; + + qWarning("clicked" ); + if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ + qWarning("inside" ); + OFileSelectorItem *sel = (OFileSelectorItem*)item; + if(!sel->isLocked() ){ // not locked either changedir or open + QStringList str = QStringList::split("->", sel->text(1) ); + if(sel->isDir() ){ + cd( sel->directory() + "/" + str[0] ); + }else{ + qWarning("file" ); + if(m_shLne ) + m_edit->setText(str[0] ); + emit fileSelected(str[0] ); + // emit DocLnk need to do it + } + }else{ + qWarning( "locked" ); + } + }; +} +void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int ) +{ + if( button != Qt::RightButton ) + return; + qWarning("right button" ); + slotContextMenu(item); +} +void OFileSelector::slotContextMenu(QListViewItem *item) +{ + qWarning("context menu" ); + if( m_custom !=0){ + m_custom->exec(); + }else{ + QPopupMenu menu; + QAction act; + OFileSelectorItem *sel = (OFileSelectorItem*)item; + if(sel->isDir() ){ + act.setText( tr("Change Directory") ); + act.addTo(&menu ); + connect(&act, SIGNAL(activated() ), + this, SLOT(slotChangedDir() ) ); + }else{ + act.setText( tr("Open file" ) ); + act.addTo( &menu ); + connect(&act, SIGNAL(activated() ), + this, SLOT(slotOpen() ) ); + } + QAction rescan; + rescan.setText( tr("Rescan") ); + rescan.addTo( &menu ); + connect(&act, SIGNAL(activated() ), + this, SLOT(slotRescan() ) ); + + QAction rename; + rename.setText( tr("Rename") ); + rename.addTo( &menu ); + connect(&act, SIGNAL(activated() ), + this, SLOT(slotRename() ) ); + + menu.insertSeparator(); + QAction delItem; + delItem.setText( tr("Delete") ); + delItem.addTo(&menu ); + connect(&act, SIGNAL(activated() ), + this, SLOT(slotDelete() ) ); + + menu.exec(QCursor::pos() ); + } +} +bool OFileSelector::cd(const QString &str ) +{ + qWarning(" dir %s", str.latin1() ); + QDir dir( str); + if(dir.exists() ){ + m_currentDir = str; + reparse(); + return true; + } + return false; +} + +void OFileSelector::slotChangedDir() +{ + OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); + if(sel->isDir() ){ + QStringList str = QStringList::split("->", sel->text(1) ); + cd( sel->directory() + "/" + str[0] ); + } +} +void OFileSelector::slotOpen() +{ + OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); + if(!sel->isDir() ){ + QStringList str = QStringList::split("->", sel->text(1) ); + slotFileSelected( str[0] ); + } +} +void OFileSelector::slotRescan() +{ + reparse(); +} +void OFileSelector::slotRename() +{ + // rename inline +} +void OFileSelector::slotDelete() +{ + qWarning("delete slot" ); + OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); + QStringList list = QStringList::split("->", sel->text(1) ); + if( sel->isDir() ){ + QString str = QString::fromLatin1("rm -rf ") + list[0]; + ::system(str.utf8().data() ); + }else{ + QFile::remove( list[0] ); + } + m_View->takeItem( sel ); + delete sel; +} + + diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h index 6936773..458e552 100644 --- a/libopie/ofileselector.h +++ b/libopie/ofileselector.h @@ -80,3 +80,3 @@ class OFileSelectorItem : public QListViewItem { } - bool locked() const{ + bool isLocked() const{ return mLocked; @@ -150,3 +150,3 @@ class OFileSelector : public QWidget { void setShowFiles(bool ); - + bool cd(const QString &path ); @@ -158,3 +158,3 @@ class OFileSelector : public QWidget { - void setPopupMenu( const QPopupMenu * ); + void setPopupMenu( QPopupMenu * ); @@ -193,3 +193,7 @@ class OFileSelector : public QWidget { void updateMimes(); - int m_mode, m_selector; + + protected: + + private: +int m_mode, m_selector; QComboBox *m_location, *m_mimeCheck, *m_viewCheck; @@ -214,2 +218,4 @@ class OFileSelector : public QWidget { + QPopupMenu *m_custom; + QLineEdit *m_edit; @@ -227,5 +233,2 @@ class OFileSelector : public QWidget { - protected: - - private: // implementation todo @@ -233,3 +236,3 @@ class OFileSelector : public QWidget { virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE ); - virtual void addSymlink(const QString &mime, QFileInfo *info, bool broken = FALSE ){}; + virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){}; void delItems(); @@ -245,2 +248,19 @@ class OFileSelector : public QWidget { static QMap<QString,QPixmap> *m_pixmaps; + +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 crap see above + // PopupMenu crap + virtual void slotChangedDir(); + virtual void slotOpen(); + virtual void slotRescan(); + virtual void slotRename(); + virtual void slotDelete(); + }; @@ -249 +269,2 @@ class OFileSelector : public QWidget { #endif + |