-rw-r--r-- | libopie/ofileselector/ofilefactory.cpp | 40 | ||||
-rw-r--r-- | libopie/ofileselector/ofilefactory.h | 32 | ||||
-rw-r--r-- | libopie/ofileselector/ofilelistview.cpp | 41 | ||||
-rw-r--r-- | libopie/ofileselector/ofilelistview.h | 20 | ||||
-rw-r--r-- | libopie/ofileselector/ofileview.h | 22 | ||||
-rw-r--r-- | libopie/ofileselector/olister.cpp | 48 | ||||
-rw-r--r-- | libopie/ofileselector/olister.h | 4 | ||||
-rw-r--r-- | libopie/ofileselector/opixmapprovider.cpp | 83 | ||||
-rw-r--r-- | libopie/ofileselector/opixmapprovider.h | 41 |
9 files changed, 284 insertions, 47 deletions
diff --git a/libopie/ofileselector/ofilefactory.cpp b/libopie/ofileselector/ofilefactory.cpp new file mode 100644 index 0000000..f752149 --- a/dev/null +++ b/libopie/ofileselector/ofilefactory.cpp | |||
@@ -0,0 +1,40 @@ | |||
1 | #include "ofilefactory.h" | ||
2 | |||
3 | OFileFactory::OFileFactory() { | ||
4 | } | ||
5 | OFileFactory::~OFileFactory() { | ||
6 | } | ||
7 | QStringList OFileFactory::lister()const { | ||
8 | QStringList list; | ||
9 | QMap<QString, listerFact>::ConstIterator it; | ||
10 | for ( it = m_lister.begin(); it != m_lister.end(); ++it ) { | ||
11 | list << (*it); | ||
12 | } | ||
13 | return list; | ||
14 | } | ||
15 | QStringList OFileFactory::views()const { | ||
16 | QStringList list; | ||
17 | |||
18 | |||
19 | return list; | ||
20 | } | ||
21 | OFileView* OFileFactory::view( const QString& name, | ||
22 | OFileSelector*, QWidget* ) { | ||
23 | |||
24 | } | ||
25 | OLister* OFileFactory::lister(const QString&, OFileSelector*) { | ||
26 | |||
27 | } | ||
28 | void OFileFactory::addLister( const QString&, listerFact fact ) { | ||
29 | |||
30 | } | ||
31 | void OFileFactory::addView( const QString&, viewFact fact ) { | ||
32 | |||
33 | |||
34 | } | ||
35 | void OFileFactory::removeLister( const QString& ) { | ||
36 | |||
37 | } | ||
38 | void OFileFactory::removeView( const QString& ) { | ||
39 | |||
40 | } | ||
diff --git a/libopie/ofileselector/ofilefactory.h b/libopie/ofileselector/ofilefactory.h new file mode 100644 index 0000000..96fb00d --- a/dev/null +++ b/libopie/ofileselector/ofilefactory.h | |||
@@ -0,0 +1,32 @@ | |||
1 | #ifndef OFILE_FACTORY_H | ||
2 | #define OFILE_FACTORY_H | ||
3 | |||
4 | #include "olister.h" | ||
5 | #include "ofileview.h" | ||
6 | class OFileFactory { | ||
7 | public: | ||
8 | typedef OLister* (*listerFact)(OFileSelector*); | ||
9 | typedef OFileView* (*viewFact)(OFileSelector*, QWidget*); | ||
10 | OFileFactory(); | ||
11 | ~OFileFactory(); | ||
12 | |||
13 | QStringList lister()const; | ||
14 | QStringList views()const; | ||
15 | |||
16 | OFileView* view( const QString& name, OFileSelector*, QWidget* ); | ||
17 | OLister* lister( const QString& name, OFileSelector* ); | ||
18 | |||
19 | void addLister( const QString&, listerFact fact ); | ||
20 | void addView( const QString&, viewFact ); | ||
21 | |||
22 | void removeLister( const QString& ); | ||
23 | void removeView( const QString& ); | ||
24 | |||
25 | private: | ||
26 | QMap<QString, listerFact> m_lister; | ||
27 | QMap<QString, viewFact> m_view; | ||
28 | |||
29 | }; | ||
30 | |||
31 | |||
32 | #endif | ||
diff --git a/libopie/ofileselector/ofilelistview.cpp b/libopie/ofileselector/ofilelistview.cpp index bb15764..691bf42 100644 --- a/libopie/ofileselector/ofilelistview.cpp +++ b/libopie/ofileselector/ofilelistview.cpp | |||
@@ -1,183 +1,168 @@ | |||
1 | 1 | ||
2 | #include <qheader.h> | 2 | #include <qheader.h> |
3 | 3 | ||
4 | #include <qpe/mimetype.h> | 4 | #include <qpe/mimetype.h> |
5 | #include <qpe/resource.h> | 5 | #include <qpe/resource.h> |
6 | #include <qpe/qpeapplication.h> | 6 | #include <qpe/qpeapplication.h> |
7 | 7 | ||
8 | #include "ofileselector.h" | 8 | #include "ofileselector.h" |
9 | #include "ofileselectoritem.h" | 9 | #include "ofileselectoritem.h" |
10 | #include "ofilelistview.h" | 10 | #include "ofilelistview.h" |
11 | 11 | ||
12 | 12 | ||
13 | OFileListView::OFileListView( QWidget* parent, OFileSelector* sel) | 13 | OFileListView::OFileListView( QWidget* parent, OFileSelector* sel) |
14 | : QListView( parent ), OFileView( sel ) | 14 | : QListView( parent ), OFileView( sel ) |
15 | { | 15 | { |
16 | QPEApplication::setStylusOperation( viewport(), | 16 | QPEApplication::setStylusOperation( viewport(), |
17 | QPEApplication::RightOnHold); | 17 | QPEApplication::RightOnHold); |
18 | addColumn(" " ); | 18 | addColumn(" " ); |
19 | addColumn(tr("Name"), 135 ); | 19 | addColumn(tr("Name"), 135 ); |
20 | addColumn(tr("Size"), -1 ); | 20 | addColumn(tr("Size"), -1 ); |
21 | addColumn(tr("Date"), 60 ); | 21 | addColumn(tr("Date"), 60 ); |
22 | addColumn(tr("Mime Type"), -1 ); | 22 | addColumn(tr("Mime Type"), -1 ); |
23 | QHeader *head = header(); | 23 | QHeader *head = header(); |
24 | head->hide(); | 24 | head->hide(); |
25 | setSorting( 1 ); | 25 | setSorting( 1 ); |
26 | setAllColumnsShowFocus( TRUE ); | 26 | setAllColumnsShowFocus( TRUE ); |
27 | 27 | ||
28 | connect(this, SIGNAL(selectionChanged() ), | 28 | connect(this, SIGNAL(selectionChanged() ), |
29 | this, SLOT(slotSelectionChanged() ) ); | 29 | this, SLOT(slotSelectionChanged() ) ); |
30 | 30 | ||
31 | connect(this, SIGNAL(currentChanged(QListViewItem *) ), | 31 | connect(this, SIGNAL(currentChanged(QListViewItem *) ), |
32 | this, SLOT(slotCurrentChanged(QListViewItem * ) ) ); | 32 | this, SLOT(slotCurrentChanged(QListViewItem * ) ) ); |
33 | 33 | ||
34 | connect(this, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ), | 34 | connect(this, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ), |
35 | this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) ); | 35 | this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) ); |
36 | 36 | ||
37 | connect(this, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )), | 37 | connect(this, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )), |
38 | this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) ); | 38 | this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) ); |
39 | } | 39 | } |
40 | OFileListView::~OFileListView() { | 40 | OFileListView::~OFileListView() { |
41 | 41 | ||
42 | } | 42 | } |
43 | void OFileListView::clear() { | 43 | void OFileListView::clear() { |
44 | QListView::clear(); | 44 | QListView::clear(); |
45 | } | 45 | } |
46 | void OFileListView::addFile( const QString&, | 46 | void OFileListView::addFile( const QPixmap& pix, |
47 | const QString&, | ||
47 | QFileInfo* info, | 48 | QFileInfo* info, |
48 | bool isSymlink ) { | 49 | bool isSymlink ) { |
49 | MimeType type( info->absFilePath() ); | ||
50 | QPixmap pix = type.pixmap(); | ||
51 | QString dir; | 50 | QString dir; |
52 | QString name; | 51 | QString name; |
53 | bool locked = false; | 52 | bool locked = false; |
54 | 53 | ||
55 | if( pix.isNull() ) | ||
56 | pix = Resource::loadPixmap( "UnknownDocument-14"); | ||
57 | |||
58 | dir = info->dirPath( true ); | 54 | dir = info->dirPath( true ); |
59 | 55 | ||
60 | if( isSymlink ) | 56 | if( isSymlink ) |
61 | name = info->fileName() + " -> " +info->dirPath() + "/" + info->readLink(); | 57 | name = info->fileName() + " -> " +info->dirPath() + "/" + info->readLink(); |
62 | else { | 58 | else { |
63 | name = info->fileName(); | 59 | name = info->fileName(); |
64 | if( ( selector()->mode() == OFileSelector::Open && !info->isReadable() ) || | 60 | if( ( selector()->mode() == OFileSelector::Open && !info->isReadable() ) || |
65 | ( selector()->mode() == OFileSelector::Save && !info->isWritable() ) ){ | 61 | ( selector()->mode() == OFileSelector::Save && !info->isWritable() ) ){ |
66 | 62 | ||
67 | locked = true; pix = Resource::loadPixmap("locked"); | 63 | locked = true; |
68 | } | 64 | } |
69 | } | 65 | } |
70 | new OFileSelectorItem( this, pix, name, | 66 | new OFileSelectorItem( this, pix, name, |
71 | info->lastModified().toString(), | 67 | info->lastModified().toString(), |
72 | QString::number( info->size() ), | 68 | QString::number( info->size() ), |
73 | dir, locked ); | 69 | dir, locked ); |
74 | } | 70 | } |
75 | void OFileListView::addFile( const QString& /*mime*/, const QString& /*dir*/, | 71 | void OFileListView::addFile( const QPixmap&, |
72 | const QString& /*mime*/, const QString& /*dir*/, | ||
76 | const QString& /*file*/, bool /*isSyml*/ ) { | 73 | const QString& /*file*/, bool /*isSyml*/ ) { |
77 | 74 | ||
78 | } | 75 | } |
79 | void OFileListView::addDir( const QString&, | 76 | void OFileListView::addDir( const QPixmap& pix, const QString&, |
80 | QFileInfo* info, bool symlink ) { | 77 | QFileInfo* info, bool symlink ) { |
81 | 78 | ||
82 | bool locked = false; | 79 | bool locked = false; |
83 | QString name; | 80 | QString name; |
84 | QPixmap pix; | ||
85 | |||
86 | if( ( selector()->mode() == OFileSelector::Open && !info->isReadable() ) || | ||
87 | ( selector()->mode() == OFileSelector::Save && !info->isWritable() ) ){ | ||
88 | |||
89 | locked = true; | ||
90 | |||
91 | if( symlink ) | ||
92 | pix = selector()->pixmap("symlinkedlocked"); | ||
93 | else | ||
94 | pix = Resource::loadPixmap("lockedfolder"); | ||
95 | |||
96 | }else { // readable | ||
97 | pix = symlink ? selector()->pixmap("dirsymlink") : Resource::loadPixmap("folder") ; | ||
98 | } | ||
99 | 81 | ||
100 | name = symlink ? info->fileName() + "->" + info->dirPath(true) + "/" +info->readLink() : info->fileName() ; | 82 | name = symlink ? info->fileName() + "->" + info->dirPath(true) + "/" +info->readLink() : info->fileName() ; |
101 | 83 | ||
102 | new OFileSelectorItem( this, pix, name, | 84 | new OFileSelectorItem( this, pix, name, |
103 | info->lastModified().toString(), | 85 | info->lastModified().toString(), |
104 | QString::number( info->size() ), | 86 | QString::number( info->size() ), |
105 | info->dirPath( true ), locked, | 87 | info->dirPath( true ), locked, |
106 | true ); | 88 | true ); |
107 | 89 | ||
108 | } | 90 | } |
109 | void OFileListView::addDir( const QString& /*mime*/, const QString& /*dir*/, | 91 | void OFileListView::addDir( const QPixmap&, |
92 | const QString& /*mime*/, const QString& /*dir*/, | ||
110 | const QString& /*file*/, bool ) { | 93 | const QString& /*file*/, bool ) { |
111 | 94 | ||
112 | } | 95 | } |
113 | void OFileListView::addSymlink( const QString& /*mime*/, | 96 | void OFileListView::addSymlink( const QPixmap&, |
97 | const QString& /*mime*/, | ||
114 | QFileInfo* /*info*/, | 98 | QFileInfo* /*info*/, |
115 | bool /*isSym*/ ) { | 99 | bool /*isSym*/ ) { |
116 | 100 | ||
117 | } | 101 | } |
118 | void OFileListView::addSymlink( const QString& /*mime*/, const QString& /*path*/, | 102 | void OFileListView::addSymlink(const QPixmap&, |
119 | const QString& /*file*/, bool /*isSym*/ ) { | 103 | const QString& /*m*/, const QString& /*path*/, |
104 | const QString& /*file*/, bool /*isSym*/ ) { | ||
120 | 105 | ||
121 | } | 106 | } |
122 | void OFileListView::cd( const QString& ) { | 107 | void OFileListView::cd( const QString& ) { |
123 | 108 | ||
124 | } | 109 | } |
125 | QWidget* OFileListView::widget() { | 110 | QWidget* OFileListView::widget() { |
126 | return this; | 111 | return this; |
127 | } | 112 | } |
128 | QString OFileListView::selectedName()const{ | 113 | QString OFileListView::selectedName()const{ |
129 | QListViewItem *item = currentItem(); | 114 | QListViewItem *item = currentItem(); |
130 | if (!item ) | 115 | if (!item ) |
131 | return QString::null; | 116 | return QString::null; |
132 | 117 | ||
133 | return item->text( 1 ); | 118 | return item->text( 1 ); |
134 | } | 119 | } |
135 | QStringList OFileListView::selectedNames()const { | 120 | QStringList OFileListView::selectedNames()const { |
136 | QStringList list; | 121 | QStringList list; |
137 | list << selectedName(); | 122 | list << selectedName(); |
138 | return list; | 123 | return list; |
139 | } | 124 | } |
140 | QString OFileListView::selectedPath()const { | 125 | QString OFileListView::selectedPath()const { |
141 | return QString::null; | 126 | return QString::null; |
142 | } | 127 | } |
143 | QStringList OFileListView::selectedPaths()const { | 128 | QStringList OFileListView::selectedPaths()const { |
144 | QStringList list; | 129 | QStringList list; |
145 | list << selectedPath(); | 130 | list << selectedPath(); |
146 | return list; | 131 | return list; |
147 | } | 132 | } |
148 | int OFileListView::fileCount() { | 133 | int OFileListView::fileCount() { |
149 | return childCount(); | 134 | return childCount(); |
150 | } | 135 | } |
151 | void OFileListView::sort() { | 136 | void OFileListView::sort() { |
152 | QListView::sort(); | 137 | QListView::sort(); |
153 | } | 138 | } |
154 | void OFileListView::slotSelectionChanged() { | 139 | void OFileListView::slotSelectionChanged() { |
155 | 140 | ||
156 | } | 141 | } |
157 | void OFileListView::slotCurrentChanged( QListViewItem* item) { | 142 | void OFileListView::slotCurrentChanged( QListViewItem* item) { |
158 | if (!item ) | 143 | if (!item ) |
159 | return; | 144 | return; |
160 | 145 | ||
161 | OFileSelectorItem* sel = (OFileSelectorItem*) item; | 146 | OFileSelectorItem* sel = (OFileSelectorItem*) item; |
162 | 147 | ||
163 | qWarning("current changed"); | 148 | qWarning("current changed"); |
164 | if(!sel->isDir() ){ | 149 | if(!sel->isDir() ){ |
165 | updateLine( sel->text(1) ); | 150 | updateLine( sel->text(1) ); |
166 | 151 | ||
167 | if (selector()->mode() == OFileSelector::Fileselector ) { | 152 | if (selector()->mode() == OFileSelector::Fileselector ) { |
168 | QStringList str = QStringList::split("->", sel->text(1) ); | 153 | QStringList str = QStringList::split("->", sel->text(1) ); |
169 | QString path =sel->directory() + "/" + str[0].stripWhiteSpace(); | 154 | QString path =sel->directory() + "/" + str[0].stripWhiteSpace(); |
170 | DocLnk lnk( path ); | 155 | DocLnk lnk( path ); |
171 | fileSelected(lnk ); | 156 | fileSelected(lnk ); |
172 | fileSelected( path ); | 157 | fileSelected( path ); |
173 | } | 158 | } |
174 | } | 159 | } |
175 | } | 160 | } |
176 | void OFileListView::slotClicked( int button, QListViewItem* item, | 161 | void OFileListView::slotClicked( int button, QListViewItem* item, |
177 | const QPoint&, int ) { | 162 | const QPoint&, int ) { |
178 | if ( !item ) | 163 | if ( !item ) |
179 | return; | 164 | return; |
180 | 165 | ||
181 | if( button != Qt::LeftButton ) | 166 | if( button != Qt::LeftButton ) |
182 | return; | 167 | return; |
183 | 168 | ||
diff --git a/libopie/ofileselector/ofilelistview.h b/libopie/ofileselector/ofilelistview.h index a83d70d..c8cdfd1 100644 --- a/libopie/ofileselector/ofilelistview.h +++ b/libopie/ofileselector/ofilelistview.h | |||
@@ -1,50 +1,58 @@ | |||
1 | #ifndef OPIE_FILE_LIST_VIEW_H | 1 | #ifndef OPIE_FILE_LIST_VIEW_H |
2 | #define OPIE_FILE_LIST_VIEW_H | 2 | #define OPIE_FILE_LIST_VIEW_H |
3 | 3 | ||
4 | #include <qlistview.h> | 4 | #include <qlistview.h> |
5 | #include <qpixmap.h> | ||
5 | 6 | ||
6 | #include "ofileview.h" | 7 | #include "ofileview.h" |
7 | 8 | ||
8 | class OFileListView : public QListView, public OFileView { | 9 | class OFileListView : public QListView, public OFileView { |
9 | Q_OBJECT | 10 | Q_OBJECT |
10 | public: | 11 | public: |
11 | OFileListView( QWidget* parent, OFileSelector* ); | 12 | OFileListView( QWidget* parent, OFileSelector* ); |
12 | ~OFileListView(); | 13 | ~OFileListView(); |
13 | 14 | ||
14 | void clear(); | 15 | void clear(); |
15 | void addFile( const QString& mine, | 16 | void addFile( const QPixmap&, |
17 | const QString& mine, | ||
16 | QFileInfo* info, | 18 | QFileInfo* info, |
17 | bool isSymlink = FALSE ); | 19 | bool isSymlink = FALSE ); |
18 | 20 | ||
19 | void addFile( const QString& mime, | 21 | void addFile( const QPixmap&, |
22 | const QString& mime, | ||
20 | const QString& dir, | 23 | const QString& dir, |
21 | const QString& file, | 24 | const QString& file, |
22 | bool = false ); | 25 | bool = false ); |
23 | 26 | ||
24 | void addDir( const QString& mime, | 27 | void addDir( const QPixmap&, |
28 | const QString& mime, | ||
25 | QFileInfo* info, bool = FALSE ); | 29 | QFileInfo* info, bool = FALSE ); |
26 | void addDir( const QString& mime, const QString& dir, | 30 | |
31 | void addDir( const QPixmap&, | ||
32 | const QString& mime, const QString& dir, | ||
27 | const QString& file, bool = FALSE ); | 33 | const QString& file, bool = FALSE ); |
28 | 34 | ||
29 | void addSymlink( const QString& mime, | 35 | void addSymlink( const QPixmap&, |
36 | const QString& mime, | ||
30 | QFileInfo* info, bool = FALSE ); | 37 | QFileInfo* info, bool = FALSE ); |
31 | void addSymlink( const QString& mine, const QString& path, | 38 | void addSymlink( const QPixmap&, |
39 | const QString& mine, const QString& path, | ||
32 | const QString& file, bool isSymlink = FALSE ); | 40 | const QString& file, bool isSymlink = FALSE ); |
33 | void cd( const QString& path ); | 41 | void cd( const QString& path ); |
34 | QWidget* widget(); | 42 | QWidget* widget(); |
35 | void sort(); | 43 | void sort(); |
36 | 44 | ||
37 | QString selectedName()const ; | 45 | QString selectedName()const ; |
38 | QStringList selectedNames()const; | 46 | QStringList selectedNames()const; |
39 | 47 | ||
40 | QString selectedPath()const; | 48 | QString selectedPath()const; |
41 | QStringList selectedPaths()const; | 49 | QStringList selectedPaths()const; |
42 | int fileCount(); | 50 | int fileCount(); |
43 | private slots: | 51 | private slots: |
44 | void slotSelectionChanged(); | 52 | void slotSelectionChanged(); |
45 | void slotCurrentChanged(QListViewItem* ); | 53 | void slotCurrentChanged(QListViewItem* ); |
46 | void slotClicked( int, QListViewItem*, const QPoint&, int ); | 54 | void slotClicked( int, QListViewItem*, const QPoint&, int ); |
47 | void slotRightButton(int, QListViewItem*, const QPoint&, int ); | 55 | void slotRightButton(int, QListViewItem*, const QPoint&, int ); |
48 | }; | 56 | }; |
49 | 57 | ||
50 | #endif | 58 | #endif |
diff --git a/libopie/ofileselector/ofileview.h b/libopie/ofileselector/ofileview.h index a4b1748..d7ea4a2 100644 --- a/libopie/ofileselector/ofileview.h +++ b/libopie/ofileselector/ofileview.h | |||
@@ -1,111 +1,121 @@ | |||
1 | /* | 1 | /* |
2 | =. This file is part of the OPIE Project | 2 | =. This file is part of the OPIE Project |
3 | .=l. Copyright (c) 2002 zecke <zecke@handhelds.org> | 3 | .=l. Copyright (c) 2002 zecke <zecke@handhelds.org> |
4 | .>+-= | 4 | .>+-= |
5 | _;:, .> :=|. This library is free software; you can | 5 | _;:, .> :=|. This library is free software; you can |
6 | .> <`_, > . <= redistribute it and/or modify it under | 6 | .> <`_, > . <= redistribute it and/or modify it under |
7 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This library is distributed in the hope that | 12 | .i_,=:_. -<s. This library is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
17 | ..}^=.= = ; Library General Public License for more | 17 | ..}^=.= = ; Library General Public License for more |
18 | ++= -. .` .: details. | 18 | ++= -. .` .: details. |
19 | : = ...= . :.=- | 19 | : = ...= . :.=- |
20 | -. .:....=;==+<; You should have received a copy of the GNU | 20 | -. .:....=;==+<; You should have received a copy of the GNU |
21 | -_. . . )=. = Library General Public License along with | 21 | -_. . . )=. = Library General Public License along with |
22 | -- :-=` this library; see the file COPYING.LIB. | 22 | -- :-=` this library; see the file COPYING.LIB. |
23 | If not, write to the Free Software Foundation, | 23 | If not, write to the Free Software Foundation, |
24 | Inc., 59 Temple Place - Suite 330, | 24 | Inc., 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #ifndef ofileview_h | 29 | #ifndef ofileview_h |
30 | #define ofileview_h | 30 | #define ofileview_h |
31 | 31 | ||
32 | #include <qobject.h> | 32 | #include <qobject.h> |
33 | #include <qwidget.h> | 33 | #include <qwidget.h> |
34 | #include <qpopupmenu.h> | 34 | #include <qpopupmenu.h> |
35 | 35 | ||
36 | class QFileInfo; | 36 | class QFileInfo; |
37 | class QDir; | 37 | class QDir; |
38 | class DocLnk; | 38 | class DocLnk; |
39 | 39 | ||
40 | /** | 40 | /** |
41 | * A OFileView is a specialised View for the | 41 | * A OFileView is a specialised View for the |
42 | * OFileSelector | 42 | * OFileSelector |
43 | * With a View you can chage the user visible | 43 | * With a View you can chage the user visible |
44 | * representation of a OFileLister | 44 | * representation of a OFileLister |
45 | * OFileView is just a basic interface which helps you to | 45 | * OFileView is just a basic interface which helps you to |
46 | * write new views | 46 | * write new views |
47 | */ | 47 | */ |
48 | class OFileSelector; | 48 | class OFileSelector; |
49 | class OFileView { | 49 | class OFileView { |
50 | public: | 50 | public: |
51 | OFileView( OFileSelector* ); | 51 | OFileView( OFileSelector* ); |
52 | OFileView(); | 52 | OFileView(); |
53 | virtual ~OFileView(); | 53 | virtual ~OFileView(); |
54 | 54 | ||
55 | virtual void clear() = 0; | 55 | virtual void clear() = 0; |
56 | virtual void addFile(const QString &mine, | 56 | virtual void addFile(const QPixmap&, |
57 | const QString &mine, | ||
57 | QFileInfo *info, | 58 | QFileInfo *info, |
58 | bool isSymlink = FALSE ) = 0; | 59 | bool isSymlink = FALSE ) = 0; |
59 | virtual void addFile(const QString& mine, const QString& dir, | 60 | |
61 | virtual void addFile(const QPixmap&, | ||
62 | const QString& mine, const QString& dir, | ||
60 | const QString& file, bool = FALSE ) = 0; | 63 | const QString& file, bool = FALSE ) = 0; |
61 | 64 | ||
62 | virtual void addDir (const QString &mine, | 65 | virtual void addDir (const QPixmap&, |
66 | const QString &mine, | ||
63 | QFileInfo *info, | 67 | QFileInfo *info, |
64 | bool isSymlink = FALSE ) = 0; | 68 | bool isSymlink = FALSE ) = 0; |
65 | virtual void addDir (const QString& mine, const QString& dir, | 69 | virtual void addDir (const QPixmap&, |
70 | const QString& mine, const QString& dir, | ||
66 | const QString& file, bool = FALSE) = 0; | 71 | const QString& file, bool = FALSE) = 0; |
67 | 72 | ||
68 | virtual void addSymlink(const QString &mime, | 73 | virtual void addSymlink(const QPixmap&, |
74 | const QString &mime, | ||
69 | QFileInfo *info, | 75 | QFileInfo *info, |
70 | bool isSymlink = FALSE ) = 0; | 76 | bool isSymlink = FALSE ) = 0; |
71 | virtual void addSymlink(const QString& mine, | 77 | |
78 | virtual void addSymlink(const QPixmap&, | ||
79 | const QString& mine, | ||
72 | const QString& path, | 80 | const QString& path, |
73 | const QString& file, | 81 | const QString& file, |
74 | bool isSymlink = FALSE ) = 0; | 82 | bool isSymlink = FALSE ) = 0; |
75 | 83 | ||
76 | virtual void cd(const QString &path ) = 0; | 84 | virtual void cd(const QString &path ) = 0; |
77 | virtual QWidget* widget() = 0; | 85 | virtual QWidget* widget() = 0; |
78 | 86 | ||
79 | virtual QString selectedName()const = 0; | 87 | virtual QString selectedName()const = 0; |
80 | virtual QStringList selectedNames()const = 0; | 88 | virtual QStringList selectedNames()const = 0; |
81 | virtual QString selectedPath()const = 0; | 89 | virtual QString selectedPath()const = 0; |
82 | virtual QStringList selectedPaths()const = 0; | 90 | virtual QStringList selectedPaths()const = 0; |
83 | virtual int fileCount() = 0; | 91 | virtual int fileCount() = 0; |
84 | virtual void sort() =0; | 92 | virtual void sort() =0; |
85 | 93 | ||
86 | /*signals:*/ | 94 | /*signals:*/ |
87 | protected: | 95 | protected: |
88 | 96 | ||
89 | void fileSelected(const QString &); | 97 | void fileSelected(const QString &); |
90 | void fileSelected(const DocLnk & ); | 98 | void fileSelected(const DocLnk & ); |
91 | void contextMenu(); | 99 | void contextMenu(); |
92 | void changedDir(const QString &); | 100 | void changedDir(const QString &); |
93 | void changedDir(const QDir & ); | 101 | void changedDir(const QDir & ); |
102 | |||
103 | /* updates the file name line of the FileSelector */ | ||
94 | void updateLine( const QString& ); | 104 | void updateLine( const QString& ); |
95 | OFileSelector* selector()const; | 105 | OFileSelector* selector()const; |
96 | 106 | ||
97 | private: | 107 | private: |
98 | OFileSelector* m_sel; | 108 | OFileSelector* m_sel; |
99 | }; | 109 | }; |
100 | 110 | ||
101 | class OFileViewFactory { | 111 | class OFileViewFactory { |
102 | public: | 112 | public: |
103 | OFileViewFactory() {} ; | 113 | OFileViewFactory() {} ; |
104 | virtual ~OFileViewFactory() = 0; | 114 | virtual ~OFileViewFactory() = 0; |
105 | 115 | ||
106 | OFileView* newView(QWidget *parent, const char *name ); | 116 | OFileView* newView(QWidget *parent, const char *name ); |
107 | QString name()const; | 117 | QString name()const; |
108 | }; | 118 | }; |
109 | 119 | ||
110 | 120 | ||
111 | #endif | 121 | #endif |
diff --git a/libopie/ofileselector/olister.cpp b/libopie/ofileselector/olister.cpp index 6c43043..b6b03cd 100644 --- a/libopie/ofileselector/olister.cpp +++ b/libopie/ofileselector/olister.cpp | |||
@@ -1,72 +1,106 @@ | |||
1 | #include "olister.h" | 1 | #include "olister.h" |
2 | #include "ofileview.h" | 2 | #include "ofileview.h" |
3 | #include "opixmapprovider.h" | ||
3 | #include "ofileselector.h" | 4 | #include "ofileselector.h" |
4 | 5 | ||
5 | 6 | ||
6 | OLister::OLister( OFileSelector* view) | 7 | OLister::OLister( OFileSelector* view) |
7 | : m_view( view ) | 8 | : m_view( view ) |
8 | { | 9 | { |
10 | m_prov = new OPixmapProvider( view ); | ||
9 | } | 11 | } |
10 | OLister::~OLister() { | 12 | OLister::~OLister() { |
13 | delete m_prov; | ||
14 | } | ||
15 | void OLister::setPixmapProvider( OPixmapProvider* prov ) { | ||
16 | delete m_prov; | ||
17 | m_prov = prov; | ||
11 | } | 18 | } |
12 | bool OLister::showFiles()const { | 19 | bool OLister::showFiles()const { |
13 | return m_view->showFiles(); | 20 | return m_view->showFiles(); |
14 | } | 21 | } |
15 | bool OLister::showDirs()const { | 22 | bool OLister::showDirs()const { |
16 | return m_view->showDirs(); | 23 | return m_view->showDirs(); |
17 | } | 24 | } |
18 | void OLister::addFile( const QString& mine, | 25 | void OLister::addFile( const QString& mine, |
19 | QFileInfo* info, | 26 | QFileInfo* info, |
20 | bool isSymlink ) { | 27 | bool isSymlink ) { |
21 | view()->currentView()->addFile( mine, | 28 | int t = isSymlink ? OPixmapProvider::File | OPixmapProvider::Symlink : |
29 | OPixmapProvider::File; | ||
30 | QPixmap pix = provider()->pixmap(t, mine, | ||
31 | info); | ||
32 | view()->currentView()->addFile( pix, | ||
33 | mine, | ||
22 | info, | 34 | info, |
23 | isSymlink ); | 35 | isSymlink ); |
24 | } | 36 | } |
25 | void OLister::addFile( const QString& mine, | 37 | void OLister::addFile( const QString& mine, |
26 | const QString& path, | 38 | const QString& path, |
27 | const QString& file, | 39 | const QString& file, |
28 | bool isSymlink ) { | 40 | bool isSymlink ) { |
29 | view()->currentView()->addFile( mine, | 41 | int t = isSymlink ? OPixmapProvider::File | OPixmapProvider::Symlink : |
42 | OPixmapProvider::File; | ||
43 | |||
44 | QPixmap pix = provider()->pixmap(t, mine, path, file ); | ||
45 | view()->currentView()->addFile( pix, | ||
46 | mine, | ||
30 | path, | 47 | path, |
31 | file, | 48 | file, |
32 | isSymlink ); | 49 | isSymlink ); |
33 | } | 50 | } |
34 | void OLister::addDir( const QString& mine, | 51 | void OLister::addDir( const QString& mine, |
35 | QFileInfo* info, | 52 | QFileInfo* info, |
36 | bool isSymlink ) { | 53 | bool isSymlink ) { |
37 | 54 | int t = isSymlink ? OPixmapProvider::Dir | OPixmapProvider::Symlink : | |
38 | view()->currentView()->addDir( mine, | 55 | OPixmapProvider::Dir; |
56 | QPixmap pix = provider()->pixmap(t, mine, info ); | ||
57 | view()->currentView()->addDir( pix, | ||
58 | mine, | ||
39 | info, | 59 | info, |
40 | isSymlink ); | 60 | isSymlink ); |
41 | } | 61 | } |
42 | void OLister::addDir( const QString& mine, | 62 | void OLister::addDir( const QString& mine, |
43 | const QString& path, | 63 | const QString& path, |
44 | const QString& dir, | 64 | const QString& dir, |
45 | bool isSymlink ) { | 65 | bool isSymlink ) { |
46 | view()->currentView()->addDir( mine, | 66 | |
67 | int t = isSymlink ? OPixmapProvider::Dir | OPixmapProvider::Symlink : | ||
68 | OPixmapProvider::Dir; | ||
69 | QPixmap pix = provider()->pixmap(t, mine, path, dir ); | ||
70 | |||
71 | view()->currentView()->addDir( pix, | ||
72 | mine, | ||
47 | path, | 73 | path, |
48 | dir, | 74 | dir, |
49 | isSymlink ); | 75 | isSymlink ); |
50 | } | 76 | } |
51 | void OLister::addSymlink( const QString& mine, | 77 | void OLister::addSymlink( const QString& mine, |
52 | QFileInfo* info, | 78 | QFileInfo* info, |
53 | bool isSymlink ) { | 79 | bool isSymlink ) { |
54 | view()->currentView()->addSymlink( mine, | 80 | QPixmap pix = provider()->pixmap( OPixmapProvider::Symlink, mine, info ); |
81 | view()->currentView()->addSymlink( pix, | ||
82 | mine, | ||
55 | info, | 83 | info, |
56 | isSymlink ); | 84 | isSymlink ); |
57 | } | 85 | } |
58 | void OLister::addSymlink( const QString& mine, | 86 | void OLister::addSymlink( const QString& mine, |
59 | const QString& path, | 87 | const QString& path, |
60 | const QString& name, | 88 | const QString& name, |
61 | bool isSymlink ) { | 89 | bool isSymlink ) { |
62 | view()->currentView()->addSymlink( mine, | 90 | QPixmap pix = provider()->pixmap( OPixmapProvider::Symlink, mine, |
91 | path, name ); | ||
92 | view()->currentView()->addSymlink( pix, | ||
93 | mine, | ||
63 | path, | 94 | path, |
64 | name, | 95 | name, |
65 | isSymlink ); | 96 | isSymlink ); |
66 | } | 97 | } |
67 | OFileSelector* OLister::view() { | 98 | OFileSelector* OLister::view() { |
68 | return m_view; | 99 | return m_view; |
69 | } | 100 | } |
101 | OPixmapProvider* OLister::provider() { | ||
102 | return m_prov; | ||
103 | } | ||
70 | bool OLister::compliesMime( const QString& mime ) { | 104 | bool OLister::compliesMime( const QString& mime ) { |
71 | return view()->compliesMime( mime ); | 105 | return view()->compliesMime( mime ); |
72 | } | 106 | } |
diff --git a/libopie/ofileselector/olister.h b/libopie/ofileselector/olister.h index ef61cab..0885525 100644 --- a/libopie/ofileselector/olister.h +++ b/libopie/ofileselector/olister.h | |||
@@ -1,60 +1,64 @@ | |||
1 | #ifndef OPIE_FILE_LISTER_H | 1 | #ifndef OPIE_FILE_LISTER_H |
2 | #define OPIE_FILE_LISTER_H | 2 | #define OPIE_FILE_LISTER_H |
3 | 3 | ||
4 | #include <qfileinfo.h> | 4 | #include <qfileinfo.h> |
5 | #include <qmap.h> | 5 | #include <qmap.h> |
6 | #include <qstring.h> | 6 | #include <qstring.h> |
7 | #include <qstringlist.h> | 7 | #include <qstringlist.h> |
8 | 8 | ||
9 | class OPixmapProvider; | ||
9 | class OFileSelector; | 10 | class OFileSelector; |
10 | /** | 11 | /** |
11 | * lister is something like KIO but very | 12 | * lister is something like KIO but very |
12 | * very basic and currently only for | 13 | * very basic and currently only for |
13 | * populating our views. | 14 | * populating our views. |
14 | * This is a base class which needs to be implemented. | 15 | * This is a base class which needs to be implemented. |
15 | * @see OLocalLister for a filesystem based implementation | 16 | * @see OLocalLister for a filesystem based implementation |
16 | */ | 17 | */ |
17 | class OLister { | 18 | class OLister { |
18 | public: | 19 | public: |
19 | OLister( OFileSelector* ); | 20 | OLister( OFileSelector* ); |
20 | virtual ~OLister(); | 21 | virtual ~OLister(); |
21 | virtual void reparse(const QString& path) = 0; | 22 | virtual void reparse(const QString& path) = 0; |
22 | 23 | ||
23 | /** | 24 | /** |
24 | * return a list of available mimetypes | 25 | * return a list of available mimetypes |
25 | */ | 26 | */ |
26 | virtual QMap<QString, QStringList> mimeTypes( const QString& dir ) = 0; | 27 | virtual QMap<QString, QStringList> mimeTypes( const QString& dir ) = 0; |
28 | void setPixmapProvider( OPixmapProvider* ); | ||
27 | 29 | ||
28 | protected: | 30 | protected: |
29 | bool showFiles()const; | 31 | bool showFiles()const; |
30 | bool showDirs()const; | 32 | bool showDirs()const; |
31 | bool compliesMime( const QString& mime ); | 33 | bool compliesMime( const QString& mime ); |
32 | void addFile( const QString& mine, | 34 | void addFile( const QString& mine, |
33 | QFileInfo*, | 35 | QFileInfo*, |
34 | bool isSymlink = FALSE ); | 36 | bool isSymlink = FALSE ); |
35 | void addFile( const QString& mine, | 37 | void addFile( const QString& mine, |
36 | const QString& path, | 38 | const QString& path, |
37 | const QString& file, | 39 | const QString& file, |
38 | bool isSymlink = FALSE ); | 40 | bool isSymlink = FALSE ); |
39 | void addDir( const QString& mine, | 41 | void addDir( const QString& mine, |
40 | QFileInfo*, | 42 | QFileInfo*, |
41 | bool isSymlink = FALSE ); | 43 | bool isSymlink = FALSE ); |
42 | void addDir( const QString& mine, | 44 | void addDir( const QString& mine, |
43 | const QString& path, | 45 | const QString& path, |
44 | const QString& dir, | 46 | const QString& dir, |
45 | bool isSymlink = FALSE ); | 47 | bool isSymlink = FALSE ); |
46 | void addSymlink( const QString& mine, | 48 | void addSymlink( const QString& mine, |
47 | QFileInfo* info, | 49 | QFileInfo* info, |
48 | bool isSymlink = FALSE); | 50 | bool isSymlink = FALSE); |
49 | void addSymlink( const QString& mine, | 51 | void addSymlink( const QString& mine, |
50 | const QString& path, | 52 | const QString& path, |
51 | const QString& name, | 53 | const QString& name, |
52 | bool isSymlink = FALSE ); | 54 | bool isSymlink = FALSE ); |
53 | OFileSelector* view(); | 55 | OFileSelector* view(); |
56 | OPixmapProvider* provider(); | ||
54 | private: | 57 | private: |
55 | OFileSelector* m_view; | 58 | OFileSelector* m_view; |
59 | OPixmapProvider* m_prov; | ||
56 | 60 | ||
57 | 61 | ||
58 | }; | 62 | }; |
59 | 63 | ||
60 | #endif | 64 | #endif |
diff --git a/libopie/ofileselector/opixmapprovider.cpp b/libopie/ofileselector/opixmapprovider.cpp new file mode 100644 index 0000000..b363e01 --- a/dev/null +++ b/libopie/ofileselector/opixmapprovider.cpp | |||
@@ -0,0 +1,83 @@ | |||
1 | #include <qfileinfo.h> | ||
2 | |||
3 | #include <qpe/mimetype.h> | ||
4 | #include <qpe/resource.h> | ||
5 | |||
6 | #include "opixmapprovider.h" | ||
7 | |||
8 | |||
9 | |||
10 | OPixmapProvider::OPixmapProvider( OFileSelector* sel ) | ||
11 | : m_sel( sel ){ | ||
12 | } | ||
13 | OPixmapProvider::~OPixmapProvider() { | ||
14 | } | ||
15 | QPixmap OPixmapProvider::pixmap( int t, const QString& , | ||
16 | QFileInfo* info, bool isL ) { | ||
17 | QPixmap pix; | ||
18 | bool sy = t & Symlink ? true : false; | ||
19 | switch (t ) { | ||
20 | case File: | ||
21 | pix = file( info, sy, isL ); | ||
22 | break; | ||
23 | case Dir: | ||
24 | pix = dir( info, sy, isL ); | ||
25 | break; | ||
26 | case Symlink: | ||
27 | pix = sym( info, isL ); | ||
28 | break; | ||
29 | } | ||
30 | return pix; | ||
31 | |||
32 | } | ||
33 | QPixmap OPixmapProvider::pixmap( int t, const QString& mime, | ||
34 | const QString& dir, const QString& file, | ||
35 | bool isL) { | ||
36 | QFileInfo *inf = new QFileInfo( dir + "/" + file ); | ||
37 | QPixmap pix = pixmap( t, mime, inf, isL ); | ||
38 | delete inf; | ||
39 | return pix; | ||
40 | } | ||
41 | OFileSelector* OPixmapProvider::selector() { | ||
42 | return m_sel; | ||
43 | } | ||
44 | QPixmap OPixmapProvider::file( QFileInfo* inf, bool , bool ) { | ||
45 | MimeType type( inf->absFilePath() ); | ||
46 | QPixmap pix = type.pixmap(); | ||
47 | |||
48 | if ( pix.isNull() ) | ||
49 | pix = Resource::loadPixmap( "UnknownDocument-14"); | ||
50 | |||
51 | if ( (selector()->mode() == OFileSelector::Open && | ||
52 | !inf->isReadable() ) || | ||
53 | (selector()->mode() == OFileSelector::Save && | ||
54 | !inf->isWritable() ) ) { | ||
55 | pix = Resource::loadPixmap( "locked" ); | ||
56 | } | ||
57 | return pix; | ||
58 | |||
59 | } | ||
60 | QPixmap OPixmapProvider::dir( QFileInfo* inf, bool sym, bool ) { | ||
61 | QPixmap pix; | ||
62 | /* | ||
63 | * look at selector()->mode() and determine | ||
64 | * if a dir is locked | ||
65 | */ | ||
66 | if ( (selector()->mode() == OFileSelector::Open && | ||
67 | !inf->isReadable() ) || | ||
68 | (selector()->mode() == OFileSelector::Save && | ||
69 | !inf->isWritable() ) ) { | ||
70 | if ( sym ) | ||
71 | pix = selector()->pixmap("symlinkedlocked"); | ||
72 | else | ||
73 | pix = Resource::loadPixmap("lockedfolder"); | ||
74 | }else { | ||
75 | pix = sym ? selector()->pixmap("lockedfolder") : | ||
76 | Resource::loadPixmap("folder"); | ||
77 | |||
78 | } | ||
79 | return pix; | ||
80 | } | ||
81 | QPixmap OPixmapProvider::sym( QFileInfo* , bool ) { | ||
82 | return Resource::loadPixmap("opie/symlink"); | ||
83 | } | ||
diff --git a/libopie/ofileselector/opixmapprovider.h b/libopie/ofileselector/opixmapprovider.h new file mode 100644 index 0000000..2165fdb --- a/dev/null +++ b/libopie/ofileselector/opixmapprovider.h | |||
@@ -0,0 +1,41 @@ | |||
1 | #ifndef OPIE_PIXMPAP_PROVIDER | ||
2 | #define OPIE_PIXMPAP_PROVIDER | ||
3 | |||
4 | #include <qpixmap.h> | ||
5 | |||
6 | #include "ofileselector.h" | ||
7 | |||
8 | /** | ||
9 | * This is a basic interface for a Pixmap provider | ||
10 | * it provides pixmaps for a URL | ||
11 | * So the OLocalLister provides mimetype icons | ||
12 | */ | ||
13 | class QFileInfo; | ||
14 | class OPixmapProvider { | ||
15 | public: | ||
16 | /* you can or these | ||
17 | * but File | Dir would be insane ;) | ||
18 | */ | ||
19 | enum Type { File = 0, Dir = 1, Symlink = 2 }; | ||
20 | OPixmapProvider( OFileSelector* sel ); | ||
21 | virtual ~OPixmapProvider(); | ||
22 | |||
23 | virtual QPixmap pixmap( int t, const QString& mime, QFileInfo*, | ||
24 | bool isLocked = FALSE ); | ||
25 | virtual QPixmap pixmap( int t, const QString& mime, | ||
26 | const QString& dir, const QString& file, | ||
27 | bool isLocked = FALSE ); | ||
28 | |||
29 | protected: | ||
30 | OFileSelector* selector(); | ||
31 | private: | ||
32 | QPixmap file( QFileInfo*, | ||
33 | bool sym, bool is ); | ||
34 | QPixmap dir ( QFileInfo*, | ||
35 | bool sym, bool is ); | ||
36 | QPixmap sym ( QFileInfo*, | ||
37 | bool is ); | ||
38 | OFileSelector* m_sel; | ||
39 | }; | ||
40 | |||
41 | #endif | ||