author | zecke <zecke> | 2002-05-02 07:15:29 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-05-02 07:15:29 (UTC) |
commit | 9a3f2b67dab939993a56db83c1d473fc7ae6d57a (patch) (unidiff) | |
tree | b35b8d840400996e270dace0a11648bf361ed31e | |
parent | a52fd4b1995e34963888397587aa2592ea858da6 (diff) | |
download | opie-9a3f2b67dab939993a56db83c1d473fc7ae6d57a.zip opie-9a3f2b67dab939993a56db83c1d473fc7ae6d57a.tar.gz opie-9a3f2b67dab939993a56db83c1d473fc7ae6d57a.tar.bz2 |
Here is the rewrite of ofileselector
Mostly the layout was fixed and it should be much easier to
understand whats going on
It also got more functionality with less code
Next is MultipleSelections, Open Dir mode save dir mode and
installingViews
-rw-r--r-- | libopie/ofileselector.cc | 1529 | ||||
-rw-r--r-- | libopie/ofileselector.h | 39 |
2 files changed, 756 insertions, 812 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc index 9cf3f36..d780da9 100644 --- a/libopie/ofileselector.cc +++ b/libopie/ofileselector.cc | |||
@@ -1,53 +1,25 @@ | |||
1 | /* | ||
2 | =. This file is part of the OPIE Project | ||
3 | .=l. Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> | ||
4 | .>+-= | ||
5 | _;:, .> :=|. This library is free software; you can | ||
6 | .> <`_, > . <= redistribute it and/or modify it under | ||
7 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | ||
8 | .="- .-=="i, .._ License as published by the Free Software | ||
9 | - . .-<_> .<> Foundation; either version 2 of the License, | ||
10 | ._= =} : or (at your option) any later version. | ||
11 | .%`+i> _;_. | ||
12 | .i_,=:_. -<s. This library is distributed in the hope that | ||
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | ||
14 | : .. .:, . . . without even the implied warranty of | ||
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | ||
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | ||
17 | ..}^=.= = ; Library General Public License for more | ||
18 | ++= -. .` .: details. | ||
19 | : = ...= . :.=- | ||
20 | -. .:....=;==+<; You should have received a copy of the GNU | ||
21 | -_. . . )=. = Library General Public License along with | ||
22 | -- :-=` this library; see the file COPYING.LIB. | ||
23 | If not, write to the Free Software Foundation, | ||
24 | Inc., 59 Temple Place - Suite 330, | ||
25 | Boston, MA 02111-1307, USA. | ||
26 | 1 | ||
27 | */ | ||
28 | 2 | ||
29 | #include <qnamespace.h> | 3 | #include <qcheckbox.h> |
30 | #include <qpushbutton.h> | ||
31 | #include <qcombobox.h> | 4 | #include <qcombobox.h> |
32 | #include <qhbox.h> | 5 | #include <qheader.h> |
33 | #include <qvbox.h> | 6 | #include <qlabel.h> |
7 | #include <qabstractlayout.h> | ||
34 | #include <qlayout.h> | 8 | #include <qlayout.h> |
35 | #include <qwidgetstack.h> | ||
36 | #include <qlineedit.h> | 9 | #include <qlineedit.h> |
37 | #include <qcheckbox.h> | 10 | #include <qlistview.h> |
38 | #include <qlabel.h> | ||
39 | #include <qheader.h> | ||
40 | #include <qdir.h> | ||
41 | #include <qpainter.h> | ||
42 | #include <qaction.h> | ||
43 | #include <qpopupmenu.h> | ||
44 | #include <qcursor.h> | ||
45 | #include <qstringlist.h> | ||
46 | #include <qmessagebox.h> | 11 | #include <qmessagebox.h> |
12 | #include <qpushbutton.h> | ||
13 | #include <qwidgetstack.h> | ||
14 | #include <qpopupmenu.h> | ||
15 | #include <qdir.h> | ||
16 | #include <qfile.h> | ||
17 | #include <qfileinfo.h> | ||
18 | #include <qtimer.h> | ||
47 | 19 | ||
48 | #include <qpe/qpeapplication.h> | 20 | #include <qpe/qpeapplication.h> |
49 | #include <qpe/fileselector.h> | ||
50 | #include <qpe/applnk.h> | 21 | #include <qpe/applnk.h> |
22 | #include <qpe/fileselector.h> | ||
51 | #include <qpe/global.h> | 23 | #include <qpe/global.h> |
52 | #include <qpe/mimetype.h> | 24 | #include <qpe/mimetype.h> |
53 | #include <qpe/resource.h> | 25 | #include <qpe/resource.h> |
@@ -58,14 +30,13 @@ | |||
58 | #include <sys/stat.h> | 30 | #include <sys/stat.h> |
59 | 31 | ||
60 | #include "ofileselector.h" | 32 | #include "ofileselector.h" |
61 | //#include "ofileview.h" | 33 | |
62 | 34 | ||
63 | QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0; | 35 | QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0; |
64 | 36 | ||
65 | namespace { | 37 | namespace { |
66 | |||
67 | int indexByString( const QComboBox *box, const QString &str ){ | 38 | int indexByString( const QComboBox *box, const QString &str ){ |
68 | int index= -1; | 39 | int index= 0; |
69 | for(int i= 0; i < box->count(); i++ ){ | 40 | for(int i= 0; i < box->count(); i++ ){ |
70 | if( str == box->text(i ) ){ | 41 | if( str == box->text(i ) ){ |
71 | index= i; | 42 | index= i; |
@@ -125,609 +96,455 @@ namespace { | |||
125 | }; | 96 | }; |
126 | 97 | ||
127 | 98 | ||
128 | OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName, | 99 | OFileSelector::OFileSelector( QWidget *wid, int mode, int selector, |
129 | const QString &fileName, const QStringList &mimetypes ) : QWidget( wid ) | 100 | const QString &dirName, |
101 | const QString &fileName, | ||
102 | const QStringList &mimeTypes ) | ||
103 | : QWidget( wid, "OFileSelector") | ||
130 | { | 104 | { |
131 | if(wid!=0) | 105 | m_mimetypes = mimeTypes; |
132 | resize(wid->width(),wid->height()); | 106 | initVars(); |
107 | m_mode = mode; | ||
133 | m_selector = selector; | 108 | m_selector = selector; |
134 | m_currentDir = dirName; | 109 | m_currentDir = dirName; |
135 | m_name = fileName; | ||
136 | m_mimetypes = mimetypes; | ||
137 | |||
138 | if( mimetypes.isEmpty() ) | ||
139 | m_autoMime = true; | ||
140 | |||
141 | qWarning("OFileSelector mimetypes %s", mimetypes.join(" ").latin1() ); | ||
142 | m_mode = mode; | ||
143 | m_shTool = true; | ||
144 | m_shPerm = true; | ||
145 | m_shLne = true; | ||
146 | m_shChooser = true; | ||
147 | m_shYesNo = true; | ||
148 | |||
149 | // for FILESELECTOR only view is interesting | ||
150 | m_location = 0; | ||
151 | m_homeButton = 0; | ||
152 | m_docButton = 0; | ||
153 | m_hideButton = 0; | ||
154 | m_ok = 0; | ||
155 | m_cancel = 0; | ||
156 | m_reread = 0; | ||
157 | m_up = 0; | ||
158 | m_View = 0; | ||
159 | m_select = 0; | ||
160 | m_stack = 0; | ||
161 | |||
162 | m_select = 0; | ||
163 | m_stack = 0; | ||
164 | m_lay = 0; | ||
165 | m_boxToolbar = 0; | ||
166 | m_boxOk = 0; | ||
167 | m_edit = 0; | ||
168 | |||
169 | m_fnLabel = 0; | ||
170 | m_checkPerm = 0; | ||
171 | m_mimeCheck = 0; | ||
172 | m_viewCheck = 0; | ||
173 | |||
174 | m_pseudo = 0; | ||
175 | m_pseudoLayout = 0; | ||
176 | |||
177 | m_dir = true; | ||
178 | m_files = true; | ||
179 | m_custom = 0; | ||
180 | m_showPopup = true; | ||
181 | |||
182 | if(m_pixmaps == 0 ) // init the pixmaps | ||
183 | initPics(); | ||
184 | |||
185 | m_lay = new QVBoxLayout(this); | ||
186 | init(); | 110 | init(); |
187 | m_edit->setText( fileName ); | 111 | QTimer::singleShot(6*1000, this, SLOT( slotTest() ) ); |
188 | } | 112 | } |
189 | 113 | ||
190 | void OFileSelector::initPics() | 114 | OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent, |
115 | const char *name, bool newVisible = TRUE, | ||
116 | bool closeVisible = FALSE ) | ||
117 | : QWidget( parent, name ) | ||
191 | { | 118 | { |
192 | qWarning("init pics" ); | 119 | m_mimetypes = QStringList::split(";", mimeFilter ); |
193 | m_pixmaps = new QMap<QString,QPixmap>; | 120 | initVars(); |
194 | QPixmap pm = Resource::loadPixmap( "folder" ); | 121 | m_currentDir = QPEApplication::documentDir(); |
195 | QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); | 122 | m_mode = OPEN; |
196 | QPainter painter( &pm ); | 123 | m_selector = NORMAL; |
197 | painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); | 124 | m_shClose = closeVisible; |
198 | pm.setMask( pm.createHeuristicMask( FALSE ) ); | 125 | m_shNew = newVisible; |
199 | m_pixmaps->insert("dirsymlink", pm ); | 126 | m_shLne = false; |
127 | m_shPerm = false; | ||
128 | m_shYesNo = false; | ||
129 | init(); | ||
200 | 130 | ||
201 | QPixmap pm2 = Resource::loadPixmap( "lockedfolder" ); | ||
202 | QPainter pen(&pm2 ); | ||
203 | pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk ); | ||
204 | pm2.setMask( pm2.createHeuristicMask( FALSE ) ); | ||
205 | m_pixmaps->insert("symlinkedlocked", pm2 ); | ||
206 | 131 | ||
207 | } | 132 | } |
208 | 133 | ||
209 | // let's initialize the gui | 134 | OFileSelector::~OFileSelector() |
210 | /** | ||
211 | -------------------- | ||
212 | | cmbBox Button | | ||
213 | -------------------- | ||
214 | | FileSlector | | ||
215 | | or | | ||
216 | | OSelector | | ||
217 | | | | ||
218 | | | | ||
219 | ____________________ | ||
220 | | LineEdit | | ||
221 | ____________________ | ||
222 | | Permission Bar | | ||
223 | ____________________ | ||
224 | | ViewChoose | | ||
225 | ____________________ | ||
226 | | Save Cancel| | ||
227 | ____________________ | ||
228 | */ | ||
229 | void OFileSelector::delItems() | ||
230 | { | 135 | { |
231 | QLayoutIterator it = m_lay->iterator(); | 136 | |
232 | while ( it.current() != 0 ){ | ||
233 | it.deleteCurrent(); | ||
234 | } | ||
235 | } | 137 | } |
236 | 138 | ||
237 | void OFileSelector::init() | 139 | void OFileSelector::setNewVisible( bool visible ) |
238 | { | 140 | { |
239 | // qDebug("init"); | 141 | m_shNew = visible; |
240 | m_stack = new QWidgetStack(this, "wstack" ); | ||
241 | if( m_selector == NORMAL ){ | 142 | if( m_selector == NORMAL ){ |
242 | QString currMime; | 143 | delete m_select; |
243 | if( m_mimeCheck != 0 ) | 144 | // we need to initialize but keep the selected mimetype |
244 | currMime = m_mimeCheck->currentText(); | 145 | QString mime = m_mimeCheck == 0 ? QString::null : m_mimeCheck->currentText() ; |
245 | updateMimes(); | 146 | m_select = new FileSelector( m_autoMime ? mime : m_mimetypes.join(";") , |
246 | m_select = new FileSelector( currMime == "All" ? QString::null : currMime , | 147 | m_stack, "fileselector", |
247 | m_stack, "fileselector", FALSE, FALSE ); | 148 | m_shNew, m_shClose); |
248 | m_stack->addWidget(m_select, NORMAL ); | ||
249 | m_lay->addWidget(m_stack ); | ||
250 | m_stack->raiseWidget(NORMAL ); | ||
251 | connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), | 149 | connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), |
252 | this, SLOT(slotFileBridgeSelected(const DocLnk &) ) ); | 150 | this, SLOT(slotFileBridgeSelected(const DocLnk &) ) ); |
253 | m_pseudoLayout = 0l; | 151 | //connect to close me and other signals as well |
254 | 152 | m_stack->addWidget( m_select, NORMAL ); | |
255 | } else { | 153 | } else { |
256 | initializeListView(); | 154 | m_new->show(); |
257 | } | 155 | } |
258 | if(m_shLne ){ | ||
259 | initializeName(); | ||
260 | } | 156 | } |
261 | if(m_shPerm ){ | 157 | void OFileSelector::setCloseVisible( bool visible ) |
262 | m_checkPerm = new QCheckBox(tr("Set Permission"), this, "Permission" ); | 158 | { |
263 | m_checkPerm->setChecked( false ); | 159 | m_shClose = visible; |
264 | m_lay->addWidget(m_checkPerm ); | 160 | if( m_selector == NORMAL ){ |
161 | setNewVisible( m_shNew ); // yeah baby | ||
162 | }else{ | ||
163 | m_close->show(); | ||
164 | } | ||
165 | } | ||
166 | void OFileSelector::reread() | ||
167 | { | ||
168 | if( m_selector == NORMAL ){ | ||
169 | setNewVisible( m_shNew ); // make it a initializeSelector | ||
170 | }else if ( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ | ||
171 | reparse(); | ||
172 | //}else{ | ||
173 | //; | ||
174 | } | ||
265 | } | 175 | } |
266 | if( m_shChooser ) | ||
267 | initializeChooser(); | ||
268 | if(m_shYesNo ) | ||
269 | initializeYes(); | ||
270 | |||
271 | // m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, requestedMimeTypesList.first()) ); | ||
272 | // reparse(); | ||
273 | 176 | ||
177 | const DocLnk *OFileSelector::selected() | ||
178 | { | ||
179 | if( m_selector == NORMAL ){ | ||
180 | return m_select->selected(); | ||
181 | }else{ | ||
182 | DocLnk *lnk = new DocLnk(selectedDocument() ); | ||
183 | return lnk; | ||
184 | } | ||
274 | } | 185 | } |
275 | 186 | ||
276 | void OFileSelector::setYesCancelVisible( bool show ) | 187 | void OFileSelector::setYesCancelVisible( bool show ) |
277 | { | 188 | { |
278 | if ( show == m_shYesNo ) | 189 | initializeYes(); // FIXME if YesCancel is not shown we will initialize it to hide it :( |
279 | return; | ||
280 | m_shYesNo = show; | 190 | m_shYesNo = show; |
281 | if( !show ){ | 191 | if( m_shYesNo ) |
282 | delete m_ok; | 192 | m_boxOk->show(); |
283 | delete m_cancel; | 193 | else |
284 | m_ok = 0; | 194 | m_boxOk->hide(); |
285 | m_cancel = 0; | ||
286 | // delete m_boxOk; all ready deleted in delItems | ||
287 | } | ||
288 | updateLay(); // recreate it and save the other states | ||
289 | } | ||
290 | 195 | ||
196 | } | ||
291 | void OFileSelector::setToolbarVisible( bool show ) | 197 | void OFileSelector::setToolbarVisible( bool show ) |
292 | { | 198 | { |
293 | if ( m_shTool == show ) | 199 | m_shTool = show; |
294 | return; | 200 | initializeListView(); // FIXME see above waste of memory |
295 | if(!m_shTool ){ | 201 | if(!m_shTool ){ |
296 | delete m_boxToolbar; | 202 | m_location->hide(); |
297 | delete m_homeButton; | 203 | m_up->hide(); |
298 | delete m_docButton; | 204 | m_homeButton->hide(); |
299 | delete m_location; | 205 | m_docButton->hide(); |
300 | delete m_up; | 206 | }else{ |
301 | m_boxToolbar = 0; | 207 | m_location->show(); |
302 | m_homeButton = 0; | 208 | m_up->show(); |
303 | m_docButton = 0; | 209 | m_homeButton->show(); |
304 | m_location = 0; | 210 | m_docButton->show(); |
305 | m_up = 0; | 211 | } |
306 | }; | ||
307 | updateLay();// overkill fix it | ||
308 | } | 212 | } |
309 | |||
310 | void OFileSelector::setPermissionBarVisible( bool show ) | 213 | void OFileSelector::setPermissionBarVisible( bool show ) |
311 | { | 214 | { |
312 | if( show == m_shPerm ) | ||
313 | return; | ||
314 | |||
315 | m_shPerm = show; | 215 | m_shPerm = show; |
316 | 216 | initializePerm(); | |
317 | updateLay(); | 217 | if( m_shPerm ) |
218 | m_checkPerm->show(); | ||
219 | else | ||
220 | m_checkPerm->hide(); | ||
318 | } | 221 | } |
319 | |||
320 | void OFileSelector::setLineEditVisible( bool show ) | 222 | void OFileSelector::setLineEditVisible( bool show ) |
321 | { | 223 | { |
322 | if( show == m_shLne ) | 224 | if( show ){ |
323 | return; | 225 | initializeName(); |
324 | 226 | m_boxName->show(); | |
325 | m_shLne = show; | 227 | }else{ |
326 | if( !show ){ | 228 | if( m_shLne && m_boxName != 0 ){ // check if we showed before this is the way to go |
327 | delete m_edit; | 229 | m_boxName->hide(); |
328 | delete m_fnLabel; | ||
329 | m_edit = 0; | ||
330 | m_fnLabel = 0; | ||
331 | //delete m_boxName; will be deleted | ||
332 | } | 230 | } |
333 | updateLay(); | 231 | } |
232 | m_shLne = show; | ||
334 | } | 233 | } |
335 | 234 | ||
336 | void OFileSelector::setChooserVisible( bool show ) | 235 | void OFileSelector::setChooserVisible( bool show ) |
337 | { | 236 | { |
338 | if( show = m_shChooser ) | ||
339 | return; | ||
340 | m_shChooser = show; | 237 | m_shChooser = show; |
341 | if( !show ){ | 238 | initializeChooser(); |
342 | delete m_mimeCheck; | 239 | if( m_shChooser ){ |
343 | delete m_viewCheck; | 240 | m_boxView->hide(); |
344 | m_mimeCheck = 0; | 241 | }else{ |
345 | m_viewCheck = 0; | 242 | m_boxView->show(); |
346 | } | 243 | } |
347 | updateLay(); | ||
348 | } | 244 | } |
349 | 245 | ||
350 | QCheckBox* OFileSelector::permissionCheckbox( ) | 246 | QCheckBox* OFileSelector::permissionCheckbox( ) |
351 | { | 247 | { |
248 | if( m_selector == NORMAL ) | ||
249 | return 0l; | ||
250 | else | ||
352 | return m_checkPerm; | 251 | return m_checkPerm; |
353 | } | 252 | } |
253 | bool OFileSelector::setPermission()const | ||
254 | { | ||
255 | return m_checkPerm == 0 ? false : m_checkPerm->isChecked(); | ||
256 | } | ||
257 | void OFileSelector::setPermissionChecked( bool check ) | ||
258 | { | ||
259 | if( m_checkPerm ) | ||
260 | m_checkPerm->setChecked( check ); | ||
261 | } | ||
354 | 262 | ||
263 | void OFileSelector::setMode(int mode) // FIXME do direct raising | ||
264 | { | ||
265 | m_mode = mode; | ||
266 | if( m_selector == NORMAL ) | ||
267 | return; | ||
268 | } | ||
269 | void OFileSelector::setShowDirs(bool ) | ||
270 | { | ||
271 | m_dir = true; | ||
272 | reparse(); | ||
273 | } | ||
355 | void OFileSelector::setCaseSensetive( bool caSe ) | 274 | void OFileSelector::setCaseSensetive( bool caSe ) |
356 | { | 275 | { |
357 | m_case = caSe; | 276 | m_case = caSe; |
358 | reparse(); | 277 | reparse(); |
359 | } | 278 | } |
360 | 279 | void OFileSelector::setShowFiles(bool show ) | |
361 | void OFileSelector::setShowFiles(bool files ){ | 280 | { |
362 | m_files = files; | 281 | m_files = show; |
363 | reparse(); | 282 | reparse(); |
364 | } | 283 | } |
365 | 284 | /// | |
366 | void OFileSelector::setPopupMenu(QPopupMenu *pop ) | 285 | bool OFileSelector::cd(const QString &path ) |
367 | { | 286 | { |
368 | //delete oldpopup; | 287 | m_currentDir = path; |
369 | m_custom = pop; | 288 | reparse(); |
289 | return true; | ||
370 | } | 290 | } |
371 | 291 | void OFileSelector::setSelector(int mode ) | |
372 | bool OFileSelector::setPermission( ) const | ||
373 | { | 292 | { |
374 | if( m_checkPerm == 0 ) | 293 | QString text; |
375 | return false; | 294 | switch( mode ){ |
376 | else | 295 | case NORMAL: |
377 | return m_checkPerm->isChecked(); | 296 | text = tr("Documents"); |
297 | break; | ||
298 | case EXTENDED: | ||
299 | text = tr("Files"); | ||
300 | break; | ||
301 | case EXTENDED_ALL: | ||
302 | text = tr("All Files"); | ||
303 | break; | ||
304 | } | ||
305 | slotViewCheck( text ); | ||
378 | } | 306 | } |
379 | 307 | ||
380 | void OFileSelector::setPermissionChecked( bool check ) | 308 | void OFileSelector::setPopupMenu(QPopupMenu *popup ) |
381 | { | 309 | { |
382 | if( m_checkPerm == 0 ) | 310 | m_custom = popup; |
383 | return; | 311 | m_showPopup = true; |
384 | m_checkPerm->setChecked( check ); | ||
385 | } | 312 | } |
386 | 313 | ||
314 | //void OFileSelector::updateL | ||
315 | |||
387 | QString OFileSelector::selectedName( )const | 316 | QString OFileSelector::selectedName( )const |
388 | { | 317 | { |
389 | QString string; | 318 | QString name; |
390 | if( m_selector == NORMAL ){ | 319 | if( m_selector == NORMAL ){ |
391 | const DocLnk *lnk = m_select->selected(); | 320 | const DocLnk *lnk = m_select->selected(); |
392 | string = lnk->file(); | 321 | name = lnk->file(); |
322 | delete lnk; | ||
393 | }else if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ) { | 323 | }else if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ) { |
394 | QListViewItem *item = m_View->currentItem(); | 324 | QListViewItem *item = m_View->currentItem(); |
395 | if(item != 0 ){ | 325 | if( item != 0 ) |
396 | string = m_currentDir + "/" + item->text( 1 ); | 326 | name = m_currentDir + "/" + item->text( 1 ); |
397 | } | 327 | }else { // installed view |
328 | ; | ||
398 | } | 329 | } |
399 | return string; | 330 | return name; |
400 | } | 331 | } |
401 | |||
402 | QStringList OFileSelector::selectedNames()const | 332 | QStringList OFileSelector::selectedNames()const |
403 | { | 333 | { |
404 | QStringList list; | 334 | QStringList list; |
335 | if( m_selector == NORMAL ){ | ||
336 | list << selectedName(); | ||
337 | }else if ( m_selector == EXTENDED || m_selector == EXTENDED_ALL ) { | ||
338 | list << selectedName(); // FIXME implement multiple Selections | ||
339 | } | ||
405 | return list; | 340 | return list; |
406 | } | 341 | } |
407 | 342 | /** If mode is set to the Dir selection this will return the selected path. | |
408 | DocLnk OFileSelector::selectedDocument( )const | 343 | * |
344 | * | ||
345 | */ | ||
346 | QString OFileSelector::selectedPath()const | ||
409 | { | 347 | { |
410 | DocLnk lnk; | 348 | QString path; |
411 | return lnk; | 349 | if( m_selector == NORMAL ){ |
350 | path = QPEApplication::documentDir(); | ||
351 | }else if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ | ||
352 | ; | ||
412 | } | 353 | } |
413 | void OFileSelector::updateLay() | 354 | return path; |
414 | { | ||
415 | /* if( m_shTool ) | ||
416 | // | ||
417 | else | ||
418 | // hide | ||
419 | */ | ||
420 | // save the state | ||
421 | bool check = false; | ||
422 | if( m_checkPerm != 0 ) | ||
423 | check = m_checkPerm->isChecked(); | ||
424 | QString text; | ||
425 | |||
426 | if( m_edit != 0 ) | ||
427 | text = m_edit->text(); | ||
428 | // save current mimetype | ||
429 | |||
430 | delItems(); | ||
431 | delete m_checkPerm; | ||
432 | m_checkPerm = 0; | ||
433 | delete m_edit; | ||
434 | m_edit = 0; | ||
435 | delete m_fnLabel; | ||
436 | m_fnLabel = 0; | ||
437 | delete m_ok; | ||
438 | m_ok = 0; | ||
439 | delete m_cancel; | ||
440 | m_cancel = 0; | ||
441 | delete m_mimeCheck; | ||
442 | m_mimeCheck = 0; | ||
443 | delete m_viewCheck; | ||
444 | m_viewCheck = 0; | ||
445 | delete m_select; // test | ||
446 | delete m_stack; | ||
447 | //delete m_list; | ||
448 | init(); | ||
449 | if( m_shLne ) | ||
450 | m_edit->setText(text ); | ||
451 | if( m_shPerm ) | ||
452 | m_checkPerm->setChecked(check ); | ||
453 | } | 355 | } |
454 | 356 | QStringList OFileSelector::selectedPaths() const | |
455 | // let's update the mimetypes. Use the current mimefilter for the 2nd QDir retrieve | ||
456 | // insert QListViewItems with the right options | ||
457 | bool OFileSelector::compliesMime(const QString &path, const QString &mime ) | ||
458 | { | 357 | { |
459 | if( mime == "All" ) | 358 | QStringList list; |
460 | return true; | 359 | list << selectedPath(); |
461 | MimeType type( path ); | 360 | return list; |
462 | if( type.id() == mime ) | ||
463 | return true; | ||
464 | return false; | ||
465 | } | 361 | } |
466 | 362 | QString OFileSelector::directory()const | |
467 | void OFileSelector::reparse() | ||
468 | { | 363 | { |
469 | qDebug("reparse"); | 364 | if( m_selector == NORMAL ) |
470 | if(m_View== 0 || m_selector == NORMAL) | 365 | return QPEApplication::documentDir(); |
471 | return; | ||
472 | m_View->clear(); | ||
473 | QString currMime =m_mimeCheck->currentText(); | ||
474 | // update the mimetype now | ||
475 | if( m_autoMime ) { | ||
476 | QDir dir( m_currentDir ); | ||
477 | m_mimetypes.clear(); | ||
478 | m_mimeCheck->clear(); | ||
479 | dir.setFilter( QDir::Files | QDir::Readable ); | ||
480 | dir.setSorting(QDir::Size ); | ||
481 | const QFileInfoList *list = dir.entryInfoList(); | ||
482 | QFileInfoListIterator it( *list ); | ||
483 | QFileInfo *fi; | ||
484 | while( (fi=it.current()) ){ | ||
485 | if(fi->extension() == QString::fromLatin1("desktop") ){ | ||
486 | ++it; | ||
487 | continue; | ||
488 | } | ||
489 | MimeType type(fi->filePath() ); | ||
490 | if( !m_mimetypes.contains( type.id() ) ) | ||
491 | m_mimetypes.append( type.id() ); | ||
492 | 366 | ||
493 | ++it; | 367 | return QDir(m_currentDir).absPath(); |
494 | } | ||
495 | m_mimetypes.prepend("All" ); | ||
496 | m_mimeCheck->insertStringList(m_mimetypes ); | ||
497 | // set it to the current mimetype | ||
498 | m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currMime ) ); | ||
499 | }else{ | ||
500 | m_mimeCheck->clear(); | ||
501 | m_mimeCheck->insertItem( m_mimetypes.join(";") ); | ||
502 | } | 368 | } |
503 | 369 | ||
504 | QDir dir( m_currentDir ); | 370 | int OFileSelector::fileCount() |
505 | //dir.setFilter(-1 ); | 371 | { |
506 | int sort = QDir::Name | QDir::DirsFirst | QDir::Reversed; | 372 | int count; |
507 | if( m_case ) | 373 | switch( m_selector ){ |
508 | sort = QDir::IgnoreCase; | 374 | case NORMAL: |
509 | dir.setSorting( sort ); | 375 | count = m_select->fileCount(); |
510 | |||
511 | int filter; | ||
512 | /* if( m_dir && !m_files) | ||
513 | filter |= QDir::Dirs; | ||
514 | else if( !m_dir && m_files ) | ||
515 | filter |= QDir::Files; | ||
516 | else | ||
517 | filter |= QDir::All; | ||
518 | */ | ||
519 | if( m_selector == EXTENDED_ALL ) | ||
520 | filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; | ||
521 | else | ||
522 | filter = QDir::Files | QDir::Dirs | QDir::All; | ||
523 | dir.setFilter( filter ); | ||
524 | qDebug("infoList"); | ||
525 | const QFileInfoList *list = dir.entryInfoList(); | ||
526 | QFileInfoListIterator it( *list ); | ||
527 | QFileInfo *fi; | ||
528 | while( (fi=it.current()) ){ | ||
529 | if(fi->fileName() == ".." || fi->fileName() == "." ){ | ||
530 | ++it; | ||
531 | continue; | ||
532 | } | ||
533 | // qWarning("Test: %s", fi->fileName().latin1() ); | ||
534 | if(fi->isSymLink() ){ | ||
535 | // qWarning("Symlink %s", fi->fileName().latin1() ); | ||
536 | QString file = fi->dirPath(true)+"/"+ fi->readLink(); | ||
537 | // qWarning("File ->%s", file.latin1() ); | ||
538 | for(int i=0; i<=4; i++ ){ // prepend from dos | ||
539 | QFileInfo info( file ); | ||
540 | if( !info.exists() ){ | ||
541 | // qWarning("does not exist" ); | ||
542 | addSymlink(currMime, fi, TRUE ); | ||
543 | break; | ||
544 | }else if( info.isDir() ){ | ||
545 | // qWarning("isDir" ); | ||
546 | addDir(currMime, fi, TRUE ); | ||
547 | break; | 376 | break; |
548 | }else if( info.isFile() ){ | 377 | //case CUSTOM: |
549 | // qWarning("isFile" ); | 378 | case EXTENDED: |
550 | addFile(currMime, fi, TRUE ); | 379 | case EXTENDED_ALL: |
380 | default: | ||
381 | count = m_View->childCount(); | ||
551 | break; | 382 | break; |
552 | }else if( info.isSymLink() ){ | ||
553 | file = info.dirPath(true)+ "/"+ info.readLink(); | ||
554 | // qWarning("isSymlink again %s", file.latin1() ); | ||
555 | }else if( i == 4 ){ // just insert it and have the symlink symbol | ||
556 | addSymlink(currMime, fi ); | ||
557 | // qWarning("level too deep" ); | ||
558 | } | 383 | } |
384 | return count; | ||
559 | } | 385 | } |
560 | }else if( fi->isDir() ){ | 386 | DocLnk OFileSelector::selectedDocument() const |
561 | addDir(currMime, fi ); | 387 | { |
562 | }else if( fi->isFile() ) { // file ? | 388 | DocLnk lnk; |
563 | addFile(currMime, fi ); | 389 | switch( m_selector ){ |
390 | case NORMAL:{ | ||
391 | const DocLnk *lnk2 = m_select->selected(); | ||
392 | lnk = DocLnk(*lnk2 ); // copy | ||
393 | delete lnk2; | ||
394 | break; | ||
564 | } | 395 | } |
565 | ++it; | 396 | case EXTENDED: |
397 | case EXTENDED_ALL: | ||
398 | default: | ||
399 | lnk = DocLnk( selectedName() ); // new DocLnk | ||
400 | break; | ||
566 | } | 401 | } |
567 | m_View->sort(); | 402 | return lnk; |
568 | // m_View->ensureItemVisible(); | ||
569 | } | 403 | } |
570 | 404 | QValueList<DocLnk> OFileSelector::selectedDocuments() const | |
571 | QString OFileSelector::directory()const | ||
572 | { | 405 | { |
573 | QDir d( m_currentDir); | 406 | QValueList<DocLnk> docs; |
574 | return d.absPath(); | 407 | docs.append( selectedDocument() ); |
408 | return docs; | ||
575 | } | 409 | } |
576 | 410 | ||
577 | int OFileSelector::fileCount() | 411 | |
578 | { | 412 | // slots internal |
579 | return 0; | ||
580 | } | ||
581 | 413 | ||
582 | void OFileSelector::slotOk( ) | 414 | void OFileSelector::slotOk( ) |
583 | { | 415 | { |
584 | emit ok(); | 416 | emit ok(); |
585 | } | 417 | } |
586 | |||
587 | void OFileSelector::slotCancel( ) | 418 | void OFileSelector::slotCancel( ) |
588 | { | 419 | { |
589 | emit cancel(); | 420 | emit cancel(); |
590 | } | 421 | } |
591 | 422 | void OFileSelector::slotViewCheck(const QString &sel) | |
592 | void OFileSelector::initializeName() | ||
593 | { | 423 | { |
594 | m_boxName = new QHBoxLayout(this ); | 424 | if( sel == tr("Documents" ) ){ |
595 | m_edit = new QLineEdit(this ); | 425 | if( m_select == 0 ){ |
596 | m_fnLabel = new QLabel(this ); | 426 | // autMime? fix cause now we use All and not the current |
597 | m_fnLabel->setText(tr("Name:") ); | 427 | m_select = new FileSelector(m_autoMime ? QString::null : m_mimetypes.join(";"), |
598 | m_boxName->addWidget(m_fnLabel ); | 428 | m_stack, "fileselector", |
599 | m_boxName->insertSpacing(1, 8 ); | 429 | FALSE, FALSE); |
600 | m_boxName->addWidget(m_edit, 100 ); | 430 | connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ), |
431 | this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) ); | ||
432 | //connect to close me and other signals as well | ||
601 | 433 | ||
602 | m_lay->addLayout(m_boxName); | 434 | m_stack->addWidget( m_select, NORMAL ); |
603 | } | 435 | } |
604 | 436 | m_stack->raiseWidget( NORMAL ); | |
605 | void OFileSelector::initializeYes() | 437 | m_selector = NORMAL; |
606 | { | 438 | }else if( sel == tr("Files") ){ |
607 | m_ok = new QPushButton("&Save", this, "save" ); | 439 | m_selector = EXTENDED; |
608 | m_cancel = new QPushButton("C&ancel", this, "cancel" ); | 440 | initializeListView(); |
609 | m_boxOk = new QHBoxLayout(this ); | 441 | reparse(); |
610 | m_boxOk->addWidget( m_ok, Qt::AlignHCenter ); | 442 | m_stack->raiseWidget( EXTENDED ); |
611 | m_boxOk->insertSpacing(1, 8 ); | 443 | }else if( sel == tr("All Files") ){ |
612 | m_boxOk->addWidget( m_cancel, Qt::AlignHCenter); | 444 | m_selector = EXTENDED_ALL; |
613 | m_lay->addLayout(m_boxOk ); | 445 | initializeListView(); |
614 | connect(m_ok, SIGNAL(clicked() ), | 446 | reparse(); |
615 | this, SLOT(slotOk() ) ); | 447 | m_stack->raiseWidget( EXTENDED ); // same widget other QFileFilter |
616 | connect(m_cancel, SIGNAL(clicked() ), | ||
617 | this, SLOT(slotCancel() ) ); | ||
618 | |||
619 | } | 448 | } |
620 | 449 | } | |
621 | void OFileSelector::initializeChooser() | 450 | void OFileSelector::slotMimeCheck(const QString &mime) |
622 | { | 451 | { |
623 | m_boxView = new QHBoxLayout(this ); | 452 | if( m_selector == NORMAL ){ |
624 | 453 | if( m_autoMime ){ | |
625 | m_mimeCheck = new QComboBox(this, "mime check"); | 454 | delete m_select; |
626 | m_viewCheck = new QComboBox(this, "view check"); | 455 | m_select = new FileSelector( mime == tr("All") ? QString::null : mime, |
627 | m_boxView->addWidget(m_viewCheck, 0 ); | 456 | m_stack, "fileselector", |
628 | m_boxView->insertSpacing(2, 8 ); | 457 | FALSE, FALSE); |
629 | m_boxView->addWidget(m_mimeCheck, 0 ); | ||
630 | m_lay->addLayout(m_boxView ); | ||
631 | m_lay->insertSpacing( 4, 8); | ||
632 | |||
633 | m_viewCheck->insertItem(tr("Documents") ); | ||
634 | m_viewCheck->insertItem(tr("Files") ); | ||
635 | m_viewCheck->insertItem(tr("All Files") ); | ||
636 | 458 | ||
637 | if(!m_autoMime ) | 459 | connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ), |
638 | m_mimeCheck->insertItem(m_mimetypes.join("," ) ); | 460 | this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) ); |
639 | else{ // check | 461 | //connect to close me and other signals as well |
462 | m_stack->addWidget( m_select, NORMAL ); | ||
463 | m_stack->raiseWidget( NORMAL ); | ||
640 | updateMimes(); | 464 | updateMimes(); |
465 | m_mimeCheck->clear(); | ||
641 | m_mimeCheck->insertStringList( m_mimetypes ); | 466 | m_mimeCheck->insertStringList( m_mimetypes ); |
467 | m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) ); | ||
642 | } | 468 | } |
643 | 469 | }else{ // others | |
644 | connect( m_viewCheck, SIGNAL(activated(const QString &) ), | 470 | qWarning("Mime %s", mime.latin1() ); |
645 | this, SLOT(slotViewCheck(const QString & ) ) ); | 471 | if(m_shChooser ){ |
646 | 472 | qWarning("Current Text %s", m_mimeCheck->currentText().latin1() ); | |
647 | connect( m_mimeCheck, SIGNAL(activated(const QString &) ), | 473 | //m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) ); |
648 | this, SLOT(slotMimeCheck(const QString & ) ) ); | 474 | } |
475 | reparse(); | ||
649 | } | 476 | } |
650 | 477 | ||
651 | void OFileSelector::slotMimeCheck(const QString &view ){ | 478 | } |
652 | if(m_selector == NORMAL ){ | 479 | void OFileSelector::slotLocationActivated(const QString &file) |
653 | delete m_select; | 480 | { |
654 | m_select = new FileSelector(view == "All" ? QString::null : view | 481 | cd(file.left(file.find("<-",0,TRUE))); |
655 | , m_stack, "fileselector", FALSE, FALSE ); | ||
656 | m_stack->addWidget( m_select, NORMAL ); | ||
657 | m_stack->raiseWidget( NORMAL ); | ||
658 | }else{ | ||
659 | reparse(); | 482 | reparse(); |
660 | } | 483 | } |
484 | void OFileSelector::slotInsertLocationPath(const QString ¤tPath, int count) | ||
485 | { | ||
486 | QStringList pathList; | ||
487 | bool underDog = FALSE; | ||
488 | for(int i=0;i<count;i++) { | ||
489 | pathList << m_location->text(i); | ||
490 | if( m_location->text(i) == currentPath) | ||
491 | underDog = TRUE; | ||
492 | } | ||
493 | if( !underDog) { | ||
494 | m_location->clear(); | ||
495 | if( currentPath.left(2)=="//") | ||
496 | pathList.append( currentPath.right(currentPath.length()-1) ); | ||
497 | else | ||
498 | pathList.append( currentPath ); | ||
499 | m_location->insertStringList( pathList,-1); | ||
661 | } | 500 | } |
662 | |||
663 | void OFileSelector::slotViewCheck(const QString &view ){ | ||
664 | qWarning("changed: show %s", view.latin1() ); | ||
665 | // if the current view is the one | ||
666 | QString currMime = m_mimeCheck->currentText(); | ||
667 | if( view == QString::fromLatin1("Documents") ){ | ||
668 | // get the mimetype now | ||
669 | // check if we're the current widget and return | ||
670 | if( m_View != 0) { // delete 0 shouldn't crash but it did :( | ||
671 | delete m_View; | ||
672 | delete m_boxToolbar; | ||
673 | delete m_homeButton; | ||
674 | delete m_docButton; | ||
675 | delete m_location; | ||
676 | delete m_up; | ||
677 | delete m_pseudo; | ||
678 | //if(m_pseudoLayout!=0 ) | ||
679 | // delete m_pseudoLayout; | ||
680 | } | 501 | } |
681 | m_View = 0; | 502 | void OFileSelector::locationComboChanged() |
682 | m_boxToolbar = 0; | 503 | { |
683 | m_homeButton = 0; | 504 | cd( m_location->lineEdit()->text()); |
684 | m_docButton = 0; | 505 | reparse(); |
685 | m_location = 0; | 506 | } |
686 | m_up = 0; | 507 | void OFileSelector::init() |
687 | m_pseudo = 0; | 508 | { |
688 | m_pseudoLayout = 0; | 509 | m_lay = new QVBoxLayout( this ); |
510 | m_lay->setSpacing(0 ); | ||
511 | |||
512 | m_stack = new QWidgetStack( this ); | ||
513 | if( m_selector == NORMAL ){ | ||
514 | m_select = new FileSelector(m_autoMime ? QString::null : m_mimetypes.join(";"), | ||
515 | m_stack, "fileselector", | ||
516 | FALSE, FALSE); | ||
517 | |||
518 | connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ), | ||
519 | this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) ); | ||
520 | //connect to close me and other signals as well | ||
689 | 521 | ||
690 | delete m_select; | ||
691 | m_select = new FileSelector( currMime == "All" ? QString::null : currMime, | ||
692 | m_stack,"fileselector", FALSE, FALSE ); | ||
693 | m_stack->addWidget( m_select, NORMAL ); | 522 | m_stack->addWidget( m_select, NORMAL ); |
694 | m_mimeCheck->clear(); | ||
695 | m_selector = NORMAL; | ||
696 | updateMimes(); | ||
697 | m_mimeCheck->insertStringList( m_mimetypes ); | ||
698 | m_stack->raiseWidget( NORMAL ); | 523 | m_stack->raiseWidget( NORMAL ); |
699 | connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) ); | 524 | }else{ // we're in init so it will be EXTENDED or EXTENDED_ALL |
525 | // and initializeListview will take care of those | ||
526 | // toolbar get's generade in initializeListView | ||
527 | initializeListView( ); // will raise the widget as well | ||
528 | } | ||
529 | m_lay->addWidget( m_stack, 100 ); // add to the layout 10 = stretch | ||
700 | 530 | ||
701 | } else if(view == QString::fromLatin1("Files") ){ | 531 | if( m_shLne ) // the LineEdit with the current FileName |
702 | // remove from the stack | 532 | initializeName(); |
703 | delete m_select; | ||
704 | m_select = 0; | ||
705 | delete m_View; | ||
706 | m_View = 0; | ||
707 | 533 | ||
708 | m_selector = EXTENDED; | 534 | if( m_shPerm ) // the Permission QCheckBox |
709 | initializeListView(); | 535 | initializePerm(); |
710 | reparse(); | ||
711 | } else if(view == QString::fromLatin1("All Files") ) { | ||
712 | // remove from the stack | ||
713 | delete m_select; | ||
714 | m_select = 0; | ||
715 | delete m_View; | ||
716 | m_View = 0; | ||
717 | |||
718 | m_selector = EXTENDED_ALL; | ||
719 | initializeListView(); | ||
720 | reparse(); | ||
721 | } | ||
722 | } | ||
723 | 536 | ||
537 | if( m_shChooser ) // the Chooser for the view and Mimetypes | ||
538 | initializeChooser(); | ||
724 | 539 | ||
725 | void OFileSelector::updateMimes() // lets check which mode is active | 540 | if( m_shYesNo ) // the Yes No button row |
726 | // check the current dir for items then | 541 | initializeYes( ); |
542 | } | ||
543 | void OFileSelector::updateMimes() | ||
727 | { | 544 | { |
728 | if( m_autoMime ){ | 545 | if( m_autoMime ){ |
729 | m_mimetypes.clear(); | 546 | m_mimetypes.clear(); |
730 | m_mimetypes.append("All" ); | 547 | m_mimetypes.append( tr("All") ); |
731 | if( m_selector == NORMAL ){ | 548 | if( m_selector == NORMAL ){ |
732 | DocLnkSet set; | 549 | DocLnkSet set; |
733 | Global::findDocuments(&set, QString::null ); | 550 | Global::findDocuments(&set, QString::null ); |
@@ -736,68 +553,238 @@ void OFileSelector::updateMimes() // lets check which mode is active | |||
736 | if( !m_mimetypes.contains((*dit)->type() ) ) | 553 | if( !m_mimetypes.contains((*dit)->type() ) ) |
737 | m_mimetypes.append( (*dit)->type() ); | 554 | m_mimetypes.append( (*dit)->type() ); |
738 | } | 555 | } |
739 | }else{ | 556 | }// else done in reparse |
740 | // should be allreday updatet | ||
741 | ; | ||
742 | } | ||
743 | } | 557 | } |
744 | } | 558 | } |
745 | 559 | void OFileSelector::initVars() | |
746 | void OFileSelector::initializeListView() | ||
747 | { | 560 | { |
748 | // in the instance that a developer selected the view to be Files or Entended, | 561 | if( m_mimetypes.isEmpty() ) |
749 | // in the initial initialization, you are deleting objects here | 562 | m_autoMime = true; |
750 | // that aren't even existing yet. | 563 | else |
751 | 564 | m_autoMime = false; | |
752 | // just to make sure but clean it up better FIXME | 565 | m_shClose = false; |
753 | delete m_View; | 566 | m_shNew = false; |
754 | m_View = 0; | 567 | m_shTool = true; |
755 | delete m_boxToolbar; | 568 | m_shPerm = false; |
756 | delete m_homeButton; | 569 | m_shLne = true; |
757 | delete m_docButton; | 570 | m_shChooser = true; |
758 | delete m_location; | 571 | m_shYesNo = true; |
759 | delete m_up; | 572 | m_case = false; |
760 | delete m_pseudo; | 573 | m_dir = true; |
574 | m_files = true; | ||
575 | m_showPopup = false; | ||
576 | if(m_pixmaps == 0 ) // init the pixmaps | ||
577 | initPics(); | ||
761 | 578 | ||
762 | m_boxToolbar = 0; | 579 | // pointers |
580 | m_location = 0; | ||
581 | m_mimeCheck = 0; | ||
582 | m_viewCheck = 0; | ||
763 | m_homeButton = 0; | 583 | m_homeButton = 0; |
764 | m_docButton = 0; | 584 | m_docButton = 0; |
765 | m_location = 0; | 585 | m_hideButton = 0; |
586 | m_ok = 0; | ||
587 | m_cancel = 0; | ||
588 | m_reread = 0; | ||
766 | m_up = 0; | 589 | m_up = 0; |
590 | m_View = 0; | ||
591 | m_checkPerm = 0; | ||
767 | m_pseudo = 0; | 592 | m_pseudo = 0; |
768 | m_pseudoLayout = 0; | 593 | m_pseudoLayout = 0; |
769 | qDebug(" time for the toolbar "); | 594 | m_select = 0; |
595 | m_stack = 0; | ||
596 | m_lay = 0; | ||
597 | m_Oselector = 0; | ||
598 | m_boxToolbar = 0; | ||
599 | m_boxOk = 0; | ||
600 | m_boxName = 0; | ||
601 | m_boxView = 0; | ||
602 | m_custom = 0; | ||
603 | m_edit = 0; | ||
604 | m_fnLabel = 0; | ||
605 | m_new = 0; | ||
606 | m_close = 0; | ||
607 | } | ||
608 | void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink) | ||
609 | { | ||
610 | if(!m_files) | ||
611 | return; | ||
612 | // if( !compliesMime(info->absFilePath(), mime ) ) | ||
613 | // return; | ||
614 | MimeType type( info->absFilePath() ); | ||
615 | if( mime != tr("All") && type.id() != mime ) | ||
616 | return; | ||
617 | QPixmap pix = type.pixmap(); | ||
618 | QString dir; | ||
619 | QString name; | ||
620 | bool locked; | ||
621 | if( pix.isNull() ) | ||
622 | pix = Resource::loadPixmap( "UnknownDocument-14"); | ||
623 | dir = info->dirPath( true ); | ||
624 | if( symlink ) | ||
625 | name = info->fileName() + " -> " +info->dirPath() + "/" + info->readLink(); | ||
626 | else { | ||
627 | name = info->fileName(); | ||
628 | if( ( m_mode == OPEN && !info->isReadable() )|| | ||
629 | ( m_mode == SAVE && !info->isWritable() ) ){ | ||
630 | |||
631 | locked = true; pix = Resource::loadPixmap("locked"); | ||
632 | } | ||
633 | } | ||
634 | new OFileSelectorItem( m_View, pix, name, | ||
635 | info->lastModified().toString(), | ||
636 | QString::number( info->size() ), | ||
637 | dir, locked ); | ||
638 | } | ||
639 | void OFileSelector::addDir(const QString &mime, QFileInfo *info, bool symlink ) | ||
640 | { | ||
641 | if(!m_dir) | ||
642 | return; | ||
643 | if( m_selector == EXTENDED_ALL || m_selector == EXTENDED ){ | ||
644 | bool locked = false; | ||
645 | QString name; | ||
646 | QPixmap pix; | ||
647 | if( ( m_mode == OPEN && !info->isReadable() ) || ( m_mode == SAVE && !info->isWritable() ) ){ | ||
648 | locked = true; | ||
649 | if( symlink ) | ||
650 | pix = (*m_pixmaps)["symlinkedlocked"]; | ||
651 | else | ||
652 | pix = Resource::loadPixmap("lockedfolder"); | ||
653 | }else { // readable | ||
654 | pix = symlink ? (*m_pixmaps)["dirsymlink"] : Resource::loadPixmap("folder") ; | ||
655 | } | ||
656 | name = symlink ? info->fileName() + "->" + info->dirPath(true) + "/" +info->readLink() : info->fileName() ; | ||
657 | new OFileSelectorItem( m_View, pix, name, | ||
658 | info->lastModified().toString(), | ||
659 | QString::number( info->size() ), | ||
660 | info->dirPath( true ), locked, | ||
661 | true ); | ||
662 | |||
663 | }// else CUSTOM View | ||
664 | } | ||
665 | void OFileSelector::delItems() | ||
666 | { | ||
667 | |||
668 | } | ||
669 | void OFileSelector::initializeName() | ||
670 | { | ||
671 | /** Name Layout Line | ||
672 | * This is the Layout line arranged in | ||
673 | * horizontal way each components | ||
674 | * are next to each other | ||
675 | * but we will only do this if | ||
676 | * we didn't initialize a while ago. | ||
677 | */ | ||
678 | if( m_boxName == 0 ){ | ||
679 | m_boxName = new QHBox( this ); // remove this this? or use a QHBox | ||
680 | m_fnLabel = new QLabel( m_boxName ); | ||
681 | m_fnLabel->setText( tr("Name:") ); | ||
682 | m_edit = new QLineEdit( m_boxName ); | ||
683 | //m_boxName->addWidget( m_fnLabel ); | ||
684 | m_boxName->setMargin( 5 ); | ||
685 | m_boxName->setSpacing( 8 ); | ||
686 | //m_boxName->setStretchFactor(m_edit, 100 ); // 100 is stretch factor | ||
687 | |||
688 | m_lay->addWidget( m_boxName, 0 ); // add it to the topLevel layout | ||
689 | }// else we already initialized | ||
690 | // maybe show the components? | ||
691 | // | ||
692 | } | ||
693 | void OFileSelector::initializeYes() | ||
694 | { | ||
695 | /** The Save Cancel bar | ||
696 | * | ||
697 | */ | ||
698 | if( m_boxOk == 0 ){ | ||
699 | m_boxOk = new QHBox( this ); | ||
700 | m_ok = new QPushButton( tr("&Save"),m_boxOk , "save" ); | ||
701 | m_cancel = new QPushButton( tr("C&ancel"), m_boxOk, "cancel" ); | ||
702 | |||
703 | //m_boxOk->addWidget( m_ok ); | ||
704 | //m_boxOk->addWidget( m_cancel ); | ||
705 | m_boxOk->setMargin( 5 ); | ||
706 | m_boxOk->setSpacing( 10 ); | ||
707 | m_lay->addWidget( m_boxOk, 0 ); | ||
708 | |||
709 | connect( m_ok, SIGNAL( clicked() ), | ||
710 | this, SLOT(slotOk() ) ); | ||
711 | connect( m_cancel, SIGNAL( clicked() ), | ||
712 | this, SLOT( slotCancel() ) ); | ||
713 | } | ||
714 | } | ||
715 | void OFileSelector::initializeChooser() | ||
716 | { | ||
717 | if( m_boxView == 0 ){ | ||
718 | m_boxView = new QHBox( this ); | ||
719 | m_viewCheck = new QComboBox( m_boxView, "view check"); | ||
720 | m_mimeCheck = new QComboBox( m_boxView, "mime check"); | ||
721 | m_boxView->setSpacing( 8 ); | ||
722 | m_lay->addWidget(m_boxView, 0 ); | ||
723 | |||
724 | m_viewCheck->insertItem( tr("Documents") ); | ||
725 | m_viewCheck->insertItem( tr("Files") ); | ||
726 | m_viewCheck->insertItem( tr("All Files") ); | ||
727 | if(!m_autoMime ) | ||
728 | m_mimeCheck->insertItem(m_mimetypes.join(",") ); | ||
729 | else{ | ||
730 | updateMimes(); | ||
731 | m_mimeCheck->insertStringList( m_mimetypes ); | ||
732 | } | ||
733 | connect( m_viewCheck, SIGNAL( activated(const QString & ) ), | ||
734 | this, SLOT( slotViewCheck(const QString & ) ) ); | ||
735 | connect( m_mimeCheck, SIGNAL( activated(const QString & ) ), | ||
736 | this, SLOT( slotMimeCheck( const QString & ) ) ); | ||
737 | } | ||
738 | } | ||
739 | void OFileSelector::initializeListView() | ||
740 | { | ||
741 | if( m_pseudo == 0 ){ | ||
770 | m_pseudo = new QWidget(m_stack, "Pseudo Widget"); | 742 | m_pseudo = new QWidget(m_stack, "Pseudo Widget"); |
771 | m_pseudoLayout = new QVBoxLayout(m_pseudo ); | 743 | m_pseudoLayout = new QVBoxLayout(m_pseudo ); |
772 | if(m_shTool ){ | 744 | // toolbar |
773 | m_boxToolbar = new QHBoxLayout( ); | 745 | m_boxToolbar = new QHBox( m_pseudo ); |
774 | m_boxToolbar->setAutoAdd( true ); | 746 | m_boxToolbar->setSpacing(0 ); // next to each other please |
775 | m_location = new QComboBox(m_pseudo ); | ||
776 | m_location ->setEditable(TRUE); | ||
777 | connect( m_location, SIGNAL(activated(const QString &) ), this, SLOT( locationComboActivated(const QString & ) ) ); | ||
778 | connect( m_location->lineEdit(),SIGNAL(returnPressed()), this,SLOT( locationComboChanged())); | ||
779 | 747 | ||
780 | m_up = new QPushButton(Resource::loadIconSet("up"),"", m_pseudo,"cdUpButton"); | 748 | // toolbar members |
749 | { | ||
750 | // location QComboBox | ||
751 | m_location = new QComboBox( m_boxToolbar ); | ||
752 | m_location->setEditable( TRUE ); | ||
753 | m_location->setDuplicatesEnabled( FALSE ); | ||
754 | connect( m_location, SIGNAL(activated(const QString &) ), | ||
755 | this, SLOT( slotLocationActivated(const QString &) ) ); | ||
756 | connect( m_location->lineEdit(), SIGNAL(returnPressed() ), | ||
757 | this, SLOT(locationComboChanged() ) ); | ||
758 | // UP Button | ||
759 | m_up = new QPushButton(Resource::loadIconSet("up"),"", | ||
760 | m_boxToolbar,"cdUpButton"); | ||
781 | m_up->setFixedSize( QSize( 20, 20 ) ); | 761 | m_up->setFixedSize( QSize( 20, 20 ) ); |
782 | connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) ); | 762 | connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) ); |
783 | m_up->setFlat(TRUE); | 763 | m_up->setFlat(TRUE); |
784 | 764 | ||
785 | m_homeButton = new QPushButton(Resource::loadIconSet("home") , "", m_pseudo); | 765 | // Home Button |
766 | m_homeButton = new QPushButton(Resource::loadIconSet("home") , | ||
767 | "", m_boxToolbar); | ||
786 | m_homeButton->setFixedSize( QSize( 20, 20 ) ); | 768 | m_homeButton->setFixedSize( QSize( 20, 20 ) ); |
787 | connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) ); | 769 | connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) ); |
788 | m_homeButton->setFlat(TRUE); | 770 | m_homeButton->setFlat(TRUE); |
789 | 771 | // Documents Button | |
790 | m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"", m_pseudo,"docsButton"); | 772 | m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"", |
773 | m_boxToolbar,"docsButton"); | ||
791 | m_docButton->setFixedSize( QSize( 20, 20 ) ); | 774 | m_docButton->setFixedSize( QSize( 20, 20 ) ); |
792 | connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) ); | 775 | connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) ); |
793 | m_docButton->setFlat(TRUE); | 776 | m_docButton->setFlat(TRUE); |
794 | 777 | ||
795 | m_boxToolbar->addWidget(m_location ); | 778 | // Close button |
796 | m_boxToolbar->addWidget(m_up ); | 779 | m_close = new QPushButton( Resource::loadIconSet( "close"), "", |
797 | m_boxToolbar->addWidget(m_homeButton ); | 780 | m_boxToolbar ); |
798 | m_boxToolbar->addWidget(m_docButton ); | 781 | connect( m_close, SIGNAL(clicked() ), this, SIGNAL(closeMe() ) ); |
799 | m_pseudoLayout->addLayout(m_boxToolbar ); | 782 | m_close->setFixedSize( 20, 20 ); |
800 | qDebug("lets fill the combobox"); | 783 | |
784 | m_boxToolbar->setFixedHeight( 20 ); | ||
785 | m_pseudoLayout->addWidget(m_boxToolbar ); | ||
786 | |||
787 | // let;s fill the Location ComboBox | ||
801 | StorageInfo storage; | 788 | StorageInfo storage; |
802 | const QList<FileSystem> &fs = storage.fileSystems(); | 789 | const QList<FileSystem> &fs = storage.fileSystems(); |
803 | QListIterator<FileSystem> it ( fs ); | 790 | QListIterator<FileSystem> it ( fs ); |
@@ -809,17 +796,24 @@ void OFileSelector::initializeListView() | |||
809 | int count = m_location->count(); | 796 | int count = m_location->count(); |
810 | m_location->insertItem(m_currentDir ); | 797 | m_location->insertItem(m_currentDir ); |
811 | m_location->setCurrentItem( count ); | 798 | m_location->setCurrentItem( count ); |
812 | }; | 799 | // due to the New and Close button we can not simply hide m_boxToolBar to not show it |
813 | 800 | if( !m_shTool ){ | |
801 | m_location->hide( ); | ||
802 | m_up->hide( ); | ||
803 | m_homeButton->hide( ); | ||
804 | m_docButton->hide( ); | ||
805 | } | ||
806 | if(!m_shClose ) | ||
807 | m_close->hide(); | ||
808 | if(!m_shNew) | ||
809 | m_close->hide(); | ||
810 | |||
811 | } // off toolbar | ||
812 | // the Main ListView | ||
813 | // make a QWidgetStack first so Views can share the Toolbar | ||
814 | m_View = new QListView(m_pseudo, "Extended view" ); | 814 | m_View = new QListView(m_pseudo, "Extended view" ); |
815 | m_stack->addWidget( m_pseudo, EXTENDED ); | 815 | QPEApplication::setStylusOperation( m_View->viewport(), |
816 | m_stack->raiseWidget( EXTENDED ); | 816 | QPEApplication::RightOnHold); |
817 | m_pseudoLayout->addWidget(m_View ); | ||
818 | QPEApplication::setStylusOperation( m_View->viewport(),QPEApplication::RightOnHold); | ||
819 | // set up the stuff | ||
820 | // Pixmap Name Date Size mime | ||
821 | //(m_View->header() )->hide(); | ||
822 | //m_View->setRootIsDecorated(false); | ||
823 | m_View->addColumn(" "); | 817 | m_View->addColumn(" "); |
824 | m_View->addColumn(tr("Name"),135 ); | 818 | m_View->addColumn(tr("Name"),135 ); |
825 | m_View->addColumn(tr("Size"),-1 ); | 819 | m_View->addColumn(tr("Size"),-1 ); |
@@ -829,155 +823,87 @@ void OFileSelector::initializeListView() | |||
829 | header->hide(); | 823 | header->hide(); |
830 | m_View->setSorting(1 ); | 824 | m_View->setSorting(1 ); |
831 | m_View->setAllColumnsShowFocus( TRUE); | 825 | m_View->setAllColumnsShowFocus( TRUE); |
832 | // connect now | ||
833 | connect(m_View, SIGNAL(selectionChanged() ), this, SLOT(slotSelectionChanged() ) ); | ||
834 | connect(m_View, SIGNAL(currentChanged(QListViewItem *) ), this, SLOT(slotCurrentChanged(QListViewItem * ) ) ); | ||
835 | connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ), | ||
836 | this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) ); | ||
837 | connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )), | ||
838 | this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) ); | ||
839 | |||
840 | |||
841 | }; | ||
842 | 826 | ||
843 | /* If a item is locked depends on the mode | 827 | connect(m_View, SIGNAL(selectionChanged() ), |
844 | if we're in OPEN !isReadable is locked | 828 | this, SLOT(slotSelectionChanged() ) ); |
845 | if we're in SAVE !isWriteable is locked | ||
846 | 829 | ||
830 | connect(m_View, SIGNAL(currentChanged(QListViewItem *) ), | ||
831 | this, SLOT(slotCurrentChanged(QListViewItem * ) ) ); | ||
847 | 832 | ||
848 | */ | 833 | connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ), |
849 | 834 | this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) ); | |
850 | 835 | ||
851 | void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink ){ | 836 | connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )), |
852 | // qWarning("Add Files" ); | 837 | this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) ); |
853 | if( !m_files ){ | ||
854 | // qWarning("not mfiles" ); | ||
855 | return; | ||
856 | } | ||
857 | 838 | ||
858 | MimeType type( info->filePath() ); | 839 | m_pseudoLayout->addWidget( m_View, 288 ); |
859 | QString name; | 840 | m_stack->addWidget( m_pseudo, EXTENDED ); |
860 | QString dir; | ||
861 | bool locked= false; | ||
862 | if(mime == "All" ){ | ||
863 | ; | ||
864 | }else if( type.id() != mime ) { | ||
865 | return; | ||
866 | } | ||
867 | QPixmap pix = type.pixmap(); | ||
868 | if(pix.isNull() ) | ||
869 | pix = Resource::loadPixmap( "UnknownDocument-14" ); | ||
870 | dir = info->dirPath( true ); | ||
871 | if( symlink ) { // check if the readLink is readable | ||
872 | // do it right later | ||
873 | name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink(); | ||
874 | }else{ // keep track of the icons | ||
875 | name = info->fileName(); | ||
876 | if( m_mode == OPEN ){ | ||
877 | if( !info->isReadable() ){ | ||
878 | locked = true; | ||
879 | pix = Resource::loadPixmap("locked" ); | ||
880 | } | ||
881 | }else if( m_mode == SAVE ){ | ||
882 | if( !info->isWritable() ){ | ||
883 | locked = true; | ||
884 | pix = Resource::loadPixmap("locked" ); | ||
885 | } | ||
886 | } | ||
887 | } | 841 | } |
888 | new OFileSelectorItem( m_View, pix, name, | ||
889 | info->lastModified().toString(), | ||
890 | QString::number( info->size() ), | ||
891 | dir, locked ); | ||
892 | } | 842 | } |
893 | 843 | void OFileSelector::initializePerm() | |
894 | void OFileSelector::addDir(const QString &/*mime*/, QFileInfo *info, bool symlink ) | ||
895 | { | ||
896 | if(!m_dir ) | ||
897 | return; | ||
898 | //if( showDirs ) | ||
899 | { | 844 | { |
900 | bool locked=false; | 845 | if( m_checkPerm == 0 ){ |
901 | QString name; | 846 | m_checkPerm = new QCheckBox(tr("Ser Permission"), this, "perm"); |
902 | QPixmap pix; | 847 | m_checkPerm->setChecked( false ); |
903 | if( ( m_mode == OPEN && !info->isReadable() ) || ( m_mode == SAVE && !info->isWritable() ) ){ | 848 | m_lay->addWidget( m_checkPerm ); |
904 | locked = true; | ||
905 | if( symlink ){ | ||
906 | pix = (*m_pixmaps)["symlinkedlocked"]; | ||
907 | }else{ | ||
908 | pix = Resource::loadPixmap("lockedfolder" ); | ||
909 | } | ||
910 | }else{ | ||
911 | if( symlink ){ | ||
912 | pix = (*m_pixmaps)["dirsymlink" ]; | ||
913 | }else{ | ||
914 | pix = Resource::loadPixmap("folder" ); | ||
915 | } | ||
916 | } | ||
917 | if( symlink){ | ||
918 | name = info->fileName()+ "->"+ info->dirPath(true) +"/" +info->readLink(); | ||
919 | |||
920 | }else{ | ||
921 | //if(info->isReadable() ) | ||
922 | name = info->fileName(); | ||
923 | } | ||
924 | |||
925 | new OFileSelectorItem(m_View, pix, | ||
926 | name, info->lastModified().toString(), | ||
927 | QString::number(info->size() ),info->dirPath(true), locked, true ); | ||
928 | 849 | ||
929 | } | 850 | } |
930 | } | 851 | } |
852 | void OFileSelector::initPics() | ||
853 | { | ||
854 | m_pixmaps = new QMap<QString,QPixmap>; | ||
855 | QPixmap pm = Resource::loadPixmap( "folder" ); | ||
856 | QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); | ||
857 | QPainter painter( &pm ); | ||
858 | painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); | ||
859 | pm.setMask( pm.createHeuristicMask( FALSE ) ); | ||
860 | m_pixmaps->insert("dirsymlink", pm ); | ||
931 | 861 | ||
932 | void OFileSelector::setShowDirs(bool dir ) | 862 | QPixmap pm2 = Resource::loadPixmap( "lockedfolder" ); |
863 | QPainter pen(&pm2 ); | ||
864 | pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk ); | ||
865 | pm2.setMask( pm2.createHeuristicMask( FALSE ) ); | ||
866 | m_pixmaps->insert("symlinkedlocked", pm2 ); | ||
867 | } | ||
868 | // if a mime complies with the m_mimeCheck->currentItem | ||
869 | bool OFileSelector::compliesMime( const QString &path, const QString &mime ) | ||
933 | { | 870 | { |
934 | m_dir = dir; | 871 | if( mime == "All" ) |
935 | reparse(); | 872 | return true; |
873 | MimeType type( path ); | ||
874 | if( type.id() == mime ) | ||
875 | return true; | ||
876 | return false; | ||
936 | } | 877 | } |
937 | 878 | ||
938 | void OFileSelector::slotFileSelected(const QString &string ) | 879 | void OFileSelector::slotFileSelected(const QString &string ) |
939 | { | 880 | { |
940 | if(m_shLne ) | 881 | if(m_shLne ) |
941 | m_edit->setText( string ); | 882 | m_edit->setText( string ); |
942 | |||
943 | emit fileSelected( string ); | 883 | emit fileSelected( string ); |
944 | // do AppLnk stuff | ||
945 | } | 884 | } |
946 | |||
947 | void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk ) | 885 | void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk ) |
948 | { | 886 | { |
949 | slotFileSelected(lnk.name() ); | 887 | slotFileSelected(lnk.name() ); |
950 | emit fileSelected( lnk ); | 888 | // emit fileSelected( lnk ); |
951 | } | 889 | } |
952 | 890 | void OFileSelector::slotSelectionChanged() | |
953 | void OFileSelector::slotSelectionChanged() // get the current items | ||
954 | // fixme | ||
955 | { | 891 | { |
956 | qWarning("selection changed" ); | ||
957 | } | ||
958 | 892 | ||
893 | } | ||
959 | void OFileSelector::slotCurrentChanged(QListViewItem *item ) | 894 | void OFileSelector::slotCurrentChanged(QListViewItem *item ) |
960 | { | 895 | { |
961 | // qWarning("current changed" ); | ||
962 | if( item == 0 ) | 896 | if( item == 0 ) |
963 | return; | 897 | return; |
964 | |||
965 | if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ | 898 | if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ |
966 | OFileSelectorItem *sel = (OFileSelectorItem*)item; | 899 | OFileSelectorItem *sel = (OFileSelectorItem*) item; // start to use the C++ casts ;) |
967 | if(!sel->isDir() ){ | 900 | if(!sel->isDir() ){ |
968 | // qWarning("is not dir" ); | 901 | if( m_shLne ) |
969 | if(m_shLne ){ | ||
970 | m_edit->setText(sel->text(1) ); | 902 | m_edit->setText(sel->text(1) ); |
971 | // qWarning("setTexy" ); | ||
972 | } | 903 | } |
973 | } | 904 | } |
974 | }else { | ||
975 | qWarning("mode not extended" ); | ||
976 | } | ||
977 | } | 905 | } |
978 | 906 | void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &, int) | |
979 | // either select or change dir | ||
980 | void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &/*point*/, int ) | ||
981 | { | 907 | { |
982 | if( item == 0 ) | 908 | if( item == 0 ) |
983 | return; | 909 | return; |
@@ -985,27 +911,27 @@ void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint & | |||
985 | if( button != Qt::LeftButton ) | 911 | if( button != Qt::LeftButton ) |
986 | return; | 912 | return; |
987 | 913 | ||
988 | // qWarning("clicked" ); | 914 | switch( m_selector ){ |
989 | if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ | 915 | default: |
990 | // qWarning("inside" ); | 916 | break; |
917 | case EXTENDED: // fall through | ||
918 | case EXTENDED_ALL:{ | ||
991 | OFileSelectorItem *sel = (OFileSelectorItem*)item; | 919 | OFileSelectorItem *sel = (OFileSelectorItem*)item; |
992 | if(!sel->isLocked() ){ // not locked either changedir or open | 920 | if(!sel->isLocked() ){ |
993 | QStringList str = QStringList::split("->", sel->text(1) ); | 921 | QStringList str = QStringList::split("->", sel->text(1) ); |
994 | if(sel->isDir() ){ | 922 | if(sel->isDir() ){ |
995 | cd( sel->directory() + "/" + str[0] ); | 923 | cd( sel->directory() + "/" + str[0].stripWhiteSpace() ); |
924 | // if MODE Dir m_shLne set the Text | ||
996 | } else { | 925 | } else { |
997 | // qWarning("file" ); | ||
998 | if(m_shLne ) | 926 | if(m_shLne ) |
999 | m_edit->setText(str[0] ); | 927 | m_edit->setText( str[0].stripWhiteSpace() ); |
1000 | emit fileSelected(str[0] ); | 928 | emit fileSelected( sel->directory() + "/" + str[0].stripWhiteSpace() ); |
1001 | // emit DocLnk need to do it | 929 | } |
930 | } | ||
931 | break; | ||
1002 | } | 932 | } |
1003 | } else { | ||
1004 | qWarning( "locked" ); | ||
1005 | } | 933 | } |
1006 | }; | ||
1007 | } | 934 | } |
1008 | |||
1009 | void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int ) | 935 | void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int ) |
1010 | { | 936 | { |
1011 | if (item == 0 ) | 937 | if (item == 0 ) |
@@ -1013,133 +939,42 @@ void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoin | |||
1013 | 939 | ||
1014 | if( button != Qt::RightButton ) | 940 | if( button != Qt::RightButton ) |
1015 | return; | 941 | return; |
1016 | // qWarning("right button" ); | ||
1017 | slotContextMenu(item); | 942 | slotContextMenu(item); |
1018 | } | 943 | } |
1019 | |||
1020 | void OFileSelector::slotContextMenu(QListViewItem *item) | 944 | void OFileSelector::slotContextMenu(QListViewItem *item) |
1021 | { | 945 | { |
1022 | // qWarning("context menu" ); | ||
1023 | if( item ==0 || !m_showPopup ) | ||
1024 | return; | ||
1025 | |||
1026 | if( m_custom !=0){ | ||
1027 | m_custom->exec(); | ||
1028 | }else{ | ||
1029 | QPopupMenu menu; | ||
1030 | QAction up; | ||
1031 | up.setText("cd up"); | ||
1032 | up.addTo( &menu ); | ||
1033 | connect(&up, SIGNAL(activated() ), | ||
1034 | this, SLOT(cdUP() ) ); | ||
1035 | |||
1036 | QAction act; | ||
1037 | OFileSelectorItem *sel = (OFileSelectorItem*)item; | ||
1038 | if(sel->isDir() ){ | ||
1039 | act.setText( tr("Change Directory") ); | ||
1040 | act.addTo(&menu ); | ||
1041 | connect(&act, SIGNAL(activated() ), | ||
1042 | this, SLOT(slotChangedDir() ) ); | ||
1043 | }else{ | ||
1044 | act.setText( tr("Open file" ) ); | ||
1045 | act.addTo( &menu ); | ||
1046 | connect(&act, SIGNAL(activated() ), | ||
1047 | this, SLOT(slotOpen() ) ); | ||
1048 | } | ||
1049 | QAction rescan; | ||
1050 | rescan.setText( tr("Rescan") ); | ||
1051 | rescan.addTo( &menu ); | ||
1052 | connect(&rescan, SIGNAL(activated() ), | ||
1053 | this, SLOT(slotRescan() ) ); | ||
1054 | |||
1055 | QAction rename; | ||
1056 | rename.setText( tr("Rename") ); | ||
1057 | rename.addTo( &menu ); | ||
1058 | connect(&rename, SIGNAL(activated() ), | ||
1059 | this, SLOT(slotRename() ) ); | ||
1060 | |||
1061 | menu.insertSeparator(); | ||
1062 | QAction delItem; | ||
1063 | delItem.setText( tr("Delete") ); | ||
1064 | delItem.addTo(&menu ); | ||
1065 | connect(&delItem, SIGNAL(activated() ), | ||
1066 | this, SLOT(slotDelete() ) ); | ||
1067 | |||
1068 | menu.exec(QCursor::pos() ); | ||
1069 | } | ||
1070 | } | ||
1071 | 946 | ||
1072 | bool OFileSelector::cd(const QString &str ) | ||
1073 | { | ||
1074 | // qWarning(" dir %s", str.latin1() ); | ||
1075 | QDir dir( str); | ||
1076 | if(dir.exists() ){ | ||
1077 | m_currentDir = dir.absPath(); | ||
1078 | reparse(); | ||
1079 | if(m_shTool ){ | ||
1080 | int count = m_location->count(); | ||
1081 | insertLocationPath( str ,count ); | ||
1082 | m_location->setCurrentItem( count ); | ||
1083 | } | ||
1084 | return true; | ||
1085 | } | 947 | } |
1086 | return false; | ||
1087 | } | ||
1088 | |||
1089 | void OFileSelector::insertLocationPath(const QString ¤tPath, int count) { | ||
1090 | QStringList pathList; | ||
1091 | bool underDog = FALSE; | ||
1092 | for(int i=0;i<count;i++) { | ||
1093 | pathList << m_location->text(i); | ||
1094 | if( m_location->text(i) == currentPath) | ||
1095 | underDog = TRUE; | ||
1096 | } | ||
1097 | if( !underDog) { | ||
1098 | m_location->clear(); | ||
1099 | if( currentPath.left(2)=="//") | ||
1100 | pathList.append( currentPath.right(currentPath.length()-1) ); | ||
1101 | else | ||
1102 | pathList.append( currentPath ); | ||
1103 | m_location->insertStringList( pathList,-1); | ||
1104 | } | ||
1105 | } | ||
1106 | |||
1107 | void OFileSelector::slotChangedDir() | 948 | void OFileSelector::slotChangedDir() |
1108 | { | 949 | { |
1109 | OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); | 950 | OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); |
1110 | if(sel->isDir() ){ | 951 | if(sel->isDir() ){ |
1111 | QStringList str = QStringList::split("->", sel->text(1) ); | 952 | QStringList str = QStringList::split("->", sel->text(1) ); |
1112 | cd( sel->directory() + "/" + str[0] ); | 953 | cd( sel->directory() + "/" + str[0].stripWhiteSpace() ); |
1113 | |||
1114 | } | 954 | } |
1115 | } | 955 | } |
1116 | |||
1117 | void OFileSelector::slotOpen() | 956 | void OFileSelector::slotOpen() |
1118 | { | 957 | { |
1119 | OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); | 958 | OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); |
1120 | if(!sel->isDir() ){ | 959 | if(!sel->isDir() ){ |
1121 | QStringList str = QStringList::split("->", sel->text(1) ); | 960 | QStringList str = QStringList::split("->", sel->text(1) ); |
1122 | slotFileSelected( str[0] ); | 961 | slotFileSelected( sel->directory() +"/" +str[0].stripWhiteSpace() ); |
1123 | } | 962 | } |
1124 | } | 963 | } |
1125 | |||
1126 | void OFileSelector::slotRescan() | 964 | void OFileSelector::slotRescan() |
1127 | { | 965 | { |
1128 | reparse(); | ||
1129 | } | ||
1130 | 966 | ||
967 | } | ||
1131 | void OFileSelector::slotRename() | 968 | void OFileSelector::slotRename() |
1132 | { | 969 | { |
1133 | // rename inline | 970 | reparse(); |
1134 | } | 971 | } |
1135 | |||
1136 | void OFileSelector::slotDelete() | 972 | void OFileSelector::slotDelete() |
1137 | { | 973 | { |
1138 | // qWarning("delete slot" ); | ||
1139 | OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); | 974 | OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); |
1140 | QStringList list = QStringList::split("->", sel->text(1) ); | 975 | QStringList list = QStringList::split("->", sel->text(1) ); |
1141 | if( sel->isDir() ){ | 976 | if( sel->isDir() ){ |
1142 | QString str = QString::fromLatin1("rm -rf ") + list[0]; //better safe than sorry | 977 | QString str = QString::fromLatin1("rm -rf ") + sel->directory() +"/" + list[0]; //better safe than sorry |
1143 | switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+list[0], | 978 | switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+list[0], |
1144 | tr("Yes"),tr("No"),0,1,1) ) { | 979 | tr("Yes"),tr("No"),0,1,1) ) { |
1145 | case 0: | 980 | case 0: |
@@ -1152,7 +987,6 @@ void OFileSelector::slotDelete() | |||
1152 | m_View->takeItem( sel ); | 987 | m_View->takeItem( sel ); |
1153 | delete sel; | 988 | delete sel; |
1154 | } | 989 | } |
1155 | |||
1156 | void OFileSelector::cdUP() | 990 | void OFileSelector::cdUP() |
1157 | { | 991 | { |
1158 | QDir dir( m_currentDir ); | 992 | QDir dir( m_currentDir ); |
@@ -1161,34 +995,139 @@ void OFileSelector::cdUP() | |||
1161 | m_currentDir = dir.absPath(); | 995 | m_currentDir = dir.absPath(); |
1162 | reparse(); | 996 | reparse(); |
1163 | int count = m_location->count(); | 997 | int count = m_location->count(); |
1164 | insertLocationPath( m_currentDir, count); | 998 | slotInsertLocationPath( m_currentDir, count); |
1165 | m_location->setCurrentItem( indexByString( m_location, m_currentDir)); | 999 | m_location->setCurrentItem( indexByString( m_location, m_currentDir)); |
1166 | //this wont work in all instances | 1000 | //this wont work in all instances |
1167 | // FIXME | 1001 | // FIXME |
1168 | } | 1002 | } |
1169 | } | 1003 | } |
1170 | |||
1171 | void OFileSelector::slotHome() | 1004 | void OFileSelector::slotHome() |
1172 | { | 1005 | { |
1173 | cd(QDir::homeDirPath() ); | 1006 | cd(QDir::homeDirPath() ); |
1174 | } | 1007 | } |
1175 | |||
1176 | void OFileSelector::slotDoc() | 1008 | void OFileSelector::slotDoc() |
1177 | { | 1009 | { |
1178 | cd(QDir::homeDirPath() + "/Documents" ); | 1010 | cd(QPEApplication::documentDir() ); |
1179 | } | 1011 | } |
1180 | |||
1181 | void OFileSelector::slotNavigate() | 1012 | void OFileSelector::slotNavigate() |
1182 | { | 1013 | { |
1183 | 1014 | ||
1184 | } | 1015 | } |
1016 | // fill the View with life | ||
1017 | void OFileSelector::reparse() | ||
1018 | { | ||
1019 | if( m_selector == NORMAL ) | ||
1020 | return; | ||
1021 | if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ) | ||
1022 | m_View->clear(); | ||
1023 | else // custom view | ||
1024 | ; // currentView()->clear(); | ||
1025 | if( m_shChooser) | ||
1026 | qWarning("reparse %s", m_mimeCheck->currentText().latin1() ); | ||
1185 | 1027 | ||
1186 | void OFileSelector::locationComboActivated(const QString & file ) { | 1028 | QString currentMimeType; |
1187 | cd(file.left(file.find("<-",0,TRUE))); | 1029 | // let's update the mimetype |
1188 | reparse(); | 1030 | if( m_autoMime ){ |
1031 | m_mimetypes.clear(); | ||
1032 | // ok we can change mimetype so we need to be able to give a selection | ||
1033 | if( m_shChooser ) { | ||
1034 | currentMimeType = m_mimeCheck->currentText(); | ||
1035 | m_mimeCheck->clear(); | ||
1036 | |||
1037 | // let's find possible mimetypes | ||
1038 | QDir dir( m_currentDir ); | ||
1039 | dir.setFilter( QDir::Files | QDir::Readable ); | ||
1040 | dir.setSorting( QDir::Size ); | ||
1041 | const QFileInfoList *list = dir.entryInfoList(); | ||
1042 | QFileInfoListIterator it( *list ); | ||
1043 | QFileInfo *fi; | ||
1044 | while( (fi=it.current() ) ) { | ||
1045 | if( fi->extension() == QString::fromLatin1("desktop") ){ | ||
1046 | ++it; | ||
1047 | continue; | ||
1048 | } | ||
1049 | MimeType type( fi->absFilePath() ); | ||
1050 | if( !m_mimetypes.contains( type.id() ) ){ | ||
1051 | //qWarning("Type %s", type.id().latin1() ); | ||
1052 | m_mimetypes.append( type.id() ); | ||
1189 | } | 1053 | } |
1190 | 1054 | ||
1191 | void OFileSelector::locationComboChanged() { | 1055 | ++it; |
1192 | cd( m_location->lineEdit()->text()); | 1056 | } |
1193 | reparse(); | 1057 | // add them to the chooser |
1058 | m_mimeCheck->insertItem( tr("All") ); | ||
1059 | m_mimeCheck->insertStringList( m_mimetypes ); | ||
1060 | m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currentMimeType ) ); | ||
1061 | currentMimeType = m_mimeCheck->currentText(); | ||
1062 | } | ||
1063 | }else { // no autoMime | ||
1064 | currentMimeType = m_mimetypes.join(";"); | ||
1065 | if( m_shChooser ){ | ||
1066 | m_mimeCheck->clear(); | ||
1067 | m_mimeCheck->insertItem(m_mimetypes.join(",") ); | ||
1068 | } | ||
1069 | } | ||
1070 | // now we got our mimetypes we can add the files | ||
1071 | |||
1072 | QDir dir( m_currentDir ); | ||
1073 | |||
1074 | int sort; | ||
1075 | if ( m_case ) | ||
1076 | sort = (QDir::IgnoreCase | QDir::Name | QDir::DirsFirst | QDir::Reversed); | ||
1077 | else | ||
1078 | sort = (QDir::Name | QDir::DirsFirst | QDir::Reversed); | ||
1079 | dir.setSorting( sort ); | ||
1080 | |||
1081 | int filter; | ||
1082 | if( m_selector == EXTENDED_ALL /*|| m_selector ==CUSTOM_ALL */ ){ | ||
1083 | filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; | ||
1084 | }else | ||
1085 | filter = QDir::Files | QDir::Dirs | QDir::All; | ||
1086 | dir.setFilter( filter ); | ||
1087 | |||
1088 | // now go through all files | ||
1089 | const QFileInfoList *list = dir.entryInfoList(); | ||
1090 | QFileInfoListIterator it( *list ); | ||
1091 | QFileInfo *fi; | ||
1092 | while( (fi=it.current() ) ){ | ||
1093 | //qWarning("True and only" ); | ||
1094 | if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){ | ||
1095 | //qWarning(".. or ." ); | ||
1096 | ++it; | ||
1097 | continue; | ||
1098 | } | ||
1099 | if( fi->isSymLink() ){ | ||
1100 | QString file = fi->dirPath( true ) + "/" + fi->readLink(); | ||
1101 | for( int i = 0; i<=4; i++) { // 5 tries to prevent dos | ||
1102 | QFileInfo info( file ); | ||
1103 | if( !info.exists() ){ | ||
1104 | addSymlink( currentMimeType, fi, TRUE ); | ||
1105 | break; | ||
1106 | }else if( info.isDir() ){ | ||
1107 | addDir( currentMimeType, fi, TRUE ); | ||
1108 | break; | ||
1109 | }else if( info.isFile() ){ | ||
1110 | addFile( currentMimeType, fi, TRUE ); | ||
1111 | break; | ||
1112 | }else if( info.isSymLink() ){ | ||
1113 | file = info.dirPath(true ) + "/" + info.readLink() ; | ||
1114 | break; | ||
1115 | }else if( i == 4){ | ||
1116 | addSymlink( currentMimeType, fi ); | ||
1117 | } | ||
1118 | } // off for loop | ||
1119 | }else if( fi->isDir() ){ | ||
1120 | addDir( currentMimeType, fi ); | ||
1121 | }else if( fi->isFile() ){ | ||
1122 | addFile( currentMimeType, fi ); | ||
1123 | } | ||
1124 | //qWarning( "%s", fi->fileName().latin1() ); | ||
1125 | ++it; | ||
1126 | } // of while loop | ||
1127 | m_View->sort(); | ||
1128 | if( m_shTool ){ | ||
1129 | m_location->insertItem( m_currentDir ); | ||
1130 | |||
1131 | } | ||
1132 | // reenable painting and updates | ||
1194 | } | 1133 | } |
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h index 5c38ac4..47697b9 100644 --- a/libopie/ofileselector.h +++ b/libopie/ofileselector.h | |||
@@ -63,6 +63,7 @@ class QHBoxLayout; | |||
63 | class QVBoxLayout; | 63 | class QVBoxLayout; |
64 | class QPopupMenu; | 64 | class QPopupMenu; |
65 | class QFileInfo; | 65 | class QFileInfo; |
66 | class QHBox; | ||
66 | // | 67 | // |
67 | 68 | ||
68 | 69 | ||
@@ -81,17 +82,17 @@ class OFileSelector : public QWidget { | |||
81 | 82 | ||
82 | OFileSelector(const QString &mimeFilter, QWidget *parent, | 83 | OFileSelector(const QString &mimeFilter, QWidget *parent, |
83 | const char *name, bool newVisible = TRUE, | 84 | const char *name, bool newVisible = TRUE, |
84 | bool closeVisible = FALSE ) { }; | 85 | bool closeVisible = FALSE ); |
85 | 86 | ||
86 | ~OFileSelector() {}; | 87 | ~OFileSelector(); |
87 | 88 | ||
88 | // currently only for the FILESELECTOR Mode | 89 | // currently only for the FILESELECTOR Mode |
89 | void setNewVisible( bool /*b*/ ) { }; | 90 | void setNewVisible( bool /*b*/ ); |
90 | void setCloseVisible(bool /*b*/ ) { }; | 91 | void setCloseVisible(bool /*b*/ ); |
91 | 92 | ||
92 | // end file selector mode | 93 | // end file selector mode |
93 | // deprecated | 94 | // deprecated |
94 | void reread() { reparse(); }; | 95 | void reread(); |
95 | // make sure not to leak please | 96 | // make sure not to leak please |
96 | const DocLnk *selected(); | 97 | const DocLnk *selected(); |
97 | // end deprecated | 98 | // end deprecated |
@@ -134,7 +135,7 @@ class OFileSelector : public QWidget { | |||
134 | void setShowPopup( bool pop ) { m_showPopup = pop; }; | 135 | void setShowPopup( bool pop ) { m_showPopup = pop; }; |
135 | void setPopupMenu( QPopupMenu * ); | 136 | void setPopupMenu( QPopupMenu * ); |
136 | 137 | ||
137 | void updateLay(); | 138 | // void updateLay(); |
138 | 139 | ||
139 | void reparse(); // re reads the dir | 140 | void reparse(); // re reads the dir |
140 | 141 | ||
@@ -159,16 +160,19 @@ class OFileSelector : public QWidget { | |||
159 | void closeMe(); | 160 | void closeMe(); |
160 | void ok(); | 161 | void ok(); |
161 | void cancel(); | 162 | void cancel(); |
163 | void contextMenu(); | ||
162 | 164 | ||
163 | protected slots: | 165 | private slots: |
166 | void slotTest() { qWarning("slotTest" ); setLineEditVisible(false ); }; | ||
164 | void slotOk(); | 167 | void slotOk(); |
165 | void slotCancel(); | 168 | void slotCancel(); |
166 | void slotViewCheck(const QString & ); | 169 | void slotViewCheck(const QString & ); |
167 | void slotMimeCheck(const QString & ); | 170 | void slotMimeCheck(const QString & ); |
168 | void locationComboActivated(const QString & ); | 171 | void slotLocationActivated(const QString & ); |
169 | void insertLocationPath(const QString &, int); | 172 | void slotInsertLocationPath(const QString &, int); |
170 | void locationComboChanged(); | 173 | void locationComboChanged(); |
171 | protected: | 174 | |
175 | private: | ||
172 | void init(); | 176 | void init(); |
173 | void updateMimes(); | 177 | void updateMimes(); |
174 | 178 | ||
@@ -178,7 +182,7 @@ class OFileSelector : public QWidget { | |||
178 | int m_mode, m_selector; | 182 | int m_mode, m_selector; |
179 | QComboBox *m_location, *m_mimeCheck, *m_viewCheck; | 183 | QComboBox *m_location, *m_mimeCheck, *m_viewCheck; |
180 | QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel; | 184 | QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel; |
181 | QPushButton *m_reread, *m_up; | 185 | QPushButton *m_reread, *m_up, *m_new, *m_close; |
182 | QListView *m_View; | 186 | QListView *m_View; |
183 | QCheckBox *m_checkPerm; | 187 | QCheckBox *m_checkPerm; |
184 | QWidget *m_pseudo; | 188 | QWidget *m_pseudo; |
@@ -186,17 +190,17 @@ class OFileSelector : public QWidget { | |||
186 | 190 | ||
187 | QString m_currentDir; | 191 | QString m_currentDir; |
188 | QString m_name; | 192 | QString m_name; |
189 | QStringList m_mimetypes, requestedMimeTypesList; | 193 | QStringList m_mimetypes; |
190 | 194 | ||
191 | FileSelector *m_select; | 195 | FileSelector *m_select; |
192 | QWidgetStack *m_stack; | 196 | QWidgetStack *m_stack; |
193 | QVBoxLayout *m_lay; | 197 | QVBoxLayout *m_lay; |
194 | QGridLayout *m_Oselector; | 198 | QGridLayout *m_Oselector; |
195 | 199 | ||
196 | QHBoxLayout *m_boxToolbar; | 200 | QHBox *m_boxToolbar; |
197 | QHBoxLayout *m_boxOk; | 201 | QHBox *m_boxOk; // (no layout anymore) wait |
198 | QHBoxLayout *m_boxName; | 202 | QHBox *m_boxName; // (no Layout anymore) wait |
199 | QHBoxLayout *m_boxView; | 203 | QHBox *m_boxView; |
200 | 204 | ||
201 | QPopupMenu *m_custom; | 205 | QPopupMenu *m_custom; |
202 | 206 | ||
@@ -217,7 +221,7 @@ class OFileSelector : public QWidget { | |||
217 | bool m_files : 1; | 221 | bool m_files : 1; |
218 | bool m_showPopup : 1; | 222 | bool m_showPopup : 1; |
219 | 223 | ||
220 | // implementation todo | 224 | void initVars(); |
221 | virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE ); | 225 | virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE ); |
222 | virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE ); | 226 | virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE ); |
223 | virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){}; | 227 | virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){}; |
@@ -226,6 +230,7 @@ class OFileSelector : public QWidget { | |||
226 | void initializeYes(); | 230 | void initializeYes(); |
227 | void initializeChooser(); | 231 | void initializeChooser(); |
228 | void initializeListView(); | 232 | void initializeListView(); |
233 | void initializePerm(); | ||
229 | void initPics(); | 234 | void initPics(); |
230 | bool compliesMime(const QString &path, const QString &mime); | 235 | bool compliesMime(const QString &path, const QString &mime); |
231 | 236 | ||