-rw-r--r-- | core/apps/textedit/fileBrowser.cpp | 53 |
1 files changed, 30 insertions, 23 deletions
diff --git a/core/apps/textedit/fileBrowser.cpp b/core/apps/textedit/fileBrowser.cpp index acd50c2..ebb78d1 100644 --- a/core/apps/textedit/fileBrowser.cpp +++ b/core/apps/textedit/fileBrowser.cpp | |||
@@ -1,45 +1,46 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | ** copyright 2001 ljp ljp@llornkcor.com | 2 | ** copyright 2001 ljp ljp@llornkcor.com |
3 | ** Created: Fri Dec 14 08:16:46 2001 | 3 | ** Created: Fri Dec 14 08:16:46 2001 |
4 | ** | 4 | ** |
5 | ** This file may be distributed and/or modified under the terms of the | 5 | ** This file may be distributed and/or modified under the terms of the |
6 | ** GNU General Public License version 2 as published by the Free Software | 6 | ** GNU General Public License version 2 as published by the Free Software |
7 | ** Foundation and appearing in the file LICENSE.GPL included in the | 7 | ** Foundation and appearing in the file LICENSE.GPL included in the |
8 | ** packaging of this file. | 8 | ** packaging of this file. |
9 | ** | 9 | ** |
10 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 10 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
11 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 11 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
12 | ** | 12 | ** |
13 | ****************************************************************************/ | 13 | ****************************************************************************/ |
14 | #include "fileBrowser.h" | 14 | #include "fileBrowser.h" |
15 | #include "inputDialog.h" | 15 | #include "inputDialog.h" |
16 | 16 | ||
17 | #include <qpe/config.h> | 17 | #include <qpe/config.h> |
18 | #include <qpe/resource.h> | 18 | #include <qpe/resource.h> |
19 | #include <qpe/fileselector.h> | 19 | #include <qpe/fileselector.h> |
20 | #include <qpe/qpeapplication.h> | 20 | #include <qpe/qpeapplication.h> |
21 | #include <qpe/menubutton.h> | 21 | #include <qpe/menubutton.h> |
22 | #include <qpe/mimetype.h> | ||
22 | 23 | ||
23 | #include <qdict.h> | 24 | #include <qdict.h> |
24 | #include <qwidgetstack.h> | 25 | #include <qwidgetstack.h> |
25 | #include <qlistview.h> | 26 | #include <qlistview.h> |
26 | #include <qcombo.h> | 27 | #include <qcombo.h> |
27 | #include <qpushbutton.h> | 28 | #include <qpushbutton.h> |
28 | #include <qfile.h> | 29 | #include <qfile.h> |
29 | #include <qmessagebox.h> | 30 | #include <qmessagebox.h> |
30 | #include <qlayout.h> | 31 | #include <qlayout.h> |
31 | #include <unistd.h> | 32 | #include <unistd.h> |
32 | #include <qpopupmenu.h> | 33 | #include <qpopupmenu.h> |
33 | #include <qlineedit.h> | 34 | #include <qlineedit.h> |
34 | #include <qstringlist.h> | 35 | #include <qstringlist.h> |
35 | 36 | ||
36 | #include <unistd.h> | 37 | #include <unistd.h> |
37 | #include <stdlib.h> | 38 | #include <stdlib.h> |
38 | 39 | ||
39 | static int u_id = 1; | 40 | static int u_id = 1; |
40 | static int get_unique_id() | 41 | static int get_unique_id() |
41 | { | 42 | { |
42 | return u_id++; | 43 | return u_id++; |
43 | } | 44 | } |
44 | 45 | ||
45 | fileBrowser::fileBrowser( QWidget* parent, const char* name, bool modal, WFlags fl , const QString filter ) | 46 | fileBrowser::fileBrowser( QWidget* parent, const char* name, bool modal, WFlags fl , const QString filter ) |
@@ -97,49 +98,49 @@ fileBrowser::fileBrowser( QWidget* parent, const char* name, bool modal, WFlags | |||
97 | FileStack = new QWidgetStack( this ); | 98 | FileStack = new QWidgetStack( this ); |
98 | 99 | ||
99 | 100 | ||
100 | ListView = new QListView( this, "ListView" ); | 101 | ListView = new QListView( this, "ListView" ); |
101 | // ListView->setMinimumSize( QSize( 100, 25 ) ); | 102 | // ListView->setMinimumSize( QSize( 100, 25 ) ); |
102 | ListView->addColumn( tr( "Name" ) ); | 103 | ListView->addColumn( tr( "Name" ) ); |
103 | ListView->setColumnWidth(0,120); | 104 | ListView->setColumnWidth(0,120); |
104 | ListView->setSorting( 2, FALSE); | 105 | ListView->setSorting( 2, FALSE); |
105 | ListView->addColumn( tr( "Size" ) ); | 106 | ListView->addColumn( tr( "Size" ) ); |
106 | ListView->setColumnWidth(1,-1); | 107 | ListView->setColumnWidth(1,-1); |
107 | ListView->addColumn( "Date",-1); | 108 | ListView->addColumn( "Date",-1); |
108 | 109 | ||
109 | ListView->setColumnWidthMode(0,QListView::Manual); | 110 | ListView->setColumnWidthMode(0,QListView::Manual); |
110 | ListView->setColumnAlignment(1,QListView::AlignRight); | 111 | ListView->setColumnAlignment(1,QListView::AlignRight); |
111 | ListView->setColumnAlignment(2,QListView::AlignRight); | 112 | ListView->setColumnAlignment(2,QListView::AlignRight); |
112 | ListView->setAllColumnsShowFocus( TRUE ); | 113 | ListView->setAllColumnsShowFocus( TRUE ); |
113 | 114 | ||
114 | QPEApplication::setStylusOperation( ListView->viewport(),QPEApplication::RightOnHold); | 115 | QPEApplication::setStylusOperation( ListView->viewport(),QPEApplication::RightOnHold); |
115 | connect( ListView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), | 116 | connect( ListView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), |
116 | this,SLOT( ListPressed(int, QListViewItem *, const QPoint&, int)) ); | 117 | this,SLOT( ListPressed(int, QListViewItem *, const QPoint&, int)) ); |
117 | 118 | ||
118 | connect( ListView, SIGNAL( clicked( QListViewItem*)), SLOT(listClicked(QListViewItem *)) ); | 119 | connect( ListView, SIGNAL( clicked( QListViewItem*)), SLOT(listClicked(QListViewItem *)) ); |
119 | 120 | ||
120 | FileStack->addWidget( ListView, get_unique_id() ); | 121 | FileStack->addWidget( ListView, get_unique_id() ); |
121 | mimeType="text/*"; | 122 | mimeType="text/*"; |
122 | fileSelector = new FileSelector( mimeType, FileStack, "fileselector" , FALSE, FALSE); //buggy | 123 | fileSelector = new FileSelector( mimeType, FileStack, "fileselector" , FALSE, FALSE); //buggy |
123 | // connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( showEditTools() ) ); | 124 | // connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( showEditTools() ) ); |
124 | // connect( fileSelector, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) ); | 125 | // connect( fileSelector, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) ); |
125 | connect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( docOpen( const DocLnk & ) ) ); | 126 | connect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( docOpen( const DocLnk & ) ) ); |
126 | layout->addMultiCellWidget( FileStack, 1, 1, 0, 7 ); | 127 | layout->addMultiCellWidget( FileStack, 1, 1, 0, 7 ); |
127 | 128 | ||
128 | SelectionCombo = new QComboBox( FALSE, this, "SelectionCombo" ); | 129 | SelectionCombo = new QComboBox( FALSE, this, "SelectionCombo" ); |
129 | SelectionCombo->insertItem( tr( "Documents" ) ); | 130 | SelectionCombo->insertItem( tr( "Documents" ) ); |
130 | SelectionCombo->insertItem( tr( "All files" ) ); | 131 | SelectionCombo->insertItem( tr( "All files" ) ); |
131 | SelectionCombo->insertItem( tr( "Hidden files" ) ); | 132 | SelectionCombo->insertItem( tr( "Hidden files" ) ); |
132 | // SelectionCombo->setMaximumWidth(120); | 133 | // SelectionCombo->setMaximumWidth(120); |
133 | layout->addMultiCellWidget( SelectionCombo, 2, 2, 0, 3 ); | 134 | layout->addMultiCellWidget( SelectionCombo, 2, 2, 0, 3 ); |
134 | 135 | ||
135 | connect( SelectionCombo, SIGNAL( activated( const QString & ) ), | 136 | connect( SelectionCombo, SIGNAL( activated( const QString & ) ), |
136 | this, SLOT( selectionChanged( const QString & ) ) ); | 137 | this, SLOT( selectionChanged( const QString & ) ) ); |
137 | 138 | ||
138 | typemb = new MenuButton(this); | 139 | typemb = new MenuButton(this); |
139 | typemb->setLabel(tr("Type: %1")); | 140 | typemb->setLabel(tr("Type: %1")); |
140 | typemb->setMinimumWidth(110); | 141 | typemb->setMinimumWidth(110); |
141 | typemb->setFixedHeight(22); | 142 | typemb->setFixedHeight(22); |
142 | layout->addMultiCellWidget( typemb, 2, 2, 4, 7 ); | 143 | layout->addMultiCellWidget( typemb, 2, 2, 4, 7 ); |
143 | updateMimeTypeMenu() ; | 144 | updateMimeTypeMenu() ; |
144 | 145 | ||
145 | currentDir.setPath(QDir::currentDirPath()); | 146 | currentDir.setPath(QDir::currentDirPath()); |
@@ -173,72 +174,78 @@ void fileBrowser::populateList() | |||
173 | const QFileInfoList *list = currentDir.entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/); | 174 | const QFileInfoList *list = currentDir.entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/); |
174 | QFileInfoListIterator it(*list); | 175 | QFileInfoListIterator it(*list); |
175 | QFileInfo *fi; | 176 | QFileInfo *fi; |
176 | while ( (fi=it.current()) ) { | 177 | while ( (fi=it.current()) ) { |
177 | 178 | ||
178 | if (fi->isSymLink() ){ | 179 | if (fi->isSymLink() ){ |
179 | QString symLink=fi->readLink(); | 180 | QString symLink=fi->readLink(); |
180 | // qDebug("Symlink detected "+symLink); | 181 | // qDebug("Symlink detected "+symLink); |
181 | QFileInfo sym( symLink); | 182 | QFileInfo sym( symLink); |
182 | fileS.sprintf( "%10li", sym.size() ); | 183 | fileS.sprintf( "%10li", sym.size() ); |
183 | fileL.sprintf( "%s -> %s", sym.fileName().data(),sym.absFilePath().data() ); | 184 | fileL.sprintf( "%s -> %s", sym.fileName().data(),sym.absFilePath().data() ); |
184 | fileDate = sym.lastModified().toString(); | 185 | fileDate = sym.lastModified().toString(); |
185 | } else { | 186 | } else { |
186 | // qDebug("Not a dir: "+currentDir.canonicalPath()+fileL); | 187 | // qDebug("Not a dir: "+currentDir.canonicalPath()+fileL); |
187 | fileS.sprintf( "%10li", fi->size() ); | 188 | fileS.sprintf( "%10li", fi->size() ); |
188 | fileL.sprintf( "%s",fi->fileName().data() ); | 189 | fileL.sprintf( "%s",fi->fileName().data() ); |
189 | fileDate= fi->lastModified().toString(); | 190 | fileDate= fi->lastModified().toString(); |
190 | if( QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+fileL)).exists() ) { | 191 | if( QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+fileL)).exists() ) { |
191 | fileL+="/"; | 192 | fileL+="/"; |
192 | isDir=TRUE; | 193 | isDir=TRUE; |
193 | // qDebug( fileL); | 194 | // qDebug( fileL); |
194 | } | 195 | } |
195 | } | 196 | } |
196 | if(fileL !="./") { | 197 | if(fileL !="./") { |
197 | item= new QListViewItem( ListView,fileL,fileS , fileDate); | 198 | item= new QListViewItem( ListView,fileL,fileS , fileDate); |
198 | QPixmap pm; | 199 | QPixmap pm; |
199 | pm= Resource::loadPixmap( "folder" ); | ||
200 | 200 | ||
201 | if(isDir || fileL.find("/",0,TRUE) != -1) { | 201 | if(isDir || fileL.find("/",0,TRUE) != -1) { |
202 | if( !QDir( fi->filePath() ).isReadable()) | 202 | if( !QDir( fi->filePath() ).isReadable()) |
203 | pm = Resource::loadPixmap( "lockedfolder" ); | 203 | pm = Resource::loadPixmap( "lockedfolder" ); |
204 | item->setPixmap( 0,pm ); | 204 | else |
205 | } else { | 205 | pm= Resource::loadPixmap( "folder" ); |
206 | if( !fi->isReadable() ) | 206 | item->setPixmap( 0,pm ); |
207 | pm = Resource::loadPixmap( "locked" ); | 207 | } else { |
208 | else | 208 | if( !fi->isReadable() ) |
209 | pm = Resource::loadPixmap( "fileopen" ); | 209 | pm = Resource::loadPixmap( "locked" ); |
210 | item->setPixmap( 0,pm); | 210 | else { |
211 | } | 211 | MimeType mt(fi->filePath()); |
212 | if( fileL.find("->",0,TRUE) != -1) { | 212 | pm=mt.pixmap(); |
213 | // overlay link image | 213 | if(pm.isNull()) |
214 | QPixmap lnk = Resource::loadPixmap( "symlink" ); | 214 | pm = Resource::loadPixmap( "UnknownDocument-14" ); |
215 | QPainter painter( &pm ); | 215 | item->setPixmap( 0,pm); |
216 | painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); | 216 | } |
217 | pm.setMask( pm.createHeuristicMask( FALSE ) ); | 217 | } |
218 | item->setPixmap( 0, pm); | 218 | if( fileL.find("->",0,TRUE) != -1) { |
219 | // overlay link image | ||
220 | pm= Resource::loadPixmap( "folder" ); | ||
221 | QPixmap lnk = Resource::loadPixmap( "symlink" ); | ||
222 | QPainter painter( &pm ); | ||
223 | painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); | ||
224 | pm.setMask( pm.createHeuristicMask( FALSE ) ); | ||
225 | item->setPixmap( 0, pm); | ||
226 | } | ||
219 | } | 227 | } |
220 | } | ||
221 | isDir=FALSE; | 228 | isDir=FALSE; |
222 | ++it; | 229 | ++it; |
223 | } | 230 | } |
224 | ListView->setSorting( 3, FALSE); | 231 | ListView->setSorting( 3, FALSE); |
225 | QString currentPath = currentDir.canonicalPath(); | 232 | QString currentPath = currentDir.canonicalPath(); |
226 | 233 | ||
227 | fillCombo( (const QString &)currentPath); | 234 | fillCombo( (const QString &)currentPath); |
228 | // dirPathCombo->lineEdit()->setText(currentPath); | 235 | // dirPathCombo->lineEdit()->setText(currentPath); |
229 | 236 | ||
230 | // if( dirPathStringList.grep(currentPath,TRUE).isEmpty() ) { | 237 | // if( dirPathStringList.grep(currentPath,TRUE).isEmpty() ) { |
231 | // dirPathCombo->clear(); | 238 | // dirPathCombo->clear(); |
232 | // dirPathStringList.prepend(currentPath ); | 239 | // dirPathStringList.prepend(currentPath ); |
233 | // dirPathCombo->insertStringList( dirPathStringList,-1); | 240 | // dirPathCombo->insertStringList( dirPathStringList,-1); |
234 | // } | 241 | // } |
235 | } | 242 | } |
236 | 243 | ||
237 | void fileBrowser::upDir() | 244 | void fileBrowser::upDir() |
238 | { | 245 | { |
239 | QString current = currentDir.canonicalPath(); | 246 | QString current = currentDir.canonicalPath(); |
240 | QDir dir(current); | 247 | QDir dir(current); |
241 | dir.cdUp(); | 248 | dir.cdUp(); |
242 | current = dir.canonicalPath(); | 249 | current = dir.canonicalPath(); |
243 | chdir( current.latin1() ); | 250 | chdir( current.latin1() ); |
244 | currentDir.cd( current, TRUE); | 251 | currentDir.cd( current, TRUE); |