summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/TODO4
-rw-r--r--libopie/ofileselector.cc187
-rw-r--r--libopie/ofileselector.h9
3 files changed, 183 insertions, 17 deletions
diff --git a/libopie/TODO b/libopie/TODO
index c1bf6d1..a4e1ada 100644
--- a/libopie/TODO
+++ b/libopie/TODO
@@ -5,13 +5,15 @@
5 - multiple categories 5 - multiple categories
6 - Attendees 6 - Attendees
7 7
8- OFileSelector 8- OFileSelector
9 - DocLnk when not in Document Mode 9 - DocLnk when not in Document Mode ( and vice versa )
10 - MultipleDocuments
10 - TreeView have a own OFileSelectorItem for this 11 - TreeView have a own OFileSelectorItem for this
11 - IconView add a QIconView to the widgetstack 12 - IconView add a QIconView to the widgetstack
12 - Move OFileSelectorItem to it's own files 13 - Move OFileSelectorItem to it's own files
13 - add functions to access the member variables 14 - add functions to access the member variables
14 - debug 15 - debug
16 - new Dirs created inside the listview
15 17
16- Clickable labels? 18- Clickable labels?
17 Harlekin you wanted them in the libs? \ No newline at end of file 19 Harlekin you wanted them in the libs? \ No newline at end of file
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index b583125..14f035e 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -48,8 +48,9 @@
48#include <qpe/applnk.h> 48#include <qpe/applnk.h>
49#include <qpe/global.h> 49#include <qpe/global.h>
50#include <qpe/mimetype.h> 50#include <qpe/mimetype.h>
51#include <qpe/resource.h> 51#include <qpe/resource.h>
52#include <qpe/storage.h>
52 53
53#include <unistd.h> 54#include <unistd.h>
54#include <stdlib.h> 55#include <stdlib.h>
55#include <sys/stat.h> 56#include <sys/stat.h>
@@ -115,11 +116,15 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString
115 m_checkPerm = 0; 116 m_checkPerm = 0;
116 m_mimeCheck = 0; 117 m_mimeCheck = 0;
117 m_viewCheck = 0; 118 m_viewCheck = 0;
118 119
120 m_pseudo = 0;
121 m_pseudoLayout = 0;
122
119 m_dir = true; 123 m_dir = true;
120 m_files = true; 124 m_files = true;
121 m_custom = 0; 125 m_custom = 0;
126 m_showPopup = true;
122 127
123 if(m_pixmaps == 0 ) // init the pixmaps 128 if(m_pixmaps == 0 ) // init the pixmaps
124 initPics(); 129 initPics();
125 130
@@ -228,13 +233,21 @@ void OFileSelector::setYesCancelVisible( bool show )
228void OFileSelector::setToolbarVisible( bool show ) 233void OFileSelector::setToolbarVisible( bool show )
229{ 234{
230 if ( m_shTool == show ) 235 if ( m_shTool == show )
231 return; 236 return;
232 /* if( show ){ 237 if(!m_shTool ){
233 238 delete m_boxToolbar;
234 }else { 239 delete m_homeButton;
235 240 delete m_docButton;
236 }*/ 241 delete m_location;
242 delete m_up;
243 m_boxToolbar = 0;
244 m_homeButton = 0;
245 m_docButton = 0;
246 m_location = 0;
247 m_up = 0;
248 };
249 updateLay();// overkill fix it
237} 250}
238 251
239void OFileSelector::setPermissionBarVisible( bool show ) 252void OFileSelector::setPermissionBarVisible( bool show )
240{ 253{
@@ -417,9 +430,27 @@ void OFileSelector::reparse()
417 m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currMime ) ); 430 m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currMime ) );
418 }; 431 };
419 QDir dir( m_currentDir ); 432 QDir dir( m_currentDir );
420 //dir.setFilter(-1 ); 433 //dir.setFilter(-1 );
421 dir.setSorting(QDir::Name | QDir::DirsFirst | QDir::Reversed | QDir::IgnoreCase ); 434 int sort = QDir::Name | QDir::DirsFirst | QDir::Reversed;
435 if( m_case )
436 sort = QDir::IgnoreCase;
437 dir.setSorting( sort );
438
439 int filter;
440 /* if( m_dir && !m_files)
441 filter |= QDir::Dirs;
442 else if( !m_dir && m_files )
443 filter |= QDir::Files;
444 else
445 filter |= QDir::All;
446 */
447 if( m_selector == EXTENDED_ALL )
448 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
449 else
450 filter = QDir::Files | QDir::Dirs | QDir::All;
451 dir.setFilter( filter );
452
422 const QFileInfoList *list = dir.entryInfoList(); 453 const QFileInfoList *list = dir.entryInfoList();
423 QFileInfoListIterator it( *list ); 454 QFileInfoListIterator it( *list );
424 QFileInfo *fi; 455 QFileInfo *fi;
425 while( (fi=it.current()) ){ 456 while( (fi=it.current()) ){
@@ -553,11 +584,27 @@ void OFileSelector::slotViewCheck(const QString &view ){
553 QString currMime = m_mimeCheck->currentText(); 584 QString currMime = m_mimeCheck->currentText();
554 if( view == QString::fromLatin1("Documents") ){ 585 if( view == QString::fromLatin1("Documents") ){
555 // get the mimetype now 586 // get the mimetype now
556 // check if we're the current widget and return 587 // check if we're the current widget and return
557 if( m_View != 0) // delete 0 shouldn't crash but it did :( 588 if( m_View != 0) { // delete 0 shouldn't crash but it did :(
558 delete m_View; 589 delete m_View;
590 delete m_boxToolbar;
591 delete m_homeButton;
592 delete m_docButton;
593 delete m_location;
594 delete m_up;
595 delete m_pseudo;
596 delete m_pseudoLayout;
597 }
559 m_View = 0; 598 m_View = 0;
599 m_boxToolbar = 0;
600 m_homeButton = 0;
601 m_docButton = 0;
602 m_location = 0;
603 m_up = 0;
604 m_pseudo = 0;
605 m_pseudoLayout = 0;
606
560 delete m_select; 607 delete m_select;
561 m_select = new FileSelector( currMime == "All" ? QString::null : currMime, 608 m_select = new FileSelector( currMime == "All" ? QString::null : currMime,
562 m_stack,"fileselector", FALSE, FALSE ); 609 m_stack,"fileselector", FALSE, FALSE );
563 m_stack->addWidget( m_select, NORMAL ); 610 m_stack->addWidget( m_select, NORMAL );
@@ -573,8 +620,24 @@ void OFileSelector::slotViewCheck(const QString &view ){
573 delete m_select; 620 delete m_select;
574 m_select = 0; 621 m_select = 0;
575 delete m_View; 622 delete m_View;
576 m_View = 0; 623 m_View = 0;
624
625 delete m_boxToolbar;
626 delete m_homeButton;
627 delete m_docButton;
628 delete m_location;
629 delete m_up;
630 delete m_pseudo;
631 delete m_pseudoLayout;
632 m_boxToolbar = 0;
633 m_homeButton = 0;
634 m_docButton = 0;
635 m_location = 0;
636 m_up = 0;
637 m_pseudo = 0;
638 m_pseudoLayout = 0;
639
577 m_selector = EXTENDED; 640 m_selector = EXTENDED;
578 // create the ListView or IconView 641 // create the ListView or IconView
579 initializeListView(); 642 initializeListView();
580 643
@@ -584,8 +647,23 @@ void OFileSelector::slotViewCheck(const QString &view ){
584 delete m_select; 647 delete m_select;
585 m_select = 0; 648 m_select = 0;
586 delete m_View; 649 delete m_View;
587 m_View = 0; 650 m_View = 0;
651 delete m_boxToolbar;
652 delete m_homeButton;
653 delete m_docButton;
654 delete m_location;
655 delete m_up;
656 delete m_pseudo;
657 delete m_pseudoLayout;
658 m_boxToolbar = 0;
659 m_homeButton = 0;
660 m_docButton = 0;
661 m_location = 0;
662 m_up = 0;
663 m_pseudo = 0;
664 m_pseudoLayout = 0;
665
588 m_selector = EXTENDED_ALL; 666 m_selector = EXTENDED_ALL;
589 initializeListView(); 667 initializeListView();
590 reparse(); 668 reparse();
591 }; 669 };
@@ -610,12 +688,71 @@ void OFileSelector::updateMimes() // lets check which mode is active
610 ; 688 ;
611 } 689 }
612}; 690};
613void OFileSelector::initializeListView() 691void OFileSelector::initializeListView()
614{ 692{
615 m_View = new QListView(m_stack, "Extended view" ); 693 // just to make sure but clean it up better FIXME
616 m_stack->addWidget( m_View, EXTENDED ); 694 delete m_View;
695 m_View = 0;
696 delete m_boxToolbar;
697 delete m_homeButton;
698 delete m_docButton;
699 delete m_location;
700 delete m_up;
701 delete m_pseudo;
702 delete m_pseudoLayout;
703 m_boxToolbar = 0;
704 m_homeButton = 0;
705 m_docButton = 0;
706 m_location = 0;
707 m_up = 0;
708 m_pseudo = 0;
709 m_pseudoLayout = 0;
710 // time for the toolbar
711 m_pseudo = new QWidget(m_stack, "Pseudo Widget");
712 m_pseudoLayout = new QVBoxLayout(m_pseudo );
713 if(m_shTool ){
714 m_boxToolbar = new QHBoxLayout( );
715 m_boxToolbar->setAutoAdd( true );
716 m_location = new QComboBox(m_pseudo );
717
718 m_up = new QPushButton(Resource::loadIconSet("up"),"", m_pseudo,"cdUpButton");
719 m_up->setMinimumSize( QSize( 20, 20 ) );
720 m_up->setMaximumSize( QSize( 20, 20 ) );
721 connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) );
722 m_up->setFlat(TRUE);
723
724 m_homeButton = new QPushButton(Resource::loadIconSet("home") , "", m_pseudo);
725 m_homeButton->setMinimumSize( QSize( 20, 20 ) );
726 m_homeButton->setMaximumSize( QSize( 20, 20 ) );
727 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) );
728 m_homeButton->setFlat(TRUE);
729
730 m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"", m_pseudo,"docsButton");
731 m_docButton->setMinimumSize( QSize( 20, 20 ) );
732 m_docButton->setMaximumSize( QSize( 20, 20 ) );
733 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) );
734 m_docButton->setFlat(TRUE);
735
736 m_boxToolbar->addWidget(m_location );
737 m_boxToolbar->addWidget(m_up );
738 m_boxToolbar->addWidget(m_homeButton );
739 m_boxToolbar->addWidget(m_docButton );
740 m_pseudoLayout->addLayout(m_boxToolbar );
741 // lets fill the combobox
742 StorageInfo storage;
743 const QList<FileSystem> &fs = storage.fileSystems();
744 QListIterator<FileSystem> it ( fs );
745 for( ; it.current(); ++it ){
746 const QString disk = (*it)->name();
747 const QString path = (*it)->path();
748 m_location->insertItem(path+ "<-"+disk );
749 }
750 };
751 m_View = new QListView(m_pseudo, "Extended view" );
752 m_stack->addWidget( m_pseudo, EXTENDED );
617 m_stack->raiseWidget( EXTENDED ); 753 m_stack->raiseWidget( EXTENDED );
754 m_pseudoLayout->addWidget(m_View );
618 QPEApplication::setStylusOperation( m_View->viewport(),QPEApplication::RightOnHold); 755 QPEApplication::setStylusOperation( m_View->viewport(),QPEApplication::RightOnHold);
619 // set up the stuff 756 // set up the stuff
620 // Pixmap Name Date Size mime 757 // Pixmap Name Date Size mime
621 //(m_View->header() )->hide(); 758 //(m_View->header() )->hide();
@@ -634,8 +771,10 @@ void OFileSelector::initializeListView()
634 connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ), 771 connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ),
635 this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) ); 772 this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
636 connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )), 773 connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )),
637 this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) ); 774 this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
775
776
638}; 777};
639/* If a item is locked depends on the mode 778/* If a item is locked depends on the mode
640 if we're in OPEN !isReadable is locked 779 if we're in OPEN !isReadable is locked
641 if we're in SAVE !isWriteable is locked 780 if we're in SAVE !isWriteable is locked
@@ -796,20 +935,32 @@ void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &
796 }; 935 };
797} 936}
798void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int ) 937void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int )
799{ 938{
939 if (item == 0 )
940 return;
941
800 if( button != Qt::RightButton ) 942 if( button != Qt::RightButton )
801 return; 943 return;
802 qWarning("right button" ); 944 qWarning("right button" );
803 slotContextMenu(item); 945 slotContextMenu(item);
804} 946}
805void OFileSelector::slotContextMenu(QListViewItem *item) 947void OFileSelector::slotContextMenu(QListViewItem *item)
806{ 948{
807 qWarning("context menu" ); 949 qWarning("context menu" );
950 if( item ==0 || !m_showPopup )
951 return;
952
808 if( m_custom !=0){ 953 if( m_custom !=0){
809 m_custom->exec(); 954 m_custom->exec();
810 }else{ 955 }else{
811 QPopupMenu menu; 956 QPopupMenu menu;
957 QAction up;
958 up.setText("cd up");
959 up.addTo( &menu );
960 connect(&up, SIGNAL(activated() ),
961 this, SLOT(cdUP() ) );
962
812 QAction act; 963 QAction act;
813 OFileSelectorItem *sel = (OFileSelectorItem*)item; 964 OFileSelectorItem *sel = (OFileSelectorItem*)item;
814 if(sel->isDir() ){ 965 if(sel->isDir() ){
815 act.setText( tr("Change Directory") ); 966 act.setText( tr("Change Directory") );
@@ -824,22 +975,22 @@ void OFileSelector::slotContextMenu(QListViewItem *item)
824 } 975 }
825 QAction rescan; 976 QAction rescan;
826 rescan.setText( tr("Rescan") ); 977 rescan.setText( tr("Rescan") );
827 rescan.addTo( &menu ); 978 rescan.addTo( &menu );
828 connect(&act, SIGNAL(activated() ), 979 connect(&rescan, SIGNAL(activated() ),
829 this, SLOT(slotRescan() ) ); 980 this, SLOT(slotRescan() ) );
830 981
831 QAction rename; 982 QAction rename;
832 rename.setText( tr("Rename") ); 983 rename.setText( tr("Rename") );
833 rename.addTo( &menu ); 984 rename.addTo( &menu );
834 connect(&act, SIGNAL(activated() ), 985 connect(&rename, SIGNAL(activated() ),
835 this, SLOT(slotRename() ) ); 986 this, SLOT(slotRename() ) );
836 987
837 menu.insertSeparator(); 988 menu.insertSeparator();
838 QAction delItem; 989 QAction delItem;
839 delItem.setText( tr("Delete") ); 990 delItem.setText( tr("Delete") );
840 delItem.addTo(&menu ); 991 delItem.addTo(&menu );
841 connect(&act, SIGNAL(activated() ), 992 connect(&delItem, SIGNAL(activated() ),
842 this, SLOT(slotDelete() ) ); 993 this, SLOT(slotDelete() ) );
843 994
844 menu.exec(QCursor::pos() ); 995 menu.exec(QCursor::pos() );
845 } 996 }
@@ -894,7 +1045,15 @@ void OFileSelector::slotDelete()
894 m_View->takeItem( sel ); 1045 m_View->takeItem( sel );
895 delete sel; 1046 delete sel;
896} 1047}
897 1048
898 1049void OFileSelector::cdUP()
1050{
1051 QDir dir( m_currentDir );
1052 dir.cdUp();
1053 if(dir.exists() ){
1054 m_currentDir = dir.absPath();
1055 reparse();
1056 }
1057}
899 1058
900 1059
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h
index 458e552..b91c0ea 100644
--- a/libopie/ofileselector.h
+++ b/libopie/ofileselector.h
@@ -154,9 +154,10 @@ class OFileSelector : public QWidget {
154 int mode()const { return m_mode; }; 154 int mode()const { return m_mode; };
155 int selector()const { return m_selector; }; 155 int selector()const { return m_selector; };
156 void setSelector( int ); 156 void setSelector( int );
157 157
158 158 bool showPopup()const { return m_showPopup; };
159 void setShowPopup( bool pop ) { m_showPopup = pop; };
159 void setPopupMenu( QPopupMenu * ); 160 void setPopupMenu( QPopupMenu * );
160 161
161 void updateLay(); 162 void updateLay();
162 163
@@ -194,14 +195,16 @@ class OFileSelector : public QWidget {
194 195
195 protected: 196 protected:
196 197
197 private: 198 private:
198int m_mode, m_selector; 199 int m_mode, m_selector;
199 QComboBox *m_location, *m_mimeCheck, *m_viewCheck; 200 QComboBox *m_location, *m_mimeCheck, *m_viewCheck;
200 QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel; 201 QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel;
201 QPushButton *m_reread, *m_up; 202 QPushButton *m_reread, *m_up;
202 QListView *m_View; 203 QListView *m_View;
203 QCheckBox *m_checkPerm; 204 QCheckBox *m_checkPerm;
205 QWidget *m_pseudo;
206 QVBoxLayout *m_pseudoLayout;
204 207
205 QString m_currentDir; 208 QString m_currentDir;
206 QString m_name; 209 QString m_name;
207 QStringList m_mimetypes; 210 QStringList m_mimetypes;
@@ -229,8 +232,9 @@ int m_mode, m_selector;
229 bool m_autoMime:1; 232 bool m_autoMime:1;
230 bool m_case:1; 233 bool m_case:1;
231 bool m_dir:1; 234 bool m_dir:1;
232 bool m_files:1; 235 bool m_files:1;
236 bool m_showPopup:1;
233 237
234 // implementation todo 238 // implementation todo
235 virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE ); 239 virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE );
236 virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE ); 240 virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE );
@@ -261,8 +265,9 @@ private slots:
261 virtual void slotOpen(); 265 virtual void slotOpen();
262 virtual void slotRescan(); 266 virtual void slotRescan();
263 virtual void slotRename(); 267 virtual void slotRename();
264 virtual void slotDelete(); 268 virtual void slotDelete();
269 virtual void cdUP();
265 270
266}; 271};
267 272
268 273