summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofileselector.cpp78
-rw-r--r--libopie/ofileselector.h62
2 files changed, 139 insertions, 1 deletions
diff --git a/libopie/ofileselector.cpp b/libopie/ofileselector.cpp
index 577e916..9afe9c7 100644
--- a/libopie/ofileselector.cpp
+++ b/libopie/ofileselector.cpp
@@ -607,87 +607,120 @@ QString OFileViewFileSystem::directory()const{
607void OFileViewFileSystem::reread() { 607void OFileViewFileSystem::reread() {
608 if (!m_view) 608 if (!m_view)
609 return; 609 return;
610 610
611 m_view->reread( m_all ); 611 m_view->reread( m_all );
612} 612}
613int OFileViewFileSystem::fileCount()const{ 613int OFileViewFileSystem::fileCount()const{
614 if (!m_view ) 614 if (!m_view )
615 return -1; 615 return -1;
616 return m_view->fileCount(); 616 return m_view->fileCount();
617} 617}
618QWidget* OFileViewFileSystem::widget( QWidget* parent ) { 618QWidget* OFileViewFileSystem::widget( QWidget* parent ) {
619 if (!m_view ) { 619 if (!m_view ) {
620 m_view = new OFileViewFileListView( parent, startDirectory(), selector() ); 620 m_view = new OFileViewFileListView( parent, startDirectory(), selector() );
621 } 621 }
622 return m_view; 622 return m_view;
623} 623}
624void OFileViewFileSystem::activate( const QString& str) { 624void OFileViewFileSystem::activate( const QString& str) {
625 m_all = (str != QObject::tr("Files") ); 625 m_all = (str != QObject::tr("Files") );
626 626
627 627
628} 628}
629 629
630/* Selector */ 630/* Selector */
631/**
632 * @short new and complete c'tor
633 *
634 * Create a OFileSelector to let the user select a file. It can
635 * either be used to open a file, select a save name in a dir or
636 * as a dropin for the FileSelector.
637 *
638 * <pre>
639 * QMap<QString, QStringList> mimeTypes;
640 * QStringList types;
641 * types << "text[slash]* ";
642 * types << "audio[slash]*";
643 * mimeTypes.insert( tr("Audio and Text"), types );
644 * mimeTypes.insert( tr("All"), "*[slash]*);
645 *
646 * now you could create your fileselector
647 * </pre>
648 *
649 *
650 * @param parent the parent of this widget
651 * @param mode The mode from the enum Mode (Open,Save,FILESELECTOR)
652 * @param sel The selector to be used
653 * @param dirName The name of the dir to start int
654 * @param fileName The fileName placed in the fileselector lineedit
655 * @param mimetypes The MimeType map of used mimetypes
656 * @param showNew Show a New Button. Most likely to be used in the FileSelector view.
657 * @param showClose Show a Close Button. Most likely to be used in FileSelector view.
658 *
659 */
631OFileSelector::OFileSelector( QWidget* parent, int mode, int sel, 660OFileSelector::OFileSelector( QWidget* parent, int mode, int sel,
632 const QString& dirName, const QString& fileName, 661 const QString& dirName, const QString& fileName,
633 const MimeTypes& mimetypes, 662 const MimeTypes& mimetypes,
634 bool showNew, bool showClose) 663 bool showNew, bool showClose)
635 : QWidget( parent, "OFileSelector" ) 664 : QWidget( parent, "OFileSelector" )
636{ 665{
637 m_current = 0; 666 m_current = 0;
638 m_shNew = showNew; 667 m_shNew = showNew;
639 m_shClose = showClose; 668 m_shClose = showClose;
640 m_mimeType = mimetypes; 669 m_mimeType = mimetypes;
641 m_startDir = dirName; 670 m_startDir = dirName;
642 671
643 m_mode = mode; 672 m_mode = mode;
644 m_selector = sel; 673 m_selector = sel;
645 674
646 initUI(); 675 initUI();
647 m_lneEdit->setText( fileName ); 676 m_lneEdit->setText( fileName );
648 initMime(); 677 initMime();
649 initViews(); 678 initViews();
650 679
651 QString str; 680 QString str;
652 switch ( m_selector ) { 681 switch ( m_selector ) {
653 default: 682 default:
654 case Normal: 683 case Normal:
655 str = QObject::tr("Documents"); 684 str = QObject::tr("Documents");
656 m_cmbView->setCurrentItem( 0 ); 685 m_cmbView->setCurrentItem( 0 );
657 break; 686 break;
658 case Extended: 687 case Extended:
659 str = QObject::tr("Files"); 688 str = QObject::tr("Files");
660 m_cmbView->setCurrentItem( 1 ); 689 m_cmbView->setCurrentItem( 1 );
661 break; 690 break;
662 case ExtendedAll: 691 case ExtendedAll:
663 str = QObject::tr("All Files"); 692 str = QObject::tr("All Files");
664 m_cmbView->setCurrentItem( 2 ); 693 m_cmbView->setCurrentItem( 2 );
665 break; 694 break;
666 } 695 }
667 slotViewChange( str ); 696 slotViewChange( str );
668 697
669} 698}
699
700/**
701 * This a convience c'tor to just substitute the use of FileSelector
702 */
670OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name, 703OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name,
671 bool showNew, bool showClose ) 704 bool showNew, bool showClose )
672 : QWidget( parent, name ) 705 : QWidget( parent, name )
673{ 706{
674 m_current = 0; 707 m_current = 0;
675 m_shNew = showNew; 708 m_shNew = showNew;
676 m_shClose = showClose; 709 m_shClose = showClose;
677 m_startDir = QPEApplication::documentDir(); 710 m_startDir = QPEApplication::documentDir();
678 711
679 if (!mimeFilter.isEmpty() ) 712 if (!mimeFilter.isEmpty() )
680 m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) ); 713 m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) );
681 714
682 m_mode = OFileSelector::FileSelector; 715 m_mode = OFileSelector::FileSelector;
683 m_selector = OFileSelector::Normal; 716 m_selector = OFileSelector::Normal;
684 717
685 initUI(); 718 initUI();
686 initMime(); 719 initMime();
687 initViews(); 720 initViews();
688 m_cmbView->setCurrentItem( 0 ); 721 m_cmbView->setCurrentItem( 0 );
689 slotViewChange( QObject::tr("Documents") ); 722 slotViewChange( QObject::tr("Documents") );
690} 723}
691/* 724/*
692 * INIT UI will set up the basic GUI 725 * INIT UI will set up the basic GUI
693 * Layout: Simple VBoxLayout 726 * Layout: Simple VBoxLayout
@@ -742,88 +775,133 @@ void OFileSelector::initMime() {
742 for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) { 775 for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) {
743 m_cmbMime->insertItem( it.key() ); 776 m_cmbMime->insertItem( it.key() );
744 } 777 }
745 m_cmbMime->setCurrentItem( 0 ); 778 m_cmbMime->setCurrentItem( 0 );
746 779
747 connect( m_cmbMime, SIGNAL(activated(int) ), 780 connect( m_cmbMime, SIGNAL(activated(int) ),
748 this, SLOT(slotMimeTypeChanged() ) ); 781 this, SLOT(slotMimeTypeChanged() ) );
749 782
750} 783}
751void OFileSelector::initViews() { 784void OFileSelector::initViews() {
752 m_cmbView->insertItem( QObject::tr("Documents") ); 785 m_cmbView->insertItem( QObject::tr("Documents") );
753 m_cmbView->insertItem( QObject::tr("Files") ); 786 m_cmbView->insertItem( QObject::tr("Files") );
754 m_cmbView->insertItem( QObject::tr("All Files") ); 787 m_cmbView->insertItem( QObject::tr("All Files") );
755 connect(m_cmbView, SIGNAL(activated( const QString& ) ), 788 connect(m_cmbView, SIGNAL(activated( const QString& ) ),
756 this, SLOT(slotViewChange( const QString& ) ) ); 789 this, SLOT(slotViewChange( const QString& ) ) );
757 790
758 791
759 m_views.insert( QObject::tr("Documents"), new ODocumentFileView(this) ); 792 m_views.insert( QObject::tr("Documents"), new ODocumentFileView(this) );
760 793
761 /* see above why add both */ 794 /* see above why add both */
762 OFileViewInterface* in = new OFileViewFileSystem( this ); 795 OFileViewInterface* in = new OFileViewFileSystem( this );
763 m_views.insert( QObject::tr("Files"), in ); 796 m_views.insert( QObject::tr("Files"), in );
764 m_views.insert( QObject::tr("All Files"), in ); 797 m_views.insert( QObject::tr("All Files"), in );
765} 798}
799
800/**
801 * d'tor
802 */
766OFileSelector::~OFileSelector() { 803OFileSelector::~OFileSelector() {
767 804
768} 805}
806
807/**
808 * Convience function for the fileselector
809 * make sure to delete the DocLnk
810 *
811 * @see DocLnk
812 * @todo remove in ODP
813 */
769const DocLnk* OFileSelector::selected() { 814const DocLnk* OFileSelector::selected() {
770 DocLnk* lnk = new DocLnk( currentView()->selectedDocument() ); 815 DocLnk* lnk = new DocLnk( currentView()->selectedDocument() );
771 return lnk; 816 return lnk;
772} 817}
818
819/**
820 *
821 * @return the name of the selected file
822 */
773QString OFileSelector::selectedName()const{ 823QString OFileSelector::selectedName()const{
774 return currentView()->selectedName(); 824 return currentView()->selectedName();
775} 825}
826
827/**
828 * @return the selected path
829 */
776QString OFileSelector::selectedPath()const { 830QString OFileSelector::selectedPath()const {
777 return currentView()->selectedPath(); 831 return currentView()->selectedPath();
778} 832}
833
834/**
835 * @return the directory name
836 */
779QString OFileSelector::directory()const { 837QString OFileSelector::directory()const {
780 return currentView()->directory(); 838 return currentView()->directory();
781} 839}
840
841/**
842 * @return a DocLnk for the selected document
843 */
782DocLnk OFileSelector::selectedDocument()const { 844DocLnk OFileSelector::selectedDocument()const {
783 return currentView()->selectedDocument(); 845 return currentView()->selectedDocument();
784} 846}
847
848/**
849 * @return the number of items for the current view
850 */
785int OFileSelector::fileCount()const { 851int OFileSelector::fileCount()const {
786 return currentView()->fileCount(); 852 return currentView()->fileCount();
787} 853}
854
855/**
856 * @return reparse the file content
857 */
788void OFileSelector::reread() { 858void OFileSelector::reread() {
789 return currentView()->reread(); 859 return currentView()->reread();
790} 860}
791OFileViewInterface* OFileSelector::currentView()const{ 861OFileViewInterface* OFileSelector::currentView()const{
792 return m_current; 862 return m_current;
793} 863}
794bool OFileSelector::showNew()const { 864bool OFileSelector::showNew()const {
795 return m_shNew; 865 return m_shNew;
796} 866}
797bool OFileSelector::showClose()const { 867bool OFileSelector::showClose()const {
798 return m_shClose; 868 return m_shClose;
799} 869}
800MimeTypes OFileSelector::mimeTypes()const { 870MimeTypes OFileSelector::mimeTypes()const {
801 return m_mimeType; 871 return m_mimeType;
802} 872}
873
874/**
875 * @return the Mode of the OFileSelector
876 */
803int OFileSelector::mode()const{ 877int OFileSelector::mode()const{
804 return m_mode; 878 return m_mode;
805} 879}
880
881/**
882 * @return the Selector of the OFileSelector
883 */
806int OFileSelector::selector()const{ 884int OFileSelector::selector()const{
807 return m_selector; 885 return m_selector;
808} 886}
809QStringList OFileSelector::currentMimeType()const { 887QStringList OFileSelector::currentMimeType()const {
810 return m_mimeType[m_cmbMime->currentText()]; 888 return m_mimeType[m_cmbMime->currentText()];
811} 889}
812void OFileSelector::slotMimeTypeChanged() { 890void OFileSelector::slotMimeTypeChanged() {
813 reread(); 891 reread();
814} 892}
815void OFileSelector::slotDocLnkBridge( const DocLnk& lnk) { 893void OFileSelector::slotDocLnkBridge( const DocLnk& lnk) {
816 m_lneEdit->setText( lnk.name() ); 894 m_lneEdit->setText( lnk.name() );
817 emit fileSelected( lnk ); 895 emit fileSelected( lnk );
818 emit fileSelected( lnk.name() ); 896 emit fileSelected( lnk.name() );
819} 897}
820void OFileSelector::slotFileBridge( const QString& str) { 898void OFileSelector::slotFileBridge( const QString& str) {
821 DocLnk lnk( str ); 899 DocLnk lnk( str );
822 emit fileSelected( lnk ); 900 emit fileSelected( lnk );
823} 901}
824void OFileSelector::slotViewChange( const QString& view ) { 902void OFileSelector::slotViewChange( const QString& view ) {
825 OFileViewInterface* interface = m_views[view]; 903 OFileViewInterface* interface = m_views[view];
826 if (!interface) 904 if (!interface)
827 return; 905 return;
828 906
829 interface->activate( view ); 907 interface->activate( view );
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h
index bdb3e56..767455c 100644
--- a/libopie/ofileselector.h
+++ b/libopie/ofileselector.h
@@ -30,93 +30,153 @@
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34 34
35#ifndef OPIE_OFILESELECTOR_FOO_H 35#ifndef OPIE_OFILESELECTOR_FOO_H
36#define OPIE_OFILESELECTOR_FOO_H 36#define OPIE_OFILESELECTOR_FOO_H
37 37
38#include <qlist.h> 38#include <qlist.h>
39#include <qwidget.h> 39#include <qwidget.h>
40#include <qmap.h> 40#include <qmap.h>
41#include <qvaluelist.h> 41#include <qvaluelist.h>
42#include <qstringlist.h> 42#include <qstringlist.h>
43 43
44#include <qpe/applnk.h> 44#include <qpe/applnk.h>
45 45
46typedef QMap<QString, QStringList> MimeTypes; 46typedef QMap<QString, QStringList> MimeTypes;
47 47
48class OFileViewInterface; 48class OFileViewInterface;
49class OFileViewFileListView; 49class OFileViewFileListView;
50class QLineEdit; 50class QLineEdit;
51class QComboBox; 51class QComboBox;
52class QWidgetStack; 52class QWidgetStack;
53class QHBox; 53class QHBox;
54
55
56/**
57 * @short a dropin replacement for the FileSelector
58 *
59 * This class is first used insert the OFileDialog.
60 * It supports multiple view and mimetype filtering for now.
61 *
62 * @see OFileDialog
63 * @see FileSelector
64 * @author zecke
65 * @version 0.1
66 */
54class OFileSelector : public QWidget { 67class OFileSelector : public QWidget {
55 Q_OBJECT 68 Q_OBJECT
56 friend class OFileViewInterface; 69 friend class OFileViewInterface;
57 friend class OFileViewFileListView; 70 friend class OFileViewFileListView;
58public: 71public:
72 /**
73 * The Mode of the Fileselector
74 * Open = Open A File
75 * Save = Save a File
76 * FILESELECTOR = As A GUI in a screen to select a file
77 */
59 enum Mode { Open=1, Save=2, FileSelector=4, OPEN=1, SAVE=2, FILESELECTOR=4 }; 78 enum Mode { Open=1, Save=2, FileSelector=4, OPEN=1, SAVE=2, FILESELECTOR=4 };
60// enum OldMode { OPEN=1, SAVE=2, FILESELECTOR = 4 }; 79// enum OldMode { OPEN=1, SAVE=2, FILESELECTOR = 4 };
80 /**
81 * Normal = The old FileSelector
82 * Extended = Dir View
83 * ExtendedAll = Dir View with all hidden files
84 * Default = What the vendor considers best
85 */
61 enum Selector { Normal = 0, Extended=1, ExtendedAll =2, Default=3, NORMAL=0,EXTENDED=1, EXTENDED_ALL =2, DEFAULT=3 }; 86 enum Selector { Normal = 0, Extended=1, ExtendedAll =2, Default=3, NORMAL=0,EXTENDED=1, EXTENDED_ALL =2, DEFAULT=3 };
62// enum OldSelector { NORMAL = 0, EXTENDED =1, EXTENDED_ALL = 2}; 87// enum OldSelector { NORMAL = 0, EXTENDED =1, EXTENDED_ALL = 2};
63 88
89
64 OFileSelector(QWidget* parent, int mode, int selector, 90 OFileSelector(QWidget* parent, int mode, int selector,
65 const QString& dirName, 91 const QString& dirName,
66 const QString& fileName, 92 const QString& fileName,
67 const MimeTypes& mimetypes = MimeTypes(), 93 const MimeTypes& mimetypes = MimeTypes(),
68 bool newVisible = FALSE, bool closeVisible = FALSE ); 94 bool newVisible = FALSE, bool closeVisible = FALSE );
69 95
70 OFileSelector(const QString& mimeFilter, QWidget* parent, 96 OFileSelector(const QString& mimeFilter, QWidget* parent,
71 const char* name = 0, bool newVisible = TRUE, bool closeVisible = FALSE ); 97 const char* name = 0, bool newVisible = TRUE, bool closeVisible = FALSE );
72 ~OFileSelector(); 98 ~OFileSelector();
73 99
74 const DocLnk* selected(); 100 const DocLnk* selected();
75 101
76 QString selectedName()const; 102 QString selectedName()const;
77 QString selectedPath()const; 103 QString selectedPath()const;
78 QString directory()const; 104 QString directory()const;
79 105
80 DocLnk selectedDocument()const; 106 DocLnk selectedDocument()const;
81 107
82 int fileCount()const; 108 int fileCount()const;
83 void reread(); 109 void reread();
84 110
85 int mode()const; 111 int mode()const;
86 int selector()const; 112 int selector()const;
87 113
88 114 /**
115 * Set the Icon visible
116 * @param b Show or Hide the New Button
117 */
89 void setNewVisible( bool b ); 118 void setNewVisible( bool b );
119
120 /**
121 * Set the Icon visible
122 */
90 void setCloseVisible( bool b ); 123 void setCloseVisible( bool b );
124
125 /**
126 * Set the Name Line visible
127 */
91 void setNameVisible( bool b ); 128 void setNameVisible( bool b );
92 129
93signals: 130signals:
131 /**
132 * dirSelected is emitted whenever changed into a different dir
133 */
94 void dirSelected( const QString& ); 134 void dirSelected( const QString& );
135
136 /**
137 * fileSelected is emitted when a file is selected
138 * it uses a DocLnk as parameter
139 */
95 void fileSelected( const DocLnk& ); 140 void fileSelected( const DocLnk& );
141
142 /**
143 * fileSelected is emitted when a file is selected
144 * the complete path is a parameter
145 */
96 void fileSelected( const QString& ); 146 void fileSelected( const QString& );
147
148 /**
149 * Create a new File with a DocLnk
150 */
97 void newSelected( const DocLnk& ); 151 void newSelected( const DocLnk& );
152
98 void closeMe(); 153 void closeMe();
154
155 /**
156 * Ok is emitted on a Qt::Key_Return or Q::Key_Enter
157 * in the line edit
158 */
99 void ok(); 159 void ok();
100 void cancel(); 160 void cancel();
101 161
102/* used by the ViewInterface */ 162/* used by the ViewInterface */
103private: 163private:
104 bool showNew()const; 164 bool showNew()const;
105 bool showClose()const; 165 bool showClose()const;
106 MimeTypes mimeTypes()const; 166 MimeTypes mimeTypes()const;
107 QStringList currentMimeType()const; 167 QStringList currentMimeType()const;
108 168
109private: 169private:
110 /* inits the Widgets */ 170 /* inits the Widgets */
111 void initUI(); 171 void initUI();
112 /* inits the MimeType ComboBox content + connects signals and slots */ 172 /* inits the MimeType ComboBox content + connects signals and slots */
113 void initMime(); 173 void initMime();
114 /* init the Views :) */ 174 /* init the Views :) */
115 void initViews(); 175 void initViews();
116 176
117private: 177private:
118 QLineEdit* m_lneEdit; // the LineEdit for the Name 178 QLineEdit* m_lneEdit; // the LineEdit for the Name
119 QComboBox *m_cmbView, *m_cmbMime; // two ComboBoxes to select the View and MimeType 179 QComboBox *m_cmbView, *m_cmbMime; // two ComboBoxes to select the View and MimeType
120 QWidgetStack* m_stack; // our widget stack which will contain the views 180 QWidgetStack* m_stack; // our widget stack which will contain the views
121 OFileViewInterface* currentView()const; // returns the currentView 181 OFileViewInterface* currentView()const; // returns the currentView
122 OFileViewInterface* m_current; // here is the view saved 182 OFileViewInterface* m_current; // here is the view saved