summaryrefslogtreecommitdiff
authorzecke <zecke>2002-04-12 13:24:38 (UTC)
committer zecke <zecke>2002-04-12 13:24:38 (UTC)
commite3443eef4d49c7e91369790c29dd3b15b5dba854 (patch) (unidiff)
treeb92f78798a247ecf3eec501c64f5f8c81dc043fe
parent3973cf42c778055ab81a9ee254eaf8829464f936 (diff)
downloadopie-e3443eef4d49c7e91369790c29dd3b15b5dba854.zip
opie-e3443eef4d49c7e91369790c29dd3b15b5dba854.tar.gz
opie-e3443eef4d49c7e91369790c29dd3b15b5dba854.tar.bz2
fix the crash
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/TODO1
-rw-r--r--libopie/ofileselector.cc10
2 files changed, 6 insertions, 5 deletions
diff --git a/libopie/TODO b/libopie/TODO
index a4e1ada..d49910c 100644
--- a/libopie/TODO
+++ b/libopie/TODO
@@ -1,19 +1,20 @@
1- xmltree done 1- xmltree done
2 2
3- tododb 3- tododb
4 - set Alarms 4 - set Alarms
5 - multiple categories 5 - multiple categories
6 - Attendees 6 - Attendees
7 7
8- OFileSelector 8- OFileSelector
9 - fix the weird view change bug delete m_pseudoLayout crash
9 - DocLnk when not in Document Mode ( and vice versa ) 10 - DocLnk when not in Document Mode ( and vice versa )
10 - MultipleDocuments 11 - MultipleDocuments
11 - TreeView have a own OFileSelectorItem for this 12 - TreeView have a own OFileSelectorItem for this
12 - IconView add a QIconView to the widgetstack 13 - IconView add a QIconView to the widgetstack
13 - Move OFileSelectorItem to it's own files 14 - Move OFileSelectorItem to it's own files
14 - add functions to access the member variables 15 - add functions to access the member variables
15 - debug 16 - debug
16 - new Dirs created inside the listview 17 - new Dirs created inside the listview
17 18
18- Clickable labels? 19- Clickable labels?
19 Harlekin you wanted them in the libs? \ No newline at end of file 20 Harlekin you wanted them in the libs? \ No newline at end of file
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index 7451c1b..968541a 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -1,1058 +1,1058 @@
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 Holger Freyther <zecke@handhelds.org> 3             .=l. Copyright (c) 2002 Holger Freyther <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#include <qnamespace.h> 29#include <qnamespace.h>
30#include <qpushbutton.h> 30#include <qpushbutton.h>
31#include <qcombobox.h> 31#include <qcombobox.h>
32#include <qhbox.h> 32#include <qhbox.h>
33#include <qvbox.h> 33#include <qvbox.h>
34#include <qlayout.h> 34#include <qlayout.h>
35#include <qwidgetstack.h> 35#include <qwidgetstack.h>
36#include <qlineedit.h> 36#include <qlineedit.h>
37#include <qcheckbox.h> 37#include <qcheckbox.h>
38#include <qlabel.h> 38#include <qlabel.h>
39#include <qheader.h> 39#include <qheader.h>
40#include <qdir.h> 40#include <qdir.h>
41#include <qpainter.h> 41#include <qpainter.h>
42#include <qaction.h> 42#include <qaction.h>
43#include <qpopupmenu.h> 43#include <qpopupmenu.h>
44#include <qcursor.h> 44#include <qcursor.h>
45 45
46#include <qpe/qpeapplication.h> 46#include <qpe/qpeapplication.h>
47#include <qpe/fileselector.h> 47#include <qpe/fileselector.h>
48#include <qpe/applnk.h> 48#include <qpe/applnk.h>
49#include <qpe/global.h> 49#include <qpe/global.h>
50#include <qpe/mimetype.h> 50#include <qpe/mimetype.h>
51#include <qpe/resource.h> 51#include <qpe/resource.h>
52#include <qpe/storage.h> 52#include <qpe/storage.h>
53 53
54#include <unistd.h> 54#include <unistd.h>
55#include <stdlib.h> 55#include <stdlib.h>
56#include <sys/stat.h> 56#include <sys/stat.h>
57 57
58#include "ofileselector.h" 58#include "ofileselector.h"
59 59
60QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0; 60QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0;
61 61
62namespace { 62namespace {
63 63
64 int indexByString( const QComboBox *box, const QString &str ){ 64 int indexByString( const QComboBox *box, const QString &str ){
65 int index= -1; 65 int index= -1;
66 for(int i= 0; i < box->count(); i++ ){ 66 for(int i= 0; i < box->count(); i++ ){
67 qWarning("str T%sT boxT%sT", str.latin1(), box->text(i).latin1() ); 67 qWarning("str T%sT boxT%sT", str.latin1(), box->text(i).latin1() );
68 if( str == box->text(i ) ){ 68 if( str == box->text(i ) ){
69 index= i; 69 index= i;
70 break; 70 break;
71 } 71 }
72 } 72 }
73 return index; 73 return index;
74 } 74 }
75 75
76}; 76};
77 77
78 78
79OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName, 79OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName,
80 const QString &fileName, const QStringList &mimetypes ) : QWidget( wid ) 80 const QString &fileName, const QStringList &mimetypes ) : QWidget( wid )
81{ 81{
82 if(wid!=0) 82 if(wid!=0)
83 resize(wid->width(),wid->height()); 83 resize(wid->width(),wid->height());
84 m_selector = selector; 84 m_selector = selector;
85 m_currentDir = dirName; 85 m_currentDir = dirName;
86 m_name = fileName; 86 m_name = fileName;
87 m_mimetypes = mimetypes; 87 m_mimetypes = mimetypes;
88 if( mimetypes.isEmpty() ) 88 if( mimetypes.isEmpty() )
89 m_autoMime = true; 89 m_autoMime = true;
90 90
91 m_mode = mode; 91 m_mode = mode;
92 m_shTool = true; 92 m_shTool = true;
93 m_shPerm = true; 93 m_shPerm = true;
94 m_shLne = true; 94 m_shLne = true;
95 m_shChooser = true; 95 m_shChooser = true;
96 m_shYesNo = true; 96 m_shYesNo = true;
97 // for FILESELECTOR only view is interesting 97 // for FILESELECTOR only view is interesting
98 m_location = 0; 98 m_location = 0;
99 m_homeButton = 0; 99 m_homeButton = 0;
100 m_docButton = 0; 100 m_docButton = 0;
101 m_hideButton = 0; 101 m_hideButton = 0;
102 m_ok = 0; 102 m_ok = 0;
103 m_cancel = 0; 103 m_cancel = 0;
104 m_reread = 0; 104 m_reread = 0;
105 m_up = 0; 105 m_up = 0;
106 m_View = 0; 106 m_View = 0;
107 m_select = 0; 107 m_select = 0;
108 m_stack = 0; 108 m_stack = 0;
109 109
110 m_select = 0; 110 m_select = 0;
111 m_stack = 0; 111 m_stack = 0;
112 m_lay = 0; 112 m_lay = 0;
113 m_boxToolbar = 0; 113 m_boxToolbar = 0;
114 m_boxOk = 0; 114 m_boxOk = 0;
115 m_edit = 0; 115 m_edit = 0;
116 116
117 m_fnLabel = 0; 117 m_fnLabel = 0;
118 m_checkPerm = 0; 118 m_checkPerm = 0;
119 m_mimeCheck = 0; 119 m_mimeCheck = 0;
120 m_viewCheck = 0; 120 m_viewCheck = 0;
121 121
122 m_pseudo = 0; 122 m_pseudo = 0;
123 m_pseudoLayout = 0; 123 m_pseudoLayout = 0;
124 124
125 m_dir = true; 125 m_dir = true;
126 m_files = true; 126 m_files = true;
127 m_custom = 0; 127 m_custom = 0;
128 m_showPopup = true; 128 m_showPopup = true;
129 129
130 if(m_pixmaps == 0 ) // init the pixmaps 130 if(m_pixmaps == 0 ) // init the pixmaps
131 initPics(); 131 initPics();
132 132
133 m_lay = new QVBoxLayout(this); 133 m_lay = new QVBoxLayout(this);
134 init(); 134 init();
135 m_edit->setText( fileName ); 135 m_edit->setText( fileName );
136} 136}
137void OFileSelector::initPics() 137void OFileSelector::initPics()
138{ 138{
139 qWarning("init pics" ); 139 qWarning("init pics" );
140 m_pixmaps = new QMap<QString,QPixmap>; 140 m_pixmaps = new QMap<QString,QPixmap>;
141 QPixmap pm = Resource::loadPixmap( "folder" ); 141 QPixmap pm = Resource::loadPixmap( "folder" );
142 QPixmap lnk = Resource::loadPixmap( "symlink" ); 142 QPixmap lnk = Resource::loadPixmap( "symlink" );
143 QPainter painter( &pm ); 143 QPainter painter( &pm );
144 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); 144 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk );
145 pm.setMask( pm.createHeuristicMask( FALSE ) ); 145 pm.setMask( pm.createHeuristicMask( FALSE ) );
146 m_pixmaps->insert("dirsymlink", pm ); 146 m_pixmaps->insert("dirsymlink", pm );
147 147
148 QPixmap pm2 = Resource::loadPixmap( "lockedfolder" ); 148 QPixmap pm2 = Resource::loadPixmap( "lockedfolder" );
149 QPainter pen(&pm2 ); 149 QPainter pen(&pm2 );
150 pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk ); 150 pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk );
151 pm2.setMask( pm2.createHeuristicMask( FALSE ) ); 151 pm2.setMask( pm2.createHeuristicMask( FALSE ) );
152 m_pixmaps->insert("symlinkedlocked", pm2 ); 152 m_pixmaps->insert("symlinkedlocked", pm2 );
153 153
154}; 154};
155// let's initialize the gui 155// let's initialize the gui
156/** 156/**
157 -------------------- 157 --------------------
158 | cmbBox Button | 158 | cmbBox Button |
159 -------------------- 159 --------------------
160 | FileSlector | 160 | FileSlector |
161 | or | 161 | or |
162 | OSelector | 162 | OSelector |
163 | | 163 | |
164 | | 164 | |
165 ____________________ 165 ____________________
166 | LineEdit | 166 | LineEdit |
167 ____________________ 167 ____________________
168 | Permission Bar | 168 | Permission Bar |
169 ____________________ 169 ____________________
170 | ViewChoose | 170 | ViewChoose |
171 ____________________ 171 ____________________
172 | Save Cancel| 172 | Save Cancel|
173 ____________________ 173 ____________________
174 */ 174 */
175void OFileSelector::delItems() 175void OFileSelector::delItems()
176{ 176{
177 QLayoutIterator it = m_lay->iterator(); 177 QLayoutIterator it = m_lay->iterator();
178 while ( it.current() != 0 ){ 178 while ( it.current() != 0 ){
179 it.deleteCurrent(); 179 it.deleteCurrent();
180 } 180 }
181} 181}
182void OFileSelector::init() 182void OFileSelector::init()
183{ 183{
184 184
185 m_stack = new QWidgetStack(this, "wstack" ); 185 m_stack = new QWidgetStack(this, "wstack" );
186 if( m_selector == NORMAL ){ 186 if( m_selector == NORMAL ){
187 QString currMime; 187 QString currMime;
188 if( m_mimeCheck != 0 ) 188 if( m_mimeCheck != 0 )
189 currMime = m_mimeCheck->currentText(); 189 currMime = m_mimeCheck->currentText();
190 190
191 updateMimes(); 191 updateMimes();
192 m_select = new FileSelector( currMime == "All" ? QString::null : currMime , m_stack, "fileselector", FALSE, FALSE ); 192 m_select = new FileSelector( currMime == "All" ? QString::null : currMime , m_stack, "fileselector", FALSE, FALSE );
193 m_stack->addWidget(m_select, NORMAL ); 193 m_stack->addWidget(m_select, NORMAL );
194 m_lay->addWidget(m_stack ); 194 m_lay->addWidget(m_stack );
195 m_stack->raiseWidget(NORMAL ); 195 m_stack->raiseWidget(NORMAL );
196 connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) ); 196 connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) );
197 m_pseudoLayout = 0l; 197 m_pseudoLayout = 0l;
198 }else { 198 }else {
199 initializeListView(); 199 initializeListView();
200 } 200 }
201 201
202 if(m_shLne ){ 202 if(m_shLne ){
203 initializeName(); 203 initializeName();
204 } 204 }
205 205
206 if(m_shPerm ){ 206 if(m_shPerm ){
207 m_checkPerm = new QCheckBox(tr("Set Permission"), this, "Permission" ); 207 m_checkPerm = new QCheckBox(tr("Set Permission"), this, "Permission" );
208 m_checkPerm->setChecked( false ); 208 m_checkPerm->setChecked( false );
209 m_lay->addWidget(m_checkPerm ); 209 m_lay->addWidget(m_checkPerm );
210 } 210 }
211 211
212 if( m_shChooser ) 212 if( m_shChooser )
213 initializeChooser(); 213 initializeChooser();
214 214
215 if(m_shYesNo ) 215 if(m_shYesNo )
216 initializeYes(); 216 initializeYes();
217 217
218 218
219}; 219};
220 220
221void OFileSelector::setYesCancelVisible( bool show ) 221void OFileSelector::setYesCancelVisible( bool show )
222{ 222{
223 if ( show == m_shYesNo ) 223 if ( show == m_shYesNo )
224 return; 224 return;
225 m_shYesNo = show; 225 m_shYesNo = show;
226 if( !show ){ 226 if( !show ){
227 delete m_ok; 227 delete m_ok;
228 delete m_cancel; 228 delete m_cancel;
229 m_ok = 0; 229 m_ok = 0;
230 m_cancel = 0; 230 m_cancel = 0;
231 // delete m_boxOk; all ready deleted in delItems 231 // delete m_boxOk; all ready deleted in delItems
232 } 232 }
233 updateLay(); // recreate it and save the other states 233 updateLay(); // recreate it and save the other states
234} 234}
235 235
236void OFileSelector::setToolbarVisible( bool show ) 236void OFileSelector::setToolbarVisible( bool show )
237{ 237{
238 if ( m_shTool == show ) 238 if ( m_shTool == show )
239 return; 239 return;
240 if(!m_shTool ){ 240 if(!m_shTool ){
241 delete m_boxToolbar; 241 delete m_boxToolbar;
242 delete m_homeButton; 242 delete m_homeButton;
243 delete m_docButton; 243 delete m_docButton;
244 delete m_location; 244 delete m_location;
245 delete m_up; 245 delete m_up;
246 m_boxToolbar = 0; 246 m_boxToolbar = 0;
247 m_homeButton = 0; 247 m_homeButton = 0;
248 m_docButton = 0; 248 m_docButton = 0;
249 m_location = 0; 249 m_location = 0;
250 m_up = 0; 250 m_up = 0;
251 }; 251 };
252 updateLay();// overkill fix it 252 updateLay();// overkill fix it
253} 253}
254 254
255void OFileSelector::setPermissionBarVisible( bool show ) 255void OFileSelector::setPermissionBarVisible( bool show )
256{ 256{
257 if( show == m_shPerm ) 257 if( show == m_shPerm )
258 return; 258 return;
259 259
260 m_shPerm = show; 260 m_shPerm = show;
261 261
262 updateLay(); 262 updateLay();
263} 263}
264void OFileSelector::setLineEditVisible( bool show ) 264void OFileSelector::setLineEditVisible( bool show )
265{ 265{
266 if( show == m_shLne ) 266 if( show == m_shLne )
267 return; 267 return;
268 268
269 m_shLne = show; 269 m_shLne = show;
270 if( !show ){ 270 if( !show ){
271 delete m_edit; 271 delete m_edit;
272 delete m_fnLabel; 272 delete m_fnLabel;
273 m_edit = 0; 273 m_edit = 0;
274 m_fnLabel = 0; 274 m_fnLabel = 0;
275 //delete m_boxName; will be deleted 275 //delete m_boxName; will be deleted
276 } 276 }
277 updateLay(); 277 updateLay();
278} 278}
279void OFileSelector::setChooserVisible( bool show ) 279void OFileSelector::setChooserVisible( bool show )
280{ 280{
281 if( show = m_shChooser ) 281 if( show = m_shChooser )
282 return; 282 return;
283 m_shChooser = show; 283 m_shChooser = show;
284 if( !show ){ 284 if( !show ){
285 delete m_mimeCheck; 285 delete m_mimeCheck;
286 delete m_viewCheck; 286 delete m_viewCheck;
287 m_mimeCheck = 0; 287 m_mimeCheck = 0;
288 m_viewCheck = 0; 288 m_viewCheck = 0;
289 } 289 }
290 updateLay(); 290 updateLay();
291} 291}
292QCheckBox* OFileSelector::permissionCheckbox( ) 292QCheckBox* OFileSelector::permissionCheckbox( )
293{ 293{
294 return m_checkPerm; 294 return m_checkPerm;
295} 295}
296void OFileSelector::setCaseSensetive( bool caSe ) 296void OFileSelector::setCaseSensetive( bool caSe )
297{ 297{
298 m_case = caSe; 298 m_case = caSe;
299 reparse(); 299 reparse();
300} 300}
301void OFileSelector::setShowFiles(bool files ){ 301void OFileSelector::setShowFiles(bool files ){
302 m_files = files; 302 m_files = files;
303 reparse(); 303 reparse();
304} 304}
305void OFileSelector::setPopupMenu(QPopupMenu *pop ) 305void OFileSelector::setPopupMenu(QPopupMenu *pop )
306{ 306{
307 //delete oldpopup; 307 //delete oldpopup;
308 m_custom = pop; 308 m_custom = pop;
309} 309}
310bool OFileSelector::setPermission( ) const 310bool OFileSelector::setPermission( ) const
311{ 311{
312 if( m_checkPerm == 0 ) 312 if( m_checkPerm == 0 )
313 return false; 313 return false;
314 else 314 else
315 return m_checkPerm->isChecked(); 315 return m_checkPerm->isChecked();
316} 316}
317void OFileSelector::setPermissionChecked( bool check ) 317void OFileSelector::setPermissionChecked( bool check )
318{ 318{
319 if( m_checkPerm == 0 ) 319 if( m_checkPerm == 0 )
320 return; 320 return;
321 m_checkPerm->setChecked( check ); 321 m_checkPerm->setChecked( check );
322} 322}
323QString OFileSelector::selectedName( )const 323QString OFileSelector::selectedName( )const
324{ 324{
325 QString string; 325 QString string;
326 if( m_selector == NORMAL ){ 326 if( m_selector == NORMAL ){
327 const DocLnk *lnk = m_select->selected(); 327 const DocLnk *lnk = m_select->selected();
328 string = lnk->file(); 328 string = lnk->file();
329 }else if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ) { 329 }else if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ) {
330 QListViewItem *item = m_View->currentItem(); 330 QListViewItem *item = m_View->currentItem();
331 if(item != 0 ){ 331 if(item != 0 ){
332 string = item->text( 1 ); 332 string = item->text( 1 );
333 } 333 }
334 } 334 }
335 return string; 335 return string;
336} 336}
337QStringList OFileSelector::selectedNames()const 337QStringList OFileSelector::selectedNames()const
338{ 338{
339 QStringList list; 339 QStringList list;
340 return list; 340 return list;
341} 341}
342DocLnk OFileSelector::selectedDocument( )const 342DocLnk OFileSelector::selectedDocument( )const
343{ 343{
344 DocLnk lnk; 344 DocLnk lnk;
345 return lnk; 345 return lnk;
346} 346}
347void OFileSelector::updateLay() 347void OFileSelector::updateLay()
348{ 348{
349 /* if( m_shTool ) 349 /* if( m_shTool )
350 // 350 //
351 else 351 else
352 // hide 352 // hide
353 */ 353 */
354 // save the state 354 // save the state
355 bool check = false; 355 bool check = false;
356 if( m_checkPerm != 0 ) 356 if( m_checkPerm != 0 )
357 check = m_checkPerm->isChecked(); 357 check = m_checkPerm->isChecked();
358 QString text; 358 QString text;
359 359
360 if( m_edit != 0 ) 360 if( m_edit != 0 )
361 text = m_edit->text(); 361 text = m_edit->text();
362 // save current mimetype 362 // save current mimetype
363 363
364 delItems(); 364 delItems();
365 delete m_checkPerm; 365 delete m_checkPerm;
366 m_checkPerm = 0; 366 m_checkPerm = 0;
367 delete m_edit; 367 delete m_edit;
368 m_edit = 0; 368 m_edit = 0;
369 delete m_fnLabel; 369 delete m_fnLabel;
370 m_fnLabel = 0; 370 m_fnLabel = 0;
371 delete m_ok; 371 delete m_ok;
372 m_ok = 0; 372 m_ok = 0;
373 delete m_cancel; 373 delete m_cancel;
374 m_cancel = 0; 374 m_cancel = 0;
375 delete m_mimeCheck; 375 delete m_mimeCheck;
376 m_mimeCheck = 0; 376 m_mimeCheck = 0;
377 delete m_viewCheck; 377 delete m_viewCheck;
378 m_viewCheck = 0; 378 m_viewCheck = 0;
379 delete m_select; // test 379 delete m_select; // test
380 delete m_stack; 380 delete m_stack;
381 //delete m_list; 381 //delete m_list;
382 init(); 382 init();
383 if( m_shLne ) 383 if( m_shLne )
384 m_edit->setText(text ); 384 m_edit->setText(text );
385 if( m_shPerm ) 385 if( m_shPerm )
386 m_checkPerm->setChecked(check ); 386 m_checkPerm->setChecked(check );
387} 387}
388// let's update the mimetypes. Use the current mimefilter for the 2nd QDir retrieve 388// let's update the mimetypes. Use the current mimefilter for the 2nd QDir retrieve
389// insert QListViewItems with the right options 389// insert QListViewItems with the right options
390bool OFileSelector::compliesMime(const QString &path, const QString &mime ) 390bool OFileSelector::compliesMime(const QString &path, const QString &mime )
391{ 391{
392 if( mime == "All" ) 392 if( mime == "All" )
393 return true; 393 return true;
394 MimeType type( path ); 394 MimeType type( path );
395 if( type.id() == mime ) 395 if( type.id() == mime )
396 return true; 396 return true;
397 return false; 397 return false;
398} 398}
399 399
400void OFileSelector::reparse() 400void OFileSelector::reparse()
401{ 401{
402 if(m_View== 0 || m_selector == NORMAL) 402 if(m_View== 0 || m_selector == NORMAL)
403 return; 403 return;
404 404
405 m_View->clear(); 405 m_View->clear();
406 406
407 407
408 QString currMime =m_mimeCheck->currentText(); 408 QString currMime =m_mimeCheck->currentText();
409 // update the mimetype now 409 // update the mimetype now
410 if( m_autoMime ) { 410 if( m_autoMime ) {
411 QDir dir( m_currentDir ); 411 QDir dir( m_currentDir );
412 m_mimetypes.clear(); 412 m_mimetypes.clear();
413 m_mimeCheck->clear(); 413 m_mimeCheck->clear();
414 dir.setFilter( QDir::Files | QDir::Readable ); 414 dir.setFilter( QDir::Files | QDir::Readable );
415 dir.setSorting(QDir::Size ); 415 dir.setSorting(QDir::Size );
416 const QFileInfoList *list = dir.entryInfoList(); 416 const QFileInfoList *list = dir.entryInfoList();
417 QFileInfoListIterator it( *list ); 417 QFileInfoListIterator it( *list );
418 QFileInfo *fi; 418 QFileInfo *fi;
419 while( (fi=it.current()) ){ 419 while( (fi=it.current()) ){
420 if(fi->extension() == QString::fromLatin1("desktop") ){ 420 if(fi->extension() == QString::fromLatin1("desktop") ){
421 ++it; 421 ++it;
422 continue; 422 continue;
423 } 423 }
424 MimeType type(fi->filePath() ); 424 MimeType type(fi->filePath() );
425 if( !m_mimetypes.contains( type.id() ) ) 425 if( !m_mimetypes.contains( type.id() ) )
426 m_mimetypes.append( type.id() ); 426 m_mimetypes.append( type.id() );
427 427
428 ++it; 428 ++it;
429 } 429 }
430 m_mimetypes.prepend("All" ); 430 m_mimetypes.prepend("All" );
431 m_mimeCheck->insertStringList(m_mimetypes ); 431 m_mimeCheck->insertStringList(m_mimetypes );
432 // set it to the current mimetype 432 // set it to the current mimetype
433 m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currMime ) ); 433 m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currMime ) );
434 }; 434 };
435 QDir dir( m_currentDir ); 435 QDir dir( m_currentDir );
436 //dir.setFilter(-1 ); 436 //dir.setFilter(-1 );
437 int sort = QDir::Name | QDir::DirsFirst | QDir::Reversed; 437 int sort = QDir::Name | QDir::DirsFirst | QDir::Reversed;
438 if( m_case ) 438 if( m_case )
439 sort = QDir::IgnoreCase; 439 sort = QDir::IgnoreCase;
440 dir.setSorting( sort ); 440 dir.setSorting( sort );
441 441
442 int filter; 442 int filter;
443 /* if( m_dir && !m_files) 443 /* if( m_dir && !m_files)
444 filter |= QDir::Dirs; 444 filter |= QDir::Dirs;
445 else if( !m_dir && m_files ) 445 else if( !m_dir && m_files )
446 filter |= QDir::Files; 446 filter |= QDir::Files;
447 else 447 else
448 filter |= QDir::All; 448 filter |= QDir::All;
449 */ 449 */
450 if( m_selector == EXTENDED_ALL ) 450 if( m_selector == EXTENDED_ALL )
451 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; 451 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
452 else 452 else
453 filter = QDir::Files | QDir::Dirs | QDir::All; 453 filter = QDir::Files | QDir::Dirs | QDir::All;
454 dir.setFilter( filter ); 454 dir.setFilter( filter );
455 455
456 const QFileInfoList *list = dir.entryInfoList(); 456 const QFileInfoList *list = dir.entryInfoList();
457 QFileInfoListIterator it( *list ); 457 QFileInfoListIterator it( *list );
458 QFileInfo *fi; 458 QFileInfo *fi;
459 while( (fi=it.current()) ){ 459 while( (fi=it.current()) ){
460 if(fi->fileName() == ".." || fi->fileName() == "." ){ 460 if(fi->fileName() == ".." || fi->fileName() == "." ){
461 ++it; 461 ++it;
462 continue; 462 continue;
463 } 463 }
464 qWarning("Test: %s", fi->fileName().latin1() ); 464 qWarning("Test: %s", fi->fileName().latin1() );
465 if(fi->isSymLink() ){ 465 if(fi->isSymLink() ){
466 qWarning("Symlink %s", fi->fileName().latin1() ); 466 qWarning("Symlink %s", fi->fileName().latin1() );
467 QString file = fi->dirPath(true)+"/"+ fi->readLink(); 467 QString file = fi->dirPath(true)+"/"+ fi->readLink();
468 qWarning("File ->%s", file.latin1() ); 468 qWarning("File ->%s", file.latin1() );
469 for(int i=0; i<=4; i++ ){ // prepend from dos 469 for(int i=0; i<=4; i++ ){ // prepend from dos
470 QFileInfo info( file ); 470 QFileInfo info( file );
471 if( !info.exists() ){ 471 if( !info.exists() ){
472 qWarning("does not exist" ); 472 qWarning("does not exist" );
473 addSymlink(currMime, fi, TRUE ); 473 addSymlink(currMime, fi, TRUE );
474 break; 474 break;
475 }else if( info.isDir() ){ 475 }else if( info.isDir() ){
476 qWarning("isDir" ); 476 qWarning("isDir" );
477 addDir(currMime, fi, TRUE ); 477 addDir(currMime, fi, TRUE );
478 break; 478 break;
479 }else if( info.isFile() ){ 479 }else if( info.isFile() ){
480 qWarning("isFile" ); 480 qWarning("isFile" );
481 addFile(currMime, fi, TRUE ); 481 addFile(currMime, fi, TRUE );
482 break; 482 break;
483 }else if( info.isSymLink() ){ 483 }else if( info.isSymLink() ){
484 file = info.dirPath(true)+ "/"+ info.readLink(); 484 file = info.dirPath(true)+ "/"+ info.readLink();
485 qWarning("isSymlink again %s", file.latin1() ); 485 qWarning("isSymlink again %s", file.latin1() );
486 }else if( i == 4 ){ // just insert it and have the symlink symbol 486 }else if( i == 4 ){ // just insert it and have the symlink symbol
487 addSymlink(currMime, fi ); 487 addSymlink(currMime, fi );
488 qWarning("level too deep" ); 488 qWarning("level too deep" );
489 } 489 }
490 } 490 }
491 }else if( fi->isDir() ){ 491 }else if( fi->isDir() ){
492 addDir(currMime, fi ); 492 addDir(currMime, fi );
493 }else if( fi->isFile() ) { // file ? 493 }else if( fi->isFile() ) { // file ?
494 addFile(currMime, fi ); 494 addFile(currMime, fi );
495 } 495 }
496 ++it; 496 ++it;
497 } 497 }
498 m_View->sort(); 498 m_View->sort();
499} 499}
500QString OFileSelector::directory()const 500QString OFileSelector::directory()const
501{ 501{
502 return m_currentDir; 502 return m_currentDir;
503} 503}
504int OFileSelector::fileCount() 504int OFileSelector::fileCount()
505{ 505{
506 return 0; 506 return 0;
507} 507}
508void OFileSelector::slotOk( ) 508void OFileSelector::slotOk( )
509{ 509{
510 emit ok(); 510 emit ok();
511} 511}
512void OFileSelector::slotCancel( ) 512void OFileSelector::slotCancel( )
513{ 513{
514 emit cancel(); 514 emit cancel();
515} 515}
516 516
517void OFileSelector::initializeName() 517void OFileSelector::initializeName()
518{ 518{
519 m_boxName = new QHBoxLayout(this ); 519 m_boxName = new QHBoxLayout(this );
520 m_edit = new QLineEdit(this ); 520 m_edit = new QLineEdit(this );
521 m_fnLabel = new QLabel(this ); 521 m_fnLabel = new QLabel(this );
522 m_fnLabel->setText(tr("Name:") ); 522 m_fnLabel->setText(tr("Name:") );
523 m_boxName->addWidget(m_fnLabel ); 523 m_boxName->addWidget(m_fnLabel );
524 m_boxName->insertSpacing(1, 8 ); 524 m_boxName->insertSpacing(1, 8 );
525 m_boxName->addWidget(m_edit, 100 ); 525 m_boxName->addWidget(m_edit, 100 );
526 526
527 m_lay->addLayout(m_boxName); 527 m_lay->addLayout(m_boxName);
528} 528}
529void OFileSelector::initializeYes() 529void OFileSelector::initializeYes()
530{ 530{
531 m_ok = new QPushButton("&Save", this, "save" ); 531 m_ok = new QPushButton("&Save", this, "save" );
532 m_cancel = new QPushButton("C&ancel", this, "cancel" ); 532 m_cancel = new QPushButton("C&ancel", this, "cancel" );
533 m_boxOk = new QHBoxLayout(this ); 533 m_boxOk = new QHBoxLayout(this );
534 m_boxOk->addWidget( m_ok, Qt::AlignHCenter ); 534 m_boxOk->addWidget( m_ok, Qt::AlignHCenter );
535 m_boxOk->insertSpacing(1, 8 ); 535 m_boxOk->insertSpacing(1, 8 );
536 m_boxOk->addWidget( m_cancel, Qt::AlignHCenter); 536 m_boxOk->addWidget( m_cancel, Qt::AlignHCenter);
537 m_lay->addLayout(m_boxOk ); 537 m_lay->addLayout(m_boxOk );
538 connect(m_ok, SIGNAL(clicked() ), 538 connect(m_ok, SIGNAL(clicked() ),
539 this, SLOT(slotOk() ) ); 539 this, SLOT(slotOk() ) );
540 connect(m_cancel, SIGNAL(clicked() ), 540 connect(m_cancel, SIGNAL(clicked() ),
541 this, SLOT(slotCancel() ) ); 541 this, SLOT(slotCancel() ) );
542 542
543} 543}
544void OFileSelector::initializeChooser() 544void OFileSelector::initializeChooser()
545{ 545{
546 m_boxView = new QHBoxLayout(this ); 546 m_boxView = new QHBoxLayout(this );
547 547
548 m_mimeCheck = new QComboBox(this, "mime check"); 548 m_mimeCheck = new QComboBox(this, "mime check");
549 m_viewCheck = new QComboBox(this, "view check"); 549 m_viewCheck = new QComboBox(this, "view check");
550 m_boxView->addWidget(m_viewCheck, 0 ); 550 m_boxView->addWidget(m_viewCheck, 0 );
551 m_boxView->insertSpacing(1, 8 ); 551 m_boxView->insertSpacing(1, 8 );
552 m_boxView->addWidget(m_mimeCheck, 0 ); 552 m_boxView->addWidget(m_mimeCheck, 0 );
553 m_lay->addLayout(m_boxView ); 553 m_lay->addLayout(m_boxView );
554 554
555 m_viewCheck->insertItem(tr("Documents") ); 555 m_viewCheck->insertItem(tr("Documents") );
556 m_viewCheck->insertItem(tr("Files") ); 556 m_viewCheck->insertItem(tr("Files") );
557 m_viewCheck->insertItem(tr("All Files") ); 557 m_viewCheck->insertItem(tr("All Files") );
558 558
559 if(!m_autoMime ) 559 if(!m_autoMime )
560 m_mimeCheck->insertItem(m_mimetypes.join("," ) ); 560 m_mimeCheck->insertItem(m_mimetypes.join("," ) );
561 else{ // check 561 else{ // check
562 updateMimes(); 562 updateMimes();
563 m_mimeCheck->insertStringList( m_mimetypes ); 563 m_mimeCheck->insertStringList( m_mimetypes );
564 } 564 }
565 565
566 connect( m_viewCheck, SIGNAL(activated(const QString &) ), 566 connect( m_viewCheck, SIGNAL(activated(const QString &) ),
567 this, SLOT(slotViewCheck(const QString & ) ) ); 567 this, SLOT(slotViewCheck(const QString & ) ) );
568 568
569 connect( m_mimeCheck, SIGNAL(activated(const QString &) ), 569 connect( m_mimeCheck, SIGNAL(activated(const QString &) ),
570 this, SLOT(slotMimeCheck(const QString & ) ) ); 570 this, SLOT(slotMimeCheck(const QString & ) ) );
571} 571}
572void OFileSelector::slotMimeCheck(const QString &view ){ 572void OFileSelector::slotMimeCheck(const QString &view ){
573 if(m_selector == NORMAL ){ 573 if(m_selector == NORMAL ){
574 delete m_select; 574 delete m_select;
575 m_select = new FileSelector(view == "All" ? QString::null : view 575 m_select = new FileSelector(view == "All" ? QString::null : view
576 , m_stack, "fileselector", FALSE, FALSE ); 576 , m_stack, "fileselector", FALSE, FALSE );
577 m_stack->addWidget( m_select, NORMAL ); 577 m_stack->addWidget( m_select, NORMAL );
578 m_stack->raiseWidget( NORMAL ); 578 m_stack->raiseWidget( NORMAL );
579 }else{ 579 }else{
580 reparse(); 580 reparse();
581 } 581 }
582} 582}
583 583
584void OFileSelector::slotViewCheck(const QString &view ){ 584void OFileSelector::slotViewCheck(const QString &view ){
585 qWarning("changed: show %s", view.latin1() ); 585 qWarning("changed: show %s", view.latin1() );
586 // if the current view is the one 586 // if the current view is the one
587 QString currMime = m_mimeCheck->currentText(); 587 QString currMime = m_mimeCheck->currentText();
588 if( view == QString::fromLatin1("Documents") ){ 588 if( view == QString::fromLatin1("Documents") ){
589 // get the mimetype now 589 // get the mimetype now
590 // check if we're the current widget and return 590 // check if we're the current widget and return
591 if( m_View != 0) { // delete 0 shouldn't crash but it did :( 591 if( m_View != 0) { // delete 0 shouldn't crash but it did :(
592 delete m_View; 592 delete m_View;
593 delete m_boxToolbar; 593 delete m_boxToolbar;
594 delete m_homeButton; 594 delete m_homeButton;
595 delete m_docButton; 595 delete m_docButton;
596 delete m_location; 596 delete m_location;
597 delete m_up; 597 delete m_up;
598 delete m_pseudo; 598 delete m_pseudo;
599 if(m_pseudoLayout!=0 ) 599 //if(m_pseudoLayout!=0 )
600 delete m_pseudoLayout; 600 //delete m_pseudoLayout;
601 } 601 }
602 m_View = 0; 602 m_View = 0;
603 m_boxToolbar = 0; 603 m_boxToolbar = 0;
604 m_homeButton = 0; 604 m_homeButton = 0;
605 m_docButton = 0; 605 m_docButton = 0;
606 m_location = 0; 606 m_location = 0;
607 m_up = 0; 607 m_up = 0;
608 m_pseudo = 0; 608 m_pseudo = 0;
609 m_pseudoLayout = 0; 609 m_pseudoLayout = 0;
610 610
611 delete m_select; 611 delete m_select;
612 m_select = new FileSelector( currMime == "All" ? QString::null : currMime, 612 m_select = new FileSelector( currMime == "All" ? QString::null : currMime,
613 m_stack,"fileselector", FALSE, FALSE ); 613 m_stack,"fileselector", FALSE, FALSE );
614 m_stack->addWidget( m_select, NORMAL ); 614 m_stack->addWidget( m_select, NORMAL );
615 m_mimeCheck->clear(); 615 m_mimeCheck->clear();
616 m_selector = NORMAL; 616 m_selector = NORMAL;
617 updateMimes(); 617 updateMimes();
618 m_mimeCheck->insertStringList( m_mimetypes ); 618 m_mimeCheck->insertStringList( m_mimetypes );
619 m_stack->raiseWidget( NORMAL ); 619 m_stack->raiseWidget( NORMAL );
620 connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) ); 620 connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) );
621 621
622 }else if(view == QString::fromLatin1("Files") ){ 622 }else if(view == QString::fromLatin1("Files") ){
623 // remove from the stack 623 // remove from the stack
624 delete m_select; 624 delete m_select;
625 m_select = 0; 625 m_select = 0;
626 delete m_View; 626 delete m_View;
627 m_View = 0; 627 m_View = 0;
628 628
629 629
630 630
631 m_selector = EXTENDED; 631 m_selector = EXTENDED;
632 // create the ListView or IconView 632 // create the ListView or IconView
633 initializeListView(); 633 initializeListView();
634 634
635 reparse(); 635 reparse();
636 }else if(view == QString::fromLatin1("All Files") ) { 636 }else if(view == QString::fromLatin1("All Files") ) {
637 // remove from the stack 637 // remove from the stack
638 delete m_select; 638 delete m_select;
639 m_select = 0; 639 m_select = 0;
640 delete m_View; 640 delete m_View;
641 m_View = 0; 641 m_View = 0;
642 642
643 m_selector = EXTENDED_ALL; 643 m_selector = EXTENDED_ALL;
644 initializeListView(); 644 initializeListView();
645 reparse(); 645 reparse();
646 }; 646 };
647}; 647};
648 648
649 649
650void OFileSelector::updateMimes() // lets check which mode is active 650void OFileSelector::updateMimes() // lets check which mode is active
651 // check the current dir for items then 651 // check the current dir for items then
652{ 652{
653 m_mimetypes.clear(); 653 m_mimetypes.clear();
654 m_mimetypes.append("All" ); 654 m_mimetypes.append("All" );
655 if( m_selector == NORMAL ){ 655 if( m_selector == NORMAL ){
656 DocLnkSet set; 656 DocLnkSet set;
657 Global::findDocuments(&set, QString::null ); 657 Global::findDocuments(&set, QString::null );
658 QListIterator<DocLnk> dit( set.children() ); 658 QListIterator<DocLnk> dit( set.children() );
659 for ( ; dit.current(); ++dit ) { 659 for ( ; dit.current(); ++dit ) {
660 if( !m_mimetypes.contains((*dit)->type() ) ) 660 if( !m_mimetypes.contains((*dit)->type() ) )
661 m_mimetypes.append( (*dit)->type() ); 661 m_mimetypes.append( (*dit)->type() );
662 } 662 }
663 }else{ 663 }else{
664 // should be allreday updatet 664 // should be allreday updatet
665 ; 665 ;
666 } 666 }
667}; 667};
668void OFileSelector::initializeListView() 668void OFileSelector::initializeListView()
669{ 669{
670 // just to make sure but clean it up better FIXME 670 // just to make sure but clean it up better FIXME
671 delete m_View; 671 delete m_View;
672 m_View = 0; 672 m_View = 0;
673 delete m_boxToolbar; 673 delete m_boxToolbar;
674 delete m_homeButton; 674 delete m_homeButton;
675 delete m_docButton; 675 delete m_docButton;
676 delete m_location; 676 delete m_location;
677 delete m_up; 677 delete m_up;
678 delete m_pseudo; 678 //delete m_pseudo;
679 if(m_pseudoLayout!=0 ) // why did you overload malloc 679 //if(m_pseudoLayout!=0 ) // why did you overload malloc
680 delete m_pseudoLayout; 680 //delete m_pseudoLayout;
681 m_boxToolbar = 0; 681 m_boxToolbar = 0;
682 m_homeButton = 0; 682 m_homeButton = 0;
683 m_docButton = 0; 683 m_docButton = 0;
684 m_location = 0; 684 m_location = 0;
685 m_up = 0; 685 m_up = 0;
686 m_pseudo = 0; 686 m_pseudo = 0;
687 m_pseudoLayout = 0; 687 m_pseudoLayout = 0;
688 // time for the toolbar 688 // time for the toolbar
689 m_pseudo = new QWidget(m_stack, "Pseudo Widget"); 689 m_pseudo = new QWidget(m_stack, "Pseudo Widget");
690 m_pseudoLayout = new QVBoxLayout(m_pseudo ); 690 m_pseudoLayout = new QVBoxLayout(m_pseudo );
691 if(m_shTool ){ 691 if(m_shTool ){
692 m_boxToolbar = new QHBoxLayout( ); 692 m_boxToolbar = new QHBoxLayout( );
693 m_boxToolbar->setAutoAdd( true ); 693 m_boxToolbar->setAutoAdd( true );
694 m_location = new QComboBox(m_pseudo ); 694 m_location = new QComboBox(m_pseudo );
695 695
696 m_up = new QPushButton(Resource::loadIconSet("up"),"", m_pseudo,"cdUpButton"); 696 m_up = new QPushButton(Resource::loadIconSet("up"),"", m_pseudo,"cdUpButton");
697 m_up->setMinimumSize( QSize( 20, 20 ) ); 697 m_up->setMinimumSize( QSize( 20, 20 ) );
698 m_up->setMaximumSize( QSize( 20, 20 ) ); 698 m_up->setMaximumSize( QSize( 20, 20 ) );
699 connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) ); 699 connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) );
700 m_up->setFlat(TRUE); 700 m_up->setFlat(TRUE);
701 701
702 m_homeButton = new QPushButton(Resource::loadIconSet("home") , "", m_pseudo); 702 m_homeButton = new QPushButton(Resource::loadIconSet("home") , "", m_pseudo);
703 m_homeButton->setMinimumSize( QSize( 20, 20 ) ); 703 m_homeButton->setMinimumSize( QSize( 20, 20 ) );
704 m_homeButton->setMaximumSize( QSize( 20, 20 ) ); 704 m_homeButton->setMaximumSize( QSize( 20, 20 ) );
705 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) ); 705 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) );
706 m_homeButton->setFlat(TRUE); 706 m_homeButton->setFlat(TRUE);
707 707
708 m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"", m_pseudo,"docsButton"); 708 m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"", m_pseudo,"docsButton");
709 m_docButton->setMinimumSize( QSize( 20, 20 ) ); 709 m_docButton->setMinimumSize( QSize( 20, 20 ) );
710 m_docButton->setMaximumSize( QSize( 20, 20 ) ); 710 m_docButton->setMaximumSize( QSize( 20, 20 ) );
711 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) ); 711 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) );
712 m_docButton->setFlat(TRUE); 712 m_docButton->setFlat(TRUE);
713 713
714 m_boxToolbar->addWidget(m_location ); 714 m_boxToolbar->addWidget(m_location );
715 m_boxToolbar->addWidget(m_up ); 715 m_boxToolbar->addWidget(m_up );
716 m_boxToolbar->addWidget(m_homeButton ); 716 m_boxToolbar->addWidget(m_homeButton );
717 m_boxToolbar->addWidget(m_docButton ); 717 m_boxToolbar->addWidget(m_docButton );
718 m_pseudoLayout->addLayout(m_boxToolbar ); 718 m_pseudoLayout->addLayout(m_boxToolbar );
719 // lets fill the combobox 719 // lets fill the combobox
720 StorageInfo storage; 720 StorageInfo storage;
721 const QList<FileSystem> &fs = storage.fileSystems(); 721 const QList<FileSystem> &fs = storage.fileSystems();
722 QListIterator<FileSystem> it ( fs ); 722 QListIterator<FileSystem> it ( fs );
723 for( ; it.current(); ++it ){ 723 for( ; it.current(); ++it ){
724 const QString disk = (*it)->name(); 724 const QString disk = (*it)->name();
725 const QString path = (*it)->path(); 725 const QString path = (*it)->path();
726 m_location->insertItem(path+ "<-"+disk ); 726 m_location->insertItem(path+ "<-"+disk );
727 } 727 }
728 int count = m_location->count(); 728 int count = m_location->count();
729 m_location->insertItem(m_currentDir ); 729 m_location->insertItem(m_currentDir );
730 m_location->setCurrentItem( count ); 730 m_location->setCurrentItem( count );
731 }; 731 };
732 m_View = new QListView(m_pseudo, "Extended view" ); 732 m_View = new QListView(m_pseudo, "Extended view" );
733 m_stack->addWidget( m_pseudo, EXTENDED ); 733 m_stack->addWidget( m_pseudo, EXTENDED );
734 m_stack->raiseWidget( EXTENDED ); 734 m_stack->raiseWidget( EXTENDED );
735 m_pseudoLayout->addWidget(m_View ); 735 m_pseudoLayout->addWidget(m_View );
736 QPEApplication::setStylusOperation( m_View->viewport(),QPEApplication::RightOnHold); 736 QPEApplication::setStylusOperation( m_View->viewport(),QPEApplication::RightOnHold);
737 // set up the stuff 737 // set up the stuff
738 // Pixmap Name Date Size mime 738 // Pixmap Name Date Size mime
739 //(m_View->header() )->hide(); 739 //(m_View->header() )->hide();
740 //m_View->setRootIsDecorated(false); 740 //m_View->setRootIsDecorated(false);
741 m_View->addColumn(" "); 741 m_View->addColumn(" ");
742 m_View->addColumn(tr("Name") ); 742 m_View->addColumn(tr("Name") );
743 m_View->addColumn(tr("Size") ); 743 m_View->addColumn(tr("Size") );
744 m_View->addColumn(tr("Date"), 60 ); 744 m_View->addColumn(tr("Date"), 60 );
745 m_View->addColumn(tr("Mime Type") ); 745 m_View->addColumn(tr("Mime Type") );
746 QHeader *header = m_View->header(); 746 QHeader *header = m_View->header();
747 header->hide(); 747 header->hide();
748 m_View->setSorting(1 ); 748 m_View->setSorting(1 );
749 // connect now 749 // connect now
750 connect(m_View, SIGNAL(selectionChanged() ), this, SLOT(slotSelectionChanged() ) ); 750 connect(m_View, SIGNAL(selectionChanged() ), this, SLOT(slotSelectionChanged() ) );
751 connect(m_View, SIGNAL(currentChanged(QListViewItem *) ), this, SLOT(slotCurrentChanged(QListViewItem * ) ) ); 751 connect(m_View, SIGNAL(currentChanged(QListViewItem *) ), this, SLOT(slotCurrentChanged(QListViewItem * ) ) );
752 connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ), 752 connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ),
753 this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) ); 753 this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
754 connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )), 754 connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )),
755 this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) ); 755 this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
756 756
757 757
758}; 758};
759/* If a item is locked depends on the mode 759/* If a item is locked depends on the mode
760 if we're in OPEN !isReadable is locked 760 if we're in OPEN !isReadable is locked
761 if we're in SAVE !isWriteable is locked 761 if we're in SAVE !isWriteable is locked
762 762
763 763
764 */ 764 */
765 765
766 766
767void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink ){ 767void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink ){
768 qWarning("Add Files" ); 768 qWarning("Add Files" );
769 if( !m_files ){ 769 if( !m_files ){
770 qWarning("not mfiles" ); 770 qWarning("not mfiles" );
771 return; 771 return;
772 } 772 }
773 773
774 MimeType type( info->filePath() ); 774 MimeType type( info->filePath() );
775 QString name; 775 QString name;
776 QString dir; 776 QString dir;
777 bool locked= false; 777 bool locked= false;
778 if(mime == "All" ){ 778 if(mime == "All" ){
779 ; 779 ;
780 }else if( type.id() != mime ) { 780 }else if( type.id() != mime ) {
781 return; 781 return;
782 } 782 }
783 QPixmap pix = type.pixmap(); 783 QPixmap pix = type.pixmap();
784 if(pix.isNull() ) 784 if(pix.isNull() )
785 pix = Resource::loadPixmap( "UnknownDocument-14" ); 785 pix = Resource::loadPixmap( "UnknownDocument-14" );
786 dir = info->dirPath( true ); 786 dir = info->dirPath( true );
787 if( symlink ) { // check if the readLink is readable 787 if( symlink ) { // check if the readLink is readable
788 // do it right later 788 // do it right later
789 name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink(); 789 name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink();
790 }else{ // keep track of the icons 790 }else{ // keep track of the icons
791 name = info->fileName(); 791 name = info->fileName();
792 if( m_mode == OPEN ){ 792 if( m_mode == OPEN ){
793 if( !info->isReadable() ){ 793 if( !info->isReadable() ){
794 locked = true; 794 locked = true;
795 pix = Resource::loadPixmap("locked" ); 795 pix = Resource::loadPixmap("locked" );
796 } 796 }
797 }else if( m_mode == SAVE ){ 797 }else if( m_mode == SAVE ){
798 if( !info->isWritable() ){ 798 if( !info->isWritable() ){
799 locked = true; 799 locked = true;
800 pix = Resource::loadPixmap("locked" ); 800 pix = Resource::loadPixmap("locked" );
801 } 801 }
802 } 802 }
803 } 803 }
804 new OFileSelectorItem( m_View, pix, name, 804 new OFileSelectorItem( m_View, pix, name,
805 info->lastModified().toString(), 805 info->lastModified().toString(),
806 QString::number( info->size() ), 806 QString::number( info->size() ),
807 dir, locked ); 807 dir, locked );
808} 808}
809void OFileSelector::addDir(const QString &mime, QFileInfo *info, bool symlink ) 809void OFileSelector::addDir(const QString &mime, QFileInfo *info, bool symlink )
810{ 810{
811 if(!m_dir ) 811 if(!m_dir )
812 return; 812 return;
813 //if( showDirs ) 813 //if( showDirs )
814 { 814 {
815 bool locked=false; 815 bool locked=false;
816 QString name; 816 QString name;
817 QPixmap pix; 817 QPixmap pix;
818 if( ( m_mode == OPEN && !info->isReadable() ) || ( m_mode == SAVE && !info->isWritable() ) ){ 818 if( ( m_mode == OPEN && !info->isReadable() ) || ( m_mode == SAVE && !info->isWritable() ) ){
819 locked = true; 819 locked = true;
820 if( symlink ){ 820 if( symlink ){
821 pix = (*m_pixmaps)["symlinkedlocked"]; 821 pix = (*m_pixmaps)["symlinkedlocked"];
822 }else{ 822 }else{
823 pix = Resource::loadPixmap("lockedfolder" ); 823 pix = Resource::loadPixmap("lockedfolder" );
824 } 824 }
825 }else{ 825 }else{
826 if( symlink ){ 826 if( symlink ){
827 pix = (*m_pixmaps)["dirsymlink" ]; 827 pix = (*m_pixmaps)["dirsymlink" ];
828 }else{ 828 }else{
829 pix = Resource::loadPixmap("folder" ); 829 pix = Resource::loadPixmap("folder" );
830 } 830 }
831 } 831 }
832 if( symlink){ 832 if( symlink){
833 name = info->fileName()+ "->"+ info->dirPath(true) +"/" +info->readLink(); 833 name = info->fileName()+ "->"+ info->dirPath(true) +"/" +info->readLink();
834 834
835 }else{ 835 }else{
836 //if(info->isReadable() ) 836 //if(info->isReadable() )
837 name = info->fileName(); 837 name = info->fileName();
838 } 838 }
839 839
840 new OFileSelectorItem(m_View, pix, 840 new OFileSelectorItem(m_View, pix,
841 name, info->lastModified().toString(), 841 name, info->lastModified().toString(),
842 QString::number(info->size() ),info->dirPath(true), locked, true ); 842 QString::number(info->size() ),info->dirPath(true), locked, true );
843 843
844 } 844 }
845} 845}
846void OFileSelector::setShowDirs(bool dir ) 846void OFileSelector::setShowDirs(bool dir )
847{ 847{
848 m_dir = dir; 848 m_dir = dir;
849 reparse(); 849 reparse();
850} 850}
851 851
852void OFileSelector::slotFileSelected(const QString &string ) 852void OFileSelector::slotFileSelected(const QString &string )
853{ 853{
854 if(m_shLne ) 854 if(m_shLne )
855 m_edit->setText( string ); 855 m_edit->setText( string );
856 856
857 emit fileSelected( string ); 857 emit fileSelected( string );
858 // do AppLnk stuff 858 // do AppLnk stuff
859} 859}
860void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk ) 860void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk )
861{ 861{
862 slotFileSelected(lnk.name() ); 862 slotFileSelected(lnk.name() );
863 emit fileSelected( lnk ); 863 emit fileSelected( lnk );
864} 864}
865void OFileSelector::slotSelectionChanged() // get the current items 865void OFileSelector::slotSelectionChanged() // get the current items
866 // fixme 866 // fixme
867{ 867{
868 qWarning("selection changed" ); 868 qWarning("selection changed" );
869} 869}
870void OFileSelector::slotCurrentChanged(QListViewItem *item ) 870void OFileSelector::slotCurrentChanged(QListViewItem *item )
871{ 871{
872 qWarning("current changed" ); 872 qWarning("current changed" );
873 if( item == 0 ) 873 if( item == 0 )
874 return; 874 return;
875 875
876 if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ 876 if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
877 OFileSelectorItem *sel = (OFileSelectorItem*)item; 877 OFileSelectorItem *sel = (OFileSelectorItem*)item;
878 if(!sel->isDir() ){ 878 if(!sel->isDir() ){
879 qWarning("is not dir" ); 879 qWarning("is not dir" );
880 if(m_shLne ){ 880 if(m_shLne ){
881 m_edit->setText(sel->text(1) ); 881 m_edit->setText(sel->text(1) );
882 qWarning("setTexy" ); 882 qWarning("setTexy" );
883 } 883 }
884 } 884 }
885 }else { 885 }else {
886 qWarning("mode not extended" ); 886 qWarning("mode not extended" );
887 } 887 }
888} 888}
889// either select or change dir 889// either select or change dir
890void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &point, int ) 890void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &point, int )
891{ 891{
892 if( item == 0 ) 892 if( item == 0 )
893 return; 893 return;
894 894
895 if( button != Qt::LeftButton ) 895 if( button != Qt::LeftButton )
896 return; 896 return;
897 897
898 qWarning("clicked" ); 898 qWarning("clicked" );
899 if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ 899 if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
900 qWarning("inside" ); 900 qWarning("inside" );
901 OFileSelectorItem *sel = (OFileSelectorItem*)item; 901 OFileSelectorItem *sel = (OFileSelectorItem*)item;
902 if(!sel->isLocked() ){ // not locked either changedir or open 902 if(!sel->isLocked() ){ // not locked either changedir or open
903 QStringList str = QStringList::split("->", sel->text(1) ); 903 QStringList str = QStringList::split("->", sel->text(1) );
904 if(sel->isDir() ){ 904 if(sel->isDir() ){
905 cd( sel->directory() + "/" + str[0] ); 905 cd( sel->directory() + "/" + str[0] );
906 }else{ 906 }else{
907 qWarning("file" ); 907 qWarning("file" );
908 if(m_shLne ) 908 if(m_shLne )
909 m_edit->setText(str[0] ); 909 m_edit->setText(str[0] );
910 emit fileSelected(str[0] ); 910 emit fileSelected(str[0] );
911 // emit DocLnk need to do it 911 // emit DocLnk need to do it
912 } 912 }
913 }else{ 913 }else{
914 qWarning( "locked" ); 914 qWarning( "locked" );
915 } 915 }
916 }; 916 };
917} 917}
918void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int ) 918void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int )
919{ 919{
920 if (item == 0 ) 920 if (item == 0 )
921 return; 921 return;
922 922
923 if( button != Qt::RightButton ) 923 if( button != Qt::RightButton )
924 return; 924 return;
925 qWarning("right button" ); 925 qWarning("right button" );
926 slotContextMenu(item); 926 slotContextMenu(item);
927} 927}
928void OFileSelector::slotContextMenu(QListViewItem *item) 928void OFileSelector::slotContextMenu(QListViewItem *item)
929{ 929{
930 qWarning("context menu" ); 930 qWarning("context menu" );
931 if( item ==0 || !m_showPopup ) 931 if( item ==0 || !m_showPopup )
932 return; 932 return;
933 933
934 if( m_custom !=0){ 934 if( m_custom !=0){
935 m_custom->exec(); 935 m_custom->exec();
936 }else{ 936 }else{
937 QPopupMenu menu; 937 QPopupMenu menu;
938 QAction up; 938 QAction up;
939 up.setText("cd up"); 939 up.setText("cd up");
940 up.addTo( &menu ); 940 up.addTo( &menu );
941 connect(&up, SIGNAL(activated() ), 941 connect(&up, SIGNAL(activated() ),
942 this, SLOT(cdUP() ) ); 942 this, SLOT(cdUP() ) );
943 943
944 QAction act; 944 QAction act;
945 OFileSelectorItem *sel = (OFileSelectorItem*)item; 945 OFileSelectorItem *sel = (OFileSelectorItem*)item;
946 if(sel->isDir() ){ 946 if(sel->isDir() ){
947 act.setText( tr("Change Directory") ); 947 act.setText( tr("Change Directory") );
948 act.addTo(&menu ); 948 act.addTo(&menu );
949 connect(&act, SIGNAL(activated() ), 949 connect(&act, SIGNAL(activated() ),
950 this, SLOT(slotChangedDir() ) ); 950 this, SLOT(slotChangedDir() ) );
951 }else{ 951 }else{
952 act.setText( tr("Open file" ) ); 952 act.setText( tr("Open file" ) );
953 act.addTo( &menu ); 953 act.addTo( &menu );
954 connect(&act, SIGNAL(activated() ), 954 connect(&act, SIGNAL(activated() ),
955 this, SLOT(slotOpen() ) ); 955 this, SLOT(slotOpen() ) );
956 } 956 }
957 QAction rescan; 957 QAction rescan;
958 rescan.setText( tr("Rescan") ); 958 rescan.setText( tr("Rescan") );
959 rescan.addTo( &menu ); 959 rescan.addTo( &menu );
960 connect(&rescan, SIGNAL(activated() ), 960 connect(&rescan, SIGNAL(activated() ),
961 this, SLOT(slotRescan() ) ); 961 this, SLOT(slotRescan() ) );
962 962
963 QAction rename; 963 QAction rename;
964 rename.setText( tr("Rename") ); 964 rename.setText( tr("Rename") );
965 rename.addTo( &menu ); 965 rename.addTo( &menu );
966 connect(&rename, SIGNAL(activated() ), 966 connect(&rename, SIGNAL(activated() ),
967 this, SLOT(slotRename() ) ); 967 this, SLOT(slotRename() ) );
968 968
969 menu.insertSeparator(); 969 menu.insertSeparator();
970 QAction delItem; 970 QAction delItem;
971 delItem.setText( tr("Delete") ); 971 delItem.setText( tr("Delete") );
972 delItem.addTo(&menu ); 972 delItem.addTo(&menu );
973 connect(&delItem, SIGNAL(activated() ), 973 connect(&delItem, SIGNAL(activated() ),
974 this, SLOT(slotDelete() ) ); 974 this, SLOT(slotDelete() ) );
975 975
976 menu.exec(QCursor::pos() ); 976 menu.exec(QCursor::pos() );
977 } 977 }
978} 978}
979bool OFileSelector::cd(const QString &str ) 979bool OFileSelector::cd(const QString &str )
980{ 980{
981 qWarning(" dir %s", str.latin1() ); 981 qWarning(" dir %s", str.latin1() );
982 QDir dir( str); 982 QDir dir( str);
983 if(dir.exists() ){ 983 if(dir.exists() ){
984 m_currentDir = str; 984 m_currentDir = str;
985 reparse(); 985 reparse();
986 if(m_shTool ){ 986 if(m_shTool ){
987 int count = m_location->count(); 987 int count = m_location->count();
988 m_location->insertItem(str ); 988 m_location->insertItem(str );
989 m_location->setCurrentItem( count ); 989 m_location->setCurrentItem( count );
990 } 990 }
991 return true; 991 return true;
992 } 992 }
993 return false; 993 return false;
994} 994}
995 995
996void OFileSelector::slotChangedDir() 996void OFileSelector::slotChangedDir()
997{ 997{
998 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); 998 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
999 if(sel->isDir() ){ 999 if(sel->isDir() ){
1000 QStringList str = QStringList::split("->", sel->text(1) ); 1000 QStringList str = QStringList::split("->", sel->text(1) );
1001 cd( sel->directory() + "/" + str[0] ); 1001 cd( sel->directory() + "/" + str[0] );
1002 } 1002 }
1003} 1003}
1004void OFileSelector::slotOpen() 1004void OFileSelector::slotOpen()
1005{ 1005{
1006 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); 1006 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
1007 if(!sel->isDir() ){ 1007 if(!sel->isDir() ){
1008 QStringList str = QStringList::split("->", sel->text(1) ); 1008 QStringList str = QStringList::split("->", sel->text(1) );
1009 slotFileSelected( str[0] ); 1009 slotFileSelected( str[0] );
1010 } 1010 }
1011} 1011}
1012void OFileSelector::slotRescan() 1012void OFileSelector::slotRescan()
1013{ 1013{
1014 reparse(); 1014 reparse();
1015} 1015}
1016void OFileSelector::slotRename() 1016void OFileSelector::slotRename()
1017{ 1017{
1018 // rename inline 1018 // rename inline
1019} 1019}
1020void OFileSelector::slotDelete() 1020void OFileSelector::slotDelete()
1021{ 1021{
1022 qWarning("delete slot" ); 1022 qWarning("delete slot" );
1023 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); 1023 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
1024 QStringList list = QStringList::split("->", sel->text(1) ); 1024 QStringList list = QStringList::split("->", sel->text(1) );
1025 if( sel->isDir() ){ 1025 if( sel->isDir() ){
1026 QString str = QString::fromLatin1("rm -rf ") + list[0]; 1026 QString str = QString::fromLatin1("rm -rf ") + list[0];
1027 ::system(str.utf8().data() ); 1027 ::system(str.utf8().data() );
1028 }else{ 1028 }else{
1029 QFile::remove( list[0] ); 1029 QFile::remove( list[0] );
1030 } 1030 }
1031 m_View->takeItem( sel ); 1031 m_View->takeItem( sel );
1032 delete sel; 1032 delete sel;
1033} 1033}
1034 1034
1035void OFileSelector::cdUP() 1035void OFileSelector::cdUP()
1036{ 1036{
1037 QDir dir( m_currentDir ); 1037 QDir dir( m_currentDir );
1038 dir.cdUp(); 1038 dir.cdUp();
1039 if(dir.exists() ){ 1039 if(dir.exists() ){
1040 m_currentDir = dir.absPath(); 1040 m_currentDir = dir.absPath();
1041 reparse(); 1041 reparse();
1042 int count = m_location->count(); 1042 int count = m_location->count();
1043 m_location->insertItem(m_currentDir ); 1043 m_location->insertItem(m_currentDir );
1044 m_location->setCurrentItem( count ); 1044 m_location->setCurrentItem( count );
1045 } 1045 }
1046} 1046}
1047void OFileSelector::slotHome() 1047void OFileSelector::slotHome()
1048{ 1048{
1049 cd(QDir::homeDirPath() ); 1049 cd(QDir::homeDirPath() );
1050} 1050}
1051void OFileSelector::slotDoc() 1051void OFileSelector::slotDoc()
1052{ 1052{
1053 cd(QDir::homeDirPath() + "/Documents" ); 1053 cd(QDir::homeDirPath() + "/Documents" );
1054} 1054}
1055void OFileSelector::slotNavigate() 1055void OFileSelector::slotNavigate()
1056{ 1056{
1057 1057
1058} 1058}