summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/advancedfm/advancedfmMenu.cpp1704
-rw-r--r--noncore/apps/checkbook/checkbook.cpp6
-rw-r--r--noncore/apps/checkbook/mainwindow.cpp11
-rw-r--r--noncore/apps/odict/configdlg.cpp9
-rw-r--r--noncore/apps/odict/searchmethoddlg.cpp15
-rw-r--r--noncore/apps/opie-bartender/bartender.cpp16
-rw-r--r--noncore/apps/opie-console/configdialog.cpp10
-rw-r--r--noncore/apps/opie-console/mainwindow.cpp7
-rw-r--r--noncore/apps/opie-console/modemconfigwidget.cpp9
-rw-r--r--noncore/apps/opie-reader/CloseDialog.cpp5
-rw-r--r--noncore/apps/opie-reader/Prefs.cpp5
-rw-r--r--noncore/apps/opie-reader/QTReaderApp.cpp8444
-rw-r--r--noncore/apps/opie-reader/ToolbarPrefs.cpp10
-rw-r--r--noncore/apps/opie-reader/URLDialog.cpp31
-rw-r--r--noncore/apps/opie-reader/fileBrowser.cpp5
-rw-r--r--noncore/apps/opie-sheet/mainwindow.cpp9
-rw-r--r--noncore/apps/tableviewer/ui/tveditview.cpp8
-rw-r--r--noncore/apps/tableviewer/ui/tvfilterview.cpp8
-rw-r--r--noncore/apps/tableviewer/ui/tvkeyedit.cpp8
-rw-r--r--noncore/apps/tinykate/libkate/view/kateview.cpp4
-rw-r--r--noncore/apps/zsafe/scqtfileedit.cpp4
-rw-r--r--noncore/apps/zsafe/zsafe.cpp31
-rw-r--r--noncore/comm/keypebble/kvnc.cpp7
23 files changed, 5180 insertions, 5186 deletions
diff --git a/noncore/apps/advancedfm/advancedfmMenu.cpp b/noncore/apps/advancedfm/advancedfmMenu.cpp
index 26bc36d..78f9da2 100644
--- a/noncore/apps/advancedfm/advancedfmMenu.cpp
+++ b/noncore/apps/advancedfm/advancedfmMenu.cpp
@@ -1,854 +1,850 @@
1/*************************************************************************** 1/***************************************************************************
2 AdvancedFm.cpp 2 AdvancedFm.cpp
3 ------------------- 3 -------------------
4 ** Created: Sat Mar 9 23:33:09 2002 4 ** Created: Sat Mar 9 23:33:09 2002
5 copyright : (C) 2002 by ljp 5 copyright : (C) 2002 by ljp
6 email : ljp@llornkcor.com 6 email : ljp@llornkcor.com
7 * This program is free software; you can redistribute it and/or modify * 7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by * 8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or * 9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. * 10 * (at your option) any later version. *
11 ***************************************************************************/ 11 ***************************************************************************/
12#include "advancedfm.h" 12#include "advancedfm.h"
13#include "output.h" 13#include "output.h"
14#include "filePermissions.h" 14#include "filePermissions.h"
15 15
16#include <opie/otabwidget.h> 16#include <opie/otabwidget.h>
17#include <opie/oprocess.h> 17#include <opie/oprocess.h>
18 18
19#include <qpe/lnkproperties.h> 19#include <qpe/lnkproperties.h>
20#include <qpe/qpeapplication.h> 20#include <qpe/qpeapplication.h>
21#include <qpe/resource.h> 21#include <qpe/resource.h>
22#include <qpe/qcopenvelope_qws.h> 22#include <qpe/qcopenvelope_qws.h>
23#include <qpe/applnk.h> 23#include <qpe/applnk.h>
24#include <qpe/ir.h> 24#include <qpe/ir.h>
25 25
26#include <qmessagebox.h> 26#include <qmessagebox.h>
27#include <qmultilineedit.h> 27#include <qmultilineedit.h>
28 28
29#include <qstring.h> 29#include <qstring.h>
30 30
31#include <qlayout.h> 31#include <qlayout.h>
32#include <qpixmap.h> 32#include <qpixmap.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qpopupmenu.h> 34#include <qpopupmenu.h>
35#include <qtabwidget.h> 35#include <qtabwidget.h>
36#include <qtoolbutton.h> 36#include <qtoolbutton.h>
37#include <qlineedit.h> 37#include <qlineedit.h>
38#include <qlistview.h> 38#include <qlistview.h>
39 39
40#include <errno.h> 40#include <errno.h>
41#include <stdlib.h> 41#include <stdlib.h>
42#include <unistd.h> 42#include <unistd.h>
43#include <sys/stat.h> 43#include <sys/stat.h>
44#include <dirent.h> 44#include <dirent.h>
45#include <sys/sendfile.h> 45#include <sys/sendfile.h>
46#include <fcntl.h> 46#include <fcntl.h>
47 47
48 48
49void AdvancedFm::doDirChange() { 49void AdvancedFm::doDirChange() {
50 QString pathItem = CurrentView()->currentItem()->text(0); 50 QString pathItem = CurrentView()->currentItem()->text(0);
51 if( pathItem == "../") { 51 if( pathItem == "../") {
52 ListClicked( CurrentView()->currentItem()); 52 ListClicked( CurrentView()->currentItem());
53 } else { 53 } else {
54 if( pathItem.find(" -> ",0,TRUE) != -1) 54 if( pathItem.find(" -> ",0,TRUE) != -1)
55 pathItem = dealWithSymName((const QString&)pathItem)+"/"; 55 pathItem = dealWithSymName((const QString&)pathItem)+"/";
56// qWarning(pathItem); 56// qWarning(pathItem);
57 gotoDirectory( CurrentDir()->path()+"/"+pathItem.left( pathItem.length() - 1) ); 57 gotoDirectory( CurrentDir()->path()+"/"+pathItem.left( pathItem.length() - 1) );
58 } 58 }
59} 59}
60 60
61void AdvancedFm::showMenuHidden() { 61void AdvancedFm::showMenuHidden() {
62 if (b) { 62 if (b) {
63 CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 63 CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
64 OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 64 OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
65 fileMenu->setItemChecked( fileMenu->idAt(0),TRUE); 65 fileMenu->setItemChecked( fileMenu->idAt(0),TRUE);
66 } else { 66 } else {
67 CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 67 CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
68 OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 68 OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
69 fileMenu->setItemChecked( fileMenu->idAt(0),FALSE); 69 fileMenu->setItemChecked( fileMenu->idAt(0),FALSE);
70 } 70 }
71 b = !b; 71 b = !b;
72 populateView(); 72 populateView();
73} 73}
74 74
75void AdvancedFm::showHidden() { 75void AdvancedFm::showHidden() {
76 if (b) { 76 if (b) {
77 CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 77 CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
78 OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); 78 OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
79 } else { 79 } else {
80 CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 80 CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
81 OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); 81 OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
82 } 82 }
83 populateView(); 83 populateView();
84} 84}
85 85
86QString AdvancedFm::dealWithSymName(const QString &fileName) { 86QString AdvancedFm::dealWithSymName(const QString &fileName) {
87 QString strItem = fileName; 87 QString strItem = fileName;
88 return strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4); 88 return strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4);
89} 89}
90 90
91void AdvancedFm::runThis() { 91void AdvancedFm::runThis() {
92 if( !CurrentView()->currentItem()) return; 92 if( !CurrentView()->currentItem()) return;
93 QString fs; 93 QString fs;
94 QDir *thisDir = CurrentDir(); 94 QDir *thisDir = CurrentDir();
95 95
96 QString curFile = CurrentView()->currentItem()->text(0); 96 QString curFile = CurrentView()->currentItem()->text(0);
97 QString path = thisDir->canonicalPath(); 97 QString path = thisDir->canonicalPath();
98 98
99 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink 99 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink
100 100
101 curFile = dealWithSymName((const QString&)curFile); 101 curFile = dealWithSymName((const QString&)curFile);
102 102
103 if(curFile != "../") { 103 if(curFile != "../") {
104 104
105 fs = getFileSystemType((const QString &) path); 105 fs = getFileSystemType((const QString &) path);
106 QFileInfo fileInfo( path + "/" + curFile); 106 QFileInfo fileInfo( path + "/" + curFile);
107// qDebug( fileInfo.owner()); 107// qDebug( fileInfo.owner());
108 108
109 if( (fileInfo.permission( QFileInfo::ExeUser) 109 if( (fileInfo.permission( QFileInfo::ExeUser)
110 | fileInfo.permission( QFileInfo::ExeGroup) 110 | fileInfo.permission( QFileInfo::ExeGroup)
111 | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) { 111 | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) {
112 | fs == "vfat" && fileInfo.filePath().contains("/bin") ) { 112 | fs == "vfat" && fileInfo.filePath().contains("/bin") ) {
113 QCopEnvelope e("QPE/System", "execute(QString)" ); 113 QCopEnvelope e("QPE/System", "execute(QString)" );
114 e << curFile; 114 e << curFile;
115 } else { 115 } else {
116 curFile = path + "/" + curFile; 116 curFile = path + "/" + curFile;
117 DocLnk nf(curFile); 117 DocLnk nf(curFile);
118 QString execStr = nf.exec(); 118 QString execStr = nf.exec();
119// qDebug( execStr); 119// qDebug( execStr);
120 if( execStr.isEmpty() ) { 120 if( execStr.isEmpty() ) {
121 } else { 121 } else {
122 nf.execute(); 122 nf.execute();
123 } 123 }
124 } 124 }
125 } 125 }
126} 126}
127 127
128void AdvancedFm::runText() { 128void AdvancedFm::runText() {
129 if( !CurrentView()->currentItem()) return; 129 if( !CurrentView()->currentItem()) return;
130 QString curFile = CurrentView()->currentItem()->text(0); 130 QString curFile = CurrentView()->currentItem()->text(0);
131 if(curFile != "../") { 131 if(curFile != "../") {
132 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink 132 if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink
133 curFile = dealWithSymName((const QString&)curFile); 133 curFile = dealWithSymName((const QString&)curFile);
134 curFile = CurrentDir()->canonicalPath()+"/"+curFile; 134 curFile = CurrentDir()->canonicalPath()+"/"+curFile;
135 QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" ); 135 QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" );
136 e << curFile; 136 e << curFile;
137 } 137 }
138} 138}
139 139
140void AdvancedFm::makeDir() { 140void AdvancedFm::makeDir() {
141 InputDialog *fileDlg; 141 InputDialog *fileDlg;
142 fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0); 142 fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0);
143 fileDlg->exec(); 143 fileDlg->exec();
144 if( fileDlg->result() == 1 ) { 144 if( fileDlg->result() == 1 ) {
145 QDir *thisDir = CurrentDir(); 145 QDir *thisDir = CurrentDir();
146 QString filename = fileDlg->LineEdit1->text(); 146 QString filename = fileDlg->LineEdit1->text();
147 thisDir->mkdir( thisDir->canonicalPath()+"/"+filename); 147 thisDir->mkdir( thisDir->canonicalPath()+"/"+filename);
148 } 148 }
149 populateView(); 149 populateView();
150} 150}
151 151
152void AdvancedFm::doDelete() { 152void AdvancedFm::doDelete() {
153 QStringList curFileList = getPath(); 153 QStringList curFileList = getPath();
154 bool doMsg=true; 154 bool doMsg=true;
155 int count = curFileList.count(); 155 int count = curFileList.count();
156 if( count > 0) { 156 if( count > 0) {
157 if(count > 1 ) { 157 if(count > 1 ) {
158 QString msg; 158 QString msg;
159 msg=tr("Really delete\n%1 files?").arg(count); 159 msg=tr("Really delete\n%1 files?").arg(count);
160 switch ( QMessageBox::warning(this,tr("Delete"),msg 160 switch ( QMessageBox::warning(this,tr("Delete"),msg
161 ,tr("Yes"),tr("No"),0,0,1) ) 161 ,tr("Yes"),tr("No"),0,0,1) )
162 { 162 {
163 case 0: 163 case 0:
164 doMsg=false; 164 doMsg=false;
165 break; 165 break;
166 case 1: 166 case 1:
167 return; 167 return;
168 break; 168 break;
169 }; 169 };
170 } 170 }
171 171
172 QString myFile; 172 QString myFile;
173 173
174 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 174 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
175 myFile = (*it); 175 myFile = (*it);
176 if( myFile.find(" -> ",0,TRUE) != -1) 176 if( myFile.find(" -> ",0,TRUE) != -1)
177 myFile = myFile.left( myFile.find(" -> ",0,TRUE)); 177 myFile = myFile.left( myFile.find(" -> ",0,TRUE));
178 178
179 QString f = CurrentDir()->canonicalPath(); 179 QString f = CurrentDir()->canonicalPath();
180 if(f.right(1).find("/",0,TRUE) == -1) 180 if(f.right(1).find("/",0,TRUE) == -1)
181 f += "/"; 181 f += "/";
182 f += myFile; 182 f += myFile;
183 if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { 183 if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) {
184 //if file is a directory 184 //if file is a directory
185 185
186 switch ( QMessageBox::warning( this, tr("Delete Directory?"), 186 switch ( QMessageBox::warning( this, tr("Delete Directory?"),
187 tr("Really delete %1\nand all it's contents ?" ).arg( f ) , 187 tr("Really delete %1\nand all it's contents ?" ).arg( f ) ,
188 tr("Yes"), tr("No"), 0, 0, 1) ) { 188 tr("Yes"), tr("No"), 0, 0, 1) ) {
189 case 0: 189 case 0:
190 { 190 {
191 f=f.left(f.length()-1); 191 f=f.left(f.length()-1);
192 QString cmd="rm -rf "+f; 192 QString cmd="rm -rf "+f;
193 startProcess( (const QString)cmd.latin1() ); 193 startProcess( (const QString)cmd.latin1() );
194 populateView(); 194 populateView();
195 } 195 }
196 break; 196 break;
197 case 1: 197 case 1:
198 // exit 198 // exit
199 break; 199 break;
200 }; 200 };
201 201
202 } else { 202 } else {
203 if(doMsg) { 203 if(doMsg) {
204 switch ( QMessageBox::warning(this,tr("Delete"), 204 switch ( QMessageBox::warning(this,tr("Delete"),
205 tr("Really delete\n%1?").arg( myFile ), 205 tr("Really delete\n%1?").arg( myFile ),
206 tr("Yes"), tr("No"), 0, 0, 1) ) { 206 tr("Yes"), tr("No"), 0, 0, 1) ) {
207 case 1: 207 case 1:
208 return; 208 return;
209 break; 209 break;
210 }; 210 };
211 } 211 }
212 212
213 QString cmd="rm "+f; 213 QString cmd="rm "+f;
214 QFile file(f); 214 QFile file(f);
215 QFileInfo fi(myFile); 215 QFileInfo fi(myFile);
216 if( fi.fileName().find("../",0,TRUE)==-1) { 216 if( fi.fileName().find("../",0,TRUE)==-1) {
217// qDebug("remove link files "+myFile); 217// qDebug("remove link files "+myFile);
218 218
219// DocLnk lnk(f); 219// DocLnk lnk(f);
220 DocLnk *lnk; 220 DocLnk *lnk;
221 lnk = new DocLnk(f); 221 lnk = new DocLnk(f);
222// qDebug("Deleting doclnk " + lnk->linkFile()); 222// qDebug("Deleting doclnk " + lnk->linkFile());
223 if(lnk->isValid()) 223 if(lnk->isValid())
224 lnk->removeLinkFile(); 224 lnk->removeLinkFile();
225 // delete lnk; 225 // delete lnk;
226 file.remove(); 226 file.remove();
227 } 227 }
228 } 228 }
229 } 229 }
230 } 230 }
231 populateView(); 231 populateView();
232} 232}
233 233
234void AdvancedFm::filePerms() { 234void AdvancedFm::filePerms() {
235 QStringList curFileList = getPath(); 235 QStringList curFileList = getPath();
236 QString filePath; 236 QString filePath;
237 237
238 filePath = CurrentDir()->canonicalPath()+"/"; 238 filePath = CurrentDir()->canonicalPath()+"/";
239 239
240 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 240 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
241 filePermissions *filePerm; 241 filePermissions *filePerm;
242 filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it)); 242 filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it));
243 filePerm->showMaximized(); 243 QPEApplication::execDialog( filePerm );
244 filePerm->exec(); 244 if( filePerm )
245 if( filePerm) 245 delete filePerm;
246 delete filePerm; 246 }
247 } 247 populateView();
248 populateView(); 248}
249} 249
250 250void AdvancedFm::doProperties() {
251void AdvancedFm::doProperties() { 251#if defined(QT_QWS_OPIE)
252#if defined(QT_QWS_OPIE) 252
253 253 QStringList curFileList = getPath();
254 QStringList curFileList = getPath(); 254
255 255 QString filePath;
256 QString filePath; 256 filePath = CurrentDir()->canonicalPath()+"/";
257 filePath = CurrentDir()->canonicalPath()+"/"; 257
258 258// qDebug("%d",curFileList.count());
259// qDebug("%d",curFileList.count()); 259
260 260 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
261 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 261// qDebug((filePath+*it));
262// qDebug((filePath+*it)); 262 DocLnk lnk( (filePath+*it));
263 DocLnk lnk( (filePath+*it)); 263 LnkProperties prop( &lnk );
264 LnkProperties prop( &lnk ); 264 QPEApplication::execDialog( &prop );
265 prop.showMaximized(); 265 }
266 prop.exec(); 266#endif
267 } 267
268#endif 268}
269 269
270} 270void AdvancedFm::upDir() {
271 271 QDir *thisDir = CurrentDir();
272void AdvancedFm::upDir() { 272 QString current = thisDir->canonicalPath();
273 QDir *thisDir = CurrentDir(); 273 QDir dir(current);
274 QString current = thisDir->canonicalPath(); 274 dir.cdUp();
275 QDir dir(current); 275 current = dir.canonicalPath();
276 dir.cdUp(); 276 chdir( current.latin1() );
277 current = dir.canonicalPath(); 277 thisDir->cd( current, TRUE);
278 chdir( current.latin1() ); 278
279 thisDir->cd( current, TRUE); 279 populateView();
280 280 update();
281 populateView(); 281}
282 update(); 282
283} 283void AdvancedFm::copy() {
284 284 qApp->processEvents();
285void AdvancedFm::copy() { 285 QStringList curFileList = getPath();
286 qApp->processEvents(); 286
287 QStringList curFileList = getPath(); 287 QDir *thisDir = CurrentDir();
288 288 QDir *thatDir = OtherDir();
289 QDir *thisDir = CurrentDir(); 289
290 QDir *thatDir = OtherDir(); 290 bool doMsg=true;
291 291 int count=curFileList.count();
292 bool doMsg=true; 292 if( count > 0) {
293 int count=curFileList.count(); 293 if(count > 1 ){
294 if( count > 0) { 294 QString msg;
295 if(count > 1 ){ 295 msg=tr("Really copy\n%1 files?").arg(count);
296 QString msg; 296 switch ( QMessageBox::warning(this,tr("Copy"),msg
297 msg=tr("Really copy\n%1 files?").arg(count); 297 ,tr("Yes"),tr("No"),0,0,1) )
298 switch ( QMessageBox::warning(this,tr("Copy"),msg 298 {
299 ,tr("Yes"),tr("No"),0,0,1) ) 299 case 0:
300 { 300 doMsg=false;
301 case 0: 301 break;
302 doMsg=false; 302 case 1:
303 break; 303 return;
304 case 1: 304 break;
305 return; 305 };
306 break; 306 }
307 }; 307
308 } 308 QString curFile, item, destFile;
309 309 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
310 QString curFile, item, destFile; 310 item=(*it);
311 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 311 if(item.find("->",0,TRUE)) //symlink
312 item=(*it); 312 item = item.left(item.find("->",0,TRUE));
313 if(item.find("->",0,TRUE)) //symlink 313
314 item = item.left(item.find("->",0,TRUE)); 314 curFile = thisDir->canonicalPath()+"/"+ item;
315 315 destFile = thatDir->canonicalPath()+"/"+ item;
316 curFile = thisDir->canonicalPath()+"/"+ item; 316
317 destFile = thatDir->canonicalPath()+"/"+ item; 317// qDebug("Destination file is "+destFile);
318 318// qDebug("CurrentFile file is " + curFile);
319// qDebug("Destination file is "+destFile); 319
320// qDebug("CurrentFile file is " + curFile); 320 QFile f(destFile);
321 321 if( f.exists()) {
322 QFile f(destFile); 322 if(doMsg) {
323 if( f.exists()) { 323 switch ( QMessageBox::warning(this,tr("File Exists!"),
324 if(doMsg) { 324 tr("%1 exists. Ok to overwrite?").arg( item ),
325 switch ( QMessageBox::warning(this,tr("File Exists!"), 325 tr("Yes"),tr("No"),0,0,1) ) {
326 tr("%1 exists. Ok to overwrite?").arg( item ), 326 case 1:
327 tr("Yes"),tr("No"),0,0,1) ) { 327 return;
328 case 1: 328 break;
329 return; 329 };
330 break; 330 }
331 }; 331 f.remove();
332 } 332 }
333 f.remove(); 333
334 } 334 if( !copyFile( curFile, destFile) ) {
335 335 QMessageBox::message("AdvancedFm",
336 if( !copyFile( curFile, destFile) ) { 336 tr( "Could not copy %1 to %2").arg( curFile ).arg( destFile ) );
337 QMessageBox::message("AdvancedFm", 337 return;
338 tr( "Could not copy %1 to %2").arg( curFile ).arg( destFile ) ); 338 }
339 return; 339 }
340 } 340 setOtherTabCurrent();
341 } 341 rePopulate();
342 setOtherTabCurrent(); 342 }
343 rePopulate(); 343}
344 } 344
345} 345void AdvancedFm::copyAs() {
346 346 qApp->processEvents();
347void AdvancedFm::copyAs() { 347
348 qApp->processEvents(); 348 QStringList curFileList = getPath();
349 349 QString curFile, item;
350 QStringList curFileList = getPath(); 350 InputDialog *fileDlg;
351 QString curFile, item; 351
352 InputDialog *fileDlg; 352 QDir *thisDir = CurrentDir();
353 353 QDir *thatDir = OtherDir();
354 QDir *thisDir = CurrentDir(); 354
355 QDir *thatDir = OtherDir(); 355 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
356 356 QString destFile;
357 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 357 item=(*it);
358 QString destFile; 358 curFile = thisDir->canonicalPath()+"/"+(*it);
359 item=(*it); 359 fileDlg = new InputDialog( this, tr("Copy "+curFile+" As"), TRUE, 0);
360 curFile = thisDir->canonicalPath()+"/"+(*it); 360
361 fileDlg = new InputDialog( this, tr("Copy "+curFile+" As"), TRUE, 0); 361 fileDlg->setInputText((const QString &) destFile );
362 362 fileDlg->exec();
363 fileDlg->setInputText((const QString &) destFile ); 363
364 fileDlg->exec(); 364 if( fileDlg->result() == 1 ) {
365 365 QString filename = fileDlg->LineEdit1->text();
366 if( fileDlg->result() == 1 ) { 366 destFile = thatDir->canonicalPath()+"/"+filename;
367 QString filename = fileDlg->LineEdit1->text(); 367
368 destFile = thatDir->canonicalPath()+"/"+filename; 368 QFile f( destFile);
369 369 if( f.exists()) {
370 QFile f( destFile); 370 switch (QMessageBox::warning(this,tr("File Exists!"),
371 if( f.exists()) { 371 item+tr("\nexists. Ok to overwrite?"),
372 switch (QMessageBox::warning(this,tr("File Exists!"), 372 tr("Yes"),tr("No"),0,0,1) ) {
373 item+tr("\nexists. Ok to overwrite?"), 373 case 0:
374 tr("Yes"),tr("No"),0,0,1) ) { 374 f.remove();
375 case 0: 375 break;
376 f.remove(); 376 case 1:
377 break; 377 return;
378 case 1: 378 break;
379 return; 379 };
380 break; 380 }
381 }; 381 if( !copyFile( curFile, destFile) ) {
382 } 382 QMessageBox::message("AdvancedFm",tr("Could not copy\n")
383 if( !copyFile( curFile, destFile) ) { 383 +curFile +tr("to\n")+destFile);
384 QMessageBox::message("AdvancedFm",tr("Could not copy\n") 384 return;
385 +curFile +tr("to\n")+destFile); 385 }
386 return; 386 }
387 } 387 delete fileDlg;
388 } 388
389 delete fileDlg; 389 }
390 390 rePopulate();
391 } 391 setOtherTabCurrent();
392 rePopulate(); 392}
393 setOtherTabCurrent(); 393
394} 394void AdvancedFm::copySameDir() {
395 395 qApp->processEvents();
396void AdvancedFm::copySameDir() { 396 QStringList curFileList = getPath();
397 qApp->processEvents(); 397 QString curFile, item, destFile;
398 QStringList curFileList = getPath(); 398 InputDialog *fileDlg;
399 QString curFile, item, destFile; 399
400 InputDialog *fileDlg; 400 QDir *thisDir = CurrentDir();
401 401
402 QDir *thisDir = CurrentDir(); 402 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
403 403 item=(*it);
404 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 404 curFile = thisDir->canonicalPath()+"/"+ item;
405 item=(*it); 405
406 curFile = thisDir->canonicalPath()+"/"+ item; 406 fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0);
407 407 fileDlg->setInputText((const QString &) destFile );
408 fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0); 408 fileDlg->exec();
409 fileDlg->setInputText((const QString &) destFile ); 409
410 fileDlg->exec(); 410 if( fileDlg->result() == 1 ) {
411 411
412 if( fileDlg->result() == 1 ) { 412 QString filename = fileDlg->LineEdit1->text();
413 413 destFile = thisDir->canonicalPath()+"/"+filename;
414 QString filename = fileDlg->LineEdit1->text(); 414
415 destFile = thisDir->canonicalPath()+"/"+filename; 415 QFile f(destFile);
416 416 if( f.exists()) {
417 QFile f(destFile); 417 switch (QMessageBox::warning(this,tr("Delete"),
418 if( f.exists()) { 418 destFile+tr(" already exists.\nDo you really want to delete it?"),
419 switch (QMessageBox::warning(this,tr("Delete"), 419 tr("Yes"),tr("No"),0,0,1) ) {
420 destFile+tr(" already exists.\nDo you really want to delete it?"), 420 case 0:
421 tr("Yes"),tr("No"),0,0,1) ) { 421
422 case 0: 422 f.remove();
423 423 break;
424 f.remove(); 424 case 1:
425 break; 425 return;
426 case 1: 426 break;
427 return; 427 };
428 break; 428 }
429 }; 429 if(!copyFile( curFile,destFile) ) {
430 } 430 QMessageBox::message("AdvancedFm",tr("Could not copy\n")
431 if(!copyFile( curFile,destFile) ) { 431 +curFile +tr("to\n")+destFile);
432 QMessageBox::message("AdvancedFm",tr("Could not copy\n") 432 return;
433 +curFile +tr("to\n")+destFile); 433 }
434 return; 434
435 } 435// qDebug("copy "+curFile+" as "+destFile);
436 436 }
437// qDebug("copy "+curFile+" as "+destFile); 437 delete fileDlg;
438 } 438 }
439 delete fileDlg; 439 rePopulate();
440 } 440}
441 rePopulate(); 441
442} 442void AdvancedFm::move() {
443 443 qApp->processEvents();
444void AdvancedFm::move() { 444
445 qApp->processEvents(); 445 QStringList curFileList = getPath();
446 446 if( curFileList.count() > 0) {
447 QStringList curFileList = getPath(); 447 QString curFile, destFile, item;
448 if( curFileList.count() > 0) { 448
449 QString curFile, destFile, item; 449 QDir *thisDir = CurrentDir();
450 450 QDir *thatDir = OtherDir();
451 QDir *thisDir = CurrentDir(); 451 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
452 QDir *thatDir = OtherDir(); 452 item=(*it);
453 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 453 QString destFile = thatDir->canonicalPath();
454 item=(*it); 454
455 QString destFile = thatDir->canonicalPath(); 455 if(destFile.right(1).find("/",0,TRUE) == -1)
456 456 destFile+="/";
457 if(destFile.right(1).find("/",0,TRUE) == -1) 457 destFile += item;
458 destFile+="/"; 458// qDebug("Destination file is "+destFile);
459 destFile += item; 459
460// qDebug("Destination file is "+destFile); 460 curFile = thisDir->canonicalPath();
461 461 if(curFile.right(1).find("/",0,TRUE) == -1)
462 curFile = thisDir->canonicalPath(); 462 curFile +="/";
463 if(curFile.right(1).find("/",0,TRUE) == -1) 463 curFile+= item;
464 curFile +="/"; 464// qDebug("CurrentFile file is " + curFile);
465 curFile+= item; 465
466// qDebug("CurrentFile file is " + curFile); 466 if(QFileInfo(curFile).isDir()) {
467 467 moveDirectory( curFile, destFile );
468 if(QFileInfo(curFile).isDir()) { 468 rePopulate();
469 moveDirectory( curFile, destFile ); 469 return;
470 rePopulate(); 470 }
471 return; 471
472 } 472 QFile f( curFile);
473 473 if( f.exists()) {
474 QFile f( curFile); 474 if( !copyFile( curFile, destFile) ) {
475 if( f.exists()) { 475 QMessageBox::message(tr("Note"),tr("Could not move\n")+curFile);
476 if( !copyFile( curFile, destFile) ) { 476 return;
477 QMessageBox::message(tr("Note"),tr("Could not move\n")+curFile); 477 } else
478 return; 478 QFile::remove(curFile);
479 } else 479 }
480 QFile::remove(curFile); 480 }
481 } 481
482 } 482 }
483 483 rePopulate();
484 } 484 setOtherTabCurrent();
485 rePopulate(); 485}
486 setOtherTabCurrent(); 486
487} 487bool AdvancedFm::moveDirectory( const QString & src, const QString & dest ) {
488 488 int err = 0;
489bool AdvancedFm::moveDirectory( const QString & src, const QString & dest ) { 489 if( copyDirectory( src, dest ) ) { QString cmd = "rm -rf " + src;
490 int err = 0; 490 err = system((const char*)cmd);
491 if( copyDirectory( src, dest ) ) { QString cmd = "rm -rf " + src; 491 } else
492 err = system((const char*)cmd); 492 err = -1;
493 } else 493
494 err = -1; 494 if(err!=0) {
495 495 QMessageBox::message(tr("Note"),tr("Could not move\n") + src);
496 if(err!=0) { 496 return false;
497 QMessageBox::message(tr("Note"),tr("Could not move\n") + src); 497 }
498 return false; 498 return true;
499 } 499}
500 return true; 500
501} 501bool AdvancedFm::copyDirectory( const QString & src, const QString & dest ) {
502 502
503bool AdvancedFm::copyDirectory( const QString & src, const QString & dest ) { 503 QStringcmd = "/bin/cp -fpR " + src + " " + dest;
504 504 qWarning(cmd);
505 QStringcmd = "/bin/cp -fpR " + src + " " + dest; 505 interr = system( (const char *) cmd );
506 qWarning(cmd); 506 if ( err != 0 ) {
507 interr = system( (const char *) cmd ); 507 QMessageBox::message("AdvancedFm",
508 if ( err != 0 ) { 508 tr( "Could not copy \n%1 \nto \n%2").arg( src ).arg( dest ) );
509 QMessageBox::message("AdvancedFm", 509 return false;
510 tr( "Could not copy \n%1 \nto \n%2").arg( src ).arg( dest ) ); 510 }
511 return false; 511
512 } 512 return true;
513 513}
514 return true; 514
515} 515
516 516bool AdvancedFm::copyFile( const QString & src, const QString & dest ) {
517 517
518bool AdvancedFm::copyFile( const QString & src, const QString & dest ) { 518
519 519 if(QFileInfo(src).isDir()) {
520 520 if( copyDirectory( src, dest )) {
521 if(QFileInfo(src).isDir()) { 521 setOtherTabCurrent();
522 if( copyDirectory( src, dest )) { 522 populateView();
523 setOtherTabCurrent(); 523 return true;
524 populateView(); 524 }
525 return true; 525 else
526 } 526 return false;
527 else 527 }
528 return false; 528
529 } 529
530 530 bool success = true;
531 531 struct stat status;
532 bool success = true; 532 QFile srcFile(src);
533 struct stat status; 533 QFile destFile(dest);
534 QFile srcFile(src); 534 int err=0;
535 QFile destFile(dest); 535 int read_fd=0;
536 int err=0; 536 int write_fd=0;
537 int read_fd=0; 537 struct stat stat_buf;
538 int write_fd=0; 538 off_t offset = 0;
539 struct stat stat_buf; 539 if(!srcFile.open( IO_ReadOnly|IO_Raw)) {
540 off_t offset = 0; 540// qWarning("open failed");
541 if(!srcFile.open( IO_ReadOnly|IO_Raw)) { 541 return success = false;
542// qWarning("open failed"); 542 }
543 return success = false; 543 read_fd = srcFile.handle();
544 } 544 if(read_fd != -1) {
545 read_fd = srcFile.handle(); 545 fstat (read_fd, &stat_buf);
546 if(read_fd != -1) { 546 if( !destFile.open( IO_WriteOnly|IO_Raw ) ) {
547 fstat (read_fd, &stat_buf); 547// qWarning("destfile open failed");
548 if( !destFile.open( IO_WriteOnly|IO_Raw ) ) { 548 return success = false;
549// qWarning("destfile open failed"); 549 }
550 return success = false; 550 write_fd = destFile.handle();
551 } 551 if(write_fd != -1) {
552 write_fd = destFile.handle(); 552 err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size);
553 if(write_fd != -1) { 553 if( err == -1) {
554 err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size); 554 QString msg;
555 if( err == -1) { 555 switch(err) {
556 QString msg; 556 case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. ";
557 switch(err) { 557 case EINVAL: msg = "Descriptor is not valid or locked. ";
558 case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. "; 558 case ENOMEM: msg = "Insufficient memory to read from in_fd.";
559 case EINVAL: msg = "Descriptor is not valid or locked. "; 559 case EIO: msg = "Unspecified error while reading from in_fd.";
560 case ENOMEM: msg = "Insufficient memory to read from in_fd."; 560 };
561 case EIO: msg = "Unspecified error while reading from in_fd."; 561 success = false;
562 }; 562// qWarning(msg);
563 success = false; 563 }
564// qWarning(msg); 564 } else {
565 } 565 success = false;
566 } else { 566 }
567 success = false; 567 } else {
568 } 568 success = false;
569 } else { 569 }
570 success = false; 570 srcFile.close();
571 } 571 destFile.close();
572 srcFile.close(); 572 // Set file permissions
573 destFile.close(); 573 if( stat( (const char *) src, &status ) == 0 ) {
574 // Set file permissions 574 chmod( (const char *) dest, status.st_mode );
575 if( stat( (const char *) src, &status ) == 0 ) { 575 }
576 chmod( (const char *) dest, status.st_mode ); 576
577 } 577 return success;
578 578}
579 return success; 579
580} 580void AdvancedFm::runCommand() {
581 581 if( !CurrentView()->currentItem()) return;
582void AdvancedFm::runCommand() { 582 QDir *thisDir = CurrentDir();
583 if( !CurrentView()->currentItem()) return; 583
584 QDir *thisDir = CurrentDir(); 584 QString curFile;
585 585 curFile = thisDir->canonicalPath() +"/"+ CurrentView()->currentItem()->text(0);
586 QString curFile; 586
587 curFile = thisDir->canonicalPath() +"/"+ CurrentView()->currentItem()->text(0); 587 InputDialog *fileDlg;
588 588 fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0);
589 InputDialog *fileDlg; 589 fileDlg->setInputText(curFile);
590 fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); 590 fileDlg->exec();
591 fileDlg->setInputText(curFile); 591 //QString command;
592 fileDlg->exec(); 592
593 //QString command; 593 if( fileDlg->result() == 1 ) {
594 594// qDebug(fileDlg->LineEdit1->text());
595 if( fileDlg->result() == 1 ) { 595 QStringList command;
596// qDebug(fileDlg->LineEdit1->text()); 596
597 QStringList command; 597 command << "/bin/sh";
598 598 command << "-c";
599 command << "/bin/sh"; 599 command << fileDlg->LineEdit1->text();
600 command << "-c"; 600 Output *outDlg;
601 command << fileDlg->LineEdit1->text(); 601 outDlg = new Output( command, this, tr("AdvancedFm Output"), true);
602 Output *outDlg; 602 QPEApplication::execDialog( outDlg );
603 outDlg = new Output( command, this, tr("AdvancedFm Output"), true); 603 qApp->processEvents();
604 outDlg->showMaximized(); 604
605 outDlg->exec(); 605 }
606 qApp->processEvents(); 606}
607 607
608 } 608void AdvancedFm::runCommandStd() {
609} 609 if( !CurrentView()->currentItem()) return;
610 610 QString curFile;
611void AdvancedFm::runCommandStd() { 611 QDir *thisDir = CurrentDir();
612 if( !CurrentView()->currentItem()) return; 612 QListView *thisView = CurrentView();
613 QString curFile; 613 if( thisView->currentItem())
614 QDir *thisDir = CurrentDir(); 614 curFile = thisDir->canonicalPath() +"/"+ thisView->currentItem()->text(0);
615 QListView *thisView = CurrentView(); 615
616 if( thisView->currentItem()) 616 InputDialog *fileDlg;
617 curFile = thisDir->canonicalPath() +"/"+ thisView->currentItem()->text(0); 617 fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0);
618 618 fileDlg->setInputText(curFile);
619 InputDialog *fileDlg; 619 fileDlg->exec();
620 fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); 620
621 fileDlg->setInputText(curFile); 621 if( fileDlg->result() == 1 ) {
622 fileDlg->exec(); 622 qApp->processEvents();
623 623 startProcess( (const QString)fileDlg->LineEdit1->text().latin1());
624 if( fileDlg->result() == 1 ) { 624 }
625 qApp->processEvents(); 625}
626 startProcess( (const QString)fileDlg->LineEdit1->text().latin1()); 626
627 } 627void AdvancedFm::fileStatus() {
628} 628 if( !CurrentView()->currentItem()) return;
629 629 QString curFile;
630void AdvancedFm::fileStatus() { 630 curFile = CurrentView()->currentItem()->text(0);
631 if( !CurrentView()->currentItem()) return; 631
632 QString curFile; 632 QStringList command;
633 curFile = CurrentView()->currentItem()->text(0); 633 command << "/bin/sh";
634 634 command << "-c";
635 QStringList command; 635 command << "stat -l "+ curFile;
636 command << "/bin/sh"; 636
637 command << "-c"; 637 Output *outDlg;
638 command << "stat -l "+ curFile; 638 outDlg = new Output( command, this, tr("AdvancedFm Output"), true);
639 639 QPEApplication::execDialog( outDlg );
640 Output *outDlg; 640 qApp->processEvents();
641 outDlg = new Output( command, this, tr("AdvancedFm Output"), true); 641}
642 outDlg->showMaximized(); 642
643 outDlg->exec(); 643
644 qApp->processEvents(); 644void AdvancedFm::mkDir() {
645} 645 makeDir();
646 646}
647 647
648void AdvancedFm::mkDir() { 648void AdvancedFm::rn() {
649 makeDir(); 649 renameIt();
650} 650}
651 651
652void AdvancedFm::rn() { 652void AdvancedFm::del() {
653 renameIt(); 653 doDelete();
654} 654}
655 655
656void AdvancedFm::del() { 656void AdvancedFm::mkSym() {
657 doDelete(); 657 QString cmd;
658} 658 QStringList curFileList = getPath();
659 659 if( curFileList.count() > 0) {
660void AdvancedFm::mkSym() { 660 QDir *thisDir = CurrentDir();
661 QString cmd; 661 QDir * thatDir = OtherDir();
662 QStringList curFileList = getPath(); 662
663 if( curFileList.count() > 0) { 663 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
664 QDir *thisDir = CurrentDir(); 664
665 QDir * thatDir = OtherDir(); 665 QString destName = thatDir->canonicalPath()+"/"+(*it);
666 666 if(destName.right(1) == "/") {
667 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 667 destName = destName.left( destName.length() -1);
668 668 }
669 QString destName = thatDir->canonicalPath()+"/"+(*it); 669
670 if(destName.right(1) == "/") { 670 QString curFile = thisDir->canonicalPath()+"/"+(*it);
671 destName = destName.left( destName.length() -1); 671
672 } 672 if( curFile.right(1) == "/") {
673 673 curFile = curFile.left( curFile.length() -1);
674 QString curFile = thisDir->canonicalPath()+"/"+(*it); 674 }
675 675
676 if( curFile.right(1) == "/") { 676 cmd = "ln -s "+curFile+" "+destName;
677 curFile = curFile.left( curFile.length() -1); 677// qDebug(cmd);
678 } 678 startProcess( (const QString)cmd );
679 679 }
680 cmd = "ln -s "+curFile+" "+destName; 680 rePopulate();
681// qDebug(cmd); 681 setOtherTabCurrent();
682 startProcess( (const QString)cmd ); 682 }
683 } 683}
684 rePopulate(); 684
685 setOtherTabCurrent(); 685void AdvancedFm::doBeam() {
686 } 686 Ir ir;
687} 687 if(!ir.supported()) {
688 688 } else {
689void AdvancedFm::doBeam() { 689 QStringList curFileList = getPath();
690 Ir ir; 690 if( curFileList.count() > 0) {
691 if(!ir.supported()) { 691 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
692 } else { 692 QString curFile = (*it);
693 QStringList curFileList = getPath(); 693 QString curFilePath = CurrentDir()->canonicalPath()+"/"+curFile;
694 if( curFileList.count() > 0) { 694 if( curFilePath.right(1) == "/") {
695 for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { 695 curFilePath = curFilePath.left( curFilePath.length() -1);
696 QString curFile = (*it); 696 }
697 QString curFilePath = CurrentDir()->canonicalPath()+"/"+curFile; 697 Ir *file = new Ir(this, "IR");
698 if( curFilePath.right(1) == "/") { 698 connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * )));
699 curFilePath = curFilePath.left( curFilePath.length() -1); 699 file->send( curFilePath, curFile );
700 } 700 }
701 Ir *file = new Ir(this, "IR"); 701 }
702 connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * ))); 702 }
703 file->send( curFilePath, curFile ); 703}
704 } 704
705 } 705void AdvancedFm::fileBeamFinished( Ir *) {
706 } 706 QMessageBox::message( tr("Advancedfm Beam out"), tr("Ir sent.") ,tr("Ok") );
707} 707}
708 708
709void AdvancedFm::fileBeamFinished( Ir *) { 709void AdvancedFm::selectAll() {
710 QMessageBox::message( tr("Advancedfm Beam out"), tr("Ir sent.") ,tr("Ok") ); 710 QListView *thisView = CurrentView();
711} 711 thisView->selectAll(true);
712 712 thisView->setSelected( thisView->firstChild(),false);
713void AdvancedFm::selectAll() { 713}
714 QListView *thisView = CurrentView(); 714
715 thisView->selectAll(true); 715void AdvancedFm::startProcess(const QString & cmd) {
716 thisView->setSelected( thisView->firstChild(),false); 716 QStringList command;
717} 717 OProcess *process;
718 718 process = new OProcess();
719void AdvancedFm::startProcess(const QString & cmd) { 719 connect(process, SIGNAL(processExited(OProcess *)),
720 QStringList command; 720 this, SLOT( processEnded(OProcess *)));
721 OProcess *process; 721
722 process = new OProcess(); 722 connect(process, SIGNAL( receivedStderr(OProcess *, char *, int)),
723 connect(process, SIGNAL(processExited(OProcess *)), 723 this, SLOT( oprocessStderr(OProcess *, char *, int)));
724 this, SLOT( processEnded(OProcess *))); 724
725 725 command << "/bin/sh";
726 connect(process, SIGNAL( receivedStderr(OProcess *, char *, int)), 726 command << "-c";
727 this, SLOT( oprocessStderr(OProcess *, char *, int))); 727 command << cmd.latin1();
728 728 *process << command;
729 command << "/bin/sh"; 729 if(!process->start(OProcess::NotifyOnExit, OProcess::All) )
730 command << "-c"; 730 qDebug("could not start process");
731 command << cmd.latin1(); 731}
732 *process << command; 732
733 if(!process->start(OProcess::NotifyOnExit, OProcess::All) ) 733void AdvancedFm::processEnded(OProcess *) {
734 qDebug("could not start process"); 734 rePopulate();
735} 735}
736 736
737void AdvancedFm::processEnded(OProcess *) { 737void AdvancedFm::oprocessStderr(OProcess*, char *buffer, int ) {
738 rePopulate(); 738// qWarning("received stderrt %d bytes", buflen);
739} 739
740 740 QString lineStr = buffer;
741void AdvancedFm::oprocessStderr(OProcess*, char *buffer, int ) { 741 QMessageBox::warning( this, tr("Error"), lineStr ,tr("Ok") );
742// qWarning("received stderrt %d bytes", buflen); 742}
743 743
744 QString lineStr = buffer; 744bool AdvancedFm::eventFilter( QObject * o, QEvent * e ) {
745 QMessageBox::warning( this, tr("Error"), lineStr ,tr("Ok") ); 745 if ( o->inherits( "QLineEdit" ) ) {
746} 746 if ( e->type() == QEvent::KeyPress ) {
747 747 QKeyEvent *ke = (QKeyEvent*)e;
748bool AdvancedFm::eventFilter( QObject * o, QEvent * e ) { 748 if ( ke->key() == Key_Return ||
749 if ( o->inherits( "QLineEdit" ) ) { 749 ke->key() == Key_Enter ) {
750 if ( e->type() == QEvent::KeyPress ) { 750 okRename();
751 QKeyEvent *ke = (QKeyEvent*)e; 751 return true;
752 if ( ke->key() == Key_Return || 752 }
753 ke->key() == Key_Enter ) { 753 else if ( ke->key() == Key_Escape ) {
754 okRename(); 754 cancelRename();
755 return true; 755 return true;
756 } 756 }
757 else if ( ke->key() == Key_Escape ) { 757 }
758 cancelRename(); 758 else if ( e->type() == QEvent::FocusOut ) {
759 return true; 759 cancelRename();
760 } 760 return true;
761 } 761 }
762 else if ( e->type() == QEvent::FocusOut ) { 762 }
763 cancelRename(); 763 if ( o->inherits( "QListView" ) ) {
764 return true; 764 if ( e->type() == QEvent::FocusIn ) {
765 } 765 if( o == Local_View) { //keep track of which view
766 } 766 whichTab=1;
767 if ( o->inherits( "QListView" ) ) { 767 }
768 if ( e->type() == QEvent::FocusIn ) { 768 else {
769 if( o == Local_View) { //keep track of which view 769 whichTab=2;
770 whichTab=1; 770 }
771 } 771 }
772 else { 772 OtherView()->setSelected( OtherView()->currentItem(), FALSE );//make sure there's correct selection
773 whichTab=2; 773 }
774 } 774
775 } 775 return QWidget::eventFilter( o, e );
776 OtherView()->setSelected( OtherView()->currentItem(), FALSE );//make sure there's correct selection 776}
777 } 777
778 778
779 return QWidget::eventFilter( o, e ); 779void AdvancedFm::cancelRename() {
780} 780// qDebug("cancel rename");
781 781 QListView * view;
782 782 view = CurrentView();
783void AdvancedFm::cancelRename() { 783
784// qDebug("cancel rename"); 784 bool resetFocus = view->viewport()->focusProxy() == renameBox;
785 QListView * view; 785 delete renameBox;
786 view = CurrentView(); 786 renameBox = 0;
787 787 if ( resetFocus ) {
788 bool resetFocus = view->viewport()->focusProxy() == renameBox; 788 view->viewport()->setFocusProxy( view);
789 delete renameBox; 789 view->setFocus();
790 renameBox = 0; 790 }
791 if ( resetFocus ) { 791}
792 view->viewport()->setFocusProxy( view); 792
793 view->setFocus(); 793void AdvancedFm::doRename(QListView * view) {
794 } 794 if( !CurrentView()->currentItem()) return;
795} 795
796 796 QRect r = view->itemRect( view->currentItem( ));
797void AdvancedFm::doRename(QListView * view) { 797 r = QRect( view->viewportToContents( r.topLeft() ), r.size() );
798 if( !CurrentView()->currentItem()) return; 798 r.setX( view->contentsX() );
799 799
800 QRect r = view->itemRect( view->currentItem( )); 800 if ( r.width() > view->visibleWidth() )
801 r = QRect( view->viewportToContents( r.topLeft() ), r.size() ); 801 r.setWidth( view->visibleWidth() );
802 r.setX( view->contentsX() ); 802
803 803 renameBox = new QLineEdit( view->viewport(), "qt_renamebox" );
804 if ( r.width() > view->visibleWidth() ) 804 renameBox->setFrame(true);
805 r.setWidth( view->visibleWidth() ); 805
806 806 renameBox->setText( view->currentItem()->text(0) );
807 renameBox = new QLineEdit( view->viewport(), "qt_renamebox" ); 807
808 renameBox->setFrame(true); 808 renameBox->selectAll();
809 809 renameBox->installEventFilter( this );
810 renameBox->setText( view->currentItem()->text(0) ); 810
811 811 view->addChild( renameBox, r.x(), r.y() );
812 renameBox->selectAll(); 812
813 renameBox->installEventFilter( this ); 813 renameBox->resize( r.size() );
814 814
815 view->addChild( renameBox, r.x(), r.y() ); 815 view->viewport()->setFocusProxy( renameBox );
816 816
817 renameBox->resize( r.size() ); 817 renameBox->setFocus();
818 818 renameBox->show();
819 view->viewport()->setFocusProxy( renameBox ); 819}
820 820
821 renameBox->setFocus(); 821
822 renameBox->show(); 822void AdvancedFm::renameIt() {
823} 823 if( !CurrentView()->currentItem()) return;
824 824
825 825 QListView *thisView = CurrentView();
826void AdvancedFm::renameIt() { 826 oldName = thisView->currentItem()->text(0);
827 if( !CurrentView()->currentItem()) return; 827 doRename( thisView );
828 828}
829 QListView *thisView = CurrentView(); 829
830 oldName = thisView->currentItem()->text(0); 830void AdvancedFm::okRename() {
831 doRename( thisView ); 831 if( !CurrentView()->currentItem()) return;
832} 832
833 833 QString newName = renameBox->text();
834void AdvancedFm::okRename() { 834 cancelRename();
835 if( !CurrentView()->currentItem()) return; 835 QListView * view = CurrentView();
836 836 QString path = CurrentDir()->canonicalPath() + "/";
837 QString newName = renameBox->text(); 837 oldName = path + oldName;
838 cancelRename(); 838 newName = path + newName;
839 QListView * view = CurrentView(); 839 if( rename( oldName.latin1(), newName.latin1())== -1)
840 QString path = CurrentDir()->canonicalPath() + "/"; 840 QMessageBox::message(tr("Note"),tr("Could not rename"));
841 oldName = path + oldName; 841 else
842 newName = path + newName; 842 oldName = "";
843 if( rename( oldName.latin1(), newName.latin1())== -1) 843 view->takeItem( view->currentItem() );
844 QMessageBox::message(tr("Note"),tr("Could not rename")); 844 delete view->currentItem();
845 else 845 rePopulate();
846 oldName = ""; 846}
847 view->takeItem( view->currentItem() ); 847
848 delete view->currentItem(); 848void AdvancedFm::openSearch() {
849 rePopulate(); 849 QMessageBox::message(tr("Note"),tr("Not Yet Implemented"));
850} 850}
851
852void AdvancedFm::openSearch() {
853 QMessageBox::message(tr("Note"),tr("Not Yet Implemented"));
854}
diff --git a/noncore/apps/checkbook/checkbook.cpp b/noncore/apps/checkbook/checkbook.cpp
index a42c824..a5492e4 100644
--- a/noncore/apps/checkbook/checkbook.cpp
+++ b/noncore/apps/checkbook/checkbook.cpp
@@ -1,789 +1,787 @@
1/* 1/*
2                This file is part of the OPIE Project 2                This file is part of the OPIE Project
3 =. 3 =.
4             .=l. Copyright (c) 2002 Dan Williams <drw@handhelds.org> 4             .=l. Copyright (c) 2002 Dan Williams <drw@handhelds.org>
5           .>+-= 5           .>+-=
6 _;:,     .>    :=|. This file is free software; you can 6 _;:,     .>    :=|. This file is free software; you can
7.> <`_,   >  .   <= redistribute it and/or modify it under 7.> <`_,   >  .   <= redistribute it and/or modify it under
8:`=1 )Y*s>-.--   : the terms of the GNU General Public 8:`=1 )Y*s>-.--   : the terms of the GNU General Public
9.="- .-=="i,     .._ License as published by the Free Software 9.="- .-=="i,     .._ License as published by the Free Software
10 - .   .-<_>     .<> Foundation; either version 2 of the License, 10 - .   .-<_>     .<> Foundation; either version 2 of the License,
11     ._= =}       : or (at your option) any later version. 11     ._= =}       : or (at your option) any later version.
12    .%`+i>       _;_. 12    .%`+i>       _;_.
13    .i_,=:_.      -<s. This file is distributed in the hope that 13    .i_,=:_.      -<s. This file is distributed in the hope that
14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
15    : ..    .:,     . . . without even the implied warranty of 15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General 17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
18..}^=.=       =       ; Public License for more details. 18..}^=.=       =       ; Public License for more details.
19++=   -.     .`     .: 19++=   -.     .`     .:
20 :     =  ...= . :.=- You should have received a copy of the GNU 20 :     =  ...= . :.=- You should have received a copy of the GNU
21 -.   .:....=;==+<; General Public License along with this file; 21 -.   .:....=;==+<; General Public License along with this file;
22  -_. . .   )=.  = see the file COPYING. If not, write to the 22  -_. . .   )=.  = see the file COPYING. If not, write to the
23    --        :-=` Free Software Foundation, Inc., 23    --        :-=` Free Software Foundation, Inc.,
24 59 Temple Place - Suite 330, 24 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 "checkbook.h" 29#include "checkbook.h"
30#include "cbinfo.h" 30#include "cbinfo.h"
31#include "transaction.h" 31#include "transaction.h"
32#include "traninfo.h" 32#include "traninfo.h"
33#include "graph.h" 33#include "graph.h"
34#include "graphinfo.h" 34#include "graphinfo.h"
35#include "password.h" 35#include "password.h"
36#include "mainwindow.h" 36#include "mainwindow.h"
37#include "cfg.h" 37#include "cfg.h"
38 38
39#include <opie/otabwidget.h> 39#include <opie/otabwidget.h>
40#include <qpe/qpeapplication.h> 40#include <qpe/qpeapplication.h>
41#include <qpe/qpemessagebox.h> 41#include <qpe/qpemessagebox.h>
42#include <qpe/resource.h> 42#include <qpe/resource.h>
43 43
44#include <qcheckbox.h> 44#include <qcheckbox.h>
45#include <qcombobox.h> 45#include <qcombobox.h>
46#include <qlabel.h> 46#include <qlabel.h>
47#include <qlayout.h> 47#include <qlayout.h>
48#include <qlineedit.h> 48#include <qlineedit.h>
49#include <qmultilineedit.h> 49#include <qmultilineedit.h>
50#include <qpushbutton.h> 50#include <qpushbutton.h>
51#include <qwhatsthis.h> 51#include <qwhatsthis.h>
52#include <qpopupmenu.h> 52#include <qpopupmenu.h>
53 53
54#define COL_ID 0 54#define COL_ID 0
55#define COL_SORTDATE 1 55#define COL_SORTDATE 1
56#define COL_NUM 2 56#define COL_NUM 2
57#define COL_DATE 3 57#define COL_DATE 3
58#define COL_DESC 4 58#define COL_DESC 4
59#define COL_AMOUNT 5 59#define COL_AMOUNT 5
60#define COL_BAL 6 60#define COL_BAL 6
61 61
62// --- Checkbook -------------------------------------------------------------- 62// --- Checkbook --------------------------------------------------------------
63Checkbook::Checkbook( QWidget *parent, CBInfo *i, Cfg *cfg ) 63Checkbook::Checkbook( QWidget *parent, CBInfo *i, Cfg *cfg )
64 : QDialog( parent, 0, TRUE, WStyle_ContextHelp ) 64 : QDialog( parent, 0, TRUE, WStyle_ContextHelp )
65{ 65{
66 info = i; 66 info = i;
67 _pCfg=cfg; 67 _pCfg=cfg;
68 68
69 // Title bar 69 // Title bar
70 if ( info->name() != "" ) 70 if ( info->name() != "" )
71 { 71 {
72 QString tempstr = info->name(); 72 QString tempstr = info->name();
73 tempstr.append( " - " ); 73 tempstr.append( " - " );
74 tempstr.append( tr( "Checkbook" ) ); 74 tempstr.append( tr( "Checkbook" ) );
75 setCaption( tempstr ); 75 setCaption( tempstr );
76 } 76 }
77 else 77 else
78 { 78 {
79 setCaption( tr( "New checkbook" ) ); 79 setCaption( tr( "New checkbook" ) );
80 } 80 }
81 81
82 82
83 // Setup layout to make everything pretty 83 // Setup layout to make everything pretty
84 QVBoxLayout *layout = new QVBoxLayout( this ); 84 QVBoxLayout *layout = new QVBoxLayout( this );
85 layout->setMargin( 2 ); 85 layout->setMargin( 2 );
86 layout->setSpacing( 4 ); 86 layout->setSpacing( 4 );
87 87
88 // Setup tabs for all info 88 // Setup tabs for all info
89 mainWidget = new OTabWidget( this ); 89 mainWidget = new OTabWidget( this );
90 layout->addWidget( mainWidget ); 90 layout->addWidget( mainWidget );
91 mainWidget->addTab( initInfo(), "checkbook/infotab", tr( "Info" ) ); 91 mainWidget->addTab( initInfo(), "checkbook/infotab", tr( "Info" ) );
92 mainWidget->addTab( initTransactions(), "checkbook/trantab", tr( "Transactions" ) ); 92 mainWidget->addTab( initTransactions(), "checkbook/trantab", tr( "Transactions" ) );
93 mainWidget->addTab( initCharts(), "checkbook/charttab", tr( "Charts" ) ); 93 mainWidget->addTab( initCharts(), "checkbook/charttab", tr( "Charts" ) );
94 if( _pCfg->isShowLastTab() ) 94 if( _pCfg->isShowLastTab() )
95 mainWidget->setCurrentTab( info->getLastTab() ); 95 mainWidget->setCurrentTab( info->getLastTab() );
96 else 96 else
97 mainWidget->setCurrentTab( tr( "Info" ) ); 97 mainWidget->setCurrentTab( tr( "Info" ) );
98 connect( mainWidget, SIGNAL( currentChanged(QWidget *) ), this, SLOT( slotTab(QWidget *) ) ); 98 connect( mainWidget, SIGNAL( currentChanged(QWidget *) ), this, SLOT( slotTab(QWidget *) ) );
99 99
100 // Load checkbook information 100 // Load checkbook information
101 loadCheckbook(); 101 loadCheckbook();
102} 102}
103 103
104Checkbook::~Checkbook() 104Checkbook::~Checkbook()
105{ 105{
106} 106}
107 107
108// --- initInfo --------------------------------------------------------------- 108// --- initInfo ---------------------------------------------------------------
109QWidget *Checkbook::initInfo() 109QWidget *Checkbook::initInfo()
110{ 110{
111 QWidget *control = new QWidget( mainWidget, tr("Info") ); 111 QWidget *control = new QWidget( mainWidget, tr("Info") );
112 112
113 QVBoxLayout *vb = new QVBoxLayout( control ); 113 QVBoxLayout *vb = new QVBoxLayout( control );
114 114
115 QScrollView *sv = new QScrollView( control ); 115 QScrollView *sv = new QScrollView( control );
116 vb->addWidget( sv, 0, 0 ); 116 vb->addWidget( sv, 0, 0 );
117 sv->setResizePolicy( QScrollView::AutoOneFit ); 117 sv->setResizePolicy( QScrollView::AutoOneFit );
118 sv->setFrameStyle( QFrame::NoFrame ); 118 sv->setFrameStyle( QFrame::NoFrame );
119 119
120 QWidget *container = new QWidget( sv->viewport() ); 120 QWidget *container = new QWidget( sv->viewport() );
121 sv->addChild( container ); 121 sv->addChild( container );
122 122
123 QGridLayout *layout = new QGridLayout( container ); 123 QGridLayout *layout = new QGridLayout( container );
124 layout->setSpacing( 2 ); 124 layout->setSpacing( 2 );
125 layout->setMargin( 4 ); 125 layout->setMargin( 4 );
126 126
127 // Password protection 127 // Password protection
128 passwordCB = new QCheckBox( tr( "Password protect" ), container ); 128 passwordCB = new QCheckBox( tr( "Password protect" ), container );
129 QWhatsThis::add( passwordCB, tr( "Click here to enable/disable password protection of this checkbook." ) ); 129 QWhatsThis::add( passwordCB, tr( "Click here to enable/disable password protection of this checkbook." ) );
130 connect( passwordCB, SIGNAL( clicked() ), this, SLOT( slotPasswordClicked() ) ); 130 connect( passwordCB, SIGNAL( clicked() ), this, SLOT( slotPasswordClicked() ) );
131 layout->addMultiCellWidget( passwordCB, 0, 0, 0, 1 ); 131 layout->addMultiCellWidget( passwordCB, 0, 0, 0, 1 );
132 132
133 // Account name 133 // Account name
134 QLabel *label = new QLabel( tr( "Name:" ), container ); 134 QLabel *label = new QLabel( tr( "Name:" ), container );
135 QWhatsThis::add( label, tr( "Enter name of checkbook here." ) ); 135 QWhatsThis::add( label, tr( "Enter name of checkbook here." ) );
136 layout->addWidget( label, 1, 0 ); 136 layout->addWidget( label, 1, 0 );
137 nameEdit = new QLineEdit( container ); 137 nameEdit = new QLineEdit( container );
138 QWhatsThis::add( nameEdit, tr( "Enter name of checkbook here." ) ); 138 QWhatsThis::add( nameEdit, tr( "Enter name of checkbook here." ) );
139 connect( nameEdit, SIGNAL( textChanged( const QString & ) ), 139 connect( nameEdit, SIGNAL( textChanged( const QString & ) ),
140 this, SLOT( slotNameChanged( const QString & ) ) ); 140 this, SLOT( slotNameChanged( const QString & ) ) );
141 layout->addWidget( nameEdit, 1, 1 ); 141 layout->addWidget( nameEdit, 1, 1 );
142 142
143 // Type of account 143 // Type of account
144 label = new QLabel( tr( "Type:" ), container ); 144 label = new QLabel( tr( "Type:" ), container );
145 QWhatsThis::add( label, tr( "Select type of checkbook here." ) ); 145 QWhatsThis::add( label, tr( "Select type of checkbook here." ) );
146 layout->addWidget( label, 2, 0 ); 146 layout->addWidget( label, 2, 0 );
147 typeList = new QComboBox( container ); 147 typeList = new QComboBox( container );
148 QWhatsThis::add( typeList, tr( "Select type of checkbook here." ) ); 148 QWhatsThis::add( typeList, tr( "Select type of checkbook here." ) );
149 typeList->insertStringList( _pCfg->getAccountTypes() ); 149 typeList->insertStringList( _pCfg->getAccountTypes() );
150 layout->addWidget( typeList, 2, 1 ); 150 layout->addWidget( typeList, 2, 1 );
151 151
152 // Bank/institution name 152 // Bank/institution name
153 label = new QLabel( tr( "Bank:" ), container ); 153 label = new QLabel( tr( "Bank:" ), container );
154 QWhatsThis::add( label, tr( "Enter name of the bank for this checkbook here." ) ); 154 QWhatsThis::add( label, tr( "Enter name of the bank for this checkbook here." ) );
155 layout->addWidget( label, 3, 0 ); 155 layout->addWidget( label, 3, 0 );
156 bankEdit = new QLineEdit( container ); 156 bankEdit = new QLineEdit( container );
157 QWhatsThis::add( bankEdit, tr( "Enter name of the bank for this checkbook here." ) ); 157 QWhatsThis::add( bankEdit, tr( "Enter name of the bank for this checkbook here." ) );
158 layout->addWidget( bankEdit, 3, 1 ); 158 layout->addWidget( bankEdit, 3, 1 );
159 159
160 // Account number 160 // Account number
161 label = new QLabel( tr( "Account number:" ), container ); 161 label = new QLabel( tr( "Account number:" ), container );
162 QWhatsThis::add( label, tr( "Enter account number for this checkbook here." ) ); 162 QWhatsThis::add( label, tr( "Enter account number for this checkbook here." ) );
163 layout->addWidget( label, 4, 0 ); 163 layout->addWidget( label, 4, 0 );
164 acctNumEdit = new QLineEdit( container ); 164 acctNumEdit = new QLineEdit( container );
165 QWhatsThis::add( acctNumEdit, tr( "Enter account number for this checkbook here." ) ); 165 QWhatsThis::add( acctNumEdit, tr( "Enter account number for this checkbook here." ) );
166 layout->addWidget( acctNumEdit, 4, 1 ); 166 layout->addWidget( acctNumEdit, 4, 1 );
167 167
168 // PIN number 168 // PIN number
169 label = new QLabel( tr( "PIN number:" ), container ); 169 label = new QLabel( tr( "PIN number:" ), container );
170 QWhatsThis::add( label, tr( "Enter PIN number for this checkbook here." ) ); 170 QWhatsThis::add( label, tr( "Enter PIN number for this checkbook here." ) );
171 layout->addWidget( label, 5, 0 ); 171 layout->addWidget( label, 5, 0 );
172 pinNumEdit = new QLineEdit( container ); 172 pinNumEdit = new QLineEdit( container );
173 QWhatsThis::add( pinNumEdit, tr( "Enter PIN number for this checkbook here." ) ); 173 QWhatsThis::add( pinNumEdit, tr( "Enter PIN number for this checkbook here." ) );
174 layout->addWidget( pinNumEdit, 5, 1 ); 174 layout->addWidget( pinNumEdit, 5, 1 );
175 175
176 // Starting balance 176 // Starting balance
177 label = new QLabel( tr( "Starting balance:" ), container ); 177 label = new QLabel( tr( "Starting balance:" ), container );
178 QWhatsThis::add( label, tr( "Enter the initial balance for this checkbook here." ) ); 178 QWhatsThis::add( label, tr( "Enter the initial balance for this checkbook here." ) );
179 layout->addWidget( label, 6, 0 ); 179 layout->addWidget( label, 6, 0 );
180 balanceEdit = new QLineEdit( container ); 180 balanceEdit = new QLineEdit( container );
181 QWhatsThis::add( balanceEdit, tr( "Enter the initial balance for this checkbook here." ) ); 181 QWhatsThis::add( balanceEdit, tr( "Enter the initial balance for this checkbook here." ) );
182 connect( balanceEdit, SIGNAL( textChanged( const QString & ) ), 182 connect( balanceEdit, SIGNAL( textChanged( const QString & ) ),
183 this, SLOT( slotStartingBalanceChanged( const QString & ) ) ); 183 this, SLOT( slotStartingBalanceChanged( const QString & ) ) );
184 layout->addWidget( balanceEdit, 6, 1 ); 184 layout->addWidget( balanceEdit, 6, 1 );
185 185
186 // Notes 186 // Notes
187 label = new QLabel( tr( "Notes:" ), container ); 187 label = new QLabel( tr( "Notes:" ), container );
188 QWhatsThis::add( label, tr( "Enter any additional information for this checkbook here." ) ); 188 QWhatsThis::add( label, tr( "Enter any additional information for this checkbook here." ) );
189 layout->addWidget( label, 7, 0 ); 189 layout->addWidget( label, 7, 0 );
190 notesEdit = new QMultiLineEdit( container ); 190 notesEdit = new QMultiLineEdit( container );
191 QWhatsThis::add( notesEdit, tr( "Enter any additional information for this checkbook here." ) ); 191 QWhatsThis::add( notesEdit, tr( "Enter any additional information for this checkbook here." ) );
192 notesEdit->setMinimumHeight( 25 ); 192 notesEdit->setMinimumHeight( 25 );
193 notesEdit->setMaximumHeight( 65 ); 193 notesEdit->setMaximumHeight( 65 );
194 layout->addMultiCellWidget( notesEdit, 8, 8, 0, 1 ); 194 layout->addMultiCellWidget( notesEdit, 8, 8, 0, 1 );
195 195
196 return control; 196 return control;
197} 197}
198 198
199 199
200// --- initTransactions ------------------------------------------------------- 200// --- initTransactions -------------------------------------------------------
201QWidget *Checkbook::initTransactions() 201QWidget *Checkbook::initTransactions()
202{ 202{
203 QWidget *control = new QWidget( mainWidget, tr("Transactions") ); 203 QWidget *control = new QWidget( mainWidget, tr("Transactions") );
204 204
205 QGridLayout *layout = new QGridLayout( control ); 205 QGridLayout *layout = new QGridLayout( control );
206 layout->setSpacing( 2 ); 206 layout->setSpacing( 2 );
207 layout->setMargin( 4 ); 207 layout->setMargin( 4 );
208 208
209 // Sort selector 209 // Sort selector
210 QLabel *label = new QLabel( tr( "Sort by:" ), control ); 210 QLabel *label = new QLabel( tr( "Sort by:" ), control );
211 QWhatsThis::add( label, tr( "Select checkbook sorting here." ) ); 211 QWhatsThis::add( label, tr( "Select checkbook sorting here." ) );
212 layout->addMultiCellWidget( label, 0, 0, 0, 1 ); 212 layout->addMultiCellWidget( label, 0, 0, 0, 1 );
213 _cbSortType=new QComboBox( control ); 213 _cbSortType=new QComboBox( control );
214 _cbSortType->insertItem( tr("Entry Order") ); 214 _cbSortType->insertItem( tr("Entry Order") );
215 _cbSortType->insertItem( tr("Date") ); 215 _cbSortType->insertItem( tr("Date") );
216 _cbSortType->insertItem( tr("Number") ); 216 _cbSortType->insertItem( tr("Number") );
217 layout->addMultiCellWidget( _cbSortType, 0, 0, 1, 2 ); 217 layout->addMultiCellWidget( _cbSortType, 0, 0, 1, 2 );
218 connect( _cbSortType, SIGNAL( activated(const QString &) ), this, SLOT( slotSortChanged( const QString & ) ) ); 218 connect( _cbSortType, SIGNAL( activated(const QString &) ), this, SLOT( slotSortChanged( const QString & ) ) );
219 219
220 // Table 220 // Table
221 tranTable = new QListView( control ); 221 tranTable = new QListView( control );
222 QFont fnt(QPEApplication::font()); 222 QFont fnt(QPEApplication::font());
223 fnt.setPointSize( fnt.pointSize()-1 ); 223 fnt.setPointSize( fnt.pointSize()-1 );
224 tranTable->setFont( fnt ); 224 tranTable->setFont( fnt );
225 QWhatsThis::add( tranTable, tr( "This is a listing of all transactions entered for this checkbook.\n\nTo sort entries by a specific field, click on the column name." ) ); 225 QWhatsThis::add( tranTable, tr( "This is a listing of all transactions entered for this checkbook.\n\nTo sort entries by a specific field, click on the column name." ) );
226 tranTable->addColumn( tr( "Id" ) ); 226 tranTable->addColumn( tr( "Id" ) );
227 tranTable->setColumnWidthMode( COL_ID, QListView::Manual ); 227 tranTable->setColumnWidthMode( COL_ID, QListView::Manual );
228 tranTable->setColumnWidth( COL_ID, 0); 228 tranTable->setColumnWidth( COL_ID, 0);
229 tranTable->addColumn( tr( "SortDate" ) ); 229 tranTable->addColumn( tr( "SortDate" ) );
230 tranTable->setColumnWidthMode( COL_SORTDATE, QListView::Manual ); 230 tranTable->setColumnWidthMode( COL_SORTDATE, QListView::Manual );
231 tranTable->setColumnWidth( COL_SORTDATE, 0); 231 tranTable->setColumnWidth( COL_SORTDATE, 0);
232 tranTable->addColumn( tr( "Num" ) ); 232 tranTable->addColumn( tr( "Num" ) );
233 tranTable->addColumn( tr( "Date" ) ); 233 tranTable->addColumn( tr( "Date" ) );
234 //tranTable->addColumn( tr( "Cleared" ) ); 234 //tranTable->addColumn( tr( "Cleared" ) );
235 tranTable->addColumn( tr( "Description" ) ); 235 tranTable->addColumn( tr( "Description" ) );
236 int column = tranTable->addColumn( tr( "Amount" ) ); 236 int column = tranTable->addColumn( tr( "Amount" ) );
237 tranTable->setColumnAlignment( column, Qt::AlignRight ); 237 tranTable->setColumnAlignment( column, Qt::AlignRight );
238 column=tranTable->addColumn( tr("Balance") ); 238 column=tranTable->addColumn( tr("Balance") );
239 tranTable->setColumnAlignment( column, Qt::AlignRight ); 239 tranTable->setColumnAlignment( column, Qt::AlignRight );
240 tranTable->setAllColumnsShowFocus( TRUE ); 240 tranTable->setAllColumnsShowFocus( TRUE );
241 tranTable->setSorting( -1 ); 241 tranTable->setSorting( -1 );
242 layout->addMultiCellWidget( tranTable, 1, 1, 0, 2 ); 242 layout->addMultiCellWidget( tranTable, 1, 1, 0, 2 );
243 QPEApplication::setStylusOperation( tranTable->viewport(), QPEApplication::RightOnHold ); 243 QPEApplication::setStylusOperation( tranTable->viewport(), QPEApplication::RightOnHold );
244 connect( tranTable, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint &, int ) ), 244 connect( tranTable, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint &, int ) ),
245 this, SLOT( slotMenuTran(QListViewItem *, const QPoint &) ) ); 245 this, SLOT( slotMenuTran(QListViewItem *, const QPoint &) ) );
246 connect( tranTable, SIGNAL( doubleClicked( QListViewItem * ) ), 246 connect( tranTable, SIGNAL( doubleClicked( QListViewItem * ) ),
247 this, SLOT( slotEditTran() ) ); 247 this, SLOT( slotEditTran() ) );
248 _sortCol=COL_ID; 248 _sortCol=COL_ID;
249 249
250 // Buttons 250 // Buttons
251 QPushButton *btn = new QPushButton( Resource::loadPixmap( "new" ), tr( "New" ), control ); 251 QPushButton *btn = new QPushButton( Resource::loadPixmap( "new" ), tr( "New" ), control );
252 QWhatsThis::add( btn, tr( "Click here to add a new transaction." ) ); 252 QWhatsThis::add( btn, tr( "Click here to add a new transaction." ) );
253 connect( btn, SIGNAL( clicked() ), this, SLOT( slotNewTran() ) ); 253 connect( btn, SIGNAL( clicked() ), this, SLOT( slotNewTran() ) );
254 layout->addWidget( btn, 2, 0 ); 254 layout->addWidget( btn, 2, 0 );
255 255
256 btn = new QPushButton( Resource::loadPixmap( "edit" ), tr( "Edit" ), control ); 256 btn = new QPushButton( Resource::loadPixmap( "edit" ), tr( "Edit" ), control );
257 QWhatsThis::add( btn, tr( "Select a transaction and then click here to edit it." ) ); 257 QWhatsThis::add( btn, tr( "Select a transaction and then click here to edit it." ) );
258 connect( btn, SIGNAL( clicked() ), this, SLOT( slotEditTran() ) ); 258 connect( btn, SIGNAL( clicked() ), this, SLOT( slotEditTran() ) );
259 layout->addWidget( btn, 2, 1 ); 259 layout->addWidget( btn, 2, 1 );
260 260
261 btn = new QPushButton( Resource::loadPixmap( "trash" ), tr( "Delete" ), control ); 261 btn = new QPushButton( Resource::loadPixmap( "trash" ), tr( "Delete" ), control );
262 QWhatsThis::add( btn, tr( "Select a checkbook and then click here to delete it." ) ); 262 QWhatsThis::add( btn, tr( "Select a checkbook and then click here to delete it." ) );
263 connect( btn, SIGNAL( clicked() ), this, SLOT( slotDeleteTran() ) ); 263 connect( btn, SIGNAL( clicked() ), this, SLOT( slotDeleteTran() ) );
264 layout->addWidget( btn, 2, 2 ); 264 layout->addWidget( btn, 2, 2 );
265 265
266 return( control ); 266 return( control );
267} 267}
268 268
269 269
270// --- initCharts ------------------------------------------------------------- 270// --- initCharts -------------------------------------------------------------
271QWidget *Checkbook::initCharts() 271QWidget *Checkbook::initCharts()
272{ 272{
273 graphInfo = 0x0; 273 graphInfo = 0x0;
274 274
275 QWidget *control = new QWidget( mainWidget, tr("Charts") ); 275 QWidget *control = new QWidget( mainWidget, tr("Charts") );
276 276
277 QGridLayout *layout = new QGridLayout( control ); 277 QGridLayout *layout = new QGridLayout( control );
278 layout->setSpacing( 2 ); 278 layout->setSpacing( 2 );
279 layout->setMargin( 4 ); 279 layout->setMargin( 4 );
280 280
281 graphWidget = new Graph( control ); 281 graphWidget = new Graph( control );
282 QWhatsThis::add( graphWidget, tr( "Select the desired chart below and then click on the Draw button." ) ); 282 QWhatsThis::add( graphWidget, tr( "Select the desired chart below and then click on the Draw button." ) );
283 layout->addMultiCellWidget( graphWidget, 0, 0, 0, 2 ); 283 layout->addMultiCellWidget( graphWidget, 0, 0, 0, 2 );
284 284
285 graphList = new QComboBox( control ); 285 graphList = new QComboBox( control );
286 QWhatsThis::add( graphList, tr( "Click here to select the desired chart type." ) ); 286 QWhatsThis::add( graphList, tr( "Click here to select the desired chart type." ) );
287 graphList->insertItem( tr( "Account balance" ) ); 287 graphList->insertItem( tr( "Account balance" ) );
288 graphList->insertItem( tr( "Withdrawals by category" ) ); 288 graphList->insertItem( tr( "Withdrawals by category" ) );
289 graphList->insertItem( tr( "Deposits by category" ) ); 289 graphList->insertItem( tr( "Deposits by category" ) );
290 290
291 layout->addMultiCellWidget( graphList, 1, 1, 0, 1 ); 291 layout->addMultiCellWidget( graphList, 1, 1, 0, 1 );
292 292
293 QPushButton *btn = new QPushButton( Resource::loadPixmap( "checkbook/drawbtn" ), tr( "Draw" ), control ); 293 QPushButton *btn = new QPushButton( Resource::loadPixmap( "checkbook/drawbtn" ), tr( "Draw" ), control );
294 QWhatsThis::add( btn, tr( "Click here to draw the selected chart." ) ); 294 QWhatsThis::add( btn, tr( "Click here to draw the selected chart." ) );
295 connect( btn, SIGNAL( clicked() ), this, SLOT( slotDrawGraph() ) ); 295 connect( btn, SIGNAL( clicked() ), this, SLOT( slotDrawGraph() ) );
296 layout->addWidget( btn, 1, 2 ); 296 layout->addWidget( btn, 1, 2 );
297 297
298 return control; 298 return control;
299} 299}
300 300
301// --- loadCheckbook ---------------------------------------------------------- 301// --- loadCheckbook ----------------------------------------------------------
302void Checkbook::loadCheckbook() 302void Checkbook::loadCheckbook()
303{ 303{
304 if ( !info ) 304 if ( !info )
305 { 305 {
306 return; 306 return;
307 } 307 }
308 308
309 tranList = info->transactions(); 309 tranList = info->transactions();
310 310
311 passwordCB->setChecked( !info->password().isNull() ); 311 passwordCB->setChecked( !info->password().isNull() );
312 nameEdit->setText( info->name() ); 312 nameEdit->setText( info->name() );
313 QString temptext = info->type(); 313 QString temptext = info->type();
314 int i = typeList->count(); 314 int i = typeList->count();
315 while ( i > 0 ) 315 while ( i > 0 )
316 { 316 {
317 i--; 317 i--;
318 typeList->setCurrentItem( i ); 318 typeList->setCurrentItem( i );
319 if ( typeList->currentText() == temptext ) 319 if ( typeList->currentText() == temptext )
320 { 320 {
321 break; 321 break;
322 } 322 }
323 } 323 }
324 if( i<=0 ) { 324 if( i<=0 ) {
325 typeList->insertItem( temptext, 0 ); 325 typeList->insertItem( temptext, 0 );
326 typeList->setCurrentItem(0); 326 typeList->setCurrentItem(0);
327 } 327 }
328 bankEdit->setText( info->bank() ); 328 bankEdit->setText( info->bank() );
329 acctNumEdit->setText( info->account() ); 329 acctNumEdit->setText( info->account() );
330 pinNumEdit->setText( info->pin() ); 330 pinNumEdit->setText( info->pin() );
331 temptext.setNum( info->startingBalance(), 'f', 2 ); 331 temptext.setNum( info->startingBalance(), 'f', 2 );
332 balanceEdit->setText( temptext ); 332 balanceEdit->setText( temptext );
333 notesEdit->setText( info->notes() ); 333 notesEdit->setText( info->notes() );
334 334
335 // Load transactions 335 // Load transactions
336 float amount; 336 float amount;
337 QString stramount; 337 QString stramount;
338 for ( TranInfo *tran = tranList->first(); tran; tran = tranList->next() ) 338 for ( TranInfo *tran = tranList->first(); tran; tran = tranList->next() )
339 { 339 {
340 amount = tran->amount(); 340 amount = tran->amount();
341 if ( tran->withdrawal() ) 341 if ( tran->withdrawal() )
342 { 342 {
343 amount *= -1; 343 amount *= -1;
344 } 344 }
345 stramount.sprintf( "%s%.2f", _pCfg->getCurrencySymbol().latin1(), amount ); 345 stramount.sprintf( "%s%.2f", _pCfg->getCurrencySymbol().latin1(), amount );
346 ( void ) new CBListItem( tran, tranTable, tran->getIdStr(), tran->datestr(false), tran->number(), tran->datestr(true), tran->desc(), stramount ); 346 ( void ) new CBListItem( tran, tranTable, tran->getIdStr(), tran->datestr(false), tran->number(), tran->datestr(true), tran->desc(), stramount );
347 } 347 }
348 348
349 // set sort order 349 // set sort order
350 bool bOk=false; 350 bool bOk=false;
351 for(int i=0; i<_cbSortType->count(); i++) { 351 for(int i=0; i<_cbSortType->count(); i++) {
352 if( _cbSortType->text(i)==info->getSortOrder() ) { 352 if( _cbSortType->text(i)==info->getSortOrder() ) {
353 _cbSortType->setCurrentItem(i); 353 _cbSortType->setCurrentItem(i);
354 slotSortChanged( info->getSortOrder() ); 354 slotSortChanged( info->getSortOrder() );
355 bOk=true; 355 bOk=true;
356 break; 356 break;
357 } 357 }
358 } 358 }
359 if( !bOk ) { 359 if( !bOk ) {
360 _cbSortType->setCurrentItem(0); 360 _cbSortType->setCurrentItem(0);
361 slotSortChanged( _cbSortType->currentText() ); 361 slotSortChanged( _cbSortType->currentText() );
362 } 362 }
363 363
364 // calc running balance 364 // calc running balance
365 adjustBalance(); 365 adjustBalance();
366} 366}
367 367
368 368
369// --- adjustBalance ---------------------------------------------------------- 369// --- adjustBalance ----------------------------------------------------------
370void Checkbook::adjustBalance() 370void Checkbook::adjustBalance()
371{ 371{
372 // update running balance in register 372 // update running balance in register
373 QString sRunning; 373 QString sRunning;
374 float bal=info->startingBalance(); 374 float bal=info->startingBalance();
375 for(CBListItem *item=(CBListItem *)tranTable->firstChild(); item; item=(CBListItem *)item->nextSibling() ) { 375 for(CBListItem *item=(CBListItem *)tranTable->firstChild(); item; item=(CBListItem *)item->nextSibling() ) {
376 TranInfo *tran=item->getTranInfo(); 376 TranInfo *tran=item->getTranInfo();
377 bal=bal + (tran->withdrawal() ? -1 : 1)*tran->amount() - tran->fee(); 377 bal=bal + (tran->withdrawal() ? -1 : 1)*tran->amount() - tran->fee();
378 sRunning.sprintf( "%s%.2f", _pCfg->getCurrencySymbol().latin1(), bal ); 378 sRunning.sprintf( "%s%.2f", _pCfg->getCurrencySymbol().latin1(), bal );
379 item->setText( COL_BAL, sRunning); 379 item->setText( COL_BAL, sRunning);
380 } 380 }
381} 381}
382 382
383// --- resort ----------------------------------------------------------------- 383// --- resort -----------------------------------------------------------------
384void Checkbook::resort() 384void Checkbook::resort()
385{ 385{
386 tranTable->setSorting(_sortCol); 386 tranTable->setSorting(_sortCol);
387 tranTable->sort(); 387 tranTable->sort();
388 tranTable->setSorting(-1); 388 tranTable->setSorting(-1);
389} 389}
390 390
391 391
392// --- accept ----------------------------------------------------------------- 392// --- accept -----------------------------------------------------------------
393void Checkbook::accept() 393void Checkbook::accept()
394{ 394{
395 info->setName( nameEdit->text() ); 395 info->setName( nameEdit->text() );
396 info->setType( typeList->currentText() ); 396 info->setType( typeList->currentText() );
397 info->setBank( bankEdit->text() ); 397 info->setBank( bankEdit->text() );
398 info->setAccount( acctNumEdit->text() ); 398 info->setAccount( acctNumEdit->text() );
399 info->setPin( pinNumEdit->text() ); 399 info->setPin( pinNumEdit->text() );
400 bool ok; 400 bool ok;
401 info->setStartingBalance( balanceEdit->text().toFloat( &ok ) ); 401 info->setStartingBalance( balanceEdit->text().toFloat( &ok ) );
402 info->setNotes( notesEdit->text() ); 402 info->setNotes( notesEdit->text() );
403 403
404 QDialog::accept(); 404 QDialog::accept();
405} 405}
406 406
407// --- slotPasswordClicked ---------------------------------------------------- 407// --- slotPasswordClicked ----------------------------------------------------
408void Checkbook::slotPasswordClicked() 408void Checkbook::slotPasswordClicked()
409{ 409{
410 if ( info->password().isNull() && passwordCB->isChecked() ) 410 if ( info->password().isNull() && passwordCB->isChecked() )
411 { 411 {
412 Password *pw = new Password( this, tr( "Enter password" ), tr( "Please enter your password:" ) ); 412 Password *pw = new Password( this, tr( "Enter password" ), tr( "Please enter your password:" ) );
413 if ( pw->exec() != QDialog::Accepted ) 413 if ( pw->exec() != QDialog::Accepted )
414 { 414 {
415 passwordCB->setChecked( FALSE ); 415 passwordCB->setChecked( FALSE );
416 delete pw; 416 delete pw;
417 return; 417 return;
418 } 418 }
419 info->setPassword( pw->password ); 419 info->setPassword( pw->password );
420 delete pw; 420 delete pw;
421 421
422 pw = new Password( this, tr( "Confirm password" ), tr( "Please confirm your password:" ) ); 422 pw = new Password( this, tr( "Confirm password" ), tr( "Please confirm your password:" ) );
423 if ( pw->exec() != QDialog::Accepted || pw->password != info->password() ) 423 if ( pw->exec() != QDialog::Accepted || pw->password != info->password() )
424 { 424 {
425 passwordCB->setChecked( FALSE ); 425 passwordCB->setChecked( FALSE );
426 info->setPassword( QString::null ); 426 info->setPassword( QString::null );
427 } 427 }
428 428
429 delete pw; 429 delete pw;
430 } 430 }
431 else if ( !info->password().isNull() && !passwordCB->isChecked() ) 431 else if ( !info->password().isNull() && !passwordCB->isChecked() )
432 { 432 {
433 Password *pw = new Password( this, tr( "Enter password" ), 433 Password *pw = new Password( this, tr( "Enter password" ),
434 tr( "Please enter your password to confirm removal of password protection:" ) ); 434 tr( "Please enter your password to confirm removal of password protection:" ) );
435 if ( pw->exec() == QDialog::Accepted && pw->password == info->password() ) 435 if ( pw->exec() == QDialog::Accepted && pw->password == info->password() )
436 { 436 {
437 info->setPassword( QString::null ); 437 info->setPassword( QString::null );
438 delete pw; 438 delete pw;
439 return; 439 return;
440 } 440 }
441 else 441 else
442 { 442 {
443 passwordCB->setChecked( TRUE ); 443 passwordCB->setChecked( TRUE );
444 } 444 }
445 445
446 delete pw; 446 delete pw;
447 } 447 }
448} 448}
449 449
450void Checkbook::slotNameChanged( const QString &newname ) 450void Checkbook::slotNameChanged( const QString &newname )
451{ 451{
452 info->setName( newname ); 452 info->setName( newname );
453 453
454 // TODO - need filedir 454 // TODO - need filedir
455 //QString namestr = filedir; 455 //QString namestr = filedir;
456 //namestr.append( newname ); 456 //namestr.append( newname );
457 //namestr.append( ".qcb" ); 457 //namestr.append( ".qcb" );
458 //info->setFilename( namestr ); 458 //info->setFilename( namestr );
459 459
460 QString namestr = newname; 460 QString namestr = newname;
461 namestr.append( " - " ); 461 namestr.append( " - " );
462 namestr.append( tr( "Checkbook" ) ); 462 namestr.append( tr( "Checkbook" ) );
463 setCaption( namestr ); 463 setCaption( namestr );
464} 464}
465 465
466 466
467// ---slotStartingBalanceChanged ---------------------------------------------- 467// ---slotStartingBalanceChanged ----------------------------------------------
468void Checkbook::slotStartingBalanceChanged( const QString &newbalance ) 468void Checkbook::slotStartingBalanceChanged( const QString &newbalance )
469{ 469{
470 bool ok; 470 bool ok;
471 info->setStartingBalance( newbalance.toFloat( &ok ) ); 471 info->setStartingBalance( newbalance.toFloat( &ok ) );
472 adjustBalance(); 472 adjustBalance();
473} 473}
474 474
475 475
476// --- slotNewTran ------------------------------------------------------------ 476// --- slotNewTran ------------------------------------------------------------
477void Checkbook::slotNewTran() 477void Checkbook::slotNewTran()
478{ 478{
479 TranInfo *traninfo = new TranInfo( info->getNextNumber() ); 479 TranInfo *traninfo = new TranInfo( info->getNextNumber() );
480 if( !_dLastNew.isNull() ) 480 if( !_dLastNew.isNull() )
481 traninfo->setDate(_dLastNew); 481 traninfo->setDate(_dLastNew);
482 482
483 Transaction *currtran = new Transaction( this, true, info->name(), 483 Transaction *currtran = new Transaction( this, true, info->name(),
484 traninfo, 484 traninfo,
485 _pCfg ); 485 _pCfg );
486 currtran->showMaximized(); 486 if ( QPEApplication::execDialog( currtran ) == QDialog::Accepted )
487 if ( currtran->exec() == QDialog::Accepted )
488 { 487 {
489 // Add to transaction list 488 // Add to transaction list
490 info->addTransaction( traninfo ); 489 info->addTransaction( traninfo );
491 490
492 // Add to transaction table 491 // Add to transaction table
493 float amount; 492 float amount;
494 QString stramount; 493 QString stramount;
495 amount = (traninfo->withdrawal() ? -1 : 1)*traninfo->amount(); 494 amount = (traninfo->withdrawal() ? -1 : 1)*traninfo->amount();
496 stramount.sprintf( "%s%.2f", _pCfg->getCurrencySymbol().latin1(), amount ); 495 stramount.sprintf( "%s%.2f", _pCfg->getCurrencySymbol().latin1(), amount );
497 ( void ) new CBListItem( traninfo, tranTable, traninfo->getIdStr(), traninfo->datestr(false), 496 ( void ) new CBListItem( traninfo, tranTable, traninfo->getIdStr(), traninfo->datestr(false),
498 traninfo->number(), traninfo->datestr(true), traninfo->desc(), 497 traninfo->number(), traninfo->datestr(true), traninfo->desc(),
499 stramount ); 498 stramount );
500 resort(); 499 resort();
501 adjustBalance(); 500 adjustBalance();
502 501
503 // save last date 502 // save last date
504 _dLastNew = traninfo->date(); 503 _dLastNew = traninfo->date();
505 504
506 // save description in list of payees, if not in there 505 // save description in list of payees, if not in there
507 QStringList *pLst=&_pCfg->getPayees(); 506 QStringList *pLst=&_pCfg->getPayees();
508 if( _pCfg->getSavePayees() && pLst->contains(traninfo->desc())==0 ) { 507 if( _pCfg->getSavePayees() && pLst->contains(traninfo->desc())==0 ) {
509 pLst->append( traninfo->desc() ); 508 pLst->append( traninfo->desc() );
510 pLst->sort(); 509 pLst->sort();
511 _pCfg->setDirty(true); 510 _pCfg->setDirty(true);
512 } 511 }
513 } 512 }
514 else 513 else
515 { 514 {
516 delete traninfo; 515 delete traninfo;
517 } 516 }
518} 517}
519 518
520 519
521// --- slotEditTran ----------------------------------------------------------- 520// --- slotEditTran -----------------------------------------------------------
522void Checkbook::slotEditTran() 521void Checkbook::slotEditTran()
523{ 522{
524 QListViewItem *curritem = tranTable->currentItem(); 523 QListViewItem *curritem = tranTable->currentItem();
525 if ( !curritem ) 524 if ( !curritem )
526 return; 525 return;
527 526
528 TranInfo *traninfo=info->findTransaction( curritem->text(COL_ID) ); 527 TranInfo *traninfo=info->findTransaction( curritem->text(COL_ID) );
529 528
530 Transaction *currtran = new Transaction( this, false, info->name(), 529 Transaction *currtran = new Transaction( this, false, info->name(),
531 traninfo, 530 traninfo,
532 _pCfg ); 531 _pCfg );
533 currtran->showMaximized(); 532 if ( QPEApplication::execDialog( currtran ) == QDialog::Accepted )
534 if ( currtran->exec() == QDialog::Accepted )
535 { 533 {
536 curritem->setText( COL_NUM, traninfo->number() ); 534 curritem->setText( COL_NUM, traninfo->number() );
537 curritem->setText( COL_SORTDATE, traninfo->datestr(false) ); 535 curritem->setText( COL_SORTDATE, traninfo->datestr(false) );
538 curritem->setText( COL_DATE, traninfo->datestr(true) ); 536 curritem->setText( COL_DATE, traninfo->datestr(true) );
539 curritem->setText( COL_DESC, traninfo->desc() ); 537 curritem->setText( COL_DESC, traninfo->desc() );
540 538
541 float amount = traninfo->amount(); 539 float amount = traninfo->amount();
542 if ( traninfo->withdrawal() ) 540 if ( traninfo->withdrawal() )
543 { 541 {
544 amount *= -1; 542 amount *= -1;
545 } 543 }
546 QString stramount; 544 QString stramount;
547 stramount.sprintf( "%s%.2f", _pCfg->getCurrencySymbol().latin1(), amount ); 545 stramount.sprintf( "%s%.2f", _pCfg->getCurrencySymbol().latin1(), amount );
548 curritem->setText( COL_AMOUNT, stramount ); 546 curritem->setText( COL_AMOUNT, stramount );
549 resort(); 547 resort();
550 adjustBalance(); 548 adjustBalance();
551 549
552 // save description in list of payees, if not in there 550 // save description in list of payees, if not in there
553 QStringList *pLst=&_pCfg->getPayees(); 551 QStringList *pLst=&_pCfg->getPayees();
554 if( _pCfg->getSavePayees() && pLst->contains(traninfo->desc())==0 ) { 552 if( _pCfg->getSavePayees() && pLst->contains(traninfo->desc())==0 ) {
555 pLst->append( traninfo->desc() ); 553 pLst->append( traninfo->desc() );
556 pLst->sort(); 554 pLst->sort();
557 _pCfg->setDirty(true); 555 _pCfg->setDirty(true);
558 } 556 }
559 } 557 }
560 558
561 delete currtran; 559 delete currtran;
562} 560}
563 561
564// --- slotMenuTran ----------------------------------------------------------- 562// --- slotMenuTran -----------------------------------------------------------
565void Checkbook::slotMenuTran(QListViewItem *item, const QPoint &pnt) 563void Checkbook::slotMenuTran(QListViewItem *item, const QPoint &pnt)
566{ 564{
567 // active item? 565 // active item?
568 if( !item ) 566 if( !item )
569 return; 567 return;
570 568
571 // Display menu 569 // Display menu
572 QPopupMenu m; 570 QPopupMenu m;
573 m.insertItem( QWidget::tr( "Edit" ), 1 ); 571 m.insertItem( QWidget::tr( "Edit" ), 1 );
574 m.insertItem( QWidget::tr( "New" ), 2 ); 572 m.insertItem( QWidget::tr( "New" ), 2 );
575 m.insertItem( QWidget::tr( "Delete" ), 3 ); 573 m.insertItem( QWidget::tr( "Delete" ), 3 );
576 int r = m.exec( pnt ); 574 int r = m.exec( pnt );
577 switch(r) { 575 switch(r) {
578 case 1: 576 case 1:
579 slotEditTran(); 577 slotEditTran();
580 break; 578 break;
581 case 2: 579 case 2:
582 slotNewTran(); 580 slotNewTran();
583 break; 581 break;
584 case 3: 582 case 3:
585 slotDeleteTran(); 583 slotDeleteTran();
586 break; 584 break;
587 } 585 }
588} 586}
589 587
590 588
591// --- slotDeleteTran --------------------------------------------------------- 589// --- slotDeleteTran ---------------------------------------------------------
592void Checkbook::slotDeleteTran() 590void Checkbook::slotDeleteTran()
593{ 591{
594 QListViewItem *curritem = tranTable->currentItem(); 592 QListViewItem *curritem = tranTable->currentItem();
595 if ( !curritem ) 593 if ( !curritem )
596 return; 594 return;
597 595
598 TranInfo *traninfo = info->findTransaction( curritem->text(COL_ID) ); 596 TranInfo *traninfo = info->findTransaction( curritem->text(COL_ID) );
599 597
600 if ( QPEMessageBox::confirmDelete ( this, tr( "Delete transaction" ), traninfo->desc() ) ) 598 if ( QPEMessageBox::confirmDelete ( this, tr( "Delete transaction" ), traninfo->desc() ) )
601 { 599 {
602 info->removeTransaction( traninfo ); 600 info->removeTransaction( traninfo );
603 delete curritem; 601 delete curritem;
604 adjustBalance(); 602 adjustBalance();
605 } 603 }
606} 604}
607 605
608void Checkbook::slotDrawGraph() 606void Checkbook::slotDrawGraph()
609{ 607{
610 if ( graphInfo ) 608 if ( graphInfo )
611 { 609 {
612 delete graphInfo; 610 delete graphInfo;
613 } 611 }
614 612
615 switch ( graphList->currentItem() ) 613 switch ( graphList->currentItem() )
616 { 614 {
617 case 0 : drawBalanceChart(); 615 case 0 : drawBalanceChart();
618 break; 616 break;
619 case 1 : drawCategoryChart( TRUE ); 617 case 1 : drawCategoryChart( TRUE );
620 break; 618 break;
621 case 2 : drawCategoryChart( FALSE ); 619 case 2 : drawCategoryChart( FALSE );
622 break; 620 break;
623 }; 621 };
624 622
625 graphWidget->setGraphInfo( graphInfo ); 623 graphWidget->setGraphInfo( graphInfo );
626 graphWidget->drawGraph( TRUE ); 624 graphWidget->drawGraph( TRUE );
627} 625}
628 626
629void Checkbook::drawBalanceChart() 627void Checkbook::drawBalanceChart()
630{ 628{
631 DataPointList *list = new DataPointList(); 629 DataPointList *list = new DataPointList();
632 630
633 float balance = info->startingBalance(); 631 float balance = info->startingBalance();
634 float amount; 632 float amount;
635 QString label; 633 QString label;
636 int i = 0; 634 int i = 0;
637 int count = tranList->count(); 635 int count = tranList->count();
638 636
639 for ( TranInfo *tran = tranList->first(); tran; tran = tranList->next() ) 637 for ( TranInfo *tran = tranList->first(); tran; tran = tranList->next() )
640 { 638 {
641 i++; 639 i++;
642 balance -= tran->fee(); 640 balance -= tran->fee();
643 amount = tran->amount(); 641 amount = tran->amount();
644 if ( tran->withdrawal() ) 642 if ( tran->withdrawal() )
645 { 643 {
646 amount *= -1; 644 amount *= -1;
647 } 645 }
648 balance += amount; 646 balance += amount;
649 if ( i == 1 || i == count / 2 || i == count ) 647 if ( i == 1 || i == count / 2 || i == count )
650 { 648 {
651 label = tran->datestr(true); 649 label = tran->datestr(true);
652 } 650 }
653 else 651 else
654 { 652 {
655 label = ""; 653 label = "";
656 } 654 }
657 list->append( new DataPointInfo( label, balance ) ); 655 list->append( new DataPointInfo( label, balance ) );
658 } 656 }
659 657
660 graphInfo = new GraphInfo( GraphInfo::BarChart, list ); 658 graphInfo = new GraphInfo( GraphInfo::BarChart, list );
661} 659}
662 660
663void Checkbook::drawCategoryChart( bool withdrawals ) 661void Checkbook::drawCategoryChart( bool withdrawals )
664{ 662{
665 DataPointList *list = new DataPointList(); 663 DataPointList *list = new DataPointList();
666 664
667 TranInfo *tran = tranList->first(); 665 TranInfo *tran = tranList->first();
668 if ( tran && tran->withdrawal() == withdrawals ) 666 if ( tran && tran->withdrawal() == withdrawals )
669 { 667 {
670 list->append( new DataPointInfo( tran->category(), tran->amount() ) ); 668 list->append( new DataPointInfo( tran->category(), tran->amount() ) );
671 } 669 }
672 tran = tranList->next(); 670 tran = tranList->next();
673 671
674 DataPointInfo *cat; 672 DataPointInfo *cat;
675 for ( ; tran; tran = tranList->next() ) 673 for ( ; tran; tran = tranList->next() )
676 { 674 {
677 if ( tran->withdrawal() == withdrawals ) 675 if ( tran->withdrawal() == withdrawals )
678 { 676 {
679 // Find category in list 677 // Find category in list
680 for ( cat = list->first(); cat; cat = list->next() ) 678 for ( cat = list->first(); cat; cat = list->next() )
681 { 679 {
682 if ( cat->label() == tran->category() ) 680 if ( cat->label() == tran->category() )
683 { 681 {
684 break; 682 break;
685 } 683 }
686 } 684 }
687 if ( cat && cat->label() == tran->category() ) 685 if ( cat && cat->label() == tran->category() )
688 { // Found category, add to transaction to category total 686 { // Found category, add to transaction to category total
689 cat->addToValue( tran->amount() ); 687 cat->addToValue( tran->amount() );
690 } 688 }
691 else 689 else
692 { // Didn't find category, add category to list 690 { // Didn't find category, add category to list
693 list->append( new DataPointInfo( tran->category(), tran->amount() ) ); 691 list->append( new DataPointInfo( tran->category(), tran->amount() ) );
694 } 692 }
695 } 693 }
696 } 694 }
697 695
698 graphInfo = new GraphInfo( GraphInfo::PieChart, list ); 696 graphInfo = new GraphInfo( GraphInfo::PieChart, list );
699} 697}
700 698
701CBListItem::CBListItem( TranInfo *pTran, QListView *parent, QString label1, QString label2, 699CBListItem::CBListItem( TranInfo *pTran, QListView *parent, QString label1, QString label2,
702 QString label3, QString label4, QString label5, QString label6, QString label7, 700 QString label3, QString label4, QString label5, QString label6, QString label7,
703 QString label8 ) 701 QString label8 )
704 : QListViewItem( parent, label1, label2, label3, label4, label5, label6, label7, label8 ) 702 : QListViewItem( parent, label1, label2, label3, label4, label5, label6, label7, label8 )
705{ 703{
706 _pTran=pTran; 704 _pTran=pTran;
707 m_known = FALSE; 705 m_known = FALSE;
708 owner = parent; 706 owner = parent;
709} 707}
710 708
711void CBListItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align ) 709void CBListItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align )
712{ 710{
713 QColorGroup _cg = cg; 711 QColorGroup _cg = cg;
714 const QPixmap *pm = listView()->viewport()->backgroundPixmap(); 712 const QPixmap *pm = listView()->viewport()->backgroundPixmap();
715 if ( pm && !pm->isNull() ) 713 if ( pm && !pm->isNull() )
716 { 714 {
717 _cg.setBrush( QColorGroup::Base, QBrush( cg.base(), *pm ) ); 715 _cg.setBrush( QColorGroup::Base, QBrush( cg.base(), *pm ) );
718 p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() ); 716 p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() );
719 } 717 }
720 else if ( isAltBackground() ) 718 else if ( isAltBackground() )
721 _cg.setColor(QColorGroup::Base, cg.background() ); 719 _cg.setColor(QColorGroup::Base, cg.background() );
722 720
723 QListViewItem::paintCell(p, _cg, column, width, align); 721 QListViewItem::paintCell(p, _cg, column, width, align);
724} 722}
725 723
726// --- CBListItem::isAltBackground -------------------------------------------- 724// --- CBListItem::isAltBackground --------------------------------------------
727bool CBListItem::isAltBackground() 725bool CBListItem::isAltBackground()
728{ 726{
729 QListView *lv = static_cast<QListView *>( listView() ); 727 QListView *lv = static_cast<QListView *>( listView() );
730 if ( lv ) 728 if ( lv )
731 { 729 {
732 CBListItem *above = 0; 730 CBListItem *above = 0;
733 above = (CBListItem *)( itemAbove() ); 731 above = (CBListItem *)( itemAbove() );
734 m_known = above ? above->m_known : true; 732 m_known = above ? above->m_known : true;
735 if ( m_known ) 733 if ( m_known )
736 { 734 {
737 m_odd = above ? !above->m_odd : false; 735 m_odd = above ? !above->m_odd : false;
738 } 736 }
739 else 737 else
740 { 738 {
741 CBListItem *item; 739 CBListItem *item;
742 bool previous = true; 740 bool previous = true;
743 if ( parent() ) 741 if ( parent() )
744 { 742 {
745 item = (CBListItem *)( parent() ); 743 item = (CBListItem *)( parent() );
746 if ( item ) 744 if ( item )
747 previous = item->m_odd; 745 previous = item->m_odd;
748 item = (CBListItem *)( parent()->firstChild() ); 746 item = (CBListItem *)( parent()->firstChild() );
749 } 747 }
750 else 748 else
751 { 749 {
752 item = (CBListItem *)( lv->firstChild() ); 750 item = (CBListItem *)( lv->firstChild() );
753 } 751 }
754 752
755 while(item) 753 while(item)
756 { 754 {
757 item->m_odd = previous = !previous; 755 item->m_odd = previous = !previous;
758 item->m_known = true; 756 item->m_known = true;
759 item = (CBListItem *)( item->nextSibling() ); 757 item = (CBListItem *)( item->nextSibling() );
760 } 758 }
761 } 759 }
762 return m_odd; 760 return m_odd;
763 } 761 }
764 return false; 762 return false;
765} 763}
766 764
767 765
768// --- slotTab ---------------------------------------------------------------- 766// --- slotTab ----------------------------------------------------------------
769void Checkbook::slotTab(QWidget *tab) 767void Checkbook::slotTab(QWidget *tab)
770{ 768{
771 if( !tab || !info ) return; 769 if( !tab || !info ) return;
772 info->setLastTab( tab->name() ); 770 info->setLastTab( tab->name() );
773} 771}
774 772
775 773
776// --- slotSortChanged --------------------------------------------------------- 774// --- slotSortChanged ---------------------------------------------------------
777void Checkbook::slotSortChanged( const QString &selc ) 775void Checkbook::slotSortChanged( const QString &selc )
778{ 776{
779 if( selc==tr("Entry Order") ) { 777 if( selc==tr("Entry Order") ) {
780 _sortCol=COL_ID; 778 _sortCol=COL_ID;
781 } else if( selc==tr("Number") ) { 779 } else if( selc==tr("Number") ) {
782 _sortCol=COL_NUM; 780 _sortCol=COL_NUM;
783 } else if( selc==tr("Date") ) { 781 } else if( selc==tr("Date") ) {
784 _sortCol=COL_SORTDATE; 782 _sortCol=COL_SORTDATE;
785 } 783 }
786 info->setSortOrder( selc ); 784 info->setSortOrder( selc );
787 resort(); 785 resort();
788} 786}
789 787
diff --git a/noncore/apps/checkbook/mainwindow.cpp b/noncore/apps/checkbook/mainwindow.cpp
index f29001a..60aea42 100644
--- a/noncore/apps/checkbook/mainwindow.cpp
+++ b/noncore/apps/checkbook/mainwindow.cpp
@@ -1,365 +1,362 @@
1/* 1/*
2                This file is part of the OPIE Project 2                This file is part of the OPIE Project
3 =. 3 =.
4             .=l. Copyright (c) 2002 Dan Williams <drw@handhelds.org> 4             .=l. Copyright (c) 2002 Dan Williams <drw@handhelds.org>
5           .>+-= 5           .>+-=
6 _;:,     .>    :=|. This file is free software; you can 6 _;:,     .>    :=|. This file is free software; you can
7.> <`_,   >  .   <= redistribute it and/or modify it under 7.> <`_,   >  .   <= redistribute it and/or modify it under
8:`=1 )Y*s>-.--   : the terms of the GNU General Public 8:`=1 )Y*s>-.--   : the terms of the GNU General Public
9.="- .-=="i,     .._ License as published by the Free Software 9.="- .-=="i,     .._ License as published by the Free Software
10 - .   .-<_>     .<> Foundation; either version 2 of the License, 10 - .   .-<_>     .<> Foundation; either version 2 of the License,
11     ._= =}       : or (at your option) any later version. 11     ._= =}       : or (at your option) any later version.
12    .%`+i>       _;_. 12    .%`+i>       _;_.
13    .i_,=:_.      -<s. This file is distributed in the hope that 13    .i_,=:_.      -<s. This file is distributed in the hope that
14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
15    : ..    .:,     . . . without even the implied warranty of 15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General 17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
18..}^=.=       =       ; Public License for more details. 18..}^=.=       =       ; Public License for more details.
19++=   -.     .`     .: 19++=   -.     .`     .:
20 :     =  ...= . :.=- You should have received a copy of the GNU 20 :     =  ...= . :.=- You should have received a copy of the GNU
21 -.   .:....=;==+<; General Public License along with this file; 21 -.   .:....=;==+<; General Public License along with this file;
22  -_. . .   )=.  = see the file COPYING. If not, write to the 22  -_. . .   )=.  = see the file COPYING. If not, write to the
23    --        :-=` Free Software Foundation, Inc., 23    --        :-=` Free Software Foundation, Inc.,
24 59 Temple Place - Suite 330, 24 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 "mainwindow.h" 29#include "mainwindow.h"
30#include "cbinfo.h" 30#include "cbinfo.h"
31#include "configuration.h" 31#include "configuration.h"
32#include "password.h" 32#include "password.h"
33#include "checkbook.h" 33#include "checkbook.h"
34#include "listedit.h" 34#include "listedit.h"
35 35
36#include <qpe/config.h> 36#include <qpe/config.h>
37#include <qpe/global.h> 37#include <qpe/global.h>
38#include <qpe/qpeapplication.h> 38#include <qpe/qpeapplication.h>
39#include <qmenubar.h>
40#include <qpe/qpemessagebox.h> 39#include <qpe/qpemessagebox.h>
41#include <qpe/qpetoolbar.h> 40#include <qpe/qpetoolbar.h>
42#include <qpe/resource.h> 41#include <qpe/resource.h>
43 42
43#include <qmenubar.h>
44#include <qaction.h> 44#include <qaction.h>
45#include <qcheckbox.h> 45#include <qcheckbox.h>
46#include <qdir.h> 46#include <qdir.h>
47#include <qlineedit.h> 47#include <qlineedit.h>
48#include <qwhatsthis.h> 48#include <qwhatsthis.h>
49 49
50 50
51MainWindow::MainWindow( QWidget* parent, const char* name, WFlags /*fl*/ ) 51MainWindow::MainWindow( QWidget* parent, const char* name, WFlags /*fl*/ )
52 : QMainWindow( parent, name, WStyle_ContextHelp ) 52 : QMainWindow( parent, name, WStyle_ContextHelp )
53{ 53{
54 setCaption( tr( "Checkbook" ) ); 54 setCaption( tr( "Checkbook" ) );
55 55
56 cbDir = Global::applicationFileName( "checkbook", "" ); 56 cbDir = Global::applicationFileName( "checkbook", "" );
57 lockIcon = Resource::loadPixmap( "locked" ); 57 lockIcon = Resource::loadPixmap( "locked" );
58 58
59 // Load configuration options 59 // Load configuration options
60 Config config( "checkbook" ); 60 Config config( "checkbook" );
61 _cfg.readConfig( config ); 61 _cfg.readConfig( config );
62 62
63 63
64 // Build menu and tool bars 64 // Build menu and tool bars
65 setToolBarsMovable( FALSE ); 65 setToolBarsMovable( FALSE );
66 66
67 QToolBar *bar = new QToolBar( this ); 67 QToolBar *bar = new QToolBar( this );
68 bar->setHorizontalStretchable( TRUE ); 68 bar->setHorizontalStretchable( TRUE );
69 QMenuBar *mb = new QMenuBar( bar ); 69 QMenuBar *mb = new QMenuBar( bar );
70 mb->setMargin( 0 ); 70 mb->setMargin( 0 );
71 QPopupMenu *popup = new QPopupMenu( this ); 71 QPopupMenu *popup = new QPopupMenu( this );
72 72
73 bar = new QToolBar( this ); 73 bar = new QToolBar( this );
74 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); 74 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 );
75 a->setWhatsThis( tr( "Click here to create a new checkbook.\n\nYou also can select New from the Checkbook menu." ) ); 75 a->setWhatsThis( tr( "Click here to create a new checkbook.\n\nYou also can select New from the Checkbook menu." ) );
76 connect( a, SIGNAL( activated() ), this, SLOT( slotNew() ) ); 76 connect( a, SIGNAL( activated() ), this, SLOT( slotNew() ) );
77 a->addTo( popup ); 77 a->addTo( popup );
78 a->addTo( bar ); 78 a->addTo( bar );
79 79
80 actionOpen = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ), QString::null, 80 actionOpen = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ), QString::null,
81 0, this, 0 ); 81 0, this, 0 );
82 actionOpen->setWhatsThis( tr( "Select a checkbook and then click here to edit it.\n\nYou also can select Edit from the Checkbook menu, or click and hold on a checkbook name." ) ); 82 actionOpen->setWhatsThis( tr( "Select a checkbook and then click here to edit it.\n\nYou also can select Edit from the Checkbook menu, or click and hold on a checkbook name." ) );
83 connect( actionOpen, SIGNAL( activated() ), this, SLOT( slotEdit() ) ); 83 connect( actionOpen, SIGNAL( activated() ), this, SLOT( slotEdit() ) );
84 actionOpen->addTo( popup ); 84 actionOpen->addTo( popup );
85 actionOpen->addTo( bar ); 85 actionOpen->addTo( bar );
86 86
87 actionDelete = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 87 actionDelete = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null,
88 0, this, 0 ); 88 0, this, 0 );
89 actionDelete->setWhatsThis( tr( "Select a checkbook and then click here delete it.\n\nYou also can select Delete from the Checkbook menu." ) ); 89 actionDelete->setWhatsThis( tr( "Select a checkbook and then click here delete it.\n\nYou also can select Delete from the Checkbook menu." ) );
90 connect( actionDelete, SIGNAL( activated() ), this, SLOT( slotDelete() ) ); 90 connect( actionDelete, SIGNAL( activated() ), this, SLOT( slotDelete() ) );
91 actionDelete->addTo( popup ); 91 actionDelete->addTo( popup );
92 actionDelete->addTo( bar ); 92 actionDelete->addTo( bar );
93 93
94 popup->insertSeparator(); 94 popup->insertSeparator();
95 95
96 a = new QAction( tr( "Configure" ), Resource::loadPixmap( "SettingsIcon" ), QString::null, 0, this, 0 ); 96 a = new QAction( tr( "Configure" ), Resource::loadPixmap( "SettingsIcon" ), QString::null, 0, this, 0 );
97 a->setWhatsThis( tr( "Click here to configure this app." ) ); 97 a->setWhatsThis( tr( "Click here to configure this app." ) );
98 connect( a, SIGNAL( activated() ), this, SLOT( slotConfigure() ) ); 98 connect( a, SIGNAL( activated() ), this, SLOT( slotConfigure() ) );
99 a->addTo( popup ); 99 a->addTo( popup );
100 a->addTo( bar ); 100 a->addTo( bar );
101 101
102 mb->insertItem( tr( "Checkbook" ), popup ); 102 mb->insertItem( tr( "Checkbook" ), popup );
103 103
104 // Load Checkbook selection list 104 // Load Checkbook selection list
105 checkbooks = new CBInfoList(); 105 checkbooks = new CBInfoList();
106 106
107 QDir checkdir( cbDir ); 107 QDir checkdir( cbDir );
108 if (checkdir.exists() == true) 108 if (checkdir.exists() == true)
109 { 109 {
110 QStringList cblist = checkdir.entryList( "*.qcb", QDir::Files|QDir::Readable|QDir::Writable, 110 QStringList cblist = checkdir.entryList( "*.qcb", QDir::Files|QDir::Readable|QDir::Writable,
111 QDir::Time ); 111 QDir::Time );
112 CBInfo *cb = 0x0; 112 CBInfo *cb = 0x0;
113 QString filename; 113 QString filename;
114 114
115 for ( QStringList::Iterator it = cblist.begin(); it != cblist.end(); it++ ) 115 for ( QStringList::Iterator it = cblist.begin(); it != cblist.end(); it++ )
116 { 116 {
117 filename = cbDir; 117 filename = cbDir;
118 filename.append( (*it) ); 118 filename.append( (*it) );
119 119
120 cb = new CBInfo( (*it).remove( (*it).find('.'), (*it).length() ), filename ); 120 cb = new CBInfo( (*it).remove( (*it).find('.'), (*it).length() ), filename );
121 checkbooks->inSort( cb ); 121 checkbooks->inSort( cb );
122 } 122 }
123 } 123 }
124 124
125 // Build Checkbook selection list control 125 // Build Checkbook selection list control
126 cbList = 0x0; 126 cbList = 0x0;
127 buildList(); 127 buildList();
128 128
129 // open last book? 129 // open last book?
130 if( _cfg.isOpenLastBook() ) { 130 if( _cfg.isOpenLastBook() ) {
131 this->show(); 131 this->show();
132 this->showMaximized(); 132 this->showMaximized();
133 QListViewItem *itm=cbList->firstChild(); 133 QListViewItem *itm=cbList->firstChild();
134 while( itm ) { 134 while( itm ) {
135 if( itm->text(posName)==_cfg.getLastBook() ) { 135 if( itm->text(posName)==_cfg.getLastBook() ) {
136 openBook( itm ); 136 openBook( itm );
137 break; 137 break;
138 } 138 }
139 itm=itm->nextSibling(); 139 itm=itm->nextSibling();
140 } 140 }
141 } 141 }
142} 142}
143 143
144 144
145// --- ~MainWindow ------------------------------------------------------------ 145// --- ~MainWindow ------------------------------------------------------------
146MainWindow::~MainWindow() 146MainWindow::~MainWindow()
147{ 147{
148 writeConfig(); 148 writeConfig();
149} 149}
150 150
151 151
152// --- buildList -------------------------------------------------------------- 152// --- buildList --------------------------------------------------------------
153void MainWindow::buildList() 153void MainWindow::buildList()
154{ 154{
155 if ( cbList ) 155 if ( cbList )
156 delete cbList; 156 delete cbList;
157 157
158 cbList = new QListView( this ); 158 cbList = new QListView( this );
159 QWhatsThis::add( cbList, tr( "This is a listing of all checkbooks currently available." ) ); 159 QWhatsThis::add( cbList, tr( "This is a listing of all checkbooks currently available." ) );
160 160
161 if ( _cfg.getShowLocks() ) 161 if ( _cfg.getShowLocks() )
162 { 162 {
163 cbList->addColumn( Resource::loadIconSet( "locked" ), "", 24 ); 163 cbList->addColumn( Resource::loadIconSet( "locked" ), "", 24 );
164 posName = 1; 164 posName = 1;
165 } 165 }
166 else 166 else
167 { 167 {
168 posName = 0; 168 posName = 0;
169 } 169 }
170 cbList->addColumn( tr( "Checkbook Name" ) ); 170 cbList->addColumn( tr( "Checkbook Name" ) );
171 if ( _cfg.getShowBalances() ) 171 if ( _cfg.getShowBalances() )
172 { 172 {
173 int colnum = cbList->addColumn( tr( "Balance" ) ); 173 int colnum = cbList->addColumn( tr( "Balance" ) );
174 cbList->setColumnAlignment( colnum, Qt::AlignRight ); 174 cbList->setColumnAlignment( colnum, Qt::AlignRight );
175 } 175 }
176 cbList->setAllColumnsShowFocus( TRUE ); 176 cbList->setAllColumnsShowFocus( TRUE );
177 cbList->setSorting( posName ); 177 cbList->setSorting( posName );
178 QPEApplication::setStylusOperation( cbList->viewport(), QPEApplication::RightOnHold ); 178 QPEApplication::setStylusOperation( cbList->viewport(), QPEApplication::RightOnHold );
179 connect( cbList, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint &, int ) ), 179 connect( cbList, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint &, int ) ),
180 this, SLOT( slotEdit() ) ); 180 this, SLOT( slotEdit() ) );
181 setCentralWidget( cbList ); 181 setCentralWidget( cbList );
182 182
183 for ( CBInfo *cb = checkbooks->first(); cb; cb = checkbooks->next() ) 183 for ( CBInfo *cb = checkbooks->first(); cb; cb = checkbooks->next() )
184 { 184 {
185 addCheckbook( cb ); 185 addCheckbook( cb );
186 } 186 }
187} 187}
188 188
189void MainWindow::addCheckbook( CBInfo *cb ) 189void MainWindow::addCheckbook( CBInfo *cb )
190{ 190{
191 QListViewItem *lvi = new QListViewItem( cbList ); 191 QListViewItem *lvi = new QListViewItem( cbList );
192 if ( _cfg.getShowLocks() && !cb->password().isNull() ) 192 if ( _cfg.getShowLocks() && !cb->password().isNull() )
193 { 193 {
194 lvi->setPixmap( 0, lockIcon ); 194 lvi->setPixmap( 0, lockIcon );
195 } 195 }
196 lvi->setText( posName, cb->name() ); 196 lvi->setText( posName, cb->name() );
197 if ( _cfg.getShowBalances() ) 197 if ( _cfg.getShowBalances() )
198 { 198 {
199 QString balance; 199 QString balance;
200 balance.sprintf( "%s%.2f", _cfg.getCurrencySymbol().latin1(), cb->balance() ); 200 balance.sprintf( "%s%.2f", _cfg.getCurrencySymbol().latin1(), cb->balance() );
201 lvi->setText( posName + 1, balance ); 201 lvi->setText( posName + 1, balance );
202 } 202 }
203} 203}
204 204
205void MainWindow::buildFilename( const QString &name ) 205void MainWindow::buildFilename( const QString &name )
206{ 206{
207 tempFilename = cbDir; 207 tempFilename = cbDir;
208 tempFilename.append( name ); 208 tempFilename.append( name );
209 tempFilename.append( ".qcb" ); 209 tempFilename.append( ".qcb" );
210} 210}
211 211
212void MainWindow::slotNew() 212void MainWindow::slotNew()
213{ 213{
214 CBInfo *cb = new CBInfo(); 214 CBInfo *cb = new CBInfo();
215 215
216 Checkbook *currcb = new Checkbook( this, cb, &_cfg ); 216 Checkbook *currcb = new Checkbook( this, cb, &_cfg );
217 currcb->showMaximized(); 217 if ( QPEApplication::execDialog( currcb ) == QDialog::Accepted )
218 if ( currcb->exec() == QDialog::Accepted )
219 { 218 {
220 // Save new checkbook 219 // Save new checkbook
221 buildFilename( cb->name() ); 220 buildFilename( cb->name() );
222 _cfg.setLastBook( cb->name() ); 221 _cfg.setLastBook( cb->name() );
223 cb->setFilename( tempFilename ); 222 cb->setFilename( tempFilename );
224 cb->write(); 223 cb->write();
225 224
226 // Add to listbox 225 // Add to listbox
227 checkbooks->inSort( cb ); 226 checkbooks->inSort( cb );
228 addCheckbook( cb ); 227 addCheckbook( cb );
229 } 228 }
230 delete currcb; 229 delete currcb;
231} 230}
232 231
233// --- slotEdit --------------------------------------------------------------- 232// --- slotEdit ---------------------------------------------------------------
234void MainWindow::slotEdit() 233void MainWindow::slotEdit()
235{ 234{
236 // get name and open it 235 // get name and open it
237 QListViewItem *curritem = cbList->currentItem(); 236 QListViewItem *curritem = cbList->currentItem();
238 if ( !curritem ) 237 if ( !curritem )
239 return; 238 return;
240 openBook( curritem ); 239 openBook( curritem );
241} 240}
242 241
243 242
244// --- openBook --------------------------------------------------------------- 243// --- openBook ---------------------------------------------------------------
245void MainWindow::openBook(QListViewItem *curritem) 244void MainWindow::openBook(QListViewItem *curritem)
246{ 245{
247 // find book in List 246 // find book in List
248 QString currname=curritem->text(posName); 247 QString currname=curritem->text(posName);
249 CBInfo *cb = checkbooks->first(); 248 CBInfo *cb = checkbooks->first();
250 while ( cb ) { 249 while ( cb ) {
251 if ( cb->name() == currname ) 250 if ( cb->name() == currname )
252 break; 251 break;
253 cb = checkbooks->next(); 252 cb = checkbooks->next();
254 } 253 }
255 if ( !cb ) return; 254 if ( !cb ) return;
256 255
257 // 256 //
258 buildFilename( currname ); 257 buildFilename( currname );
259 float currbalance = cb->balance(); 258 float currbalance = cb->balance();
260 bool currlock = !cb->password().isNull(); 259 bool currlock = !cb->password().isNull();
261 260
262 if ( currlock ) 261 if ( currlock )
263 { 262 {
264 Password *pw = new Password( this, tr( "Enter password" ), tr( "Please enter your password:" ) ); 263 Password *pw = new Password( this, tr( "Enter password" ), tr( "Please enter your password:" ) );
265 if ( pw->exec() != QDialog::Accepted || pw->password != cb->password() ) 264 if ( pw->exec() != QDialog::Accepted || pw->password != cb->password() )
266 { 265 {
267 delete pw; 266 delete pw;
268 return; 267 return;
269 } 268 }
270 delete pw; 269 delete pw;
271 } 270 }
272 271
273 _cfg.setLastBook( currname ); 272 _cfg.setLastBook( currname );
274 Checkbook *currcb = new Checkbook( this, cb, &_cfg ); 273 Checkbook *currcb = new Checkbook( this, cb, &_cfg );
275 currcb->showMaximized(); 274 if ( QPEApplication::execDialog( currcb ) == QDialog::Accepted )
276 if ( currcb->exec() == QDialog::Accepted )
277 { 275 {
278 QString newname = cb->name(); 276 QString newname = cb->name();
279 if ( currname != newname ) 277 if ( currname != newname )
280 { 278 {
281 // Update name if changed 279 // Update name if changed
282 if( curritem ) { 280 if( curritem ) {
283 curritem->setText( posName, newname ); 281 curritem->setText( posName, newname );
284 cbList->sort(); 282 cbList->sort();
285 } 283 }
286 _cfg.setLastBook( newname ); 284 _cfg.setLastBook( newname );
287 285
288 // Remove old file 286 // Remove old file
289 QFile f( tempFilename ); 287 QFile f( tempFilename );
290 if ( f.exists() ) 288 if ( f.exists() )
291 f.remove(); 289 f.remove();
292 290
293 // Get new filename 291 // Get new filename
294 buildFilename( newname ); 292 buildFilename( newname );
295 cb->setFilename( tempFilename ); 293 cb->setFilename( tempFilename );
296 } 294 }
297 295
298 cb->write(); 296 cb->write();
299 297
300 // Update lock if changed 298 // Update lock if changed
301 if ( _cfg.getShowLocks() && !cb->password().isNull() != currlock ) 299 if ( _cfg.getShowLocks() && !cb->password().isNull() != currlock )
302 { 300 {
303 if ( !cb->password().isNull() ) 301 if ( !cb->password().isNull() )
304 curritem->setPixmap( 0, lockIcon ); 302 curritem->setPixmap( 0, lockIcon );
305 else 303 else
306 curritem->setPixmap( 0, nullIcon ); 304 curritem->setPixmap( 0, nullIcon );
307 } 305 }
308 306
309 // Update balance if changed 307 // Update balance if changed
310 if ( _cfg.getShowBalances() && cb->balance() != currbalance ) 308 if ( _cfg.getShowBalances() && cb->balance() != currbalance )
311 { 309 {
312 QString tempstr; 310 QString tempstr;
313 tempstr.sprintf( "%s%.2f", _cfg.getCurrencySymbol().latin1(), cb->balance() ); 311 tempstr.sprintf( "%s%.2f", _cfg.getCurrencySymbol().latin1(), cb->balance() );
314 curritem->setText( posName + 1, tempstr ); 312 curritem->setText( posName + 1, tempstr );
315 } 313 }
316 314
317 // write config, if needed 315 // write config, if needed
318 if( _cfg.isDirty() ) { 316 if( _cfg.isDirty() ) {
319 Config config("checkbook"); 317 Config config("checkbook");
320 _cfg.writeConfig( config ); 318 _cfg.writeConfig( config );
321 } 319 }
322 } 320 }
323 delete currcb; 321 delete currcb;
324} 322}
325 323
326// --- slotDelete ------------------------------------------------------------- 324// --- slotDelete -------------------------------------------------------------
327void MainWindow::slotDelete() 325void MainWindow::slotDelete()
328{ 326{
329 QString currname = cbList->currentItem()->text( posName ); 327 QString currname = cbList->currentItem()->text( posName );
330 328
331 if ( QPEMessageBox::confirmDelete ( this, tr( "Delete checkbook" ), currname ) ) 329 if ( QPEMessageBox::confirmDelete ( this, tr( "Delete checkbook" ), currname ) )
332 { 330 {
333 buildFilename( currname ); 331 buildFilename( currname );
334 QFile f( tempFilename ); 332 QFile f( tempFilename );
335 if ( f.exists() ) 333 if ( f.exists() )
336 { 334 {
337 f.remove(); 335 f.remove();
338 } 336 }
339 337
340 delete cbList->currentItem(); 338 delete cbList->currentItem();
341 } 339 }
342} 340}
343 341
344// --- slotConfigure ---------------------------------------------------------- 342// --- slotConfigure ----------------------------------------------------------
345void MainWindow::slotConfigure() 343void MainWindow::slotConfigure()
346{ 344{
347 Configuration *cfgdlg = new Configuration( this, _cfg ); 345 Configuration *cfgdlg = new Configuration( this, _cfg );
348 cfgdlg->showMaximized(); 346 if ( QPEApplication::execDialog( cfgdlg ) == QDialog::Accepted )
349 if ( cfgdlg->exec() == QDialog::Accepted )
350 { 347 {
351 // read data from config dialog & save it 348 // read data from config dialog & save it
352 cfgdlg->saveConfig( _cfg ); 349 cfgdlg->saveConfig( _cfg );
353 writeConfig(); 350 writeConfig();
354 buildList(); 351 buildList();
355 } 352 }
356 delete cfgdlg; 353 delete cfgdlg;
357} 354}
358 355
359 356
360// --- writeConfig -------------------------------------------------------------- 357// --- writeConfig --------------------------------------------------------------
361void MainWindow::writeConfig() 358void MainWindow::writeConfig()
362{ 359{
363 Config config("checkbook"); 360 Config config("checkbook");
364 _cfg.writeConfig( config ); 361 _cfg.writeConfig( config );
365} 362}
diff --git a/noncore/apps/odict/configdlg.cpp b/noncore/apps/odict/configdlg.cpp
index 2103df9..b12a395 100644
--- a/noncore/apps/odict/configdlg.cpp
+++ b/noncore/apps/odict/configdlg.cpp
@@ -1,107 +1,108 @@
1/*************************************************************************** 1/***************************************************************************
2 application: : ODict 2 application: : ODict
3 3
4 begin : December 2002 4 begin : December 2002
5 copyright : ( C ) 2002, 2003 by Carsten Niehaus 5 copyright : ( C ) 2002, 2003 by Carsten Niehaus
6 email : cniehaus@handhelds.org 6 email : cniehaus@handhelds.org
7 **************************************************************************/ 7 **************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * ( at your option ) any later version. * 14 * ( at your option ) any later version. *
15 * * 15 * *
16 **************************************************************************/ 16 **************************************************************************/
17#include "configdlg.h" 17#include "configdlg.h"
18#include "searchmethoddlg.h" 18#include "searchmethoddlg.h"
19 19
20#include <qdialog.h> 20#include <qpe/qpeapplication.h>
21#include <qpe/config.h> 21#include <qpe/config.h>
22#include <qlayout.h>
23 22
23#include <qdialog.h>
24#include <qlayout.h>
24#include <qhbox.h> 25#include <qhbox.h>
25#include <qvbox.h> 26#include <qvbox.h>
26#include <qlabel.h> 27#include <qlabel.h>
27#include <qlistview.h> 28#include <qlistview.h>
28#include <qpushbutton.h> 29#include <qpushbutton.h>
29#include <qlineedit.h> 30#include <qlineedit.h>
30#include <qstringlist.h> 31#include <qstringlist.h>
31 32
32ConfigDlg::ConfigDlg(QWidget *parent, const char *name, bool modal) : QDialog(parent, name, modal) 33ConfigDlg::ConfigDlg(QWidget *parent, const char *name, bool modal) : QDialog(parent, name, modal)
33{ 34{
34 setCaption( tr( "Options" ) ); 35 setCaption( tr( "Options" ) );
35 QVBoxLayout *vbox_layout = new QVBoxLayout( this ); 36 QVBoxLayout *vbox_layout = new QVBoxLayout( this );
36 search_tab = new QWidget( this , "search_tab" ); 37 search_tab = new QWidget( this , "search_tab" );
37 QVBoxLayout *vbox_layout_searchtab = new QVBoxLayout( search_tab, 4 , 4 ,"blah" ); 38 QVBoxLayout *vbox_layout_searchtab = new QVBoxLayout( search_tab, 4 , 4 ,"blah" );
38 39
39 QHBox *hbox = new QHBox( search_tab ); 40 QHBox *hbox = new QHBox( search_tab );
40 list = new QListView( hbox ); 41 list = new QListView( hbox );
41 list->addColumn( tr( "Searchmethod" ) ); 42 list->addColumn( tr( "Searchmethod" ) );
42 loadSearchMethodNames(); 43 loadSearchMethodNames();
43 44
44 QVBox *vbox = new QVBox( hbox ); 45 QVBox *vbox = new QVBox( hbox );
45 new_button = new QPushButton( tr( "New" ) , vbox ); 46 new_button = new QPushButton( tr( "New" ) , vbox );
46 change_button = new QPushButton( tr( "Change" ) , vbox ); 47 change_button = new QPushButton( tr( "Change" ) , vbox );
47 delete_button = new QPushButton( tr( "Delete" ) , vbox ); 48 delete_button = new QPushButton( tr( "Delete" ) , vbox );
48 connect( new_button, SIGNAL( clicked() ), this, SLOT( slotNewMethod() ) ); 49 connect( new_button, SIGNAL( clicked() ), this, SLOT( slotNewMethod() ) );
49 connect( change_button, SIGNAL( clicked() ), this, SLOT( slotChangeMethod() )); 50 connect( change_button, SIGNAL( clicked() ), this, SLOT( slotChangeMethod() ));
50 connect( delete_button, SIGNAL( clicked() ), this, SLOT( slotDeleteMethod() )); 51 connect( delete_button, SIGNAL( clicked() ), this, SLOT( slotDeleteMethod() ));
51 52
52 vbox_layout_searchtab->addWidget( hbox ); 53 vbox_layout_searchtab->addWidget( hbox );
53 54
54 vbox_layout->addWidget( search_tab ); 55 vbox_layout->addWidget( search_tab );
55 56
56 showMaximized(); 57 QPEApplication::execDialog( this );
57} 58}
58 59
59void ConfigDlg::slotNewMethod() 60void ConfigDlg::slotNewMethod()
60{ 61{
61 SearchMethodDlg dlg( this, "SearchMethodDlg", true ); 62 SearchMethodDlg dlg( this, "SearchMethodDlg", true );
62 if ( dlg.exec() == QDialog::Accepted ) 63 if ( dlg.exec() == QDialog::Accepted )
63 { 64 {
64 dlg.saveItem(); 65 dlg.saveItem();
65 QListViewItem *item = new QListViewItem( list ); 66 QListViewItem *item = new QListViewItem( list );
66 item->setText( 0 , dlg.nameLE->text() ); 67 item->setText( 0 , dlg.nameLE->text() );
67 } 68 }
68} 69}
69 70
70void ConfigDlg::slotChangeMethod() 71void ConfigDlg::slotChangeMethod()
71{ 72{
72 if ( list->selectedItem() ) 73 if ( list->selectedItem() )
73 { 74 {
74 SearchMethodDlg dlg( this, "SearchMethodDlg", true, list->selectedItem()->text( 0 ) ); 75 SearchMethodDlg dlg( this, "SearchMethodDlg", true, list->selectedItem()->text( 0 ) );
75 if ( dlg.exec() == QDialog::Accepted ) 76 if ( dlg.exec() == QDialog::Accepted )
76 { 77 {
77 dlg.saveItem(); 78 dlg.saveItem();
78 QListViewItem *item = list->selectedItem(); 79 QListViewItem *item = list->selectedItem();
79 item->setText( 0 , dlg.nameLE->text() ); 80 item->setText( 0 , dlg.nameLE->text() );
80 } 81 }
81 } 82 }
82} 83}
83 84
84void ConfigDlg::slotDeleteMethod() 85void ConfigDlg::slotDeleteMethod()
85{ 86{
86 if ( list->selectedItem() ) 87 if ( list->selectedItem() )
87 { 88 {
88 Config cfg ( "odict" ); 89 Config cfg ( "odict" );
89 cfg.setGroup( "Method_"+list->selectedItem()->text(0) ); 90 cfg.setGroup( "Method_"+list->selectedItem()->text(0) );
90 cfg.clearGroup(); 91 cfg.clearGroup();
91 //FIXME: this only removes the entries but not the group itself 92 //FIXME: this only removes the entries but not the group itself
92 93
93 list->takeItem( list->selectedItem() ); 94 list->takeItem( list->selectedItem() );
94 } 95 }
95} 96}
96 97
97void ConfigDlg::loadSearchMethodNames() 98void ConfigDlg::loadSearchMethodNames()
98{ 99{
99 Config cfg( "odict" ); 100 Config cfg( "odict" );
100 QStringList groupListCfg = cfg.groupList().grep( "Method_" ); 101 QStringList groupListCfg = cfg.groupList().grep( "Method_" );
101 for ( QStringList::Iterator it = groupListCfg.begin() ; it != groupListCfg.end() ; ++it ) 102 for ( QStringList::Iterator it = groupListCfg.begin() ; it != groupListCfg.end() ; ++it )
102 { 103 {
103 QListViewItem *item = new QListViewItem( list ); 104 QListViewItem *item = new QListViewItem( list );
104 cfg.setGroup( *it ); 105 cfg.setGroup( *it );
105 item->setText( 0 , cfg.readEntry( "Name" ) ); 106 item->setText( 0 , cfg.readEntry( "Name" ) );
106 } 107 }
107} 108}
diff --git a/noncore/apps/odict/searchmethoddlg.cpp b/noncore/apps/odict/searchmethoddlg.cpp
index 99cd8db..8ed7152 100644
--- a/noncore/apps/odict/searchmethoddlg.cpp
+++ b/noncore/apps/odict/searchmethoddlg.cpp
@@ -1,108 +1,109 @@
1/*************************************************************************** 1/***************************************************************************
2 application: : ODict 2 application: : ODict
3 3
4 begin : December 2002 4 begin : December 2002
5 copyright : ( C ) 2002, 2003 by Carsten Niehaus 5 copyright : ( C ) 2002, 2003 by Carsten Niehaus
6 email : cniehaus@handhelds.org 6 email : cniehaus@handhelds.org
7 **************************************************************************/ 7 **************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * ( at your option ) any later version. * 14 * ( at your option ) any later version. *
15 * * 15 * *
16 **************************************************************************/ 16 **************************************************************************/
17#include "searchmethoddlg.h" 17#include "searchmethoddlg.h"
18 18
19#include <qdialog.h>
20#include <qpe/config.h> 19#include <qpe/config.h>
21#include <qlayout.h> 20#include <qpe/qpeapplication.h>
22 21
22#include <qdialog.h>
23#include <qlayout.h>
23#include <qhbox.h> 24#include <qhbox.h>
24#include <qvbox.h> 25#include <qvbox.h>
25#include <qlabel.h> 26#include <qlabel.h>
26#include <qpushbutton.h> 27#include <qpushbutton.h>
27#include <qstring.h> 28#include <qstring.h>
28#include <qlineedit.h> 29#include <qlineedit.h>
29#include <qdir.h> 30#include <qdir.h>
30 31
31#include <opie/ofileselector.h> 32#include <opie/ofileselector.h>
32#include <opie/ofiledialog.h> 33#include <opie/ofiledialog.h>
33 34
34SearchMethodDlg::SearchMethodDlg(QWidget *parent, const char *name, bool modal, QString itemname) : QDialog(parent, name, modal) 35SearchMethodDlg::SearchMethodDlg(QWidget *parent, const char *name, bool modal, QString itemname) : QDialog(parent, name, modal)
35{ 36{
36 37
37 QVBoxLayout *vbox_layout = new QVBoxLayout( this, 4,4,"vbox_layout" ); 38 QVBoxLayout *vbox_layout = new QVBoxLayout( this, 4,4,"vbox_layout" );
38 QVBox *vbox = new QVBox( this ); 39 QVBox *vbox = new QVBox( this );
39 40
40 QHBox *hbox1 = new QHBox( vbox ); 41 QHBox *hbox1 = new QHBox( vbox );
41 QLabel *nameLabel = new QLabel( tr( "Name:" ) , hbox1 ); 42 QLabel *nameLabel = new QLabel( tr( "Name:" ) , hbox1 );
42 nameLE = new QLineEdit( hbox1 ); 43 nameLE = new QLineEdit( hbox1 );
43 44
44 QLabel *dictLabel = new QLabel( tr( "Dictionary file" ), vbox ); 45 QLabel *dictLabel = new QLabel( tr( "Dictionary file" ), vbox );
45 QHBox *hbox2 = new QHBox( vbox ); 46 QHBox *hbox2 = new QHBox( vbox );
46 dictFileLE = new QLineEdit( hbox2 ); 47 dictFileLE = new QLineEdit( hbox2 );
47 QPushButton *browseButton = new QPushButton( tr( "Browse" ) , hbox2 ); 48 QPushButton *browseButton = new QPushButton( tr( "Browse" ) , hbox2 );
48 connect( browseButton, SIGNAL( clicked() ), this, SLOT( slotBrowse() ) ); 49 connect( browseButton, SIGNAL( clicked() ), this, SLOT( slotBrowse() ) );
49 50
50 QWidget *dummywidget = new QWidget( vbox ); 51 QWidget *dummywidget = new QWidget( vbox );
51 QLabel *lag1 = new QLabel( tr( "Language 1" ),dummywidget); 52 QLabel *lag1 = new QLabel( tr( "Language 1" ),dummywidget);
52 QLabel *devider = new QLabel( tr( "Decollator" ),dummywidget); 53 QLabel *devider = new QLabel( tr( "Decollator" ),dummywidget);
53 QLabel *lag2 = new QLabel( tr( "Language 2" ),dummywidget); 54 QLabel *lag2 = new QLabel( tr( "Language 2" ),dummywidget);
54 lang1 = new QLineEdit( dummywidget ); 55 lang1 = new QLineEdit( dummywidget );
55 lang2 = new QLineEdit( dummywidget ); 56 lang2 = new QLineEdit( dummywidget );
56 trenner = new QLineEdit( dummywidget ); 57 trenner = new QLineEdit( dummywidget );
57 trenner->setText( "::" ); 58 trenner->setText( "::" );
58 59
59 QGridLayout *grid = new QGridLayout( dummywidget, 2,3 ); 60 QGridLayout *grid = new QGridLayout( dummywidget, 2,3 );
60 grid->addWidget( lag1, 0,0 ); 61 grid->addWidget( lag1, 0,0 );
61 grid->addWidget( devider, 0,1 ); 62 grid->addWidget( devider, 0,1 );
62 grid->addWidget( lag2, 0,2 ); 63 grid->addWidget( lag2, 0,2 );
63 grid->addWidget( lang1, 1,0 ); 64 grid->addWidget( lang1, 1,0 );
64 grid->addWidget( trenner, 1,1 ); 65 grid->addWidget( trenner, 1,1 );
65 grid->addWidget( lang2, 1,2 ); 66 grid->addWidget( lang2, 1,2 );
66 67
67 vbox_layout->addWidget( vbox ); 68 vbox_layout->addWidget( vbox );
68 69
69 showMaximized(); 70 QPEApplication::execDialog ( this );
70 71
71 if( !itemname ) 72 if( !itemname )
72 setCaption( tr( "New Searchmethod" ) ); 73 setCaption( tr( "New Searchmethod" ) );
73 else 74 else
74 { 75 {
75 setCaption( tr( "Change Searchmethod" ) ); 76 setCaption( tr( "Change Searchmethod" ) );
76 itemName = itemname; 77 itemName = itemname;
77 setupEntries(itemname); 78 setupEntries(itemname);
78 } 79 }
79} 80}
80 81
81void SearchMethodDlg::setupEntries( QString item ) 82void SearchMethodDlg::setupEntries( QString item )
82{ 83{
83 Config cfg( "odict" ); 84 Config cfg( "odict" );
84 cfg.setGroup( "Method_"+itemName ); 85 cfg.setGroup( "Method_"+itemName );
85 trenner->setText( cfg.readEntry( "Seperator" ) ); 86 trenner->setText( cfg.readEntry( "Seperator" ) );
86 lang1->setText( cfg.readEntry( "Lang1" ) ); 87 lang1->setText( cfg.readEntry( "Lang1" ) );
87 lang2->setText( cfg.readEntry( "Lang2" ) ); 88 lang2->setText( cfg.readEntry( "Lang2" ) );
88 nameLE->setText( itemName ); 89 nameLE->setText( itemName );
89 dictFileLE->setText( cfg.readEntry( "file" ) ); 90 dictFileLE->setText( cfg.readEntry( "file" ) );
90} 91}
91 92
92void SearchMethodDlg::slotBrowse() 93void SearchMethodDlg::slotBrowse()
93{ 94{
94 itemName=OFileDialog::getOpenFileName( OFileSelector::EXTENDED,QDir::homeDirPath()); 95 itemName=OFileDialog::getOpenFileName( OFileSelector::EXTENDED,QDir::homeDirPath());
95 dictFileLE->setText( itemName ); 96 dictFileLE->setText( itemName );
96} 97}
97 98
98void SearchMethodDlg::saveItem() 99void SearchMethodDlg::saveItem()
99{ 100{
100 QString name = nameLE->text(); 101 QString name = nameLE->text();
101 Config cfg( "odict" ); 102 Config cfg( "odict" );
102 cfg.setGroup( "Method_"+name ); 103 cfg.setGroup( "Method_"+name );
103 cfg.writeEntry( "Name", name ); 104 cfg.writeEntry( "Name", name );
104 cfg.writeEntry( "Seperator", trenner->text() ); 105 cfg.writeEntry( "Seperator", trenner->text() );
105 cfg.writeEntry( "Lang1", lang1->text() ); 106 cfg.writeEntry( "Lang1", lang1->text() );
106 cfg.writeEntry( "Lang2", lang2->text() ); 107 cfg.writeEntry( "Lang2", lang2->text() );
107 cfg.writeEntry( "file", dictFileLE->text() ); 108 cfg.writeEntry( "file", dictFileLE->text() );
108} 109}
diff --git a/noncore/apps/opie-bartender/bartender.cpp b/noncore/apps/opie-bartender/bartender.cpp
index 8c4ee93..cd0a364 100644
--- a/noncore/apps/opie-bartender/bartender.cpp
+++ b/noncore/apps/opie-bartender/bartender.cpp
@@ -1,447 +1,443 @@
1/**************************************************************************** 1/****************************************************************************
2** 2**
3** Created: Sat Jul 20 08:10:53 2002 3** Created: Sat Jul 20 08:10:53 2002
4** by: L.J. Potter <ljp@llornkcor.com> 4** by: L.J. Potter <ljp@llornkcor.com>
5** copyright : (C) 2002 by ljp 5** copyright : (C) 2002 by ljp
6 email : ljp@llornkcor.com 6 email : ljp@llornkcor.com
7 * This program is free software; you can redistribute it and/or modify * 7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by * 8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or * 9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. * 10 * (at your option) any later version. *
11 ***************************************************************************/ 11 ***************************************************************************/
12 12
13#include "bartender.h" 13#include "bartender.h"
14#include "newdrinks.h" 14#include "newdrinks.h"
15#include "showdrinks.h" 15#include "showdrinks.h"
16#include "inputDialog.h" 16#include "inputDialog.h"
17#include "searchresults.h" 17#include "searchresults.h"
18#include "bac.h" 18#include "bac.h"
19 19
20#include <qpe/qpetoolbar.h> 20#include <qpe/qpetoolbar.h>
21#include <qmenubar.h> 21#include <qmenubar.h>
22#include <opie/colorpopupmenu.h> 22#include <opie/colorpopupmenu.h>
23#include <qpe/qpeapplication.h> 23#include <qpe/qpeapplication.h>
24#include <qpe/resource.h> 24#include <qpe/resource.h>
25 25
26#include <qcstring.h> 26#include <qcstring.h>
27#include <qlineedit.h> 27#include <qlineedit.h>
28#include <qdir.h> 28#include <qdir.h>
29#include <qpushbutton.h> 29#include <qpushbutton.h>
30#include <qlistbox.h> 30#include <qlistbox.h>
31#include <qstringlist.h> 31#include <qstringlist.h>
32#include <qmultilineedit.h> 32#include <qmultilineedit.h>
33#include <qmessagebox.h> 33#include <qmessagebox.h>
34#include <qfile.h> 34#include <qfile.h>
35#include <qtextstream.h> 35#include <qtextstream.h>
36#include <qfile.h> 36#include <qfile.h>
37#include <qaction.h> 37#include <qaction.h>
38#include <qheader.h> 38#include <qheader.h>
39#include <qlistview.h> 39#include <qlistview.h>
40#include <qwidget.h> 40#include <qwidget.h>
41#include <qlayout.h> 41#include <qlayout.h>
42#include <qvariant.h> 42#include <qvariant.h>
43#include <qtooltip.h> 43#include <qtooltip.h>
44#include <qwhatsthis.h> 44#include <qwhatsthis.h>
45#include <qimage.h> 45#include <qimage.h>
46#include <qpixmap.h> 46#include <qpixmap.h>
47 47
48#include <fcntl.h> 48#include <fcntl.h>
49#include <unistd.h> 49#include <unistd.h>
50#include <stdlib.h> 50#include <stdlib.h>
51#include <stdio.h> 51#include <stdio.h>
52#include <errno.h> 52#include <errno.h>
53 53
54 54
55Bartender::Bartender( QWidget* parent, const char* name, WFlags fl ) 55Bartender::Bartender( QWidget* parent, const char* name, WFlags fl )
56 : QMainWindow( parent, name, fl ) { 56 : QMainWindow( parent, name, fl ) {
57 if ( !name ) 57 if ( !name )
58 setName( "Bartender" ); 58 setName( "Bartender" );
59 QGridLayout *layout = new QGridLayout( this ); 59 QGridLayout *layout = new QGridLayout( this );
60 layout->setSpacing( 2); 60 layout->setSpacing( 2);
61 layout->setMargin( 2); 61 layout->setMargin( 2);
62 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); 62 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) );
63 63
64 setCaption( tr( "Bartender" ) ); 64 setCaption( tr( "Bartender" ) );
65 65
66 ToolBar1 = new QToolBar( this, "ToolBar1" ); 66 ToolBar1 = new QToolBar( this, "ToolBar1" );
67 ToolBar1->setFixedHeight(22); 67 ToolBar1->setFixedHeight(22);
68 layout->addMultiCellWidget( ToolBar1, 0, 0, 0, 4 ); 68 layout->addMultiCellWidget( ToolBar1, 0, 0, 0, 4 );
69 69
70 QMenuBar *menuBar = new QMenuBar( ToolBar1 ); 70 QMenuBar *menuBar = new QMenuBar( ToolBar1 );
71 QPopupMenu *fileMenu; 71 QPopupMenu *fileMenu;
72 fileMenu = new QPopupMenu( this); 72 fileMenu = new QPopupMenu( this);
73 menuBar->insertItem( tr("File"), fileMenu ); 73 menuBar->insertItem( tr("File"), fileMenu );
74 74
75 fileMenu->insertItem(tr("New Drink")); 75 fileMenu->insertItem(tr("New Drink"));
76 fileMenu->insertItem(tr("Open Drink")); 76 fileMenu->insertItem(tr("Open Drink"));
77 fileMenu->insertItem(tr("Find by Drink Name")); 77 fileMenu->insertItem(tr("Find by Drink Name"));
78 fileMenu->insertItem(tr("Find by Alcohol")); 78 fileMenu->insertItem(tr("Find by Alcohol"));
79 79
80 QPopupMenu *editMenu; 80 QPopupMenu *editMenu;
81 editMenu = new QPopupMenu( this); 81 editMenu = new QPopupMenu( this);
82 menuBar->insertItem( tr("Edit"), editMenu ); 82 menuBar->insertItem( tr("Edit"), editMenu );
83 editMenu->insertItem(tr("edit")); 83 editMenu->insertItem(tr("edit"));
84 84
85 connect( fileMenu, SIGNAL( activated(int) ), this, SLOT( fileMenuActivated(int) )); 85 connect( fileMenu, SIGNAL( activated(int) ), this, SLOT( fileMenuActivated(int) ));
86 connect( editMenu, SIGNAL( activated(int) ), this, SLOT( editMenuActivated(int) )); 86 connect( editMenu, SIGNAL( activated(int) ), this, SLOT( editMenuActivated(int) ));
87 87
88 88
89 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), "New", 0, this, 0 ); 89 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), "New", 0, this, 0 );
90 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); 90 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
91 a->addTo( ToolBar1 ); 91 a->addTo( ToolBar1 );
92 92
93 a = new QAction( tr( "Open" ), Resource::loadPixmap( "bartender/bartender_sm" ), "open", 0, this, 0 ); 93 a = new QAction( tr( "Open" ), Resource::loadPixmap( "bartender/bartender_sm" ), "open", 0, this, 0 );
94 connect( a, SIGNAL( activated() ), this, SLOT( openCurrentDrink() ) ); 94 connect( a, SIGNAL( activated() ), this, SLOT( openCurrentDrink() ) );
95 a->addTo( ToolBar1 ); 95 a->addTo( ToolBar1 );
96 96
97 a = new QAction( tr( "Find" ), Resource::loadPixmap( "find" ), "Find", 0, this, 0 ); 97 a = new QAction( tr( "Find" ), Resource::loadPixmap( "find" ), "Find", 0, this, 0 );
98 connect( a, SIGNAL( activated() ), this, SLOT( askSearch() ) ); 98 connect( a, SIGNAL( activated() ), this, SLOT( askSearch() ) );
99 a->addTo( ToolBar1 ); 99 a->addTo( ToolBar1 );
100 100
101 a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ),"Edit", 0, this, 0 ); 101 a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ),"Edit", 0, this, 0 );
102 connect( a, SIGNAL( activated() ), this, SLOT( doEdit() ) ); 102 connect( a, SIGNAL( activated() ), this, SLOT( doEdit() ) );
103 a->addTo( ToolBar1 ); 103 a->addTo( ToolBar1 );
104 104
105 QPushButton *t; 105 QPushButton *t;
106 t= new QPushButton( "BAC", ToolBar1, "bacButtin"); 106 t= new QPushButton( "BAC", ToolBar1, "bacButtin");
107 connect( t, SIGNAL( clicked() ), this, SLOT( doBac() ) ); 107 connect( t, SIGNAL( clicked() ), this, SLOT( doBac() ) );
108 108
109 DrinkView = new QListView( this, "DrinkView" ); 109 DrinkView = new QListView( this, "DrinkView" );
110 DrinkView->addColumn( tr( "Name of Drink" ) ); 110 DrinkView->addColumn( tr( "Name of Drink" ) );
111// DrinkView->setRootIsDecorated( TRUE ); 111// DrinkView->setRootIsDecorated( TRUE );
112 DrinkView->header()->hide(); 112 DrinkView->header()->hide();
113 113
114 QPEApplication::setStylusOperation( DrinkView->viewport(),QPEApplication::RightOnHold); 114 QPEApplication::setStylusOperation( DrinkView->viewport(),QPEApplication::RightOnHold);
115 115
116 connect(DrinkView, SIGNAL( doubleClicked(QListViewItem*)),this,SLOT(showDrink( QListViewItem*))); 116 connect(DrinkView, SIGNAL( doubleClicked(QListViewItem*)),this,SLOT(showDrink( QListViewItem*)));
117 connect(DrinkView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 117 connect(DrinkView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
118 this,SLOT( showDrink(int, QListViewItem *, const QPoint&, int))); 118 this,SLOT( showDrink(int, QListViewItem *, const QPoint&, int)));
119 119
120 layout->addMultiCellWidget( DrinkView, 1, 2, 0, 4 ); 120 layout->addMultiCellWidget( DrinkView, 1, 2, 0, 4 );
121 if(QDir("db").exists()) { 121 if(QDir("db").exists()) {
122 dbFile.setName( "db/drinkdb.txt"); 122 dbFile.setName( "db/drinkdb.txt");
123 } else 123 } else
124 dbFile.setName( QPEApplication::qpeDir()+"/etc/bartender/drinkdb.txt"); 124 dbFile.setName( QPEApplication::qpeDir()+"/etc/bartender/drinkdb.txt");
125 initDrinkDb(); 125 initDrinkDb();
126} 126}
127 127
128Bartender::~Bartender() { 128Bartender::~Bartender() {
129} 129}
130 130
131/* 131/*
132this happens right before exit */ 132this happens right before exit */
133void Bartender::cleanUp() { 133void Bartender::cleanUp() {
134 dbFile.close(); 134 dbFile.close();
135 135
136} 136}
137 137
138void Bartender::initDrinkDb() { 138void Bartender::initDrinkDb() {
139 139
140 if(!dbFile.isOpen()) 140 if(!dbFile.isOpen())
141 if ( !dbFile.open( IO_ReadOnly)) { 141 if ( !dbFile.open( IO_ReadOnly)) {
142 QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) ); 142 QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) );
143 return; 143 return;
144 } 144 }
145 fillList(); 145 fillList();
146} 146}
147 147
148void Bartender::fillList() { 148void Bartender::fillList() {
149 dbFile.at(1); 149 dbFile.at(1);
150 DrinkView->clear(); 150 DrinkView->clear();
151 int i=0; 151 int i=0;
152 QListViewItem * item ; 152 QListViewItem * item ;
153 QTextStream t( &dbFile); 153 QTextStream t( &dbFile);
154 QString s; 154 QString s;
155 while ( !t.eof()) { 155 while ( !t.eof()) {
156 s = t.readLine(); 156 s = t.readLine();
157 if(s.find("#",0,TRUE) != -1) { 157 if(s.find("#",0,TRUE) != -1) {
158// qDebug(s.right(s.length()-2)); 158// qDebug(s.right(s.length()-2));
159 item= new QListViewItem( DrinkView, 0 ); 159 item= new QListViewItem( DrinkView, 0 );
160 item->setText( 0, s.right(s.length()-2)); 160 item->setText( 0, s.right(s.length()-2));
161 i++; 161 i++;
162 } 162 }
163 } 163 }
164 qDebug("there are currently %d of drinks", i); 164 qDebug("there are currently %d of drinks", i);
165} 165}
166 166
167void Bartender::fileNew() { 167void Bartender::fileNew() {
168 168
169 New_Drink *newDrinks; 169 New_Drink *newDrinks;
170 newDrinks = new New_Drink(this,"New Drink....", TRUE); 170 newDrinks = new New_Drink(this,"New Drink....", TRUE);
171 QString newName, newIng; 171 QString newName, newIng;
172 newDrinks->showMaximized(); 172 QPEApplication::execDialog( newDrinks );
173 newDrinks->exec();
174 newName = newDrinks->LineEdit1->text(); 173 newName = newDrinks->LineEdit1->text();
175 newIng= newDrinks->MultiLineEdit1->text(); 174 newIng= newDrinks->MultiLineEdit1->text();
176 175
177 if(dbFile.isOpen()) 176 if(dbFile.isOpen())
178 dbFile.close(); 177 dbFile.close();
179 if ( !dbFile.open( IO_WriteOnly| IO_Append)) { 178 if ( !dbFile.open( IO_WriteOnly| IO_Append)) {
180 QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) ); 179 QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) );
181 return; 180 return;
182 } 181 }
183 if(newDrinks ->result() == 1 ) { 182 if(newDrinks ->result() == 1 ) {
184 QString newDrink="\n# "+newName+"\n"; 183 QString newDrink="\n# "+newName+"\n";
185 newDrink.append(newIng+"\n"); 184 newDrink.append(newIng+"\n");
186 qDebug("writing "+newDrink); 185 qDebug("writing "+newDrink);
187 dbFile.writeBlock( newDrink.latin1(), newDrink.length()); 186 dbFile.writeBlock( newDrink.latin1(), newDrink.length());
188 clearList(); 187 clearList();
189 dbFile.close(); 188 dbFile.close();
190 189
191 initDrinkDb(); 190 initDrinkDb();
192 } 191 }
193 delete newDrinks; 192 delete newDrinks;
194} 193}
195 194
196void Bartender::showDrink(int mouse, QListViewItem * item, const QPoint&, int) { 195void Bartender::showDrink(int mouse, QListViewItem * item, const QPoint&, int) {
197 switch (mouse) { 196 switch (mouse) {
198 case 1: 197 case 1:
199// showDrink(item); 198// showDrink(item);
200 break; 199 break;
201 case 2: 200 case 2:
202 showDrink(item); 201 showDrink(item);
203 break; 202 break;
204 } 203 }
205} 204}
206 205
207void Bartender::showDrink( QListViewItem *item) { 206void Bartender::showDrink( QListViewItem *item) {
208 if(item==NULL) return; 207 if(item==NULL) return;
209 dbFile.at(0); 208 dbFile.at(0);
210 Show_Drink *showDrinks; 209 Show_Drink *showDrinks;
211 QString myDrink=item->text(0); 210 QString myDrink=item->text(0);
212 showDrinks = new Show_Drink(this, myDrink, TRUE); 211 showDrinks = new Show_Drink(this, myDrink, TRUE);
213 QTextStream t( &dbFile); 212 QTextStream t( &dbFile);
214 213
215 QString s, s2; 214 QString s, s2;
216 while ( !t.eof()) { 215 while ( !t.eof()) {
217 s = t.readLine(); 216 s = t.readLine();
218 if(s.find( myDrink, 0, TRUE) != -1) { 217 if(s.find( myDrink, 0, TRUE) != -1) {
219 for(int i=0;s2.find( "#", 0, TRUE) == -1;i++) { 218 for(int i=0;s2.find( "#", 0, TRUE) == -1;i++) {
220 s2 = t.readLine(); 219 s2 = t.readLine();
221 if(s2.find("#",0,TRUE) == -1 || dbFile.atEnd() ) { 220 if(s2.find("#",0,TRUE) == -1 || dbFile.atEnd() ) {
222// qDebug(s2); 221// qDebug(s2);
223 showDrinks->MultiLineEdit1->append(s2); 222 showDrinks->MultiLineEdit1->append(s2);
224 } 223 }
225 if( dbFile.atEnd() ) break; 224 if( dbFile.atEnd() ) break;
226 } 225 }
227 } 226 }
228 } 227 }
229 showDrinks->showMaximized(); 228 QPEApplication::execDialog( showDrinks );
230 showDrinks->exec();
231 229
232 if(showDrinks ->result() ==0) { 230 if(showDrinks ->result() ==0) {
233 doEdit(); 231 doEdit();
234 } 232 }
235 delete showDrinks; 233 delete showDrinks;
236} 234}
237 235
238void Bartender::askSearch() { 236void Bartender::askSearch() {
239 switch ( QMessageBox::warning(this,tr("Find"),tr("Search by drink name\n")+ 237 switch ( QMessageBox::warning(this,tr("Find"),tr("Search by drink name\n")+
240 "\nor alcohol ?" 238 "\nor alcohol ?"
241 ,tr("Drink Name"),tr("Alcohol"),0,0,1) ) { 239 ,tr("Drink Name"),tr("Alcohol"),0,0,1) ) {
242 case 0: 240 case 0:
243 doSearchByName(); 241 doSearchByName();
244 break; 242 break;
245 case 1: 243 case 1:
246 doSearchByDrink(); 244 doSearchByDrink();
247 break; 245 break;
248 }; 246 };
249} 247}
250 248
251/* search by name */ 249/* search by name */
252void Bartender::doSearchByName() { 250void Bartender::doSearchByName() {
253// if( DrinkView->currentItem() == NULL) return; 251// if( DrinkView->currentItem() == NULL) return;
254 QStringList searchList; 252 QStringList searchList;
255 QString searchForDrinkName; 253 QString searchForDrinkName;
256 InputDialog *fileDlg; 254 InputDialog *fileDlg;
257 fileDlg = new InputDialog(this,tr("Find by Drink Name"),TRUE, 0); 255 fileDlg = new InputDialog(this,tr("Find by Drink Name"),TRUE, 0);
258 fileDlg->exec(); 256 fileDlg->exec();
259 if( fileDlg->result() == 1 ) { 257 if( fileDlg->result() == 1 ) {
260 searchForDrinkName = fileDlg->LineEdit1->text(); 258 searchForDrinkName = fileDlg->LineEdit1->text();
261 QListViewItemIterator it( DrinkView ); 259 QListViewItemIterator it( DrinkView );
262 for ( ; it.current(); ++it ) { 260 for ( ; it.current(); ++it ) {
263 if ( it.current()->text(0).find( searchForDrinkName, 0, TRUE) != -1 ) { 261 if ( it.current()->text(0).find( searchForDrinkName, 0, TRUE) != -1 ) {
264// qDebug( it.current()->text(0)); 262// qDebug( it.current()->text(0));
265 searchList.append(it.current()->text(0)); 263 searchList.append(it.current()->text(0));
266 } 264 }
267 } 265 }
268 if(searchList.count() >0) 266 if(searchList.count() >0)
269 showSearchResult(searchList); 267 showSearchResult(searchList);
270 else 268 else
271 QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+searchForDrinkName); 269 QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+searchForDrinkName);
272 }//end Inputdialog 270 }//end Inputdialog
273 delete fileDlg; 271 delete fileDlg;
274} 272}
275 273
276void Bartender::doSearchByDrink() { 274void Bartender::doSearchByDrink() {
277// if( DrinkView->currentItem() == NULL) return; 275// if( DrinkView->currentItem() == NULL) return;
278 QStringList searchList; 276 QStringList searchList;
279 QString searchForDrinkName, lastDrinkName, tempName; 277 QString searchForDrinkName, lastDrinkName, tempName;
280 278
281 InputDialog *fileDlg; 279 InputDialog *fileDlg;
282 fileDlg = new InputDialog(this,tr("Find by Alcohol"),TRUE, 0); 280 fileDlg = new InputDialog(this,tr("Find by Alcohol"),TRUE, 0);
283 fileDlg->exec(); 281 fileDlg->exec();
284 if( fileDlg->result() == 1 ) { 282 if( fileDlg->result() == 1 ) {
285 searchForDrinkName = fileDlg->LineEdit1->text(); 283 searchForDrinkName = fileDlg->LineEdit1->text();
286 284
287 dbFile.at(0); 285 dbFile.at(0);
288 QTextStream t( &dbFile); 286 QTextStream t( &dbFile);
289 287
290 QString s, s2; 288 QString s, s2;
291 while ( !t.eof()) { 289 while ( !t.eof()) {
292 s = t.readLine(); 290 s = t.readLine();
293 if(s.find("#",0,TRUE) != -1) { 291 if(s.find("#",0,TRUE) != -1) {
294 lastDrinkName=s.right(s.length()-2); 292 lastDrinkName=s.right(s.length()-2);
295// qDebug("last drink name "+lastDrinkName); 293// qDebug("last drink name "+lastDrinkName);
296 } 294 }
297 else if( s.find( searchForDrinkName ,0, FALSE) != -1 && lastDrinkName != tempName ) { 295 else if( s.find( searchForDrinkName ,0, FALSE) != -1 && lastDrinkName != tempName ) {
298// qDebug("appending "+lastDrinkName); 296// qDebug("appending "+lastDrinkName);
299 searchList.append( lastDrinkName); 297 searchList.append( lastDrinkName);
300 tempName=lastDrinkName; 298 tempName=lastDrinkName;
301 } 299 }
302// if( dbFile.atEnd() ) break; 300// if( dbFile.atEnd() ) break;
303 301
304 } //oef 302 } //oef
305 if(searchList.count() >0) 303 if(searchList.count() >0)
306 showSearchResult(searchList); 304 showSearchResult(searchList);
307 else 305 else
308 QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+ searchForDrinkName); 306 QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+ searchForDrinkName);
309 } 307 }
310 delete fileDlg; 308 delete fileDlg;
311} 309}
312 310
313void Bartender::showSearchResult(QStringList &searchList) { 311void Bartender::showSearchResult(QStringList &searchList) {
314 QString result; 312 QString result;
315 Search_Results *searchDlg; 313 Search_Results *searchDlg;
316 314
317 searchList.sort(); 315 searchList.sort();
318 316
319 searchDlg = new Search_Results(this, "Search Results", TRUE); 317 searchDlg = new Search_Results(this, "Search Results", TRUE);
320 searchDlg->showMaximized();
321 searchDlg->ListBox1->insertStringList( searchList,-1); 318 searchDlg->ListBox1->insertStringList( searchList,-1);
322 searchDlg->exec(); 319 QPEApplication::execDialog( searchDlg );
323 320
324 if( searchDlg->result() == 1 ) { 321 if( searchDlg->result() == 1 ) {
325 result= searchDlg->ListBox1->currentText(); 322 result= searchDlg->ListBox1->currentText();
326 } 323 }
327 QListViewItemIterator it2( DrinkView ); 324 QListViewItemIterator it2( DrinkView );
328 for ( ; it2.current(); ++it2 ) { 325 for ( ; it2.current(); ++it2 ) {
329 if ( it2.current()->text(0)== result ) { 326 if ( it2.current()->text(0)== result ) {
330// qDebug( it2.current()->text(0)); 327// qDebug( it2.current()->text(0));
331 showDrink(it2.current()); 328 showDrink(it2.current());
332 } 329 }
333 } 330 }
334delete searchDlg; 331delete searchDlg;
335} 332}
336 333
337void Bartender::doEdit() { 334void Bartender::doEdit() {
338 if(DrinkView->currentItem() == NULL) { 335 if(DrinkView->currentItem() == NULL) {
339 fileNew(); 336 fileNew();
340 } 337 }
341 338
342 QString myDrink; 339 QString myDrink;
343 myDrink= DrinkView->currentItem()->text(0); 340 myDrink= DrinkView->currentItem()->text(0);
344 dbFile.at(0); 341 dbFile.at(0);
345 int foundAt=0; 342 int foundAt=0;
346 New_Drink *newDrinks; 343 New_Drink *newDrinks;
347 newDrinks = new New_Drink(this,"Edit Drink....", TRUE); 344 newDrinks = new New_Drink(this,"Edit Drink....", TRUE);
348 QString newName, newIng; 345 QString newName, newIng;
349 newDrinks->showMaximized(); 346 QPEApplication::showDialog( newDrinks );
350 QTextStream t( &dbFile); 347 QTextStream t( &dbFile);
351 348
352 QString s, s2; 349 QString s, s2;
353 while ( !t.eof()) { 350 while ( !t.eof()) {
354 s = t.readLine(); 351 s = t.readLine();
355 if(s.find( myDrink, 0, TRUE) != -1) { 352 if(s.find( myDrink, 0, TRUE) != -1) {
356 foundAt = dbFile.at() - (s.length()+1); 353 foundAt = dbFile.at() - (s.length()+1);
357 for(int i=0;s2.find( "#", 0, TRUE) == -1;i++) { 354 for(int i=0;s2.find( "#", 0, TRUE) == -1;i++) {
358 s2 = t.readLine(); 355 s2 = t.readLine();
359 if(s2.find("#",0,TRUE) == -1 || dbFile.atEnd() ) { 356 if(s2.find("#",0,TRUE) == -1 || dbFile.atEnd() ) {
360// qDebug(s2); 357// qDebug(s2);
361 newDrinks->MultiLineEdit1->append(s2); 358 newDrinks->MultiLineEdit1->append(s2);
362 newDrinks->LineEdit1->setText(myDrink); 359 newDrinks->LineEdit1->setText(myDrink);
363 } 360 }
364 if( dbFile.atEnd() ) break; 361 if( dbFile.atEnd() ) break;
365 } 362 }
366 } 363 }
367 } 364 }
368 newDrinks->exec(); 365 newDrinks->exec();
369 newName = newDrinks->LineEdit1->text(); 366 newName = newDrinks->LineEdit1->text();
370 newIng= newDrinks->MultiLineEdit1->text(); 367 newIng= newDrinks->MultiLineEdit1->text();
371 368
372 if( newDrinks ->result() == 1 ) { 369 if( newDrinks ->result() == 1 ) {
373 if(dbFile.isOpen()) 370 if(dbFile.isOpen())
374 dbFile.close(); 371 dbFile.close();
375 if ( !dbFile.open( IO_ReadWrite )) { 372 if ( !dbFile.open( IO_ReadWrite )) {
376 QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) ); 373 QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) );
377 return; 374 return;
378 } 375 }
379 int fd = dbFile.handle(); 376 int fd = dbFile.handle();
380 lseek( fd, foundAt, SEEK_SET); 377 lseek( fd, foundAt, SEEK_SET);
381 378
382// dbFile.at( foundAt); 379// dbFile.at( foundAt);
383#warning FIXME problems with editing drinks db 380#warning FIXME problems with editing drinks db
384 ////////// FIXME write to user file 381 ////////// FIXME write to user file
385 QString newDrink="# "+newName+"\n"; 382 QString newDrink="# "+newName+"\n";
386 newDrink.append(newIng+"\n"); 383 newDrink.append(newIng+"\n");
387 qDebug("writing "+newDrink); 384 qDebug("writing "+newDrink);
388 dbFile.writeBlock( newDrink.latin1(), newDrink.length()); 385 dbFile.writeBlock( newDrink.latin1(), newDrink.length());
389 clearList(); 386 clearList();
390 387
391 dbFile.flush(); 388 dbFile.flush();
392 389
393 initDrinkDb(); 390 initDrinkDb();
394 } 391 }
395} 392}
396 393
397void Bartender::clearList() { 394void Bartender::clearList() {
398 DrinkView->clear(); 395 DrinkView->clear();
399} 396}
400 397
401void Bartender::doBac() { 398void Bartender::doBac() {
402 BacDialog *bacDlg; 399 BacDialog *bacDlg;
403 bacDlg = new BacDialog(this,"BAC",TRUE); 400 bacDlg = new BacDialog(this,"BAC",TRUE);
404 bacDlg->showMaximized(); 401 QPEApplication::execDialog( bacDlg );
405 bacDlg->exec();
406 delete bacDlg; 402 delete bacDlg;
407} 403}
408 404
409void Bartender::openCurrentDrink() { 405void Bartender::openCurrentDrink() {
410 if(DrinkView->currentItem() == NULL) return; 406 if(DrinkView->currentItem() == NULL) return;
411 showDrink(DrinkView->currentItem()); 407 showDrink(DrinkView->currentItem());
412} 408}
413 409
414void Bartender::fileMenuActivated( int item) { 410void Bartender::fileMenuActivated( int item) {
415 qDebug("Item %d", item); 411 qDebug("Item %d", item);
416 switch(item) { 412 switch(item) {
417 case -3: // new -3 413 case -3: // new -3
418 fileNew(); 414 fileNew();
419 break; 415 break;
420 case -4:// open -4 416 case -4:// open -4
421 openCurrentDrink(); 417 openCurrentDrink();
422 break; 418 break;
423 case -5:// drink -5 419 case -5:// drink -5
424 doSearchByName(); 420 doSearchByName();
425 421
426 break; 422 break;
427 case -6:// alcohol -6 423 case -6:// alcohol -6
428 doSearchByDrink(); 424 doSearchByDrink();
429 425
430 break; 426 break;
431 427
432 } 428 }
433} 429}
434 430
435void Bartender::editMenuActivated(int item) { 431void Bartender::editMenuActivated(int item) {
436 qDebug("Item %d", item); 432 qDebug("Item %d", item);
437 /* 433 /*
438 edit -8 434 edit -8
439 */ 435 */
440 switch(item) { 436 switch(item) {
441 case -8: 437 case -8:
442 doEdit() ; 438 doEdit() ;
443 break; 439 break;
444 440
445 } 441 }
446} 442}
447 443
diff --git a/noncore/apps/opie-console/configdialog.cpp b/noncore/apps/opie-console/configdialog.cpp
index b23f4d0..882cd3d 100644
--- a/noncore/apps/opie-console/configdialog.cpp
+++ b/noncore/apps/opie-console/configdialog.cpp
@@ -1,111 +1,111 @@
1#include <qlistview.h>
2 1
2#include <qpe/qpeapplication.h>
3
4#include <qlistview.h>
3 5
4#include "configdialog.h" 6#include "configdialog.h"
5#include "profileeditordialog.h" 7#include "profileeditordialog.h"
6 8
7class ConfigListItem : public QListViewItem { 9class ConfigListItem : public QListViewItem {
8public: 10public:
9 ConfigListItem( QListView* item, const Profile& ); 11 ConfigListItem( QListView* item, const Profile& );
10 ~ConfigListItem(); 12 ~ConfigListItem();
11 Profile profile()const; 13 Profile profile()const;
12 14
13private: 15private:
14 Profile m_prof; 16 Profile m_prof;
15}; 17};
16ConfigListItem::ConfigListItem( QListView* item, const Profile& prof ) 18ConfigListItem::ConfigListItem( QListView* item, const Profile& prof )
17 : QListViewItem( item ), m_prof( prof ) 19 : QListViewItem( item ), m_prof( prof )
18{ 20{
19 setText(0, prof.name() ); 21 setText(0, prof.name() );
20} 22}
21ConfigListItem::~ConfigListItem() { 23ConfigListItem::~ConfigListItem() {
22 24
23} 25}
24Profile ConfigListItem::profile()const { 26Profile ConfigListItem::profile()const {
25 return m_prof; 27 return m_prof;
26} 28}
27 29
28/* Dialog */ 30/* Dialog */
29 31
30ConfigDialog::ConfigDialog( const Profile::ValueList& lis, MetaFactory* fa, 32ConfigDialog::ConfigDialog( const Profile::ValueList& lis, MetaFactory* fa,
31 QWidget* parent ) 33 QWidget* parent )
32 : ConfigureBase( parent, 0, TRUE ), m_fact( fa ) 34 : ConfigureBase( parent, 0, TRUE ), m_fact( fa )
33{ 35{
34 //init(); 36 //init();
35 { 37 {
36 Profile::ValueList::ConstIterator it; 38 Profile::ValueList::ConstIterator it;
37 for (it = lis.begin(); it != lis.end(); ++it ) { 39 for (it = lis.begin(); it != lis.end(); ++it ) {
38 new ConfigListItem( lstView, (*it) ); 40 new ConfigListItem( lstView, (*it) );
39 } 41 }
40 } 42 }
41} 43}
42ConfigDialog::~ConfigDialog() { 44ConfigDialog::~ConfigDialog() {
43 45
44} 46}
45Profile::ValueList ConfigDialog::list()const { 47Profile::ValueList ConfigDialog::list()const {
46/* iterate over the list */ 48/* iterate over the list */
47 Profile::ValueList lst; 49 Profile::ValueList lst;
48 QListViewItemIterator it(lstView); 50 QListViewItemIterator it(lstView);
49 for ( ; it.current(); ++it ) { 51 for ( ; it.current(); ++it ) {
50 ConfigListItem* item = (ConfigListItem*)it.current(); 52 ConfigListItem* item = (ConfigListItem*)it.current();
51 lst.append( item->profile() ); 53 lst.append( item->profile() );
52 } 54 }
53 return lst; 55 return lst;
54} 56}
55/* our slots */ 57/* our slots */
56void ConfigDialog::slotRemove() { 58void ConfigDialog::slotRemove() {
57 ConfigListItem* item = (ConfigListItem*)lstView->currentItem(); 59 ConfigListItem* item = (ConfigListItem*)lstView->currentItem();
58 if (!item ) 60 if (!item )
59 return; 61 return;
60 62
61 lstView->takeItem( item ); 63 lstView->takeItem( item );
62 delete item; 64 delete item;
63} 65}
64 66
65void ConfigDialog::slotEdit() { 67void ConfigDialog::slotEdit() {
66 Profile p; 68 Profile p;
67 69
68 if(!lstView->currentItem()) return; 70 if(!lstView->currentItem()) return;
69 71
70 // Load profile 72 // Load profile
71 p = ((ConfigListItem*)lstView->currentItem())->profile(); 73 p = ((ConfigListItem*)lstView->currentItem())->profile();
72 74
73 ProfileEditorDialog dlg(m_fact, p); 75 ProfileEditorDialog dlg(m_fact, p);
74 76
75 dlg.setCaption(tr("Edit Connection Profile")); 77 dlg.setCaption(tr("Edit Connection Profile"));
76 dlg.showMaximized(); 78 int ret = QPEApplication::execDialog( &dlg );
77 int ret = dlg.exec();
78 79
79 if(ret == QDialog::Accepted) 80 if(ret == QDialog::Accepted)
80 { 81 {
81 if(lstView->currentItem()) delete lstView->currentItem(); 82 if(lstView->currentItem()) delete lstView->currentItem();
82 83
83 // use dlg.terminal()! 84 // use dlg.terminal()!
84 Profile p = dlg.profile(); 85 Profile p = dlg.profile();
85 86
86 new ConfigListItem(lstView, p); 87 new ConfigListItem(lstView, p);
87 } 88 }
88} 89}
89 90
90 91
91void ConfigDialog::slotAdd() { 92void ConfigDialog::slotAdd() {
92 ProfileEditorDialog dlg(m_fact); 93 ProfileEditorDialog dlg(m_fact);
93 94
94 dlg.setCaption(tr("New Connection")); 95 dlg.setCaption(tr("New Connection"));
95 dlg.showMaximized(); 96 int ret = QPEApplication::execDialog( &dlg );
96 int ret = dlg.exec();
97 97
98 if(ret == QDialog::Accepted) 98 if(ret == QDialog::Accepted)
99 { 99 {
100 // TODO: Move into general profile save part 100 // TODO: Move into general profile save part
101 // assignments 101 // assignments
102 //QString type = dlg.term_type(); 102 //QString type = dlg.term_type();
103 //if(type == "VT102") profile = Profile::VT102; 103 //if(type == "VT102") profile = Profile::VT102;
104 104
105 // get profile from editor 105 // get profile from editor
106 Profile p = dlg.profile(); 106 Profile p = dlg.profile();
107 107
108 new ConfigListItem(lstView, p); 108 new ConfigListItem(lstView, p);
109 } 109 }
110} 110}
111 111
diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp
index 2673335..3fe9040 100644
--- a/noncore/apps/opie-console/mainwindow.cpp
+++ b/noncore/apps/opie-console/mainwindow.cpp
@@ -1,729 +1,728 @@
1#include <assert.h> 1#include <assert.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qmenubar.h> 4#include <qmenubar.h>
5#include <qtoolbar.h> 5#include <qtoolbar.h>
6#include <qmessagebox.h> 6#include <qmessagebox.h>
7#include <qwhatsthis.h> 7#include <qwhatsthis.h>
8#include <qfileinfo.h> 8#include <qfileinfo.h>
9 9
10#include <qpe/filemanager.h> 10#include <qpe/filemanager.h>
11#include <qpe/qpeapplication.h>
11 12
12#include <opie/ofiledialog.h> 13#include <opie/ofiledialog.h>
13 14
14#include "TEmulation.h" 15#include "TEmulation.h"
15#include "profileeditordialog.h" 16#include "profileeditordialog.h"
16#include "configdialog.h" 17#include "configdialog.h"
17#include "default.h" 18#include "default.h"
18#include "profilemanager.h" 19#include "profilemanager.h"
19#include "mainwindow.h" 20#include "mainwindow.h"
20#include "tabwidget.h" 21#include "tabwidget.h"
21#include "transferdialog.h" 22#include "transferdialog.h"
22#include "function_keyboard.h" 23#include "function_keyboard.h"
23#include "emulation_handler.h" 24#include "emulation_handler.h"
24#include "script.h" 25#include "script.h"
25 26
26 27
27MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(parent, name, WStyle_ContextHelp) { 28MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(parent, name, WStyle_ContextHelp) {
28 KeyTrans::loadAll(); 29 KeyTrans::loadAll();
29 for (int i = 0; i < KeyTrans::count(); i++ ) { 30 for (int i = 0; i < KeyTrans::count(); i++ ) {
30 KeyTrans* s = KeyTrans::find(i ); 31 KeyTrans* s = KeyTrans::find(i );
31 assert( s ); 32 assert( s );
32 } 33 }
33 m_factory = new MetaFactory(); 34 m_factory = new MetaFactory();
34 Default def(m_factory); 35 Default def(m_factory);
35 m_sessions.setAutoDelete( TRUE ); 36 m_sessions.setAutoDelete( TRUE );
36 m_curSession = 0; 37 m_curSession = 0;
37 m_manager = new ProfileManager( m_factory ); 38 m_manager = new ProfileManager( m_factory );
38 m_manager->load(); 39 m_manager->load();
39 m_scriptsData.setAutoDelete(TRUE); 40 m_scriptsData.setAutoDelete(TRUE);
40 41
41 initUI(); 42 initUI();
42 populateProfiles(); 43 populateProfiles();
43 populateScripts(); 44 populateScripts();
44} 45}
45 46
46void MainWindow::initUI() { 47void MainWindow::initUI() {
47 48
48 setToolBarsMovable( FALSE ); 49 setToolBarsMovable( FALSE );
49 50
50 /* tool bar for the menu */ 51 /* tool bar for the menu */
51 m_tool = new QToolBar( this ); 52 m_tool = new QToolBar( this );
52 m_tool->setHorizontalStretchable( TRUE ); 53 m_tool->setHorizontalStretchable( TRUE );
53 54
54 m_bar = new QMenuBar( m_tool ); 55 m_bar = new QMenuBar( m_tool );
55 m_console = new QPopupMenu( this ); 56 m_console = new QPopupMenu( this );
56 m_scripts = new QPopupMenu( this ); 57 m_scripts = new QPopupMenu( this );
57 m_sessionsPop= new QPopupMenu( this ); 58 m_sessionsPop= new QPopupMenu( this );
58 m_scriptsPop = new QPopupMenu( this ); 59 m_scriptsPop = new QPopupMenu( this );
59 60
60 /* add a toolbar for icons */ 61 /* add a toolbar for icons */
61 m_icons = new QToolBar(this); 62 m_icons = new QToolBar(this);
62 63
63 /* 64 /*
64 * the settings action 65 * the settings action
65 */ 66 */
66 m_setProfiles = new QAction(tr("Configure Profiles"), 67 m_setProfiles = new QAction(tr("Configure Profiles"),
67 Resource::loadPixmap( "SettingsIcon" ), 68 Resource::loadPixmap( "SettingsIcon" ),
68 QString::null, 0, this, 0); 69 QString::null, 0, this, 0);
69 m_setProfiles->addTo( m_console ); 70 m_setProfiles->addTo( m_console );
70 connect( m_setProfiles, SIGNAL(activated() ), 71 connect( m_setProfiles, SIGNAL(activated() ),
71 this, SLOT(slotConfigure() ) ); 72 this, SLOT(slotConfigure() ) );
72 73
73 m_console->insertSeparator(); 74 m_console->insertSeparator();
74 /* 75 /*
75 * new Action for new sessions 76 * new Action for new sessions
76 */ 77 */
77 QAction* newCon = new QAction(tr("New Profile"), 78 QAction* newCon = new QAction(tr("New Profile"),
78 Resource::loadPixmap( "new" ), 79 Resource::loadPixmap( "new" ),
79 QString::null, 0, this, 0); 80 QString::null, 0, this, 0);
80 newCon->addTo( m_console ); 81 newCon->addTo( m_console );
81 connect( newCon, SIGNAL(activated() ), 82 connect( newCon, SIGNAL(activated() ),
82 this, SLOT(slotNew() ) ); 83 this, SLOT(slotNew() ) );
83 84
84 m_console->insertSeparator(); 85 m_console->insertSeparator();
85 86
86 QAction *saveCon = new QAction( tr("Save Profile" ), 87 QAction *saveCon = new QAction( tr("Save Profile" ),
87 Resource::loadPixmap( "save" ), QString::null, 88 Resource::loadPixmap( "save" ), QString::null,
88 0, this, 0 ); 89 0, this, 0 );
89 saveCon->addTo( m_console ); 90 saveCon->addTo( m_console );
90 connect( saveCon, SIGNAL(activated() ), 91 connect( saveCon, SIGNAL(activated() ),
91 this, SLOT(slotSaveSession() ) ); 92 this, SLOT(slotSaveSession() ) );
92 m_console->insertSeparator(); 93 m_console->insertSeparator();
93 94
94 /* 95 /*
95 * connect action 96 * connect action
96 */ 97 */
97 m_connect = new QAction( tr("Connect"), Resource::loadPixmap("console/connected"), 98 m_connect = new QAction( tr("Connect"), Resource::loadPixmap("console/connected"),
98 QString::null, 0, this, 0 ); 99 QString::null, 0, this, 0 );
99 m_connect->addTo( m_console ); 100 m_connect->addTo( m_console );
100 connect(m_connect, SIGNAL(activated() ), 101 connect(m_connect, SIGNAL(activated() ),
101 this, SLOT(slotConnect() ) ); 102 this, SLOT(slotConnect() ) );
102 103
103 /* 104 /*
104 * disconnect action 105 * disconnect action
105 */ 106 */
106 m_disconnect = new QAction( tr("Disconnect"), Resource::loadPixmap("console/notconnected"), 107 m_disconnect = new QAction( tr("Disconnect"), Resource::loadPixmap("console/notconnected"),
107 QString::null, 0, this, 0 ); 108 QString::null, 0, this, 0 );
108 m_disconnect->addTo( m_console ); 109 m_disconnect->addTo( m_console );
109 connect(m_disconnect, SIGNAL(activated() ), 110 connect(m_disconnect, SIGNAL(activated() ),
110 this, SLOT(slotDisconnect() ) ); 111 this, SLOT(slotDisconnect() ) );
111 112
112 m_console->insertSeparator(); 113 m_console->insertSeparator();
113 114
114 115
115 m_quickLaunch = new QAction( tr("QuickLaunch"), Resource::loadPixmap("console/konsole_mini"), QString::null, 0, this, 0 ); 116 m_quickLaunch = new QAction( tr("QuickLaunch"), Resource::loadPixmap("console/konsole_mini"), QString::null, 0, this, 0 );
116 m_quickLaunch->addTo( m_icons ); 117 m_quickLaunch->addTo( m_icons );
117 connect( m_quickLaunch, SIGNAL( activated() ), 118 connect( m_quickLaunch, SIGNAL( activated() ),
118 this, SLOT( slotQuickLaunch() ) ); 119 this, SLOT( slotQuickLaunch() ) );
119 120
120 QWhatsThis::add( m_icons, tr( "The shell button launches the \"default\" profile. If there is none default values are taken" ) ); 121 QWhatsThis::add( m_icons, tr( "The shell button launches the \"default\" profile. If there is none default values are taken" ) );
121 122
122 m_transfer = new QAction( tr("Transfer file..."), Resource::loadPixmap("pass") , QString::null, 123 m_transfer = new QAction( tr("Transfer file..."), Resource::loadPixmap("pass") , QString::null,
123 0, this, 0 ); 124 0, this, 0 );
124 m_transfer->addTo( m_console ); 125 m_transfer->addTo( m_console );
125 connect(m_transfer, SIGNAL(activated() ), 126 connect(m_transfer, SIGNAL(activated() ),
126 this, SLOT(slotTransfer() ) ); 127 this, SLOT(slotTransfer() ) );
127 128
128 129
129 130
130 /* 131 /*
131 * immediate change of line wrap policy 132 * immediate change of line wrap policy
132 */ 133 */
133 m_isWrapped = false; 134 m_isWrapped = false;
134 m_wrap = new QAction( tr("Line wrap"), Resource::loadPixmap( "linewrap" ), QString::null, 0, this, 0 ); 135 m_wrap = new QAction( tr("Line wrap"), Resource::loadPixmap( "linewrap" ), QString::null, 0, this, 0 );
135 m_wrap->addTo( m_console ); 136 m_wrap->addTo( m_console );
136 connect( m_wrap, SIGNAL( activated() ), SLOT( slotWrap() ) ); 137 connect( m_wrap, SIGNAL( activated() ), SLOT( slotWrap() ) );
137 138
138 /* 139 /*
139 * fullscreen 140 * fullscreen
140 */ 141 */
141 m_isFullscreen = false; 142 m_isFullscreen = false;
142 143
143 m_fullscreen = new QAction( tr("Full screen"), Resource::loadPixmap( "fullscreen" ) 144 m_fullscreen = new QAction( tr("Full screen"), Resource::loadPixmap( "fullscreen" )
144 , QString::null, 0, this, 0); 145 , QString::null, 0, this, 0);
145 m_fullscreen->addTo( m_console ); 146 m_fullscreen->addTo( m_console );
146 connect( m_fullscreen, SIGNAL( activated() ), 147 connect( m_fullscreen, SIGNAL( activated() ),
147 this, SLOT( slotFullscreen() ) ); 148 this, SLOT( slotFullscreen() ) );
148 149
149 m_console->insertSeparator(); 150 m_console->insertSeparator();
150 151
151 QAction *a = new QAction(); 152 QAction *a = new QAction();
152 a->setText( tr("Save history") ); 153 a->setText( tr("Save history") );
153 a->addTo( m_console ); 154 a->addTo( m_console );
154 connect(a, SIGNAL(activated() ), 155 connect(a, SIGNAL(activated() ),
155 this, SLOT(slotSaveHistory() ) ); 156 this, SLOT(slotSaveHistory() ) );
156 /* 157 /*
157 * terminate action 158 * terminate action
158 */ 159 */
159 m_terminate = new QAction(); 160 m_terminate = new QAction();
160 m_terminate->setText( tr("Terminate") ); 161 m_terminate->setText( tr("Terminate") );
161 m_terminate->addTo( m_console ); 162 m_terminate->addTo( m_console );
162 connect(m_terminate, SIGNAL(activated() ), 163 connect(m_terminate, SIGNAL(activated() ),
163 this, SLOT(slotTerminate() ) ); 164 this, SLOT(slotTerminate() ) );
164 165
165 m_closewindow = new QAction(); 166 m_closewindow = new QAction();
166 m_closewindow->setText( tr("Close Window") ); 167 m_closewindow->setText( tr("Close Window") );
167 m_closewindow->addTo( m_console ); 168 m_closewindow->addTo( m_console );
168 connect( m_closewindow, SIGNAL(activated() ), 169 connect( m_closewindow, SIGNAL(activated() ),
169 this, SLOT(slotClose() ) ); 170 this, SLOT(slotClose() ) );
170 171
171 172
172 /* 173 /*
173 * script actions 174 * script actions
174 */ 175 */
175 m_runScript_id = m_scripts->insertItem(tr("Run Script"), m_scriptsPop, -1, 0); 176 m_runScript_id = m_scripts->insertItem(tr("Run Script"), m_scriptsPop, -1, 0);
176 connect(m_scriptsPop, SIGNAL(activated(int)), this, SLOT(slotRunScript(int))); 177 connect(m_scriptsPop, SIGNAL(activated(int)), this, SLOT(slotRunScript(int)));
177 178
178 m_recordScript = new QAction(tr("Record Script"), QString::null, 0, this, 0); 179 m_recordScript = new QAction(tr("Record Script"), QString::null, 0, this, 0);
179 m_recordScript->addTo(m_scripts); 180 m_recordScript->addTo(m_scripts);
180 connect(m_recordScript, SIGNAL(activated()), this, SLOT(slotRecordScript())); 181 connect(m_recordScript, SIGNAL(activated()), this, SLOT(slotRecordScript()));
181 182
182 m_saveScript = new QAction(tr("Save Script"), QString::null, 0, this, 0); 183 m_saveScript = new QAction(tr("Save Script"), QString::null, 0, this, 0);
183 m_saveScript->addTo(m_scripts); 184 m_saveScript->addTo(m_scripts);
184 connect(m_saveScript, SIGNAL(activated()), this, SLOT(slotSaveScript())); 185 connect(m_saveScript, SIGNAL(activated()), this, SLOT(slotSaveScript()));
185 186
186 187
187 /* 188 /*
188 * action that open/closes the keyboard 189 * action that open/closes the keyboard
189 */ 190 */
190 m_openKeys = new QAction (tr("Open Keyboard..."), 191 m_openKeys = new QAction (tr("Open Keyboard..."),
191 Resource::loadPixmap( "console/keys/keyboard_icon" ), 192 Resource::loadPixmap( "console/keys/keyboard_icon" ),
192 QString::null, 0, this, 0); 193 QString::null, 0, this, 0);
193 m_openKeys->setToggleAction(true); 194 m_openKeys->setToggleAction(true);
194 connect (m_openKeys, SIGNAL(toggled(bool)), this, SLOT(slotOpenKeb(bool))); 195 connect (m_openKeys, SIGNAL(toggled(bool)), this, SLOT(slotOpenKeb(bool)));
195 196
196 /* insert the submenu */ 197 /* insert the submenu */
197 m_console->insertItem(tr("New from Profile"), m_sessionsPop, 198 m_console->insertItem(tr("New from Profile"), m_sessionsPop,
198 -1, 0); 199 -1, 0);
199 200
200 /* insert the connection menu */ 201 /* insert the connection menu */
201 m_bar->insertItem( tr("Connection"), m_console ); 202 m_bar->insertItem( tr("Connection"), m_console );
202 203
203 /* the scripts menu */ 204 /* the scripts menu */
204 m_bar->insertItem( tr("Scripts"), m_scripts ); 205 m_bar->insertItem( tr("Scripts"), m_scripts );
205 206
206 /* and the keyboard */ 207 /* and the keyboard */
207 m_keyBar = new QToolBar(this); 208 m_keyBar = new QToolBar(this);
208 addToolBar( m_keyBar, "Keyboard", QMainWindow::Top, TRUE ); 209 addToolBar( m_keyBar, "Keyboard", QMainWindow::Top, TRUE );
209 m_keyBar->setHorizontalStretchable( TRUE ); 210 m_keyBar->setHorizontalStretchable( TRUE );
210 m_keyBar->hide(); 211 m_keyBar->hide();
211 212
212 m_kb = new FunctionKeyboard(m_keyBar); 213 m_kb = new FunctionKeyboard(m_keyBar);
213 connect(m_kb, SIGNAL(keyPressed(FKey, ushort, ushort, bool)), 214 connect(m_kb, SIGNAL(keyPressed(FKey, ushort, ushort, bool)),
214 this, SLOT(slotKeyReceived(FKey, ushort, ushort, bool))); 215 this, SLOT(slotKeyReceived(FKey, ushort, ushort, bool)));
215 216
216 217
217 a = new QAction(tr("Copy"), 218 a = new QAction(tr("Copy"),
218 Resource::loadPixmap("copy"), QString::null, 219 Resource::loadPixmap("copy"), QString::null,
219 0, this, 0 ); 220 0, this, 0 );
220 //a->addTo( m_icons ); 221 //a->addTo( m_icons );
221 connect( a, SIGNAL(activated() ), 222 connect( a, SIGNAL(activated() ),
222 this, SLOT(slotCopy() ) ); 223 this, SLOT(slotCopy() ) );
223 224
224 QAction *paste = new QAction(tr("Paste"), 225 QAction *paste = new QAction(tr("Paste"),
225 Resource::loadPixmap("paste"), QString::null, 226 Resource::loadPixmap("paste"), QString::null,
226 0, this, 0 ); 227 0, this, 0 );
227 connect( paste, SIGNAL(activated() ), 228 connect( paste, SIGNAL(activated() ),
228 this, SLOT(slotPaste() ) ); 229 this, SLOT(slotPaste() ) );
229 230
230 231
231 newCon->addTo( m_icons ); 232 newCon->addTo( m_icons );
232 //m_setProfiles->addTo( m_icons ); 233 //m_setProfiles->addTo( m_icons );
233 paste->addTo( m_icons ); 234 paste->addTo( m_icons );
234 m_openKeys->addTo(m_icons); 235 m_openKeys->addTo(m_icons);
235 m_fullscreen->addTo( m_icons ); 236 m_fullscreen->addTo( m_icons );
236 237
237 m_connect->setEnabled( false ); 238 m_connect->setEnabled( false );
238 m_disconnect->setEnabled( false ); 239 m_disconnect->setEnabled( false );
239 m_terminate->setEnabled( false ); 240 m_terminate->setEnabled( false );
240 m_transfer->setEnabled( false ); 241 m_transfer->setEnabled( false );
241 m_scripts->setItemEnabled(m_runScript_id, false); 242 m_scripts->setItemEnabled(m_runScript_id, false);
242 m_recordScript->setEnabled( false ); 243 m_recordScript->setEnabled( false );
243 m_saveScript->setEnabled( false ); 244 m_saveScript->setEnabled( false );
244 m_fullscreen->setEnabled( false ); 245 m_fullscreen->setEnabled( false );
245 m_closewindow->setEnabled( false ); 246 m_closewindow->setEnabled( false );
246 m_wrap->setEnabled( false ); 247 m_wrap->setEnabled( false );
247 248
248 /* 249 /*
249 * connect to the menu activation 250 * connect to the menu activation
250 */ 251 */
251 connect( m_sessionsPop, SIGNAL(activated( int ) ), 252 connect( m_sessionsPop, SIGNAL(activated( int ) ),
252 this, SLOT(slotProfile( int ) ) ); 253 this, SLOT(slotProfile( int ) ) );
253 254
254 m_consoleWindow = new TabWidget( this, "blah"); 255 m_consoleWindow = new TabWidget( this, "blah");
255 connect(m_consoleWindow, SIGNAL(activated(Session*) ), 256 connect(m_consoleWindow, SIGNAL(activated(Session*) ),
256 this, SLOT(slotSessionChanged(Session*) ) ); 257 this, SLOT(slotSessionChanged(Session*) ) );
257 setCentralWidget( m_consoleWindow ); 258 setCentralWidget( m_consoleWindow );
258 259
259 slotQuickLaunch(); 260 slotQuickLaunch();
260} 261}
261 262
262ProfileManager* MainWindow::manager() { 263ProfileManager* MainWindow::manager() {
263 return m_manager; 264 return m_manager;
264} 265}
265TabWidget* MainWindow::tabWidget() { 266TabWidget* MainWindow::tabWidget() {
266 return m_consoleWindow; 267 return m_consoleWindow;
267} 268}
268void MainWindow::populateProfiles() { 269void MainWindow::populateProfiles() {
269 m_sessionsPop->clear(); 270 m_sessionsPop->clear();
270 Profile::ValueList list = manager()->all(); 271 Profile::ValueList list = manager()->all();
271 for (Profile::ValueList::Iterator it = list.begin(); it != list.end(); ++it ) { 272 for (Profile::ValueList::Iterator it = list.begin(); it != list.end(); ++it ) {
272 m_sessionsPop->insertItem( (*it).name() ); 273 m_sessionsPop->insertItem( (*it).name() );
273 } 274 }
274 275
275} 276}
276 277
277void MainWindow::populateScripts() { 278void MainWindow::populateScripts() {
278 m_scriptsPop->clear(); 279 m_scriptsPop->clear();
279 m_scriptsData.clear(); 280 m_scriptsData.clear();
280 DocLnkSet files(QPEApplication::documentDir(), "text/plain"); 281 DocLnkSet files(QPEApplication::documentDir(), "text/plain");
281 QListIterator<DocLnk> dit(files.children()); 282 QListIterator<DocLnk> dit(files.children());
282 for (; dit.current(); ++dit) { 283 for (; dit.current(); ++dit) {
283 if (*dit && (*dit)->name().length()>0) { 284 if (*dit && (*dit)->name().length()>0) {
284 QFileInfo info((*dit)->file()); 285 QFileInfo info((*dit)->file());
285 if (info.extension(false) == "script") { 286 if (info.extension(false) == "script") {
286 m_scriptsData.append(new DocLnk(**dit)); 287 m_scriptsData.append(new DocLnk(**dit));
287 m_scriptsPop->insertItem((*dit)->name()); 288 m_scriptsPop->insertItem((*dit)->name());
288 } 289 }
289 } 290 }
290 } 291 }
291 292
292} 293}
293 294
294MainWindow::~MainWindow() { 295MainWindow::~MainWindow() {
295 delete m_factory; 296 delete m_factory;
296 manager()->save(); 297 manager()->save();
297} 298}
298 299
299MetaFactory* MainWindow::factory() { 300MetaFactory* MainWindow::factory() {
300 return m_factory; 301 return m_factory;
301} 302}
302 303
303Session* MainWindow::currentSession() { 304Session* MainWindow::currentSession() {
304 return m_curSession; 305 return m_curSession;
305} 306}
306 307
307QList<Session> MainWindow::sessions() { 308QList<Session> MainWindow::sessions() {
308 return m_sessions; 309 return m_sessions;
309} 310}
310 311
311void MainWindow::slotNew() { 312void MainWindow::slotNew() {
312 ProfileEditorDialog dlg(factory() ); 313 ProfileEditorDialog dlg(factory() );
313 dlg.showMaximized();
314 dlg.setCaption( tr("New Connection") ); 314 dlg.setCaption( tr("New Connection") );
315 int ret = dlg.exec(); 315 int ret = QPEApplication::execDialog( &dlg );
316 316
317 if ( ret == QDialog::Accepted ) { 317 if ( ret == QDialog::Accepted ) {
318 create( dlg.profile() ); 318 create( dlg.profile() );
319 } 319 }
320} 320}
321 321
322void MainWindow::slotRecordScript() { 322void MainWindow::slotRecordScript() {
323 if (currentSession()) { 323 if (currentSession()) {
324 currentSession()->emulationHandler()->startRecording(); 324 currentSession()->emulationHandler()->startRecording();
325 m_saveScript->setEnabled(true); 325 m_saveScript->setEnabled(true);
326 m_recordScript->setEnabled(false); 326 m_recordScript->setEnabled(false);
327 } 327 }
328} 328}
329 329
330void MainWindow::slotSaveScript() { 330void MainWindow::slotSaveScript() {
331 if (currentSession() && currentSession()->emulationHandler()->isRecording()) { 331 if (currentSession() && currentSession()->emulationHandler()->isRecording()) {
332 QMap<QString, QStringList> map; 332 QMap<QString, QStringList> map;
333 QStringList text; 333 QStringList text;
334 text << "text/plain"; 334 text << "text/plain";
335 map.insert(tr("Script"), text ); 335 map.insert(tr("Script"), text );
336 QString filename = OFileDialog::getSaveFileName(2, QPEApplication::documentDir(), QString::null, map); 336 QString filename = OFileDialog::getSaveFileName(2, QPEApplication::documentDir(), QString::null, map);
337 if (!filename.isEmpty()) { 337 if (!filename.isEmpty()) {
338 QFileInfo info(filename); 338 QFileInfo info(filename);
339 if (info.extension(FALSE) != "script") 339 if (info.extension(FALSE) != "script")
340 filename += ".script"; 340 filename += ".script";
341 DocLnk nf; 341 DocLnk nf;
342 nf.setType("text/plain"); 342 nf.setType("text/plain");
343 nf.setFile(filename); 343 nf.setFile(filename);
344 nf.setName(info.fileName()); 344 nf.setName(info.fileName());
345 FileManager fm; 345 FileManager fm;
346 fm.saveFile(nf, currentSession()->emulationHandler()->script()->script()); 346 fm.saveFile(nf, currentSession()->emulationHandler()->script()->script());
347 currentSession()->emulationHandler()->clearScript(); 347 currentSession()->emulationHandler()->clearScript();
348 m_saveScript->setEnabled(false); 348 m_saveScript->setEnabled(false);
349 m_recordScript->setEnabled(true); 349 m_recordScript->setEnabled(true);
350 populateScripts(); 350 populateScripts();
351 } 351 }
352 } 352 }
353} 353}
354 354
355void MainWindow::slotRunScript(int id) { 355void MainWindow::slotRunScript(int id) {
356 if (currentSession()) { 356 if (currentSession()) {
357 int index = m_scriptsPop->indexOf(id); 357 int index = m_scriptsPop->indexOf(id);
358 DocLnk *lnk = m_scriptsData.at(index); 358 DocLnk *lnk = m_scriptsData.at(index);
359 QString filePath = lnk->file(); 359 QString filePath = lnk->file();
360 Script script(filePath); 360 Script script(filePath);
361 currentSession()->emulationHandler()->runScript(&script); 361 currentSession()->emulationHandler()->runScript(&script);
362 } 362 }
363} 363}
364 364
365void MainWindow::slotConnect() { 365void MainWindow::slotConnect() {
366 if ( currentSession() ) { 366 if ( currentSession() ) {
367 bool ret = currentSession()->layer()->open(); 367 bool ret = currentSession()->layer()->open();
368 if(!ret) QMessageBox::warning(currentSession()->widgetStack(), 368 if(!ret) QMessageBox::warning(currentSession()->widgetStack(),
369 QObject::tr("Failed"), 369 QObject::tr("Failed"),
370 QObject::tr("Connecting failed for this session.")); 370 QObject::tr("Connecting failed for this session."));
371 else { 371 else {
372 m_connect->setEnabled( false ); 372 m_connect->setEnabled( false );
373 m_disconnect->setEnabled( true ); 373 m_disconnect->setEnabled( true );
374 374
375 // if it does not support file transfer, disable the menu entry 375 // if it does not support file transfer, disable the menu entry
376 if ( ( m_curSession->layer() )->supports()[1] == 0 ) { 376 if ( ( m_curSession->layer() )->supports()[1] == 0 ) {
377 m_transfer->setEnabled( false ); 377 m_transfer->setEnabled( false );
378 } else { 378 } else {
379 m_transfer->setEnabled( true ); 379 m_transfer->setEnabled( true );
380 } 380 }
381 381
382 m_recordScript->setEnabled( true ); 382 m_recordScript->setEnabled( true );
383 m_scripts->setItemEnabled(m_runScript_id, true); 383 m_scripts->setItemEnabled(m_runScript_id, true);
384 } 384 }
385 } 385 }
386} 386}
387 387
388void MainWindow::slotDisconnect() { 388void MainWindow::slotDisconnect() {
389 if ( currentSession() ) { 389 if ( currentSession() ) {
390 currentSession()->layer()->close(); 390 currentSession()->layer()->close();
391 m_connect->setEnabled( true ); 391 m_connect->setEnabled( true );
392 m_disconnect->setEnabled( false ); 392 m_disconnect->setEnabled( false );
393 m_transfer->setEnabled( false ); 393 m_transfer->setEnabled( false );
394 m_recordScript->setEnabled( false); 394 m_recordScript->setEnabled( false);
395 m_saveScript->setEnabled( false ); 395 m_saveScript->setEnabled( false );
396 m_scripts->setItemEnabled(m_runScript_id, false); 396 m_scripts->setItemEnabled(m_runScript_id, false);
397 } 397 }
398} 398}
399 399
400void MainWindow::slotTerminate() { 400void MainWindow::slotTerminate() {
401 if ( currentSession() ) 401 if ( currentSession() )
402 currentSession()->layer()->close(); 402 currentSession()->layer()->close();
403 403
404 slotClose(); 404 slotClose();
405 /* FIXME move to the next session */ 405 /* FIXME move to the next session */
406} 406}
407 407
408 408
409 409
410 410
411 411
412 412
413void MainWindow::slotQuickLaunch() { 413void MainWindow::slotQuickLaunch() {
414 Profile prof = manager()->profile( "default" ); 414 Profile prof = manager()->profile( "default" );
415 if ( prof.name() == "default" ) { 415 if ( prof.name() == "default" ) {
416 create( prof ); 416 create( prof );
417 } else { 417 } else {
418 Profile newProf = Profile( "default", "console", "default" , 0, 3, 0 ); 418 Profile newProf = Profile( "default", "console", "default" , 0, 3, 0 );
419 newProf.setAutoConnect( true ); 419 newProf.setAutoConnect( true );
420 create( newProf ); 420 create( newProf );
421 slotSaveSession(); 421 slotSaveSession();
422 } 422 }
423 423
424} 424}
425 425
426void MainWindow::slotConfigure() { 426void MainWindow::slotConfigure() {
427 ConfigDialog conf( manager()->all(), factory() ); 427 ConfigDialog conf( manager()->all(), factory() );
428 conf.showMaximized();
429 428
430 int ret = conf.exec(); 429 int ret = QPEApplication::execDialog( &conf );
431 430
432 if ( QDialog::Accepted == ret ) { 431 if ( QDialog::Accepted == ret ) {
433 manager()->setProfiles( conf.list() ); 432 manager()->setProfiles( conf.list() );
434 manager()->save(); 433 manager()->save();
435 populateProfiles(); 434 populateProfiles();
436 } 435 }
437} 436}
438/* 437/*
439 * we will remove 438 * we will remove
440 * this window from the tabwidget 439 * this window from the tabwidget
441 * remove it from the list 440 * remove it from the list
442 * delete it 441 * delete it
443 * and set the currentSession() 442 * and set the currentSession()
444 */ 443 */
445void MainWindow::slotClose() { 444void MainWindow::slotClose() {
446 if (!currentSession() ) 445 if (!currentSession() )
447 return; 446 return;
448 447
449 Session* ses = currentSession(); 448 Session* ses = currentSession();
450 qWarning("removing! currentSession %s", currentSession()->name().latin1() ); 449 qWarning("removing! currentSession %s", currentSession()->name().latin1() );
451 /* set to NULL to be safe, if its needed slotSessionChanged resets it automatically */ 450 /* set to NULL to be safe, if its needed slotSessionChanged resets it automatically */
452 m_curSession = NULL; 451 m_curSession = NULL;
453 tabWidget()->remove( /*currentSession()*/ses ); 452 tabWidget()->remove( /*currentSession()*/ses );
454 /*it's autodelete */ 453 /*it's autodelete */
455 m_sessions.remove( ses ); 454 m_sessions.remove( ses );
456 qWarning("after remove!!"); 455 qWarning("after remove!!");
457 456
458 if (!currentSession() ) { 457 if (!currentSession() ) {
459 m_connect->setEnabled( false ); 458 m_connect->setEnabled( false );
460 m_disconnect->setEnabled( false ); 459 m_disconnect->setEnabled( false );
461 m_terminate->setEnabled( false ); 460 m_terminate->setEnabled( false );
462 m_transfer->setEnabled( false ); 461 m_transfer->setEnabled( false );
463 m_recordScript->setEnabled( false ); 462 m_recordScript->setEnabled( false );
464 m_saveScript->setEnabled( false ); 463 m_saveScript->setEnabled( false );
465 m_scripts->setItemEnabled(m_runScript_id, false); 464 m_scripts->setItemEnabled(m_runScript_id, false);
466 m_fullscreen->setEnabled( false ); 465 m_fullscreen->setEnabled( false );
467 m_wrap->setEnabled( false ); 466 m_wrap->setEnabled( false );
468 m_closewindow->setEnabled( false ); 467 m_closewindow->setEnabled( false );
469 } 468 }
470 469
471 m_kb->loadDefaults(); 470 m_kb->loadDefaults();
472} 471}
473 472
474/* 473/*
475 * We will get the name 474 * We will get the name
476 * Then the profile 475 * Then the profile
477 * and then we will make a profile 476 * and then we will make a profile
478 */ 477 */
479void MainWindow::slotProfile( int id) { 478void MainWindow::slotProfile( int id) {
480 Profile prof = manager()->profile( m_sessionsPop->text( id) ); 479 Profile prof = manager()->profile( m_sessionsPop->text( id) );
481 create( prof ); 480 create( prof );
482} 481}
483 482
484 483
485 484
486void MainWindow::create( const Profile& prof ) { 485void MainWindow::create( const Profile& prof ) {
487 if(m_curSession) 486 if(m_curSession)
488 if(m_curSession->transferDialog()) m_curSession->transferDialog()->hide(); 487 if(m_curSession->transferDialog()) m_curSession->transferDialog()->hide();
489 488
490 Session *ses = manager()->fromProfile( prof, tabWidget() ); 489 Session *ses = manager()->fromProfile( prof, tabWidget() );
491 490
492 if((!ses) || (!ses->layer()) || (!ses->widgetStack())) 491 if((!ses) || (!ses->layer()) || (!ses->widgetStack()))
493 { 492 {
494 QMessageBox::warning(this, 493 QMessageBox::warning(this,
495 QObject::tr("Session failed"), 494 QObject::tr("Session failed"),
496 QObject::tr("<qt>Cannot open session: Not all components were found.</qt>")); 495 QObject::tr("<qt>Cannot open session: Not all components were found.</qt>"));
497 //if(ses) delete ses; 496 //if(ses) delete ses;
498 return; 497 return;
499 } 498 }
500 499
501 m_sessions.append( ses ); 500 m_sessions.append( ses );
502 tabWidget()->add( ses ); 501 tabWidget()->add( ses );
503 tabWidget()->repaint(); 502 tabWidget()->repaint();
504 m_curSession = ses; 503 m_curSession = ses;
505 504
506 // dicide if its a local term ( then no connction and no tranfer), maybe make a wrapper method out of it 505 // dicide if its a local term ( then no connction and no tranfer), maybe make a wrapper method out of it
507 m_connect->setEnabled( true ); 506 m_connect->setEnabled( true );
508 m_disconnect->setEnabled( false ); 507 m_disconnect->setEnabled( false );
509 m_terminate->setEnabled( true ); 508 m_terminate->setEnabled( true );
510 m_fullscreen->setEnabled( true ); 509 m_fullscreen->setEnabled( true );
511 m_wrap->setEnabled( true ); 510 m_wrap->setEnabled( true );
512 m_closewindow->setEnabled( true ); 511 m_closewindow->setEnabled( true );
513 m_transfer->setEnabled( false ); 512 m_transfer->setEnabled( false );
514 m_recordScript->setEnabled( false ); 513 m_recordScript->setEnabled( false );
515 m_saveScript->setEnabled( false ); 514 m_saveScript->setEnabled( false );
516 m_scripts->setItemEnabled(m_runScript_id, false); 515 m_scripts->setItemEnabled(m_runScript_id, false);
517 516
518 // is io_layer wants direct connection, then autoconnect 517 // is io_layer wants direct connection, then autoconnect
519 //if ( ( m_curSession->layer() )->supports()[0] == 1 ) { 518 //if ( ( m_curSession->layer() )->supports()[0] == 1 ) {
520 if (prof.autoConnect()) { 519 if (prof.autoConnect()) {
521 slotConnect(); 520 slotConnect();
522 } 521 }
523 522
524 523
525 QWidget *w = currentSession()->widget(); 524 QWidget *w = currentSession()->widget();
526 if(w) w->setFocus(); 525 if(w) w->setFocus();
527 526
528 if(currentSession()->profile().readNumEntry("Wrap", 80)){ 527 if(currentSession()->profile().readNumEntry("Wrap", 80)){
529 m_isWrapped = true; 528 m_isWrapped = true;
530 } else { 529 } else {
531 m_isWrapped = false; 530 m_isWrapped = false;
532 } 531 }
533 532
534 m_kb->load(currentSession()->profile()); 533 m_kb->load(currentSession()->profile());
535} 534}
536 535
537void MainWindow::slotTransfer() 536void MainWindow::slotTransfer()
538{ 537{
539 if ( currentSession() ) { 538 if ( currentSession() ) {
540 Session *mysession = currentSession(); 539 Session *mysession = currentSession();
541 TransferDialog dlg(/*mysession->widgetStack()*/this, this); 540 TransferDialog dlg(/*mysession->widgetStack()*/this, this);
542 mysession->setTransferDialog(&dlg); 541 mysession->setTransferDialog(&dlg);
543 //dlg.reparent(mysession->widgetStack(), QPoint(0, 0)); 542 //dlg.reparent(mysession->widgetStack(), QPoint(0, 0));
544 //dlg.showMaximized(); 543 //dlg.showMaximized();
545 currentSession()->widgetStack()->addWidget(&dlg, -1); 544 currentSession()->widgetStack()->addWidget(&dlg, -1);
546 dlg.show(); 545 dlg.show();
547 //dlg.exec(); 546 //dlg.exec();
548 while(dlg.isRunning()) qApp->processEvents(); 547 while(dlg.isRunning()) qApp->processEvents();
549 mysession->setTransferDialog(0l); 548 mysession->setTransferDialog(0l);
550 } 549 }
551} 550}
552 551
553 552
554void MainWindow::slotOpenKeb(bool state) { 553void MainWindow::slotOpenKeb(bool state) {
555 554
556 if (state) m_keyBar->show(); 555 if (state) m_keyBar->show();
557 else m_keyBar->hide(); 556 else m_keyBar->hide();
558 557
559} 558}
560 559
561 560
562void MainWindow::slotOpenButtons( bool state ) { 561void MainWindow::slotOpenButtons( bool state ) {
563 562
564 if ( state ) { 563 if ( state ) {
565 m_buttonBar->show(); 564 m_buttonBar->show();
566 } else { 565 } else {
567 m_buttonBar->hide(); 566 m_buttonBar->hide();
568 } 567 }
569} 568}
570 569
571 570
572 571
573void MainWindow::slotSessionChanged( Session* ses ) { 572void MainWindow::slotSessionChanged( Session* ses ) {
574 qWarning("changed!"); 573 qWarning("changed!");
575 574
576 if(m_curSession) 575 if(m_curSession)
577 if(m_curSession->transferDialog()) m_curSession->transferDialog()->hide(); 576 if(m_curSession->transferDialog()) m_curSession->transferDialog()->hide();
578 if(ses) 577 if(ses)
579 if(ses->transferDialog()) ses->transferDialog()->show(); 578 if(ses->transferDialog()) ses->transferDialog()->show();
580 579
581 if ( ses ) { 580 if ( ses ) {
582 m_curSession = ses; 581 m_curSession = ses;
583 qDebug(QString("is connected : %1").arg( m_curSession->layer()->isConnected() ) ); 582 qDebug(QString("is connected : %1").arg( m_curSession->layer()->isConnected() ) );
584 if ( m_curSession->layer()->isConnected() ) { 583 if ( m_curSession->layer()->isConnected() ) {
585 m_connect->setEnabled( false ); 584 m_connect->setEnabled( false );
586 m_disconnect->setEnabled( true ); 585 m_disconnect->setEnabled( true );
587 m_recordScript->setEnabled(!m_curSession->emulationHandler()->isRecording()); 586 m_recordScript->setEnabled(!m_curSession->emulationHandler()->isRecording());
588 m_saveScript->setEnabled(m_curSession->emulationHandler()->isRecording()); 587 m_saveScript->setEnabled(m_curSession->emulationHandler()->isRecording());
589 m_scripts->setItemEnabled(m_runScript_id, true); 588 m_scripts->setItemEnabled(m_runScript_id, true);
590 } else { 589 } else {
591 m_connect->setEnabled( true ); 590 m_connect->setEnabled( true );
592 m_disconnect->setEnabled( false ); 591 m_disconnect->setEnabled( false );
593 m_recordScript->setEnabled( false ); 592 m_recordScript->setEnabled( false );
594 m_saveScript->setEnabled( false ); 593 m_saveScript->setEnabled( false );
595 m_scripts->setItemEnabled(m_runScript_id, false); 594 m_scripts->setItemEnabled(m_runScript_id, false);
596 } 595 }
597 596
598 if ( ( m_curSession->layer() )->supports()[1] == 0 ) { 597 if ( ( m_curSession->layer() )->supports()[1] == 0 ) {
599 m_transfer->setEnabled( false ); 598 m_transfer->setEnabled( false );
600 } else { 599 } else {
601 m_transfer->setEnabled( true ); 600 m_transfer->setEnabled( true );
602 } 601 }
603 602
604 QWidget *w = m_curSession->widget(); 603 QWidget *w = m_curSession->widget();
605 if(w) w->setFocus(); 604 if(w) w->setFocus();
606 605
607 if(currentSession()->profile().readNumEntry("Wrap", 80)){ 606 if(currentSession()->profile().readNumEntry("Wrap", 80)){
608 m_isWrapped = true; 607 m_isWrapped = true;
609 } else { 608 } else {
610 m_isWrapped = false; 609 m_isWrapped = false;
611 } 610 }
612 611
613 m_kb->load(currentSession()->profile()); 612 m_kb->load(currentSession()->profile());
614 } 613 }
615} 614}
616 615
617void MainWindow::slotWrap() 616void MainWindow::slotWrap()
618{ 617{
619 if(m_curSession) 618 if(m_curSession)
620 { 619 {
621 EmulationHandler *e = m_curSession->emulationHandler(); 620 EmulationHandler *e = m_curSession->emulationHandler();
622 if(e) 621 if(e)
623 { 622 {
624 if(m_isWrapped) 623 if(m_isWrapped)
625 { 624 {
626 e->setWrap(80); 625 e->setWrap(80);
627 m_isWrapped = false; 626 m_isWrapped = false;
628 } 627 }
629 else 628 else
630 { 629 {
631 e->setWrap(0); 630 e->setWrap(0);
632 m_isWrapped = true; 631 m_isWrapped = true;
633 } 632 }
634 } 633 }
635 } 634 }
636} 635}
637 636
638void MainWindow::slotFullscreen() { 637void MainWindow::slotFullscreen() {
639 638
640 639
641 640
642 if ( m_isFullscreen ) { 641 if ( m_isFullscreen ) {
643 ( m_curSession->widgetStack() )->reparent( savedParentFullscreen, 0, QPoint(0,0), true ); 642 ( m_curSession->widgetStack() )->reparent( savedParentFullscreen, 0, QPoint(0,0), true );
644 ( m_curSession->widgetStack() )->resize( savedParentFullscreen->width(), savedParentFullscreen->height() ); 643 ( m_curSession->widgetStack() )->resize( savedParentFullscreen->width(), savedParentFullscreen->height() );
645 ( m_curSession->emulationHandler() )->cornerButton()->hide(); 644 ( m_curSession->emulationHandler() )->cornerButton()->hide();
646 disconnect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) ); 645 disconnect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) );
647 646
648 } else { 647 } else {
649 savedParentFullscreen = ( m_curSession->widgetStack() )->parentWidget(); 648 savedParentFullscreen = ( m_curSession->widgetStack() )->parentWidget();
650 ( m_curSession->widgetStack() )->setFrameStyle( QFrame::NoFrame ); 649 ( m_curSession->widgetStack() )->setFrameStyle( QFrame::NoFrame );
651 ( m_curSession->widgetStack() )->reparent( 0, WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop 650 ( m_curSession->widgetStack() )->reparent( 0, WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop
652 , QPoint(0,0), false ); 651 , QPoint(0,0), false );
653 ( m_curSession->widgetStack() )->resize( qApp->desktop()->width(), qApp->desktop()->height() ); 652 ( m_curSession->widgetStack() )->resize( qApp->desktop()->width(), qApp->desktop()->height() );
654 ( m_curSession->widgetStack() )->setFocus(); 653 ( m_curSession->widgetStack() )->setFocus();
655 ( m_curSession->widgetStack() )->show(); 654 ( m_curSession->widgetStack() )->show();
656 655
657 ( ( m_curSession->emulationHandler() )->cornerButton() )->show(); 656 ( ( m_curSession->emulationHandler() )->cornerButton() )->show();
658 657
659 connect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) ); 658 connect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) );
660 } 659 }
661 660
662 m_isFullscreen = !m_isFullscreen; 661 m_isFullscreen = !m_isFullscreen;
663} 662}
664 663
665 664
666void MainWindow::slotKeyReceived(FKey k, ushort, ushort, bool pressed) { 665void MainWindow::slotKeyReceived(FKey k, ushort, ushort, bool pressed) {
667 666
668 if ( m_curSession ) { 667 if ( m_curSession ) {
669 668
670 QEvent::Type state; 669 QEvent::Type state;
671 670
672 if (pressed) state = QEvent::KeyPress; 671 if (pressed) state = QEvent::KeyPress;
673 else state = QEvent::KeyRelease; 672 else state = QEvent::KeyRelease;
674 673
675 QKeyEvent ke(state, k.qcode, k.unicode, 0, QString(QChar(k.unicode))); 674 QKeyEvent ke(state, k.qcode, k.unicode, 0, QString(QChar(k.unicode)));
676 675
677 // is this the best way to do this? cant figure out any other way to work 676 // is this the best way to do this? cant figure out any other way to work
678 QApplication::sendEvent((QObject *)m_curSession->widget(), &ke); 677 QApplication::sendEvent((QObject *)m_curSession->widget(), &ke);
679 ke.ignore(); 678 ke.ignore();
680 } 679 }
681} 680}
682void MainWindow::slotCopy() { 681void MainWindow::slotCopy() {
683 if (!currentSession() ) return; 682 if (!currentSession() ) return;
684 currentSession()->emulationHandler()->copy(); 683 currentSession()->emulationHandler()->copy();
685} 684}
686void MainWindow::slotPaste() { 685void MainWindow::slotPaste() {
687 if (!currentSession() ) return; 686 if (!currentSession() ) return;
688 currentSession()->emulationHandler()->paste(); 687 currentSession()->emulationHandler()->paste();
689} 688}
690 689
691/* 690/*
692 * Save the session 691 * Save the session
693 */ 692 */
694 693
695void MainWindow::slotSaveSession() { 694void MainWindow::slotSaveSession() {
696 if (!currentSession() ) { 695 if (!currentSession() ) {
697 QMessageBox::information(this, tr("Save Connection"), 696 QMessageBox::information(this, tr("Save Connection"),
698 tr("<qt>There is no Connection.</qt>"), 1 ); 697 tr("<qt>There is no Connection.</qt>"), 1 );
699 return; 698 return;
700 } 699 }
701 manager()->add( currentSession()->profile() ); 700 manager()->add( currentSession()->profile() );
702 manager()->save(); 701 manager()->save();
703 populateProfiles(); 702 populateProfiles();
704} 703}
705void MainWindow::slotSaveHistory() { 704void MainWindow::slotSaveHistory() {
706 QMap<QString, QStringList> map; 705 QMap<QString, QStringList> map;
707 QStringList text; 706 QStringList text;
708 text << "text/plain"; 707 text << "text/plain";
709 map.insert(tr("History"), text ); 708 map.insert(tr("History"), text );
710 QString filename = OFileDialog::getSaveFileName(2, QPEApplication::documentDir(), QString::null, map); 709 QString filename = OFileDialog::getSaveFileName(2, QPEApplication::documentDir(), QString::null, map);
711 if (filename.isEmpty() ) return; 710 if (filename.isEmpty() ) return;
712 711
713 QFileInfo info(filename); 712 QFileInfo info(filename);
714 713
715 DocLnk nf; 714 DocLnk nf;
716 nf.setType("text/plain"); 715 nf.setType("text/plain");
717 nf.setFile(filename); 716 nf.setFile(filename);
718 nf.setName(info.fileName()); 717 nf.setName(info.fileName());
719 718
720 719
721 QFile file(filename); 720 QFile file(filename);
722 file.open(IO_WriteOnly ); 721 file.open(IO_WriteOnly );
723 QTextStream str(&file ); 722 QTextStream str(&file );
724 if ( currentSession() ) 723 if ( currentSession() )
725 currentSession()->emulationHandler()->emulation()->streamHistory(&str); 724 currentSession()->emulationHandler()->emulation()->streamHistory(&str);
726 725
727 file.close(); 726 file.close();
728 nf.writeLink(); 727 nf.writeLink();
729} 728}
diff --git a/noncore/apps/opie-console/modemconfigwidget.cpp b/noncore/apps/opie-console/modemconfigwidget.cpp
index e552990..3466e3a 100644
--- a/noncore/apps/opie-console/modemconfigwidget.cpp
+++ b/noncore/apps/opie-console/modemconfigwidget.cpp
@@ -1,255 +1,256 @@
1
2#include <qpe/qpeapplication.h>
3
1#include <qlabel.h> 4#include <qlabel.h>
2#include <qlayout.h> 5#include <qlayout.h>
3#include <qcombobox.h> 6#include <qcombobox.h>
4#include <qpushbutton.h> 7#include <qpushbutton.h>
5#include <qhbox.h> 8#include <qhbox.h>
6 9
7#include "modemconfigwidget.h" 10#include "modemconfigwidget.h"
8#include "dialdialog.h" 11#include "dialdialog.h"
9 12
10namespace { 13namespace {
11 void setCurrent( const QString& str, QComboBox* bo ) { 14 void setCurrent( const QString& str, QComboBox* bo ) {
12 uint b = bo->count(); 15 uint b = bo->count();
13 for (int i = 0; i < bo->count(); i++ ) { 16 for (int i = 0; i < bo->count(); i++ ) {
14 if ( bo->text(i) == str ) { 17 if ( bo->text(i) == str ) {
15 bo->setCurrentItem( i ); 18 bo->setCurrentItem( i );
16 return; 19 return;
17 } 20 }
18 } 21 }
19 bo->insertItem( str ); 22 bo->insertItem( str );
20 bo->setCurrentItem( b ); 23 bo->setCurrentItem( b );
21 } 24 }
22} 25}
23 26
24ModemConfigWidget::ModemConfigWidget( const QString& name, QWidget* parent, 27ModemConfigWidget::ModemConfigWidget( const QString& name, QWidget* parent,
25 const char* na ) 28 const char* na )
26 : ProfileDialogConnectionWidget( name, parent, na ) { 29 : ProfileDialogConnectionWidget( name, parent, na ) {
27 30
28 m_lay = new QVBoxLayout( this ); 31 m_lay = new QVBoxLayout( this );
29 m_device = new QLabel(tr( "Modem is attached to:" ), this ); 32 m_device = new QLabel(tr( "Modem is attached to:" ), this );
30 m_deviceCmb = new QComboBox(this ); 33 m_deviceCmb = new QComboBox(this );
31 m_deviceCmb->setEditable( TRUE ); 34 m_deviceCmb->setEditable( TRUE );
32 35
33 QLabel* telLabel = new QLabel( this ); 36 QLabel* telLabel = new QLabel( this );
34 telLabel->setText( tr( "Enter telefon number here:" ) ); 37 telLabel->setText( tr( "Enter telefon number here:" ) );
35 QHBox *buttonBox = new QHBox( this ); 38 QHBox *buttonBox = new QHBox( this );
36 m_telNumber = new QLineEdit( buttonBox ); 39 m_telNumber = new QLineEdit( buttonBox );
37 QPushButton *atButton = new QPushButton( buttonBox ); 40 QPushButton *atButton = new QPushButton( buttonBox );
38 atButton->setText( tr( "AT commands" ) ); 41 atButton->setText( tr( "AT commands" ) );
39 connect( atButton, SIGNAL( clicked() ), this, SLOT( slotAT() ) ); 42 connect( atButton, SIGNAL( clicked() ), this, SLOT( slotAT() ) );
40 43
41 QPushButton *dialButton = new QPushButton( buttonBox ); 44 QPushButton *dialButton = new QPushButton( buttonBox );
42 dialButton->setText( tr( "Enter number" ) ); 45 dialButton->setText( tr( "Enter number" ) );
43 connect( dialButton, SIGNAL( clicked() ), this, SLOT( slotDial() ) ); 46 connect( dialButton, SIGNAL( clicked() ), this, SLOT( slotDial() ) );
44 47
45 m_base = new IOLayerBase( this, "base" ); 48 m_base = new IOLayerBase( this, "base" );
46 49
47 m_lay->addWidget( m_device ); 50 m_lay->addWidget( m_device );
48 m_lay->addWidget( m_deviceCmb ); 51 m_lay->addWidget( m_deviceCmb );
49 m_lay->addWidget( telLabel ); 52 m_lay->addWidget( telLabel );
50 m_lay->addWidget( buttonBox ); 53 m_lay->addWidget( buttonBox );
51 m_lay->addWidget( m_base ); 54 m_lay->addWidget( m_base );
52 m_lay->addStretch( 0 ); 55 m_lay->addStretch( 0 );
53 56
54 m_deviceCmb->insertItem( "/dev/ttyS0" ); 57 m_deviceCmb->insertItem( "/dev/ttyS0" );
55 m_deviceCmb->insertItem( "/dev/ttyS1" ); 58 m_deviceCmb->insertItem( "/dev/ttyS1" );
56 m_deviceCmb->insertItem( "/dev/ttyS2" ); 59 m_deviceCmb->insertItem( "/dev/ttyS2" );
57 60
58 atConf = new ATConfigDialog( this, "ATConfig", true ); 61 atConf = new ATConfigDialog( this, "ATConfig", true );
59} 62}
60 63
61ModemConfigWidget::~ModemConfigWidget() { 64ModemConfigWidget::~ModemConfigWidget() {
62 65
63} 66}
64void ModemConfigWidget::load( const Profile& prof ) { 67void ModemConfigWidget::load( const Profile& prof ) {
65 68
66 int rad_flow = prof.readNumEntry( "Flow" ); 69 int rad_flow = prof.readNumEntry( "Flow" );
67 int rad_parity = prof.readNumEntry( "Parity" ); 70 int rad_parity = prof.readNumEntry( "Parity" );
68 int speed = prof.readNumEntry( "Speed" ); 71 int speed = prof.readNumEntry( "Speed" );
69 int dbits = prof.readNumEntry("DataBits"); 72 int dbits = prof.readNumEntry("DataBits");
70 int sbits = prof.readNumEntry("StopBits"); 73 int sbits = prof.readNumEntry("StopBits");
71 QString number = prof.readEntry( "Number" ); 74 QString number = prof.readEntry( "Number" );
72 75
73 if ( !number.isEmpty() ) { 76 if ( !number.isEmpty() ) {
74 m_telNumber->setText( number ); 77 m_telNumber->setText( number );
75 } 78 }
76 79
77 if ( rad_flow == 1 ) { 80 if ( rad_flow == 1 ) {
78 m_base->setFlow( IOLayerBase::Hardware ); 81 m_base->setFlow( IOLayerBase::Hardware );
79 } else if (rad_flow == 2) { 82 } else if (rad_flow == 2) {
80 m_base->setFlow( IOLayerBase::Software ); 83 m_base->setFlow( IOLayerBase::Software );
81 } else if (rad_flow == 0) { 84 } else if (rad_flow == 0) {
82 m_base->setFlow( IOLayerBase::None ); 85 m_base->setFlow( IOLayerBase::None );
83 } 86 }
84 87
85 88
86 if ( rad_parity == 1 ) { 89 if ( rad_parity == 1 ) {
87 m_base->setParity( IOLayerBase::Even ); 90 m_base->setParity( IOLayerBase::Even );
88 } else if ( rad_parity == 2 ){ 91 } else if ( rad_parity == 2 ){
89 m_base->setParity( IOLayerBase::Odd ); 92 m_base->setParity( IOLayerBase::Odd );
90 } else { 93 } else {
91 m_base->setParity( IOLayerBase::NonePar ); 94 m_base->setParity( IOLayerBase::NonePar );
92 } 95 }
93 96
94 switch( speed ) { 97 switch( speed ) {
95 case 115200: 98 case 115200:
96 m_base->setSpeed( IOLayerBase::Baud_115200 ); 99 m_base->setSpeed( IOLayerBase::Baud_115200 );
97 break; 100 break;
98 case 57600: 101 case 57600:
99 m_base->setSpeed( IOLayerBase::Baud_57600 ); 102 m_base->setSpeed( IOLayerBase::Baud_57600 );
100 break; 103 break;
101 case 38400: 104 case 38400:
102 m_base->setSpeed( IOLayerBase::Baud_38400 ); 105 m_base->setSpeed( IOLayerBase::Baud_38400 );
103 break; 106 break;
104 case 19200: 107 case 19200:
105 m_base->setSpeed( IOLayerBase::Baud_19200 ); 108 m_base->setSpeed( IOLayerBase::Baud_19200 );
106 break; 109 break;
107 case 9600: 110 case 9600:
108 default: 111 default:
109 m_base->setSpeed( IOLayerBase::Baud_9600 ); 112 m_base->setSpeed( IOLayerBase::Baud_9600 );
110 break; 113 break;
111 } 114 }
112 115
113 116
114 if ( dbits == 5) { 117 if ( dbits == 5) {
115 m_base->setData( IOLayerBase::Data_Five ); 118 m_base->setData( IOLayerBase::Data_Five );
116 } else if (rad_flow == 6) { 119 } else if (rad_flow == 6) {
117 m_base->setData( IOLayerBase::Data_Six ); 120 m_base->setData( IOLayerBase::Data_Six );
118 } else if (rad_flow == 7) { 121 } else if (rad_flow == 7) {
119 m_base->setData( IOLayerBase::Data_Seven ); 122 m_base->setData( IOLayerBase::Data_Seven );
120 } else { 123 } else {
121 m_base->setData( IOLayerBase::Data_Eight ); 124 m_base->setData( IOLayerBase::Data_Eight );
122 } 125 }
123 126
124 if ( sbits == 2) { 127 if ( sbits == 2) {
125 m_base->setStop( IOLayerBase::Stop_Two ); 128 m_base->setStop( IOLayerBase::Stop_Two );
126 } else if ( sbits == 15 ) { 129 } else if ( sbits == 15 ) {
127 m_base->setStop( IOLayerBase::Stop_OnePointFive ); 130 m_base->setStop( IOLayerBase::Stop_OnePointFive );
128 } else { 131 } else {
129 m_base->setStop( IOLayerBase::Stop_One ); 132 m_base->setStop( IOLayerBase::Stop_One );
130 } 133 }
131 134
132 135
133 atConf->readConfig( prof ); 136 atConf->readConfig( prof );
134 if ( prof.readEntry( "Device" ).isEmpty() ) { 137 if ( prof.readEntry( "Device" ).isEmpty() ) {
135 qWarning("device empty!"); 138 qWarning("device empty!");
136 return; 139 return;
137 } 140 }
138 setCurrent( prof.readEntry( "Device" ), m_deviceCmb ); 141 setCurrent( prof.readEntry( "Device" ), m_deviceCmb );
139 142
140 143
141} 144}
142 145
143/* 146/*
144 * save speed, 147 * save speed,
145 * flow, 148 * flow,
146 * parity 149 * parity
147 */ 150 */
148void ModemConfigWidget::save( Profile& prof ) { 151void ModemConfigWidget::save( Profile& prof ) {
149 int flow, parity, speed, data, stop; 152 int flow, parity, speed, data, stop;
150 flow = parity = speed = data = stop = 0; 153 flow = parity = speed = data = stop = 0;
151 prof.writeEntry( "Device", m_deviceCmb->currentText() ); 154 prof.writeEntry( "Device", m_deviceCmb->currentText() );
152 155
153 156
154 switch( m_base->flow() ) { 157 switch( m_base->flow() ) {
155 case IOLayerBase::None: 158 case IOLayerBase::None:
156 flow = 0; 159 flow = 0;
157 break; 160 break;
158 case IOLayerBase::Software: 161 case IOLayerBase::Software:
159 flow = 2; 162 flow = 2;
160 break; 163 break;
161 case IOLayerBase::Hardware: 164 case IOLayerBase::Hardware:
162 flow = 1; 165 flow = 1;
163 break; 166 break;
164 } 167 }
165 168
166 switch( m_base->parity() ) { 169 switch( m_base->parity() ) {
167 case IOLayerBase::Odd: 170 case IOLayerBase::Odd:
168 parity = 2; 171 parity = 2;
169 break; 172 break;
170 case IOLayerBase::Even: 173 case IOLayerBase::Even:
171 parity = 1; 174 parity = 1;
172 break; 175 break;
173 case IOLayerBase::NonePar: 176 case IOLayerBase::NonePar:
174 parity = 0; 177 parity = 0;
175 break; 178 break;
176 } 179 }
177 180
178 switch( m_base->speed() ) { 181 switch( m_base->speed() ) {
179 case IOLayerBase::Baud_115200: 182 case IOLayerBase::Baud_115200:
180 speed = 115200; 183 speed = 115200;
181 break; 184 break;
182 case IOLayerBase::Baud_57600: 185 case IOLayerBase::Baud_57600:
183 speed = 57600; 186 speed = 57600;
184 break; 187 break;
185 case IOLayerBase::Baud_38400: 188 case IOLayerBase::Baud_38400:
186 speed = 38400; 189 speed = 38400;
187 break; 190 break;
188 case IOLayerBase::Baud_19200: 191 case IOLayerBase::Baud_19200:
189 speed = 19200; 192 speed = 19200;
190 break; 193 break;
191 case IOLayerBase::Baud_9600: 194 case IOLayerBase::Baud_9600:
192 speed = 9600; 195 speed = 9600;
193 break; 196 break;
194 } 197 }
195 198
196 switch( m_base->data() ) { 199 switch( m_base->data() ) {
197 case IOLayerBase::Data_Five: 200 case IOLayerBase::Data_Five:
198 data = 5; 201 data = 5;
199 break; 202 break;
200 case IOLayerBase::Data_Six: 203 case IOLayerBase::Data_Six:
201 data = 6; 204 data = 6;
202 break; 205 break;
203 case IOLayerBase::Data_Seven: 206 case IOLayerBase::Data_Seven:
204 data = 7; 207 data = 7;
205 break; 208 break;
206 case IOLayerBase::Data_Eight: 209 case IOLayerBase::Data_Eight:
207 data = 8; 210 data = 8;
208 break; 211 break;
209 } 212 }
210 213
211 switch( m_base->stop() ) { 214 switch( m_base->stop() ) {
212 case IOLayerBase::Stop_One: 215 case IOLayerBase::Stop_One:
213 stop = 1; 216 stop = 1;
214 break; 217 break;
215 case IOLayerBase::Stop_OnePointFive: 218 case IOLayerBase::Stop_OnePointFive:
216 stop = 15; 219 stop = 15;
217 break; 220 break;
218 case IOLayerBase::Stop_Two: 221 case IOLayerBase::Stop_Two:
219 stop = 2; 222 stop = 2;
220 break; 223 break;
221 } 224 }
222 225
223 prof.writeEntry( "Flow", flow ); 226 prof.writeEntry( "Flow", flow );
224 prof.writeEntry( "Parity", parity ); 227 prof.writeEntry( "Parity", parity );
225 prof.writeEntry( "Speed", speed ); 228 prof.writeEntry( "Speed", speed );
226 prof.writeEntry("DataBits", data); 229 prof.writeEntry("DataBits", data);
227 prof.writeEntry("StopBits", stop); 230 prof.writeEntry("StopBits", stop);
228 prof.writeEntry( "Number", m_telNumber->text() ); 231 prof.writeEntry( "Number", m_telNumber->text() );
229 232
230 233
231 atConf->writeConfig(prof); 234 atConf->writeConfig(prof);
232} 235}
233 236
234void ModemConfigWidget::slotAT() { 237void ModemConfigWidget::slotAT() {
235 // ATConfigDialog conf( this, "ATConfig", true ); 238 // ATConfigDialog conf( this, "ATConfig", true );
236 // josef/Max I know why don't you create the stuff on the stack 239 // josef/Max I know why don't you create the stuff on the stack
237 // but making it a TopLevel Dialog and ignoring 240 // but making it a TopLevel Dialog and ignoring
238 // cancel is not fun either... 241 // cancel is not fun either...
239 // what to do? FIXME!!! -zecke 242 // what to do? FIXME!!! -zecke
240 atConf->showMaximized(); 243 if ( QPEApplication::execDialog( atConf ) != QDialog::Accepted ) {
241 if ( atConf->exec() != QDialog::Accepted ) {
242 // reload old settings 244 // reload old settings
243 } 245 }
244} 246}
245 247
246void ModemConfigWidget::slotDial() { 248void ModemConfigWidget::slotDial() {
247 DialDialog dial( this, "DialConfig", true ); 249 DialDialog dial( this, "DialConfig", true );
248 if(!m_telNumber->text().isEmpty()) { 250 if(!m_telNumber->text().isEmpty()) {
249 dial.setNumber(m_telNumber->text().replace(QRegExp("[\\-\\/\\ \\.\\,]"), "")); 251 dial.setNumber(m_telNumber->text().replace(QRegExp("[\\-\\/\\ \\.\\,]"), ""));
250 } 252 }
251 dial.showMaximized(); 253 if ( QPEApplication::execDialog( &dial ) == QDialog::Accepted ) {
252 if ( dial.exec() == QDialog::Accepted ) {
253 m_telNumber->setText( dial.number() ); 254 m_telNumber->setText( dial.number() );
254 } 255 }
255} 256}
diff --git a/noncore/apps/opie-reader/CloseDialog.cpp b/noncore/apps/opie-reader/CloseDialog.cpp
index 741fa67..d7c2652 100644
--- a/noncore/apps/opie-reader/CloseDialog.cpp
+++ b/noncore/apps/opie-reader/CloseDialog.cpp
@@ -1,18 +1,21 @@
1#include "CloseDialog.h" 1#include "CloseDialog.h"
2#include "qlayout.h" 2#include "qlayout.h"
3 3
4#include <qpe/qpeapplication.h>
5
4CCloseDialog::CCloseDialog(const QString& fname, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true) 6CCloseDialog::CCloseDialog(const QString& fname, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true)
5{ 7{
6 setCaption(tr("Tidy-up")); 8 setCaption(tr("Tidy-up"));
7 QVBoxLayout *tmp = new QVBoxLayout(this); 9 QVBoxLayout *tmp = new QVBoxLayout(this);
8 QVButtonGroup* vb = new QVButtonGroup(tr("Delete"), this); 10 QVButtonGroup* vb = new QVButtonGroup(tr("Delete"), this);
9 tmp->addWidget(vb); 11 tmp->addWidget(vb);
10 QString filestring = tr("Delete") + " " + fname; 12 QString filestring = tr("Delete") + " " + fname;
11 file = new QCheckBox(filestring, vb); 13 file = new QCheckBox(filestring, vb);
12 marks = new QCheckBox(tr("Delete Bookmarks"), vb); 14 marks = new QCheckBox(tr("Delete Bookmarks"), vb);
13 config = new QCheckBox(tr("Delete Configuration"), vb); 15 config = new QCheckBox(tr("Delete Configuration"), vb);
14 file->setChecked(false); 16 file->setChecked(false);
15 marks->setChecked(true); 17 marks->setChecked(true);
16 config->setChecked(true); 18 config->setChecked(true);
17 if (fs) showMaximized(); 19 if (fs)
20 QPEApplication::showDialog( this );
18} 21}
diff --git a/noncore/apps/opie-reader/Prefs.cpp b/noncore/apps/opie-reader/Prefs.cpp
index e5320d9..5150ca5 100644
--- a/noncore/apps/opie-reader/Prefs.cpp
+++ b/noncore/apps/opie-reader/Prefs.cpp
@@ -1,636 +1,639 @@
1/**************************************************************************** 1/****************************************************************************
2** Form implementation generated from reading ui file 'Prefs.ui' 2** Form implementation generated from reading ui file 'Prefs.ui'
3** 3**
4** Created: Tue Feb 11 23:53:35 2003 4** Created: Tue Feb 11 23:53:35 2003
5** by: The User Interface Compiler (uic) 5** by: The User Interface Compiler (uic)
6** 6**
7** WARNING! All changes made in this file will be lost! 7** WARNING! All changes made in this file will be lost!
8****************************************************************************/ 8****************************************************************************/
9#include "useqpe.h" 9#include "useqpe.h"
10#include "Prefs.h" 10#include "Prefs.h"
11 11
12#include <qcheckbox.h> 12#include <qcheckbox.h>
13#include <qlabel.h> 13#include <qlabel.h>
14#include <qpushbutton.h> 14#include <qpushbutton.h>
15#include <qspinbox.h> 15#include <qspinbox.h>
16#include <qlayout.h> 16#include <qlayout.h>
17#include <qvariant.h> 17#include <qvariant.h>
18#include <qtooltip.h> 18#include <qtooltip.h>
19#include <qwhatsthis.h> 19#include <qwhatsthis.h>
20#include <qcombobox.h> 20#include <qcombobox.h>
21#include <qbuttongroup.h> 21#include <qbuttongroup.h>
22#include <qlineedit.h> 22#include <qlineedit.h>
23#ifdef USEQPE 23#ifdef USEQPE
24#include <qpe/menubutton.h> 24#include <qpe/menubutton.h>
25#include <qpe/fontdatabase.h> 25#include <qpe/fontdatabase.h>
26#else 26#else
27#include <qfontdatabase.h> 27#include <qfontdatabase.h>
28#endif 28#endif
29 29
30#include <qpe/qpeapplication.h>
31
30CLayoutPrefs::CLayoutPrefs( QWidget* parent, const char* name, WFlags fl ) 32CLayoutPrefs::CLayoutPrefs( QWidget* parent, const char* name, WFlags fl )
31 : QWidget( parent, name, fl ) 33 : QWidget( parent, name, fl )
32{ 34{
33 QHBoxLayout* hb = new QHBoxLayout(this); 35 QHBoxLayout* hb = new QHBoxLayout(this);
34 QButtonGroup* bg = new QButtonGroup(2, Qt::Horizontal, tr("Text"), this); 36 QButtonGroup* bg = new QButtonGroup(2, Qt::Horizontal, tr("Text"), this);
35 hb->addWidget(bg); 37 hb->addWidget(bg);
36 38
37 StripCR = new QCheckBox( bg ); 39 StripCR = new QCheckBox( bg );
38 StripCR->setText( tr( "Strip CR" ) ); 40 StripCR->setText( tr( "Strip CR" ) );
39 41
40 Dehyphen = new QCheckBox( bg ); 42 Dehyphen = new QCheckBox( bg );
41 Dehyphen->setText( tr( "Dehyphen" ) ); 43 Dehyphen->setText( tr( "Dehyphen" ) );
42 44
43 SingleSpace = new QCheckBox( bg ); 45 SingleSpace = new QCheckBox( bg );
44 SingleSpace->setText( tr( "Single Space" ) ); 46 SingleSpace->setText( tr( "Single Space" ) );
45 47
46 Unindent = new QCheckBox( bg ); 48 Unindent = new QCheckBox( bg );
47 Unindent->setText( tr( "Unindent" ) ); 49 Unindent->setText( tr( "Unindent" ) );
48 50
49 Reparagraph = new QCheckBox( bg ); 51 Reparagraph = new QCheckBox( bg );
50 Reparagraph->setText( tr( "Reparagraph" ) ); 52 Reparagraph->setText( tr( "Reparagraph" ) );
51 53
52 DoubleSpace = new QCheckBox( bg ); 54 DoubleSpace = new QCheckBox( bg );
53 DoubleSpace->setText( tr( "Double Space" ) ); 55 DoubleSpace->setText( tr( "Double Space" ) );
54 56
55 Remap = new QCheckBox( bg ); 57 Remap = new QCheckBox( bg );
56 Remap->setText( tr( "Remap" ) ); 58 Remap->setText( tr( "Remap" ) );
57 59
58 Embolden = new QCheckBox( bg ); 60 Embolden = new QCheckBox( bg );
59 Embolden->setText( tr( "Embolden" ) ); 61 Embolden->setText( tr( "Embolden" ) );
60 62
61 FullJustify = new QCheckBox( bg ); 63 FullJustify = new QCheckBox( bg );
62 FullJustify->setText( tr( "Full Justify" ) ); 64 FullJustify->setText( tr( "Full Justify" ) );
63 65
64} 66}
65 67
66/* 68/*
67 * Destroys the object and frees any allocated resources 69 * Destroys the object and frees any allocated resources
68 */ 70 */
69CLayoutPrefs::~CLayoutPrefs() 71CLayoutPrefs::~CLayoutPrefs()
70{ 72{
71 // no need to delete child widgets, Qt does it all for us 73 // no need to delete child widgets, Qt does it all for us
72} 74}
73 75
74 76
75 77
76CLayoutPrefs2::CLayoutPrefs2( QWidget* parent, const char* name, WFlags fl ) 78CLayoutPrefs2::CLayoutPrefs2( QWidget* parent, const char* name, WFlags fl )
77 : QWidget( parent, name, fl ) 79 : QWidget( parent, name, fl )
78{ 80{
79 81
80 QVBoxLayout* vb = new QVBoxLayout(this); 82 QVBoxLayout* vb = new QVBoxLayout(this);
81 QGridLayout* gl = new QGridLayout(vb, 4, 3); 83 QGridLayout* gl = new QGridLayout(vb, 4, 3);
82 84
83 QLabel *TextLabel; 85 QLabel *TextLabel;
84 86
85 TextLabel = new QLabel( this, "TextLabel1" ); 87 TextLabel = new QLabel( this, "TextLabel1" );
86 TextLabel->setText( tr( "Indent" ) ); 88 TextLabel->setText( tr( "Indent" ) );
87 gl->addWidget(TextLabel, 0, 0); 89 gl->addWidget(TextLabel, 0, 0);
88 90
89 91
90 TextLabel = new QLabel( this ); 92 TextLabel = new QLabel( this );
91 TextLabel->setText( tr( "Page\nOverlap" ) ); 93 TextLabel->setText( tr( "Page\nOverlap" ) );
92 gl->addWidget(TextLabel, 0, 1); 94 gl->addWidget(TextLabel, 0, 1);
93 95
94 TextLabel = new QLabel( this ); 96 TextLabel = new QLabel( this );
95 TextLabel->setText( tr( "Graphics\nZoom" ) ); 97 TextLabel->setText( tr( "Graphics\nZoom" ) );
96 gl->addWidget(TextLabel, 0, 2); 98 gl->addWidget(TextLabel, 0, 2);
97 99
98 Indent = new QSpinBox( this, "Indent" ); 100 Indent = new QSpinBox( this, "Indent" );
99 Indent->setRange(0,20); 101 Indent->setRange(0,20);
100 gl->addWidget(Indent, 1, 0); 102 gl->addWidget(Indent, 1, 0);
101 103
102 pageoverlap = new QSpinBox( this ); 104 pageoverlap = new QSpinBox( this );
103 pageoverlap->setRange(0,20); 105 pageoverlap->setRange(0,20);
104 gl->addWidget(pageoverlap, 1, 1); 106 gl->addWidget(pageoverlap, 1, 1);
105 107
106 gfxzoom = new QSpinBox( this ); 108 gfxzoom = new QSpinBox( this );
107 gfxzoom->setRange(0,100); 109 gfxzoom->setRange(0,100);
108 gl->addWidget(gfxzoom, 1, 2); 110 gl->addWidget(gfxzoom, 1, 2);
109 111
110 TextLabel = new QLabel( this, "TextLabel4" ); 112 TextLabel = new QLabel( this, "TextLabel4" );
111 TextLabel->setText( tr( "Margin" ) ); 113 TextLabel->setText( tr( "Margin" ) );
112 gl->addWidget(TextLabel, 2, 0); 114 gl->addWidget(TextLabel, 2, 0);
113 115
114 TextLabel = new QLabel( this ); 116 TextLabel = new QLabel( this );
115 TextLabel->setText( tr( "Paragraph\nLeading" ) ); 117 TextLabel->setText( tr( "Paragraph\nLeading" ) );
116 gl->addWidget(TextLabel, 2, 1); 118 gl->addWidget(TextLabel, 2, 1);
117 119
118 TextLabel = new QLabel( this ); 120 TextLabel = new QLabel( this );
119 TextLabel->setText( tr( "Line\nLeading" ) ); 121 TextLabel->setText( tr( "Line\nLeading" ) );
120 gl->addWidget(TextLabel, 2, 2); 122 gl->addWidget(TextLabel, 2, 2);
121 123
122 Margin = new QSpinBox( this, "Margin" ); 124 Margin = new QSpinBox( this, "Margin" );
123 Margin->setRange(0, 100); 125 Margin->setRange(0, 100);
124 gl->addWidget(Margin, 3, 0); 126 gl->addWidget(Margin, 3, 0);
125 127
126 ParaLead = new QSpinBox( this ); 128 ParaLead = new QSpinBox( this );
127 ParaLead->setRange(-5, 50); 129 ParaLead->setRange(-5, 50);
128 gl->addWidget(ParaLead, 3, 1); 130 gl->addWidget(ParaLead, 3, 1);
129 131
130 LineLead = new QSpinBox( this ); 132 LineLead = new QSpinBox( this );
131 LineLead->setRange(-5, 50); 133 LineLead->setRange(-5, 50);
132 gl->addWidget(LineLead, 3, 2); 134 gl->addWidget(LineLead, 3, 2);
133 135
134 gl = new QGridLayout(vb, 2, 2); 136 gl = new QGridLayout(vb, 2, 2);
135 137
136 TextLabel = new QLabel( this); 138 TextLabel = new QLabel( this);
137 TextLabel->setText( tr( "Markup" ) ); 139 TextLabel->setText( tr( "Markup" ) );
138 gl->addWidget(TextLabel, 0, 0, Qt::AlignBottom); 140 gl->addWidget(TextLabel, 0, 0, Qt::AlignBottom);
139 TextLabel = new QLabel( this); 141 TextLabel = new QLabel( this);
140 TextLabel->setText( tr( "Font" ) ); 142 TextLabel->setText( tr( "Font" ) );
141 gl->addWidget(TextLabel, 0, 1, Qt::AlignBottom); 143 gl->addWidget(TextLabel, 0, 1, Qt::AlignBottom);
142 144
143 145
144#ifdef USECOMBO 146#ifdef USECOMBO
145 Markup = new QComboBox( this); 147 Markup = new QComboBox( this);
146#else 148#else
147 Markup = new MenuButton( this); 149 Markup = new MenuButton( this);
148#endif 150#endif
149 Markup->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); 151 Markup->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
150 Markup->insertItem("Auto"); 152 Markup->insertItem("Auto");
151 Markup->insertItem("None"); 153 Markup->insertItem("None");
152 Markup->insertItem("Text"); 154 Markup->insertItem("Text");
153 Markup->insertItem("HTML"); 155 Markup->insertItem("HTML");
154 Markup->insertItem("PML"); 156 Markup->insertItem("PML");
155 gl->addWidget(Markup, 1, 0, Qt::AlignTop); 157 gl->addWidget(Markup, 1, 0, Qt::AlignTop);
156 158
157#ifdef USECOMBO 159#ifdef USECOMBO
158 fontselector = new QComboBox( this); 160 fontselector = new QComboBox( this);
159#else 161#else
160 fontselector = new MenuButton( this); 162 fontselector = new MenuButton( this);
161#endif 163#endif
162 fontselector->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); 164 fontselector->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
163 { 165 {
164#ifdef USEQPE 166#ifdef USEQPE
165 FontDatabase f; 167 FontDatabase f;
166#else 168#else
167 QFontDatabase f; 169 QFontDatabase f;
168#endif 170#endif
169 QStringList flist = f.families(); 171 QStringList flist = f.families();
170 for (QStringList::Iterator nm = flist.begin(); nm != flist.end(); nm++) 172 for (QStringList::Iterator nm = flist.begin(); nm != flist.end(); nm++)
171 { 173 {
172 fontselector->insertItem(*nm); 174 fontselector->insertItem(*nm);
173 } 175 }
174 } // delete the FontDatabase!!! 176 } // delete the FontDatabase!!!
175 gl->addWidget(fontselector, 1, 1, Qt::AlignTop); 177 gl->addWidget(fontselector, 1, 1, Qt::AlignTop);
176} 178}
177/* 179/*
178CLayoutPrefs2::CLayoutPrefs2( QWidget* parent, const char* name, WFlags fl ) 180CLayoutPrefs2::CLayoutPrefs2( QWidget* parent, const char* name, WFlags fl )
179 : QWidget( parent, name, fl ) 181 : QWidget( parent, name, fl )
180{ 182{
181 QHBoxLayout* hb = new QHBoxLayout(this); 183 QHBoxLayout* hb = new QHBoxLayout(this);
182 184
183 QVBoxLayout* vb = new QVBoxLayout; 185 QVBoxLayout* vb = new QVBoxLayout;
184 hb->addLayout(vb); 186 hb->addLayout(vb);
185 187
186 QLabel *TextLabel; 188 QLabel *TextLabel;
187 189
188 TextLabel = new QLabel( this, "TextLabel1" ); 190 TextLabel = new QLabel( this, "TextLabel1" );
189 TextLabel->setText( tr( "Indent" ) ); 191 TextLabel->setText( tr( "Indent" ) );
190 vb->addWidget( TextLabel, 0, Qt::AlignBottom ); 192 vb->addWidget( TextLabel, 0, Qt::AlignBottom );
191 Indent = new QSpinBox( this, "Indent" ); 193 Indent = new QSpinBox( this, "Indent" );
192 Indent->setRange(0,20); 194 Indent->setRange(0,20);
193 vb->addWidget( Indent, 0, Qt::AlignLeft ); 195 vb->addWidget( Indent, 0, Qt::AlignLeft );
194 196
195 TextLabel = new QLabel( this ); 197 TextLabel = new QLabel( this );
196 TextLabel->setText( tr( "Page\nOverlap" ) ); 198 TextLabel->setText( tr( "Page\nOverlap" ) );
197 vb->addWidget( TextLabel, 0, Qt::AlignBottom ); 199 vb->addWidget( TextLabel, 0, Qt::AlignBottom );
198 pageoverlap = new QSpinBox( this ); 200 pageoverlap = new QSpinBox( this );
199 pageoverlap->setRange(0,20); 201 pageoverlap->setRange(0,20);
200 vb->addWidget( pageoverlap, 0, Qt::AlignLeft ); 202 vb->addWidget( pageoverlap, 0, Qt::AlignLeft );
201 203
202 TextLabel = new QLabel( this ); 204 TextLabel = new QLabel( this );
203 TextLabel->setText( tr( "Graphics\nZoom" ) ); 205 TextLabel->setText( tr( "Graphics\nZoom" ) );
204 vb->addWidget( TextLabel, 0, Qt::AlignBottom ); 206 vb->addWidget( TextLabel, 0, Qt::AlignBottom );
205 gfxzoom = new QSpinBox( this ); 207 gfxzoom = new QSpinBox( this );
206 gfxzoom->setRange(0,100); 208 gfxzoom->setRange(0,100);
207 vb->addWidget( gfxzoom, 0, Qt::AlignLeft ); 209 vb->addWidget( gfxzoom, 0, Qt::AlignLeft );
208 210
209 vb->addStretch(); 211 vb->addStretch();
210 212
211 vb = new QVBoxLayout; 213 vb = new QVBoxLayout;
212 hb->addLayout(vb); 214 hb->addLayout(vb);
213 215
214 TextLabel = new QLabel( this, "TextLabel4" ); 216 TextLabel = new QLabel( this, "TextLabel4" );
215 TextLabel->setText( tr( "Margin" ) ); 217 TextLabel->setText( tr( "Margin" ) );
216 vb->addWidget( TextLabel, 0, Qt::AlignBottom ); 218 vb->addWidget( TextLabel, 0, Qt::AlignBottom );
217 Margin = new QSpinBox( this, "Margin" ); 219 Margin = new QSpinBox( this, "Margin" );
218 Margin->setRange(0, 100); 220 Margin->setRange(0, 100);
219 vb->addWidget( Margin, 0, Qt::AlignLeft ); 221 vb->addWidget( Margin, 0, Qt::AlignLeft );
220 222
221 TextLabel = new QLabel( this ); 223 TextLabel = new QLabel( this );
222 TextLabel->setText( tr( "Paragraph\nLeading" ) ); 224 TextLabel->setText( tr( "Paragraph\nLeading" ) );
223 vb->addWidget( TextLabel, 0, Qt::AlignBottom ); 225 vb->addWidget( TextLabel, 0, Qt::AlignBottom );
224 ParaLead = new QSpinBox( this ); 226 ParaLead = new QSpinBox( this );
225 ParaLead->setRange(-5, 50); 227 ParaLead->setRange(-5, 50);
226 vb->addWidget( ParaLead, 0, Qt::AlignLeft ); 228 vb->addWidget( ParaLead, 0, Qt::AlignLeft );
227 229
228 TextLabel = new QLabel( this ); 230 TextLabel = new QLabel( this );
229 TextLabel->setText( tr( "Line\nLeading" ) ); 231 TextLabel->setText( tr( "Line\nLeading" ) );
230 vb->addWidget( TextLabel, 0, Qt::AlignBottom ); 232 vb->addWidget( TextLabel, 0, Qt::AlignBottom );
231 LineLead = new QSpinBox( this ); 233 LineLead = new QSpinBox( this );
232 LineLead->setRange(-5, 50); 234 LineLead->setRange(-5, 50);
233 vb->addWidget( LineLead, 0, Qt::AlignLeft ); 235 vb->addWidget( LineLead, 0, Qt::AlignLeft );
234 236
235 vb->addStretch(); 237 vb->addStretch();
236 238
237 vb = new QVBoxLayout; 239 vb = new QVBoxLayout;
238 hb->addLayout(vb); 240 hb->addLayout(vb);
239 241
240 242
241 TextLabel = new QLabel( this); 243 TextLabel = new QLabel( this);
242 TextLabel->setText( tr( "Markup" ) ); 244 TextLabel->setText( tr( "Markup" ) );
243 vb->addWidget( TextLabel, 0, Qt::AlignBottom ); 245 vb->addWidget( TextLabel, 0, Qt::AlignBottom );
244 Markup = new MenuButton( this); 246 Markup = new MenuButton( this);
245 Markup->insertItem("Auto"); 247 Markup->insertItem("Auto");
246 Markup->insertItem("None"); 248 Markup->insertItem("None");
247 Markup->insertItem("Text"); 249 Markup->insertItem("Text");
248 Markup->insertItem("HTML"); 250 Markup->insertItem("HTML");
249 Markup->insertItem("PML"); 251 Markup->insertItem("PML");
250 vb->addWidget( Markup, 0, Qt::AlignLeft ); 252 vb->addWidget( Markup, 0, Qt::AlignLeft );
251 253
252 TextLabel = new QLabel( this); 254 TextLabel = new QLabel( this);
253 TextLabel->setText( tr( "Font" ) ); 255 TextLabel->setText( tr( "Font" ) );
254 vb->addWidget( TextLabel, 0, Qt::AlignBottom ); 256 vb->addWidget( TextLabel, 0, Qt::AlignBottom );
255 fontselector = new MenuButton( this); 257 fontselector = new MenuButton( this);
256 fontselector->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); 258 fontselector->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
257 { 259 {
258 FontDatabase f; 260 FontDatabase f;
259 QStringList flist = f.families(); 261 QStringList flist = f.families();
260 for (QStringList::Iterator nm = flist.begin(); nm != flist.end(); nm++) 262 for (QStringList::Iterator nm = flist.begin(); nm != flist.end(); nm++)
261 { 263 {
262 fontselector->insertItem(*nm); 264 fontselector->insertItem(*nm);
263 } 265 }
264 } // delete the FontDatabase!!! 266 } // delete the FontDatabase!!!
265 vb->addWidget( fontselector, 0, Qt::AlignLeft ); 267 vb->addWidget( fontselector, 0, Qt::AlignLeft );
266 268
267 vb->addStretch(); 269 vb->addStretch();
268} 270}
269*/ 271*/
270/* 272/*
271 * Destroys the object and frees any allocated resources 273 * Destroys the object and frees any allocated resources
272 */ 274 */
273CLayoutPrefs2::~CLayoutPrefs2() 275CLayoutPrefs2::~CLayoutPrefs2()
274{ 276{
275 // no need to delete child widgets, Qt does it all for us 277 // no need to delete child widgets, Qt does it all for us
276} 278}
277 279
278/* 280/*
279CPluckerPrefs::CPluckerPrefs( QWidget* parent, const char* name, WFlags fl ) 281CPluckerPrefs::CPluckerPrefs( QWidget* parent, const char* name, WFlags fl )
280 : QWidget( parent, name, fl ) 282 : QWidget( parent, name, fl )
281{ 283{
282 Layout11 = new QVBoxLayout(this); 284 Layout11 = new QVBoxLayout(this);
283 Layout11->setMargin( 0 ); 285 Layout11->setMargin( 0 );
284 286
285 Depluck = new QCheckBox( this, "Depluck" ); 287 Depluck = new QCheckBox( this, "Depluck" );
286 Depluck->setText( tr( "Depluck" ) ); 288 Depluck->setText( tr( "Depluck" ) );
287 Layout11->addWidget( Depluck ); 289 Layout11->addWidget( Depluck );
288 290
289 Dejpluck = new QCheckBox( this, "Dejpluck" ); 291 Dejpluck = new QCheckBox( this, "Dejpluck" );
290 Dejpluck->setText( tr( "Dejpluck" ) ); 292 Dejpluck->setText( tr( "Dejpluck" ) );
291 Layout11->addWidget( Dejpluck ); 293 Layout11->addWidget( Dejpluck );
292 294
293 Continuous = new QCheckBox( this, "Continuous" ); 295 Continuous = new QCheckBox( this, "Continuous" );
294 Continuous->setText( tr( "Continuous" ) ); 296 Continuous->setText( tr( "Continuous" ) );
295 Layout11->addWidget( Continuous ); 297 Layout11->addWidget( Continuous );
296 298
297} 299}
298 300
299CPluckerPrefs::~CPluckerPrefs() 301CPluckerPrefs::~CPluckerPrefs()
300{ 302{
301 // no need to delete child widgets, Qt does it all for us 303 // no need to delete child widgets, Qt does it all for us
302} 304}
303*/ 305*/
304/* 306/*
305CMiscPrefs::CMiscPrefs( QWidget* parent, const char* name, WFlags fl ) 307CMiscPrefs::CMiscPrefs( QWidget* parent, const char* name, WFlags fl )
306 : QWidget( parent, name, fl ) 308 : QWidget( parent, name, fl )
307{ 309{
308 310
309 QVBoxLayout* Layout11 = new QVBoxLayout(this); 311 QVBoxLayout* Layout11 = new QVBoxLayout(this);
310 Layout11->setMargin( 0 ); 312 Layout11->setMargin( 0 );
311 313
312 314
313 QHBoxLayout* hl = new QHBoxLayout; 315 QHBoxLayout* hl = new QHBoxLayout;
314 316
315 QLabel* TextLabel = new QLabel( this ); 317 QLabel* TextLabel = new QLabel( this );
316 TextLabel->setText( tr( "Action for\nSelect Button" ) ); 318 TextLabel->setText( tr( "Action for\nSelect Button" ) );
317 hl->addWidget(TextLabel); 319 hl->addWidget(TextLabel);
318 320
319 action = new QComboBox( this ); 321 action = new QComboBox( this );
320 action->insertItem("Open file"); 322 action->insertItem("Open file");
321 action->insertItem("Autoscroll"); 323 action->insertItem("Autoscroll");
322 action->insertItem("Mark"); 324 action->insertItem("Mark");
323 action->insertItem("Annotate"); 325 action->insertItem("Annotate");
324 action->insertItem("Fullscreen"); 326 action->insertItem("Fullscreen");
325 hl->addWidget( action ); 327 hl->addWidget( action );
326 328
327 Layout11->addLayout(hl); 329 Layout11->addLayout(hl);
328 330
329 hl = new QHBoxLayout; 331 hl = new QHBoxLayout;
330 332
331 TextLabel = new QLabel( this ); 333 TextLabel = new QLabel( this );
332 TextLabel->setText( tr( "Dictionary\nApplication" ) ); 334 TextLabel->setText( tr( "Dictionary\nApplication" ) );
333 hl->addWidget(TextLabel); 335 hl->addWidget(TextLabel);
334 target = new QLineEdit(this); 336 target = new QLineEdit(this);
335 hl->addWidget( target ); 337 hl->addWidget( target );
336 338
337 Layout11->addLayout(hl); 339 Layout11->addLayout(hl);
338 340
339 341
340 QButtonGroup* bg = new QButtonGroup(1, Qt::Horizontal, "Selection Target", this); 342 QButtonGroup* bg = new QButtonGroup(1, Qt::Horizontal, "Selection Target", this);
341 Layout11->addWidget( bg ); 343 Layout11->addWidget( bg );
342 344
343 annotation = new QCheckBox( bg ); 345 annotation = new QCheckBox( bg );
344 annotation->setText( tr( "Annotation" ) ); 346 annotation->setText( tr( "Annotation" ) );
345 347
346 dictionary = new QCheckBox( bg ); 348 dictionary = new QCheckBox( bg );
347 dictionary->setText( tr( "Dictionary" ) ); 349 dictionary->setText( tr( "Dictionary" ) );
348 350
349 clipboard = new QCheckBox( bg ); 351 clipboard = new QCheckBox( bg );
350 clipboard->setText( tr( "Clipboard" ) ); 352 clipboard->setText( tr( "Clipboard" ) );
351 353
352} 354}
353 355
354CMiscPrefs::~CMiscPrefs() 356CMiscPrefs::~CMiscPrefs()
355{ 357{
356 // no need to delete child widgets, Qt does it all for us 358 // no need to delete child widgets, Qt does it all for us
357} 359}
358*/ 360*/
359 361
360CMiscPrefs::CMiscPrefs( QWidget* parent, const char* name, WFlags fl ) 362CMiscPrefs::CMiscPrefs( QWidget* parent, const char* name, WFlags fl )
361 : QWidget( parent, name, fl ) 363 : QWidget( parent, name, fl )
362{ 364{
363 365
364 QGridLayout* hl = new QGridLayout(this,1,2); 366 QGridLayout* hl = new QGridLayout(this,1,2);
365 367
366 hl->setMargin( 0 ); 368 hl->setMargin( 0 );
367 369
368 QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, tr("Select Action"), this); 370 QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, tr("Select Action"), this);
369 hl->addWidget( gb, 0, 0 ); 371 hl->addWidget( gb, 0, 0 );
370 372
371 annotation = new QCheckBox( gb ); 373 annotation = new QCheckBox( gb );
372 annotation->setText( tr( "Annotation" ) ); 374 annotation->setText( tr( "Annotation" ) );
373 375
374 dictionary = new QCheckBox( gb ); 376 dictionary = new QCheckBox( gb );
375 dictionary->setText( tr( "Dictionary" ) ); 377 dictionary->setText( tr( "Dictionary" ) );
376 378
377 clipboard = new QCheckBox( gb ); 379 clipboard = new QCheckBox( gb );
378 clipboard->setText( tr( "Clipboard" ) ); 380 clipboard->setText( tr( "Clipboard" ) );
379 381
380 QButtonGroup* bg = new QButtonGroup(1, Qt::Horizontal, tr("Plucker"), this); 382 QButtonGroup* bg = new QButtonGroup(1, Qt::Horizontal, tr("Plucker"), this);
381 hl->addWidget( bg, 0 , 1 ); 383 hl->addWidget( bg, 0 , 1 );
382 384
383 Depluck = new QCheckBox( bg ); 385 Depluck = new QCheckBox( bg );
384 Depluck->setText( tr( "Depluck" ) ); 386 Depluck->setText( tr( "Depluck" ) );
385 387
386 Dejpluck = new QCheckBox( bg ); 388 Dejpluck = new QCheckBox( bg );
387 Dejpluck->setText( tr( "Dejpluck" ) ); 389 Dejpluck->setText( tr( "Dejpluck" ) );
388 390
389 Continuous = new QCheckBox( bg ); 391 Continuous = new QCheckBox( bg );
390 Continuous->setText( tr( "Continuous" ) ); 392 Continuous->setText( tr( "Continuous" ) );
391 393
392 394
393/* 395/*
394 396
395 QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, "Navigation", this); 397 QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, "Navigation", this);
396 TextLabel = new QLabel( gb ); 398 TextLabel = new QLabel( gb );
397 TextLabel->setText( tr( "Overlap" ) ); 399 TextLabel->setText( tr( "Overlap" ) );
398 QSpinBox* sb = new QSpinBox( gb ); 400 QSpinBox* sb = new QSpinBox( gb );
399 401
400 Internationalisation 402 Internationalisation
401 Ideogram/Word 403 Ideogram/Word
402 Set Width 404 Set Width
403 Set Encoding 405 Set Encoding
404 Set Font 406 Set Font
405*/ 407*/
406} 408}
407 409
408CMiscPrefs::~CMiscPrefs() 410CMiscPrefs::~CMiscPrefs()
409{ 411{
410 // no need to delete child widgets, Qt does it all for us 412 // no need to delete child widgets, Qt does it all for us
411} 413}
412 414
413CPrefs::CPrefs(bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true) 415CPrefs::CPrefs(bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true)
414{ 416{
415 setCaption(tr( "OpieReader Settings" ) ); 417 setCaption(tr( "OpieReader Settings" ) );
416 QTabWidget* td = new QTabWidget(this); 418 QTabWidget* td = new QTabWidget(this);
417 layout = new CLayoutPrefs(this); 419 layout = new CLayoutPrefs(this);
418 layout2 = new CLayoutPrefs2(this); 420 layout2 = new CLayoutPrefs2(this);
419 misc = new CMiscPrefs(this); 421 misc = new CMiscPrefs(this);
420 button = new CButtonPrefs(this); 422 button = new CButtonPrefs(this);
421 inter = new CInterPrefs(this); 423 inter = new CInterPrefs(this);
422 td->addTab(layout, tr("Layout")); 424 td->addTab(layout, tr("Layout"));
423 td->addTab(layout2, tr("Layout(2)")); 425 td->addTab(layout2, tr("Layout(2)"));
424 td->addTab(inter, tr("Locale")); 426 td->addTab(inter, tr("Locale"));
425 td->addTab(misc, tr("Misc")); 427 td->addTab(misc, tr("Misc"));
426 td->addTab(button, tr("Buttons")); 428 td->addTab(button, tr("Buttons"));
427 QVBoxLayout* v = new QVBoxLayout(this); 429 QVBoxLayout* v = new QVBoxLayout(this);
428 v->addWidget(td); 430 v->addWidget(td);
429 431
430 if (fs) showMaximized(); 432 if (fs)
433 QPEApplication::showDialog( this );
431} 434}
432 435
433 436
434/* 437/*
435 438
436Unicode 439Unicode
437 Ideo/Word 440 Ideo/Word
438 Width 441 Width
439 Encoding 442 Encoding
440 443
441*/ 444*/
442 445
443#include "CEncoding_tables.h" 446#include "CEncoding_tables.h"
444 447
445CInterPrefs::CInterPrefs( QWidget* parent, const char* name, WFlags fl ) 448CInterPrefs::CInterPrefs( QWidget* parent, const char* name, WFlags fl )
446 : QWidget( parent, name, fl ) 449 : QWidget( parent, name, fl )
447{ 450{
448 QHBoxLayout* hb = new QHBoxLayout(this); 451 QHBoxLayout* hb = new QHBoxLayout(this);
449 452
450 QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, tr("International"), this); 453 QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, tr("International"), this);
451 454
452 hb->addWidget(gb); 455 hb->addWidget(gb);
453 456
454 QLabel *TextLabel; 457 QLabel *TextLabel;
455 458
456 ideogram = new QCheckBox( gb ); 459 ideogram = new QCheckBox( gb );
457 ideogram->setText( tr( "Ideograms" ) ); 460 ideogram->setText( tr( "Ideograms" ) );
458 461
459 TextLabel = new QLabel( gb ); 462 TextLabel = new QLabel( gb );
460 TextLabel->setText( tr( "Ideogram Width" ) ); 463 TextLabel->setText( tr( "Ideogram Width" ) );
461 ideogramwidth = new QSpinBox( gb ); 464 ideogramwidth = new QSpinBox( gb );
462 ideogramwidth->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); 465 ideogramwidth->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
463 ideogramwidth->setRange(1,200); 466 ideogramwidth->setRange(1,200);
464 467
465 propfontchange = new QCheckBox( gb ); 468 propfontchange = new QCheckBox( gb );
466 propfontchange->setText( tr( "Apply font\nto dialogs" ) ); 469 propfontchange->setText( tr( "Apply font\nto dialogs" ) );
467 470
468 TextLabel = new QLabel( gb ); 471 TextLabel = new QLabel( gb );
469 TextLabel->setText( tr( "Encoding" ) ); 472 TextLabel->setText( tr( "Encoding" ) );
470#ifdef USECOMBO 473#ifdef USECOMBO
471 encoding = new QComboBox(gb); 474 encoding = new QComboBox(gb);
472#else 475#else
473 encoding = new MenuButton(gb); 476 encoding = new MenuButton(gb);
474#endif 477#endif
475 encoding->insertItem("Ascii"); 478 encoding->insertItem("Ascii");
476 encoding->insertItem("UTF-8"); 479 encoding->insertItem("UTF-8");
477 encoding->insertItem("UCS-2(BE)"); 480 encoding->insertItem("UCS-2(BE)");
478 encoding->insertItem("USC-2(LE)"); 481 encoding->insertItem("USC-2(LE)");
479 encoding->insertItem("Palm"); 482 encoding->insertItem("Palm");
480 for (unicodetable::iterator iter = unicodetable::begin(); iter != unicodetable::end(); iter++) 483 for (unicodetable::iterator iter = unicodetable::begin(); iter != unicodetable::end(); iter++)
481 { 484 {
482 encoding->insertItem(iter->mime); 485 encoding->insertItem(iter->mime);
483 } 486 }
484 487
485 QVBoxLayout* vb = new QVBoxLayout; 488 QVBoxLayout* vb = new QVBoxLayout;
486 489
487 gb = new QGroupBox(1, Qt::Horizontal, tr("Dictionary"), this); 490 gb = new QGroupBox(1, Qt::Horizontal, tr("Dictionary"), this);
488 491
489 TextLabel = new QLabel( gb ); 492 TextLabel = new QLabel( gb );
490 TextLabel->setText( tr( "Application" ) ); 493 TextLabel->setText( tr( "Application" ) );
491 application = new QLineEdit(gb); 494 application = new QLineEdit(gb);
492 application->setFixedWidth(80); 495 application->setFixedWidth(80);
493 496
494 TextLabel = new QLabel( gb ); 497 TextLabel = new QLabel( gb );
495 TextLabel->setText( tr( "Message" ) ); 498 TextLabel->setText( tr( "Message" ) );
496 message = new QLineEdit(gb); 499 message = new QLineEdit(gb);
497 message->setFixedWidth(80); 500 message->setFixedWidth(80);
498// message->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); 501// message->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
499 twotouch = new QCheckBox( gb ); 502 twotouch = new QCheckBox( gb );
500 twotouch->setText( tr( "Two/One\nTouch" ) ); 503 twotouch->setText( tr( "Two/One\nTouch" ) );
501 504
502 SwapMouse = new QCheckBox( gb ); 505 SwapMouse = new QCheckBox( gb );
503 SwapMouse->setText(tr("Swap Tap\nActions") ); 506 SwapMouse->setText(tr("Swap Tap\nActions") );
504 507
505 508
506 vb->addWidget(gb); 509 vb->addWidget(gb);
507 510
508// vb->addStretch(); 511// vb->addStretch();
509 hb->addLayout(vb); 512 hb->addLayout(vb);
510} 513}
511 514
512CInterPrefs::~CInterPrefs() 515CInterPrefs::~CInterPrefs()
513{ 516{
514 // no need to delete child widgets, Qt does it all for us 517 // no need to delete child widgets, Qt does it all for us
515} 518}
516 519
517 520
518 521
519#ifdef USECOMBO 522#ifdef USECOMBO
520void CButtonPrefs::populate(QComboBox *mb) 523void CButtonPrefs::populate(QComboBox *mb)
521#else 524#else
522void CButtonPrefs::populate(MenuButton *mb) 525void CButtonPrefs::populate(MenuButton *mb)
523#endif 526#endif
524{ 527{
525 mb->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); 528 mb->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
526 mb->insertItem(tr("<Nothing>") ); 529 mb->insertItem(tr("<Nothing>") );
527 mb->insertItem(tr("Open file") ); 530 mb->insertItem(tr("Open file") );
528 mb->insertItem(tr("Autoscroll") ); 531 mb->insertItem(tr("Autoscroll") );
529 mb->insertItem(tr("Bookmark") ); 532 mb->insertItem(tr("Bookmark") );
530 mb->insertItem(tr("Annotate") ); 533 mb->insertItem(tr("Annotate") );
531 mb->insertItem(tr("Fullscreen") ); 534 mb->insertItem(tr("Fullscreen") );
532 535
533 mb->insertItem(tr("Zoom in") ); 536 mb->insertItem(tr("Zoom in") );
534 mb->insertItem(tr("Zoom out") ); 537 mb->insertItem(tr("Zoom out") );
535 mb->insertItem(tr("Back") ); 538 mb->insertItem(tr("Back") );
536 mb->insertItem(tr("Forward") ); 539 mb->insertItem(tr("Forward") );
537 mb->insertItem(tr("Home") ); 540 mb->insertItem(tr("Home") );
538 mb->insertItem(tr("Page up") ); 541 mb->insertItem(tr("Page up") );
539 mb->insertItem(tr("Page down") ); 542 mb->insertItem(tr("Page down") );
540 mb->insertItem(tr("Line up") ); 543 mb->insertItem(tr("Line up") );
541 mb->insertItem(tr("Line down") ); 544 mb->insertItem(tr("Line down") );
542 mb->insertItem(tr("Beginning") ); 545 mb->insertItem(tr("Beginning") );
543 mb->insertItem(tr("End") ); 546 mb->insertItem(tr("End") );
544} 547}
545 548
546CButtonPrefs::CButtonPrefs( QWidget* parent, const char* name, WFlags fl ) 549CButtonPrefs::CButtonPrefs( QWidget* parent, const char* name, WFlags fl )
547 : QWidget( parent, name, fl ) 550 : QWidget( parent, name, fl )
548{ 551{
549 552
550 QGridLayout* hl = new QGridLayout(this,10,2); 553 QGridLayout* hl = new QGridLayout(this,10,2);
551 554
552 hl->setMargin( 0 ); 555 hl->setMargin( 0 );
553 556
554 QLabel* ql = new QLabel(tr("Escape Button"), this); 557 QLabel* ql = new QLabel(tr("Escape Button"), this);
555 hl->addWidget(ql, 0, 0, Qt::AlignBottom); 558 hl->addWidget(ql, 0, 0, Qt::AlignBottom);
556#ifdef USECOMBO 559#ifdef USECOMBO
557 escapeAction = new QComboBox( this ); 560 escapeAction = new QComboBox( this );
558#else 561#else
559 escapeAction = new MenuButton( this ); 562 escapeAction = new MenuButton( this );
560#endif 563#endif
561 populate(escapeAction); 564 populate(escapeAction);
562 hl->addWidget(escapeAction, 1, 0, Qt::AlignTop | Qt::AlignLeft); 565 hl->addWidget(escapeAction, 1, 0, Qt::AlignTop | Qt::AlignLeft);
563 566
564 ql = new QLabel(tr("Space Button"), this); 567 ql = new QLabel(tr("Space Button"), this);
565 hl->addWidget(ql, 2, 0, Qt::AlignBottom); 568 hl->addWidget(ql, 2, 0, Qt::AlignBottom);
566#ifdef USECOMBO 569#ifdef USECOMBO
567 spaceAction = new QComboBox( this ); 570 spaceAction = new QComboBox( this );
568#else 571#else
569 spaceAction = new MenuButton( this ); 572 spaceAction = new MenuButton( this );
570#endif 573#endif
571 populate(spaceAction); 574 populate(spaceAction);
572 hl->addWidget(spaceAction, 3, 0, Qt::AlignTop | Qt::AlignLeft); 575 hl->addWidget(spaceAction, 3, 0, Qt::AlignTop | Qt::AlignLeft);
573 576
574 ql = new QLabel(tr("Return Button"), this); 577 ql = new QLabel(tr("Return Button"), this);
575 hl->addWidget(ql, 2, 1, Qt::AlignBottom); 578 hl->addWidget(ql, 2, 1, Qt::AlignBottom);
576#ifdef USECOMBO 579#ifdef USECOMBO
577 returnAction = new QComboBox( this ); 580 returnAction = new QComboBox( this );
578#else 581#else
579 returnAction = new MenuButton( this ); 582 returnAction = new MenuButton( this );
580#endif 583#endif
581 populate(returnAction); 584 populate(returnAction);
582 hl->addWidget(returnAction, 3, 1, Qt::AlignTop | Qt::AlignLeft); 585 hl->addWidget(returnAction, 3, 1, Qt::AlignTop | Qt::AlignLeft);
583 586
584 ql = new QLabel(tr("Left Arrow"), this); 587 ql = new QLabel(tr("Left Arrow"), this);
585 hl->addWidget(ql, 4, 0, Qt::AlignBottom); 588 hl->addWidget(ql, 4, 0, Qt::AlignBottom);
586#ifdef USECOMBO 589#ifdef USECOMBO
587 leftAction = new QComboBox( this ); 590 leftAction = new QComboBox( this );
588#else 591#else
589 leftAction = new MenuButton( this ); 592 leftAction = new MenuButton( this );
590#endif 593#endif
591 populate(leftAction); 594 populate(leftAction);
592 hl->addWidget(leftAction, 5, 0, Qt::AlignTop | Qt::AlignLeft); 595 hl->addWidget(leftAction, 5, 0, Qt::AlignTop | Qt::AlignLeft);
593 leftScroll = new QCheckBox( tr("Scroll Speed"), this ); 596 leftScroll = new QCheckBox( tr("Scroll Speed"), this );
594 hl->addWidget(leftScroll, 6, 0, Qt::AlignTop | Qt::AlignLeft); 597 hl->addWidget(leftScroll, 6, 0, Qt::AlignTop | Qt::AlignLeft);
595 598
596 ql = new QLabel(tr("Right Arrow"), this); 599 ql = new QLabel(tr("Right Arrow"), this);
597 hl->addWidget(ql, 4, 1, Qt::AlignBottom); 600 hl->addWidget(ql, 4, 1, Qt::AlignBottom);
598#ifdef USECOMBO 601#ifdef USECOMBO
599 rightAction = new QComboBox( this ); 602 rightAction = new QComboBox( this );
600#else 603#else
601 rightAction = new MenuButton( this ); 604 rightAction = new MenuButton( this );
602#endif 605#endif
603 populate(rightAction); 606 populate(rightAction);
604 hl->addWidget(rightAction, 5, 1, Qt::AlignTop | Qt::AlignLeft); 607 hl->addWidget(rightAction, 5, 1, Qt::AlignTop | Qt::AlignLeft);
605 rightScroll = new QCheckBox( tr("Scroll Speed"), this ); 608 rightScroll = new QCheckBox( tr("Scroll Speed"), this );
606 hl->addWidget(rightScroll, 6, 1, Qt::AlignTop | Qt::AlignLeft); 609 hl->addWidget(rightScroll, 6, 1, Qt::AlignTop | Qt::AlignLeft);
607 610
608 ql = new QLabel(tr("Down Arrow"), this); 611 ql = new QLabel(tr("Down Arrow"), this);
609 hl->addWidget(ql, 7, 0, Qt::AlignBottom); 612 hl->addWidget(ql, 7, 0, Qt::AlignBottom);
610#ifdef USECOMBO 613#ifdef USECOMBO
611 downAction = new QComboBox( this ); 614 downAction = new QComboBox( this );
612#else 615#else
613 downAction = new MenuButton( this ); 616 downAction = new MenuButton( this );
614#endif 617#endif
615 populate(downAction); 618 populate(downAction);
616 hl->addWidget(downAction, 8, 0, Qt::AlignTop | Qt::AlignLeft); 619 hl->addWidget(downAction, 8, 0, Qt::AlignTop | Qt::AlignLeft);
617 downScroll = new QCheckBox( tr("Scroll Speed"), this ); 620 downScroll = new QCheckBox( tr("Scroll Speed"), this );
618 hl->addWidget(downScroll, 9, 0, Qt::AlignTop | Qt::AlignLeft); 621 hl->addWidget(downScroll, 9, 0, Qt::AlignTop | Qt::AlignLeft);
619 622
620 ql = new QLabel(tr("Up Arrow"), this); 623 ql = new QLabel(tr("Up Arrow"), this);
621 hl->addWidget(ql, 7, 1, Qt::AlignBottom); 624 hl->addWidget(ql, 7, 1, Qt::AlignBottom);
622#ifdef USECOMBO 625#ifdef USECOMBO
623 upAction = new QComboBox( this ); 626 upAction = new QComboBox( this );
624#else 627#else
625 upAction = new MenuButton( this ); 628 upAction = new MenuButton( this );
626#endif 629#endif
627 populate(upAction); 630 populate(upAction);
628 hl->addWidget(upAction, 8, 1, Qt::AlignTop | Qt::AlignLeft); 631 hl->addWidget(upAction, 8, 1, Qt::AlignTop | Qt::AlignLeft);
629 upScroll = new QCheckBox( tr("Scroll Speed"), this ); 632 upScroll = new QCheckBox( tr("Scroll Speed"), this );
630 hl->addWidget(upScroll, 9, 1, Qt::AlignTop | Qt::AlignLeft); 633 hl->addWidget(upScroll, 9, 1, Qt::AlignTop | Qt::AlignLeft);
631} 634}
632 635
633CButtonPrefs::~CButtonPrefs() 636CButtonPrefs::~CButtonPrefs()
634{ 637{
635 // no need to delete child widgets, Qt does it all for us 638 // no need to delete child widgets, Qt does it all for us
636} 639}
diff --git a/noncore/apps/opie-reader/QTReaderApp.cpp b/noncore/apps/opie-reader/QTReaderApp.cpp
index f10020a..07af597 100644
--- a/noncore/apps/opie-reader/QTReaderApp.cpp
+++ b/noncore/apps/opie-reader/QTReaderApp.cpp
@@ -1,4222 +1,4222 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. Allrights reserved. 2** Copyright (C) 2000 Trolltech AS. Allrights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "useqpe.h" 20#include "useqpe.h"
21#include <qregexp.h> 21#include <qregexp.h>
22#include <qclipboard.h> 22#include <qclipboard.h>
23#include <qwidgetstack.h> 23#include <qwidgetstack.h>
24#ifdef USEQPE 24#ifdef USEQPE
25#include <qmenubar.h> 25#include <qmenubar.h>
26#include <qpe/qpetoolbar.h> 26#include <qpe/qpetoolbar.h>
27#endif 27#endif
28#include <qmenubar.h> 28#include <qmenubar.h>
29#include <qtoolbar.h> 29#include <qtoolbar.h>
30#ifdef USEQPE 30#ifdef USEQPE
31#include <qpe/menubutton.h> 31#include <qpe/menubutton.h>
32#include <qpe/fontdatabase.h> 32#include <qpe/fontdatabase.h>
33#endif 33#endif
34#include <qcombobox.h> 34#include <qcombobox.h>
35#include <qpopupmenu.h> 35#include <qpopupmenu.h>
36#include <qaction.h> 36#include <qaction.h>
37#include <qapplication.h> 37#include <qapplication.h>
38#include <qlineedit.h> 38#include <qlineedit.h>
39#include <qtoolbutton.h> 39#include <qtoolbutton.h>
40#include <qspinbox.h> 40#include <qspinbox.h>
41#include <qobjectlist.h> 41#include <qobjectlist.h>
42#ifdef USEQPE 42#ifdef USEQPE
43#include <qpe/global.h> 43#include <qpe/global.h>
44#include <qpe/applnk.h> 44#include <qpe/applnk.h>
45#endif 45#endif
46#include <qfileinfo.h> 46#include <qfileinfo.h>
47#include <stdlib.h> //getenv 47#include <stdlib.h> //getenv
48#include <qprogressbar.h> 48#include <qprogressbar.h>
49#ifdef USEQPE 49#ifdef USEQPE
50#include <qpe/config.h> 50#include <qpe/config.h>
51#endif 51#endif
52#include <qbuttongroup.h> 52#include <qbuttongroup.h>
53#include <qradiobutton.h> 53#include <qradiobutton.h>
54#ifdef USEQPE 54#ifdef USEQPE
55#include <qpe/qcopenvelope_qws.h> 55#include <qpe/qcopenvelope_qws.h>
56#endif 56#endif
57#include "QTReader.h" 57#include "QTReader.h"
58#include "GraphicWin.h" 58#include "GraphicWin.h"
59#include "Bkmks.h" 59#include "Bkmks.h"
60#include "cbkmkselector.h" 60#include "cbkmkselector.h"
61#include "infowin.h" 61#include "infowin.h"
62#include "ToolbarPrefs.h" 62#include "ToolbarPrefs.h"
63#include "Prefs.h" 63#include "Prefs.h"
64#include "CAnnoEdit.h" 64#include "CAnnoEdit.h"
65#include "QFloatBar.h" 65#include "QFloatBar.h"
66#include "FixedFont.h" 66#include "FixedFont.h"
67#include "URLDialog.h" 67#include "URLDialog.h"
68//#include <qpe/fontdatabase.h> 68//#include <qpe/fontdatabase.h>
69 69
70#ifdef USEQPE 70#ifdef USEQPE
71#include <qpe/resource.h> 71#include <qpe/resource.h>
72#include <qpe/qpeapplication.h> 72#include <qpe/qpeapplication.h>
73#include "fileBrowser.h" 73#include "fileBrowser.h"
74#else 74#else
75#include "qfiledialog.h" 75#include "qfiledialog.h"
76#endif 76#endif
77 77
78#include "QTReaderApp.h" 78#include "QTReaderApp.h"
79#include "CDrawBuffer.h" 79#include "CDrawBuffer.h"
80#include "Filedata.h" 80#include "Filedata.h"
81#include "opie.h" 81#include "opie.h"
82#include "useqpe.h" 82#include "useqpe.h"
83#include "names.h" 83#include "names.h"
84#include "CEncoding_tables.h" 84#include "CEncoding_tables.h"
85#include "CloseDialog.h" 85#include "CloseDialog.h"
86 86
87bool CheckVersion(int&, int&, char&); 87bool CheckVersion(int&, int&, char&);
88 88
89#ifdef _WINDOWS 89#ifdef _WINDOWS
90#define PICDIR "c:\\uqtreader\\pics\\" 90#define PICDIR "c:\\uqtreader\\pics\\"
91#else 91#else
92#ifdef USEQPE 92#ifdef USEQPE
93#define PICDIR "opie-reader/" 93#define PICDIR "opie-reader/"
94#else 94#else
95#define PICDIR "/home/tim/uqtreader/pics/" 95#define PICDIR "/home/tim/uqtreader/pics/"
96#endif 96#endif
97#endif 97#endif
98 98
99unsigned long QTReaderApp::m_uid = 0; 99unsigned long QTReaderApp::m_uid = 0;
100 100
101void QTReaderApp::setScrollState(bool _b) { m_scrollButton->setOn(_b); } 101void QTReaderApp::setScrollState(bool _b) { m_scrollButton->setOn(_b); }
102 102
103#ifdef USEQPE 103#ifdef USEQPE
104#define geticon(iconname) Resource::loadPixmap( iconname ) 104#define geticon(iconname) Resource::loadPixmap( iconname )
105#define getmyicon(iconname) Resource::loadPixmap( PICDIR iconname ) 105#define getmyicon(iconname) Resource::loadPixmap( PICDIR iconname )
106#else 106#else
107#define geticon(iconname) QPixmap(PICDIR iconname ".png") 107#define geticon(iconname) QPixmap(PICDIR iconname ".png")
108#define getmyicon(iconname) geticon(iconname) 108#define getmyicon(iconname) geticon(iconname)
109//#define geticon(iconname) QIconSet( QPixmap(PICDIR iconname) ) 109//#define geticon(iconname) QIconSet( QPixmap(PICDIR iconname) )
110#endif 110#endif
111 111
112#ifndef _WINDOWS 112#ifndef _WINDOWS
113#include <unistd.h> 113#include <unistd.h>
114#endif 114#endif
115#include <stddef.h> 115#include <stddef.h>
116#ifndef _WINDOWS 116#ifndef _WINDOWS
117#include <dirent.h> 117#include <dirent.h>
118#endif 118#endif
119 119
120void QTReaderApp::listBkmkFiles() 120void QTReaderApp::listBkmkFiles()
121{ 121{
122 bkmkselector->clear(); 122 bkmkselector->clear();
123 bkmkselector->setText("Cancel"); 123 bkmkselector->setText("Cancel");
124#ifndef USEQPE 124#ifndef USEQPE
125 int cnt = 0; 125 int cnt = 0;
126 126
127 QDir d = QDir::home(); // "/" 127 QDir d = QDir::home(); // "/"
128 if ( !d.cd(APPDIR) ) { // "/tmp" 128 if ( !d.cd(APPDIR) ) { // "/tmp"
129 qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); 129 qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
130 d = QDir::home(); 130 d = QDir::home();
131 d.mkdir(APPDIR); 131 d.mkdir(APPDIR);
132 d.cd(APPDIR); 132 d.cd(APPDIR);
133 } 133 }
134 134
135 135
136 136
137 137
138 d.setFilter( QDir::Files | QDir::NoSymLinks ); 138 d.setFilter( QDir::Files | QDir::NoSymLinks );
139// d.setSorting( QDir::Size | QDir::Reversed ); 139// d.setSorting( QDir::Size | QDir::Reversed );
140 140
141 const QFileInfoList *list = d.entryInfoList(); 141 const QFileInfoList *list = d.entryInfoList();
142 QFileInfoListIterator it( *list ); // create list iterator 142 QFileInfoListIterator it( *list ); // create list iterator
143 QFileInfo *fi; // pointer for traversing 143 QFileInfo *fi; // pointer for traversing
144 144
145 while ( (fi=it.current()) ) { // for each file... 145 while ( (fi=it.current()) ) { // for each file...
146 146
147 bkmkselector->insertItem(fi->fileName()); 147 bkmkselector->insertItem(fi->fileName());
148 cnt++; 148 cnt++;
149 149
150 //qDebug( "%10li %s", fi->size(), fi->fileName().data() ); 150 //qDebug( "%10li %s", fi->size(), fi->fileName().data() );
151 ++it; // goto next list element 151 ++it; // goto next list element
152 } 152 }
153 153
154#else /* USEQPE */ 154#else /* USEQPE */
155 int cnt = 0; 155 int cnt = 0;
156 DIR *d; 156 DIR *d;
157 d = opendir((const char *)Global::applicationFileName(APPDIR,"")); 157 d = opendir((const char *)Global::applicationFileName(APPDIR,""));
158 158
159 while(1) 159 while(1)
160 { 160 {
161 struct dirent* de; 161 struct dirent* de;
162 struct stat buf; 162 struct stat buf;
163 de = readdir(d); 163 de = readdir(d);
164 if (de == NULL) break; 164 if (de == NULL) break;
165 165
166 if (lstat((const char *)Global::applicationFileName(APPDIR,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode)) 166 if (lstat((const char *)Global::applicationFileName(APPDIR,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode))
167 { 167 {
168 bkmkselector->insertItem(de->d_name); 168 bkmkselector->insertItem(de->d_name);
169 cnt++; 169 cnt++;
170 } 170 }
171 } 171 }
172 172
173 closedir(d); 173 closedir(d);
174#endif 174#endif
175 if (cnt > 0) 175 if (cnt > 0)
176 { 176 {
177//tjw menu->hide(); 177//tjw menu->hide();
178 editorStack->raiseWidget( bkmkselector ); 178 editorStack->raiseWidget( bkmkselector );
179 hidetoolbars(); 179 hidetoolbars();
180 m_nBkmkAction = cRmBkmkFile; 180 m_nBkmkAction = cRmBkmkFile;
181 } 181 }
182 else 182 else
183 QMessageBox::information(this, PROGNAME, "No bookmark files"); 183 QMessageBox::information(this, PROGNAME, "No bookmark files");
184} 184}
185 185
186void QTReaderApp::hidetoolbars() 186void QTReaderApp::hidetoolbars()
187{ 187{
188 menubar->hide(); 188 menubar->hide();
189 if (fileBar != NULL) fileBar->hide(); 189 if (fileBar != NULL) fileBar->hide();
190 if (viewBar != NULL) viewBar->hide(); 190 if (viewBar != NULL) viewBar->hide();
191 if (navBar != NULL) navBar->hide(); 191 if (navBar != NULL) navBar->hide();
192 if (markBar != NULL) markBar->hide(); 192 if (markBar != NULL) markBar->hide();
193 if (m_fontVisible) m_fontBar->hide(); 193 if (m_fontVisible) m_fontBar->hide();
194 if (regVisible) 194 if (regVisible)
195 { 195 {
196#ifdef USEQPE 196#ifdef USEQPE
197 Global::hideInputMethod(); 197 Global::hideInputMethod();
198#endif 198#endif
199 regBar->hide(); 199 regBar->hide();
200 } 200 }
201 if (searchVisible) 201 if (searchVisible)
202 { 202 {
203#ifdef USEQPE 203#ifdef USEQPE
204 Global::hideInputMethod(); 204 Global::hideInputMethod();
205#endif 205#endif
206 searchBar->hide(); 206 searchBar->hide();
207 } 207 }
208} 208}
209 209
210QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) 210QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
211 : QMainWindow( parent, name, f ), bFromDocView( FALSE ), m_dontSave(false), 211 : QMainWindow( parent, name, f ), bFromDocView( FALSE ), m_dontSave(false),
212 fileBar(NULL), navBar(NULL), viewBar(NULL), markBar(NULL) 212 fileBar(NULL), navBar(NULL), viewBar(NULL), markBar(NULL)
213{ 213{
214 m_url_clipboard = false; 214 m_url_clipboard = false;
215 m_url_localfile = false; 215 m_url_localfile = false;
216 m_url_globalfile = false; 216 m_url_globalfile = false;
217 ftime(&m_lastkeytime); 217 ftime(&m_lastkeytime);
218//// qDebug("Application directory = %s", (const tchar *)QPEApplication::documentDir()); 218//// qDebug("Application directory = %s", (const tchar *)QPEApplication::documentDir());
219//// qDebug("Application directory = %s", (const tchar *)Global::applicationFileName("uqtreader","bkmks.xml")); 219//// qDebug("Application directory = %s", (const tchar *)Global::applicationFileName("uqtreader","bkmks.xml"));
220 220
221 m_bcloseDisabled = true; 221 m_bcloseDisabled = true;
222 m_disableesckey = false; 222 m_disableesckey = false;
223 pBkmklist = NULL; 223 pBkmklist = NULL;
224 pOpenlist = NULL; 224 pOpenlist = NULL;
225// doc = 0; 225// doc = 0;
226 226
227 m_fBkmksChanged = false; 227 m_fBkmksChanged = false;
228 228
229 QString lang = getenv( "LANG" ); 229 QString lang = getenv( "LANG" );
230 QString rot = getenv( "QWS_DISPLAY" ); 230 QString rot = getenv( "QWS_DISPLAY" );
231 231
232/* 232/*
233 int m_rot = 0; 233 int m_rot = 0;
234 if (rot.contains("Rot90")) 234 if (rot.contains("Rot90"))
235 { 235 {
236 m_rot = 90; 236 m_rot = 90;
237 } 237 }
238 else if (rot.contains("Rot180")) 238 else if (rot.contains("Rot180"))
239 { 239 {
240 m_rot = 180; 240 m_rot = 180;
241 } 241 }
242 else if (rot.contains("Rot270")) 242 else if (rot.contains("Rot270"))
243 { 243 {
244 m_rot = 270; 244 m_rot = 270;
245 } 245 }
246 246
247// qDebug("Initial Rotation(%d):%s", m_rot, (const char*)rot); 247// qDebug("Initial Rotation(%d):%s", m_rot, (const char*)rot);
248*/ 248*/
249 m_autogenstr = "^ *[A-Z].*[a-z] *$"; 249 m_autogenstr = "^ *[A-Z].*[a-z] *$";
250 250
251#ifdef USEQPE 251#ifdef USEQPE
252 setIcon( Resource::loadPixmap( PICDIR "uqtreader") ); 252 setIcon( Resource::loadPixmap( PICDIR "uqtreader") );
253#else 253#else
254 setIcon( QPixmap (PICDIR "uqtreader.png") ); 254 setIcon( QPixmap (PICDIR "uqtreader.png") );
255#endif /* USEQPE */ 255#endif /* USEQPE */
256 256
257// QToolBar *bar = new QToolBar( this ); 257// QToolBar *bar = new QToolBar( this );
258// menubar = new QToolBar( this ); 258// menubar = new QToolBar( this );
259#ifdef USEQPE 259#ifdef USEQPE
260 Config config( APPDIR ); 260 Config config( APPDIR );
261#else 261#else
262 QDir d = QDir::home(); // "/" 262 QDir d = QDir::home(); // "/"
263 if ( !d.cd(APPDIR) ) { // "/tmp" 263 if ( !d.cd(APPDIR) ) { // "/tmp"
264 qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); 264 qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
265 d = QDir::home(); 265 d = QDir::home();
266 d.mkdir(APPDIR); 266 d.mkdir(APPDIR);
267 d.cd(APPDIR); 267 d.cd(APPDIR);
268 } 268 }
269 QFileInfo fi(d, INIFILE); 269 QFileInfo fi(d, INIFILE);
270// qDebug("Path:%s", (const char*)fi.absFilePath()); 270// qDebug("Path:%s", (const char*)fi.absFilePath());
271 Config config(fi.absFilePath()); 271 Config config(fi.absFilePath());
272#endif 272#endif
273 config.setGroup("Toolbar"); 273 config.setGroup("Toolbar");
274 m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false); 274 m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false);
275 m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1); 275 m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1);
276 m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2); 276 m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2);
277 menubar = new QToolBar("Menus", this, m_tbposition); 277 menubar = new QToolBar("Menus", this, m_tbposition);
278 278
279// fileBar = new QToolBar("File", this); 279// fileBar = new QToolBar("File", this);
280// QToolBar* viewBar = new QToolBar("File", this); 280// QToolBar* viewBar = new QToolBar("File", this);
281// QToolBar* navBar = new QToolBar("File", this); 281// QToolBar* navBar = new QToolBar("File", this);
282// QToolBar* markBar = new QToolBar("File", this); 282// QToolBar* markBar = new QToolBar("File", this);
283 283
284#ifdef USEQPE 284#ifdef USEQPE
285 mb = new QMenuBar( menubar ); 285 mb = new QMenuBar( menubar );
286#else 286#else
287 mb = new QMenuBar( menubar ); 287 mb = new QMenuBar( menubar );
288#endif 288#endif
289 289
290//#ifdef USEQPE 290//#ifdef USEQPE
291 QPopupMenu* tmp = new QPopupMenu(mb); 291 QPopupMenu* tmp = new QPopupMenu(mb);
292 mb->insertItem( geticon( "AppsIcon" ), tmp ); 292 mb->insertItem( geticon( "AppsIcon" ), tmp );
293//#else 293//#else
294// QMenuBar* tmp = mb; 294// QMenuBar* tmp = mb;
295//#endif 295//#endif
296 296
297 QPopupMenu *file = new QPopupMenu( mb ); 297 QPopupMenu *file = new QPopupMenu( mb );
298 tmp->insertItem( tr( "File" ), file ); 298 tmp->insertItem( tr( "File" ), file );
299 299
300 QPopupMenu *navigation = new QPopupMenu(mb); 300 QPopupMenu *navigation = new QPopupMenu(mb);
301 tmp->insertItem( tr( "Navigation" ), navigation ); 301 tmp->insertItem( tr( "Navigation" ), navigation );
302 302
303 QPopupMenu *view = new QPopupMenu( mb ); 303 QPopupMenu *view = new QPopupMenu( mb );
304 tmp->insertItem( tr( "View" ), view ); 304 tmp->insertItem( tr( "View" ), view );
305 305
306 QPopupMenu *marks = new QPopupMenu( this ); 306 QPopupMenu *marks = new QPopupMenu( this );
307 tmp->insertItem( tr( "Marks" ), marks ); 307 tmp->insertItem( tr( "Marks" ), marks );
308 308
309 QPopupMenu *settings = new QPopupMenu( this ); 309 QPopupMenu *settings = new QPopupMenu( this );
310 tmp->insertItem( tr( "Settings" ), settings ); 310 tmp->insertItem( tr( "Settings" ), settings );
311 311
312// addToolBar(menubar, "Menus",QMainWindow::Top); 312// addToolBar(menubar, "Menus",QMainWindow::Top);
313// addToolBar(fileBar, "Toolbar",QMainWindow::Top); 313// addToolBar(fileBar, "Toolbar",QMainWindow::Top);
314 314
315 // QPopupMenu *edit = new QPopupMenu( this ); 315 // QPopupMenu *edit = new QPopupMenu( this );
316 316
317 /* 317 /*
318 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); 318 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 );
319 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); 319 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
320 a->addTo( bar ); 320 a->addTo( bar );
321 a->addTo( file ); 321 a->addTo( file );
322 */ 322 */
323 323
324 editorStack = new QWidgetStack( this ); 324 editorStack = new QWidgetStack( this );
325 setCentralWidget( editorStack ); 325 setCentralWidget( editorStack );
326 326
327 searchVisible = FALSE; 327 searchVisible = FALSE;
328 regVisible = FALSE; 328 regVisible = FALSE;
329 m_fontVisible = false; 329 m_fontVisible = false;
330 330
331 m_annoWin = new CAnnoEdit(editorStack); 331 m_annoWin = new CAnnoEdit(editorStack);
332 editorStack->addWidget(m_annoWin, get_unique_id()); 332 editorStack->addWidget(m_annoWin, get_unique_id());
333 connect( m_annoWin, SIGNAL( finished(const QString&, const QString&) ), this, SLOT( addAnno(const QString&, const QString&) ) ); 333 connect( m_annoWin, SIGNAL( finished(const QString&, const QString&) ), this, SLOT( addAnno(const QString&, const QString&) ) );
334 connect( m_annoWin, SIGNAL( cancelled() ), this, SLOT( infoClose() ) ); 334 connect( m_annoWin, SIGNAL( cancelled() ), this, SLOT( infoClose() ) );
335 335
336 m_infoWin = new infowin(editorStack); 336 m_infoWin = new infowin(editorStack);
337 editorStack->addWidget(m_infoWin, get_unique_id()); 337 editorStack->addWidget(m_infoWin, get_unique_id());
338 connect( m_infoWin, SIGNAL( Close() ), this, SLOT( infoClose() ) ); 338 connect( m_infoWin, SIGNAL( Close() ), this, SLOT( infoClose() ) );
339 339
340 m_graphicwin = new GraphicWin(editorStack); 340 m_graphicwin = new GraphicWin(editorStack);
341 editorStack->addWidget(m_graphicwin, get_unique_id()); 341 editorStack->addWidget(m_graphicwin, get_unique_id());
342 connect( m_graphicwin, SIGNAL( Closed() ), this, SLOT( infoClose() ) ); 342 connect( m_graphicwin, SIGNAL( Closed() ), this, SLOT( infoClose() ) );
343 343
344// bkmkselector = new QListBox(editorStack, "Bookmarks"); 344// bkmkselector = new QListBox(editorStack, "Bookmarks");
345 bkmkselector = new CBkmkSelector(editorStack, "Bookmarks"); 345 bkmkselector = new CBkmkSelector(editorStack, "Bookmarks");
346 // connect(bkmkselector, SIGNAL( selected(const QString&) ), this, SLOT( gotobkmk(const QString&) ) ); 346 // connect(bkmkselector, SIGNAL( selected(const QString&) ), this, SLOT( gotobkmk(const QString&) ) );
347 connect(bkmkselector, SIGNAL( selected(int) ), this, SLOT( gotobkmk(int) ) ); 347 connect(bkmkselector, SIGNAL( selected(int) ), this, SLOT( gotobkmk(int) ) );
348 connect(bkmkselector, SIGNAL( cancelled() ), this, SLOT( cancelbkmk() ) ); 348 connect(bkmkselector, SIGNAL( cancelled() ), this, SLOT( cancelbkmk() ) );
349 editorStack->addWidget( bkmkselector, get_unique_id() ); 349 editorStack->addWidget( bkmkselector, get_unique_id() );
350 350
351/* 351/*
352 importSelector = new FileSelector( "*", editorStack, "importselector", false ); 352 importSelector = new FileSelector( "*", editorStack, "importselector", false );
353 connect( importSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( importFile( const DocLnk & ) ) ); 353 connect( importSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( importFile( const DocLnk & ) ) );
354 354
355 editorStack->addWidget( importSelector, get_unique_id() ); 355 editorStack->addWidget( importSelector, get_unique_id() );
356 356
357 // don't need the close visible, it is redundant... 357 // don't need the close visible, it is redundant...
358 importSelector->setCloseVisible( FALSE ); 358 importSelector->setCloseVisible( FALSE );
359*/ 359*/
360// qDebug("Reading file list"); 360// qDebug("Reading file list");
361 readfilelist(); 361 readfilelist();
362 362
363 reader = new QTReader( editorStack ); 363 reader = new QTReader( editorStack );
364 364
365 reader->bDoUpdates = false; 365 reader->bDoUpdates = false;
366 366
367#ifdef USEQPE 367#ifdef USEQPE
368 ((QPEApplication*)qApp)->setStylusOperation(reader, QPEApplication::RightOnHold); 368 ((QPEApplication*)qApp)->setStylusOperation(reader, QPEApplication::RightOnHold);
369#endif 369#endif
370 370
371// qDebug("Reading config"); 371// qDebug("Reading config");
372// Config config( APPDIR ); 372// Config config( APPDIR );
373 config.setGroup( "View" ); 373 config.setGroup( "View" );
374 m_debounce = config.readNumEntry("Debounce", 0); 374 m_debounce = config.readNumEntry("Debounce", 0);
375#ifdef USEQPE 375#ifdef USEQPE
376 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); 376 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false);
377#else 377#else
378 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", true); 378 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", true);
379#endif 379#endif
380 reader->bstripcr = config.readBoolEntry( "StripCr", true ); 380 reader->bstripcr = config.readBoolEntry( "StripCr", true );
381 reader->bfulljust = config.readBoolEntry( "FullJust", false ); 381 reader->bfulljust = config.readBoolEntry( "FullJust", false );
382 reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); 382 reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 ));
383 reader->setlead(config.readNumEntry( "ExtraLead", 0 )); 383 reader->setlead(config.readNumEntry( "ExtraLead", 0 ));
384 reader->btextfmt = config.readBoolEntry( "TextFmt", false ); 384 reader->btextfmt = config.readBoolEntry( "TextFmt", false );
385 reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); 385 reader->bautofmt = config.readBoolEntry( "AutoFmt", true );
386 reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); 386 reader->bstriphtml = config.readBoolEntry( "StripHtml", false );
387 reader->bpeanut = config.readBoolEntry( "Peanut", false ); 387 reader->bpeanut = config.readBoolEntry( "Peanut", false );
388 reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); 388 reader->bdehyphen = config.readBoolEntry( "Dehyphen", false );
389 reader->bdepluck = config.readBoolEntry( "Depluck", false ); 389 reader->bdepluck = config.readBoolEntry( "Depluck", false );
390 reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); 390 reader->bdejpluck = config.readBoolEntry( "Dejpluck", false );
391 reader->bonespace = config.readBoolEntry( "OneSpace", false ); 391 reader->bonespace = config.readBoolEntry( "OneSpace", false );
392 reader->bunindent = config.readBoolEntry( "Unindent", false ); 392 reader->bunindent = config.readBoolEntry( "Unindent", false );
393 reader->brepara = config.readBoolEntry( "Repara", false ); 393 reader->brepara = config.readBoolEntry( "Repara", false );
394 reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); 394 reader->bdblspce = config.readBoolEntry( "DoubleSpace", false );
395 reader->bindenter = config.readNumEntry( "Indent", 0 ); 395 reader->bindenter = config.readNumEntry( "Indent", 0 );
396 reader->m_textsize = config.readNumEntry( "FontSize", 12 ); 396 reader->m_textsize = config.readNumEntry( "FontSize", 12 );
397 reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); 397 reader->m_delay = config.readNumEntry( "ScrollDelay", 5184);
398 reader->m_lastfile = config.readEntry( "LastFile", QString::null ); 398 reader->m_lastfile = config.readEntry( "LastFile", QString::null );
399 reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); 399 reader->m_lastposn = config.readNumEntry( "LastPosn", 0 );
400 reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); 400 reader->m_bpagemode = config.readBoolEntry( "PageMode", true );
401 reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); 401 reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false);
402 reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false); 402 reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false);
403 reader->m_fontname = config.readEntry( "Fontname", "helvetica" ); 403 reader->m_fontname = config.readEntry( "Fontname", "helvetica" );
404 reader->m_encd = config.readNumEntry( "Encoding", 0 ); 404 reader->m_encd = config.readNumEntry( "Encoding", 0 );
405 reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); 405 reader->m_charpc = config.readNumEntry( "CharSpacing", 100 );
406 reader->m_overlap = config.readNumEntry( "Overlap", 0 ); 406 reader->m_overlap = config.readNumEntry( "Overlap", 0 );
407 reader->m_border = config.readNumEntry( "Margin", 6 ); 407 reader->m_border = config.readNumEntry( "Margin", 6 );
408#ifdef REPALM 408#ifdef REPALM
409 reader->brepalm = config.readBoolEntry( "Repalm", true ); 409 reader->brepalm = config.readBoolEntry( "Repalm", true );
410#endif 410#endif
411 reader->bremap = config.readBoolEntry( "Remap", true ); 411 reader->bremap = config.readBoolEntry( "Remap", true );
412 reader->bmakebold = config.readBoolEntry( "MakeBold", false ); 412 reader->bmakebold = config.readBoolEntry( "MakeBold", false );
413 reader->setContinuous(config.readBoolEntry( "Continuous", true )); 413 reader->setContinuous(config.readBoolEntry( "Continuous", true ));
414 m_targetapp = config.readEntry( "TargetApp", QString::null ); 414 m_targetapp = config.readEntry( "TargetApp", QString::null );
415 m_targetmsg = config.readEntry( "TargetMsg", QString::null ); 415 m_targetmsg = config.readEntry( "TargetMsg", QString::null );
416#ifdef _SCROLLPIPE 416#ifdef _SCROLLPIPE
417 reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); 417 reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null );
418 reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); 418 reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true );
419#endif 419#endif
420 m_twoTouch = config.readBoolEntry( "TwoTouch", false); 420 m_twoTouch = config.readBoolEntry( "TwoTouch", false);
421 m_doAnnotation = config.readBoolEntry( "Annotation", false); 421 m_doAnnotation = config.readBoolEntry( "Annotation", false);
422 m_doDictionary = config.readBoolEntry( "Dictionary", false); 422 m_doDictionary = config.readBoolEntry( "Dictionary", false);
423 m_doClipboard = config.readBoolEntry( "Clipboard", false); 423 m_doClipboard = config.readBoolEntry( "Clipboard", false);
424 m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); 424 m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll);
425 m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); 425 m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone);
426 m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); 426 m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen);
427 m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); 427 m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut);
428 m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); 428 m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn);
429 m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); 429 m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp);
430 m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); 430 m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown);
431 431
432 m_leftScroll = config.readBoolEntry("LeftScroll", false); 432 m_leftScroll = config.readBoolEntry("LeftScroll", false);
433 m_rightScroll = config.readBoolEntry("RightScroll", false); 433 m_rightScroll = config.readBoolEntry("RightScroll", false);
434 m_upScroll = config.readBoolEntry("UpScroll", true); 434 m_upScroll = config.readBoolEntry("UpScroll", true);
435 m_downScroll = config.readBoolEntry("DownScroll", true); 435 m_downScroll = config.readBoolEntry("DownScroll", true);
436 436
437 m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false); 437 m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false);
438 reader->setBaseSize(config.readNumEntry( "Basesize", 10 )); 438 reader->setBaseSize(config.readNumEntry( "Basesize", 10 ));
439 439
440#ifndef USEQPE 440#ifndef USEQPE
441 config.setGroup( "Geometry" ); 441 config.setGroup( "Geometry" );
442 setGeometry(0,0, 442 setGeometry(0,0,
443 config.readNumEntry( "width", QApplication::desktop()->width()/2 ), 443 config.readNumEntry( "width", QApplication::desktop()->width()/2 ),
444 config.readNumEntry( "height", QApplication::desktop()->height()/2 )); 444 config.readNumEntry( "height", QApplication::desktop()->height()/2 ));
445 move( 445 move(
446 config.readNumEntry( "x", 20 ), 446 config.readNumEntry( "x", 20 ),
447 config.readNumEntry( "y", 20 )); 447 config.readNumEntry( "y", 20 ));
448#endif 448#endif
449 449
450 450
451 451
452 setTwoTouch(m_twoTouch); 452 setTwoTouch(m_twoTouch);
453 453
454 connect( reader, SIGNAL( OnShowPicture(QImage&) ), this, SLOT( showgraphic(QImage&) ) ); 454 connect( reader, SIGNAL( OnShowPicture(QImage&) ), this, SLOT( showgraphic(QImage&) ) );
455 455
456 connect( reader, SIGNAL( OnRedraw() ), this, SLOT( OnRedraw() ) ); 456 connect( reader, SIGNAL( OnRedraw() ), this, SLOT( OnRedraw() ) );
457 connect( reader, SIGNAL( OnWordSelected(const QString&, size_t, const QString&) ), this, SLOT( OnWordSelected(const QString&, size_t, const QString&) ) ); 457 connect( reader, SIGNAL( OnWordSelected(const QString&, size_t, const QString&) ), this, SLOT( OnWordSelected(const QString&, size_t, const QString&) ) );
458 connect( reader, SIGNAL( OnURLSelected(const QString&) ), this, SLOT( OnURLSelected(const QString&) ) ); 458 connect( reader, SIGNAL( OnURLSelected(const QString&) ), this, SLOT( OnURLSelected(const QString&) ) );
459 editorStack->addWidget( reader, get_unique_id() ); 459 editorStack->addWidget( reader, get_unique_id() );
460 460
461 m_preferences_action = new QAction( tr( "Configuration" ), geticon( "SettingsIcon" ), QString::null, 0, this, NULL); 461 m_preferences_action = new QAction( tr( "Configuration" ), geticon( "SettingsIcon" ), QString::null, 0, this, NULL);
462 connect( m_preferences_action, SIGNAL( activated() ), this, SLOT( showprefs() ) ); 462 connect( m_preferences_action, SIGNAL( activated() ), this, SLOT( showprefs() ) );
463 m_preferences_action->addTo( settings ); 463 m_preferences_action->addTo( settings );
464 464
465 m_saveconfig_action = new QAction( tr( "Save Config" ), QString::null, 0, this, NULL); 465 m_saveconfig_action = new QAction( tr( "Save Config" ), QString::null, 0, this, NULL);
466 connect( m_saveconfig_action, SIGNAL( activated() ), this, SLOT( SaveConfig() ) ); 466 connect( m_saveconfig_action, SIGNAL( activated() ), this, SLOT( SaveConfig() ) );
467 m_saveconfig_action->addTo( settings ); 467 m_saveconfig_action->addTo( settings );
468 468
469 m_loadconfig_action = new QAction( tr( "Load Config" ), QString::null, 0, this, NULL); 469 m_loadconfig_action = new QAction( tr( "Load Config" ), QString::null, 0, this, NULL);
470 connect( m_loadconfig_action, SIGNAL( activated() ), this, SLOT( LoadConfig() ) ); 470 connect( m_loadconfig_action, SIGNAL( activated() ), this, SLOT( LoadConfig() ) );
471 m_loadconfig_action->addTo( settings ); 471 m_loadconfig_action->addTo( settings );
472 472
473 m_tidyconfig_action = new QAction( tr( "Delete Config" ), QString::null, 0, this, NULL); 473 m_tidyconfig_action = new QAction( tr( "Delete Config" ), QString::null, 0, this, NULL);
474 connect( m_tidyconfig_action, SIGNAL( activated() ), this, SLOT( TidyConfig() ) ); 474 connect( m_tidyconfig_action, SIGNAL( activated() ), this, SLOT( TidyConfig() ) );
475 m_tidyconfig_action->addTo( settings ); 475 m_tidyconfig_action->addTo( settings );
476 476
477 settings->insertSeparator(); 477 settings->insertSeparator();
478 m_toolbarprefs_action = new QAction( tr( "Toolbars" ), QString::null, 0, this, NULL); 478 m_toolbarprefs_action = new QAction( tr( "Toolbars" ), QString::null, 0, this, NULL);
479 connect( m_toolbarprefs_action, SIGNAL( activated() ), this, SLOT( showtoolbarprefs() ) ); 479 connect( m_toolbarprefs_action, SIGNAL( activated() ), this, SLOT( showtoolbarprefs() ) );
480 m_toolbarprefs_action->addTo( settings ); 480 m_toolbarprefs_action->addTo( settings );
481 481
482 m_open_action = new QAction( tr( "Open" ), geticon( "fileopen" ), QString::null, 0, this, 0 ); 482 m_open_action = new QAction( tr( "Open" ), geticon( "fileopen" ), QString::null, 0, this, 0 );
483 connect( m_open_action, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); 483 connect( m_open_action, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
484 m_open_action->addTo( file ); 484 m_open_action->addTo( file );
485 485
486 m_close_action = new QAction( tr( "Close" ), geticon( "close" ), QString::null, 0, this, 0 ); 486 m_close_action = new QAction( tr( "Close" ), geticon( "close" ), QString::null, 0, this, 0 );
487 connect( m_close_action, SIGNAL( activated() ), this, SLOT( fileClose() ) ); 487 connect( m_close_action, SIGNAL( activated() ), this, SLOT( fileClose() ) );
488 m_close_action->addTo( file ); 488 m_close_action->addTo( file );
489 489
490#ifdef _SCRIPT 490#ifdef _SCRIPT
491 a = new QAction( tr( "Run Script" ), QString::null, 0, this, NULL); 491 a = new QAction( tr( "Run Script" ), QString::null, 0, this, NULL);
492 connect( a, SIGNAL( activated() ), this, SLOT( RunScript() ) ); 492 connect( a, SIGNAL( activated() ), this, SLOT( RunScript() ) );
493 a->addTo( file ); 493 a->addTo( file );
494#endif 494#endif
495 /* 495 /*
496 a = new QAction( tr( "Revert" ), geticon( "close" ), QString::null, 0, this, 0 ); 496 a = new QAction( tr( "Revert" ), geticon( "close" ), QString::null, 0, this, 0 );
497 connect( a, SIGNAL( activated() ), this, SLOT( fileRevert() ) ); 497 connect( a, SIGNAL( activated() ), this, SLOT( fileRevert() ) );
498 a->addTo( file ); 498 a->addTo( file );
499 499
500 a = new QAction( tr( "Cut" ), geticon( "cut" ), QString::null, 0, this, 0 ); 500 a = new QAction( tr( "Cut" ), geticon( "cut" ), QString::null, 0, this, 0 );
501 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); 501 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
502 a->addTo( filebar() ); 502 a->addTo( filebar() );
503 a->addTo( edit ); 503 a->addTo( edit );
504 */ 504 */
505 505
506 m_info_action = new QAction( tr( "Info" ), geticon( "UtilsIcon" ), QString::null, 0, this, NULL); 506 m_info_action = new QAction( tr( "Info" ), geticon( "UtilsIcon" ), QString::null, 0, this, NULL);
507 connect( m_info_action, SIGNAL( activated() ), this, SLOT( showinfo() ) ); 507 connect( m_info_action, SIGNAL( activated() ), this, SLOT( showinfo() ) );
508 m_info_action->addTo( file ); 508 m_info_action->addTo( file );
509 509
510 m_touch_action = new QAction( tr( "Two/One Touch" ), geticon( "1to1" ), QString::null, 0, this, NULL, true ); 510 m_touch_action = new QAction( tr( "Two/One Touch" ), geticon( "1to1" ), QString::null, 0, this, NULL, true );
511 connect( m_touch_action, SIGNAL( toggled(bool) ), this, SLOT( setTwoTouch(bool) ) ); 511 connect( m_touch_action, SIGNAL( toggled(bool) ), this, SLOT( setTwoTouch(bool) ) );
512 m_touch_action->setOn(m_twoTouch); 512 m_touch_action->setOn(m_twoTouch);
513 m_touch_action->addTo( file ); 513 m_touch_action->addTo( file );
514 514
515 m_find_action = new QAction( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, NULL); 515 m_find_action = new QAction( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, NULL);
516 connect( m_find_action, SIGNAL( activated() ), this, SLOT( editFind() ) ); 516 connect( m_find_action, SIGNAL( activated() ), this, SLOT( editFind() ) );
517 file->insertSeparator(); 517 file->insertSeparator();
518// a->addTo( bar ); 518// a->addTo( bar );
519 m_find_action->addTo( file ); 519 m_find_action->addTo( file );
520 520
521 m_exportlinks_action = new QAction( tr( "Export Links" ), QString::null, 0, this, NULL); 521 m_exportlinks_action = new QAction( tr( "Export Links" ), QString::null, 0, this, NULL);
522 connect( m_exportlinks_action, SIGNAL( activated() ), this, SLOT( ExportLinks() ) ); 522 connect( m_exportlinks_action, SIGNAL( activated() ), this, SLOT( ExportLinks() ) );
523 m_exportlinks_action->addTo( file ); 523 m_exportlinks_action->addTo( file );
524 524
525 m_scrollButton = new QAction( tr( "Scroll" ), getmyicon( "panel-arrow-down" ), QString::null, 0, this, 0, true ); 525 m_scrollButton = new QAction( tr( "Scroll" ), getmyicon( "panel-arrow-down" ), QString::null, 0, this, 0, true );
526 connect( m_scrollButton, SIGNAL( toggled(bool) ), this, SLOT( autoScroll(bool) ) ); 526 connect( m_scrollButton, SIGNAL( toggled(bool) ), this, SLOT( autoScroll(bool) ) );
527 m_scrollButton->addTo(navigation); 527 m_scrollButton->addTo(navigation);
528 m_scrollButton->setOn(false); 528 m_scrollButton->setOn(false);
529 529
530 m_start_action = new QAction( tr( "Goto Start" ), geticon( "start" ), QString::null, 0, this, NULL); 530 m_start_action = new QAction( tr( "Goto Start" ), geticon( "start" ), QString::null, 0, this, NULL);
531 connect( m_start_action, SIGNAL( activated() ), this, SLOT( gotoStart() ) ); 531 connect( m_start_action, SIGNAL( activated() ), this, SLOT( gotoStart() ) );
532 m_start_action->addTo(navigation); 532 m_start_action->addTo(navigation);
533 533
534 m_end_action = new QAction( tr( "Goto End" ), geticon( "finish" ), QString::null, 0, this, NULL); 534 m_end_action = new QAction( tr( "Goto End" ), geticon( "finish" ), QString::null, 0, this, NULL);
535 connect( m_end_action, SIGNAL( activated() ), this, SLOT( gotoEnd() ) ); 535 connect( m_end_action, SIGNAL( activated() ), this, SLOT( gotoEnd() ) );
536 m_end_action->addTo(navigation); 536 m_end_action->addTo(navigation);
537 537
538 m_jump_action = new QAction( tr( "Jump" ), geticon( "rotate" ), QString::null, 0, this, NULL); 538 m_jump_action = new QAction( tr( "Jump" ), geticon( "rotate" ), QString::null, 0, this, NULL);
539 connect( m_jump_action, SIGNAL( activated() ), this, SLOT( jump() ) ); 539 connect( m_jump_action, SIGNAL( activated() ), this, SLOT( jump() ) );
540 m_jump_action->addTo(navigation); 540 m_jump_action->addTo(navigation);
541 541
542 m_pageline_action = new QAction( tr( "Page/Line Scroll" ), geticon( "pass" ), QString::null, 0, this, NULL, true ); 542 m_pageline_action = new QAction( tr( "Page/Line Scroll" ), geticon( "pass" ), QString::null, 0, this, NULL, true );
543 connect( m_pageline_action, SIGNAL( toggled(bool) ), this, SLOT( pagemode(bool) ) ); 543 connect( m_pageline_action, SIGNAL( toggled(bool) ), this, SLOT( pagemode(bool) ) );
544 m_pageline_action->addTo(navigation); 544 m_pageline_action->addTo(navigation);
545 m_pageline_action->setOn(reader->m_bpagemode); 545 m_pageline_action->setOn(reader->m_bpagemode);
546 546
547 m_pageup_action = new QAction( tr( "Up" ), geticon( "up" ), QString::null, 0, this, 0 ); 547 m_pageup_action = new QAction( tr( "Up" ), geticon( "up" ), QString::null, 0, this, 0 );
548 connect( m_pageup_action, SIGNAL( activated() ), this, SLOT( pageup() ) ); 548 connect( m_pageup_action, SIGNAL( activated() ), this, SLOT( pageup() ) );
549 m_pageup_action->addTo( navigation ); 549 m_pageup_action->addTo( navigation );
550 550
551 m_pagedn_action = new QAction( tr( "Down" ), geticon( "down" ), QString::null, 0, this, 0 ); 551 m_pagedn_action = new QAction( tr( "Down" ), geticon( "down" ), QString::null, 0, this, 0 );
552 connect( m_pagedn_action, SIGNAL( activated() ), this, SLOT( pagedn() ) ); 552 connect( m_pagedn_action, SIGNAL( activated() ), this, SLOT( pagedn() ) );
553 m_pagedn_action->addTo( navigation ); 553 m_pagedn_action->addTo( navigation );
554 554
555 m_back_action = new QAction( tr( "Back" ), geticon( "back" ), QString::null, 0, this, 0 ); 555 m_back_action = new QAction( tr( "Back" ), geticon( "back" ), QString::null, 0, this, 0 );
556 connect( m_back_action, SIGNAL( activated() ), reader, SLOT( goBack() ) ); 556 connect( m_back_action, SIGNAL( activated() ), reader, SLOT( goBack() ) );
557 m_back_action->addTo( navigation ); 557 m_back_action->addTo( navigation );
558 558
559 m_home_action = new QAction( tr( "Home" ), geticon( "home" ), QString::null, 0, this, 0 ); 559 m_home_action = new QAction( tr( "Home" ), geticon( "home" ), QString::null, 0, this, 0 );
560 connect( m_home_action, SIGNAL( activated() ), reader, SLOT( goHome() ) ); 560 connect( m_home_action, SIGNAL( activated() ), reader, SLOT( goHome() ) );
561 m_home_action->addTo( navigation ); 561 m_home_action->addTo( navigation );
562 562
563 m_forward_action = new QAction( tr( "Forward" ), geticon( "forward" ), QString::null, 0, this, 0 ); 563 m_forward_action = new QAction( tr( "Forward" ), geticon( "forward" ), QString::null, 0, this, 0 );
564 connect( m_forward_action, SIGNAL( activated() ), reader, SLOT( goForward() ) ); 564 connect( m_forward_action, SIGNAL( activated() ), reader, SLOT( goForward() ) );
565 m_forward_action->addTo( navigation ); 565 m_forward_action->addTo( navigation );
566 566
567 /* 567 /*
568 a = new QAction( tr( "Find" ), QString::null, 0, this, NULL, true ); 568 a = new QAction( tr( "Find" ), QString::null, 0, this, NULL, true );
569 // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); 569 // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) );
570 a->addTo( file ); 570 a->addTo( file );
571 571
572 a = new QAction( tr( "Find Again" ), QString::null, 0, this, NULL, true ); 572 a = new QAction( tr( "Find Again" ), QString::null, 0, this, NULL, true );
573 // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); 573 // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) );
574 a->addTo( file ); 574 a->addTo( file );
575 */ 575 */
576 576
577// file->insertSeparator(); 577// file->insertSeparator();
578 578
579#ifdef _SCROLLPIPE 579#ifdef _SCROLLPIPE
580 580
581 QActionGroup* ag = new QActionGroup(this); 581 QActionGroup* ag = new QActionGroup(this);
582 ag->setExclusive(false); 582 ag->setExclusive(false);
583 spacemenu = new QPopupMenu(this); 583 spacemenu = new QPopupMenu(this);
584 file->insertItem( tr( "Scrolling" ), spacemenu ); 584 file->insertItem( tr( "Scrolling" ), spacemenu );
585 585
586 a = new QAction( tr( "Set Target" ), QString::null, 0, ag, NULL); 586 a = new QAction( tr( "Set Target" ), QString::null, 0, ag, NULL);
587 connect( a, SIGNAL( activated() ), this, SLOT( setpipetarget() ) ); 587 connect( a, SIGNAL( activated() ), this, SLOT( setpipetarget() ) );
588 588
589 a = new QAction( tr( "Pause Paras" ), QString::null, 0, ag, NULL, true ); 589 a = new QAction( tr( "Pause Paras" ), QString::null, 0, ag, NULL, true );
590 connect( a, SIGNAL( toggled(bool) ), this, SLOT( setpause(bool) ) ); 590 connect( a, SIGNAL( toggled(bool) ), this, SLOT( setpause(bool) ) );
591 a->setOn(reader->m_pauseAfterEachPara); 591 a->setOn(reader->m_pauseAfterEachPara);
592 592
593 ag->addTo(spacemenu); 593 ag->addTo(spacemenu);
594// file->insertSeparator(); 594// file->insertSeparator();
595 595
596#endif 596#endif
597 597
598/* 598/*
599 a = new QAction( tr( "Import" ), QString::null, 0, this, NULL ); 599 a = new QAction( tr( "Import" ), QString::null, 0, this, NULL );
600 connect( a, SIGNAL( activated() ), this, SLOT( importFiles() ) ); 600 connect( a, SIGNAL( activated() ), this, SLOT( importFiles() ) );
601 a->addTo( file ); 601 a->addTo( file );
602*/ 602*/
603 603
604 /* 604 /*
605 a = new QAction( tr( "Paste" ), geticon( "paste" ), QString::null, 0, this, 0 ); 605 a = new QAction( tr( "Paste" ), geticon( "paste" ), QString::null, 0, this, 0 );
606 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); 606 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) );
607 a->addTo( fileBar ); 607 a->addTo( fileBar );
608 a->addTo( edit ); 608 a->addTo( edit );
609 */ 609 */
610 610
611// a = new QAction( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, 0 ); 611// a = new QAction( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, 0 );
612 612
613 m_fullscreen = false; 613 m_fullscreen = false;
614 m_actFullscreen = new QAction( tr( "Fullscreen" ), geticon( "fullscreen" ), QString::null, 0, this, NULL, true ); 614 m_actFullscreen = new QAction( tr( "Fullscreen" ), geticon( "fullscreen" ), QString::null, 0, this, NULL, true );
615 connect( m_actFullscreen, SIGNAL( toggled(bool) ), this, SLOT( setfullscreen(bool) ) ); 615 connect( m_actFullscreen, SIGNAL( toggled(bool) ), this, SLOT( setfullscreen(bool) ) );
616 m_actFullscreen->setOn(m_fullscreen); 616 m_actFullscreen->setOn(m_fullscreen);
617 m_actFullscreen->addTo( view ); 617 m_actFullscreen->addTo( view );
618 618
619 view->insertSeparator(); 619 view->insertSeparator();
620 620
621 m_zoomin_action = new QAction( tr( "Zoom In" ), geticon( "zoom" ), QString::null, 0, this); 621 m_zoomin_action = new QAction( tr( "Zoom In" ), geticon( "zoom" ), QString::null, 0, this);
622 connect( m_zoomin_action, SIGNAL( activated() ), this, SLOT( zoomin() ) ); 622 connect( m_zoomin_action, SIGNAL( activated() ), this, SLOT( zoomin() ) );
623 m_zoomin_action->addTo( view ); 623 m_zoomin_action->addTo( view );
624 624
625 m_zoomout_action = new QAction( tr( "Zoom Out" ), geticon( "mag" ), QString::null, 0, this); 625 m_zoomout_action = new QAction( tr( "Zoom Out" ), geticon( "mag" ), QString::null, 0, this);
626 connect( m_zoomout_action, SIGNAL( activated() ), this, SLOT( zoomout() ) ); 626 connect( m_zoomout_action, SIGNAL( activated() ), this, SLOT( zoomout() ) );
627 m_zoomout_action->addTo( view ); 627 m_zoomout_action->addTo( view );
628 628
629 view->insertSeparator(); 629 view->insertSeparator();
630 m_setfont_action = new QAction( tr( "Set Font" ), getmyicon( "font" ), QString::null, 0, this); 630 m_setfont_action = new QAction( tr( "Set Font" ), getmyicon( "font" ), QString::null, 0, this);
631 connect( m_setfont_action, SIGNAL( activated() ), this, SLOT( setfont() ) ); 631 connect( m_setfont_action, SIGNAL( activated() ), this, SLOT( setfont() ) );
632 m_setfont_action->addTo( view ); 632 m_setfont_action->addTo( view );
633 633
634 view->insertSeparator(); 634 view->insertSeparator();
635 m_setenc_action = new QAction( tr( "Set Encoding" ), getmyicon( "charset" ), QString::null, 0, this); 635 m_setenc_action = new QAction( tr( "Set Encoding" ), getmyicon( "charset" ), QString::null, 0, this);
636 connect( m_setenc_action, SIGNAL( activated() ), this, SLOT( chooseencoding() ) ); 636 connect( m_setenc_action, SIGNAL( activated() ), this, SLOT( chooseencoding() ) );
637 m_setenc_action->addTo( view ); 637 m_setenc_action->addTo( view );
638 638
639 m_setmono_action = new QAction( tr( "Ideogram" ), getmyicon( "ideogram" ), QString::null, 0, this, NULL, true); 639 m_setmono_action = new QAction( tr( "Ideogram" ), getmyicon( "ideogram" ), QString::null, 0, this, NULL, true);
640 connect( m_setmono_action, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); 640 connect( m_setmono_action, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) );
641 m_setmono_action->addTo( view ); 641 m_setmono_action->addTo( view );
642 m_setmono_action->setOn(reader->m_bMonoSpaced); 642 m_setmono_action->setOn(reader->m_bMonoSpaced);
643 643
644 644
645 // a = new QAction( tr( "Zoom" ), QString::null, 0, this, NULL, true ); 645 // a = new QAction( tr( "Zoom" ), QString::null, 0, this, NULL, true );
646 // a = new QAction( tr( "Zoom" ), geticon( "mag" ), QString::null, 0, this, 0 ); 646 // a = new QAction( tr( "Zoom" ), geticon( "mag" ), QString::null, 0, this, 0 );
647 647
648 648
649 649
650 // a->addTo( filebar() ); 650 // a->addTo( filebar() );
651// view->insertSeparator(); 651// view->insertSeparator();
652 652
653/* 653/*
654 a = new QAction( tr( "Ideogram/Word" ), QString::null, 0, this, NULL, true ); 654 a = new QAction( tr( "Ideogram/Word" ), QString::null, 0, this, NULL, true );
655 connect( a, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); 655 connect( a, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) );
656 a->setOn(reader->m_bMonoSpaced); 656 a->setOn(reader->m_bMonoSpaced);
657 a->addTo( view ); 657 a->addTo( view );
658*/ 658*/
659/* 659/*
660 a = new QAction( tr( "Set Width" ), QString::null, 0, this, NULL); 660 a = new QAction( tr( "Set Width" ), QString::null, 0, this, NULL);
661 connect( a, SIGNAL( activated() ), this, SLOT( setspacing() ) ); 661 connect( a, SIGNAL( activated() ), this, SLOT( setspacing() ) );
662 a->addTo( view ); 662 a->addTo( view );
663*/ 663*/
664 664
665 m_mark_action = new QAction( tr( "Bookmark" ), getmyicon( "bookmark" ), QString::null, 0, this, NULL); 665 m_mark_action = new QAction( tr( "Bookmark" ), getmyicon( "bookmark" ), QString::null, 0, this, NULL);
666 connect( m_mark_action, SIGNAL( activated() ), this, SLOT( addbkmk() ) ); 666 connect( m_mark_action, SIGNAL( activated() ), this, SLOT( addbkmk() ) );
667 m_mark_action->addTo( marks ); 667 m_mark_action->addTo( marks );
668 668
669 m_annotate_action = new QAction( tr( "Annotate" ), getmyicon( "annotate" ), QString::null, 0, this, NULL); 669 m_annotate_action = new QAction( tr( "Annotate" ), getmyicon( "annotate" ), QString::null, 0, this, NULL);
670 connect( m_annotate_action, SIGNAL( activated() ), this, SLOT( addanno() ) ); 670 connect( m_annotate_action, SIGNAL( activated() ), this, SLOT( addanno() ) );
671 m_annotate_action->addTo( marks ); 671 m_annotate_action->addTo( marks );
672 672
673 m_goto_action = new QAction( tr( "Goto" ), getmyicon( "bookmark_goto" ), QString::null, 0, this, NULL, false ); 673 m_goto_action = new QAction( tr( "Goto" ), getmyicon( "bookmark_goto" ), QString::null, 0, this, NULL, false );
674 connect( m_goto_action, SIGNAL( activated() ), this, SLOT( do_gotomark() ) ); 674 connect( m_goto_action, SIGNAL( activated() ), this, SLOT( do_gotomark() ) );
675 m_goto_action->addTo( marks ); 675 m_goto_action->addTo( marks );
676 676
677 m_delete_action = new QAction( tr( "Delete" ), getmyicon( "bookmark_delete" ), QString::null, 0, this, NULL); 677 m_delete_action = new QAction( tr( "Delete" ), getmyicon( "bookmark_delete" ), QString::null, 0, this, NULL);
678 connect( m_delete_action, SIGNAL( activated() ), this, SLOT( do_delmark() ) ); 678 connect( m_delete_action, SIGNAL( activated() ), this, SLOT( do_delmark() ) );
679 m_delete_action->addTo( marks ); 679 m_delete_action->addTo( marks );
680 680
681 m_autogen_action = new QAction( tr( "Autogen" ), geticon( "exec" ), QString::null, 0, this, NULL, false ); 681 m_autogen_action = new QAction( tr( "Autogen" ), geticon( "exec" ), QString::null, 0, this, NULL, false );
682 connect( m_autogen_action, SIGNAL( activated() ), this, SLOT( do_autogen() ) ); 682 connect( m_autogen_action, SIGNAL( activated() ), this, SLOT( do_autogen() ) );
683 marks->insertSeparator(); 683 marks->insertSeparator();
684 m_autogen_action->addTo( marks ); 684 m_autogen_action->addTo( marks );
685 685
686 m_clear_action = new QAction( tr( "Clear" ), getmyicon( "bookmark_clear" ), QString::null, 0, this, NULL); 686 m_clear_action = new QAction( tr( "Clear" ), getmyicon( "bookmark_clear" ), QString::null, 0, this, NULL);
687 connect( m_clear_action, SIGNAL( activated() ), this, SLOT( clearBkmkList() ) ); 687 connect( m_clear_action, SIGNAL( activated() ), this, SLOT( clearBkmkList() ) );
688 m_clear_action->addTo( marks ); 688 m_clear_action->addTo( marks );
689 689
690 m_save_action = new QAction( tr( "Save" ), getmyicon( "bookmark_save" ), QString::null, 0, this, NULL ); 690 m_save_action = new QAction( tr( "Save" ), getmyicon( "bookmark_save" ), QString::null, 0, this, NULL );
691 connect( m_save_action, SIGNAL( activated() ), this, SLOT( savebkmks() ) ); 691 connect( m_save_action, SIGNAL( activated() ), this, SLOT( savebkmks() ) );
692 m_save_action->addTo( marks ); 692 m_save_action->addTo( marks );
693 693
694 m_tidy_action = new QAction( tr( "Tidy" ), getmyicon( "bookmark_tidy" ), QString::null, 0, this, NULL); 694 m_tidy_action = new QAction( tr( "Tidy" ), getmyicon( "bookmark_tidy" ), QString::null, 0, this, NULL);
695 connect( m_tidy_action, SIGNAL( activated() ), this, SLOT( listBkmkFiles() ) ); 695 connect( m_tidy_action, SIGNAL( activated() ), this, SLOT( listBkmkFiles() ) );
696 marks->insertSeparator(); 696 marks->insertSeparator();
697 m_tidy_action->addTo( marks ); 697 m_tidy_action->addTo( marks );
698 698
699 m_startBlock_action = new QAction( tr( "Start Block" ), geticon( "new" ), QString::null, 0, this, NULL); 699 m_startBlock_action = new QAction( tr( "Start Block" ), geticon( "new" ), QString::null, 0, this, NULL);
700 connect( m_startBlock_action, SIGNAL( activated() ), this, SLOT( editMark() ) ); 700 connect( m_startBlock_action, SIGNAL( activated() ), this, SLOT( editMark() ) );
701 marks->insertSeparator(); 701 marks->insertSeparator();
702 m_startBlock_action->addTo( marks ); 702 m_startBlock_action->addTo( marks );
703 703
704 m_endBlock_action = new QAction( tr( "Copy Block" ), geticon( "copy" ), QString::null, 0, this, NULL); 704 m_endBlock_action = new QAction( tr( "Copy Block" ), geticon( "copy" ), QString::null, 0, this, NULL);
705 connect( m_endBlock_action, SIGNAL( activated() ), this, SLOT( editCopy() ) ); 705 connect( m_endBlock_action, SIGNAL( activated() ), this, SLOT( editCopy() ) );
706 m_endBlock_action->addTo( marks ); 706 m_endBlock_action->addTo( marks );
707 707
708 m_bkmkAvail = NULL; 708 m_bkmkAvail = NULL;
709 709
710 710
711 setToolBarsMovable(m_tbmove); 711 setToolBarsMovable(m_tbmove);
712 addtoolbars(&config); 712 addtoolbars(&config);
713 713
714 pbar = new QProgressBar(this); 714 pbar = new QProgressBar(this);
715 pbar->hide(); 715 pbar->hide();
716 716
717 searchBar = new QFloatBar( "Search", this, QMainWindow::Top, TRUE ); 717 searchBar = new QFloatBar( "Search", this, QMainWindow::Top, TRUE );
718 718
719 searchBar->setHorizontalStretchable( TRUE ); 719 searchBar->setHorizontalStretchable( TRUE );
720 720
721 connect(searchBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() )); 721 connect(searchBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() ));
722 722
723 searchEdit = new QLineEdit( searchBar, "searchEdit" ); 723 searchEdit = new QLineEdit( searchBar, "searchEdit" );
724// QFont f("unifont", 16 /*, QFont::Bold*/); 724// QFont f("unifont", 16 /*, QFont::Bold*/);
725// searchEdit->setFont( f ); 725// searchEdit->setFont( f );
726 searchBar->setStretchableWidget( searchEdit ); 726 searchBar->setStretchableWidget( searchEdit );
727 727
728 728
729#ifdef __ISEARCH 729#ifdef __ISEARCH
730 connect( searchEdit, SIGNAL( textChanged( const QString & ) ), 730 connect( searchEdit, SIGNAL( textChanged( const QString & ) ),
731 this, SLOT( search( const QString& ) ) ); 731 this, SLOT( search( const QString& ) ) );
732#else 732#else
733 connect( searchEdit, SIGNAL( returnPressed( ) ), 733 connect( searchEdit, SIGNAL( returnPressed( ) ),
734 this, SLOT( search( ) ) ); 734 this, SLOT( search( ) ) );
735#endif 735#endif
736 QAction*a = new QAction( tr( "Find Next" ), geticon( "next" ), QString::null, 0, this, 0 ); 736 QAction*a = new QAction( tr( "Find Next" ), geticon( "next" ), QString::null, 0, this, 0 );
737 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); 737 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) );
738 a->addTo( searchBar ); 738 a->addTo( searchBar );
739 739
740 a = new QAction( tr( "Close Find" ), geticon( "close" ), QString::null, 0, this, 0 ); 740 a = new QAction( tr( "Close Find" ), geticon( "close" ), QString::null, 0, this, 0 );
741 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); 741 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) );
742 a->addTo( searchBar ); 742 a->addTo( searchBar );
743 743
744 searchBar->hide(); 744 searchBar->hide();
745 745
746 regBar = new QFloatBar( "Autogen", this, QMainWindow::Top, TRUE ); 746 regBar = new QFloatBar( "Autogen", this, QMainWindow::Top, TRUE );
747 connect(regBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() )); 747 connect(regBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() ));
748 748
749 regBar->setHorizontalStretchable( TRUE ); 749 regBar->setHorizontalStretchable( TRUE );
750 750
751 regEdit = new QLineEdit( regBar, "regEdit" ); 751 regEdit = new QLineEdit( regBar, "regEdit" );
752// regEdit->setFont( f ); 752// regEdit->setFont( f );
753 753
754 regBar->setStretchableWidget( regEdit ); 754 regBar->setStretchableWidget( regEdit );
755 755
756 connect( regEdit, SIGNAL( returnPressed( ) ), 756 connect( regEdit, SIGNAL( returnPressed( ) ),
757 this, SLOT( do_regaction() ) ); 757 this, SLOT( do_regaction() ) );
758 758
759 a = new QAction( tr( "Do Reg" ), geticon( "enter" ), QString::null, 0, this, 0 ); 759 a = new QAction( tr( "Do Reg" ), geticon( "enter" ), QString::null, 0, this, 0 );
760 connect( a, SIGNAL( activated() ), this, SLOT( do_regaction() ) ); 760 connect( a, SIGNAL( activated() ), this, SLOT( do_regaction() ) );
761 a->addTo( regBar ); 761 a->addTo( regBar );
762 762
763 a = new QAction( tr( "Close Edit" ), geticon( "close" ), QString::null, 0, this, 0 ); 763 a = new QAction( tr( "Close Edit" ), geticon( "close" ), QString::null, 0, this, 0 );
764 connect( a, SIGNAL( activated() ), this, SLOT( regClose() ) ); 764 connect( a, SIGNAL( activated() ), this, SLOT( regClose() ) );
765 a->addTo( regBar ); 765 a->addTo( regBar );
766 766
767 regBar->hide(); 767 regBar->hide();
768 768
769 m_fontBar = new QToolBar( "Autogen", this, QMainWindow::Top, TRUE ); 769 m_fontBar = new QToolBar( "Autogen", this, QMainWindow::Top, TRUE );
770 770
771 m_fontBar->setHorizontalStretchable( TRUE ); 771 m_fontBar->setHorizontalStretchable( TRUE );
772 772
773// qDebug("Font selector"); 773// qDebug("Font selector");
774 m_fontSelector = new QComboBox(false, m_fontBar); 774 m_fontSelector = new QComboBox(false, m_fontBar);
775 m_fontBar->setStretchableWidget( m_fontSelector ); 775 m_fontBar->setStretchableWidget( m_fontSelector );
776 { 776 {
777#ifndef USEQPE 777#ifndef USEQPE
778 QFontDatabase f; 778 QFontDatabase f;
779#else 779#else
780 FontDatabase f; 780 FontDatabase f;
781#endif 781#endif
782 QStringList flist = f.families(); 782 QStringList flist = f.families();
783 bool realfont = false; 783 bool realfont = false;
784 for (QStringList::Iterator nm = flist.begin(); nm != flist.end(); nm++) 784 for (QStringList::Iterator nm = flist.begin(); nm != flist.end(); nm++)
785 { 785 {
786 if (reader->m_fontname == *nm) 786 if (reader->m_fontname == *nm)
787 { 787 {
788 realfont = true; 788 realfont = true;
789 } 789 }
790 if ((*nm).contains(FIXEDFONT,false)) reader->m_fontControl.hasCourier(true, *nm); 790 if ((*nm).contains(FIXEDFONT,false)) reader->m_fontControl.hasCourier(true, *nm);
791 } 791 }
792 if (!realfont) reader->m_fontname = flist[0]; 792 if (!realfont) reader->m_fontname = flist[0];
793 } // delete the FontDatabase!!! 793 } // delete the FontDatabase!!!
794 connect( m_fontSelector, SIGNAL( activated(const QString& ) ), 794 connect( m_fontSelector, SIGNAL( activated(const QString& ) ),
795 this, SLOT( do_setfont(const QString&) ) ); 795 this, SLOT( do_setfont(const QString&) ) );
796 connect( m_fontSelector, SIGNAL( activated(int ) ), 796 connect( m_fontSelector, SIGNAL( activated(int ) ),
797 this, SLOT( do_setencoding(int) ) ); 797 this, SLOT( do_setencoding(int) ) );
798 798
799 m_fontBar->hide(); 799 m_fontBar->hide();
800 m_fontVisible = false; 800 m_fontVisible = false;
801#ifdef USEMSGS 801#ifdef USEMSGS
802 connect(qApp, SIGNAL( appMessage(const QCString&, const QByteArray& ) ), 802 connect(qApp, SIGNAL( appMessage(const QCString&, const QByteArray& ) ),
803 this, SLOT( msgHandler(const QCString&, const QByteArray&) ) ); 803 this, SLOT( msgHandler(const QCString&, const QByteArray&) ) );
804#endif 804#endif
805// qDebug("Initing"); 805// qDebug("Initing");
806 reader->init(); 806 reader->init();
807// qDebug("Inited"); 807// qDebug("Inited");
808// m_buttonAction[m_spaceTarget]->setOn(true); 808// m_buttonAction[m_spaceTarget]->setOn(true);
809// qDebug("fonting"); 809// qDebug("fonting");
810 do_setfont(reader->m_fontname); 810 do_setfont(reader->m_fontname);
811 if (!reader->m_lastfile.isEmpty()) 811 if (!reader->m_lastfile.isEmpty())
812 { 812 {
813 //qDebug("doclnk"); 813 //qDebug("doclnk");
814 //doc = new DocLnk(reader->m_lastfile); 814 //doc = new DocLnk(reader->m_lastfile);
815 //qDebug("doclnk done"); 815 //qDebug("doclnk done");
816 if (pOpenlist != NULL) 816 if (pOpenlist != NULL)
817 { 817 {
818 818
819/* 819/*
820 int ind = 0; 820 int ind = 0;
821 Bkmk* p = (*pOpenlist)[ind]; 821 Bkmk* p = (*pOpenlist)[ind];
822 while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) 822 while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile)
823 { 823 {
824 p = (*pOpenlist)[++ind]; 824 p = (*pOpenlist)[++ind];
825 } 825 }
826*/ 826*/
827 Bkmk* p = NULL; 827 Bkmk* p = NULL;
828 for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) 828 for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++)
829 { 829 {
830 p = iter.pContent(); 830 p = iter.pContent();
831 if (toQString(CFiledata(p->anno()).name()) == reader->m_lastfile) 831 if (toQString(CFiledata(p->anno()).name()) == reader->m_lastfile)
832 { 832 {
833 break; 833 break;
834 } 834 }
835 // qDebug("Item:%s", (const char*)toQString(CFiledata(p->anno()).name())); 835 // qDebug("Item:%s", (const char*)toQString(CFiledata(p->anno()).name()));
836 p = NULL; 836 p = NULL;
837 } 837 }
838 if (p != NULL) 838 if (p != NULL)
839 { 839 {
840 //qDebug("openfrombkmk"); 840 //qDebug("openfrombkmk");
841 if (!openfrombkmk(p)) 841 if (!openfrombkmk(p))
842 showEditTools(); 842 showEditTools();
843 } 843 }
844 else 844 else
845 { 845 {
846 //qDebug("openfile"); 846 //qDebug("openfile");
847 openFile( reader->m_lastfile ); 847 openFile( reader->m_lastfile );
848 } 848 }
849 } 849 }
850 else 850 else
851 { 851 {
852 // qDebug("Openfile 2"); 852 // qDebug("Openfile 2");
853 if (!reader->m_lastfile.isEmpty()) 853 if (!reader->m_lastfile.isEmpty())
854 openFile( reader->m_lastfile ); 854 openFile( reader->m_lastfile );
855 } 855 }
856 } 856 }
857 else 857 else
858 { 858 {
859 showEditTools(); 859 showEditTools();
860 } 860 }
861// qApp->processEvents(); 861// qApp->processEvents();
862 reader->bDoUpdates = true; 862 reader->bDoUpdates = true;
863 reader->update(); 863 reader->update();
864 config.setGroup("Version"); 864 config.setGroup("Version");
865 int major = config.readNumEntry("Major", 0); 865 int major = config.readNumEntry("Major", 0);
866 int bkmktype = config.readNumEntry("BkmkType", 0); 866 int bkmktype = config.readNumEntry("BkmkType", 0);
867 char minor = config.readNumEntry("Minor", 0); 867 char minor = config.readNumEntry("Minor", 0);
868 if (CheckVersion(major, bkmktype, minor)) 868 if (CheckVersion(major, bkmktype, minor))
869 { 869 {
870 config.writeEntry("Major", major); 870 config.writeEntry("Major", major);
871 config.writeEntry("BkmkType", bkmktype); 871 config.writeEntry("BkmkType", bkmktype);
872 config.writeEntry("Minor", (int)minor); 872 config.writeEntry("Minor", (int)minor);
873 } 873 }
874// qDebug("finished update"); 874// qDebug("finished update");
875} 875}
876 876
877void QTReaderApp::addtoolbars(Config* config) 877void QTReaderApp::addtoolbars(Config* config)
878{ 878{
879 config->setGroup("Toolbar"); 879 config->setGroup("Toolbar");
880 880
881 if (fileBar != NULL) 881 if (fileBar != NULL)
882 { 882 {
883 if (fileBar != menubar) 883 if (fileBar != menubar)
884 { 884 {
885 fileBar->clear(); 885 fileBar->clear();
886 } 886 }
887 else 887 else
888 { 888 {
889 m_preferences_action->removeFrom( filebar() ); 889 m_preferences_action->removeFrom( filebar() );
890 m_open_action->removeFrom( filebar() ); 890 m_open_action->removeFrom( filebar() );
891 m_close_action->removeFrom( filebar() ); 891 m_close_action->removeFrom( filebar() );
892 m_info_action->removeFrom( filebar() ); 892 m_info_action->removeFrom( filebar() );
893 m_touch_action->removeFrom( filebar() ); 893 m_touch_action->removeFrom( filebar() );
894 m_find_action->removeFrom( filebar() ); 894 m_find_action->removeFrom( filebar() );
895 } 895 }
896 } 896 }
897 897
898 m_preferences_action->addTo( filebar() ); 898 m_preferences_action->addTo( filebar() );
899 addfilebar(config, "Open", m_open_action); 899 addfilebar(config, "Open", m_open_action);
900 addfilebar(config, "Close", m_close_action); 900 addfilebar(config, "Close", m_close_action);
901 addfilebar(config, "Info", m_info_action); 901 addfilebar(config, "Info", m_info_action);
902 addfilebar(config, "Two/One Touch", m_touch_action); 902 addfilebar(config, "Two/One Touch", m_touch_action);
903 addfilebar(config, "Find", m_find_action); 903 addfilebar(config, "Find", m_find_action);
904 904
905 if (navBar != NULL) 905 if (navBar != NULL)
906 { 906 {
907 if ((navBar == fileBar) && (fileBar == menubar)) 907 if ((navBar == fileBar) && (fileBar == menubar))
908 { 908 {
909 m_scrollButton->removeFrom( navbar() ); 909 m_scrollButton->removeFrom( navbar() );
910 m_start_action->removeFrom( navbar() ); 910 m_start_action->removeFrom( navbar() );
911 m_end_action->removeFrom( navbar() ); 911 m_end_action->removeFrom( navbar() );
912 m_jump_action->removeFrom( navbar() ); 912 m_jump_action->removeFrom( navbar() );
913 m_pageline_action->removeFrom( navbar() ); 913 m_pageline_action->removeFrom( navbar() );
914 m_pageup_action->removeFrom( navbar() ); 914 m_pageup_action->removeFrom( navbar() );
915 m_pagedn_action->removeFrom( navbar() ); 915 m_pagedn_action->removeFrom( navbar() );
916 m_back_action->removeFrom( navbar() ); 916 m_back_action->removeFrom( navbar() );
917 m_home_action->removeFrom( navbar() ); 917 m_home_action->removeFrom( navbar() );
918 m_forward_action->removeFrom( navbar() ); 918 m_forward_action->removeFrom( navbar() );
919 } 919 }
920 else if (navBar != fileBar) 920 else if (navBar != fileBar)
921 { 921 {
922 navBar->clear(); 922 navBar->clear();
923 } 923 }
924 } 924 }
925 925
926 addnavbar(config, "Scroll", m_scrollButton); 926 addnavbar(config, "Scroll", m_scrollButton);
927 addnavbar(config, "Goto Start", m_start_action); 927 addnavbar(config, "Goto Start", m_start_action);
928 addnavbar(config, "Goto End", m_end_action); 928 addnavbar(config, "Goto End", m_end_action);
929 929
930 addnavbar(config, "Jump", m_jump_action); 930 addnavbar(config, "Jump", m_jump_action);
931 addnavbar(config, "Page/Line Scroll", m_pageline_action); 931 addnavbar(config, "Page/Line Scroll", m_pageline_action);
932 932
933 addnavbar(config, "Page Up", m_pageup_action); 933 addnavbar(config, "Page Up", m_pageup_action);
934 addnavbar(config, "Page Down", m_pagedn_action); 934 addnavbar(config, "Page Down", m_pagedn_action);
935 935
936 addnavbar(config, "Back", m_back_action); 936 addnavbar(config, "Back", m_back_action);
937 addnavbar(config, "Home", m_home_action); 937 addnavbar(config, "Home", m_home_action);
938 addnavbar(config, "Forward", m_forward_action); 938 addnavbar(config, "Forward", m_forward_action);
939 939
940 if (viewBar != NULL) 940 if (viewBar != NULL)
941 { 941 {
942 if ((viewBar == fileBar) && (fileBar == menubar)) 942 if ((viewBar == fileBar) && (fileBar == menubar))
943 { 943 {
944 m_actFullscreen->removeFrom( filebar() ); 944 m_actFullscreen->removeFrom( filebar() );
945 m_zoomin_action->removeFrom( viewbar() ); 945 m_zoomin_action->removeFrom( viewbar() );
946 m_zoomout_action->removeFrom( viewbar() ); 946 m_zoomout_action->removeFrom( viewbar() );
947 m_setfont_action->removeFrom( viewbar() ); 947 m_setfont_action->removeFrom( viewbar() );
948 m_setenc_action->removeFrom( viewbar() ); 948 m_setenc_action->removeFrom( viewbar() );
949 m_setmono_action->removeFrom( viewbar() ); 949 m_setmono_action->removeFrom( viewbar() );
950 } 950 }
951 else if (viewBar != fileBar) 951 else if (viewBar != fileBar)
952 { 952 {
953 viewBar->clear(); 953 viewBar->clear();
954 } 954 }
955 } 955 }
956 956
957 addviewbar(config, "Fullscreen", m_actFullscreen); 957 addviewbar(config, "Fullscreen", m_actFullscreen);
958 addviewbar(config, "Zoom In", m_zoomin_action); 958 addviewbar(config, "Zoom In", m_zoomin_action);
959 addviewbar(config, "Zoom Out", m_zoomout_action); 959 addviewbar(config, "Zoom Out", m_zoomout_action);
960 addviewbar(config, "Set Font", m_setfont_action); 960 addviewbar(config, "Set Font", m_setfont_action);
961 addviewbar(config, "Encoding Select", m_setenc_action); 961 addviewbar(config, "Encoding Select", m_setenc_action);
962 addviewbar(config, "Ideogram Mode", m_setmono_action); 962 addviewbar(config, "Ideogram Mode", m_setmono_action);
963 963
964 if (markBar != NULL) 964 if (markBar != NULL)
965 { 965 {
966 if ((markBar == fileBar) && (fileBar == menubar)) 966 if ((markBar == fileBar) && (fileBar == menubar))
967 { 967 {
968 m_mark_action->removeFrom( markbar() ); 968 m_mark_action->removeFrom( markbar() );
969 m_annotate_action->removeFrom( markbar()); 969 m_annotate_action->removeFrom( markbar());
970 m_goto_action->removeFrom( markbar() ); 970 m_goto_action->removeFrom( markbar() );
971 m_delete_action->removeFrom( markbar() ); 971 m_delete_action->removeFrom( markbar() );
972 m_autogen_action->removeFrom( markbar() ); 972 m_autogen_action->removeFrom( markbar() );
973 m_clear_action->removeFrom( markbar() ); 973 m_clear_action->removeFrom( markbar() );
974 m_save_action->removeFrom( markbar() ); 974 m_save_action->removeFrom( markbar() );
975 m_tidy_action->removeFrom( markbar() ); 975 m_tidy_action->removeFrom( markbar() );
976 m_startBlock_action->removeFrom( markbar() ); 976 m_startBlock_action->removeFrom( markbar() );
977 m_endBlock_action->removeFrom( markbar() ); 977 m_endBlock_action->removeFrom( markbar() );
978 } 978 }
979 else if (markBar != fileBar) 979 else if (markBar != fileBar)
980 { 980 {
981 markBar->clear(); 981 markBar->clear();
982 } 982 }
983 } 983 }
984 addmarkbar(config, "Mark", m_mark_action); 984 addmarkbar(config, "Mark", m_mark_action);
985 addmarkbar(config, "Annotate", m_annotate_action); 985 addmarkbar(config, "Annotate", m_annotate_action);
986 addmarkbar(config, "Goto", m_goto_action); 986 addmarkbar(config, "Goto", m_goto_action);
987 addmarkbar(config, "Delete", m_delete_action); 987 addmarkbar(config, "Delete", m_delete_action);
988 addmarkbar(config, "Autogen", m_autogen_action); 988 addmarkbar(config, "Autogen", m_autogen_action);
989 addmarkbar(config, "Clear", m_clear_action); 989 addmarkbar(config, "Clear", m_clear_action);
990 addmarkbar(config, "Save", m_save_action); 990 addmarkbar(config, "Save", m_save_action);
991 addmarkbar(config, "Tidy", m_tidy_action); 991 addmarkbar(config, "Tidy", m_tidy_action);
992 addmarkbar(config, "Start Block", m_startBlock_action); 992 addmarkbar(config, "Start Block", m_startBlock_action);
993 addmarkbar(config, "Copy Block", m_endBlock_action); 993 addmarkbar(config, "Copy Block", m_endBlock_action);
994 if (checkbar(config, "Annotation indicator")) 994 if (checkbar(config, "Annotation indicator"))
995 { 995 {
996 if (m_bkmkAvail == NULL) 996 if (m_bkmkAvail == NULL)
997 { 997 {
998 m_bkmkAvail = new QAction( tr( "Annotation" ), geticon( "find" ), QString::null, 0, this, 0 ); 998 m_bkmkAvail = new QAction( tr( "Annotation" ), geticon( "find" ), QString::null, 0, this, 0 );
999 connect( m_bkmkAvail, SIGNAL( activated() ), this, SLOT( showAnnotation() ) ); 999 connect( m_bkmkAvail, SIGNAL( activated() ), this, SLOT( showAnnotation() ) );
1000 1000
1001 m_bkmkAvail->setEnabled(false); 1001 m_bkmkAvail->setEnabled(false);
1002 } 1002 }
1003 QLabel *spacer = new QLabel(markBar, ""); 1003 QLabel *spacer = new QLabel(markBar, "");
1004 markbar()->setStretchableWidget(spacer); 1004 markbar()->setStretchableWidget(spacer);
1005 m_bkmkAvail->removeFrom( markbar() ); 1005 m_bkmkAvail->removeFrom( markbar() );
1006 m_bkmkAvail->addTo( markbar() ); 1006 m_bkmkAvail->addTo( markbar() );
1007 } 1007 }
1008 else 1008 else
1009 { 1009 {
1010 if (m_bkmkAvail != NULL) 1010 if (m_bkmkAvail != NULL)
1011 { 1011 {
1012 m_bkmkAvail->removeFrom( markbar() ); 1012 m_bkmkAvail->removeFrom( markbar() );
1013 delete m_bkmkAvail; 1013 delete m_bkmkAvail;
1014 m_bkmkAvail = NULL; 1014 m_bkmkAvail = NULL;
1015 } 1015 }
1016 } 1016 }
1017} 1017}
1018 1018
1019bool QTReaderApp::checkbar(Config* _config, const QString& key) 1019bool QTReaderApp::checkbar(Config* _config, const QString& key)
1020{ 1020{
1021 return _config->readBoolEntry(key, false); 1021 return _config->readBoolEntry(key, false);
1022} 1022}
1023 1023
1024 1024
1025QToolBar* QTReaderApp::filebar() 1025QToolBar* QTReaderApp::filebar()
1026{ 1026{
1027 if (fileBar == NULL) 1027 if (fileBar == NULL)
1028 { 1028 {
1029 switch (m_tbpol) 1029 switch (m_tbpol)
1030 { 1030 {
1031 case cesSingle: 1031 case cesSingle:
1032 // qDebug("Setting filebar to menubar"); 1032 // qDebug("Setting filebar to menubar");
1033 fileBar = menubar; 1033 fileBar = menubar;
1034 break; 1034 break;
1035 default: 1035 default:
1036 qDebug("Incorrect toolbar policy set"); 1036 qDebug("Incorrect toolbar policy set");
1037 case cesMenuTool: 1037 case cesMenuTool:
1038 case cesMultiple: 1038 case cesMultiple:
1039 // qDebug("Creating new file bar"); 1039 // qDebug("Creating new file bar");
1040 fileBar = new QToolBar("File", this, m_tbposition); 1040 fileBar = new QToolBar("File", this, m_tbposition);
1041 break; 1041 break;
1042 } 1042 }
1043 //fileBar->setHorizontalStretchable( true ); 1043 //fileBar->setHorizontalStretchable( true );
1044 } 1044 }
1045 return fileBar; 1045 return fileBar;
1046} 1046}
1047QToolBar* QTReaderApp::viewbar() 1047QToolBar* QTReaderApp::viewbar()
1048{ 1048{
1049 if (viewBar == NULL) 1049 if (viewBar == NULL)
1050 { 1050 {
1051 switch (m_tbpol) 1051 switch (m_tbpol)
1052 { 1052 {
1053 case cesMultiple: 1053 case cesMultiple:
1054 viewBar = new QToolBar("View", this, m_tbposition); 1054 viewBar = new QToolBar("View", this, m_tbposition);
1055 break; 1055 break;
1056 default: 1056 default:
1057 qDebug("Incorrect toolbar policy set"); 1057 qDebug("Incorrect toolbar policy set");
1058 case cesSingle: 1058 case cesSingle:
1059 case cesMenuTool: 1059 case cesMenuTool:
1060 viewBar = fileBar; 1060 viewBar = fileBar;
1061 break; 1061 break;
1062 } 1062 }
1063 } 1063 }
1064 return viewBar; 1064 return viewBar;
1065} 1065}
1066QToolBar* QTReaderApp::navbar() 1066QToolBar* QTReaderApp::navbar()
1067{ 1067{
1068 if (navBar == NULL) 1068 if (navBar == NULL)
1069 { 1069 {
1070 switch (m_tbpol) 1070 switch (m_tbpol)
1071 { 1071 {
1072 case cesMultiple: 1072 case cesMultiple:
1073 // qDebug("Creating new nav bar"); 1073 // qDebug("Creating new nav bar");
1074 navBar = new QToolBar("Navigation", this, m_tbposition); 1074 navBar = new QToolBar("Navigation", this, m_tbposition);
1075 break; 1075 break;
1076 default: 1076 default:
1077 qDebug("Incorrect toolbar policy set"); 1077 qDebug("Incorrect toolbar policy set");
1078 case cesSingle: 1078 case cesSingle:
1079 case cesMenuTool: 1079 case cesMenuTool:
1080 navBar = fileBar; 1080 navBar = fileBar;
1081 // qDebug("Setting navbar to filebar"); 1081 // qDebug("Setting navbar to filebar");
1082 break; 1082 break;
1083 } 1083 }
1084 } 1084 }
1085 return navBar; 1085 return navBar;
1086} 1086}
1087QToolBar* QTReaderApp::markbar() 1087QToolBar* QTReaderApp::markbar()
1088{ 1088{
1089 if (markBar == NULL) 1089 if (markBar == NULL)
1090 { 1090 {
1091 switch (m_tbpol) 1091 switch (m_tbpol)
1092 { 1092 {
1093 case cesMultiple: 1093 case cesMultiple:
1094 markBar = new QToolBar("Marks", this, m_tbposition); 1094 markBar = new QToolBar("Marks", this, m_tbposition);
1095 break; 1095 break;
1096 default: 1096 default:
1097 qDebug("Incorrect toolbar policy set"); 1097 qDebug("Incorrect toolbar policy set");
1098 case cesSingle: 1098 case cesSingle:
1099 case cesMenuTool: 1099 case cesMenuTool:
1100 markBar = fileBar; 1100 markBar = fileBar;
1101 break; 1101 break;
1102 } 1102 }
1103 } 1103 }
1104 return markBar; 1104 return markBar;
1105} 1105}
1106 1106
1107void QTReaderApp::addfilebar(Config* _config, const QString& key, QAction* a) 1107void QTReaderApp::addfilebar(Config* _config, const QString& key, QAction* a)
1108{ 1108{
1109 if (_config->readBoolEntry(key, false)) a->addTo( filebar() ); 1109 if (_config->readBoolEntry(key, false)) a->addTo( filebar() );
1110} 1110}
1111void QTReaderApp::addnavbar(Config* _config, const QString& key, QAction* a) 1111void QTReaderApp::addnavbar(Config* _config, const QString& key, QAction* a)
1112{ 1112{
1113 if (_config->readBoolEntry(key, false)) a->addTo( navbar() ); 1113 if (_config->readBoolEntry(key, false)) a->addTo( navbar() );
1114} 1114}
1115void QTReaderApp::addmarkbar(Config* _config, const QString& key, QAction* a) 1115void QTReaderApp::addmarkbar(Config* _config, const QString& key, QAction* a)
1116{ 1116{
1117 if (_config->readBoolEntry(key, false)) a->addTo( markbar() ); 1117 if (_config->readBoolEntry(key, false)) a->addTo( markbar() );
1118} 1118}
1119void QTReaderApp::addviewbar(Config* _config, const QString& key, QAction* a) 1119void QTReaderApp::addviewbar(Config* _config, const QString& key, QAction* a)
1120{ 1120{
1121 if (_config->readBoolEntry(key, false)) a->addTo( viewbar() ); 1121 if (_config->readBoolEntry(key, false)) a->addTo( viewbar() );
1122} 1122}
1123 1123
1124void QTReaderApp::suspend() { reader->suspend(); } 1124void QTReaderApp::suspend() { reader->suspend(); }
1125 1125
1126#ifdef USEMSGS 1126#ifdef USEMSGS
1127void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) 1127void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data)
1128{ 1128{
1129 QString msg = QString::fromUtf8(_msg); 1129 QString msg = QString::fromUtf8(_msg);
1130 1130
1131//// qDebug("Received:%s", (const char*)msg); 1131//// qDebug("Received:%s", (const char*)msg);
1132 1132
1133 QDataStream stream( _data, IO_ReadOnly ); 1133 QDataStream stream( _data, IO_ReadOnly );
1134 if ( msg == "info(QString)" ) 1134 if ( msg == "info(QString)" )
1135 { 1135 {
1136 QString info; 1136 QString info;
1137 stream >> info; 1137 stream >> info;
1138 QMessageBox::information(this, PROGNAME, info); 1138 QMessageBox::information(this, PROGNAME, info);
1139 } 1139 }
1140 else if ( msg == "Update(int)" ) 1140 else if ( msg == "Update(int)" )
1141 { 1141 {
1142 int info; 1142 int info;
1143 stream >> info; 1143 stream >> info;
1144 if (info) 1144 if (info)
1145 { 1145 {
1146 reader->bDoUpdates = true; 1146 reader->bDoUpdates = true;
1147 reader->refresh(); 1147 reader->refresh();
1148 } 1148 }
1149 else 1149 else
1150 { 1150 {
1151 reader->bDoUpdates = false; 1151 reader->bDoUpdates = false;
1152 } 1152 }
1153 } 1153 }
1154 else if ( msg == "warn(QString)" ) 1154 else if ( msg == "warn(QString)" )
1155 { 1155 {
1156 QString info; 1156 QString info;
1157 stream >> info; 1157 stream >> info;
1158 QMessageBox::warning(this, PROGNAME, info); 1158 QMessageBox::warning(this, PROGNAME, info);
1159 } 1159 }
1160 else if ( msg == "exit()" ) 1160 else if ( msg == "exit()" )
1161 { 1161 {
1162 m_dontSave = true; 1162 m_dontSave = true;
1163 close(); 1163 close();
1164 } 1164 }
1165 else if ( msg == "pageDown()" ) 1165 else if ( msg == "pageDown()" )
1166 { 1166 {
1167 reader->dopagedn(); 1167 reader->dopagedn();
1168 } 1168 }
1169 else if ( msg == "pageUp()" ) 1169 else if ( msg == "pageUp()" )
1170 { 1170 {
1171 reader->dopageup(); 1171 reader->dopageup();
1172 } 1172 }
1173 else if ( msg == "lineDown()" ) 1173 else if ( msg == "lineDown()" )
1174 { 1174 {
1175 reader->lineDown(); 1175 reader->lineDown();
1176 } 1176 }
1177 else if ( msg == "lineUp()" ) 1177 else if ( msg == "lineUp()" )
1178 { 1178 {
1179 reader->lineUp(); 1179 reader->lineUp();
1180 } 1180 }
1181 else if ( msg == "showText()" ) 1181 else if ( msg == "showText()" )
1182 { 1182 {
1183 showEditTools(); 1183 showEditTools();
1184 } 1184 }
1185 else if ( msg == "home()" ) 1185 else if ( msg == "home()" )
1186 { 1186 {
1187 reader->goHome(); 1187 reader->goHome();
1188 } 1188 }
1189 else if ( msg == "back()" ) 1189 else if ( msg == "back()" )
1190 { 1190 {
1191 reader->goBack(); 1191 reader->goBack();
1192 } 1192 }
1193 else if ( msg == "forward()" ) 1193 else if ( msg == "forward()" )
1194 { 1194 {
1195 reader->goForward(); 1195 reader->goForward();
1196 } 1196 }
1197 else if ( msg == "File/Open(QString)" ) 1197 else if ( msg == "File/Open(QString)" )
1198 { 1198 {
1199 QString info; 1199 QString info;
1200 stream >> info; 1200 stream >> info;
1201 openFile( info ); 1201 openFile( info );
1202 } 1202 }
1203 else if ( msg == "File/Info()" ) 1203 else if ( msg == "File/Info()" )
1204 { 1204 {
1205 showinfo(); 1205 showinfo();
1206 } 1206 }
1207 else if ( msg == "File/Action(QString)" ) 1207 else if ( msg == "File/Action(QString)" )
1208 { 1208 {
1209 QString info; 1209 QString info;
1210 stream >> info; 1210 stream >> info;
1211 m_spaceTarget = ActNameToInt(info); 1211 m_spaceTarget = ActNameToInt(info);
1212 } 1212 }
1213 else if ( msg == "Navigation/Scroll(int)" ) 1213 else if ( msg == "Navigation/Scroll(int)" )
1214 { 1214 {
1215 int info; 1215 int info;
1216 stream >> info; 1216 stream >> info;
1217 autoScroll(info); 1217 autoScroll(info);
1218 } 1218 }
1219 1219
1220 else if ( msg == "Navigation/GotoStart()" ) 1220 else if ( msg == "Navigation/GotoStart()" )
1221 { 1221 {
1222 gotoStart(); 1222 gotoStart();
1223 } 1223 }
1224 else if ( msg == "Navigation/GotoEnd()" ) 1224 else if ( msg == "Navigation/GotoEnd()" )
1225 { 1225 {
1226 gotoEnd(); 1226 gotoEnd();
1227 } 1227 }
1228 else if ( msg == "Navigation/Jump(int)" ) 1228 else if ( msg == "Navigation/Jump(int)" )
1229 { 1229 {
1230 int info; 1230 int info;
1231 stream >> info; 1231 stream >> info;
1232 reader->locate(info); 1232 reader->locate(info);
1233 } 1233 }
1234 else if ( msg == "Navigation/Page/LineScroll(int)" ) 1234 else if ( msg == "Navigation/Page/LineScroll(int)" )
1235 { 1235 {
1236 int info; 1236 int info;
1237 stream >> info; 1237 stream >> info;
1238 pagemode(info); 1238 pagemode(info);
1239 } 1239 }
1240 else if ( msg == "Navigation/SetOverlap(int)" ) 1240 else if ( msg == "Navigation/SetOverlap(int)" )
1241 { 1241 {
1242 int info; 1242 int info;
1243 stream >> info; 1243 stream >> info;
1244 reader->m_overlap = info; 1244 reader->m_overlap = info;
1245 } 1245 }
1246 else if ( msg == "Navigation/SetMargin(int)" ) 1246 else if ( msg == "Navigation/SetMargin(int)" )
1247 { 1247 {
1248 int info; 1248 int info;
1249 stream >> info; 1249 stream >> info;
1250 do_margin(info); 1250 do_margin(info);
1251 } 1251 }
1252 else if ( msg == "File/SetDictionary(QString)" ) 1252 else if ( msg == "File/SetDictionary(QString)" )
1253 { 1253 {
1254 QString info; 1254 QString info;
1255 stream >> info; 1255 stream >> info;
1256 do_settarget(info); 1256 do_settarget(info);
1257 } 1257 }
1258#ifdef _SCROLLPIPE 1258#ifdef _SCROLLPIPE
1259 else if ( msg == "File/SetScrollTarget(QString)" ) 1259 else if ( msg == "File/SetScrollTarget(QString)" )
1260 { 1260 {
1261 QString info; 1261 QString info;
1262 stream >> info; 1262 stream >> info;
1263 reader->m_pipetarget = info; 1263 reader->m_pipetarget = info;
1264 } 1264 }
1265#endif 1265#endif
1266 else if ( msg == "File/Two/OneTouch(int)" ) 1266 else if ( msg == "File/Two/OneTouch(int)" )
1267 { 1267 {
1268 int info; 1268 int info;
1269 stream >> info; 1269 stream >> info;
1270 setTwoTouch(info); 1270 setTwoTouch(info);
1271 } 1271 }
1272 else if ( msg == "Target/Annotation(int)" ) 1272 else if ( msg == "Target/Annotation(int)" )
1273 { 1273 {
1274 int info; 1274 int info;
1275 stream >> info; 1275 stream >> info;
1276 OnAnnotation(info); 1276 OnAnnotation(info);
1277 } 1277 }
1278 else if ( msg == "Target/Dictionary(int)" ) 1278 else if ( msg == "Target/Dictionary(int)" )
1279 { 1279 {
1280 int info; 1280 int info;
1281 stream >> info; 1281 stream >> info;
1282 OnDictionary(info); 1282 OnDictionary(info);
1283 } 1283 }
1284 else if ( msg == "Target/Clipboard(int)" ) 1284 else if ( msg == "Target/Clipboard(int)" )
1285 { 1285 {
1286 int info; 1286 int info;
1287 stream >> info; 1287 stream >> info;
1288 OnClipboard(info); 1288 OnClipboard(info);
1289 } 1289 }
1290 else if ( msg == "File/Find(QString)" ) 1290 else if ( msg == "File/Find(QString)" )
1291 { 1291 {
1292 QString info; 1292 QString info;
1293 stream >> info; 1293 stream >> info;
1294 QRegExp arg(info); 1294 QRegExp arg(info);
1295 size_t pos = reader->pagelocate(); 1295 size_t pos = reader->pagelocate();
1296 size_t start = pos; 1296 size_t start = pos;
1297 CDrawBuffer test(&(reader->m_fontControl)); 1297 CDrawBuffer test(&(reader->m_fontControl));
1298 reader->getline(&test); 1298 reader->getline(&test);
1299 while (arg.match(toQString(test.data())) == -1) 1299 while (arg.match(toQString(test.data())) == -1)
1300 { 1300 {
1301 pos = reader->locate(); 1301 pos = reader->locate();
1302 if (!reader->getline(&test)) 1302 if (!reader->getline(&test))
1303 { 1303 {
1304 QMessageBox::information(this, PROGNAME, QString("Can't find\n")+info); 1304 QMessageBox::information(this, PROGNAME, QString("Can't find\n")+info);
1305 pos = start; 1305 pos = start;
1306 break; 1306 break;
1307 } 1307 }
1308 } 1308 }
1309 reader->locate(pos); 1309 reader->locate(pos);
1310 } 1310 }
1311 else if ( msg == "File/Fullscreen(int)" ) 1311 else if ( msg == "File/Fullscreen(int)" )
1312 { 1312 {
1313 int info; 1313 int info;
1314 stream >> info; 1314 stream >> info;
1315 setfullscreen(info); 1315 setfullscreen(info);
1316 } 1316 }
1317 else if ( msg == "File/Continuous(int)" ) 1317 else if ( msg == "File/Continuous(int)" )
1318 { 1318 {
1319 int info; 1319 int info;
1320 stream >> info; 1320 stream >> info;
1321 setcontinuous(info); 1321 setcontinuous(info);
1322 } 1322 }
1323 else if ( msg == "Markup(QString)" ) 1323 else if ( msg == "Markup(QString)" )
1324 { 1324 {
1325 QString info; 1325 QString info;
1326 stream >> info; 1326 stream >> info;
1327 if (info == "Auto") 1327 if (info == "Auto")
1328 { 1328 {
1329 autofmt(true); 1329 autofmt(true);
1330 } 1330 }
1331 if (info == "None") 1331 if (info == "None")
1332 { 1332 {
1333 autofmt(false); 1333 autofmt(false);
1334 textfmt(false); 1334 textfmt(false);
1335 striphtml(false); 1335 striphtml(false);
1336 peanut(false); 1336 peanut(false);
1337 } 1337 }
1338 if (info == "Text") 1338 if (info == "Text")
1339 { 1339 {
1340 textfmt(true); 1340 textfmt(true);
1341 } 1341 }
1342 if (info == "HTML") 1342 if (info == "HTML")
1343 { 1343 {
1344 striphtml(true); 1344 striphtml(true);
1345 } 1345 }
1346 if (info == "Peanut/PML") 1346 if (info == "Peanut/PML")
1347 { 1347 {
1348 peanut(true); 1348 peanut(true);
1349 } 1349 }
1350 } 1350 }
1351 else if ( msg == "Layout/StripCR(int)" ) 1351 else if ( msg == "Layout/StripCR(int)" )
1352 { 1352 {
1353 int info; 1353 int info;
1354 stream >> info; 1354 stream >> info;
1355 stripcr(info); 1355 stripcr(info);
1356 } 1356 }
1357 else if ( msg == "Layout/Dehyphen(int)" ) 1357 else if ( msg == "Layout/Dehyphen(int)" )
1358 { 1358 {
1359 int info; 1359 int info;
1360 stream >> info; 1360 stream >> info;
1361 dehyphen(info); 1361 dehyphen(info);
1362 } 1362 }
1363 else if ( msg == "Layout/Depluck(int)" ) 1363 else if ( msg == "Layout/Depluck(int)" )
1364 { 1364 {
1365 int info; 1365 int info;
1366 stream >> info; 1366 stream >> info;
1367 depluck(info); 1367 depluck(info);
1368 } 1368 }
1369 else if ( msg == "Layout/Dejpluck(int)" ) 1369 else if ( msg == "Layout/Dejpluck(int)" )
1370 { 1370 {
1371 int info; 1371 int info;
1372 stream >> info; 1372 stream >> info;
1373 dejpluck(info); 1373 dejpluck(info);
1374 } 1374 }
1375 else if ( msg == "Layout/SingleSpace(int)" ) 1375 else if ( msg == "Layout/SingleSpace(int)" )
1376 { 1376 {
1377 int info; 1377 int info;
1378 stream >> info; 1378 stream >> info;
1379 onespace(info); 1379 onespace(info);
1380 } 1380 }
1381#ifdef REPALM 1381#ifdef REPALM
1382 else if ( msg == "Layout/Repalm(int)" ) 1382 else if ( msg == "Layout/Repalm(int)" )
1383 { 1383 {
1384 int info; 1384 int info;
1385 stream >> info; 1385 stream >> info;
1386 repalm(info); 1386 repalm(info);
1387 } 1387 }
1388#endif 1388#endif
1389 else if ( msg == "Layout/Unindent(int)" ) 1389 else if ( msg == "Layout/Unindent(int)" )
1390 { 1390 {
1391 int info; 1391 int info;
1392 stream >> info; 1392 stream >> info;
1393 unindent(info); 1393 unindent(info);
1394 } 1394 }
1395 else if ( msg == "Layout/Re-paragraph(int)" ) 1395 else if ( msg == "Layout/Re-paragraph(int)" )
1396 { 1396 {
1397 int info; 1397 int info;
1398 stream >> info; 1398 stream >> info;
1399 repara(info); 1399 repara(info);
1400 } 1400 }
1401 else if ( msg == "Layout/DoubleSpace(int)" ) 1401 else if ( msg == "Layout/DoubleSpace(int)" )
1402 { 1402 {
1403 int info; 1403 int info;
1404 stream >> info; 1404 stream >> info;
1405 dblspce(info); 1405 dblspce(info);
1406 } 1406 }
1407 else if ( msg == "Layout/Indent(int)" ) 1407 else if ( msg == "Layout/Indent(int)" )
1408 { 1408 {
1409 int info; 1409 int info;
1410 stream >> info; 1410 stream >> info;
1411 reader->bindenter = info; 1411 reader->bindenter = info;
1412 reader->setfilter(reader->getfilter()); 1412 reader->setfilter(reader->getfilter());
1413 } 1413 }
1414 else if ( msg == "Layout/Remap(int)" ) 1414 else if ( msg == "Layout/Remap(int)" )
1415 { 1415 {
1416 int info; 1416 int info;
1417 stream >> info; 1417 stream >> info;
1418 remap(info); 1418 remap(info);
1419 } 1419 }
1420 else if ( msg == "Layout/Embolden(int)" ) 1420 else if ( msg == "Layout/Embolden(int)" )
1421 { 1421 {
1422 int info; 1422 int info;
1423 stream >> info; 1423 stream >> info;
1424 embolden(info); 1424 embolden(info);
1425 } 1425 }
1426 else if ( msg == "Format/Ideogram/Word(int)" ) 1426 else if ( msg == "Format/Ideogram/Word(int)" )
1427 { 1427 {
1428 int info; 1428 int info;
1429 stream >> info; 1429 stream >> info;
1430 monospace(info); 1430 monospace(info);
1431 } 1431 }
1432 else if ( msg == "Format/SetWidth(int)" ) 1432 else if ( msg == "Format/SetWidth(int)" )
1433 { 1433 {
1434 int info; 1434 int info;
1435 stream >> info; 1435 stream >> info;
1436 reader->m_charpc = info; 1436 reader->m_charpc = info;
1437 reader->setfont(); 1437 reader->setfont();
1438 reader->refresh(); 1438 reader->refresh();
1439 } 1439 }
1440 else if ( msg == "Format/SetFont(QString,int)" ) 1440 else if ( msg == "Format/SetFont(QString,int)" )
1441 { 1441 {
1442 QString fontname; 1442 QString fontname;
1443 int size; 1443 int size;
1444 stream >> fontname; 1444 stream >> fontname;
1445 stream >> size; 1445 stream >> size;
1446 setfontHelper(fontname, size); 1446 setfontHelper(fontname, size);
1447 } 1447 }
1448 else if ( msg == "Marks/Autogen(QString)" ) 1448 else if ( msg == "Marks/Autogen(QString)" )
1449 { 1449 {
1450 QString info; 1450 QString info;
1451 stream >> info; 1451 stream >> info;
1452 do_autogen(info); 1452 do_autogen(info);
1453 } 1453 }
1454 else if ( msg == "File/StartBlock()" ) 1454 else if ( msg == "File/StartBlock()" )
1455 { 1455 {
1456 editMark(); 1456 editMark();
1457 } 1457 }
1458 else if ( msg == "File/CopyBlock()" ) 1458 else if ( msg == "File/CopyBlock()" )
1459 { 1459 {
1460 editCopy(); 1460 editCopy();
1461 } 1461 }
1462} 1462}
1463#endif 1463#endif
1464ActionTypes QTReaderApp::ActNameToInt(const QString& _enc) 1464ActionTypes QTReaderApp::ActNameToInt(const QString& _enc)
1465{ 1465{
1466 for (int i = 0; i < MAX_ACTIONS; i++) 1466 for (int i = 0; i < MAX_ACTIONS; i++)
1467 { 1467 {
1468 if (m_buttonAction[i]->text() == _enc) return (ActionTypes)i; 1468 if (m_buttonAction[i]->text() == _enc) return (ActionTypes)i;
1469 } 1469 }
1470 return cesAutoScroll; 1470 return cesAutoScroll;
1471} 1471}
1472 1472
1473void QTReaderApp::setfullscreen(bool sfs) 1473void QTReaderApp::setfullscreen(bool sfs)
1474{ 1474{
1475 reader->bDoUpdates = false; 1475 reader->bDoUpdates = false;
1476 m_fullscreen = sfs; 1476 m_fullscreen = sfs;
1477 showEditTools(); 1477 showEditTools();
1478// qApp->processEvents(); 1478// qApp->processEvents();
1479 reader->bDoUpdates = true; 1479 reader->bDoUpdates = true;
1480 reader->update(); 1480 reader->update();
1481} 1481}
1482 1482
1483void QTReaderApp::buttonActionSelected(QAction* _a) 1483void QTReaderApp::buttonActionSelected(QAction* _a)
1484{ 1484{
1485//// qDebug("es:%x : %s (%u)", _a, (const char *)(_a->text()), ActNameToInt(_a->text())); 1485//// qDebug("es:%x : %s (%u)", _a, (const char *)(_a->text()), ActNameToInt(_a->text()));
1486 m_spaceTarget = ActNameToInt(_a->text()); 1486 m_spaceTarget = ActNameToInt(_a->text());
1487} 1487}
1488 1488
1489QTReaderApp::~QTReaderApp() 1489QTReaderApp::~QTReaderApp()
1490{ 1490{
1491} 1491}
1492 1492
1493void QTReaderApp::autoScroll(bool _b) 1493void QTReaderApp::autoScroll(bool _b)
1494{ 1494{
1495 reader->setautoscroll(_b); 1495 reader->setautoscroll(_b);
1496 setScrollState(reader->m_autoScroll); 1496 setScrollState(reader->m_autoScroll);
1497} 1497}
1498 1498
1499void QTReaderApp::zoomin() 1499void QTReaderApp::zoomin()
1500{ 1500{
1501 reader->zoomin(); 1501 reader->zoomin();
1502} 1502}
1503 1503
1504void QTReaderApp::zoomout() 1504void QTReaderApp::zoomout()
1505{ 1505{
1506 reader->zoomout(); 1506 reader->zoomout();
1507} 1507}
1508 1508
1509void QTReaderApp::clearBkmkList() 1509void QTReaderApp::clearBkmkList()
1510{ 1510{
1511 delete pBkmklist; 1511 delete pBkmklist;
1512 pBkmklist = NULL; 1512 pBkmklist = NULL;
1513 m_fBkmksChanged = false; 1513 m_fBkmksChanged = false;
1514} 1514}
1515 1515
1516void QTReaderApp::fileClose() 1516void QTReaderApp::fileClose()
1517{ 1517{
1518 CCloseDialog* cd = new CCloseDialog(reader->m_string, false, this); 1518 CCloseDialog* cd = new CCloseDialog(reader->m_string, false, this);
1519 if (cd->exec()) 1519 if (cd->exec())
1520 { 1520 {
1521 if (pOpenlist != NULL) 1521 if (pOpenlist != NULL)
1522 { 1522 {
1523 int ind = 0; 1523 int ind = 0;
1524 Bkmk* p = (*pOpenlist)[ind]; 1524 Bkmk* p = (*pOpenlist)[ind];
1525 while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) 1525 while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile)
1526 { 1526 {
1527 p = (*pOpenlist)[++ind]; 1527 p = (*pOpenlist)[++ind];
1528 } 1528 }
1529 if (p != NULL) pOpenlist->erase(ind); 1529 if (p != NULL) pOpenlist->erase(ind);
1530 if (cd->delFile()) 1530 if (cd->delFile())
1531 { 1531 {
1532 unlink((const char*)reader->m_lastfile); 1532 unlink((const char*)reader->m_lastfile);
1533 } 1533 }
1534 if (cd->delMarks()) 1534 if (cd->delMarks())
1535 { 1535 {
1536#ifndef USEQPE 1536#ifndef USEQPE
1537 QDir d = QDir::home(); // "/" 1537 QDir d = QDir::home(); // "/"
1538 d.cd(APPDIR); 1538 d.cd(APPDIR);
1539 d.remove(reader->m_string); 1539 d.remove(reader->m_string);
1540#else /* USEQPE */ 1540#else /* USEQPE */
1541 unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); 1541 unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string));
1542#endif /* USEQPE */ 1542#endif /* USEQPE */
1543 } 1543 }
1544 if (cd->delConfig()) 1544 if (cd->delConfig())
1545 { 1545 {
1546#ifndef USEQPE 1546#ifndef USEQPE
1547 QDir d = QDir::home(); // "/" 1547 QDir d = QDir::home(); // "/"
1548 d.cd(APPDIR "/configs"); 1548 d.cd(APPDIR "/configs");
1549 d.remove(reader->m_string); 1549 d.remove(reader->m_string);
1550#else /* USEQPE */ 1550#else /* USEQPE */
1551 unlink((const char *)Global::applicationFileName(APPDIR "/configs",reader->m_string)); 1551 unlink((const char *)Global::applicationFileName(APPDIR "/configs",reader->m_string));
1552#endif /* USEQPE */ 1552#endif /* USEQPE */
1553 } 1553 }
1554 } 1554 }
1555 1555
1556 fileOpen2(); 1556 fileOpen2();
1557 } 1557 }
1558 delete cd; 1558 delete cd;
1559} 1559}
1560 1560
1561void QTReaderApp::updatefileinfo() 1561void QTReaderApp::updatefileinfo()
1562{ 1562{
1563 if (reader->m_string.isEmpty()) return; 1563 if (reader->m_string.isEmpty()) return;
1564 if (reader->m_lastfile.isEmpty()) return; 1564 if (reader->m_lastfile.isEmpty()) return;
1565 tchar* nm = fromQString(reader->m_string); 1565 tchar* nm = fromQString(reader->m_string);
1566 tchar* fl = fromQString(reader->m_lastfile); 1566 tchar* fl = fromQString(reader->m_lastfile);
1567// qDebug("Lastfile:%x", fl); 1567// qDebug("Lastfile:%x", fl);
1568 bool notadded = true; 1568 bool notadded = true;
1569 if (pOpenlist == NULL) pOpenlist = new CList<Bkmk>; 1569 if (pOpenlist == NULL) pOpenlist = new CList<Bkmk>;
1570 else 1570 else
1571 { 1571 {
1572 for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) 1572 for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++)
1573 { 1573 {
1574 if (ustrcmp(CFiledata(iter->anno()).name(), fl) == 0) 1574 if (ustrcmp(CFiledata(iter->anno()).name(), fl) == 0)
1575 { 1575 {
1576 iter->value(reader->pagelocate()); 1576 iter->value(reader->pagelocate());
1577 unsigned short dlen; 1577 unsigned short dlen;
1578 unsigned char* data; 1578 unsigned char* data;
1579 CFiledata fd(iter->anno()); 1579 CFiledata fd(iter->anno());
1580 reader->setSaveData(data, dlen, fd.content(), fd.length()); 1580 reader->setSaveData(data, dlen, fd.content(), fd.length());
1581 // qDebug("Filedata(1):%u, %u", fd.length(), dlen); 1581 // qDebug("Filedata(1):%u, %u", fd.length(), dlen);
1582 // getstate(data, dlen); 1582 // getstate(data, dlen);
1583 iter->setAnno(data, dlen); 1583 iter->setAnno(data, dlen);
1584 notadded = false; 1584 notadded = false;
1585 delete [] data; 1585 delete [] data;
1586 break; 1586 break;
1587 } 1587 }
1588 } 1588 }
1589 } 1589 }
1590// qDebug("Added?:%x", notadded); 1590// qDebug("Added?:%x", notadded);
1591 if (notadded) 1591 if (notadded)
1592 { 1592 {
1593 struct stat fnstat; 1593 struct stat fnstat;
1594 stat((const char *)reader->m_lastfile, &fnstat); 1594 stat((const char *)reader->m_lastfile, &fnstat);
1595 CFiledata fd(fnstat.st_mtime, fl); 1595 CFiledata fd(fnstat.st_mtime, fl);
1596 unsigned short dlen; 1596 unsigned short dlen;
1597 unsigned char* data; 1597 unsigned char* data;
1598 reader->setSaveData(data, dlen, fd.content(), fd.length()); 1598 reader->setSaveData(data, dlen, fd.content(), fd.length());
1599 pOpenlist->push_front(Bkmk(nm, data, dlen, reader->pagelocate())); 1599 pOpenlist->push_front(Bkmk(nm, data, dlen, reader->pagelocate()));
1600 //qDebug("Filedata(2):%u, %u", fd.length(), dlen); 1600 //qDebug("Filedata(2):%u, %u", fd.length(), dlen);
1601 delete [] data; 1601 delete [] data;
1602 } 1602 }
1603 delete [] nm; 1603 delete [] nm;
1604 delete [] fl; 1604 delete [] fl;
1605} 1605}
1606 1606
1607void QTReaderApp::fileOpen() 1607void QTReaderApp::fileOpen()
1608{ 1608{
1609/* 1609/*
1610 menu->hide(); 1610 menu->hide();
1611 fileBar->hide(); 1611 fileBar->hide();
1612 if (regVisible) regBar->hide(); 1612 if (regVisible) regBar->hide();
1613 if (searchVisible) searchBar->hide(); 1613 if (searchVisible) searchBar->hide();
1614*/ 1614*/
1615// qDebug("fileOpen"); 1615// qDebug("fileOpen");
1616// if (!reader->m_lastfile.isEmpty()) 1616// if (!reader->m_lastfile.isEmpty())
1617 updatefileinfo(); 1617 updatefileinfo();
1618 fileOpen2(); 1618 fileOpen2();
1619} 1619}
1620 1620
1621void QTReaderApp::fileOpen2() 1621void QTReaderApp::fileOpen2()
1622{ 1622{
1623 if (pBkmklist != NULL) 1623 if (pBkmklist != NULL)
1624 { 1624 {
1625 if (m_fBkmksChanged) 1625 if (m_fBkmksChanged)
1626 { 1626 {
1627 if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0) 1627 if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0)
1628 savebkmks(); 1628 savebkmks();
1629 } 1629 }
1630 delete pBkmklist; 1630 delete pBkmklist;
1631 pBkmklist = NULL; 1631 pBkmklist = NULL;
1632 m_fBkmksChanged = false; 1632 m_fBkmksChanged = false;
1633 } 1633 }
1634 reader->disableAutoscroll(); 1634 reader->disableAutoscroll();
1635/* 1635/*
1636 editorStack->raiseWidget( fileSelector ); 1636 editorStack->raiseWidget( fileSelector );
1637 fileSelector->reread(); 1637 fileSelector->reread();
1638*/ 1638*/
1639 bool usebrowser = true; 1639 bool usebrowser = true;
1640 if (pOpenlist != NULL) 1640 if (pOpenlist != NULL)
1641 { 1641 {
1642 m_nBkmkAction = cOpenFile; 1642 m_nBkmkAction = cOpenFile;
1643 if (listbkmk(pOpenlist, "Browse")) usebrowser = false; 1643 if (listbkmk(pOpenlist, "Browse")) usebrowser = false;
1644 } 1644 }
1645 if (usebrowser) 1645 if (usebrowser)
1646 { 1646 {
1647 QString fn = usefilebrowser(); 1647 QString fn = usefilebrowser();
1648 //qApp->processEvents(); 1648 //qApp->processEvents();
1649 if (!fn.isEmpty() && QFileInfo(fn).isFile()) 1649 if (!fn.isEmpty() && QFileInfo(fn).isFile())
1650 { 1650 {
1651 openFile(fn); 1651 openFile(fn);
1652 } 1652 }
1653 reader->setFocus(); 1653 reader->setFocus();
1654 } 1654 }
1655// reader->refresh(); 1655// reader->refresh();
1656// qDebug("HEIGHT:%d", reader->m_lastheight); 1656// qDebug("HEIGHT:%d", reader->m_lastheight);
1657} 1657}
1658 1658
1659QString QTReaderApp::usefilebrowser() 1659QString QTReaderApp::usefilebrowser()
1660{ 1660{
1661#ifndef USEQPE 1661#ifndef USEQPE
1662 QString s( QFileDialog::getOpenFileName( reader->m_lastfile, QString::null, this ) ); 1662 QString s( QFileDialog::getOpenFileName( reader->m_lastfile, QString::null, this ) );
1663 return s; 1663 return s;
1664#else 1664#else
1665 fileBrowser* fb = new fileBrowser(false, this,"OpieReader",!m_bFloatingDialog, 1665 fileBrowser* fb = new fileBrowser(false, this,"OpieReader",!m_bFloatingDialog,
1666 0, 1666 0,
1667 // WStyle_Customize | WStyle_NoBorderEx, 1667 // WStyle_Customize | WStyle_NoBorderEx,
1668 "*", QFileInfo(reader->m_lastfile).dirPath(true)); 1668 "*", QFileInfo(reader->m_lastfile).dirPath(true));
1669 1669
1670 1670
1671 QString fn; 1671 QString fn;
1672 if (fb->exec()) 1672 if (fb->exec())
1673 { 1673 {
1674 fn = fb->getCurrentFile(); 1674 fn = fb->getCurrentFile();
1675 } 1675 }
1676// qDebug("Selected %s", (const char*)fn); 1676// qDebug("Selected %s", (const char*)fn);
1677 delete fb; 1677 delete fb;
1678 showEditTools(); 1678 showEditTools();
1679 return fn; 1679 return fn;
1680#endif 1680#endif
1681} 1681}
1682 1682
1683void QTReaderApp::showgraphic(QImage& pm) 1683void QTReaderApp::showgraphic(QImage& pm)
1684{ 1684{
1685 QPixmap pc; 1685 QPixmap pc;
1686 pc.convertFromImage(pm); 1686 pc.convertFromImage(pm);
1687 m_graphicwin->setPixmap(pc); 1687 m_graphicwin->setPixmap(pc);
1688 editorStack->raiseWidget( m_graphicwin ); 1688 editorStack->raiseWidget( m_graphicwin );
1689 m_graphicwin->setFocus(); 1689 m_graphicwin->setFocus();
1690} 1690}
1691 1691
1692 1692
1693void QTReaderApp::showprefs() 1693void QTReaderApp::showprefs()
1694{ 1694{
1695 CPrefs* prefwin = new CPrefs(!m_bFloatingDialog, this); 1695 CPrefs* prefwin = new CPrefs(!m_bFloatingDialog, this);
1696 1696
1697 prefwin->twotouch(m_twoTouch); 1697 prefwin->twotouch(m_twoTouch);
1698 prefwin->propfontchange(m_propogatefontchange); 1698 prefwin->propfontchange(m_propogatefontchange);
1699 prefwin->StripCR(reader->bstripcr); 1699 prefwin->StripCR(reader->bstripcr);
1700 prefwin->Dehyphen(reader->bdehyphen); 1700 prefwin->Dehyphen(reader->bdehyphen);
1701 prefwin->SingleSpace(reader->bonespace); 1701 prefwin->SingleSpace(reader->bonespace);
1702 prefwin->Unindent(reader->bunindent); 1702 prefwin->Unindent(reader->bunindent);
1703 prefwin->Reparagraph(reader->brepara); 1703 prefwin->Reparagraph(reader->brepara);
1704 prefwin->DoubleSpace(reader->bdblspce); 1704 prefwin->DoubleSpace(reader->bdblspce);
1705 prefwin->Remap(reader->bremap); 1705 prefwin->Remap(reader->bremap);
1706 prefwin->Embolden(reader->bmakebold); 1706 prefwin->Embolden(reader->bmakebold);
1707 prefwin->FullJustify(reader->bfulljust); 1707 prefwin->FullJustify(reader->bfulljust);
1708 prefwin->ParaLead(reader->getextraspace()); 1708 prefwin->ParaLead(reader->getextraspace());
1709 prefwin->LineLead(reader->getlead()); 1709 prefwin->LineLead(reader->getlead());
1710 prefwin->Margin(reader->m_border); 1710 prefwin->Margin(reader->m_border);
1711 prefwin->Indent(reader->bindenter); 1711 prefwin->Indent(reader->bindenter);
1712 if (reader->bautofmt) 1712 if (reader->bautofmt)
1713 { 1713 {
1714 prefwin->Markup(0); 1714 prefwin->Markup(0);
1715 } 1715 }
1716 else if (reader->btextfmt) 1716 else if (reader->btextfmt)
1717 { 1717 {
1718 prefwin->Markup(2); 1718 prefwin->Markup(2);
1719 } 1719 }
1720 else if (reader->bstriphtml) 1720 else if (reader->bstriphtml)
1721 { 1721 {
1722 prefwin->Markup(3); 1722 prefwin->Markup(3);
1723 } 1723 }
1724 else if (reader->bpeanut) 1724 else if (reader->bpeanut)
1725 { 1725 {
1726 prefwin->Markup(4); 1726 prefwin->Markup(4);
1727 } 1727 }
1728 else 1728 else
1729 { 1729 {
1730 prefwin->Markup(1); 1730 prefwin->Markup(1);
1731 } 1731 }
1732 prefwin->Depluck(reader->bdepluck); 1732 prefwin->Depluck(reader->bdepluck);
1733 prefwin->Dejpluck(reader->bdejpluck); 1733 prefwin->Dejpluck(reader->bdejpluck);
1734 prefwin->Continuous(reader->m_continuousDocument); 1734 prefwin->Continuous(reader->m_continuousDocument);
1735 1735
1736 prefwin->dictApplication(m_targetapp); 1736 prefwin->dictApplication(m_targetapp);
1737 prefwin->dictMessage(m_targetmsg); 1737 prefwin->dictMessage(m_targetmsg);
1738 1738
1739 prefwin->spaceAction(m_spaceTarget); 1739 prefwin->spaceAction(m_spaceTarget);
1740 prefwin->escapeAction(m_escapeTarget); 1740 prefwin->escapeAction(m_escapeTarget);
1741 prefwin->returnAction(m_returnTarget); 1741 prefwin->returnAction(m_returnTarget);
1742 prefwin->leftAction(m_leftTarget); 1742 prefwin->leftAction(m_leftTarget);
1743 prefwin->rightAction(m_rightTarget); 1743 prefwin->rightAction(m_rightTarget);
1744 prefwin->upAction(m_upTarget); 1744 prefwin->upAction(m_upTarget);
1745 prefwin->downAction(m_downTarget); 1745 prefwin->downAction(m_downTarget);
1746 1746
1747 prefwin->leftScroll(m_leftScroll); 1747 prefwin->leftScroll(m_leftScroll);
1748 prefwin->rightScroll(m_rightScroll); 1748 prefwin->rightScroll(m_rightScroll);
1749 prefwin->upScroll(m_upScroll); 1749 prefwin->upScroll(m_upScroll);
1750 prefwin->downScroll(m_downScroll); 1750 prefwin->downScroll(m_downScroll);
1751 1751
1752 prefwin->miscannotation(m_doAnnotation); 1752 prefwin->miscannotation(m_doAnnotation);
1753 prefwin->miscdictionary(m_doDictionary); 1753 prefwin->miscdictionary(m_doDictionary);
1754 prefwin->miscclipboard(m_doClipboard); 1754 prefwin->miscclipboard(m_doClipboard);
1755 1755
1756 prefwin->SwapMouse(reader->m_swapmouse); 1756 prefwin->SwapMouse(reader->m_swapmouse);
1757 1757
1758 prefwin->Font(reader->m_fontname); 1758 prefwin->Font(reader->m_fontname);
1759 1759
1760 prefwin->gfxsize(reader->getBaseSize()); 1760 prefwin->gfxsize(reader->getBaseSize());
1761 1761
1762 prefwin->pageoverlap(reader->m_overlap); 1762 prefwin->pageoverlap(reader->m_overlap);
1763 1763
1764 prefwin->ideogram(reader->m_bMonoSpaced); 1764 prefwin->ideogram(reader->m_bMonoSpaced);
1765 1765
1766 prefwin->encoding(reader->m_encd); 1766 prefwin->encoding(reader->m_encd);
1767 1767
1768 prefwin->ideogramwidth(reader->m_charpc); 1768 prefwin->ideogramwidth(reader->m_charpc);
1769 1769
1770 if (prefwin->exec()) 1770 if (prefwin->exec())
1771 { 1771 {
1772 m_twoTouch = prefwin->twotouch(); 1772 m_twoTouch = prefwin->twotouch();
1773 reader->setTwoTouch(m_twoTouch); 1773 reader->setTwoTouch(m_twoTouch);
1774 m_touch_action->setOn(m_twoTouch); 1774 m_touch_action->setOn(m_twoTouch);
1775 1775
1776 reader->bstripcr = prefwin->StripCR(); 1776 reader->bstripcr = prefwin->StripCR();
1777 reader->bdehyphen = prefwin->Dehyphen(); 1777 reader->bdehyphen = prefwin->Dehyphen();
1778 reader->bonespace = prefwin->SingleSpace(); 1778 reader->bonespace = prefwin->SingleSpace();
1779 reader->bunindent = prefwin->Unindent(); 1779 reader->bunindent = prefwin->Unindent();
1780 reader->brepara = prefwin->Reparagraph(); 1780 reader->brepara = prefwin->Reparagraph();
1781 reader->bdblspce = prefwin->DoubleSpace(); 1781 reader->bdblspce = prefwin->DoubleSpace();
1782 reader->bremap = prefwin->Remap(); 1782 reader->bremap = prefwin->Remap();
1783 reader->bmakebold = prefwin->Embolden(); 1783 reader->bmakebold = prefwin->Embolden();
1784 reader->bfulljust = prefwin->FullJustify(); 1784 reader->bfulljust = prefwin->FullJustify();
1785 reader->setextraspace(prefwin->ParaLead()); 1785 reader->setextraspace(prefwin->ParaLead());
1786 reader->setlead(prefwin->LineLead()); 1786 reader->setlead(prefwin->LineLead());
1787 reader->m_border = prefwin->Margin(); 1787 reader->m_border = prefwin->Margin();
1788 reader->bindenter = prefwin->Indent(); 1788 reader->bindenter = prefwin->Indent();
1789 reader->bautofmt = reader->btextfmt = reader->bstriphtml = reader->bpeanut = false; 1789 reader->bautofmt = reader->btextfmt = reader->bstriphtml = reader->bpeanut = false;
1790 switch (prefwin->Markup()) 1790 switch (prefwin->Markup())
1791 { 1791 {
1792 case 0: 1792 case 0:
1793 reader->bautofmt = true; 1793 reader->bautofmt = true;
1794 break; 1794 break;
1795 case 1: 1795 case 1:
1796 break; 1796 break;
1797 case 2: 1797 case 2:
1798 reader->btextfmt = true; 1798 reader->btextfmt = true;
1799 break; 1799 break;
1800 case 3: 1800 case 3:
1801 reader->bstriphtml = true; 1801 reader->bstriphtml = true;
1802 break; 1802 break;
1803 case 4: 1803 case 4:
1804 reader->bpeanut = true; 1804 reader->bpeanut = true;
1805 break; 1805 break;
1806 default: 1806 default:
1807 qDebug("Format out of range"); 1807 qDebug("Format out of range");
1808 } 1808 }
1809 reader->bdepluck = prefwin->Depluck(); 1809 reader->bdepluck = prefwin->Depluck();
1810 reader->bdejpluck = prefwin->Dejpluck(); 1810 reader->bdejpluck = prefwin->Dejpluck();
1811 reader->setContinuous(prefwin->Continuous()); 1811 reader->setContinuous(prefwin->Continuous());
1812 1812
1813 m_spaceTarget = (ActionTypes)prefwin->spaceAction(); 1813 m_spaceTarget = (ActionTypes)prefwin->spaceAction();
1814 m_escapeTarget = (ActionTypes)prefwin->escapeAction(); 1814 m_escapeTarget = (ActionTypes)prefwin->escapeAction();
1815 m_returnTarget = (ActionTypes)prefwin->returnAction(); 1815 m_returnTarget = (ActionTypes)prefwin->returnAction();
1816 m_leftTarget = (ActionTypes)prefwin->leftAction(); 1816 m_leftTarget = (ActionTypes)prefwin->leftAction();
1817 m_rightTarget = (ActionTypes)prefwin->rightAction(); 1817 m_rightTarget = (ActionTypes)prefwin->rightAction();
1818 m_upTarget = (ActionTypes)prefwin->upAction(); 1818 m_upTarget = (ActionTypes)prefwin->upAction();
1819 m_downTarget = (ActionTypes)prefwin->downAction(); 1819 m_downTarget = (ActionTypes)prefwin->downAction();
1820 m_leftScroll = prefwin->leftScroll(); 1820 m_leftScroll = prefwin->leftScroll();
1821 m_rightScroll = prefwin->rightScroll(); 1821 m_rightScroll = prefwin->rightScroll();
1822 m_upScroll = prefwin->upScroll(); 1822 m_upScroll = prefwin->upScroll();
1823 m_downScroll = prefwin->downScroll(); 1823 m_downScroll = prefwin->downScroll();
1824 1824
1825 m_targetapp = prefwin->dictApplication(); 1825 m_targetapp = prefwin->dictApplication();
1826 m_targetmsg = prefwin->dictMessage(); 1826 m_targetmsg = prefwin->dictMessage();
1827 1827
1828 m_doAnnotation = prefwin->miscannotation(); 1828 m_doAnnotation = prefwin->miscannotation();
1829 m_doDictionary = prefwin->miscdictionary(); 1829 m_doDictionary = prefwin->miscdictionary();
1830 m_doClipboard = prefwin->miscclipboard(); 1830 m_doClipboard = prefwin->miscclipboard();
1831 reader->m_swapmouse = prefwin->SwapMouse(); 1831 reader->m_swapmouse = prefwin->SwapMouse();
1832 reader->setBaseSize(prefwin->gfxsize()); 1832 reader->setBaseSize(prefwin->gfxsize());
1833 reader->m_overlap = prefwin->pageoverlap(); 1833 reader->m_overlap = prefwin->pageoverlap();
1834 reader->m_bMonoSpaced = prefwin->ideogram(); 1834 reader->m_bMonoSpaced = prefwin->ideogram();
1835 m_setmono_action->setOn(reader->m_bMonoSpaced); 1835 m_setmono_action->setOn(reader->m_bMonoSpaced);
1836 reader->m_encd = prefwin->encoding(); 1836 reader->m_encd = prefwin->encoding();
1837 reader->m_charpc = prefwin->ideogramwidth(); 1837 reader->m_charpc = prefwin->ideogramwidth();
1838 1838
1839 if ( 1839 if (
1840 reader->m_fontname != prefwin->Font() 1840 reader->m_fontname != prefwin->Font()
1841 || 1841 ||
1842 m_propogatefontchange != prefwin->propfontchange()) 1842 m_propogatefontchange != prefwin->propfontchange())
1843 { 1843 {
1844 m_propogatefontchange = prefwin->propfontchange(); 1844 m_propogatefontchange = prefwin->propfontchange();
1845 setfontHelper(prefwin->Font()); 1845 setfontHelper(prefwin->Font());
1846 } 1846 }
1847 delete prefwin; 1847 delete prefwin;
1848 reader->setfilter(reader->getfilter()); 1848 reader->setfilter(reader->getfilter());
1849 reader->refresh(); 1849 reader->refresh();
1850 1850
1851 } 1851 }
1852 else 1852 else
1853 { 1853 {
1854 delete prefwin; 1854 delete prefwin;
1855 } 1855 }
1856} 1856}
1857 1857
1858void QTReaderApp::showtoolbarprefs() 1858void QTReaderApp::showtoolbarprefs()
1859{ 1859{
1860#ifdef USEQPE 1860#ifdef USEQPE
1861 CBarPrefs* prefwin = new CBarPrefs(APPDIR, !m_bFloatingDialog, this); 1861 CBarPrefs* prefwin = new CBarPrefs(APPDIR, !m_bFloatingDialog, this);
1862#else 1862#else
1863 QFileInfo fi; 1863 QFileInfo fi;
1864 QDir d = QDir::home(); // "/" 1864 QDir d = QDir::home(); // "/"
1865 if ( !d.cd(APPDIR) ) 1865 if ( !d.cd(APPDIR) )
1866 { // "/tmp" 1866 { // "/tmp"
1867 qWarning( "Cannot find the \"~/%s\" directory", APPDIR ); 1867 qWarning( "Cannot find the \"~/%s\" directory", APPDIR );
1868 d = QDir::home(); 1868 d = QDir::home();
1869 d.mkdir(APPDIR); 1869 d.mkdir(APPDIR);
1870 d.cd(APPDIR); 1870 d.cd(APPDIR);
1871 } 1871 }
1872 fi.setFile(d, INIFILE); 1872 fi.setFile(d, INIFILE);
1873 CBarPrefs* prefwin = new CBarPrefs(fi.absFilePath(), !m_bFloatingDialog, this); 1873 CBarPrefs* prefwin = new CBarPrefs(fi.absFilePath(), !m_bFloatingDialog, this);
1874#endif 1874#endif
1875 prefwin->tbpolicy(m_tbpolsave); 1875 prefwin->tbpolicy(m_tbpolsave);
1876 prefwin->tbposition(m_tbposition-2); 1876 prefwin->tbposition(m_tbposition-2);
1877 prefwin->tbmovable(m_tbmovesave); 1877 prefwin->tbmovable(m_tbmovesave);
1878 prefwin->floating(m_bFloatingDialog); 1878 prefwin->floating(m_bFloatingDialog);
1879 if (prefwin->exec()) 1879 if (prefwin->exec())
1880 { 1880 {
1881 m_bFloatingDialog = prefwin->floating(); 1881 m_bFloatingDialog = prefwin->floating();
1882 if ( 1882 if (
1883 m_tbpolsave != (ToolbarPolicy)prefwin->tbpolicy() 1883 m_tbpolsave != (ToolbarPolicy)prefwin->tbpolicy()
1884 || 1884 ||
1885 m_tbposition != (ToolBarDock)(prefwin->tbposition()+2) 1885 m_tbposition != (ToolBarDock)(prefwin->tbposition()+2)
1886 || 1886 ||
1887 m_tbmovesave != prefwin->tbmovable() 1887 m_tbmovesave != prefwin->tbmovable()
1888 ) 1888 )
1889 { 1889 {
1890 QMessageBox::warning(this, PROGNAME, "Some changes won't take effect\nuntil the next time the\napplication is started"); 1890 QMessageBox::warning(this, PROGNAME, "Some changes won't take effect\nuntil the next time the\napplication is started");
1891 } 1891 }
1892 m_tbpolsave = (ToolbarPolicy)prefwin->tbpolicy(); 1892 m_tbpolsave = (ToolbarPolicy)prefwin->tbpolicy();
1893 m_tbposition = (ToolBarDock)(prefwin->tbposition()+2); 1893 m_tbposition = (ToolBarDock)(prefwin->tbposition()+2);
1894 m_tbmovesave = prefwin->tbmovable(); 1894 m_tbmovesave = prefwin->tbmovable();
1895 bool isChanged = prefwin->isChanged(); 1895 bool isChanged = prefwin->isChanged();
1896 delete prefwin; 1896 delete prefwin;
1897#ifdef USEQPE 1897#ifdef USEQPE
1898 Config config( APPDIR ); 1898 Config config( APPDIR );
1899#else 1899#else
1900 QFileInfo fi; 1900 QFileInfo fi;
1901 QDir d = QDir::home(); // "/" 1901 QDir d = QDir::home(); // "/"
1902 if ( !d.cd(APPDIR) ) 1902 if ( !d.cd(APPDIR) )
1903 { // "/tmp" 1903 { // "/tmp"
1904 qWarning( "Cannot find the \"~/%s\" directory", APPDIR ); 1904 qWarning( "Cannot find the \"~/%s\" directory", APPDIR );
1905 d = QDir::home(); 1905 d = QDir::home();
1906 d.mkdir(APPDIR); 1906 d.mkdir(APPDIR);
1907 d.cd(APPDIR); 1907 d.cd(APPDIR);
1908 } 1908 }
1909 fi.setFile(d, INIFILE); 1909 fi.setFile(d, INIFILE);
1910 Config config( fi.absFilePath() ); 1910 Config config( fi.absFilePath() );
1911#endif 1911#endif
1912 if (isChanged) addtoolbars(&config); 1912 if (isChanged) addtoolbars(&config);
1913 } 1913 }
1914 else 1914 else
1915 { 1915 {
1916 delete prefwin; 1916 delete prefwin;
1917 } 1917 }
1918} 1918}
1919 1919
1920void QTReaderApp::showinfo() 1920void QTReaderApp::showinfo()
1921{ 1921{
1922 unsigned long fs, ts, pl; 1922 unsigned long fs, ts, pl;
1923 if (reader->empty()) 1923 if (reader->empty())
1924 { 1924 {
1925 QMessageBox::information(this, PROGNAME, "No file loaded", 1); 1925 QMessageBox::information(this, PROGNAME, "No file loaded", 1);
1926 } 1926 }
1927 else 1927 else
1928 { 1928 {
1929 reader->sizes(fs,ts); 1929 reader->sizes(fs,ts);
1930 pl = reader->pagelocate(); 1930 pl = reader->pagelocate();
1931 m_infoWin->setFileSize(fs); 1931 m_infoWin->setFileSize(fs);
1932 m_infoWin->setTextSize(ts); 1932 m_infoWin->setTextSize(ts);
1933 m_infoWin->setRatio(100-(100*fs + (ts >> 1))/ts); 1933 m_infoWin->setRatio(100-(100*fs + (ts >> 1))/ts);
1934 m_infoWin->setLocation(pl); 1934 m_infoWin->setLocation(pl);
1935 m_infoWin->setRead((100*pl + (ts >> 1))/ts); 1935 m_infoWin->setRead((100*pl + (ts >> 1))/ts);
1936 editorStack->raiseWidget( m_infoWin ); 1936 editorStack->raiseWidget( m_infoWin );
1937 m_infoWin->setFocus(); 1937 m_infoWin->setFocus();
1938 } 1938 }
1939} 1939}
1940 1940
1941void QTReaderApp::addAnno(const QString& name, const QString& text, size_t posn) 1941void QTReaderApp::addAnno(const QString& name, const QString& text, size_t posn)
1942{ 1942{
1943 if (pBkmklist == NULL) pBkmklist = new CList<Bkmk>; 1943 if (pBkmklist == NULL) pBkmklist = new CList<Bkmk>;
1944#ifdef _UNICODE 1944#ifdef _UNICODE
1945 CBuffer buff(name.length()+1); 1945 CBuffer buff(name.length()+1);
1946 int i; 1946 int i;
1947 for (i = 0; i < name.length(); i++) 1947 for (i = 0; i < name.length(); i++)
1948 { 1948 {
1949 buff[i] = name[i].unicode(); 1949 buff[i] = name[i].unicode();
1950 } 1950 }
1951 buff[i] = 0; 1951 buff[i] = 0;
1952 CBuffer buff2(text.length()+1); 1952 CBuffer buff2(text.length()+1);
1953 for (i = 0; i < text.length(); i++) 1953 for (i = 0; i < text.length(); i++)
1954 { 1954 {
1955 buff2[i] = text[i].unicode(); 1955 buff2[i] = text[i].unicode();
1956 } 1956 }
1957 buff2[i] = 0; 1957 buff2[i] = 0;
1958 pBkmklist->push_front(Bkmk(buff.data(), buff2.data(), posn)); 1958 pBkmklist->push_front(Bkmk(buff.data(), buff2.data(), posn));
1959#else 1959#else
1960 pBkmklist->push_front(Bkmk((const tchar*)text,posn)); 1960 pBkmklist->push_front(Bkmk((const tchar*)text,posn));
1961#endif 1961#endif
1962 m_fBkmksChanged = true; 1962 m_fBkmksChanged = true;
1963 pBkmklist->sort(); 1963 pBkmklist->sort();
1964} 1964}
1965 1965
1966void QTReaderApp::addAnno(const QString& name, const QString& text) 1966void QTReaderApp::addAnno(const QString& name, const QString& text)
1967{ 1967{
1968 if (m_annoIsEditing) 1968 if (m_annoIsEditing)
1969 { 1969 {
1970 if (name.isEmpty()) 1970 if (name.isEmpty())
1971 { 1971 {
1972 QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nPlease try again", 1); 1972 QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nPlease try again", 1);
1973 } 1973 }
1974 else 1974 else
1975 { 1975 {
1976 addAnno(name, text, m_annoWin->getPosn()); 1976 addAnno(name, text, m_annoWin->getPosn());
1977 } 1977 }
1978 showEditTools(); 1978 showEditTools();
1979 } 1979 }
1980 else 1980 else
1981 { 1981 {
1982 if (m_annoWin->edited()) 1982 if (m_annoWin->edited())
1983 { 1983 {
1984 CBuffer buff(text.length()+1); 1984 CBuffer buff(text.length()+1);
1985 int i; 1985 int i;
1986 for (i = 0; i < text.length(); i++) 1986 for (i = 0; i < text.length(); i++)
1987 { 1987 {
1988 buff[i] = text[i].unicode(); 1988 buff[i] = text[i].unicode();
1989 } 1989 }
1990 buff[i] = 0; 1990 buff[i] = 0;
1991 m_fBkmksChanged = true; 1991 m_fBkmksChanged = true;
1992 m_anno->setAnno(buff.data()); 1992 m_anno->setAnno(buff.data());
1993 } 1993 }
1994 bool found = findNextBookmark(m_anno->value()+1); 1994 bool found = findNextBookmark(m_anno->value()+1);
1995 if (found) 1995 if (found)
1996 { 1996 {
1997 m_annoWin->setName(toQString(m_anno->name())); 1997 m_annoWin->setName(toQString(m_anno->name()));
1998 m_annoWin->setAnno(toQString(m_anno->anno())); 1998 m_annoWin->setAnno(toQString(m_anno->anno()));
1999 } 1999 }
2000 else 2000 else
2001 { 2001 {
2002 showEditTools(); 2002 showEditTools();
2003 } 2003 }
2004 } 2004 }
2005} 2005}
2006 2006
2007bool QTReaderApp::findNextBookmark(size_t start) 2007bool QTReaderApp::findNextBookmark(size_t start)
2008{ 2008{
2009 bool found = false; 2009 bool found = false;
2010 for (CList<Bkmk>::iterator iter = pBkmklist->begin(); iter != pBkmklist->end(); iter++) 2010 for (CList<Bkmk>::iterator iter = pBkmklist->begin(); iter != pBkmklist->end(); iter++)
2011 { 2011 {
2012 if (iter->value() >= start) 2012 if (iter->value() >= start)
2013 { 2013 {
2014 if (iter->value() < reader->locate()) 2014 if (iter->value() < reader->locate())
2015 { 2015 {
2016 found = true; 2016 found = true;
2017 m_anno = iter.pContent(); 2017 m_anno = iter.pContent();
2018 } 2018 }
2019 break; 2019 break;
2020 } 2020 }
2021 } 2021 }
2022 return found; 2022 return found;
2023} 2023}
2024 2024
2025void QTReaderApp::addanno() 2025void QTReaderApp::addanno()
2026{ 2026{
2027 if (reader->empty()) 2027 if (reader->empty())
2028 { 2028 {
2029 QMessageBox::information(this, PROGNAME, "No file loaded", 1); 2029 QMessageBox::information(this, PROGNAME, "No file loaded", 1);
2030 } 2030 }
2031 else 2031 else
2032 { 2032 {
2033 m_annoWin->setName(""); 2033 m_annoWin->setName("");
2034 m_annoWin->setAnno(""); 2034 m_annoWin->setAnno("");
2035 m_annoWin->setPosn(reader->pagelocate()); 2035 m_annoWin->setPosn(reader->pagelocate());
2036 m_annoIsEditing = true; 2036 m_annoIsEditing = true;
2037 editorStack->raiseWidget( m_annoWin ); 2037 editorStack->raiseWidget( m_annoWin );
2038#ifdef USEQPE 2038#ifdef USEQPE
2039 Global::showInputMethod(); 2039 Global::showInputMethod();
2040#endif 2040#endif
2041 m_annoWin->setFocus(); 2041 m_annoWin->setFocus();
2042 } 2042 }
2043} 2043}
2044 2044
2045void QTReaderApp::infoClose() 2045void QTReaderApp::infoClose()
2046{ 2046{
2047 showEditTools(); 2047 showEditTools();
2048} 2048}
2049 2049
2050/* 2050/*
2051void QTReaderApp::fileRevert() 2051void QTReaderApp::fileRevert()
2052{ 2052{
2053 clear(); 2053 clear();
2054 fileOpen(); 2054 fileOpen();
2055} 2055}
2056 2056
2057void QTReaderApp::editCut() 2057void QTReaderApp::editCut()
2058{ 2058{
2059#ifndef QT_NO_CLIPBOARD 2059#ifndef QT_NO_CLIPBOARD
2060 editor->cut(); 2060 editor->cut();
2061#endif 2061#endif
2062} 2062}
2063*/ 2063*/
2064void QTReaderApp::editMark() 2064void QTReaderApp::editMark()
2065{ 2065{
2066 m_savedpos = reader->pagelocate(); 2066 m_savedpos = reader->pagelocate();
2067} 2067}
2068 2068
2069void QTReaderApp::editCopy() 2069void QTReaderApp::editCopy()
2070{ 2070{
2071 QClipboard* cb = QApplication::clipboard(); 2071 QClipboard* cb = QApplication::clipboard();
2072 QString text; 2072 QString text;
2073 int ch; 2073 int ch;
2074 unsigned long currentpos = reader->pagelocate(); 2074 unsigned long currentpos = reader->pagelocate();
2075 unsigned long endpos = reader->locate(); 2075 unsigned long endpos = reader->locate();
2076 if (m_savedpos == 0xffffffff) 2076 if (m_savedpos == 0xffffffff)
2077 { 2077 {
2078 m_savedpos = currentpos; 2078 m_savedpos = currentpos;
2079 } 2079 }
2080 reader->jumpto(m_savedpos); 2080 reader->jumpto(m_savedpos);
2081 while (reader->explocate() < endpos && (ch = reader->getch()) != UEOF) 2081 while (reader->explocate() < endpos && (ch = reader->getch()) != UEOF)
2082 { 2082 {
2083 text += ch; 2083 text += ch;
2084 } 2084 }
2085 cb->setText(text); 2085 cb->setText(text);
2086 reader->locate(currentpos); 2086 reader->locate(currentpos);
2087 m_savedpos = 0xffffffff; 2087 m_savedpos = 0xffffffff;
2088} 2088}
2089 2089
2090void QTReaderApp::gotoStart() 2090void QTReaderApp::gotoStart()
2091{ 2091{
2092 reader->locate(reader->buffdoc.startSection()); 2092 reader->locate(reader->buffdoc.startSection());
2093} 2093}
2094 2094
2095void QTReaderApp::gotoEnd() 2095void QTReaderApp::gotoEnd()
2096{ 2096{
2097 reader->dopageup(reader->buffdoc.endSection()); 2097 reader->dopageup(reader->buffdoc.endSection());
2098} 2098}
2099 2099
2100void QTReaderApp::pageup() 2100void QTReaderApp::pageup()
2101{ 2101{
2102 reader->NavUp(); 2102 reader->NavUp();
2103} 2103}
2104 2104
2105void QTReaderApp::pagedn() 2105void QTReaderApp::pagedn()
2106{ 2106{
2107 reader->NavDown(); 2107 reader->NavDown();
2108} 2108}
2109 2109
2110void QTReaderApp::pagemode(bool _b) 2110void QTReaderApp::pagemode(bool _b)
2111{ 2111{
2112 reader->setpagemode(_b); 2112 reader->setpagemode(_b);
2113} 2113}
2114 2114
2115/* 2115/*
2116void QTReaderApp::setspacing() 2116void QTReaderApp::setspacing()
2117{ 2117{
2118 m_nRegAction = cMonoSpace; 2118 m_nRegAction = cMonoSpace;
2119 char lcn[20]; 2119 char lcn[20];
2120 sprintf(lcn, "%lu", reader->m_charpc); 2120 sprintf(lcn, "%lu", reader->m_charpc);
2121 regEdit->setText(lcn); 2121 regEdit->setText(lcn);
2122 do_regedit(); 2122 do_regedit();
2123} 2123}
2124*/ 2124*/
2125void QTReaderApp::settarget() 2125void QTReaderApp::settarget()
2126{ 2126{
2127 m_nRegAction = cSetTarget; 2127 m_nRegAction = cSetTarget;
2128 QString text = ((m_targetapp.isEmpty()) ? QString("") : m_targetapp) 2128 QString text = ((m_targetapp.isEmpty()) ? QString("") : m_targetapp)
2129 + "/" 2129 + "/"
2130 + ((m_targetmsg.isEmpty()) ? QString("") : m_targetmsg); 2130 + ((m_targetmsg.isEmpty()) ? QString("") : m_targetmsg);
2131 regEdit->setText(text); 2131 regEdit->setText(text);
2132 do_regedit(); 2132 do_regedit();
2133} 2133}
2134 2134
2135/* 2135/*
2136void QTReaderApp::do_mono(const QString& lcn) 2136void QTReaderApp::do_mono(const QString& lcn)
2137{ 2137{
2138 bool ok; 2138 bool ok;
2139 unsigned long ulcn = lcn.toULong(&ok); 2139 unsigned long ulcn = lcn.toULong(&ok);
2140 if (ok) 2140 if (ok)
2141 { 2141 {
2142 reader->m_charpc = ulcn; 2142 reader->m_charpc = ulcn;
2143 reader->setfont(); 2143 reader->setfont();
2144 reader->refresh(); 2144 reader->refresh();
2145 //reader->setmono(true); 2145 //reader->setmono(true);
2146 } 2146 }
2147 else 2147 else
2148 QMessageBox::information(this, PROGNAME, "Must be a number"); 2148 QMessageBox::information(this, PROGNAME, "Must be a number");
2149} 2149}
2150*/ 2150*/
2151/* 2151/*
2152void QTReaderApp::editPaste() 2152void QTReaderApp::editPaste()
2153{ 2153{
2154#ifndef QT_NO_CLIPBOARD 2154#ifndef QT_NO_CLIPBOARD
2155 editor->paste(); 2155 editor->paste();
2156#endif 2156#endif
2157} 2157}
2158*/ 2158*/
2159 2159
2160void QTReaderApp::editFind() 2160void QTReaderApp::editFind()
2161{ 2161{
2162 searchStart = reader->pagelocate(); 2162 searchStart = reader->pagelocate();
2163#ifdef __ISEARCH 2163#ifdef __ISEARCH
2164 searchStack = new QStack<searchrecord>; 2164 searchStack = new QStack<searchrecord>;
2165#endif 2165#endif
2166#ifdef USEQPE 2166#ifdef USEQPE
2167 Global::showInputMethod(); 2167 Global::showInputMethod();
2168#endif 2168#endif
2169 searchBar->show(); 2169 searchBar->show();
2170 searchVisible = TRUE; 2170 searchVisible = TRUE;
2171 searchEdit->setFocus(); 2171 searchEdit->setFocus();
2172#ifdef __ISEARCH 2172#ifdef __ISEARCH
2173 searchStack->push(new searchrecord("",reader->pagelocate())); 2173 searchStack->push(new searchrecord("",reader->pagelocate()));
2174#endif 2174#endif
2175} 2175}
2176 2176
2177void QTReaderApp::findNext() 2177void QTReaderApp::findNext()
2178{ 2178{
2179// // qDebug("findNext called\n"); 2179// // qDebug("findNext called\n");
2180#ifdef __ISEARCH 2180#ifdef __ISEARCH
2181 QString arg = searchEdit->text(); 2181 QString arg = searchEdit->text();
2182#else 2182#else
2183 QRegExp arg = searchEdit->text(); 2183 QRegExp arg = searchEdit->text();
2184#endif 2184#endif
2185 CDrawBuffer test(&(reader->m_fontControl)); 2185 CDrawBuffer test(&(reader->m_fontControl));
2186 size_t start = reader->pagelocate(); 2186 size_t start = reader->pagelocate();
2187 reader->jumpto(start); 2187 reader->jumpto(start);
2188 reader->getline(&test); 2188 reader->getline(&test);
2189 dosearch(start, test, arg); 2189 dosearch(start, test, arg);
2190} 2190}
2191 2191
2192void QTReaderApp::findClose() 2192void QTReaderApp::findClose()
2193{ 2193{
2194 searchVisible = FALSE; 2194 searchVisible = FALSE;
2195 searchEdit->setText(""); 2195 searchEdit->setText("");
2196#ifdef USEQPE 2196#ifdef USEQPE
2197 Global::hideInputMethod(); 2197 Global::hideInputMethod();
2198#endif 2198#endif
2199 searchBar->hide(); 2199 searchBar->hide();
2200#ifdef __ISEARCH 2200#ifdef __ISEARCH
2201// searchStack = new QStack<searchrecord>; 2201// searchStack = new QStack<searchrecord>;
2202 while (!searchStack->isEmpty()) 2202 while (!searchStack->isEmpty())
2203 { 2203 {
2204 delete searchStack->pop(); 2204 delete searchStack->pop();
2205 } 2205 }
2206 delete searchStack; 2206 delete searchStack;
2207#endif 2207#endif
2208 reader->setFocus(); 2208 reader->setFocus();
2209} 2209}
2210 2210
2211void QTReaderApp::regClose() 2211void QTReaderApp::regClose()
2212{ 2212{
2213 regVisible = FALSE; 2213 regVisible = FALSE;
2214 regEdit->setText(""); 2214 regEdit->setText("");
2215 regBar->hide(); 2215 regBar->hide();
2216#ifdef USEQPE 2216#ifdef USEQPE
2217 Global::hideInputMethod(); 2217 Global::hideInputMethod();
2218#endif 2218#endif
2219 reader->setFocus(); 2219 reader->setFocus();
2220} 2220}
2221 2221
2222#ifdef __ISEARCH 2222#ifdef __ISEARCH
2223bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QString& arg) 2223bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QString& arg)
2224#else 2224#else
2225bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg) 2225bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg)
2226#endif 2226#endif
2227{ 2227{
2228 bool ret = true; 2228 bool ret = true;
2229 unsigned long fs, ts; 2229 unsigned long fs, ts;
2230 reader->sizes(fs,ts); 2230 reader->sizes(fs,ts);
2231 size_t pos = reader->locate(); 2231 size_t pos = reader->locate();
2232 pbar->setGeometry(searchBar->x(),searchBar->y(),searchBar->width(), searchBar->height()); 2232 pbar->setGeometry(searchBar->x(),searchBar->y(),searchBar->width(), searchBar->height());
2233 pbar->show(); 2233 pbar->show();
2234 pbar->raise(); 2234 pbar->raise();
2235 pbar->reset(); 2235 pbar->reset();
2236 int offset; 2236 int offset;
2237 int lastpc = (100*pos)/ts; 2237 int lastpc = (100*pos)/ts;
2238 pbar->setProgress(lastpc); 2238 pbar->setProgress(lastpc);
2239// qApp->processEvents(); 2239// qApp->processEvents();
2240 if (reader->buffdoc.getpara(test) >= 0) 2240 if (reader->buffdoc.getpara(test) >= 0)
2241 { 2241 {
2242 reader->setFocus(); 2242 reader->setFocus();
2243#ifdef __ISEARCH 2243#ifdef __ISEARCH
2244 while (strstr(test.data(),(const tchar*)arg) == NULL) 2244 while (strstr(test.data(),(const tchar*)arg) == NULL)
2245#else 2245#else
2246#ifdef _UNICODE 2246#ifdef _UNICODE
2247 while ((offset = arg.match(toQString(test.data()))) == -1) 2247 while ((offset = arg.match(toQString(test.data()))) == -1)
2248#else 2248#else
2249 while (arg.match(test.data()) == -1) 2249 while (arg.match(test.data()) == -1)
2250#endif 2250#endif
2251#endif 2251#endif
2252 { 2252 {
2253 pos = reader->locate(); 2253 pos = reader->locate();
2254 int pc = (100*pos)/ts; 2254 int pc = (100*pos)/ts;
2255 if (pc != lastpc) 2255 if (pc != lastpc)
2256 { 2256 {
2257 pbar->setProgress(pc); 2257 pbar->setProgress(pc);
2258 qApp->processEvents(); 2258 qApp->processEvents();
2259 reader->setFocus(); 2259 reader->setFocus();
2260 lastpc = pc; 2260 lastpc = pc;
2261 } 2261 }
2262 2262
2263 if (reader->buffdoc.getpara(test) < 0) 2263 if (reader->buffdoc.getpara(test) < 0)
2264 { 2264 {
2265 if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2) 2265 if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2)
2266 pos = searchStart; 2266 pos = searchStart;
2267 else 2267 else
2268 pos = start; 2268 pos = start;
2269 findClose(); 2269 findClose();
2270 pbar->hide(); 2270 pbar->hide();
2271 reader->locate(pos); 2271 reader->locate(pos);
2272 return false; 2272 return false;
2273 } 2273 }
2274 } 2274 }
2275// qDebug("Found it at %u:%u", pos, offset); 2275// qDebug("Found it at %u:%u", pos, offset);
2276 pbar->hide(); 2276 pbar->hide();
2277// qDebug("Hid"); 2277// qDebug("Hid");
2278 reader->locate(pos+offset); 2278 reader->locate(pos+offset);
2279// qDebug("Loacted"); 2279// qDebug("Loacted");
2280// qDebug("page up"); 2280// qDebug("page up");
2281 ret = true; 2281 ret = true;
2282 } 2282 }
2283 else 2283 else
2284 { 2284 {
2285 if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2) 2285 if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2)
2286 pos = searchStart; 2286 pos = searchStart;
2287 else 2287 else
2288 pos = start; 2288 pos = start;
2289 ret = false; 2289 ret = false;
2290 findClose(); 2290 findClose();
2291 } 2291 }
2292 return ret; 2292 return ret;
2293} 2293}
2294 2294
2295#ifdef __ISEARCH 2295#ifdef __ISEARCH
2296void QTReaderApp::search(const QString & arg) 2296void QTReaderApp::search(const QString & arg)
2297{ 2297{
2298 searchrecord* ss = searchStack->top(); 2298 searchrecord* ss = searchStack->top();
2299 CBuffer test; 2299 CBuffer test;
2300 size_t start = reader->pagelocate(); 2300 size_t start = reader->pagelocate();
2301 bool haspopped = false; 2301 bool haspopped = false;
2302 while (arg.left(ss->s.length()) != ss->s) 2302 while (arg.left(ss->s.length()) != ss->s)
2303 { 2303 {
2304 haspopped = true; 2304 haspopped = true;
2305 start = ss->pos; 2305 start = ss->pos;
2306// reader->locate(start); 2306// reader->locate(start);
2307 searchStack->pop(); 2307 searchStack->pop();
2308 delete ss; 2308 delete ss;
2309 } 2309 }
2310 if (haspopped) reader->locate(start); 2310 if (haspopped) reader->locate(start);
2311/* 2311/*
2312 if (arg.length() < ss->len) 2312 if (arg.length() < ss->len)
2313 { 2313 {
2314 start = ss->pos; 2314 start = ss->pos;
2315 reader->locate(start); 2315 reader->locate(start);
2316 searchStack->pop(); 2316 searchStack->pop();
2317 delete ss; 2317 delete ss;
2318 } 2318 }
2319*/ 2319*/
2320 else 2320 else
2321 { 2321 {
2322 start = reader->pagelocate(); 2322 start = reader->pagelocate();
2323 reader->jumpto(start); 2323 reader->jumpto(start);
2324 searchStack->push(new searchrecord(arg,start)); 2324 searchStack->push(new searchrecord(arg,start));
2325 } 2325 }
2326 dosearch(start, test, arg); 2326 dosearch(start, test, arg);
2327} 2327}
2328#else 2328#else
2329void QTReaderApp::search() 2329void QTReaderApp::search()
2330{ 2330{
2331 findNext(); 2331 findNext();
2332} 2332}
2333#endif 2333#endif
2334 2334
2335void QTReaderApp::openFile( const QString &f ) 2335void QTReaderApp::openFile( const QString &f )
2336{ 2336{
2337// qDebug("File:%s", (const char*)f); 2337// qDebug("File:%s", (const char*)f);
2338// openFile(DocLnk(f)); 2338// openFile(DocLnk(f));
2339//} 2339//}
2340// 2340//
2341//void QTReaderApp::openFile( const DocLnk &f ) 2341//void QTReaderApp::openFile( const DocLnk &f )
2342//{ 2342//{
2343 clear(); 2343 clear();
2344 QFileInfo fm(f); 2344 QFileInfo fm(f);
2345 if ( fm.exists() ) 2345 if ( fm.exists() )
2346 { 2346 {
2347// QMessageBox::information(0, "Progress", "Calling fileNew()"); 2347// QMessageBox::information(0, "Progress", "Calling fileNew()");
2348#ifdef USEQPE 2348#ifdef USEQPE
2349 if (fm.extension( FALSE ) == "desktop") 2349 if (fm.extension( FALSE ) == "desktop")
2350 { 2350 {
2351 DocLnk d(f); 2351 DocLnk d(f);
2352 QFileInfo fnew(d.file()); 2352 QFileInfo fnew(d.file());
2353 fm = fnew; 2353 fm = fnew;
2354 if (!fm.exists()) return; 2354 if (!fm.exists()) return;
2355 } 2355 }
2356#endif 2356#endif
2357 clear(); 2357 clear();
2358 2358
2359 reader->setText(fm.baseName(), fm.absFilePath()); 2359 reader->setText(fm.baseName(), fm.absFilePath());
2360 m_loadedconfig = readconfig(reader->m_string, false); 2360 m_loadedconfig = readconfig(reader->m_string, false);
2361 showEditTools(); 2361 showEditTools();
2362 readbkmks(); 2362 readbkmks();
2363 m_savedpos = 0xffffffff; 2363 m_savedpos = 0xffffffff;
2364 } 2364 }
2365 else 2365 else
2366 { 2366 {
2367 QMessageBox::information(this, PROGNAME, "File does not exist"); 2367 QMessageBox::information(this, PROGNAME, "File does not exist");
2368 reader->m_lastfile = QString::null; 2368 reader->m_lastfile = QString::null;
2369 } 2369 }
2370 2370
2371} 2371}
2372/* 2372/*
2373void QTReaderApp::resizeEvent(QResizeEvent* e) 2373void QTReaderApp::resizeEvent(QResizeEvent* e)
2374{ 2374{
2375 if (m_fullscreen) 2375 if (m_fullscreen)
2376 { 2376 {
2377 showNormal(); 2377 showNormal();
2378 showFullScreen(); 2378 showFullScreen();
2379 } 2379 }
2380} 2380}
2381*/ 2381*/
2382void QTReaderApp::handlekey(QKeyEvent* e) 2382void QTReaderApp::handlekey(QKeyEvent* e)
2383{ 2383{
2384// qDebug("Keypress event"); 2384// qDebug("Keypress event");
2385 timeb now; 2385 timeb now;
2386 ftime(&now); 2386 ftime(&now);
2387 unsigned long etime = (1000*(now.time - m_lastkeytime.time) + now.millitm)-m_lastkeytime.millitm; 2387 unsigned long etime = (1000*(now.time - m_lastkeytime.time) + now.millitm)-m_lastkeytime.millitm;
2388 if (etime < m_debounce) 2388 if (etime < m_debounce)
2389 { 2389 {
2390 return; 2390 return;
2391 } 2391 }
2392 m_lastkeytime = now; 2392 m_lastkeytime = now;
2393 switch(e->key()) 2393 switch(e->key())
2394 { 2394 {
2395 case Key_Escape: 2395 case Key_Escape:
2396 // qDebug("escape event"); 2396 // qDebug("escape event");
2397 if (m_disableesckey) 2397 if (m_disableesckey)
2398 { 2398 {
2399 m_disableesckey = false; 2399 m_disableesckey = false;
2400 } 2400 }
2401 else 2401 else
2402 { 2402 {
2403 m_bcloseDisabled = true; 2403 m_bcloseDisabled = true;
2404 if (m_fullscreen) 2404 if (m_fullscreen)
2405 { 2405 {
2406 m_actFullscreen->setOn(false); 2406 m_actFullscreen->setOn(false);
2407 e->accept(); 2407 e->accept();
2408 } 2408 }
2409 else 2409 else
2410 { 2410 {
2411 // qDebug("escape action"); 2411 // qDebug("escape action");
2412 doAction(m_escapeTarget, e); 2412 doAction(m_escapeTarget, e);
2413 } 2413 }
2414 } 2414 }
2415 break; 2415 break;
2416 case Key_Space: 2416 case Key_Space:
2417 { 2417 {
2418 doAction(m_spaceTarget, e); 2418 doAction(m_spaceTarget, e);
2419 } 2419 }
2420 break; 2420 break;
2421 case Key_Return: 2421 case Key_Return:
2422 { 2422 {
2423 doAction(m_returnTarget, e); 2423 doAction(m_returnTarget, e);
2424 } 2424 }
2425 break; 2425 break;
2426 case Key_Left: 2426 case Key_Left:
2427 { 2427 {
2428 if (reader->m_autoScroll && m_leftScroll) 2428 if (reader->m_autoScroll && m_leftScroll)
2429 { 2429 {
2430 reader->reduceScroll(); 2430 reader->reduceScroll();
2431 } 2431 }
2432 else 2432 else
2433 { 2433 {
2434 doAction(m_leftTarget, e); 2434 doAction(m_leftTarget, e);
2435 } 2435 }
2436 } 2436 }
2437 break; 2437 break;
2438 case Key_Right: 2438 case Key_Right:
2439 { 2439 {
2440 if (reader->m_autoScroll && m_rightScroll) 2440 if (reader->m_autoScroll && m_rightScroll)
2441 { 2441 {
2442 reader->increaseScroll(); 2442 reader->increaseScroll();
2443 } 2443 }
2444 else 2444 else
2445 { 2445 {
2446 doAction(m_rightTarget, e); 2446 doAction(m_rightTarget, e);
2447 } 2447 }
2448 } 2448 }
2449 break; 2449 break;
2450 case Key_Up: 2450 case Key_Up:
2451 { 2451 {
2452 if (reader->m_autoScroll && m_upScroll) 2452 if (reader->m_autoScroll && m_upScroll)
2453 { 2453 {
2454 reader->increaseScroll(); 2454 reader->increaseScroll();
2455 } 2455 }
2456 else 2456 else
2457 { 2457 {
2458 doAction(m_upTarget, e); 2458 doAction(m_upTarget, e);
2459 } 2459 }
2460 } 2460 }
2461 break; 2461 break;
2462 case Key_Down: 2462 case Key_Down:
2463 { 2463 {
2464 if (reader->m_autoScroll && m_downScroll) 2464 if (reader->m_autoScroll && m_downScroll)
2465 { 2465 {
2466 reader->reduceScroll(); 2466 reader->reduceScroll();
2467 } 2467 }
2468 else 2468 else
2469 { 2469 {
2470 doAction(m_downTarget, e); 2470 doAction(m_downTarget, e);
2471 } 2471 }
2472 } 2472 }
2473 break; 2473 break;
2474 default: 2474 default:
2475 { 2475 {
2476 e->ignore(); 2476 e->ignore();
2477 } 2477 }
2478 2478
2479/* 2479/*
2480 QString msg("Key press was:"); 2480 QString msg("Key press was:");
2481 QString key; 2481 QString key;
2482 msg += key.setNum(e->key()); 2482 msg += key.setNum(e->key());
2483 QMessageBox::information(this, PROGNAME, msg); 2483 QMessageBox::information(this, PROGNAME, msg);
2484*/ 2484*/
2485 } 2485 }
2486} 2486}
2487 2487
2488void QTReaderApp::showEditTools() 2488void QTReaderApp::showEditTools()
2489{ 2489{
2490// if ( !doc ) 2490// if ( !doc )
2491 //close(); 2491 //close();
2492 if (m_fullscreen) 2492 if (m_fullscreen)
2493 { 2493 {
2494 if (menubar != NULL) menubar->hide(); 2494 if (menubar != NULL) menubar->hide();
2495 if (fileBar != NULL) fileBar->hide(); 2495 if (fileBar != NULL) fileBar->hide();
2496 if (viewBar != NULL) viewBar->hide(); 2496 if (viewBar != NULL) viewBar->hide();
2497 if (navBar != NULL) navBar->hide(); 2497 if (navBar != NULL) navBar->hide();
2498 if (markBar != NULL) markBar->hide(); 2498 if (markBar != NULL) markBar->hide();
2499 searchBar->hide(); 2499 searchBar->hide();
2500 regBar->hide(); 2500 regBar->hide();
2501#ifdef USEQPE 2501#ifdef USEQPE
2502 Global::hideInputMethod(); 2502 Global::hideInputMethod();
2503#endif 2503#endif
2504 m_fontBar->hide(); 2504 m_fontBar->hide();
2505 //showNormal(); 2505 //showNormal();
2506 showFullScreen(); 2506 showFullScreen();
2507 } 2507 }
2508 else 2508 else
2509 { 2509 {
2510 //qDebug("him"); 2510 //qDebug("him");
2511#ifdef USEQPE 2511#ifdef USEQPE
2512 Global::hideInputMethod(); 2512 Global::hideInputMethod();
2513#endif 2513#endif
2514 //qDebug("eb"); 2514 //qDebug("eb");
2515 menubar->show(); 2515 menubar->show();
2516 if (fileBar != NULL) fileBar->show(); 2516 if (fileBar != NULL) fileBar->show();
2517 if (viewBar != NULL) viewBar->show(); 2517 if (viewBar != NULL) viewBar->show();
2518 if (navBar != NULL) navBar->show(); 2518 if (navBar != NULL) navBar->show();
2519 if (markBar != NULL) markBar->show(); 2519 if (markBar != NULL) markBar->show();
2520 mb->show(); 2520 mb->show();
2521 if ( searchVisible ) 2521 if ( searchVisible )
2522 { 2522 {
2523#ifdef USEQPE 2523#ifdef USEQPE
2524 Global::showInputMethod(); 2524 Global::showInputMethod();
2525#endif 2525#endif
2526 searchBar->show(); 2526 searchBar->show();
2527 } 2527 }
2528 if ( regVisible ) 2528 if ( regVisible )
2529 { 2529 {
2530#ifdef USEQPE 2530#ifdef USEQPE
2531 Global::showInputMethod(); 2531 Global::showInputMethod();
2532#endif 2532#endif
2533 regBar->show(); 2533 regBar->show();
2534 } 2534 }
2535 if (m_fontVisible) m_fontBar->show(); 2535 if (m_fontVisible) m_fontBar->show();
2536 //qDebug("sn"); 2536 //qDebug("sn");
2537 showNormal(); 2537 showNormal();
2538 //qDebug("sm"); 2538 //qDebug("sm");
2539#ifdef USEQPE 2539#ifdef USEQPE
2540 showMaximized(); 2540 showMaximized();
2541#endif 2541#endif
2542 //setCentralWidget(reader); 2542 //setCentralWidget(reader);
2543 } 2543 }
2544 2544
2545// qDebug("uc"); 2545// qDebug("uc");
2546 updateCaption(); 2546 updateCaption();
2547// qDebug("rw"); 2547// qDebug("rw");
2548 editorStack->raiseWidget( reader ); 2548 editorStack->raiseWidget( reader );
2549// qDebug("sf"); 2549// qDebug("sf");
2550 reader->setFocus(); 2550 reader->setFocus();
2551 reader->refresh(); 2551 reader->refresh();
2552} 2552}
2553/* 2553/*
2554void QTReaderApp::save() 2554void QTReaderApp::save()
2555{ 2555{
2556 if ( !doc ) 2556 if ( !doc )
2557 return; 2557 return;
2558 if ( !editor->edited() ) 2558 if ( !editor->edited() )
2559 return; 2559 return;
2560 2560
2561 QString rt = editor->text(); 2561 QString rt = editor->text();
2562 QString pt = rt; 2562 QString pt = rt;
2563 2563
2564 if ( doc->name().isEmpty() ) { 2564 if ( doc->name().isEmpty() ) {
2565 unsigned ispace = pt.find( ' ' ); 2565 unsigned ispace = pt.find( ' ' );
2566 unsigned ienter = pt.find( '\n' ); 2566 unsigned ienter = pt.find( '\n' );
2567 int i = (ispace < ienter) ? ispace : ienter; 2567 int i = (ispace < ienter) ? ispace : ienter;
2568 QString docname; 2568 QString docname;
2569 if ( i == -1 ) { 2569 if ( i == -1 ) {
2570 if ( pt.isEmpty() ) 2570 if ( pt.isEmpty() )
2571 docname = "Empty Text"; 2571 docname = "Empty Text";
2572 else 2572 else
2573 docname = pt; 2573 docname = pt;
2574 } else { 2574 } else {
2575 docname = pt.left( i ); 2575 docname = pt.left( i );
2576 } 2576 }
2577 doc->setName(docname); 2577 doc->setName(docname);
2578 } 2578 }
2579 FileManager fm; 2579 FileManager fm;
2580 fm.saveFile( *doc, rt ); 2580 fm.saveFile( *doc, rt );
2581} 2581}
2582*/ 2582*/
2583 2583
2584void QTReaderApp::clear() 2584void QTReaderApp::clear()
2585{ 2585{
2586// if (doc != 0) 2586// if (doc != 0)
2587// { 2587// {
2588// QMessageBox::information(this, PROGNAME, "Deleting doc", 1); 2588// QMessageBox::information(this, PROGNAME, "Deleting doc", 1);
2589 //delete doc; 2589 //delete doc;
2590// QMessageBox::information(this, PROGNAME, "Deleted doc", 1); 2590// QMessageBox::information(this, PROGNAME, "Deleted doc", 1);
2591 //doc = 0; 2591 //doc = 0;
2592 // } 2592 // }
2593 reader->clear(); 2593 reader->clear();
2594} 2594}
2595 2595
2596void QTReaderApp::updateCaption() 2596void QTReaderApp::updateCaption()
2597{ 2597{
2598// if ( !doc ) 2598// if ( !doc )
2599 //setCaption( tr("QTReader") ); 2599 //setCaption( tr("QTReader") );
2600// else { 2600// else {
2601 //QString s = doc->name(); 2601 //QString s = doc->name();
2602 //if ( s.isEmpty() ) 2602 //if ( s.isEmpty() )
2603 // s = tr( "Unnamed" ); 2603 // s = tr( "Unnamed" );
2604 setCaption( reader->m_string + " - " + tr("Reader") ); 2604 setCaption( reader->m_string + " - " + tr("Reader") );
2605// } 2605// }
2606} 2606}
2607 2607
2608void QTReaderApp::setDocument(const QString& fileref) 2608void QTReaderApp::setDocument(const QString& fileref)
2609{ 2609{
2610 bFromDocView = TRUE; 2610 bFromDocView = TRUE;
2611//QMessageBox::information(0, "setDocument", fileref); 2611//QMessageBox::information(0, "setDocument", fileref);
2612 openFile(fileref); 2612 openFile(fileref);
2613// showEditTools(); 2613// showEditTools();
2614} 2614}
2615 2615
2616void QTReaderApp::closeEvent( QCloseEvent *e ) 2616void QTReaderApp::closeEvent( QCloseEvent *e )
2617{ 2617{
2618// qDebug("Close event"); 2618// qDebug("Close event");
2619 if (m_fullscreen) 2619 if (m_fullscreen)
2620 { 2620 {
2621 m_fullscreen = false; 2621 m_fullscreen = false;
2622 showEditTools(); 2622 showEditTools();
2623 e->accept(); 2623 e->accept();
2624 } 2624 }
2625 else if (m_dontSave) 2625 else if (m_dontSave)
2626 { 2626 {
2627 e->accept(); 2627 e->accept();
2628 } 2628 }
2629 else 2629 else
2630 { 2630 {
2631 if (editorStack->visibleWidget() == reader) 2631 if (editorStack->visibleWidget() == reader)
2632 { 2632 {
2633 if ((m_escapeTarget != cesNone) && m_bcloseDisabled) 2633 if ((m_escapeTarget != cesNone) && m_bcloseDisabled)
2634 { 2634 {
2635 //qDebug("Close disabled"); 2635 //qDebug("Close disabled");
2636 m_bcloseDisabled = false; 2636 m_bcloseDisabled = false;
2637 e->ignore(); 2637 e->ignore();
2638 } 2638 }
2639 else 2639 else
2640 { 2640 {
2641 if (m_fontVisible) 2641 if (m_fontVisible)
2642 { 2642 {
2643 m_fontBar->hide(); 2643 m_fontBar->hide();
2644 m_fontVisible = false; 2644 m_fontVisible = false;
2645 } 2645 }
2646 if (regVisible) 2646 if (regVisible)
2647 { 2647 {
2648 regBar->hide(); 2648 regBar->hide();
2649#ifdef USEQPE 2649#ifdef USEQPE
2650 Global::hideInputMethod(); 2650 Global::hideInputMethod();
2651#endif 2651#endif
2652 regVisible = false; 2652 regVisible = false;
2653 return; 2653 return;
2654 } 2654 }
2655 if (searchVisible) 2655 if (searchVisible)
2656 { 2656 {
2657 searchBar->hide(); 2657 searchBar->hide();
2658#ifdef USEQPE 2658#ifdef USEQPE
2659 Global::hideInputMethod(); 2659 Global::hideInputMethod();
2660#endif 2660#endif
2661 searchVisible = false; 2661 searchVisible = false;
2662 return; 2662 return;
2663 } 2663 }
2664 if (m_fBkmksChanged && pBkmklist != NULL) 2664 if (m_fBkmksChanged && pBkmklist != NULL)
2665 { 2665 {
2666 if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0) 2666 if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0)
2667 savebkmks(); 2667 savebkmks();
2668 delete pBkmklist; 2668 delete pBkmklist;
2669 pBkmklist = NULL; 2669 pBkmklist = NULL;
2670 m_fBkmksChanged = false; 2670 m_fBkmksChanged = false;
2671 } 2671 }
2672 bFromDocView = FALSE; 2672 bFromDocView = FALSE;
2673 updatefileinfo(); 2673 updatefileinfo();
2674 saveprefs(); 2674 saveprefs();
2675 e->accept(); 2675 e->accept();
2676 } 2676 }
2677 } 2677 }
2678 else 2678 else
2679 { 2679 {
2680 showEditTools(); 2680 showEditTools();
2681 m_disableesckey = true; 2681 m_disableesckey = true;
2682 } 2682 }
2683 } 2683 }
2684} 2684}
2685 2685
2686void QTReaderApp::do_gotomark() 2686void QTReaderApp::do_gotomark()
2687{ 2687{
2688 m_nBkmkAction = cGotoBkmk; 2688 m_nBkmkAction = cGotoBkmk;
2689 if (!listbkmk(pBkmklist)) 2689 if (!listbkmk(pBkmklist))
2690 QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); 2690 QMessageBox::information(this, PROGNAME, "No bookmarks in memory");
2691} 2691}
2692 2692
2693void QTReaderApp::do_delmark() 2693void QTReaderApp::do_delmark()
2694{ 2694{
2695 m_nBkmkAction = cDelBkmk; 2695 m_nBkmkAction = cDelBkmk;
2696 if (!listbkmk(pBkmklist)) 2696 if (!listbkmk(pBkmklist))
2697 QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); 2697 QMessageBox::information(this, PROGNAME, "No bookmarks in memory");
2698} 2698}
2699 2699
2700bool QTReaderApp::listbkmk(CList<Bkmk>* plist, const QString& _lab) 2700bool QTReaderApp::listbkmk(CList<Bkmk>* plist, const QString& _lab)
2701{ 2701{
2702 bkmkselector->clear(); 2702 bkmkselector->clear();
2703 if (_lab.isEmpty()) 2703 if (_lab.isEmpty())
2704 bkmkselector->setText("Cancel"); 2704 bkmkselector->setText("Cancel");
2705 else 2705 else
2706 bkmkselector->setText(_lab); 2706 bkmkselector->setText(_lab);
2707 int cnt = 0; 2707 int cnt = 0;
2708 if (plist != NULL) 2708 if (plist != NULL)
2709 { 2709 {
2710 for (CList<Bkmk>::iterator i = plist->begin(); i != plist->end(); i++) 2710 for (CList<Bkmk>::iterator i = plist->begin(); i != plist->end(); i++)
2711 { 2711 {
2712#ifdef _UNICODE 2712#ifdef _UNICODE
2713 // qDebug("Item:%s", (const char*)toQString(i->name())); 2713 // qDebug("Item:%s", (const char*)toQString(i->name()));
2714 bkmkselector->insertItem(toQString(i->name())); 2714 bkmkselector->insertItem(toQString(i->name()));
2715#else 2715#else
2716 bkmkselector->insertItem(i->name()); 2716 bkmkselector->insertItem(i->name());
2717#endif 2717#endif
2718 cnt++; 2718 cnt++;
2719 } 2719 }
2720 } 2720 }
2721 if (cnt > 0) 2721 if (cnt > 0)
2722 { 2722 {
2723 hidetoolbars(); 2723 hidetoolbars();
2724 editorStack->raiseWidget( bkmkselector ); 2724 editorStack->raiseWidget( bkmkselector );
2725 return true; 2725 return true;
2726 } 2726 }
2727 else 2727 else
2728 return false; 2728 return false;
2729} 2729}
2730 2730
2731void QTReaderApp::do_autogen() 2731void QTReaderApp::do_autogen()
2732{ 2732{
2733 m_nRegAction = cAutoGen; 2733 m_nRegAction = cAutoGen;
2734 regEdit->setText(m_autogenstr); 2734 regEdit->setText(m_autogenstr);
2735 do_regedit(); 2735 do_regedit();
2736} 2736}
2737 2737
2738void QTReaderApp::do_regedit() 2738void QTReaderApp::do_regedit()
2739{ 2739{
2740// fileBar->hide(); 2740// fileBar->hide();
2741 reader->bDoUpdates = false; 2741 reader->bDoUpdates = false;
2742// qDebug("Showing regbar"); 2742// qDebug("Showing regbar");
2743 regBar->show(); 2743 regBar->show();
2744// qDebug("Showing kbd"); 2744// qDebug("Showing kbd");
2745#ifdef USEQPE 2745#ifdef USEQPE
2746 Global::showInputMethod(); 2746 Global::showInputMethod();
2747#endif 2747#endif
2748 regVisible = true; 2748 regVisible = true;
2749 regEdit->setFocus(); 2749 regEdit->setFocus();
2750// qApp->processEvents(); 2750// qApp->processEvents();
2751 reader->bDoUpdates = true; 2751 reader->bDoUpdates = true;
2752 reader->update(); 2752 reader->update();
2753} 2753}
2754 2754
2755bool QTReaderApp::openfrombkmk(Bkmk* bk) 2755bool QTReaderApp::openfrombkmk(Bkmk* bk)
2756{ 2756{
2757 QString fn = toQString( 2757 QString fn = toQString(
2758 CFiledata(bk->anno()).name() 2758 CFiledata(bk->anno()).name()
2759 ); 2759 );
2760 //qDebug("fileinfo"); 2760 //qDebug("fileinfo");
2761 if (!fn.isEmpty() && QFileInfo(fn).isFile()) 2761 if (!fn.isEmpty() && QFileInfo(fn).isFile())
2762 { 2762 {
2763 //qDebug("Opening"); 2763 //qDebug("Opening");
2764 openFile(fn); 2764 openFile(fn);
2765 struct stat fnstat; 2765 struct stat fnstat;
2766 stat((const char *)reader->m_lastfile, &fnstat); 2766 stat((const char *)reader->m_lastfile, &fnstat);
2767 2767
2768 if (CFiledata(bk->anno()).date() 2768 if (CFiledata(bk->anno()).date()
2769 != fnstat.st_mtime) 2769 != fnstat.st_mtime)
2770 { 2770 {
2771 CFiledata fd(bk->anno()); 2771 CFiledata fd(bk->anno());
2772 fd.setdate(fnstat.st_mtime); 2772 fd.setdate(fnstat.st_mtime);
2773 bk->value(0); 2773 bk->value(0);
2774 } 2774 }
2775 else 2775 else
2776 { 2776 {
2777 unsigned short svlen = bk->filedatalen(); 2777 unsigned short svlen = bk->filedatalen();
2778 unsigned char* svdata = bk->filedata(); 2778 unsigned char* svdata = bk->filedata();
2779 reader->putSaveData(svdata, svlen); 2779 reader->putSaveData(svdata, svlen);
2780 // setstate(svdata, svlen); 2780 // setstate(svdata, svlen);
2781 if (svlen != 0) 2781 if (svlen != 0)
2782 { 2782 {
2783 QMessageBox::warning(this, PROGNAME, "Not all file data used\nNew version?"); 2783 QMessageBox::warning(this, PROGNAME, "Not all file data used\nNew version?");
2784 } 2784 }
2785 // qDebug("updating"); 2785 // qDebug("updating");
2786 // showEditTools(); 2786 // showEditTools();
2787 reader->locate(bk->value()); 2787 reader->locate(bk->value());
2788 } 2788 }
2789 return true; 2789 return true;
2790 } 2790 }
2791 else 2791 else
2792 { 2792 {
2793 return false; 2793 return false;
2794 } 2794 }
2795} 2795}
2796 2796
2797void QTReaderApp::gotobkmk(int ind) 2797void QTReaderApp::gotobkmk(int ind)
2798{ 2798{
2799 showEditTools(); 2799 showEditTools();
2800 switch (m_nBkmkAction) 2800 switch (m_nBkmkAction)
2801 { 2801 {
2802 case cOpenFile: 2802 case cOpenFile:
2803 { 2803 {
2804 // qApp->processEvents(); 2804 // qApp->processEvents();
2805 if (!openfrombkmk((*pOpenlist)[ind])) 2805 if (!openfrombkmk((*pOpenlist)[ind]))
2806 { 2806 {
2807 pOpenlist->erase(ind); 2807 pOpenlist->erase(ind);
2808 QMessageBox::information(this, PROGNAME, "Can't find file"); 2808 QMessageBox::information(this, PROGNAME, "Can't find file");
2809 } 2809 }
2810 } 2810 }
2811 break; 2811 break;
2812 case cGotoBkmk: 2812 case cGotoBkmk:
2813 reader->locate((*pBkmklist)[ind]->value()); 2813 reader->locate((*pBkmklist)[ind]->value());
2814 break; 2814 break;
2815 case cDelBkmk: 2815 case cDelBkmk:
2816 //// qDebug("Deleting:%s\n",(*pBkmklist)[ind]->name()); 2816 //// qDebug("Deleting:%s\n",(*pBkmklist)[ind]->name());
2817 pBkmklist->erase(ind); 2817 pBkmklist->erase(ind);
2818 m_fBkmksChanged = true; 2818 m_fBkmksChanged = true;
2819 // pBkmklist->sort(); 2819 // pBkmklist->sort();
2820 break; 2820 break;
2821 case cRmBkmkFile: 2821 case cRmBkmkFile:
2822 { 2822 {
2823#ifndef USEQPE 2823#ifndef USEQPE
2824 QDir d = QDir::home(); // "/" 2824 QDir d = QDir::home(); // "/"
2825 d.cd(APPDIR); 2825 d.cd(APPDIR);
2826 d.remove(bkmkselector->text(ind)); 2826 d.remove(bkmkselector->text(ind));
2827#else /* USEQPE */ 2827#else /* USEQPE */
2828 unlink((const char *)Global::applicationFileName(APPDIR,bkmkselector->text(ind))); 2828 unlink((const char *)Global::applicationFileName(APPDIR,bkmkselector->text(ind)));
2829#endif /* USEQPE */ 2829#endif /* USEQPE */
2830 } 2830 }
2831 break; 2831 break;
2832 case cLdConfig: 2832 case cLdConfig:
2833 readconfig(bkmkselector->text(ind), false); 2833 readconfig(bkmkselector->text(ind), false);
2834 break; 2834 break;
2835 case cRmConfig: 2835 case cRmConfig:
2836 { 2836 {
2837#ifndef USEQPE 2837#ifndef USEQPE
2838 QDir d = QDir::home(); // "/" 2838 QDir d = QDir::home(); // "/"
2839 d.cd(APPDIR "/configs"); 2839 d.cd(APPDIR "/configs");
2840 d.remove(bkmkselector->text(ind)); 2840 d.remove(bkmkselector->text(ind));
2841#else /* USEQPE */ 2841#else /* USEQPE */
2842 unlink((const char *)Global::applicationFileName(APPDIR "/configs",bkmkselector->text(ind))); 2842 unlink((const char *)Global::applicationFileName(APPDIR "/configs",bkmkselector->text(ind)));
2843#endif /* USEQPE */ 2843#endif /* USEQPE */
2844 } 2844 }
2845 break; 2845 break;
2846 case cExportLinks: 2846 case cExportLinks:
2847 { 2847 {
2848#ifndef USEQPE 2848#ifndef USEQPE
2849 QDir d = QDir::home(); // "/" 2849 QDir d = QDir::home(); // "/"
2850 d.cd(APPDIR "/urls"); 2850 d.cd(APPDIR "/urls");
2851 QFileInfo fi(d, bkmkselector->text(ind)); 2851 QFileInfo fi(d, bkmkselector->text(ind));
2852 if (fi.exists()) 2852 if (fi.exists())
2853 { 2853 {
2854 QString outfile( QFileDialog::getSaveFileName( QString::null, QString::null, this ) ); 2854 QString outfile( QFileDialog::getSaveFileName( QString::null, QString::null, this ) );
2855 if (!outfile.isEmpty()) 2855 if (!outfile.isEmpty())
2856 { 2856 {
2857 FILE* fout = fopen((const char *)outfile, "w"); 2857 FILE* fout = fopen((const char *)outfile, "w");
2858 if (fout != NULL) 2858 if (fout != NULL)
2859 { 2859 {
2860 FILE* fin = fopen((const char *)fi.absFilePath(), "r"); 2860 FILE* fin = fopen((const char *)fi.absFilePath(), "r");
2861 if (fin != NULL) 2861 if (fin != NULL)
2862 { 2862 {
2863 fprintf(fout, "<html><body>\n"); 2863 fprintf(fout, "<html><body>\n");
2864 int ch = 0; 2864 int ch = 0;
2865 while ((ch = fgetc(fin)) != EOF) 2865 while ((ch = fgetc(fin)) != EOF)
2866 { 2866 {
2867 fputc(ch, fout); 2867 fputc(ch, fout);
2868 } 2868 }
2869 fclose(fin); 2869 fclose(fin);
2870 fprintf(fout, "</html></body>\n"); 2870 fprintf(fout, "</html></body>\n");
2871 d.remove(bkmkselector->text(ind)); 2871 d.remove(bkmkselector->text(ind));
2872 } 2872 }
2873 fclose(fout); 2873 fclose(fout);
2874 } 2874 }
2875 else 2875 else
2876 QMessageBox::information(this, PROGNAME, "Couldn't open output"); 2876 QMessageBox::information(this, PROGNAME, "Couldn't open output");
2877 } 2877 }
2878 } 2878 }
2879#else /* USEQPE */ 2879#else /* USEQPE */
2880 FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r"); 2880 FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r");
2881 if (fin != NULL) 2881 if (fin != NULL)
2882 { 2882 {
2883 bool allok = false; 2883 bool allok = false;
2884 fileBrowser* fb = new fileBrowser(true, this,"OpieReader",!m_bFloatingDialog, 0, "*", QString::null); 2884 fileBrowser* fb = new fileBrowser(true, this,"OpieReader",!m_bFloatingDialog, 0, "*", QString::null);
2885 if (fb->exec()) 2885 if (fb->exec())
2886 { 2886 {
2887 QString outfile = fb->getCurrentFile(); 2887 QString outfile = fb->getCurrentFile();
2888 FILE* fout = fopen((const char *)outfile, "w"); 2888 FILE* fout = fopen((const char *)outfile, "w");
2889 if (fout != NULL) 2889 if (fout != NULL)
2890 { 2890 {
2891 fprintf(fout, "<html><body>\n"); 2891 fprintf(fout, "<html><body>\n");
2892 int ch = 0; 2892 int ch = 0;
2893 while ((ch = fgetc(fin)) != EOF) 2893 while ((ch = fgetc(fin)) != EOF)
2894 { 2894 {
2895 fputc(ch, fout); 2895 fputc(ch, fout);
2896 } 2896 }
2897 fprintf(fout, "</html></body>\n"); 2897 fprintf(fout, "</html></body>\n");
2898 fclose(fout); 2898 fclose(fout);
2899 allok = true; 2899 allok = true;
2900 } 2900 }
2901 else 2901 else
2902 QMessageBox::information(this, PROGNAME, "Couldn't open output"); 2902 QMessageBox::information(this, PROGNAME, "Couldn't open output");
2903 } 2903 }
2904 delete fb; 2904 delete fb;
2905 fclose(fin); 2905 fclose(fin);
2906 if (allok) unlink((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind))); 2906 if (allok) unlink((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)));
2907 } 2907 }
2908 else 2908 else
2909 { 2909 {
2910 QMessageBox::information(this, PROGNAME, "Couldn't open input"); 2910 QMessageBox::information(this, PROGNAME, "Couldn't open input");
2911 } 2911 }
2912 2912
2913/* 2913/*
2914 CFileSelector *f = new CFileSelector("text/html", this, NULL, !m_bFloatingDialog, TRUE, TRUE ); 2914 CFileSelector *f = new CFileSelector("text/html", this, NULL, !m_bFloatingDialog, TRUE, TRUE );
2915 int ret = f->exec(); 2915 int ret = f->exec();
2916 qDebug("Return:%d", ret); 2916 qDebug("Return:%d", ret);
2917 DocLnk* doc = f->getDoc(); 2917 DocLnk* doc = f->getDoc();
2918 if (doc != NULL) 2918 if (doc != NULL)
2919 { 2919 {
2920 FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r"); 2920 FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r");
2921 QString rt; 2921 QString rt;
2922 rt = "<html><body>\n"; 2922 rt = "<html><body>\n";
2923 int ch = 0; 2923 int ch = 0;
2924 while ((ch = fgetc(fin)) != EOF) 2924 while ((ch = fgetc(fin)) != EOF)
2925 { 2925 {
2926 rt += (char)ch; 2926 rt += (char)ch;
2927 } 2927 }
2928 fclose(fin); 2928 fclose(fin);
2929 rt += "</html></body>\n"; 2929 rt += "</html></body>\n";
2930 if ( doc->name().isEmpty() ) 2930 if ( doc->name().isEmpty() )
2931 { 2931 {
2932 doc->setName(bkmkselector->text(ind)); 2932 doc->setName(bkmkselector->text(ind));
2933 } 2933 }
2934 FileManager fm; 2934 FileManager fm;
2935 fm.saveFile( *doc, rt ); 2935 fm.saveFile( *doc, rt );
2936 qDebug("YES"); 2936 qDebug("YES");
2937 } 2937 }
2938 else 2938 else
2939 { 2939 {
2940 qDebug("NO"); 2940 qDebug("NO");
2941 } 2941 }
2942 delete f; 2942 delete f;
2943*/ 2943*/
2944 2944
2945#endif /* USEQPE */ 2945#endif /* USEQPE */
2946 } 2946 }
2947 break; 2947 break;
2948 } 2948 }
2949} 2949}
2950 2950
2951void QTReaderApp::cancelbkmk() 2951void QTReaderApp::cancelbkmk()
2952{ 2952{
2953 if (m_nBkmkAction == cOpenFile) 2953 if (m_nBkmkAction == cOpenFile)
2954 { 2954 {
2955 QString fn = usefilebrowser(); 2955 QString fn = usefilebrowser();
2956 if (!fn.isEmpty() && QFileInfo(fn).isFile()) openFile(fn); 2956 if (!fn.isEmpty() && QFileInfo(fn).isFile()) openFile(fn);
2957 } 2957 }
2958 showEditTools(); 2958 showEditTools();
2959} 2959}
2960 2960
2961void QTReaderApp::jump() 2961void QTReaderApp::jump()
2962{ 2962{
2963 m_nRegAction = cJump; 2963 m_nRegAction = cJump;
2964 char lcn[20]; 2964 char lcn[20];
2965 sprintf(lcn, "%lu", reader->pagelocate()); 2965 sprintf(lcn, "%lu", reader->pagelocate());
2966 regEdit->setText(lcn); 2966 regEdit->setText(lcn);
2967 do_regedit(); 2967 do_regedit();
2968} 2968}
2969 2969
2970void QTReaderApp::do_jump(const QString& lcn) 2970void QTReaderApp::do_jump(const QString& lcn)
2971{ 2971{
2972 bool ok; 2972 bool ok;
2973 unsigned long ulcn = lcn.toULong(&ok); 2973 unsigned long ulcn = lcn.toULong(&ok);
2974 if (ok) 2974 if (ok)
2975 reader->locate(ulcn); 2975 reader->locate(ulcn);
2976 else 2976 else
2977 QMessageBox::information(this, PROGNAME, "Must be a number"); 2977 QMessageBox::information(this, PROGNAME, "Must be a number");
2978} 2978}
2979 2979
2980void QTReaderApp::do_regaction() 2980void QTReaderApp::do_regaction()
2981{ 2981{
2982 reader->bDoUpdates = false; 2982 reader->bDoUpdates = false;
2983 regBar->hide(); 2983 regBar->hide();
2984#ifdef USEQPE 2984#ifdef USEQPE
2985 Global::hideInputMethod(); 2985 Global::hideInputMethod();
2986#endif 2986#endif
2987 regVisible = false; 2987 regVisible = false;
2988 switch(m_nRegAction) 2988 switch(m_nRegAction)
2989 { 2989 {
2990 case cAutoGen: 2990 case cAutoGen:
2991 do_autogen(regEdit->text()); 2991 do_autogen(regEdit->text());
2992 break; 2992 break;
2993 case cAddBkmk: 2993 case cAddBkmk:
2994 do_addbkmk(regEdit->text()); 2994 do_addbkmk(regEdit->text());
2995 break; 2995 break;
2996 case cJump: 2996 case cJump:
2997 do_jump(regEdit->text()); 2997 do_jump(regEdit->text());
2998 break; 2998 break;
2999/* 2999/*
3000 case cMonoSpace: 3000 case cMonoSpace:
3001 do_mono(regEdit->text()); 3001 do_mono(regEdit->text());
3002 break; 3002 break;
3003*/ 3003*/
3004 case cSetTarget: 3004 case cSetTarget:
3005 do_settarget(regEdit->text()); 3005 do_settarget(regEdit->text());
3006 break; 3006 break;
3007#ifdef _SCROLLPIPE 3007#ifdef _SCROLLPIPE
3008 case cSetPipeTarget: 3008 case cSetPipeTarget:
3009 do_setpipetarget(regEdit->text()); 3009 do_setpipetarget(regEdit->text());
3010 break; 3010 break;
3011#endif 3011#endif
3012 case cSetConfigName: 3012 case cSetConfigName:
3013 // qDebug("Saving config"); 3013 // qDebug("Saving config");
3014 do_saveconfig(regEdit->text(), false); 3014 do_saveconfig(regEdit->text(), false);
3015 break; 3015 break;
3016 } 3016 }
3017// reader->restore(); 3017// reader->restore();
3018// fileBar->show(); 3018// fileBar->show();
3019 reader->setFocus(); 3019 reader->setFocus();
3020// qApp->processEvents(); 3020// qApp->processEvents();
3021 reader->bDoUpdates = true; 3021 reader->bDoUpdates = true;
3022 reader->update(); 3022 reader->update();
3023} 3023}
3024 3024
3025void QTReaderApp::do_settarget(const QString& _txt) 3025void QTReaderApp::do_settarget(const QString& _txt)
3026{ 3026{
3027 int ind = _txt.find('/'); 3027 int ind = _txt.find('/');
3028 if (ind == -1) 3028 if (ind == -1)
3029 { 3029 {
3030 m_targetapp = ""; 3030 m_targetapp = "";
3031 m_targetmsg = ""; 3031 m_targetmsg = "";
3032 QMessageBox::information(this, PROGNAME, "Format is\nappname/messagename"); 3032 QMessageBox::information(this, PROGNAME, "Format is\nappname/messagename");
3033 } 3033 }
3034 else 3034 else
3035 { 3035 {
3036 m_targetapp = _txt.left(ind); 3036 m_targetapp = _txt.left(ind);
3037 m_targetmsg = _txt.right(_txt.length()-ind-1); 3037 m_targetmsg = _txt.right(_txt.length()-ind-1);
3038 } 3038 }
3039} 3039}
3040 3040
3041void QTReaderApp::chooseencoding() 3041void QTReaderApp::chooseencoding()
3042{ 3042{
3043 m_fontSelector->clear(); 3043 m_fontSelector->clear();
3044 m_fontSelector->insertItem("Ascii"); 3044 m_fontSelector->insertItem("Ascii");
3045 m_fontSelector->insertItem("UTF-8"); 3045 m_fontSelector->insertItem("UTF-8");
3046 m_fontSelector->insertItem("UCS-2(BE)"); 3046 m_fontSelector->insertItem("UCS-2(BE)");
3047 m_fontSelector->insertItem("USC-2(LE)"); 3047 m_fontSelector->insertItem("USC-2(LE)");
3048 m_fontSelector->insertItem("Palm"); 3048 m_fontSelector->insertItem("Palm");
3049 for (unicodetable::iterator iter = unicodetable::begin(); iter != unicodetable::end(); iter++) 3049 for (unicodetable::iterator iter = unicodetable::begin(); iter != unicodetable::end(); iter++)
3050 { 3050 {
3051 m_fontSelector->insertItem(iter->mime); 3051 m_fontSelector->insertItem(iter->mime);
3052 } // delete the FontDatabase!!! 3052 } // delete the FontDatabase!!!
3053 m_fontSelector->setCurrentItem (reader->m_encd); 3053 m_fontSelector->setCurrentItem (reader->m_encd);
3054 m_fontAction = cChooseEncoding; 3054 m_fontAction = cChooseEncoding;
3055 m_fontBar->show(); 3055 m_fontBar->show();
3056 m_fontVisible = true; 3056 m_fontVisible = true;
3057} 3057}
3058 3058
3059void QTReaderApp::setfont() 3059void QTReaderApp::setfont()
3060{ 3060{
3061 m_fontSelector->clear(); 3061 m_fontSelector->clear();
3062 { 3062 {
3063#ifdef USEQPE 3063#ifdef USEQPE
3064 FontDatabase f; 3064 FontDatabase f;
3065#else 3065#else
3066 QFontDatabase f; 3066 QFontDatabase f;
3067#endif 3067#endif
3068 QStringList flist = f.families(); 3068 QStringList flist = f.families();
3069 m_fontSelector->insertStringList(flist); 3069 m_fontSelector->insertStringList(flist);
3070 } // delete the FontDatabase!!! 3070 } // delete the FontDatabase!!!
3071 3071
3072 for (int i = 1; i <= m_fontSelector->count(); i++) 3072 for (int i = 1; i <= m_fontSelector->count(); i++)
3073 { 3073 {
3074 if (m_fontSelector->text(i) == reader->m_fontname) 3074 if (m_fontSelector->text(i) == reader->m_fontname)
3075 { 3075 {
3076 m_fontSelector->setCurrentItem(i); 3076 m_fontSelector->setCurrentItem(i);
3077 break; 3077 break;
3078 } 3078 }
3079 } 3079 }
3080 m_fontAction = cChooseFont; 3080 m_fontAction = cChooseFont;
3081 m_fontBar->show(); 3081 m_fontBar->show();
3082 m_fontVisible = true; 3082 m_fontVisible = true;
3083} 3083}
3084 3084
3085void QTReaderApp::setfontHelper(const QString& lcn, int size) 3085void QTReaderApp::setfontHelper(const QString& lcn, int size)
3086{ 3086{
3087 if (size == 0) size = reader->m_fontControl.currentsize(); 3087 if (size == 0) size = reader->m_fontControl.currentsize();
3088 if (m_propogatefontchange) 3088 if (m_propogatefontchange)
3089 { 3089 {
3090 QFont f(lcn, 10); 3090 QFont f(lcn, 10);
3091 bkmkselector->setFont( f ); 3091 bkmkselector->setFont( f );
3092 regEdit->setFont( f ); 3092 regEdit->setFont( f );
3093 searchEdit->setFont( f ); 3093 searchEdit->setFont( f );
3094 m_annoWin->setFont( f ); 3094 m_annoWin->setFont( f );
3095 } 3095 }
3096 reader->m_fontname = lcn; 3096 reader->m_fontname = lcn;
3097 if (!reader->ChangeFont(size)) 3097 if (!reader->ChangeFont(size))
3098 { 3098 {
3099 reader->ChangeFont(size); 3099 reader->ChangeFont(size);
3100 } 3100 }
3101} 3101}
3102 3102
3103void QTReaderApp::do_setencoding(int i) 3103void QTReaderApp::do_setencoding(int i)
3104{ 3104{
3105// qDebug("setencoding:%d", i); 3105// qDebug("setencoding:%d", i);
3106 if (m_fontAction == cChooseEncoding) 3106 if (m_fontAction == cChooseEncoding)
3107 { 3107 {
3108 reader->setencoding(i); 3108 reader->setencoding(i);
3109 } 3109 }
3110 reader->refresh(); 3110 reader->refresh();
3111 m_fontBar->hide(); 3111 m_fontBar->hide();
3112 m_fontVisible = false; 3112 m_fontVisible = false;
3113// qDebug("showedit"); 3113// qDebug("showedit");
3114 if (reader->isVisible()) showEditTools(); 3114 if (reader->isVisible()) showEditTools();
3115// qDebug("showeditdone"); 3115// qDebug("showeditdone");
3116} 3116}
3117 3117
3118void QTReaderApp::do_setfont(const QString& lcn) 3118void QTReaderApp::do_setfont(const QString& lcn)
3119{ 3119{
3120 if (m_fontAction == cChooseFont) 3120 if (m_fontAction == cChooseFont)
3121 { 3121 {
3122 setfontHelper(lcn); 3122 setfontHelper(lcn);
3123 } 3123 }
3124 reader->refresh(); 3124 reader->refresh();
3125 m_fontBar->hide(); 3125 m_fontBar->hide();
3126 m_fontVisible = false; 3126 m_fontVisible = false;
3127// qDebug("showedit"); 3127// qDebug("showedit");
3128 //if (reader->isVisible()) 3128 //if (reader->isVisible())
3129 showEditTools(); 3129 showEditTools();
3130// qDebug("showeditdone"); 3130// qDebug("showeditdone");
3131} 3131}
3132 3132
3133void QTReaderApp::do_autogen(const QString& regText) 3133void QTReaderApp::do_autogen(const QString& regText)
3134{ 3134{
3135 unsigned long fs, ts; 3135 unsigned long fs, ts;
3136 reader->sizes(fs,ts); 3136 reader->sizes(fs,ts);
3137// // qDebug("Reg:%s\n", (const tchar*)(regEdit->text())); 3137// // qDebug("Reg:%s\n", (const tchar*)(regEdit->text()));
3138 m_autogenstr = regText; 3138 m_autogenstr = regText;
3139 QRegExp re(regText); 3139 QRegExp re(regText);
3140 CBuffer buff; 3140 CBuffer buff;
3141 if (pBkmklist != NULL) delete pBkmklist; 3141 if (pBkmklist != NULL) delete pBkmklist;
3142 pBkmklist = new CList<Bkmk>; 3142 pBkmklist = new CList<Bkmk>;
3143 m_fBkmksChanged = true; 3143 m_fBkmksChanged = true;
3144 3144
3145 pbar->setGeometry(regBar->x(),regBar->y(),regBar->width(), regBar->height()); 3145 pbar->setGeometry(regBar->x(),regBar->y(),regBar->width(), regBar->height());
3146 pbar->show(); 3146 pbar->show();
3147 pbar->raise(); 3147 pbar->raise();
3148 pbar->reset(); 3148 pbar->reset();
3149 reader->update(); 3149 reader->update();
3150 qApp->processEvents(); 3150 qApp->processEvents();
3151 reader->setFocus(); 3151 reader->setFocus();
3152 reader->jumpto(0); 3152 reader->jumpto(0);
3153 int lastpc = 0; 3153 int lastpc = 0;
3154 int i = 0; 3154 int i = 0;
3155 while (i >= 0) 3155 while (i >= 0)
3156 { 3156 {
3157 unsigned int lcn = reader->locate(); 3157 unsigned int lcn = reader->locate();
3158 int pc = (100*lcn)/ts; 3158 int pc = (100*lcn)/ts;
3159 if (pc != lastpc) 3159 if (pc != lastpc)
3160 { 3160 {
3161 pbar->setProgress(pc); 3161 pbar->setProgress(pc);
3162 qApp->processEvents(); 3162 qApp->processEvents();
3163 if (reader->locate() != lcn) reader->jumpto(lcn); 3163 if (reader->locate() != lcn) reader->jumpto(lcn);
3164 reader->setFocus(); 3164 reader->setFocus();
3165 lastpc = pc; 3165 lastpc = pc;
3166 } 3166 }
3167 i = reader->buffdoc.getpara(buff); 3167 i = reader->buffdoc.getpara(buff);
3168#ifdef _UNICODE 3168#ifdef _UNICODE
3169 if (re.match(toQString(buff.data())) != -1) 3169 if (re.match(toQString(buff.data())) != -1)
3170#else 3170#else
3171 if (re.match(buff.data()) != -1) 3171 if (re.match(buff.data()) != -1)
3172#endif 3172#endif
3173 pBkmklist->push_back(Bkmk(buff.data(), NULL, lcn)); 3173 pBkmklist->push_back(Bkmk(buff.data(), NULL, lcn));
3174 } 3174 }
3175 pBkmklist->sort(); 3175 pBkmklist->sort();
3176 pbar->setProgress(100); 3176 pbar->setProgress(100);
3177 qApp->processEvents(); 3177 qApp->processEvents();
3178 pbar->hide(); 3178 pbar->hide();
3179 reader->refresh(); 3179 reader->refresh();
3180} 3180}
3181 3181
3182void QTReaderApp::saveprefs() 3182void QTReaderApp::saveprefs()
3183{ 3183{
3184// qDebug("saveprefs"); 3184// qDebug("saveprefs");
3185// reader->saveprefs("uqtreader"); 3185// reader->saveprefs("uqtreader");
3186// if (!m_loadedconfig) 3186// if (!m_loadedconfig)
3187 do_saveconfig( APPDIR, true ); 3187 do_saveconfig( APPDIR, true );
3188 3188
3189/* 3189/*
3190 Config config( APPDIR ); 3190 Config config( APPDIR );
3191 config.setGroup( "View" ); 3191 config.setGroup( "View" );
3192 3192
3193 reader->m_lastposn = reader->pagelocate(); 3193 reader->m_lastposn = reader->pagelocate();
3194 3194
3195 config.writeEntry("FloatDialogs", m_bFloatingDialog); 3195 config.writeEntry("FloatDialogs", m_bFloatingDialog);
3196 config.writeEntry( "StripCr", reader->bstripcr ); 3196 config.writeEntry( "StripCr", reader->bstripcr );
3197 config.writeEntry( "AutoFmt", reader->bautofmt ); 3197 config.writeEntry( "AutoFmt", reader->bautofmt );
3198 config.writeEntry( "TextFmt", reader->btextfmt ); 3198 config.writeEntry( "TextFmt", reader->btextfmt );
3199 config.writeEntry( "StripHtml", reader->bstriphtml ); 3199 config.writeEntry( "StripHtml", reader->bstriphtml );
3200 config.writeEntry( "Dehyphen", reader->bdehyphen ); 3200 config.writeEntry( "Dehyphen", reader->bdehyphen );
3201 config.writeEntry( "Depluck", reader->bdepluck ); 3201 config.writeEntry( "Depluck", reader->bdepluck );
3202 config.writeEntry( "Dejpluck", reader->bdejpluck ); 3202 config.writeEntry( "Dejpluck", reader->bdejpluck );
3203 config.writeEntry( "OneSpace", reader->bonespace ); 3203 config.writeEntry( "OneSpace", reader->bonespace );
3204 config.writeEntry( "Unindent", reader->bunindent ); 3204 config.writeEntry( "Unindent", reader->bunindent );
3205 config.writeEntry( "Repara", reader->brepara ); 3205 config.writeEntry( "Repara", reader->brepara );
3206 config.writeEntry( "DoubleSpace", reader->bdblspce ); 3206 config.writeEntry( "DoubleSpace", reader->bdblspce );
3207 config.writeEntry( "Indent", reader->bindenter ); 3207 config.writeEntry( "Indent", reader->bindenter );
3208 config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) ); 3208 config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) );
3209 config.writeEntry( "ScrollDelay", reader->m_delay); 3209 config.writeEntry( "ScrollDelay", reader->m_delay);
3210 config.writeEntry( "LastFile", reader->m_lastfile ); 3210 config.writeEntry( "LastFile", reader->m_lastfile );
3211 config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); 3211 config.writeEntry( "LastPosn", (int)(reader->pagelocate()) );
3212 config.writeEntry( "PageMode", reader->m_bpagemode ); 3212 config.writeEntry( "PageMode", reader->m_bpagemode );
3213 config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); 3213 config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced );
3214 config.writeEntry( "SwapMouse", reader->m_swapmouse); 3214 config.writeEntry( "SwapMouse", reader->m_swapmouse);
3215 config.writeEntry( "Fontname", reader->m_fontname ); 3215 config.writeEntry( "Fontname", reader->m_fontname );
3216 config.writeEntry( "Encoding", reader->m_encd ); 3216 config.writeEntry( "Encoding", reader->m_encd );
3217 config.writeEntry( "CharSpacing", reader->m_charpc ); 3217 config.writeEntry( "CharSpacing", reader->m_charpc );
3218 config.writeEntry( "Overlap", (int)(reader->m_overlap) ); 3218 config.writeEntry( "Overlap", (int)(reader->m_overlap) );
3219 config.writeEntry( "Margin", (int)reader->m_border ); 3219 config.writeEntry( "Margin", (int)reader->m_border );
3220 config.writeEntry( "TargetApp", m_targetapp ); 3220 config.writeEntry( "TargetApp", m_targetapp );
3221 config.writeEntry( "TargetMsg", m_targetmsg ); 3221 config.writeEntry( "TargetMsg", m_targetmsg );
3222#ifdef _SCROLLPIPE 3222#ifdef _SCROLLPIPE
3223 config.writeEntry( "PipeTarget", reader->m_pipetarget ); 3223 config.writeEntry( "PipeTarget", reader->m_pipetarget );
3224 config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); 3224 config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara );
3225#endif 3225#endif
3226 config.writeEntry( "TwoTouch", m_twoTouch ); 3226 config.writeEntry( "TwoTouch", m_twoTouch );
3227 config.writeEntry( "Annotation", m_doAnnotation); 3227 config.writeEntry( "Annotation", m_doAnnotation);
3228 config.writeEntry( "Dictionary", m_doDictionary); 3228 config.writeEntry( "Dictionary", m_doDictionary);
3229 config.writeEntry( "Clipboard", m_doClipboard); 3229 config.writeEntry( "Clipboard", m_doClipboard);
3230 config.writeEntry( "SpaceTarget", m_spaceTarget); 3230 config.writeEntry( "SpaceTarget", m_spaceTarget);
3231 config.writeEntry( "EscapeTarget", m_escapeTarget); 3231 config.writeEntry( "EscapeTarget", m_escapeTarget);
3232 config.writeEntry( "ReturnTarget", m_returnTarget); 3232 config.writeEntry( "ReturnTarget", m_returnTarget);
3233 config.writeEntry( "LeftTarget", m_leftTarget); 3233 config.writeEntry( "LeftTarget", m_leftTarget);
3234 config.writeEntry( "RightTarget", m_rightTarget); 3234 config.writeEntry( "RightTarget", m_rightTarget);
3235 config.writeEntry( "UpTarget", m_upTarget); 3235 config.writeEntry( "UpTarget", m_upTarget);
3236 config.writeEntry( "DownTarget", m_downTarget); 3236 config.writeEntry( "DownTarget", m_downTarget);
3237 config.writeEntry("LeftScroll", m_leftScroll); 3237 config.writeEntry("LeftScroll", m_leftScroll);
3238 config.writeEntry("RightScroll", m_rightScroll); 3238 config.writeEntry("RightScroll", m_rightScroll);
3239 config.writeEntry("UpScroll", m_upScroll); 3239 config.writeEntry("UpScroll", m_upScroll);
3240 config.writeEntry("DownScroll", m_downScroll); 3240 config.writeEntry("DownScroll", m_downScroll);
3241#ifdef REPALM 3241#ifdef REPALM
3242 config.writeEntry( "Repalm", reader->brepalm ); 3242 config.writeEntry( "Repalm", reader->brepalm );
3243#endif 3243#endif
3244 config.writeEntry( "Remap", reader->bremap ); 3244 config.writeEntry( "Remap", reader->bremap );
3245 config.writeEntry( "Peanut", reader->bpeanut ); 3245 config.writeEntry( "Peanut", reader->bpeanut );
3246 config.writeEntry( "MakeBold", reader->bmakebold ); 3246 config.writeEntry( "MakeBold", reader->bmakebold );
3247 config.writeEntry( "Continuous", reader->m_continuousDocument ); 3247 config.writeEntry( "Continuous", reader->m_continuousDocument );
3248 config.writeEntry( "FullJust", reader->bfulljust ); 3248 config.writeEntry( "FullJust", reader->bfulljust );
3249 config.writeEntry( "ExtraSpace", reader->getextraspace() ); 3249 config.writeEntry( "ExtraSpace", reader->getextraspace() );
3250 config.writeEntry( "ExtraLead", reader->getlead() ); 3250 config.writeEntry( "ExtraLead", reader->getlead() );
3251 config.writeEntry( "Basesize", (int)reader->getBaseSize()); 3251 config.writeEntry( "Basesize", (int)reader->getBaseSize());
3252 config.writeEntry( "RequestorFontChange", m_propogatefontchange); 3252 config.writeEntry( "RequestorFontChange", m_propogatefontchange);
3253 3253
3254 config.setGroup( "Toolbar" ); 3254 config.setGroup( "Toolbar" );
3255 config.writeEntry("Movable", m_tbmovesave); 3255 config.writeEntry("Movable", m_tbmovesave);
3256 config.writeEntry("Policy", m_tbpolsave); 3256 config.writeEntry("Policy", m_tbpolsave);
3257 config.writeEntry("Position", m_tbposition); 3257 config.writeEntry("Position", m_tbposition);
3258*/ 3258*/
3259 savefilelist(); 3259 savefilelist();
3260} 3260}
3261 3261
3262/* 3262/*
3263void QTReaderApp::oldFile() 3263void QTReaderApp::oldFile()
3264{ 3264{
3265// qDebug("oldFile called"); 3265// qDebug("oldFile called");
3266 reader->setText(true); 3266 reader->setText(true);
3267// qDebug("settext called"); 3267// qDebug("settext called");
3268 showEditTools(); 3268 showEditTools();
3269// qDebug("showedit called"); 3269// qDebug("showedit called");
3270} 3270}
3271*/ 3271*/
3272 3272
3273/* 3273/*
3274void info_cb(Fl_Widget* o, void* _data) 3274void info_cb(Fl_Widget* o, void* _data)
3275{ 3275{
3276 3276
3277 if (infowin == NULL) 3277 if (infowin == NULL)
3278 { 3278 {
3279 3279
3280 infowin = new Fl_Window(160,240); 3280 infowin = new Fl_Window(160,240);
3281 filename = new Fl_Output(45,5,110,14,"Filename"); 3281 filename = new Fl_Output(45,5,110,14,"Filename");
3282 filesize = new Fl_Output(45,25,110,14,"Filesize"); 3282 filesize = new Fl_Output(45,25,110,14,"Filesize");
3283 textsize = new Fl_Output(45,45,110,14,"Textsize"); 3283 textsize = new Fl_Output(45,45,110,14,"Textsize");
3284 comprat = new CBar(45,65,110,14,"Ratio %"); 3284 comprat = new CBar(45,65,110,14,"Ratio %");
3285 posn = new Fl_Output(45,85,110,14,"Location"); 3285 posn = new Fl_Output(45,85,110,14,"Location");
3286 frcn = new CBar(45,105,110,14,"% Read"); 3286 frcn = new CBar(45,105,110,14,"% Read");
3287 about = new Fl_Multiline_Output(5,125,150,90); 3287 about = new Fl_Multiline_Output(5,125,150,90);
3288 about->value("TWReader - $Name$\n\nA file reader program for the Agenda\n\nReads text, PalmDoc and ppms format files"); 3288 about->value("TWReader - $Name$\n\nA file reader program for the Agenda\n\nReads text, PalmDoc and ppms format files");
3289 Fl_Button *jump_accept = new Fl_Button(62,220,35,14,"Okay"); 3289 Fl_Button *jump_accept = new Fl_Button(62,220,35,14,"Okay");
3290 infowin->set_modal(); 3290 infowin->set_modal();
3291 } 3291 }
3292 if (((reader_ui *)_data)->g_filename[0] != '\0') 3292 if (((reader_ui *)_data)->g_filename[0] != '\0')
3293 { 3293 {
3294 unsigned long fs,ts; 3294 unsigned long fs,ts;
3295 tchar sz[20]; 3295 tchar sz[20];
3296 ((reader_ui *)_data)->input->sizes(fs,ts); 3296 ((reader_ui *)_data)->input->sizes(fs,ts);
3297 unsigned long pl = ((reader_ui *)_data)->input->locate(); 3297 unsigned long pl = ((reader_ui *)_data)->input->locate();
3298 3298
3299 filename->value(((reader_ui *)_data)->g_filename); 3299 filename->value(((reader_ui *)_data)->g_filename);
3300 3300
3301 sprintf(sz,"%u",fs); 3301 sprintf(sz,"%u",fs);
3302 filesize->value(sz); 3302 filesize->value(sz);
3303 3303
3304 sprintf(sz,"%u",ts); 3304 sprintf(sz,"%u",ts);
3305 textsize->value(sz); 3305 textsize->value(sz);
3306 3306
3307 comprat->value(100-(100*fs + (ts >> 1))/ts); 3307 comprat->value(100-(100*fs + (ts >> 1))/ts);
3308 3308
3309 sprintf(sz,"%u",pl); 3309 sprintf(sz,"%u",pl);
3310 posn->value(sz); 3310 posn->value(sz);
3311 3311
3312 frcn->value((100*pl + (ts >> 1))/ts); 3312 frcn->value((100*pl + (ts >> 1))/ts);
3313 } 3313 }
3314 infowin->show(); 3314 infowin->show();
3315} 3315}
3316*/ 3316*/
3317 3317
3318void QTReaderApp::savebkmks() 3318void QTReaderApp::savebkmks()
3319{ 3319{
3320 if (pBkmklist != NULL) 3320 if (pBkmklist != NULL)
3321 { 3321 {
3322#ifndef USEQPE 3322#ifndef USEQPE
3323 QDir d = QDir::home(); // "/" 3323 QDir d = QDir::home(); // "/"
3324 d.cd(APPDIR); 3324 d.cd(APPDIR);
3325 QFileInfo fi(d, reader->m_string); 3325 QFileInfo fi(d, reader->m_string);
3326 BkmkFile bf((const char *)fi.absFilePath(), true); 3326 BkmkFile bf((const char *)fi.absFilePath(), true);
3327#else /* USEQPE */ 3327#else /* USEQPE */
3328 BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string), true); 3328 BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string), true);
3329#endif /* USEQPE */ 3329#endif /* USEQPE */
3330 bf.write(*pBkmklist); 3330 bf.write(*pBkmklist);
3331 } 3331 }
3332 m_fBkmksChanged = false; 3332 m_fBkmksChanged = false;
3333} 3333}
3334 3334
3335void QTReaderApp::readfilelist() 3335void QTReaderApp::readfilelist()
3336{ 3336{
3337#ifndef USEQPE 3337#ifndef USEQPE
3338 QDir d = QDir::home(); // "/" 3338 QDir d = QDir::home(); // "/"
3339 d.cd(APPDIR); 3339 d.cd(APPDIR);
3340 QFileInfo fi(d, ".openfiles"); 3340 QFileInfo fi(d, ".openfiles");
3341 BkmkFile bf((const char *)fi.absFilePath()); 3341 BkmkFile bf((const char *)fi.absFilePath());
3342#else /* USEQPE */ 3342#else /* USEQPE */
3343 BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles")); 3343 BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles"));
3344#endif /* USEQPE */ 3344#endif /* USEQPE */
3345// qDebug("Reading open files"); 3345// qDebug("Reading open files");
3346 pOpenlist = bf.readall(); 3346 pOpenlist = bf.readall();
3347// if (pOpenlist != NULL) qDebug("...with success"); 3347// if (pOpenlist != NULL) qDebug("...with success");
3348// else qDebug("...without success!"); 3348// else qDebug("...without success!");
3349} 3349}
3350 3350
3351void QTReaderApp::savefilelist() 3351void QTReaderApp::savefilelist()
3352{ 3352{
3353 if (pOpenlist != NULL) 3353 if (pOpenlist != NULL)
3354 { 3354 {
3355#ifndef USEQPE 3355#ifndef USEQPE
3356 QDir d = QDir::home(); // "/" 3356 QDir d = QDir::home(); // "/"
3357 d.cd(APPDIR); 3357 d.cd(APPDIR);
3358 QFileInfo fi(d, ".openfiles"); 3358 QFileInfo fi(d, ".openfiles");
3359 BkmkFile bf((const char *)fi.absFilePath(), true); 3359 BkmkFile bf((const char *)fi.absFilePath(), true);
3360#else /* USEQPE */ 3360#else /* USEQPE */
3361 BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles"), true); 3361 BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles"), true);
3362#endif /* USEQPE */ 3362#endif /* USEQPE */
3363 //qDebug("Writing open files"); 3363 //qDebug("Writing open files");
3364 bf.write(*pOpenlist); 3364 bf.write(*pOpenlist);
3365 } 3365 }
3366} 3366}
3367 3367
3368void QTReaderApp::readbkmks() 3368void QTReaderApp::readbkmks()
3369{ 3369{
3370 if (pBkmklist != NULL) 3370 if (pBkmklist != NULL)
3371 { 3371 {
3372 delete pBkmklist; 3372 delete pBkmklist;
3373 } 3373 }
3374 struct stat fnstat; 3374 struct stat fnstat;
3375 struct stat bkstat; 3375 struct stat bkstat;
3376#ifndef USEQPE 3376#ifndef USEQPE
3377 QDir d = QDir::home(); // "/" 3377 QDir d = QDir::home(); // "/"
3378 d.cd(APPDIR); 3378 d.cd(APPDIR);
3379 QFileInfo fi(d, reader->m_string); 3379 QFileInfo fi(d, reader->m_string);
3380#endif /* ! USEQPE */ 3380#endif /* ! USEQPE */
3381 if ( 3381 if (
3382 stat((const char *)reader->m_lastfile, &fnstat) == 0 3382 stat((const char *)reader->m_lastfile, &fnstat) == 0
3383 && 3383 &&
3384#ifndef USEQPE 3384#ifndef USEQPE
3385 stat((const char *)fi.absFilePath(), &bkstat) == 0 3385 stat((const char *)fi.absFilePath(), &bkstat) == 0
3386#else /* USEQPE */ 3386#else /* USEQPE */
3387 stat((const char *)Global::applicationFileName(APPDIR,reader->m_string), &bkstat) == 0 3387 stat((const char *)Global::applicationFileName(APPDIR,reader->m_string), &bkstat) == 0
3388#endif /* USEQPE */ 3388#endif /* USEQPE */
3389 ) 3389 )
3390 { 3390 {
3391 if (bkstat.st_mtime < fnstat.st_mtime) 3391 if (bkstat.st_mtime < fnstat.st_mtime)
3392 { 3392 {
3393#ifndef USEQPE 3393#ifndef USEQPE
3394 unlink((const char *)fi.absFilePath()); 3394 unlink((const char *)fi.absFilePath());
3395#else /* USEQPE */ 3395#else /* USEQPE */
3396 unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); 3396 unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string));
3397#endif /* USEQPE */ 3397#endif /* USEQPE */
3398 } 3398 }
3399 } 3399 }
3400 3400
3401#ifndef USEQPE 3401#ifndef USEQPE
3402 BkmkFile bf((const char *)fi.absFilePath()); 3402 BkmkFile bf((const char *)fi.absFilePath());
3403#else /* USEQPE */ 3403#else /* USEQPE */
3404 BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string)); 3404 BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string));
3405#endif /* USEQPE */ 3405#endif /* USEQPE */
3406 3406
3407 pBkmklist = bf.readall(); 3407 pBkmklist = bf.readall();
3408 m_fBkmksChanged = bf.upgraded(); 3408 m_fBkmksChanged = bf.upgraded();
3409 if (pBkmklist == NULL) 3409 if (pBkmklist == NULL)
3410 { 3410 {
3411 pBkmklist = reader->getbkmklist(); 3411 pBkmklist = reader->getbkmklist();
3412 } 3412 }
3413 if (pBkmklist != NULL) 3413 if (pBkmklist != NULL)
3414 pBkmklist->sort(); 3414 pBkmklist->sort();
3415} 3415}
3416 3416
3417void QTReaderApp::addbkmk() 3417void QTReaderApp::addbkmk()
3418{ 3418{
3419 m_nRegAction = cAddBkmk; 3419 m_nRegAction = cAddBkmk;
3420 regEdit->setText(reader->firstword()); 3420 regEdit->setText(reader->firstword());
3421 do_regedit(); 3421 do_regedit();
3422} 3422}
3423 3423
3424void QTReaderApp::do_addbkmk(const QString& text) 3424void QTReaderApp::do_addbkmk(const QString& text)
3425{ 3425{
3426 if (text.isEmpty()) 3426 if (text.isEmpty())
3427 { 3427 {
3428 QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nSelect add again", 1); 3428 QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nSelect add again", 1);
3429 } 3429 }
3430 else 3430 else
3431 { 3431 {
3432 if (pBkmklist == NULL) pBkmklist = new CList<Bkmk>; 3432 if (pBkmklist == NULL) pBkmklist = new CList<Bkmk>;
3433#ifdef _UNICODE 3433#ifdef _UNICODE
3434 CBuffer buff; 3434 CBuffer buff;
3435 int i = 0; 3435 int i = 0;
3436 for (i = 0; i < text.length(); i++) 3436 for (i = 0; i < text.length(); i++)
3437 { 3437 {
3438 buff[i] = text[i].unicode(); 3438 buff[i] = text[i].unicode();
3439 } 3439 }
3440 buff[i] = 0; 3440 buff[i] = 0;
3441 pBkmklist->push_front(Bkmk(buff.data(), NULL, reader->pagelocate())); 3441 pBkmklist->push_front(Bkmk(buff.data(), NULL, reader->pagelocate()));
3442#else 3442#else
3443 pBkmklist->push_front(Bkmk((const tchar*)text, reader->pagelocate())); 3443 pBkmklist->push_front(Bkmk((const tchar*)text, reader->pagelocate()));
3444#endif 3444#endif
3445 m_fBkmksChanged = true; 3445 m_fBkmksChanged = true;
3446 pBkmklist->sort(); 3446 pBkmklist->sort();
3447 } 3447 }
3448} 3448}
3449 3449
3450void QTReaderApp::OnRedraw() 3450void QTReaderApp::OnRedraw()
3451{ 3451{
3452 if ((pBkmklist != NULL) && (m_bkmkAvail != NULL)) 3452 if ((pBkmklist != NULL) && (m_bkmkAvail != NULL))
3453 { 3453 {
3454 bool found = findNextBookmark(reader->pagelocate()); 3454 bool found = findNextBookmark(reader->pagelocate());
3455 m_bkmkAvail->setEnabled(found); 3455 m_bkmkAvail->setEnabled(found);
3456 } 3456 }
3457} 3457}
3458 3458
3459void QTReaderApp::showAnnotation() 3459void QTReaderApp::showAnnotation()
3460{ 3460{
3461 m_annoWin->setName(toQString(m_anno->name())); 3461 m_annoWin->setName(toQString(m_anno->name()));
3462 m_annoWin->setAnno(toQString(m_anno->anno())); 3462 m_annoWin->setAnno(toQString(m_anno->anno()));
3463 m_annoIsEditing = false; 3463 m_annoIsEditing = false;
3464#ifdef USEQPE 3464#ifdef USEQPE
3465 Global::showInputMethod(); 3465 Global::showInputMethod();
3466#endif 3466#endif
3467 editorStack->raiseWidget( m_annoWin ); 3467 editorStack->raiseWidget( m_annoWin );
3468 m_annoWin->setFocus(); 3468 m_annoWin->setFocus();
3469} 3469}
3470 3470
3471void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, const QString& line) 3471void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, const QString& line)
3472{ 3472{
3473//// qDebug("OnWordSelected(%u):%s", posn, (const char*)wrd); 3473//// qDebug("OnWordSelected(%u):%s", posn, (const char*)wrd);
3474 3474
3475 if (m_doClipboard) 3475 if (m_doClipboard)
3476 { 3476 {
3477 QClipboard* cb = QApplication::clipboard(); 3477 QClipboard* cb = QApplication::clipboard();
3478 cb->setText(wrd); 3478 cb->setText(wrd);
3479#ifdef USEQPE 3479#ifdef USEQPE
3480 if (wrd.length() > 10) 3480 if (wrd.length() > 10)
3481 { 3481 {
3482 Global::statusMessage(wrd.left(8) + ".."); 3482 Global::statusMessage(wrd.left(8) + "..");
3483 } 3483 }
3484 else 3484 else
3485 { 3485 {
3486 Global::statusMessage(wrd); 3486 Global::statusMessage(wrd);
3487 } 3487 }
3488#endif 3488#endif
3489 } 3489 }
3490 if (m_doAnnotation) 3490 if (m_doAnnotation)
3491 { 3491 {
3492 //addAnno(wrd, "Need to be able to edit this", posn); 3492 //addAnno(wrd, "Need to be able to edit this", posn);
3493 m_annoWin->setName(line); 3493 m_annoWin->setName(line);
3494 m_annoWin->setAnno(""); 3494 m_annoWin->setAnno("");
3495 m_annoWin->setPosn(posn); 3495 m_annoWin->setPosn(posn);
3496 m_annoIsEditing = true; 3496 m_annoIsEditing = true;
3497#ifdef USEQPE 3497#ifdef USEQPE
3498 Global::showInputMethod(); 3498 Global::showInputMethod();
3499#endif 3499#endif
3500 editorStack->raiseWidget( m_annoWin ); 3500 editorStack->raiseWidget( m_annoWin );
3501 } 3501 }
3502#ifdef USEQPE 3502#ifdef USEQPE
3503 if (m_doDictionary) 3503 if (m_doDictionary)
3504 { 3504 {
3505 if (!m_targetapp.isEmpty() && !m_targetmsg.isEmpty()) 3505 if (!m_targetapp.isEmpty() && !m_targetmsg.isEmpty())
3506 { 3506 {
3507 QCopEnvelope e(("QPE/Application/"+m_targetapp).utf8(), (m_targetmsg+"(QString)").utf8()); 3507 QCopEnvelope e(("QPE/Application/"+m_targetapp).utf8(), (m_targetmsg+"(QString)").utf8());
3508 e << wrd; 3508 e << wrd;
3509 } 3509 }
3510 } 3510 }
3511#endif 3511#endif
3512} 3512}
3513 3513
3514void QTReaderApp::doAction(ActionTypes a, QKeyEvent* e) 3514void QTReaderApp::doAction(ActionTypes a, QKeyEvent* e)
3515{ 3515{
3516 if (a == 0) 3516 if (a == 0)
3517 { 3517 {
3518 e->ignore(); 3518 e->ignore();
3519 } 3519 }
3520 else 3520 else
3521 { 3521 {
3522 e->accept(); 3522 e->accept();
3523 //qDebug("Accepted"); 3523 //qDebug("Accepted");
3524 switch (a) 3524 switch (a)
3525 { 3525 {
3526 case cesOpenFile: 3526 case cesOpenFile:
3527 { 3527 {
3528 fileOpen(); 3528 fileOpen();
3529 } 3529 }
3530 break; 3530 break;
3531 case cesAutoScroll: 3531 case cesAutoScroll:
3532 { 3532 {
3533 reader->setautoscroll(!reader->m_autoScroll); 3533 reader->setautoscroll(!reader->m_autoScroll);
3534 setScrollState(reader->m_autoScroll); 3534 setScrollState(reader->m_autoScroll);
3535 } 3535 }
3536 break; 3536 break;
3537 case cesActionMark: 3537 case cesActionMark:
3538 { 3538 {
3539 addbkmk(); 3539 addbkmk();
3540 } 3540 }
3541 break; 3541 break;
3542 case cesFullScreen: 3542 case cesFullScreen:
3543 { 3543 {
3544 m_actFullscreen->setOn(!m_fullscreen); 3544 m_actFullscreen->setOn(!m_fullscreen);
3545 } 3545 }
3546 break; 3546 break;
3547 case cesActionAnno: 3547 case cesActionAnno:
3548 { 3548 {
3549 addanno(); 3549 addanno();
3550 } 3550 }
3551 break; 3551 break;
3552 case cesZoomIn: 3552 case cesZoomIn:
3553 zoomin(); 3553 zoomin();
3554 break; 3554 break;
3555 case cesZoomOut: 3555 case cesZoomOut:
3556 zoomout(); 3556 zoomout();
3557 break; 3557 break;
3558 case cesBack: 3558 case cesBack:
3559 reader->goBack(); 3559 reader->goBack();
3560 break; 3560 break;
3561 case cesForward: 3561 case cesForward:
3562 reader->goForward(); 3562 reader->goForward();
3563 break; 3563 break;
3564 case cesHome: 3564 case cesHome:
3565 reader->goHome(); 3565 reader->goHome();
3566 break; 3566 break;
3567 case cesPageUp: 3567 case cesPageUp:
3568 reader->dopageup(); 3568 reader->dopageup();
3569 break; 3569 break;
3570 case cesPageDown: 3570 case cesPageDown:
3571 reader->dopagedn(); 3571 reader->dopagedn();
3572 break; 3572 break;
3573 case cesLineUp: 3573 case cesLineUp:
3574 reader->lineUp(); 3574 reader->lineUp();
3575 break; 3575 break;
3576 case cesLineDown: 3576 case cesLineDown:
3577 reader->lineDown(); 3577 reader->lineDown();
3578 break; 3578 break;
3579 case cesStartDoc: 3579 case cesStartDoc:
3580 gotoStart(); 3580 gotoStart();
3581 break; 3581 break;
3582 case cesEndDoc: 3582 case cesEndDoc:
3583 gotoEnd(); 3583 gotoEnd();
3584 break; 3584 break;
3585 default: 3585 default:
3586 qDebug("Unknown ActionType:%u", a); 3586 qDebug("Unknown ActionType:%u", a);
3587 break; 3587 break;
3588 } 3588 }
3589 } 3589 }
3590} 3590}
3591 3591
3592void QTReaderApp::setTwoTouch(bool _b) { reader->setTwoTouch(_b); } 3592void QTReaderApp::setTwoTouch(bool _b) { reader->setTwoTouch(_b); }
3593void QTReaderApp::restoreFocus() { reader->setFocus(); } 3593void QTReaderApp::restoreFocus() { reader->setFocus(); }
3594 3594
3595void QTReaderApp::SaveConfig() 3595void QTReaderApp::SaveConfig()
3596{ 3596{
3597 m_nRegAction = cSetConfigName; 3597 m_nRegAction = cSetConfigName;
3598 regEdit->setText(reader->m_string); 3598 regEdit->setText(reader->m_string);
3599 do_regedit(); 3599 do_regedit();
3600} 3600}
3601 3601
3602void QTReaderApp::do_saveconfig(const QString& _txt, bool full) 3602void QTReaderApp::do_saveconfig(const QString& _txt, bool full)
3603{ 3603{
3604// qDebug("do_saveconfig:%s", (const char*)_txt); 3604// qDebug("do_saveconfig:%s", (const char*)_txt);
3605#ifdef USEQPE 3605#ifdef USEQPE
3606 QString configname; 3606 QString configname;
3607 Config::Domain dom; 3607 Config::Domain dom;
3608 3608
3609 if (full) 3609 if (full)
3610 { 3610 {
3611 configname = _txt; 3611 configname = _txt;
3612 dom = Config::User; 3612 dom = Config::User;
3613 } 3613 }
3614 else 3614 else
3615 { 3615 {
3616 configname = Global::applicationFileName(APPDIR "/configs", _txt); 3616 configname = Global::applicationFileName(APPDIR "/configs", _txt);
3617 dom = Config::File; 3617 dom = Config::File;
3618 } 3618 }
3619 3619
3620 Config config(configname, dom); 3620 Config config(configname, dom);
3621 config.setGroup( "View" ); 3621 config.setGroup( "View" );
3622 3622
3623#else 3623#else
3624 QFileInfo fi; 3624 QFileInfo fi;
3625 if (full) 3625 if (full)
3626 { 3626 {
3627 // qDebug("full:%s", (const char*)_txt); 3627 // qDebug("full:%s", (const char*)_txt);
3628 QDir d = QDir::home(); // "/" 3628 QDir d = QDir::home(); // "/"
3629 if ( !d.cd(_txt) ) 3629 if ( !d.cd(_txt) )
3630 { // "/tmp" 3630 { // "/tmp"
3631 qWarning( "Cannot find the \"~/%s\" directory", (const char*)_txt ); 3631 qWarning( "Cannot find the \"~/%s\" directory", (const char*)_txt );
3632 d = QDir::home(); 3632 d = QDir::home();
3633 d.mkdir(_txt); 3633 d.mkdir(_txt);
3634 d.cd(_txt); 3634 d.cd(_txt);
3635 } 3635 }
3636 fi.setFile(d, INIFILE); 3636 fi.setFile(d, INIFILE);
3637 } 3637 }
3638 else 3638 else
3639 { 3639 {
3640 QDir d = QDir::home(); // "/" 3640 QDir d = QDir::home(); // "/"
3641 if ( !d.cd(APPDIR) ) 3641 if ( !d.cd(APPDIR) )
3642 { // "/tmp" 3642 { // "/tmp"
3643 qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); 3643 qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
3644 d = QDir::home(); 3644 d = QDir::home();
3645 d.mkdir(APPDIR); 3645 d.mkdir(APPDIR);
3646 d.cd(APPDIR); 3646 d.cd(APPDIR);
3647 } 3647 }
3648 if ( !d.cd("configs") ) 3648 if ( !d.cd("configs") )
3649 { // "/tmp" 3649 { // "/tmp"
3650 qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" ); 3650 qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" );
3651 d = QDir::home(); 3651 d = QDir::home();
3652 d.cd(APPDIR); 3652 d.cd(APPDIR);
3653 d.mkdir("configs"); 3653 d.mkdir("configs");
3654 d.cd("configs"); 3654 d.cd("configs");
3655 } 3655 }
3656 fi.setFile(d, _txt); 3656 fi.setFile(d, _txt);
3657 } 3657 }
3658 //qDebug("Path:%s", (const char*)fi.absFilePath()); 3658 //qDebug("Path:%s", (const char*)fi.absFilePath());
3659 Config config(fi.absFilePath()); 3659 Config config(fi.absFilePath());
3660#endif 3660#endif
3661 3661
3662 3662
3663 config.writeEntry( "StripCr", reader->bstripcr ); 3663 config.writeEntry( "StripCr", reader->bstripcr );
3664 config.writeEntry( "AutoFmt", reader->bautofmt ); 3664 config.writeEntry( "AutoFmt", reader->bautofmt );
3665 config.writeEntry( "TextFmt", reader->btextfmt ); 3665 config.writeEntry( "TextFmt", reader->btextfmt );
3666 config.writeEntry( "StripHtml", reader->bstriphtml ); 3666 config.writeEntry( "StripHtml", reader->bstriphtml );
3667 config.writeEntry( "Dehyphen", reader->bdehyphen ); 3667 config.writeEntry( "Dehyphen", reader->bdehyphen );
3668 config.writeEntry( "Depluck", reader->bdepluck ); 3668 config.writeEntry( "Depluck", reader->bdepluck );
3669 config.writeEntry( "Dejpluck", reader->bdejpluck ); 3669 config.writeEntry( "Dejpluck", reader->bdejpluck );
3670 config.writeEntry( "OneSpace", reader->bonespace ); 3670 config.writeEntry( "OneSpace", reader->bonespace );
3671 config.writeEntry( "Unindent", reader->bunindent ); 3671 config.writeEntry( "Unindent", reader->bunindent );
3672 config.writeEntry( "Repara", reader->brepara ); 3672 config.writeEntry( "Repara", reader->brepara );
3673 config.writeEntry( "DoubleSpace", reader->bdblspce ); 3673 config.writeEntry( "DoubleSpace", reader->bdblspce );
3674 config.writeEntry( "Indent", reader->bindenter ); 3674 config.writeEntry( "Indent", reader->bindenter );
3675 config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) ); 3675 config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) );
3676 config.writeEntry( "ScrollDelay", reader->m_delay); 3676 config.writeEntry( "ScrollDelay", reader->m_delay);
3677 if (full) 3677 if (full)
3678 { 3678 {
3679 config.writeEntry("Debounce", m_debounce); 3679 config.writeEntry("Debounce", m_debounce);
3680 config.writeEntry("FloatDialogs", m_bFloatingDialog); 3680 config.writeEntry("FloatDialogs", m_bFloatingDialog);
3681 reader->m_lastposn = reader->pagelocate(); 3681 reader->m_lastposn = reader->pagelocate();
3682 config.writeEntry( "LastFile", reader->m_lastfile ); 3682 config.writeEntry( "LastFile", reader->m_lastfile );
3683 config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); 3683 config.writeEntry( "LastPosn", (int)(reader->pagelocate()) );
3684 } 3684 }
3685 config.writeEntry( "PageMode", reader->m_bpagemode ); 3685 config.writeEntry( "PageMode", reader->m_bpagemode );
3686 config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); 3686 config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced );
3687 config.writeEntry( "SwapMouse", reader->m_swapmouse); 3687 config.writeEntry( "SwapMouse", reader->m_swapmouse);
3688 config.writeEntry( "Fontname", reader->m_fontname ); 3688 config.writeEntry( "Fontname", reader->m_fontname );
3689 config.writeEntry( "Encoding", reader->m_encd ); 3689 config.writeEntry( "Encoding", reader->m_encd );
3690 config.writeEntry( "CharSpacing", reader->m_charpc ); 3690 config.writeEntry( "CharSpacing", reader->m_charpc );
3691 config.writeEntry( "Overlap", (int)(reader->m_overlap) ); 3691 config.writeEntry( "Overlap", (int)(reader->m_overlap) );
3692 config.writeEntry( "Margin", (int)reader->m_border ); 3692 config.writeEntry( "Margin", (int)reader->m_border );
3693 config.writeEntry( "TargetApp", m_targetapp ); 3693 config.writeEntry( "TargetApp", m_targetapp );
3694 config.writeEntry( "TargetMsg", m_targetmsg ); 3694 config.writeEntry( "TargetMsg", m_targetmsg );
3695#ifdef _SCROLLPIPE 3695#ifdef _SCROLLPIPE
3696 config.writeEntry( "PipeTarget", reader->m_pipetarget ); 3696 config.writeEntry( "PipeTarget", reader->m_pipetarget );
3697 config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); 3697 config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara );
3698#endif 3698#endif
3699 config.writeEntry( "TwoTouch", m_twoTouch ); 3699 config.writeEntry( "TwoTouch", m_twoTouch );
3700 config.writeEntry( "Annotation", m_doAnnotation); 3700 config.writeEntry( "Annotation", m_doAnnotation);
3701 config.writeEntry( "Dictionary", m_doDictionary); 3701 config.writeEntry( "Dictionary", m_doDictionary);
3702 config.writeEntry( "Clipboard", m_doClipboard); 3702 config.writeEntry( "Clipboard", m_doClipboard);
3703 config.writeEntry( "SpaceTarget", m_spaceTarget); 3703 config.writeEntry( "SpaceTarget", m_spaceTarget);
3704 config.writeEntry( "EscapeTarget", m_escapeTarget); 3704 config.writeEntry( "EscapeTarget", m_escapeTarget);
3705 config.writeEntry( "ReturnTarget", m_returnTarget); 3705 config.writeEntry( "ReturnTarget", m_returnTarget);
3706 config.writeEntry( "LeftTarget", m_leftTarget); 3706 config.writeEntry( "LeftTarget", m_leftTarget);
3707 config.writeEntry( "RightTarget", m_rightTarget); 3707 config.writeEntry( "RightTarget", m_rightTarget);
3708 config.writeEntry( "UpTarget", m_upTarget); 3708 config.writeEntry( "UpTarget", m_upTarget);
3709 config.writeEntry( "DownTarget", m_downTarget); 3709 config.writeEntry( "DownTarget", m_downTarget);
3710 config.writeEntry("LeftScroll", m_leftScroll); 3710 config.writeEntry("LeftScroll", m_leftScroll);
3711 config.writeEntry("RightScroll", m_rightScroll); 3711 config.writeEntry("RightScroll", m_rightScroll);
3712 config.writeEntry("UpScroll", m_upScroll); 3712 config.writeEntry("UpScroll", m_upScroll);
3713 config.writeEntry("DownScroll", m_downScroll); 3713 config.writeEntry("DownScroll", m_downScroll);
3714#ifdef REPALM 3714#ifdef REPALM
3715 config.writeEntry( "Repalm", reader->brepalm ); 3715 config.writeEntry( "Repalm", reader->brepalm );
3716#endif 3716#endif
3717 config.writeEntry( "Remap", reader->bremap ); 3717 config.writeEntry( "Remap", reader->bremap );
3718 config.writeEntry( "Peanut", reader->bpeanut ); 3718 config.writeEntry( "Peanut", reader->bpeanut );
3719 config.writeEntry( "MakeBold", reader->bmakebold ); 3719 config.writeEntry( "MakeBold", reader->bmakebold );
3720 config.writeEntry( "Continuous", reader->m_continuousDocument ); 3720 config.writeEntry( "Continuous", reader->m_continuousDocument );
3721 config.writeEntry( "FullJust", reader->bfulljust ); 3721 config.writeEntry( "FullJust", reader->bfulljust );
3722 config.writeEntry( "ExtraSpace", reader->getextraspace() ); 3722 config.writeEntry( "ExtraSpace", reader->getextraspace() );
3723 config.writeEntry( "ExtraLead", reader->getlead() ); 3723 config.writeEntry( "ExtraLead", reader->getlead() );
3724 config.writeEntry( "Basesize", (int)reader->getBaseSize()); 3724 config.writeEntry( "Basesize", (int)reader->getBaseSize());
3725 config.writeEntry( "RequestorFontChange", m_propogatefontchange); 3725 config.writeEntry( "RequestorFontChange", m_propogatefontchange);
3726 if (full) 3726 if (full)
3727 { 3727 {
3728 config.setGroup( "Toolbar" ); 3728 config.setGroup( "Toolbar" );
3729 config.writeEntry("Movable", m_tbmovesave); 3729 config.writeEntry("Movable", m_tbmovesave);
3730 config.writeEntry("Policy", m_tbpolsave); 3730 config.writeEntry("Policy", m_tbpolsave);
3731 config.writeEntry("Position", m_tbposition); 3731 config.writeEntry("Position", m_tbposition);
3732#ifndef USEQPE 3732#ifndef USEQPE
3733 config.setGroup( "Geometry" ); 3733 config.setGroup( "Geometry" );
3734 config.writeEntry( "x", x() ); 3734 config.writeEntry( "x", x() );
3735 config.writeEntry( "y", y() ); 3735 config.writeEntry( "y", y() );
3736 config.writeEntry( "width", width() ); 3736 config.writeEntry( "width", width() );
3737 config.writeEntry( "height", height() ); 3737 config.writeEntry( "height", height() );
3738#endif 3738#endif
3739 } 3739 }
3740} 3740}
3741 3741
3742/* 3742/*
3743void QTReaderApp::setstate(unsigned char* _sd, unsigned short _sdlen) 3743void QTReaderApp::setstate(unsigned char* _sd, unsigned short _sdlen)
3744{ 3744{
3745 unsigned short sdlen; 3745 unsigned short sdlen;
3746 memcpy(&sdlen, _sd, sizeof(sdlen)); 3746 memcpy(&sdlen, _sd, sizeof(sdlen));
3747 sdlen -= sizeof(sdlen); 3747 sdlen -= sizeof(sdlen);
3748 _sd += sizeof(sdlen); 3748 _sd += sizeof(sdlen);
3749 statedata* sd; 3749 statedata* sd;
3750 char* data; 3750 char* data;
3751 if (sdlen < sizeof(statedata)+1) 3751 if (sdlen < sizeof(statedata)+1)
3752 { 3752 {
3753 sdlen = sizeof(statedata)+1; 3753 sdlen = sizeof(statedata)+1;
3754 } 3754 }
3755 data = new char[sdlen]; 3755 data = new char[sdlen];
3756 sd = (statedata*)data; 3756 sd = (statedata*)data;
3757 memcpy(sd, _sd, sdlen); 3757 memcpy(sd, _sd, sdlen);
3758 data[sdlen] = 0; 3758 data[sdlen] = 0;
3759 reader->setstate(*sd); 3759 reader->setstate(*sd);
3760 delete [] data; 3760 delete [] data;
3761} 3761}
3762 3762
3763void QTReaderApp::getstate(unsigned char*& data, unsigned short& len) 3763void QTReaderApp::getstate(unsigned char*& data, unsigned short& len)
3764{ 3764{
3765 unsigned char* olddata = data; 3765 unsigned char* olddata = data;
3766 unsigned short oldlen = len; 3766 unsigned short oldlen = len;
3767 len = oldlen+sizeof(unsigned short)+sizeof(statedata)+reader->m_fontname.length(); 3767 len = oldlen+sizeof(unsigned short)+sizeof(statedata)+reader->m_fontname.length();
3768 data = new unsigned char[len]; 3768 data = new unsigned char[len];
3769 memcpy(data, olddata, oldlen); 3769 memcpy(data, olddata, oldlen);
3770 delete [] olddata; 3770 delete [] olddata;
3771 memcpy(data+oldlen, &len, sizeof(len)); 3771 memcpy(data+oldlen, &len, sizeof(len));
3772 statedata* sd = (statedata*)(data+oldlen+sizeof(unsigned short)); 3772 statedata* sd = (statedata*)(data+oldlen+sizeof(unsigned short));
3773 3773
3774 sd->bstripcr = reader->bstripcr; 3774 sd->bstripcr = reader->bstripcr;
3775 sd->btextfmt = reader->btextfmt; 3775 sd->btextfmt = reader->btextfmt;
3776 sd->bautofmt = reader->bautofmt; 3776 sd->bautofmt = reader->bautofmt;
3777 sd->bstriphtml = reader->bstriphtml; 3777 sd->bstriphtml = reader->bstriphtml;
3778 sd->bpeanut = reader->bpeanut; 3778 sd->bpeanut = reader->bpeanut;
3779 sd->bdehyphen = reader->bdehyphen; 3779 sd->bdehyphen = reader->bdehyphen;
3780 sd->bdepluck = reader->bdepluck; 3780 sd->bdepluck = reader->bdepluck;
3781 sd->bdejpluck = reader->bdejpluck; 3781 sd->bdejpluck = reader->bdejpluck;
3782 sd->bonespace = reader->bonespace; 3782 sd->bonespace = reader->bonespace;
3783 sd->bunindent = reader->bunindent; 3783 sd->bunindent = reader->bunindent;
3784 sd->brepara = reader->brepara; 3784 sd->brepara = reader->brepara;
3785 sd->bdblspce = reader->bdblspce; 3785 sd->bdblspce = reader->bdblspce;
3786 sd->m_bpagemode = reader->m_bpagemode; 3786 sd->m_bpagemode = reader->m_bpagemode;
3787 sd->m_bMonoSpaced = reader->m_bMonoSpaced; 3787 sd->m_bMonoSpaced = reader->m_bMonoSpaced;
3788 sd->bremap = reader->bremap; 3788 sd->bremap = reader->bremap;
3789 sd->bmakebold = reader->bmakebold; 3789 sd->bmakebold = reader->bmakebold;
3790 sd->Continuous = reader->m_continuousDocument; 3790 sd->Continuous = reader->m_continuousDocument;
3791#ifdef REPALM 3791#ifdef REPALM
3792 sd->brepalm = reader->brepalm; 3792 sd->brepalm = reader->brepalm;
3793#endif 3793#endif
3794 sd->bindenter = reader->bindenter; 3794 sd->bindenter = reader->bindenter;
3795 sd->m_textsize = reader->m_textsize; //reader->m_fontControl.currentsize() 3795 sd->m_textsize = reader->m_textsize; //reader->m_fontControl.currentsize()
3796 sd->m_encd = reader->m_encd; 3796 sd->m_encd = reader->m_encd;
3797 sd->m_charpc = reader->m_charpc; 3797 sd->m_charpc = reader->m_charpc;
3798 strcpy(sd->m_fontname, reader->m_fontname.latin1()); 3798 strcpy(sd->m_fontname, reader->m_fontname.latin1());
3799} 3799}
3800*/ 3800*/
3801#ifdef _SCRIPT 3801#ifdef _SCRIPT
3802void QTReaderApp::RunScript() 3802void QTReaderApp::RunScript()
3803{ 3803{
3804 fileBrowser* fb = new fileBrowser(this,"OpieReader",!m_bFloatingDialog, 3804 fileBrowser* fb = new fileBrowser(this,"OpieReader",!m_bFloatingDialog,
3805 0, 3805 0,
3806 // WStyle_Customize | WStyle_NoBorderEx, 3806 // WStyle_Customize | WStyle_NoBorderEx,
3807 "*", Global::applicationFileName(APPDIR "/scripts", "")); 3807 "*", Global::applicationFileName(APPDIR "/scripts", ""));
3808 3808
3809 QString fn; 3809 QString fn;
3810 if (fb->exec()) 3810 if (fb->exec())
3811 { 3811 {
3812 fn = fb->fileList[0]; 3812 fn = fb->fileList[0];
3813 } 3813 }
3814 delete fb; 3814 delete fb;
3815 if ( !fn.isEmpty() && fork() == 0 ) 3815 if ( !fn.isEmpty() && fork() == 0 )
3816 { 3816 {
3817 execlp((const char *)fn,(const char *)fn,NULL); 3817 execlp((const char *)fn,(const char *)fn,NULL);
3818 } 3818 }
3819} 3819}
3820 3820
3821void QTReaderApp::SaveScript(const char* sname) 3821void QTReaderApp::SaveScript(const char* sname)
3822{ 3822{
3823 FILE* f = fopen(sname,"w"); 3823 FILE* f = fopen(sname,"w");
3824 if (f != NULL) 3824 if (f != NULL)
3825 { 3825 {
3826#ifdef OPIE 3826#ifdef OPIE
3827 fprintf(f, "#!/bin/sh\nmsg() {\n\tqcop QPE/Application/reader \"$1\" \"$2\" \"$3\"\n}\n"); 3827 fprintf(f, "#!/bin/sh\nmsg() {\n\tqcop QPE/Application/reader \"$1\" \"$2\" \"$3\"\n}\n");
3828#else 3828#else
3829 fprintf(f, "#!/bin/bash\nmsg() {\n\tqcop QPE/Application/uqtreader \"$1\" \"$2\" \"$3\"\n}\n"); 3829 fprintf(f, "#!/bin/bash\nmsg() {\n\tqcop QPE/Application/uqtreader \"$1\" \"$2\" \"$3\"\n}\n");
3830#endif 3830#endif
3831 fprintf(f, "msg \"Update(int)\" 0\n"); 3831 fprintf(f, "msg \"Update(int)\" 0\n");
3832 fprintf(f, "msg \"Layout/StripCR(int)\" %d\n", (reader->bstripcr) ? 1:0); 3832 fprintf(f, "msg \"Layout/StripCR(int)\" %d\n", (reader->bstripcr) ? 1:0);
3833 if (reader->btextfmt) fprintf(f, "msg \"Markup(QString)\" \"Text\"\n"); 3833 if (reader->btextfmt) fprintf(f, "msg \"Markup(QString)\" \"Text\"\n");
3834 else if (reader->bautofmt) fprintf(f, "msg \"Markup(QString)\" \"Auto\"\n"); 3834 else if (reader->bautofmt) fprintf(f, "msg \"Markup(QString)\" \"Auto\"\n");
3835 else if (reader->bstriphtml) fprintf(f, "msg \"Markup(QString)\" \"HTML\"\n"); 3835 else if (reader->bstriphtml) fprintf(f, "msg \"Markup(QString)\" \"HTML\"\n");
3836 else if (reader->bpeanut) fprintf(f, "msg \"Markup(QString)\" \"Peanut/PML\"\n"); 3836 else if (reader->bpeanut) fprintf(f, "msg \"Markup(QString)\" \"Peanut/PML\"\n");
3837 else fprintf(f, "msg \"Markup(QString)\" \"None\"\n"); 3837 else fprintf(f, "msg \"Markup(QString)\" \"None\"\n");
3838 fprintf(f, "msg \"Layout/Dehyphen(int)\" %d\n", (reader->bdehyphen) ? 1:0); 3838 fprintf(f, "msg \"Layout/Dehyphen(int)\" %d\n", (reader->bdehyphen) ? 1:0);
3839 fprintf(f, "msg \"Layout/Depluck(int)\" %d\n", (reader->bdepluck) ? 1:0); 3839 fprintf(f, "msg \"Layout/Depluck(int)\" %d\n", (reader->bdepluck) ? 1:0);
3840 fprintf(f, "msg \"Layout/Dejpluck(int)\" %d\n", (reader->bdejpluck) ? 1:0); 3840 fprintf(f, "msg \"Layout/Dejpluck(int)\" %d\n", (reader->bdejpluck) ? 1:0);
3841 fprintf(f, "msg \"Layout/SingleSpace(int)\" %d\n", (reader->bonespace) ? 1:0); 3841 fprintf(f, "msg \"Layout/SingleSpace(int)\" %d\n", (reader->bonespace) ? 1:0);
3842 fprintf(f, "msg \"Layout/Unindent(int)\" %d\n", (reader->bunindent) ? 1:0); 3842 fprintf(f, "msg \"Layout/Unindent(int)\" %d\n", (reader->bunindent) ? 1:0);
3843 fprintf(f, "msg \"Layout/Re-paragraph(int)\" %d\n", (reader->brepara) ? 1:0); 3843 fprintf(f, "msg \"Layout/Re-paragraph(int)\" %d\n", (reader->brepara) ? 1:0);
3844 fprintf(f, "msg \"Layout/DoubleSpace(int)\" %d\n", (reader->bdblspce) ? 1:0); 3844 fprintf(f, "msg \"Layout/DoubleSpace(int)\" %d\n", (reader->bdblspce) ? 1:0);
3845 fprintf(f, "msg \"Layout/Indent(int)\" %d\n", reader->bindenter); 3845 fprintf(f, "msg \"Layout/Indent(int)\" %d\n", reader->bindenter);
3846 fprintf(f, "msg \"Format/SetFont(QString,int)\" \"%s\" %d\n", (const char*)reader->m_fontname, reader->m_textsize); 3846 fprintf(f, "msg \"Format/SetFont(QString,int)\" \"%s\" %d\n", (const char*)reader->m_fontname, reader->m_textsize);
3847 fprintf(f, "msg \"Navigation/Page/LineScroll(int)\" %d\n", (reader->m_bpagemode) ? 1:0); 3847 fprintf(f, "msg \"Navigation/Page/LineScroll(int)\" %d\n", (reader->m_bpagemode) ? 1:0);
3848 fprintf(f, "msg \"Format/Ideogram/Word(int)\" %d\n", (reader->m_bMonoSpaced) ? 1:0); 3848 fprintf(f, "msg \"Format/Ideogram/Word(int)\" %d\n", (reader->m_bMonoSpaced) ? 1:0);
3849 fprintf(f, "msg \"Format/Encoding(QString)\" \"%s\"\n", (const char*)m_EncodingAction[reader->m_encd]->text()); 3849 fprintf(f, "msg \"Format/Encoding(QString)\" \"%s\"\n", (const char*)m_EncodingAction[reader->m_encd]->text());
3850 fprintf(f, "msg \"Format/SetWidth(int)\" %d\n", reader->m_charpc); 3850 fprintf(f, "msg \"Format/SetWidth(int)\" %d\n", reader->m_charpc);
3851 fprintf(f, "msg \"Navigation/SetOverlap(int)\" %d\n", reader->m_overlap); 3851 fprintf(f, "msg \"Navigation/SetOverlap(int)\" %d\n", reader->m_overlap);
3852 fprintf(f, "msg \"Layout/Remap(int)\" %d\n", (reader->bremap) ? 1:0); 3852 fprintf(f, "msg \"Layout/Remap(int)\" %d\n", (reader->bremap) ? 1:0);
3853 fprintf(f, "msg \"Layout/Embolden(int)\" %d\n", (reader->bmakebold) ? 1:0); 3853 fprintf(f, "msg \"Layout/Embolden(int)\" %d\n", (reader->bmakebold) ? 1:0);
3854 fprintf(f, "msg \"File/Continuous(int)\" %d\n", (reader->m_continuousDocument) ? 1:0); 3854 fprintf(f, "msg \"File/Continuous(int)\" %d\n", (reader->m_continuousDocument) ? 1:0);
3855 fprintf(f, "msg \"File/SetDictionary(QString)\" \"%s/%s\"\n", (const char *)m_targetapp, (const char *)m_targetmsg); 3855 fprintf(f, "msg \"File/SetDictionary(QString)\" \"%s/%s\"\n", (const char *)m_targetapp, (const char *)m_targetmsg);
3856#ifdef _SCROLLPIPE 3856#ifdef _SCROLLPIPE
3857 fprintf(f, "msg \"File/SetScrollTarget(QString)\" \"%s\"\n", (const char *)reader->m_pipetarget); 3857 fprintf(f, "msg \"File/SetScrollTarget(QString)\" \"%s\"\n", (const char *)reader->m_pipetarget);
3858#endif 3858#endif
3859 fprintf(f, "msg \"File/Two/OneTouch(int)\" %d\n", (m_twoTouch) ? 1:0); 3859 fprintf(f, "msg \"File/Two/OneTouch(int)\" %d\n", (m_twoTouch) ? 1:0);
3860 fprintf(f, "msg \"Target/Annotation(int)\" %d\n", (m_doAnnotation) ? 1:0); 3860 fprintf(f, "msg \"Target/Annotation(int)\" %d\n", (m_doAnnotation) ? 1:0);
3861 fprintf(f, "msg \"Target/Dictionary(int)\" %d\n", (m_doDictionary) ? 1:0); 3861 fprintf(f, "msg \"Target/Dictionary(int)\" %d\n", (m_doDictionary) ? 1:0);
3862 fprintf(f, "msg \"Target/Clipboard(int)\" %d\n", (m_doClipboard) ? 1:0); 3862 fprintf(f, "msg \"Target/Clipboard(int)\" %d\n", (m_doClipboard) ? 1:0);
3863 fprintf(f, "msg \"File/Action(QString)\" \"%s\"\n", (const char *)m_buttonAction[m_spaceTarget]->text()); 3863 fprintf(f, "msg \"File/Action(QString)\" \"%s\"\n", (const char *)m_buttonAction[m_spaceTarget]->text());
3864 fprintf(f, "msg \"Update(int)\" 1\n"); 3864 fprintf(f, "msg \"Update(int)\" 1\n");
3865 fprintf(f, "msg \"info(QString)\" \"All Done\"\n"); 3865 fprintf(f, "msg \"info(QString)\" \"All Done\"\n");
3866 fclose(f); 3866 fclose(f);
3867 chmod(sname, S_IXUSR | S_IXGRP | S_IXOTH); 3867 chmod(sname, S_IXUSR | S_IXGRP | S_IXOTH);
3868 } 3868 }
3869} 3869}
3870 3870
3871void QTReaderApp::SaveConfig() 3871void QTReaderApp::SaveConfig()
3872{ 3872{
3873 m_nRegAction = cSetConfigName; 3873 m_nRegAction = cSetConfigName;
3874 regEdit->setText(""); 3874 regEdit->setText("");
3875 do_regedit(); 3875 do_regedit();
3876} 3876}
3877 3877
3878void QTReaderApp::do_saveconfig(const QString& _txt) 3878void QTReaderApp::do_saveconfig(const QString& _txt)
3879{ 3879{
3880 SaveScript(Global::applicationFileName(APPDIR "/scripts", _txt)); 3880 SaveScript(Global::applicationFileName(APPDIR "/scripts", _txt));
3881} 3881}
3882#endif 3882#endif
3883 3883
3884#ifdef _SCROLLPIPE 3884#ifdef _SCROLLPIPE
3885void QTReaderApp::setpipetarget() 3885void QTReaderApp::setpipetarget()
3886{ 3886{
3887 m_nRegAction = cSetPipeTarget; 3887 m_nRegAction = cSetPipeTarget;
3888 QString text = (reader->m_pipetarget.isEmpty()) ? QString("") : reader->m_pipetarget; 3888 QString text = (reader->m_pipetarget.isEmpty()) ? QString("") : reader->m_pipetarget;
3889 regEdit->setText(text); 3889 regEdit->setText(text);
3890 do_regedit(); 3890 do_regedit();
3891} 3891}
3892 3892
3893void QTReaderApp::do_setpipetarget(const QString& _txt) 3893void QTReaderApp::do_setpipetarget(const QString& _txt)
3894{ 3894{
3895 reader->m_pipetarget = _txt; 3895 reader->m_pipetarget = _txt;
3896} 3896}
3897 3897
3898void QTReaderApp::setpause(bool sfs) 3898void QTReaderApp::setpause(bool sfs)
3899{ 3899{
3900 reader->m_pauseAfterEachPara = sfs; 3900 reader->m_pauseAfterEachPara = sfs;
3901} 3901}
3902#endif 3902#endif
3903 3903
3904void QTReaderApp::monospace(bool _b) 3904void QTReaderApp::monospace(bool _b)
3905{ 3905{
3906 reader->setmono(_b); 3906 reader->setmono(_b);
3907} 3907}
3908 3908
3909bool QTReaderApp::readconfig(const QString& _txt, bool full=false) 3909bool QTReaderApp::readconfig(const QString& _txt, bool full=false)
3910{ 3910{
3911#ifdef USEQPE 3911#ifdef USEQPE
3912 QString configname; 3912 QString configname;
3913 Config::Domain dom; 3913 Config::Domain dom;
3914 3914
3915 if (full) 3915 if (full)
3916 { 3916 {
3917 configname = _txt; 3917 configname = _txt;
3918 dom = Config::User; 3918 dom = Config::User;
3919 } 3919 }
3920 else 3920 else
3921 { 3921 {
3922 configname = Global::applicationFileName(APPDIR "/configs", _txt); 3922 configname = Global::applicationFileName(APPDIR "/configs", _txt);
3923 QFileInfo fm(configname); 3923 QFileInfo fm(configname);
3924 if ( !fm.exists() ) return false; 3924 if ( !fm.exists() ) return false;
3925 dom = Config::File; 3925 dom = Config::File;
3926 } 3926 }
3927 3927
3928 Config config(configname, dom); 3928 Config config(configname, dom);
3929 config.setGroup( "View" ); 3929 config.setGroup( "View" );
3930 3930
3931#else 3931#else
3932 QFileInfo fi; 3932 QFileInfo fi;
3933 if (full) 3933 if (full)
3934 { 3934 {
3935 QDir d = QDir::home(); // "/" 3935 QDir d = QDir::home(); // "/"
3936 if ( !d.cd(_txt) ) 3936 if ( !d.cd(_txt) )
3937 { // "/tmp" 3937 { // "/tmp"
3938 qWarning( "Cannot find the \"~/%s\" directory", (const char*)_txt ); 3938 qWarning( "Cannot find the \"~/%s\" directory", (const char*)_txt );
3939 d = QDir::home(); 3939 d = QDir::home();
3940 d.mkdir(_txt); 3940 d.mkdir(_txt);
3941 d.cd(_txt); 3941 d.cd(_txt);
3942 } 3942 }
3943 fi.setFile(d, INIFILE); 3943 fi.setFile(d, INIFILE);
3944 } 3944 }
3945 else 3945 else
3946 { 3946 {
3947 QDir d = QDir::home(); // "/" 3947 QDir d = QDir::home(); // "/"
3948 if ( !d.cd(APPDIR) ) 3948 if ( !d.cd(APPDIR) )
3949 { // "/tmp" 3949 { // "/tmp"
3950 qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); 3950 qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
3951 d = QDir::home(); 3951 d = QDir::home();
3952 d.mkdir(APPDIR); 3952 d.mkdir(APPDIR);
3953 d.cd(APPDIR); 3953 d.cd(APPDIR);
3954 } 3954 }
3955 if ( !d.cd("configs") ) 3955 if ( !d.cd("configs") )
3956 { // "/tmp" 3956 { // "/tmp"
3957 qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" ); 3957 qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" );
3958 d = QDir::home(); 3958 d = QDir::home();
3959 d.mkdir("configs"); 3959 d.mkdir("configs");
3960 d.cd("configs"); 3960 d.cd("configs");
3961 } 3961 }
3962 fi.setFile(d, _txt); 3962 fi.setFile(d, _txt);
3963 } 3963 }
3964#ifdef _WINDOWS 3964#ifdef _WINDOWS
3965 struct stat fnstat; 3965 struct stat fnstat;
3966 if (stat((const char *)reader->m_lastfile, &fnstat) == 0) return false; // get round fileinfo bug on windows 3966 if (stat((const char *)reader->m_lastfile, &fnstat) == 0) return false; // get round fileinfo bug on windows
3967#else 3967#else
3968 if (!fi.exists()) return false; 3968 if (!fi.exists()) return false;
3969#endif 3969#endif
3970 Config config(fi.absFilePath()); 3970 Config config(fi.absFilePath());
3971#endif 3971#endif
3972 if (full) 3972 if (full)
3973 { 3973 {
3974 config.setGroup("Toolbar"); 3974 config.setGroup("Toolbar");
3975 m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false); 3975 m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false);
3976 m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1); 3976 m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1);
3977 m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2); 3977 m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2);
3978 } 3978 }
3979 config.setGroup( "View" ); 3979 config.setGroup( "View" );
3980 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); 3980 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false);
3981 reader->bstripcr = config.readBoolEntry( "StripCr", true ); 3981 reader->bstripcr = config.readBoolEntry( "StripCr", true );
3982 reader->bfulljust = config.readBoolEntry( "FullJust", false ); 3982 reader->bfulljust = config.readBoolEntry( "FullJust", false );
3983 reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); 3983 reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 ));
3984 reader->setlead(config.readNumEntry( "ExtraLead", 0 )); 3984 reader->setlead(config.readNumEntry( "ExtraLead", 0 ));
3985 reader->btextfmt = config.readBoolEntry( "TextFmt", false ); 3985 reader->btextfmt = config.readBoolEntry( "TextFmt", false );
3986 reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); 3986 reader->bautofmt = config.readBoolEntry( "AutoFmt", true );
3987 reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); 3987 reader->bstriphtml = config.readBoolEntry( "StripHtml", false );
3988 reader->bpeanut = config.readBoolEntry( "Peanut", false ); 3988 reader->bpeanut = config.readBoolEntry( "Peanut", false );
3989 reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); 3989 reader->bdehyphen = config.readBoolEntry( "Dehyphen", false );
3990 reader->bdepluck = config.readBoolEntry( "Depluck", false ); 3990 reader->bdepluck = config.readBoolEntry( "Depluck", false );
3991 reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); 3991 reader->bdejpluck = config.readBoolEntry( "Dejpluck", false );
3992 reader->bonespace = config.readBoolEntry( "OneSpace", false ); 3992 reader->bonespace = config.readBoolEntry( "OneSpace", false );
3993 reader->bunindent = config.readBoolEntry( "Unindent", false ); 3993 reader->bunindent = config.readBoolEntry( "Unindent", false );
3994 reader->brepara = config.readBoolEntry( "Repara", false ); 3994 reader->brepara = config.readBoolEntry( "Repara", false );
3995 reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); 3995 reader->bdblspce = config.readBoolEntry( "DoubleSpace", false );
3996 reader->bindenter = config.readNumEntry( "Indent", 0 ); 3996 reader->bindenter = config.readNumEntry( "Indent", 0 );
3997 reader->m_textsize = config.readNumEntry( "FontSize", 12 ); 3997 reader->m_textsize = config.readNumEntry( "FontSize", 12 );
3998 reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); 3998 reader->m_delay = config.readNumEntry( "ScrollDelay", 5184);
3999 if (full) 3999 if (full)
4000 { 4000 {
4001 reader->m_lastfile = config.readEntry( "LastFile", QString::null ); 4001 reader->m_lastfile = config.readEntry( "LastFile", QString::null );
4002 reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); 4002 reader->m_lastposn = config.readNumEntry( "LastPosn", 0 );
4003 } 4003 }
4004 reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); 4004 reader->m_bpagemode = config.readBoolEntry( "PageMode", true );
4005 reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); 4005 reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false);
4006 reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false); 4006 reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false);
4007 reader->m_fontname = config.readEntry( "Fontname", "helvetica" ); 4007 reader->m_fontname = config.readEntry( "Fontname", "helvetica" );
4008 reader->m_encd = config.readNumEntry( "Encoding", 0 ); 4008 reader->m_encd = config.readNumEntry( "Encoding", 0 );
4009 reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); 4009 reader->m_charpc = config.readNumEntry( "CharSpacing", 100 );
4010 reader->m_overlap = config.readNumEntry( "Overlap", 0 ); 4010 reader->m_overlap = config.readNumEntry( "Overlap", 0 );
4011 reader->m_border = config.readNumEntry( "Margin", 6 ); 4011 reader->m_border = config.readNumEntry( "Margin", 6 );
4012#ifdef REPALM 4012#ifdef REPALM
4013 reader->brepalm = config.readBoolEntry( "Repalm", true ); 4013 reader->brepalm = config.readBoolEntry( "Repalm", true );
4014#endif 4014#endif
4015 reader->bremap = config.readBoolEntry( "Remap", true ); 4015 reader->bremap = config.readBoolEntry( "Remap", true );
4016 reader->bmakebold = config.readBoolEntry( "MakeBold", false ); 4016 reader->bmakebold = config.readBoolEntry( "MakeBold", false );
4017 reader->setContinuous(config.readBoolEntry( "Continuous", true )); 4017 reader->setContinuous(config.readBoolEntry( "Continuous", true ));
4018 m_targetapp = config.readEntry( "TargetApp", QString::null ); 4018 m_targetapp = config.readEntry( "TargetApp", QString::null );
4019 m_targetmsg = config.readEntry( "TargetMsg", QString::null ); 4019 m_targetmsg = config.readEntry( "TargetMsg", QString::null );
4020#ifdef _SCROLLPIPE 4020#ifdef _SCROLLPIPE
4021 reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); 4021 reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null );
4022 reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); 4022 reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true );
4023#endif 4023#endif
4024 m_twoTouch = config.readBoolEntry( "TwoTouch", false); 4024 m_twoTouch = config.readBoolEntry( "TwoTouch", false);
4025 m_doAnnotation = config.readBoolEntry( "Annotation", false); 4025 m_doAnnotation = config.readBoolEntry( "Annotation", false);
4026 m_doDictionary = config.readBoolEntry( "Dictionary", false); 4026 m_doDictionary = config.readBoolEntry( "Dictionary", false);
4027 m_doClipboard = config.readBoolEntry( "Clipboard", false); 4027 m_doClipboard = config.readBoolEntry( "Clipboard", false);
4028 m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); 4028 m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll);
4029 m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); 4029 m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone);
4030 m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); 4030 m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen);
4031 m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); 4031 m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut);
4032 m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); 4032 m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn);
4033 m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); 4033 m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp);
4034 m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); 4034 m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown);
4035 4035
4036 m_leftScroll = config.readBoolEntry("LeftScroll", false); 4036 m_leftScroll = config.readBoolEntry("LeftScroll", false);
4037 m_rightScroll = config.readBoolEntry("RightScroll", false); 4037 m_rightScroll = config.readBoolEntry("RightScroll", false);
4038 m_upScroll = config.readBoolEntry("UpScroll", true); 4038 m_upScroll = config.readBoolEntry("UpScroll", true);
4039 m_downScroll = config.readBoolEntry("DownScroll", true); 4039 m_downScroll = config.readBoolEntry("DownScroll", true);
4040 m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false); 4040 m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false);
4041 reader->setBaseSize(config.readNumEntry( "Basesize", 10 )); 4041 reader->setBaseSize(config.readNumEntry( "Basesize", 10 ));
4042 reader->setTwoTouch(m_twoTouch); 4042 reader->setTwoTouch(m_twoTouch);
4043 4043
4044 m_touch_action->setOn(m_twoTouch); 4044 m_touch_action->setOn(m_twoTouch);
4045 m_setmono_action->setOn(reader->m_bMonoSpaced); 4045 m_setmono_action->setOn(reader->m_bMonoSpaced);
4046 setfontHelper(reader->m_fontname); 4046 setfontHelper(reader->m_fontname);
4047 if (full) 4047 if (full)
4048 { 4048 {
4049 addtoolbars(&config); 4049 addtoolbars(&config);
4050 } 4050 }
4051 reader->setfilter(reader->getfilter()); 4051 reader->setfilter(reader->getfilter());
4052 reader->refresh(); 4052 reader->refresh();
4053 return true; 4053 return true;
4054} 4054}
4055 4055
4056bool QTReaderApp::PopulateConfig(const char* tgtdir) 4056bool QTReaderApp::PopulateConfig(const char* tgtdir)
4057{ 4057{
4058 bkmkselector->clear(); 4058 bkmkselector->clear();
4059 bkmkselector->setText("Cancel"); 4059 bkmkselector->setText("Cancel");
4060#ifndef USEQPE 4060#ifndef USEQPE
4061 int cnt = 0; 4061 int cnt = 0;
4062 4062
4063 QDir d = QDir::home(); // "/" 4063 QDir d = QDir::home(); // "/"
4064 if ( !d.cd(APPDIR) ) { // "/tmp" 4064 if ( !d.cd(APPDIR) ) { // "/tmp"
4065 qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); 4065 qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
4066 d = QDir::home(); 4066 d = QDir::home();
4067 d.mkdir(APPDIR); 4067 d.mkdir(APPDIR);
4068 d.cd(APPDIR); 4068 d.cd(APPDIR);
4069 } 4069 }
4070 if ( !d.cd(tgtdir) ) { // "/tmp" 4070 if ( !d.cd(tgtdir) ) { // "/tmp"
4071 qWarning( "Cannot find the \"~/" APPDIR "/%s\" directory", tgtdir ); 4071 qWarning( "Cannot find the \"~/" APPDIR "/%s\" directory", tgtdir );
4072 d = QDir::home(); 4072 d = QDir::home();
4073 d.mkdir(tgtdir); 4073 d.mkdir(tgtdir);
4074 d.cd(tgtdir); 4074 d.cd(tgtdir);
4075 } 4075 }
4076 d.setFilter( QDir::Files | QDir::NoSymLinks ); 4076 d.setFilter( QDir::Files | QDir::NoSymLinks );
4077// d.setSorting( QDir::Size | QDir::Reversed ); 4077// d.setSorting( QDir::Size | QDir::Reversed );
4078 4078
4079 const QFileInfoList *list = d.entryInfoList(); 4079 const QFileInfoList *list = d.entryInfoList();
4080 QFileInfoListIterator it( *list ); // create list iterator 4080 QFileInfoListIterator it( *list ); // create list iterator
4081 QFileInfo *fi; // pointer for traversing 4081 QFileInfo *fi; // pointer for traversing
4082 4082
4083 while ( (fi=it.current()) ) { // for each file... 4083 while ( (fi=it.current()) ) { // for each file...
4084 4084
4085 bkmkselector->insertItem(fi->fileName()); 4085 bkmkselector->insertItem(fi->fileName());
4086 cnt++; 4086 cnt++;
4087 4087
4088 //qDebug( "%10li %s", fi->size(), fi->fileName().data() ); 4088 //qDebug( "%10li %s", fi->size(), fi->fileName().data() );
4089 ++it; // goto next list element 4089 ++it; // goto next list element
4090 } 4090 }
4091 4091
4092#else /* USEQPE */ 4092#else /* USEQPE */
4093 int cnt = 0; 4093 int cnt = 0;
4094 DIR *d; 4094 DIR *d;
4095 char* finaldir; 4095 char* finaldir;
4096 finaldir = new char[strlen(APPDIR)+1+strlen(tgtdir)+1]; 4096 finaldir = new char[strlen(APPDIR)+1+strlen(tgtdir)+1];
4097 strcpy(finaldir, APPDIR); 4097 strcpy(finaldir, APPDIR);
4098 strcat(finaldir, "/"); 4098 strcat(finaldir, "/");
4099 strcat(finaldir, tgtdir); 4099 strcat(finaldir, tgtdir);
4100 d = opendir((const char *)Global::applicationFileName(finaldir,"")); 4100 d = opendir((const char *)Global::applicationFileName(finaldir,""));
4101 4101
4102 while(1) 4102 while(1)
4103 { 4103 {
4104 struct dirent* de; 4104 struct dirent* de;
4105 struct stat buf; 4105 struct stat buf;
4106 de = readdir(d); 4106 de = readdir(d);
4107 if (de == NULL) break; 4107 if (de == NULL) break;
4108 4108
4109 if (lstat((const char *)Global::applicationFileName(finaldir,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode)) 4109 if (lstat((const char *)Global::applicationFileName(finaldir,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode))
4110 { 4110 {
4111 bkmkselector->insertItem(de->d_name); 4111 bkmkselector->insertItem(de->d_name);
4112 cnt++; 4112 cnt++;
4113 } 4113 }
4114 } 4114 }
4115 delete [] finaldir; 4115 delete [] finaldir;
4116 closedir(d); 4116 closedir(d);
4117#endif 4117#endif
4118 return (cnt > 0); 4118 return (cnt > 0);
4119} 4119}
4120 4120
4121void QTReaderApp::LoadConfig() 4121void QTReaderApp::LoadConfig()
4122{ 4122{
4123 if (PopulateConfig("configs")) 4123 if (PopulateConfig("configs"))
4124 { 4124 {
4125 editorStack->raiseWidget( bkmkselector ); 4125 editorStack->raiseWidget( bkmkselector );
4126 hidetoolbars(); 4126 hidetoolbars();
4127 m_nBkmkAction = cLdConfig; 4127 m_nBkmkAction = cLdConfig;
4128 } 4128 }
4129 else 4129 else
4130 QMessageBox::information(this, PROGNAME, "No config files"); 4130 QMessageBox::information(this, PROGNAME, "No config files");
4131} 4131}
4132 4132
4133void QTReaderApp::TidyConfig() 4133void QTReaderApp::TidyConfig()
4134{ 4134{
4135 if (PopulateConfig("configs")) 4135 if (PopulateConfig("configs"))
4136 { 4136 {
4137 editorStack->raiseWidget( bkmkselector ); 4137 editorStack->raiseWidget( bkmkselector );
4138 hidetoolbars(); 4138 hidetoolbars();
4139 m_nBkmkAction = cRmConfig; 4139 m_nBkmkAction = cRmConfig;
4140 } 4140 }
4141 else 4141 else
4142 QMessageBox::information(this, PROGNAME, "No config files"); 4142 QMessageBox::information(this, PROGNAME, "No config files");
4143} 4143}
4144 4144
4145void QTReaderApp::ExportLinks() 4145void QTReaderApp::ExportLinks()
4146{ 4146{
4147 if (PopulateConfig("urls")) 4147 if (PopulateConfig("urls"))
4148 { 4148 {
4149 editorStack->raiseWidget( bkmkselector ); 4149 editorStack->raiseWidget( bkmkselector );
4150 hidetoolbars(); 4150 hidetoolbars();
4151 m_nBkmkAction = cExportLinks; 4151 m_nBkmkAction = cExportLinks;
4152 } 4152 }
4153 else 4153 else
4154 QMessageBox::information(this, PROGNAME, "No url files"); 4154 QMessageBox::information(this, PROGNAME, "No url files");
4155} 4155}
4156 4156
4157void QTReaderApp::OnURLSelected(const QString& href) 4157void QTReaderApp::OnURLSelected(const QString& href)
4158{ 4158{
4159 CURLDialog* urld = new CURLDialog(href, false, this); 4159 CURLDialog* urld = new CURLDialog(href, false, this);
4160 urld->clipboard(m_url_clipboard); 4160 urld->clipboard(m_url_clipboard);
4161 urld->localfile(m_url_localfile); 4161 urld->localfile(m_url_localfile);
4162 urld->globalfile(m_url_globalfile); 4162 urld->globalfile(m_url_globalfile);
4163 if (urld->exec()) 4163 if (urld->exec())
4164 { 4164 {
4165 m_url_clipboard = urld->clipboard(); 4165 m_url_clipboard = urld->clipboard();
4166 m_url_localfile = urld->localfile(); 4166 m_url_localfile = urld->localfile();
4167 m_url_globalfile = urld->globalfile(); 4167 m_url_globalfile = urld->globalfile();
4168 if (m_url_clipboard) 4168 if (m_url_clipboard)
4169 { 4169 {
4170 QClipboard* cb = QApplication::clipboard(); 4170 QClipboard* cb = QApplication::clipboard();
4171 cb->setText(href); 4171 cb->setText(href);
4172 qDebug("<a href=\"%s\">%s</a>", (const char*)href, (const char*)href); 4172 qDebug("<a href=\"%s\">%s</a>", (const char*)href, (const char*)href);
4173 } 4173 }
4174 if (m_url_localfile) 4174 if (m_url_localfile)
4175 { 4175 {
4176 writeUrl(reader->m_string, href); 4176 writeUrl(reader->m_string, href);
4177 } 4177 }
4178 if (m_url_globalfile) 4178 if (m_url_globalfile)
4179 { 4179 {
4180 writeUrl("GlobalURLFile", href); 4180 writeUrl("GlobalURLFile", href);
4181 } 4181 }
4182 } 4182 }
4183 delete urld; 4183 delete urld;
4184} 4184}
4185 4185
4186void QTReaderApp::writeUrl(const QString& file, const QString& href) 4186void QTReaderApp::writeUrl(const QString& file, const QString& href)
4187{ 4187{
4188 QString filename; 4188 QString filename;
4189#ifdef USEQPE 4189#ifdef USEQPE
4190 filename = Global::applicationFileName(APPDIR "/urls", file); 4190 filename = Global::applicationFileName(APPDIR "/urls", file);
4191#else 4191#else
4192 QFileInfo fi; 4192 QFileInfo fi;
4193 QDir d = QDir::home(); // "/" 4193 QDir d = QDir::home(); // "/"
4194 if ( !d.cd(APPDIR) ) 4194 if ( !d.cd(APPDIR) )
4195 { // "/tmp" 4195 { // "/tmp"
4196 qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); 4196 qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
4197 d = QDir::home(); 4197 d = QDir::home();
4198 d.mkdir(APPDIR); 4198 d.mkdir(APPDIR);
4199 d.cd(APPDIR); 4199 d.cd(APPDIR);
4200 } 4200 }
4201 if ( !d.cd("urls") ) 4201 if ( !d.cd("urls") )
4202 { // "/tmp" 4202 { // "/tmp"
4203 qWarning( "Cannot find the \"~/" APPDIR "/urls\" directory" ); 4203 qWarning( "Cannot find the \"~/" APPDIR "/urls\" directory" );
4204 d = QDir::home(); 4204 d = QDir::home();
4205 d.cd(APPDIR); 4205 d.cd(APPDIR);
4206 d.mkdir("urls"); 4206 d.mkdir("urls");
4207 d.cd("urls"); 4207 d.cd("urls");
4208 } 4208 }
4209 fi.setFile(d, file); 4209 fi.setFile(d, file);
4210 filename = fi.absFilePath(); 4210 filename = fi.absFilePath();
4211#endif 4211#endif
4212 FILE* fout = fopen(filename, "a"); 4212 FILE* fout = fopen(filename, "a");
4213 if (fout != NULL) 4213 if (fout != NULL)
4214 { 4214 {
4215 fprintf(fout, "<p><a href=\"%s\">%s</a>\n", (const char*)href, (const char*)href); 4215 fprintf(fout, "<p><a href=\"%s\">%s</a>\n", (const char*)href, (const char*)href);
4216 fclose(fout); 4216 fclose(fout);
4217 } 4217 }
4218 else 4218 else
4219 { 4219 {
4220 QMessageBox::warning(this, PROGNAME, "Problem with writing URL"); 4220 QMessageBox::warning(this, PROGNAME, "Problem with writing URL");
4221 } 4221 }
4222} 4222}
diff --git a/noncore/apps/opie-reader/ToolbarPrefs.cpp b/noncore/apps/opie-reader/ToolbarPrefs.cpp
index 361bf97..d878829 100644
--- a/noncore/apps/opie-reader/ToolbarPrefs.cpp
+++ b/noncore/apps/opie-reader/ToolbarPrefs.cpp
@@ -1,499 +1,501 @@
1/**************************************************************************** 1/****************************************************************************
2** Form implementation generated from reading ui file 'Prefs.ui' 2** Form implementation generated from reading ui file 'Prefs.ui'
3** 3**
4** Created: Tue Feb 11 23:53:35 2003 4** Created: Tue Feb 11 23:53:35 2003
5** by: The User Interface Compiler (uic) 5** by: The User Interface Compiler (uic)
6** 6**
7** WARNING! All changes made in this file will be lost! 7** WARNING! All changes made in this file will be lost!
8****************************************************************************/ 8****************************************************************************/
9#include "useqpe.h" 9#include "useqpe.h"
10#include "ToolbarPrefs.h" 10#include "ToolbarPrefs.h"
11 11
12#include <qcheckbox.h> 12#include <qcheckbox.h>
13#include <qlabel.h> 13#include <qlabel.h>
14#include <qpushbutton.h> 14#include <qpushbutton.h>
15#include <qspinbox.h> 15#include <qspinbox.h>
16#include <qlayout.h> 16#include <qlayout.h>
17#include <qvariant.h> 17#include <qvariant.h>
18#include <qtooltip.h> 18#include <qtooltip.h>
19#include <qwhatsthis.h> 19#include <qwhatsthis.h>
20#include <qcombobox.h> 20#include <qcombobox.h>
21#include <qbuttongroup.h> 21#include <qbuttongroup.h>
22#include <qlineedit.h> 22#include <qlineedit.h>
23#ifdef USEQPE 23#ifdef USEQPE
24#include <qpe/menubutton.h> 24#include <qpe/menubutton.h>
25#endif 25#endif
26#include <qpe/qpeapplication.h>
26 27
27CBarPrefs::CBarPrefs(const QString& appdir, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true), config( appdir ) 28CBarPrefs::CBarPrefs(const QString& appdir, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true), config( appdir )
28{ 29{
29 setCaption(tr( "Toolbar Settings" ) ); 30 setCaption(tr( "Toolbar Settings" ) );
30 QTabWidget* td = new QTabWidget(this); 31 QTabWidget* td = new QTabWidget(this);
31 misc = new CMiscBarPrefs(this); 32 misc = new CMiscBarPrefs(this);
32 filebar = new CFileBarPrefs(config, this); 33 filebar = new CFileBarPrefs(config, this);
33 navbar = new CNavBarPrefs(config, this); 34 navbar = new CNavBarPrefs(config, this);
34 viewbar = new CViewBarPrefs(config, this); 35 viewbar = new CViewBarPrefs(config, this);
35 markbar = new CMarkBarPrefs(config, this); 36 markbar = new CMarkBarPrefs(config, this);
36 indbar = new CIndBarPrefs(config, this); 37 indbar = new CIndBarPrefs(config, this);
37 td->addTab(filebar, tr("File")); 38 td->addTab(filebar, tr("File"));
38 td->addTab(navbar, tr("Navigation")); 39 td->addTab(navbar, tr("Navigation"));
39 td->addTab(viewbar, tr("View")); 40 td->addTab(viewbar, tr("View"));
40 td->addTab(markbar, tr("Marks")); 41 td->addTab(markbar, tr("Marks"));
41 td->addTab(indbar, tr("Indicators")); 42 td->addTab(indbar, tr("Indicators"));
42 td->addTab(misc, tr("Policy")); 43 td->addTab(misc, tr("Policy"));
43 QVBoxLayout* v = new QVBoxLayout(this); 44 QVBoxLayout* v = new QVBoxLayout(this);
44 v->addWidget(td); 45 v->addWidget(td);
45 46
46 if (fs) showMaximized(); 47 if (fs)
48 QPEApplication::showDialog( this );
47} 49}
48 50
49/* 51/*
50CBarPrefs1::CBarPrefs1( Config& _config, QWidget* parent, const char* name, WFlags fl ) 52CBarPrefs1::CBarPrefs1( Config& _config, QWidget* parent, const char* name, WFlags fl )
51 : QWidget( parent, name, fl ), config(_config) 53 : QWidget( parent, name, fl ), config(_config)
52{ 54{
53 config.setGroup( "Toolbar" ); 55 config.setGroup( "Toolbar" );
54 QVBoxLayout* vb = new QVBoxLayout(this); 56 QVBoxLayout* vb = new QVBoxLayout(this);
55 57
56 QGroupBox* bg = new QGroupBox(3, Qt::Horizontal, "File", this); 58 QGroupBox* bg = new QGroupBox(3, Qt::Horizontal, "File", this);
57 vb->addWidget(bg); 59 vb->addWidget(bg);
58 60
59 open = new QCheckBox( tr("Open"), bg ); 61 open = new QCheckBox( tr("Open"), bg );
60 open->setChecked(config.readBoolEntry( "Open", false )); 62 open->setChecked(config.readBoolEntry( "Open", false ));
61 connect(open, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 63 connect(open, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
62 close = new QCheckBox( tr("Close"), bg ); 64 close = new QCheckBox( tr("Close"), bg );
63 close->setChecked(config.readBoolEntry( "Close", false )); 65 close->setChecked(config.readBoolEntry( "Close", false ));
64 connect(close, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 66 connect(close, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
65 info = new QCheckBox( tr("Info"), bg ); 67 info = new QCheckBox( tr("Info"), bg );
66 info->setChecked(config.readBoolEntry( "Info", false )); 68 info->setChecked(config.readBoolEntry( "Info", false ));
67 connect(info, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 69 connect(info, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
68 twotouch = new QCheckBox( tr("Two/One\nTouch"), bg ); 70 twotouch = new QCheckBox( tr("Two/One\nTouch"), bg );
69 twotouch->setChecked(config.readBoolEntry( "Two/One Touch", false )); 71 twotouch->setChecked(config.readBoolEntry( "Two/One Touch", false ));
70 connect(twotouch, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 72 connect(twotouch, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
71 find = new QCheckBox( tr("Find"), bg ); 73 find = new QCheckBox( tr("Find"), bg );
72 find->setChecked(config.readBoolEntry( "Find", false )); 74 find->setChecked(config.readBoolEntry( "Find", false ));
73 connect(find, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 75 connect(find, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
74 76
75 bg = new QGroupBox(2, Qt::Horizontal, "Navigation", this); 77 bg = new QGroupBox(2, Qt::Horizontal, "Navigation", this);
76 vb->addWidget(bg); 78 vb->addWidget(bg);
77 scroll = new QCheckBox( tr("Scroll"), bg ); 79 scroll = new QCheckBox( tr("Scroll"), bg );
78 scroll->setChecked(config.readBoolEntry( "Scroll", false )); 80 scroll->setChecked(config.readBoolEntry( "Scroll", false ));
79 connect(scroll, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 81 connect(scroll, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
80 navigation = new QCheckBox( tr("Back/Home/Forward"), bg ); 82 navigation = new QCheckBox( tr("Back/Home/Forward"), bg );
81 navigation->setChecked(config.readBoolEntry( "Back/Home/Forward", false )); 83 navigation->setChecked(config.readBoolEntry( "Back/Home/Forward", false ));
82 connect(navigation, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 84 connect(navigation, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
83 page = new QCheckBox( tr("Page\nUp/Down"), bg ); 85 page = new QCheckBox( tr("Page\nUp/Down"), bg );
84 page->setChecked(config.readBoolEntry( "Page Up/Down", false )); 86 page->setChecked(config.readBoolEntry( "Page Up/Down", false ));
85 connect(page, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 87 connect(page, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
86 startend = new QCheckBox( tr("Goto Start/End"), bg ); 88 startend = new QCheckBox( tr("Goto Start/End"), bg );
87 startend->setChecked(config.readBoolEntry( "Goto Start/End", false )); 89 startend->setChecked(config.readBoolEntry( "Goto Start/End", false ));
88 connect(startend, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 90 connect(startend, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
89 jump = new QCheckBox( tr("Jump"), bg ); 91 jump = new QCheckBox( tr("Jump"), bg );
90 jump->setChecked(config.readBoolEntry( "Jump", false )); 92 jump->setChecked(config.readBoolEntry( "Jump", false ));
91 connect(jump, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 93 connect(jump, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
92 pageline = new QCheckBox( tr("Page/Line Scroll"), bg ); 94 pageline = new QCheckBox( tr("Page/Line Scroll"), bg );
93 pageline->setChecked(config.readBoolEntry( "Page/Line Scroll", false )); 95 pageline->setChecked(config.readBoolEntry( "Page/Line Scroll", false ));
94 connect(pageline, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 96 connect(pageline, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
95 m_isChanged = false; 97 m_isChanged = false;
96} 98}
97 99
98void CBarPrefs1::saveall() 100void CBarPrefs1::saveall()
99{ 101{
100 config.setGroup( "Toolbar" ); 102 config.setGroup( "Toolbar" );
101 config.writeEntry( "Open", open->isChecked()); 103 config.writeEntry( "Open", open->isChecked());
102 config.writeEntry( "Close", close->isChecked()); 104 config.writeEntry( "Close", close->isChecked());
103 config.writeEntry( "Info", info->isChecked()); 105 config.writeEntry( "Info", info->isChecked());
104 config.writeEntry( "Two/One Touch", twotouch->isChecked()); 106 config.writeEntry( "Two/One Touch", twotouch->isChecked());
105 config.writeEntry( "Find", find->isChecked()); 107 config.writeEntry( "Find", find->isChecked());
106 config.writeEntry( "Scroll", scroll->isChecked()); 108 config.writeEntry( "Scroll", scroll->isChecked());
107 config.writeEntry( "Back/Home/Forward", navigation->isChecked()); 109 config.writeEntry( "Back/Home/Forward", navigation->isChecked());
108 config.writeEntry( "Page Up/Down", page->isChecked()); 110 config.writeEntry( "Page Up/Down", page->isChecked());
109 config.writeEntry( "Goto Start/End", startend->isChecked()); 111 config.writeEntry( "Goto Start/End", startend->isChecked());
110 config.writeEntry( "Jump", jump->isChecked()); 112 config.writeEntry( "Jump", jump->isChecked());
111 config.writeEntry( "Page/Line Scroll", pageline->isChecked()); 113 config.writeEntry( "Page/Line Scroll", pageline->isChecked());
112} 114}
113 115
114CBarPrefs1::~CBarPrefs1() 116CBarPrefs1::~CBarPrefs1()
115{ 117{
116} 118}
117*/ 119*/
118/* 120/*
119CBarPrefs2::CBarPrefs2( Config& _config, QWidget* parent, const char* name, WFlags fl ) 121CBarPrefs2::CBarPrefs2( Config& _config, QWidget* parent, const char* name, WFlags fl )
120 : QWidget( parent, name, fl ), config(_config) 122 : QWidget( parent, name, fl ), config(_config)
121{ 123{
122 QVBoxLayout* vb = new QVBoxLayout(this); 124 QVBoxLayout* vb = new QVBoxLayout(this);
123 125
124 QGroupBox* bg = new QGroupBox(3, Qt::Horizontal, "View", this); 126 QGroupBox* bg = new QGroupBox(3, Qt::Horizontal, "View", this);
125 vb->addWidget(bg); 127 vb->addWidget(bg);
126 128
127 config.setGroup( "Toolbar" ); 129 config.setGroup( "Toolbar" );
128 130
129 fullscreen = new QCheckBox( tr("Fullscreen"), bg ); 131 fullscreen = new QCheckBox( tr("Fullscreen"), bg );
130 fullscreen->setChecked(config.readBoolEntry( "Fullscreen", false )); 132 fullscreen->setChecked(config.readBoolEntry( "Fullscreen", false ));
131 connect(fullscreen, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 133 connect(fullscreen, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
132 zoom = new QCheckBox( tr("Zoom"), bg ); 134 zoom = new QCheckBox( tr("Zoom"), bg );
133 zoom->setChecked(config.readBoolEntry( "Zoom In/Out", false )); 135 zoom->setChecked(config.readBoolEntry( "Zoom In/Out", false ));
134 connect(zoom, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 136 connect(zoom, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
135 setfont = new QCheckBox( tr("Set Font"), bg ); 137 setfont = new QCheckBox( tr("Set Font"), bg );
136 setfont->setChecked(config.readBoolEntry( "Set Font", false )); 138 setfont->setChecked(config.readBoolEntry( "Set Font", false ));
137 connect(setfont, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 139 connect(setfont, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
138 140
139 encoding = new QCheckBox( tr("Encoding"), bg ); 141 encoding = new QCheckBox( tr("Encoding"), bg );
140 encoding->setChecked(config.readBoolEntry("Encoding Select", false)); 142 encoding->setChecked(config.readBoolEntry("Encoding Select", false));
141 connect(encoding, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 143 connect(encoding, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
142 ideogram = new QCheckBox( tr("Ideogram"), bg ); 144 ideogram = new QCheckBox( tr("Ideogram"), bg );
143 ideogram->setChecked(config.readBoolEntry("Ideogram Mode", false)); 145 ideogram->setChecked(config.readBoolEntry("Ideogram Mode", false));
144 connect(ideogram, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 146 connect(ideogram, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
145 147
146 bg = new QGroupBox(3, Qt::Horizontal, "Marks", this); 148 bg = new QGroupBox(3, Qt::Horizontal, "Marks", this);
147 vb->addWidget(bg); 149 vb->addWidget(bg);
148 mark = new QCheckBox( tr("Bookmark"), bg ); 150 mark = new QCheckBox( tr("Bookmark"), bg );
149 mark->setChecked(config.readBoolEntry( "Mark", false )); 151 mark->setChecked(config.readBoolEntry( "Mark", false ));
150 connect(mark, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 152 connect(mark, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
151 annotate = new QCheckBox( tr("Annotate"), bg ); 153 annotate = new QCheckBox( tr("Annotate"), bg );
152 annotate->setChecked(config.readBoolEntry( "Annotate", false )); 154 annotate->setChecked(config.readBoolEntry( "Annotate", false ));
153 connect(annotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 155 connect(annotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
154 go_to = new QCheckBox( tr("Goto"), bg ); 156 go_to = new QCheckBox( tr("Goto"), bg );
155 go_to->setChecked(config.readBoolEntry( "Goto", false )); 157 go_to->setChecked(config.readBoolEntry( "Goto", false ));
156 connect(go_to, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 158 connect(go_to, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
157 Delete = new QCheckBox( tr("Delete"), bg ); 159 Delete = new QCheckBox( tr("Delete"), bg );
158 Delete->setChecked(config.readBoolEntry( "Delete", false )); 160 Delete->setChecked(config.readBoolEntry( "Delete", false ));
159 connect(Delete, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 161 connect(Delete, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
160 autogen = new QCheckBox( tr("Autogen"), bg ); 162 autogen = new QCheckBox( tr("Autogen"), bg );
161 autogen->setChecked(config.readBoolEntry( "Autogen", false )); 163 autogen->setChecked(config.readBoolEntry( "Autogen", false ));
162 connect(autogen, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 164 connect(autogen, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
163 clear = new QCheckBox( tr("Clear"), bg ); 165 clear = new QCheckBox( tr("Clear"), bg );
164 clear->setChecked(config.readBoolEntry( "Clear", false )); 166 clear->setChecked(config.readBoolEntry( "Clear", false ));
165 connect(clear, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 167 connect(clear, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
166 save = new QCheckBox( tr("Save"), bg ); 168 save = new QCheckBox( tr("Save"), bg );
167 save->setChecked(config.readBoolEntry( "Save", false )); 169 save->setChecked(config.readBoolEntry( "Save", false ));
168 connect(save, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 170 connect(save, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
169 tidy = new QCheckBox( tr("Tidy"), bg ); 171 tidy = new QCheckBox( tr("Tidy"), bg );
170 tidy->setChecked(config.readBoolEntry( "Tidy", false )); 172 tidy->setChecked(config.readBoolEntry( "Tidy", false ));
171 connect(tidy, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 173 connect(tidy, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
172 block = new QCheckBox( tr("Mark/Copy"), bg ); 174 block = new QCheckBox( tr("Mark/Copy"), bg );
173 block->setChecked(config.readBoolEntry( "Start/Copy Block", false )); 175 block->setChecked(config.readBoolEntry( "Start/Copy Block", false ));
174 connect(block, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 176 connect(block, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
175 177
176 bg = new QGroupBox(1, Qt::Horizontal, "Indicators", this); 178 bg = new QGroupBox(1, Qt::Horizontal, "Indicators", this);
177 vb->addWidget(bg); 179 vb->addWidget(bg);
178 indannotate = new QCheckBox( tr("Annotation"), bg ); 180 indannotate = new QCheckBox( tr("Annotation"), bg );
179 indannotate->setChecked(config.readBoolEntry( "Annotation indicator", false )); 181 indannotate->setChecked(config.readBoolEntry( "Annotation indicator", false ));
180 connect(indannotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 182 connect(indannotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
181 m_isChanged = false; 183 m_isChanged = false;
182} 184}
183 185
184void CBarPrefs2::saveall() 186void CBarPrefs2::saveall()
185{ 187{
186 config.setGroup( "Toolbar" ); 188 config.setGroup( "Toolbar" );
187 config.writeEntry( "Fullscreen", fullscreen->isChecked()); 189 config.writeEntry( "Fullscreen", fullscreen->isChecked());
188 config.writeEntry( "Zoom In/Out", zoom->isChecked()); 190 config.writeEntry( "Zoom In/Out", zoom->isChecked());
189 config.writeEntry( "Set Font", setfont->isChecked()); 191 config.writeEntry( "Set Font", setfont->isChecked());
190 config.writeEntry("Encoding Select", encoding->isChecked()); 192 config.writeEntry("Encoding Select", encoding->isChecked());
191 config.writeEntry("Ideogram Mode", ideogram->isChecked()); 193 config.writeEntry("Ideogram Mode", ideogram->isChecked());
192 194
193 config.writeEntry( "Mark", mark->isChecked()); 195 config.writeEntry( "Mark", mark->isChecked());
194 config.writeEntry( "Annotate", annotate->isChecked()); 196 config.writeEntry( "Annotate", annotate->isChecked());
195 config.writeEntry( "Goto", go_to->isChecked()); 197 config.writeEntry( "Goto", go_to->isChecked());
196 config.writeEntry( "Delete", Delete->isChecked()); 198 config.writeEntry( "Delete", Delete->isChecked());
197 config.writeEntry( "Autogen", autogen->isChecked()); 199 config.writeEntry( "Autogen", autogen->isChecked());
198 config.writeEntry( "Clear", clear->isChecked()); 200 config.writeEntry( "Clear", clear->isChecked());
199 config.writeEntry( "Save", save->isChecked()); 201 config.writeEntry( "Save", save->isChecked());
200 config.writeEntry( "Tidy", tidy->isChecked()); 202 config.writeEntry( "Tidy", tidy->isChecked());
201 config.writeEntry( "Start/Copy Block", block->isChecked()); 203 config.writeEntry( "Start/Copy Block", block->isChecked());
202 config.writeEntry( "Annotation indicator", indannotate->isChecked()); 204 config.writeEntry( "Annotation indicator", indannotate->isChecked());
203} 205}
204 206
205CBarPrefs2::~CBarPrefs2() 207CBarPrefs2::~CBarPrefs2()
206{ 208{
207} 209}
208*/ 210*/
209 211
210CFileBarPrefs::CFileBarPrefs( Config& _config, QWidget* parent, const char* name, WFlags fl ) 212CFileBarPrefs::CFileBarPrefs( Config& _config, QWidget* parent, const char* name, WFlags fl )
211 : QWidget( parent, name, fl ), config(_config) 213 : QWidget( parent, name, fl ), config(_config)
212{ 214{
213 config.setGroup( "Toolbar" ); 215 config.setGroup( "Toolbar" );
214 QVBoxLayout* vb = new QVBoxLayout(this); 216 QVBoxLayout* vb = new QVBoxLayout(this);
215 217
216 QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "File", this); 218 QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "File", this);
217 vb->addWidget(bg); 219 vb->addWidget(bg);
218 220
219 open = new QCheckBox( tr("Open"), bg ); 221 open = new QCheckBox( tr("Open"), bg );
220 open->setChecked(config.readBoolEntry( "Open", false )); 222 open->setChecked(config.readBoolEntry( "Open", false ));
221 connect(open, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 223 connect(open, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
222 close = new QCheckBox( tr("Close"), bg ); 224 close = new QCheckBox( tr("Close"), bg );
223 close->setChecked(config.readBoolEntry( "Close", false )); 225 close->setChecked(config.readBoolEntry( "Close", false ));
224 connect(close, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 226 connect(close, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
225 info = new QCheckBox( tr("Info"), bg ); 227 info = new QCheckBox( tr("Info"), bg );
226 info->setChecked(config.readBoolEntry( "Info", false )); 228 info->setChecked(config.readBoolEntry( "Info", false ));
227 connect(info, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 229 connect(info, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
228 twotouch = new QCheckBox( tr("Two/One\nTouch"), bg ); 230 twotouch = new QCheckBox( tr("Two/One\nTouch"), bg );
229 twotouch->setChecked(config.readBoolEntry( "Two/One Touch", false )); 231 twotouch->setChecked(config.readBoolEntry( "Two/One Touch", false ));
230 connect(twotouch, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 232 connect(twotouch, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
231 find = new QCheckBox( tr("Find"), bg ); 233 find = new QCheckBox( tr("Find"), bg );
232 find->setChecked(config.readBoolEntry( "Find", false )); 234 find->setChecked(config.readBoolEntry( "Find", false ));
233 connect(find, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 235 connect(find, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
234 m_isChanged = false; 236 m_isChanged = false;
235} 237}
236 238
237void CFileBarPrefs::saveall() 239void CFileBarPrefs::saveall()
238{ 240{
239 config.setGroup( "Toolbar" ); 241 config.setGroup( "Toolbar" );
240 config.writeEntry( "Open", open->isChecked()); 242 config.writeEntry( "Open", open->isChecked());
241 config.writeEntry( "Close", close->isChecked()); 243 config.writeEntry( "Close", close->isChecked());
242 config.writeEntry( "Info", info->isChecked()); 244 config.writeEntry( "Info", info->isChecked());
243 config.writeEntry( "Two/One Touch", twotouch->isChecked()); 245 config.writeEntry( "Two/One Touch", twotouch->isChecked());
244 config.writeEntry( "Find", find->isChecked()); 246 config.writeEntry( "Find", find->isChecked());
245} 247}
246 248
247CFileBarPrefs::~CFileBarPrefs() 249CFileBarPrefs::~CFileBarPrefs()
248{ 250{
249} 251}
250 252
251CNavBarPrefs::CNavBarPrefs( Config& _config, QWidget* parent, const char* name, WFlags fl ) 253CNavBarPrefs::CNavBarPrefs( Config& _config, QWidget* parent, const char* name, WFlags fl )
252 : QWidget( parent, name, fl ), config(_config) 254 : QWidget( parent, name, fl ), config(_config)
253{ 255{
254 config.setGroup( "Toolbar" ); 256 config.setGroup( "Toolbar" );
255 QVBoxLayout* vb = new QVBoxLayout(this); 257 QVBoxLayout* vb = new QVBoxLayout(this);
256 258
257 QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "Navigation", this); 259 QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "Navigation", this);
258 vb->addWidget(bg); 260 vb->addWidget(bg);
259 scroll = new QCheckBox( tr("Scroll"), bg ); 261 scroll = new QCheckBox( tr("Scroll"), bg );
260 scroll->setChecked(config.readBoolEntry( "Scroll", false )); 262 scroll->setChecked(config.readBoolEntry( "Scroll", false ));
261 connect(scroll, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 263 connect(scroll, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
262 264
263 navback = new QCheckBox( tr("Back"), bg ); 265 navback = new QCheckBox( tr("Back"), bg );
264 navback->setChecked(config.readBoolEntry( "Back", false )); 266 navback->setChecked(config.readBoolEntry( "Back", false ));
265 connect(navback, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 267 connect(navback, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
266 navhome = new QCheckBox( tr("Home"), bg ); 268 navhome = new QCheckBox( tr("Home"), bg );
267 navhome->setChecked(config.readBoolEntry( "Home", false )); 269 navhome->setChecked(config.readBoolEntry( "Home", false ));
268 connect(navhome, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 270 connect(navhome, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
269 navforward = new QCheckBox( tr("Forward"), bg ); 271 navforward = new QCheckBox( tr("Forward"), bg );
270 navforward->setChecked(config.readBoolEntry( "Forward", false )); 272 navforward->setChecked(config.readBoolEntry( "Forward", false ));
271 connect(navforward, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 273 connect(navforward, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
272 274
273 pageup = new QCheckBox( tr("Page Up"), bg ); 275 pageup = new QCheckBox( tr("Page Up"), bg );
274 pageup->setChecked(config.readBoolEntry( "Page Up", false )); 276 pageup->setChecked(config.readBoolEntry( "Page Up", false ));
275 connect(pageup, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 277 connect(pageup, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
276 pagedown = new QCheckBox( tr("Page Down"), bg ); 278 pagedown = new QCheckBox( tr("Page Down"), bg );
277 pagedown->setChecked(config.readBoolEntry( "Page Down", false )); 279 pagedown->setChecked(config.readBoolEntry( "Page Down", false ));
278 connect(pagedown, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 280 connect(pagedown, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
279 gotostart = new QCheckBox( tr("Goto Start"), bg ); 281 gotostart = new QCheckBox( tr("Goto Start"), bg );
280 gotostart->setChecked(config.readBoolEntry( "Goto Start", false )); 282 gotostart->setChecked(config.readBoolEntry( "Goto Start", false ));
281 connect(gotostart, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 283 connect(gotostart, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
282 gotoend = new QCheckBox( tr("Goto End"), bg ); 284 gotoend = new QCheckBox( tr("Goto End"), bg );
283 gotoend->setChecked(config.readBoolEntry( "Goto End", false )); 285 gotoend->setChecked(config.readBoolEntry( "Goto End", false ));
284 connect(gotoend, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 286 connect(gotoend, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
285 jump = new QCheckBox( tr("Jump"), bg ); 287 jump = new QCheckBox( tr("Jump"), bg );
286 jump->setChecked(config.readBoolEntry( "Jump", false )); 288 jump->setChecked(config.readBoolEntry( "Jump", false ));
287 connect(jump, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 289 connect(jump, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
288 pageline = new QCheckBox( tr("Page/Line Scroll"), bg ); 290 pageline = new QCheckBox( tr("Page/Line Scroll"), bg );
289 pageline->setChecked(config.readBoolEntry( "Page/Line Scroll", false )); 291 pageline->setChecked(config.readBoolEntry( "Page/Line Scroll", false ));
290 connect(pageline, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 292 connect(pageline, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
291 m_isChanged = false; 293 m_isChanged = false;
292} 294}
293 295
294void CNavBarPrefs::saveall() 296void CNavBarPrefs::saveall()
295{ 297{
296 config.setGroup( "Toolbar" ); 298 config.setGroup( "Toolbar" );
297 config.writeEntry( "Scroll", scroll->isChecked()); 299 config.writeEntry( "Scroll", scroll->isChecked());
298 config.writeEntry( "Back", navback->isChecked()); 300 config.writeEntry( "Back", navback->isChecked());
299 config.writeEntry( "Home", navhome->isChecked()); 301 config.writeEntry( "Home", navhome->isChecked());
300 config.writeEntry( "Forward", navforward->isChecked()); 302 config.writeEntry( "Forward", navforward->isChecked());
301 config.writeEntry( "Page Up", pageup->isChecked()); 303 config.writeEntry( "Page Up", pageup->isChecked());
302 config.writeEntry( "Page Down", pagedown->isChecked()); 304 config.writeEntry( "Page Down", pagedown->isChecked());
303 config.writeEntry( "Goto Start", gotostart->isChecked()); 305 config.writeEntry( "Goto Start", gotostart->isChecked());
304 config.writeEntry( "Goto End", gotoend->isChecked()); 306 config.writeEntry( "Goto End", gotoend->isChecked());
305 config.writeEntry( "Jump", jump->isChecked()); 307 config.writeEntry( "Jump", jump->isChecked());
306 config.writeEntry( "Page/Line Scroll", pageline->isChecked()); 308 config.writeEntry( "Page/Line Scroll", pageline->isChecked());
307} 309}
308 310
309CNavBarPrefs::~CNavBarPrefs() 311CNavBarPrefs::~CNavBarPrefs()
310{ 312{
311} 313}
312 314
313CViewBarPrefs::CViewBarPrefs( Config& _config, QWidget* parent, const char* name, WFlags fl ) 315CViewBarPrefs::CViewBarPrefs( Config& _config, QWidget* parent, const char* name, WFlags fl )
314 : QWidget( parent, name, fl ), config(_config) 316 : QWidget( parent, name, fl ), config(_config)
315{ 317{
316 QVBoxLayout* vb = new QVBoxLayout(this); 318 QVBoxLayout* vb = new QVBoxLayout(this);
317 319
318 QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "View", this); 320 QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "View", this);
319 vb->addWidget(bg); 321 vb->addWidget(bg);
320 322
321 config.setGroup( "Toolbar" ); 323 config.setGroup( "Toolbar" );
322 324
323 fullscreen = new QCheckBox( tr("Fullscreen"), bg ); 325 fullscreen = new QCheckBox( tr("Fullscreen"), bg );
324 fullscreen->setChecked(config.readBoolEntry( "Fullscreen", false )); 326 fullscreen->setChecked(config.readBoolEntry( "Fullscreen", false ));
325 connect(fullscreen, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 327 connect(fullscreen, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
326 zoomin = new QCheckBox( tr("Zoom In"), bg ); 328 zoomin = new QCheckBox( tr("Zoom In"), bg );
327 zoomin->setChecked(config.readBoolEntry( "Zoom In", false )); 329 zoomin->setChecked(config.readBoolEntry( "Zoom In", false ));
328 connect(zoomin, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 330 connect(zoomin, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
329 zoomout = new QCheckBox( tr("Zoom Out"), bg ); 331 zoomout = new QCheckBox( tr("Zoom Out"), bg );
330 zoomout->setChecked(config.readBoolEntry( "Zoom Out", false )); 332 zoomout->setChecked(config.readBoolEntry( "Zoom Out", false ));
331 connect(zoomout, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 333 connect(zoomout, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
332 setfont = new QCheckBox( tr("Set Font"), bg ); 334 setfont = new QCheckBox( tr("Set Font"), bg );
333 setfont->setChecked(config.readBoolEntry( "Set Font", false )); 335 setfont->setChecked(config.readBoolEntry( "Set Font", false ));
334 connect(setfont, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 336 connect(setfont, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
335 337
336 encoding = new QCheckBox( tr("Encoding"), bg ); 338 encoding = new QCheckBox( tr("Encoding"), bg );
337 encoding->setChecked(config.readBoolEntry("Encoding Select", false)); 339 encoding->setChecked(config.readBoolEntry("Encoding Select", false));
338 connect(encoding, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 340 connect(encoding, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
339 ideogram = new QCheckBox( tr("Ideogram"), bg ); 341 ideogram = new QCheckBox( tr("Ideogram"), bg );
340 ideogram->setChecked(config.readBoolEntry("Ideogram Mode", false)); 342 ideogram->setChecked(config.readBoolEntry("Ideogram Mode", false));
341 connect(ideogram, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 343 connect(ideogram, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
342 m_isChanged = false; 344 m_isChanged = false;
343} 345}
344 346
345void CViewBarPrefs::saveall() 347void CViewBarPrefs::saveall()
346{ 348{
347 config.setGroup( "Toolbar" ); 349 config.setGroup( "Toolbar" );
348 config.writeEntry( "Fullscreen", fullscreen->isChecked()); 350 config.writeEntry( "Fullscreen", fullscreen->isChecked());
349 config.writeEntry( "Zoom In", zoomin->isChecked()); 351 config.writeEntry( "Zoom In", zoomin->isChecked());
350 config.writeEntry( "Zoom Out", zoomout->isChecked()); 352 config.writeEntry( "Zoom Out", zoomout->isChecked());
351 config.writeEntry( "Set Font", setfont->isChecked()); 353 config.writeEntry( "Set Font", setfont->isChecked());
352 config.writeEntry("Encoding Select", encoding->isChecked()); 354 config.writeEntry("Encoding Select", encoding->isChecked());
353 config.writeEntry("Ideogram Mode", ideogram->isChecked()); 355 config.writeEntry("Ideogram Mode", ideogram->isChecked());
354} 356}
355 357
356CViewBarPrefs::~CViewBarPrefs() 358CViewBarPrefs::~CViewBarPrefs()
357{ 359{
358} 360}
359 361
360CMarkBarPrefs::CMarkBarPrefs( Config& _config, QWidget* parent, const char* name, WFlags fl ) 362CMarkBarPrefs::CMarkBarPrefs( Config& _config, QWidget* parent, const char* name, WFlags fl )
361 : QWidget( parent, name, fl ), config(_config) 363 : QWidget( parent, name, fl ), config(_config)
362{ 364{
363 QVBoxLayout* vb = new QVBoxLayout(this); 365 QVBoxLayout* vb = new QVBoxLayout(this);
364 366
365 QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "Marks", this); 367 QGroupBox* bg = new QGroupBox(2, Qt::Horizontal, "Marks", this);
366 vb->addWidget(bg); 368 vb->addWidget(bg);
367 mark = new QCheckBox( tr("Bookmark"), bg ); 369 mark = new QCheckBox( tr("Bookmark"), bg );
368 mark->setChecked(config.readBoolEntry( "Mark", false )); 370 mark->setChecked(config.readBoolEntry( "Mark", false ));
369 connect(mark, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 371 connect(mark, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
370 annotate = new QCheckBox( tr("Annotate"), bg ); 372 annotate = new QCheckBox( tr("Annotate"), bg );
371 annotate->setChecked(config.readBoolEntry( "Annotate", false )); 373 annotate->setChecked(config.readBoolEntry( "Annotate", false ));
372 connect(annotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 374 connect(annotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
373 go_to = new QCheckBox( tr("Goto"), bg ); 375 go_to = new QCheckBox( tr("Goto"), bg );
374 go_to->setChecked(config.readBoolEntry( "Goto", false )); 376 go_to->setChecked(config.readBoolEntry( "Goto", false ));
375 connect(go_to, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 377 connect(go_to, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
376 Delete = new QCheckBox( tr("Delete"), bg ); 378 Delete = new QCheckBox( tr("Delete"), bg );
377 Delete->setChecked(config.readBoolEntry( "Delete", false )); 379 Delete->setChecked(config.readBoolEntry( "Delete", false ));
378 connect(Delete, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 380 connect(Delete, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
379 autogen = new QCheckBox( tr("Autogen"), bg ); 381 autogen = new QCheckBox( tr("Autogen"), bg );
380 autogen->setChecked(config.readBoolEntry( "Autogen", false )); 382 autogen->setChecked(config.readBoolEntry( "Autogen", false ));
381 connect(autogen, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 383 connect(autogen, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
382 clear = new QCheckBox( tr("Clear"), bg ); 384 clear = new QCheckBox( tr("Clear"), bg );
383 clear->setChecked(config.readBoolEntry( "Clear", false )); 385 clear->setChecked(config.readBoolEntry( "Clear", false ));
384 connect(clear, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 386 connect(clear, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
385 save = new QCheckBox( tr("Save"), bg ); 387 save = new QCheckBox( tr("Save"), bg );
386 save->setChecked(config.readBoolEntry( "Save", false )); 388 save->setChecked(config.readBoolEntry( "Save", false ));
387 connect(save, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 389 connect(save, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
388 tidy = new QCheckBox( tr("Tidy"), bg ); 390 tidy = new QCheckBox( tr("Tidy"), bg );
389 tidy->setChecked(config.readBoolEntry( "Tidy", false )); 391 tidy->setChecked(config.readBoolEntry( "Tidy", false ));
390 connect(tidy, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 392 connect(tidy, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
391 startblock = new QCheckBox( tr("Mark Block"), bg ); 393 startblock = new QCheckBox( tr("Mark Block"), bg );
392 startblock->setChecked(config.readBoolEntry( "Start Block", false )); 394 startblock->setChecked(config.readBoolEntry( "Start Block", false ));
393 connect(startblock, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 395 connect(startblock, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
394 copyblock = new QCheckBox( tr("Copy Block"), bg ); 396 copyblock = new QCheckBox( tr("Copy Block"), bg );
395 copyblock->setChecked(config.readBoolEntry( "Copy Block", false )); 397 copyblock->setChecked(config.readBoolEntry( "Copy Block", false ));
396 connect(copyblock, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 398 connect(copyblock, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
397 m_isChanged = false; 399 m_isChanged = false;
398} 400}
399 401
400void CMarkBarPrefs::saveall() 402void CMarkBarPrefs::saveall()
401{ 403{
402 config.setGroup( "Toolbar" ); 404 config.setGroup( "Toolbar" );
403 config.writeEntry( "Mark", mark->isChecked()); 405 config.writeEntry( "Mark", mark->isChecked());
404 config.writeEntry( "Annotate", annotate->isChecked()); 406 config.writeEntry( "Annotate", annotate->isChecked());
405 config.writeEntry( "Goto", go_to->isChecked()); 407 config.writeEntry( "Goto", go_to->isChecked());
406 config.writeEntry( "Delete", Delete->isChecked()); 408 config.writeEntry( "Delete", Delete->isChecked());
407 config.writeEntry( "Autogen", autogen->isChecked()); 409 config.writeEntry( "Autogen", autogen->isChecked());
408 config.writeEntry( "Clear", clear->isChecked()); 410 config.writeEntry( "Clear", clear->isChecked());
409 config.writeEntry( "Save", save->isChecked()); 411 config.writeEntry( "Save", save->isChecked());
410 config.writeEntry( "Tidy", tidy->isChecked()); 412 config.writeEntry( "Tidy", tidy->isChecked());
411 config.writeEntry( "Start Block", startblock->isChecked()); 413 config.writeEntry( "Start Block", startblock->isChecked());
412 config.writeEntry( "Copy Block", copyblock->isChecked()); 414 config.writeEntry( "Copy Block", copyblock->isChecked());
413} 415}
414 416
415CMarkBarPrefs::~CMarkBarPrefs() 417CMarkBarPrefs::~CMarkBarPrefs()
416{ 418{
417} 419}
418 420
419CMiscBarPrefs::CMiscBarPrefs( QWidget* parent, const char* name, WFlags fl ) 421CMiscBarPrefs::CMiscBarPrefs( QWidget* parent, const char* name, WFlags fl )
420 : QWidget( parent, name, fl ) 422 : QWidget( parent, name, fl )
421{ 423{
422 424
423 QGridLayout* hl = new QGridLayout(this,1,2); 425 QGridLayout* hl = new QGridLayout(this,1,2);
424 426
425 hl->setMargin( 0 ); 427 hl->setMargin( 0 );
426 428
427 QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, "Dialogs", this); 429 QGroupBox* gb = new QGroupBox(1, Qt::Horizontal, "Dialogs", this);
428 floating = new QCheckBox(gb); 430 floating = new QCheckBox(gb);
429 floating->setText(tr("Floating")); 431 floating->setText(tr("Floating"));
430 432
431// QLabel* TextLabel = new QLabel( gb ); 433// QLabel* TextLabel = new QLabel( gb );
432// TextLabel->setText( tr( "Select Button" ) ); 434// TextLabel->setText( tr( "Select Button" ) );
433 435
434 436
435 hl->addWidget( gb, 0, 0 ); 437 hl->addWidget( gb, 0, 0 );
436 438
437 439
438 gb = new QGroupBox(1, Qt::Horizontal, "Bars (Restart)", this); 440 gb = new QGroupBox(1, Qt::Horizontal, "Bars (Restart)", this);
439 441
440// QLabel* ql = new QLabel("Restart to apply changes", gb); 442// QLabel* ql = new QLabel("Restart to apply changes", gb);
441// TextLabel = new QLabel( gb ); 443// TextLabel = new QLabel( gb );
442// TextLabel->setText( tr( "Policy" ) ); 444// TextLabel->setText( tr( "Policy" ) );
443 445
444#ifdef USECOMBO 446#ifdef USECOMBO
445 tbpolicy = new QComboBox(gb); 447 tbpolicy = new QComboBox(gb);
446#else 448#else
447 tbpolicy = new MenuButton(gb); 449 tbpolicy = new MenuButton(gb);
448#endif 450#endif
449 tbpolicy->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); 451 tbpolicy->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
450 tbpolicy->insertItem(tr("Single bar")); 452 tbpolicy->insertItem(tr("Single bar"));
451 tbpolicy->insertItem(tr("Menu/tool bar")); 453 tbpolicy->insertItem(tr("Menu/tool bar"));
452 tbpolicy->insertItem(tr("Multiple bars")); 454 tbpolicy->insertItem(tr("Multiple bars"));
453 455
454#ifdef USECOMBO 456#ifdef USECOMBO
455 tbposition = new QComboBox(gb); 457 tbposition = new QComboBox(gb);
456#else 458#else
457 tbposition = new MenuButton(gb); 459 tbposition = new MenuButton(gb);
458#endif 460#endif
459 tbposition->insertItem(tr("Top")); 461 tbposition->insertItem(tr("Top"));
460 tbposition->insertItem(tr("Bottom")); 462 tbposition->insertItem(tr("Bottom"));
461 tbposition->insertItem(tr("Right")); 463 tbposition->insertItem(tr("Right"));
462 tbposition->insertItem(tr("Left")); 464 tbposition->insertItem(tr("Left"));
463 tbposition->insertItem(tr("Minimised")); 465 tbposition->insertItem(tr("Minimised"));
464 466
465 tbmovable = new QCheckBox( tr("Movable"), gb ); 467 tbmovable = new QCheckBox( tr("Movable"), gb );
466// ch->setChecked(config.readBoolEntry( "Movable", false )); 468// ch->setChecked(config.readBoolEntry( "Movable", false ));
467 469
468 hl->addWidget(gb, 0, 1); 470 hl->addWidget(gb, 0, 1);
469 471
470} 472}
471 473
472CMiscBarPrefs::~CMiscBarPrefs() 474CMiscBarPrefs::~CMiscBarPrefs()
473{ 475{
474 // no need to delete child widgets, Qt does it all for us 476 // no need to delete child widgets, Qt does it all for us
475} 477}
476 478
477 479
478CIndBarPrefs::CIndBarPrefs( Config& _config, QWidget* parent, const char* name, WFlags fl ) 480CIndBarPrefs::CIndBarPrefs( Config& _config, QWidget* parent, const char* name, WFlags fl )
479 : QWidget( parent, name, fl ), config(_config) 481 : QWidget( parent, name, fl ), config(_config)
480{ 482{
481 QVBoxLayout* vb = new QVBoxLayout(this); 483 QVBoxLayout* vb = new QVBoxLayout(this);
482 484
483 QGroupBox* bg = new QGroupBox(1, Qt::Horizontal, "Indicators", this); 485 QGroupBox* bg = new QGroupBox(1, Qt::Horizontal, "Indicators", this);
484 vb->addWidget(bg); 486 vb->addWidget(bg);
485 indannotate = new QCheckBox( tr("Annotation"), bg ); 487 indannotate = new QCheckBox( tr("Annotation"), bg );
486 indannotate->setChecked(config.readBoolEntry( "Annotation indicator", false )); 488 indannotate->setChecked(config.readBoolEntry( "Annotation indicator", false ));
487 connect(indannotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) ); 489 connect(indannotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
488 m_isChanged = false; 490 m_isChanged = false;
489} 491}
490 492
491void CIndBarPrefs::saveall() 493void CIndBarPrefs::saveall()
492{ 494{
493 config.setGroup( "Toolbar" ); 495 config.setGroup( "Toolbar" );
494 config.writeEntry( "Annotation indicator", indannotate->isChecked()); 496 config.writeEntry( "Annotation indicator", indannotate->isChecked());
495} 497}
496 498
497CIndBarPrefs::~CIndBarPrefs() 499CIndBarPrefs::~CIndBarPrefs()
498{ 500{
499} 501}
diff --git a/noncore/apps/opie-reader/URLDialog.cpp b/noncore/apps/opie-reader/URLDialog.cpp
index dd4568b..e572c80 100644
--- a/noncore/apps/opie-reader/URLDialog.cpp
+++ b/noncore/apps/opie-reader/URLDialog.cpp
@@ -1,14 +1,17 @@
1#include "URLDialog.h" 1#include "URLDialog.h"
2#include "qlayout.h" 2#include "qlayout.h"
3 3
4CURLDialog::CURLDialog(const QString& fname, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true) 4#include <qpe/qpeapplication.h>
5{ 5
6 setCaption(tr("Save URL")); 6CURLDialog::CURLDialog(const QString& fname, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true)
7 QVBoxLayout *tmp = new QVBoxLayout(this); 7{
8 QVButtonGroup* vb = new QVButtonGroup(fname, this); 8 setCaption(tr("Save URL"));
9 tmp->addWidget(vb); 9 QVBoxLayout *tmp = new QVBoxLayout(this);
10 m_clipboard = new QCheckBox(tr("Clipboard"), vb); 10 QVButtonGroup* vb = new QVButtonGroup(fname, this);
11 m_localfile = new QCheckBox(tr("Local file"), vb); 11 tmp->addWidget(vb);
12 m_globalfile = new QCheckBox(tr("Global file"), vb); 12 m_clipboard = new QCheckBox(tr("Clipboard"), vb);
13 if (fs) showMaximized(); 13 m_localfile = new QCheckBox(tr("Local file"), vb);
14} 14 m_globalfile = new QCheckBox(tr("Global file"), vb);
15 if (fs)
16 QPEApplication::showDialog( this );
17}
diff --git a/noncore/apps/opie-reader/fileBrowser.cpp b/noncore/apps/opie-reader/fileBrowser.cpp
index 9cd371d..05f2c31 100644
--- a/noncore/apps/opie-reader/fileBrowser.cpp
+++ b/noncore/apps/opie-reader/fileBrowser.cpp
@@ -1,266 +1,269 @@
1/**************************************************************************** 1/****************************************************************************
2 2
3Derived from a file browser which was 3Derived from a file browser which was
4 4
5** copyright 2001 ljp ljp@llornkcor.com 5** copyright 2001 ljp ljp@llornkcor.com
6 6
7Extensive modification by Tim Wentford to allow it to work in rotated mode 7Extensive modification by Tim Wentford to allow it to work in rotated mode
8 8
9****************************************************************************/ 9****************************************************************************/
10#include "fileBrowser.h" 10#include "fileBrowser.h"
11 11
12#include "QtrListView.h" 12#include "QtrListView.h"
13#include <qlineedit.h> 13#include <qlineedit.h>
14#include <qpushbutton.h> 14#include <qpushbutton.h>
15#include <qfile.h> 15#include <qfile.h>
16#include <qmessagebox.h> 16#include <qmessagebox.h>
17#ifndef _WINDOWS 17#ifndef _WINDOWS
18#include <unistd.h> 18#include <unistd.h>
19#endif 19#endif
20#include <qlayout.h> 20#include <qlayout.h>
21#ifdef _WINDOWS 21#ifdef _WINDOWS
22#include <direct.h> 22#include <direct.h>
23#endif 23#endif
24 24
25#include <qpe/qpeapplication.h>
26
25#include "opie.h" 27#include "opie.h"
26 28
27fileBrowser::fileBrowser( bool allownew, QWidget* parent, const char* name, bool modal, WFlags fl , const QString filter, const QString iPath ) 29fileBrowser::fileBrowser( bool allownew, QWidget* parent, const char* name, bool modal, WFlags fl , const QString filter, const QString iPath )
28 : QDialog( parent, name, true, 30 : QDialog( parent, name, true,
29 fl/* | WStyle_Customize | WStyle_Tool*/), 31 fl/* | WStyle_Customize | WStyle_Tool*/),
30 filterspec(QDir::All) 32 filterspec(QDir::All)
31{ 33{
32// showMaximized(); 34// showMaximized();
33 if ( !name ) 35 if ( !name )
34 setName( "fileBrowser" ); 36 setName( "fileBrowser" );
35/* 37/*
36 if (parent != NULL) 38 if (parent != NULL)
37 { 39 {
38#ifdef OPIE 40#ifdef OPIE
39 move(0,0); 41 move(0,0);
40 resize( parent->width(), parent->height() ); 42 resize( parent->width(), parent->height() );
41#else 43#else
42 setGeometry(parent->x(), parent->y(), parent->width(), parent->height() ); 44 setGeometry(parent->x(), parent->y(), parent->width(), parent->height() );
43#endif 45#endif
44 } 46 }
45*/ 47*/
46// showFullScreen(); 48// showFullScreen();
47 setCaption(tr( "Browse for file" ) ); 49 setCaption(tr( "Browse for file" ) );
48 filterStr=filter; 50 filterStr=filter;
49 51
50 buttonOk = new QPushButton( this, "buttonOk" ); 52 buttonOk = new QPushButton( this, "buttonOk" );
51 buttonOk->setFixedSize( 25, 25 ); 53 buttonOk->setFixedSize( 25, 25 );
52 buttonOk->setAutoDefault( false ); 54 buttonOk->setAutoDefault( false );
53 buttonOk->setText( tr( "/" ) ); 55 buttonOk->setText( tr( "/" ) );
54 56
55 buttonShowHidden = new QPushButton( this, "buttonShowHidden" ); 57 buttonShowHidden = new QPushButton( this, "buttonShowHidden" );
56// buttonShowHidden->setFixedSize( 50, 25 ); 58// buttonShowHidden->setFixedSize( 50, 25 );
57 buttonShowHidden->setText( tr( "Hidden" ) ); 59 buttonShowHidden->setText( tr( "Hidden" ) );
58 buttonShowHidden->setAutoDefault( false ); 60 buttonShowHidden->setAutoDefault( false );
59 buttonShowHidden->setToggleButton( true ); 61 buttonShowHidden->setToggleButton( true );
60 buttonShowHidden->setOn( false ); 62 buttonShowHidden->setOn( false );
61 63
62 dirLabel = new QLabel(this, "DirLabel"); 64 dirLabel = new QLabel(this, "DirLabel");
63 dirLabel->setAlignment(AlignLeft | AlignVCenter | ExpandTabs | WordBreak); 65 dirLabel->setAlignment(AlignLeft | AlignVCenter | ExpandTabs | WordBreak);
64 dirLabel->setText(currentDir.canonicalPath()); 66 dirLabel->setText(currentDir.canonicalPath());
65 67
66 ListView = new QtrListView( this, "ListView" ); 68 ListView = new QtrListView( this, "ListView" );
67 ListView->addColumn( tr( "Name" ) ); 69 ListView->addColumn( tr( "Name" ) );
68 ListView->setSorting( 2, FALSE); 70 ListView->setSorting( 2, FALSE);
69 ListView->addColumn( tr( "Size" ) ); 71 ListView->addColumn( tr( "Size" ) );
70 ListView->setSelectionMode(QListView::Single); 72 ListView->setSelectionMode(QListView::Single);
71 ListView->setAllColumnsShowFocus( TRUE ); 73 ListView->setAllColumnsShowFocus( TRUE );
72 ListView->setColumnWidthMode(0, QListView::Manual); 74 ListView->setColumnWidthMode(0, QListView::Manual);
73 ListView->setColumnWidthMode(1, QListView::Manual); 75 ListView->setColumnWidthMode(1, QListView::Manual);
74 76
75 // signals and slots connections 77 // signals and slots connections
76 connect( buttonShowHidden, SIGNAL( toggled(bool) ), this, SLOT( setHidden(bool) ) ); 78 connect( buttonShowHidden, SIGNAL( toggled(bool) ), this, SLOT( setHidden(bool) ) );
77 connect( buttonOk, SIGNAL( clicked() ), this, SLOT( OnRoot() ) ); 79 connect( buttonOk, SIGNAL( clicked() ), this, SLOT( OnRoot() ) );
78 connect( ListView, SIGNAL(doubleClicked( QListViewItem*)), SLOT(listDoubleClicked(QListViewItem *)) ); 80 connect( ListView, SIGNAL(doubleClicked( QListViewItem*)), SLOT(listDoubleClicked(QListViewItem *)) );
79 connect( ListView, SIGNAL(clicked( QListViewItem*)), SLOT(listClicked(QListViewItem *)) ); 81 connect( ListView, SIGNAL(clicked( QListViewItem*)), SLOT(listClicked(QListViewItem *)) );
80 connect( ListView, SIGNAL(OnOKButton( QListViewItem*)), SLOT(listClicked(QListViewItem *)) ); 82 connect( ListView, SIGNAL(OnOKButton( QListViewItem*)), SLOT(listClicked(QListViewItem *)) );
81 connect( ListView, SIGNAL(OnCentreButton( QListViewItem*)), SLOT(listClicked(QListViewItem *)) ); 83 connect( ListView, SIGNAL(OnCentreButton( QListViewItem*)), SLOT(listClicked(QListViewItem *)) );
82 connect( ListView, SIGNAL(OnCancelButton()), SLOT(OnCancel()) ); 84 connect( ListView, SIGNAL(OnCancelButton()), SLOT(OnCancel()) );
83 85
84 QVBoxLayout* grid = new QVBoxLayout(this); 86 QVBoxLayout* grid = new QVBoxLayout(this);
85 QHBoxLayout* hgrid = new QHBoxLayout(grid); 87 QHBoxLayout* hgrid = new QHBoxLayout(grid);
86 hgrid->addWidget(dirLabel,1); 88 hgrid->addWidget(dirLabel,1);
87 hgrid->addWidget(buttonShowHidden); 89 hgrid->addWidget(buttonShowHidden);
88 hgrid->addWidget(buttonOk); 90 hgrid->addWidget(buttonOk);
89 grid->addWidget(ListView,1); 91 grid->addWidget(ListView,1);
90 if (allownew) 92 if (allownew)
91 { 93 {
92 m_filename = new QLineEdit(this); 94 m_filename = new QLineEdit(this);
93 grid->addWidget(m_filename); 95 grid->addWidget(m_filename);
94 connect( m_filename, SIGNAL( returnPressed() ), this, SLOT( onReturn() )); 96 connect( m_filename, SIGNAL( returnPressed() ), this, SLOT( onReturn() ));
95 } 97 }
96 else 98 else
97 { 99 {
98 m_filename = NULL; 100 m_filename = NULL;
99 } 101 }
100 102
101 if (QFileInfo(iPath).exists()) 103 if (QFileInfo(iPath).exists())
102 { 104 {
103 currentDir.setPath(iPath); 105 currentDir.setPath(iPath);
104#ifdef _WINDOWS 106#ifdef _WINDOWS
105 _chdir(iPath.latin1()); 107 _chdir(iPath.latin1());
106#else 108#else
107 chdir(iPath.latin1()); 109 chdir(iPath.latin1());
108#endif 110#endif
109 } 111 }
110 else 112 else
111 { 113 {
112 currentDir.setPath(QDir::currentDirPath()); 114 currentDir.setPath(QDir::currentDirPath());
113 chdir(QDir::currentDirPath().latin1()); 115 chdir(QDir::currentDirPath().latin1());
114 } 116 }
115 117
116 populateList(); 118 populateList();
117 119
118 if (modal) showMaximized(); 120 if (modal)
121 QPEApplication::showDialog( this );
119} 122}
120 123
121void fileBrowser::resizeEvent(QResizeEvent* e) 124void fileBrowser::resizeEvent(QResizeEvent* e)
122{ 125{
123 ListView->setColumnWidth(1,(ListView->width())/4); 126 ListView->setColumnWidth(1,(ListView->width())/4);
124 ListView->setColumnWidth(0,ListView->width()-20-ListView->columnWidth(1)); 127 ListView->setColumnWidth(0,ListView->width()-20-ListView->columnWidth(1));
125} 128}
126 129
127fileBrowser::~fileBrowser() 130fileBrowser::~fileBrowser()
128{ 131{
129} 132}
130 133
131 134
132void fileBrowser::populateList() 135void fileBrowser::populateList()
133{ 136{
134 ListView->clear(); 137 ListView->clear();
135////qDebug(currentDir.canonicalPath()); 138////qDebug(currentDir.canonicalPath());
136// currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::NoSymLinks ); 139// currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::NoSymLinks );
137 currentDir.setFilter( filterspec ); 140 currentDir.setFilter( filterspec );
138 currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); 141 currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst);
139 currentDir.setMatchAllDirs(TRUE); 142 currentDir.setMatchAllDirs(TRUE);
140 143
141 currentDir.setNameFilter(filterStr); 144 currentDir.setNameFilter(filterStr);
142// currentDir.setNameFilter("*.txt;*.etx"); 145// currentDir.setNameFilter("*.txt;*.etx");
143 QString fileL, fileS; 146 QString fileL, fileS;
144 const QFileInfoList *list = currentDir.entryInfoList(); 147 const QFileInfoList *list = currentDir.entryInfoList();
145 QFileInfoListIterator it(*list); 148 QFileInfoListIterator it(*list);
146 QFileInfo *fi; 149 QFileInfo *fi;
147 while ( (fi=it.current()) ) 150 while ( (fi=it.current()) )
148 { 151 {
149 if (fi->fileName() != ".") 152 if (fi->fileName() != ".")
150 { 153 {
151 fileS.sprintf( "%10li", fi->size() ); 154 fileS.sprintf( "%10li", fi->size() );
152 fileL.sprintf( "%s",fi->fileName().data() ); 155 fileL.sprintf( "%s",fi->fileName().data() );
153 if( fi->isDir() ) 156 if( fi->isDir() )
154 { 157 {
155 fileL+="/"; 158 fileL+="/";
156 } 159 }
157 else 160 else
158 { 161 {
159//// qDebug("Not a dir: "+currentDir.canonicalPath()+fileL); 162//// qDebug("Not a dir: "+currentDir.canonicalPath()+fileL);
160 } 163 }
161 new QListViewItem( ListView,fileL,fileS ); 164 new QListViewItem( ListView,fileL,fileS );
162 } 165 }
163 ++it; 166 ++it;
164 } 167 }
165 ListView->setSorting( 2, FALSE); 168 ListView->setSorting( 2, FALSE);
166 dirLabel->setText("Current Directory:\n"+currentDir.canonicalPath()); 169 dirLabel->setText("Current Directory:\n"+currentDir.canonicalPath());
167 ListView->setFocus(); 170 ListView->setFocus();
168} 171}
169 172
170void fileBrowser::upDir() 173void fileBrowser::upDir()
171{ 174{
172//// qDebug(currentDir.canonicalPath()); 175//// qDebug(currentDir.canonicalPath());
173} 176}
174 177
175void fileBrowser::listClicked(QListViewItem *selectedItem) 178void fileBrowser::listClicked(QListViewItem *selectedItem)
176{ 179{
177 if (selectedItem == NULL) return; 180 if (selectedItem == NULL) return;
178 QString strItem=selectedItem->text(0); 181 QString strItem=selectedItem->text(0);
179 182
180//// qDebug("%s", (const char*)strItem); 183//// qDebug("%s", (const char*)strItem);
181 184
182 185
183 QString strSize=selectedItem->text(1); 186 QString strSize=selectedItem->text(1);
184 187
185 strSize.stripWhiteSpace(); 188 strSize.stripWhiteSpace();
186 189
187 bool ok; 190 bool ok;
188 191
189 QFileInfo fi(strItem); 192 QFileInfo fi(strItem);
190 while (fi.isSymLink()) fi.setFile(fi.readLink()); 193 while (fi.isSymLink()) fi.setFile(fi.readLink());
191 if (fi.isDir()) 194 if (fi.isDir())
192 { 195 {
193 strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); 196 strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem);
194 197
195 if(QDir(strItem).exists()) 198 if(QDir(strItem).exists())
196 { 199 {
197 currentDir.cd(strItem, TRUE); 200 currentDir.cd(strItem, TRUE);
198 populateList(); 201 populateList();
199 } 202 }
200 } else 203 } else
201 { 204 {
202 QListViewItem *selectedItem = ListView->selectedItem(); 205 QListViewItem *selectedItem = ListView->selectedItem();
203 if (selectedItem == NULL) 206 if (selectedItem == NULL)
204 { 207 {
205 filename = ""; 208 filename = "";
206 } 209 }
207 else 210 else
208 { 211 {
209 filename = QDir::cleanDirPath(currentDir.canonicalPath()+"/"+selectedItem->text(0)); 212 filename = QDir::cleanDirPath(currentDir.canonicalPath()+"/"+selectedItem->text(0));
210 } 213 }
211 OnOK(); 214 OnOK();
212 } 215 }
213 chdir(strItem.latin1()); 216 chdir(strItem.latin1());
214// 217//
215 218
216} 219}
217 220
218// you may want to switch these 2 functions. I like single clicks 221// you may want to switch these 2 functions. I like single clicks
219void fileBrowser::listDoubleClicked(QListViewItem *selectedItem) 222void fileBrowser::listDoubleClicked(QListViewItem *selectedItem)
220{ 223{
221} 224}
222 225
223QString fileBrowser::getCurrentFile() 226QString fileBrowser::getCurrentFile()
224{ 227{
225 return filename; 228 return filename;
226} 229}
227 230
228void fileBrowser::OnOK() 231void fileBrowser::OnOK()
229{ 232{
230 accept(); 233 accept();
231} 234}
232 235
233void fileBrowser::OnRoot() 236void fileBrowser::OnRoot()
234{ 237{
235 currentDir.cd("/", TRUE); 238 currentDir.cd("/", TRUE);
236 populateList(); 239 populateList();
237 chdir("/"); 240 chdir("/");
238} 241}
239 242
240void fileBrowser::OnCancel() 243void fileBrowser::OnCancel()
241{ 244{
242 reject(); 245 reject();
243} 246}
244 247
245void fileBrowser::setHidden(bool _hidden) 248void fileBrowser::setHidden(bool _hidden)
246{ 249{
247 if (_hidden) 250 if (_hidden)
248 filterspec = QDir::All | QDir::Hidden; 251 filterspec = QDir::All | QDir::Hidden;
249 else 252 else
250 filterspec = QDir::All; 253 filterspec = QDir::All;
251 populateList(); 254 populateList();
252} 255}
253 256
254void fileBrowser::onReturn() 257void fileBrowser::onReturn()
255{ 258{
256 QListViewItem *selectedItem = ListView->selectedItem(); 259 QListViewItem *selectedItem = ListView->selectedItem();
257 if (selectedItem == NULL) 260 if (selectedItem == NULL)
258 { 261 {
259 filename = m_filename->text(); 262 filename = m_filename->text();
260 } 263 }
261 else 264 else
262 { 265 {
263 filename = QDir::cleanDirPath(currentDir.canonicalPath()+"/"+m_filename->text()); 266 filename = QDir::cleanDirPath(currentDir.canonicalPath()+"/"+m_filename->text());
264 } 267 }
265 OnOK(); 268 OnOK();
266} 269}
diff --git a/noncore/apps/opie-sheet/mainwindow.cpp b/noncore/apps/opie-sheet/mainwindow.cpp
index bd98aca..3d3c688 100644
--- a/noncore/apps/opie-sheet/mainwindow.cpp
+++ b/noncore/apps/opie-sheet/mainwindow.cpp
@@ -1,1008 +1,1011 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * This program is free software; you can redistribute it and/or modify * 3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by * 4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 2 of the License, or * 5 * the Free Software Foundation; either version 2 of the License, or *
6 * (at your option) any later version. * 6 * (at your option) any later version. *
7 * * 7 * *
8 ***************************************************************************/ 8 ***************************************************************************/
9 9
10/* 10/*
11 * Opie Sheet (formerly Sheet/Qt) 11 * Opie Sheet (formerly Sheet/Qt)
12 * by Serdar Ozler <sozler@sitebest.com> 12 * by Serdar Ozler <sozler@sitebest.com>
13 */ 13 */
14 14
15#include "mainwindow.h" 15#include "mainwindow.h"
16 16
17#include <qpe/filemanager.h> 17#include <qpe/filemanager.h>
18#include <qpe/qcopenvelope_qws.h> 18#include <qpe/qcopenvelope_qws.h>
19#include <qpe/resource.h> 19#include <qpe/resource.h>
20#include <qpe/qpeapplication.h>
21
20#include <qmessagebox.h> 22#include <qmessagebox.h>
21#include <qfile.h> 23#include <qfile.h>
22#include <qtranslator.h> 24#include <qtranslator.h>
23#include <qradiobutton.h> 25#include <qradiobutton.h>
26
24#include "cellformat.h" 27#include "cellformat.h"
25#include "numberdlg.h" 28#include "numberdlg.h"
26#include "textdlg.h" 29#include "textdlg.h"
27#include "sortdlg.h" 30#include "sortdlg.h"
28#include "finddlg.h" 31#include "finddlg.h"
29 32
30#define DEFAULT_NUM_ROWS 300 33#define DEFAULT_NUM_ROWS 300
31#define DEFAULT_NUM_COLS (26*3) 34#define DEFAULT_NUM_COLS (26*3)
32#define DEFAULT_NUM_SHEETS 3 35#define DEFAULT_NUM_SHEETS 3
33 36
34MainWindow::MainWindow(QWidget *parent, const char* n, WFlags fl) 37MainWindow::MainWindow(QWidget *parent, const char* n, WFlags fl)
35 :QMainWindow(parent, n, fl) 38 :QMainWindow(parent, n, fl)
36{ 39{
37 // initialize variables 40 // initialize variables
38 documentModified=FALSE; 41 documentModified=FALSE;
39 42
40 // construct objects 43 // construct objects
41 currentDoc=0; 44 currentDoc=0;
42 fileSelector=new FileSelector("application/sheet-qt", this, QString::null); 45 fileSelector=new FileSelector("application/sheet-qt", this, QString::null);
43 ExcelSelector=new FileSelector("application/excel",this,QString::null,FALSE); 46 ExcelSelector=new FileSelector("application/excel",this,QString::null,FALSE);
44 connect(fileSelector, SIGNAL(closeMe()), this, SLOT(selectorHide())); 47 connect(fileSelector, SIGNAL(closeMe()), this, SLOT(selectorHide()));
45 connect(fileSelector, SIGNAL(newSelected(const DocLnk &)), this, SLOT(selectorFileNew(const DocLnk &))); 48 connect(fileSelector, SIGNAL(newSelected(const DocLnk &)), this, SLOT(selectorFileNew(const DocLnk &)));
46 connect(fileSelector, SIGNAL(fileSelected(const DocLnk &)), this, SLOT(selectorFileOpen(const DocLnk &))); 49 connect(fileSelector, SIGNAL(fileSelected(const DocLnk &)), this, SLOT(selectorFileOpen(const DocLnk &)));
47 connect(ExcelSelector,SIGNAL(fileSelected(const DocLnk &)),this,SLOT(slotImportExcel(const DocLnk &))); 50 connect(ExcelSelector,SIGNAL(fileSelected(const DocLnk &)),this,SLOT(slotImportExcel(const DocLnk &)));
48 connect(ExcelSelector,SIGNAL(closeMe()), this, SLOT(ExcelSelectorHide())); 51 connect(ExcelSelector,SIGNAL(closeMe()), this, SLOT(ExcelSelectorHide()));
49 52
50 53
51 listSheets.setAutoDelete(TRUE); 54 listSheets.setAutoDelete(TRUE);
52 55
53 initActions(); 56 initActions();
54 initMenu(); 57 initMenu();
55 initEditToolbar(); 58 initEditToolbar();
56 initFunctionsToolbar(); 59 initFunctionsToolbar();
57 initStandardToolbar(); 60 initStandardToolbar();
58 initSheet(); 61 initSheet();
59 62
60 // set window title 63 // set window title
61 setCaption(tr("Opie Sheet")); 64 setCaption(tr("Opie Sheet"));
62 65
63 // create sheets 66 // create sheets
64 selectorFileNew(DocLnk()); 67 selectorFileNew(DocLnk());
65} 68}
66 69
67MainWindow::~MainWindow() 70MainWindow::~MainWindow()
68{ 71{
69 if (currentDoc) delete currentDoc; 72 if (currentDoc) delete currentDoc;
70} 73}
71 74
72void MainWindow::documentSave(DocLnk *lnkDoc) 75void MainWindow::documentSave(DocLnk *lnkDoc)
73{ 76{
74 FileManager fm; 77 FileManager fm;
75 QByteArray streamBuffer; 78 QByteArray streamBuffer;
76 QDataStream stream(streamBuffer, IO_WriteOnly); 79 QDataStream stream(streamBuffer, IO_WriteOnly);
77 80
78 typeSheet *currentSheet=findSheet(sheet->getName()); 81 typeSheet *currentSheet=findSheet(sheet->getName());
79 if (!currentSheet) 82 if (!currentSheet)
80 { 83 {
81 QMessageBox::critical(this, tr("Error"), tr("Inconsistency error!")); 84 QMessageBox::critical(this, tr("Error"), tr("Inconsistency error!"));
82 return; 85 return;
83 } 86 }
84 sheet->copySheetData(&currentSheet->data); 87 sheet->copySheetData(&currentSheet->data);
85 stream.writeRawBytes("SQT100", 6); 88 stream.writeRawBytes("SQT100", 6);
86 stream << (Q_UINT32)listSheets.count(); 89 stream << (Q_UINT32)listSheets.count();
87 for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next()) 90 for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next())
88 { 91 {
89 stream << tempSheet->name << (Q_UINT32)tempSheet->data.count(); 92 stream << tempSheet->name << (Q_UINT32)tempSheet->data.count();
90 for (typeCellData *tempCell=tempSheet->data.first(); tempCell; tempCell=tempSheet->data.next()) 93 for (typeCellData *tempCell=tempSheet->data.first(); tempCell; tempCell=tempSheet->data.next())
91 stream << (Q_UINT32)tempCell->col << (Q_UINT32)tempCell->row << tempCell->borders.right << tempCell->borders.bottom << tempCell->background << (Q_UINT32)tempCell->alignment << tempCell->fontColor << tempCell->font << tempCell->data; 94 stream << (Q_UINT32)tempCell->col << (Q_UINT32)tempCell->row << tempCell->borders.right << tempCell->borders.bottom << tempCell->background << (Q_UINT32)tempCell->alignment << tempCell->fontColor << tempCell->font << tempCell->data;
92 } 95 }
93 96
94 lnkDoc->setType("application/sheet-qt"); 97 lnkDoc->setType("application/sheet-qt");
95 if (!fm.saveFile(*lnkDoc, streamBuffer)) 98 if (!fm.saveFile(*lnkDoc, streamBuffer))
96 { 99 {
97 QMessageBox::critical(this, tr("Error"), tr("File cannot be saved!")); 100 QMessageBox::critical(this, tr("Error"), tr("File cannot be saved!"));
98 return; 101 return;
99 } 102 }
100 documentModified=FALSE; 103 documentModified=FALSE;
101} 104}
102 105
103void MainWindow::documentOpen(const DocLnk &lnkDoc) 106void MainWindow::documentOpen(const DocLnk &lnkDoc)
104{ 107{
105 FileManager fm; 108 FileManager fm;
106 QByteArray streamBuffer; 109 QByteArray streamBuffer;
107 if (!lnkDoc.isValid() || !fm.loadFile(lnkDoc, streamBuffer)) 110 if (!lnkDoc.isValid() || !fm.loadFile(lnkDoc, streamBuffer))
108 { 111 {
109 QMessageBox::critical(this, tr("Error"), tr("File cannot be opened!")); 112 QMessageBox::critical(this, tr("Error"), tr("File cannot be opened!"));
110 documentModified=FALSE; 113 documentModified=FALSE;
111 selectorFileNew(DocLnk()); 114 selectorFileNew(DocLnk());
112 return; 115 return;
113 } 116 }
114 QDataStream stream(streamBuffer, IO_ReadOnly); 117 QDataStream stream(streamBuffer, IO_ReadOnly);
115 118
116 Q_UINT32 countSheet, countCell, i, j, row, col, alignment; 119 Q_UINT32 countSheet, countCell, i, j, row, col, alignment;
117 typeSheet *newSheet; 120 typeSheet *newSheet;
118 typeCellData *newCell; 121 typeCellData *newCell;
119 122
120 char fileFormat[7]; 123 char fileFormat[7];
121 stream.readRawBytes(fileFormat, 6); 124 stream.readRawBytes(fileFormat, 6);
122 fileFormat[6]=0; 125 fileFormat[6]=0;
123 if ((QString)fileFormat!="SQT100") 126 if ((QString)fileFormat!="SQT100")
124 { 127 {
125 QMessageBox::critical(this, tr("Error"), tr("Invalid file format!")); 128 QMessageBox::critical(this, tr("Error"), tr("Invalid file format!"));
126 documentModified=FALSE; 129 documentModified=FALSE;
127 selectorFileNew(DocLnk()); 130 selectorFileNew(DocLnk());
128 return; 131 return;
129 } 132 }
130 133
131 stream >> countSheet; 134 stream >> countSheet;
132 for (i=0; i<countSheet; ++i) 135 for (i=0; i<countSheet; ++i)
133 { 136 {
134 newSheet=new typeSheet; 137 newSheet=new typeSheet;
135 newSheet->data.setAutoDelete(TRUE); 138 newSheet->data.setAutoDelete(TRUE);
136 stream >> newSheet->name >> countCell; 139 stream >> newSheet->name >> countCell;
137 comboSheets->insertItem(newSheet->name); 140 comboSheets->insertItem(newSheet->name);
138 141
139 for (j=0; j<countCell; ++j) 142 for (j=0; j<countCell; ++j)
140 { 143 {
141 newCell=new typeCellData; 144 newCell=new typeCellData;
142 stream >> col >> row >> newCell->borders.right >> newCell->borders.bottom >> newCell->background >> alignment >> newCell->fontColor >> newCell->font >> newCell->data; 145 stream >> col >> row >> newCell->borders.right >> newCell->borders.bottom >> newCell->background >> alignment >> newCell->fontColor >> newCell->font >> newCell->data;
143 newCell->col=col; 146 newCell->col=col;
144 newCell->row=row; 147 newCell->row=row;
145 newCell->alignment=(Qt::AlignmentFlags)alignment; 148 newCell->alignment=(Qt::AlignmentFlags)alignment;
146 newSheet->data.append(newCell); 149 newSheet->data.append(newCell);
147 } 150 }
148 listSheets.append(newSheet); 151 listSheets.append(newSheet);
149 152
150 if (i==0) 153 if (i==0)
151 { 154 {
152 sheet->setName(newSheet->name); 155 sheet->setName(newSheet->name);
153 sheet->setSheetData(&newSheet->data); 156 sheet->setSheetData(&newSheet->data);
154 } 157 }
155 } 158 }
156} 159}
157 160
158int MainWindow::saveCurrentFile(bool ask) 161int MainWindow::saveCurrentFile(bool ask)
159{ 162{
160 if (ask) 163 if (ask)
161 { 164 {
162 int result=QMessageBox::information(this, tr("Save File"), tr("Do you want to save the current file?"), QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel); 165 int result=QMessageBox::information(this, tr("Save File"), tr("Do you want to save the current file?"), QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel);
163 if (result!=QMessageBox::Yes) return result; 166 if (result!=QMessageBox::Yes) return result;
164 } 167 }
165 168
166 if (!currentDoc->isValid()) 169 if (!currentDoc->isValid())
167 { 170 {
168 TextDialog dialogText(this); 171 TextDialog dialogText(this);
169 if (dialogText.exec(tr("Save File"), tr("&File Name:"), tr("UnnamedFile"))!=QDialog::Accepted || dialogText.getValue().isEmpty()) return QMessageBox::Cancel; 172 if (dialogText.exec(tr("Save File"), tr("&File Name:"), tr("UnnamedFile"))!=QDialog::Accepted || dialogText.getValue().isEmpty()) return QMessageBox::Cancel;
170 173
171 currentDoc->setName(dialogText.getValue()); 174 currentDoc->setName(dialogText.getValue());
172 currentDoc->setFile(QString::null); 175 currentDoc->setFile(QString::null);
173 currentDoc->setLinkFile(QString::null); 176 currentDoc->setLinkFile(QString::null);
174 } 177 }
175 178
176 documentSave(currentDoc); 179 documentSave(currentDoc);
177 return QMessageBox::Yes; 180 return QMessageBox::Yes;
178} 181}
179 182
180void MainWindow::selectorFileNew(const DocLnk &lnkDoc) 183void MainWindow::selectorFileNew(const DocLnk &lnkDoc)
181{ 184{
182 selectorHide(); 185 selectorHide();
183 186
184 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; 187 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return;
185 if (currentDoc) delete currentDoc; 188 if (currentDoc) delete currentDoc;
186 currentDoc = new DocLnk(lnkDoc); 189 currentDoc = new DocLnk(lnkDoc);
187 editData->clear(); 190 editData->clear();
188 listSheets.clear(); 191 listSheets.clear();
189 comboSheets->clear(); 192 comboSheets->clear();
190 193
191 typeSheet *newSheet=createNewSheet(); 194 typeSheet *newSheet=createNewSheet();
192 newSheet->data.setAutoDelete(TRUE); 195 newSheet->data.setAutoDelete(TRUE);
193 sheet->setName(newSheet->name); 196 sheet->setName(newSheet->name);
194 sheet->setSheetData(&newSheet->data); 197 sheet->setSheetData(&newSheet->data);
195 for (int i=1; i<DEFAULT_NUM_SHEETS; ++i) 198 for (int i=1; i<DEFAULT_NUM_SHEETS; ++i)
196 createNewSheet(); 199 createNewSheet();
197 documentModified=FALSE; 200 documentModified=FALSE;
198} 201}
199 202
200void MainWindow::closeEvent(QCloseEvent *e) 203void MainWindow::closeEvent(QCloseEvent *e)
201{ 204{
202 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) e->ignore(); 205 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) e->ignore();
203 else e->accept(); 206 else e->accept();
204} 207}
205 208
206void MainWindow::selectorFileOpen(const DocLnk &lnkDoc) 209void MainWindow::selectorFileOpen(const DocLnk &lnkDoc)
207{ 210{
208 selectorHide(); 211 selectorHide();
209 212
210 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; 213 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return;
211 if (currentDoc) delete currentDoc; 214 if (currentDoc) delete currentDoc;
212 currentDoc = new DocLnk(); 215 currentDoc = new DocLnk();
213 listSheets.clear(); 216 listSheets.clear();
214 comboSheets->clear(); 217 comboSheets->clear();
215 218
216 documentOpen(lnkDoc); 219 documentOpen(lnkDoc);
217 documentModified=FALSE; 220 documentModified=FALSE;
218} 221}
219 222
220void MainWindow::selectorShow() 223void MainWindow::selectorShow()
221{ 224{
222 sheet->hide(); 225 sheet->hide();
223 setCentralWidget(fileSelector); 226 setCentralWidget(fileSelector);
224 fileSelector->show(); 227 fileSelector->show();
225 fileSelector->reread(); 228 fileSelector->reread();
226} 229}
227 230
228void MainWindow::selectorHide() 231void MainWindow::selectorHide()
229{ 232{
230 fileSelector->hide(); 233 fileSelector->hide();
231 setCentralWidget(sheet); 234 setCentralWidget(sheet);
232 sheet->show(); 235 sheet->show();
233} 236}
234 237
235void MainWindow::slotFileNew() 238void MainWindow::slotFileNew()
236{ 239{
237 selectorFileNew(DocLnk()); 240 selectorFileNew(DocLnk());
238} 241}
239 242
240void MainWindow::slotFileOpen() 243void MainWindow::slotFileOpen()
241{ 244{
242 selectorShow(); 245 selectorShow();
243} 246}
244 247
245void MainWindow::slotImportExcelOpen() 248void MainWindow::slotImportExcelOpen()
246{ 249{
247 sheet->hide(); 250 sheet->hide();
248 setCentralWidget(ExcelSelector); 251 setCentralWidget(ExcelSelector);
249 ExcelSelector->show(); 252 ExcelSelector->show();
250 ExcelSelector->reread(); 253 ExcelSelector->reread();
251} 254}
252 255
253void MainWindow::ExcelSelectorHide() 256void MainWindow::ExcelSelectorHide()
254{ 257{
255 ExcelSelector->hide(); 258 ExcelSelector->hide();
256 setCentralWidget(sheet); 259 setCentralWidget(sheet);
257 sheet->show(); 260 sheet->show();
258} 261}
259 262
260void MainWindow::slotFileSave() 263void MainWindow::slotFileSave()
261{ 264{
262 saveCurrentFile(FALSE); 265 saveCurrentFile(FALSE);
263} 266}
264 267
265void MainWindow::setDocument(const QString &applnk_filename) 268void MainWindow::setDocument(const QString &applnk_filename)
266{ 269{
267 selectorFileOpen(DocLnk(applnk_filename)); 270 selectorFileOpen(DocLnk(applnk_filename));
268} 271}
269 272
270void MainWindow::initActions() 273void MainWindow::initActions()
271{ 274{
272 fileNew=new QAction(tr("New File"), Resource::loadPixmap( "new" ), tr("&New"), 0, this); 275 fileNew=new QAction(tr("New File"), Resource::loadPixmap( "new" ), tr("&New"), 0, this);
273 connect(fileNew, SIGNAL(activated()), this, SLOT(slotFileNew())); 276 connect(fileNew, SIGNAL(activated()), this, SLOT(slotFileNew()));
274 fileOpen=new QAction(tr("Open File"), Resource::loadPixmap( "fileopen" ), tr("&Open"), 0, this); 277 fileOpen=new QAction(tr("Open File"), Resource::loadPixmap( "fileopen" ), tr("&Open"), 0, this);
275 connect(fileOpen, SIGNAL(activated()), this, SLOT(slotFileOpen())); 278 connect(fileOpen, SIGNAL(activated()), this, SLOT(slotFileOpen()));
276 fileSave=new QAction(tr("Save File"),Resource::loadPixmap( "save" ), tr("&Save"), 0, this); 279 fileSave=new QAction(tr("Save File"),Resource::loadPixmap( "save" ), tr("&Save"), 0, this);
277 connect(fileSave, SIGNAL(activated()), this, SLOT(slotFileSave())); 280 connect(fileSave, SIGNAL(activated()), this, SLOT(slotFileSave()));
278 fileSaveAs=new QAction(tr("Save File As"), Resource::loadPixmap( "save" ), tr("Save &As"), 0, this); 281 fileSaveAs=new QAction(tr("Save File As"), Resource::loadPixmap( "save" ), tr("Save &As"), 0, this);
279 connect(fileSaveAs, SIGNAL(activated()), this, SLOT(slotFileSaveAs())); 282 connect(fileSaveAs, SIGNAL(activated()), this, SLOT(slotFileSaveAs()));
280 283
281 //fileQuit=new QAction(tr("Quit"), tr("&Quit"), 0, this); 284 //fileQuit=new QAction(tr("Quit"), tr("&Quit"), 0, this);
282 //connect(fileQuit, SIGNAL(activated()), this, SLOT(close())); 285 //connect(fileQuit, SIGNAL(activated()), this, SLOT(close()));
283 fileExcelImport=new QAction(tr("Import Excel file"),Resource::loadPixmap( "opie-sheet/excel16" ),tr("Import E&xcel file"),0,this); 286 fileExcelImport=new QAction(tr("Import Excel file"),Resource::loadPixmap( "opie-sheet/excel16" ),tr("Import E&xcel file"),0,this);
284 connect(fileExcelImport, SIGNAL(activated()), this, SLOT(slotImportExcelOpen())); 287 connect(fileExcelImport, SIGNAL(activated()), this, SLOT(slotImportExcelOpen()));
285 288
286 // helpGeneral=new QAction(tr("General Help"), QPixmap(help_general_xpm), tr("&General"), 0, this); 289 // helpGeneral=new QAction(tr("General Help"), QPixmap(help_general_xpm), tr("&General"), 0, this);
287 //connect(helpGeneral, SIGNAL(activated()), this, SLOT(slotHelpGeneral())); 290 //connect(helpGeneral, SIGNAL(activated()), this, SLOT(slotHelpGeneral()));
288 //helpAbout=new QAction(tr("About Opie Sheet"), tr("&About"), 0, this); 291 //helpAbout=new QAction(tr("About Opie Sheet"), tr("&About"), 0, this);
289 //connect(helpAbout, SIGNAL(activated()), this, SLOT(slotHelpAbout())); 292 //connect(helpAbout, SIGNAL(activated()), this, SLOT(slotHelpAbout()));
290 293
291 editAccept=new QAction(tr("Accept"),Resource::loadPixmap( "enter" ) , tr("&Accept"), 0, this); 294 editAccept=new QAction(tr("Accept"),Resource::loadPixmap( "enter" ) , tr("&Accept"), 0, this);
292 connect(editAccept, SIGNAL(activated()), this, SLOT(slotEditAccept())); 295 connect(editAccept, SIGNAL(activated()), this, SLOT(slotEditAccept()));
293 editCancel=new QAction(tr("Cancel"), Resource::loadPixmap( "close" ), tr("&Cancel"), 0, this); 296 editCancel=new QAction(tr("Cancel"), Resource::loadPixmap( "close" ), tr("&Cancel"), 0, this);
294 connect(editCancel, SIGNAL(activated()), this, SLOT(slotEditCancel())); 297 connect(editCancel, SIGNAL(activated()), this, SLOT(slotEditCancel()));
295 editCellSelect=new QAction(tr("Cell Selector"), Resource::loadPixmap( "opie-sheet/cell-select" ), tr("Cell &Selector"), 0, this); 298 editCellSelect=new QAction(tr("Cell Selector"), Resource::loadPixmap( "opie-sheet/cell-select" ), tr("Cell &Selector"), 0, this);
296 editCellSelect->setToggleAction(TRUE); 299 editCellSelect->setToggleAction(TRUE);
297 connect(editCellSelect, SIGNAL(toggled(bool)), this, SLOT(slotCellSelect(bool))); 300 connect(editCellSelect, SIGNAL(toggled(bool)), this, SLOT(slotCellSelect(bool)));
298 editCut=new QAction(tr("Cut Cells"), tr("Cu&t"), 0, this); 301 editCut=new QAction(tr("Cut Cells"), tr("Cu&t"), 0, this);
299 editCopy=new QAction(tr("Copy Cells"), tr("&Copy"), 0, this); 302 editCopy=new QAction(tr("Copy Cells"), tr("&Copy"), 0, this);
300 editPaste=new QAction(tr("Paste Cells"), tr("&Paste"), 0, this); 303 editPaste=new QAction(tr("Paste Cells"), tr("&Paste"), 0, this);
301 connect(editPaste, SIGNAL(activated()), this, SLOT(slotEditPaste())); 304 connect(editPaste, SIGNAL(activated()), this, SLOT(slotEditPaste()));
302 editPasteContents=new QAction(tr("Paste Contents"), tr("Paste Cont&ents"), 0, this); 305 editPasteContents=new QAction(tr("Paste Contents"), tr("Paste Cont&ents"), 0, this);
303 connect(editPasteContents, SIGNAL(activated()), this, SLOT(slotEditPasteContents())); 306 connect(editPasteContents, SIGNAL(activated()), this, SLOT(slotEditPasteContents()));
304 editClear=new QAction(tr("Clear Cells"), tr("C&lear"), 0, this); 307 editClear=new QAction(tr("Clear Cells"), tr("C&lear"), 0, this);
305 308
306 insertCells=new QAction(tr("Insert Cells"), tr("C&ells"), 0, this); 309 insertCells=new QAction(tr("Insert Cells"), tr("C&ells"), 0, this);
307 connect(insertCells, SIGNAL(activated()), this, SLOT(slotInsertCells())); 310 connect(insertCells, SIGNAL(activated()), this, SLOT(slotInsertCells()));
308 insertRows=new QAction(tr("Insert Rows"), tr("&Rows"), 0, this); 311 insertRows=new QAction(tr("Insert Rows"), tr("&Rows"), 0, this);
309 connect(insertRows, SIGNAL(activated()), this, SLOT(slotInsertRows())); 312 connect(insertRows, SIGNAL(activated()), this, SLOT(slotInsertRows()));
310 insertCols=new QAction(tr("Insert Columns"), tr("&Columns"), 0, this); 313 insertCols=new QAction(tr("Insert Columns"), tr("&Columns"), 0, this);
311 connect(insertCols, SIGNAL(activated()), this, SLOT(slotInsertCols())); 314 connect(insertCols, SIGNAL(activated()), this, SLOT(slotInsertCols()));
312 insertSheets=new QAction(tr("Add Sheets"), tr("&Sheets"), 0, this); 315 insertSheets=new QAction(tr("Add Sheets"), tr("&Sheets"), 0, this);
313 connect(insertSheets, SIGNAL(activated()), this, SLOT(slotInsertSheets())); 316 connect(insertSheets, SIGNAL(activated()), this, SLOT(slotInsertSheets()));
314 317
315 formatCells=new QAction(tr("Cells"), tr("&Cells"), 0, this); 318 formatCells=new QAction(tr("Cells"), tr("&Cells"), 0, this);
316 connect(formatCells, SIGNAL(activated()), this, SLOT(slotFormatCells())); 319 connect(formatCells, SIGNAL(activated()), this, SLOT(slotFormatCells()));
317 320
318 rowHeight=new QAction(tr("Row Height"), tr("H&eight"), 0, this); 321 rowHeight=new QAction(tr("Row Height"), tr("H&eight"), 0, this);
319 connect(rowHeight, SIGNAL(activated()), this, SLOT(slotRowHeight())); 322 connect(rowHeight, SIGNAL(activated()), this, SLOT(slotRowHeight()));
320 rowAdjust=new QAction(tr("Adjust Row"), tr("&Adjust"), 0, this); 323 rowAdjust=new QAction(tr("Adjust Row"), tr("&Adjust"), 0, this);
321 connect(rowAdjust, SIGNAL(activated()), this, SLOT(slotRowAdjust())); 324 connect(rowAdjust, SIGNAL(activated()), this, SLOT(slotRowAdjust()));
322 rowShow=new QAction(tr("Show Row"), tr("&Show"), 0, this); 325 rowShow=new QAction(tr("Show Row"), tr("&Show"), 0, this);
323 connect(rowShow, SIGNAL(activated()), this, SLOT(slotRowShow())); 326 connect(rowShow, SIGNAL(activated()), this, SLOT(slotRowShow()));
324 rowHide=new QAction(tr("Hide Row"), tr("&Hide"), 0, this); 327 rowHide=new QAction(tr("Hide Row"), tr("&Hide"), 0, this);
325 connect(rowHide, SIGNAL(activated()), this, SLOT(slotRowHide())); 328 connect(rowHide, SIGNAL(activated()), this, SLOT(slotRowHide()));
326 329
327 colWidth=new QAction(tr("Column Width"), tr("&Width"), 0, this); 330 colWidth=new QAction(tr("Column Width"), tr("&Width"), 0, this);
328 connect(colWidth, SIGNAL(activated()), this, SLOT(slotColumnWidth())); 331 connect(colWidth, SIGNAL(activated()), this, SLOT(slotColumnWidth()));
329 colAdjust=new QAction(tr("Adjust Column"), tr("&Adjust"), 0, this); 332 colAdjust=new QAction(tr("Adjust Column"), tr("&Adjust"), 0, this);
330 connect(colAdjust, SIGNAL(activated()), this, SLOT(slotColumnAdjust())); 333 connect(colAdjust, SIGNAL(activated()), this, SLOT(slotColumnAdjust()));
331 colShow=new QAction(tr("Show Column"), tr("&Show"), 0, this); 334 colShow=new QAction(tr("Show Column"), tr("&Show"), 0, this);
332 connect(colShow, SIGNAL(activated()), this, SLOT(slotColumnShow())); 335 connect(colShow, SIGNAL(activated()), this, SLOT(slotColumnShow()));
333 colHide=new QAction(tr("Hide Column"), tr("&Hide"), 0, this); 336 colHide=new QAction(tr("Hide Column"), tr("&Hide"), 0, this);
334 connect(colHide, SIGNAL(activated()), this, SLOT(slotColumnHide())); 337 connect(colHide, SIGNAL(activated()), this, SLOT(slotColumnHide()));
335 338
336 sheetRename=new QAction(tr("Rename Sheet"), tr("&Rename"), 0, this); 339 sheetRename=new QAction(tr("Rename Sheet"), tr("&Rename"), 0, this);
337 connect(sheetRename, SIGNAL(activated()), this, SLOT(slotSheetRename())); 340 connect(sheetRename, SIGNAL(activated()), this, SLOT(slotSheetRename()));
338 sheetRemove=new QAction(tr("Remove Sheet"), tr("R&emove"), 0, this); 341 sheetRemove=new QAction(tr("Remove Sheet"), tr("R&emove"), 0, this);
339 connect(sheetRemove, SIGNAL(activated()), this, SLOT(slotSheetRemove())); 342 connect(sheetRemove, SIGNAL(activated()), this, SLOT(slotSheetRemove()));
340 343
341 dataSort=new QAction(tr("Sort Data"), tr("&Sort"), 0, this); 344 dataSort=new QAction(tr("Sort Data"), tr("&Sort"), 0, this);
342 connect(dataSort, SIGNAL(activated()), this, SLOT(slotDataSort())); 345 connect(dataSort, SIGNAL(activated()), this, SLOT(slotDataSort()));
343 dataFindReplace=new QAction(tr("Find && Replace"), tr("&Find && Replace"), 0, this); 346 dataFindReplace=new QAction(tr("Find && Replace"), tr("&Find && Replace"), 0, this);
344 connect(dataFindReplace, SIGNAL(activated()), this, SLOT(slotDataFindReplace())); 347 connect(dataFindReplace, SIGNAL(activated()), this, SLOT(slotDataFindReplace()));
345 348
346 funcEqual=new QAction(tr("Equal To"), Resource::loadPixmap( "opie-sheet/func-equal" ), tr("&Equal To"), 0, this); 349 funcEqual=new QAction(tr("Equal To"), Resource::loadPixmap( "opie-sheet/func-equal" ), tr("&Equal To"), 0, this);
347 funcEqual->setToolTip("="); 350 funcEqual->setToolTip("=");
348 connect(funcEqual, SIGNAL(activated()), this, SLOT(slotFuncOutput())); 351 connect(funcEqual, SIGNAL(activated()), this, SLOT(slotFuncOutput()));
349 funcPlus=new QAction(tr("Addition"), Resource::loadPixmap( "opie-sheet/func-plus" ), tr("&Addition"), 0, this); 352 funcPlus=new QAction(tr("Addition"), Resource::loadPixmap( "opie-sheet/func-plus" ), tr("&Addition"), 0, this);
350 funcPlus->setToolTip("+"); 353 funcPlus->setToolTip("+");
351 connect(funcPlus, SIGNAL(activated()), this, SLOT(slotFuncOutput())); 354 connect(funcPlus, SIGNAL(activated()), this, SLOT(slotFuncOutput()));
352 funcMinus=new QAction(tr("Subtraction"), Resource::loadPixmap( "opie-sheet/func-minus" ), tr("&Subtraction"), 0, this); 355 funcMinus=new QAction(tr("Subtraction"), Resource::loadPixmap( "opie-sheet/func-minus" ), tr("&Subtraction"), 0, this);
353 funcMinus->setToolTip("-"); 356 funcMinus->setToolTip("-");
354 connect(funcMinus, SIGNAL(activated()), this, SLOT(slotFuncOutput())); 357 connect(funcMinus, SIGNAL(activated()), this, SLOT(slotFuncOutput()));
355 funcCross=new QAction(tr("Multiplication"), Resource::loadPixmap ("opie-sheet/func-cross" ), tr("&Multiplication"), 0, this); 358 funcCross=new QAction(tr("Multiplication"), Resource::loadPixmap ("opie-sheet/func-cross" ), tr("&Multiplication"), 0, this);
356 funcCross->setToolTip("*"); 359 funcCross->setToolTip("*");
357 connect(funcCross, SIGNAL(activated()), this, SLOT(slotFuncOutput())); 360 connect(funcCross, SIGNAL(activated()), this, SLOT(slotFuncOutput()));
358 funcDivide=new QAction(tr("Division"), Resource::loadPixmap( "opie-sheet/func-divide" ), tr("&Division"), 0, this); 361 funcDivide=new QAction(tr("Division"), Resource::loadPixmap( "opie-sheet/func-divide" ), tr("&Division"), 0, this);
359 funcDivide->setToolTip("/"); 362 funcDivide->setToolTip("/");
360 connect(funcDivide, SIGNAL(activated()), this, SLOT(slotFuncOutput())); 363 connect(funcDivide, SIGNAL(activated()), this, SLOT(slotFuncOutput()));
361 funcParanOpen=new QAction(tr("Open ParanthesistempCellData->row+row1, tempCellData->col+col1"), Resource::loadPixmap( "opie-sheet/func-paran-open" ), tr("&Open Paranthesis"), 0, this); 364 funcParanOpen=new QAction(tr("Open ParanthesistempCellData->row+row1, tempCellData->col+col1"), Resource::loadPixmap( "opie-sheet/func-paran-open" ), tr("&Open Paranthesis"), 0, this);
362 funcParanOpen->setToolTip("("); 365 funcParanOpen->setToolTip("(");
363 connect(funcParanOpen, SIGNAL(activated()), this, SLOT(slotFuncOutput())); 366 connect(funcParanOpen, SIGNAL(activated()), this, SLOT(slotFuncOutput()));
364 funcParanClose=new QAction(tr("Close Paranthesis"), Resource::loadPixmap( "opie-sheet/func-paran-close" ), tr("&Close Paranthesis"), 0, this); 367 funcParanClose=new QAction(tr("Close Paranthesis"), Resource::loadPixmap( "opie-sheet/func-paran-close" ), tr("&Close Paranthesis"), 0, this);
365 funcParanClose->setToolTip(")"); 368 funcParanClose->setToolTip(")");
366 connect(funcParanClose, SIGNAL(activated()), this, SLOT(slotFuncOutput())); 369 connect(funcParanClose, SIGNAL(activated()), this, SLOT(slotFuncOutput()));
367 funcComma=new QAction(tr("Comma"), Resource::loadPixmap( "opie-sheet/func-comma" ), tr("&Comma"), 0, this); 370 funcComma=new QAction(tr("Comma"), Resource::loadPixmap( "opie-sheet/func-comma" ), tr("&Comma"), 0, this);
368 funcComma->setToolTip(","); 371 funcComma->setToolTip(",");
369 connect(funcComma, SIGNAL(activated()), this, SLOT(slotFuncOutput())); 372 connect(funcComma, SIGNAL(activated()), this, SLOT(slotFuncOutput()));
370} 373}
371 374
372void MainWindow::initMenu() 375void MainWindow::initMenu()
373{ 376{
374 menu=new QMenuBar(this); 377 menu=new QMenuBar(this);
375 378
376 menuFile=new QPopupMenu; 379 menuFile=new QPopupMenu;
377 fileNew->addTo(menuFile); 380 fileNew->addTo(menuFile);
378 fileOpen->addTo(menuFile); 381 fileOpen->addTo(menuFile);
379 fileSave->addTo(menuFile); 382 fileSave->addTo(menuFile);
380 fileSaveAs->addTo(menuFile); 383 fileSaveAs->addTo(menuFile);
381// menuFile->insertSeparator(); 384// menuFile->insertSeparator();
382// fileQuit->addTo(menuFile); 385// fileQuit->addTo(menuFile);
383 menuFile->insertSeparator(); 386 menuFile->insertSeparator();
384 fileExcelImport->addTo(menuFile); 387 fileExcelImport->addTo(menuFile);
385 menu->insertItem(tr("&File"), menuFile); 388 menu->insertItem(tr("&File"), menuFile);
386 389
387 menuEdit=new QPopupMenu; 390 menuEdit=new QPopupMenu;
388 editAccept->addTo(menuEdit); 391 editAccept->addTo(menuEdit);
389 editCancel->addTo(menuEdit); 392 editCancel->addTo(menuEdit);
390 editCellSelect->addTo(menuEdit); 393 editCellSelect->addTo(menuEdit);
391 menuEdit->insertSeparator(); 394 menuEdit->insertSeparator();
392 editCut->addTo(menuEdit); 395 editCut->addTo(menuEdit);
393 editCopy->addTo(menuEdit); 396 editCopy->addTo(menuEdit);
394 editPaste->addTo(menuEdit); 397 editPaste->addTo(menuEdit);
395 editPasteContents->addTo(menuEdit); 398 editPasteContents->addTo(menuEdit);
396 editClear->addTo(menuEdit); 399 editClear->addTo(menuEdit);
397 menu->insertItem(tr("&Edit"), menuEdit); 400 menu->insertItem(tr("&Edit"), menuEdit);
398 401
399 menuInsert=new QPopupMenu; 402 menuInsert=new QPopupMenu;
400 menu->insertItem(tr("&Insert"), menuInsert); 403 menu->insertItem(tr("&Insert"), menuInsert);
401 404
402 menuFormat=new QPopupMenu; 405 menuFormat=new QPopupMenu;
403 formatCells->addTo(menuFormat); 406 formatCells->addTo(menuFormat);
404 menu->insertItem(tr("&Format"), menuFormat); 407 menu->insertItem(tr("&Format"), menuFormat);
405 408
406 menuData=new QPopupMenu; 409 menuData=new QPopupMenu;
407 dataSort->addTo(menuData); 410 dataSort->addTo(menuData);
408 dataFindReplace->addTo(menuData); 411 dataFindReplace->addTo(menuData);
409 menu->insertItem(tr("&Data"), menuData); 412 menu->insertItem(tr("&Data"), menuData);
410 413
411// menuHelp=new QPopupMenu; 414// menuHelp=new QPopupMenu;
412// helpGeneral->addTo(menuHelp); 415// helpGeneral->addTo(menuHelp);
413// helpAbout->addTo(menuHelp); 416// helpAbout->addTo(menuHelp);
414// menu->insertItem(tr("&Help"), menuHelp); 417// menu->insertItem(tr("&Help"), menuHelp);
415 418
416 submenuRow=new QPopupMenu; 419 submenuRow=new QPopupMenu;
417 rowHeight->addTo(submenuRow); 420 rowHeight->addTo(submenuRow);
418 rowAdjust->addTo(submenuRow); 421 rowAdjust->addTo(submenuRow);
419 rowShow->addTo(submenuRow); 422 rowShow->addTo(submenuRow);
420 rowHide->addTo(submenuRow); 423 rowHide->addTo(submenuRow);
421 menuFormat->insertItem(tr("&Row"), submenuRow); 424 menuFormat->insertItem(tr("&Row"), submenuRow);
422 425
423 submenuCol=new QPopupMenu; 426 submenuCol=new QPopupMenu;
424 colWidth->addTo(submenuCol); 427 colWidth->addTo(submenuCol);
425 colAdjust->addTo(submenuCol); 428 colAdjust->addTo(submenuCol);
426 colShow->addTo(submenuCol); 429 colShow->addTo(submenuCol);
427 colHide->addTo(submenuCol); 430 colHide->addTo(submenuCol);
428 menuFormat->insertItem(tr("Colum&n"), submenuCol); 431 menuFormat->insertItem(tr("Colum&n"), submenuCol);
429 432
430 submenuSheet=new QPopupMenu; 433 submenuSheet=new QPopupMenu;
431 sheetRename->addTo(submenuSheet); 434 sheetRename->addTo(submenuSheet);
432 sheetRemove->addTo(submenuSheet); 435 sheetRemove->addTo(submenuSheet);
433 menuFormat->insertItem(tr("&Sheet"), submenuSheet); 436 menuFormat->insertItem(tr("&Sheet"), submenuSheet);
434 437
435 submenuFunc=new QPopupMenu; 438 submenuFunc=new QPopupMenu;
436 menuInsert->insertItem(tr("&Function"), submenuFunc); 439 menuInsert->insertItem(tr("&Function"), submenuFunc);
437 440
438 submenuFuncStd=new QPopupMenu; 441 submenuFuncStd=new QPopupMenu;
439 funcPlus->addTo(submenuFuncStd); 442 funcPlus->addTo(submenuFuncStd);
440 funcMinus->addTo(submenuFuncStd); 443 funcMinus->addTo(submenuFuncStd);
441 funcCross->addTo(submenuFuncStd); 444 funcCross->addTo(submenuFuncStd);
442 funcDivide->addTo(submenuFuncStd); 445 funcDivide->addTo(submenuFuncStd);
443 submenuFunc->insertItem(tr("&Simple"), submenuFuncStd); 446 submenuFunc->insertItem(tr("&Simple"), submenuFuncStd);
444 447
445 448
446 449
447 submenuFuncStandard=new QPopupMenu; 450 submenuFuncStandard=new QPopupMenu;
448 addFlyAction(tr("ABS(x)"), tr("ABS(x)"), "ABS(", submenuFuncStandard); 451 addFlyAction(tr("ABS(x)"), tr("ABS(x)"), "ABS(", submenuFuncStandard);
449 addFlyAction(tr("CEILING(x,acc)"), tr("CEILING(x,acc)"), "CEILING(", submenuFuncStandard); 452 addFlyAction(tr("CEILING(x,acc)"), tr("CEILING(x,acc)"), "CEILING(", submenuFuncStandard);
450 addFlyAction(tr("FACT(x)"), tr("FACT(x)"), "FACT(", submenuFuncStandard); 453 addFlyAction(tr("FACT(x)"), tr("FACT(x)"), "FACT(", submenuFuncStandard);
451 addFlyAction(tr("FLOOR(x,acc)"), tr("FLOOR(x,acc)"), "FLOOR(", submenuFuncStandard); 454 addFlyAction(tr("FLOOR(x,acc)"), tr("FLOOR(x,acc)"), "FLOOR(", submenuFuncStandard);
452 addFlyAction(tr("INT(x)"), tr("INT(x)"), "INT(", submenuFuncStandard); 455 addFlyAction(tr("INT(x)"), tr("INT(x)"), "INT(", submenuFuncStandard);
453 addFlyAction(tr("MOD(x,y)"), tr("MOD(x,y)"), "MOD(", submenuFuncStandard); 456 addFlyAction(tr("MOD(x,y)"), tr("MOD(x,y)"), "MOD(", submenuFuncStandard);
454 addFlyAction(tr("ROUND(x,digits)"), tr("ROUND(x,digits)"), "ROUND(", submenuFuncStandard); 457 addFlyAction(tr("ROUND(x,digits)"), tr("ROUND(x,digits)"), "ROUND(", submenuFuncStandard);
455 addFlyAction(tr("SIGN(x)"), tr("SIGN(x)"), "SIGN(", submenuFuncStandard); 458 addFlyAction(tr("SIGN(x)"), tr("SIGN(x)"), "SIGN(", submenuFuncStandard);
456 submenuFuncStandard->insertSeparator(); 459 submenuFuncStandard->insertSeparator();
457 addFlyAction(tr("EXP(x)"), tr("EXP(x)"), "EXP(", submenuFuncStandard); 460 addFlyAction(tr("EXP(x)"), tr("EXP(x)"), "EXP(", submenuFuncStandard);
458 addFlyAction(tr("LN(x)"), tr("LN(x)"), "LN(", submenuFuncStandard); 461 addFlyAction(tr("LN(x)"), tr("LN(x)"), "LN(", submenuFuncStandard);
459 addFlyAction(tr("LOG(x,b)"), tr("LOG(x,b)"), "LOG(", submenuFuncStandard); 462 addFlyAction(tr("LOG(x,b)"), tr("LOG(x,b)"), "LOG(", submenuFuncStandard);
460 addFlyAction(tr("LOG10(x)"), tr("LOG10(x)"), "LOG10(", submenuFuncStandard); 463 addFlyAction(tr("LOG10(x)"), tr("LOG10(x)"), "LOG10(", submenuFuncStandard);
461 addFlyAction(tr("POWER(x,y)"), tr("POWER(x,y)"), "POWER(", submenuFuncStandard); 464 addFlyAction(tr("POWER(x,y)"), tr("POWER(x,y)"), "POWER(", submenuFuncStandard);
462 addFlyAction(tr("SQRT(x)"), tr("SQRT(x)"), "SQRT(", submenuFuncStandard); 465 addFlyAction(tr("SQRT(x)"), tr("SQRT(x)"), "SQRT(", submenuFuncStandard);
463 submenuFuncStandard->insertSeparator(); 466 submenuFuncStandard->insertSeparator();
464 addFlyAction(tr("DEGREES(x)"), tr("DEGREES(x)"), "DEGREES(", submenuFuncStandard); 467 addFlyAction(tr("DEGREES(x)"), tr("DEGREES(x)"), "DEGREES(", submenuFuncStandard);
465 addFlyAction(tr("RADIANS(x)"), tr("RADIANS(x)"), "RADIANS(", submenuFuncStandard); 468 addFlyAction(tr("RADIANS(x)"), tr("RADIANS(x)"), "RADIANS(", submenuFuncStandard);
466 addFlyAction(tr("PI()"), tr("PI()"), "PI()", submenuFuncStandard); 469 addFlyAction(tr("PI()"), tr("PI()"), "PI()", submenuFuncStandard);
467 addFlyAction(tr("RAND()"), tr("RAND()"), "RAND(", submenuFuncStandard); 470 addFlyAction(tr("RAND()"), tr("RAND()"), "RAND(", submenuFuncStandard);
468 addFlyAction(tr("RANDBETWEEN(a,b)"), tr("RANDBETWEEN(a,b)"), "RANDBETWEEN(", submenuFuncStandard); 471 addFlyAction(tr("RANDBETWEEN(a,b)"), tr("RANDBETWEEN(a,b)"), "RANDBETWEEN(", submenuFuncStandard);
469 submenuFunc->insertItem(tr("S&tandard"), submenuFuncStandard); 472 submenuFunc->insertItem(tr("S&tandard"), submenuFuncStandard);
470 473
471 submenuFuncLogic=new QPopupMenu; 474 submenuFuncLogic=new QPopupMenu;
472 addFlyAction(tr("AND(x1,x2)"), tr("AND(x1,x2)"), "AND(", submenuFuncLogic); 475 addFlyAction(tr("AND(x1,x2)"), tr("AND(x1,x2)"), "AND(", submenuFuncLogic);
473 addFlyAction(tr("NOT(x)"), tr("NOT(x)"), "NOT(", submenuFuncLogic); 476 addFlyAction(tr("NOT(x)"), tr("NOT(x)"), "NOT(", submenuFuncLogic);
474 addFlyAction(tr("OR(x1,x2)"), tr("OR(x1,x2)"), "OR(", submenuFuncLogic); 477 addFlyAction(tr("OR(x1,x2)"), tr("OR(x1,x2)"), "OR(", submenuFuncLogic);
475 submenuFuncLogic->insertSeparator(); 478 submenuFuncLogic->insertSeparator();
476 addFlyAction(tr("IF(compare,val1,val2)"), tr("IF(compare,val1,val2)"), "IF(", submenuFuncLogic); 479 addFlyAction(tr("IF(compare,val1,val2)"), tr("IF(compare,val1,val2)"), "IF(", submenuFuncLogic);
477 addFlyAction(tr("INDEX(range,index)"),tr("INDEX(range,index)"), "INDEX(", submenuFuncLogic); 480 addFlyAction(tr("INDEX(range,index)"),tr("INDEX(range,index)"), "INDEX(", submenuFuncLogic);
478 addFlyAction(tr("ISBLANK(x)"), tr("ISBLANK(x)"), "ISBLANK(", submenuFuncLogic); 481 addFlyAction(tr("ISBLANK(x)"), tr("ISBLANK(x)"), "ISBLANK(", submenuFuncLogic);
479 addFlyAction(tr("ISNUMBER(x)"), tr("ISNUMBER(x)"), "ISNUMBER(", submenuFuncLogic); 482 addFlyAction(tr("ISNUMBER(x)"), tr("ISNUMBER(x)"), "ISNUMBER(", submenuFuncLogic);
480 addFlyAction(tr("EVEN(x)"), tr("EVEN(x)"), "EVEN(", submenuFuncLogic); 483 addFlyAction(tr("EVEN(x)"), tr("EVEN(x)"), "EVEN(", submenuFuncLogic);
481 addFlyAction(tr("ISEVEN(x)"), tr("ISEVEN(x)"), "ISEVEN(", submenuFuncLogic); 484 addFlyAction(tr("ISEVEN(x)"), tr("ISEVEN(x)"), "ISEVEN(", submenuFuncLogic);
482 addFlyAction(tr("ODD(x)"), tr("ODD(x)"), "ODD(", submenuFuncLogic); 485 addFlyAction(tr("ODD(x)"), tr("ODD(x)"), "ODD(", submenuFuncLogic);
483 addFlyAction(tr("ISODD(x)"), tr("ISODD(x)"), "ISODD(", submenuFuncLogic); 486 addFlyAction(tr("ISODD(x)"), tr("ISODD(x)"), "ISODD(", submenuFuncLogic);
484 submenuFunc->insertItem(tr("Logical-&Information"), submenuFuncLogic); 487 submenuFunc->insertItem(tr("Logical-&Information"), submenuFuncLogic);
485 488
486 submenuFuncTrig=new QPopupMenu; 489 submenuFuncTrig=new QPopupMenu;
487 addFlyAction(tr("SIN(x)"), tr("SIN(x)"), "SIN(", submenuFuncTrig); 490 addFlyAction(tr("SIN(x)"), tr("SIN(x)"), "SIN(", submenuFuncTrig);
488 addFlyAction(tr("COS(x)"), tr("COS(x)"), "COS(", submenuFuncTrig); 491 addFlyAction(tr("COS(x)"), tr("COS(x)"), "COS(", submenuFuncTrig);
489 addFlyAction(tr("TAN(x)"), tr("TAN(x)"), "TAN(", submenuFuncTrig); 492 addFlyAction(tr("TAN(x)"), tr("TAN(x)"), "TAN(", submenuFuncTrig);
490 addFlyAction(tr("ASIN(x)"), tr("ASIN(x)"), "ASIN(", submenuFuncTrig); 493 addFlyAction(tr("ASIN(x)"), tr("ASIN(x)"), "ASIN(", submenuFuncTrig);
491 addFlyAction(tr("ACOS(x)"), tr("ACOS(x)"), "ACOS(", submenuFuncTrig); 494 addFlyAction(tr("ACOS(x)"), tr("ACOS(x)"), "ACOS(", submenuFuncTrig);
492 addFlyAction(tr("ATAN(x)"), tr("ATAN(x)"), "ATAN(", submenuFuncTrig); 495 addFlyAction(tr("ATAN(x)"), tr("ATAN(x)"), "ATAN(", submenuFuncTrig);
493 addFlyAction(tr("ATAN2(x,y)"), tr("ATAN2(x,y)"), "ATAN2(", submenuFuncTrig); 496 addFlyAction(tr("ATAN2(x,y)"), tr("ATAN2(x,y)"), "ATAN2(", submenuFuncTrig);
494 submenuFuncTrig->insertSeparator(); 497 submenuFuncTrig->insertSeparator();
495 addFlyAction(tr("SINH(x)"), tr("SINH(x)"), "SINH(", submenuFuncTrig); 498 addFlyAction(tr("SINH(x)"), tr("SINH(x)"), "SINH(", submenuFuncTrig);
496 addFlyAction(tr("COSH(x)"), tr("COSH(x)"), "COSH(", submenuFuncTrig); 499 addFlyAction(tr("COSH(x)"), tr("COSH(x)"), "COSH(", submenuFuncTrig);
497 addFlyAction(tr("TANH(x)"), tr("TANH(x)"), "TANH(", submenuFuncTrig); 500 addFlyAction(tr("TANH(x)"), tr("TANH(x)"), "TANH(", submenuFuncTrig);
498 addFlyAction(tr("ACOSH(x)"), tr("ACOSH(x)"), "ACOSH(", submenuFuncTrig); 501 addFlyAction(tr("ACOSH(x)"), tr("ACOSH(x)"), "ACOSH(", submenuFuncTrig);
499 addFlyAction(tr("ASINH(x)"), tr("ASINH(x)"), "ASINH(", submenuFuncTrig); 502 addFlyAction(tr("ASINH(x)"), tr("ASINH(x)"), "ASINH(", submenuFuncTrig);
500 addFlyAction(tr("ATANH(x)"), tr("ATANH(x)"), "ATANH(", submenuFuncTrig); 503 addFlyAction(tr("ATANH(x)"), tr("ATANH(x)"), "ATANH(", submenuFuncTrig);
501 submenuFunc->insertItem(tr("&Trigonometric"), submenuFuncTrig); 504 submenuFunc->insertItem(tr("&Trigonometric"), submenuFuncTrig);
502 505
503 submenuFuncString=new QPopupMenu; 506 submenuFuncString=new QPopupMenu;
504 addFlyAction(tr("LEN(s)"), tr("LEN(s)"), "LEN(",submenuFuncString); 507 addFlyAction(tr("LEN(s)"), tr("LEN(s)"), "LEN(",submenuFuncString);
505 addFlyAction(tr("LEFT(s,num)"), tr("LEFT(s,num)"), "LEFT(",submenuFuncString); 508 addFlyAction(tr("LEFT(s,num)"), tr("LEFT(s,num)"), "LEFT(",submenuFuncString);
506 addFlyAction(tr("RIGHT(s,num)"), tr("RIGHT(s,num)"), "RIGHT(",submenuFuncString); 509 addFlyAction(tr("RIGHT(s,num)"), tr("RIGHT(s,num)"), "RIGHT(",submenuFuncString);
507 addFlyAction(tr("MID(s,pos,len)"), tr("MID(s,pos,len)"), "MID(",submenuFuncString); 510 addFlyAction(tr("MID(s,pos,len)"), tr("MID(s,pos,len)"), "MID(",submenuFuncString);
508 submenuFuncString->insertSeparator(); 511 submenuFuncString->insertSeparator();
509 addFlyAction(tr("CONCATENATE(s1,s2..)"), tr("CONCATENATE(s1,s2..)"), "CONCATENATE(",submenuFuncString); 512 addFlyAction(tr("CONCATENATE(s1,s2..)"), tr("CONCATENATE(s1,s2..)"), "CONCATENATE(",submenuFuncString);
510 addFlyAction(tr("EXACT(s1,s2)"), tr("EXACT(s1,s2)"), "EXACT(",submenuFuncString); 513 addFlyAction(tr("EXACT(s1,s2)"), tr("EXACT(s1,s2)"), "EXACT(",submenuFuncString);
511 addFlyAction(tr("FIND(what,where,pos)"), 514 addFlyAction(tr("FIND(what,where,pos)"),
512 tr("FIND(what,where,pos)"), "FIND(",submenuFuncString); 515 tr("FIND(what,where,pos)"), "FIND(",submenuFuncString);
513 addFlyAction(tr("REPLACE(s,pos,len,ns)"), tr("REPLACE(s,pos,len,ns)"), "REPLACE(",submenuFuncString); 516 addFlyAction(tr("REPLACE(s,pos,len,ns)"), tr("REPLACE(s,pos,len,ns)"), "REPLACE(",submenuFuncString);
514 addFlyAction(tr("REPT(s,n)"), tr("REPT(s,n)"), "REPT(",submenuFuncString); 517 addFlyAction(tr("REPT(s,n)"), tr("REPT(s,n)"), "REPT(",submenuFuncString);
515 submenuFuncString->insertSeparator(); 518 submenuFuncString->insertSeparator();
516 addFlyAction(tr("UPPER(s)"), tr("UPPER(s)"), "UPPER(",submenuFuncString); 519 addFlyAction(tr("UPPER(s)"), tr("UPPER(s)"), "UPPER(",submenuFuncString);
517 addFlyAction(tr("LOWER(s)"), tr("LOWER(s)"), "LOWER(",submenuFuncString); 520 addFlyAction(tr("LOWER(s)"), tr("LOWER(s)"), "LOWER(",submenuFuncString);
518 submenuFunc->insertItem(tr("&Strings"), submenuFuncString); 521 submenuFunc->insertItem(tr("&Strings"), submenuFuncString);
519 522
520 submenuFuncStat=new QPopupMenu; 523 submenuFuncStat=new QPopupMenu;
521 addFlyAction(tr("AVERAGE(range)"), tr("AVERAGE(range)"), "AVERAGE(",submenuFuncStat); 524 addFlyAction(tr("AVERAGE(range)"), tr("AVERAGE(range)"), "AVERAGE(",submenuFuncStat);
522 addFlyAction(tr("COUNT(range)"), tr("COUNT(range)"), "COUNT(",submenuFuncStat); 525 addFlyAction(tr("COUNT(range)"), tr("COUNT(range)"), "COUNT(",submenuFuncStat);
523 addFlyAction(tr("COUNTIF(range,eqls)"), tr("COUNTIF(range,eqls)"), "COUNTIF(",submenuFuncStat); 526 addFlyAction(tr("COUNTIF(range,eqls)"), tr("COUNTIF(range,eqls)"), "COUNTIF(",submenuFuncStat);
524 addFlyAction(tr("MAX(range)"), tr("MAX(range)"), "MAX(",submenuFuncStat); 527 addFlyAction(tr("MAX(range)"), tr("MAX(range)"), "MAX(",submenuFuncStat);
525 addFlyAction(tr("MIN(range)"), tr("MIN(range)"), "MIN(",submenuFuncStat); 528 addFlyAction(tr("MIN(range)"), tr("MIN(range)"), "MIN(",submenuFuncStat);
526 addFlyAction(tr("SUM(range)"), tr("SUM(range)"), "SUM(",submenuFuncStat); 529 addFlyAction(tr("SUM(range)"), tr("SUM(range)"), "SUM(",submenuFuncStat);
527 addFlyAction(tr("SUMSQ(range)"), tr("SUMSQ(range)"), "SUMSQ(",submenuFuncStat); 530 addFlyAction(tr("SUMSQ(range)"), tr("SUMSQ(range)"), "SUMSQ(",submenuFuncStat);
528 submenuFuncStat->insertSeparator(); 531 submenuFuncStat->insertSeparator();
529 addFlyAction(tr("AVERAGE(range)"), tr("AVERAGE(range)"), "AVERAGE(",submenuFuncStat); 532 addFlyAction(tr("AVERAGE(range)"), tr("AVERAGE(range)"), "AVERAGE(",submenuFuncStat);
530 addFlyAction(tr("VAR(range)"), tr("VAR(range)"), "VAR(",submenuFuncStat); 533 addFlyAction(tr("VAR(range)"), tr("VAR(range)"), "VAR(",submenuFuncStat);
531 addFlyAction(tr("VARP(range)"), tr("VARP(range)"), "VARP(",submenuFuncStat); 534 addFlyAction(tr("VARP(range)"), tr("VARP(range)"), "VARP(",submenuFuncStat);
532 addFlyAction(tr("STDEV(range)"), tr("STDEV(range)"), "STDEV(",submenuFuncStat); 535 addFlyAction(tr("STDEV(range)"), tr("STDEV(range)"), "STDEV(",submenuFuncStat);
533 addFlyAction(tr("STDEVP(range)"), tr("STDEVP(range)"), "STDEVP(",submenuFuncStat); 536 addFlyAction(tr("STDEVP(range)"), tr("STDEVP(range)"), "STDEVP(",submenuFuncStat);
534 addFlyAction(tr("SKEW(range)"), tr("SKEW(range)"), "SKEW(",submenuFuncStat); 537 addFlyAction(tr("SKEW(range)"), tr("SKEW(range)"), "SKEW(",submenuFuncStat);
535 addFlyAction(tr("KURT(range)"), tr("KURT(range)"), "KURT(",submenuFuncStat); 538 addFlyAction(tr("KURT(range)"), tr("KURT(range)"), "KURT(",submenuFuncStat);
536 submenuFunc->insertItem(tr("Sta&tistical"), submenuFuncStat); 539 submenuFunc->insertItem(tr("Sta&tistical"), submenuFuncStat);
537 540
538 submenuFuncScientific=new QPopupMenu; 541 submenuFuncScientific=new QPopupMenu;
539 addFlyAction(tr("BESSELI(x,n)"), tr("BESSELI(x,n)"), "BESSELI(",submenuFuncScientific); 542 addFlyAction(tr("BESSELI(x,n)"), tr("BESSELI(x,n)"), "BESSELI(",submenuFuncScientific);
540 addFlyAction(tr("BESSELJ(x,n)"), tr("BESSELJ(x,n)"), "BESSELJ(",submenuFuncScientific); 543 addFlyAction(tr("BESSELJ(x,n)"), tr("BESSELJ(x,n)"), "BESSELJ(",submenuFuncScientific);
541 addFlyAction(tr("BESSELK(x,n)"), tr("BESSELK(x,n)"), "BESSELK(",submenuFuncScientific); 544 addFlyAction(tr("BESSELK(x,n)"), tr("BESSELK(x,n)"), "BESSELK(",submenuFuncScientific);
542 addFlyAction(tr("BESSELY(x,n)"), tr("BESSELY(x,n)"), "BESSELY(",submenuFuncScientific); 545 addFlyAction(tr("BESSELY(x,n)"), tr("BESSELY(x,n)"), "BESSELY(",submenuFuncScientific);
543 submenuFuncScientific->insertSeparator(); 546 submenuFuncScientific->insertSeparator();
544 addFlyAction(tr("BETAI(x,a,b)"), tr("BETAI(x,a,b)"), "BETAI(",submenuFuncScientific); 547 addFlyAction(tr("BETAI(x,a,b)"), tr("BETAI(x,a,b)"), "BETAI(",submenuFuncScientific);
545 addFlyAction(tr("ERF(a,b)"), tr("ERF(a,b)"), "ERF(",submenuFuncScientific); 548 addFlyAction(tr("ERF(a,b)"), tr("ERF(a,b)"), "ERF(",submenuFuncScientific);
546 addFlyAction(tr("ERFC(a,b)"), tr("ERFC(a,b)"), "ERFC(",submenuFuncScientific); 549 addFlyAction(tr("ERFC(a,b)"), tr("ERFC(a,b)"), "ERFC(",submenuFuncScientific);
547 addFlyAction(tr("GAMMALN(x)"), tr("GAMMALN(x)"), "GAMMALN(",submenuFuncScientific); 550 addFlyAction(tr("GAMMALN(x)"), tr("GAMMALN(x)"), "GAMMALN(",submenuFuncScientific);
548 addFlyAction(tr("GAMMAP(x,a)"), tr("GAMMAP(x,a)"), "GAMMAP(",submenuFuncScientific); 551 addFlyAction(tr("GAMMAP(x,a)"), tr("GAMMAP(x,a)"), "GAMMAP(",submenuFuncScientific);
549 addFlyAction(tr("GAMMAQ(x,a)"), tr("GAMMAQ(x,a)"), "GAMMAQ(",submenuFuncScientific); 552 addFlyAction(tr("GAMMAQ(x,a)"), tr("GAMMAQ(x,a)"), "GAMMAQ(",submenuFuncScientific);
550 submenuFunc->insertItem(tr("Scienti&fic"), submenuFuncScientific); 553 submenuFunc->insertItem(tr("Scienti&fic"), submenuFuncScientific);
551 554
552 submenuFuncDistr=new QPopupMenu; 555 submenuFuncDistr=new QPopupMenu;
553 addFlyAction(tr("BETADIST(z,a,b,Q?)"), tr("BETADIST(z,a,b,Q?)"), "BETADIST(",submenuFuncDistr); 556 addFlyAction(tr("BETADIST(z,a,b,Q?)"), tr("BETADIST(z,a,b,Q?)"), "BETADIST(",submenuFuncDistr);
554 addFlyAction(tr("CHI2DIST(x,n,Q?)"), tr("CHI2DIST(x,n,Q?)"), "CHI2DIST(",submenuFuncDistr); 557 addFlyAction(tr("CHI2DIST(x,n,Q?)"), tr("CHI2DIST(x,n,Q?)"), "CHI2DIST(",submenuFuncDistr);
555 addFlyAction(tr("CHIDIST(x,n,Q?)"), tr("CHIDIST(x,n,Q?)"), "CHIDIST(",submenuFuncDistr); 558 addFlyAction(tr("CHIDIST(x,n,Q?)"), tr("CHIDIST(x,n,Q?)"), "CHIDIST(",submenuFuncDistr);
556 addFlyAction(tr("FDIST(z,deg1,deg2,Q?)"), tr("FDIST(z,deg1,deg2,Q?)"), "FDIST(",submenuFuncDistr); 559 addFlyAction(tr("FDIST(z,deg1,deg2,Q?)"), tr("FDIST(z,deg1,deg2,Q?)"), "FDIST(",submenuFuncDistr);
557 addFlyAction(tr("GAMMADIST(x,a,b,Q?)"), tr("GAMMADIST(x,a,b,Q?)"), "GAMMADIST(",submenuFuncDistr); 560 addFlyAction(tr("GAMMADIST(x,a,b,Q?)"), tr("GAMMADIST(x,a,b,Q?)"), "GAMMADIST(",submenuFuncDistr);
558 addFlyAction(tr("NORMALDIST(x,m,s,Q?)"), tr("NORMALDIST(x,m,s,Q?)"), "NORMALDIST(",submenuFuncDistr); 561 addFlyAction(tr("NORMALDIST(x,m,s,Q?)"), tr("NORMALDIST(x,m,s,Q?)"), "NORMALDIST(",submenuFuncDistr);
559 addFlyAction(tr("PHI(x,Q?)"), tr("PHI(x,Q?)"), "PHI(",submenuFuncDistr); 562 addFlyAction(tr("PHI(x,Q?)"), tr("PHI(x,Q?)"), "PHI(",submenuFuncDistr);
560 addFlyAction(tr("POISSON(x,n,Q?)"), tr("POISSON(x,n,Q?)"), "POISSON(",submenuFuncDistr); 563 addFlyAction(tr("POISSON(x,n,Q?)"), tr("POISSON(x,n,Q?)"), "POISSON(",submenuFuncDistr);
561 submenuFunc->insertItem(tr("&Distributions"), submenuFuncDistr); 564 submenuFunc->insertItem(tr("&Distributions"), submenuFuncDistr);
562 565
563 566
564 567
565 menuInsert->insertSeparator(); 568 menuInsert->insertSeparator();
566 insertCells->addTo(menuInsert); 569 insertCells->addTo(menuInsert);
567 insertRows->addTo(menuInsert); 570 insertRows->addTo(menuInsert);
568 insertCols->addTo(menuInsert); 571 insertCols->addTo(menuInsert);
569 insertSheets->addTo(menuInsert); 572 insertSheets->addTo(menuInsert);
570} 573}
571 574
572void MainWindow::initStandardToolbar() 575void MainWindow::initStandardToolbar()
573{ 576{
574 toolbarStandard=new QToolBar(this); 577 toolbarStandard=new QToolBar(this);
575 toolbarStandard->setHorizontalStretchable(TRUE); 578 toolbarStandard->setHorizontalStretchable(TRUE);
576 moveToolBar(toolbarStandard, Top); 579 moveToolBar(toolbarStandard, Top);
577 580
578 fileNew->addTo(toolbarStandard); 581 fileNew->addTo(toolbarStandard);
579 fileOpen->addTo(toolbarStandard); 582 fileOpen->addTo(toolbarStandard);
580 fileSave->addTo(toolbarStandard); 583 fileSave->addTo(toolbarStandard);
581 584
582 comboSheets=new QComboBox(toolbarStandard); 585 comboSheets=new QComboBox(toolbarStandard);
583 toolbarStandard->setStretchableWidget(comboSheets); 586 toolbarStandard->setStretchableWidget(comboSheets);
584 connect(comboSheets, SIGNAL(activated(const QString &)), this, SLOT(slotSheetChanged(const QString &))); 587 connect(comboSheets, SIGNAL(activated(const QString &)), this, SLOT(slotSheetChanged(const QString &)));
585} 588}
586 589
587void MainWindow::initFunctionsToolbar() 590void MainWindow::initFunctionsToolbar()
588{ 591{
589 toolbarFunctions=new QToolBar(this); 592 toolbarFunctions=new QToolBar(this);
590 toolbarFunctions->setHorizontalStretchable(TRUE); 593 toolbarFunctions->setHorizontalStretchable(TRUE);
591 moveToolBar(toolbarFunctions, Bottom); 594 moveToolBar(toolbarFunctions, Bottom);
592 595
593 funcEqual->addTo(toolbarFunctions); 596 funcEqual->addTo(toolbarFunctions);
594 funcPlus->addTo(toolbarFunctions); 597 funcPlus->addTo(toolbarFunctions);
595 funcMinus->addTo(toolbarFunctions); 598 funcMinus->addTo(toolbarFunctions);
596 funcCross->addTo(toolbarFunctions); 599 funcCross->addTo(toolbarFunctions);
597 funcDivide->addTo(toolbarFunctions); 600 funcDivide->addTo(toolbarFunctions);
598 funcParanOpen->addTo(toolbarFunctions); 601 funcParanOpen->addTo(toolbarFunctions);
599 funcParanClose->addTo(toolbarFunctions); 602 funcParanClose->addTo(toolbarFunctions);
600 funcComma->addTo(toolbarFunctions); 603 funcComma->addTo(toolbarFunctions);
601 604
602 toolFunction=new QToolButton(toolbarFunctions); 605 toolFunction=new QToolButton(toolbarFunctions);
603 toolFunction->setPixmap(Resource::loadPixmap( "opie-sheet/func-func" )); 606 toolFunction->setPixmap(Resource::loadPixmap( "opie-sheet/func-func" ));
604 toolFunction->setTextLabel(tr("Functions")); 607 toolFunction->setTextLabel(tr("Functions"));
605 toolFunction->setPopup(submenuFunc); 608 toolFunction->setPopup(submenuFunc);
606 toolFunction->setPopupDelay(0); 609 toolFunction->setPopupDelay(0);
607} 610}
608 611
609void MainWindow::initEditToolbar() 612void MainWindow::initEditToolbar()
610{ 613{
611 toolbarEdit=new QToolBar(this); 614 toolbarEdit=new QToolBar(this);
612 toolbarEdit->setHorizontalStretchable(TRUE); 615 toolbarEdit->setHorizontalStretchable(TRUE);
613 moveToolBar(toolbarEdit, Bottom); 616 moveToolBar(toolbarEdit, Bottom);
614 617
615 editAccept->addTo(toolbarEdit); 618 editAccept->addTo(toolbarEdit);
616 editCancel->addTo(toolbarEdit); 619 editCancel->addTo(toolbarEdit);
617 620
618 editData=new QLineEdit(toolbarEdit); 621 editData=new QLineEdit(toolbarEdit);
619 toolbarEdit->setStretchableWidget(editData); 622 toolbarEdit->setStretchableWidget(editData);
620 connect(editData, SIGNAL(returnPressed()), this, SLOT(slotEditAccept())); 623 connect(editData, SIGNAL(returnPressed()), this, SLOT(slotEditAccept()));
621 624
622 editCellSelect->addTo(toolbarEdit); 625 editCellSelect->addTo(toolbarEdit);
623} 626}
624 627
625void MainWindow::slotHelpAbout() 628void MainWindow::slotHelpAbout()
626{ 629{
627 QDialog dialogAbout(this, 0, TRUE); 630 QDialog dialogAbout(this, 0, TRUE);
628 dialogAbout.resize(width()-40, height()-80); 631 dialogAbout.resize(width()-40, height()-80);
629 dialogAbout.setCaption(tr("About Opie Sheet")); 632 dialogAbout.setCaption(tr("About Opie Sheet"));
630 633
631 QLabel label(tr("Opie Sheet\nSpreadsheet Software for Opie\nQWDC Beta Winner (as Sheet/Qt)\n\nDeveloped by: Serdar Ozler\nRelease 1.0.2\nRelease Date: October 08, 2002\n\nThis product is licensed under GPL. It is freely distributable. If you want to get the latest version and also the source code, please visit the web site.\n\nhttp://qtopia.sitebest.com"), &dialogAbout); 634 QLabel label(tr("Opie Sheet\nSpreadsheet Software for Opie\nQWDC Beta Winner (as Sheet/Qt)\n\nDeveloped by: Serdar Ozler\nRelease 1.0.2\nRelease Date: October 08, 2002\n\nThis product is licensed under GPL. It is freely distributable. If you want to get the latest version and also the source code, please visit the web site.\n\nhttp://qtopia.sitebest.com"), &dialogAbout);
632 label.setGeometry(dialogAbout.rect()); 635 label.setGeometry(dialogAbout.rect());
633 label.setAlignment(Qt::AlignCenter | Qt::WordBreak); 636 label.setAlignment(Qt::AlignCenter | Qt::WordBreak);
634 637
635 dialogAbout.exec(); 638 dialogAbout.exec();
636} 639}
637 640
638void MainWindow::initSheet() 641void MainWindow::initSheet()
639{ 642{
640 sheet=new Sheet(DEFAULT_NUM_ROWS, DEFAULT_NUM_COLS, this); 643 sheet=new Sheet(DEFAULT_NUM_ROWS, DEFAULT_NUM_COLS, this);
641 setCentralWidget(sheet); 644 setCentralWidget(sheet);
642 645
643 connect(sheet, SIGNAL(currentDataChanged(const QString &)), editData, SLOT(setText(const QString &))); 646 connect(sheet, SIGNAL(currentDataChanged(const QString &)), editData, SLOT(setText(const QString &)));
644 connect(sheet, SIGNAL(cellClicked(const QString &)), this, SLOT(slotCellClicked(const QString &))); 647 connect(sheet, SIGNAL(cellClicked(const QString &)), this, SLOT(slotCellClicked(const QString &)));
645 connect(sheet, SIGNAL(sheetModified()), this, SLOT(slotDocModified())); 648 connect(sheet, SIGNAL(sheetModified()), this, SLOT(slotDocModified()));
646 649
647 connect(editCut, SIGNAL(activated()), sheet, SLOT(editCut())); 650 connect(editCut, SIGNAL(activated()), sheet, SLOT(editCut()));
648 connect(editCopy, SIGNAL(activated()), sheet, SLOT(editCopy())); 651 connect(editCopy, SIGNAL(activated()), sheet, SLOT(editCopy()));
649 connect(editClear, SIGNAL(activated()), sheet, SLOT(editClear())); 652 connect(editClear, SIGNAL(activated()), sheet, SLOT(editClear()));
650} 653}
651 654
652void MainWindow::slotEditAccept() 655void MainWindow::slotEditAccept()
653{ 656{
654 sheet->setData(editData->text()); 657 sheet->setData(editData->text());
655} 658}
656 659
657void MainWindow::slotEditCancel() 660void MainWindow::slotEditCancel()
658{ 661{
659 editData->setText(sheet->getData()); 662 editData->setText(sheet->getData());
660} 663}
661 664
662void MainWindow::slotCellSelect(bool lock) 665void MainWindow::slotCellSelect(bool lock)
663{ 666{
664 sheet->lockClicks(lock); 667 sheet->lockClicks(lock);
665} 668}
666 669
667void MainWindow::addToData(const QString &data) 670void MainWindow::addToData(const QString &data)
668{ 671{
669 editData->setText(editData->text().insert(editData->cursorPosition(), data)); 672 editData->setText(editData->text().insert(editData->cursorPosition(), data));
670} 673}
671 674
672void MainWindow::slotFuncOutput() 675void MainWindow::slotFuncOutput()
673{ 676{
674 if (sender()->isA("QAction")) 677 if (sender()->isA("QAction"))
675 addToData(((QAction *)sender())->toolTip()); 678 addToData(((QAction *)sender())->toolTip());
676} 679}
677 680
678void MainWindow::slotInsertRows() 681void MainWindow::slotInsertRows()
679{ 682{
680 NumberDialog dialogNumber(this); 683 NumberDialog dialogNumber(this);
681 if (dialogNumber.exec(tr("Insert Rows"), tr("&Number of rows:"))==QDialog::Accepted) 684 if (dialogNumber.exec(tr("Insert Rows"), tr("&Number of rows:"))==QDialog::Accepted)
682 sheet->insertRows(dialogNumber.getValue()); 685 sheet->insertRows(dialogNumber.getValue());
683} 686}
684 687
685void MainWindow::slotInsertCols() 688void MainWindow::slotInsertCols()
686{ 689{
687 NumberDialog dialogNumber(this); 690 NumberDialog dialogNumber(this);
688 if (dialogNumber.exec(tr("Insert Columns"), tr("&Number of columns:"))==QDialog::Accepted) 691 if (dialogNumber.exec(tr("Insert Columns"), tr("&Number of columns:"))==QDialog::Accepted)
689 sheet->insertColumns(dialogNumber.getValue()); 692 sheet->insertColumns(dialogNumber.getValue());
690} 693}
691 694
692void MainWindow::slotInsertSheets() 695void MainWindow::slotInsertSheets()
693{ 696{
694 NumberDialog dialogNumber(this); 697 NumberDialog dialogNumber(this);
695 if (dialogNumber.exec(tr("Add Sheets"), tr("&Number of sheets:"))==QDialog::Accepted) 698 if (dialogNumber.exec(tr("Add Sheets"), tr("&Number of sheets:"))==QDialog::Accepted)
696 for (int i=dialogNumber.getValue(); i>0; --i) createNewSheet(); 699 for (int i=dialogNumber.getValue(); i>0; --i) createNewSheet();
697} 700}
698 701
699void MainWindow::slotCellClicked(const QString &cell) 702void MainWindow::slotCellClicked(const QString &cell)
700{ 703{
701 editCellSelect->setOn(FALSE); 704 editCellSelect->setOn(FALSE);
702 addToData(cell); 705 addToData(cell);
703} 706}
704 707
705typeSheet *MainWindow::createNewSheet() 708typeSheet *MainWindow::createNewSheet()
706{ 709{
707 typeSheet *newSheet=new typeSheet; 710 typeSheet *newSheet=new typeSheet;
708 int currentNo=1, tempNo=0; 711 int currentNo=1, tempNo=0;
709 bool ok; 712 bool ok;
710 713
711 for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next()) 714 for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next())
712 if (tempSheet->name.startsWith(tr("Sheet")) && (tempNo=tempSheet->name.mid(tr("Sheet").length()).toInt(&ok))>=currentNo && ok) 715 if (tempSheet->name.startsWith(tr("Sheet")) && (tempNo=tempSheet->name.mid(tr("Sheet").length()).toInt(&ok))>=currentNo && ok)
713 currentNo=tempNo+1; 716 currentNo=tempNo+1;
714 717
715 newSheet->name=tr("Sheet")+QString::number(currentNo); 718 newSheet->name=tr("Sheet")+QString::number(currentNo);
716 newSheet->data.setAutoDelete(TRUE); 719 newSheet->data.setAutoDelete(TRUE);
717 720
718 comboSheets->insertItem(newSheet->name); 721 comboSheets->insertItem(newSheet->name);
719 listSheets.append(newSheet); 722 listSheets.append(newSheet);
720 return newSheet; 723 return newSheet;
721} 724}
722 725
723typeSheet *MainWindow::findSheet(const QString &name) 726typeSheet *MainWindow::findSheet(const QString &name)
724{ 727{
725 for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next()) 728 for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next())
726 if (tempSheet->name==name) 729 if (tempSheet->name==name)
727 return tempSheet; 730 return tempSheet;
728 return NULL; 731 return NULL;
729} 732}
730 733
731void MainWindow::slotSheetChanged(const QString &name) 734void MainWindow::slotSheetChanged(const QString &name)
732{ 735{
733 sheet->copySheetData(&findSheet(sheet->getName())->data); 736 sheet->copySheetData(&findSheet(sheet->getName())->data);
734 sheet->setName(name); 737 sheet->setName(name);
735 sheet->setSheetData(&findSheet(name)->data); 738 sheet->setSheetData(&findSheet(name)->data);
736 sheet->ReCalc(); 739 sheet->ReCalc();
737} 740}
738 741
739void MainWindow::addFlyAction(const QString &text, const QString &menuText, const QString &tip, QWidget *w) 742void MainWindow::addFlyAction(const QString &text, const QString &menuText, const QString &tip, QWidget *w)
740{ 743{
741 QAction *action=new QAction(text, menuText, 0, this); 744 QAction *action=new QAction(text, menuText, 0, this);
742 action->setToolTip(tip); 745 action->setToolTip(tip);
743 connect(action, SIGNAL(activated()), this, SLOT(slotFuncOutput())); 746 connect(action, SIGNAL(activated()), this, SLOT(slotFuncOutput()));
744 action->addTo(w); 747 action->addTo(w);
745} 748}
746 749
747void MainWindow::slotFormatCells() 750void MainWindow::slotFormatCells()
748{ 751{
749 CellFormat dialogCellFormat(this); 752 CellFormat dialogCellFormat(this);
750 dialogCellFormat.showMaximized(); 753 QPEApplication::showDialog( &dialogCellFormat );
751 dialogCellFormat.exec(sheet); 754 dialogCellFormat.exec(sheet);
752} 755}
753 756
754void MainWindow::slotEditPaste() 757void MainWindow::slotEditPaste()
755{ 758{
756 sheet->editPaste(); 759 sheet->editPaste();
757} 760}
758 761
759void MainWindow::slotEditPasteContents() 762void MainWindow::slotEditPasteContents()
760{ 763{
761 sheet->editPaste(TRUE); 764 sheet->editPaste(TRUE);
762} 765}
763 766
764void MainWindow::slotRowHeight() 767void MainWindow::slotRowHeight()
765{ 768{
766 int row1, row2, col1, col2; 769 int row1, row2, col1, col2;
767 sheet->getSelection(&row1, &col1, &row2, &col2); 770 sheet->getSelection(&row1, &col1, &row2, &col2);
768 771
769 NumberDialog dialogNumber(this); 772 NumberDialog dialogNumber(this);
770 if (dialogNumber.exec(tr("Row Height"), tr("&Height of each row:"), sheet->rowHeight(row1))==QDialog::Accepted) 773 if (dialogNumber.exec(tr("Row Height"), tr("&Height of each row:"), sheet->rowHeight(row1))==QDialog::Accepted)
771 { 774 {
772 int newHeight=dialogNumber.getValue(), row; 775 int newHeight=dialogNumber.getValue(), row;
773 for (row=row1; row<=row2; ++row) 776 for (row=row1; row<=row2; ++row)
774 sheet->setRowHeight(row, newHeight); 777 sheet->setRowHeight(row, newHeight);
775 } 778 }
776} 779}
777 780
778void MainWindow::slotRowAdjust() 781void MainWindow::slotRowAdjust()
779{ 782{
780 int row1, row2, col1, col2; 783 int row1, row2, col1, col2;
781 sheet->getSelection(&row1, &col1, &row2, &col2); 784 sheet->getSelection(&row1, &col1, &row2, &col2);
782 785
783 for (int row=row1; row<=row2; ++row) 786 for (int row=row1; row<=row2; ++row)
784 sheet->adjustRow(row); 787 sheet->adjustRow(row);
785} 788}
786 789
787void MainWindow::slotRowShow() 790void MainWindow::slotRowShow()
788{ 791{
789 int row1, row2, col1, col2; 792 int row1, row2, col1, col2;
790 sheet->getSelection(&row1, &col1, &row2, &col2); 793 sheet->getSelection(&row1, &col1, &row2, &col2);
791 794
792 for (int row=row1; row<=row2; ++row) 795 for (int row=row1; row<=row2; ++row)
793 sheet->showRow(row); 796 sheet->showRow(row);
794} 797}
795 798
796void MainWindow::slotRowHide() 799void MainWindow::slotRowHide()
797{ 800{
798 int row1, row2, col1, col2; 801 int row1, row2, col1, col2;
799 sheet->getSelection(&row1, &col1, &row2, &col2); 802 sheet->getSelection(&row1, &col1, &row2, &col2);
800 803
801 for (int row=row1; row<=row2; ++row) 804 for (int row=row1; row<=row2; ++row)
802 sheet->hideRow(row); 805 sheet->hideRow(row);
803} 806}
804 807
805void MainWindow::slotColumnWidth() 808void MainWindow::slotColumnWidth()
806{ 809{
807 int row1, row2, col1, col2; 810 int row1, row2, col1, col2;
808 sheet->getSelection(&row1, &col1, &row2, &col2); 811 sheet->getSelection(&row1, &col1, &row2, &col2);
809 812
810 NumberDialog dialogNumber(this); 813 NumberDialog dialogNumber(this);
811 if (dialogNumber.exec(tr("Column Width"), tr("&Width of each column:"), sheet->columnWidth(col1))==QDialog::Accepted) 814 if (dialogNumber.exec(tr("Column Width"), tr("&Width of each column:"), sheet->columnWidth(col1))==QDialog::Accepted)
812 { 815 {
813 int newWidth=dialogNumber.getValue(), col; 816 int newWidth=dialogNumber.getValue(), col;
814 for (col=col1; col<=col2; ++col) 817 for (col=col1; col<=col2; ++col)
815 sheet->setColumnWidth(col, newWidth); 818 sheet->setColumnWidth(col, newWidth);
816 } 819 }
817} 820}
818 821
819void MainWindow::slotColumnAdjust() 822void MainWindow::slotColumnAdjust()
820{ 823{
821 int row1, row2, col1, col2; 824 int row1, row2, col1, col2;
822 sheet->getSelection(&row1, &col1, &row2, &col2); 825 sheet->getSelection(&row1, &col1, &row2, &col2);
823 826
824 for (int col=col1; col<=col2; ++col) 827 for (int col=col1; col<=col2; ++col)
825 sheet->adjustColumn(col); 828 sheet->adjustColumn(col);
826} 829}
827 830
828void MainWindow::slotColumnShow() 831void MainWindow::slotColumnShow()
829{ 832{
830 int row1, row2, col1, col2; 833 int row1, row2, col1, col2;
831 sheet->getSelection(&row1, &col1, &row2, &col2); 834 sheet->getSelection(&row1, &col1, &row2, &col2);
832 835
833 for (int col=col1; col<=col2; ++col) 836 for (int col=col1; col<=col2; ++col)
834 sheet->showColumn(col); 837 sheet->showColumn(col);
835} 838}
836 839
837void MainWindow::slotColumnHide() 840void MainWindow::slotColumnHide()
838{ 841{
839 int row1, row2, col1, col2; 842 int row1, row2, col1, col2;
840 sheet->getSelection(&row1, &col1, &row2, &col2); 843 sheet->getSelection(&row1, &col1, &row2, &col2);
841 844
842 for (int col=col1; col<=col2; ++col) 845 for (int col=col1; col<=col2; ++col)
843 sheet->hideColumn(col); 846 sheet->hideColumn(col);
844} 847}
845 848
846void MainWindow::slotFileSaveAs() 849void MainWindow::slotFileSaveAs()
847{ 850{
848 TextDialog dialogText(this); 851 TextDialog dialogText(this);
849 if (dialogText.exec(tr("Save File As"), tr("&File Name:"), currentDoc->name())!=QDialog::Accepted || dialogText.getValue().isEmpty()) return; 852 if (dialogText.exec(tr("Save File As"), tr("&File Name:"), currentDoc->name())!=QDialog::Accepted || dialogText.getValue().isEmpty()) return;
850 853
851 currentDoc->setName(dialogText.getValue()); 854 currentDoc->setName(dialogText.getValue());
852 currentDoc->setFile(QString::null); 855 currentDoc->setFile(QString::null);
853 currentDoc->setLinkFile(QString::null); 856 currentDoc->setLinkFile(QString::null);
854 documentSave(currentDoc); 857 documentSave(currentDoc);
855} 858}
856 859
857void MainWindow::slotImportExcel(const DocLnk &lnkDoc) 860void MainWindow::slotImportExcel(const DocLnk &lnkDoc)
858{ 861{
859 ExcelBook file1; 862 ExcelBook file1;
860 file1.ParseBook((char *)lnkDoc.file().ascii()); 863 file1.ParseBook((char *)lnkDoc.file().ascii());
861 int NumOfSheets=file1.Sheets.count(); 864 int NumOfSheets=file1.Sheets.count();
862 printf("OpieSheet::NumberOfSheets:%d\r\n",NumOfSheets); 865 printf("OpieSheet::NumberOfSheets:%d\r\n",NumOfSheets);
863 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; 866 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return;
864 if (currentDoc) delete currentDoc; 867 if (currentDoc) delete currentDoc;
865 currentDoc = new DocLnk(); 868 currentDoc = new DocLnk();
866 listSheets.clear(); 869 listSheets.clear();
867 comboSheets->clear(); 870 comboSheets->clear();
868 int w1,r,c; 871 int w1,r,c;
869 ExcelSheet* sh1; 872 ExcelSheet* sh1;
870 typeSheet* newSheet; 873 typeSheet* newSheet;
871 QString* str; 874 QString* str;
872 typeCellData* newCell; 875 typeCellData* newCell;
873 for(w1=1;w1<=NumOfSheets;w1++) 876 for(w1=1;w1<=NumOfSheets;w1++)
874 { 877 {
875 sh1=file1.Sheets[w1-1]; 878 sh1=file1.Sheets[w1-1];
876 printf("OpieSheet:newSheet:%x,r=%d,c=%d\r\n",sh1,sh1->rows,sh1->cols); 879 printf("OpieSheet:newSheet:%x,r=%d,c=%d\r\n",sh1,sh1->rows,sh1->cols);
877 newSheet=new typeSheet; 880 newSheet=new typeSheet;
878 newSheet->data.setAutoDelete(TRUE); 881 newSheet->data.setAutoDelete(TRUE);
879 newSheet->name=sh1->name; 882 newSheet->name=sh1->name;
880 printf("OpieSheet:Sheetname:%s\r\n",sh1->name.ascii()); 883 printf("OpieSheet:Sheetname:%s\r\n",sh1->name.ascii());
881 comboSheets->insertItem(newSheet->name); 884 comboSheets->insertItem(newSheet->name);
882 for(r=1; r <= sh1->rows; r++) 885 for(r=1; r <= sh1->rows; r++)
883 { 886 {
884 for(c=1;c <= sh1->cols; c++) 887 for(c=1;c <= sh1->cols; c++)
885 { 888 {
886 str=file1.CellDataString(sh1,r-1,c-1); 889 str=file1.CellDataString(sh1,r-1,c-1);
887 if(str!=NULL && r<DEFAULT_NUM_ROWS && c<DEFAULT_NUM_COLS) 890 if(str!=NULL && r<DEFAULT_NUM_ROWS && c<DEFAULT_NUM_COLS)
888 { 891 {
889 newCell=new typeCellData; 892 newCell=new typeCellData;
890 newCell->row=r-1; 893 newCell->row=r-1;
891 newCell->col=c-1; 894 newCell->col=c-1;
892 if(str!=NULL) newCell->data=QString(*str); else newCell->data=QString(""); 895 if(str!=NULL) newCell->data=QString(*str); else newCell->data=QString("");
893 newCell->background=QBrush(Qt::white, Qt::SolidPattern); 896 newCell->background=QBrush(Qt::white, Qt::SolidPattern);
894 newCell->alignment=(Qt::AlignmentFlags)(Qt::AlignLeft | Qt::AlignTop); 897 newCell->alignment=(Qt::AlignmentFlags)(Qt::AlignLeft | Qt::AlignTop);
895 newCell->fontColor=Qt::black; 898 newCell->fontColor=Qt::black;
896 newCell->font=font(); 899 newCell->font=font();
897 newCell->borders.right=QPen(Qt::gray, 1, Qt::SolidLine); 900 newCell->borders.right=QPen(Qt::gray, 1, Qt::SolidLine);
898 newCell->borders.bottom=QPen(Qt::gray, 1, Qt::SolidLine); 901 newCell->borders.bottom=QPen(Qt::gray, 1, Qt::SolidLine);
899 newSheet->data.append(newCell); 902 newSheet->data.append(newCell);
900 //there is no format parsing at the moment or style parsing 903 //there is no format parsing at the moment or style parsing
901 //printf("OpieSheetNumber:row=%d,col=%d,val=%s\r\n",r,c,str->latin1()); 904 //printf("OpieSheetNumber:row=%d,col=%d,val=%s\r\n",r,c,str->latin1());
902 }; 905 };
903 }; 906 };
904 }; 907 };
905 listSheets.append(newSheet); 908 listSheets.append(newSheet);
906 if (w1==1)//if i==0 link sheet1 with sheetview 909 if (w1==1)//if i==0 link sheet1 with sheetview
907 { 910 {
908 sheet->setName(newSheet->name); 911 sheet->setName(newSheet->name);
909 sheet->setSheetData(&newSheet->data); 912 sheet->setSheetData(&newSheet->data);
910 sheet->ReCalc(); 913 sheet->ReCalc();
911 }; 914 };
912 915
913 }; 916 };
914 file1.CloseFile(); 917 file1.CloseFile();
915 printf("Excel FILE read OK\r\n"); 918 printf("Excel FILE read OK\r\n");
916 documentModified=TRUE; 919 documentModified=TRUE;
917 920
918 921
919} 922}
920 923
921void MainWindow::slotSheetRename() 924void MainWindow::slotSheetRename()
922{ 925{
923 TextDialog dialogText(this); 926 TextDialog dialogText(this);
924 if (dialogText.exec(tr("Rename Sheet"), tr("&Sheet Name:"), sheet->getName())!=QDialog::Accepted || dialogText.getValue().isEmpty()) return; 927 if (dialogText.exec(tr("Rename Sheet"), tr("&Sheet Name:"), sheet->getName())!=QDialog::Accepted || dialogText.getValue().isEmpty()) return;
925 QString newName=dialogText.getValue(); 928 QString newName=dialogText.getValue();
926 929
927 typeSheet *tempSheet=findSheet(newName); 930 typeSheet *tempSheet=findSheet(newName);
928 if (tempSheet) 931 if (tempSheet)
929 { 932 {
930 QMessageBox::critical(this, tr("Error"), tr("There is already a sheet named '"+newName+'\'')); 933 QMessageBox::critical(this, tr("Error"), tr("There is already a sheet named '"+newName+'\''));
931 return; 934 return;
932 } 935 }
933 936
934 tempSheet=findSheet(sheet->getName()); 937 tempSheet=findSheet(sheet->getName());
935 for (int i=0; i<comboSheets->count(); ++i) 938 for (int i=0; i<comboSheets->count(); ++i)
936 if (comboSheets->text(i)==tempSheet->name) 939 if (comboSheets->text(i)==tempSheet->name)
937 { 940 {
938 comboSheets->changeItem(newName, i); 941 comboSheets->changeItem(newName, i);
939 break; 942 break;
940 } 943 }
941 tempSheet->name=newName; 944 tempSheet->name=newName;
942 sheet->setName(newName); 945 sheet->setName(newName);
943} 946}
944 947
945void MainWindow::slotSheetRemove() 948void MainWindow::slotSheetRemove()
946{ 949{
947 if (comboSheets->count()<2) 950 if (comboSheets->count()<2)
948 { 951 {
949 QMessageBox::warning(this, tr("Error"), tr("There is only one sheet!")); 952 QMessageBox::warning(this, tr("Error"), tr("There is only one sheet!"));
950 return; 953 return;
951 } 954 }
952 if (QMessageBox::information(this, tr("Remove Sheet"), tr("Are you sure?"), QMessageBox::Yes, QMessageBox::No)==QMessageBox::Yes) 955 if (QMessageBox::information(this, tr("Remove Sheet"), tr("Are you sure?"), QMessageBox::Yes, QMessageBox::No)==QMessageBox::Yes)
953 { 956 {
954 typeSheet *tempSheet=findSheet(sheet->getName()); 957 typeSheet *tempSheet=findSheet(sheet->getName());
955 for (int i=0; i<comboSheets->count(); ++i) 958 for (int i=0; i<comboSheets->count(); ++i)
956 if (comboSheets->text(i)==tempSheet->name) 959 if (comboSheets->text(i)==tempSheet->name)
957 { 960 {
958 comboSheets->removeItem(i); 961 comboSheets->removeItem(i);
959 break; 962 break;
960 } 963 }
961 comboSheets->setCurrentItem(0); 964 comboSheets->setCurrentItem(0);
962 slotSheetChanged(comboSheets->currentText()); 965 slotSheetChanged(comboSheets->currentText());
963 listSheets.remove(tempSheet); 966 listSheets.remove(tempSheet);
964 } 967 }
965} 968}
966 969
967void MainWindow::slotDataSort() 970void MainWindow::slotDataSort()
968{ 971{
969 SortDialog dialogSort(this); 972 SortDialog dialogSort(this);
970 dialogSort.showMaximized(); 973 QPEApplication::showDialog( &dialogSort );
971 dialogSort.exec(sheet); 974 dialogSort.exec(sheet);
972} 975}
973 976
974void MainWindow::slotDocModified() 977void MainWindow::slotDocModified()
975{ 978{
976 documentModified=TRUE; 979 documentModified=TRUE;
977} 980}
978 981
979void MainWindow::slotInsertCells() 982void MainWindow::slotInsertCells()
980{ 983{
981 QDialog dialogInsert(this, 0, TRUE); 984 QDialog dialogInsert(this, 0, TRUE);
982 dialogInsert.resize(180, 130); 985 dialogInsert.resize(180, 130);
983 dialogInsert.setCaption(tr("Insert Cells")); 986 dialogInsert.setCaption(tr("Insert Cells"));
984 987
985 QVButtonGroup *group=new QVButtonGroup(tr("&Type"), &dialogInsert); 988 QVButtonGroup *group=new QVButtonGroup(tr("&Type"), &dialogInsert);
986 group->setGeometry(10, 10, 160, 110); 989 group->setGeometry(10, 10, 160, 110);
987 QRadioButton *radio=new QRadioButton(tr("Shift cells &down"), group); 990 QRadioButton *radio=new QRadioButton(tr("Shift cells &down"), group);
988 radio=new QRadioButton(tr("Shift cells &right"), group); 991 radio=new QRadioButton(tr("Shift cells &right"), group);
989 radio=new QRadioButton(tr("Entire ro&w"), group); 992 radio=new QRadioButton(tr("Entire ro&w"), group);
990 radio=new QRadioButton(tr("Entire &column"), group); 993 radio=new QRadioButton(tr("Entire &column"), group);
991 group->setButton(0); 994 group->setButton(0);
992 995
993 if (dialogInsert.exec()==QDialog::Accepted) 996 if (dialogInsert.exec()==QDialog::Accepted)
994 switch (group->id(group->selected())) 997 switch (group->id(group->selected()))
995 { 998 {
996 case 0: sheet->insertRows(1, FALSE); break; 999 case 0: sheet->insertRows(1, FALSE); break;
997 case 1: sheet->insertColumns(1, FALSE); break; 1000 case 1: sheet->insertColumns(1, FALSE); break;
998 case 2: sheet->insertRows(1, TRUE); break; 1001 case 2: sheet->insertRows(1, TRUE); break;
999 case 3: sheet->insertColumns(1, TRUE); break; 1002 case 3: sheet->insertColumns(1, TRUE); break;
1000 } 1003 }
1001} 1004}
1002 1005
1003void MainWindow::slotDataFindReplace() 1006void MainWindow::slotDataFindReplace()
1004{ 1007{
1005 FindDialog dialogFind(this); 1008 FindDialog dialogFind(this);
1006 dialogFind.showMaximized(); 1009 QPEApplication::showDialog( &dialogFind );
1007 dialogFind.exec(sheet); 1010 dialogFind.exec(sheet);
1008} 1011}
diff --git a/noncore/apps/tableviewer/ui/tveditview.cpp b/noncore/apps/tableviewer/ui/tveditview.cpp
index 23e2b42..20a24c8 100644
--- a/noncore/apps/tableviewer/ui/tveditview.cpp
+++ b/noncore/apps/tableviewer/ui/tveditview.cpp
@@ -1,235 +1,237 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21 21
22/* The edit view widget. For each key in the DB display an 22/* The edit view widget. For each key in the DB display an
23 * appropriate edit box, and a 'key' button to change that particular 23 * appropriate edit box, and a 'key' button to change that particular
24 * key information (delete or edit). 24 * key information (delete or edit).
25 * 25 *
26 * Bottem line should be a 'new key' button. Should be able to scroll 26 * Bottem line should be a 'new key' button. Should be able to scroll
27 * in both directions. 27 * in both directions.
28 */ 28 */
29 29
30#include "tveditview.h" 30#include "tveditview.h"
31#include "commonwidgets.h" 31#include "commonwidgets.h"
32 32
33#include <qlayout.h> 33#include <qlayout.h>
34#include <qgrid.h> 34#include <qgrid.h>
35#include <qvbox.h> 35#include <qvbox.h>
36#include <qlineedit.h> 36#include <qlineedit.h>
37#include <qcheckbox.h> 37#include <qcheckbox.h>
38#include <qlist.h> 38#include <qlist.h>
39#include <qlabel.h> 39#include <qlabel.h>
40#include <qscrollview.h> 40#include <qscrollview.h>
41#include <qsignalmapper.h> 41#include <qsignalmapper.h>
42 42
43TVEditView::TVEditView(TableState *s, DataElem *d, QWidget* parent, 43#include <qpe/qpeapplication.h>
44
45TVEditView::TVEditView(TableState *s, DataElem *d, QWidget* parent,
44 const char *name, WFlags fl ) : QDialog(parent, name, true, fl) 46 const char *name, WFlags fl ) : QDialog(parent, name, true, fl)
45{ 47{
46 if (!name) 48 if (!name)
47 setName("TVEditView"); 49 setName("TVEditView");
48 50
49 QVBoxLayout *layout = new QVBoxLayout(this, 0); /* only so that will resize 51 QVBoxLayout *layout = new QVBoxLayout(this, 0); /* only so that will resize
50 correctly in other 52 correctly in other
51 widgets */ 53 widgets */
52 54
53 toggles = new QSignalMapper(this); 55 toggles = new QSignalMapper(this);
54 QScrollView *sv = new QScrollView(this, 0); 56 QScrollView *sv = new QScrollView(this, 0);
55 sv->setResizePolicy(QScrollView::AutoOneFit); 57 sv->setResizePolicy(QScrollView::AutoOneFit);
56 58
57 layout->addWidget(sv); 59 layout->addWidget(sv);
58 60
59 editDisplay = new QGrid(3, sv, 0); 61 editDisplay = new QGrid(3, sv, 0);
60 editDisplay->setSpacing(3); 62 editDisplay->setSpacing(3);
61 sv->addChild(editDisplay); 63 sv->addChild(editDisplay);
62 64
63 connect(toggles, SIGNAL(mapped(int)), this, SLOT(toggleEnabled(int))); 65 connect(toggles, SIGNAL(mapped(int)), this, SLOT(toggleEnabled(int)));
64 66
65 setData(s, d); 67 setData(s, d);
66#ifdef Q_WS_QWS 68#ifdef Q_WS_QWS
67 showMaximized(); 69 QPEApplication::showDialog( this );
68#endif 70#endif
69} 71}
70 72
71TVEditView::~TVEditView() 73TVEditView::~TVEditView()
72{ 74{
73} 75}
74 76
75/*! set up the widgets in the grid, Set up initial values */ 77/*! set up the widgets in the grid, Set up initial values */
76void TVEditView::setData(TableState *t, DataElem *d) 78void TVEditView::setData(TableState *t, DataElem *d)
77{ 79{
78 80
79 /* TODO need to somehow clear old children... a delete of each 81 /* TODO need to somehow clear old children... a delete of each
80 * child? */ 82 * child? */
81 keyIds.clear(); 83 keyIds.clear();
82 84
83 KeyListIterator it(*t->kRep); 85 KeyListIterator it(*t->kRep);
84 86
85 int i = 0; 87 int i = 0;
86 while(it.current()) { 88 while(it.current()) {
87 if (t->kRep->validIndex(it.currentKey())) { 89 if (t->kRep->validIndex(it.currentKey())) {
88 new QLabel(it.current()->name(), editDisplay); 90 new QLabel(it.current()->name(), editDisplay);
89 keyIds.insert(i, it.currentKey()); 91 keyIds.insert(i, it.currentKey());
90 if (d->hasValidValue(it.currentKey())) { 92 if (d->hasValidValue(it.currentKey())) {
91 switch(it.current()->type()) { 93 switch(it.current()->type()) {
92 case TVVariant::String: { 94 case TVVariant::String: {
93 QLineEdit *edit = new QLineEdit(editDisplay, 0); 95 QLineEdit *edit = new QLineEdit(editDisplay, 0);
94 edit->setText(d->getField(it.currentKey()).toString()); 96 edit->setText(d->getField(it.currentKey()).toString());
95 edits.append(edit); 97 edits.append(edit);
96 break; 98 break;
97 } 99 }
98 case TVVariant::Int: { 100 case TVVariant::Int: {
99 IntEdit *edit = new IntEdit(editDisplay, 0); 101 IntEdit *edit = new IntEdit(editDisplay, 0);
100 edit->setValue(d->getField(it.currentKey()).toInt()); 102 edit->setValue(d->getField(it.currentKey()).toInt());
101 edits.append(edit); 103 edits.append(edit);
102 break; 104 break;
103 } 105 }
104 case TVVariant::Time: { 106 case TVVariant::Time: {
105 TimeEdit *edit = new TimeEdit(editDisplay, 0); 107 TimeEdit *edit = new TimeEdit(editDisplay, 0);
106 edit->setTime(d->getField(it.currentKey()).toTime()); 108 edit->setTime(d->getField(it.currentKey()).toTime());
107 edits.append(edit); 109 edits.append(edit);
108 break; 110 break;
109 } 111 }
110 case TVVariant::Date: { 112 case TVVariant::Date: {
111 DateEdit *edit = new DateEdit(editDisplay, 0); 113 DateEdit *edit = new DateEdit(editDisplay, 0);
112 edit->setDate(d->getField(it.currentKey()).toDate()); 114 edit->setDate(d->getField(it.currentKey()).toDate());
113 edits.append(edit); 115 edits.append(edit);
114 break; 116 break;
115 } 117 }
116 default: 118 default:
117 edits.append(new QLabel("<B><I>Uknown key type</I></B>", editDisplay)); 119 edits.append(new QLabel("<B><I>Uknown key type</I></B>", editDisplay));
118 } 120 }
119 QCheckBox *tb = new QCheckBox(editDisplay); 121 QCheckBox *tb = new QCheckBox(editDisplay);
120 tb->setChecked(TRUE); 122 tb->setChecked(TRUE);
121 toggles->setMapping(tb, i); 123 toggles->setMapping(tb, i);
122 connect(tb, SIGNAL(clicked()), toggles, SLOT(map())); 124 connect(tb, SIGNAL(clicked()), toggles, SLOT(map()));
123 buttons.append(tb); 125 buttons.append(tb);
124 } else { 126 } else {
125 /* No valid value.. set to null */ 127 /* No valid value.. set to null */
126 switch(it.current()->type()) { 128 switch(it.current()->type()) {
127 case TVVariant::String: { 129 case TVVariant::String: {
128 QLineEdit *edit = new QLineEdit(editDisplay, 0); 130 QLineEdit *edit = new QLineEdit(editDisplay, 0);
129 edit->setEnabled(false); 131 edit->setEnabled(false);
130 edits.append(edit); 132 edits.append(edit);
131 break; 133 break;
132 } 134 }
133 case TVVariant::Int: { 135 case TVVariant::Int: {
134 IntEdit *edit = new IntEdit(editDisplay, 0); 136 IntEdit *edit = new IntEdit(editDisplay, 0);
135 edit->setEnabled(false); 137 edit->setEnabled(false);
136 edits.append(edit); 138 edits.append(edit);
137 break; 139 break;
138 } 140 }
139 case TVVariant::Time: { 141 case TVVariant::Time: {
140 TimeEdit *edit = new TimeEdit(editDisplay, 0); 142 TimeEdit *edit = new TimeEdit(editDisplay, 0);
141 edit->setEnabled(false); 143 edit->setEnabled(false);
142 edits.append(edit); 144 edits.append(edit);
143 break; 145 break;
144 } 146 }
145 case TVVariant::Date: { 147 case TVVariant::Date: {
146 DateEdit *edit = new DateEdit(editDisplay, 0); 148 DateEdit *edit = new DateEdit(editDisplay, 0);
147 edit->setEnabled(false); 149 edit->setEnabled(false);
148 edits.append(edit); 150 edits.append(edit);
149 break; 151 break;
150 } 152 }
151 default: 153 default:
152 edits.append(new QLabel("<B><I>Uknown key type</I></B>", editDisplay)); 154 edits.append(new QLabel("<B><I>Uknown key type</I></B>", editDisplay));
153 } 155 }
154 QCheckBox *tb = new QCheckBox(editDisplay); 156 QCheckBox *tb = new QCheckBox(editDisplay);
155 tb->setChecked(FALSE); 157 tb->setChecked(FALSE);
156 toggles->setMapping(tb, i); 158 toggles->setMapping(tb, i);
157 connect(tb, SIGNAL(clicked()), toggles, SLOT(map())); 159 connect(tb, SIGNAL(clicked()), toggles, SLOT(map()));
158 buttons.append(tb); 160 buttons.append(tb);
159 } 161 }
160 i++; 162 i++;
161 } 163 }
162 ++it; 164 ++it;
163 } 165 }
164 num_edits = i; 166 num_edits = i;
165} 167}
166 168
167void TVEditView::toggleEnabled(int i) { 169void TVEditView::toggleEnabled(int i) {
168 170
169 if(edits.at(i)->isEnabled()) { 171 if(edits.at(i)->isEnabled()) {
170 edits.at(i)->setEnabled(false); 172 edits.at(i)->setEnabled(false);
171 buttons.at(i)->setChecked(FALSE); 173 buttons.at(i)->setChecked(FALSE);
172 } else { 174 } else {
173 edits.at(i)->setEnabled(true); 175 edits.at(i)->setEnabled(true);
174 buttons.at(i)->setChecked(TRUE); 176 buttons.at(i)->setChecked(TRUE);
175 } 177 }
176} 178}
177 179
178bool TVEditView::openEditItemDialog(TableState *ts, DataElem *d, 180bool TVEditView::openEditItemDialog(TableState *ts, DataElem *d,
179 QWidget *parent) 181 QWidget *parent)
180{ 182{
181 int i; 183 int i;
182 int keyId; 184 int keyId;
183 185
184 if(!ts) return 0; 186 if(!ts) return 0;
185 if(!d) return 0; 187 if(!d) return 0;
186 if(!ts->kRep) return 0; 188 if(!ts->kRep) return 0;
187 189
188 TVEditView *dlg = new TVEditView(ts, d, parent); 190 TVEditView *dlg = new TVEditView(ts, d, parent);
189 191
190 if (dlg->exec() == QDialog::Accepted ) { 192 if (dlg->exec() == QDialog::Accepted ) {
191 /* update the element, basically for each 193 /* update the element, basically for each
192 edits, if isEnabled, set Value, else unsetField */ 194 edits, if isEnabled, set Value, else unsetField */
193 195
194 for(i = 0; i < dlg->num_edits; i++) { 196 for(i = 0; i < dlg->num_edits; i++) {
195 keyId = dlg->keyIds[i]; 197 keyId = dlg->keyIds[i];
196 if(dlg->edits.at(i)->isEnabled()) { 198 if(dlg->edits.at(i)->isEnabled()) {
197 switch(d->getFieldType(keyId)) { 199 switch(d->getFieldType(keyId)) {
198 case TVVariant::String: { 200 case TVVariant::String: {
199 TVVariant value = TVVariant( 201 TVVariant value = TVVariant(
200 ((QLineEdit *)dlg->edits.at(i))->text()); 202 ((QLineEdit *)dlg->edits.at(i))->text());
201 d->setField(keyId, value); 203 d->setField(keyId, value);
202 break; 204 break;
203 } 205 }
204 case TVVariant::Int: { 206 case TVVariant::Int: {
205 TVVariant value = TVVariant( 207 TVVariant value = TVVariant(
206 ((IntEdit *)dlg->edits.at(i))->value()); 208 ((IntEdit *)dlg->edits.at(i))->value());
207 d->setField(keyId, value); 209 d->setField(keyId, value);
208 break; 210 break;
209 } 211 }
210 case TVVariant::Time: { 212 case TVVariant::Time: {
211 TVVariant value = TVVariant( 213 TVVariant value = TVVariant(
212 ((TimeEdit *)dlg->edits.at(i))->time()); 214 ((TimeEdit *)dlg->edits.at(i))->time());
213 d->setField(keyId, value); 215 d->setField(keyId, value);
214 break; 216 break;
215 } 217 }
216 case TVVariant::Date: { 218 case TVVariant::Date: {
217 TVVariant value = TVVariant( 219 TVVariant value = TVVariant(
218 ((DateEdit *)dlg->edits.at(i))->date()); 220 ((DateEdit *)dlg->edits.at(i))->date());
219 d->setField(keyId, value); 221 d->setField(keyId, value);
220 break; 222 break;
221 } 223 }
222 default: 224 default:
223 break; 225 break;
224 } 226 }
225 } else { 227 } else {
226 /* unset the field */ 228 /* unset the field */
227 d->unsetField(keyId); 229 d->unsetField(keyId);
228 } 230 }
229 } 231 }
230 delete dlg; 232 delete dlg;
231 return TRUE; 233 return TRUE;
232 } 234 }
233 235
234 return FALSE; 236 return FALSE;
235} 237}
diff --git a/noncore/apps/tableviewer/ui/tvfilterview.cpp b/noncore/apps/tableviewer/ui/tvfilterview.cpp
index 0182127..b03e846 100644
--- a/noncore/apps/tableviewer/ui/tvfilterview.cpp
+++ b/noncore/apps/tableviewer/ui/tvfilterview.cpp
@@ -1,304 +1,306 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "tvfilterview.h" 20#include "tvfilterview.h"
21#include <qtoolbutton.h> 21#include <qtoolbutton.h>
22#include <qcombobox.h> 22#include <qcombobox.h>
23#include <qlistview.h> 23#include <qlistview.h>
24#include <qlayout.h> 24#include <qlayout.h>
25#include <qheader.h> 25#include <qheader.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27#include <qlabel.h> 27#include <qlabel.h>
28 28
29TVFilterView::TVFilterView(TableState *t, QWidget* parent, 29#include <qpe/qpeapplication.h>
30
31TVFilterView::TVFilterView(TableState *t, QWidget* parent,
30 const char *name, WFlags fl ) : QDialog(parent, name, TRUE, fl) 32 const char *name, WFlags fl ) : QDialog(parent, name, TRUE, fl)
31{ 33{
32 if ( !name ) 34 if ( !name )
33 setName( "Filter View" ); 35 setName( "Filter View" );
34 36
35 QVBoxLayout *vlayout = new QVBoxLayout(this); 37 QVBoxLayout *vlayout = new QVBoxLayout(this);
36 38
37 display = new QListView(this, "display"); 39 display = new QListView(this, "display");
38 display->addColumn("Key"); 40 display->addColumn("Key");
39 display->addColumn("Constraint"); 41 display->addColumn("Constraint");
40 display->addColumn("Value"); 42 display->addColumn("Value");
41 display->header()->setClickEnabled(FALSE); 43 display->header()->setClickEnabled(FALSE);
42 display->header()->setResizeEnabled(FALSE); 44 display->header()->setResizeEnabled(FALSE);
43 45
44 vlayout->addWidget(display); 46 vlayout->addWidget(display);
45 47
46 QHBoxLayout *hlayout = new QHBoxLayout; 48 QHBoxLayout *hlayout = new QHBoxLayout;
47 hlayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); 49 hlayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum));
48 50
49 newFilterButton = new QPushButton(this, "new Filter"); 51 newFilterButton = new QPushButton(this, "new Filter");
50 newFilterButton->setMaximumSize(QSize(50, 32767)); 52 newFilterButton->setMaximumSize(QSize(50, 32767));
51 newFilterButton->setText("New"); 53 newFilterButton->setText("New");
52 hlayout->addWidget(newFilterButton); 54 hlayout->addWidget(newFilterButton);
53 55
54 deleteFilterButton = new QPushButton(this, "delete Filter"); 56 deleteFilterButton = new QPushButton(this, "delete Filter");
55 deleteFilterButton->setMaximumSize(QSize(50, 32767)); 57 deleteFilterButton->setMaximumSize(QSize(50, 32767));
56 deleteFilterButton->setText("Delete"); 58 deleteFilterButton->setText("Delete");
57 hlayout->addWidget(deleteFilterButton); 59 hlayout->addWidget(deleteFilterButton);
58 60
59 clearFilterButton = new QPushButton(this, "delete Filter"); 61 clearFilterButton = new QPushButton(this, "delete Filter");
60 clearFilterButton->setMaximumSize(QSize(60, 32767)); 62 clearFilterButton->setMaximumSize(QSize(60, 32767));
61 clearFilterButton->setText("Clear All"); 63 clearFilterButton->setText("Clear All");
62 hlayout->addWidget(clearFilterButton); 64 hlayout->addWidget(clearFilterButton);
63 65
64 vlayout->addLayout(hlayout); 66 vlayout->addLayout(hlayout);
65 67
66 QHBoxLayout *hlayout2 = new QHBoxLayout; 68 QHBoxLayout *hlayout2 = new QHBoxLayout;
67 69
68 keyNameCombo = new QComboBox(FALSE, this, "key name"); 70 keyNameCombo = new QComboBox(FALSE, this, "key name");
69 keyNameCombo->setEnabled(FALSE); 71 keyNameCombo->setEnabled(FALSE);
70 hlayout2->addWidget(keyNameCombo); 72 hlayout2->addWidget(keyNameCombo);
71 73
72 QLabel *label = new QLabel(this); 74 QLabel *label = new QLabel(this);
73 label->setText("has value"); 75 label->setText("has value");
74 hlayout2->addWidget(label); 76 hlayout2->addWidget(label);
75 77
76 keyEntry = new TVFilterKeyEntry(this, "key entry"); 78 keyEntry = new TVFilterKeyEntry(this, "key entry");
77 keyEntry->setEnabled(FALSE); 79 keyEntry->setEnabled(FALSE);
78 80
79 vlayout->addLayout(hlayout2); 81 vlayout->addLayout(hlayout2);
80 vlayout->addWidget(keyEntry); 82 vlayout->addWidget(keyEntry);
81 83
82 connect(newFilterButton, SIGNAL( clicked() ), this, SLOT( newTerm() )); 84 connect(newFilterButton, SIGNAL( clicked() ), this, SLOT( newTerm() ));
83 connect(deleteFilterButton, SIGNAL( clicked() ), this, SLOT( deleteTerm())); 85 connect(deleteFilterButton, SIGNAL( clicked() ), this, SLOT( deleteTerm()));
84 connect(clearFilterButton, SIGNAL( clicked() ), this, SLOT( clearTerms())); 86 connect(clearFilterButton, SIGNAL( clicked() ), this, SLOT( clearTerms()));
85 87
86 connect(keyEntry, SIGNAL(valueChanged()), this, SLOT( updateTerm() )); 88 connect(keyEntry, SIGNAL(valueChanged()), this, SLOT( updateTerm() ));
87 connect(keyNameCombo, SIGNAL(activated(int)), this, SLOT( updateTerm() )); 89 connect(keyNameCombo, SIGNAL(activated(int)), this, SLOT( updateTerm() ));
88 90
89 connect(display, SIGNAL(selectionChanged(QListViewItem*)), this, 91 connect(display, SIGNAL(selectionChanged(QListViewItem*)), this,
90 SLOT(setTerm(QListViewItem *))); 92 SLOT(setTerm(QListViewItem *)));
91 93
92 ts = t; 94 ts = t;
93 current = 0; 95 current = 0;
94 terms.setAutoDelete(true); 96 terms.setAutoDelete(true);
95 do_filter = false; 97 do_filter = false;
96 98
97#ifdef Q_WS_QWS 99#ifdef Q_WS_QWS
98 showMaximized(); 100 QPEApplication::showDialog( this );
99#endif 101#endif
100} 102}
101 103
102/*! 104/*!
103 Destroys the TVFilterView widget 105 Destroys the TVFilterView widget
104*/ 106*/
105TVFilterView::~TVFilterView() 107TVFilterView::~TVFilterView()
106{ 108{
107} 109}
108 110
109void TVFilterView::rebuildData() 111void TVFilterView::rebuildData()
110{ 112{
111} 113}
112 114
113void TVFilterView::reset() 115void TVFilterView::reset()
114{ 116{
115 keyNameCombo->clear(); 117 keyNameCombo->clear();
116 keyIds.clear(); 118 keyIds.clear();
117} 119}
118 120
119void TVFilterView::rebuildKeys() 121void TVFilterView::rebuildKeys()
120{ 122{
121 int i; 123 int i;
122 124
123 if (!ts) return; 125 if (!ts) return;
124 if(!ts->kRep) return; 126 if(!ts->kRep) return;
125 keyEntry->setTableState(ts); 127 keyEntry->setTableState(ts);
126 128
127 /* set up the list of keys that can be compared on */ 129 /* set up the list of keys that can be compared on */
128 keyNameCombo->clear(); 130 keyNameCombo->clear();
129 KeyListIterator it(*ts->kRep); 131 KeyListIterator it(*ts->kRep);
130 132
131 i = 0; 133 i = 0;
132 while(it.current()) { 134 while(it.current()) {
133 if(ts->kRep->validIndex(it.currentKey())) { 135 if(ts->kRep->validIndex(it.currentKey())) {
134 keyNameCombo->insertItem(it.current()->name()); 136 keyNameCombo->insertItem(it.current()->name());
135 keyIds.insert(i, it.currentKey()); 137 keyIds.insert(i, it.currentKey());
136 ++i; 138 ++i;
137 } 139 }
138 ++it; 140 ++it;
139 } 141 }
140} 142}
141 143
142bool TVFilterView::passesFilter(DataElem *d) { 144bool TVFilterView::passesFilter(DataElem *d) {
143 if (!filterActive()) return true; 145 if (!filterActive()) return true;
144 146
145 147
146 FilterTerm *t; 148 FilterTerm *t;
147 149
148 for (t = terms.first(); t != 0; t = terms.next() ) { 150 for (t = terms.first(); t != 0; t = terms.next() ) {
149 /* check against filter */ 151 /* check against filter */
150 switch(t->ct) { 152 switch(t->ct) {
151 case ct_less: 153 case ct_less:
152 if (!d->lessThan(t->keyIndex, t->value)) 154 if (!d->lessThan(t->keyIndex, t->value))
153 return false; 155 return false;
154 break; 156 break;
155 case ct_more: 157 case ct_more:
156 if (!d->moreThan(t->keyIndex, t->value)) 158 if (!d->moreThan(t->keyIndex, t->value))
157 return false; 159 return false;
158 break; 160 break;
159 case ct_equal: 161 case ct_equal:
160 if (!d->equalTo(t->keyIndex, t->value)) 162 if (!d->equalTo(t->keyIndex, t->value))
161 return false; 163 return false;
162 break; 164 break;
163 case ct_contains: 165 case ct_contains:
164 if (!d->contains(t->keyIndex, t->value)) 166 if (!d->contains(t->keyIndex, t->value))
165 return false; 167 return false;
166 break; 168 break;
167 case ct_startswith: 169 case ct_startswith:
168 if (!d->startsWith(t->keyIndex, t->value)) 170 if (!d->startsWith(t->keyIndex, t->value))
169 return false; 171 return false;
170 break; 172 break;
171 case ct_endswith: 173 case ct_endswith:
172 if (!d->endsWith(t->keyIndex, t->value)) 174 if (!d->endsWith(t->keyIndex, t->value))
173 return false; 175 return false;
174 break; 176 break;
175 default: 177 default:
176 qWarning("TVFilterView::passesFilter() " 178 qWarning("TVFilterView::passesFilter() "
177 "unrecognized filter type"); 179 "unrecognized filter type");
178 return false; 180 return false;
179 } 181 }
180 } 182 }
181 return true; 183 return true;
182} 184}
183 185
184bool TVFilterView::filterActive() const 186bool TVFilterView::filterActive() const
185{ 187{
186 /* when button operated, also check the do_filter value 188 /* when button operated, also check the do_filter value
187 return do_filter; 189 return do_filter;
188 */ 190 */
189 if (terms.isEmpty()) 191 if (terms.isEmpty())
190 return false; 192 return false;
191 return true; 193 return true;
192} 194}
193 195
194/* SLOTS */ 196/* SLOTS */
195void TVFilterView::newTerm() 197void TVFilterView::newTerm()
196{ 198{
197 if (!ts) return; 199 if (!ts) return;
198 200
199 FilterTerm *term = new FilterTerm; 201 FilterTerm *term = new FilterTerm;
200 current = term; 202 current = term;
201 203
202 term->view = 0; 204 term->view = 0;
203 205
204 updateTerm(); 206 updateTerm();
205 207
206 display->setSelected(term->view, true); 208 display->setSelected(term->view, true);
207 terms.append(term); 209 terms.append(term);
208 210
209 keyEntry->setEnabled(true); 211 keyEntry->setEnabled(true);
210 keyNameCombo->setEnabled(true); 212 keyNameCombo->setEnabled(true);
211} 213}
212 214
213void TVFilterView::updateTerm() 215void TVFilterView::updateTerm()
214{ 216{
215 FilterTerm *term; 217 FilterTerm *term;
216 /* Read the widget values (keyname, compare type, value) 218 /* Read the widget values (keyname, compare type, value)
217 * and build the lists */ 219 * and build the lists */
218 if (!ts) return; 220 if (!ts) return;
219 if (!current) return; 221 if (!current) return;
220 222
221 QString keyString; 223 QString keyString;
222 QString cmpString; 224 QString cmpString;
223 QString vString; 225 QString vString;
224 226
225 term = current; 227 term = current;
226 228
227 /* create new list item, set initial values, enable widgets */ 229 /* create new list item, set initial values, enable widgets */
228 term->keyIndex = keyIds[keyNameCombo->currentItem()]; 230 term->keyIndex = keyIds[keyNameCombo->currentItem()];
229 keyEntry->setKey(term->keyIndex); /* so the next two items make sense */ 231 keyEntry->setKey(term->keyIndex); /* so the next two items make sense */
230 term->ct = keyEntry->getCompareType(), 232 term->ct = keyEntry->getCompareType(),
231 term->value = keyEntry->getCompareValue(); 233 term->value = keyEntry->getCompareValue();
232 234
233 keyString = keyNameCombo->currentText(); 235 keyString = keyNameCombo->currentText();
234 236
235 switch(term->ct) { 237 switch(term->ct) {
236 case ct_less: 238 case ct_less:
237 cmpString = " less than "; 239 cmpString = " less than ";
238 break; 240 break;
239 case ct_more: 241 case ct_more:
240 cmpString = " more than "; 242 cmpString = " more than ";
241 break; 243 break;
242 case ct_equal: 244 case ct_equal:
243 cmpString = " equal to "; 245 cmpString = " equal to ";
244 break; 246 break;
245 case ct_contains: 247 case ct_contains:
246 cmpString = " containing "; 248 cmpString = " containing ";
247 break; 249 break;
248 case ct_startswith: 250 case ct_startswith:
249 cmpString = " starting with "; 251 cmpString = " starting with ";
250 break; 252 break;
251 case ct_endswith: 253 case ct_endswith:
252 cmpString = " ending with "; 254 cmpString = " ending with ";
253 break; 255 break;
254 default: 256 default:
255 cmpString = " ERROR "; 257 cmpString = " ERROR ";
256 } 258 }
257 259
258 vString = term->value.toString(); 260 vString = term->value.toString();
259 261
260 /* remove old view */ 262 /* remove old view */
261 if (term->view) 263 if (term->view)
262 delete(term->view); 264 delete(term->view);
263 term->view = new QListViewItem(display, 0, keyString, cmpString, vString); 265 term->view = new QListViewItem(display, 0, keyString, cmpString, vString);
264 display->setSelected(term->view, true); 266 display->setSelected(term->view, true);
265} 267}
266 268
267/* deletes current term */ 269/* deletes current term */
268void TVFilterView::deleteTerm() 270void TVFilterView::deleteTerm()
269{ 271{
270 if(!current) return; 272 if(!current) return;
271 if (current->view) 273 if (current->view)
272 delete(current->view); 274 delete(current->view);
273 275
274 terms.removeRef(current); 276 terms.removeRef(current);
275 277
276 current = terms.first(); 278 current = terms.first();
277 279
278 if(terms.isEmpty()) { 280 if(terms.isEmpty()) {
279 keyEntry->setEnabled(false); 281 keyEntry->setEnabled(false);
280 keyNameCombo->setEnabled(false); 282 keyNameCombo->setEnabled(false);
281 } 283 }
282} 284}
283 285
284/* clears all terminations */ 286/* clears all terminations */
285void TVFilterView::clearTerms() 287void TVFilterView::clearTerms()
286{ 288{
287 while(current) 289 while(current)
288 deleteTerm(); 290 deleteTerm();
289} 291}
290 292
291void TVFilterView::setTerm(QListViewItem *target) 293void TVFilterView::setTerm(QListViewItem *target)
292{ 294{
293 /* Iterate through the list to find item with view=target.. 295 /* Iterate through the list to find item with view=target..
294 * set as current, delete */ 296 * set as current, delete */
295 FilterTerm *term = current; 297 FilterTerm *term = current;
296 298
297 for (current = terms.first(); current != 0; current = terms.next() ) 299 for (current = terms.first(); current != 0; current = terms.next() )
298 if (current->view == target) 300 if (current->view == target)
299 break; 301 break;
300 302
301 if (!current) { 303 if (!current) {
302 current = term; 304 current = term;
303 } 305 }
304} 306}
diff --git a/noncore/apps/tableviewer/ui/tvkeyedit.cpp b/noncore/apps/tableviewer/ui/tvkeyedit.cpp
index 4849e87..c22ecd3 100644
--- a/noncore/apps/tableviewer/ui/tvkeyedit.cpp
+++ b/noncore/apps/tableviewer/ui/tvkeyedit.cpp
@@ -1,254 +1,256 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "tvkeyedit.h" 20#include "tvkeyedit.h"
21#include <qtoolbutton.h> 21#include <qtoolbutton.h>
22#include <qlineedit.h> 22#include <qlineedit.h>
23#include <qcombobox.h> 23#include <qcombobox.h>
24#include <qlistview.h> 24#include <qlistview.h>
25#include <qmessagebox.h> 25#include <qmessagebox.h>
26#include <stdlib.h> 26#include <stdlib.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28 28
29#include <qpe/qpeapplication.h>
30
29/* QList view item... ?? that can store and update the values that I will 31/* QList view item... ?? that can store and update the values that I will
30 * be changing */ 32 * be changing */
31 33
32class TVKEListViewItem : public QListViewItem 34class TVKEListViewItem : public QListViewItem
33{ 35{
34public: 36public:
35 TVKEListViewItem(QString n, TVVariant::KeyType kt, int p, QListView *parent) : 37 TVKEListViewItem(QString n, TVVariant::KeyType kt, int p, QListView *parent) :
36 QListViewItem(parent) 38 QListViewItem(parent)
37 { 39 {
38 name = n; 40 name = n;
39 keyType = kt; 41 keyType = kt;
40 position = p; 42 position = p;
41 } 43 }
42 44
43 QString text(int i) const 45 QString text(int i) const
44 { 46 {
45 if(i) { 47 if(i) {
46 return TVVariant::typeToName(keyType); 48 return TVVariant::typeToName(keyType);
47 } 49 }
48 return name; 50 return name;
49 } 51 }
50 52
51 /* always sort by key index, ignore i */ 53 /* always sort by key index, ignore i */
52 QString key(int, bool) const 54 QString key(int, bool) const
53 { 55 {
54 return QString().sprintf("%08d", position); 56 return QString().sprintf("%08d", position);
55 } 57 }
56 58
57 void setText(int i, const QString &) 59 void setText(int i, const QString &)
58 { 60 {
59 ; 61 ;
60 } 62 }
61 63
62 QString getName() const 64 QString getName() const
63 { 65 {
64 return name; 66 return name;
65 } 67 }
66 68
67 void setName(QString n) 69 void setName(QString n)
68 { 70 {
69 name = n; 71 name = n;
70 repaint(); 72 repaint();
71 } 73 }
72 74
73 TVVariant::KeyType getKeyType() const 75 TVVariant::KeyType getKeyType() const
74 { 76 {
75 return keyType; 77 return keyType;
76 } 78 }
77 79
78 void setKeyType(TVVariant::KeyType k) 80 void setKeyType(TVVariant::KeyType k)
79 { 81 {
80 keyType = k; 82 keyType = k;
81 repaint(); 83 repaint();
82 } 84 }
83 85
84 inline int getPos() const 86 inline int getPos() const
85 { 87 {
86 return position; 88 return position;
87 } 89 }
88 90
89private: 91private:
90 QString name; 92 QString name;
91 TVVariant::KeyType keyType; 93 TVVariant::KeyType keyType;
92 int position; 94 int position;
93}; 95};
94 96
95TVKeyEdit::TVKeyEdit(TableState *t, QWidget* parent, const char *name, 97TVKeyEdit::TVKeyEdit(TableState *t, QWidget* parent, const char *name,
96 WFlags fl) : TVKeyEdit_gen(parent, name, true, fl) 98 WFlags fl) : TVKeyEdit_gen(parent, name, true, fl)
97{ 99{
98 int i; 100 int i;
99 ts = t; 101 ts = t;
100 102
101 if(!ts) return; 103 if(!ts) return;
102 if(!ts->kRep) return; 104 if(!ts->kRep) return;
103 105
104 working_state = *ts->kRep; 106 working_state = *ts->kRep;
105 107
106 i = 1; 108 i = 1;
107 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i)); 109 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i));
108 i++; 110 i++;
109 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i)); 111 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i));
110 i++; 112 i++;
111 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i)); 113 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i));
112 i++; 114 i++;
113 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i)); 115 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i));
114 116
115 KeyListIterator it(*ts->kRep); 117 KeyListIterator it(*ts->kRep);
116 while(it.current()) { 118 while(it.current()) {
117 if(t->kRep->validIndex(it.currentKey())) { 119 if(t->kRep->validIndex(it.currentKey())) {
118 new TVKEListViewItem(it.current()->name(), 120 new TVKEListViewItem(it.current()->name(),
119 it.current()->type(), 121 it.current()->type(),
120 it.currentKey(), 122 it.currentKey(),
121 display); 123 display);
122 } 124 }
123 ++it; 125 ++it;
124 } 126 }
125 num_keys = ts->kRep->getNumFields(); 127 num_keys = ts->kRep->getNumFields();
126 if(display->childCount() > 0) { 128 if(display->childCount() > 0) {
127 display->setCurrentItem(display->firstChild()); 129 display->setCurrentItem(display->firstChild());
128 setTerm(display->currentItem()); 130 setTerm(display->currentItem());
129 } else { 131 } else {
130 deleteKeyButton->setEnabled(FALSE); 132 deleteKeyButton->setEnabled(FALSE);
131 clearKeysButton->setEnabled(FALSE); 133 clearKeysButton->setEnabled(FALSE);
132 keyNameEdit->setEnabled(FALSE); 134 keyNameEdit->setEnabled(FALSE);
133 keyTypeEdit->setEnabled(FALSE); 135 keyTypeEdit->setEnabled(FALSE);
134 } 136 }
135 137
136 display->setSorting(0); 138 display->setSorting(0);
137#ifdef Q_WS_QWS 139#ifdef Q_WS_QWS
138 showMaximized(); 140 QPEApplication::showDialog( this );
139#endif 141#endif
140} 142}
141 143
142/*! 144/*!
143 Destroys the TVKeyEdit widget 145 Destroys the TVKeyEdit widget
144*/ 146*/
145TVKeyEdit::~TVKeyEdit() 147TVKeyEdit::~TVKeyEdit()
146{ 148{
147} 149}
148 150
149/* SLOTS */ 151/* SLOTS */
150void TVKeyEdit::newTerm() 152void TVKeyEdit::newTerm()
151{ 153{
152 /* new item, make current Item */ 154 /* new item, make current Item */
153 int i; 155 int i;
154 156
155 i = working_state.addKey("<New Key>", TVVariant::String); 157 i = working_state.addKey("<New Key>", TVVariant::String);
156 //working_state.setNewFlag(i, TRUE); 158 //working_state.setNewFlag(i, TRUE);
157 TVKEListViewItem *nItem = new TVKEListViewItem("<New Key>", 159 TVKEListViewItem *nItem = new TVKEListViewItem("<New Key>",
158 TVVariant::String, 160 TVVariant::String,
159 i, 161 i,
160 display); 162 display);
161 display->setCurrentItem(nItem); 163 display->setCurrentItem(nItem);
162 setTerm(nItem); 164 setTerm(nItem);
163 165
164 num_keys++; 166 num_keys++;
165 if(display->childCount() == 1) { 167 if(display->childCount() == 1) {
166 deleteKeyButton->setEnabled(TRUE); 168 deleteKeyButton->setEnabled(TRUE);
167 clearKeysButton->setEnabled(TRUE); 169 clearKeysButton->setEnabled(TRUE);
168 keyNameEdit->setEnabled(TRUE); 170 keyNameEdit->setEnabled(TRUE);
169 keyTypeEdit->setEnabled(TRUE); 171 keyTypeEdit->setEnabled(TRUE);
170 } 172 }
171} 173}
172 174
173void TVKeyEdit::updateTerm(const QString &newName) 175void TVKeyEdit::updateTerm(const QString &newName)
174{ 176{
175 /* TODO if name matches a deleted term, prompt for 177 /* TODO if name matches a deleted term, prompt for
176 renewing old data instead */ 178 renewing old data instead */
177 TVKEListViewItem *i = (TVKEListViewItem *)display->currentItem(); 179 TVKEListViewItem *i = (TVKEListViewItem *)display->currentItem();
178 if(i) { 180 if(i) {
179 i->setName(newName); 181 i->setName(newName);
180 working_state.setKeyName(i->getPos(), newName); 182 working_state.setKeyName(i->getPos(), newName);
181 } 183 }
182} 184}
183 185
184void TVKeyEdit::updateTerm(int t) 186void TVKeyEdit::updateTerm(int t)
185{ 187{
186 /* t is an index to a combo in a menu, NOT a type */ 188 /* t is an index to a combo in a menu, NOT a type */
187 t++; /* menu counts from 0, types count from 1 */ 189 t++; /* menu counts from 0, types count from 1 */
188 TVKEListViewItem *i = (TVKEListViewItem *)display->currentItem(); 190 TVKEListViewItem *i = (TVKEListViewItem *)display->currentItem();
189 if (i) { 191 if (i) {
190 i->setKeyType((TVVariant::KeyType)t); 192 i->setKeyType((TVVariant::KeyType)t);
191 working_state.setKeyType(i->getPos(), (TVVariant::KeyType)t); 193 working_state.setKeyType(i->getPos(), (TVVariant::KeyType)t);
192 } 194 }
193} 195}
194 196
195/* deletes current term 197/* deletes current term
196 * really just marks key as deleted so is now invalid. 198 * really just marks key as deleted so is now invalid.
197 * the actual delete will happen when data is 'cleaned' 199 * the actual delete will happen when data is 'cleaned'
198 * or when file is saved. 200 * or when file is saved.
199 */ 201 */
200 202
201void TVKeyEdit::deleteTerm() 203void TVKeyEdit::deleteTerm()
202{ 204{
203 TVKEListViewItem *i = (TVKEListViewItem *)display->currentItem(); 205 TVKEListViewItem *i = (TVKEListViewItem *)display->currentItem();
204 if (i) { 206 if (i) {
205 working_state.setDeleteFlag(i->getPos(), TRUE); 207 working_state.setDeleteFlag(i->getPos(), TRUE);
206 delete i; 208 delete i;
207 } 209 }
208 if(!display->childCount()) { 210 if(!display->childCount()) {
209 /* disable the delete and clear buttons, etc */ 211 /* disable the delete and clear buttons, etc */
210 deleteKeyButton->setEnabled(FALSE); 212 deleteKeyButton->setEnabled(FALSE);
211 clearKeysButton->setEnabled(FALSE); 213 clearKeysButton->setEnabled(FALSE);
212 keyNameEdit->setEnabled(FALSE); 214 keyNameEdit->setEnabled(FALSE);
213 keyTypeEdit->setEnabled(FALSE); 215 keyTypeEdit->setEnabled(FALSE);
214 } 216 }
215} 217}
216 218
217/* clears all terminations */ 219/* clears all terminations */
218void TVKeyEdit::clearTerms() 220void TVKeyEdit::clearTerms()
219{ 221{
220 /* should pop up a warning */ 222 /* should pop up a warning */
221 if (QMessageBox::warning(this, "Delete all keys", 223 if (QMessageBox::warning(this, "Delete all keys",
222 "Are you sure you want to\ndelete all the keys?", 224 "Are you sure you want to\ndelete all the keys?",
223 "Yes", "No") == 0) 225 "Yes", "No") == 0)
224 { 226 {
225 while(display->currentItem()) 227 while(display->currentItem())
226 deleteTerm(); 228 deleteTerm();
227 } 229 }
228} 230}
229 231
230void TVKeyEdit::setTerm(QListViewItem *target) 232void TVKeyEdit::setTerm(QListViewItem *target)
231{ 233{
232 /* need to update the widgets to show keys values */ 234 /* need to update the widgets to show keys values */
233 keyNameEdit->setText(((TVKEListViewItem *)target)->getName()); 235 keyNameEdit->setText(((TVKEListViewItem *)target)->getName());
234 int t = (int)(((TVKEListViewItem *)target)->getKeyType()); 236 int t = (int)(((TVKEListViewItem *)target)->getKeyType());
235 t--; 237 t--;
236 keyTypeEdit->setCurrentItem(t); 238 keyTypeEdit->setCurrentItem(t);
237} 239}
238 240
239KeyList* TVKeyEdit::openEditKeysDialog(TableState *t, QWidget *parent = 0) 241KeyList* TVKeyEdit::openEditKeysDialog(TableState *t, QWidget *parent = 0)
240{ 242{
241 if(!t) 243 if(!t)
242 return 0; 244 return 0;
243 if(!t->kRep) 245 if(!t->kRep)
244 return 0; 246 return 0;
245 247
246 TVKeyEdit *dlg = new TVKeyEdit(t, parent); 248 TVKeyEdit *dlg = new TVKeyEdit(t, parent);
247 249
248 if ((dlg->exec() == QDialog::Accepted) && 250 if ((dlg->exec() == QDialog::Accepted) &&
249 (dlg->working_state != *t->kRep)) 251 (dlg->working_state != *t->kRep))
250 { 252 {
251 return (new KeyList(dlg->working_state)); 253 return (new KeyList(dlg->working_state));
252 } 254 }
253 return 0; 255 return 0;
254} 256}
diff --git a/noncore/apps/tinykate/libkate/view/kateview.cpp b/noncore/apps/tinykate/libkate/view/kateview.cpp
index af3b30d..794fbdb 100644
--- a/noncore/apps/tinykate/libkate/view/kateview.cpp
+++ b/noncore/apps/tinykate/libkate/view/kateview.cpp
@@ -1,2923 +1,2923 @@
1/*************************************************************************** 1/***************************************************************************
2 kateview.cpp - description 2 kateview.cpp - description
3 ------------------- 3 -------------------
4 begin : Mon Jan 15 2001 4 begin : Mon Jan 15 2001
5 copyright : (C) 2001 by Christoph "Crossfire" Cullmann 5 copyright : (C) 2001 by Christoph "Crossfire" Cullmann
6 (C) 2002 by Joseph Wenninger 6 (C) 2002 by Joseph Wenninger
7 email : crossfire@babylon2k.de 7 email : crossfire@babylon2k.de
8 jowenn@kde.org 8 jowenn@kde.org
9 ***************************************************************************/ 9 ***************************************************************************/
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19 19
20/* 20/*
21 Copyright (C) 1998, 1999 Jochen Wilhelmy 21 Copyright (C) 1998, 1999 Jochen Wilhelmy
22 digisnap@cs.tu-berlin.de 22 digisnap@cs.tu-berlin.de
23 23
24 This library is free software; you can redistribute it and/or 24 This library is free software; you can redistribute it and/or
25 modify it under the terms of the GNU Library General Public 25 modify it under the terms of the GNU Library General Public
26 License as published by the Free Software Foundation; either 26 License as published by the Free Software Foundation; either
27 version 2 of the License, or (at your option) any later version. 27 version 2 of the License, or (at your option) any later version.
28 28
29 This library is distributed in the hope that it will be useful, 29 This library is distributed in the hope that it will be useful,
30 but WITHOUT ANY WARRANTY; without even the implied warranty of 30 but WITHOUT ANY WARRANTY; without even the implied warranty of
31 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 31 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
32 Library General Public License for more details. 32 Library General Public License for more details.
33 33
34 You should have received a copy of the GNU Library General Public License 34 You should have received a copy of the GNU Library General Public License
35 along with this library; see the file COPYING.LIB. If not, write to 35 along with this library; see the file COPYING.LIB. If not, write to
36 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 36 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
37 Boston, MA 02111-1307, USA. 37 Boston, MA 02111-1307, USA.
38*/ 38*/
39 39
40 40
41 41
42#include "kateview.h" 42#include "kateview.h"
43 43
44#include "../document/katedocument.h" 44#include "../document/katedocument.h"
45#include "../document/katecmd.h" 45#include "../document/katecmd.h"
46#include "../document/katehighlight.h" 46#include "../document/katehighlight.h"
47#include "kateviewdialog.h" 47#include "kateviewdialog.h"
48#include "../document/katedialogs.h" 48#include "../document/katedialogs.h"
49#include <kateconfig.h> 49#include <kateconfig.h>
50 50
51#include <qfocusdata.h> 51#include <qfocusdata.h>
52#include <kdebug.h> 52#include <kdebug.h>
53#include <kapplication.h> 53#include <kapplication.h>
54#include <qscrollbar.h> 54#include <qscrollbar.h>
55#include <qiodevice.h> 55#include <qiodevice.h>
56#include <qpopupmenu.h> 56#include <qpopupmenu.h>
57#include <kpopupmenu.h> 57#include <kpopupmenu.h>
58#include <qkeycode.h> 58#include <qkeycode.h>
59#include <qintdict.h> 59#include <qintdict.h>
60#include <qfont.h> 60#include <qfont.h>
61#include <qpainter.h> 61#include <qpainter.h>
62#include <qpixmap.h> 62#include <qpixmap.h>
63#include <qfileinfo.h> 63#include <qfileinfo.h>
64#include <qfile.h> 64#include <qfile.h>
65#include <qevent.h> 65#include <qevent.h>
66#include <qdir.h> 66#include <qdir.h>
67#include <qvbox.h> 67#include <qvbox.h>
68#include <qprintdialog.h> 68#include <qprintdialog.h>
69#include <qpaintdevicemetrics.h> 69#include <qpaintdevicemetrics.h>
70#include <qiodevice.h> 70#include <qiodevice.h>
71#include <qbuffer.h> 71#include <qbuffer.h>
72#include <qfocusdata.h> 72#include <qfocusdata.h>
73#include <klocale.h> 73#include <klocale.h>
74#include <kglobal.h> 74#include <kglobal.h>
75#include <kdebug.h> 75#include <kdebug.h>
76#include <kmessagebox.h> 76#include <kmessagebox.h>
77#include <qregexp.h> 77#include <qregexp.h>
78#include <kdialogbase.h> 78#include <kdialogbase.h>
79#include <klineeditdlg.h> 79#include <klineeditdlg.h>
80#include <qapplication.h> 80#include <qapplication.h>
81#include <kfiledialog.h> 81#include <kfiledialog.h>
82#include <kiconloader.h> 82#include <kiconloader.h>
83#include "../document/katetextline.h" 83#include "../document/katetextline.h"
84#include "kateviewdialog.h" 84#include "kateviewdialog.h"
85#include "kateundohistory.h" 85#include "kateundohistory.h"
86#include <qlayout.h> 86#include <qlayout.h>
87#include <qpe/qpeapplication.h>
87 88
88KateViewInternal::KateViewInternal(KateView *view, KateDocument *doc) : QWidget(view) 89KateViewInternal::KateViewInternal(KateView *view, KateDocument *doc) : QWidget(view)
89{ 90{
90 waitForPreHighlight=-1; 91 waitForPreHighlight=-1;
91 myView = view; 92 myView = view;
92 myDoc = doc; 93 myDoc = doc;
93 94
94 iconBorderWidth = 16; 95 iconBorderWidth = 16;
95 iconBorderHeight = 800; 96 iconBorderHeight = 800;
96 97
97 QWidget::setCursor(ibeamCursor); 98 QWidget::setCursor(ibeamCursor);
98 setBackgroundMode(NoBackground); 99 setBackgroundMode(NoBackground);
99 100
100 setFocusPolicy(StrongFocus); 101 setFocusPolicy(StrongFocus);
101 102
102 xScroll = new QScrollBar(QScrollBar::Horizontal,myView); 103 xScroll = new QScrollBar(QScrollBar::Horizontal,myView);
103 yScroll = new QScrollBar(QScrollBar::Vertical,myView); 104 yScroll = new QScrollBar(QScrollBar::Vertical,myView);
104 connect(xScroll,SIGNAL(valueChanged(int)),SLOT(changeXPos(int))); 105 connect(xScroll,SIGNAL(valueChanged(int)),SLOT(changeXPos(int)));
105 connect(yScroll,SIGNAL(valueChanged(int)),SLOT(changeYPos(int))); 106 connect(yScroll,SIGNAL(valueChanged(int)),SLOT(changeYPos(int)));
106 connect(yScroll,SIGNAL(valueChanged(int)),myView,SIGNAL(scrollValueChanged(int))); 107 connect(yScroll,SIGNAL(valueChanged(int)),myView,SIGNAL(scrollValueChanged(int)));
107 connect( doc, SIGNAL (preHighlightChanged(long)),this,SLOT(slotPreHighlightUpdate(long))); 108 connect( doc, SIGNAL (preHighlightChanged(long)),this,SLOT(slotPreHighlightUpdate(long)));
108 109
109 xPos = 0; 110 xPos = 0;
110 yPos = 0; 111 yPos = 0;
111 112
112 scrollTimer = 0; 113 scrollTimer = 0;
113 114
114 cursor.x = 0; 115 cursor.x = 0;
115 cursor.y = 0; 116 cursor.y = 0;
116 cursorOn = false; 117 cursorOn = false;
117 cursorTimer = 0; 118 cursorTimer = 0;
118 cXPos = 0; 119 cXPos = 0;
119 cOldXPos = 0; 120 cOldXPos = 0;
120 121
121 startLine = 0; 122 startLine = 0;
122 endLine = -1; 123 endLine = -1;
123 124
124 exposeCursor = false; 125 exposeCursor = false;
125 updateState = 0; 126 updateState = 0;
126 numLines = 0; 127 numLines = 0;
127 lineRanges = 0L; 128 lineRanges = 0L;
128 newXPos = -1; 129 newXPos = -1;
129 newYPos = -1; 130 newYPos = -1;
130 131
131 drawBuffer = new QPixmap (); 132 drawBuffer = new QPixmap ();
132 drawBuffer->setOptimization (QPixmap::BestOptim); 133 drawBuffer->setOptimization (QPixmap::BestOptim);
133 134
134 bm.sXPos = 0; 135 bm.sXPos = 0;
135 bm.eXPos = -1; 136 bm.eXPos = -1;
136 137
137} 138}
138 139
139 140
140KateViewInternal::~KateViewInternal() 141KateViewInternal::~KateViewInternal()
141{ 142{
142 delete [] lineRanges; 143 delete [] lineRanges;
143 delete drawBuffer; 144 delete drawBuffer;
144} 145}
145 146
146 147
147void KateViewInternal::slotPreHighlightUpdate(long line) 148void KateViewInternal::slotPreHighlightUpdate(long line)
148{ 149{
149 //kdDebug()<<QString("slotPreHighlightUpdate - Wait for: %1, line: %2").arg(waitForPreHighlight).arg(line)<<endl; 150 //kdDebug()<<QString("slotPreHighlightUpdate - Wait for: %1, line: %2").arg(waitForPreHighlight).arg(line)<<endl;
150 if (waitForPreHighlight!=-1) 151 if (waitForPreHighlight!=-1)
151 { 152 {
152 if (line>=waitForPreHighlight) 153 if (line>=waitForPreHighlight)
153 { 154 {
154 waitForPreHighlight=-1; 155 waitForPreHighlight=-1;
155 repaint(); 156 repaint();
156 } 157 }
157 } 158 }
158} 159}
159 160
160void KateViewInternal::doCursorCommand(VConfig &c, int cmdNum) { 161void KateViewInternal::doCursorCommand(VConfig &c, int cmdNum) {
161 162
162 switch (cmdNum) { 163 switch (cmdNum) {
163 case KateView::cmLeft: 164 case KateView::cmLeft:
164 cursorLeft(c); 165 cursorLeft(c);
165 break; 166 break;
166 case KateView::cmRight: 167 case KateView::cmRight:
167 cursorRight(c); 168 cursorRight(c);
168 break; 169 break;
169 case KateView::cmWordLeft: 170 case KateView::cmWordLeft:
170 wordLeft(c); 171 wordLeft(c);
171 break; 172 break;
172 case KateView::cmWordRight: 173 case KateView::cmWordRight:
173 wordRight(c); 174 wordRight(c);
174 break; 175 break;
175 case KateView::cmHome: 176 case KateView::cmHome:
176 home(c); 177 home(c);
177 break; 178 break;
178 case KateView::cmEnd: 179 case KateView::cmEnd:
179 end(c); 180 end(c);
180 break; 181 break;
181 case KateView::cmUp: 182 case KateView::cmUp:
182 cursorUp(c); 183 cursorUp(c);
183 break; 184 break;
184 case KateView::cmDown: 185 case KateView::cmDown:
185 cursorDown(c); 186 cursorDown(c);
186 break; 187 break;
187 case KateView::cmScrollUp: 188 case KateView::cmScrollUp:
188 scrollUp(c); 189 scrollUp(c);
189 break; 190 break;
190 case KateView::cmScrollDown: 191 case KateView::cmScrollDown:
191 scrollDown(c); 192 scrollDown(c);
192 break; 193 break;
193 case KateView::cmTopOfView: 194 case KateView::cmTopOfView:
194 topOfView(c); 195 topOfView(c);
195 break; 196 break;
196 case KateView::cmBottomOfView: 197 case KateView::cmBottomOfView:
197 bottomOfView(c); 198 bottomOfView(c);
198 break; 199 break;
199 case KateView::cmPageUp: 200 case KateView::cmPageUp:
200 pageUp(c); 201 pageUp(c);
201 break; 202 break;
202 case KateView::cmPageDown: 203 case KateView::cmPageDown:
203 pageDown(c); 204 pageDown(c);
204 break; 205 break;
205 case KateView::cmTop: 206 case KateView::cmTop:
206 top_home(c); 207 top_home(c);
207 break; 208 break;
208 case KateView::cmBottom: 209 case KateView::cmBottom:
209 bottom_end(c); 210 bottom_end(c);
210 break; 211 break;
211 } 212 }
212} 213}
213 214
214void KateViewInternal::doEditCommand(VConfig &c, int cmdNum) { 215void KateViewInternal::doEditCommand(VConfig &c, int cmdNum) {
215 216
216 switch (cmdNum) { 217 switch (cmdNum) {
217 case KateView::cmCopy: 218 case KateView::cmCopy:
218 myDoc->copy(c.flags); 219 myDoc->copy(c.flags);
219 return; 220 return;
220 case KateView::cmSelectAll: 221 case KateView::cmSelectAll:
221 myDoc->selectAll(); 222 myDoc->selectAll();
222 return; 223 return;
223 case KateView::cmDeselectAll: 224 case KateView::cmDeselectAll:
224 myDoc->deselectAll(); 225 myDoc->deselectAll();
225 return; 226 return;
226 case KateView::cmInvertSelection: 227 case KateView::cmInvertSelection:
227 myDoc->invertSelection(); 228 myDoc->invertSelection();
228 return; 229 return;
229 } 230 }
230 if (myView->isReadOnly()) return; 231 if (myView->isReadOnly()) return;
231 switch (cmdNum) { 232 switch (cmdNum) {
232 case KateView::cmReturn: 233 case KateView::cmReturn:
233 if (c.flags & KateView::cfDelOnInput) myDoc->delMarkedText(c); 234 if (c.flags & KateView::cfDelOnInput) myDoc->delMarkedText(c);
234 myDoc->newLine(c); 235 myDoc->newLine(c);
235 //emit returnPressed(); 236 //emit returnPressed();
236 //e->ignore(); 237 //e->ignore();
237 return; 238 return;
238 case KateView::cmDelete: 239 case KateView::cmDelete:
239 if ((c.flags & KateView::cfDelOnInput) && myDoc->hasMarkedText()) 240 if ((c.flags & KateView::cfDelOnInput) && myDoc->hasMarkedText())
240 myDoc->delMarkedText(c); 241 myDoc->delMarkedText(c);
241 else myDoc->del(c); 242 else myDoc->del(c);
242 return; 243 return;
243 case KateView::cmBackspace: 244 case KateView::cmBackspace:
244 if ((c.flags & KateView::cfDelOnInput) && myDoc->hasMarkedText()) 245 if ((c.flags & KateView::cfDelOnInput) && myDoc->hasMarkedText())
245 myDoc->delMarkedText(c); 246 myDoc->delMarkedText(c);
246 else myDoc->backspace(c); 247 else myDoc->backspace(c);
247 return; 248 return;
248 case KateView::cmKillLine: 249 case KateView::cmKillLine:
249 myDoc->killLine(c); 250 myDoc->killLine(c);
250 return; 251 return;
251 case KateView::cmCut: 252 case KateView::cmCut:
252 myDoc->cut(c); 253 myDoc->cut(c);
253 return; 254 return;
254 case KateView::cmPaste: 255 case KateView::cmPaste:
255 if (c.flags & KateView::cfDelOnInput) myDoc->delMarkedText(c); 256 if (c.flags & KateView::cfDelOnInput) myDoc->delMarkedText(c);
256 myDoc->paste(c); 257 myDoc->paste(c);
257 return; 258 return;
258 case KateView::cmUndo: 259 case KateView::cmUndo:
259 myDoc->undo(c); 260 myDoc->undo(c);
260 return; 261 return;
261 case KateView::cmRedo: 262 case KateView::cmRedo:
262 myDoc->redo(c); 263 myDoc->redo(c);
263 return; 264 return;
264 case KateView::cmIndent: 265 case KateView::cmIndent:
265 myDoc->indent(c); 266 myDoc->indent(c);
266 return; 267 return;
267 case KateView::cmUnindent: 268 case KateView::cmUnindent:
268 myDoc->unIndent(c); 269 myDoc->unIndent(c);
269 return; 270 return;
270 case KateView::cmCleanIndent: 271 case KateView::cmCleanIndent:
271 myDoc->cleanIndent(c); 272 myDoc->cleanIndent(c);
272 return; 273 return;
273 case KateView::cmComment: 274 case KateView::cmComment:
274 myDoc->comment(c); 275 myDoc->comment(c);
275 return; 276 return;
276 case KateView::cmUncomment: 277 case KateView::cmUncomment:
277 myDoc->unComment(c); 278 myDoc->unComment(c);
278 return; 279 return;
279 } 280 }
280} 281}
281 282
282void KateViewInternal::cursorLeft(VConfig &c) { 283void KateViewInternal::cursorLeft(VConfig &c) {
283 284
284 cursor.x--; 285 cursor.x--;
285 if (c.flags & KateView::cfWrapCursor && cursor.x < 0 && cursor.y > 0) { 286 if (c.flags & KateView::cfWrapCursor && cursor.x < 0 && cursor.y > 0) {
286 cursor.y--; 287 cursor.y--;
287 cursor.x = myDoc->textLength(cursor.y); 288 cursor.x = myDoc->textLength(cursor.y);
288 } 289 }
289 cOldXPos = cXPos = myDoc->textWidth(cursor); 290 cOldXPos = cXPos = myDoc->textWidth(cursor);
290 changeState(c); 291 changeState(c);
291} 292}
292 293
293void KateViewInternal::cursorRight(VConfig &c) { 294void KateViewInternal::cursorRight(VConfig &c) {
294 295
295 if (c.flags & KateView::cfWrapCursor) { 296 if (c.flags & KateView::cfWrapCursor) {
296 if (cursor.x >= myDoc->textLength(cursor.y)) { 297 if (cursor.x >= myDoc->textLength(cursor.y)) {
297 if (cursor.y == myDoc->lastLine()) return; 298 if (cursor.y == myDoc->lastLine()) return;
298 cursor.y++; 299 cursor.y++;
299 cursor.x = -1; 300 cursor.x = -1;
300 } 301 }
301 } 302 }
302 cursor.x++; 303 cursor.x++;
303 cOldXPos = cXPos = myDoc->textWidth(cursor); 304 cOldXPos = cXPos = myDoc->textWidth(cursor);
304 changeState(c); 305 changeState(c);
305} 306}
306 307
307void KateViewInternal::wordLeft(VConfig &c) { 308void KateViewInternal::wordLeft(VConfig &c) {
308 Highlight *highlight; 309 Highlight *highlight;
309 310
310 highlight = myDoc->highlight(); 311 highlight = myDoc->highlight();
311 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y); 312 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y);
312 313
313 if (cursor.x > 0) { 314 if (cursor.x > 0) {
314 do { 315 do {
315 cursor.x--; 316 cursor.x--;
316 } while (cursor.x > 0 && !highlight->isInWord(textLine->getChar(cursor.x))); 317 } while (cursor.x > 0 && !highlight->isInWord(textLine->getChar(cursor.x)));
317 while (cursor.x > 0 && highlight->isInWord(textLine->getChar(cursor.x -1))) 318 while (cursor.x > 0 && highlight->isInWord(textLine->getChar(cursor.x -1)))
318 cursor.x--; 319 cursor.x--;
319 } else { 320 } else {
320 if (cursor.y > 0) { 321 if (cursor.y > 0) {
321 cursor.y--; 322 cursor.y--;
322 textLine = myDoc->getTextLine(cursor.y); 323 textLine = myDoc->getTextLine(cursor.y);
323 cursor.x = textLine->length(); 324 cursor.x = textLine->length();
324 } 325 }
325 } 326 }
326 327
327 cOldXPos = cXPos = myDoc->textWidth(cursor); 328 cOldXPos = cXPos = myDoc->textWidth(cursor);
328 changeState(c); 329 changeState(c);
329} 330}
330 331
331void KateViewInternal::wordRight(VConfig &c) { 332void KateViewInternal::wordRight(VConfig &c) {
332 Highlight *highlight; 333 Highlight *highlight;
333 int len; 334 int len;
334 335
335 highlight = myDoc->highlight(); 336 highlight = myDoc->highlight();
336 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y); 337 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y);
337 len = textLine->length(); 338 len = textLine->length();
338 339
339 if (cursor.x < len) { 340 if (cursor.x < len) {
340 do { 341 do {
341 cursor.x++; 342 cursor.x++;
342 } while (cursor.x < len && highlight->isInWord(textLine->getChar(cursor.x))); 343 } while (cursor.x < len && highlight->isInWord(textLine->getChar(cursor.x)));
343 while (cursor.x < len && !highlight->isInWord(textLine->getChar(cursor.x))) 344 while (cursor.x < len && !highlight->isInWord(textLine->getChar(cursor.x)))
344 cursor.x++; 345 cursor.x++;
345 } else { 346 } else {
346 if (cursor.y < myDoc->lastLine()) { 347 if (cursor.y < myDoc->lastLine()) {
347 cursor.y++; 348 cursor.y++;
348 textLine = myDoc->getTextLine(cursor.y); 349 textLine = myDoc->getTextLine(cursor.y);
349 cursor.x = 0; 350 cursor.x = 0;
350 } 351 }
351 } 352 }
352 353
353 cOldXPos = cXPos = myDoc->textWidth(cursor); 354 cOldXPos = cXPos = myDoc->textWidth(cursor);
354 changeState(c); 355 changeState(c);
355} 356}
356 357
357void KateViewInternal::home(VConfig &c) { 358void KateViewInternal::home(VConfig &c) {
358 int lc; 359 int lc;
359 360
360 lc = (c.flags & KateView::cfSmartHome) ? myDoc->getTextLine(cursor.y)->firstChar() : 0; 361 lc = (c.flags & KateView::cfSmartHome) ? myDoc->getTextLine(cursor.y)->firstChar() : 0;
361 if (lc <= 0 || cursor.x == lc) { 362 if (lc <= 0 || cursor.x == lc) {
362 cursor.x = 0; 363 cursor.x = 0;
363 cOldXPos = cXPos = 0; 364 cOldXPos = cXPos = 0;
364 } else { 365 } else {
365 cursor.x = lc; 366 cursor.x = lc;
366 cOldXPos = cXPos = myDoc->textWidth(cursor); 367 cOldXPos = cXPos = myDoc->textWidth(cursor);
367 } 368 }
368 369
369 changeState(c); 370 changeState(c);
370} 371}
371 372
372void KateViewInternal::end(VConfig &c) { 373void KateViewInternal::end(VConfig &c) {
373 cursor.x = myDoc->textLength(cursor.y); 374 cursor.x = myDoc->textLength(cursor.y);
374 cOldXPos = cXPos = myDoc->textWidth(cursor); 375 cOldXPos = cXPos = myDoc->textWidth(cursor);
375 changeState(c); 376 changeState(c);
376} 377}
377 378
378 379
379void KateViewInternal::cursorUp(VConfig &c) { 380void KateViewInternal::cursorUp(VConfig &c) {
380 381
381 cursor.y--; 382 cursor.y--;
382 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 383 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
383 changeState(c); 384 changeState(c);
384} 385}
385 386
386 387
387void KateViewInternal::cursorDown(VConfig &c) { 388void KateViewInternal::cursorDown(VConfig &c) {
388 int x; 389 int x;
389 390
390 if (cursor.y == myDoc->lastLine()) { 391 if (cursor.y == myDoc->lastLine()) {
391 x = myDoc->textLength(cursor.y); 392 x = myDoc->textLength(cursor.y);
392 if (cursor.x >= x) return; 393 if (cursor.x >= x) return;
393 cursor.x = x; 394 cursor.x = x;
394 cXPos = myDoc->textWidth(cursor); 395 cXPos = myDoc->textWidth(cursor);
395 } else { 396 } else {
396 cursor.y++; 397 cursor.y++;
397 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor, cOldXPos); 398 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor, cOldXPos);
398 } 399 }
399 changeState(c); 400 changeState(c);
400} 401}
401 402
402void KateViewInternal::scrollUp(VConfig &c) { 403void KateViewInternal::scrollUp(VConfig &c) {
403 404
404 if (! yPos) return; 405 if (! yPos) return;
405 406
406 newYPos = yPos - myDoc->fontHeight; 407 newYPos = yPos - myDoc->fontHeight;
407 if (cursor.y == (yPos + height())/myDoc->fontHeight -1) { 408 if (cursor.y == (yPos + height())/myDoc->fontHeight -1) {
408 cursor.y--; 409 cursor.y--;
409 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 410 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
410 411
411 changeState(c); 412 changeState(c);
412 } 413 }
413} 414}
414 415
415void KateViewInternal::scrollDown(VConfig &c) { 416void KateViewInternal::scrollDown(VConfig &c) {
416 417
417 if (endLine >= myDoc->lastLine()) return; 418 if (endLine >= myDoc->lastLine()) return;
418 419
419 newYPos = yPos + myDoc->fontHeight; 420 newYPos = yPos + myDoc->fontHeight;
420 if (cursor.y == (yPos + myDoc->fontHeight -1)/myDoc->fontHeight) { 421 if (cursor.y == (yPos + myDoc->fontHeight -1)/myDoc->fontHeight) {
421 cursor.y++; 422 cursor.y++;
422 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 423 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
423 changeState(c); 424 changeState(c);
424 } 425 }
425} 426}
426 427
427void KateViewInternal::topOfView(VConfig &c) { 428void KateViewInternal::topOfView(VConfig &c) {
428 429
429 cursor.y = (yPos + myDoc->fontHeight -1)/myDoc->fontHeight; 430 cursor.y = (yPos + myDoc->fontHeight -1)/myDoc->fontHeight;
430 cursor.x = 0; 431 cursor.x = 0;
431 cOldXPos = cXPos = 0; 432 cOldXPos = cXPos = 0;
432 changeState(c); 433 changeState(c);
433} 434}
434 435
435void KateViewInternal::bottomOfView(VConfig &c) { 436void KateViewInternal::bottomOfView(VConfig &c) {
436 437
437 cursor.y = (yPos + height())/myDoc->fontHeight -1; 438 cursor.y = (yPos + height())/myDoc->fontHeight -1;
438 if (cursor.y < 0) cursor.y = 0; 439 if (cursor.y < 0) cursor.y = 0;
439 if (cursor.y > myDoc->lastLine()) cursor.y = myDoc->lastLine(); 440 if (cursor.y > myDoc->lastLine()) cursor.y = myDoc->lastLine();
440 cursor.x = 0; 441 cursor.x = 0;
441 cOldXPos = cXPos = 0; 442 cOldXPos = cXPos = 0;
442 changeState(c); 443 changeState(c);
443} 444}
444 445
445void KateViewInternal::pageUp(VConfig &c) { 446void KateViewInternal::pageUp(VConfig &c) {
446 int lines = (endLine - startLine - 1); 447 int lines = (endLine - startLine - 1);
447 448
448 if (lines <= 0) lines = 1; 449 if (lines <= 0) lines = 1;
449 450
450 if (!(c.flags & KateView::cfPageUDMovesCursor) && yPos > 0) { 451 if (!(c.flags & KateView::cfPageUDMovesCursor) && yPos > 0) {
451 newYPos = yPos - lines * myDoc->fontHeight; 452 newYPos = yPos - lines * myDoc->fontHeight;
452 if (newYPos < 0) newYPos = 0; 453 if (newYPos < 0) newYPos = 0;
453 } 454 }
454 cursor.y -= lines; 455 cursor.y -= lines;
455 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor, cOldXPos); 456 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor, cOldXPos);
456 changeState(c); 457 changeState(c);
457// cursorPageUp(c); 458// cursorPageUp(c);
458} 459}
459 460
460void KateViewInternal::pageDown(VConfig &c) { 461void KateViewInternal::pageDown(VConfig &c) {
461 462
462 int lines = (endLine - startLine - 1); 463 int lines = (endLine - startLine - 1);
463 464
464 if (!(c.flags & KateView::cfPageUDMovesCursor) && endLine < myDoc->lastLine()) { 465 if (!(c.flags & KateView::cfPageUDMovesCursor) && endLine < myDoc->lastLine()) {
465 if (lines < myDoc->lastLine() - endLine) 466 if (lines < myDoc->lastLine() - endLine)
466 newYPos = yPos + lines * myDoc->fontHeight; 467 newYPos = yPos + lines * myDoc->fontHeight;
467 else 468 else
468 newYPos = yPos + (myDoc->lastLine() - endLine) * myDoc->fontHeight; 469 newYPos = yPos + (myDoc->lastLine() - endLine) * myDoc->fontHeight;
469 } 470 }
470 cursor.y += lines; 471 cursor.y += lines;
471 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 472 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
472 changeState(c); 473 changeState(c);
473// cursorPageDown(c); 474// cursorPageDown(c);
474} 475}
475 476
476// go to the top, same X position 477// go to the top, same X position
477void KateViewInternal::top(VConfig &c) { 478void KateViewInternal::top(VConfig &c) {
478 479
479// cursor.x = 0; 480// cursor.x = 0;
480 cursor.y = 0; 481 cursor.y = 0;
481 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 482 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
482// cOldXPos = cXPos = 0; 483// cOldXPos = cXPos = 0;
483 changeState(c); 484 changeState(c);
484} 485}
485 486
486// go to the bottom, same X position 487// go to the bottom, same X position
487void KateViewInternal::bottom(VConfig &c) { 488void KateViewInternal::bottom(VConfig &c) {
488 489
489// cursor.x = 0; 490// cursor.x = 0;
490 cursor.y = myDoc->lastLine(); 491 cursor.y = myDoc->lastLine();
491 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos); 492 cXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor,cursor,cOldXPos);
492// cOldXPos = cXPos = 0; 493// cOldXPos = cXPos = 0;
493 changeState(c); 494 changeState(c);
494} 495}
495 496
496// go to the top left corner 497// go to the top left corner
497void KateViewInternal::top_home(VConfig &c) 498void KateViewInternal::top_home(VConfig &c)
498{ 499{
499 cursor.y = 0; 500 cursor.y = 0;
500 cursor.x = 0; 501 cursor.x = 0;
501 cOldXPos = cXPos = 0; 502 cOldXPos = cXPos = 0;
502 changeState(c); 503 changeState(c);
503} 504}
504 505
505// go to the bottom right corner 506// go to the bottom right corner
506void KateViewInternal::bottom_end(VConfig &c) { 507void KateViewInternal::bottom_end(VConfig &c) {
507 508
508 cursor.y = myDoc->lastLine(); 509 cursor.y = myDoc->lastLine();
509 cursor.x = myDoc->textLength(cursor.y); 510 cursor.x = myDoc->textLength(cursor.y);
510 cOldXPos = cXPos = myDoc->textWidth(cursor); 511 cOldXPos = cXPos = myDoc->textWidth(cursor);
511 changeState(c); 512 changeState(c);
512} 513}
513 514
514 515
515void KateViewInternal::changeXPos(int p) { 516void KateViewInternal::changeXPos(int p) {
516 int dx; 517 int dx;
517 518
518 dx = xPos - p; 519 dx = xPos - p;
519 xPos = p; 520 xPos = p;
520 if (QABS(dx) < width()) scroll(dx, 0); else update(); 521 if (QABS(dx) < width()) scroll(dx, 0); else update();
521} 522}
522 523
523void KateViewInternal::changeYPos(int p) { 524void KateViewInternal::changeYPos(int p) {
524 int dy; 525 int dy;
525 526
526 dy = yPos - p; 527 dy = yPos - p;
527 yPos = p; 528 yPos = p;
528 clearDirtyCache(height()); 529 clearDirtyCache(height());
529 530
530 if (QABS(dy) < height()) 531 if (QABS(dy) < height())
531 { 532 {
532 scroll(0, dy); 533 scroll(0, dy);
533 leftBorder->scroll(0, dy); 534 leftBorder->scroll(0, dy);
534 } 535 }
535 else 536 else
536 update(); 537 update();
537} 538}
538 539
539 540
540void KateViewInternal::getVConfig(VConfig &c) { 541void KateViewInternal::getVConfig(VConfig &c) {
541 542
542 c.view = myView; 543 c.view = myView;
543 c.cursor = cursor; 544 c.cursor = cursor;
544 c.cXPos = cXPos; 545 c.cXPos = cXPos;
545 c.flags = myView->configFlags; 546 c.flags = myView->configFlags;
546} 547}
547 548
548void KateViewInternal::changeState(VConfig &c) { 549void KateViewInternal::changeState(VConfig &c) {
549 /* 550 /*
550 * we need to be sure to kill the selection on an attempted cursor 551 * we need to be sure to kill the selection on an attempted cursor
551 * movement even if the cursor doesn't physically move, 552 * movement even if the cursor doesn't physically move,
552 * but we need to be careful not to do some other things in this case, 553 * but we need to be careful not to do some other things in this case,
553 * like we don't want to expose the cursor 554 * like we don't want to expose the cursor
554 */ 555 */
555 556
556// if (cursor.x == c.cursor.x && cursor.y == c.cursor.y) return; 557// if (cursor.x == c.cursor.x && cursor.y == c.cursor.y) return;
557 bool nullMove = (cursor.x == c.cursor.x && cursor.y == c.cursor.y); 558 bool nullMove = (cursor.x == c.cursor.x && cursor.y == c.cursor.y);
558 559
559// if (cursor.y != c.cursor.y || c.flags & KateView::cfMark) myDoc->recordReset(); 560// if (cursor.y != c.cursor.y || c.flags & KateView::cfMark) myDoc->recordReset();
560 561
561 if (! nullMove) { 562 if (! nullMove) {
562 563
563 exposeCursor = true; 564 exposeCursor = true;
564 565
565 // mark old position of cursor as dirty 566 // mark old position of cursor as dirty
566 if (cursorOn) { 567 if (cursorOn) {
567 tagLines(c.cursor.y, c.cursor.y, c.cXPos -2, c.cXPos +3); 568 tagLines(c.cursor.y, c.cursor.y, c.cXPos -2, c.cXPos +3);
568 cursorOn = false; 569 cursorOn = false;
569 } 570 }
570 571
571 // mark old bracket mark position as dirty 572 // mark old bracket mark position as dirty
572 if (bm.sXPos < bm.eXPos) { 573 if (bm.sXPos < bm.eXPos) {
573 tagLines(bm.cursor.y, bm.cursor.y, bm.sXPos, bm.eXPos); 574 tagLines(bm.cursor.y, bm.cursor.y, bm.sXPos, bm.eXPos);
574 } 575 }
575 // make new bracket mark 576 // make new bracket mark
576 myDoc->newBracketMark(cursor, bm); 577 myDoc->newBracketMark(cursor, bm);
577 578
578 // remove trailing spaces when leaving a line 579 // remove trailing spaces when leaving a line
579 if (c.flags & KateView::cfRemoveSpaces && cursor.y != c.cursor.y) { 580 if (c.flags & KateView::cfRemoveSpaces && cursor.y != c.cursor.y) {
580 TextLine::Ptr textLine = myDoc->getTextLine(c.cursor.y); 581 TextLine::Ptr textLine = myDoc->getTextLine(c.cursor.y);
581 int newLen = textLine->lastChar(); 582 int newLen = textLine->lastChar();
582 if (newLen != textLine->length()) { 583 if (newLen != textLine->length()) {
583 textLine->truncate(newLen); 584 textLine->truncate(newLen);
584 // if some spaces are removed, tag the line as dirty 585 // if some spaces are removed, tag the line as dirty
585 myDoc->tagLines(c.cursor.y, c.cursor.y); 586 myDoc->tagLines(c.cursor.y, c.cursor.y);
586 } 587 }
587 } 588 }
588 } 589 }
589 590
590 if (c.flags & KateView::cfMark) { 591 if (c.flags & KateView::cfMark) {
591 if (! nullMove) 592 if (! nullMove)
592 myDoc->selectTo(c, cursor, cXPos); 593 myDoc->selectTo(c, cursor, cXPos);
593 } else { 594 } else {
594 if (!(c.flags & KateView::cfPersistent)) 595 if (!(c.flags & KateView::cfPersistent))
595 myDoc->deselectAll(); 596 myDoc->deselectAll();
596 } 597 }
597} 598}
598 599
599void KateViewInternal::insLine(int line) { 600void KateViewInternal::insLine(int line) {
600 601
601 if (line <= cursor.y) { 602 if (line <= cursor.y) {
602 cursor.y++; 603 cursor.y++;
603 } 604 }
604 if (line < startLine) { 605 if (line < startLine) {
605 startLine++; 606 startLine++;
606 endLine++; 607 endLine++;
607 yPos += myDoc->fontHeight; 608 yPos += myDoc->fontHeight;
608 } else if (line <= endLine) { 609 } else if (line <= endLine) {
609 tagAll(); 610 tagAll();
610 } 611 }
611} 612}
612 613
613void KateViewInternal::delLine(int line) { 614void KateViewInternal::delLine(int line) {
614 615
615 if (line <= cursor.y && cursor.y > 0) { 616 if (line <= cursor.y && cursor.y > 0) {
616 cursor.y--; 617 cursor.y--;
617 } 618 }
618 if (line < startLine) { 619 if (line < startLine) {
619 startLine--; 620 startLine--;
620 endLine--; 621 endLine--;
621 yPos -= myDoc->fontHeight; 622 yPos -= myDoc->fontHeight;
622 } else if (line <= endLine) { 623 } else if (line <= endLine) {
623 tagAll(); 624 tagAll();
624 } 625 }
625} 626}
626 627
627void KateViewInternal::updateCursor() { 628void KateViewInternal::updateCursor() {
628 cOldXPos = cXPos = myDoc->textWidth(cursor); 629 cOldXPos = cXPos = myDoc->textWidth(cursor);
629} 630}
630 631
631 632
632void KateViewInternal::updateCursor(PointStruc &newCursor) { 633void KateViewInternal::updateCursor(PointStruc &newCursor) {
633 updateCursor(newCursor, myView->config()); 634 updateCursor(newCursor, myView->config());
634} 635}
635 636
636void KateViewInternal::updateCursor(PointStruc &newCursor, int flags) { 637void KateViewInternal::updateCursor(PointStruc &newCursor, int flags) {
637 638
638 if (!(flags & KateView::cfPersistent)) myDoc->deselectAll(); 639 if (!(flags & KateView::cfPersistent)) myDoc->deselectAll();
639 640
640 exposeCursor = true; 641 exposeCursor = true;
641 if (cursorOn) { 642 if (cursorOn) {
642 tagLines(cursor.y, cursor.y, cXPos -2, cXPos +3); 643 tagLines(cursor.y, cursor.y, cXPos -2, cXPos +3);
643 cursorOn = false; 644 cursorOn = false;
644 } 645 }
645 646
646 if (bm.sXPos < bm.eXPos) { 647 if (bm.sXPos < bm.eXPos) {
647 tagLines(bm.cursor.y, bm.cursor.y, bm.sXPos, bm.eXPos); 648 tagLines(bm.cursor.y, bm.cursor.y, bm.sXPos, bm.eXPos);
648 } 649 }
649 myDoc->newBracketMark(newCursor, bm); 650 myDoc->newBracketMark(newCursor, bm);
650 651
651 cursor = newCursor; 652 cursor = newCursor;
652 cOldXPos = cXPos = myDoc->textWidth(cursor); 653 cOldXPos = cXPos = myDoc->textWidth(cursor);
653} 654}
654 655
655// init the line dirty cache 656// init the line dirty cache
656void KateViewInternal::clearDirtyCache(int height) { 657void KateViewInternal::clearDirtyCache(int height) {
657 int lines, z; 658 int lines, z;
658 659
659 // calc start and end line of visible part 660 // calc start and end line of visible part
660 startLine = yPos/myDoc->fontHeight; 661 startLine = yPos/myDoc->fontHeight;
661 endLine = (yPos + height -1)/myDoc->fontHeight; 662 endLine = (yPos + height -1)/myDoc->fontHeight;
662 663
663 updateState = 0; 664 updateState = 0;
664 665
665 lines = endLine - startLine +1; 666 lines = endLine - startLine +1;
666 if (lines > numLines) { // resize the dirty cache 667 if (lines > numLines) { // resize the dirty cache
667 numLines = lines*2; 668 numLines = lines*2;
668 delete [] lineRanges; 669 delete [] lineRanges;
669 lineRanges = new LineRange[numLines]; 670 lineRanges = new LineRange[numLines];
670 } 671 }
671 672
672 for (z = 0; z < lines; z++) { // clear all lines 673 for (z = 0; z < lines; z++) { // clear all lines
673 lineRanges[z].start = 0xffffff; 674 lineRanges[z].start = 0xffffff;
674 lineRanges[z].end = -2; 675 lineRanges[z].end = -2;
675 } 676 }
676 newXPos = newYPos = -1; 677 newXPos = newYPos = -1;
677} 678}
678 679
679void KateViewInternal::tagLines(int start, int end, int x1, int x2) { 680void KateViewInternal::tagLines(int start, int end, int x1, int x2) {
680 LineRange *r; 681 LineRange *r;
681 int z; 682 int z;
682 683
683 start -= startLine; 684 start -= startLine;
684 if (start < 0) start = 0; 685 if (start < 0) start = 0;
685 end -= startLine; 686 end -= startLine;
686 if (end > endLine - startLine) end = endLine - startLine; 687 if (end > endLine - startLine) end = endLine - startLine;
687 688
688 if (x1 <= 0) x1 = -2; 689 if (x1 <= 0) x1 = -2;
689 if (x1 < xPos-2) x1 = xPos-2; 690 if (x1 < xPos-2) x1 = xPos-2;
690 if (x2 > width() + xPos-2) x2 = width() + xPos-2; 691 if (x2 > width() + xPos-2) x2 = width() + xPos-2;
691 if (x1 >= x2) return; 692 if (x1 >= x2) return;
692 693
693 r = &lineRanges[start]; 694 r = &lineRanges[start];
694 for (z = start; z <= end; z++) { 695 for (z = start; z <= end; z++) {
695 if (x1 < r->start) r->start = x1; 696 if (x1 < r->start) r->start = x1;
696 if (x2 > r->end) r->end = x2; 697 if (x2 > r->end) r->end = x2;
697 r++; 698 r++;
698 updateState |= 1; 699 updateState |= 1;
699 } 700 }
700} 701}
701 702
702void KateViewInternal::tagAll() { 703void KateViewInternal::tagAll() {
703 updateState = 3; 704 updateState = 3;
704} 705}
705 706
706void KateViewInternal::setPos(int x, int y) { 707void KateViewInternal::setPos(int x, int y) {
707 newXPos = x; 708 newXPos = x;
708 newYPos = y; 709 newYPos = y;
709} 710}
710 711
711void KateViewInternal::center() { 712void KateViewInternal::center() {
712 newXPos = 0; 713 newXPos = 0;
713 newYPos = cursor.y*myDoc->fontHeight - height()/2; 714 newYPos = cursor.y*myDoc->fontHeight - height()/2;
714 if (newYPos < 0) newYPos = 0; 715 if (newYPos < 0) newYPos = 0;
715} 716}
716 717
717void KateViewInternal::updateView(int flags) { 718void KateViewInternal::updateView(int flags) {
718 int fontHeight; 719 int fontHeight;
719 int oldXPos, oldYPos; 720 int oldXPos, oldYPos;
720 int w, h; 721 int w, h;
721 int z; 722 int z;
722 bool b; 723 bool b;
723 int xMax, yMax; 724 int xMax, yMax;
724 int cYPos; 725 int cYPos;
725 int cXPosMin, cXPosMax, cYPosMin, cYPosMax; 726 int cXPosMin, cXPosMax, cYPosMin, cYPosMax;
726 int dx, dy; 727 int dx, dy;
727 int pageScroll; 728 int pageScroll;
728 int scrollbarWidth = style().scrollBarExtent().width(); 729 int scrollbarWidth = style().scrollBarExtent().width();
729 730
730//debug("upView %d %d %d %d %d", exposeCursor, updateState, flags, newXPos, newYPos); 731//debug("upView %d %d %d %d %d", exposeCursor, updateState, flags, newXPos, newYPos);
731 if (exposeCursor || flags & KateView::ufDocGeometry) { 732 if (exposeCursor || flags & KateView::ufDocGeometry) {
732 emit myView->newCurPos(); 733 emit myView->newCurPos();
733 } else { 734 } else {
734 if (updateState == 0 && newXPos < 0 && newYPos < 0) return; 735 if (updateState == 0 && newXPos < 0 && newYPos < 0) return;
735 } 736 }
736 737
737 if (cursorTimer) { 738 if (cursorTimer) {
738 killTimer(cursorTimer); 739 killTimer(cursorTimer);
739 cursorTimer = startTimer(KApplication::cursorFlashTime() / 2); 740 cursorTimer = startTimer(KApplication::cursorFlashTime() / 2);
740 cursorOn = true; 741 cursorOn = true;
741 } 742 }
742 743
743 oldXPos = xPos; 744 oldXPos = xPos;
744 oldYPos = yPos; 745 oldYPos = yPos;
745/* if (flags & ufPos) { 746/* if (flags & ufPos) {
746 xPos = newXPos; 747 xPos = newXPos;
747 yPos = newYPos; 748 yPos = newYPos;
748 exposeCursor = true; 749 exposeCursor = true;
749 }*/ 750 }*/
750 if (newXPos >= 0) xPos = newXPos; 751 if (newXPos >= 0) xPos = newXPos;
751 if (newYPos >= 0) yPos = newYPos; 752 if (newYPos >= 0) yPos = newYPos;
752 753
753 fontHeight = myDoc->fontHeight; 754 fontHeight = myDoc->fontHeight;
754 cYPos = cursor.y*fontHeight; 755 cYPos = cursor.y*fontHeight;
755 756
756 z = 0; 757 z = 0;
757 do { 758 do {
758 w = myView->width() - 4; 759 w = myView->width() - 4;
759 h = myView->height() - 4; 760 h = myView->height() - 4;
760 761
761 xMax = myDoc->textWidth() - w; 762 xMax = myDoc->textWidth() - w;
762 b = (xPos > 0 || xMax > 0); 763 b = (xPos > 0 || xMax > 0);
763 if (b) h -= scrollbarWidth; 764 if (b) h -= scrollbarWidth;
764 yMax = myDoc->textHeight() - h; 765 yMax = myDoc->textHeight() - h;
765 if (yPos > 0 || yMax > 0) { 766 if (yPos > 0 || yMax > 0) {
766 w -= scrollbarWidth; 767 w -= scrollbarWidth;
767 xMax += scrollbarWidth; 768 xMax += scrollbarWidth;
768 if (!b && xMax > 0) { 769 if (!b && xMax > 0) {
769 h -= scrollbarWidth; 770 h -= scrollbarWidth;
770 yMax += scrollbarWidth; 771 yMax += scrollbarWidth;
771 } 772 }
772 } 773 }
773 774
774 if (!exposeCursor) break; 775 if (!exposeCursor) break;
775// if (flags & KateView::ufNoScroll) break; 776// if (flags & KateView::ufNoScroll) break;
776/* 777/*
777 if (flags & KateView::ufCenter) { 778 if (flags & KateView::ufCenter) {
778 cXPosMin = xPos + w/3; 779 cXPosMin = xPos + w/3;
779 cXPosMax = xPos + (w*2)/3; 780 cXPosMax = xPos + (w*2)/3;
780 cYPosMin = yPos + h/3; 781 cYPosMin = yPos + h/3;
781 cYPosMax = yPos + ((h - fontHeight)*2)/3; 782 cYPosMax = yPos + ((h - fontHeight)*2)/3;
782 } else {*/ 783 } else {*/
783 cXPosMin = xPos + 4; 784 cXPosMin = xPos + 4;
784 cXPosMax = xPos + w - 8; 785 cXPosMax = xPos + w - 8;
785 cYPosMin = yPos; 786 cYPosMin = yPos;
786 cYPosMax = yPos + (h - fontHeight); 787 cYPosMax = yPos + (h - fontHeight);
787// } 788// }
788 789
789 if (cXPos < cXPosMin) { 790 if (cXPos < cXPosMin) {
790 xPos -= cXPosMin - cXPos; 791 xPos -= cXPosMin - cXPos;
791 } 792 }
792 if (xPos < 0) xPos = 0; 793 if (xPos < 0) xPos = 0;
793 if (cXPos > cXPosMax) { 794 if (cXPos > cXPosMax) {
794 xPos += cXPos - cXPosMax; 795 xPos += cXPos - cXPosMax;
795 } 796 }
796 if (cYPos < cYPosMin) { 797 if (cYPos < cYPosMin) {
797 yPos -= cYPosMin - cYPos; 798 yPos -= cYPosMin - cYPos;
798 } 799 }
799 if (yPos < 0) yPos = 0; 800 if (yPos < 0) yPos = 0;
800 if (cYPos > cYPosMax) { 801 if (cYPos > cYPosMax) {
801 yPos += cYPos - cYPosMax; 802 yPos += cYPos - cYPosMax;
802 } 803 }
803 804
804 z++; 805 z++;
805 } while (z < 2); 806 } while (z < 2);
806 807
807 if (xMax < xPos) xMax = xPos; 808 if (xMax < xPos) xMax = xPos;
808 if (yMax < yPos) yMax = yPos; 809 if (yMax < yPos) yMax = yPos;
809 810
810 if (xMax > 0) { 811 if (xMax > 0) {
811 pageScroll = w - (w % fontHeight) - fontHeight; 812 pageScroll = w - (w % fontHeight) - fontHeight;
812 if (pageScroll <= 0) 813 if (pageScroll <= 0)
813 pageScroll = fontHeight; 814 pageScroll = fontHeight;
814 815
815 xScroll->blockSignals(true); 816 xScroll->blockSignals(true);
816 xScroll->setGeometry(2,h + 2,w,scrollbarWidth); 817 xScroll->setGeometry(2,h + 2,w,scrollbarWidth);
817 xScroll->setRange(0,xMax); 818 xScroll->setRange(0,xMax);
818 xScroll->setValue(xPos); 819 xScroll->setValue(xPos);
819 xScroll->setSteps(fontHeight,pageScroll); 820 xScroll->setSteps(fontHeight,pageScroll);
820 xScroll->blockSignals(false); 821 xScroll->blockSignals(false);
821 xScroll->show(); 822 xScroll->show();
822 } else xScroll->hide(); 823 } else xScroll->hide();
823 824
824 if (yMax > 0) { 825 if (yMax > 0) {
825 pageScroll = h - (h % fontHeight) - fontHeight; 826 pageScroll = h - (h % fontHeight) - fontHeight;
826 if (pageScroll <= 0) 827 if (pageScroll <= 0)
827 pageScroll = fontHeight; 828 pageScroll = fontHeight;
828 829
829 yScroll->blockSignals(true); 830 yScroll->blockSignals(true);
830 yScroll->setGeometry(w + 2,2,scrollbarWidth,h); 831 yScroll->setGeometry(w + 2,2,scrollbarWidth,h);
831 yScroll->setRange(0,yMax); 832 yScroll->setRange(0,yMax);
832 yScroll->setValue(yPos); 833 yScroll->setValue(yPos);
833 yScroll->setSteps(fontHeight,pageScroll); 834 yScroll->setSteps(fontHeight,pageScroll);
834 yScroll->blockSignals(false); 835 yScroll->blockSignals(false);
835 yScroll->show(); 836 yScroll->show();
836 } else yScroll->hide(); 837 } else yScroll->hide();
837 838
838 if (w != width() || h != height()) { 839 if (w != width() || h != height()) {
839 clearDirtyCache(h); 840 clearDirtyCache(h);
840 resize(w,h); 841 resize(w,h);
841 } else { 842 } else {
842 dx = oldXPos - xPos; 843 dx = oldXPos - xPos;
843 dy = oldYPos - yPos; 844 dy = oldYPos - yPos;
844 845
845 b = updateState == 3; 846 b = updateState == 3;
846 if (flags & KateView::ufUpdateOnScroll) { 847 if (flags & KateView::ufUpdateOnScroll) {
847 b |= dx || dy; 848 b |= dx || dy;
848 } else { 849 } else {
849 b |= QABS(dx)*3 > w*2 || QABS(dy)*3 > h*2; 850 b |= QABS(dx)*3 > w*2 || QABS(dy)*3 > h*2;
850 } 851 }
851 852
852 if (b) { 853 if (b) {
853 clearDirtyCache(h); 854 clearDirtyCache(h);
854 update(); 855 update();
855 } else { 856 } else {
856 if (dy) 857 if (dy)
857 leftBorder->scroll(0, dy); 858 leftBorder->scroll(0, dy);
858 if (updateState > 0) paintTextLines(oldXPos, oldYPos); 859 if (updateState > 0) paintTextLines(oldXPos, oldYPos);
859 clearDirtyCache(h); 860 clearDirtyCache(h);
860 861
861 if (dx || dy) { 862 if (dx || dy) {
862 scroll(dx,dy); 863 scroll(dx,dy);
863// kapp->syncX(); 864// kapp->syncX();
864// scroll2(dx - dx/2,dy - dy/2); 865// scroll2(dx - dx/2,dy - dy/2);
865// } else { 866// } else {
866 } 867 }
867 if (cursorOn) paintCursor(); 868 if (cursorOn) paintCursor();
868 if (bm.eXPos > bm.sXPos) paintBracketMark(); 869 if (bm.eXPos > bm.sXPos) paintBracketMark();
869 } 870 }
870 } 871 }
871 exposeCursor = false; 872 exposeCursor = false;
872// updateState = 0; 873// updateState = 0;
873} 874}
874 875
875 876
876void KateViewInternal::paintTextLines(int xPos, int yPos) { 877void KateViewInternal::paintTextLines(int xPos, int yPos) {
877// int xStart, xEnd; 878// int xStart, xEnd;
878 int line;//, z; 879 int line;//, z;
879 int h; 880 int h;
880 LineRange *r; 881 LineRange *r;
881 882
882 if (!drawBuffer) return; 883 if (!drawBuffer) return;
883 if (drawBuffer->isNull()) return; 884 if (drawBuffer->isNull()) return;
884 885
885 QPainter paint; 886 QPainter paint;
886 paint.begin(drawBuffer); 887 paint.begin(drawBuffer);
887 888
888 h = myDoc->fontHeight; 889 h = myDoc->fontHeight;
889 r = lineRanges; 890 r = lineRanges;
890 for (line = startLine; line <= endLine; line++) { 891 for (line = startLine; line <= endLine; line++) {
891 if (r->start < r->end) { 892 if (r->start < r->end) {
892//debug("painttextline %d %d %d", line, r->start, r->end); 893//debug("painttextline %d %d %d", line, r->start, r->end);
893 myDoc->paintTextLine(paint, line, r->start, r->end, myView->configFlags & KateView::cfShowTabs); 894 myDoc->paintTextLine(paint, line, r->start, r->end, myView->configFlags & KateView::cfShowTabs);
894 bitBlt(this, r->start - (xPos-2), line*h - yPos, drawBuffer, 0, 0, 895 bitBlt(this, r->start - (xPos-2), line*h - yPos, drawBuffer, 0, 0,
895 r->end - r->start, h); 896 r->end - r->start, h);
896 leftBorder->paintLine(line); 897 leftBorder->paintLine(line);
897 } 898 }
898 r++; 899 r++;
899 } 900 }
900 901
901 paint.end(); 902 paint.end();
902} 903}
903 904
904void KateViewInternal::paintCursor() { 905void KateViewInternal::paintCursor() {
905 int h, y, x; 906 int h, y, x;
906 static int cx = 0, cy = 0, ch = 0; 907 static int cx = 0, cy = 0, ch = 0;
907 908
908 h = myDoc->fontHeight; 909 h = myDoc->fontHeight;
909 y = h*cursor.y - yPos; 910 y = h*cursor.y - yPos;
910 x = cXPos - (xPos-2); 911 x = cXPos - (xPos-2);
911 912
912 if(myDoc->myFont != font()) setFont(myDoc->myFont); 913 if(myDoc->myFont != font()) setFont(myDoc->myFont);
913 if(cx != x || cy != y || ch != h){ 914 if(cx != x || cy != y || ch != h){
914 cx = x; 915 cx = x;
915 cy = y; 916 cy = y;
916 ch = h; 917 ch = h;
917 setMicroFocusHint(cx, cy, 0, ch - 2); 918 setMicroFocusHint(cx, cy, 0, ch - 2);
918 } 919 }
919 920
920 QPainter paint; 921 QPainter paint;
921 if (cursorOn) { 922 if (cursorOn) {
922 paint.begin(this); 923 paint.begin(this);
923 paint.setClipping(false); 924 paint.setClipping(false);
924 paint.setPen(myDoc->cursorCol(cursor.x,cursor.y)); 925 paint.setPen(myDoc->cursorCol(cursor.x,cursor.y));
925 926
926 h += y - 1; 927 h += y - 1;
927 paint.drawLine(x, y, x, h); 928 paint.drawLine(x, y, x, h);
928 929
929 paint.end(); 930 paint.end();
930 } else { if (drawBuffer && !drawBuffer->isNull()) { 931 } else { if (drawBuffer && !drawBuffer->isNull()) {
931 paint.begin(drawBuffer); 932 paint.begin(drawBuffer);
932 myDoc->paintTextLine(paint, cursor.y, cXPos - 2, cXPos + 3, myView->configFlags & KateView::cfShowTabs); 933 myDoc->paintTextLine(paint, cursor.y, cXPos - 2, cXPos + 3, myView->configFlags & KateView::cfShowTabs);
933 bitBlt(this,x - 2,y, drawBuffer, 0, 0, 5, h); 934 bitBlt(this,x - 2,y, drawBuffer, 0, 0, 5, h);
934 paint.end(); } 935 paint.end(); }
935 } 936 }
936 937
937} 938}
938 939
939void KateViewInternal::paintBracketMark() { 940void KateViewInternal::paintBracketMark() {
940 int y; 941 int y;
941 942
942 y = myDoc->fontHeight*(bm.cursor.y +1) - yPos -1; 943 y = myDoc->fontHeight*(bm.cursor.y +1) - yPos -1;
943 944
944 QPainter paint; 945 QPainter paint;
945 paint.begin(this); 946 paint.begin(this);
946 paint.setPen(myDoc->cursorCol(bm.cursor.x, bm.cursor.y)); 947 paint.setPen(myDoc->cursorCol(bm.cursor.x, bm.cursor.y));
947 948
948 paint.drawLine(bm.sXPos - (xPos-2), y, bm.eXPos - (xPos-2) -1, y); 949 paint.drawLine(bm.sXPos - (xPos-2), y, bm.eXPos - (xPos-2) -1, y);
949 paint.end(); 950 paint.end();
950} 951}
951 952
952void KateViewInternal::placeCursor(int x, int y, int flags) { 953void KateViewInternal::placeCursor(int x, int y, int flags) {
953 VConfig c; 954 VConfig c;
954 955
955 getVConfig(c); 956 getVConfig(c);
956 c.flags |= flags; 957 c.flags |= flags;
957 cursor.y = (yPos + y)/myDoc->fontHeight; 958 cursor.y = (yPos + y)/myDoc->fontHeight;
958 cXPos = cOldXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor,xPos-2 + x); 959 cXPos = cOldXPos = myDoc->textWidth(c.flags & KateView::cfWrapCursor, cursor,xPos-2 + x);
959 changeState(c); 960 changeState(c);
960} 961}
961 962
962// given physical coordinates, report whether the text there is selected 963// given physical coordinates, report whether the text there is selected
963bool KateViewInternal::isTargetSelected(int x, int y) { 964bool KateViewInternal::isTargetSelected(int x, int y) {
964 965
965 y = (yPos + y) / myDoc->fontHeight; 966 y = (yPos + y) / myDoc->fontHeight;
966 967
967 TextLine::Ptr line = myDoc->getTextLine(y); 968 TextLine::Ptr line = myDoc->getTextLine(y);
968 if (!line) 969 if (!line)
969 return false; 970 return false;
970 971
971 x = myDoc->textPos(line, x); 972 x = myDoc->textPos(line, x);
972 973
973 return line->isSelected(x); 974 return line->isSelected(x);
974} 975}
975 976
976void KateViewInternal::focusInEvent(QFocusEvent *) { 977void KateViewInternal::focusInEvent(QFocusEvent *) {
977// debug("got focus %d",cursorTimer); 978// debug("got focus %d",cursorTimer);
978 979
979 if (!cursorTimer) { 980 if (!cursorTimer) {
980 cursorTimer = startTimer(KApplication::cursorFlashTime() / 2); 981 cursorTimer = startTimer(KApplication::cursorFlashTime() / 2);
981 cursorOn = true; 982 cursorOn = true;
982 paintCursor(); 983 paintCursor();
983 } 984 }
984} 985}
985 986
986void KateViewInternal::focusOutEvent(QFocusEvent *) { 987void KateViewInternal::focusOutEvent(QFocusEvent *) {
987// debug("lost focus %d", cursorTimer); 988// debug("lost focus %d", cursorTimer);
988 989
989 if (cursorTimer) { 990 if (cursorTimer) {
990 killTimer(cursorTimer); 991 killTimer(cursorTimer);
991 cursorTimer = 0; 992 cursorTimer = 0;
992 } 993 }
993 994
994 if (cursorOn) { 995 if (cursorOn) {
995 cursorOn = false; 996 cursorOn = false;
996 paintCursor(); 997 paintCursor();
997 } 998 }
998} 999}
999 1000
1000void KateViewInternal::keyPressEvent(QKeyEvent *e) { 1001void KateViewInternal::keyPressEvent(QKeyEvent *e) {
1001 VConfig c; 1002 VConfig c;
1002// int ascii; 1003// int ascii;
1003 1004
1004/* if (e->state() & AltButton) { 1005/* if (e->state() & AltButton) {
1005 e->ignore(); 1006 e->ignore();
1006 return; 1007 return;
1007 }*/ 1008 }*/
1008// debug("ascii %i, key %i, state %i",e->ascii(), e->key(), e->state()); 1009// debug("ascii %i, key %i, state %i",e->ascii(), e->key(), e->state());
1009 1010
1010 getVConfig(c); 1011 getVConfig(c);
1011// ascii = e->ascii(); 1012// ascii = e->ascii();
1012 1013
1013 if (!myView->isReadOnly()) { 1014 if (!myView->isReadOnly()) {
1014 if (c.flags & KateView::cfTabIndents && myDoc->hasMarkedText()) { 1015 if (c.flags & KateView::cfTabIndents && myDoc->hasMarkedText()) {
1015 if (e->key() == Qt::Key_Tab) { 1016 if (e->key() == Qt::Key_Tab) {
1016 myDoc->indent(c); 1017 myDoc->indent(c);
1017 myDoc->updateViews(); 1018 myDoc->updateViews();
1018 return; 1019 return;
1019 } 1020 }
1020 if (e->key() == Qt::Key_Backtab) { 1021 if (e->key() == Qt::Key_Backtab) {
1021 myDoc->unIndent(c); 1022 myDoc->unIndent(c);
1022 myDoc->updateViews(); 1023 myDoc->updateViews();
1023 return; 1024 return;
1024 } 1025 }
1025 } 1026 }
1026 if ( !(e->state() & ControlButton ) && myDoc->insertChars(c, e->text())) { 1027 if ( !(e->state() & ControlButton ) && myDoc->insertChars(c, e->text())) {
1027 myDoc->updateViews(); 1028 myDoc->updateViews();
1028 e->accept(); 1029 e->accept();
1029 return; 1030 return;
1030 } 1031 }
1031 } 1032 }
1032 e->ignore(); 1033 e->ignore();
1033} 1034}
1034 1035
1035void KateViewInternal::mousePressEvent(QMouseEvent *e) { 1036void KateViewInternal::mousePressEvent(QMouseEvent *e) {
1036 1037
1037 if (e->button() == LeftButton) { 1038 if (e->button() == LeftButton) {
1038 1039
1039 int flags; 1040 int flags;
1040 1041
1041 flags = 0; 1042 flags = 0;
1042 if (e->state() & ShiftButton) { 1043 if (e->state() & ShiftButton) {
1043 flags |= KateView::cfMark; 1044 flags |= KateView::cfMark;
1044 if (e->state() & ControlButton) flags |= KateView::cfMark | KateView::cfKeepSelection; 1045 if (e->state() & ControlButton) flags |= KateView::cfMark | KateView::cfKeepSelection;
1045 } 1046 }
1046 placeCursor(e->x(), e->y(), flags); 1047 placeCursor(e->x(), e->y(), flags);
1047 scrollX = 0; 1048 scrollX = 0;
1048 scrollY = 0; 1049 scrollY = 0;
1049 if (!scrollTimer) scrollTimer = startTimer(50); 1050 if (!scrollTimer) scrollTimer = startTimer(50);
1050 myDoc->updateViews(); 1051 myDoc->updateViews();
1051 } 1052 }
1052 if (e->button() == MidButton) { 1053 if (e->button() == MidButton) {
1053 placeCursor(e->x(), e->y()); 1054 placeCursor(e->x(), e->y());
1054 if (! myView->isReadOnly()) 1055 if (! myView->isReadOnly())
1055 myView->paste(); 1056 myView->paste();
1056 } 1057 }
1057 if (myView->rmbMenu && e->button() == RightButton) { 1058 if (myView->rmbMenu && e->button() == RightButton) {
1058 myView->rmbMenu->popup(mapToGlobal(e->pos())); 1059 myView->rmbMenu->popup(mapToGlobal(e->pos()));
1059 } 1060 }
1060 myView->mousePressEvent(e); // this doesn't do anything, does it? 1061 myView->mousePressEvent(e); // this doesn't do anything, does it?
1061 // it does :-), we need this for KDevelop, so please don't uncomment it again -Sandy 1062 // it does :-), we need this for KDevelop, so please don't uncomment it again -Sandy
1062} 1063}
1063 1064
1064void KateViewInternal::mouseDoubleClickEvent(QMouseEvent *e) { 1065void KateViewInternal::mouseDoubleClickEvent(QMouseEvent *e) {
1065 1066
1066 if (e->button() == LeftButton) { 1067 if (e->button() == LeftButton) {
1067 VConfig c; 1068 VConfig c;
1068 getVConfig(c); 1069 getVConfig(c);
1069 myDoc->selectWord(c.cursor, c.flags); 1070 myDoc->selectWord(c.cursor, c.flags);
1070 myDoc->updateViews(); 1071 myDoc->updateViews();
1071 } 1072 }
1072} 1073}
1073 1074
1074void KateViewInternal::mouseReleaseEvent(QMouseEvent *e) { 1075void KateViewInternal::mouseReleaseEvent(QMouseEvent *e) {
1075 1076
1076 if (e->button() == LeftButton) { 1077 if (e->button() == LeftButton) {
1077 if (myView->config() & KateView::cfMouseAutoCopy) myView->copy(); 1078 if (myView->config() & KateView::cfMouseAutoCopy) myView->copy();
1078 killTimer(scrollTimer); 1079 killTimer(scrollTimer);
1079 scrollTimer = 0; 1080 scrollTimer = 0;
1080 } 1081 }
1081} 1082}
1082 1083
1083void KateViewInternal::mouseMoveEvent(QMouseEvent *e) { 1084void KateViewInternal::mouseMoveEvent(QMouseEvent *e) {
1084 1085
1085 if (e->state() & LeftButton) { 1086 if (e->state() & LeftButton) {
1086 int flags; 1087 int flags;
1087 int d; 1088 int d;
1088 int x = e->x(), 1089 int x = e->x(),
1089 y = e->y(); 1090 y = e->y();
1090 1091
1091 mouseX = e->x(); 1092 mouseX = e->x();
1092 mouseY = e->y(); 1093 mouseY = e->y();
1093 scrollX = 0; 1094 scrollX = 0;
1094 scrollY = 0; 1095 scrollY = 0;
1095 d = myDoc->fontHeight; 1096 d = myDoc->fontHeight;
1096 if (mouseX < 0) { 1097 if (mouseX < 0) {
1097 mouseX = 0; 1098 mouseX = 0;
1098 scrollX = -d; 1099 scrollX = -d;
1099 } 1100 }
1100 if (mouseX > width()) { 1101 if (mouseX > width()) {
1101 mouseX = width(); 1102 mouseX = width();
1102 scrollX = d; 1103 scrollX = d;
1103 } 1104 }
1104 if (mouseY < 0) { 1105 if (mouseY < 0) {
1105 mouseY = 0; 1106 mouseY = 0;
1106 scrollY = -d; 1107 scrollY = -d;
1107 } 1108 }
1108 if (mouseY > height()) { 1109 if (mouseY > height()) {
1109 mouseY = height(); 1110 mouseY = height();
1110 scrollY = d; 1111 scrollY = d;
1111 } 1112 }
1112//debug("modifiers %d", ((KGuiCmdApp *) kapp)->getModifiers()); 1113//debug("modifiers %d", ((KGuiCmdApp *) kapp)->getModifiers());
1113 flags = KateView::cfMark; 1114 flags = KateView::cfMark;
1114 if (e->state() & ControlButton) flags |= KateView::cfKeepSelection; 1115 if (e->state() & ControlButton) flags |= KateView::cfKeepSelection;
1115 placeCursor(mouseX, mouseY, flags); 1116 placeCursor(mouseX, mouseY, flags);
1116 myDoc->updateViews(/*ufNoScroll*/); 1117 myDoc->updateViews(/*ufNoScroll*/);
1117 } 1118 }
1118} 1119}
1119 1120
1120 1121
1121 1122
1122void KateViewInternal::wheelEvent( QWheelEvent *e ) 1123void KateViewInternal::wheelEvent( QWheelEvent *e )
1123{ 1124{
1124 if( yScroll->isVisible() == true ) 1125 if( yScroll->isVisible() == true )
1125 { 1126 {
1126 QApplication::sendEvent( yScroll, e ); 1127 QApplication::sendEvent( yScroll, e );
1127 } 1128 }
1128} 1129}
1129 1130
1130 1131
1131 1132
1132void KateViewInternal::paintEvent(QPaintEvent *e) { 1133void KateViewInternal::paintEvent(QPaintEvent *e) {
1133 int xStart, xEnd; 1134 int xStart, xEnd;
1134 int h; 1135 int h;
1135 int line, y, yEnd; 1136 int line, y, yEnd;
1136 1137
1137 QRect updateR = e->rect(); 1138 QRect updateR = e->rect();
1138 1139
1139 if (!drawBuffer) return; 1140 if (!drawBuffer) return;
1140 if (drawBuffer->isNull()) return; 1141 if (drawBuffer->isNull()) return;
1141 1142
1142 QPainter paint; 1143 QPainter paint;
1143 paint.begin(drawBuffer); 1144 paint.begin(drawBuffer);
1144 1145
1145 xStart = xPos-2 + updateR.x(); 1146 xStart = xPos-2 + updateR.x();
1146 xEnd = xStart + updateR.width(); 1147 xEnd = xStart + updateR.width();
1147 1148
1148 h = myDoc->fontHeight; 1149 h = myDoc->fontHeight;
1149 line = (yPos + updateR.y()) / h; 1150 line = (yPos + updateR.y()) / h;
1150 y = line*h - yPos; 1151 y = line*h - yPos;
1151 yEnd = updateR.y() + updateR.height(); 1152 yEnd = updateR.y() + updateR.height();
1152 waitForPreHighlight=myDoc->needPreHighlight(waitForPreHighlight=line+((long)(yEnd-y)/h)+5); 1153 waitForPreHighlight=myDoc->needPreHighlight(waitForPreHighlight=line+((long)(yEnd-y)/h)+5);
1153 1154
1154 while (y < yEnd) 1155 while (y < yEnd)
1155 { 1156 {
1156 TextLine *textLine; 1157 TextLine *textLine;
1157 int ctxNum = 0; 1158 int ctxNum = 0;
1158 myDoc->paintTextLine(paint, line, xStart, xEnd, myView->configFlags & KateView::cfShowTabs); 1159 myDoc->paintTextLine(paint, line, xStart, xEnd, myView->configFlags & KateView::cfShowTabs);
1159 bitBlt(this, updateR.x(), y, drawBuffer, 0, 0, updateR.width(), h); 1160 bitBlt(this, updateR.x(), y, drawBuffer, 0, 0, updateR.width(), h);
1160 leftBorder->paintLine(line); 1161 leftBorder->paintLine(line);
1161 line++; 1162 line++;
1162 y += h; 1163 y += h;
1163 } 1164 }
1164 paint.end(); 1165 paint.end();
1165 1166
1166 if (cursorOn) paintCursor(); 1167 if (cursorOn) paintCursor();
1167 if (bm.eXPos > bm.sXPos) paintBracketMark(); 1168 if (bm.eXPos > bm.sXPos) paintBracketMark();
1168} 1169}
1169 1170
1170void KateViewInternal::resizeEvent(QResizeEvent *) 1171void KateViewInternal::resizeEvent(QResizeEvent *)
1171{ 1172{
1172 drawBuffer->resize (width(), myDoc->fontHeight); 1173 drawBuffer->resize (width(), myDoc->fontHeight);
1173 leftBorder->resize(iconBorderWidth, height()); 1174 leftBorder->resize(iconBorderWidth, height());
1174} 1175}
1175 1176
1176void KateViewInternal::timerEvent(QTimerEvent *e) { 1177void KateViewInternal::timerEvent(QTimerEvent *e) {
1177 if (e->timerId() == cursorTimer) { 1178 if (e->timerId() == cursorTimer) {
1178 cursorOn = !cursorOn; 1179 cursorOn = !cursorOn;
1179 paintCursor(); 1180 paintCursor();
1180 } 1181 }
1181 if (e->timerId() == scrollTimer && (scrollX | scrollY)) { 1182 if (e->timerId() == scrollTimer && (scrollX | scrollY)) {
1182 xScroll->setValue(xPos + scrollX); 1183 xScroll->setValue(xPos + scrollX);
1183 yScroll->setValue(yPos + scrollY); 1184 yScroll->setValue(yPos + scrollY);
1184 1185
1185 placeCursor(mouseX, mouseY, KateView::cfMark); 1186 placeCursor(mouseX, mouseY, KateView::cfMark);
1186 myDoc->updateViews(/*ufNoScroll*/); 1187 myDoc->updateViews(/*ufNoScroll*/);
1187 } 1188 }
1188} 1189}
1189 1190
1190uint KateView::uniqueID = 0; 1191uint KateView::uniqueID = 0;
1191 1192
1192KateView::KateView(KateDocument *doc, QWidget *parent, const char * name) : Kate::View (doc, parent, name) 1193KateView::KateView(KateDocument *doc, QWidget *parent, const char * name) : Kate::View (doc, parent, name)
1193{ 1194{
1194 1195
1195 myViewID = uniqueID; 1196 myViewID = uniqueID;
1196 uniqueID++; 1197 uniqueID++;
1197 1198
1198 active = false; 1199 active = false;
1199 myIconBorder = false; 1200 myIconBorder = false;
1200 1201
1201 myDoc = doc; 1202 myDoc = doc;
1202 myViewInternal = new KateViewInternal (this,doc); 1203 myViewInternal = new KateViewInternal (this,doc);
1203 myViewInternal->move(2, 2); 1204 myViewInternal->move(2, 2);
1204 myViewInternal->leftBorder = new KateIconBorder(this, myViewInternal); 1205 myViewInternal->leftBorder = new KateIconBorder(this, myViewInternal);
1205 myViewInternal->leftBorder->setGeometry(2, 2, myViewInternal->iconBorderWidth, myViewInternal->iconBorderHeight); 1206 myViewInternal->leftBorder->setGeometry(2, 2, myViewInternal->iconBorderWidth, myViewInternal->iconBorderHeight);
1206 myViewInternal->leftBorder->hide(); 1207 myViewInternal->leftBorder->hide();
1207 1208
1208 doc->addView( this ); 1209 doc->addView( this );
1209 1210
1210 1211
1211 // some defaults 1212 // some defaults
1212 configFlags = KateView::cfAutoIndent | KateView::cfBackspaceIndents 1213 configFlags = KateView::cfAutoIndent | KateView::cfBackspaceIndents
1213 | KateView::cfTabIndents | KateView::cfKeepIndentProfile 1214 | KateView::cfTabIndents | KateView::cfKeepIndentProfile
1214 | KateView::cfRemoveSpaces 1215 | KateView::cfRemoveSpaces
1215 | KateView::cfDelOnInput | KateView::cfMouseAutoCopy | KateView::cfWrapCursor 1216 | KateView::cfDelOnInput | KateView::cfMouseAutoCopy | KateView::cfWrapCursor
1216 | KateView::cfGroupUndo | KateView::cfShowTabs | KateView::cfSmartHome; 1217 | KateView::cfGroupUndo | KateView::cfShowTabs | KateView::cfSmartHome;
1217 1218
1218 searchFlags = 0; 1219 searchFlags = 0;
1219 replacePrompt = 0L; 1220 replacePrompt = 0L;
1220 rmbMenu = 0L; 1221 rmbMenu = 0L;
1221 1222
1222 1223
1223 setFocusProxy( myViewInternal ); 1224 setFocusProxy( myViewInternal );
1224 myViewInternal->setFocus(); 1225 myViewInternal->setFocus();
1225 resize(parent->width() -4, parent->height() -4); 1226 resize(parent->width() -4, parent->height() -4);
1226 1227
1227 1228
1228 myViewInternal->installEventFilter( this ); 1229 myViewInternal->installEventFilter( this );
1229 1230
1230 //setupActions(); 1231 //setupActions();
1231 1232
1232 connect( this, SIGNAL( newStatus() ), this, SLOT( slotUpdate() ) ); 1233 connect( this, SIGNAL( newStatus() ), this, SLOT( slotUpdate() ) );
1233 connect( this, SIGNAL( newUndo() ), this, SLOT( slotNewUndo() ) ); 1234 connect( this, SIGNAL( newUndo() ), this, SLOT( slotNewUndo() ) );
1234 connect( doc, SIGNAL( fileNameChanged() ), this, SLOT( slotFileStatusChanged() ) ); 1235 connect( doc, SIGNAL( fileNameChanged() ), this, SLOT( slotFileStatusChanged() ) );
1235 connect( doc, SIGNAL( highlightChanged() ), this, SLOT( slotHighlightChanged() ) ); 1236 connect( doc, SIGNAL( highlightChanged() ), this, SLOT( slotHighlightChanged() ) );
1236 1237
1237 readConfig(); 1238 readConfig();
1238// setHighlight->setCurrentItem(getHl()); 1239// setHighlight->setCurrentItem(getHl());
1239 slotUpdate(); 1240 slotUpdate();
1240} 1241}
1241 1242
1242KateView::~KateView() 1243KateView::~KateView()
1243{ 1244{
1244 writeConfig(); 1245 writeConfig();
1245 1246
1246 if (myDoc && !myDoc->m_bSingleViewMode) 1247 if (myDoc && !myDoc->m_bSingleViewMode)
1247 myDoc->removeView( this ); 1248 myDoc->removeView( this );
1248 1249
1249 delete myViewInternal; 1250 delete myViewInternal;
1250} 1251}
1251 1252
1252#if 0 1253#if 0
1253void KateView::setupActions() 1254void KateView::setupActions()
1254{ 1255{
1255#if 0 1256#if 0
1256 KStdAction::close( this, SLOT(flush()), actionCollection(), "file_close" ); 1257 KStdAction::close( this, SLOT(flush()), actionCollection(), "file_close" );
1257 1258
1258 KStdAction::save(this, SLOT(save()), actionCollection()); 1259 KStdAction::save(this, SLOT(save()), actionCollection());
1259 1260
1260 // setup edit menu 1261 // setup edit menu
1261 editUndo = KStdAction::undo(this, SLOT(undo()), actionCollection()); 1262 editUndo = KStdAction::undo(this, SLOT(undo()), actionCollection());
1262 editRedo = KStdAction::redo(this, SLOT(redo()), actionCollection()); 1263 editRedo = KStdAction::redo(this, SLOT(redo()), actionCollection());
1263 editUndoHist = new KAction(i18n("Undo/Redo &History..."), 0, this, SLOT(undoHistory()), 1264 editUndoHist = new KAction(i18n("Undo/Redo &History..."), 0, this, SLOT(undoHistory()),
1264 actionCollection(), "edit_undoHistory"); 1265 actionCollection(), "edit_undoHistory");
1265 KStdAction::cut(this, SLOT(cut()), actionCollection()); 1266 KStdAction::cut(this, SLOT(cut()), actionCollection());
1266 KStdAction::copy(this, SLOT(copy()), actionCollection()); 1267 KStdAction::copy(this, SLOT(copy()), actionCollection());
1267 KStdAction::paste(this, SLOT(paste()), actionCollection()); 1268 KStdAction::paste(this, SLOT(paste()), actionCollection());
1268 1269
1269 if ( myDoc->hasBrowserExtension() ) 1270 if ( myDoc->hasBrowserExtension() )
1270 { 1271 {
1271 KStdAction::saveAs(this, SLOT(saveAs()), myDoc->actionCollection()); 1272 KStdAction::saveAs(this, SLOT(saveAs()), myDoc->actionCollection());
1272 KStdAction::find(this, SLOT(find()), myDoc->actionCollection(), "find"); 1273 KStdAction::find(this, SLOT(find()), myDoc->actionCollection(), "find");
1273 KStdAction::findNext(this, SLOT(findAgain()), myDoc->actionCollection(), "find_again"); 1274 KStdAction::findNext(this, SLOT(findAgain()), myDoc->actionCollection(), "find_again");
1274 KStdAction::findPrev(this, SLOT(findPrev()), myDoc->actionCollection(), "find_prev"); 1275 KStdAction::findPrev(this, SLOT(findPrev()), myDoc->actionCollection(), "find_prev");
1275 KStdAction::gotoLine(this, SLOT(gotoLine()), myDoc->actionCollection(), "goto_line" ); 1276 KStdAction::gotoLine(this, SLOT(gotoLine()), myDoc->actionCollection(), "goto_line" );
1276 new KAction(i18n("&Configure Editor..."), 0, this, SLOT(configDialog()),myDoc->actionCollection(), "set_confdlg"); 1277 new KAction(i18n("&Configure Editor..."), 0, this, SLOT(configDialog()),myDoc->actionCollection(), "set_confdlg");
1277 setHighlight = new KSelectAction(i18n("&Highlight Mode"), 0, myDoc->actionCollection(), "set_highlight"); 1278 setHighlight = new KSelectAction(i18n("&Highlight Mode"), 0, myDoc->actionCollection(), "set_highlight");
1278 KStdAction::selectAll(this, SLOT(selectAll()), myDoc->actionCollection(), "select_all"); 1279 KStdAction::selectAll(this, SLOT(selectAll()), myDoc->actionCollection(), "select_all");
1279 new KAction(i18n("&Deselect All"), 0, this, SLOT(deselectAll()), 1280 new KAction(i18n("&Deselect All"), 0, this, SLOT(deselectAll()),
1280 myDoc->actionCollection(), "unselect_all"); 1281 myDoc->actionCollection(), "unselect_all");
1281 new KAction(i18n("Invert &Selection"), 0, this, SLOT(invertSelection()), 1282 new KAction(i18n("Invert &Selection"), 0, this, SLOT(invertSelection()),
1282 myDoc->actionCollection(), "invert_select"); 1283 myDoc->actionCollection(), "invert_select");
1283 1284
1284 new KAction(i18n("Increase Font Sizes"), "viewmag+", 0, this, SLOT(slotIncFontSizes()), 1285 new KAction(i18n("Increase Font Sizes"), "viewmag+", 0, this, SLOT(slotIncFontSizes()),
1285 myDoc->actionCollection(), "incFontSizes"); 1286 myDoc->actionCollection(), "incFontSizes");
1286 new KAction(i18n("Decrease Font Sizes"), "viewmag-", 0, this, SLOT(slotDecFontSizes()), 1287 new KAction(i18n("Decrease Font Sizes"), "viewmag-", 0, this, SLOT(slotDecFontSizes()),
1287 myDoc->actionCollection(), "decFontSizes"); 1288 myDoc->actionCollection(), "decFontSizes");
1288 } 1289 }
1289 else 1290 else
1290 { 1291 {
1291 KStdAction::saveAs(this, SLOT(saveAs()), actionCollection()); 1292 KStdAction::saveAs(this, SLOT(saveAs()), actionCollection());
1292 KStdAction::find(this, SLOT(find()), actionCollection()); 1293 KStdAction::find(this, SLOT(find()), actionCollection());
1293 KStdAction::findNext(this, SLOT(findAgain()), actionCollection()); 1294 KStdAction::findNext(this, SLOT(findAgain()), actionCollection());
1294 KStdAction::findPrev(this, SLOT(findPrev()), actionCollection(), "edit_find_prev"); 1295 KStdAction::findPrev(this, SLOT(findPrev()), actionCollection(), "edit_find_prev");
1295 KStdAction::gotoLine(this, SLOT(gotoLine()), actionCollection()); 1296 KStdAction::gotoLine(this, SLOT(gotoLine()), actionCollection());
1296 new KAction(i18n("&Configure Editor..."), 0, this, SLOT(configDialog()),actionCollection(), "set_confdlg"); 1297 new KAction(i18n("&Configure Editor..."), 0, this, SLOT(configDialog()),actionCollection(), "set_confdlg");
1297 setHighlight = new KSelectAction(i18n("&Highlight Mode"), 0, actionCollection(), "set_highlight"); 1298 setHighlight = new KSelectAction(i18n("&Highlight Mode"), 0, actionCollection(), "set_highlight");
1298 KStdAction::selectAll(this, SLOT(selectAll()), actionCollection()); 1299 KStdAction::selectAll(this, SLOT(selectAll()), actionCollection());
1299 new KAction(i18n("&Deselect All"), 0, this, SLOT(deselectAll()), 1300 new KAction(i18n("&Deselect All"), 0, this, SLOT(deselectAll()),
1300 actionCollection(), "edit_deselectAll"); 1301 actionCollection(), "edit_deselectAll");
1301 new KAction(i18n("Invert &Selection"), 0, this, SLOT(invertSelection()), 1302 new KAction(i18n("Invert &Selection"), 0, this, SLOT(invertSelection()),
1302 actionCollection(), "edit_invertSelection"); 1303 actionCollection(), "edit_invertSelection");
1303 1304
1304 new KAction(i18n("Increase Font Sizes"), "viewmag+", 0, this, SLOT(slotIncFontSizes()), 1305 new KAction(i18n("Increase Font Sizes"), "viewmag+", 0, this, SLOT(slotIncFontSizes()),
1305 actionCollection(), "incFontSizes"); 1306 actionCollection(), "incFontSizes");
1306 new KAction(i18n("Decrease Font Sizes"), "viewmag-", 0, this, SLOT(slotDecFontSizes()), 1307 new KAction(i18n("Decrease Font Sizes"), "viewmag-", 0, this, SLOT(slotDecFontSizes()),
1307 actionCollection(), "decFontSizes"); 1308 actionCollection(), "decFontSizes");
1308 } 1309 }
1309 1310
1310 new KAction(i18n("Apply Word Wrap"), 0, myDoc, SLOT(applyWordWrap()), actionCollection(), "edit_apply_wordwrap"); 1311 new KAction(i18n("Apply Word Wrap"), 0, myDoc, SLOT(applyWordWrap()), actionCollection(), "edit_apply_wordwrap");
1311 1312
1312 KStdAction::replace(this, SLOT(replace()), actionCollection()); 1313 KStdAction::replace(this, SLOT(replace()), actionCollection());
1313 1314
1314 new KAction(i18n("Editing Co&mmand"), Qt::CTRL+Qt::Key_M, this, SLOT(slotEditCommand()), 1315 new KAction(i18n("Editing Co&mmand"), Qt::CTRL+Qt::Key_M, this, SLOT(slotEditCommand()),
1315 actionCollection(), "edit_cmd"); 1316 actionCollection(), "edit_cmd");
1316 1317
1317 // setup bookmark menu 1318 // setup bookmark menu
1318 bookmarkToggle = new KAction(i18n("Toggle &Bookmark"), Qt::CTRL+Qt::Key_B, this, SLOT(toggleBookmark()), actionCollection(), "edit_bookmarkToggle"); 1319 bookmarkToggle = new KAction(i18n("Toggle &Bookmark"), Qt::CTRL+Qt::Key_B, this, SLOT(toggleBookmark()), actionCollection(), "edit_bookmarkToggle");
1319 bookmarkClear = new KAction(i18n("Clear Bookmarks"), 0, this, SLOT(clearBookmarks()), actionCollection(), "edit_bookmarksClear"); 1320 bookmarkClear = new KAction(i18n("Clear Bookmarks"), 0, this, SLOT(clearBookmarks()), actionCollection(), "edit_bookmarksClear");
1320 1321
1321 // connect settings menu aboutToshow 1322 // connect settings menu aboutToshow
1322 bookmarkMenu = new KActionMenu(i18n("&Bookmarks"), actionCollection(), "bookmarks"); 1323 bookmarkMenu = new KActionMenu(i18n("&Bookmarks"), actionCollection(), "bookmarks");
1323 connect(bookmarkMenu->popupMenu(), SIGNAL(aboutToShow()), this, SLOT(bookmarkMenuAboutToShow())); 1324 connect(bookmarkMenu->popupMenu(), SIGNAL(aboutToShow()), this, SLOT(bookmarkMenuAboutToShow()));
1324 1325
1325 new KToggleAction(i18n("Show &IconBorder"), Key_F6, this, SLOT(toggleIconBorder()), actionCollection(), "view_border"); 1326 new KToggleAction(i18n("Show &IconBorder"), Key_F6, this, SLOT(toggleIconBorder()), actionCollection(), "view_border");
1326 1327
1327 // setup Tools menu 1328 // setup Tools menu
1328 KStdAction::spelling(this, SLOT(spellcheck()), actionCollection()); 1329 KStdAction::spelling(this, SLOT(spellcheck()), actionCollection());
1329 new KAction(i18n("&Indent"), "indent", Qt::CTRL+Qt::Key_I, this, SLOT(indent()), 1330 new KAction(i18n("&Indent"), "indent", Qt::CTRL+Qt::Key_I, this, SLOT(indent()),
1330 actionCollection(), "tools_indent"); 1331 actionCollection(), "tools_indent");
1331 new KAction(i18n("&Unindent"), "unindent", Qt::CTRL+Qt::Key_U, this, SLOT(unIndent()), 1332 new KAction(i18n("&Unindent"), "unindent", Qt::CTRL+Qt::Key_U, this, SLOT(unIndent()),
1332 actionCollection(), "tools_unindent"); 1333 actionCollection(), "tools_unindent");
1333 new KAction(i18n("&Clean Indentation"), 0, this, SLOT(cleanIndent()), 1334 new KAction(i18n("&Clean Indentation"), 0, this, SLOT(cleanIndent()),
1334 actionCollection(), "tools_cleanIndent"); 1335 actionCollection(), "tools_cleanIndent");
1335 new KAction(i18n("C&omment"), CTRL+Qt::Key_NumberSign, this, SLOT(comment()), 1336 new KAction(i18n("C&omment"), CTRL+Qt::Key_NumberSign, this, SLOT(comment()),
1336 actionCollection(), "tools_comment"); 1337 actionCollection(), "tools_comment");
1337 new KAction(i18n("Unco&mment"), CTRL+SHIFT+Qt::Key_NumberSign, this, SLOT(uncomment()), 1338 new KAction(i18n("Unco&mment"), CTRL+SHIFT+Qt::Key_NumberSign, this, SLOT(uncomment()),
1338 actionCollection(), "tools_uncomment"); 1339 actionCollection(), "tools_uncomment");
1339 1340
1340 setVerticalSelection = new KToggleAction(i18n("&Vertical Selection"), Key_F4, this, SLOT(toggleVertical()), 1341 setVerticalSelection = new KToggleAction(i18n("&Vertical Selection"), Key_F4, this, SLOT(toggleVertical()),
1341 actionCollection(), "set_verticalSelect"); 1342 actionCollection(), "set_verticalSelect");
1342 1343
1343 connect(setHighlight, SIGNAL(activated(int)), this, SLOT(setHl(int))); 1344 connect(setHighlight, SIGNAL(activated(int)), this, SLOT(setHl(int)));
1344 QStringList list; 1345 QStringList list;
1345 for (int z = 0; z < HlManager::self()->highlights(); z++) 1346 for (int z = 0; z < HlManager::self()->highlights(); z++)
1346 list.append(HlManager::self()->hlName(z)); 1347 list.append(HlManager::self()->hlName(z));
1347 setHighlight->setItems(list); 1348 setHighlight->setItems(list);
1348 1349
1349 setEndOfLine = new KSelectAction(i18n("&End Of Line"), 0, actionCollection(), "set_eol"); 1350 setEndOfLine = new KSelectAction(i18n("&End Of Line"), 0, actionCollection(), "set_eol");
1350 connect(setEndOfLine, SIGNAL(activated(int)), this, SLOT(setEol(int))); 1351 connect(setEndOfLine, SIGNAL(activated(int)), this, SLOT(setEol(int)));
1351 list.clear(); 1352 list.clear();
1352 list.append("&Unix"); 1353 list.append("&Unix");
1353 list.append("&Windows/Dos"); 1354 list.append("&Windows/Dos");
1354 list.append("&Macintosh"); 1355 list.append("&Macintosh");
1355 setEndOfLine->setItems(list); 1356 setEndOfLine->setItems(list);
1356#endif 1357#endif
1357} 1358}
1358#endif 1359#endif
1359 1360
1360void KateView::slotUpdate() 1361void KateView::slotUpdate()
1361{ 1362{
1362 int cfg = config(); 1363 int cfg = config();
1363 1364
1364#warning fixme setVerticalSelection->setChecked(cfg & KateView::cfVerticalSelect); 1365#warning fixme setVerticalSelection->setChecked(cfg & KateView::cfVerticalSelect);
1365 1366
1366 slotNewUndo(); 1367 slotNewUndo();
1367} 1368}
1368void KateView::slotFileStatusChanged() 1369void KateView::slotFileStatusChanged()
1369{ 1370{
1370 int eol = getEol(); 1371 int eol = getEol();
1371 eol = eol>=1 ? eol : 0; 1372 eol = eol>=1 ? eol : 0;
1372 1373
1373#warning fixme setEndOfLine->setCurrentItem(eol); 1374#warning fixme setEndOfLine->setCurrentItem(eol);
1374} 1375}
1375void KateView::slotNewUndo() 1376void KateView::slotNewUndo()
1376{ 1377{
1377#if 0 1378#if 0
1378 int state = undoState(); 1379 int state = undoState();
1379 1380
1380 editUndoHist->setEnabled(state & 1 || state & 2); 1381 editUndoHist->setEnabled(state & 1 || state & 2);
1381 1382
1382 QString t = i18n("Und&o"); // it would be nicer to fetch the original string 1383 QString t = i18n("Und&o"); // it would be nicer to fetch the original string
1383 if (state & 1) { 1384 if (state & 1) {
1384 editUndo->setEnabled(true); 1385 editUndo->setEnabled(true);
1385 t += ' '; 1386 t += ' ';
1386 t += i18n(undoTypeName(nextUndoType())); 1387 t += i18n(undoTypeName(nextUndoType()));
1387 } else { 1388 } else {
1388 editUndo->setEnabled(false); 1389 editUndo->setEnabled(false);
1389 } 1390 }
1390 editUndo->setText(t); 1391 editUndo->setText(t);
1391 1392
1392 t = i18n("Re&do"); // it would be nicer to fetch the original string 1393 t = i18n("Re&do"); // it would be nicer to fetch the original string
1393 if (state & 2) { 1394 if (state & 2) {
1394 editRedo->setEnabled(true); 1395 editRedo->setEnabled(true);
1395 t += ' '; 1396 t += ' ';
1396 t += i18n(undoTypeName(nextRedoType())); 1397 t += i18n(undoTypeName(nextRedoType()));
1397 } else { 1398 } else {
1398 editRedo->setEnabled(false); 1399 editRedo->setEnabled(false);
1399 } 1400 }
1400 editRedo->setText(t); 1401 editRedo->setText(t);
1401#endif 1402#endif
1402} 1403}
1403 1404
1404void KateView::slotHighlightChanged() 1405void KateView::slotHighlightChanged()
1405{ 1406{
1406// setHighlight->setCurrentItem(getHl()); 1407// setHighlight->setCurrentItem(getHl());
1407} 1408}
1408 1409
1409 1410
1410void KateView::keyPressEvent( QKeyEvent *ev ) 1411void KateView::keyPressEvent( QKeyEvent *ev )
1411{ 1412{
1412 switch ( ev->key() ) 1413 switch ( ev->key() )
1413 { 1414 {
1414 case Key_Left: 1415 case Key_Left:
1415 if ( ev->state() & ShiftButton ) 1416 if ( ev->state() & ShiftButton )
1416 { 1417 {
1417 if ( ev->state() & ControlButton ) 1418 if ( ev->state() & ControlButton )
1418 shiftWordLeft(); 1419 shiftWordLeft();
1419 else 1420 else
1420 shiftCursorLeft(); 1421 shiftCursorLeft();
1421 } 1422 }
1422 else if ( ev->state() & ControlButton ) 1423 else if ( ev->state() & ControlButton )
1423 wordLeft(); 1424 wordLeft();
1424 else 1425 else
1425 cursorLeft(); 1426 cursorLeft();
1426 break; 1427 break;
1427 case Key_Right: 1428 case Key_Right:
1428 if ( ev->state() & ShiftButton ) 1429 if ( ev->state() & ShiftButton )
1429 { 1430 {
1430 if ( ev->state() & ControlButton ) 1431 if ( ev->state() & ControlButton )
1431 shiftWordRight(); 1432 shiftWordRight();
1432 else 1433 else
1433 shiftCursorRight(); 1434 shiftCursorRight();
1434 } 1435 }
1435 else if ( ev->state() & ControlButton ) 1436 else if ( ev->state() & ControlButton )
1436 wordRight(); 1437 wordRight();
1437 else 1438 else
1438 cursorRight(); 1439 cursorRight();
1439 break; 1440 break;
1440 case Key_Home: 1441 case Key_Home:
1441 if ( ev->state() & ShiftButton ) 1442 if ( ev->state() & ShiftButton )
1442 { 1443 {
1443 if ( ev->state() & ControlButton ) 1444 if ( ev->state() & ControlButton )
1444 shiftTop(); 1445 shiftTop();
1445 else 1446 else
1446 shiftHome(); 1447 shiftHome();
1447 } 1448 }
1448 else if ( ev->state() & ControlButton ) 1449 else if ( ev->state() & ControlButton )
1449 top(); 1450 top();
1450 else 1451 else
1451 home(); 1452 home();
1452 break; 1453 break;
1453 case Key_End: 1454 case Key_End:
1454 if ( ev->state() & ShiftButton ) 1455 if ( ev->state() & ShiftButton )
1455 { 1456 {
1456 if ( ev->state() & ControlButton ) 1457 if ( ev->state() & ControlButton )
1457 shiftBottom(); 1458 shiftBottom();
1458 else 1459 else
1459 shiftEnd(); 1460 shiftEnd();
1460 } 1461 }
1461 else if ( ev->state() & ControlButton ) 1462 else if ( ev->state() & ControlButton )
1462 bottom(); 1463 bottom();
1463 else 1464 else
1464 end(); 1465 end();
1465 break; 1466 break;
1466 case Key_Up: 1467 case Key_Up:
1467 if ( ev->state() & ShiftButton ) 1468 if ( ev->state() & ShiftButton )
1468 shiftUp(); 1469 shiftUp();
1469 else if ( ev->state() & ControlButton ) 1470 else if ( ev->state() & ControlButton )
1470 scrollUp(); 1471 scrollUp();
1471 else 1472 else
1472 up(); 1473 up();
1473 break; 1474 break;
1474 case Key_Down: 1475 case Key_Down:
1475 if ( ev->state() & ShiftButton ) 1476 if ( ev->state() & ShiftButton )
1476 shiftDown(); 1477 shiftDown();
1477 else if ( ev->state() & ControlButton ) 1478 else if ( ev->state() & ControlButton )
1478 scrollDown(); 1479 scrollDown();
1479 else 1480 else
1480 down(); 1481 down();
1481 break; 1482 break;
1482 case Key_PageUp: 1483 case Key_PageUp:
1483 if ( ev->state() & ShiftButton ) 1484 if ( ev->state() & ShiftButton )
1484 shiftPageUp(); 1485 shiftPageUp();
1485 else if ( ev->state() & ControlButton ) 1486 else if ( ev->state() & ControlButton )
1486 topOfView(); 1487 topOfView();
1487 else 1488 else
1488 pageUp(); 1489 pageUp();
1489 break; 1490 break;
1490 case Key_PageDown: 1491 case Key_PageDown:
1491 if ( ev->state() & ShiftButton ) 1492 if ( ev->state() & ShiftButton )
1492 shiftPageDown(); 1493 shiftPageDown();
1493 else if ( ev->state() & ControlButton ) 1494 else if ( ev->state() & ControlButton )
1494 bottomOfView(); 1495 bottomOfView();
1495 else 1496 else
1496 pageDown(); 1497 pageDown();
1497 break; 1498 break;
1498 case Key_Return: 1499 case Key_Return:
1499 case Key_Enter: 1500 case Key_Enter:
1500 keyReturn(); 1501 keyReturn();
1501 break; 1502 break;
1502 case Key_Delete: 1503 case Key_Delete:
1503 if ( ev->state() & ControlButton ) 1504 if ( ev->state() & ControlButton )
1504 { 1505 {
1505 VConfig c; 1506 VConfig c;
1506 shiftWordRight(); 1507 shiftWordRight();
1507 myViewInternal->getVConfig(c); 1508 myViewInternal->getVConfig(c);
1508 myDoc->delMarkedText(c); 1509 myDoc->delMarkedText(c);
1509 myViewInternal->update(); 1510 myViewInternal->update();
1510 } 1511 }
1511 else keyDelete(); 1512 else keyDelete();
1512 break; 1513 break;
1513 case Key_Backspace: 1514 case Key_Backspace:
1514 if ( ev->state() & ControlButton ) 1515 if ( ev->state() & ControlButton )
1515 { 1516 {
1516 VConfig c; 1517 VConfig c;
1517 shiftWordLeft(); 1518 shiftWordLeft();
1518 myViewInternal->getVConfig(c); 1519 myViewInternal->getVConfig(c);
1519 myDoc->delMarkedText(c); 1520 myDoc->delMarkedText(c);
1520 myViewInternal->update(); 1521 myViewInternal->update();
1521 } 1522 }
1522 else backspace(); 1523 else backspace();
1523 break; 1524 break;
1524 case Key_Insert: 1525 case Key_Insert:
1525 toggleInsert(); 1526 toggleInsert();
1526 break; 1527 break;
1527 case Key_K: 1528 case Key_K:
1528 if ( ev->state() & ControlButton ) 1529 if ( ev->state() & ControlButton )
1529 { 1530 {
1530 killLine(); 1531 killLine();
1531 break; 1532 break;
1532 } 1533 }
1533 default: 1534 default:
1534 KTextEditor::View::keyPressEvent( ev ); 1535 KTextEditor::View::keyPressEvent( ev );
1535 return; 1536 return;
1536 break; 1537 break;
1537 } 1538 }
1538 ev->accept(); 1539 ev->accept();
1539} 1540}
1540 1541
1541 1542
1542void KateView::setCursorPosition( int line, int col, bool /*mark*/ ) 1543void KateView::setCursorPosition( int line, int col, bool /*mark*/ )
1543{ 1544{
1544 setCursorPositionInternal( line, col ); 1545 setCursorPositionInternal( line, col );
1545} 1546}
1546 1547
1547void KateView::getCursorPosition( int *line, int *col ) 1548void KateView::getCursorPosition( int *line, int *col )
1548{ 1549{
1549 if ( line ) 1550 if ( line )
1550 *line = currentLine(); 1551 *line = currentLine();
1551 1552
1552 if ( col ) 1553 if ( col )
1553 *col = currentColumn(); 1554 *col = currentColumn();
1554} 1555}
1555 1556
1556 1557
1557int KateView::currentLine() { 1558int KateView::currentLine() {
1558 return myViewInternal->cursor.y; 1559 return myViewInternal->cursor.y;
1559} 1560}
1560 1561
1561int KateView::currentColumn() { 1562int KateView::currentColumn() {
1562 return myDoc->currentColumn(myViewInternal->cursor); 1563 return myDoc->currentColumn(myViewInternal->cursor);
1563} 1564}
1564 1565
1565int KateView::currentCharNum() { 1566int KateView::currentCharNum() {
1566 return myViewInternal->cursor.x; 1567 return myViewInternal->cursor.x;
1567} 1568}
1568 1569
1569void KateView::setCursorPositionInternal(int line, int col) { 1570void KateView::setCursorPositionInternal(int line, int col) {
1570 PointStruc cursor; 1571 PointStruc cursor;
1571 1572
1572 cursor.x = col; 1573 cursor.x = col;
1573 cursor.y = line; 1574 cursor.y = line;
1574 myViewInternal->updateCursor(cursor); 1575 myViewInternal->updateCursor(cursor);
1575 myViewInternal->center(); 1576 myViewInternal->center();
1576// myViewInternal->updateView(ufPos, 0, line*myDoc->fontHeight - height()/2); 1577// myViewInternal->updateView(ufPos, 0, line*myDoc->fontHeight - height()/2);
1577// myDoc->updateViews(myViewInternal); //uptade all other views except this one 1578// myDoc->updateViews(myViewInternal); //uptade all other views except this one
1578 myDoc->updateViews(); 1579 myDoc->updateViews();
1579} 1580}
1580 1581
1581int KateView::config() { 1582int KateView::config() {
1582 int flags; 1583 int flags;
1583 1584
1584 flags = configFlags; 1585 flags = configFlags;
1585 if (myDoc->singleSelection()) flags |= KateView::cfSingleSelection; 1586 if (myDoc->singleSelection()) flags |= KateView::cfSingleSelection;
1586 return flags; 1587 return flags;
1587} 1588}
1588 1589
1589void KateView::setConfig(int flags) { 1590void KateView::setConfig(int flags) {
1590 bool updateView; 1591 bool updateView;
1591 1592
1592 // cfSingleSelection is a doc-property 1593 // cfSingleSelection is a doc-property
1593 myDoc->setSingleSelection(flags & KateView::cfSingleSelection); 1594 myDoc->setSingleSelection(flags & KateView::cfSingleSelection);
1594 flags &= ~KateView::cfSingleSelection; 1595 flags &= ~KateView::cfSingleSelection;
1595 1596
1596 if (flags != configFlags) { 1597 if (flags != configFlags) {
1597 // update the view if visibility of tabs has changed 1598 // update the view if visibility of tabs has changed
1598 updateView = (flags ^ configFlags) & KateView::cfShowTabs; 1599 updateView = (flags ^ configFlags) & KateView::cfShowTabs;
1599 configFlags = flags; 1600 configFlags = flags;
1600 emit newStatus(); 1601 emit newStatus();
1601 if (updateView) myViewInternal->update(); 1602 if (updateView) myViewInternal->update();
1602 } 1603 }
1603} 1604}
1604 1605
1605int KateView::tabWidth() { 1606int KateView::tabWidth() {
1606 return myDoc->tabChars; 1607 return myDoc->tabChars;
1607} 1608}
1608 1609
1609void KateView::setTabWidth(int w) { 1610void KateView::setTabWidth(int w) {
1610 myDoc->setTabWidth(w); 1611 myDoc->setTabWidth(w);
1611 myDoc->updateViews(); 1612 myDoc->updateViews();
1612} 1613}
1613 1614
1614void KateView::setEncoding (QString e) { 1615void KateView::setEncoding (QString e) {
1615 myDoc->setEncoding (e); 1616 myDoc->setEncoding (e);
1616 myDoc->updateViews(); 1617 myDoc->updateViews();
1617} 1618}
1618 1619
1619int KateView::undoSteps() { 1620int KateView::undoSteps() {
1620 return myDoc->undoSteps; 1621 return myDoc->undoSteps;
1621} 1622}
1622 1623
1623void KateView::setUndoSteps(int s) { 1624void KateView::setUndoSteps(int s) {
1624 myDoc->setUndoSteps(s); 1625 myDoc->setUndoSteps(s);
1625} 1626}
1626 1627
1627bool KateView::isReadOnly() { 1628bool KateView::isReadOnly() {
1628 return myDoc->readOnly; 1629 return myDoc->readOnly;
1629} 1630}
1630 1631
1631bool KateView::isModified() { 1632bool KateView::isModified() {
1632 return myDoc->modified; 1633 return myDoc->modified;
1633} 1634}
1634 1635
1635void KateView::setReadOnly(bool m) { 1636void KateView::setReadOnly(bool m) {
1636 myDoc->setReadOnly(m); 1637 myDoc->setReadOnly(m);
1637} 1638}
1638 1639
1639void KateView::setModified(bool m) { 1640void KateView::setModified(bool m) {
1640 myDoc->setModified(m); 1641 myDoc->setModified(m);
1641} 1642}
1642 1643
1643bool KateView::isLastView() { 1644bool KateView::isLastView() {
1644 return myDoc->isLastView(1); 1645 return myDoc->isLastView(1);
1645} 1646}
1646 1647
1647KateDocument *KateView::doc() { 1648KateDocument *KateView::doc() {
1648 return myDoc; 1649 return myDoc;
1649} 1650}
1650 1651
1651int KateView::undoState() { 1652int KateView::undoState() {
1652 if (isReadOnly()) 1653 if (isReadOnly())
1653 return 0; 1654 return 0;
1654 else 1655 else
1655 return myDoc->undoState; 1656 return myDoc->undoState;
1656} 1657}
1657 1658
1658int KateView::nextUndoType() { 1659int KateView::nextUndoType() {
1659 return myDoc->nextUndoType(); 1660 return myDoc->nextUndoType();
1660} 1661}
1661 1662
1662int KateView::nextRedoType() { 1663int KateView::nextRedoType() {
1663 return myDoc->nextRedoType(); 1664 return myDoc->nextRedoType();
1664} 1665}
1665 1666
1666void KateView::undoTypeList(QValueList<int> &lst) 1667void KateView::undoTypeList(QValueList<int> &lst)
1667{ 1668{
1668 myDoc->undoTypeList(lst); 1669 myDoc->undoTypeList(lst);
1669} 1670}
1670 1671
1671void KateView::redoTypeList(QValueList<int> &lst) 1672void KateView::redoTypeList(QValueList<int> &lst)
1672{ 1673{
1673 myDoc->redoTypeList(lst); 1674 myDoc->redoTypeList(lst);
1674} 1675}
1675 1676
1676const char * KateView::undoTypeName(int type) { 1677const char * KateView::undoTypeName(int type) {
1677 return KateActionGroup::typeName(type); 1678 return KateActionGroup::typeName(type);
1678} 1679}
1679 1680
1680QColor* KateView::getColors() 1681QColor* KateView::getColors()
1681{ 1682{
1682 return myDoc->colors; 1683 return myDoc->colors;
1683} 1684}
1684 1685
1685void KateView::applyColors() 1686void KateView::applyColors()
1686{ 1687{
1687 myDoc->tagAll(); 1688 myDoc->tagAll();
1688 myDoc->updateViews(); 1689 myDoc->updateViews();
1689} 1690}
1690 1691
1691bool KateView::isOverwriteMode() const 1692bool KateView::isOverwriteMode() const
1692{ 1693{
1693 return ( configFlags & KateView::cfOvr ); 1694 return ( configFlags & KateView::cfOvr );
1694} 1695}
1695 1696
1696void KateView::setOverwriteMode( bool b ) 1697void KateView::setOverwriteMode( bool b )
1697{ 1698{
1698 if ( isOverwriteMode() && !b ) 1699 if ( isOverwriteMode() && !b )
1699 setConfig( configFlags ^ KateView::cfOvr ); 1700 setConfig( configFlags ^ KateView::cfOvr );
1700 else 1701 else
1701 setConfig( configFlags | KateView::cfOvr ); 1702 setConfig( configFlags | KateView::cfOvr );
1702} 1703}
1703 1704
1704void KateView::toggleInsert() { 1705void KateView::toggleInsert() {
1705 setConfig(configFlags ^ KateView::cfOvr); 1706 setConfig(configFlags ^ KateView::cfOvr);
1706} 1707}
1707 1708
1708void KateView::toggleVertical() 1709void KateView::toggleVertical()
1709{ 1710{
1710 setConfig(configFlags ^ KateView::cfVerticalSelect); 1711 setConfig(configFlags ^ KateView::cfVerticalSelect);
1711} 1712}
1712 1713
1713 1714
1714int KateView::numLines() { 1715int KateView::numLines() {
1715 return myDoc->numLines(); 1716 return myDoc->numLines();
1716} 1717}
1717 1718
1718QString KateView::text() { 1719QString KateView::text() {
1719 return myDoc->text(); 1720 return myDoc->text();
1720} 1721}
1721 1722
1722QString KateView::currentTextLine() { 1723QString KateView::currentTextLine() {
1723 TextLine::Ptr textLine = myDoc->getTextLine(myViewInternal->cursor.y); 1724 TextLine::Ptr textLine = myDoc->getTextLine(myViewInternal->cursor.y);
1724 return QString(textLine->getText(), textLine->length()); 1725 return QString(textLine->getText(), textLine->length());
1725} 1726}
1726 1727
1727QString KateView::textLine(int num) { 1728QString KateView::textLine(int num) {
1728 TextLine::Ptr textLine = myDoc->getTextLine(num); 1729 TextLine::Ptr textLine = myDoc->getTextLine(num);
1729 return QString(textLine->getText(), textLine->length()); 1730 return QString(textLine->getText(), textLine->length());
1730} 1731}
1731 1732
1732QString KateView::currentWord() { 1733QString KateView::currentWord() {
1733 return myDoc->getWord(myViewInternal->cursor); 1734 return myDoc->getWord(myViewInternal->cursor);
1734} 1735}
1735 1736
1736QString KateView::word(int x, int y) { 1737QString KateView::word(int x, int y) {
1737 PointStruc cursor; 1738 PointStruc cursor;
1738 cursor.y = (myViewInternal->yPos + y)/myDoc->fontHeight; 1739 cursor.y = (myViewInternal->yPos + y)/myDoc->fontHeight;
1739 if (cursor.y < 0 || cursor.y > myDoc->lastLine()) return QString(); 1740 if (cursor.y < 0 || cursor.y > myDoc->lastLine()) return QString();
1740 cursor.x = myDoc->textPos(myDoc->getTextLine(cursor.y), myViewInternal->xPos-2 + x); 1741 cursor.x = myDoc->textPos(myDoc->getTextLine(cursor.y), myViewInternal->xPos-2 + x);
1741 return myDoc->getWord(cursor); 1742 return myDoc->getWord(cursor);
1742} 1743}
1743 1744
1744void KateView::setText(const QString &s) { 1745void KateView::setText(const QString &s) {
1745 myDoc->setText(s); 1746 myDoc->setText(s);
1746 myDoc->updateViews(); 1747 myDoc->updateViews();
1747} 1748}
1748 1749
1749void KateView::insertText(const QString &s, bool /*mark*/) { 1750void KateView::insertText(const QString &s, bool /*mark*/) {
1750 VConfig c; 1751 VConfig c;
1751 myViewInternal->getVConfig(c); 1752 myViewInternal->getVConfig(c);
1752 myDoc->insert(c, s); 1753 myDoc->insert(c, s);
1753 myDoc->updateViews(); 1754 myDoc->updateViews();
1754} 1755}
1755 1756
1756bool KateView::hasMarkedText() { 1757bool KateView::hasMarkedText() {
1757 return myDoc->hasMarkedText(); 1758 return myDoc->hasMarkedText();
1758} 1759}
1759 1760
1760QString KateView::markedText() { 1761QString KateView::markedText() {
1761 return myDoc->markedText(configFlags); 1762 return myDoc->markedText(configFlags);
1762} 1763}
1763 1764
1764bool KateView::canDiscard() { 1765bool KateView::canDiscard() {
1765 int query; 1766 int query;
1766 1767
1767 if (isModified()) { 1768 if (isModified()) {
1768 query = KMessageBox::warningYesNoCancel(this, 1769 query = KMessageBox::warningYesNoCancel(this,
1769 i18n("The current Document has been modified.\nWould you like to save it?")); 1770 i18n("The current Document has been modified.\nWould you like to save it?"));
1770 switch (query) { 1771 switch (query) {
1771 case KMessageBox::Yes: //yes 1772 case KMessageBox::Yes: //yes
1772 if (save() == CANCEL) return false; 1773 if (save() == CANCEL) return false;
1773 if (isModified()) { 1774 if (isModified()) {
1774 query = KMessageBox::warningContinueCancel(this, 1775 query = KMessageBox::warningContinueCancel(this,
1775 i18n("Could not save the document.\nDiscard it and continue?"), 1776 i18n("Could not save the document.\nDiscard it and continue?"),
1776 QString::null, i18n("&Discard")); 1777 QString::null, i18n("&Discard"));
1777 if (query == KMessageBox::Cancel) return false; 1778 if (query == KMessageBox::Cancel) return false;
1778 } 1779 }
1779 break; 1780 break;
1780 case KMessageBox::Cancel: //cancel 1781 case KMessageBox::Cancel: //cancel
1781 return false; 1782 return false;
1782 } 1783 }
1783 } 1784 }
1784 return true; 1785 return true;
1785} 1786}
1786 1787
1787void KateView::flush() 1788void KateView::flush()
1788{ 1789{
1789 if (canDiscard()) myDoc->flush(); 1790 if (canDiscard()) myDoc->flush();
1790} 1791}
1791 1792
1792KateView::fileResult KateView::save() { 1793KateView::fileResult KateView::save() {
1793 int query = KMessageBox::Yes; 1794 int query = KMessageBox::Yes;
1794 if (isModified()) { 1795 if (isModified()) {
1795 return saveAs(); 1796 return saveAs();
1796 } 1797 }
1797 return OK; 1798 return OK;
1798} 1799}
1799 1800
1800KateView::fileResult KateView::saveAs() { 1801KateView::fileResult KateView::saveAs() {
1801 return OK; 1802 return OK;
1802} 1803}
1803 1804
1804void KateView::doCursorCommand(int cmdNum) { 1805void KateView::doCursorCommand(int cmdNum) {
1805 VConfig c; 1806 VConfig c;
1806 myViewInternal->getVConfig(c); 1807 myViewInternal->getVConfig(c);
1807 if (cmdNum & selectFlag) c.flags |= KateView::cfMark; 1808 if (cmdNum & selectFlag) c.flags |= KateView::cfMark;
1808 if (cmdNum & multiSelectFlag) c.flags |= KateView::cfMark | KateView::cfKeepSelection; 1809 if (cmdNum & multiSelectFlag) c.flags |= KateView::cfMark | KateView::cfKeepSelection;
1809 cmdNum &= ~(selectFlag | multiSelectFlag); 1810 cmdNum &= ~(selectFlag | multiSelectFlag);
1810 myViewInternal->doCursorCommand(c, cmdNum); 1811 myViewInternal->doCursorCommand(c, cmdNum);
1811 myDoc->updateViews(); 1812 myDoc->updateViews();
1812} 1813}
1813 1814
1814void KateView::doEditCommand(int cmdNum) { 1815void KateView::doEditCommand(int cmdNum) {
1815 VConfig c; 1816 VConfig c;
1816 myViewInternal->getVConfig(c); 1817 myViewInternal->getVConfig(c);
1817 myViewInternal->doEditCommand(c, cmdNum); 1818 myViewInternal->doEditCommand(c, cmdNum);
1818 myDoc->updateViews(); 1819 myDoc->updateViews();
1819} 1820}
1820 1821
1821void KateView::undoMultiple(int count) { 1822void KateView::undoMultiple(int count) {
1822 if (isReadOnly()) 1823 if (isReadOnly())
1823 return; 1824 return;
1824 1825
1825 VConfig c; 1826 VConfig c;
1826 myViewInternal->getVConfig(c); 1827 myViewInternal->getVConfig(c);
1827 myDoc->undo(c, count); 1828 myDoc->undo(c, count);
1828 myDoc->updateViews(); 1829 myDoc->updateViews();
1829} 1830}
1830 1831
1831void KateView::redoMultiple(int count) { 1832void KateView::redoMultiple(int count) {
1832 if (isReadOnly()) 1833 if (isReadOnly())
1833 return; 1834 return;
1834 1835
1835 VConfig c; 1836 VConfig c;
1836 myViewInternal->getVConfig(c); 1837 myViewInternal->getVConfig(c);
1837 myDoc->redo(c, count); 1838 myDoc->redo(c, count);
1838 myDoc->updateViews(); 1839 myDoc->updateViews();
1839} 1840}
1840 1841
1841void KateView::undoHistory() 1842void KateView::undoHistory()
1842{ 1843{
1843 UndoHistory *undoH; 1844 UndoHistory *undoH;
1844 1845
1845 undoH = new UndoHistory(this, this, "UndoHistory", true); 1846 undoH = new UndoHistory(this, this, "UndoHistory", true);
1846 1847
1847 undoH->setCaption(i18n("Undo/Redo History")); 1848 undoH->setCaption(i18n("Undo/Redo History"));
1848 1849
1849 connect(this,SIGNAL(newUndo()),undoH,SLOT(newUndo())); 1850 connect(this,SIGNAL(newUndo()),undoH,SLOT(newUndo()));
1850 connect(undoH,SIGNAL(undo(int)),this,SLOT(undoMultiple(int))); 1851 connect(undoH,SIGNAL(undo(int)),this,SLOT(undoMultiple(int)));
1851 connect(undoH,SIGNAL(redo(int)),this,SLOT(redoMultiple(int))); 1852 connect(undoH,SIGNAL(redo(int)),this,SLOT(redoMultiple(int)));
1852 1853
1853 undoH->exec(); 1854 undoH->exec();
1854 1855
1855 delete undoH; 1856 delete undoH;
1856} 1857}
1857 1858
1858static void kwview_addToStrList(QStringList &list, const QString &str) { 1859static void kwview_addToStrList(QStringList &list, const QString &str) {
1859 if (list.count() > 0) { 1860 if (list.count() > 0) {
1860 if (list.first() == str) return; 1861 if (list.first() == str) return;
1861 QStringList::Iterator it; 1862 QStringList::Iterator it;
1862 it = list.find(str); 1863 it = list.find(str);
1863 if (*it != 0L) list.remove(it); 1864 if (*it != 0L) list.remove(it);
1864 if (list.count() >= 16) list.remove(list.fromLast()); 1865 if (list.count() >= 16) list.remove(list.fromLast());
1865 } 1866 }
1866 list.prepend(str); 1867 list.prepend(str);
1867} 1868}
1868 1869
1869void KateView::find() { 1870void KateView::find() {
1870 SearchDialog *searchDialog; 1871 SearchDialog *searchDialog;
1871 1872
1872 if (!myDoc->hasMarkedText()) searchFlags &= ~KateView::sfSelected; 1873 if (!myDoc->hasMarkedText()) searchFlags &= ~KateView::sfSelected;
1873 1874
1874 searchDialog = new SearchDialog(this, myDoc->searchForList, myDoc->replaceWithList, 1875 searchDialog = new SearchDialog(this, myDoc->searchForList, myDoc->replaceWithList,
1875 searchFlags & ~KateView::sfReplace); 1876 searchFlags & ~KateView::sfReplace);
1876 1877
1877 // If the user has marked some text we use that otherwise 1878 // If the user has marked some text we use that otherwise
1878 // use the word under the cursor. 1879 // use the word under the cursor.
1879 QString str; 1880 QString str;
1880 if (myDoc->hasMarkedText()) 1881 if (myDoc->hasMarkedText())
1881 str = markedText(); 1882 str = markedText();
1882 1883
1883 if (str.isEmpty()) 1884 if (str.isEmpty())
1884 str = currentWord(); 1885 str = currentWord();
1885 1886
1886 if (!str.isEmpty()) 1887 if (!str.isEmpty())
1887 { 1888 {
1888 str.replace(QRegExp("^\n"), ""); 1889 str.replace(QRegExp("^\n"), "");
1889 int pos=str.find("\n"); 1890 int pos=str.find("\n");
1890 if (pos>-1) 1891 if (pos>-1)
1891 str=str.left(pos); 1892 str=str.left(pos);
1892 searchDialog->setSearchText( str ); 1893 searchDialog->setSearchText( str );
1893 } 1894 }
1894 1895
1895 myViewInternal->focusOutEvent(0L);// QT bug ? 1896 myViewInternal->focusOutEvent(0L);// QT bug ?
1896 if (searchDialog->exec() == QDialog::Accepted) { 1897 if (searchDialog->exec() == QDialog::Accepted) {
1897 kwview_addToStrList(myDoc->searchForList, searchDialog->getSearchFor()); 1898 kwview_addToStrList(myDoc->searchForList, searchDialog->getSearchFor());
1898 searchFlags = searchDialog->getFlags() | (searchFlags & KateView::sfPrompt); 1899 searchFlags = searchDialog->getFlags() | (searchFlags & KateView::sfPrompt);
1899 initSearch(s, searchFlags); 1900 initSearch(s, searchFlags);
1900 findAgain(s); 1901 findAgain(s);
1901 } 1902 }
1902 delete searchDialog; 1903 delete searchDialog;
1903} 1904}
1904 1905
1905void KateView::replace() { 1906void KateView::replace() {
1906 SearchDialog *searchDialog; 1907 SearchDialog *searchDialog;
1907 1908
1908 if (isReadOnly()) return; 1909 if (isReadOnly()) return;
1909 1910
1910 if (!myDoc->hasMarkedText()) searchFlags &= ~KateView::sfSelected; 1911 if (!myDoc->hasMarkedText()) searchFlags &= ~KateView::sfSelected;
1911 searchDialog = new SearchDialog(this, myDoc->searchForList, myDoc->replaceWithList, 1912 searchDialog = new SearchDialog(this, myDoc->searchForList, myDoc->replaceWithList,
1912 searchFlags | KateView::sfReplace); 1913 searchFlags | KateView::sfReplace);
1913 1914
1914 // If the user has marked some text we use that otherwise 1915 // If the user has marked some text we use that otherwise
1915 // use the word under the cursor. 1916 // use the word under the cursor.
1916 QString str; 1917 QString str;
1917 if (myDoc->hasMarkedText()) 1918 if (myDoc->hasMarkedText())
1918 str = markedText(); 1919 str = markedText();
1919 1920
1920 if (str.isEmpty()) 1921 if (str.isEmpty())
1921 str = currentWord(); 1922 str = currentWord();
1922 1923
1923 if (!str.isEmpty()) 1924 if (!str.isEmpty())
1924 { 1925 {
1925 str.replace(QRegExp("^\n"), ""); 1926 str.replace(QRegExp("^\n"), "");
1926 int pos=str.find("\n"); 1927 int pos=str.find("\n");
1927 if (pos>-1) 1928 if (pos>-1)
1928 str=str.left(pos); 1929 str=str.left(pos);
1929 searchDialog->setSearchText( str ); 1930 searchDialog->setSearchText( str );
1930 } 1931 }
1931 1932
1932 myViewInternal->focusOutEvent(0L);// QT bug ? 1933 myViewInternal->focusOutEvent(0L);// QT bug ?
1933 if (searchDialog->exec() == QDialog::Accepted) { 1934 if (searchDialog->exec() == QDialog::Accepted) {
1934// myDoc->recordReset(); 1935// myDoc->recordReset();
1935 kwview_addToStrList(myDoc->searchForList, searchDialog->getSearchFor()); 1936 kwview_addToStrList(myDoc->searchForList, searchDialog->getSearchFor());
1936 kwview_addToStrList(myDoc->replaceWithList, searchDialog->getReplaceWith()); 1937 kwview_addToStrList(myDoc->replaceWithList, searchDialog->getReplaceWith());
1937 searchFlags = searchDialog->getFlags(); 1938 searchFlags = searchDialog->getFlags();
1938 initSearch(s, searchFlags); 1939 initSearch(s, searchFlags);
1939 replaceAgain(); 1940 replaceAgain();
1940 } 1941 }
1941 delete searchDialog; 1942 delete searchDialog;
1942} 1943}
1943 1944
1944void KateView::gotoLine() { 1945void KateView::gotoLine() {
1945 GotoLineDialog *dlg; 1946 GotoLineDialog *dlg;
1946 PointStruc cursor; 1947 PointStruc cursor;
1947 1948
1948 dlg = new GotoLineDialog(this, myViewInternal->cursor.y + 1, myDoc->numLines()); 1949 dlg = new GotoLineDialog(this, myViewInternal->cursor.y + 1, myDoc->numLines());
1949// dlg = new GotoLineDialog(myViewInternal->cursor.y + 1, this); 1950// dlg = new GotoLineDialog(myViewInternal->cursor.y + 1, this);
1950 1951
1951 if (dlg->exec() == QDialog::Accepted) { 1952 if (dlg->exec() == QDialog::Accepted) {
1952// myDoc->recordReset(); 1953// myDoc->recordReset();
1953 cursor.x = 0; 1954 cursor.x = 0;
1954 cursor.y = dlg->getLine() - 1; 1955 cursor.y = dlg->getLine() - 1;
1955 myDoc->needPreHighlight(cursor.y); 1956 myDoc->needPreHighlight(cursor.y);
1956 myViewInternal->updateCursor(cursor); 1957 myViewInternal->updateCursor(cursor);
1957 myViewInternal->center(); 1958 myViewInternal->center();
1958 myViewInternal->updateView(KateView::ufUpdateOnScroll); 1959 myViewInternal->updateView(KateView::ufUpdateOnScroll);
1959 myDoc->updateViews(this); //uptade all other views except this one 1960 myDoc->updateViews(this); //uptade all other views except this one
1960 } 1961 }
1961 delete dlg; 1962 delete dlg;
1962} 1963}
1963 1964
1964 1965
1965void KateView::initSearch(SConfig &s, int flags) { 1966void KateView::initSearch(SConfig &s, int flags) {
1966 1967
1967 s.flags = flags; 1968 s.flags = flags;
1968 s.setPattern(myDoc->searchForList.first()); 1969 s.setPattern(myDoc->searchForList.first());
1969 1970
1970 if (!(s.flags & KateView::sfFromBeginning)) { 1971 if (!(s.flags & KateView::sfFromBeginning)) {
1971 // If we are continuing a backward search, make sure we do not get stuck 1972 // If we are continuing a backward search, make sure we do not get stuck
1972 // at an existing match. 1973 // at an existing match.
1973 s.cursor = myViewInternal->cursor; 1974 s.cursor = myViewInternal->cursor;
1974 TextLine::Ptr textLine = myDoc->getTextLine(s.cursor.y); 1975 TextLine::Ptr textLine = myDoc->getTextLine(s.cursor.y);
1975 QString const txt(textLine->getText(),textLine->length()); 1976 QString const txt(textLine->getText(),textLine->length());
1976 const QString searchFor= myDoc->searchForList.first(); 1977 const QString searchFor= myDoc->searchForList.first();
1977 int pos = s.cursor.x-searchFor.length()-1; 1978 int pos = s.cursor.x-searchFor.length()-1;
1978 if ( pos < 0 ) pos = 0; 1979 if ( pos < 0 ) pos = 0;
1979 pos= txt.find(searchFor, pos, s.flags & KateView::sfCaseSensitive); 1980 pos= txt.find(searchFor, pos, s.flags & KateView::sfCaseSensitive);
1980 if ( s.flags & KateView::sfBackward ) 1981 if ( s.flags & KateView::sfBackward )
1981 { 1982 {
1982 if ( pos <= s.cursor.x ) s.cursor.x= pos-1; 1983 if ( pos <= s.cursor.x ) s.cursor.x= pos-1;
1983 } 1984 }
1984 else 1985 else
1985 if ( pos == s.cursor.x ) s.cursor.x++; 1986 if ( pos == s.cursor.x ) s.cursor.x++;
1986 } else { 1987 } else {
1987 if (!(s.flags & KateView::sfBackward)) { 1988 if (!(s.flags & KateView::sfBackward)) {
1988 s.cursor.x = 0; 1989 s.cursor.x = 0;
1989 s.cursor.y = 0; 1990 s.cursor.y = 0;
1990 } else { 1991 } else {
1991 s.cursor.x = -1; 1992 s.cursor.x = -1;
1992 s.cursor.y = myDoc->lastLine(); 1993 s.cursor.y = myDoc->lastLine();
1993 } 1994 }
1994 s.flags |= KateView::sfFinished; 1995 s.flags |= KateView::sfFinished;
1995 } 1996 }
1996 if (!(s.flags & KateView::sfBackward)) { 1997 if (!(s.flags & KateView::sfBackward)) {
1997 if (!(s.cursor.x || s.cursor.y)) 1998 if (!(s.cursor.x || s.cursor.y))
1998 s.flags |= KateView::sfFinished; 1999 s.flags |= KateView::sfFinished;
1999 } 2000 }
2000 s.startCursor = s.cursor; 2001 s.startCursor = s.cursor;
2001} 2002}
2002 2003
2003void KateView::continueSearch(SConfig &s) { 2004void KateView::continueSearch(SConfig &s) {
2004 2005
2005 if (!(s.flags & KateView::sfBackward)) { 2006 if (!(s.flags & KateView::sfBackward)) {
2006 s.cursor.x = 0; 2007 s.cursor.x = 0;
2007 s.cursor.y = 0; 2008 s.cursor.y = 0;
2008 } else { 2009 } else {
2009 s.cursor.x = -1; 2010 s.cursor.x = -1;
2010 s.cursor.y = myDoc->lastLine(); 2011 s.cursor.y = myDoc->lastLine();
2011 } 2012 }
2012 s.flags |= KateView::sfFinished; 2013 s.flags |= KateView::sfFinished;
2013 s.flags &= ~KateView::sfAgain; 2014 s.flags &= ~KateView::sfAgain;
2014} 2015}
2015 2016
2016void KateView::findAgain(SConfig &s) { 2017void KateView::findAgain(SConfig &s) {
2017 int query; 2018 int query;
2018 PointStruc cursor; 2019 PointStruc cursor;
2019 QString str; 2020 QString str;
2020 2021
2021 QString searchFor = myDoc->searchForList.first(); 2022 QString searchFor = myDoc->searchForList.first();
2022 2023
2023 if( searchFor.isEmpty() ) { 2024 if( searchFor.isEmpty() ) {
2024 find(); 2025 find();
2025 return; 2026 return;
2026 } 2027 }
2027 2028
2028 do { 2029 do {
2029 query = KMessageBox::Cancel; 2030 query = KMessageBox::Cancel;
2030 if (myDoc->doSearch(s,searchFor)) { 2031 if (myDoc->doSearch(s,searchFor)) {
2031 cursor = s.cursor; 2032 cursor = s.cursor;
2032 if (!(s.flags & KateView::sfBackward)) 2033 if (!(s.flags & KateView::sfBackward))
2033 s.cursor.x += s.matchedLength; 2034 s.cursor.x += s.matchedLength;
2034 myViewInternal->updateCursor(s.cursor); //does deselectAll() 2035 myViewInternal->updateCursor(s.cursor); //does deselectAll()
2035 exposeFound(cursor,s.matchedLength,(s.flags & KateView::sfAgain) ? 0 : KateView::ufUpdateOnScroll,false); 2036 exposeFound(cursor,s.matchedLength,(s.flags & KateView::sfAgain) ? 0 : KateView::ufUpdateOnScroll,false);
2036 } else { 2037 } else {
2037 if (!(s.flags & KateView::sfFinished)) { 2038 if (!(s.flags & KateView::sfFinished)) {
2038 // ask for continue 2039 // ask for continue
2039 if (!(s.flags & KateView::sfBackward)) { 2040 if (!(s.flags & KateView::sfBackward)) {
2040 // forward search 2041 // forward search
2041 str = i18n("End of document reached.\n" 2042 str = i18n("End of document reached.\n"
2042 "Continue from the beginning?"); 2043 "Continue from the beginning?");
2043 query = KMessageBox::warningContinueCancel(this, 2044 query = KMessageBox::warningContinueCancel(this,
2044 str, i18n("Find"), i18n("Continue")); 2045 str, i18n("Find"), i18n("Continue"));
2045 } else { 2046 } else {
2046 // backward search 2047 // backward search
2047 str = i18n("Beginning of document reached.\n" 2048 str = i18n("Beginning of document reached.\n"
2048 "Continue from the end?"); 2049 "Continue from the end?");
2049 query = KMessageBox::warningContinueCancel(this, 2050 query = KMessageBox::warningContinueCancel(this,
2050 str, i18n("Find"), i18n("Continue")); 2051 str, i18n("Find"), i18n("Continue"));
2051 } 2052 }
2052 continueSearch(s); 2053 continueSearch(s);
2053 } else { 2054 } else {
2054 // wrapped 2055 // wrapped
2055 KMessageBox::sorry(this, 2056 KMessageBox::sorry(this,
2056 i18n("Search string '%1' not found!").arg(searchFor), 2057 i18n("Search string '%1' not found!").arg(searchFor),
2057 i18n("Find")); 2058 i18n("Find"));
2058 } 2059 }
2059 } 2060 }
2060 } while (query == KMessageBox::Continue); 2061 } while (query == KMessageBox::Continue);
2061} 2062}
2062 2063
2063void KateView::replaceAgain() { 2064void KateView::replaceAgain() {
2064 if (isReadOnly()) 2065 if (isReadOnly())
2065 return; 2066 return;
2066 2067
2067 replaces = 0; 2068 replaces = 0;
2068 if (s.flags & KateView::sfPrompt) { 2069 if (s.flags & KateView::sfPrompt) {
2069 doReplaceAction(-1); 2070 doReplaceAction(-1);
2070 } else { 2071 } else {
2071 doReplaceAction(KateView::srAll); 2072 doReplaceAction(KateView::srAll);
2072 } 2073 }
2073} 2074}
2074 2075
2075void KateView::doReplaceAction(int result, bool found) { 2076void KateView::doReplaceAction(int result, bool found) {
2076 int rlen; 2077 int rlen;
2077 PointStruc cursor; 2078 PointStruc cursor;
2078 bool started; 2079 bool started;
2079 2080
2080 QString searchFor = myDoc->searchForList.first(); 2081 QString searchFor = myDoc->searchForList.first();
2081 QString replaceWith = myDoc->replaceWithList.first(); 2082 QString replaceWith = myDoc->replaceWithList.first();
2082 rlen = replaceWith.length(); 2083 rlen = replaceWith.length();
2083 2084
2084 switch (result) { 2085 switch (result) {
2085 case KateView::srYes: //yes 2086 case KateView::srYes: //yes
2086 myDoc->recordStart(this, s.cursor, configFlags, 2087 myDoc->recordStart(this, s.cursor, configFlags,
2087 KateActionGroup::ugReplace, true); 2088 KateActionGroup::ugReplace, true);
2088 myDoc->recordReplace(s.cursor, s.matchedLength, replaceWith); 2089 myDoc->recordReplace(s.cursor, s.matchedLength, replaceWith);
2089 replaces++; 2090 replaces++;
2090 if (s.cursor.y == s.startCursor.y && s.cursor.x < s.startCursor.x) 2091 if (s.cursor.y == s.startCursor.y && s.cursor.x < s.startCursor.x)
2091 s.startCursor.x += rlen - s.matchedLength; 2092 s.startCursor.x += rlen - s.matchedLength;
2092 if (!(s.flags & KateView::sfBackward)) s.cursor.x += rlen; 2093 if (!(s.flags & KateView::sfBackward)) s.cursor.x += rlen;
2093 myDoc->recordEnd(this, s.cursor, configFlags | KateView::cfPersistent); 2094 myDoc->recordEnd(this, s.cursor, configFlags | KateView::cfPersistent);
2094 break; 2095 break;
2095 case KateView::srNo: //no 2096 case KateView::srNo: //no
2096 if (!(s.flags & KateView::sfBackward)) s.cursor.x += s.matchedLength; 2097 if (!(s.flags & KateView::sfBackward)) s.cursor.x += s.matchedLength;
2097 break; 2098 break;
2098 case KateView::srAll: //replace all 2099 case KateView::srAll: //replace all
2099 deleteReplacePrompt(); 2100 deleteReplacePrompt();
2100 do { 2101 do {
2101 started = false; 2102 started = false;
2102 while (found || myDoc->doSearch(s,searchFor)) { 2103 while (found || myDoc->doSearch(s,searchFor)) {
2103 if (!started) { 2104 if (!started) {
2104 found = false; 2105 found = false;
2105 myDoc->recordStart(this, s.cursor, configFlags, 2106 myDoc->recordStart(this, s.cursor, configFlags,
2106 KateActionGroup::ugReplace); 2107 KateActionGroup::ugReplace);
2107 started = true; 2108 started = true;
2108 } 2109 }
2109 myDoc->recordReplace(s.cursor, s.matchedLength, replaceWith); 2110 myDoc->recordReplace(s.cursor, s.matchedLength, replaceWith);
2110 replaces++; 2111 replaces++;
2111 if (s.cursor.y == s.startCursor.y && s.cursor.x < s.startCursor.x) 2112 if (s.cursor.y == s.startCursor.y && s.cursor.x < s.startCursor.x)
2112 s.startCursor.x += rlen - s.matchedLength; 2113 s.startCursor.x += rlen - s.matchedLength;
2113 if (!(s.flags & KateView::sfBackward)) s.cursor.x += rlen; 2114 if (!(s.flags & KateView::sfBackward)) s.cursor.x += rlen;
2114 } 2115 }
2115 if (started) myDoc->recordEnd(this, s.cursor, 2116 if (started) myDoc->recordEnd(this, s.cursor,
2116 configFlags | KateView::cfPersistent); 2117 configFlags | KateView::cfPersistent);
2117 } while (!askReplaceEnd()); 2118 } while (!askReplaceEnd());
2118 return; 2119 return;
2119 case KateView::srCancel: //cancel 2120 case KateView::srCancel: //cancel
2120 deleteReplacePrompt(); 2121 deleteReplacePrompt();
2121 return; 2122 return;
2122 default: 2123 default:
2123 replacePrompt = 0L; 2124 replacePrompt = 0L;
2124 } 2125 }
2125 2126
2126 do { 2127 do {
2127 if (myDoc->doSearch(s,searchFor)) { 2128 if (myDoc->doSearch(s,searchFor)) {
2128 //text found: highlight it, show replace prompt if needed and exit 2129 //text found: highlight it, show replace prompt if needed and exit
2129 cursor = s.cursor; 2130 cursor = s.cursor;
2130 if (!(s.flags & KateView::sfBackward)) cursor.x += s.matchedLength; 2131 if (!(s.flags & KateView::sfBackward)) cursor.x += s.matchedLength;
2131 myViewInternal->updateCursor(cursor); //does deselectAll() 2132 myViewInternal->updateCursor(cursor); //does deselectAll()
2132 exposeFound(s.cursor,s.matchedLength,(s.flags & KateView::sfAgain) ? 0 : KateView::ufUpdateOnScroll,true); 2133 exposeFound(s.cursor,s.matchedLength,(s.flags & KateView::sfAgain) ? 0 : KateView::ufUpdateOnScroll,true);
2133 if (replacePrompt == 0L) { 2134 if (replacePrompt == 0L) {
2134 replacePrompt = new ReplacePrompt(this); 2135 replacePrompt = new ReplacePrompt(this);
2135 myDoc->setPseudoModal(replacePrompt);//disable(); 2136 myDoc->setPseudoModal(replacePrompt);//disable();
2136 connect(replacePrompt,SIGNAL(clicked()),this,SLOT(replaceSlot())); 2137 connect(replacePrompt,SIGNAL(clicked()),this,SLOT(replaceSlot()));
2137 replacePrompt->show(); //this is not modal 2138 replacePrompt->show(); //this is not modal
2138 } 2139 }
2139 return; //exit if text found 2140 return; //exit if text found
2140 } 2141 }
2141 //nothing found: repeat until user cancels "repeat from beginning" dialog 2142 //nothing found: repeat until user cancels "repeat from beginning" dialog
2142 } while (!askReplaceEnd()); 2143 } while (!askReplaceEnd());
2143 deleteReplacePrompt(); 2144 deleteReplacePrompt();
2144} 2145}
2145 2146
2146void KateView::exposeFound(PointStruc &cursor, int slen, int flags, bool replace) { 2147void KateView::exposeFound(PointStruc &cursor, int slen, int flags, bool replace) {
2147 int x1, x2, y1, y2, xPos, yPos; 2148 int x1, x2, y1, y2, xPos, yPos;
2148 2149
2149 VConfig c; 2150 VConfig c;
2150 myViewInternal->getVConfig(c); 2151 myViewInternal->getVConfig(c);
2151 myDoc->selectLength(cursor,slen,c.flags); 2152 myDoc->selectLength(cursor,slen,c.flags);
2152 2153
2153 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y); 2154 TextLine::Ptr textLine = myDoc->getTextLine(cursor.y);
2154 x1 = myDoc->textWidth(textLine,cursor.x) -10; 2155 x1 = myDoc->textWidth(textLine,cursor.x) -10;
2155 x2 = myDoc->textWidth(textLine,cursor.x + slen) +20; 2156 x2 = myDoc->textWidth(textLine,cursor.x + slen) +20;
2156 y1 = myDoc->fontHeight*cursor.y -10; 2157 y1 = myDoc->fontHeight*cursor.y -10;
2157 y2 = y1 + myDoc->fontHeight +30; 2158 y2 = y1 + myDoc->fontHeight +30;
2158 2159
2159 xPos = myViewInternal->xPos; 2160 xPos = myViewInternal->xPos;
2160 yPos = myViewInternal->yPos; 2161 yPos = myViewInternal->yPos;
2161 2162
2162 if (x1 < 0) x1 = 0; 2163 if (x1 < 0) x1 = 0;
2163 if (replace) y2 += 90; 2164 if (replace) y2 += 90;
2164 2165
2165 if (x1 < xPos || x2 > xPos + myViewInternal->width()) { 2166 if (x1 < xPos || x2 > xPos + myViewInternal->width()) {
2166 xPos = x2 - myViewInternal->width(); 2167 xPos = x2 - myViewInternal->width();
2167 } 2168 }
2168 if (y1 < yPos || y2 > yPos + myViewInternal->height()) { 2169 if (y1 < yPos || y2 > yPos + myViewInternal->height()) {
2169 xPos = x2 - myViewInternal->width(); 2170 xPos = x2 - myViewInternal->width();
2170 yPos = myDoc->fontHeight*cursor.y - height()/3; 2171 yPos = myDoc->fontHeight*cursor.y - height()/3;
2171 } 2172 }
2172 myViewInternal->setPos(xPos, yPos); 2173 myViewInternal->setPos(xPos, yPos);
2173 myViewInternal->updateView(flags);// | ufPos,xPos,yPos); 2174 myViewInternal->updateView(flags);// | ufPos,xPos,yPos);
2174 myDoc->updateViews(this); 2175 myDoc->updateViews(this);
2175} 2176}
2176 2177
2177void KateView::deleteReplacePrompt() { 2178void KateView::deleteReplacePrompt() {
2178 myDoc->setPseudoModal(0L); 2179 myDoc->setPseudoModal(0L);
2179} 2180}
2180 2181
2181bool KateView::askReplaceEnd() { 2182bool KateView::askReplaceEnd() {
2182 QString str; 2183 QString str;
2183 int query; 2184 int query;
2184 2185
2185 myDoc->updateViews(); 2186 myDoc->updateViews();
2186 if (s.flags & KateView::sfFinished) { 2187 if (s.flags & KateView::sfFinished) {
2187 // replace finished 2188 // replace finished
2188 str = i18n("%1 replacement(s) made").arg(replaces); 2189 str = i18n("%1 replacement(s) made").arg(replaces);
2189 KMessageBox::information(this, str, i18n("Replace")); 2190 KMessageBox::information(this, str, i18n("Replace"));
2190 return true; 2191 return true;
2191 } 2192 }
2192 2193
2193 // ask for continue 2194 // ask for continue
2194 if (!(s.flags & KateView::sfBackward)) { 2195 if (!(s.flags & KateView::sfBackward)) {
2195 // forward search 2196 // forward search
2196 str = i18n("%1 replacement(s) made.\n" 2197 str = i18n("%1 replacement(s) made.\n"
2197 "End of document reached.\n" 2198 "End of document reached.\n"
2198 "Continue from the beginning?").arg(replaces); 2199 "Continue from the beginning?").arg(replaces);
2199 query = KMessageBox::questionYesNo(this, str, i18n("Replace"), 2200 query = KMessageBox::questionYesNo(this, str, i18n("Replace"),
2200 i18n("Continue"), i18n("Stop")); 2201 i18n("Continue"), i18n("Stop"));
2201 } else { 2202 } else {
2202 // backward search 2203 // backward search
2203 str = i18n("%1 replacement(s) made.\n" 2204 str = i18n("%1 replacement(s) made.\n"
2204 "Beginning of document reached.\n" 2205 "Beginning of document reached.\n"
2205 "Continue from the end?").arg(replaces); 2206 "Continue from the end?").arg(replaces);
2206 query = KMessageBox::questionYesNo(this, str, i18n("Replace"), 2207 query = KMessageBox::questionYesNo(this, str, i18n("Replace"),
2207 i18n("Continue"), i18n("Stop")); 2208 i18n("Continue"), i18n("Stop"));
2208 } 2209 }
2209 replaces = 0; 2210 replaces = 0;
2210 continueSearch(s); 2211 continueSearch(s);
2211 return (query == KMessageBox::No); 2212 return (query == KMessageBox::No);
2212} 2213}
2213 2214
2214void KateView::replaceSlot() { 2215void KateView::replaceSlot() {
2215 doReplaceAction(replacePrompt->result(),true); 2216 doReplaceAction(replacePrompt->result(),true);
2216} 2217}
2217 2218
2218void KateView::installPopup(QPopupMenu *rmb_Menu) 2219void KateView::installPopup(QPopupMenu *rmb_Menu)
2219{ 2220{
2220 rmbMenu = rmb_Menu; 2221 rmbMenu = rmb_Menu;
2221} 2222}
2222 2223
2223void KateView::readConfig() 2224void KateView::readConfig()
2224{ 2225{
2225 KateConfig *config = KGlobal::config(); 2226 KateConfig *config = KGlobal::config();
2226 config->setGroup("Kate View"); 2227 config->setGroup("Kate View");
2227 2228
2228 searchFlags = config->readNumEntry("SearchFlags", KateView::sfPrompt); 2229 searchFlags = config->readNumEntry("SearchFlags", KateView::sfPrompt);
2229 configFlags = config->readNumEntry("ConfigFlags", configFlags) & ~KateView::cfMark; 2230 configFlags = config->readNumEntry("ConfigFlags", configFlags) & ~KateView::cfMark;
2230 2231
2231// config->sync(); 2232// config->sync();
2232} 2233}
2233 2234
2234void KateView::writeConfig() 2235void KateView::writeConfig()
2235{ 2236{
2236 KateConfig *config = KGlobal::config(); 2237 KateConfig *config = KGlobal::config();
2237 config->setGroup("Kate View"); 2238 config->setGroup("Kate View");
2238 2239
2239 config->writeEntry("SearchFlags",searchFlags); 2240 config->writeEntry("SearchFlags",searchFlags);
2240 config->writeEntry("ConfigFlags",configFlags); 2241 config->writeEntry("ConfigFlags",configFlags);
2241 2242
2242// config->sync(); 2243// config->sync();
2243} 2244}
2244 2245
2245void KateView::readSessionConfig(KateConfig *config) 2246void KateView::readSessionConfig(KateConfig *config)
2246{ 2247{
2247 PointStruc cursor; 2248 PointStruc cursor;
2248 2249
2249 myViewInternal->xPos = config->readNumEntry("XPos"); 2250 myViewInternal->xPos = config->readNumEntry("XPos");
2250 myViewInternal->yPos = config->readNumEntry("YPos"); 2251 myViewInternal->yPos = config->readNumEntry("YPos");
2251 cursor.x = config->readNumEntry("CursorX"); 2252 cursor.x = config->readNumEntry("CursorX");
2252 cursor.y = config->readNumEntry("CursorY"); 2253 cursor.y = config->readNumEntry("CursorY");
2253 myViewInternal->updateCursor(cursor); 2254 myViewInternal->updateCursor(cursor);
2254 myIconBorder = config->readBoolEntry("IconBorder on"); 2255 myIconBorder = config->readBoolEntry("IconBorder on");
2255 setIconBorder(myIconBorder); 2256 setIconBorder(myIconBorder);
2256} 2257}
2257 2258
2258void KateView::writeSessionConfig(KateConfig *config) 2259void KateView::writeSessionConfig(KateConfig *config)
2259{ 2260{
2260 config->writeEntry("XPos",myViewInternal->xPos); 2261 config->writeEntry("XPos",myViewInternal->xPos);
2261 config->writeEntry("YPos",myViewInternal->yPos); 2262 config->writeEntry("YPos",myViewInternal->yPos);
2262 config->writeEntry("CursorX",myViewInternal->cursor.x); 2263 config->writeEntry("CursorX",myViewInternal->cursor.x);
2263 config->writeEntry("CursorY",myViewInternal->cursor.y); 2264 config->writeEntry("CursorY",myViewInternal->cursor.y);
2264 config->writeEntry("IconBorder on", myIconBorder); 2265 config->writeEntry("IconBorder on", myIconBorder);
2265} 2266}
2266 2267
2267void KateView::configDialog() 2268void KateView::configDialog()
2268{ 2269{
2269 2270
2270#warning fixme 2271#warning fixme
2271 2272
2272#if 1 2273#if 1
2273 KDialogBase *kd = new KDialogBase(KDialogBase::IconList, 2274 KDialogBase *kd = new KDialogBase(KDialogBase::IconList,
2274 i18n("Configure Editor"), 2275 i18n("Configure Editor"),
2275 KDialogBase::Ok | KDialogBase::Cancel | 2276 KDialogBase::Ok | KDialogBase::Cancel |
2276 KDialogBase::Help , 2277 KDialogBase::Help ,
2277 KDialogBase::Ok, this, "tabdialog"); 2278 KDialogBase::Ok, this, "tabdialog");
2278 2279
2279 // color options 2280 // color options
2280 QFrame *page=kd->addPage(i18n("Colors")); 2281 QFrame *page=kd->addPage(i18n("Colors"));
2281 (new QVBoxLayout(page))->setAutoAdd(true); 2282 (new QVBoxLayout(page))->setAutoAdd(true);
2282 ColorConfig *colorConfig = new ColorConfig(page); 2283 ColorConfig *colorConfig = new ColorConfig(page);
2283 QColor* colors = getColors(); 2284 QColor* colors = getColors();
2284 colorConfig->setColors(colors); 2285 colorConfig->setColors(colors);
2285 2286
2286 page = kd->addPage(i18n("Fonts")); 2287 page = kd->addPage(i18n("Fonts"));
2287 (new QVBoxLayout(page))->setAutoAdd(true); 2288 (new QVBoxLayout(page))->setAutoAdd(true);
2288 2289
2289 FontConfig *fontConfig = new FontConfig(page); 2290 FontConfig *fontConfig = new FontConfig(page);
2290 fontConfig->setFont (myDoc->getFont()); 2291 fontConfig->setFont (myDoc->getFont());
2291 2292
2292 // indent options 2293 // indent options
2293 page=kd->addPage(i18n("Indent")); 2294 page=kd->addPage(i18n("Indent"));
2294 (new QVBoxLayout(page))->setAutoAdd(true); 2295 (new QVBoxLayout(page))->setAutoAdd(true);
2295 2296
2296 IndentConfigTab *indentConfig = new IndentConfigTab(page, this); 2297 IndentConfigTab *indentConfig = new IndentConfigTab(page, this);
2297 2298
2298 // select options 2299 // select options
2299 page=kd->addPage(i18n("Select")); 2300 page=kd->addPage(i18n("Select"));
2300 (new QVBoxLayout(page))->setAutoAdd(true); 2301 (new QVBoxLayout(page))->setAutoAdd(true);
2301 2302
2302 SelectConfigTab *selectConfig = new SelectConfigTab(page, this); 2303 SelectConfigTab *selectConfig = new SelectConfigTab(page, this);
2303 2304
2304 // edit options 2305 // edit options
2305 page=kd->addPage(i18n("Edit")); 2306 page=kd->addPage(i18n("Edit"));
2306 (new QVBoxLayout(page))->setAutoAdd(true); 2307 (new QVBoxLayout(page))->setAutoAdd(true);
2307 2308
2308 EditConfigTab *editConfig = new EditConfigTab(page, this); 2309 EditConfigTab *editConfig = new EditConfigTab(page, this);
2309 2310
2310 2311
2311 2312
2312 HighlightDialogPage *hlPage; 2313 HighlightDialogPage *hlPage;
2313 HlManager *hlManager; 2314 HlManager *hlManager;
2314 HlDataList hlDataList; 2315 HlDataList hlDataList;
2315 ItemStyleList defaultStyleList; 2316 ItemStyleList defaultStyleList;
2316 2317
2317 hlManager = HlManager::self(); 2318 hlManager = HlManager::self();
2318 2319
2319 defaultStyleList.setAutoDelete(true); 2320 defaultStyleList.setAutoDelete(true);
2320 hlManager->getDefaults(defaultStyleList); 2321 hlManager->getDefaults(defaultStyleList);
2321 2322
2322 hlDataList.setAutoDelete(true); 2323 hlDataList.setAutoDelete(true);
2323 //this gets the data from the KateConfig object 2324 //this gets the data from the KateConfig object
2324 hlManager->getHlDataList(hlDataList); 2325 hlManager->getHlDataList(hlDataList);
2325 2326
2326 page=kd->addPage(i18n("Highlighting")); 2327 page=kd->addPage(i18n("Highlighting"));
2327 (new QVBoxLayout(page))->setAutoAdd(true); 2328 (new QVBoxLayout(page))->setAutoAdd(true);
2328 2329
2329 hlPage = new HighlightDialogPage(hlManager, &defaultStyleList, &hlDataList, 0, page); 2330 hlPage = new HighlightDialogPage(hlManager, &defaultStyleList, &hlDataList, 0, page);
2330 kd->showMaximized(); 2331 if ( QPEApplication::execDialog( kd )) {
2331 if (kd->exec()) {
2332 // color options 2332 // color options
2333 colorConfig->getColors(colors); 2333 colorConfig->getColors(colors);
2334 myDoc->setFont (fontConfig->getFont()); 2334 myDoc->setFont (fontConfig->getFont());
2335 2335
2336 applyColors(); 2336 applyColors();
2337 // indent options 2337 // indent options
2338 indentConfig->getData(this); 2338 indentConfig->getData(this);
2339 // select options 2339 // select options
2340 selectConfig->getData(this); 2340 selectConfig->getData(this);
2341 // edit options 2341 // edit options
2342 editConfig->getData(this); 2342 editConfig->getData(this);
2343 // spell checker 2343 // spell checker
2344 hlManager->setHlDataList(hlDataList); 2344 hlManager->setHlDataList(hlDataList);
2345 hlManager->setDefaults(defaultStyleList); 2345 hlManager->setDefaults(defaultStyleList);
2346 hlPage->saveData(); 2346 hlPage->saveData();
2347 } 2347 }
2348 2348
2349// delete kd; 2349// delete kd;
2350 2350
2351#endif 2351#endif
2352} 2352}
2353 2353
2354int KateView::getHl() { 2354int KateView::getHl() {
2355 return myDoc->highlightNum(); 2355 return myDoc->highlightNum();
2356} 2356}
2357 2357
2358void KateView::setDontChangeHlOnSave() 2358void KateView::setDontChangeHlOnSave()
2359{ 2359{
2360 myDoc->setDontChangeHlOnSave(); 2360 myDoc->setDontChangeHlOnSave();
2361} 2361}
2362 2362
2363void KateView::setHl(int n) { 2363void KateView::setHl(int n) {
2364 myDoc->setHighlight(n); 2364 myDoc->setHighlight(n);
2365 myDoc->setDontChangeHlOnSave(); 2365 myDoc->setDontChangeHlOnSave();
2366 myDoc->updateViews(); 2366 myDoc->updateViews();
2367} 2367}
2368 2368
2369int KateView::getEol() { 2369int KateView::getEol() {
2370 return myDoc->eolMode; 2370 return myDoc->eolMode;
2371} 2371}
2372 2372
2373void KateView::setEol(int eol) { 2373void KateView::setEol(int eol) {
2374 if (isReadOnly()) 2374 if (isReadOnly())
2375 return; 2375 return;
2376 2376
2377 myDoc->eolMode = eol; 2377 myDoc->eolMode = eol;
2378 myDoc->setModified(true); 2378 myDoc->setModified(true);
2379} 2379}
2380 2380
2381 2381
2382 2382
2383void KateView::paintEvent(QPaintEvent *e) { 2383void KateView::paintEvent(QPaintEvent *e) {
2384 int x, y; 2384 int x, y;
2385 2385
2386 QRect updateR = e->rect(); // update rectangle 2386 QRect updateR = e->rect(); // update rectangle
2387// debug("Update rect = ( %i, %i, %i, %i )", 2387// debug("Update rect = ( %i, %i, %i, %i )",
2388// updateR.x(),updateR.y(), updateR.width(), updateR.height() ); 2388// updateR.x(),updateR.y(), updateR.width(), updateR.height() );
2389 2389
2390 int ux1 = updateR.x(); 2390 int ux1 = updateR.x();
2391 int uy1 = updateR.y(); 2391 int uy1 = updateR.y();
2392 int ux2 = ux1 + updateR.width(); 2392 int ux2 = ux1 + updateR.width();
2393 int uy2 = uy1 + updateR.height(); 2393 int uy2 = uy1 + updateR.height();
2394 2394
2395 QPainter paint; 2395 QPainter paint;
2396 paint.begin(this); 2396 paint.begin(this);
2397 2397
2398 QColorGroup g = colorGroup(); 2398 QColorGroup g = colorGroup();
2399 x = width(); 2399 x = width();
2400 y = height(); 2400 y = height();
2401 2401
2402 paint.setPen(g.dark()); 2402 paint.setPen(g.dark());
2403 if (uy1 <= 0) paint.drawLine(0,0,x-2,0); 2403 if (uy1 <= 0) paint.drawLine(0,0,x-2,0);
2404 if (ux1 <= 0) paint.drawLine(0,1,0,y-2); 2404 if (ux1 <= 0) paint.drawLine(0,1,0,y-2);
2405 2405
2406 paint.setPen(black); 2406 paint.setPen(black);
2407 if (uy1 <= 1) paint.drawLine(1,1,x-3,1); 2407 if (uy1 <= 1) paint.drawLine(1,1,x-3,1);
2408 if (ux1 <= 1) paint.drawLine(1,2,1,y-3); 2408 if (ux1 <= 1) paint.drawLine(1,2,1,y-3);
2409 2409
2410 paint.setPen(g.midlight()); 2410 paint.setPen(g.midlight());
2411 if (uy2 >= y-1) paint.drawLine(1,y-2,x-3,y-2); 2411 if (uy2 >= y-1) paint.drawLine(1,y-2,x-3,y-2);
2412 if (ux2 >= x-1) paint.drawLine(x-2,1,x-2,y-2); 2412 if (ux2 >= x-1) paint.drawLine(x-2,1,x-2,y-2);
2413 2413
2414 paint.setPen(g.light()); 2414 paint.setPen(g.light());
2415 if (uy2 >= y) paint.drawLine(0,y-1,x-2,y-1); 2415 if (uy2 >= y) paint.drawLine(0,y-1,x-2,y-1);
2416 if (ux2 >= x) paint.drawLine(x-1,0,x-1,y-1); 2416 if (ux2 >= x) paint.drawLine(x-1,0,x-1,y-1);
2417 2417
2418 x -= 2 + 16; 2418 x -= 2 + 16;
2419 y -= 2 + 16; 2419 y -= 2 + 16;
2420 if (ux2 > x && uy2 > y) { 2420 if (ux2 > x && uy2 > y) {
2421 paint.fillRect(x,y,16,16,g.background()); 2421 paint.fillRect(x,y,16,16,g.background());
2422 } 2422 }
2423 paint.end(); 2423 paint.end();
2424} 2424}
2425 2425
2426void KateView::resizeEvent(QResizeEvent *) { 2426void KateView::resizeEvent(QResizeEvent *) {
2427 2427
2428// debug("Resize %d, %d",e->size().width(),e->size().height()); 2428// debug("Resize %d, %d",e->size().width(),e->size().height());
2429 2429
2430//myViewInternal->resize(width() -20, height() -20); 2430//myViewInternal->resize(width() -20, height() -20);
2431 myViewInternal->tagAll(); 2431 myViewInternal->tagAll();
2432 myViewInternal->updateView(0/*ufNoScroll*/); 2432 myViewInternal->updateView(0/*ufNoScroll*/);
2433} 2433}
2434 2434
2435 2435
2436// Applies a new pattern to the search context. 2436// Applies a new pattern to the search context.
2437void SConfig::setPattern(QString &newPattern) { 2437void SConfig::setPattern(QString &newPattern) {
2438 bool regExp = (flags & KateView::sfRegularExpression); 2438 bool regExp = (flags & KateView::sfRegularExpression);
2439 2439
2440 m_pattern = newPattern; 2440 m_pattern = newPattern;
2441 if (regExp) { 2441 if (regExp) {
2442 m_regExp.setCaseSensitive(flags & KateView::sfCaseSensitive); 2442 m_regExp.setCaseSensitive(flags & KateView::sfCaseSensitive);
2443 m_regExp.setPattern(m_pattern); 2443 m_regExp.setPattern(m_pattern);
2444 } 2444 }
2445} 2445}
2446 2446
2447// Applies the search context to the given string, and returns whether a match was found. If one is, 2447// Applies the search context to the given string, and returns whether a match was found. If one is,
2448// the length of the string matched is also returned. 2448// the length of the string matched is also returned.
2449int SConfig::search(QString &text, int index) { 2449int SConfig::search(QString &text, int index) {
2450 bool regExp = (flags & KateView::sfRegularExpression); 2450 bool regExp = (flags & KateView::sfRegularExpression);
2451 bool caseSensitive = (flags & KateView::sfCaseSensitive); 2451 bool caseSensitive = (flags & KateView::sfCaseSensitive);
2452 2452
2453 if (flags & KateView::sfBackward) { 2453 if (flags & KateView::sfBackward) {
2454 if (regExp) { 2454 if (regExp) {
2455 index = text.findRev(m_regExp, index); 2455 index = text.findRev(m_regExp, index);
2456 } 2456 }
2457 else { 2457 else {
2458 index = text.findRev(m_pattern, index, caseSensitive); 2458 index = text.findRev(m_pattern, index, caseSensitive);
2459 } 2459 }
2460 } 2460 }
2461 else { 2461 else {
2462 if (regExp) { 2462 if (regExp) {
2463 index = text.find(m_regExp, index); 2463 index = text.find(m_regExp, index);
2464 } 2464 }
2465 else { 2465 else {
2466 index = text.find(m_pattern, index, caseSensitive); 2466 index = text.find(m_pattern, index, caseSensitive);
2467 } 2467 }
2468 } 2468 }
2469 2469
2470 // Work out the matched length. 2470 // Work out the matched length.
2471 if (index != -1) 2471 if (index != -1)
2472 { 2472 {
2473 if (regExp) { 2473 if (regExp) {
2474 m_regExp.match(text, index, &matchedLength, false); 2474 m_regExp.match(text, index, &matchedLength, false);
2475 } 2475 }
2476 else { 2476 else {
2477 matchedLength = m_pattern.length(); 2477 matchedLength = m_pattern.length();
2478 } 2478 }
2479 } 2479 }
2480 return index; 2480 return index;
2481} 2481}
2482 2482
2483void KateView::setActive (bool b) 2483void KateView::setActive (bool b)
2484{ 2484{
2485 active = b; 2485 active = b;
2486} 2486}
2487 2487
2488bool KateView::isActive () 2488bool KateView::isActive ()
2489{ 2489{
2490 return active; 2490 return active;
2491} 2491}
2492 2492
2493void KateView::setFocus () 2493void KateView::setFocus ()
2494{ 2494{
2495 QWidget::setFocus (); 2495 QWidget::setFocus ();
2496 2496
2497 emit gotFocus (this); 2497 emit gotFocus (this);
2498} 2498}
2499 2499
2500bool KateView::eventFilter (QObject *object, QEvent *event) 2500bool KateView::eventFilter (QObject *object, QEvent *event)
2501{ 2501{
2502 2502
2503 if ( (event->type() == QEvent::FocusIn) ) 2503 if ( (event->type() == QEvent::FocusIn) )
2504 emit gotFocus (this); 2504 emit gotFocus (this);
2505 2505
2506 if ( (event->type() == QEvent::KeyPress) ) 2506 if ( (event->type() == QEvent::KeyPress) )
2507 { 2507 {
2508 QKeyEvent * ke=(QKeyEvent *)event; 2508 QKeyEvent * ke=(QKeyEvent *)event;
2509 2509
2510 if ((ke->key()==Qt::Key_Tab) || (ke->key()==Qt::Key_BackTab)) 2510 if ((ke->key()==Qt::Key_Tab) || (ke->key()==Qt::Key_BackTab))
2511 { 2511 {
2512 myViewInternal->keyPressEvent(ke); 2512 myViewInternal->keyPressEvent(ke);
2513 return true; 2513 return true;
2514 } 2514 }
2515 } 2515 }
2516 return QWidget::eventFilter (object, event); 2516 return QWidget::eventFilter (object, event);
2517} 2517}
2518 2518
2519void KateView::findAgain (bool back) 2519void KateView::findAgain (bool back)
2520{ 2520{
2521 bool b= (searchFlags & sfBackward) > 0; 2521 bool b= (searchFlags & sfBackward) > 0;
2522 initSearch(s, (searchFlags & ((b==back)?~sfBackward:~0) & ~sfFromBeginning) // clear flag for forward searching 2522 initSearch(s, (searchFlags & ((b==back)?~sfBackward:~0) & ~sfFromBeginning) // clear flag for forward searching
2523 | sfPrompt | sfAgain | ((b!=back)?sfBackward:0) ); 2523 | sfPrompt | sfAgain | ((b!=back)?sfBackward:0) );
2524 if (s.flags & sfReplace) 2524 if (s.flags & sfReplace)
2525 replaceAgain(); 2525 replaceAgain();
2526 else 2526 else
2527 KateView::findAgain(s); 2527 KateView::findAgain(s);
2528} 2528}
2529 2529
2530void KateView::slotEditCommand () 2530void KateView::slotEditCommand ()
2531{ 2531{
2532#warning fixme 2532#warning fixme
2533/* 2533/*
2534 bool ok; 2534 bool ok;
2535 QString cmd = KLineEditDlg::getText("Editing Command", "", &ok, this); 2535 QString cmd = KLineEditDlg::getText("Editing Command", "", &ok, this);
2536 2536
2537 if (ok) 2537 if (ok)
2538 myDoc->cmd()->execCmd (cmd, this);*/ 2538 myDoc->cmd()->execCmd (cmd, this);*/
2539} 2539}
2540 2540
2541void KateView::setIconBorder (bool enable) 2541void KateView::setIconBorder (bool enable)
2542{ 2542{
2543 myIconBorder = enable; 2543 myIconBorder = enable;
2544 2544
2545 if (myIconBorder) 2545 if (myIconBorder)
2546 { 2546 {
2547 myViewInternal->move(myViewInternal->iconBorderWidth+2, 2); 2547 myViewInternal->move(myViewInternal->iconBorderWidth+2, 2);
2548 myViewInternal->leftBorder->show(); 2548 myViewInternal->leftBorder->show();
2549 } 2549 }
2550 else 2550 else
2551 { 2551 {
2552 myViewInternal->leftBorder->hide(); 2552 myViewInternal->leftBorder->hide();
2553 myViewInternal->move(2, 2); 2553 myViewInternal->move(2, 2);
2554 } 2554 }
2555} 2555}
2556 2556
2557void KateView::toggleIconBorder () 2557void KateView::toggleIconBorder ()
2558{ 2558{
2559 setIconBorder (!myIconBorder); 2559 setIconBorder (!myIconBorder);
2560} 2560}
2561 2561
2562void KateView::gotoMark (Kate::Mark *mark) 2562void KateView::gotoMark (Kate::Mark *mark)
2563{ 2563{
2564 PointStruc cursor; 2564 PointStruc cursor;
2565 2565
2566 cursor.x = 0; 2566 cursor.x = 0;
2567 cursor.y = mark->line; 2567 cursor.y = mark->line;
2568 myDoc->needPreHighlight(cursor.y); 2568 myDoc->needPreHighlight(cursor.y);
2569 myViewInternal->updateCursor(cursor); 2569 myViewInternal->updateCursor(cursor);
2570 myViewInternal->center(); 2570 myViewInternal->center();
2571 myViewInternal->updateView(KateView::ufUpdateOnScroll); 2571 myViewInternal->updateView(KateView::ufUpdateOnScroll);
2572 myDoc->updateViews(this); 2572 myDoc->updateViews(this);
2573} 2573}
2574 2574
2575void KateView::toggleBookmark () 2575void KateView::toggleBookmark ()
2576{ 2576{
2577 TextLine::Ptr line = myDoc->getTextLine (currentLine()); 2577 TextLine::Ptr line = myDoc->getTextLine (currentLine());
2578 2578
2579 if (line->mark()&KateDocument::Bookmark) 2579 if (line->mark()&KateDocument::Bookmark)
2580 line->delMark(KateDocument::Bookmark); 2580 line->delMark(KateDocument::Bookmark);
2581 else 2581 else
2582 line->addMark(KateDocument::Bookmark); 2582 line->addMark(KateDocument::Bookmark);
2583 2583
2584 myDoc->tagLines (currentLine(), currentLine()); 2584 myDoc->tagLines (currentLine(), currentLine());
2585 myDoc->updateViews(); 2585 myDoc->updateViews();
2586} 2586}
2587 2587
2588void KateView::clearBookmarks() 2588void KateView::clearBookmarks()
2589{ 2589{
2590 QList<Kate::Mark> list = myDoc->marks(); 2590 QList<Kate::Mark> list = myDoc->marks();
2591 for (int i=0; (uint) i < list.count(); i++) 2591 for (int i=0; (uint) i < list.count(); i++)
2592 { 2592 {
2593 if (list.at(i)->type&KateDocument::Bookmark) 2593 if (list.at(i)->type&KateDocument::Bookmark)
2594 { 2594 {
2595 myDoc->getTextLine(list.at(i)->line)->delMark(KateDocument::Bookmark); 2595 myDoc->getTextLine(list.at(i)->line)->delMark(KateDocument::Bookmark);
2596 myDoc->tagLines(list.at(i)->line, list.at(i)->line); 2596 myDoc->tagLines(list.at(i)->line, list.at(i)->line);
2597 } 2597 }
2598 } 2598 }
2599 2599
2600 myDoc->updateViews(); 2600 myDoc->updateViews();
2601} 2601}
2602 2602
2603void KateView::bookmarkMenuAboutToShow() 2603void KateView::bookmarkMenuAboutToShow()
2604{ 2604{
2605#warning fixme 2605#warning fixme
2606#if 0 2606#if 0
2607 bookmarkMenu->popupMenu()->clear (); 2607 bookmarkMenu->popupMenu()->clear ();
2608 bookmarkToggle->plug (bookmarkMenu->popupMenu()); 2608 bookmarkToggle->plug (bookmarkMenu->popupMenu());
2609 bookmarkClear->plug (bookmarkMenu->popupMenu()); 2609 bookmarkClear->plug (bookmarkMenu->popupMenu());
2610 bookmarkMenu->popupMenu()->insertSeparator (); 2610 bookmarkMenu->popupMenu()->insertSeparator ();
2611 2611
2612 list = myDoc->marks(); 2612 list = myDoc->marks();
2613 for (int i=0; (uint) i < list.count(); i++) 2613 for (int i=0; (uint) i < list.count(); i++)
2614 { 2614 {
2615 if (list.at(i)->type&KateDocument::Bookmark) 2615 if (list.at(i)->type&KateDocument::Bookmark)
2616 { 2616 {
2617 QString bText = textLine(list.at(i)->line); 2617 QString bText = textLine(list.at(i)->line);
2618 bText.truncate(32); 2618 bText.truncate(32);
2619 bText.append ("..."); 2619 bText.append ("...");
2620 bookmarkMenu->popupMenu()->insertItem ( QString("%1 - \"%2\"").arg(list.at(i)->line).arg(bText), this, SLOT (gotoBookmark(int)), 0, i ); 2620 bookmarkMenu->popupMenu()->insertItem ( QString("%1 - \"%2\"").arg(list.at(i)->line).arg(bText), this, SLOT (gotoBookmark(int)), 0, i );
2621 } 2621 }
2622 } 2622 }
2623#endif 2623#endif
2624} 2624}
2625 2625
2626void KateView::gotoBookmark (int n) 2626void KateView::gotoBookmark (int n)
2627{ 2627{
2628 gotoMark (list.at(n)); 2628 gotoMark (list.at(n));
2629} 2629}
2630 2630
2631int KateView::getHlCount () 2631int KateView::getHlCount ()
2632{ 2632{
2633 return HlManager::self()->highlights(); 2633 return HlManager::self()->highlights();
2634} 2634}
2635 2635
2636QString KateView::getHlName (int z) 2636QString KateView::getHlName (int z)
2637{ 2637{
2638 return HlManager::self()->hlName(z); 2638 return HlManager::self()->hlName(z);
2639} 2639}
2640 2640
2641QString KateView::getHlSection (int z) 2641QString KateView::getHlSection (int z)
2642{ 2642{
2643 return HlManager::self()->hlSection (z); 2643 return HlManager::self()->hlSection (z);
2644} 2644}
2645 2645
2646void KateView::slotIncFontSizes () 2646void KateView::slotIncFontSizes ()
2647{ 2647{
2648 QFont font = myDoc->getFont(); 2648 QFont font = myDoc->getFont();
2649 font.setPointSize (font.pointSize()+2); 2649 font.setPointSize (font.pointSize()+2);
2650 myDoc->setFont (font); 2650 myDoc->setFont (font);
2651} 2651}
2652 2652
2653void KateView::slotDecFontSizes () 2653void KateView::slotDecFontSizes ()
2654{ 2654{
2655 QFont font = myDoc->getFont(); 2655 QFont font = myDoc->getFont();
2656 font.setPointSize (font.pointSize()-2); 2656 font.setPointSize (font.pointSize()-2);
2657 myDoc->setFont (font); 2657 myDoc->setFont (font);
2658} 2658}
2659 2659
2660const char*bookmark_xpm[]={ 2660const char*bookmark_xpm[]={
2661"12 16 4 1", 2661"12 16 4 1",
2662"b c #808080", 2662"b c #808080",
2663"a c #000080", 2663"a c #000080",
2664"# c #0000ff", 2664"# c #0000ff",
2665". c None", 2665". c None",
2666"............", 2666"............",
2667"............", 2667"............",
2668"........###.", 2668"........###.",
2669".......#...a", 2669".......#...a",
2670"......#.##.a", 2670"......#.##.a",
2671".....#.#..aa", 2671".....#.#..aa",
2672"....#.#...a.", 2672"....#.#...a.",
2673"...#.#.a.a..", 2673"...#.#.a.a..",
2674"..#.#.a.a...", 2674"..#.#.a.a...",
2675".#.#.a.a....", 2675".#.#.a.a....",
2676"#.#.a.a.....", 2676"#.#.a.a.....",
2677"#.#a.a...bbb", 2677"#.#a.a...bbb",
2678"#...a..bbb..", 2678"#...a..bbb..",
2679".aaa.bbb....", 2679".aaa.bbb....",
2680"............", 2680"............",
2681"............"}; 2681"............"};
2682 2682
2683const char* breakpoint_xpm[]={ 2683const char* breakpoint_xpm[]={
2684"11 16 6 1", 2684"11 16 6 1",
2685"c c #c6c6c6", 2685"c c #c6c6c6",
2686". c None", 2686". c None",
2687"# c #000000", 2687"# c #000000",
2688"d c #840000", 2688"d c #840000",
2689"a c #ffffff", 2689"a c #ffffff",
2690"b c #ff0000", 2690"b c #ff0000",
2691"...........", 2691"...........",
2692"...........", 2692"...........",
2693"...#####...", 2693"...#####...",
2694"..#aaaaa#..", 2694"..#aaaaa#..",
2695".#abbbbbb#.", 2695".#abbbbbb#.",
2696"#abbbbbbbb#", 2696"#abbbbbbbb#",
2697"#abcacacbd#", 2697"#abcacacbd#",
2698"#abbbbbbbb#", 2698"#abbbbbbbb#",
2699"#abcacacbd#", 2699"#abcacacbd#",
2700"#abbbbbbbb#", 2700"#abbbbbbbb#",
2701".#bbbbbbb#.", 2701".#bbbbbbb#.",
2702"..#bdbdb#..", 2702"..#bdbdb#..",
2703"...#####...", 2703"...#####...",
2704"...........", 2704"...........",
2705"...........", 2705"...........",
2706"..........."}; 2706"..........."};
2707 2707
2708const char*breakpoint_bl_xpm[]={ 2708const char*breakpoint_bl_xpm[]={
2709"11 16 7 1", 2709"11 16 7 1",
2710"a c #c0c0ff", 2710"a c #c0c0ff",
2711"# c #000000", 2711"# c #000000",
2712"c c #0000c0", 2712"c c #0000c0",
2713"e c #0000ff", 2713"e c #0000ff",
2714"b c #dcdcdc", 2714"b c #dcdcdc",
2715"d c #ffffff", 2715"d c #ffffff",
2716". c None", 2716". c None",
2717"...........", 2717"...........",
2718"...........", 2718"...........",
2719"...#####...", 2719"...#####...",
2720"..#ababa#..", 2720"..#ababa#..",
2721".#bcccccc#.", 2721".#bcccccc#.",
2722"#acccccccc#", 2722"#acccccccc#",
2723"#bcadadace#", 2723"#bcadadace#",
2724"#acccccccc#", 2724"#acccccccc#",
2725"#bcadadace#", 2725"#bcadadace#",
2726"#acccccccc#", 2726"#acccccccc#",
2727".#ccccccc#.", 2727".#ccccccc#.",
2728"..#cecec#..", 2728"..#cecec#..",
2729"...#####...", 2729"...#####...",
2730"...........", 2730"...........",
2731"...........", 2731"...........",
2732"..........."}; 2732"..........."};
2733 2733
2734const char*breakpoint_gr_xpm[]={ 2734const char*breakpoint_gr_xpm[]={
2735"11 16 6 1", 2735"11 16 6 1",
2736"c c #c6c6c6", 2736"c c #c6c6c6",
2737"d c #2c2c2c", 2737"d c #2c2c2c",
2738"# c #000000", 2738"# c #000000",
2739". c None", 2739". c None",
2740"a c #ffffff", 2740"a c #ffffff",
2741"b c #555555", 2741"b c #555555",
2742"...........", 2742"...........",
2743"...........", 2743"...........",
2744"...#####...", 2744"...#####...",
2745"..#aaaaa#..", 2745"..#aaaaa#..",
2746".#abbbbbb#.", 2746".#abbbbbb#.",
2747"#abbbbbbbb#", 2747"#abbbbbbbb#",
2748"#abcacacbd#", 2748"#abcacacbd#",
2749"#abbbbbbbb#", 2749"#abbbbbbbb#",
2750"#abcacacbd#", 2750"#abcacacbd#",
2751"#abbbbbbbb#", 2751"#abbbbbbbb#",
2752".#bbbbbbb#.", 2752".#bbbbbbb#.",
2753"..#bdbdb#..", 2753"..#bdbdb#..",
2754"...#####...", 2754"...#####...",
2755"...........", 2755"...........",
2756"...........", 2756"...........",
2757"..........."}; 2757"..........."};
2758 2758
2759const char*ddd_xpm[]={ 2759const char*ddd_xpm[]={
2760"11 16 4 1", 2760"11 16 4 1",
2761"a c #00ff00", 2761"a c #00ff00",
2762"b c #000000", 2762"b c #000000",
2763". c None", 2763". c None",
2764"# c #00c000", 2764"# c #00c000",
2765"...........", 2765"...........",
2766"...........", 2766"...........",
2767"...........", 2767"...........",
2768"#a.........", 2768"#a.........",
2769"#aaa.......", 2769"#aaa.......",
2770"#aaaaa.....", 2770"#aaaaa.....",
2771"#aaaaaaa...", 2771"#aaaaaaa...",
2772"#aaaaaaaaa.", 2772"#aaaaaaaaa.",
2773"#aaaaaaa#b.", 2773"#aaaaaaa#b.",
2774"#aaaaa#b...", 2774"#aaaaa#b...",
2775"#aaa#b.....", 2775"#aaa#b.....",
2776"#a#b.......", 2776"#a#b.......",
2777"#b.........", 2777"#b.........",
2778"...........", 2778"...........",
2779"...........", 2779"...........",
2780"..........."}; 2780"..........."};
2781 2781
2782 2782
2783 2783
2784KateIconBorder::KateIconBorder(KateView *view, KateViewInternal *internalView) 2784KateIconBorder::KateIconBorder(KateView *view, KateViewInternal *internalView)
2785 : QWidget(view), myView(view), myInternalView(internalView) 2785 : QWidget(view), myView(view), myInternalView(internalView)
2786{ 2786{
2787 lmbSetsBreakpoints = true; 2787 lmbSetsBreakpoints = true;
2788} 2788}
2789 2789
2790KateIconBorder::~KateIconBorder() 2790KateIconBorder::~KateIconBorder()
2791{ 2791{
2792} 2792}
2793 2793
2794void KateIconBorder::paintLine(int i) 2794void KateIconBorder::paintLine(int i)
2795{ 2795{
2796 if (!myView->myIconBorder) return; 2796 if (!myView->myIconBorder) return;
2797 2797
2798 QPainter p(this); 2798 QPainter p(this);
2799 2799
2800 int fontHeight = myView->doc()->fontHeight; 2800 int fontHeight = myView->doc()->fontHeight;
2801 int y = i*fontHeight - myInternalView->yPos; 2801 int y = i*fontHeight - myInternalView->yPos;
2802 p.fillRect(0, y, myInternalView->iconBorderWidth-2, fontHeight, colorGroup().background()); 2802 p.fillRect(0, y, myInternalView->iconBorderWidth-2, fontHeight, colorGroup().background());
2803 p.setPen(white); 2803 p.setPen(white);
2804 p.drawLine(myInternalView->iconBorderWidth-2, y, myInternalView->iconBorderWidth-2, y + fontHeight); 2804 p.drawLine(myInternalView->iconBorderWidth-2, y, myInternalView->iconBorderWidth-2, y + fontHeight);
2805 p.setPen(QColor(colorGroup().background()).dark()); 2805 p.setPen(QColor(colorGroup().background()).dark());
2806 p.drawLine(myInternalView->iconBorderWidth-1, y, myInternalView->iconBorderWidth-1, y + fontHeight); 2806 p.drawLine(myInternalView->iconBorderWidth-1, y, myInternalView->iconBorderWidth-1, y + fontHeight);
2807 2807
2808 TextLine *line = myView->doc()->getTextLine(i); 2808 TextLine *line = myView->doc()->getTextLine(i);
2809 if (!line) 2809 if (!line)
2810 return; 2810 return;
2811 2811
2812 if (line->mark()&KateDocument::Bookmark) 2812 if (line->mark()&KateDocument::Bookmark)
2813 p.drawPixmap(2, y, QPixmap(bookmark_xpm)); /* 2813 p.drawPixmap(2, y, QPixmap(bookmark_xpm)); /*
2814 if (line && (line->breakpointId() != -1)) { 2814 if (line && (line->breakpointId() != -1)) {
2815 if (!line->breakpointEnabled()) 2815 if (!line->breakpointEnabled())
2816 p.drawPixmap(2, y, QPixmap(breakpoint_gr_xpm)); 2816 p.drawPixmap(2, y, QPixmap(breakpoint_gr_xpm));
2817 else if (line->breakpointPending()) 2817 else if (line->breakpointPending())
2818 p.drawPixmap(2, y, QPixmap(breakpoint_bl_xpm)); 2818 p.drawPixmap(2, y, QPixmap(breakpoint_bl_xpm));
2819 else 2819 else
2820 p.drawPixmap(2, y, QPixmap(breakpoint_xpm)); 2820 p.drawPixmap(2, y, QPixmap(breakpoint_xpm));
2821 } 2821 }
2822 if (line->isExecutionPoint()) 2822 if (line->isExecutionPoint())
2823 p.drawPixmap(2, y, QPixmap(ddd_xpm)); */ 2823 p.drawPixmap(2, y, QPixmap(ddd_xpm)); */
2824} 2824}
2825 2825
2826 2826
2827void KateIconBorder::paintEvent(QPaintEvent* e) 2827void KateIconBorder::paintEvent(QPaintEvent* e)
2828{ 2828{
2829 if (!myView->myIconBorder) return; 2829 if (!myView->myIconBorder) return;
2830 2830
2831 int lineStart = 0; 2831 int lineStart = 0;
2832 int lineEnd = 0; 2832 int lineEnd = 0;
2833 2833
2834 QRect updateR = e->rect(); 2834 QRect updateR = e->rect();
2835 2835
2836 KateDocument *doc = myView->doc(); 2836 KateDocument *doc = myView->doc();
2837 int h = doc->fontHeight; 2837 int h = doc->fontHeight;
2838 int yPos = myInternalView->yPos; 2838 int yPos = myInternalView->yPos;
2839 if (h) { 2839 if (h) {
2840 lineStart = (yPos + updateR.y()) / h; 2840 lineStart = (yPos + updateR.y()) / h;
2841 lineEnd = QMAX((yPos + updateR.y() + updateR.height()) / h, (int)doc->numLines()); 2841 lineEnd = QMAX((yPos + updateR.y() + updateR.height()) / h, (int)doc->numLines());
2842 } 2842 }
2843 2843
2844 for(int i = lineStart; i <= lineEnd; ++i) 2844 for(int i = lineStart; i <= lineEnd; ++i)
2845 paintLine(i); 2845 paintLine(i);
2846} 2846}
2847 2847
2848 2848
2849void KateIconBorder::mousePressEvent(QMouseEvent* e) 2849void KateIconBorder::mousePressEvent(QMouseEvent* e)
2850{ 2850{
2851 myInternalView->placeCursor( 0, e->y(), 0 ); 2851 myInternalView->placeCursor( 0, e->y(), 0 );
2852 2852
2853 KateDocument *doc = myView->doc(); 2853 KateDocument *doc = myView->doc();
2854 int cursorOnLine = (e->y() + myInternalView->yPos) / doc->fontHeight; 2854 int cursorOnLine = (e->y() + myInternalView->yPos) / doc->fontHeight;
2855 TextLine *line = doc->getTextLine(cursorOnLine); 2855 TextLine *line = doc->getTextLine(cursorOnLine);
2856 2856
2857 switch (e->button()) { 2857 switch (e->button()) {
2858 case LeftButton: 2858 case LeftButton:
2859 if (!line) 2859 if (!line)
2860 break; 2860 break;
2861 else 2861 else
2862 { 2862 {
2863 if (line->mark()&KateDocument::Bookmark) 2863 if (line->mark()&KateDocument::Bookmark)
2864 line->delMark (KateDocument::Bookmark); 2864 line->delMark (KateDocument::Bookmark);
2865 else 2865 else
2866 line->addMark (KateDocument::Bookmark); 2866 line->addMark (KateDocument::Bookmark);
2867 2867
2868 doc->tagLines(cursorOnLine, cursorOnLine); 2868 doc->tagLines(cursorOnLine, cursorOnLine);
2869 doc->updateViews(); 2869 doc->updateViews();
2870 } 2870 }
2871 break; 2871 break;
2872 /* case RightButton: 2872 /* case RightButton:
2873 { 2873 {
2874 if (!line) 2874 if (!line)
2875 break; 2875 break;
2876 KPopupMenu popup; 2876 KPopupMenu popup;
2877 popup.setCheckable(true); 2877 popup.setCheckable(true);
2878 popup.insertTitle(i18n("Breakpoints/Bookmarks")); 2878 popup.insertTitle(i18n("Breakpoints/Bookmarks"));
2879 int idToggleBookmark = popup.insertItem(i18n("Toggle bookmark")); 2879 int idToggleBookmark = popup.insertItem(i18n("Toggle bookmark"));
2880 popup.insertSeparator(); 2880 popup.insertSeparator();
2881 int idToggleBreakpoint = popup.insertItem(i18n("Toggle breakpoint")); 2881 int idToggleBreakpoint = popup.insertItem(i18n("Toggle breakpoint"));
2882 int idEditBreakpoint = popup.insertItem(i18n("Edit breakpoint")); 2882 int idEditBreakpoint = popup.insertItem(i18n("Edit breakpoint"));
2883 int idEnableBreakpoint = popup.insertItem(i18n("Disable breakpoint")); 2883 int idEnableBreakpoint = popup.insertItem(i18n("Disable breakpoint"));
2884 popup.insertSeparator(); 2884 popup.insertSeparator();
2885 popup.insertSeparator(); 2885 popup.insertSeparator();
2886 int idLmbSetsBreakpoints = popup.insertItem(i18n("LMB sets breakpoints")); 2886 int idLmbSetsBreakpoints = popup.insertItem(i18n("LMB sets breakpoints"));
2887 int idLmbSetsBookmarks = popup.insertItem(i18n("LMB sets bookmarks")); 2887 int idLmbSetsBookmarks = popup.insertItem(i18n("LMB sets bookmarks"));
2888 2888
2889 popup.setItemChecked(idLmbSetsBreakpoints, lmbSetsBreakpoints); 2889 popup.setItemChecked(idLmbSetsBreakpoints, lmbSetsBreakpoints);
2890 popup.setItemChecked(idLmbSetsBookmarks, !lmbSetsBreakpoints); 2890 popup.setItemChecked(idLmbSetsBookmarks, !lmbSetsBreakpoints);
2891 2891
2892 if (line->breakpointId() == -1) { 2892 if (line->breakpointId() == -1) {
2893 popup.setItemEnabled(idEditBreakpoint, false); 2893 popup.setItemEnabled(idEditBreakpoint, false);
2894 popup.setItemEnabled(idEnableBreakpoint, false); 2894 popup.setItemEnabled(idEnableBreakpoint, false);
2895 popup.changeItem(idEnableBreakpoint, i18n("Enable breakpoint")); 2895 popup.changeItem(idEnableBreakpoint, i18n("Enable breakpoint"));
2896 } 2896 }
2897 int res = popup.exec(mapToGlobal(e->pos())); 2897 int res = popup.exec(mapToGlobal(e->pos()));
2898 if (res == idToggleBookmark) { 2898 if (res == idToggleBookmark) {
2899 line->toggleBookmark(); 2899 line->toggleBookmark();
2900 doc->tagLines(cursorOnLine, cursorOnLine); 2900 doc->tagLines(cursorOnLine, cursorOnLine);
2901 doc->updateViews(); 2901 doc->updateViews();
2902 } else if (res == idToggleBreakpoint) 2902 } else if (res == idToggleBreakpoint)
2903 emit myView->toggledBreakpoint(cursorOnLine); 2903 emit myView->toggledBreakpoint(cursorOnLine);
2904 else if (res == idEditBreakpoint) 2904 else if (res == idEditBreakpoint)
2905 emit myView->editedBreakpoint(cursorOnLine); 2905 emit myView->editedBreakpoint(cursorOnLine);
2906 else if (res == idEnableBreakpoint) 2906 else if (res == idEnableBreakpoint)
2907 emit myView->toggledBreakpointEnabled(cursorOnLine+1); 2907 emit myView->toggledBreakpointEnabled(cursorOnLine+1);
2908 else if (res == idLmbSetsBreakpoints || res == idLmbSetsBookmarks) 2908 else if (res == idLmbSetsBreakpoints || res == idLmbSetsBookmarks)
2909 lmbSetsBreakpoints = !lmbSetsBreakpoints; 2909 lmbSetsBreakpoints = !lmbSetsBreakpoints;
2910 break; 2910 break;
2911 } 2911 }
2912 case MidButton: 2912 case MidButton:
2913 line->toggleBookmark(); 2913 line->toggleBookmark();
2914 doc->tagLines(cursorOnLine, cursorOnLine); 2914 doc->tagLines(cursorOnLine, cursorOnLine);
2915 doc->updateViews(); 2915 doc->updateViews();
2916 break; */ 2916 break; */
2917 default: 2917 default:
2918 break; 2918 break;
2919 } 2919 }
2920} 2920}
2921 2921
2922 2922
2923 2923
diff --git a/noncore/apps/zsafe/scqtfileedit.cpp b/noncore/apps/zsafe/scqtfileedit.cpp
index effd86b..7a3d906 100644
--- a/noncore/apps/zsafe/scqtfileedit.cpp
+++ b/noncore/apps/zsafe/scqtfileedit.cpp
@@ -1,756 +1,758 @@
1/*************************************************************************** 1/***************************************************************************
2 scqtfileedit.cpp - description 2 scqtfileedit.cpp - description
3 ------------------- 3 -------------------
4 begin : Mon Sep 3 2001 4 begin : Mon Sep 3 2001
5 copyright : (C) 2001 by Werner Schulte 5 copyright : (C) 2001 by Werner Schulte
6 email : sc@schulte-ac.de 6 email : sc@schulte-ac.de
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/* $Id$ */ 9/* $Id$ */
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19#include <stdio.h> 19#include <stdio.h>
20#include <stdlib.h> 20#include <stdlib.h>
21 21
22#include "qdir.h" 22#include "qdir.h"
23#include "qdialog.h" 23#include "qdialog.h"
24#include "qpixmap.h" 24#include "qpixmap.h"
25#include "qlistview.h" 25#include "qlistview.h"
26#include "qlineedit.h" 26#include "qlineedit.h"
27#include "qtoolbutton.h" 27#include "qtoolbutton.h"
28 28
29#include "scqtfileedit.h" 29#include "scqtfileedit.h"
30 30
31#include <qpe/qpeapplication.h>
32
31// #define DEBUGFILEEDIT 33// #define DEBUGFILEEDIT
32 34
33/* XPM */ 35/* XPM */
34static const char* const file_xpm[]={ 36static const char* const file_xpm[]={
35 "16 16 5 1", 37 "16 16 5 1",
36 ". c #7f7f7f", 38 ". c #7f7f7f",
37 "# c None", 39 "# c None",
38 "c c #000000", 40 "c c #000000",
39 "b c #bfbfbf", 41 "b c #bfbfbf",
40 "a c #ffffff", 42 "a c #ffffff",
41 "################", 43 "################",
42 "..........######", 44 "..........######",
43 ".aaaaaaaab.#####", 45 ".aaaaaaaab.#####",
44 ".aaaaaaaaba.####", 46 ".aaaaaaaaba.####",
45 ".aaaaaaaacccc###", 47 ".aaaaaaaacccc###",
46 ".aaaaaaaaaabc###", 48 ".aaaaaaaaaabc###",
47 ".aaaaaaaaaabc###", 49 ".aaaaaaaaaabc###",
48 ".aaaaaaaaaabc###", 50 ".aaaaaaaaaabc###",
49 ".aaaaaaaaaabc###", 51 ".aaaaaaaaaabc###",
50 ".aaaaaaaaaabc###", 52 ".aaaaaaaaaabc###",
51 ".aaaaaaaaaabc###", 53 ".aaaaaaaaaabc###",
52 ".aaaaaaaaaabc###", 54 ".aaaaaaaaaabc###",
53 ".aaaaaaaaaabc###", 55 ".aaaaaaaaaabc###",
54 ".aaaaaaaaaabc###", 56 ".aaaaaaaaaabc###",
55 ".bbbbbbbbbbbc###", 57 ".bbbbbbbbbbbc###",
56 "ccccccccccccc###"}; 58 "ccccccccccccc###"};
57 59
58/* XPM */ 60/* XPM */
59static const char * const link_file_xpm[]={ 61static const char * const link_file_xpm[]={
60 "16 16 10 1", 62 "16 16 10 1",
61 "h c #808080", 63 "h c #808080",
62 "g c #a0a0a0", 64 "g c #a0a0a0",
63 "d c #c3c3c3", 65 "d c #c3c3c3",
64 ". c #7f7f7f", 66 ". c #7f7f7f",
65 "c c #000000", 67 "c c #000000",
66 "b c #bfbfbf", 68 "b c #bfbfbf",
67 "f c #303030", 69 "f c #303030",
68 "e c #585858", 70 "e c #585858",
69 "a c #ffffff", 71 "a c #ffffff",
70 "# c None", 72 "# c None",
71 "################", 73 "################",
72 "..........######", 74 "..........######",
73 ".aaaaaaaab.#####", 75 ".aaaaaaaab.#####",
74 ".aaaaaaaaba.####", 76 ".aaaaaaaaba.####",
75 ".aaaaaaaacccc###", 77 ".aaaaaaaacccc###",
76 ".aaaaaaaaaabc###", 78 ".aaaaaaaaaabc###",
77 ".aaaaaaaaaabc###", 79 ".aaaaaaaaaabc###",
78 ".aaaaaaaaaadc###", 80 ".aaaaaaaaaadc###",
79 ".aaaaaaaaaadc###", 81 ".aaaaaaaaaadc###",
80 ".aaaacccccccc###", 82 ".aaaacccccccc###",
81 ".aaaacaaaaaac###", 83 ".aaaacaaaaaac###",
82 ".aaaacaeaeaac###", 84 ".aaaacaeaeaac###",
83 ".aaaacaefcfac###", 85 ".aaaacaefcfac###",
84 ".aaaacaagchac###", 86 ".aaaacaagchac###",
85 ".ddddcaaahaac###", 87 ".ddddcaaahaac###",
86 "ccccccccccccc###"}; 88 "ccccccccccccc###"};
87 89
88/* XPM */ 90/* XPM */
89static const char * const closed_xpm[]={ 91static const char * const closed_xpm[]={
90 "16 16 6 1", 92 "16 16 6 1",
91 ". c None", 93 ". c None",
92 "b c #ffff00", 94 "b c #ffff00",
93 "d c #000000", 95 "d c #000000",
94 "* c #999999", 96 "* c #999999",
95 "a c #cccccc", 97 "a c #cccccc",
96 "c c #ffffff", 98 "c c #ffffff",
97 "................", 99 "................",
98 "................", 100 "................",
99 "..*****.........", 101 "..*****.........",
100 ".*ababa*........", 102 ".*ababa*........",
101 "*abababa******..", 103 "*abababa******..",
102 "*cccccccccccc*d.", 104 "*cccccccccccc*d.",
103 "*cbababababab*d.", 105 "*cbababababab*d.",
104 "*cabababababa*d.", 106 "*cabababababa*d.",
105 "*cbababababab*d.", 107 "*cbababababab*d.",
106 "*cabababababa*d.", 108 "*cabababababa*d.",
107 "*cbababababab*d.", 109 "*cbababababab*d.",
108 "*cabababababa*d.", 110 "*cabababababa*d.",
109 "*cbababababab*d.", 111 "*cbababababab*d.",
110 "**************d.", 112 "**************d.",
111 ".dddddddddddddd.", 113 ".dddddddddddddd.",
112 "................"}; 114 "................"};
113 115
114/* XPM */ 116/* XPM */
115static const char* const cdtoparent_xpm[]={ 117static const char* const cdtoparent_xpm[]={
116 "15 13 3 1", 118 "15 13 3 1",
117 ". c None", 119 ". c None",
118 "* c #000000", 120 "* c #000000",
119 "a c #ffff99", 121 "a c #ffff99",
120 "..*****........", 122 "..*****........",
121 ".*aaaaa*.......", 123 ".*aaaaa*.......",
122 "***************", 124 "***************",
123 "*aaaaaaaaaaaaa*", 125 "*aaaaaaaaaaaaa*",
124 "*aaaa*aaaaaaaa*", 126 "*aaaa*aaaaaaaa*",
125 "*aaa***aaaaaaa*", 127 "*aaa***aaaaaaa*",
126 "*aa*****aaaaaa*", 128 "*aa*****aaaaaa*",
127 "*aaaa*aaaaaaaa*", 129 "*aaaa*aaaaaaaa*",
128 "*aaaa*aaaaaaaa*", 130 "*aaaa*aaaaaaaa*",
129 "*aaaa******aaa*", 131 "*aaaa******aaa*",
130 "*aaaaaaaaaaaaa*", 132 "*aaaaaaaaaaaaa*",
131 "*aaaaaaaaaaaaa*", 133 "*aaaaaaaaaaaaa*",
132 "***************"}; 134 "***************"};
133 135
134ScQtFileEditDlg::ScQtFileEditDlg( QWidget *parent, const char *name, 136ScQtFileEditDlg::ScQtFileEditDlg( QWidget *parent, const char *name,
135 const QString &path, const QString &filter ) 137 const QString &path, const QString &filter )
136 : ScQtFileDlg( parent, name, TRUE ), QDir( path, filter ) 138 : ScQtFileDlg( parent, name, TRUE ), QDir( path, filter )
137{ 139{
138// ListView->setRootIsDecorated ( TRUE ); 140// ListView->setRootIsDecorated ( TRUE );
139 141
140#ifdef DEBUGFILEEDIT 142#ifdef DEBUGFILEEDIT
141 printf ("\nScQtFileEditDlg:: constructor name=%s", name ); 143 printf ("\nScQtFileEditDlg:: constructor name=%s", name );
142 printf ("\n path=%s", (const char *)path ); 144 printf ("\n path=%s", (const char *)path );
143 printf ("\n filter=%s", (const char *)filter ); 145 printf ("\n filter=%s", (const char *)filter );
144 printf ("\n parent=%p", parent ); 146 printf ("\n parent=%p", parent );
145 fflush(stdout); 147 fflush(stdout);
146#endif 148#endif
147 149
148 bpath = path; 150 bpath = path;
149 bfilter = filter; 151 bfilter = filter;
150 exflag = false; 152 exflag = false;
151 153
152 ListView->setAllColumnsShowFocus( TRUE ); 154 ListView->setAllColumnsShowFocus( TRUE );
153 ListView->setColumnAlignment( 1, Qt::AlignRight ); 155 ListView->setColumnAlignment( 1, Qt::AlignRight );
154 156
155 fileIcon = new QPixmap( (const char **)file_xpm); 157 fileIcon = new QPixmap( (const char **)file_xpm);
156 dirIcon = new QPixmap( (const char **)closed_xpm); 158 dirIcon = new QPixmap( (const char **)closed_xpm);
157 linkIcon = new QPixmap( (const char **)link_file_xpm); 159 linkIcon = new QPixmap( (const char **)link_file_xpm);
158 cdToParentIcon = new QPixmap( (const char **)cdtoparent_xpm); 160 cdToParentIcon = new QPixmap( (const char **)cdtoparent_xpm);
159 161
160#ifdef QWS 162#ifdef QWS
161 showMaximized(); 163 QPEApplication::execDialog( this );
162#endif 164#endif
163 165
164 mkdirflag = false; 166 mkdirflag = false;
165 MkDirButton->setEnabled( false ); 167 MkDirButton->setEnabled( false );
166 168
167 initDirCombo( bpath ); 169 initDirCombo( bpath );
168 initTypeCombo( bfilter ); 170 initTypeCombo( bfilter );
169 171
170 dirstr = tr("dir"); 172 dirstr = tr("dir");
171 filestr = tr("file"); 173 filestr = tr("file");
172 linkstr = tr("link"); 174 linkstr = tr("link");
173 175
174 rFlag = false; 176 rFlag = false;
175 177
176 showTimer.stop(); 178 showTimer.stop();
177 connect( &showTimer, SIGNAL(timeout()), SLOT( slotShowDir() ) ); 179 connect( &showTimer, SIGNAL(timeout()), SLOT( slotShowDir() ) );
178 180
179 fmode = QDir::All; 181 fmode = QDir::All;
180 fnfilter = false; 182 fnfilter = false;
181 fsorting = false; 183 fsorting = false;
182 184
183} 185}
184 186
185ScQtFileEditDlg::~ScQtFileEditDlg() 187ScQtFileEditDlg::~ScQtFileEditDlg()
186{ 188{
187#ifdef DEBUGFILEEDIT 189#ifdef DEBUGFILEEDIT
188 printf ("\nScQtFileEditDlg::destructor called" ); 190 printf ("\nScQtFileEditDlg::destructor called" );
189 fflush(stdout); 191 fflush(stdout);
190#endif 192#endif
191 193
192 if ( fileIcon != NULL ) 194 if ( fileIcon != NULL )
193 { 195 {
194 delete fileIcon; 196 delete fileIcon;
195 fileIcon = NULL; 197 fileIcon = NULL;
196 } 198 }
197 if ( dirIcon != NULL ) 199 if ( dirIcon != NULL )
198 { 200 {
199 delete dirIcon; 201 delete dirIcon;
200 dirIcon = NULL; 202 dirIcon = NULL;
201 } 203 }
202 if ( linkIcon != NULL ) 204 if ( linkIcon != NULL )
203 { 205 {
204 delete linkIcon; 206 delete linkIcon;
205 linkIcon = NULL; 207 linkIcon = NULL;
206 } 208 }
207 if ( cdToParentIcon != NULL ) 209 if ( cdToParentIcon != NULL )
208 { 210 {
209 delete cdToParentIcon; 211 delete cdToParentIcon;
210 cdToParentIcon = NULL; 212 cdToParentIcon = NULL;
211 } 213 }
212} 214}
213 215
214void ScQtFileEditDlg::readIt( ) 216void ScQtFileEditDlg::readIt( )
215{ 217{
216 qfil = readDir( bpath, bfilter ); 218 qfil = readDir( bpath, bfilter );
217 slotShowDir( ); 219 slotShowDir( );
218} 220}
219 221
220void ScQtFileEditDlg::setAutoExtension( bool ex ) 222void ScQtFileEditDlg::setAutoExtension( bool ex )
221{ 223{
222 exflag = ex; 224 exflag = ex;
223} 225}
224 226
225 227
226int ScQtFileEditDlg::checkComboEntryExists( QComboBox *com, const QString &str ) 228int ScQtFileEditDlg::checkComboEntryExists( QComboBox *com, const QString &str )
227{ 229{
228 int i; 230 int i;
229 231
230 if ( com ) 232 if ( com )
231 { 233 {
232 for ( i = 0; i < com->count(); i++ ) 234 for ( i = 0; i < com->count(); i++ )
233 { 235 {
234 if ( com->text( i ) == str ) 236 if ( com->text( i ) == str )
235 { 237 {
236 com->setCurrentItem( i ); 238 com->setCurrentItem( i );
237 return( 1 ); 239 return( 1 );
238 } 240 }
239 } 241 }
240 } 242 }
241 243
242 return( 0 ); 244 return( 0 );
243} 245}
244 246
245 247
246void ScQtFileEditDlg::initDirCombo( const QString &str ) 248void ScQtFileEditDlg::initDirCombo( const QString &str )
247{ 249{
248 DirComboBox->clear(); 250 DirComboBox->clear();
249 DirComboBox->insertItem( "/" ); 251 DirComboBox->insertItem( "/" );
250 if ( str.isEmpty() ) 252 if ( str.isEmpty() )
251 return; 253 return;
252 DirComboBox->insertItem( str, -1 ); 254 DirComboBox->insertItem( str, -1 );
253} 255}
254 256
255void ScQtFileEditDlg::initTypeCombo( const QString &str ) 257void ScQtFileEditDlg::initTypeCombo( const QString &str )
256{ 258{
257 TypeComboBox->clear(); 259 TypeComboBox->clear();
258 TypeComboBox->insertItem( "*" ); 260 TypeComboBox->insertItem( "*" );
259 if ( str.isEmpty() ) 261 if ( str.isEmpty() )
260 return; 262 return;
261 TypeComboBox->insertItem( str, -1 ); 263 TypeComboBox->insertItem( str, -1 );
262} 264}
263 265
264void ScQtFileEditDlg::insDirCombo( const QString &str ) 266void ScQtFileEditDlg::insDirCombo( const QString &str )
265{ 267{
266 if ( str.isEmpty() ) 268 if ( str.isEmpty() )
267 return; 269 return;
268 270
269 if ( !checkComboEntryExists( DirComboBox, str ) ) 271 if ( !checkComboEntryExists( DirComboBox, str ) )
270 { 272 {
271 if ( DirComboBox->count() >= MAXDIRCOMBOCOUNT ) 273 if ( DirComboBox->count() >= MAXDIRCOMBOCOUNT )
272 { 274 {
273 // 2. Item loeschen (das erste ist "/") 275 // 2. Item loeschen (das erste ist "/")
274 DirComboBox->removeItem( 1 ); 276 DirComboBox->removeItem( 1 );
275 } 277 }
276 // neues Item anhaengen 278 // neues Item anhaengen
277 DirComboBox->insertItem( str, -1 ); 279 DirComboBox->insertItem( str, -1 );
278 DirComboBox->setCurrentItem( DirComboBox->count() - 1 ); 280 DirComboBox->setCurrentItem( DirComboBox->count() - 1 );
279 } 281 }
280} 282}
281 283
282void ScQtFileEditDlg::insTypeCombo( const QString &str ) 284void ScQtFileEditDlg::insTypeCombo( const QString &str )
283{ 285{
284 if ( str.isEmpty() ) 286 if ( str.isEmpty() )
285 return; 287 return;
286 288
287 if ( !checkComboEntryExists( TypeComboBox, str ) ) 289 if ( !checkComboEntryExists( TypeComboBox, str ) )
288 { 290 {
289 if ( TypeComboBox->count() >= MAXTYPECOMBOCOUNT ) 291 if ( TypeComboBox->count() >= MAXTYPECOMBOCOUNT )
290 { 292 {
291 // 2. Item loeschen (das erste ist "/") 293 // 2. Item loeschen (das erste ist "/")
292 TypeComboBox->removeItem( 1 ); 294 TypeComboBox->removeItem( 1 );
293 } 295 }
294 // neues Item anhaengen 296 // neues Item anhaengen
295 TypeComboBox->insertItem( str, -1 ); 297 TypeComboBox->insertItem( str, -1 );
296 TypeComboBox->setCurrentItem( TypeComboBox->count() - 1 ); 298 TypeComboBox->setCurrentItem( TypeComboBox->count() - 1 );
297 } 299 }
298} 300}
299 301
300 302
301const QFileInfoList *ScQtFileEditDlg::readDir( const QString &path, const QString &filter ) 303const QFileInfoList *ScQtFileEditDlg::readDir( const QString &path, const QString &filter )
302{ 304{
303 static QString qpath, qfilter; 305 static QString qpath, qfilter;
304 306
305#ifdef DEBUGFILEEDIT 307#ifdef DEBUGFILEEDIT
306 printf ("\nScQtFileEditDlg::readDir called, path = %s", (const char *)path ); 308 printf ("\nScQtFileEditDlg::readDir called, path = %s", (const char *)path );
307 printf ("\n filter = %s", (const char *)filter ); 309 printf ("\n filter = %s", (const char *)filter );
308 fflush(stdout); 310 fflush(stdout);
309#endif 311#endif
310 312
311 rFlag = true; 313 rFlag = true;
312 314
313 if ( path.isEmpty() ) 315 if ( path.isEmpty() )
314 qpath = "/"; 316 qpath = "/";
315 else 317 else
316 qpath = path; 318 qpath = path;
317 319
318 if ( filter.isEmpty() ) 320 if ( filter.isEmpty() )
319 qfilter = "*"; 321 qfilter = "*";
320 else 322 else
321 qfilter = filter; 323 qfilter = filter;
322 324
323 insDirCombo( qpath ); 325 insDirCombo( qpath );
324 insTypeCombo( qfilter ); 326 insTypeCombo( qfilter );
325 327
326 setFilter( fmode ); 328 setFilter( fmode );
327 if ( fsorting ) 329 if ( fsorting )
328 setSorting( QDir::DirsFirst | QDir::Name ); 330 setSorting( QDir::DirsFirst | QDir::Name );
329 if ( fnfilter ) 331 if ( fnfilter )
330 setNameFilter( qfilter ); 332 setNameFilter( qfilter );
331 setPath( qpath ); 333 setPath( qpath );
332 334
333 const QFileInfoList *dirlist = entryInfoList(); 335 const QFileInfoList *dirlist = entryInfoList();
334 336
335 if ( !dirlist ) 337 if ( !dirlist )
336 { 338 {
337 rFlag = false; 339 rFlag = false;
338 return( 0 ); 340 return( 0 );
339 } 341 }
340 342
341 rFlag = false; 343 rFlag = false;
342 344
343 return( dirlist ); 345 return( dirlist );
344} 346}
345 347
346QString ScQtFileEditDlg::getResult( ) 348QString ScQtFileEditDlg::getResult( )
347{ 349{
348 static QString qstr; 350 static QString qstr;
349 351
350#ifdef DEBUGFILEEDIT 352#ifdef DEBUGFILEEDIT
351 printf ("\nScQtFileEditDlg::getResult called" ); 353 printf ("\nScQtFileEditDlg::getResult called" );
352 fflush(stdout); 354 fflush(stdout);
353#endif 355#endif
354 356
355 qstr = bpath + "/"; 357 qstr = bpath + "/";
356 qstr = qstr + filename; 358 qstr = qstr + filename;
357 bpath = cleanDirPath( qstr ); 359 bpath = cleanDirPath( qstr );
358 360
359 return( bpath ); 361 return( bpath );
360} 362}
361 363
362QString ScQtFileEditDlg::getFileName( ) 364QString ScQtFileEditDlg::getFileName( )
363{ 365{
364 int a; 366 int a;
365 static QString qstr; 367 static QString qstr;
366 368
367#ifdef DEBUGFILEEDIT 369#ifdef DEBUGFILEEDIT
368 printf ("\nScQtFileEditDlg::getFileName called" ); 370 printf ("\nScQtFileEditDlg::getFileName called" );
369 fflush(stdout); 371 fflush(stdout);
370#endif 372#endif
371 373
372 a = bpath.findRev( "/", -1, TRUE ); 374 a = bpath.findRev( "/", -1, TRUE );
373 if (a == -1) 375 if (a == -1)
374 qstr = bpath; // Nicht gefunden 376 qstr = bpath; // Nicht gefunden
375 else 377 else
376 qstr = bpath.right( bpath.length() - a - 1 ); 378 qstr = bpath.right( bpath.length() - a - 1 );
377 379
378 return( qstr ); 380 return( qstr );
379} 381}
380 382
381// Ab hier die Slots ----------------------------------- 383// Ab hier die Slots -----------------------------------
382 384
383void ScQtFileEditDlg::slotShowDir() 385void ScQtFileEditDlg::slotShowDir()
384{ 386{
385 static QListViewItem *qlvitem; 387 static QListViewItem *qlvitem;
386 static QString ftypestr, fsizestr; 388 static QString ftypestr, fsizestr;
387 static QFileInfo *fi; // pointer for traversing 389 static QFileInfo *fi; // pointer for traversing
388 390
389 if ( !qfil ) // pointer war Null 391 if ( !qfil ) // pointer war Null
390 return; 392 return;
391 393
392 ListView->clear(); // ersma loeschen 394 ListView->clear(); // ersma loeschen
393 QFileInfoListIterator it( *qfil ); // create list iterator 395 QFileInfoListIterator it( *qfil ); // create list iterator
394 if ( !it ) // pointer war Null 396 if ( !it ) // pointer war Null
395 return; 397 return;
396 398
397 while ( (fi=it.current()) ) 399 while ( (fi=it.current()) )
398 { // for each file... 400 { // for each file...
399 if ( !fi ) // current war 0 401 if ( !fi ) // current war 0
400 return; 402 return;
401 403
402 if ( !fi->fileName().isNull() ) 404 if ( !fi->fileName().isNull() )
403 { 405 {
404 if ( fi->isDir() == TRUE ) 406 if ( fi->isDir() == TRUE )
405 { 407 {
406 ftypestr = dirstr; 408 ftypestr = dirstr;
407 fsizestr = "" ; 409 fsizestr = "" ;
408 } 410 }
409 else if ( fi->isSymLink() == TRUE ) 411 else if ( fi->isSymLink() == TRUE )
410 { 412 {
411 ftypestr = linkstr; 413 ftypestr = linkstr;
412 fsizestr = "" ; 414 fsizestr = "" ;
413 } 415 }
414 else if ( fi->isFile() == TRUE ) 416 else if ( fi->isFile() == TRUE )
415 { 417 {
416 ftypestr = filestr; 418 ftypestr = filestr;
417 fsizestr.sprintf( "%d", fi->size() ); 419 fsizestr.sprintf( "%d", fi->size() );
418 } 420 }
419 else 421 else
420 { 422 {
421 printf( "something else\n" ); 423 printf( "something else\n" );
422 fflush(stdout); 424 fflush(stdout);
423 } 425 }
424 426
425 if ( !(fi->fileName() == "." ) ) // der wird ausgespart 427 if ( !(fi->fileName() == "." ) ) // der wird ausgespart
426 { 428 {
427 qlvitem = new QListViewItem ( ListView, fi->fileName(), fsizestr, ftypestr ); 429 qlvitem = new QListViewItem ( ListView, fi->fileName(), fsizestr, ftypestr );
428 if ( fi->fileName() == ".." ) 430 if ( fi->fileName() == ".." )
429 qlvitem->setPixmap( 0, *cdToParentIcon ); 431 qlvitem->setPixmap( 0, *cdToParentIcon );
430 else if ( fi->isDir() == TRUE ) 432 else if ( fi->isDir() == TRUE )
431 qlvitem->setPixmap( 0, *dirIcon ); 433 qlvitem->setPixmap( 0, *dirIcon );
432 else if ( fi->isSymLink() == TRUE ) 434 else if ( fi->isSymLink() == TRUE )
433 qlvitem->setPixmap( 0, *linkIcon ); 435 qlvitem->setPixmap( 0, *linkIcon );
434 else if ( fi->isFile() == TRUE ) 436 else if ( fi->isFile() == TRUE )
435 qlvitem->setPixmap( 0, *fileIcon ); 437 qlvitem->setPixmap( 0, *fileIcon );
436 } 438 }
437 } 439 }
438 ++it; // goto next list element 440 ++it; // goto next list element
439 } 441 }
440} 442}
441 443
442void ScQtFileEditDlg::slotDirComboBoxChanged( int item ) 444void ScQtFileEditDlg::slotDirComboBoxChanged( int item )
443{ 445{
444 if ( !rFlag ) 446 if ( !rFlag )
445 { 447 {
446 bpath = DirComboBox->currentText( ); 448 bpath = DirComboBox->currentText( );
447 qfil = readDir( bpath, bfilter ); 449 qfil = readDir( bpath, bfilter );
448 slotShowDir( ); 450 slotShowDir( );
449 } 451 }
450} 452}
451 453
452void ScQtFileEditDlg::slotTypeComboBoxChanged( int item ) 454void ScQtFileEditDlg::slotTypeComboBoxChanged( int item )
453{ 455{
454 if ( !rFlag ) 456 if ( !rFlag )
455 { 457 {
456 bfilter = TypeComboBox->currentText( ); 458 bfilter = TypeComboBox->currentText( );
457 qfil = readDir( bpath, bfilter ); 459 qfil = readDir( bpath, bfilter );
458 slotShowDir( ); 460 slotShowDir( );
459 } 461 }
460} 462}
461 463
462void ScQtFileEditDlg::slotFileTextChanged( const QString &txt ) 464void ScQtFileEditDlg::slotFileTextChanged( const QString &txt )
463{ 465{
464 filename = txt; 466 filename = txt;
465} 467}
466 468
467void ScQtFileEditDlg::slotSelectionChanged( QListViewItem *item ) 469void ScQtFileEditDlg::slotSelectionChanged( QListViewItem *item )
468{ 470{
469 static QString qstr, rstr; 471 static QString qstr, rstr;
470 472
471#ifdef DEBUGFILEEDIT 473#ifdef DEBUGFILEEDIT
472 printf ("\nScQtFileEditDlg::slotSelectionChanged called" ); 474 printf ("\nScQtFileEditDlg::slotSelectionChanged called" );
473 fflush(stdout); 475 fflush(stdout);
474#endif 476#endif
475 if ( item ) 477 if ( item )
476 { 478 {
477 if ( !item->text(2) ) 479 if ( !item->text(2) )
478 return; 480 return;
479 481
480 if ( item->text(2) == dirstr ) 482 if ( item->text(2) == dirstr )
481 { 483 {
482 if ( !rFlag ) 484 if ( !rFlag )
483 { 485 {
484 rstr = bpath; 486 rstr = bpath;
485 qstr = bpath + "/"; 487 qstr = bpath + "/";
486 qstr = qstr + item->text(0); 488 qstr = qstr + item->text(0);
487 bpath = cleanDirPath( qstr ); 489 bpath = cleanDirPath( qstr );
488 qfil = readDir( bpath, bfilter ); 490 qfil = readDir( bpath, bfilter );
489 if ( qfil == 0 ) 491 if ( qfil == 0 )
490 { 492 {
491 bpath = rstr; 493 bpath = rstr;
492 // Nochmal lesen, um die ComboBoxen zu setzten 494 // Nochmal lesen, um die ComboBoxen zu setzten
493 qfil = readDir( bpath, bfilter ); 495 qfil = readDir( bpath, bfilter );
494 } 496 }
495 showTimer.start( 10, true ); 497 showTimer.start( 10, true );
496 } 498 }
497 } 499 }
498 else if ( item->text(2) == filestr ) 500 else if ( item->text(2) == filestr )
499 { 501 {
500 FNameLineEdit->setText( item->text(0) ); 502 FNameLineEdit->setText( item->text(0) );
501 filename = item->text(0); 503 filename = item->text(0);
502 } 504 }
503 } 505 }
504} 506}
505 507
506 508
507void ScQtFileEditDlg::slotMkDir( ) 509void ScQtFileEditDlg::slotMkDir( )
508{ 510{
509 QString qstr; 511 QString qstr;
510 512
511 if ( !FNameLineEdit->text().isEmpty() ) 513 if ( !FNameLineEdit->text().isEmpty() )
512 { 514 {
513 qstr = bpath + "/"; 515 qstr = bpath + "/";
514 qstr = qstr + FNameLineEdit->text(); 516 qstr = qstr + FNameLineEdit->text();
515 mkdir( qstr, true ); 517 mkdir( qstr, true );
516 qfil = readDir( bpath, bfilter ); 518 qfil = readDir( bpath, bfilter );
517 FNameLineEdit->setText( "" ); 519 FNameLineEdit->setText( "" );
518 slotShowDir( ); 520 slotShowDir( );
519 } 521 }
520} 522}
521 523
522void ScQtFileEditDlg::slotDoubleClicked( QListViewItem *item ) 524void ScQtFileEditDlg::slotDoubleClicked( QListViewItem *item )
523{ 525{
524 static QString qstr, rstr; 526 static QString qstr, rstr;
525 527
526#ifdef DEBUGFILEEDIT 528#ifdef DEBUGFILEEDIT
527 printf ("\nScQtFileEditDlg::slotDoubleClicked called" ); 529 printf ("\nScQtFileEditDlg::slotDoubleClicked called" );
528 fflush(stdout); 530 fflush(stdout);
529#endif 531#endif
530 532
531 if ( item ) 533 if ( item )
532 { 534 {
533 if ( item->text(2) == dirstr ) 535 if ( item->text(2) == dirstr )
534 { 536 {
535 if ( !rFlag ) 537 if ( !rFlag )
536 { 538 {
537 rstr = bpath; 539 rstr = bpath;
538 qstr = bpath + "/"; 540 qstr = bpath + "/";
539 qstr = qstr + item->text(0); 541 qstr = qstr + item->text(0);
540 bpath = cleanDirPath( qstr ); 542 bpath = cleanDirPath( qstr );
541 qfil = readDir( bpath, bfilter ); 543 qfil = readDir( bpath, bfilter );
542 if ( qfil == 0 ) 544 if ( qfil == 0 )
543 { 545 {
544 bpath = rstr; 546 bpath = rstr;
545 // Nochmal lesen, um die ComboBoxen zu setzten 547 // Nochmal lesen, um die ComboBoxen zu setzten
546 qfil = readDir( bpath, bfilter ); 548 qfil = readDir( bpath, bfilter );
547 } 549 }
548 showTimer.start( 10, TRUE ); 550 showTimer.start( 10, TRUE );
549 } 551 }
550 } 552 }
551 } 553 }
552} 554}
553 555
554void ScQtFileEditDlg::autoExtension( ) 556void ScQtFileEditDlg::autoExtension( )
555{ 557{
556 QString qstr; 558 QString qstr;
557 int len; 559 int len;
558 560
559 if ( exflag ) 561 if ( exflag )
560 { 562 {
561 qstr = TypeComboBox->currentText( ); 563 qstr = TypeComboBox->currentText( );
562 if ( qstr != "*" ) 564 if ( qstr != "*" )
563 { 565 {
564 len = qstr.findRev( ".", -1 ); 566 len = qstr.findRev( ".", -1 );
565 if ( len >= 0 ) 567 if ( len >= 0 )
566 { 568 {
567 qstr = qstr.right( qstr.length() - len ); 569 qstr = qstr.right( qstr.length() - len );
568 len = filename.findRev( qstr, -1 ); 570 len = filename.findRev( qstr, -1 );
569 if ( len < 0 ) 571 if ( len < 0 )
570 filename = filename + qstr; 572 filename = filename + qstr;
571 } 573 }
572 } 574 }
573 } 575 }
574} 576}
575 577
576void ScQtFileEditDlg::setMode( int mode ) 578void ScQtFileEditDlg::setMode( int mode )
577{ 579{
578 fmode = mode; 580 fmode = mode;
579} 581}
580 582
581void ScQtFileEditDlg::setNFilter( bool ff ) 583void ScQtFileEditDlg::setNFilter( bool ff )
582{ 584{
583 fnfilter = ff; 585 fnfilter = ff;
584} 586}
585 587
586void ScQtFileEditDlg::setFSorting( bool ff ) 588void ScQtFileEditDlg::setFSorting( bool ff )
587{ 589{
588 fsorting = ff; 590 fsorting = ff;
589} 591}
590 592
591void ScQtFileEditDlg::allowMkDir( bool mkdir ) 593void ScQtFileEditDlg::allowMkDir( bool mkdir )
592{ 594{
593 mkdirflag = mkdir; 595 mkdirflag = mkdir;
594 MkDirButton->setEnabled( mkdir ); 596 MkDirButton->setEnabled( mkdir );
595} 597}
596 598
597 599
598void ScQtFileEditDlg::slotOK( ) 600void ScQtFileEditDlg::slotOK( )
599{ 601{
600#ifdef DEBUGFILEEDIT 602#ifdef DEBUGFILEEDIT
601 printf ("\nScQtFileEditDlg::slotOK called" ); 603 printf ("\nScQtFileEditDlg::slotOK called" );
602 fflush(stdout); 604 fflush(stdout);
603#endif 605#endif
604 autoExtension(); 606 autoExtension();
605 607
606 accept(); 608 accept();
607} 609}
608 610
609void ScQtFileEditDlg::slotCancel( ) 611void ScQtFileEditDlg::slotCancel( )
610{ 612{
611 613
612#ifdef DEBUGFILEEDIT 614#ifdef DEBUGFILEEDIT
613 printf ("\nScQtFileEditDlg::slotCancel called" ); 615 printf ("\nScQtFileEditDlg::slotCancel called" );
614 fflush(stdout); 616 fflush(stdout);
615#endif 617#endif
616 618
617 reject(); 619 reject();
618} 620}
619 621
620 622
621/************************************************************************** 623/**************************************************************************
622***************************************************************************/ 624***************************************************************************/
623ScQtFileEdit::ScQtFileEdit( QWidget *parent, const char *name ) 625ScQtFileEdit::ScQtFileEdit( QWidget *parent, const char *name )
624{ 626{
625#ifdef DEBUGFILEEDIT 627#ifdef DEBUGFILEEDIT
626 printf ("\nScQtFileEdit constructor called"); 628 printf ("\nScQtFileEdit constructor called");
627 fflush(stdout); 629 fflush(stdout);
628#endif 630#endif
629} 631}
630 632
631ScQtFileEdit::~ScQtFileEdit() 633ScQtFileEdit::~ScQtFileEdit()
632{ 634{
633#ifdef DEBUGFILEEDIT 635#ifdef DEBUGFILEEDIT
634 printf ("\nScQtFileEdit destructor called"); 636 printf ("\nScQtFileEdit destructor called");
635 fflush(stdout); 637 fflush(stdout);
636#endif 638#endif
637} 639}
638 640
639QString ScQtFileEdit::getOpenFileName( QWidget *parent, const char *name, 641QString ScQtFileEdit::getOpenFileName( QWidget *parent, const char *name,
640 const QString &path, const QString &filter ) 642 const QString &path, const QString &filter )
641{ 643{
642 static ScQtFileEditDlg *fd; 644 static ScQtFileEditDlg *fd;
643 static QString fname; 645 static QString fname;
644 646
645#ifdef DEBUGFILEEDIT 647#ifdef DEBUGFILEEDIT
646 printf ("\nScQtFileEdit::getOpenFileName name=%s", name ); 648 printf ("\nScQtFileEdit::getOpenFileName name=%s", name );
647 printf ("\n path=%s", (const char *)path ); 649 printf ("\n path=%s", (const char *)path );
648 printf ("\n filter=%s", (const char *)filter ); 650 printf ("\n filter=%s", (const char *)filter );
649 fflush(stdout); 651 fflush(stdout);
650#endif 652#endif
651 653
652 fd = new ScQtFileEditDlg( parent, name, path, filter ); 654 fd = new ScQtFileEditDlg( parent, name, path, filter );
653 fd->setAutoExtension( false ); 655 fd->setAutoExtension( false );
654 fd->setMode( QDir::All|QDir::System ); 656 fd->setMode( QDir::All|QDir::System );
655 fd->setNFilter( true ); 657 fd->setNFilter( true );
656 fd->setFSorting( true ); 658 fd->setFSorting( true );
657 fd->readIt(); 659 fd->readIt();
658 fd->exec(); 660 fd->exec();
659 661
660 if ( fd->result() == QDialog::Accepted ) 662 if ( fd->result() == QDialog::Accepted )
661 fname = fd->getResult(); 663 fname = fd->getResult();
662 else 664 else
663 fname = ""; 665 fname = "";
664 666
665 delete fd; 667 delete fd;
666 return( fname ); 668 return( fname );
667} 669}
668 670
669QString ScQtFileEdit::getSaveAsFileName( QWidget *parent, const char *name, 671QString ScQtFileEdit::getSaveAsFileName( QWidget *parent, const char *name,
670 const QString &path, const QString &filter ) 672 const QString &path, const QString &filter )
671{ 673{
672 static ScQtFileEditDlg *fd; 674 static ScQtFileEditDlg *fd;
673 static QString fname; 675 static QString fname;
674 676
675#ifdef DEBUGFILEEDIT 677#ifdef DEBUGFILEEDIT
676 printf ("\nScQtFileEdit::getSaveAsFileName name=%s", name ); 678 printf ("\nScQtFileEdit::getSaveAsFileName name=%s", name );
677 printf ("\n path=%s", (const char *)path ); 679 printf ("\n path=%s", (const char *)path );
678 printf ("\n filter=%s", (const char *)filter ); 680 printf ("\n filter=%s", (const char *)filter );
679 fflush(stdout); 681 fflush(stdout);
680#endif 682#endif
681 683
682 fd = new ScQtFileEditDlg( parent, name, path, filter ); 684 fd = new ScQtFileEditDlg( parent, name, path, filter );
683 fd->allowMkDir( true ); // CS: 685 fd->allowMkDir( true ); // CS:
684 fd->setAutoExtension( true ); 686 fd->setAutoExtension( true );
685 fd->setNFilter( true ); 687 fd->setNFilter( true );
686 fd->setFSorting( true ); 688 fd->setFSorting( true );
687 fd->readIt(); 689 fd->readIt();
688 fd->exec(); 690 fd->exec();
689 691
690 if ( fd->result() == QDialog::Accepted ) 692 if ( fd->result() == QDialog::Accepted )
691 fname = fd->getResult(); 693 fname = fd->getResult();
692 else 694 else
693 fname = ""; 695 fname = "";
694 696
695 delete fd; 697 delete fd;
696 return( fname ); 698 return( fname );
697} 699}
698 700
699QString ScQtFileEdit::getDirName( QWidget *parent, const char *name, 701QString ScQtFileEdit::getDirName( QWidget *parent, const char *name,
700 const QString &path ) 702 const QString &path )
701{ 703{
702 static ScQtFileEditDlg *fd; 704 static ScQtFileEditDlg *fd;
703 static QString fname; 705 static QString fname;
704 706
705#ifdef DEBUGFILEEDIT 707#ifdef DEBUGFILEEDIT
706 printf ("\nScQtFileEdit::getDirName name=%s", name ); 708 printf ("\nScQtFileEdit::getDirName name=%s", name );
707 printf ("\n path=%s", (const char *)path ); 709 printf ("\n path=%s", (const char *)path );
708 fflush(stdout); 710 fflush(stdout);
709#endif 711#endif
710 712
711 fd = new ScQtFileEditDlg( parent, name, path ); 713 fd = new ScQtFileEditDlg( parent, name, path );
712 fd->setMode( QDir::Dirs ); 714 fd->setMode( QDir::Dirs );
713 fd->setNFilter( false ); 715 fd->setNFilter( false );
714 fd->setFSorting( true ); 716 fd->setFSorting( true );
715 fd->readIt(); 717 fd->readIt();
716 fd->exec(); 718 fd->exec();
717 719
718 if ( fd->result() == QDialog::Accepted ) 720 if ( fd->result() == QDialog::Accepted )
719 fname = fd->getResult(); 721 fname = fd->getResult();
720 else 722 else
721 fname = ""; 723 fname = "";
722 724
723 delete fd; 725 delete fd;
724 return( fname ); 726 return( fname );
725} 727}
726 728
727QString ScQtFileEdit::mkDir( QWidget *parent, const char *name, 729QString ScQtFileEdit::mkDir( QWidget *parent, const char *name,
728 const QString &path, const QString &filter ) 730 const QString &path, const QString &filter )
729{ 731{
730 static ScQtFileEditDlg *fd; 732 static ScQtFileEditDlg *fd;
731 static QString fname; 733 static QString fname;
732 734
733#ifdef DEBUGFILEEDIT 735#ifdef DEBUGFILEEDIT
734 printf ("\nScQtFileEdit::mkDir name=%s", name ); 736 printf ("\nScQtFileEdit::mkDir name=%s", name );
735 printf ("\n basepath=%s", (const char *)path ); 737 printf ("\n basepath=%s", (const char *)path );
736 printf ("\n filter=%s", (const char *)filter ); 738 printf ("\n filter=%s", (const char *)filter );
737 fflush(stdout); 739 fflush(stdout);
738#endif 740#endif
739 741
740 fd = new ScQtFileEditDlg( parent, name, path, filter ); 742 fd = new ScQtFileEditDlg( parent, name, path, filter );
741 fd->setAutoExtension( true ); 743 fd->setAutoExtension( true );
742 fd->allowMkDir( true ); 744 fd->allowMkDir( true );
743 fd->setNFilter( false ); 745 fd->setNFilter( false );
744 fd->setFSorting( true ); 746 fd->setFSorting( true );
745 fd->readIt(); 747 fd->readIt();
746 fd->exec(); 748 fd->exec();
747 749
748 if ( fd->result() == QDialog::Accepted ) 750 if ( fd->result() == QDialog::Accepted )
749 fname = fd->getResult(); 751 fname = fd->getResult();
750 else 752 else
751 fname = ""; 753 fname = "";
752 754
753 delete fd; 755 delete fd;
754 return( fname ); 756 return( fname );
755} 757}
756 758
diff --git a/noncore/apps/zsafe/zsafe.cpp b/noncore/apps/zsafe/zsafe.cpp
index ee1da77..bdd2aed 100644
--- a/noncore/apps/zsafe/zsafe.cpp
+++ b/noncore/apps/zsafe/zsafe.cpp
@@ -1,3748 +1,3731 @@
1/**************************************************************************** 1/****************************************************************************
2** 2**
3** Created: Sat Apr 6 17:57:45 2002 3** Created: Sat Apr 6 17:57:45 2002
4** 4**
5** Author: Carsten Schneider <CarstenSchneider@t-online.de> 5** Author: Carsten Schneider <CarstenSchneider@t-online.de>
6** 6**
7** $Id$ 7** $Id$
8** 8**
9** Homepage: http://home.t-online.de/home/CarstenSchneider/zsafe/index.html 9** Homepage: http://home.t-online.de/home/CarstenSchneider/zsafe/index.html
10** 10**
11** Compile Flags: 11** Compile Flags:
12** Zaurus arm : -DNO_OPIE 12** Zaurus arm : -DNO_OPIE
13** Zaurus Opie arm: none 13** Zaurus Opie arm: none
14** Linux Desktop : -DDESKTOP 14** Linux Desktop : -DDESKTOP
15** Windows Desktop: -DDESKTOP -DWIN32 15** Windows Desktop: -DDESKTOP -DWIN32
16** 16**
17** for japanese version additional use: -DJPATCH_HDE 17** for japanese version additional use: -DJPATCH_HDE
18** 18**
19****************************************************************************/ 19****************************************************************************/
20#include "zsafe.h" 20#include "zsafe.h"
21#include "newdialog.h" 21#include "newdialog.h"
22#include "searchdialog.h" 22#include "searchdialog.h"
23#include "categorydialog.h" 23#include "categorydialog.h"
24#include "passworddialog.h" 24#include "passworddialog.h"
25#include "infoform.h" 25#include "infoform.h"
26#include "zlistview.h" 26#include "zlistview.h"
27#include "shadedlistitem.h" 27#include "shadedlistitem.h"
28 28
29#ifndef DESKTOP 29#ifndef DESKTOP
30#ifndef NO_OPIE 30#ifndef NO_OPIE
31#include <opie/ofiledialog.h> 31#include <opie/ofiledialog.h>
32#else 32#else
33#include "scqtfileedit.h" 33#include "scqtfileedit.h"
34#endif 34#endif
35#endif 35#endif
36 36
37#include <qclipboard.h> 37#include <qclipboard.h>
38 38
39#include <stdio.h> 39#include <stdio.h>
40 40
41#include <sys/types.h> 41#include <sys/types.h>
42#include <sys/stat.h> 42#include <sys/stat.h>
43#include <fcntl.h> 43#include <fcntl.h>
44#include <stdlib.h> 44#include <stdlib.h>
45#ifndef WIN32 45#ifndef WIN32
46#include <unistd.h> 46#include <unistd.h>
47#endif 47#endif
48#include <string.h> 48#include <string.h>
49#include <errno.h> 49#include <errno.h>
50 50
51#include <qmenubar.h> 51#include <qmenubar.h>
52#include <qpopupmenu.h> 52#include <qpopupmenu.h>
53 53
54#ifdef DESKTOP 54#ifdef DESKTOP
55#include <qfiledialog.h> 55#include <qfiledialog.h>
56#ifndef WIN32 56#ifndef WIN32
57#include <qsettings.h> 57#include <qsettings.h>
58#else 58#else
59#include "qsettings.h" 59#include "qsettings.h"
60#endif 60#endif
61#include <qapplication.h> 61#include <qapplication.h>
62#else 62#else
63#include <qfile.h> 63#include <qfile.h>
64#include <qpe/fileselector.h> 64#include <qpe/fileselector.h>
65#include <qpe/global.h> 65#include <qpe/global.h>
66#include <qpe/qpeapplication.h> 66#include <qpe/qpeapplication.h>
67#include <qpe/resource.h> 67#include <qpe/resource.h>
68#include <qpe/config.h> 68#include <qpe/config.h>
69#endif 69#endif
70 70
71#include <qtimer.h> 71#include <qtimer.h>
72#include <qlayout.h> 72#include <qlayout.h>
73#include <qmessagebox.h> 73#include <qmessagebox.h>
74#include <qfile.h> 74#include <qfile.h>
75#include <qtextstream.h> 75#include <qtextstream.h>
76#include <qheader.h> 76#include <qheader.h>
77#include <qlistview.h> 77#include <qlistview.h>
78#include <qtoolbutton.h> 78#include <qtoolbutton.h>
79#include <qlayout.h> 79#include <qlayout.h>
80#include <qvariant.h> 80#include <qvariant.h>
81#include <qtooltip.h> 81#include <qtooltip.h>
82#include <qwhatsthis.h> 82#include <qwhatsthis.h>
83#include <qimage.h> 83#include <qimage.h>
84#include <qpixmap.h> 84#include <qpixmap.h>
85#include <qlineedit.h> 85#include <qlineedit.h>
86#include <qmultilineedit.h> 86#include <qmultilineedit.h>
87#include <qregexp.h> 87#include <qregexp.h>
88#include <qdir.h> 88#include <qdir.h>
89#include <qtextbrowser.h> 89#include <qtextbrowser.h>
90#include <qlabel.h> 90#include <qlabel.h>
91#include <qcombobox.h> 91#include <qcombobox.h>
92 92
93#include "krc2.h" 93#include "krc2.h"
94 94
95#include "wait.h" 95#include "wait.h"
96 96
97extern int DeskW, DeskH; 97extern int DeskW, DeskH;
98#ifdef DESKTOP 98#ifdef DESKTOP
99extern QApplication *appl; 99extern QApplication *appl;
100#else 100#else
101extern QPEApplication *appl; 101extern QPEApplication *appl;
102#endif 102#endif
103 103
104#ifdef JPATCH_HDE 104#ifdef JPATCH_HDE
105#define tr(arg) arg 105#define tr(arg) arg
106#endif 106#endif
107 107
108 108
109#ifdef DESKTOP 109#ifdef DESKTOP
110#ifndef WIN32 110#ifndef WIN32
111const QString APP_KEY="/.zsafe/"; 111const QString APP_KEY="/.zsafe/";
112#else 112#else
113const QString APP_KEY=""; 113const QString APP_KEY="";
114#endif 114#endif
115#else 115#else
116const QString APP_KEY=""; 116const QString APP_KEY="";
117#endif 117#endif
118 118
119// include xmp images 119// include xmp images
120#include "pics/zsafe/copy.xpm" 120#include "pics/zsafe/copy.xpm"
121#include "pics/zsafe/cut.xpm" 121#include "pics/zsafe/cut.xpm"
122#include "pics/zsafe/edit.xpm" 122#include "pics/zsafe/edit.xpm"
123#include "pics/zsafe/editdelete.xpm" 123#include "pics/zsafe/editdelete.xpm"
124#include "pics/zsafe/find.xpm" 124#include "pics/zsafe/find.xpm"
125#include "pics/zsafe/folder_open.xpm" 125#include "pics/zsafe/folder_open.xpm"
126#include "pics/zsafe/help_icon.xpm" 126#include "pics/zsafe/help_icon.xpm"
127#include "pics/zsafe/new.xpm" 127#include "pics/zsafe/new.xpm"
128#include "pics/zsafe/paste.xpm" 128#include "pics/zsafe/paste.xpm"
129#include "pics/zsafe/quit_icon.xpm" 129#include "pics/zsafe/quit_icon.xpm"
130#include "pics/zsafe/save.xpm" 130#include "pics/zsafe/save.xpm"
131#include "pics/zsafe/trash.xpm" 131#include "pics/zsafe/trash.xpm"
132#include "pics/zsafe/expand.xpm" 132#include "pics/zsafe/expand.xpm"
133#include "pics/zsafe/export.xpm" 133#include "pics/zsafe/export.xpm"
134#include "pics/zsafe/import.xpm" 134#include "pics/zsafe/import.xpm"
135#include "pics/zsafe/zsafe.xpm" 135#include "pics/zsafe/zsafe.xpm"
136 136
137static const char* const bank_cards_data[] = { 137static const char* const bank_cards_data[] = {
138"14 14 16 1", 138"14 14 16 1",
139". c None", 139". c None",
140"# c #000000", 140"# c #000000",
141"b c #0000de", 141"b c #0000de",
142"a c #0000e6", 142"a c #0000e6",
143"j c #41de83", 143"j c #41de83",
144"k c #4acecd", 144"k c #4acecd",
145"h c #4aced5", 145"h c #4aced5",
146"g c #5a40cd", 146"g c #5a40cd",
147"d c #5a44d5", 147"d c #5a44d5",
148"l c #9440d5", 148"l c #9440d5",
149"m c #b4ce4a", 149"m c #b4ce4a",
150"n c #cd4883", 150"n c #cd4883",
151"e c #d5ae10", 151"e c #d5ae10",
152"f c #de3ce6", 152"f c #de3ce6",
153"i c #e640e6", 153"i c #e640e6",
154"c c #ffffff", 154"c c #ffffff",
155"..............", 155"..............",
156".###########..", 156".###########..",
157".#ababababa#..", 157".#ababababa#..",
158".#babbbabbb#..", 158".#babbbabbb#..",
159".#ccccccccc#..", 159".#ccccccccc#..",
160".#cdcefcghc#..", 160".#cdcefcghc#..",
161".#ccccccccc#..", 161".#ccccccccc#..",
162".#cicjkclic#..", 162".#cicjkclic#..",
163".#ccccccccc#..", 163".#ccccccccc#..",
164".#cmchlcnec#..", 164".#cmchlcnec#..",
165".#ccccccccc#..", 165".#ccccccccc#..",
166".###########..", 166".###########..",
167"..............", 167"..............",
168".............."}; 168".............."};
169 169
170 170
171static const char* const passwords_data[] = { 171static const char* const passwords_data[] = {
172"16 16 20 1", 172"16 16 20 1",
173". c None", 173". c None",
174"# c #000000", 174"# c #000000",
175"r c #000083", 175"r c #000083",
176"p c #0000c5", 176"p c #0000c5",
177"q c #0000ff", 177"q c #0000ff",
178"n c #008100", 178"n c #008100",
179"l c #00c200", 179"l c #00c200",
180"m c #00ff00", 180"m c #00ff00",
181"j c #838100", 181"j c #838100",
182"a c #c55900", 182"a c #c55900",
183"h c #c5c200", 183"h c #c5c200",
184"o c #c5c2ff", 184"o c #c5c2ff",
185"k c #c5ffc5", 185"k c #c5ffc5",
186"f c #ff0000", 186"f c #ff0000",
187"d c #ff8100", 187"d c #ff8100",
188"b c #ffaa5a", 188"b c #ffaa5a",
189"e c #ffc2c5", 189"e c #ffc2c5",
190"c c #ffdeac", 190"c c #ffdeac",
191"i c #ffff00", 191"i c #ffff00",
192"g c #ffffc5", 192"g c #ffffc5",
193"............###.", 193"............###.",
194"...........#abb#", 194"...........#abb#",
195"..........#cbab#", 195"..........#cbab#",
196".........#cbdd#.", 196".........#cbdd#.",
197"######..#cbdd#..", 197"######..#cbdd#..",
198"#eeff#..#add#...", 198"#eeff#..#add#...",
199"#eeff#######....", 199"#eeff#######....",
200"#ccdbdd#........", 200"#ccdbdd#........",
201"#dddbdd###......", 201"#dddbdd###......",
202"#gghihhjj#......", 202"#gghihhjj#......",
203"#hhhihhjj###....", 203"#hhhihhjj###....",
204"#kklmllnnnn#....", 204"#kklmllnnnn#....",
205"#lllmllnnnn#....", 205"#lllmllnnnn#....",
206"#oopqpprprr#....", 206"#oopqpprprr#....",
207"#oopqpprprr#....", 207"#oopqpprprr#....",
208"############...."}; 208"############...."};
209 209
210static const char* const software_data[] = { 210static const char* const software_data[] = {
211"16 16 5 1", 211"16 16 5 1",
212". c None", 212". c None",
213"# c #000000", 213"# c #000000",
214"b c #838183", 214"b c #838183",
215"c c #c5ffff", 215"c c #c5ffff",
216"a c #ffffff", 216"a c #ffffff",
217"................", 217"................",
218".##############.", 218".##############.",
219"#aaaaaaaaaaaaaa#", 219"#aaaaaaaaaaaaaa#",
220"#abbbbbbbbbbbbb#", 220"#abbbbbbbbbbbbb#",
221"#ab##########ab#", 221"#ab##########ab#",
222"#ab#c########ab#", 222"#ab#c########ab#",
223"#ab#c#c######ab#", 223"#ab#c#c######ab#",
224"#ab##########ab#", 224"#ab##########ab#",
225"#ab##########ab#", 225"#ab##########ab#",
226"#ab##########ab#", 226"#ab##########ab#",
227"#ab##########ab#", 227"#ab##########ab#",
228"#ab##########ab#", 228"#ab##########ab#",
229"#aaaaaaaaaaaaab#", 229"#aaaaaaaaaaaaab#",
230"#bbbbbbbbbbbbbb#", 230"#bbbbbbbbbbbbbb#",
231".##############.", 231".##############.",
232"................"}; 232"................"};
233 233
234static const char* const general_data[] = { 234static const char* const general_data[] = {
235"14 14 98 2", 235"14 14 98 2",
236"Qt c None", 236"Qt c None",
237".k c #000000", 237".k c #000000",
238"#x c #080808", 238"#x c #080808",
239"#F c #101008", 239"#F c #101008",
240"#q c #101010", 240"#q c #101010",
241"#i c #101410", 241"#i c #101410",
242"## c #101810", 242"## c #101810",
243".m c #181818", 243".m c #181818",
244".3 c #181c18", 244".3 c #181c18",
245".I c #182018", 245".I c #182018",
246".T c #202420", 246".T c #202420",
247"#D c #202820", 247"#D c #202820",
248"#y c #292c29", 248"#y c #292c29",
249".c c #293029", 249".c c #293029",
250".d c #313031", 250".d c #313031",
251"#E c #313429", 251"#E c #313429",
252"#r c #313831", 252"#r c #313831",
253".j c #393c31", 253".j c #393c31",
254"#j c #394039", 254"#j c #394039",
255"#C c #414841", 255"#C c #414841",
256".w c #4a554a", 256".w c #4a554a",
257".a c #4a594a", 257".a c #4a594a",
258".# c #525052", 258".# c #525052",
259".l c #52594a", 259".l c #52594a",
260"#f c #525952", 260"#f c #525952",
261"#v c #525d52", 261"#v c #525d52",
262".O c #5a4c4a", 262".O c #5a4c4a",
263".9 c #5a595a", 263".9 c #5a595a",
264".A c #5a5d52", 264".A c #5a5d52",
265".B c #624c52", 265".B c #624c52",
266".0 c #625552", 266".0 c #625552",
267"#o c #626562", 267"#o c #626562",
268".R c #626962", 268".R c #626962",
269"#. c #626d5a", 269"#. c #626d5a",
270"#p c #626d62", 270"#p c #626d62",
271".2 c #627162", 271".2 c #627162",
272"#h c #6a6d62", 272"#h c #6a6d62",
273"#z c #6a7562", 273"#z c #6a7562",
274"#w c #6a756a", 274"#w c #6a756a",
275".C c #73656a", 275".C c #73656a",
276".P c #73696a", 276".P c #73696a",
277"#a c #737d6a", 277"#a c #737d6a",
278".U c #738573", 278".U c #738573",
279".E c #7b817b", 279".E c #7b817b",
280"#B c #7b857b", 280"#B c #7b857b",
281"#s c #7b897b", 281"#s c #7b897b",
282"#n c #7b917b", 282"#n c #7b917b",
283".b c #838d83", 283".b c #838d83",
284".7 c #839583", 284".7 c #839583",
285".n c #8b7d7b", 285".n c #8b7d7b",
286"#g c #8b8583", 286"#g c #8b8583",
287".g c #8b858b", 287".g c #8b858b",
288".r c #8b898b", 288".r c #8b898b",
289".s c #8b8d8b", 289".s c #8b8d8b",
290".i c #8b9183", 290".i c #8b9183",
291".8 c #8b918b", 291".8 c #8b918b",
292"#A c #8b9d8b", 292"#A c #8b9d8b",
293".S c #8ba183", 293".S c #8ba183",
294".Z c #94918b", 294".Z c #94918b",
295".N c #949994", 295".N c #949994",
296".F c #949d94", 296".F c #949d94",
297".x c #94a18b", 297".x c #94a18b",
298".v c #94a194", 298".v c #94a194",
299".Y c #94aa94", 299".Y c #94aa94",
300".h c #9c999c", 300".h c #9c999c",
301".Q c #9ca19c", 301".Q c #9ca19c",
302"#u c #9ca59c", 302"#u c #9ca59c",
303".H c #9caa9c", 303".H c #9caa9c",
304"#e c #9cb29c", 304"#e c #9cb29c",
305"#m c #a4b29c", 305"#m c #a4b29c",
306"#t c #a4b2a4", 306"#t c #a4b2a4",
307".M c #a4b69c", 307".M c #a4b69c",
308"#l c #a4b6a4", 308"#l c #a4b6a4",
309".z c #a4baa4", 309".z c #a4baa4",
310".f c #aca5ac", 310".f c #aca5ac",
311".q c #acaaac", 311".q c #acaaac",
312"#d c #acbeac", 312"#d c #acbeac",
313".6 c #acc2ac", 313".6 c #acc2ac",
314".o c #b4b2b4", 314".o c #b4b2b4",
315".t c #b4beb4", 315".t c #b4beb4",
316"#k c #b4c2ac", 316"#k c #b4c2ac",
317".5 c #b4cab4", 317".5 c #b4cab4",
318".D c #bdb6bd", 318".D c #bdb6bd",
319".G c #bdc6b4", 319".G c #bdc6b4",
320"#c c #bdceb4", 320"#c c #bdceb4",
321".X c #bdd2bd", 321".X c #bdd2bd",
322".4 c #bdd6bd", 322".4 c #bdd6bd",
323".1 c #c5bec5", 323".1 c #c5bec5",
324".e c #c5c2c5", 324".e c #c5c2c5",
325".u c #c5cac5", 325".u c #c5cac5",
326"#b c #c5d6c5", 326"#b c #c5d6c5",
327".J c #c5dec5", 327".J c #c5dec5",
328".p c #cdcacd", 328".p c #cdcacd",
329".W c #cddecd", 329".W c #cddecd",
330".L c #cde2cd", 330".L c #cde2cd",
331".K c #d5eacd", 331".K c #d5eacd",
332".V c #d5ead5", 332".V c #d5ead5",
333".y c #d5eed5", 333".y c #d5eed5",
334"QtQtQtQtQtQtQtQtQtQtQtQtQtQt", 334"QtQtQtQtQtQtQtQtQtQtQtQtQtQt",
335"QtQtQt.#.a.b.cQtQtQtQtQtQtQt", 335"QtQtQt.#.a.b.cQtQtQtQtQtQtQt",
336"QtQt.d.e.f.g.h.i.c.j.dQt.kQt", 336"QtQt.d.e.f.g.h.i.c.j.dQt.kQt",
337".a.l.m.n.o.p.q.r.s.t.u.v.wQt", 337".a.l.m.n.o.p.q.r.s.t.u.v.wQt",
338".x.y.z.A.B.C.D.p.q.E.F.G.H.I", 338".x.y.z.A.B.C.D.p.q.E.F.G.H.I",
339".I.J.K.L.M.N.O.P.o.p.Q.R.S.T", 339".I.J.K.L.M.N.O.P.o.p.Q.R.S.T",
340"Qt.U.V.L.W.X.Y.Z.0.P.1.s.2.3", 340"Qt.U.V.L.W.X.Y.Z.0.P.1.s.2.3",
341"Qt.3.X.W.4.X.5.6.7.8.9.s#.##", 341"Qt.3.X.W.4.X.5.6.7.8.9.s#.##",
342"QtQt#a.X#b#c.5.6#d#e#f#g#h#i", 342"QtQt#a.X#b#c.5.6#d#e#f#g#h#i",
343"QtQtQt#j.7#k.6#d#l#m#n#o#p#q", 343"QtQtQt#j.7#k.6#d#l#m#n#o#p#q",
344"QtQtQtQt.k#r#s#m#t.H#u#v#w#x", 344"QtQtQtQt.k#r#s#m#t.H#u#v#w#x",
345"QtQtQtQtQtQt.k#y#z.v#A#B#C#x", 345"QtQtQtQtQtQt.k#y#z.v#A#B#C#x",
346"QtQtQtQtQtQtQtQt.k#D.w#s#E.k", 346"QtQtQtQtQtQtQtQt.k#D.w#s#E.k",
347"QtQtQtQtQtQtQtQtQtQtQt#x#FQt"}; 347"QtQtQtQtQtQtQtQtQtQtQt#x#FQt"};
348 348
349// exit ZSafe and clear the clipboard for security reasons 349// exit ZSafe and clear the clipboard for security reasons
350 void ZSafe::exitZs (int ec) 350 void ZSafe::exitZs (int ec)
351 { 351 {
352 QClipboard *cb = QApplication::clipboard(); 352 QClipboard *cb = QApplication::clipboard();
353 cb->clear(); 353 cb->clear();
354 354
355 exit (ec); 355 exit (ec);
356 } 356 }
357 357
358 358
359// save the configuration into the file 359// save the configuration into the file
360 void ZSafe::saveConf () 360 void ZSafe::saveConf ()
361 { 361 {
362 if (conf) 362 if (conf)
363 { 363 {
364 delete conf; 364 delete conf;
365 365
366#ifdef DESKTOP 366#ifdef DESKTOP
367#ifndef WIN32 367#ifndef WIN32
368 conf = new QSettings (); 368 conf = new QSettings ();
369 conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath()); 369 conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath());
370#else 370#else
371 conf = new QSettings (cfgFile); 371 conf = new QSettings (cfgFile);
372 conf->insertSearchPath (QSettings::Unix, cfgFile); 372 conf->insertSearchPath (QSettings::Unix, cfgFile);
373#endif 373#endif
374#else 374#else
375 conf = new Config (cfgFile, Config::File); 375 conf = new Config (cfgFile, Config::File);
376 conf->setGroup ("zsafe"); 376 conf->setGroup ("zsafe");
377#endif 377#endif
378 } 378 }
379 } 379 }
380 380
381 381
382/* 382/*
383 * Constructs a ZSafe which is a child of 'parent', with the 383 * Constructs a ZSafe which is a child of 'parent', with the
384 * name 'name' and widget flags set to 'f' 384 * name 'name' and widget flags set to 'f'
385 * 385 *
386 * The dialog will by default be modeless, unless you set 'modal' to 386 * The dialog will by default be modeless, unless you set 'modal' to
387 * TRUE to construct a modal dialog. 387 * TRUE to construct a modal dialog.
388 */ 388 */
389ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl ) 389ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
390 : QDialog( parent, name, modal, fl ), 390 : QDialog( parent, name, modal, fl ),
391 Edit(0l), Delete(0l), Find(0l), New(0l), ListView(0l) 391 Edit(0l), Delete(0l), Find(0l), New(0l), ListView(0l)
392{ 392{
393 IsCut = false; 393 IsCut = false;
394 IsCopy = false; 394 IsCopy = false;
395 modified = false; 395 modified = false;
396 396
397 // set the config file 397 // set the config file
398 cfgFile=QDir::homeDirPath(); 398 cfgFile=QDir::homeDirPath();
399 cfgFile += "/.zsafe.cfg"; 399 cfgFile += "/.zsafe.cfg";
400 // set the icon path 400 // set the icon path
401#ifdef NO_OPIE 401#ifdef NO_OPIE
402 QString qpedir ((const char *)getenv("QPEDIR")); 402 QString qpedir ((const char *)getenv("QPEDIR"));
403#else 403#else
404 QString qpedir ((const char *)getenv("OPIEDIR")); 404 QString qpedir ((const char *)getenv("OPIEDIR"));
405#endif 405#endif
406 406
407#ifdef DESKTOP 407#ifdef DESKTOP
408 iconPath = QDir::homeDirPath() + "/pics/"; 408 iconPath = QDir::homeDirPath() + "/pics/";
409#else 409#else
410 if (qpedir.isEmpty()) 410 if (qpedir.isEmpty())
411 iconPath = "/home/QtPalmtop/pics/"; 411 iconPath = "/home/QtPalmtop/pics/";
412 else 412 else
413 iconPath = qpedir + "/pics/"; 413 iconPath = qpedir + "/pics/";
414#endif 414#endif
415 415
416 // create a zsafe configuration object 416 // create a zsafe configuration object
417#ifdef DESKTOP 417#ifdef DESKTOP
418#ifndef WIN32 418#ifndef WIN32
419 conf = new QSettings (); 419 conf = new QSettings ();
420 conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath()); 420 conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath());
421#else 421#else
422 conf = new QSettings (cfgFile); 422 conf = new QSettings (cfgFile);
423 conf->insertSearchPath (QSettings::Unix, cfgFile); 423 conf->insertSearchPath (QSettings::Unix, cfgFile);
424#endif 424#endif
425#else 425#else
426 conf = new Config (cfgFile, Config::File); 426 conf = new Config (cfgFile, Config::File);
427 conf->setGroup ("zsafePrefs"); 427 conf->setGroup ("zsafePrefs");
428#endif 428#endif
429#ifdef DESKTOP 429#ifdef DESKTOP
430// #ifndef WIN32 430// #ifndef WIN32
431 expandTree = conf->readBoolEntry(APP_KEY+"expandTree", false); 431 expandTree = conf->readBoolEntry(APP_KEY+"expandTree", false);
432// #endif 432// #endif
433#else 433#else
434 expandTree = conf->readNumEntry(APP_KEY+"expandTree", 0); 434 expandTree = conf->readNumEntry(APP_KEY+"expandTree", 0);
435#endif 435#endif
436#ifndef DESKTOP 436#ifndef DESKTOP
437 conf->setGroup ("zsafe"); 437 conf->setGroup ("zsafe");
438#endif 438#endif
439 439
440 QPixmap copy_img((const char**) copy_xpm); 440 QPixmap copy_img((const char**) copy_xpm);
441 QPixmap cut_img((const char**) cut_xpm); 441 QPixmap cut_img((const char**) cut_xpm);
442 QPixmap edit_img((const char**) edit_xpm); 442 QPixmap edit_img((const char**) edit_xpm);
443 QPixmap editdelete_img((const char**) editdelete_xpm); 443 QPixmap editdelete_img((const char**) editdelete_xpm);
444 QPixmap find_img((const char**) find_xpm); 444 QPixmap find_img((const char**) find_xpm);
445 QPixmap folder_open_img((const char**) folder_open_xpm); 445 QPixmap folder_open_img((const char**) folder_open_xpm);
446 QPixmap help_icon_img((const char**) help_icon_xpm); 446 QPixmap help_icon_img((const char**) help_icon_xpm);
447 QPixmap new_img((const char**) new_xpm); 447 QPixmap new_img((const char**) new_xpm);
448 QPixmap paste_img((const char**) paste_xpm); 448 QPixmap paste_img((const char**) paste_xpm);
449 QPixmap quit_icon_img((const char**) quit_icon_xpm); 449 QPixmap quit_icon_img((const char**) quit_icon_xpm);
450 QPixmap save_img((const char**) save_xpm); 450 QPixmap save_img((const char**) save_xpm);
451 QPixmap trash_img((const char**) trash_xpm); 451 QPixmap trash_img((const char**) trash_xpm);
452 QPixmap expand_img((const char**) expand_xpm); 452 QPixmap expand_img((const char**) expand_xpm);
453 QPixmap export_img((const char**) export_xpm); 453 QPixmap export_img((const char**) export_xpm);
454 QPixmap import_img((const char**) import_xpm); 454 QPixmap import_img((const char**) import_xpm);
455 455
456 QPixmap bank_cards( ( const char** ) bank_cards_data ); 456 QPixmap bank_cards( ( const char** ) bank_cards_data );
457 QPixmap passwords( ( const char** ) passwords_data ); 457 QPixmap passwords( ( const char** ) passwords_data );
458 QPixmap software( ( const char** ) software_data ); 458 QPixmap software( ( const char** ) software_data );
459 QPixmap general( ( const char** ) general_data ); 459 QPixmap general( ( const char** ) general_data );
460 if ( !name ) 460 if ( !name )
461 setName( "ZSafe" ); 461 setName( "ZSafe" );
462 462
463#ifdef DESKTOP 463#ifdef DESKTOP
464#ifdef WIN32 464#ifdef WIN32
465 setGeometry(100, 150, DeskW, DeskH-30 ); 465 setGeometry(100, 150, DeskW, DeskH-30 );
466#else 466#else
467 resize( DeskW, DeskH-30 ); 467 resize( DeskW, DeskH-30 );
468#endif 468#endif
469 469
470#else 470#else
471 471
472#ifdef JPATCH_HDE 472#ifdef JPATCH_HDE
473 int DeskS; 473 int DeskS;
474 if(DeskW > DeskH) 474 if(DeskW > DeskH)
475 { 475 {
476 DeskS = DeskW; 476 DeskS = DeskW;
477 } 477 }
478 else 478 else
479 { 479 {
480 DeskS = DeskH; 480 DeskS = DeskH;
481 } 481 }
482 resize( DeskW, DeskH ); 482 resize( DeskW, DeskH );
483 setMinimumSize( QSize( DeskS, DeskS ) ); 483 setMinimumSize( QSize( DeskS, DeskS ) );
484 setMaximumSize( QSize( DeskS, DeskS ) ); 484 setMaximumSize( QSize( DeskS, DeskS ) );
485#else 485#else
486 resize( DeskW, DeskH-30 ); 486 resize( DeskW, DeskH-30 );
487#endif 487#endif
488 488
489#endif 489#endif
490 // setCaption( tr( "ZSafe" ) ); 490 // setCaption( tr( "ZSafe" ) );
491 491
492 filename = conf->readEntry(APP_KEY+"document"); 492 filename = conf->readEntry(APP_KEY+"document");
493 if (filename.isEmpty() || filename.isNull()) 493 if (filename.isEmpty() || filename.isNull())
494 { 494 {
495 495
496 // check if the directory application exists, if not 496 // check if the directory application exists, if not
497 // create it 497 // create it
498// #ifndef WIN32 498// #ifndef WIN32
499 // QString d1("Documents/application"); 499 // QString d1("Documents/application");
500// #else 500// #else
501 QString d1(QDir::homeDirPath() + "/Documents/application"); 501 QString d1(QDir::homeDirPath() + "/Documents/application");
502// #endif 502// #endif
503 QDir pd1(d1); 503 QDir pd1(d1);
504 if (!pd1.exists()) 504 if (!pd1.exists())
505 { 505 {
506 QDir pd1("Documents"); 506 QDir pd1("Documents");
507 if (!pd1.mkdir("application", FALSE)) 507 if (!pd1.mkdir("application", FALSE))
508 { 508 {
509 QMessageBox::critical( 0, tr("ZSafe"), 509 QMessageBox::critical( 0, tr("ZSafe"),
510#ifdef JPATCH_HDE 510#ifdef JPATCH_HDE
511 tr("Can't create directory\n.../Documents/application\n\nZSafe will now exit.")); 511 tr("Can't create directory\n.../Documents/application\n\nZSafe will now exit."));
512#else 512#else
513 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d1)); 513 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d1));
514#endif 514#endif
515 exitZs (1); 515 exitZs (1);
516 } 516 }
517 } 517 }
518 QString d2(QDir::homeDirPath() + "/Documents/application/zsafe"); 518 QString d2(QDir::homeDirPath() + "/Documents/application/zsafe");
519 QDir pd2(d2); 519 QDir pd2(d2);
520 if (!pd2.exists()) 520 if (!pd2.exists())
521 { 521 {
522 QDir pd2(QDir::homeDirPath() + "Documents/application"); 522 QDir pd2(QDir::homeDirPath() + "Documents/application");
523 if (!pd2.mkdir("zsafe", FALSE)) 523 if (!pd2.mkdir("zsafe", FALSE))
524 { 524 {
525 QMessageBox::critical( 0, tr("ZSafe"), 525 QMessageBox::critical( 0, tr("ZSafe"),
526#ifdef JPATCH_HDE 526#ifdef JPATCH_HDE
527 tr("Can't create directory\n...//Documents/application/zsafe\n\nZSafe will now exit.")); 527 tr("Can't create directory\n...//Documents/application/zsafe\n\nZSafe will now exit."));
528#else 528#else
529 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d2)); 529 tr("Can't create directory\n%1\n\nZSafe will now exit.").arg(d2));
530#endif 530#endif
531 exitZs (1); 531 exitZs (1);
532 } 532 }
533 } 533 }
534 534
535 535
536 // set the default filename 536 // set the default filename
537 filename=d2 + "/passwords.zsf"; 537 filename=d2 + "/passwords.zsf";
538 538
539 // save the current filename to the config file 539 // save the current filename to the config file
540 conf->writeEntry(APP_KEY+"document", filename); 540 conf->writeEntry(APP_KEY+"document", filename);
541 saveConf(); 541 saveConf();
542 } 542 }
543 543
544 //if (filename == "INVALIDPWD") 544 //if (filename == "INVALIDPWD")
545 //filename = ""; 545 //filename = "";
546 546
547 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 547 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
548#ifdef WIN32 548#ifdef WIN32
549 this->setCaption("Qt ZSafe: " + ti); 549 this->setCaption("Qt ZSafe: " + ti);
550#else 550#else
551 this->setCaption("ZSafe: " + ti); 551 this->setCaption("ZSafe: " + ti);
552#endif 552#endif
553 553
554 selectedItem = NULL; 554 selectedItem = NULL;
555 lastSearchedCategory = NULL; 555 lastSearchedCategory = NULL;
556 lastSearchedItem = NULL; 556 lastSearchedItem = NULL;
557 lastSearchedName = ""; 557 lastSearchedName = "";
558 lastSearchedUsername = ""; 558 lastSearchedUsername = "";
559 lastSearchedComment = ""; 559 lastSearchedComment = "";
560 560
561 infoForm = new InfoForm(); 561 infoForm = new InfoForm();
562 categoryDialog = NULL; 562 categoryDialog = NULL;
563 563
564 // add a menu bar 564 // add a menu bar
565 QMenuBar *menu = new QMenuBar( this ); 565 QMenuBar *menu = new QMenuBar( this );
566 566
567 // add file menu 567 // add file menu
568 // QPopupMenu *file = new QPopupMenu( this ); 568 // QPopupMenu *file = new QPopupMenu( this );
569 file = new QPopupMenu( this ); 569 file = new QPopupMenu( this );
570 570
571// #ifdef DESKTOP 571// #ifdef DESKTOP
572 file->insertItem( new_img, tr("&New document"), this, SLOT(newDocument()) ); 572 file->insertItem( new_img, tr("&New document"), this, SLOT(newDocument()) );
573 file->insertItem( folder_open_img, tr("&Open document"), this, SLOT(loadDocument()) ); 573 file->insertItem( folder_open_img, tr("&Open document"), this, SLOT(loadDocument()) );
574 file->insertItem( save_img, tr("&Save document as .."), this, SLOT(saveDocumentAs()) ); 574 file->insertItem( save_img, tr("&Save document as .."), this, SLOT(saveDocumentAs()) );
575 file->insertSeparator(); 575 file->insertSeparator();
576// #endif 576// #endif
577 577
578 file->insertItem( save_img, tr("&Save document"), this, SLOT(saveDocumentWithoutPwd()) ); 578 file->insertItem( save_img, tr("&Save document"), this, SLOT(saveDocumentWithoutPwd()) );
579 file->insertItem( save_img, tr("S&ave document with new Password"), this, 579 file->insertItem( save_img, tr("S&ave document with new Password"), this,
580 SLOT(saveDocumentWithPwd()) ); 580 SLOT(saveDocumentWithPwd()) );
581 file->insertSeparator(); 581 file->insertSeparator();
582 file->insertItem( export_img, tr("&Export text file"), this, SLOT(writeAllEntries()) ); 582 file->insertItem( export_img, tr("&Export text file"), this, SLOT(writeAllEntries()) );
583 file->insertItem( import_img, tr("&Import text file"), this, SLOT(readAllEntries()) ); 583 file->insertItem( import_img, tr("&Import text file"), this, SLOT(readAllEntries()) );
584 file->insertItem( trash_img, tr("&Remove text file"), this, SLOT(removeAsciiFile()) ); 584 file->insertItem( trash_img, tr("&Remove text file"), this, SLOT(removeAsciiFile()) );
585 file->insertSeparator(); 585 file->insertSeparator();
586 file->insertItem( expand_img, tr("&Open entries expanded"), this, 586 file->insertItem( expand_img, tr("&Open entries expanded"), this,
587 SLOT(setExpandFlag()), 0, 'o'); 587 SLOT(setExpandFlag()), 0, 'o');
588 file->setItemChecked('o', expandTree); 588 file->setItemChecked('o', expandTree);
589 file->insertSeparator(); 589 file->insertSeparator();
590 file->insertItem( quit_icon_img, tr("E&xit"), this, SLOT(quitMe()) ); 590 file->insertItem( quit_icon_img, tr("E&xit"), this, SLOT(quitMe()) );
591 menu->insertItem( tr("&File"), file ); 591 menu->insertItem( tr("&File"), file );
592 592
593 QPopupMenu *cat = new QPopupMenu( this ); 593 QPopupMenu *cat = new QPopupMenu( this );
594 cat->insertItem( new_img, tr("&New"), this, SLOT(addCategory()) ); 594 cat->insertItem( new_img, tr("&New"), this, SLOT(addCategory()) );
595 cat->insertItem( edit_img, tr("&Edit"), this, SLOT(editCategory()) ); 595 cat->insertItem( edit_img, tr("&Edit"), this, SLOT(editCategory()) );
596 cat->insertItem( trash_img, tr("&Delete"), this, SLOT(delCategory()) ); 596 cat->insertItem( trash_img, tr("&Delete"), this, SLOT(delCategory()) );
597 menu->insertItem( tr("&Category"), cat ); 597 menu->insertItem( tr("&Category"), cat );
598 598
599 QPopupMenu *it = new QPopupMenu( this ); 599 QPopupMenu *it = new QPopupMenu( this );
600 it->insertItem( cut_img, tr("&Cut"), this, SLOT(cutItem()) ); 600 it->insertItem( cut_img, tr("&Cut"), this, SLOT(cutItem()) );
601 it->insertItem( copy_img, tr("C&opy"), this, SLOT(copyItem()) ); 601 it->insertItem( copy_img, tr("C&opy"), this, SLOT(copyItem()) );
602 it->insertItem( paste_img, tr("&Paste"), this, SLOT(pasteItem()) ); 602 it->insertItem( paste_img, tr("&Paste"), this, SLOT(pasteItem()) );
603 it->insertSeparator(); 603 it->insertSeparator();
604 it->insertItem( new_img, tr("&New"), this, SLOT(newPwd()) ); 604 it->insertItem( new_img, tr("&New"), this, SLOT(newPwd()) );
605 it->insertItem( edit_img, tr("&Edit"), this, SLOT(editPwd()) ); 605 it->insertItem( edit_img, tr("&Edit"), this, SLOT(editPwd()) );
606 it->insertItem( trash_img, tr("&Delete"), this, SLOT(deletePwd()) ); 606 it->insertItem( trash_img, tr("&Delete"), this, SLOT(deletePwd()) );
607 it->insertItem( find_img, tr("&Search"), this, SLOT(findPwd()) ); 607 it->insertItem( find_img, tr("&Search"), this, SLOT(findPwd()) );
608 menu->insertItem( tr("&Entry"), it ); 608 menu->insertItem( tr("&Entry"), it );
609 609
610 QPopupMenu *help = new QPopupMenu( this ); 610 QPopupMenu *help = new QPopupMenu( this );
611 help->insertItem( help_icon_img, tr("&About"), this, SLOT(about()) ); 611 help->insertItem( help_icon_img, tr("&About"), this, SLOT(about()) );
612 menu->insertItem( tr("&Help"), help ); 612 menu->insertItem( tr("&Help"), help );
613 613
614 // toolbar icons 614 // toolbar icons
615 615
616 New = new QToolButton( menu, "New" ); 616 New = new QToolButton( menu, "New" );
617 New->setGeometry( QRect( DeskW-84, 2, 20, 20 ) ); 617 New->setGeometry( QRect( DeskW-84, 2, 20, 20 ) );
618 New->setMouseTracking( TRUE ); 618 New->setMouseTracking( TRUE );
619 New->setText( tr( "" ) ); 619 New->setText( tr( "" ) );
620 New->setPixmap( new_img ); 620 New->setPixmap( new_img );
621 QToolTip::add( New, tr( "New entry" ) ); 621 QToolTip::add( New, tr( "New entry" ) );
622 622
623 Edit = new QToolButton( menu, "Edit" ); 623 Edit = new QToolButton( menu, "Edit" );
624 Edit->setGeometry( QRect( DeskW-64, 2, 20, 20 ) ); 624 Edit->setGeometry( QRect( DeskW-64, 2, 20, 20 ) );
625 Edit->setText( tr( "" ) ); 625 Edit->setText( tr( "" ) );
626 Edit->setPixmap( edit_img ); 626 Edit->setPixmap( edit_img );
627 QToolTip::add( Edit, tr( "Edit category or entry" ) ); 627 QToolTip::add( Edit, tr( "Edit category or entry" ) );
628 628
629 Delete = new QToolButton( menu, "Delete" ); 629 Delete = new QToolButton( menu, "Delete" );
630 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) ); 630 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) );
631 Delete->setText( tr( "" ) ); 631 Delete->setText( tr( "" ) );
632 Delete->setPixmap( trash_img ); 632 Delete->setPixmap( trash_img );
633 QToolTip::add( Delete, tr( "Delete category or entry" ) ); 633 QToolTip::add( Delete, tr( "Delete category or entry" ) );
634 634
635 Find = new QToolButton( menu, "Find" ); 635 Find = new QToolButton( menu, "Find" );
636 Find->setGeometry( QRect( DeskW-24, 2, 20, 20 ) ); 636 Find->setGeometry( QRect( DeskW-24, 2, 20, 20 ) );
637 Find->setText( tr( "" ) ); 637 Find->setText( tr( "" ) );
638 Find->setPixmap( find_img ); 638 Find->setPixmap( find_img );
639 QToolTip::add( Find, tr( "Find entry" ) ); 639 QToolTip::add( Find, tr( "Find entry" ) );
640 640
641/* 641/*
642 QBoxLayout * h = new QHBoxLayout( this ); 642 QBoxLayout * h = new QHBoxLayout( this );
643 h->addWidget (menu); 643 h->addWidget (menu);
644 h->addWidget (New); 644 h->addWidget (New);
645 h->addWidget (Edit); 645 h->addWidget (Edit);
646 h->addWidget (Delete); 646 h->addWidget (Delete);
647 h->addWidget (Find); 647 h->addWidget (Find);
648*/ 648*/
649 649
650 ListView = new ZListView( this, "ListView" ); 650 ListView = new ZListView( this, "ListView" );
651 ListView->addColumn( tr( "Name" ) ); 651 ListView->addColumn( tr( "Name" ) );
652 ListView->addColumn( tr( "Field 2" ) ); 652 ListView->addColumn( tr( "Field 2" ) );
653 ListView->addColumn( tr( "Field 3" ) ); 653 ListView->addColumn( tr( "Field 3" ) );
654 ListView->addColumn( tr( "Comment" ) ); 654 ListView->addColumn( tr( "Comment" ) );
655 ListView->addColumn( tr( "Field 4" ) ); 655 ListView->addColumn( tr( "Field 4" ) );
656 ListView->addColumn( tr( "Field 5" ) ); 656 ListView->addColumn( tr( "Field 5" ) );
657 ListView->setAllColumnsShowFocus(TRUE); 657 ListView->setAllColumnsShowFocus(TRUE);
658 658
659#ifdef DESKTOP 659#ifdef DESKTOP
660 ListView->setResizePolicy(QScrollView::AutoOneFit); 660 ListView->setResizePolicy(QScrollView::AutoOneFit);
661 // ListView->setGeometry( QRect( 0, 22, this->width(), this->height() - 30 ) ); 661 // ListView->setGeometry( QRect( 0, 22, this->width(), this->height() - 30 ) );
662#else 662#else
663 ListView->setResizePolicy(QScrollView::AutoOneFit); 663 ListView->setResizePolicy(QScrollView::AutoOneFit);
664 // ListView->setGeometry( QRect( 0, 22, 664 // ListView->setGeometry( QRect( 0, 22,
665 // this->width(), this->height() - 30 ) ); 665 // this->width(), this->height() - 30 ) );
666 // ListView->setMaximumSize( QSize( 440, 290 ) ); 666 // ListView->setMaximumSize( QSize( 440, 290 ) );
667#endif 667#endif
668 ListView->setVScrollBarMode( QListView::Auto ); 668 ListView->setVScrollBarMode( QListView::Auto );
669 669
670 QBoxLayout * l = new QVBoxLayout( this ); 670 QBoxLayout * l = new QVBoxLayout( this );
671 l->addWidget (menu); 671 l->addWidget (menu);
672 l->addWidget (ListView); 672 l->addWidget (ListView);
673 673
674#ifndef DESKTOP 674#ifndef DESKTOP
675 // start a timer (100 ms) to load the default document 675 // start a timer (100 ms) to load the default document
676 docuTimer.start( 100, true ); 676 docuTimer.start( 100, true );
677 connect( &docuTimer, SIGNAL(timeout()), SLOT( slotLoadDocu() ) ); 677 connect( &docuTimer, SIGNAL(timeout()), SLOT( slotLoadDocu() ) );
678 raiseFlag = true; 678 raiseFlag = true;
679 connect( &raiseTimer, SIGNAL(timeout()), SLOT( slotRaiseTimer() ) ); 679 connect( &raiseTimer, SIGNAL(timeout()), SLOT( slotRaiseTimer() ) );
680#else 680#else
681 // open the default document 681 // open the default document
682 openDocument(filename); 682 openDocument(filename);
683#endif 683#endif
684 684
685 // signals and slots connections for QTollButton 685 // signals and slots connections for QTollButton
686 connect( New, SIGNAL( clicked() ), this, SLOT( newPwd() ) ); 686 connect( New, SIGNAL( clicked() ), this, SLOT( newPwd() ) );
687 connect( Edit, SIGNAL( clicked() ), this, SLOT( editPwd() ) ); 687 connect( Edit, SIGNAL( clicked() ), this, SLOT( editPwd() ) );
688 connect( Delete, SIGNAL( clicked() ), this, SLOT( deletePwd() ) ); 688 connect( Delete, SIGNAL( clicked() ), this, SLOT( deletePwd() ) );
689 connect( Find, SIGNAL( clicked() ), this, SLOT( findPwd() ) ); 689 connect( Find, SIGNAL( clicked() ), this, SLOT( findPwd() ) );
690 // signals and slots connections for QListView 690 // signals and slots connections for QListView
691 connect( ListView, SIGNAL( selectionChanged( QListViewItem* ) ), 691 connect( ListView, SIGNAL( selectionChanged( QListViewItem* ) ),
692 this, SLOT( listViewSelected( QListViewItem* ) ) ); 692 this, SLOT( listViewSelected( QListViewItem* ) ) );
693 connect( ListView, SIGNAL( doubleClicked( QListViewItem* ) ), 693 connect( ListView, SIGNAL( doubleClicked( QListViewItem* ) ),
694 this, SLOT( showInfo( QListViewItem* ) ) ); 694 this, SLOT( showInfo( QListViewItem* ) ) );
695 connect( ListView, SIGNAL( returnPressed( QListViewItem* ) ), 695 connect( ListView, SIGNAL( returnPressed( QListViewItem* ) ),
696 this, SLOT( showInfo( QListViewItem* ) ) ); 696 this, SLOT( showInfo( QListViewItem* ) ) );
697 697
698} 698}
699 699
700const QColor *ZSafe::evenRowColor = &Qt::white; 700const QColor *ZSafe::evenRowColor = &Qt::white;
701// const QColor *ZSafe::oddRowColor = &Qt::lightGray; 701// const QColor *ZSafe::oddRowColor = &Qt::lightGray;
702const QColor *ZSafe::oddRowColor = new QColor(216,240,255); 702const QColor *ZSafe::oddRowColor = new QColor(216,240,255);
703 703
704/* 704/*
705 * Destroys the object and frees any allocated resources 705 * Destroys the object and frees any allocated resources
706 */ 706 */
707ZSafe::~ZSafe() 707ZSafe::~ZSafe()
708{ 708{
709 // no need to delete child widgets, Qt does it all for us 709 // no need to delete child widgets, Qt does it all for us
710 quitMe(); 710 quitMe();
711} 711}
712 712
713// load the default document 713// load the default document
714void ZSafe::slotLoadDocu() 714void ZSafe::slotLoadDocu()
715{ 715{
716 openDocument (filename); 716 openDocument (filename);
717} 717}
718 718
719void ZSafe::deletePwd() 719void ZSafe::deletePwd()
720{ 720{
721 721
722 if (!selectedItem) 722 if (!selectedItem)
723 return; 723 return;
724 if (!isCategory(selectedItem)) 724 if (!isCategory(selectedItem))
725 { 725 {
726 switch( QMessageBox::information( this, tr("ZSafe"), 726 switch( QMessageBox::information( this, tr("ZSafe"),
727 tr("Do you want to delete?"), 727 tr("Do you want to delete?"),
728 tr("&Delete"), tr("D&on't Delete"), 728 tr("&Delete"), tr("D&on't Delete"),
729 0 // Enter == button 0 729 0 // Enter == button 0
730 ) ) { // Escape == button 2 730 ) ) { // Escape == button 2
731 case 0: // Delete clicked, Alt-S or Enter pressed. 731 case 0: // Delete clicked, Alt-S or Enter pressed.
732 // Delete 732 // Delete
733 modified = true; 733 modified = true;
734 selectedItem->parent()->takeItem(selectedItem); 734 selectedItem->parent()->takeItem(selectedItem);
735 selectedItem = NULL; 735 selectedItem = NULL;
736 break; 736 break;
737 case 1: // Don't delete 737 case 1: // Don't delete
738 break; 738 break;
739 } 739 }
740 } 740 }
741 else 741 else
742 { 742 {
743 delCategory(); 743 delCategory();
744 } 744 }
745} 745}
746 746
747void ZSafe::editPwd() 747void ZSafe::editPwd()
748{ 748{
749 if (!selectedItem) 749 if (!selectedItem)
750 return; 750 return;
751 if (!isCategory(selectedItem)) 751 if (!isCategory(selectedItem))
752 { 752 {
753 // open the 'New Entry' dialog 753 // open the 'New Entry' dialog
754 NewDialog *dialog = new NewDialog(this, tr("Edit Entry"), TRUE); 754 NewDialog *dialog = new NewDialog(this, tr("Edit Entry"), TRUE);
755#ifdef WIN32 755#ifdef WIN32
756 dialog->setCaption ("Qt " + tr("Edit Entry")); 756 dialog->setCaption ("Qt " + tr("Edit Entry"));
757 dialog->setGeometry(200, 250, 220, 310 ); 757 dialog->setGeometry(200, 250, 220, 310 );
758#endif 758#endif
759 759
760 // set the labels 760 // set the labels
761 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 761 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name")));
762 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 762 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username")));
763 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password"))); 763 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password")));
764 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment"))); 764 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment")));
765 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4"))); 765 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4")));
766 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5"))); 766 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5")));
767 767
768 // set the fields 768 // set the fields
769 dialog->NameField->setText(selectedItem->text (0)); 769 dialog->NameField->setText(selectedItem->text (0));
770 dialog->UsernameField->setText(selectedItem->text (1)); 770 dialog->UsernameField->setText(selectedItem->text (1));
771 dialog->PasswordField->setText(selectedItem->text (2)); 771 dialog->PasswordField->setText(selectedItem->text (2));
772 QString comment = selectedItem->text (3); 772 QString comment = selectedItem->text (3);
773 comment.replace (QRegExp("<br>"), "\n"); 773 comment.replace (QRegExp("<br>"), "\n");
774 dialog->Field5->setText(selectedItem->text (4)); 774 dialog->Field5->setText(selectedItem->text (4));
775 dialog->Field6->setText(selectedItem->text (5)); 775 dialog->Field6->setText(selectedItem->text (5));
776 dialog->CommentField->insertLine(comment); 776 dialog->CommentField->insertLine(comment);
777 dialog->CommentField->setCursorPosition(0,0); 777 dialog->CommentField->setCursorPosition(0,0);
778#ifdef DESKTOP 778
779#ifndef WIN32 779 DialogCode result = (DialogCode) QPEApplication::execDialog( dialog );
780 dialog->show();
781#endif
782#else
783 dialog->showMaximized();
784#endif
785 DialogCode result = (DialogCode) dialog->exec();
786 780
787#ifdef DESKTOP 781#ifdef DESKTOP
788 result = Accepted; 782 result = Accepted;
789#endif 783#endif
790 if (result == Accepted) 784 if (result == Accepted)
791 { 785 {
792 modified = true; 786 modified = true;
793 // edit the selected item 787 // edit the selected item
794 QString name = dialog->NameField->text(); 788 QString name = dialog->NameField->text();
795 selectedItem->setText (0, tr (name)); 789 selectedItem->setText (0, tr (name));
796 QString user = dialog->UsernameField->text(); 790 QString user = dialog->UsernameField->text();
797 selectedItem->setText (1, tr (user)); 791 selectedItem->setText (1, tr (user));
798 QString pwd = dialog->PasswordField->text(); 792 QString pwd = dialog->PasswordField->text();
799 selectedItem->setText (2, tr (pwd)); 793 selectedItem->setText (2, tr (pwd));
800 QString comment = dialog->CommentField->text(); 794 QString comment = dialog->CommentField->text();
801 comment.replace (QRegExp("\n"), "<br>"); 795 comment.replace (QRegExp("\n"), "<br>");
802 selectedItem->setText (3, tr (comment)); 796 selectedItem->setText (3, tr (comment));
803 QString f5 = dialog->Field5->text(); 797 QString f5 = dialog->Field5->text();
804 selectedItem->setText (4, tr (f5)); 798 selectedItem->setText (4, tr (f5));
805 QString f6 = dialog->Field6->text(); 799 QString f6 = dialog->Field6->text();
806 selectedItem->setText (5, tr (f6)); 800 selectedItem->setText (5, tr (f6));
807 } 801 }
808 802
809 delete dialog; 803 delete dialog;
810 } 804 }
811 else 805 else
812 { 806 {
813 editCategory(); 807 editCategory();
814 } 808 }
815} 809}
816 810
817void ZSafe::newPwd() 811void ZSafe::newPwd()
818{ 812{
819 if (!selectedItem) 813 if (!selectedItem)
820 return; 814 return;
821 815
822 if (!isCategory(selectedItem)) 816 if (!isCategory(selectedItem))
823 selectedItem = selectedItem->parent(); 817 selectedItem = selectedItem->parent();
824 818
825 if (isCategory(selectedItem)) 819 if (isCategory(selectedItem))
826 { 820 {
827 QString cat = selectedItem->text(0); 821 QString cat = selectedItem->text(0);
828 822
829 // open the 'New Entry' dialog 823 // open the 'New Entry' dialog
830 NewDialog *dialog = new NewDialog(this, tr("New Entry"), TRUE); 824 NewDialog *dialog = new NewDialog(this, tr("New Entry"), TRUE);
831#ifdef WIN32 825#ifdef WIN32
832 dialog->setCaption ("Qt " + tr("New Entry")); 826 dialog->setCaption ("Qt " + tr("New Entry"));
833 dialog->setGeometry(200, 250, 220, 310 ); 827 dialog->setGeometry(200, 250, 220, 310 );
834#endif 828#endif
835 // set the labels 829 // set the labels
836 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 830 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name")));
837 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 831 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username")));
838 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password"))); 832 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password")));
839 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment"))); 833 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment")));
840 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4"))); 834 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4")));
841 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5"))); 835 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5")));
842retype: 836retype:
843#ifdef DESKTOP 837
844#ifndef WIN32 838 DialogCode result = (DialogCode) QPEApplication::execDialog( dialog );
845 dialog->show();
846#endif
847#else
848 dialog->showMaximized();
849#endif
850 DialogCode result = (DialogCode) dialog->exec();
851#ifdef DESKTOP 839#ifdef DESKTOP
852 result = Accepted; 840 result = Accepted;
853#endif 841#endif
854 842
855 if (result == Accepted) 843 if (result == Accepted)
856 { 844 {
857 845
858 QString name = dialog->NameField->text(); 846 QString name = dialog->NameField->text();
859 if (cat == name) 847 if (cat == name)
860 { 848 {
861 QMessageBox::critical( 0, tr("ZSafe"), 849 QMessageBox::critical( 0, tr("ZSafe"),
862 tr("Entry name must be different\nfrom the category name.") ); 850 tr("Entry name must be different\nfrom the category name.") );
863 goto retype; // it's not a good programming style :-) 851 goto retype; // it's not a good programming style :-)
864 } 852 }
865 853
866 modified = true; 854 modified = true;
867 // add the new item 855 // add the new item
868 QListViewItem *i = new ShadedListItem (0, selectedItem); 856 QListViewItem *i = new ShadedListItem (0, selectedItem);
869 i->setOpen (TRUE); 857 i->setOpen (TRUE);
870 858
871 i->setText (0, tr (name)); 859 i->setText (0, tr (name));
872 QString user = dialog->UsernameField->text(); 860 QString user = dialog->UsernameField->text();
873 i->setText (1, tr (user)); 861 i->setText (1, tr (user));
874 QString pwd = dialog->PasswordField->text(); 862 QString pwd = dialog->PasswordField->text();
875 i->setText (2, tr (pwd)); 863 i->setText (2, tr (pwd));
876 QString comment = dialog->CommentField->text(); 864 QString comment = dialog->CommentField->text();
877 comment.replace (QRegExp("\n"), "<br>"); 865 comment.replace (QRegExp("\n"), "<br>");
878 i->setText (3, tr (comment)); 866 i->setText (3, tr (comment));
879 QString f5 = dialog->Field5->text(); 867 QString f5 = dialog->Field5->text();
880 i->setText (4, tr (f5)); 868 i->setText (4, tr (f5));
881 QString f6 = dialog->Field6->text(); 869 QString f6 = dialog->Field6->text();
882 i->setText (5, tr (f6)); 870 i->setText (5, tr (f6));
883 } 871 }
884 872
885 delete dialog; 873 delete dialog;
886 } 874 }
887} 875}
888 876
889void ZSafe::findPwd() 877void ZSafe::findPwd()
890{ 878{
891 879
892 // open the 'Search' dialog 880 // open the 'Search' dialog
893 SearchDialog *dialog = new SearchDialog(this, tr("Search"), TRUE); 881 SearchDialog *dialog = new SearchDialog(this, tr("Search"), TRUE);
894#ifdef WIN32 882#ifdef WIN32
895 dialog->setCaption ("Qt " + tr("Search")); 883 dialog->setCaption ("Qt " + tr("Search"));
896#endif 884#endif
897 885
898#ifdef DESKTOP 886#ifdef DESKTOP
899#endif 887#endif
900 if (lastSearchedName) 888 if (lastSearchedName)
901 dialog->NameField->setText(lastSearchedName); 889 dialog->NameField->setText(lastSearchedName);
902 else 890 else
903 dialog->NameField->setText(""); 891 dialog->NameField->setText("");
904 if (lastSearchedUsername) 892 if (lastSearchedUsername)
905 dialog->UsernameField->setText(lastSearchedUsername); 893 dialog->UsernameField->setText(lastSearchedUsername);
906 else 894 else
907 dialog->UsernameField->setText(""); 895 dialog->UsernameField->setText("");
908 if (lastSearchedComment) 896 if (lastSearchedComment)
909 dialog->CommentField->setText(lastSearchedComment); 897 dialog->CommentField->setText(lastSearchedComment);
910 else 898 else
911 dialog->CommentField->setText(""); 899 dialog->CommentField->setText("");
912 DialogCode result = (DialogCode) dialog->exec(); 900 DialogCode result = (DialogCode) dialog->exec();
913#ifdef DESKTOP 901#ifdef DESKTOP
914 result = Accepted; 902 result = Accepted;
915#endif 903#endif
916 904
917 QString name; 905 QString name;
918 QString username; 906 QString username;
919 QString comment; 907 QString comment;
920 if (result == Accepted) 908 if (result == Accepted)
921 { 909 {
922 name = dialog->NameField->text(); 910 name = dialog->NameField->text();
923 username = dialog->UsernameField->text(); 911 username = dialog->UsernameField->text();
924 comment = dialog->CommentField->text(); 912 comment = dialog->CommentField->text();
925 qWarning (name); 913 qWarning (name);
926 } 914 }
927 else 915 else
928 { 916 {
929 delete dialog; 917 delete dialog;
930 return; 918 return;
931 } 919 }
932 920
933 if (!name.isEmpty() && name != lastSearchedName || 921 if (!name.isEmpty() && name != lastSearchedName ||
934 lastSearchedName.isEmpty() && !name.isEmpty()) 922 lastSearchedName.isEmpty() && !name.isEmpty())
935 { 923 {
936 // set search at the beginning if a new name is given 924 // set search at the beginning if a new name is given
937 lastSearchedCategory = NULL; 925 lastSearchedCategory = NULL;
938 lastSearchedItem = NULL; 926 lastSearchedItem = NULL;
939 } 927 }
940 lastSearchedName = name; 928 lastSearchedName = name;
941 if (!username.isEmpty() && username != lastSearchedUsername || 929 if (!username.isEmpty() && username != lastSearchedUsername ||
942 lastSearchedUsername.isEmpty() && !username.isEmpty()) 930 lastSearchedUsername.isEmpty() && !username.isEmpty())
943 { 931 {
944 // set search at the beginning if a new name is given 932 // set search at the beginning if a new name is given
945 lastSearchedCategory = NULL; 933 lastSearchedCategory = NULL;
946 lastSearchedItem = NULL; 934 lastSearchedItem = NULL;
947 } 935 }
948 lastSearchedUsername = username; 936 lastSearchedUsername = username;
949 if (!comment.isEmpty() && comment != lastSearchedComment || 937 if (!comment.isEmpty() && comment != lastSearchedComment ||
950 lastSearchedComment.isEmpty() && !comment.isEmpty()) 938 lastSearchedComment.isEmpty() && !comment.isEmpty())
951 { 939 {
952 // set search at the beginning if a new name is given 940 // set search at the beginning if a new name is given
953 lastSearchedCategory = NULL; 941 lastSearchedCategory = NULL;
954 lastSearchedItem = NULL; 942 lastSearchedItem = NULL;
955 } 943 }
956 lastSearchedComment = comment; 944 lastSearchedComment = comment;
957 945
958 ListView->clearSelection(); 946 ListView->clearSelection();
959 947
960 bool found=FALSE; 948 bool found=FALSE;
961 // step through all categories 949 // step through all categories
962 QListViewItem *i; 950 QListViewItem *i;
963 if (lastSearchedCategory) 951 if (lastSearchedCategory)
964 i = lastSearchedCategory; 952 i = lastSearchedCategory;
965 else 953 else
966 i = ListView->firstChild(); 954 i = ListView->firstChild();
967 for (; 955 for (;
968 i != NULL; 956 i != NULL;
969 i = i->nextSibling()) 957 i = i->nextSibling())
970 { 958 {
971 qWarning (i->text(0)); 959 qWarning (i->text(0));
972 i->setSelected(FALSE); 960 i->setSelected(FALSE);
973 961
974 // step through all subitems 962 // step through all subitems
975 QListViewItem *si; 963 QListViewItem *si;
976 if (lastSearchedItem) 964 if (lastSearchedItem)
977 si = lastSearchedItem; 965 si = lastSearchedItem;
978 else 966 else
979 si = i->firstChild(); 967 si = i->firstChild();
980 // for (si = i->firstChild(); 968 // for (si = i->firstChild();
981 for (; 969 for (;
982 si != NULL; 970 si != NULL;
983 si = si->nextSibling()) 971 si = si->nextSibling())
984 { 972 {
985 qWarning (si->text(0)); 973 qWarning (si->text(0));
986 if (si->isSelected()) 974 if (si->isSelected())
987 si->setSelected(FALSE); 975 si->setSelected(FALSE);
988 // ListView->repaintItem(si); 976 // ListView->repaintItem(si);
989 977
990 bool n=TRUE; 978 bool n=TRUE;
991 bool u=TRUE; 979 bool u=TRUE;
992 bool c=TRUE; 980 bool c=TRUE;
993 if (!name.isEmpty()) 981 if (!name.isEmpty())
994 n = (si->text(0)).contains (name, FALSE); 982 n = (si->text(0)).contains (name, FALSE);
995 if (!username.isEmpty()) 983 if (!username.isEmpty())
996 u = (si->text(1)).contains (username, FALSE); 984 u = (si->text(1)).contains (username, FALSE);
997 if (!comment.isEmpty()) 985 if (!comment.isEmpty())
998 c = (si->text(3)).contains (comment, FALSE); 986 c = (si->text(3)).contains (comment, FALSE);
999 987
1000 if ((n && u && c ) && !found) 988 if ((n && u && c ) && !found)
1001 { 989 {
1002 qWarning ("Found"); 990 qWarning ("Found");
1003 selectedItem = si; 991 selectedItem = si;
1004 si->setSelected(TRUE); 992 si->setSelected(TRUE);
1005 ListView->setCurrentItem(si); 993 ListView->setCurrentItem(si);
1006 ListView->ensureItemVisible(si); 994 ListView->ensureItemVisible(si);
1007 ListView->triggerUpdate(); 995 ListView->triggerUpdate();
1008 996
1009 lastSearchedCategory = i; 997 lastSearchedCategory = i;
1010 // set to the next item 998 // set to the next item
1011 lastSearchedItem = si->nextSibling(); 999 lastSearchedItem = si->nextSibling();
1012 if (!lastSearchedItem) 1000 if (!lastSearchedItem)
1013 { 1001 {
1014 // no next item within category -> set next category 1002 // no next item within category -> set next category
1015 lastSearchedCategory = i->nextSibling(); 1003 lastSearchedCategory = i->nextSibling();
1016 if (!lastSearchedCategory) 1004 if (!lastSearchedCategory)
1017 lastSearchedItem = NULL; // END 1005 lastSearchedItem = NULL; // END
1018 } 1006 }
1019 1007
1020 found = TRUE; 1008 found = TRUE;
1021 delete dialog; 1009 delete dialog;
1022 update(); 1010 update();
1023 return; 1011 return;
1024 } 1012 }
1025 } 1013 }
1026 lastSearchedCategory = i->nextSibling(); 1014 lastSearchedCategory = i->nextSibling();
1027 lastSearchedItem = NULL; 1015 lastSearchedItem = NULL;
1028 } 1016 }
1029 lastSearchedCategory = NULL; 1017 lastSearchedCategory = NULL;
1030 lastSearchedItem = NULL; 1018 lastSearchedItem = NULL;
1031 delete dialog; 1019 delete dialog;
1032 update(); 1020 update();
1033 QMessageBox::information( this, tr("ZSafe"), 1021 QMessageBox::information( this, tr("ZSafe"),
1034 tr("Entry not found"), tr("&OK"), 0); 1022 tr("Entry not found"), tr("&OK"), 0);
1035 1023
1036} 1024}
1037 1025
1038QString ZSafe::getFieldLabel (QListViewItem *_item, QString field, QString def) 1026QString ZSafe::getFieldLabel (QListViewItem *_item, QString field, QString def)
1039{ 1027{
1040 QString category; 1028 QString category;
1041 if (_item) 1029 if (_item)
1042 { 1030 {
1043 if (isCategory(_item)) 1031 if (isCategory(_item))
1044 { 1032 {
1045 category = _item->text(0); 1033 category = _item->text(0);
1046 } 1034 }
1047 else 1035 else
1048 { 1036 {
1049 QListViewItem *cat = _item->parent(); 1037 QListViewItem *cat = _item->parent();
1050 category = cat->text(0); 1038 category = cat->text(0);
1051 } 1039 }
1052 } 1040 }
1053 else 1041 else
1054 { 1042 {
1055 return def; 1043 return def;
1056 } 1044 }
1057 1045
1058 QString app_key = APP_KEY; 1046 QString app_key = APP_KEY;
1059#ifndef DESKTOP 1047#ifndef DESKTOP
1060#ifndef WIN32 1048#ifndef WIN32
1061 conf->setGroup ("fieldDefs"); 1049 conf->setGroup ("fieldDefs");
1062#endif 1050#endif
1063#else 1051#else
1064#ifndef WIN32 1052#ifndef WIN32
1065 app_key += "/fieldDefs/"; 1053 app_key += "/fieldDefs/";
1066#endif 1054#endif
1067#endif 1055#endif
1068// #ifndef WIN32 1056// #ifndef WIN32
1069 QString label = conf->readEntry(app_key+category+"-field"+field,def); 1057 QString label = conf->readEntry(app_key+category+"-field"+field,def);
1070// #else 1058// #else
1071// QString label(def); 1059// QString label(def);
1072// #endif 1060// #endif
1073 1061
1074#ifndef DESKTOP 1062#ifndef DESKTOP
1075 conf->setGroup ("zsafe"); 1063 conf->setGroup ("zsafe");
1076#endif 1064#endif
1077 return label; 1065 return label;
1078} 1066}
1079 1067
1080QString ZSafe::getFieldLabel (QString category, QString field, QString def) 1068QString ZSafe::getFieldLabel (QString category, QString field, QString def)
1081{ 1069{
1082 QString app_key = APP_KEY; 1070 QString app_key = APP_KEY;
1083#ifndef DESKTOP 1071#ifndef DESKTOP
1084 conf->setGroup ("fieldDefs"); 1072 conf->setGroup ("fieldDefs");
1085#else 1073#else
1086#ifndef WIN32 1074#ifndef WIN32
1087 app_key += "/fieldDefs/"; 1075 app_key += "/fieldDefs/";
1088#endif 1076#endif
1089#endif 1077#endif
1090// #ifndef WIN32 1078// #ifndef WIN32
1091 QString label = conf->readEntry(app_key+category+"-field"+field, 1079 QString label = conf->readEntry(app_key+category+"-field"+field,
1092 def); 1080 def);
1093// #else 1081// #else
1094 // QString label(def); 1082 // QString label(def);
1095// #endif 1083// #endif
1096#ifndef DESKTOP 1084#ifndef DESKTOP
1097 conf->setGroup ("zsafe"); 1085 conf->setGroup ("zsafe");
1098#endif 1086#endif
1099 return label; 1087 return label;
1100} 1088}
1101 1089
1102void ZSafe::showInfo( QListViewItem *_item) 1090void ZSafe::showInfo( QListViewItem *_item)
1103{ 1091{
1104 if (!_item) 1092 if (!_item)
1105 return; 1093 return;
1106 if (selectedItem != NULL) 1094 if (selectedItem != NULL)
1107 selectedItem->setSelected(FALSE); 1095 selectedItem->setSelected(FALSE);
1108 1096
1109 selectedItem = _item; 1097 selectedItem = _item;
1110 selectedItem->setSelected(TRUE); 1098 selectedItem->setSelected(TRUE);
1111 1099
1112 if (!isCategory(_item)) 1100 if (!isCategory(_item))
1113 { 1101 {
1114/* 1102/*
1115 QString label=selectedItem->text(0); 1103 QString label=selectedItem->text(0);
1116 label+="\n"; 1104 label+="\n";
1117 label+=selectedItem->text(1); 1105 label+=selectedItem->text(1);
1118 label+="\n"; 1106 label+="\n";
1119 label+=selectedItem->text(2); 1107 label+=selectedItem->text(2);
1120 label+="\n"; 1108 label+="\n";
1121 label+=selectedItem->text(3); 1109 label+=selectedItem->text(3);
1122*/ 1110*/
1123 1111
1124 QString text; 1112 QString text;
1125 QString entry; 1113 QString entry;
1126 1114
1127 text = "<html><body><div align=""center""><u><b>"; 1115 text = "<html><body><div align=""center""><u><b>";
1128 text += selectedItem->text(0); 1116 text += selectedItem->text(0);
1129 text += "</b></u><br></div><br>"; 1117 text += "</b></u><br></div><br>";
1130 1118
1131 entry = selectedItem->text(1); 1119 entry = selectedItem->text(1);
1132 if (!entry.isEmpty() && entry.compare(" ")) 1120 if (!entry.isEmpty() && entry.compare(" "))
1133 { 1121 {
1134 text += "<u><b>"; 1122 text += "<u><b>";
1135 text += getFieldLabel (selectedItem, "2", tr("Username")); 1123 text += getFieldLabel (selectedItem, "2", tr("Username"));
1136 text += ":<br></b></u><blockquote>"; 1124 text += ":<br></b></u><blockquote>";
1137 text += entry; 1125 text += entry;
1138 text += "</blockquote>"; 1126 text += "</blockquote>";
1139 // text += "<br>"; 1127 // text += "<br>";
1140 } 1128 }
1141 1129
1142 entry = selectedItem->text(2); 1130 entry = selectedItem->text(2);
1143 if (!entry.isEmpty() && entry.compare(" ")) 1131 if (!entry.isEmpty() && entry.compare(" "))
1144 { 1132 {
1145 text += "<u><b>"; 1133 text += "<u><b>";
1146 text += getFieldLabel (selectedItem, "3", tr("Password")); 1134 text += getFieldLabel (selectedItem, "3", tr("Password"));
1147 text += ":<br> </b></u><blockquote>"; 1135 text += ":<br> </b></u><blockquote>";
1148 text += entry; 1136 text += entry;
1149 text += "</blockquote>"; 1137 text += "</blockquote>";
1150 // text += "<br>"; 1138 // text += "<br>";
1151 } 1139 }
1152 1140
1153 entry = selectedItem->text(4); 1141 entry = selectedItem->text(4);
1154 if (!entry.isEmpty() && entry.compare(" ")) 1142 if (!entry.isEmpty() && entry.compare(" "))
1155 { 1143 {
1156 text += "<u><b>"; 1144 text += "<u><b>";
1157 text += getFieldLabel (selectedItem, "5", tr("Field 4")); 1145 text += getFieldLabel (selectedItem, "5", tr("Field 4"));
1158 text += ":<br> </b></u><blockquote>"; 1146 text += ":<br> </b></u><blockquote>";
1159 text += entry; 1147 text += entry;
1160 text += "</blockquote>"; 1148 text += "</blockquote>";
1161 // text += "<br>"; 1149 // text += "<br>";
1162 } 1150 }
1163 1151
1164 entry = selectedItem->text(5); 1152 entry = selectedItem->text(5);
1165 if (!entry.isEmpty() && entry.compare(" ")) 1153 if (!entry.isEmpty() && entry.compare(" "))
1166 { 1154 {
1167 text += "<u><b>"; 1155 text += "<u><b>";
1168 text += getFieldLabel (selectedItem, "6", tr("Field 5")); 1156 text += getFieldLabel (selectedItem, "6", tr("Field 5"));
1169 text += ":<br> </b></u><blockquote>"; 1157 text += ":<br> </b></u><blockquote>";
1170 text += entry; 1158 text += entry;
1171 text += "</blockquote>"; 1159 text += "</blockquote>";
1172 // text += "<br>"; 1160 // text += "<br>";
1173 } 1161 }
1174 1162
1175 entry = selectedItem->text(3); 1163 entry = selectedItem->text(3);
1176 if (!entry.isEmpty() && entry.compare(" ")) 1164 if (!entry.isEmpty() && entry.compare(" "))
1177 { 1165 {
1178 text += "<u><b>"; 1166 text += "<u><b>";
1179 text += getFieldLabel (selectedItem, "4", tr("Comment")); 1167 text += getFieldLabel (selectedItem, "4", tr("Comment"));
1180 text += ":<br> </b></u>"; 1168 text += ":<br> </b></u>";
1181 QString comment = selectedItem->text(3); 1169 QString comment = selectedItem->text(3);
1182 comment.replace (QRegExp("\n"), "<br>"); 1170 comment.replace (QRegExp("\n"), "<br>");
1183 text += comment; 1171 text += comment;
1184 // text += "<br>"; 1172 // text += "<br>";
1185 } 1173 }
1186 1174
1187 text += "</body></html>"; 1175 text += "</body></html>";
1188 1176
1189 infoForm->InfoText->setText(text); 1177 infoForm->InfoText->setText(text);
1190 infoForm->hide(); 1178 infoForm->hide();
1191#ifdef DESKTOP 1179 QPEApplication::showDialog( infoForm );
1192 infoForm->show();
1193#else
1194 infoForm->showMaximized();
1195#endif
1196
1197 } 1180 }
1198} 1181}
1199 1182
1200void ZSafe::listViewSelected( QListViewItem *_item) 1183void ZSafe::listViewSelected( QListViewItem *_item)
1201{ 1184{
1202 if (!_item) 1185 if (!_item)
1203 return; 1186 return;
1204 if (selectedItem != NULL) 1187 if (selectedItem != NULL)
1205 selectedItem->setSelected(FALSE); 1188 selectedItem->setSelected(FALSE);
1206 1189
1207 selectedItem = _item; 1190 selectedItem = _item;
1208 1191
1209#ifndef DESKTOP 1192#ifndef DESKTOP
1210 // set the column text dependent on the selected item 1193 // set the column text dependent on the selected item
1211 ListView->setColumnText(0, getFieldLabel (selectedItem, "1", tr("Name"))); 1194 ListView->setColumnText(0, getFieldLabel (selectedItem, "1", tr("Name")));
1212 ListView->setColumnText(1, getFieldLabel (selectedItem, "2", tr("Field 2"))); 1195 ListView->setColumnText(1, getFieldLabel (selectedItem, "2", tr("Field 2")));
1213 ListView->setColumnText(2, getFieldLabel (selectedItem, "3", tr("Field 3"))); 1196 ListView->setColumnText(2, getFieldLabel (selectedItem, "3", tr("Field 3")));
1214 ListView->setColumnText(3, getFieldLabel (selectedItem, "4", tr("Comment"))); 1197 ListView->setColumnText(3, getFieldLabel (selectedItem, "4", tr("Comment")));
1215 ListView->setColumnText(4, getFieldLabel (selectedItem, "5", tr("Field 4"))); 1198 ListView->setColumnText(4, getFieldLabel (selectedItem, "5", tr("Field 4")));
1216 ListView->setColumnText(5, getFieldLabel (selectedItem, "6", tr("Field 5"))); 1199 ListView->setColumnText(5, getFieldLabel (selectedItem, "6", tr("Field 5")));
1217#endif 1200#endif
1218#ifdef WIN32 1201#ifdef WIN32
1219 // set the column text dependent on the selected item 1202 // set the column text dependent on the selected item
1220 ListView->setColumnText(0, getFieldLabel (selectedItem, "1", tr("Name"))); 1203 ListView->setColumnText(0, getFieldLabel (selectedItem, "1", tr("Name")));
1221 ListView->setColumnText(1, getFieldLabel (selectedItem, "2", tr("Field 2"))); 1204 ListView->setColumnText(1, getFieldLabel (selectedItem, "2", tr("Field 2")));
1222 ListView->setColumnText(2, getFieldLabel (selectedItem, "3", tr("Field 3"))); 1205 ListView->setColumnText(2, getFieldLabel (selectedItem, "3", tr("Field 3")));
1223 ListView->setColumnText(3, getFieldLabel (selectedItem, "4", tr("Comment"))); 1206 ListView->setColumnText(3, getFieldLabel (selectedItem, "4", tr("Comment")));
1224 ListView->setColumnText(4, getFieldLabel (selectedItem, "5", tr("Field 4"))); 1207 ListView->setColumnText(4, getFieldLabel (selectedItem, "5", tr("Field 4")));
1225 ListView->setColumnText(5, getFieldLabel (selectedItem, "6", tr("Field 5"))); 1208 ListView->setColumnText(5, getFieldLabel (selectedItem, "6", tr("Field 5")));
1226#endif 1209#endif
1227 1210
1228} 1211}
1229 1212
1230bool ZSafe::isCategory(QListViewItem *_item) 1213bool ZSafe::isCategory(QListViewItem *_item)
1231{ 1214{
1232 if (_item == NULL) 1215 if (_item == NULL)
1233 return FALSE; 1216 return FALSE;
1234 1217
1235 QString categoryName = _item->text (0); 1218 QString categoryName = _item->text (0);
1236 if (categories.find (categoryName)) 1219 if (categories.find (categoryName))
1237 return TRUE; 1220 return TRUE;
1238 else 1221 else
1239 return FALSE; 1222 return FALSE;
1240} 1223}
1241 1224
1242void ZSafe::removeAsciiFile() 1225void ZSafe::removeAsciiFile()
1243{ 1226{
1244 // QString fn = filename + ".txt"; 1227 // QString fn = filename + ".txt";
1245 // open the file dialog 1228 // open the file dialog
1246#ifndef DESKTOP 1229#ifndef DESKTOP
1247#ifndef NO_OPIE 1230#ifndef NO_OPIE
1248 QMap<QString, QStringList> mimeTypes; 1231 QMap<QString, QStringList> mimeTypes;
1249 mimeTypes.insert(tr("All"), QStringList() ); 1232 mimeTypes.insert(tr("All"), QStringList() );
1250 mimeTypes.insert(tr("Text"), "text/*" ); 1233 mimeTypes.insert(tr("Text"), "text/*" );
1251 QString fn = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL, 1234 QString fn = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL,
1252 QDir::homeDirPath() + "/Documents/application/zsafe", 1235 QDir::homeDirPath() + "/Documents/application/zsafe",
1253 QString::null, 1236 QString::null,
1254 mimeTypes, 1237 mimeTypes,
1255 this, 1238 this,
1256 tr ("Remove text file")); 1239 tr ("Remove text file"));
1257#else 1240#else
1258 QString fn = ScQtFileEdit::getOpenFileName(this, 1241 QString fn = ScQtFileEdit::getOpenFileName(this,
1259 tr ("Remove text file"), 1242 tr ("Remove text file"),
1260 QDir::homeDirPath() + "/Documents/application/zsafe", 1243 QDir::homeDirPath() + "/Documents/application/zsafe",
1261 "*.txt"); 1244 "*.txt");
1262#endif 1245#endif
1263#else 1246#else
1264 QString fn = QFileDialog::getOpenFileName( 1247 QString fn = QFileDialog::getOpenFileName(
1265 QDir::homeDirPath() + "/Documents/application/zsafe", 1248 QDir::homeDirPath() + "/Documents/application/zsafe",
1266 "ZSafe (*.txt)", 1249 "ZSafe (*.txt)",
1267 this, 1250 this,
1268 "ZSafe File Dialog" 1251 "ZSafe File Dialog"
1269 "Choose a text file" ); 1252 "Choose a text file" );
1270#endif 1253#endif
1271 1254
1272 if (fn && fn.length() > 0 ) 1255 if (fn && fn.length() > 0 )
1273 { 1256 {
1274 QFile f( fn ); 1257 QFile f( fn );
1275 if ( !f.remove() ) 1258 if ( !f.remove() )
1276 { 1259 {
1277 qWarning( QString("Could not remove file %1").arg(fn), 1260 qWarning( QString("Could not remove file %1").arg(fn),
1278 2000 ); 1261 2000 );
1279 QMessageBox::critical( 0, tr("ZSafe"), 1262 QMessageBox::critical( 0, tr("ZSafe"),
1280 tr("Could not remove text file.") ); 1263 tr("Could not remove text file.") );
1281 return; 1264 return;
1282 } 1265 }
1283 } 1266 }
1284} 1267}
1285 1268
1286void ZSafe::writeAllEntries() 1269void ZSafe::writeAllEntries()
1287{ 1270{
1288 if (filename.isEmpty()) 1271 if (filename.isEmpty())
1289 { 1272 {
1290 QMessageBox::critical( 0, tr("ZSafe"), 1273 QMessageBox::critical( 0, tr("ZSafe"),
1291 tr("No document defined.\nYou have to create a new document")); 1274 tr("No document defined.\nYou have to create a new document"));
1292 return; 1275 return;
1293 } 1276 }
1294 1277
1295 // open the file dialog 1278 // open the file dialog
1296#ifndef DESKTOP 1279#ifndef DESKTOP
1297#ifndef NO_OPIE 1280#ifndef NO_OPIE
1298 QMap<QString, QStringList> mimeTypes; 1281 QMap<QString, QStringList> mimeTypes;
1299 mimeTypes.insert(tr("All"), QStringList() ); 1282 mimeTypes.insert(tr("All"), QStringList() );
1300 mimeTypes.insert(tr("Text"), "text/*" ); 1283 mimeTypes.insert(tr("Text"), "text/*" );
1301 QString fn = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL, 1284 QString fn = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL,
1302 QDir::homeDirPath() + "/Documents/application/zsafe", 1285 QDir::homeDirPath() + "/Documents/application/zsafe",
1303 QString::null, 1286 QString::null,
1304 mimeTypes, 1287 mimeTypes,
1305 this, 1288 this,
1306 tr ("Export text file")); 1289 tr ("Export text file"));
1307#else 1290#else
1308 QString fn = ScQtFileEdit::getSaveAsFileName(this, 1291 QString fn = ScQtFileEdit::getSaveAsFileName(this,
1309 tr ("Export text file"), 1292 tr ("Export text file"),
1310 QDir::homeDirPath() + "/Documents/application/zsafe", 1293 QDir::homeDirPath() + "/Documents/application/zsafe",
1311 "*.txt"); 1294 "*.txt");
1312#endif 1295#endif
1313#else 1296#else
1314 QString fn = QFileDialog::getSaveFileName( 1297 QString fn = QFileDialog::getSaveFileName(
1315 QDir::homeDirPath() + "/Documents/application/zsafe", 1298 QDir::homeDirPath() + "/Documents/application/zsafe",
1316 "ZSafe (*.txt)", 1299 "ZSafe (*.txt)",
1317 this, 1300 this,
1318 "ZSafe File Dialog" 1301 "ZSafe File Dialog"
1319 "Choose a text file" ); 1302 "Choose a text file" );
1320#endif 1303#endif
1321 1304
1322 // open the new document 1305 // open the new document
1323 if (fn && fn.length() > 0 ) 1306 if (fn && fn.length() > 0 )
1324 { 1307 {
1325 QFile f( fn ); 1308 QFile f( fn );
1326 if ( !f.open( IO_WriteOnly ) ) { 1309 if ( !f.open( IO_WriteOnly ) ) {
1327 qWarning( QString("Could not write to file %1").arg(fn), 1310 qWarning( QString("Could not write to file %1").arg(fn),
1328 2000 ); 1311 2000 );
1329 QMessageBox::critical( 0, "ZSafe", 1312 QMessageBox::critical( 0, "ZSafe",
1330 QString("Could not export to text file.") ); 1313 QString("Could not export to text file.") );
1331 return; 1314 return;
1332 } 1315 }
1333 QTextStream t( &f ); 1316 QTextStream t( &f );
1334 1317
1335 QListViewItem *i; 1318 QListViewItem *i;
1336 // step through all categories 1319 // step through all categories
1337 for (i = ListView->firstChild(); 1320 for (i = ListView->firstChild();
1338 i != NULL; 1321 i != NULL;
1339 i = i->nextSibling()) 1322 i = i->nextSibling())
1340 { 1323 {
1341 // step through all subitems 1324 // step through all subitems
1342 QListViewItem *si; 1325 QListViewItem *si;
1343 for (si = i->firstChild(); 1326 for (si = i->firstChild();
1344 si != NULL; 1327 si != NULL;
1345 si = si->nextSibling()) 1328 si = si->nextSibling())
1346 { 1329 {
1347 QString oneEntry; 1330 QString oneEntry;
1348 oneEntry += "\""; 1331 oneEntry += "\"";
1349 oneEntry += i->text(0); 1332 oneEntry += i->text(0);
1350 oneEntry += "\";"; 1333 oneEntry += "\";";
1351 oneEntry += "\""; 1334 oneEntry += "\"";
1352 oneEntry += si->text(0); 1335 oneEntry += si->text(0);
1353 oneEntry += "\";"; 1336 oneEntry += "\";";
1354 oneEntry += "\""; 1337 oneEntry += "\"";
1355 oneEntry += si->text(1); 1338 oneEntry += si->text(1);
1356 oneEntry += "\";"; 1339 oneEntry += "\";";
1357 oneEntry += "\""; 1340 oneEntry += "\"";
1358 oneEntry += si->text(2); 1341 oneEntry += si->text(2);
1359 oneEntry += "\";"; 1342 oneEntry += "\";";
1360 oneEntry += "\""; 1343 oneEntry += "\"";
1361 QString comment = si->text(3); 1344 QString comment = si->text(3);
1362 comment.replace (QRegExp("\n"), "<br>"); 1345 comment.replace (QRegExp("\n"), "<br>");
1363 oneEntry += comment; 1346 oneEntry += comment;
1364 oneEntry += "\";"; 1347 oneEntry += "\";";
1365 oneEntry += "\""; 1348 oneEntry += "\"";
1366 oneEntry += si->text(4); 1349 oneEntry += si->text(4);
1367 oneEntry += "\";"; 1350 oneEntry += "\";";
1368 oneEntry += "\""; 1351 oneEntry += "\"";
1369 oneEntry += si->text(5); 1352 oneEntry += si->text(5);
1370 oneEntry += "\""; 1353 oneEntry += "\"";
1371 // qWarning (oneEntry); 1354 // qWarning (oneEntry);
1372 t << oneEntry << endl; 1355 t << oneEntry << endl;
1373 1356
1374 // qWarning (si->text(0)); 1357 // qWarning (si->text(0));
1375 } 1358 }
1376 } 1359 }
1377 f.close(); 1360 f.close();
1378 } 1361 }
1379} 1362}
1380 1363
1381void ZSafe::readAllEntries() 1364void ZSafe::readAllEntries()
1382{ 1365{
1383 if (filename.isEmpty()) 1366 if (filename.isEmpty())
1384 { 1367 {
1385 QMessageBox::critical( 0, tr("ZSafe"), 1368 QMessageBox::critical( 0, tr("ZSafe"),
1386 tr("No document defined.\nYou have to create a new document")); 1369 tr("No document defined.\nYou have to create a new document"));
1387 return; 1370 return;
1388 } 1371 }
1389 1372
1390 // open the file dialog 1373 // open the file dialog
1391#ifndef DESKTOP 1374#ifndef DESKTOP
1392#ifndef NO_OPIE 1375#ifndef NO_OPIE
1393 QMap<QString, QStringList> mimeTypes; 1376 QMap<QString, QStringList> mimeTypes;
1394 mimeTypes.insert(tr("All"), QStringList() ); 1377 mimeTypes.insert(tr("All"), QStringList() );
1395 mimeTypes.insert(tr("Text"), "text/*" ); 1378 mimeTypes.insert(tr("Text"), "text/*" );
1396 QString fn = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL, 1379 QString fn = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL,
1397 QDir::homeDirPath() + "/Documents/application/zsafe", 1380 QDir::homeDirPath() + "/Documents/application/zsafe",
1398 QString::null, 1381 QString::null,
1399 mimeTypes, 1382 mimeTypes,
1400 this, 1383 this,
1401 tr ("Import text file")); 1384 tr ("Import text file"));
1402#else 1385#else
1403 QString fn = ScQtFileEdit::getOpenFileName(this, 1386 QString fn = ScQtFileEdit::getOpenFileName(this,
1404 tr ("Import text file"), 1387 tr ("Import text file"),
1405 QDir::homeDirPath() + "/Documents/application/zsafe", 1388 QDir::homeDirPath() + "/Documents/application/zsafe",
1406 "*.txt"); 1389 "*.txt");
1407#endif 1390#endif
1408#else 1391#else
1409 QString fn = QFileDialog::getOpenFileName( 1392 QString fn = QFileDialog::getOpenFileName(
1410 QDir::homeDirPath() + "/Documents/application/zsafe", 1393 QDir::homeDirPath() + "/Documents/application/zsafe",
1411 "ZSafe (*.txt)", 1394 "ZSafe (*.txt)",
1412 this, 1395 this,
1413 "ZSafe File Dialog" 1396 "ZSafe File Dialog"
1414 "Choose a text file" ); 1397 "Choose a text file" );
1415#endif 1398#endif
1416 1399
1417 if (fn && fn.length() > 0 ) 1400 if (fn && fn.length() > 0 )
1418 { 1401 {
1419 QFile f( fn ); 1402 QFile f( fn );
1420 if ( !f.open( IO_ReadOnly ) ) 1403 if ( !f.open( IO_ReadOnly ) )
1421 { 1404 {
1422 qWarning( QString("Could not read file %1").arg(fn), 1405 qWarning( QString("Could not read file %1").arg(fn),
1423 2000 ); 1406 2000 );
1424 QMessageBox::critical( 0, "ZSafe", 1407 QMessageBox::critical( 0, "ZSafe",
1425 QString("Could not import text file.") ); 1408 QString("Could not import text file.") );
1426 return; 1409 return;
1427 } 1410 }
1428 1411
1429 modified = true; 1412 modified = true;
1430 1413
1431 // clear the password list 1414 // clear the password list
1432 selectedItem = NULL; 1415 selectedItem = NULL;
1433 QListViewItem *i; 1416 QListViewItem *i;
1434 // step through all categories 1417 // step through all categories
1435 for (i = ListView->firstChild(); 1418 for (i = ListView->firstChild();
1436 i != NULL; 1419 i != NULL;
1437 i = i->nextSibling()) 1420 i = i->nextSibling())
1438 { 1421 {
1439 // step through all subitems 1422 // step through all subitems
1440 QListViewItem *si; 1423 QListViewItem *si;
1441 for (si = i->firstChild(); 1424 for (si = i->firstChild();
1442 si != NULL; ) 1425 si != NULL; )
1443 // si = si->nextSibling()) 1426 // si = si->nextSibling())
1444 { 1427 {
1445 QListViewItem *_si = si; 1428 QListViewItem *_si = si;
1446 si = si->nextSibling(); 1429 si = si->nextSibling();
1447 i->takeItem(_si); // remove from view list 1430 i->takeItem(_si); // remove from view list
1448 if (_si) delete _si; 1431 if (_si) delete _si;
1449 } 1432 }
1450 } 1433 }
1451 1434
1452 qWarning ("ReadAllEntries(): "); 1435 qWarning ("ReadAllEntries(): ");
1453 1436
1454 QTextStream t(&f); 1437 QTextStream t(&f);
1455 while ( !t.eof() ) 1438 while ( !t.eof() )
1456 { 1439 {
1457 QString s = t.readLine(); 1440 QString s = t.readLine();
1458 s.replace (QRegExp("\";\""), "\"|\""); 1441 s.replace (QRegExp("\";\""), "\"|\"");
1459 // char buffer[1024]; 1442 // char buffer[1024];
1460#ifndef WIN32 1443#ifndef WIN32
1461 char buffer[s.length()+1]; 1444 char buffer[s.length()+1];
1462#else 1445#else
1463 char buffer[4048]; 1446 char buffer[4048];
1464#endif 1447#endif
1465 1448
1466 1449
1467 /* modify QString -> QCString::utf8 */ 1450 /* modify QString -> QCString::utf8 */
1468 1451
1469 strcpy (buffer, s.utf8()); 1452 strcpy (buffer, s.utf8());
1470 1453
1471 QString name; 1454 QString name;
1472 QString user; 1455 QString user;
1473 QString password; 1456 QString password;
1474 QString comment; 1457 QString comment;
1475 QString field5=""; 1458 QString field5="";
1476 QString field6=""; 1459 QString field6="";
1477 1460
1478 // separete the entries 1461 // separete the entries
1479 char *i = strtok (buffer, "|"); 1462 char *i = strtok (buffer, "|");
1480 QString category(QString::fromUtf8(&i[1])); 1463 QString category(QString::fromUtf8(&i[1]));
1481 category.truncate(category.length() -1); 1464 category.truncate(category.length() -1);
1482 1465
1483 int idx=0; 1466 int idx=0;
1484 while ((i = strtok (NULL, "|")) != NULL) 1467 while ((i = strtok (NULL, "|")) != NULL)
1485 { 1468 {
1486 switch (idx) 1469 switch (idx)
1487 { 1470 {
1488 case 0: 1471 case 0:
1489 name = QString::fromUtf8(&i[1]); 1472 name = QString::fromUtf8(&i[1]);
1490 name.truncate(name.length() -1); 1473 name.truncate(name.length() -1);
1491 // name 1474 // name
1492 break; 1475 break;
1493 case 1: 1476 case 1:
1494 // user 1477 // user
1495 user = QString::fromUtf8(&i[1]); 1478 user = QString::fromUtf8(&i[1]);
1496 user.truncate(user.length() -1); 1479 user.truncate(user.length() -1);
1497 break; 1480 break;
1498 case 2: 1481 case 2:
1499 // password 1482 // password
1500 password = QString::fromUtf8(&i[1]); 1483 password = QString::fromUtf8(&i[1]);
1501 password.truncate(password.length() -1); 1484 password.truncate(password.length() -1);
1502 break; 1485 break;
1503 case 3: 1486 case 3:
1504 // comment 1487 // comment
1505 comment = QString::fromUtf8(&i[1]); 1488 comment = QString::fromUtf8(&i[1]);
1506 comment.truncate(comment.length() -1); 1489 comment.truncate(comment.length() -1);
1507 break; 1490 break;
1508 case 4: 1491 case 4:
1509 // field5 1492 // field5
1510 field5 = QString::fromUtf8(&i[1]); 1493 field5 = QString::fromUtf8(&i[1]);
1511 field5.truncate(field5.length() -1); 1494 field5.truncate(field5.length() -1);
1512 break; 1495 break;
1513 case 5: 1496 case 5:
1514 // field6 1497 // field6
1515 field6 = QString::fromUtf8(&i[1]); 1498 field6 = QString::fromUtf8(&i[1]);
1516 field6.truncate(field6.length() -1); 1499 field6.truncate(field6.length() -1);
1517 break; 1500 break;
1518 } 1501 }
1519 idx++; 1502 idx++;
1520 } 1503 }
1521 1504
1522 Category *cat= categories.find (category); 1505 Category *cat= categories.find (category);
1523 if (cat) 1506 if (cat)
1524 { 1507 {
1525 // use the existend item 1508 // use the existend item
1526 QListViewItem *catItem = cat->getListItem(); 1509 QListViewItem *catItem = cat->getListItem();
1527 if (catItem) 1510 if (catItem)
1528 { 1511 {
1529 QListViewItem * item = new ShadedListItem( 0, catItem ); 1512 QListViewItem * item = new ShadedListItem( 0, catItem );
1530 item->setText( 0, tr( name ) ); 1513 item->setText( 0, tr( name ) );
1531 item->setText( 1, tr( user ) ); 1514 item->setText( 1, tr( user ) );
1532 item->setText( 2, tr( password ) ); 1515 item->setText( 2, tr( password ) );
1533 item->setText( 3, tr( comment ) ); 1516 item->setText( 3, tr( comment ) );
1534 item->setText( 4, tr( field5 ) ); 1517 item->setText( 4, tr( field5 ) );
1535 item->setText( 5, tr( field6 ) ); 1518 item->setText( 5, tr( field6 ) );
1536 catItem->setOpen( TRUE ); 1519 catItem->setOpen( TRUE );
1537 } 1520 }
1538 } 1521 }
1539 else 1522 else
1540 { 1523 {
1541 QListViewItem *catI = new ShadedListItem( 1, ListView ); 1524 QListViewItem *catI = new ShadedListItem( 1, ListView );
1542 // create and insert a new item 1525 // create and insert a new item
1543 QListViewItem * item = new ShadedListItem( 0, catI ); 1526 QListViewItem * item = new ShadedListItem( 0, catI );
1544 item->setText( 0, tr( name ) ); 1527 item->setText( 0, tr( name ) );
1545 item->setText( 1, tr( user ) ); 1528 item->setText( 1, tr( user ) );
1546 item->setText( 2, tr( password ) ); 1529 item->setText( 2, tr( password ) );
1547 item->setText( 3, tr( comment ) ); 1530 item->setText( 3, tr( comment ) );
1548 item->setText( 4, tr( field5 ) ); 1531 item->setText( 4, tr( field5 ) );
1549 item->setText( 5, tr( field6 ) ); 1532 item->setText( 5, tr( field6 ) );
1550 1533
1551 catI->setOpen( TRUE ); 1534 catI->setOpen( TRUE );
1552 1535
1553 Category *c1 = new Category(); 1536 Category *c1 = new Category();
1554 c1->setCategoryName(category); 1537 c1->setCategoryName(category);
1555 1538
1556 QString icon; 1539 QString icon;
1557 QString fullIconPath; 1540 QString fullIconPath;
1558 QPixmap *pix; 1541 QPixmap *pix;
1559// #ifndef WIN32 1542// #ifndef WIN32
1560 icon = conf->readEntry(APP_KEY+category); 1543 icon = conf->readEntry(APP_KEY+category);
1561// #endif 1544// #endif
1562 bool isIconAv = false; 1545 bool isIconAv = false;
1563 if (!icon.isEmpty() && !icon.isNull()) 1546 if (!icon.isEmpty() && !icon.isNull())
1564 { 1547 {
1565 // build the full path 1548 // build the full path
1566 fullIconPath = iconPath + icon; 1549 fullIconPath = iconPath + icon;
1567 pix = new QPixmap (fullIconPath); 1550 pix = new QPixmap (fullIconPath);
1568 if (pix) 1551 if (pix)
1569 { 1552 {
1570 QImage img = pix->convertToImage(); 1553 QImage img = pix->convertToImage();
1571 pix->convertFromImage(img.smoothScale(14,14)); 1554 pix->convertFromImage(img.smoothScale(14,14));
1572 c1->setIconName (icon); 1555 c1->setIconName (icon);
1573 c1->setIcon (*pix); 1556 c1->setIcon (*pix);
1574 isIconAv = true; 1557 isIconAv = true;
1575 } 1558 }
1576 } 1559 }
1577 if (!isIconAv) 1560 if (!isIconAv)
1578 { 1561 {
1579 c1->setIcon (*getPredefinedIcon(category)); 1562 c1->setIcon (*getPredefinedIcon(category));
1580 } 1563 }
1581 c1->setListItem (catI); 1564 c1->setListItem (catI);
1582 c1->initListItem(); 1565 c1->initListItem();
1583 categories.insert (c1->getCategoryName(), c1); 1566 categories.insert (c1->getCategoryName(), c1);
1584 } 1567 }
1585 1568
1586 } 1569 }
1587 f.close(); 1570 f.close();
1588 1571
1589 } 1572 }
1590 else 1573 else
1591 { 1574 {
1592 } 1575 }
1593 1576
1594} 1577}
1595 1578
1596#ifdef UNUSED 1579#ifdef UNUSED
1597void ZSafe::writeAllEntries() 1580void ZSafe::writeAllEntries()
1598{ 1581{
1599 // open the file for writing 1582 // open the file for writing
1600 QString fn = filename + ".txt"; 1583 QString fn = filename + ".txt";
1601 QFile f( fn ); 1584 QFile f( fn );
1602 if ( !f.open( IO_WriteOnly ) ) { 1585 if ( !f.open( IO_WriteOnly ) ) {
1603 qWarning( QString("Could not write to file %1").arg(fn), 1586 qWarning( QString("Could not write to file %1").arg(fn),
1604 2000 ); 1587 2000 );
1605 QMessageBox::critical( 0, tr("ZSafe"), 1588 QMessageBox::critical( 0, tr("ZSafe"),
1606 tr("Could not export to text file.") ); 1589 tr("Could not export to text file.") );
1607 return; 1590 return;
1608 } 1591 }
1609 QTextStream t( &f ); 1592 QTextStream t( &f );
1610 1593
1611 QListViewItem *i; 1594 QListViewItem *i;
1612 // step through all categories 1595 // step through all categories
1613 for (i = ListView->firstChild(); 1596 for (i = ListView->firstChild();
1614 i != NULL; 1597 i != NULL;
1615 i = i->nextSibling()) 1598 i = i->nextSibling())
1616 { 1599 {
1617 // step through all subitems 1600 // step through all subitems
1618 QListViewItem *si; 1601 QListViewItem *si;
1619 for (si = i->firstChild(); 1602 for (si = i->firstChild();
1620 si != NULL; 1603 si != NULL;
1621 si = si->nextSibling()) 1604 si = si->nextSibling())
1622 { 1605 {
1623 QString oneEntry; 1606 QString oneEntry;
1624 oneEntry += "\""; 1607 oneEntry += "\"";
1625 oneEntry += i->text(0); 1608 oneEntry += i->text(0);
1626 oneEntry += "\";"; 1609 oneEntry += "\";";
1627 oneEntry += "\""; 1610 oneEntry += "\"";
1628 oneEntry += si->text(0); 1611 oneEntry += si->text(0);
1629 oneEntry += "\";"; 1612 oneEntry += "\";";
1630 oneEntry += "\""; 1613 oneEntry += "\"";
1631 oneEntry += si->text(1); 1614 oneEntry += si->text(1);
1632 oneEntry += "\";"; 1615 oneEntry += "\";";
1633 oneEntry += "\""; 1616 oneEntry += "\"";
1634 oneEntry += si->text(2); 1617 oneEntry += si->text(2);
1635 oneEntry += "\";"; 1618 oneEntry += "\";";
1636 oneEntry += "\""; 1619 oneEntry += "\"";
1637 // oneEntry += si->text(3); 1620 // oneEntry += si->text(3);
1638 QString comment = si->text(3); 1621 QString comment = si->text(3);
1639 comment.replace (QRegExp("\n"), "<br>"); 1622 comment.replace (QRegExp("\n"), "<br>");
1640 oneEntry += comment; 1623 oneEntry += comment;
1641 oneEntry += "\""; 1624 oneEntry += "\"";
1642 // qWarning (oneEntry); 1625 // qWarning (oneEntry);
1643 t << oneEntry << endl; 1626 t << oneEntry << endl;
1644 1627
1645 // qWarning (si->text(0)); 1628 // qWarning (si->text(0));
1646 } 1629 }
1647 } 1630 }
1648 f.close(); 1631 f.close();
1649} 1632}
1650 1633
1651void ZSafe::readAllEntries() 1634void ZSafe::readAllEntries()
1652{ 1635{
1653 QString fn = filename + ".txt"; 1636 QString fn = filename + ".txt";
1654 QFile f( fn ); 1637 QFile f( fn );
1655 if ( !f.open( IO_ReadOnly ) ) 1638 if ( !f.open( IO_ReadOnly ) )
1656 { 1639 {
1657 qWarning( QString("Could not read file %1").arg(fn), 1640 qWarning( QString("Could not read file %1").arg(fn),
1658 2000 ); 1641 2000 );
1659 QMessageBox::critical( 0, tr("ZSafe"), 1642 QMessageBox::critical( 0, tr("ZSafe"),
1660 tr("Could not import text file.") ); 1643 tr("Could not import text file.") );
1661 return; 1644 return;
1662 } 1645 }
1663 1646
1664 modified = true; 1647 modified = true;
1665 1648
1666 // clear the password list 1649 // clear the password list
1667 selectedItem = NULL; 1650 selectedItem = NULL;
1668 QListViewItem *i; 1651 QListViewItem *i;
1669 // step through all categories 1652 // step through all categories
1670 for (i = ListView->firstChild(); 1653 for (i = ListView->firstChild();
1671 i != NULL; 1654 i != NULL;
1672 i = i->nextSibling()) 1655 i = i->nextSibling())
1673 { 1656 {
1674 // step through all subitems 1657 // step through all subitems
1675 QListViewItem *si; 1658 QListViewItem *si;
1676 for (si = i->firstChild(); 1659 for (si = i->firstChild();
1677 si != NULL; ) 1660 si != NULL; )
1678 // si = si->nextSibling()) 1661 // si = si->nextSibling())
1679 { 1662 {
1680 QListViewItem *_si = si; 1663 QListViewItem *_si = si;
1681 si = si->nextSibling(); 1664 si = si->nextSibling();
1682 i->takeItem(_si); // remove from view list 1665 i->takeItem(_si); // remove from view list
1683 if (_si) delete _si; 1666 if (_si) delete _si;
1684 } 1667 }
1685 } 1668 }
1686 1669
1687 qWarning ("ReadAllEntries(): "); 1670 qWarning ("ReadAllEntries(): ");
1688 1671
1689 QTextStream t(&f); 1672 QTextStream t(&f);
1690 while ( !t.eof() ) 1673 while ( !t.eof() )
1691 { 1674 {
1692 QString s = t.readLine(); 1675 QString s = t.readLine();
1693 s.replace (QRegExp("\";\""), "\"|\""); 1676 s.replace (QRegExp("\";\""), "\"|\"");
1694 // char buffer[1024]; 1677 // char buffer[1024];
1695 int len=s.length()+1; 1678 int len=s.length()+1;
1696#ifdef WIN32 1679#ifdef WIN32
1697 char buffer[512]; 1680 char buffer[512];
1698#else 1681#else
1699 char buffer[len]; 1682 char buffer[len];
1700#endif 1683#endif
1701 strcpy (buffer, s); 1684 strcpy (buffer, s);
1702 1685
1703 QString name; 1686 QString name;
1704 QString user; 1687 QString user;
1705 QString password; 1688 QString password;
1706 QString comment; 1689 QString comment;
1707 1690
1708 // separete the entries 1691 // separete the entries
1709 char *i = strtok (buffer, "|"); 1692 char *i = strtok (buffer, "|");
1710 QString category(&i[1]); 1693 QString category(&i[1]);
1711 category.truncate(category.length() -1); 1694 category.truncate(category.length() -1);
1712 1695
1713 int idx=0; 1696 int idx=0;
1714 while (i = strtok (NULL, "|")) 1697 while (i = strtok (NULL, "|"))
1715 { 1698 {
1716 switch (idx) 1699 switch (idx)
1717 { 1700 {
1718 case 0: 1701 case 0:
1719 name = &i[1]; 1702 name = &i[1];
1720 name.truncate(name.length() -1); 1703 name.truncate(name.length() -1);
1721 // name 1704 // name
1722 break; 1705 break;
1723 case 1: 1706 case 1:
1724 // user 1707 // user
1725 user = &i[1]; 1708 user = &i[1];
1726 user.truncate(user.length() -1); 1709 user.truncate(user.length() -1);
1727 break; 1710 break;
1728 case 2: 1711 case 2:
1729 // password 1712 // password
1730 password = &i[1]; 1713 password = &i[1];
1731 password.truncate(password.length() -1); 1714 password.truncate(password.length() -1);
1732 break; 1715 break;
1733 case 3: 1716 case 3:
1734 // comment 1717 // comment
1735 comment = &i[1]; 1718 comment = &i[1];
1736 comment.truncate(comment.length() -1); 1719 comment.truncate(comment.length() -1);
1737 break; 1720 break;
1738 } 1721 }
1739 idx++; 1722 idx++;
1740 } 1723 }
1741 1724
1742 Category *cat= categories.find (category); 1725 Category *cat= categories.find (category);
1743 if (cat) 1726 if (cat)
1744 { 1727 {
1745 // use the existend item 1728 // use the existend item
1746 QListViewItem *catItem = cat->getListItem(); 1729 QListViewItem *catItem = cat->getListItem();
1747 if (catItem) 1730 if (catItem)
1748 { 1731 {
1749 QListViewItem * item = new ShadedListItem( 0, catItem ); 1732 QListViewItem * item = new ShadedListItem( 0, catItem );
1750 item->setText( 0, tr( name ) ); 1733 item->setText( 0, tr( name ) );
1751 item->setText( 1, tr( user ) ); 1734 item->setText( 1, tr( user ) );
1752 item->setText( 2, tr( password ) ); 1735 item->setText( 2, tr( password ) );
1753 item->setText( 3, tr( comment ) ); 1736 item->setText( 3, tr( comment ) );
1754 1737
1755 catItem->setOpen( TRUE ); 1738 catItem->setOpen( TRUE );
1756 } 1739 }
1757 } 1740 }
1758 else 1741 else
1759 { 1742 {
1760 QListViewItem *catI = new ShadedListItem( 1, ListView ); 1743 QListViewItem *catI = new ShadedListItem( 1, ListView );
1761 // create and insert a new item 1744 // create and insert a new item
1762 QListViewItem * item = new ShadedListItem( 0, catI ); 1745 QListViewItem * item = new ShadedListItem( 0, catI );
1763 item->setText( 0, tr( name ) ); 1746 item->setText( 0, tr( name ) );
1764 item->setText( 1, tr( user ) ); 1747 item->setText( 1, tr( user ) );
1765 item->setText( 2, tr( password ) ); 1748 item->setText( 2, tr( password ) );
1766 item->setText( 3, tr( comment ) ); 1749 item->setText( 3, tr( comment ) );
1767 1750
1768 catI->setOpen( TRUE ); 1751 catI->setOpen( TRUE );
1769 1752
1770 Category *c1 = new Category(); 1753 Category *c1 = new Category();
1771 c1->setCategoryName(category); 1754 c1->setCategoryName(category);
1772 1755
1773 QString icon; 1756 QString icon;
1774 QString fullIconPath; 1757 QString fullIconPath;
1775 QPixmap *pix; 1758 QPixmap *pix;
1776// #ifndef WIN32 1759// #ifndef WIN32
1777 icon = conf->readEntry(APP_KEY+category); 1760 icon = conf->readEntry(APP_KEY+category);
1778// #endif 1761// #endif
1779 bool isIconAv = false; 1762 bool isIconAv = false;
1780 if (!icon.isEmpty() && !icon.isNull()) 1763 if (!icon.isEmpty() && !icon.isNull())
1781 { 1764 {
1782 // build the full path 1765 // build the full path
1783 fullIconPath = iconPath + icon; 1766 fullIconPath = iconPath + icon;
1784 pix = new QPixmap (fullIconPath); 1767 pix = new QPixmap (fullIconPath);
1785 if (pix) 1768 if (pix)
1786 { 1769 {
1787 QImage img = pix->convertToImage(); 1770 QImage img = pix->convertToImage();
1788 pix->convertFromImage(img.smoothScale(14,14)); 1771 pix->convertFromImage(img.smoothScale(14,14));
1789 c1->setIconName (icon); 1772 c1->setIconName (icon);
1790 c1->setIcon (*pix); 1773 c1->setIcon (*pix);
1791 isIconAv = true; 1774 isIconAv = true;
1792 } 1775 }
1793 } 1776 }
1794 if (!isIconAv) 1777 if (!isIconAv)
1795 { 1778 {
1796 c1->setIcon (*getPredefinedIcon(category)); 1779 c1->setIcon (*getPredefinedIcon(category));
1797 } 1780 }
1798 c1->setListItem (catI); 1781 c1->setListItem (catI);
1799 c1->initListItem(); 1782 c1->initListItem();
1800 categories.insert (c1->getCategoryName(), c1); 1783 categories.insert (c1->getCategoryName(), c1);
1801 } 1784 }
1802 1785
1803 } 1786 }
1804 f.close(); 1787 f.close();
1805 1788
1806} 1789}
1807#endif // UNUSED 1790#endif // UNUSED
1808 1791
1809void ZSafe::resume(int) 1792void ZSafe::resume(int)
1810{ 1793{
1811 qWarning ("Resume"); 1794 qWarning ("Resume");
1812 // hide the main window 1795 // hide the main window
1813 1796
1814 infoForm->hide(); 1797 infoForm->hide();
1815 // open zsafe again 1798 // open zsafe again
1816 m_password = ""; 1799 m_password = "";
1817 selectedItem = NULL; 1800 selectedItem = NULL;
1818 1801
1819 // clear the password list 1802 // clear the password list
1820 QListViewItem *i; 1803 QListViewItem *i;
1821 // step through all categories 1804 // step through all categories
1822 for (i = ListView->firstChild(); 1805 for (i = ListView->firstChild();
1823 i != NULL; 1806 i != NULL;
1824 i = i->nextSibling()) 1807 i = i->nextSibling())
1825 { 1808 {
1826 // step through all subitems 1809 // step through all subitems
1827 QListViewItem *si; 1810 QListViewItem *si;
1828 for (si = i->firstChild(); 1811 for (si = i->firstChild();
1829 si != NULL; ) 1812 si != NULL; )
1830 { 1813 {
1831 QListViewItem *_si = si; 1814 QListViewItem *_si = si;
1832 si = si->nextSibling(); 1815 si = si->nextSibling();
1833 i->takeItem(_si); // remove from view list 1816 i->takeItem(_si); // remove from view list
1834 if (_si) delete _si; 1817 if (_si) delete _si;
1835 } 1818 }
1836 } 1819 }
1837 1820
1838 // ask for password and read again 1821 // ask for password and read again
1839 openDocument(filename); 1822 openDocument(filename);
1840} 1823}
1841 1824
1842//--------------------------------------------- 1825//---------------------------------------------
1843 1826
1844 1827
1845bool ZSafe::openDocument(const char* _filename, const char* ) 1828bool ZSafe::openDocument(const char* _filename, const char* )
1846{ 1829{
1847 int retval; 1830 int retval;
1848 char* entry[FIELD_SIZE]; 1831 char* entry[FIELD_SIZE];
1849// #ifndef WIN32 1832// #ifndef WIN32
1850 int validationFlag = conf->readNumEntry(APP_KEY+"valzsafe", 1); 1833 int validationFlag = conf->readNumEntry(APP_KEY+"valzsafe", 1);
1851// #else 1834// #else
1852 // int validationFlag = 1; 1835 // int validationFlag = 1;
1853// #endif 1836// #endif
1854 1837
1855 int pwdOk = 0; 1838 int pwdOk = 0;
1856 int numberOfTries = 3; 1839 int numberOfTries = 3;
1857 for (int i=0; i < numberOfTries; i++) 1840 for (int i=0; i < numberOfTries; i++)
1858 { 1841 {
1859 QFile f(_filename); 1842 QFile f(_filename);
1860 if (f.exists()) 1843 if (f.exists())
1861 { 1844 {
1862 // ask with a dialog for the password 1845 // ask with a dialog for the password
1863 if (m_password.isEmpty()) 1846 if (m_password.isEmpty())
1864 getDocPassword(tr("Enter Password")); 1847 getDocPassword(tr("Enter Password"));
1865 if (m_password.isEmpty() && validationFlag == 0) 1848 if (m_password.isEmpty() && validationFlag == 0)
1866 { 1849 {
1867 qWarning ("Wrong password"); 1850 qWarning ("Wrong password");
1868 QMessageBox::critical( 0, tr("ZSafe"), 1851 QMessageBox::critical( 0, tr("ZSafe"),
1869 tr("Wrong password.\n\nZSafe will now exit.") ); 1852 tr("Wrong password.\n\nZSafe will now exit.") );
1870 exitZs (1); 1853 exitZs (1);
1871 } 1854 }
1872 1855
1873 retval = loadInit(_filename, m_password); 1856 retval = loadInit(_filename, m_password);
1874 if (retval != PWERR_GOOD) 1857 if (retval != PWERR_GOOD)
1875 { 1858 {
1876 qWarning ("Error loading Document"); 1859 qWarning ("Error loading Document");
1877 return false; 1860 return false;
1878 } 1861 }
1879 } 1862 }
1880 else 1863 else
1881 { 1864 {
1882#ifdef WIN32 1865#ifdef WIN32
1883 this->setCaption("Qt ZSafe"); 1866 this->setCaption("Qt ZSafe");
1884#else 1867#else
1885 this->setCaption("ZSafe"); 1868 this->setCaption("ZSafe");
1886#endif 1869#endif
1887 filename = ""; 1870 filename = "";
1888 return false; 1871 return false;
1889 } 1872 }
1890 1873
1891 1874
1892 // load the validation entry 1875 // load the validation entry
1893 if (validationFlag == 0) 1876 if (validationFlag == 0)
1894 { 1877 {
1895 pwdOk = 1; 1878 pwdOk = 1;
1896 break; 1879 break;
1897 } 1880 }
1898 1881
1899 retval = loadEntry(entry); 1882 retval = loadEntry(entry);
1900 if (retval == 1 && 1883 if (retval == 1 &&
1901 !strcmp (entry[0], "ZSAFECATEGORY") && 1884 !strcmp (entry[0], "ZSAFECATEGORY") &&
1902 !strcmp (entry[1], "name") && 1885 !strcmp (entry[1], "name") &&
1903 !strcmp (entry[2], "username") && 1886 !strcmp (entry[2], "username") &&
1904 !strcmp (entry[3], "password") && 1887 !strcmp (entry[3], "password") &&
1905 !strcmp (entry[4], "comment") ) 1888 !strcmp (entry[4], "comment") )
1906 { 1889 {
1907 for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]); 1890 for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]);
1908 pwdOk = 1; 1891 pwdOk = 1;
1909 break; 1892 break;
1910 } 1893 }
1911 else 1894 else
1912 // for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]); 1895 // for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]);
1913 fclose (fd); 1896 fclose (fd);
1914 m_password = ""; 1897 m_password = "";
1915 1898
1916 if (i < numberOfTries - 1) 1899 if (i < numberOfTries - 1)
1917 { 1900 {
1918 switch( QMessageBox::warning( this, tr("ZSafe"), 1901 switch( QMessageBox::warning( this, tr("ZSafe"),
1919 tr("Wrong password.\nEnter again?"), 1902 tr("Wrong password.\nEnter again?"),
1920 tr("&Yes"), tr("&No."), 1903 tr("&Yes"), tr("&No."),
1921 0 1904 0
1922 ) ) 1905 ) )
1923 { 1906 {
1924 case 1: // No 1907 case 1: // No
1925 exitZs (1); 1908 exitZs (1);
1926 break; 1909 break;
1927 case 0: // Yes 1910 case 0: // Yes
1928 continue; 1911 continue;
1929 } 1912 }
1930 } 1913 }
1931 } 1914 }
1932 if (pwdOk == 0) 1915 if (pwdOk == 0)
1933 { 1916 {
1934 // unset the document entry 1917 // unset the document entry
1935 conf->writeEntry(APP_KEY+"document", "INVALIDPWD"); 1918 conf->writeEntry(APP_KEY+"document", "INVALIDPWD");
1936 if (conf) 1919 if (conf)
1937 delete conf; 1920 delete conf;
1938 1921
1939 exitZs (1); 1922 exitZs (1);
1940 } 1923 }
1941 1924
1942 1925
1943 retval = loadEntry(entry); 1926 retval = loadEntry(entry);
1944 1927
1945 int numberOfEntries=0; 1928 int numberOfEntries=0;
1946 while (retval == 1) { 1929 while (retval == 1) {
1947 1930
1948 QString category( QString::fromUtf8(entry[0]) ); 1931 QString category( QString::fromUtf8(entry[0]) );
1949 QString name( QString::fromUtf8(entry[1]) ); 1932 QString name( QString::fromUtf8(entry[1]) );
1950 QString user( QString::fromUtf8(entry[2]) ); 1933 QString user( QString::fromUtf8(entry[2]) );
1951 QString password( QString::fromUtf8(entry[3]) ); 1934 QString password( QString::fromUtf8(entry[3]) );
1952 QString comment( QString::fromUtf8(entry[4]) ); 1935 QString comment( QString::fromUtf8(entry[4]) );
1953 QString field5( QString::fromUtf8(entry[5]) ); 1936 QString field5( QString::fromUtf8(entry[5]) );
1954 QString field6( QString::fromUtf8(entry[6]) ); 1937 QString field6( QString::fromUtf8(entry[6]) );
1955 // add the subitems to the categories 1938 // add the subitems to the categories
1956 1939
1957 Category *cat= categories.find (category); 1940 Category *cat= categories.find (category);
1958 if (cat) 1941 if (cat)
1959 { 1942 {
1960 // use the existend item 1943 // use the existend item
1961 QListViewItem *catItem = cat->getListItem(); 1944 QListViewItem *catItem = cat->getListItem();
1962 if (catItem) 1945 if (catItem)
1963 { 1946 {
1964 QListViewItem * item = new ShadedListItem( 0, catItem ); 1947 QListViewItem * item = new ShadedListItem( 0, catItem );
1965 item->setText( 0, tr( name ) ); 1948 item->setText( 0, tr( name ) );
1966 item->setText( 1, tr( user ) ); 1949 item->setText( 1, tr( user ) );
1967 item->setText( 2, tr( password ) ); 1950 item->setText( 2, tr( password ) );
1968 item->setText( 3, tr( comment ) ); 1951 item->setText( 3, tr( comment ) );
1969 item->setText( 4, tr( field5 ) ); 1952 item->setText( 4, tr( field5 ) );
1970 item->setText( 5, tr( field6 ) ); 1953 item->setText( 5, tr( field6 ) );
1971 1954
1972 if (expandTree) 1955 if (expandTree)
1973 catItem->setOpen( TRUE ); 1956 catItem->setOpen( TRUE );
1974 numberOfEntries++; 1957 numberOfEntries++;
1975 } 1958 }
1976 } 1959 }
1977 else 1960 else
1978 { 1961 {
1979 QListViewItem *catI = new ShadedListItem( 1, ListView ); 1962 QListViewItem *catI = new ShadedListItem( 1, ListView );
1980 // create and insert a new item 1963 // create and insert a new item
1981 QListViewItem * item = new ShadedListItem( 0, catI ); 1964 QListViewItem * item = new ShadedListItem( 0, catI );
1982 1965
1983 item->setText( 0, tr( name ) ); 1966 item->setText( 0, tr( name ) );
1984 item->setText( 1, tr( user ) ); 1967 item->setText( 1, tr( user ) );
1985 item->setText( 2, tr( password ) ); 1968 item->setText( 2, tr( password ) );
1986 item->setText( 3, tr( comment ) ); 1969 item->setText( 3, tr( comment ) );
1987 item->setText( 4, tr( field5 ) ); 1970 item->setText( 4, tr( field5 ) );
1988 item->setText( 5, tr( field6 ) ); 1971 item->setText( 5, tr( field6 ) );
1989 1972
1990 if (expandTree) 1973 if (expandTree)
1991 catI->setOpen( TRUE ); 1974 catI->setOpen( TRUE );
1992 1975
1993 Category *c1 = new Category(); 1976 Category *c1 = new Category();
1994 c1->setCategoryName(category); 1977 c1->setCategoryName(category);
1995 1978
1996 QString icon; 1979 QString icon;
1997 QString fullIconPath; 1980 QString fullIconPath;
1998 QPixmap *pix; 1981 QPixmap *pix;
1999// #ifndef WIN32 1982// #ifndef WIN32
2000 icon = conf->readEntry(APP_KEY+category); 1983 icon = conf->readEntry(APP_KEY+category);
2001// #endif 1984// #endif
2002 bool isIconAv = false; 1985 bool isIconAv = false;
2003 if (!icon.isEmpty() && !icon.isNull()) 1986 if (!icon.isEmpty() && !icon.isNull())
2004 { 1987 {
2005 // build the full path 1988 // build the full path
2006 fullIconPath = iconPath + icon; 1989 fullIconPath = iconPath + icon;
2007 pix = new QPixmap (fullIconPath); 1990 pix = new QPixmap (fullIconPath);
2008 if (pix) 1991 if (pix)
2009 { 1992 {
2010 QImage img = pix->convertToImage(); 1993 QImage img = pix->convertToImage();
2011 pix->convertFromImage(img.smoothScale(14,14)); 1994 pix->convertFromImage(img.smoothScale(14,14));
2012 c1->setIconName (icon); 1995 c1->setIconName (icon);
2013 c1->setIcon (*pix); 1996 c1->setIcon (*pix);
2014 isIconAv = true; 1997 isIconAv = true;
2015 } 1998 }
2016 } 1999 }
2017 if (!isIconAv) 2000 if (!isIconAv)
2018 { 2001 {
2019 c1->setIcon (*getPredefinedIcon(category)); 2002 c1->setIcon (*getPredefinedIcon(category));
2020 } 2003 }
2021 2004
2022 c1->setListItem (catI); 2005 c1->setListItem (catI);
2023 c1->initListItem(); 2006 c1->initListItem();
2024 categories.insert (c1->getCategoryName(), c1); 2007 categories.insert (c1->getCategoryName(), c1);
2025 numberOfEntries++; 2008 numberOfEntries++;
2026 } 2009 }
2027 2010
2028 for (int count = 0; count < FIELD_SIZE; count++) { 2011 for (int count = 0; count < FIELD_SIZE; count++) {
2029 free(entry[count]); 2012 free(entry[count]);
2030 } 2013 }
2031 retval = loadEntry(entry); 2014 retval = loadEntry(entry);
2032 if (retval == 2) { 2015 if (retval == 2) {
2033 // m_parent->slotStatusHelpMsg("Last entry loaded"); 2016 // m_parent->slotStatusHelpMsg("Last entry loaded");
2034 } 2017 }
2035 } // end while 2018 } // end while
2036 2019
2037 if (numberOfEntries == 0) 2020 if (numberOfEntries == 0)
2038 { 2021 {
2039 2022
2040 switch( QMessageBox::warning( this, tr("ZSafe"), 2023 switch( QMessageBox::warning( this, tr("ZSafe"),
2041 tr("Empty document or\nwrong password.\nContinue?"), 2024 tr("Empty document or\nwrong password.\nContinue?"),
2042 tr("&No"), tr("&Yes."), 2025 tr("&No"), tr("&Yes."),
2043 0 2026 0
2044 ) ) { 2027 ) ) {
2045 case 0: // No 2028 case 0: // No
2046 retval = loadFinalize(); 2029 retval = loadFinalize();
2047 exitZs (1); 2030 exitZs (1);
2048 break; 2031 break;
2049 case 1: // Yes 2032 case 1: // Yes
2050 break; 2033 break;
2051 } 2034 }
2052 } 2035 }
2053 2036
2054 retval = loadFinalize(); 2037 retval = loadFinalize();
2055 2038
2056 return true; 2039 return true;
2057} 2040}
2058 2041
2059int ZSafe::loadInit(const char* _filename, const char *password) 2042int ZSafe::loadInit(const char* _filename, const char *password)
2060{ 2043{
2061 unsigned int j = 0; 2044 unsigned int j = 0;
2062 unsigned int keylength=0; 2045 unsigned int keylength=0;
2063 int count=0, count2=0, count3=0; 2046 int count=0, count2=0, count3=0;
2064 unsigned char charbuf[8]; 2047 unsigned char charbuf[8];
2065 unsigned short ciphertext[4]; 2048 unsigned short ciphertext[4];
2066 char key[128]; 2049 char key[128];
2067 Krc2* krc2 = new Krc2(); 2050 Krc2* krc2 = new Krc2();
2068 2051
2069 fd = fopen (_filename, "rb"); 2052 fd = fopen (_filename, "rb");
2070 2053
2071 QFileInfo f (_filename); 2054 QFileInfo f (_filename);
2072 load_buffer_length = f.size(); 2055 load_buffer_length = f.size();
2073 load_buffer_length = ((load_buffer_length / 1024)+1) * 1024 * 2; 2056 load_buffer_length = ((load_buffer_length / 1024)+1) * 1024 * 2;
2074 2057
2075 if (fd == NULL) 2058 if (fd == NULL)
2076 return PWERR_OPEN; 2059 return PWERR_OPEN;
2077 2060
2078 buffer = (char *)malloc(load_buffer_length); 2061 buffer = (char *)malloc(load_buffer_length);
2079 for (j = 0; password[j] != '\0'; j++) { 2062 for (j = 0; password[j] != '\0'; j++) {
2080 key[j] = password[j]; 2063 key[j] = password[j];
2081 } 2064 }
2082 keylength = j; 2065 keylength = j;
2083 krc2->rc2_expandkey (key, keylength, 128); 2066 krc2->rc2_expandkey (key, keylength, 128);
2084 2067
2085#ifndef WIN32 2068#ifndef WIN32
2086 size = read(fileno (fd), (unsigned char *) (charbuf + count), 8); 2069 size = read(fileno (fd), (unsigned char *) (charbuf + count), 8);
2087#else 2070#else
2088 printf ("LoadInit() read1"); 2071 printf ("LoadInit() read1");
2089 size = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd); 2072 size = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd);
2090#endif 2073#endif
2091 2074
2092 if (size < 8) 2075 if (size < 8)
2093 return PWERR_DATA; 2076 return PWERR_DATA;
2094 2077
2095 for (count = 0; count < 4; count++) { 2078 for (count = 0; count < 4; count++) {
2096 count2 = count << 1; 2079 count2 = count << 1;
2097 iv[count] = charbuf[count2] << 8; 2080 iv[count] = charbuf[count2] << 8;
2098 iv[count] += charbuf[count2 + 1]; 2081 iv[count] += charbuf[count2 + 1];
2099 } 2082 }
2100 2083
2101 size = 0; 2084 size = 0;
2102 bufferIndex = 0; 2085 bufferIndex = 0;
2103#ifndef WIN32 2086#ifndef WIN32
2104 while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) { 2087 while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) {
2105 while (count < 8) { 2088 while (count < 8) {
2106 count2 = read (fileno (fd), (unsigned char *) (charbuf + count), 8); 2089 count2 = read (fileno (fd), (unsigned char *) (charbuf + count), 8);
2107#else 2090#else
2108 printf ("LoadInit() read2"); 2091 printf ("LoadInit() read2");
2109 while ((count = fread ((unsigned char *) (charbuf), sizeof(unsigned char), 8, fd)) > 0) { 2092 while ((count = fread ((unsigned char *) (charbuf), sizeof(unsigned char), 8, fd)) > 0) {
2110 while (count < 8) { 2093 while (count < 8) {
2111 count2 = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd); 2094 count2 = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd);
2112#endif 2095#endif
2113 if (count2 == 0) { 2096 if (count2 == 0) {
2114 return PWERR_DATA; 2097 return PWERR_DATA;
2115 } 2098 }
2116 count += count2; 2099 count += count2;
2117 } /* while (count < 8) */ 2100 } /* while (count < 8) */
2118 2101
2119 size += 8; 2102 size += 8;
2120 for (count2 = 0; count2 < 8; count2 += 2) { 2103 for (count2 = 0; count2 < 8; count2 += 2) {
2121 count3 = count2 >> 1; 2104 count3 = count2 >> 1;
2122 ciphertext[count3] = charbuf[count2] << 8; 2105 ciphertext[count3] = charbuf[count2] << 8;
2123 ciphertext[count3] += charbuf[count2 + 1]; 2106 ciphertext[count3] += charbuf[count2 + 1];
2124 2107
2125 plaintext[count3] = ciphertext[count3] ^ iv[count3]; 2108 plaintext[count3] = ciphertext[count3] ^ iv[count3];
2126 iv[count3] = plaintext[count3]; 2109 iv[count3] = plaintext[count3];
2127 } /* for (count2) */ 2110 } /* for (count2) */
2128 2111
2129 krc2->rc2_decrypt (plaintext); 2112 krc2->rc2_decrypt (plaintext);
2130 memcpy ((unsigned char *) (buffer + bufferIndex), plaintext, 8); 2113 memcpy ((unsigned char *) (buffer + bufferIndex), plaintext, 8);
2131 bufferIndex += 8; 2114 bufferIndex += 8;
2132 buffer[bufferIndex + 1] = '\0'; 2115 buffer[bufferIndex + 1] = '\0';
2133 } /* while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) */ 2116 } /* while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) */
2134 size -= buffer[size - 1]; 2117 size -= buffer[size - 1];
2135 lastcount = 0; 2118 lastcount = 0;
2136 2119
2137 /* This will point to the starting index */ 2120 /* This will point to the starting index */
2138 bufferIndex = 0; 2121 bufferIndex = 0;
2139 return PWERR_GOOD; 2122 return PWERR_GOOD;
2140} 2123}
2141 2124
2142int ZSafe::loadEntry(char *entry[FIELD_SIZE]) 2125int ZSafe::loadEntry(char *entry[FIELD_SIZE])
2143{ 2126{
2144 /* Strip off PKCS 5 padding 2127 /* Strip off PKCS 5 padding
2145 * Should check to make sure it's good here 2128 * Should check to make sure it's good here
2146 */ 2129 */
2147 int count, count1=0; 2130 int count, count1=0;
2148 2131
2149 for (count = lastcount; count < size; count++) { 2132 for (count = lastcount; count < size; count++) {
2150 if ((unsigned char) (buffer[count]) == 255) { 2133 if ((unsigned char) (buffer[count]) == 255) {
2151 if (buffer[bufferIndex] == '\0') { 2134 if (buffer[bufferIndex] == '\0') {
2152 bufferIndex++; 2135 bufferIndex++;
2153 } 2136 }
2154 entry[count1] = (char *) malloc (count - bufferIndex + 1); 2137 entry[count1] = (char *) malloc (count - bufferIndex + 1);
2155 memcpy (entry[count1], (unsigned char *) (buffer + bufferIndex), count - bufferIndex); 2138 memcpy (entry[count1], (unsigned char *) (buffer + bufferIndex), count - bufferIndex);
2156 entry[count1][count - bufferIndex] = '\0'; 2139 entry[count1][count - bufferIndex] = '\0';
2157 count++; 2140 count++;
2158 bufferIndex = count; 2141 bufferIndex = count;
2159 count1++; 2142 count1++;
2160 if (count1 == FIELD_SIZE) { 2143 if (count1 == FIELD_SIZE) {
2161 lastcount = count; 2144 lastcount = count;
2162 return 1; 2145 return 1;
2163 } 2146 }
2164 } /* if ((unsigned char) (buffer[count]) == 255) */ 2147 } /* if ((unsigned char) (buffer[count]) == 255) */
2165 } /* for (count = 0; count < size; count++) */ 2148 } /* for (count = 0; count < size; count++) */
2166 2149
2167 return 2; 2150 return 2;
2168} 2151}
2169 2152
2170int ZSafe::loadFinalize(void) 2153int ZSafe::loadFinalize(void)
2171{ 2154{
2172 fclose (fd); 2155 fclose (fd);
2173 if (buffer) free(buffer); 2156 if (buffer) free(buffer);
2174 return PWERR_GOOD; 2157 return PWERR_GOOD;
2175} 2158}
2176 2159
2177bool ZSafe::saveDocument(const char* _filename, 2160bool ZSafe::saveDocument(const char* _filename,
2178 bool withPwd, 2161 bool withPwd,
2179 const char* ) 2162 const char* )
2180{ 2163{
2181 if (filename.isEmpty()) 2164 if (filename.isEmpty())
2182 { 2165 {
2183 QMessageBox::critical( 0, tr("ZSafe"), 2166 QMessageBox::critical( 0, tr("ZSafe"),
2184 tr("No document defined.\nYou have to create a new document")); 2167 tr("No document defined.\nYou have to create a new document"));
2185 return false; 2168 return false;
2186 } 2169 }
2187 2170
2188 // if (m_password.isEmpty()) 2171 // if (m_password.isEmpty())
2189 // withPwd = true; // the document must be saved with a valid password 2172 // withPwd = true; // the document must be saved with a valid password
2190 if (withPwd) 2173 if (withPwd)
2191 { 2174 {
2192 bool pwdOk = FALSE; 2175 bool pwdOk = FALSE;
2193 while (!pwdOk) 2176 while (!pwdOk)
2194 { 2177 {
2195 getDocPassword(tr("Enter Password")); 2178 getDocPassword(tr("Enter Password"));
2196 if (m_password.isEmpty()) 2179 if (m_password.isEmpty())
2197 { 2180 {
2198 2181
2199 QMessageBox::critical( 0, tr("ZSafe"), 2182 QMessageBox::critical( 0, tr("ZSafe"),
2200 tr("Password is empty.\nPlease enter again.")); 2183 tr("Password is empty.\nPlease enter again."));
2201 continue; 2184 continue;
2202 } 2185 }
2203 2186
2204 QString firstPasswd = m_password; 2187 QString firstPasswd = m_password;
2205 2188
2206 getDocPassword(tr("Reenter Password")); 2189 getDocPassword(tr("Reenter Password"));
2207 if (m_password.isEmpty()) 2190 if (m_password.isEmpty())
2208 { 2191 {
2209 QMessageBox::critical( 0, tr("ZSafe"), 2192 QMessageBox::critical( 0, tr("ZSafe"),
2210 tr("Password is empty.\nPlease enter again.")); 2193 tr("Password is empty.\nPlease enter again."));
2211 continue; 2194 continue;
2212 } 2195 }
2213 if (firstPasswd != m_password) 2196 if (firstPasswd != m_password)
2214 { 2197 {
2215 2198
2216 QMessageBox::critical( 0, tr("ZSafe"), 2199 QMessageBox::critical( 0, tr("ZSafe"),
2217 tr("Passwords must be identical.\nPlease enter again.")); 2200 tr("Passwords must be identical.\nPlease enter again."));
2218 continue; 2201 continue;
2219 } 2202 }
2220 pwdOk = TRUE; 2203 pwdOk = TRUE;
2221 modified = false; 2204 modified = false;
2222 } 2205 }
2223 } 2206 }
2224 else if (modified) 2207 else if (modified)
2225 { 2208 {
2226 QString fns(_filename); 2209 QString fns(_filename);
2227 fns = fns.right (fns.length() - fns.findRev ('/') - 1); 2210 fns = fns.right (fns.length() - fns.findRev ('/') - 1);
2228 switch( QMessageBox::information( this, tr("ZSafe"), 2211 switch( QMessageBox::information( this, tr("ZSafe"),
2229 tr("Do you want to save ") + fns + tr("\nbefore continuing?"), 2212 tr("Do you want to save ") + fns + tr("\nbefore continuing?"),
2230 tr("&Save"), 2213 tr("&Save"),
2231 tr("&Don't Save"), 2214 tr("&Don't Save"),
2232 0 // Enter == button 0 2215 0 // Enter == button 0
2233 ) ) 2216 ) )
2234 { // Escape == button 2 2217 { // Escape == button 2
2235 case 0: // Save clicked, Alt-S or Enter pressed. 2218 case 0: // Save clicked, Alt-S or Enter pressed.
2236 modified = false; 2219 modified = false;
2237 break; 2220 break;
2238 case 1: // Don't Save clicked or Alt-D pressed 2221 case 1: // Don't Save clicked or Alt-D pressed
2239 modified = false; 2222 modified = false;
2240 return true; 2223 return true;
2241 } 2224 }
2242 } 2225 }
2243 modified = false; 2226 modified = false;
2244 2227
2245 if (m_password.isEmpty()) 2228 if (m_password.isEmpty())
2246 return false; 2229 return false;
2247 2230
2248 int retval = saveInit(_filename, m_password); 2231 int retval = saveInit(_filename, m_password);
2249 // int retval = saveInit(_filename, "test"); 2232 // int retval = saveInit(_filename, "test");
2250 if (retval != PWERR_GOOD) { 2233 if (retval != PWERR_GOOD) {
2251 return false; 2234 return false;
2252 } 2235 }
2253 2236
2254 char* entry[FIELD_SIZE]; 2237 char* entry[FIELD_SIZE];
2255 2238
2256 // save the validation entry 2239 // save the validation entry
2257 { 2240 {
2258 int i=0; 2241 int i=0;
2259 entry[i] = (char*)malloc(strlen("ZSAFECATEGORY")+1); 2242 entry[i] = (char*)malloc(strlen("ZSAFECATEGORY")+1);
2260 strcpy(entry[i++], "ZSAFECATEGORY"); 2243 strcpy(entry[i++], "ZSAFECATEGORY");
2261 entry[i] = (char*)malloc(strlen("name")+1); 2244 entry[i] = (char*)malloc(strlen("name")+1);
2262 strcpy(entry[i++], "name"); 2245 strcpy(entry[i++], "name");
2263 entry[i] = (char*)malloc(strlen("username")+1); 2246 entry[i] = (char*)malloc(strlen("username")+1);
2264 strcpy(entry[i++], "username"); 2247 strcpy(entry[i++], "username");
2265 entry[i] = (char*)malloc(strlen("password")+1); 2248 entry[i] = (char*)malloc(strlen("password")+1);
2266 strcpy(entry[i++], "password"); 2249 strcpy(entry[i++], "password");
2267 entry[i] = (char*)malloc(strlen("comment")+1); 2250 entry[i] = (char*)malloc(strlen("comment")+1);
2268 strcpy(entry[i++], "comment"); 2251 strcpy(entry[i++], "comment");
2269 2252
2270 entry[i] = (char*)malloc(strlen("field5")+1); 2253 entry[i] = (char*)malloc(strlen("field5")+1);
2271 strcpy(entry[i++], "field5"); 2254 strcpy(entry[i++], "field5");
2272 entry[i] = (char*)malloc(strlen("field6")+1); 2255 entry[i] = (char*)malloc(strlen("field6")+1);
2273 strcpy(entry[i++], "field6"); 2256 strcpy(entry[i++], "field6");
2274 2257
2275 retval = saveEntry(entry); 2258 retval = saveEntry(entry);
2276 for (int z=0; z<i; z++) free(entry[z]); 2259 for (int z=0; z<i; z++) free(entry[z]);
2277 if (retval == PWERR_DATA) { 2260 if (retval == PWERR_DATA) {
2278 qWarning("1: Error writing file, contents not saved"); 2261 qWarning("1: Error writing file, contents not saved");
2279 saveFinalize(); 2262 saveFinalize();
2280 return false; 2263 return false;
2281 } 2264 }
2282// #ifndef WIN32 2265// #ifndef WIN32
2283 conf->writeEntry(APP_KEY+"valzsafe", 1); 2266 conf->writeEntry(APP_KEY+"valzsafe", 1);
2284// #endif 2267// #endif
2285 saveConf(); 2268 saveConf();
2286 } 2269 }
2287 2270
2288 QListViewItem *i; 2271 QListViewItem *i;
2289 // step through all categories 2272 // step through all categories
2290 for (i = ListView->firstChild(); 2273 for (i = ListView->firstChild();
2291 i != NULL; 2274 i != NULL;
2292 i = i->nextSibling()) 2275 i = i->nextSibling())
2293 { 2276 {
2294 // step through all subitems 2277 // step through all subitems
2295 QListViewItem *si; 2278 QListViewItem *si;
2296 for (si = i->firstChild(); 2279 for (si = i->firstChild();
2297 si != NULL; 2280 si != NULL;
2298 si = si->nextSibling()) 2281 si = si->nextSibling())
2299 { 2282 {
2300 int j=0; 2283 int j=0;
2301 entry[j] = (char*)malloc(strlen(i->text(0).utf8())+1); 2284 entry[j] = (char*)malloc(strlen(i->text(0).utf8())+1);
2302 strcpy(entry[j++], i->text(0).utf8()); 2285 strcpy(entry[j++], i->text(0).utf8());
2303 entry[j] = (char*)malloc(strlen(si->text(0).utf8())+1); 2286 entry[j] = (char*)malloc(strlen(si->text(0).utf8())+1);
2304 strcpy(entry[j++], si->text(0).utf8()); 2287 strcpy(entry[j++], si->text(0).utf8());
2305 entry[j] = (char*)malloc(strlen(si->text(1).utf8())+1); 2288 entry[j] = (char*)malloc(strlen(si->text(1).utf8())+1);
2306 strcpy(entry[j++], si->text(1).utf8()); 2289 strcpy(entry[j++], si->text(1).utf8());
2307 entry[j] = (char*)malloc(strlen(si->text(2).utf8())+1); 2290 entry[j] = (char*)malloc(strlen(si->text(2).utf8())+1);
2308 strcpy(entry[j++], si->text(2).utf8()); 2291 strcpy(entry[j++], si->text(2).utf8());
2309 entry[j] = (char*)malloc(strlen(si->text(3).utf8())+1); 2292 entry[j] = (char*)malloc(strlen(si->text(3).utf8())+1);
2310 strcpy(entry[j++], si->text(3).utf8()); 2293 strcpy(entry[j++], si->text(3).utf8());
2311 entry[j] = (char*)malloc(strlen(si->text(4).utf8())+1); 2294 entry[j] = (char*)malloc(strlen(si->text(4).utf8())+1);
2312 strcpy(entry[j++], si->text(4).utf8()); 2295 strcpy(entry[j++], si->text(4).utf8());
2313 entry[j] = (char*)malloc(strlen(si->text(5).utf8())+1); 2296 entry[j] = (char*)malloc(strlen(si->text(5).utf8())+1);
2314 strcpy(entry[j++], si->text(5).utf8()); 2297 strcpy(entry[j++], si->text(5).utf8());
2315 2298
2316 retval = saveEntry(entry); 2299 retval = saveEntry(entry);
2317 for (int z=0; z<j; z++) 2300 for (int z=0; z<j; z++)
2318 { 2301 {
2319 free(entry[z]); 2302 free(entry[z]);
2320 } 2303 }
2321 if (retval == PWERR_DATA) { 2304 if (retval == PWERR_DATA) {
2322 qWarning("1: Error writing file, contents not saved"); 2305 qWarning("1: Error writing file, contents not saved");
2323 saveFinalize(); 2306 saveFinalize();
2324 return false; 2307 return false;
2325 } 2308 }
2326 2309
2327 } 2310 }
2328 } 2311 }
2329 2312
2330 if (saveFinalize() == PWERR_DATA) { 2313 if (saveFinalize() == PWERR_DATA) {
2331 qWarning("2: Error writing file, contents not saved"); 2314 qWarning("2: Error writing file, contents not saved");
2332 return false; 2315 return false;
2333 } else { 2316 } else {
2334#ifndef DESKTOP 2317#ifndef DESKTOP
2335 Global::statusMessage (tr("Password file saved.")); 2318 Global::statusMessage (tr("Password file saved."));
2336#endif 2319#endif
2337 modified = false; 2320 modified = false;
2338 return true; 2321 return true;
2339 } 2322 }
2340} 2323}
2341 2324
2342PasswordForm *newPwdDialog; 2325PasswordForm *newPwdDialog;
2343bool newPwdDialogResult = false; 2326bool newPwdDialogResult = false;
2344void ZSafe::setPasswordDialogDone() 2327void ZSafe::setPasswordDialogDone()
2345{ 2328{
2346 newPwdDialogResult = true; 2329 newPwdDialogResult = true;
2347 newPwdDialog->close(); 2330 newPwdDialog->close();
2348} 2331}
2349 2332
2350void ZSafe::getDocPassword(QString title) 2333void ZSafe::getDocPassword(QString title)
2351{ 2334{
2352qWarning ("getDocPassword"); 2335qWarning ("getDocPassword");
2353 // open the 'Password' dialog 2336 // open the 'Password' dialog
2354 PasswordForm *dialog = new PasswordForm(this, title, TRUE); 2337 PasswordForm *dialog = new PasswordForm(this, title, TRUE);
2355 newPwdDialog = dialog; 2338 newPwdDialog = dialog;
2356 newPwdDialogResult = false; 2339 newPwdDialogResult = false;
2357 2340
2358 connect( dialog->PasswordField, SIGNAL( returnPressed() ), 2341 connect( dialog->PasswordField, SIGNAL( returnPressed() ),
2359 this, SLOT( setPasswordDialogDone() ) ); 2342 this, SLOT( setPasswordDialogDone() ) );
2360 2343
2361 // CS: !!! 2344 // CS: !!!
2362 // int pos = filename.findRev ('/'); 2345 // int pos = filename.findRev ('/');
2363 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 2346 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
2364#ifdef WIN32 2347#ifdef WIN32
2365 dialog->setCaption("Qt " + ti); 2348 dialog->setCaption("Qt " + ti);
2366#else 2349#else
2367 dialog->setCaption(ti); 2350 dialog->setCaption(ti);
2368#endif 2351#endif
2369 // dialog->setCaption(title); 2352 // dialog->setCaption(title);
2370 2353
2371 dialog->PasswordField->setFocus(); 2354 dialog->PasswordField->setFocus();
2372 DialogCode result = (DialogCode) dialog->exec(); 2355 DialogCode result = (DialogCode) dialog->exec();
2373#ifdef DESKTOP 2356#ifdef DESKTOP
2374 result = Accepted; 2357 result = Accepted;
2375#endif 2358#endif
2376 2359
2377 QString password; 2360 QString password;
2378 if (result == Accepted || newPwdDialogResult) 2361 if (result == Accepted || newPwdDialogResult)
2379 { 2362 {
2380 m_password = dialog->PasswordField->text(); 2363 m_password = dialog->PasswordField->text();
2381 } 2364 }
2382 else 2365 else
2383 { 2366 {
2384 exitZs (1); 2367 exitZs (1);
2385 } 2368 }
2386} 2369}
2387 2370
2388int ZSafe::saveInit(const char *_filename, const char *password) 2371int ZSafe::saveInit(const char *_filename, const char *password)
2389{ 2372{
2390 char key[128]; 2373 char key[128];
2391 unsigned int j = 0; 2374 unsigned int j = 0;
2392 unsigned int keylength; 2375 unsigned int keylength;
2393 // int val; 2376 // int val;
2394 int count2; 2377 int count2;
2395 Krc2* krc2 = new Krc2(); 2378 Krc2* krc2 = new Krc2();
2396 2379
2397 /* first we should check the permissions of the filename */ 2380 /* first we should check the permissions of the filename */
2398/* 2381/*
2399 if (QFile::exists(_filename)) { 2382 if (QFile::exists(_filename)) {
2400 val = checkFile(_filename); 2383 val = checkFile(_filename);
2401 if (val != PWERR_GOOD) 2384 if (val != PWERR_GOOD)
2402 return val; 2385 return val;
2403 } else 2386 } else
2404 { 2387 {
2405 val = creat (_filename, (S_IRUSR | S_IWUSR)); 2388 val = creat (_filename, (S_IRUSR | S_IWUSR));
2406 if (val == -1) 2389 if (val == -1)
2407 return PWERR_OPEN; 2390 return PWERR_OPEN;
2408 else 2391 else
2409 close(val); 2392 close(val);
2410 } 2393 }
2411*/ 2394*/
2412 QFileInfo f (_filename); 2395 QFileInfo f (_filename);
2413 save_buffer_length = f.size(); 2396 save_buffer_length = f.size();
2414 save_buffer_length = ((save_buffer_length / 1024)+1) * 1024; 2397 save_buffer_length = ((save_buffer_length / 1024)+1) * 1024;
2415 2398
2416 fd = fopen (_filename, "wb"); 2399 fd = fopen (_filename, "wb");
2417 if (fd == NULL) 2400 if (fd == NULL)
2418 return PWERR_OPEN; 2401 return PWERR_OPEN;
2419 2402
2420 buffer = (char*)malloc(save_buffer_length); 2403 buffer = (char*)malloc(save_buffer_length);
2421 2404
2422 /* make the key ready */ 2405 /* make the key ready */
2423 for (j = 0; password[j] != '\0'; j++) { 2406 for (j = 0; password[j] != '\0'; j++) {
2424 key[j] = password[j]; 2407 key[j] = password[j];
2425 } 2408 }
2426 keylength = j; 2409 keylength = j;
2427 krc2->rc2_expandkey (key, keylength, 128); 2410 krc2->rc2_expandkey (key, keylength, 128);
2428 2411
2429 /* First, we make the IV */ 2412 /* First, we make the IV */
2430 for (count2 = 0; count2 < 4; count2++) { 2413 for (count2 = 0; count2 < 4; count2++) {
2431 iv[count2] = rand (); 2414 iv[count2] = rand ();
2432 putc ((unsigned char) (iv[count2] >> 8), fd); 2415 putc ((unsigned char) (iv[count2] >> 8), fd);
2433 putc ((unsigned char) (iv[count2] & 0xff), fd); 2416 putc ((unsigned char) (iv[count2] & 0xff), fd);
2434 } 2417 }
2435 2418
2436 bufferIndex = 0; 2419 bufferIndex = 0;
2437 return PWERR_GOOD; 2420 return PWERR_GOOD;
2438} 2421}
2439 2422
2440 2423
2441int ZSafe::saveEntry(char *entry[FIELD_SIZE]) 2424int ZSafe::saveEntry(char *entry[FIELD_SIZE])
2442{ 2425{
2443 char *text1; 2426 char *text1;
2444 int count2, count3; 2427 int count2, count3;
2445 unsigned short ciphertext[4]; 2428 unsigned short ciphertext[4];
2446 Krc2* krc2 = new Krc2(); 2429 Krc2* krc2 = new Krc2();
2447 2430
2448 buffer = (char*)memset(buffer, '\0', save_buffer_length); 2431 buffer = (char*)memset(buffer, '\0', save_buffer_length);
2449 2432
2450 for (count2 = 0; count2 < FIELD_SIZE; count2++) { 2433 for (count2 = 0; count2 < FIELD_SIZE; count2++) {
2451 text1 = entry[count2]; 2434 text1 = entry[count2];
2452 if (strlen (text1) == 0) { 2435 if (strlen (text1) == 0) {
2453 strncat(buffer, " ", strlen(" ")); 2436 strncat(buffer, " ", strlen(" "));
2454 } else { 2437 } else {
2455 strncat(buffer, text1, strlen(text1)); 2438 strncat(buffer, text1, strlen(text1));
2456 } 2439 }
2457 /* Use 255 as the marker. \n is too tough to test for */ 2440 /* Use 255 as the marker. \n is too tough to test for */
2458 buffer[strlen (buffer)] = 255; 2441 buffer[strlen (buffer)] = 255;
2459 } /*for (count2 = 0; count2 < 5; count2++)*/ 2442 } /*for (count2 = 0; count2 < 5; count2++)*/
2460 count2 = 0; 2443 count2 = 0;
2461 /* I'm using CBC mode and encrypting the data straight from top down. 2444 /* I'm using CBC mode and encrypting the data straight from top down.
2462 * At the bottom, encrypted, I will append an MD5 hash of the file, eventually. 2445 * At the bottom, encrypted, I will append an MD5 hash of the file, eventually.
2463 * PKCS 5 padding (explained at the code section 2446 * PKCS 5 padding (explained at the code section
2464 */ 2447 */
2465 while (count2 < (int)strlen (buffer)) { 2448 while (count2 < (int)strlen (buffer)) {
2466#ifndef WORDS_BIGENDIAN 2449#ifndef WORDS_BIGENDIAN
2467 plaintext[bufferIndex] = buffer[count2 + 1] << 8; 2450 plaintext[bufferIndex] = buffer[count2 + 1] << 8;
2468 plaintext[bufferIndex] += buffer[count2] & 0xff; 2451 plaintext[bufferIndex] += buffer[count2] & 0xff;
2469#endif 2452#endif
2470#ifdef WORDS_BIGENDIAN 2453#ifdef WORDS_BIGENDIAN
2471 plaintext[bufferIndex] = buffer[count2] << 8; 2454 plaintext[bufferIndex] = buffer[count2] << 8;
2472 plaintext[bufferIndex] += buffer[count2 + 1] & 0xff; 2455 plaintext[bufferIndex] += buffer[count2 + 1] & 0xff;
2473#endif 2456#endif
2474 bufferIndex++; 2457 bufferIndex++;
2475 if (bufferIndex == 4) { 2458 if (bufferIndex == 4) {
2476 krc2->rc2_encrypt (plaintext); 2459 krc2->rc2_encrypt (plaintext);
2477 2460
2478 for (count3 = 0; count3 < 4; count3++) { 2461 for (count3 = 0; count3 < 4; count3++) {
2479 ciphertext[count3] = iv[count3] ^ plaintext[count3]; 2462 ciphertext[count3] = iv[count3] ^ plaintext[count3];
2480 2463
2481 /* Now store the ciphertext as the iv */ 2464 /* Now store the ciphertext as the iv */
2482 iv[count3] = plaintext[count3]; 2465 iv[count3] = plaintext[count3];
2483 2466
2484 /* reset the buffer index */ 2467 /* reset the buffer index */
2485 bufferIndex = 0; 2468 bufferIndex = 0;
2486 if (putc ((unsigned char) (ciphertext[count3] >> 8), fd) == EOF) return PWERR_DATA; 2469 if (putc ((unsigned char) (ciphertext[count3] >> 8), fd) == EOF) return PWERR_DATA;
2487 if (putc ((unsigned char) (ciphertext[count3] & 0xff), fd) == EOF) return PWERR_DATA; 2470 if (putc ((unsigned char) (ciphertext[count3] & 0xff), fd) == EOF) return PWERR_DATA;
2488 } /*for (count3 = 0; count3 < 5; count3++)*/ 2471 } /*for (count3 = 0; count3 < 5; count3++)*/
2489 } /*if (bufferIndex == 5)*/ 2472 } /*if (bufferIndex == 5)*/
2490 /* increment a short, not a byte */ 2473 /* increment a short, not a byte */
2491 count2 += 2; 2474 count2 += 2;
2492 } /*while (count2 < strlen (buffer))*/ 2475 } /*while (count2 < strlen (buffer))*/
2493 int ret = PWERR_GOOD; 2476 int ret = PWERR_GOOD;
2494 return ret; 2477 return ret;
2495} 2478}
2496 2479
2497int ZSafe::saveFinalize(void) 2480int ZSafe::saveFinalize(void)
2498{ 2481{
2499 int count1, retval = PWERR_GOOD; 2482 int count1, retval = PWERR_GOOD;
2500 unsigned short ciphertext[4]; 2483 unsigned short ciphertext[4];
2501 Krc2* krc2 = new Krc2(); 2484 Krc2* krc2 = new Krc2();
2502 2485
2503 /* Tack on the PKCS 5 padding 2486 /* Tack on the PKCS 5 padding
2504 * How it works is we fill up the last n bytes with the value n 2487 * How it works is we fill up the last n bytes with the value n
2505 * 2488 *
2506 * So, if we have, say, 13 bytes, 8 of which are used, we have 5 left 2489 * So, if we have, say, 13 bytes, 8 of which are used, we have 5 left
2507 * over, leaving us 3 short, so we fill it in with 3's. 2490 * over, leaving us 3 short, so we fill it in with 3's.
2508 * 2491 *
2509 * If we come out even, we fill it with 8 8s 2492 * If we come out even, we fill it with 8 8s
2510 * 2493 *
2511 * um, except that in this instance we are using 4 shorts instead of 8 bytes. 2494 * um, except that in this instance we are using 4 shorts instead of 8 bytes.
2512 * so, half everything 2495 * so, half everything
2513 */ 2496 */
2514 for (count1 = bufferIndex; count1 < 4; count1++) { 2497 for (count1 = bufferIndex; count1 < 4; count1++) {
2515 plaintext[count1] = (4 - bufferIndex); 2498 plaintext[count1] = (4 - bufferIndex);
2516 } 2499 }
2517 krc2->rc2_encrypt (plaintext); 2500 krc2->rc2_encrypt (plaintext);
2518 for (count1 = 0; count1 < 4; count1++) { 2501 for (count1 = 0; count1 < 4; count1++) {
2519 ciphertext[count1] = iv[count1] ^ plaintext[count1]; 2502 ciphertext[count1] = iv[count1] ^ plaintext[count1];
2520 if (putc ((unsigned char) (ciphertext[count1] >> 8), fd) == EOF) retval = PWERR_DATA; 2503 if (putc ((unsigned char) (ciphertext[count1] >> 8), fd) == EOF) retval = PWERR_DATA;
2521 if (putc ((unsigned char) (ciphertext[count1] & 0xff), fd) == EOF) retval = PWERR_DATA; 2504 if (putc ((unsigned char) (ciphertext[count1] & 0xff), fd) == EOF) retval = PWERR_DATA;
2522 } 2505 }
2523 2506
2524 fclose (fd); 2507 fclose (fd);
2525 free(buffer); 2508 free(buffer);
2526 return retval; 2509 return retval;
2527} 2510}
2528 2511
2529void ZSafe::quitMe () 2512void ZSafe::quitMe ()
2530{ 2513{
2531 qWarning ("QUIT..."); 2514 qWarning ("QUIT...");
2532 2515
2533 if (modified) 2516 if (modified)
2534 { 2517 {
2535 switch( QMessageBox::information( this, tr("ZSafe"), 2518 switch( QMessageBox::information( this, tr("ZSafe"),
2536 tr("Do you want to save\nbefore exiting?"), 2519 tr("Do you want to save\nbefore exiting?"),
2537 tr("&Save"), 2520 tr("&Save"),
2538 tr("S&ave with\nnew\npassword"), 2521 tr("S&ave with\nnew\npassword"),
2539 tr("&Don't Save"), 2522 tr("&Don't Save"),
2540 0 // Enter == button 0 2523 0 // Enter == button 0
2541 ) ) 2524 ) )
2542 { // Escape == button 2 2525 { // Escape == button 2
2543 case 0: // Save clicked, Alt-S or Enter pressed. 2526 case 0: // Save clicked, Alt-S or Enter pressed.
2544 // save 2527 // save
2545 modified = false; 2528 modified = false;
2546 saveDocument(filename, FALSE); 2529 saveDocument(filename, FALSE);
2547 exitZs (1); 2530 exitZs (1);
2548 break; 2531 break;
2549 case 1: // 2532 case 1: //
2550 // Save with new password 2533 // Save with new password
2551 modified = false; 2534 modified = false;
2552 saveDocument(filename, TRUE); 2535 saveDocument(filename, TRUE);
2553 exitZs (1); 2536 exitZs (1);
2554 break; 2537 break;
2555 case 2: // Don't Save clicked or Alt-D pressed 2538 case 2: // Don't Save clicked or Alt-D pressed
2556 // don't save but exitZs 2539 // don't save but exitZs
2557 exitZs (1); 2540 exitZs (1);
2558 break; 2541 break;
2559 } 2542 }
2560 } 2543 }
2561 exitZs (1); 2544 exitZs (1);
2562 2545
2563} 2546}
2564 2547
2565void ZSafe::categoryFieldActivated( const QString& category) 2548void ZSafe::categoryFieldActivated( const QString& category)
2566{ 2549{
2567 if (categoryDialog) 2550 if (categoryDialog)
2568 setCategoryDialogFields(categoryDialog, category); 2551 setCategoryDialogFields(categoryDialog, category);
2569} 2552}
2570 2553
2571void ZSafe::addCategory() 2554void ZSafe::addCategory()
2572{ 2555{
2573 if (filename.isEmpty()) 2556 if (filename.isEmpty())
2574 { 2557 {
2575 QMessageBox::critical( 0, tr("ZSafe"), 2558 QMessageBox::critical( 0, tr("ZSafe"),
2576 tr("No document defined.\nYou have to create a new document")); 2559 tr("No document defined.\nYou have to create a new document"));
2577 return; 2560 return;
2578 } 2561 }
2579 else 2562 else
2580 { 2563 {
2581 // open the 'Category' dialog 2564 // open the 'Category' dialog
2582 bool initIcons = false; 2565 bool initIcons = false;
2583 // open the 'Category' dialog 2566 // open the 'Category' dialog
2584 CategoryDialog *dialog; 2567 CategoryDialog *dialog;
2585 if (categoryDialog) 2568 if (categoryDialog)
2586 { 2569 {
2587 dialog = categoryDialog; 2570 dialog = categoryDialog;
2588 } 2571 }
2589 else 2572 else
2590 { 2573 {
2591 categoryDialog = new CategoryDialog(this, tr("Category"), TRUE); 2574 categoryDialog = new CategoryDialog(this, tr("Category"), TRUE);
2592#ifdef WIN32 2575#ifdef WIN32
2593 categoryDialog->setCaption ("Qt " + tr("Category")); 2576 categoryDialog->setCaption ("Qt " + tr("Category"));
2594#endif 2577#endif
2595 dialog = categoryDialog; 2578 dialog = categoryDialog;
2596 connect( dialog->CategoryField, 2579 connect( dialog->CategoryField,
2597 SIGNAL( activated ( const QString &)), 2580 SIGNAL( activated ( const QString &)),
2598 this, SLOT( categoryFieldActivated( const QString & ) ) ); 2581 this, SLOT( categoryFieldActivated( const QString & ) ) );
2599 initIcons = true; 2582 initIcons = true;
2600 } 2583 }
2601 2584
2602#ifdef DESKTOP 2585#ifdef DESKTOP
2603#ifndef WIN32 2586#ifndef WIN32
2604 QStringList list = conf->entryList( APP_KEY+"/fieldDefs" ); 2587 QStringList list = conf->entryList( APP_KEY+"/fieldDefs" );
2605#else 2588#else
2606 // read all categories from the config file and store 2589 // read all categories from the config file and store
2607 // into a list 2590 // into a list
2608 QFile f (cfgFile); 2591 QFile f (cfgFile);
2609 QStringList list; 2592 QStringList list;
2610 if ( f.open(IO_ReadOnly) ) { // file opened successfully 2593 if ( f.open(IO_ReadOnly) ) { // file opened successfully
2611 QTextStream t( &f ); // use a text stream 2594 QTextStream t( &f ); // use a text stream
2612 QString s; 2595 QString s;
2613 int n = 1; 2596 int n = 1;
2614 while ( !t.eof() ) { // until end of file... 2597 while ( !t.eof() ) { // until end of file...
2615 s = t.readLine(); // line of text excluding '\n' 2598 s = t.readLine(); // line of text excluding '\n'
2616 list.append(s); 2599 list.append(s);
2617 } 2600 }
2618 f.close(); 2601 f.close();
2619 } 2602 }
2620#endif 2603#endif
2621#else 2604#else
2622 // read all categories from the config file and store 2605 // read all categories from the config file and store
2623 // into a list 2606 // into a list
2624 QFile f (cfgFile); 2607 QFile f (cfgFile);
2625 QStringList list; 2608 QStringList list;
2626 if ( f.open(IO_ReadOnly) ) { // file opened successfully 2609 if ( f.open(IO_ReadOnly) ) { // file opened successfully
2627 QTextStream t( &f ); // use a text stream 2610 QTextStream t( &f ); // use a text stream
2628 QString s; 2611 QString s;
2629 while ( !t.eof() ) { // until end of file... 2612 while ( !t.eof() ) { // until end of file...
2630 s = t.readLine(); // line of text excluding '\n' 2613 s = t.readLine(); // line of text excluding '\n'
2631 list.append(s); 2614 list.append(s);
2632 } 2615 }
2633 f.close(); 2616 f.close();
2634 } 2617 }
2635#endif 2618#endif
2636 QStringList::Iterator it = list.begin(); 2619 QStringList::Iterator it = list.begin();
2637 QString categ; 2620 QString categ;
2638 QString firstCategory; 2621 QString firstCategory;
2639 dialog->CategoryField->clear(); // remove all items 2622 dialog->CategoryField->clear(); // remove all items
2640 while( it != list.end() ) 2623 while( it != list.end() )
2641 { 2624 {
2642 QString *cat = new QString (*it); 2625 QString *cat = new QString (*it);
2643 if (cat->contains("-field1", FALSE)) 2626 if (cat->contains("-field1", FALSE))
2644 { 2627 {
2645#ifdef DESKTOP 2628#ifdef DESKTOP
2646#ifndef WIN32 2629#ifndef WIN32
2647 categ = cat->section ("-field1", 0, 0); 2630 categ = cat->section ("-field1", 0, 0);
2648#else 2631#else
2649 int pos = cat->find ("-field1"); 2632 int pos = cat->find ("-field1");
2650 categ = cat->left (pos); 2633 categ = cat->left (pos);
2651#endif 2634#endif
2652#else 2635#else
2653 int pos = cat->find ("-field1"); 2636 int pos = cat->find ("-field1");
2654 cat->truncate(pos); 2637 cat->truncate(pos);
2655 categ = *cat; 2638 categ = *cat;
2656#endif 2639#endif
2657 if (!categ.isEmpty()) 2640 if (!categ.isEmpty())
2658 { 2641 {
2659 dialog->CategoryField->insertItem (categ, -1); 2642 dialog->CategoryField->insertItem (categ, -1);
2660 if (firstCategory.isEmpty()) 2643 if (firstCategory.isEmpty())
2661 firstCategory = categ; 2644 firstCategory = categ;
2662 } 2645 }
2663 } 2646 }
2664 ++it; 2647 ++it;
2665 } 2648 }
2666 2649
2667 2650
2668 if (firstCategory.isEmpty()) 2651 if (firstCategory.isEmpty())
2669 setCategoryDialogFields(dialog); 2652 setCategoryDialogFields(dialog);
2670 else 2653 else
2671 setCategoryDialogFields(dialog, firstCategory); 2654 setCategoryDialogFields(dialog, firstCategory);
2672 2655
2673 // CategoryDialog *dialog = new CategoryDialog(this, "Category", TRUE); 2656 // CategoryDialog *dialog = new CategoryDialog(this, "Category", TRUE);
2674 2657
2675 if (initIcons) 2658 if (initIcons)
2676 { 2659 {
2677 Wait waitDialog(this, tr("Wait dialog")); 2660 Wait waitDialog(this, tr("Wait dialog"));
2678 waitDialog.waitLabel->setText(tr("Gathering icons...")); 2661 waitDialog.waitLabel->setText(tr("Gathering icons..."));
2679 waitDialog.show(); 2662 waitDialog.show();
2680 qApp->processEvents(); 2663 qApp->processEvents();
2681 2664
2682#ifdef DESKTOP 2665#ifdef DESKTOP
2683 QDir d(iconPath); 2666 QDir d(iconPath);
2684#else 2667#else
2685 QDir d(QPEApplication::qpeDir() + "/pics/"); 2668 QDir d(QPEApplication::qpeDir() + "/pics/");
2686#endif 2669#endif
2687 d.setFilter( QDir::Files); 2670 d.setFilter( QDir::Files);
2688 2671
2689 const QFileInfoList *list = d.entryInfoList(); 2672 const QFileInfoList *list = d.entryInfoList();
2690 QFileInfoListIterator it( *list ); // create list iterator 2673 QFileInfoListIterator it( *list ); // create list iterator
2691 QFileInfo *fi; // pointer for traversing 2674 QFileInfo *fi; // pointer for traversing
2692 2675
2693 dialog->IconField->insertItem("predefined"); 2676 dialog->IconField->insertItem("predefined");
2694 while ( (fi=it.current()) ) { // for each file... 2677 while ( (fi=it.current()) ) { // for each file...
2695 QString fileName = fi->fileName(); 2678 QString fileName = fi->fileName();
2696 if(fileName.right(4) == ".png"){ 2679 if(fileName.right(4) == ".png"){
2697 fileName = fileName.mid(0,fileName.length()-4); 2680 fileName = fileName.mid(0,fileName.length()-4);
2698#ifdef DESKTOP 2681#ifdef DESKTOP
2699 QPixmap imageOfFile; 2682 QPixmap imageOfFile;
2700 imageOfFile.load(iconPath + fi->fileName()); 2683 imageOfFile.load(iconPath + fi->fileName());
2701#else 2684#else
2702 QPixmap imageOfFile(Resource::loadPixmap(fileName)); 2685 QPixmap imageOfFile(Resource::loadPixmap(fileName));
2703#endif 2686#endif
2704 QImage foo = imageOfFile.convertToImage(); 2687 QImage foo = imageOfFile.convertToImage();
2705 foo = foo.smoothScale(16,16); 2688 foo = foo.smoothScale(16,16);
2706 imageOfFile.convertFromImage(foo); 2689 imageOfFile.convertFromImage(foo);
2707 dialog->IconField->insertItem(imageOfFile,fileName); 2690 dialog->IconField->insertItem(imageOfFile,fileName);
2708 } 2691 }
2709 ++it; 2692 ++it;
2710 } 2693 }
2711 waitDialog.hide(); 2694 waitDialog.hide();
2712 } 2695 }
2713 2696
2714#ifndef WIN32 2697#ifndef WIN32
2715 dialog->show(); 2698 dialog->show();
2716#endif 2699#endif
2717#ifndef DESKTOP 2700#ifndef DESKTOP
2718 // dialog->move (20, 100); 2701 // dialog->move (20, 100);
2719#endif 2702#endif
2720 DialogCode result = (DialogCode) dialog->exec(); 2703 DialogCode result = (DialogCode) dialog->exec();
2721#ifdef DESKTOP 2704#ifdef DESKTOP
2722 result = Accepted; 2705 result = Accepted;
2723#endif 2706#endif
2724 2707
2725 QString category; 2708 QString category;
2726 QString icon; 2709 QString icon;
2727 QString fullIconPath; 2710 QString fullIconPath;
2728 QPixmap *pix; 2711 QPixmap *pix;
2729 if (result == Accepted) 2712 if (result == Accepted)
2730 { 2713 {
2731 modified = true; 2714 modified = true;
2732 category = dialog->CategoryField->currentText(); 2715 category = dialog->CategoryField->currentText();
2733 icon = dialog->IconField->currentText()+".png"; 2716 icon = dialog->IconField->currentText()+".png";
2734 2717
2735 qWarning (category); 2718 qWarning (category);
2736 2719
2737 QListViewItem *li = new ShadedListItem( 1, ListView ); 2720 QListViewItem *li = new ShadedListItem( 1, ListView );
2738 Category *c1 = new Category(); 2721 Category *c1 = new Category();
2739 c1->setCategoryName(category); 2722 c1->setCategoryName(category);
2740 2723
2741 // if (!icon.isEmpty() && !icon.isNull()) 2724 // if (!icon.isEmpty() && !icon.isNull())
2742 if (icon != "predefined.png") 2725 if (icon != "predefined.png")
2743 { 2726 {
2744 // build the full path 2727 // build the full path
2745 fullIconPath = iconPath + icon; 2728 fullIconPath = iconPath + icon;
2746 pix = new QPixmap (fullIconPath); 2729 pix = new QPixmap (fullIconPath);
2747 // pix->resize(14, 14); 2730 // pix->resize(14, 14);
2748 if (pix) 2731 if (pix)
2749 { 2732 {
2750 // save the full pixmap name into the config file 2733 // save the full pixmap name into the config file
2751// #ifndef WIN32 2734// #ifndef WIN32
2752 conf->writeEntry(APP_KEY+category, icon); 2735 conf->writeEntry(APP_KEY+category, icon);
2753// #endif 2736// #endif
2754 saveConf(); 2737 saveConf();
2755 QImage img = pix->convertToImage(); 2738 QImage img = pix->convertToImage();
2756 pix->convertFromImage(img.smoothScale(14,14)); 2739 pix->convertFromImage(img.smoothScale(14,14));
2757 c1->setIcon (*pix); 2740 c1->setIcon (*pix);
2758 c1->setIconName(icon); 2741 c1->setIconName(icon);
2759 } 2742 }
2760 else 2743 else
2761 { 2744 {
2762 QPixmap folder( ( const char** ) general_data ); 2745 QPixmap folder( ( const char** ) general_data );
2763 c1->setIcon (folder); 2746 c1->setIcon (folder);
2764 } 2747 }
2765 } 2748 }
2766 else 2749 else
2767 { 2750 {
2768 c1->setIcon (*getPredefinedIcon(category)); 2751 c1->setIcon (*getPredefinedIcon(category));
2769 } 2752 }
2770 2753
2771 c1->setListItem (li); 2754 c1->setListItem (li);
2772 c1->initListItem(); 2755 c1->initListItem();
2773 categories.insert (c1->getCategoryName(), c1); 2756 categories.insert (c1->getCategoryName(), c1);
2774 2757
2775 saveCategoryDialogFields(dialog); 2758 saveCategoryDialogFields(dialog);
2776 } 2759 }
2777 else 2760 else
2778 { 2761 {
2779 // delete dialog; 2762 // delete dialog;
2780 dialog->hide(); 2763 dialog->hide();
2781 return; 2764 return;
2782 } 2765 }
2783 2766
2784 } 2767 }
2785 2768
2786} 2769}
2787 2770
2788void ZSafe::delCategory() 2771void ZSafe::delCategory()
2789{ 2772{
2790 if (!selectedItem) 2773 if (!selectedItem)
2791 return; 2774 return;
2792 if (isCategory(selectedItem)) 2775 if (isCategory(selectedItem))
2793 { 2776 {
2794 switch( QMessageBox::information( this, tr("ZSafe"), 2777 switch( QMessageBox::information( this, tr("ZSafe"),
2795 tr("Do you want to delete?"), 2778 tr("Do you want to delete?"),
2796 tr("&Delete"), tr("D&on't Delete"), 2779 tr("&Delete"), tr("D&on't Delete"),
2797 0 // Enter == button 0 2780 0 // Enter == button 0
2798 ) ) { // Escape == button 2 2781 ) ) { // Escape == button 2
2799 case 0: // Delete clicked, Alt-S or Enter pressed. 2782 case 0: // Delete clicked, Alt-S or Enter pressed.
2800 // Delete from the category list 2783 // Delete from the category list
2801 modified = true; 2784 modified = true;
2802 categories.remove (selectedItem->text(0)); 2785 categories.remove (selectedItem->text(0));
2803// #ifndef WIN32 2786// #ifndef WIN32
2804 conf->removeEntry (selectedItem->text(0)); 2787 conf->removeEntry (selectedItem->text(0));
2805// #endif 2788// #endif
2806 saveConf(); 2789 saveConf();
2807 2790
2808 // Delete the selected item and all subitems 2791 // Delete the selected item and all subitems
2809 // step through all subitems 2792 // step through all subitems
2810 QListViewItem *si; 2793 QListViewItem *si;
2811 for (si = selectedItem->firstChild(); 2794 for (si = selectedItem->firstChild();
2812 si != NULL; ) 2795 si != NULL; )
2813 { 2796 {
2814 QListViewItem *_si = si; 2797 QListViewItem *_si = si;
2815 si = si->nextSibling(); 2798 si = si->nextSibling();
2816 selectedItem->takeItem(_si); // remove from view list 2799 selectedItem->takeItem(_si); // remove from view list
2817 if (_si) delete _si; 2800 if (_si) delete _si;
2818 } 2801 }
2819 ListView->takeItem(selectedItem); 2802 ListView->takeItem(selectedItem);
2820 delete selectedItem; 2803 delete selectedItem;
2821 2804
2822 selectedItem = NULL; 2805 selectedItem = NULL;
2823 break; 2806 break;
2824 case 1: // Don't delete 2807 case 1: // Don't delete
2825 break; 2808 break;
2826 } 2809 }
2827 2810
2828 } 2811 }
2829} 2812}
2830 2813
2831void ZSafe::setCategoryDialogFields(CategoryDialog *dialog) 2814void ZSafe::setCategoryDialogFields(CategoryDialog *dialog)
2832{ 2815{
2833 if (!dialog) 2816 if (!dialog)
2834 return; 2817 return;
2835 2818
2836 QString icon; 2819 QString icon;
2837 if (selectedItem) 2820 if (selectedItem)
2838 { 2821 {
2839 dialog->Field1->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 2822 dialog->Field1->setText(getFieldLabel (selectedItem, "1", tr("Name")));
2840 dialog->Field2->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 2823 dialog->Field2->setText(getFieldLabel (selectedItem, "2", tr("Username")));
2841 dialog->Field3->setText(getFieldLabel (selectedItem, "3", tr("Password"))); 2824 dialog->Field3->setText(getFieldLabel (selectedItem, "3", tr("Password")));
2842 dialog->Field4->setText(getFieldLabel (selectedItem, "4", tr("Comment"))); 2825 dialog->Field4->setText(getFieldLabel (selectedItem, "4", tr("Comment")));
2843 dialog->Field5->setText(getFieldLabel (selectedItem, "5", tr("Field 4"))); 2826 dialog->Field5->setText(getFieldLabel (selectedItem, "5", tr("Field 4")));
2844 dialog->Field6->setText(getFieldLabel (selectedItem, "6", tr("Field 5"))); 2827 dialog->Field6->setText(getFieldLabel (selectedItem, "6", tr("Field 5")));
2845 2828
2846 Category *cat= categories.find (selectedItem->text(0)); 2829 Category *cat= categories.find (selectedItem->text(0));
2847 if (cat) 2830 if (cat)
2848 { 2831 {
2849 icon = cat->getIconName(); 2832 icon = cat->getIconName();
2850 } 2833 }
2851 else 2834 else
2852 icon = conf->readEntry(APP_KEY+selectedItem->text(0)); 2835 icon = conf->readEntry(APP_KEY+selectedItem->text(0));
2853 } 2836 }
2854 else 2837 else
2855 { 2838 {
2856 dialog->Field1->setText(tr("Name")); 2839 dialog->Field1->setText(tr("Name"));
2857 dialog->Field2->setText(tr("Username")); 2840 dialog->Field2->setText(tr("Username"));
2858 dialog->Field3->setText(tr("Password")); 2841 dialog->Field3->setText(tr("Password"));
2859 dialog->Field4->setText(tr("Comment")); 2842 dialog->Field4->setText(tr("Comment"));
2860 dialog->Field5->setText(tr("Field 4")); 2843 dialog->Field5->setText(tr("Field 4"));
2861 dialog->Field6->setText(tr("Field 5")); 2844 dialog->Field6->setText(tr("Field 5"));
2862 } 2845 }
2863 2846
2864#ifdef DESKTOP 2847#ifdef DESKTOP
2865 QDir d(iconPath); 2848 QDir d(iconPath);
2866#else 2849#else
2867 QDir d(QPEApplication::qpeDir() + "/pics/"); 2850 QDir d(QPEApplication::qpeDir() + "/pics/");
2868#endif 2851#endif
2869 d.setFilter( QDir::Files); 2852 d.setFilter( QDir::Files);
2870 2853
2871 const QFileInfoList *list = d.entryInfoList(); 2854 const QFileInfoList *list = d.entryInfoList();
2872 int i=0; 2855 int i=0;
2873 QFileInfoListIterator it( *list ); // create list iterator 2856 QFileInfoListIterator it( *list ); // create list iterator
2874 QFileInfo *fi; // pointer for traversing 2857 QFileInfo *fi; // pointer for traversing
2875 if (icon.isEmpty() || icon.isNull()) 2858 if (icon.isEmpty() || icon.isNull())
2876 { 2859 {
2877 dialog->IconField->setCurrentItem(0); 2860 dialog->IconField->setCurrentItem(0);
2878 } 2861 }
2879 else 2862 else
2880 { 2863 {
2881 while ( (fi=it.current()) ) 2864 while ( (fi=it.current()) )
2882 { // for each file... 2865 { // for each file...
2883 QString fileName = fi->fileName(); 2866 QString fileName = fi->fileName();
2884 if(fileName.right(4) == ".png") 2867 if(fileName.right(4) == ".png")
2885 { 2868 {
2886 fileName = fileName.mid(0,fileName.length()-4); 2869 fileName = fileName.mid(0,fileName.length()-4);
2887 2870
2888 if(fileName+".png"==icon) 2871 if(fileName+".png"==icon)
2889 { 2872 {
2890 dialog->IconField->setCurrentItem(i+1); 2873 dialog->IconField->setCurrentItem(i+1);
2891 break; 2874 break;
2892 } 2875 }
2893 ++i; 2876 ++i;
2894 } 2877 }
2895 ++it; 2878 ++it;
2896 } 2879 }
2897 } 2880 }
2898} 2881}
2899 2882
2900void ZSafe::setCategoryDialogFields(CategoryDialog *dialog, QString category) 2883void ZSafe::setCategoryDialogFields(CategoryDialog *dialog, QString category)
2901{ 2884{
2902 if (!dialog) 2885 if (!dialog)
2903 return; 2886 return;
2904 2887
2905 dialog->Field1->setText(getFieldLabel (category, "1", tr("Name"))); 2888 dialog->Field1->setText(getFieldLabel (category, "1", tr("Name")));
2906 dialog->Field2->setText(getFieldLabel (category, "2", tr("Username"))); 2889 dialog->Field2->setText(getFieldLabel (category, "2", tr("Username")));
2907 dialog->Field3->setText(getFieldLabel (category, "3", tr("Password"))); 2890 dialog->Field3->setText(getFieldLabel (category, "3", tr("Password")));
2908 dialog->Field4->setText(getFieldLabel (category, "4", tr("Comment"))); 2891 dialog->Field4->setText(getFieldLabel (category, "4", tr("Comment")));
2909 dialog->Field5->setText(getFieldLabel (category, "5", tr("Field 4"))); 2892 dialog->Field5->setText(getFieldLabel (category, "5", tr("Field 4")));
2910 dialog->Field6->setText(getFieldLabel (category, "6", tr("Field 5"))); 2893 dialog->Field6->setText(getFieldLabel (category, "6", tr("Field 5")));
2911 2894
2912 QString icon; 2895 QString icon;
2913 Category *cat= categories.find (category); 2896 Category *cat= categories.find (category);
2914 if (cat) 2897 if (cat)
2915 { 2898 {
2916 icon = cat->getIconName(); 2899 icon = cat->getIconName();
2917 } 2900 }
2918 else 2901 else
2919 icon = conf->readEntry(APP_KEY+category); 2902 icon = conf->readEntry(APP_KEY+category);
2920 2903
2921#ifdef DESKTOP 2904#ifdef DESKTOP
2922 QDir d(iconPath); 2905 QDir d(iconPath);
2923#else 2906#else
2924 QDir d(QPEApplication::qpeDir() + "/pics/"); 2907 QDir d(QPEApplication::qpeDir() + "/pics/");
2925#endif 2908#endif
2926 d.setFilter( QDir::Files); 2909 d.setFilter( QDir::Files);
2927 2910
2928 const QFileInfoList *list = d.entryInfoList(); 2911 const QFileInfoList *list = d.entryInfoList();
2929 int i=0; 2912 int i=0;
2930 QFileInfoListIterator it( *list ); // create list iterator 2913 QFileInfoListIterator it( *list ); // create list iterator
2931 QFileInfo *fi; // pointer for traversing 2914 QFileInfo *fi; // pointer for traversing
2932 if (icon.isEmpty() || icon.isNull()) 2915 if (icon.isEmpty() || icon.isNull())
2933 { 2916 {
2934 dialog->IconField->setCurrentItem(0); 2917 dialog->IconField->setCurrentItem(0);
2935 } 2918 }
2936 else 2919 else
2937 { 2920 {
2938 while ( (fi=it.current()) ) 2921 while ( (fi=it.current()) )
2939 { // for each file... 2922 { // for each file...
2940 QString fileName = fi->fileName(); 2923 QString fileName = fi->fileName();
2941 if(fileName.right(4) == ".png") 2924 if(fileName.right(4) == ".png")
2942 { 2925 {
2943 fileName = fileName.mid(0,fileName.length()-4); 2926 fileName = fileName.mid(0,fileName.length()-4);
2944 2927
2945 if(fileName+".png"==icon) 2928 if(fileName+".png"==icon)
2946 { 2929 {
2947 dialog->IconField->setCurrentItem(i+1); 2930 dialog->IconField->setCurrentItem(i+1);
2948 break; 2931 break;
2949 } 2932 }
2950 ++i; 2933 ++i;
2951 } 2934 }
2952 ++it; 2935 ++it;
2953 } 2936 }
2954 } 2937 }
2955} 2938}
2956 2939
2957void ZSafe::saveCategoryDialogFields(CategoryDialog *dialog) 2940void ZSafe::saveCategoryDialogFields(CategoryDialog *dialog)
2958{ 2941{
2959 QString app_key = APP_KEY; 2942 QString app_key = APP_KEY;
2960#ifndef DESKTOP 2943#ifndef DESKTOP
2961 conf->setGroup ("fieldDefs"); 2944 conf->setGroup ("fieldDefs");
2962#else 2945#else
2963#ifndef WIN32 2946#ifndef WIN32
2964 app_key += "/fieldDefs/"; 2947 app_key += "/fieldDefs/";
2965#endif 2948#endif
2966#endif 2949#endif
2967 QString category = dialog->CategoryField->currentText(); 2950 QString category = dialog->CategoryField->currentText();
2968// #ifndef WIN32 2951// #ifndef WIN32
2969 conf->writeEntry(app_key+category+"-field1", dialog->Field1->text()); 2952 conf->writeEntry(app_key+category+"-field1", dialog->Field1->text());
2970 conf->writeEntry(app_key+category+"-field2", dialog->Field2->text()); 2953 conf->writeEntry(app_key+category+"-field2", dialog->Field2->text());
2971 conf->writeEntry(app_key+category+"-field3", dialog->Field3->text()); 2954 conf->writeEntry(app_key+category+"-field3", dialog->Field3->text());
2972 conf->writeEntry(app_key+category+"-field4", dialog->Field4->text()); 2955 conf->writeEntry(app_key+category+"-field4", dialog->Field4->text());
2973 conf->writeEntry(app_key+category+"-field5", dialog->Field5->text()); 2956 conf->writeEntry(app_key+category+"-field5", dialog->Field5->text());
2974 conf->writeEntry(app_key+category+"-field6", dialog->Field6->text()); 2957 conf->writeEntry(app_key+category+"-field6", dialog->Field6->text());
2975// #endif 2958// #endif
2976 saveConf(); 2959 saveConf();
2977#ifndef DESKTOP 2960#ifndef DESKTOP
2978 conf->setGroup ("zsafe"); 2961 conf->setGroup ("zsafe");
2979#endif 2962#endif
2980} 2963}
2981 2964
2982void ZSafe::editCategory() 2965void ZSafe::editCategory()
2983{ 2966{
2984 if (!selectedItem) 2967 if (!selectedItem)
2985 return; 2968 return;
2986 if (isCategory(selectedItem)) 2969 if (isCategory(selectedItem))
2987 { 2970 {
2988 QString category = selectedItem->text(0); 2971 QString category = selectedItem->text(0);
2989 bool initIcons = false; 2972 bool initIcons = false;
2990 // open the 'Category' dialog 2973 // open the 'Category' dialog
2991 CategoryDialog *dialog; 2974 CategoryDialog *dialog;
2992 if (categoryDialog) 2975 if (categoryDialog)
2993 { 2976 {
2994 dialog = categoryDialog; 2977 dialog = categoryDialog;
2995 } 2978 }
2996 else 2979 else
2997 { 2980 {
2998 categoryDialog = new CategoryDialog(this, tr("Category"), TRUE); 2981 categoryDialog = new CategoryDialog(this, tr("Category"), TRUE);
2999#ifdef WIN32 2982#ifdef WIN32
3000 categoryDialog->setCaption ("Qt " + tr("Category")); 2983 categoryDialog->setCaption ("Qt " + tr("Category"));
3001#endif 2984#endif
3002 dialog = categoryDialog; 2985 dialog = categoryDialog;
3003 connect( dialog->CategoryField, 2986 connect( dialog->CategoryField,
3004 SIGNAL( activated ( const QString &)), 2987 SIGNAL( activated ( const QString &)),
3005 this, SLOT( categoryFieldActivated( const QString & ) ) ); 2988 this, SLOT( categoryFieldActivated( const QString & ) ) );
3006 initIcons = true; 2989 initIcons = true;
3007 } 2990 }
3008 setCategoryDialogFields(dialog); 2991 setCategoryDialogFields(dialog);
3009 2992
3010#ifdef DESKTOP 2993#ifdef DESKTOP
3011#ifndef WIN32 2994#ifndef WIN32
3012 QStringList list = conf->entryList( APP_KEY+"/fieldDefs" ); 2995 QStringList list = conf->entryList( APP_KEY+"/fieldDefs" );
3013#else 2996#else
3014 // read all categories from the config file and store 2997 // read all categories from the config file and store
3015 // into a list 2998 // into a list
3016 QFile f (cfgFile); 2999 QFile f (cfgFile);
3017 QStringList list; 3000 QStringList list;
3018 if ( f.open(IO_ReadOnly) ) { // file opened successfully 3001 if ( f.open(IO_ReadOnly) ) { // file opened successfully
3019 QTextStream t( &f ); // use a text stream 3002 QTextStream t( &f ); // use a text stream
3020 QString s; 3003 QString s;
3021 int n = 1; 3004 int n = 1;
3022 while ( !t.eof() ) { // until end of file... 3005 while ( !t.eof() ) { // until end of file...
3023 s = t.readLine(); // line of text excluding '\n' 3006 s = t.readLine(); // line of text excluding '\n'
3024 list.append(s); 3007 list.append(s);
3025 } 3008 }
3026 f.close(); 3009 f.close();
3027 } 3010 }
3028#endif 3011#endif
3029#else 3012#else
3030 // read all categories from the config file and store 3013 // read all categories from the config file and store
3031 // into a list 3014 // into a list
3032 QFile f (cfgFile); 3015 QFile f (cfgFile);
3033 QStringList list; 3016 QStringList list;
3034 if ( f.open(IO_ReadOnly) ) { // file opened successfully 3017 if ( f.open(IO_ReadOnly) ) { // file opened successfully
3035 QTextStream t( &f ); // use a text stream 3018 QTextStream t( &f ); // use a text stream
3036 QString s; 3019 QString s;
3037 while ( !t.eof() ) { // until end of file... 3020 while ( !t.eof() ) { // until end of file...
3038 s = t.readLine(); // line of text excluding '\n' 3021 s = t.readLine(); // line of text excluding '\n'
3039 list.append(s); 3022 list.append(s);
3040 } 3023 }
3041 f.close(); 3024 f.close();
3042 } 3025 }
3043#endif 3026#endif
3044 QStringList::Iterator it = list.begin(); 3027 QStringList::Iterator it = list.begin();
3045 QString categ; 3028 QString categ;
3046 dialog->CategoryField->clear(); // remove all items 3029 dialog->CategoryField->clear(); // remove all items
3047 int i=0; 3030 int i=0;
3048 bool foundCategory = false; 3031 bool foundCategory = false;
3049 while( it != list.end() ) 3032 while( it != list.end() )
3050 { 3033 {
3051 QString *cat = new QString (*it); 3034 QString *cat = new QString (*it);
3052 if (cat->contains("-field1", FALSE)) 3035 if (cat->contains("-field1", FALSE))
3053 { 3036 {
3054#ifdef DESKTOP 3037#ifdef DESKTOP
3055#ifndef WIN32 3038#ifndef WIN32
3056 categ = cat->section ("-field1", 0, 0); 3039 categ = cat->section ("-field1", 0, 0);
3057#else 3040#else
3058 int pos = cat->find ("-field1"); 3041 int pos = cat->find ("-field1");
3059 categ = cat->left (pos); 3042 categ = cat->left (pos);
3060#endif 3043#endif
3061#else 3044#else
3062 int pos = cat->find ("-field1"); 3045 int pos = cat->find ("-field1");
3063 cat->truncate(pos); 3046 cat->truncate(pos);
3064 categ = *cat; 3047 categ = *cat;
3065#endif 3048#endif
3066 if (!categ.isEmpty()) 3049 if (!categ.isEmpty())
3067 { 3050 {
3068 dialog->CategoryField->insertItem (categ, i); 3051 dialog->CategoryField->insertItem (categ, i);
3069 if (category.compare(categ) == 0) 3052 if (category.compare(categ) == 0)
3070 { 3053 {
3071 dialog->CategoryField->setCurrentItem(i); 3054 dialog->CategoryField->setCurrentItem(i);
3072 foundCategory = true; 3055 foundCategory = true;
3073 } 3056 }
3074 i++; 3057 i++;
3075 } 3058 }
3076 } 3059 }
3077 ++it; 3060 ++it;
3078 } 3061 }
3079 if (!foundCategory) 3062 if (!foundCategory)
3080 { 3063 {
3081 dialog->CategoryField->insertItem (category, i); 3064 dialog->CategoryField->insertItem (category, i);
3082 dialog->CategoryField->setCurrentItem(i); 3065 dialog->CategoryField->setCurrentItem(i);
3083 } 3066 }
3084 3067
3085 QString icon; 3068 QString icon;
3086 Category *cat= categories.find (selectedItem->text(0)); 3069 Category *cat= categories.find (selectedItem->text(0));
3087 if (cat) 3070 if (cat)
3088 { 3071 {
3089 icon = cat->getIconName(); 3072 icon = cat->getIconName();
3090 } 3073 }
3091 3074
3092 if (initIcons) 3075 if (initIcons)
3093 { 3076 {
3094 3077
3095 Wait waitDialog(this, tr("Wait dialog")); 3078 Wait waitDialog(this, tr("Wait dialog"));
3096 waitDialog.waitLabel->setText(tr("Gathering icons...")); 3079 waitDialog.waitLabel->setText(tr("Gathering icons..."));
3097 waitDialog.show(); 3080 waitDialog.show();
3098 qApp->processEvents(); 3081 qApp->processEvents();
3099 3082
3100#ifdef DESKTOP 3083#ifdef DESKTOP
3101 QDir d(iconPath); 3084 QDir d(iconPath);
3102#else 3085#else
3103 QDir d(QPEApplication::qpeDir() + "/pics/"); 3086 QDir d(QPEApplication::qpeDir() + "/pics/");
3104#endif 3087#endif
3105 d.setFilter( QDir::Files); 3088 d.setFilter( QDir::Files);
3106 3089
3107 const QFileInfoList *list = d.entryInfoList(); 3090 const QFileInfoList *list = d.entryInfoList();
3108 int i=0; 3091 int i=0;
3109 QFileInfoListIterator it( *list ); // create list iterator 3092 QFileInfoListIterator it( *list ); // create list iterator
3110 QFileInfo *fi; // pointer for traversing 3093 QFileInfo *fi; // pointer for traversing
3111 if (icon.isEmpty() || icon.isNull()) 3094 if (icon.isEmpty() || icon.isNull())
3112 { 3095 {
3113 dialog->IconField->setCurrentItem(0); 3096 dialog->IconField->setCurrentItem(0);
3114 } 3097 }
3115 3098
3116 dialog->IconField->insertItem("predefined"); 3099 dialog->IconField->insertItem("predefined");
3117 while ( (fi=it.current()) ) { // for each file... 3100 while ( (fi=it.current()) ) { // for each file...
3118 QString fileName = fi->fileName(); 3101 QString fileName = fi->fileName();
3119 if(fileName.right(4) == ".png") 3102 if(fileName.right(4) == ".png")
3120 { 3103 {
3121 fileName = fileName.mid(0,fileName.length()-4); 3104 fileName = fileName.mid(0,fileName.length()-4);
3122#ifdef DESKTOP 3105#ifdef DESKTOP
3123 QPixmap imageOfFile; 3106 QPixmap imageOfFile;
3124 imageOfFile.load(iconPath + fi->fileName()); 3107 imageOfFile.load(iconPath + fi->fileName());
3125#else 3108#else
3126 QPixmap imageOfFile(Resource::loadPixmap(fileName)); 3109 QPixmap imageOfFile(Resource::loadPixmap(fileName));
3127#endif 3110#endif
3128 QImage foo = imageOfFile.convertToImage(); 3111 QImage foo = imageOfFile.convertToImage();
3129 foo = foo.smoothScale(16,16); 3112 foo = foo.smoothScale(16,16);
3130 imageOfFile.convertFromImage(foo); 3113 imageOfFile.convertFromImage(foo);
3131 dialog->IconField->insertItem(imageOfFile,fileName); 3114 dialog->IconField->insertItem(imageOfFile,fileName);
3132 if(fileName+".png"==icon) 3115 if(fileName+".png"==icon)
3133 dialog->IconField->setCurrentItem(i+1); 3116 dialog->IconField->setCurrentItem(i+1);
3134 ++i; 3117 ++i;
3135 } 3118 }
3136 ++it; 3119 ++it;
3137 } 3120 }
3138 waitDialog.hide(); 3121 waitDialog.hide();
3139 } 3122 }
3140 else 3123 else
3141 { 3124 {
3142#ifdef DESKTOP 3125#ifdef DESKTOP
3143 // QDir d(QDir::homeDirPath() + "/pics/"); 3126 // QDir d(QDir::homeDirPath() + "/pics/");
3144 QDir d(iconPath); 3127 QDir d(iconPath);
3145#else 3128#else
3146 QDir d(QPEApplication::qpeDir() + "/pics/"); 3129 QDir d(QPEApplication::qpeDir() + "/pics/");
3147#endif 3130#endif
3148 d.setFilter( QDir::Files); 3131 d.setFilter( QDir::Files);
3149 3132
3150 const QFileInfoList *list = d.entryInfoList(); 3133 const QFileInfoList *list = d.entryInfoList();
3151 int i=0; 3134 int i=0;
3152 QFileInfoListIterator it( *list ); // create list iterator 3135 QFileInfoListIterator it( *list ); // create list iterator
3153 QFileInfo *fi; // pointer for traversing 3136 QFileInfo *fi; // pointer for traversing
3154 if (icon.isEmpty() || icon.isNull()) 3137 if (icon.isEmpty() || icon.isNull())
3155 { 3138 {
3156 dialog->IconField->setCurrentItem(0); 3139 dialog->IconField->setCurrentItem(0);
3157 } 3140 }
3158 else 3141 else
3159 { 3142 {
3160 3143
3161 while ( (fi=it.current()) ) 3144 while ( (fi=it.current()) )
3162 { // for each file... 3145 { // for each file...
3163 QString fileName = fi->fileName(); 3146 QString fileName = fi->fileName();
3164 if(fileName.right(4) == ".png") 3147 if(fileName.right(4) == ".png")
3165 { 3148 {
3166 fileName = fileName.mid(0,fileName.length()-4); 3149 fileName = fileName.mid(0,fileName.length()-4);
3167 3150
3168 3151
3169 if(fileName+".png"==icon) 3152 if(fileName+".png"==icon)
3170 { 3153 {
3171 dialog->IconField->setCurrentItem(i+1); 3154 dialog->IconField->setCurrentItem(i+1);
3172 break; 3155 break;
3173 } 3156 }
3174 ++i; 3157 ++i;
3175 } 3158 }
3176 ++it; 3159 ++it;
3177 } 3160 }
3178 } 3161 }
3179 } 3162 }
3180 3163
3181 // dialog->show(); 3164 // dialog->show();
3182#ifndef DESKTOP 3165#ifndef DESKTOP
3183 // dialog->move (20, 100); 3166 // dialog->move (20, 100);
3184#endif 3167#endif
3185 DialogCode result = (DialogCode) dialog->exec(); 3168 DialogCode result = (DialogCode) dialog->exec();
3186#ifdef DESKTOP 3169#ifdef DESKTOP
3187 result = Accepted; 3170 result = Accepted;
3188#endif 3171#endif
3189 3172
3190 QString fullIconPath; 3173 QString fullIconPath;
3191 QPixmap *pix; 3174 QPixmap *pix;
3192 if (result == Accepted) 3175 if (result == Accepted)
3193 { 3176 {
3194 modified = true; 3177 modified = true;
3195 if (category != dialog->CategoryField->currentText()) 3178 if (category != dialog->CategoryField->currentText())
3196 { 3179 {
3197 categories.remove (category); 3180 categories.remove (category);
3198// #ifndef WIN32 3181// #ifndef WIN32
3199 conf->removeEntry(category); 3182 conf->removeEntry(category);
3200// #endif 3183// #endif
3201 saveConf(); 3184 saveConf();
3202 } 3185 }
3203 3186
3204 category = dialog->CategoryField->currentText(); 3187 category = dialog->CategoryField->currentText();
3205 icon = dialog->IconField->currentText()+".png"; 3188 icon = dialog->IconField->currentText()+".png";
3206 3189
3207 if (cat) 3190 if (cat)
3208 { 3191 {
3209 qWarning("Category found"); 3192 qWarning("Category found");
3210 3193
3211 // if (!icon.isEmpty() && !icon.isNull()) 3194 // if (!icon.isEmpty() && !icon.isNull())
3212 if (icon != "predefined.png") 3195 if (icon != "predefined.png")
3213 { 3196 {
3214 // build the full path 3197 // build the full path
3215 fullIconPath = iconPath + icon; 3198 fullIconPath = iconPath + icon;
3216 pix = new QPixmap (fullIconPath); 3199 pix = new QPixmap (fullIconPath);
3217 if (pix) 3200 if (pix)
3218 { 3201 {
3219 // save the full pixmap name into the config file 3202 // save the full pixmap name into the config file
3220// #ifndef WIN32 3203// #ifndef WIN32
3221 conf->writeEntry(APP_KEY+category, icon); 3204 conf->writeEntry(APP_KEY+category, icon);
3222// #endif 3205// #endif
3223 saveConf(); 3206 saveConf();
3224 QImage img = pix->convertToImage(); 3207 QImage img = pix->convertToImage();
3225 pix->convertFromImage(img.smoothScale(14,14)); 3208 pix->convertFromImage(img.smoothScale(14,14));
3226 cat->setIconName (icon); 3209 cat->setIconName (icon);
3227 cat->setIcon (*pix); 3210 cat->setIcon (*pix);
3228 } 3211 }
3229 } 3212 }
3230 else 3213 else
3231 { 3214 {
3232// #ifndef WIN32 3215// #ifndef WIN32
3233 conf->removeEntry (category); 3216 conf->removeEntry (category);
3234// #endif 3217// #endif
3235 saveConf(); 3218 saveConf();
3236 cat->setIcon (*getPredefinedIcon(category)); 3219 cat->setIcon (*getPredefinedIcon(category));
3237 } 3220 }
3238 3221
3239 // change the category name of the selected category 3222 // change the category name of the selected category
3240 QListViewItem *catItem = cat->getListItem(); 3223 QListViewItem *catItem = cat->getListItem();
3241 if (catItem) 3224 if (catItem)
3242 { 3225 {
3243 qWarning (category); 3226 qWarning (category);
3244 catItem->setText( 0, tr( category ) ); 3227 catItem->setText( 0, tr( category ) );
3245 cat->setCategoryName (tr(category)); 3228 cat->setCategoryName (tr(category));
3246 3229
3247 cat->initListItem(); 3230 cat->initListItem();
3248 categories.insert (category, cat); 3231 categories.insert (category, cat);
3249 } 3232 }
3250 } 3233 }
3251 saveCategoryDialogFields(dialog); 3234 saveCategoryDialogFields(dialog);
3252 } 3235 }
3253 else 3236 else
3254 { 3237 {
3255 // delete dialog; 3238 // delete dialog;
3256 dialog->hide(); 3239 dialog->hide();
3257 return; 3240 return;
3258 } 3241 }
3259 3242
3260 } 3243 }
3261} 3244}
3262 3245
3263void ZSafe::cutItem() 3246void ZSafe::cutItem()
3264{ 3247{
3265 if (!selectedItem) 3248 if (!selectedItem)
3266 return; 3249 return;
3267 if (!isCategory(selectedItem)) 3250 if (!isCategory(selectedItem))
3268 { 3251 {
3269 IsCut = true; 3252 IsCut = true;
3270 copiedItem = selectedItem; 3253 copiedItem = selectedItem;
3271 } 3254 }
3272} 3255}
3273 3256
3274void ZSafe::copyItem() 3257void ZSafe::copyItem()
3275{ 3258{
3276 if (!selectedItem) 3259 if (!selectedItem)
3277 return; 3260 return;
3278 if (!isCategory(selectedItem)) 3261 if (!isCategory(selectedItem))
3279 { 3262 {
3280 IsCopy = true; 3263 IsCopy = true;
3281 copiedItem = selectedItem; 3264 copiedItem = selectedItem;
3282 } 3265 }
3283} 3266}
3284 3267
3285// paste item into category 3268// paste item into category
3286void ZSafe::pasteItem() 3269void ZSafe::pasteItem()
3287{ 3270{
3288 if (!selectedItem) 3271 if (!selectedItem)
3289 return; 3272 return;
3290 if (isCategory(selectedItem)) 3273 if (isCategory(selectedItem))
3291 { 3274 {
3292 modified = true; 3275 modified = true;
3293 if (IsCut) 3276 if (IsCut)
3294 { 3277 {
3295 if (copiedItem) 3278 if (copiedItem)
3296 { 3279 {
3297 // add the new item 3280 // add the new item
3298 QListViewItem *i = new ShadedListItem (0, selectedItem); 3281 QListViewItem *i = new ShadedListItem (0, selectedItem);
3299 // i->setOpen (TRUE); 3282 // i->setOpen (TRUE);
3300 i->setText (0, copiedItem->text(0)); 3283 i->setText (0, copiedItem->text(0));
3301 i->setText (1, copiedItem->text(1)); 3284 i->setText (1, copiedItem->text(1));
3302 i->setText (2, copiedItem->text(2)); 3285 i->setText (2, copiedItem->text(2));
3303 i->setText (3, copiedItem->text(3)); 3286 i->setText (3, copiedItem->text(3));
3304 i->setText (4, copiedItem->text(4)); 3287 i->setText (4, copiedItem->text(4));
3305 i->setText (5, copiedItem->text(5)); 3288 i->setText (5, copiedItem->text(5));
3306 selectedItem->setOpen( TRUE ); 3289 selectedItem->setOpen( TRUE );
3307 3290
3308 // remove the cutted item 3291 // remove the cutted item
3309 copiedItem->parent()->takeItem(copiedItem); 3292 copiedItem->parent()->takeItem(copiedItem);
3310 selectedItem = NULL; 3293 selectedItem = NULL;
3311 } 3294 }
3312 } 3295 }
3313 else if (IsCopy) 3296 else if (IsCopy)
3314 { 3297 {
3315 if (copiedItem) 3298 if (copiedItem)
3316 { 3299 {
3317 // add the new item 3300 // add the new item
3318 QListViewItem *i = new ShadedListItem (0, selectedItem); 3301 QListViewItem *i = new ShadedListItem (0, selectedItem);
3319 // i->setOpen (TRUE); 3302 // i->setOpen (TRUE);
3320 i->setText (0, copiedItem->text(0)); 3303 i->setText (0, copiedItem->text(0));
3321 i->setText (1, copiedItem->text(1)); 3304 i->setText (1, copiedItem->text(1));
3322 i->setText (2, copiedItem->text(2)); 3305 i->setText (2, copiedItem->text(2));
3323 i->setText (3, copiedItem->text(3)); 3306 i->setText (3, copiedItem->text(3));
3324 i->setText (4, copiedItem->text(4)); 3307 i->setText (4, copiedItem->text(4));
3325 i->setText (5, copiedItem->text(5)); 3308 i->setText (5, copiedItem->text(5));
3326 selectedItem->setOpen( TRUE ); 3309 selectedItem->setOpen( TRUE );
3327 } 3310 }
3328 } 3311 }
3329 } 3312 }
3330 IsCut = false; 3313 IsCut = false;
3331 IsCopy = false; 3314 IsCopy = false;
3332} 3315}
3333 3316
3334void ZSafe::newDocument() 3317void ZSafe::newDocument()
3335{ 3318{
3336 3319
3337 // open the file dialog 3320 // open the file dialog
3338#ifndef DESKTOP 3321#ifndef DESKTOP
3339#ifndef NO_OPIE 3322#ifndef NO_OPIE
3340 QMap<QString, QStringList> mimeTypes; 3323 QMap<QString, QStringList> mimeTypes;
3341 mimeTypes.insert(tr("All"), QStringList() ); 3324 mimeTypes.insert(tr("All"), QStringList() );
3342 mimeTypes.insert(tr("ZSafe"), "zsafe/*" ); 3325 mimeTypes.insert(tr("ZSafe"), "zsafe/*" );
3343 QString newFile = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL, 3326 QString newFile = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL,
3344 QDir::homeDirPath() + "/Documents/application/zsafe", 3327 QDir::homeDirPath() + "/Documents/application/zsafe",
3345 QString::null, 3328 QString::null,
3346 mimeTypes, 3329 mimeTypes,
3347 this, 3330 this,
3348 tr ("Create new ZSafe document")); 3331 tr ("Create new ZSafe document"));
3349#else 3332#else
3350 QString newFile = ScQtFileEdit::getSaveAsFileName(this, 3333 QString newFile = ScQtFileEdit::getSaveAsFileName(this,
3351 tr ("Create new ZSafe document"), 3334 tr ("Create new ZSafe document"),
3352 QDir::homeDirPath() + "/Documents/application/zsafe", 3335 QDir::homeDirPath() + "/Documents/application/zsafe",
3353 "*.zsf"); 3336 "*.zsf");
3354#endif 3337#endif
3355#else 3338#else
3356 QString newFile = QFileDialog::getSaveFileName( 3339 QString newFile = QFileDialog::getSaveFileName(
3357 QDir::homeDirPath() + "/Documents/application/zsafe", 3340 QDir::homeDirPath() + "/Documents/application/zsafe",
3358 "ZSafe (*.zsf)", 3341 "ZSafe (*.zsf)",
3359 this, 3342 this,
3360 "ZSafe File Dialog" 3343 "ZSafe File Dialog"
3361 "Choose a ZSafe file" ); 3344 "Choose a ZSafe file" );
3362#endif 3345#endif
3363 3346
3364 // open the new document 3347 // open the new document
3365 if (newFile && newFile.length() > 0 ) 3348 if (newFile && newFile.length() > 0 )
3366 { 3349 {
3367 // save the previous opened document 3350 // save the previous opened document
3368 if (!filename.isEmpty()) 3351 if (!filename.isEmpty())
3369 saveDocument(filename, FALSE); 3352 saveDocument(filename, FALSE);
3370 3353
3371 modified = true; 3354 modified = true;
3372 3355
3373 // clear the password list 3356 // clear the password list
3374 QListViewItem *i; 3357 QListViewItem *i;
3375 QListViewItem *c = NULL; 3358 QListViewItem *c = NULL;
3376 // step through all categories 3359 // step through all categories
3377 for (i = ListView->firstChild(); 3360 for (i = ListView->firstChild();
3378 i != NULL; 3361 i != NULL;
3379 i = i->nextSibling()) 3362 i = i->nextSibling())
3380 { 3363 {
3381 if (c) delete c; // delete the previous category 3364 if (c) delete c; // delete the previous category
3382 3365
3383 c = i; 3366 c = i;
3384 // step through all subitems 3367 // step through all subitems
3385 QListViewItem *si; 3368 QListViewItem *si;
3386 for (si = i->firstChild(); 3369 for (si = i->firstChild();
3387 si != NULL; ) 3370 si != NULL; )
3388 { 3371 {
3389 QListViewItem *_si = si; 3372 QListViewItem *_si = si;
3390 si = si->nextSibling(); 3373 si = si->nextSibling();
3391 i->takeItem(_si); // remove from view list 3374 i->takeItem(_si); // remove from view list
3392 if (_si) delete _si; 3375 if (_si) delete _si;
3393 } 3376 }
3394 } 3377 }
3395 if (c) delete c; // delete the previous category 3378 if (c) delete c; // delete the previous category
3396 categories.clear(); 3379 categories.clear();
3397 3380
3398 // m_password = ""; 3381 // m_password = "";
3399 selectedItem = NULL; 3382 selectedItem = NULL;
3400 3383
3401 filename = newFile; 3384 filename = newFile;
3402 3385
3403 // save the current filename to the config file 3386 // save the current filename to the config file
3404 conf->writeEntry(APP_KEY+"document", filename); 3387 conf->writeEntry(APP_KEY+"document", filename);
3405 saveConf(); 3388 saveConf();
3406 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3389 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3407#ifdef WIN32 3390#ifdef WIN32
3408 this->setCaption("Qt ZSafe: " + ti); 3391 this->setCaption("Qt ZSafe: " + ti);
3409#else 3392#else
3410 this->setCaption("ZSafe: " + ti); 3393 this->setCaption("ZSafe: " + ti);
3411#endif 3394#endif
3412 3395
3413 // openDocument(filename); 3396 // openDocument(filename);
3414 3397
3415 QMessageBox::information( this, tr("ZSafe"), 3398 QMessageBox::information( this, tr("ZSafe"),
3416 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0); 3399 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0);
3417 3400
3418 saveDocumentWithPwd(); 3401 saveDocumentWithPwd();
3419 } 3402 }
3420} 3403}
3421 3404
3422void ZSafe::loadDocument() 3405void ZSafe::loadDocument()
3423{ 3406{
3424 3407
3425 // open the file dialog 3408 // open the file dialog
3426#ifndef DESKTOP 3409#ifndef DESKTOP
3427#ifndef NO_OPIE 3410#ifndef NO_OPIE
3428 QMap<QString, QStringList> mimeTypes; 3411 QMap<QString, QStringList> mimeTypes;
3429 mimeTypes.insert(tr("All"), QStringList() ); 3412 mimeTypes.insert(tr("All"), QStringList() );
3430 mimeTypes.insert(tr("ZSafe"), "zsafe/*" ); 3413 mimeTypes.insert(tr("ZSafe"), "zsafe/*" );
3431 QString newFile = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL, 3414 QString newFile = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL,
3432 QDir::homeDirPath() + "/Documents/application/zsafe", 3415 QDir::homeDirPath() + "/Documents/application/zsafe",
3433 QString::null, 3416 QString::null,
3434 mimeTypes, 3417 mimeTypes,
3435 this, 3418 this,
3436 tr ("Open ZSafe document")); 3419 tr ("Open ZSafe document"));
3437#else 3420#else
3438 QString newFile = ScQtFileEdit::getOpenFileName(this, 3421 QString newFile = ScQtFileEdit::getOpenFileName(this,
3439 tr ("Open ZSafe document"), 3422 tr ("Open ZSafe document"),
3440 QDir::homeDirPath() + "/Documents/application/zsafe", 3423 QDir::homeDirPath() + "/Documents/application/zsafe",
3441 "*.zsf"); 3424 "*.zsf");
3442#endif 3425#endif
3443#else 3426#else
3444 QString newFile = QFileDialog::getOpenFileName( 3427 QString newFile = QFileDialog::getOpenFileName(
3445 QDir::homeDirPath() + "/Documents/application/zsafe", 3428 QDir::homeDirPath() + "/Documents/application/zsafe",
3446 "ZSafe (*.zsf)", 3429 "ZSafe (*.zsf)",
3447 this, 3430 this,
3448 "ZSafe File Dialog" 3431 "ZSafe File Dialog"
3449 "Choose a ZSafe file" ); 3432 "Choose a ZSafe file" );
3450#endif 3433#endif
3451 3434
3452 // open the new document 3435 // open the new document
3453 if (newFile && newFile.length() > 0 ) 3436 if (newFile && newFile.length() > 0 )
3454 { 3437 {
3455 // save the previous opened document 3438 // save the previous opened document
3456 if (!filename.isEmpty()) 3439 if (!filename.isEmpty())
3457 saveDocument(filename, FALSE); 3440 saveDocument(filename, FALSE);
3458 3441
3459 // clear the password list 3442 // clear the password list
3460 QListViewItem *i; 3443 QListViewItem *i;
3461 QListViewItem *c = NULL; 3444 QListViewItem *c = NULL;
3462 // step through all categories 3445 // step through all categories
3463 for (i = ListView->firstChild(); 3446 for (i = ListView->firstChild();
3464 i != NULL; 3447 i != NULL;
3465 i = i->nextSibling()) 3448 i = i->nextSibling())
3466 { 3449 {
3467 if (c) delete c; // delete the previous category 3450 if (c) delete c; // delete the previous category
3468 3451
3469 c = i; 3452 c = i;
3470 // step through all subitems 3453 // step through all subitems
3471 QListViewItem *si; 3454 QListViewItem *si;
3472 for (si = i->firstChild(); 3455 for (si = i->firstChild();
3473 si != NULL; ) 3456 si != NULL; )
3474 { 3457 {
3475 QListViewItem *_si = si; 3458 QListViewItem *_si = si;
3476 si = si->nextSibling(); 3459 si = si->nextSibling();
3477 i->takeItem(_si); // remove from view list 3460 i->takeItem(_si); // remove from view list
3478 if (_si) delete _si; 3461 if (_si) delete _si;
3479 } 3462 }
3480 } 3463 }
3481 if (c) delete c; // delete the previous category 3464 if (c) delete c; // delete the previous category
3482 categories.clear(); 3465 categories.clear();
3483 m_password = ""; 3466 m_password = "";
3484 selectedItem = NULL; 3467 selectedItem = NULL;
3485 filename = newFile; 3468 filename = newFile;
3486 3469
3487 // save the current filename to the config file 3470 // save the current filename to the config file
3488 conf->writeEntry(APP_KEY+"document", filename); 3471 conf->writeEntry(APP_KEY+"document", filename);
3489 saveConf(); 3472 saveConf();
3490 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3473 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3491#ifdef WIN32 3474#ifdef WIN32
3492 this->setCaption("Qt ZSafe: " + ti); 3475 this->setCaption("Qt ZSafe: " + ti);
3493#else 3476#else
3494 this->setCaption("ZSafe: " + ti); 3477 this->setCaption("ZSafe: " + ti);
3495#endif 3478#endif
3496 3479
3497 openDocument(filename); 3480 openDocument(filename);
3498 } 3481 }
3499} 3482}
3500 3483
3501void ZSafe::saveDocumentAs() 3484void ZSafe::saveDocumentAs()
3502{ 3485{
3503 3486
3504#ifndef DESKTOP 3487#ifndef DESKTOP
3505#ifndef NO_OPIE 3488#ifndef NO_OPIE
3506 QMap<QString, QStringList> mimeTypes; 3489 QMap<QString, QStringList> mimeTypes;
3507 mimeTypes.insert(tr("All"), QStringList() ); 3490 mimeTypes.insert(tr("All"), QStringList() );
3508 mimeTypes.insert(tr("ZSafe"), "zsafe/*" ); 3491 mimeTypes.insert(tr("ZSafe"), "zsafe/*" );
3509 QString newFile = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL, 3492 QString newFile = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL,
3510 QDir::homeDirPath() + "/Documents/application/zsafe", 3493 QDir::homeDirPath() + "/Documents/application/zsafe",
3511 QString::null, 3494 QString::null,
3512 mimeTypes, 3495 mimeTypes,
3513 this, 3496 this,
3514 tr ("Save ZSafe document as..")); 3497 tr ("Save ZSafe document as.."));
3515#else 3498#else
3516 QString newFile = ScQtFileEdit::getSaveAsFileName(this, 3499 QString newFile = ScQtFileEdit::getSaveAsFileName(this,
3517 tr ("Save ZSafe document as.."), 3500 tr ("Save ZSafe document as.."),
3518 QDir::homeDirPath() + "/Documents/application/zsafe", 3501 QDir::homeDirPath() + "/Documents/application/zsafe",
3519 "*.zsf"); 3502 "*.zsf");
3520#endif 3503#endif
3521#else 3504#else
3522 // open the file dialog 3505 // open the file dialog
3523 QString newFile = QFileDialog::getSaveFileName( 3506 QString newFile = QFileDialog::getSaveFileName(
3524 QDir::homeDirPath() + "/Documents/application/zsafe", 3507 QDir::homeDirPath() + "/Documents/application/zsafe",
3525 "ZSafe (*.zsf)", 3508 "ZSafe (*.zsf)",
3526 this, 3509 this,
3527 "ZSafe File Dialog" 3510 "ZSafe File Dialog"
3528 "Choose a ZSafe file" ); 3511 "Choose a ZSafe file" );
3529#endif 3512#endif
3530 3513
3531 // open the new document 3514 // open the new document
3532 if (newFile && newFile.length() > 0 ) 3515 if (newFile && newFile.length() > 0 )
3533 { 3516 {
3534 // save the previous opened document 3517 // save the previous opened document
3535 if (!filename.isEmpty()) 3518 if (!filename.isEmpty())
3536 saveDocument(filename, FALSE); 3519 saveDocument(filename, FALSE);
3537 3520
3538 selectedItem = NULL; 3521 selectedItem = NULL;
3539 filename = newFile; 3522 filename = newFile;
3540 3523
3541 // save the current filename to the config file 3524 // save the current filename to the config file
3542 conf->writeEntry(APP_KEY+"document", filename); 3525 conf->writeEntry(APP_KEY+"document", filename);
3543 saveConf(); 3526 saveConf();
3544 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3527 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3545#ifdef WIN32 3528#ifdef WIN32
3546 this->setCaption("Qt ZSafe: " + ti); 3529 this->setCaption("Qt ZSafe: " + ti);
3547#else 3530#else
3548 this->setCaption("ZSafe: " + ti); 3531 this->setCaption("ZSafe: " + ti);
3549#endif 3532#endif
3550 3533
3551 QMessageBox::information( this, tr("ZSafe"), 3534 QMessageBox::information( this, tr("ZSafe"),
3552 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0); 3535 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0);
3553 3536
3554 saveDocumentWithPwd(); 3537 saveDocumentWithPwd();
3555 } 3538 }
3556} 3539}
3557 3540
3558void ZSafe::saveDocumentWithoutPwd() 3541void ZSafe::saveDocumentWithoutPwd()
3559{ 3542{
3560 saveDocument(filename, FALSE); 3543 saveDocument(filename, FALSE);
3561} 3544}
3562 3545
3563void ZSafe::saveDocumentWithPwd() 3546void ZSafe::saveDocumentWithPwd()
3564{ 3547{
3565 saveDocument(filename, TRUE); 3548 saveDocument(filename, TRUE);
3566} 3549}
3567 3550
3568void ZSafe::about() 3551void ZSafe::about()
3569{ 3552{
3570 QString info; 3553 QString info;
3571#ifdef JPATCH_HDE 3554#ifdef JPATCH_HDE
3572 info = "<html><body><div align=""center"">"; 3555 info = "<html><body><div align=""center"">";
3573 info += "<b>"; 3556 info += "<b>";
3574 info += tr("Zaurus Password Manager<br>"); 3557 info += tr("Zaurus Password Manager<br>");
3575 info += tr("ZSafe version 2.1.2-jv01b<br>"); 3558 info += tr("ZSafe version 2.1.2-jv01b<br>");
3576 info += "</b>"; 3559 info += "</b>";
3577 info += tr("by Carsten Schneider<br>"); 3560 info += tr("by Carsten Schneider<br>");
3578 info += "zcarsten@gmx.net<br>"; 3561 info += "zcarsten@gmx.net<br>";
3579 info += "http://z-soft.z-portal.info/zsafe"; 3562 info += "http://z-soft.z-portal.info/zsafe";
3580 info += "<br>"; 3563 info += "<br>";
3581 info += tr("Translations by Robert Ernst<br>"); 3564 info += tr("Translations by Robert Ernst<br>");
3582 info += "robert.ernst@linux-solutions.at<br>"; 3565 info += "robert.ernst@linux-solutions.at<br>";
3583 3566
3584 info += "<br><br>"; 3567 info += "<br><br>";
3585 info += QString::fromUtf8("æ~W¥æ~\\¬èª~^/VGA Zaurus対å¿~\\ã~C~Qã~C~Cã~C~Aä½~\\æ ~H~P<br>"); 3568 info += QString::fromUtf8("æ~W¥æ~\\¬èª~^/VGA Zaurus対å¿~\\ã~C~Qã~C~Cã~C~Aä½~\\æ ~H~P<br>");
3586 info += "HADECO R&D<br>"; 3569 info += "HADECO R&D<br>";
3587 info += "r&d@hadeco.co.jp<br>"; 3570 info += "r&d@hadeco.co.jp<br>";
3588 info += "http://www.hadeco.co.jp/r&d/<br>"; 3571 info += "http://www.hadeco.co.jp/r&d/<br>";
3589 info += "<br></div>"; 3572 info += "<br></div>";
3590 info += "</body></html>"; 3573 info += "</body></html>";
3591#else 3574#else
3592 info = "<html><body><div align=""center"">"; 3575 info = "<html><body><div align=""center"">";
3593 info += "<b>"; 3576 info += "<b>";
3594 info += tr("Zaurus Password Manager<br>"); 3577 info += tr("Zaurus Password Manager<br>");
3595 info += tr("ZSafe version 2.1.2<br>"); 3578 info += tr("ZSafe version 2.1.2<br>");
3596 info += "</b>"; 3579 info += "</b>";
3597 info += tr("by Carsten Schneider<br>"); 3580 info += tr("by Carsten Schneider<br>");
3598 info += "zcarsten@gmx.net<br>"; 3581 info += "zcarsten@gmx.net<br>";
3599 info += "http://z-soft.z-portal.info/zsafe"; 3582 info += "http://z-soft.z-portal.info/zsafe";
3600 info += "<br>"; 3583 info += "<br>";
3601 info += tr("Translations by Robert Ernst<br>"); 3584 info += tr("Translations by Robert Ernst<br>");
3602 info += "robert.ernst@linux-solutions.at<br>"; 3585 info += "robert.ernst@linux-solutions.at<br>";
3603 info += "<br></div>"; 3586 info += "<br></div>";
3604 info += "</body></html>"; 3587 info += "</body></html>";
3605#endif 3588#endif
3606 3589
3607 // QMessageBox::information( this, tr("ZSafe"), info, tr("&OK"), 0); 3590 // QMessageBox::information( this, tr("ZSafe"), info, tr("&OK"), 0);
3608 3591
3609 QMessageBox mb( this, tr("ZSafe")); 3592 QMessageBox mb( this, tr("ZSafe"));
3610 mb.setText (info); 3593 mb.setText (info);
3611 mb.setButtonText (QMessageBox::Ok, tr ("&OK")); 3594 mb.setButtonText (QMessageBox::Ok, tr ("&OK"));
3612 QPixmap zsafe_img((const char**) zsafe_xpm); 3595 QPixmap zsafe_img((const char**) zsafe_xpm);
3613 mb.setIconPixmap (zsafe_img); 3596 mb.setIconPixmap (zsafe_img);
3614 mb.exec(); 3597 mb.exec();
3615} 3598}
3616 3599
3617void ZSafe::setExpandFlag() 3600void ZSafe::setExpandFlag()
3618{ 3601{
3619 expandTree = !expandTree; 3602 expandTree = !expandTree;
3620 file->setItemChecked('o', expandTree); 3603 file->setItemChecked('o', expandTree);
3621#ifndef DESKTOP 3604#ifndef DESKTOP
3622 conf->setGroup ("zsafePrefs"); 3605 conf->setGroup ("zsafePrefs");
3623#endif 3606#endif
3624// #ifndef WIN32 3607// #ifndef WIN32
3625 conf->writeEntry (APP_KEY+"expandTree", expandTree); 3608 conf->writeEntry (APP_KEY+"expandTree", expandTree);
3626// #endif 3609// #endif
3627 saveConf(); 3610 saveConf();
3628 3611
3629} 3612}
3630 3613
3631void ZSafe::paintEvent( QPaintEvent * ) 3614void ZSafe::paintEvent( QPaintEvent * )
3632{ 3615{
3633 if (raiseFlag) 3616 if (raiseFlag)
3634 { 3617 {
3635 raiseFlag = false; 3618 raiseFlag = false;
3636 raiseTimer.start (1, true); 3619 raiseTimer.start (1, true);
3637 if (infoForm->isVisible()) 3620 if (infoForm->isVisible())
3638 infoForm->raise(); 3621 infoForm->raise();
3639 } 3622 }
3640} 3623}
3641 3624
3642void ZSafe::resizeEvent ( QResizeEvent * ) 3625void ZSafe::resizeEvent ( QResizeEvent * )
3643{ 3626{
3644 // qWarning ("resizeEvent"); 3627 // qWarning ("resizeEvent");
3645#ifndef DESKTOP 3628#ifndef DESKTOP
3646 DeskW = appl->desktop()->width(); 3629 DeskW = appl->desktop()->width();
3647 DeskH = appl->desktop()->height(); 3630 DeskH = appl->desktop()->height();
3648#else 3631#else
3649 DeskW = this->width(); 3632 DeskW = this->width();
3650 DeskH = this->height(); 3633 DeskH = this->height();
3651#endif 3634#endif
3652 3635
3653 if (New) 3636 if (New)
3654 New->setGeometry ( QRect( DeskW-84, 2, 20, 20 ) ); 3637 New->setGeometry ( QRect( DeskW-84, 2, 20, 20 ) );
3655 if (Edit) 3638 if (Edit)
3656 Edit->setGeometry ( QRect( DeskW-64, 2, 20, 20 ) ); 3639 Edit->setGeometry ( QRect( DeskW-64, 2, 20, 20 ) );
3657 if (Delete) 3640 if (Delete)
3658 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) ); 3641 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) );
3659 if (Find) 3642 if (Find)
3660 Find->setGeometry ( QRect( DeskW-24, 2, 20, 20 ) ); 3643 Find->setGeometry ( QRect( DeskW-24, 2, 20, 20 ) );
3661} 3644}
3662 3645
3663void ZSafe::slotRaiseTimer() 3646void ZSafe::slotRaiseTimer()
3664{ 3647{
3665 if (infoForm->isVisible()) 3648 if (infoForm->isVisible())
3666 infoForm->raise(); 3649 infoForm->raise();
3667 raiseFlag = true; 3650 raiseFlag = true;
3668} 3651}
3669 3652
3670QPixmap * ZSafe::getPredefinedIcon(QString category) 3653QPixmap * ZSafe::getPredefinedIcon(QString category)
3671{ 3654{
3672 QPixmap *pm; 3655 QPixmap *pm;
3673 if (category == "Bank cards") 3656 if (category == "Bank cards")
3674 pm = new QPixmap((const char**)bank_cards_data); 3657 pm = new QPixmap((const char**)bank_cards_data);
3675 else if (category == "Passwords") 3658 else if (category == "Passwords")
3676 pm = new QPixmap((const char**)passwords_data); 3659 pm = new QPixmap((const char**)passwords_data);
3677 else if (category == "Software") 3660 else if (category == "Software")
3678 pm = new QPixmap((const char**)software_data); 3661 pm = new QPixmap((const char**)software_data);
3679 else if (category == "General") 3662 else if (category == "General")
3680 pm = new QPixmap((const char**)general_data); 3663 pm = new QPixmap((const char**)general_data);
3681 else 3664 else
3682 pm = new QPixmap((const char**)general_data); 3665 pm = new QPixmap((const char**)general_data);
3683 return pm; 3666 return pm;
3684} 3667}
3685 3668
3686void ZSafe::setDocument(const QString& fileref) 3669void ZSafe::setDocument(const QString& fileref)
3687{ 3670{
3688#ifndef DESKTOP 3671#ifndef DESKTOP
3689 // stop the timer to prevent loading of the default document 3672 // stop the timer to prevent loading of the default document
3690 docuTimer.stop(); 3673 docuTimer.stop();
3691 3674
3692 DocLnk link(fileref); 3675 DocLnk link(fileref);
3693 if ( link.isValid() ) 3676 if ( link.isValid() )
3694 { 3677 {
3695 // if (filename != link.file()) 3678 // if (filename != link.file())
3696 // saveDocument(filename, FALSE); 3679 // saveDocument(filename, FALSE);
3697 filename = link.file(); 3680 filename = link.file();
3698 } 3681 }
3699 else 3682 else
3700 { 3683 {
3701 // if (filename != fileref) 3684 // if (filename != fileref)
3702 // saveDocument(filename, FALSE); 3685 // saveDocument(filename, FALSE);
3703 filename = fileref; 3686 filename = fileref;
3704 } 3687 }
3705 // save the current filename to the config file 3688 // save the current filename to the config file
3706 conf->writeEntry(APP_KEY+"document", filename); 3689 conf->writeEntry(APP_KEY+"document", filename);
3707 saveConf(); 3690 saveConf();
3708 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3691 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3709#ifdef WIN32 3692#ifdef WIN32
3710 this->setCaption("Qt ZSafe: " + ti); 3693 this->setCaption("Qt ZSafe: " + ti);
3711#else 3694#else
3712 this->setCaption("ZSafe: " + ti); 3695 this->setCaption("ZSafe: " + ti);
3713#endif 3696#endif
3714 3697
3715 // clear the password list 3698 // clear the password list
3716 QListViewItem *i; 3699 QListViewItem *i;
3717 QListViewItem *c = NULL; 3700 QListViewItem *c = NULL;
3718 // step through all categories 3701 // step through all categories
3719 for (i = ListView->firstChild(); 3702 for (i = ListView->firstChild();
3720 i != NULL; 3703 i != NULL;
3721 i = i->nextSibling()) 3704 i = i->nextSibling())
3722 { 3705 {
3723 if (c) delete c; // delete the previous category 3706 if (c) delete c; // delete the previous category
3724 3707
3725 c = i; 3708 c = i;
3726 // step through all subitems 3709 // step through all subitems
3727 QListViewItem *si; 3710 QListViewItem *si;
3728 for (si = i->firstChild(); 3711 for (si = i->firstChild();
3729 si != NULL; ) 3712 si != NULL; )
3730 { 3713 {
3731 QListViewItem *_si = si; 3714 QListViewItem *_si = si;
3732 si = si->nextSibling(); 3715 si = si->nextSibling();
3733 i->takeItem(_si); // remove from view list 3716 i->takeItem(_si); // remove from view list
3734 if (_si) delete _si; 3717 if (_si) delete _si;
3735 } 3718 }
3736 } 3719 }
3737 if (c) delete c; // delete the previous category 3720 if (c) delete c; // delete the previous category
3738 categories.clear(); 3721 categories.clear();
3739 3722
3740 m_password = ""; 3723 m_password = "";
3741 selectedItem = NULL; 3724 selectedItem = NULL;
3742 3725
3743 openDocument(filename); 3726 openDocument(filename);
3744#endif 3727#endif
3745} 3728}
3746 3729
3747 3730
3748 3731
diff --git a/noncore/comm/keypebble/kvnc.cpp b/noncore/comm/keypebble/kvnc.cpp
index 25c8919..2fa8d1f 100644
--- a/noncore/comm/keypebble/kvnc.cpp
+++ b/noncore/comm/keypebble/kvnc.cpp
@@ -1,295 +1,292 @@
1#include <qiconset.h> 1#include <qiconset.h>
2#include <qdialog.h> 2#include <qdialog.h>
3#include <qpixmap.h> 3#include <qpixmap.h>
4#include <qdom.h> 4#include <qdom.h>
5#include <qaction.h> 5#include <qaction.h>
6#include <qmenubar.h> 6#include <qmenubar.h>
7#include <qstatusbar.h> 7#include <qstatusbar.h>
8#include <qpopupmenu.h> 8#include <qpopupmenu.h>
9#include <qpushbutton.h> 9#include <qpushbutton.h>
10#include <qpe/qpetoolbar.h> 10#include <qpe/qpetoolbar.h>
11#include <qtimer.h> 11#include <qtimer.h>
12#include <qmessagebox.h> 12#include <qmessagebox.h>
13#include <qspinbox.h> 13#include <qspinbox.h>
14#include <qlistbox.h> 14#include <qlistbox.h>
15#include <qlineedit.h> 15#include <qlineedit.h>
16#include <qpe/qpeapplication.h> 16#include <qpe/qpeapplication.h>
17#include <qpe/global.h> 17#include <qpe/global.h>
18#include <qpe/qpetoolbar.h> 18#include <qpe/qpetoolbar.h>
19#include <qpe/resource.h> 19#include <qpe/resource.h>
20 20
21#include <assert.h> 21#include <assert.h>
22 22
23#include "kvnc.h" 23#include "kvnc.h"
24#include "krfbcanvas.h" 24#include "krfbcanvas.h"
25#include "krfbconnection.h" 25#include "krfbconnection.h"
26#include "kvncconndlg.h" 26#include "kvncconndlg.h"
27#include "krfbserver.h" 27#include "krfbserver.h"
28 28
29static int u_id = 1; 29static int u_id = 1;
30static int get_unique_id() 30static int get_unique_id()
31{ 31{
32 return u_id++; 32 return u_id++;
33} 33}
34 34
35 35
36/* XPM */ 36/* XPM */
37static char * menu_xpm[] = { 37static char * menu_xpm[] = {
38"12 12 5 1", 38"12 12 5 1",
39 " c None", 39 " c None",
40 ".c #000000", 40 ".c #000000",
41 "+c #FFFDAD", 41 "+c #FFFDAD",
42 "@c #FFFF00", 42 "@c #FFFF00",
43 "#c #E5E100", 43 "#c #E5E100",
44" ", 44" ",
45" ", 45" ",
46" ......... ", 46" ......... ",
47" .+++++++. ", 47" .+++++++. ",
48" .+@@@@#. ", 48" .+@@@@#. ",
49" .+@@@#. ", 49" .+@@@#. ",
50" .+@@#. ", 50" .+@@#. ",
51" .+@#. ", 51" .+@#. ",
52" .+#. ", 52" .+#. ",
53" .+. ", 53" .+. ",
54" .. ", 54" .. ",
55" "}; 55" "};
56 56
57const int StatusTextId = 0; 57const int StatusTextId = 0;
58 58
59KVNC::KVNC( QWidget *parent, const char *name, WFlags f) : QMainWindow( 0, name ,WStyle_ContextHelp) 59KVNC::KVNC( QWidget *parent, const char *name, WFlags f) : QMainWindow( 0, name ,WStyle_ContextHelp)
60{ 60{
61 setCaption( tr("VNC Viewer") ); 61 setCaption( tr("VNC Viewer") );
62 fullscreen = false; 62 fullscreen = false;
63 63
64 stack = new QWidgetStack( this ); 64 stack = new QWidgetStack( this );
65 setCentralWidget( stack ); 65 setCentralWidget( stack );
66 66
67 bookmarkSelector=new KVNCBookmarkDlg(); 67 bookmarkSelector=new KVNCBookmarkDlg();
68 stack->addWidget(bookmarkSelector,get_unique_id()); 68 stack->addWidget(bookmarkSelector,get_unique_id());
69 stack->raiseWidget( bookmarkSelector ); 69 stack->raiseWidget( bookmarkSelector );
70 70
71 canvas = new KRFBCanvas( stack, "canvas" ); 71 canvas = new KRFBCanvas( stack, "canvas" );
72 stack->addWidget(canvas,get_unique_id()); 72 stack->addWidget(canvas,get_unique_id());
73 setCentralWidget( stack ); 73 setCentralWidget( stack );
74 74
75 75
76 connect( bookmarkSelector->bookmarkList, SIGNAL(clicked(QListBoxItem *)), 76 connect( bookmarkSelector->bookmarkList, SIGNAL(clicked(QListBoxItem *)),
77 this, SLOT(openConnection(QListBoxItem *)) ); 77 this, SLOT(openConnection(QListBoxItem *)) );
78 connect( canvas->connection(), SIGNAL(statusChanged(const QString &)), 78 connect( canvas->connection(), SIGNAL(statusChanged(const QString &)),
79 this, SLOT(statusMessage(const QString &)) ); 79 this, SLOT(statusMessage(const QString &)) );
80 connect( canvas->connection(), SIGNAL(error(const QString &)), 80 connect( canvas->connection(), SIGNAL(error(const QString &)),
81 this, SLOT(error(const QString &)) ); 81 this, SLOT(error(const QString &)) );
82 connect( canvas->connection(), SIGNAL(connected()), this, SLOT(connected()) ); 82 connect( canvas->connection(), SIGNAL(connected()), this, SLOT(connected()) );
83 connect( canvas->connection(), SIGNAL(loggedIn()), this, SLOT(loggedIn()) ); 83 connect( canvas->connection(), SIGNAL(loggedIn()), this, SLOT(loggedIn()) );
84 connect( canvas->connection(), SIGNAL(disconnected()), this, SLOT(disconnected()) ); 84 connect( canvas->connection(), SIGNAL(disconnected()), this, SLOT(disconnected()) );
85 85
86 setupActions(); 86 setupActions();
87 87
88 cornerButton = new QPushButton( this ); 88 cornerButton = new QPushButton( this );
89 cornerButton->setPixmap( QPixmap( (const char**)menu_xpm ) ); 89 cornerButton->setPixmap( QPixmap( (const char**)menu_xpm ) );
90 connect( cornerButton, SIGNAL(pressed()), this, SLOT(showMenu()) ); 90 connect( cornerButton, SIGNAL(pressed()), this, SLOT(showMenu()) );
91 canvas->setCornerWidget( cornerButton ); 91 canvas->setCornerWidget( cornerButton );
92 92
93 stack->raiseWidget( bookmarkSelector ); 93 stack->raiseWidget( bookmarkSelector );
94 94
95 95
96 bar= new QToolBar( this ); 96 bar= new QToolBar( this );
97 setToolBarsMovable( false ); 97 setToolBarsMovable( false );
98 setRightJustification(false); 98 setRightJustification(false);
99 99
100 100
101 QAction *n = new QAction( tr( "New Connection" ), Resource::loadPixmap( "new" ), 101 QAction *n = new QAction( tr( "New Connection" ), Resource::loadPixmap( "new" ),
102 QString::null, 0, this, 0 ); 102 QString::null, 0, this, 0 );
103 connect( n, SIGNAL( activated() ), 103 connect( n, SIGNAL( activated() ),
104 this, SLOT( newConnection() ) ); 104 this, SLOT( newConnection() ) );
105 n->addTo( bar ); 105 n->addTo( bar );
106 106
107 QAction *o = new QAction( tr( "Open Bookmark" ), Resource::loadPixmap( "fileopen" ), 107 QAction *o = new QAction( tr( "Open Bookmark" ), Resource::loadPixmap( "fileopen" ),
108 QString::null, 0, this, 0 ); 108 QString::null, 0, this, 0 );
109 connect( o, SIGNAL( activated() ), 109 connect( o, SIGNAL( activated() ),
110 this, SLOT( openConnection() ) ); 110 this, SLOT( openConnection() ) );
111 o->addTo( bar ); 111 o->addTo( bar );
112 112
113 QAction *d = new QAction( tr( "Delete Bookmark" ), Resource::loadPixmap( "trash" ), 113 QAction *d = new QAction( tr( "Delete Bookmark" ), Resource::loadPixmap( "trash" ),
114 QString::null, 0, this, 0 ); 114 QString::null, 0, this, 0 );
115 connect( d, SIGNAL( activated() ), 115 connect( d, SIGNAL( activated() ),
116 this, SLOT( deleteBookmark() ) ); 116 this, SLOT( deleteBookmark() ) );
117 d->addTo( bar ); 117 d->addTo( bar );
118} 118}
119 119
120KVNC::~KVNC() 120KVNC::~KVNC()
121{ 121{
122 122
123} 123}
124 124
125void KVNC::newConnection() 125void KVNC::newConnection()
126{ 126{
127 curServer=new KRFBServer; 127 curServer=new KRFBServer;
128 128
129 KVNCConnDlg dlg( curServer,this); 129 KVNCConnDlg dlg( curServer,this);
130 dlg.showMaximized(); 130 if ( QPEApplication::execDialog( &dlg )) {
131 if (dlg.exec()) {
132 if (!curServer->name.isEmpty()) 131 if (!curServer->name.isEmpty())
133 bookmarkSelector->addBookmark(curServer); 132 bookmarkSelector->addBookmark(curServer);
134 canvas->openConnection(*curServer); 133 canvas->openConnection(*curServer);
135 } else 134 } else
136 curServer=0; 135 curServer=0;
137} 136}
138 137
139void KVNC::openConnection( QString name) 138void KVNC::openConnection( QString name)
140{ 139{
141 curServer=bookmarkSelector->getServer(name); 140 curServer=bookmarkSelector->getServer(name);
142 141
143 if (curServer) { 142 if (curServer) {
144 KVNCConnDlg dlg( curServer,this); 143 KVNCConnDlg dlg( curServer,this);
145 dlg.showMaximized(); 144 if ( QPEApplication::execDialog( &dlg ) ) {
146
147 if ( dlg.exec() ) {
148 canvas->openConnection(*curServer); 145 canvas->openConnection(*curServer);
149 bookmarkSelector->writeBookmarks(); 146 bookmarkSelector->writeBookmarks();
150 } else 147 } else
151 curServer=0; 148 curServer=0;
152 } 149 }
153} 150}
154 151
155void KVNC::openConnection( void ) 152void KVNC::openConnection( void )
156{ 153{
157 openConnection( bookmarkSelector->selectedBookmark()); 154 openConnection( bookmarkSelector->selectedBookmark());
158} 155}
159 156
160void KVNC::openConnection( QListBoxItem * item) 157void KVNC::openConnection( QListBoxItem * item)
161{ 158{
162 if (item) 159 if (item)
163 openConnection(item->text()); 160 openConnection(item->text());
164} 161}
165 162
166void KVNC::setupActions() 163void KVNC::setupActions()
167{ 164{
168 cornerMenu = new QPopupMenu( this ); 165 cornerMenu = new QPopupMenu( this );
169 166
170 fullScreenAction = new QAction( tr("Full Screen"), QString::null, 0, 0 ); 167 fullScreenAction = new QAction( tr("Full Screen"), QString::null, 0, 0 );
171 connect( fullScreenAction, SIGNAL(activated()), 168 connect( fullScreenAction, SIGNAL(activated()),
172 this, SLOT( toggleFullScreen() ) ); 169 this, SLOT( toggleFullScreen() ) );
173 fullScreenAction->addTo( cornerMenu ); 170 fullScreenAction->addTo( cornerMenu );
174 fullScreenAction->setEnabled( false ); 171 fullScreenAction->setEnabled( false );
175 172
176 ctlAltDelAction = new QAction( tr("Send Contrl-Alt-Delete"), QString::null, 0, 0 ); 173 ctlAltDelAction = new QAction( tr("Send Contrl-Alt-Delete"), QString::null, 0, 0 );
177 connect( ctlAltDelAction, SIGNAL(activated()), 174 connect( ctlAltDelAction, SIGNAL(activated()),
178 canvas, SLOT( sendCtlAltDel() ) ); 175 canvas, SLOT( sendCtlAltDel() ) );
179 ctlAltDelAction->addTo( cornerMenu ); 176 ctlAltDelAction->addTo( cornerMenu );
180 ctlAltDelAction->setEnabled( false ); 177 ctlAltDelAction->setEnabled( false );
181 178
182 disconnectAction = new QAction( tr("Disconnect"), QString::null, 0, 0 ); 179 disconnectAction = new QAction( tr("Disconnect"), QString::null, 0, 0 );
183 connect( disconnectAction, SIGNAL(activated()), 180 connect( disconnectAction, SIGNAL(activated()),
184 this, SLOT( closeConnection() ) ); 181 this, SLOT( closeConnection() ) );
185 disconnectAction->addTo( cornerMenu ); 182 disconnectAction->addTo( cornerMenu );
186 disconnectAction->setEnabled( false ); 183 disconnectAction->setEnabled( false );
187 184
188 doubleClickAction = new QAction( tr("Next Click is Double Click"), QString::null, 0, 0 ); 185 doubleClickAction = new QAction( tr("Next Click is Double Click"), QString::null, 0, 0 );
189 connect( doubleClickAction, SIGNAL(activated()), 186 connect( doubleClickAction, SIGNAL(activated()),
190 canvas, SLOT( markDoubleClick() ) ); 187 canvas, SLOT( markDoubleClick() ) );
191 doubleClickAction->addTo( cornerMenu ); 188 doubleClickAction->addTo( cornerMenu );
192 doubleClickAction->setEnabled( false ); 189 doubleClickAction->setEnabled( false );
193 190
194 rightClickAction = new QAction( tr("Next Click is Right Click"), QString::null, 0, 0 ); 191 rightClickAction = new QAction( tr("Next Click is Right Click"), QString::null, 0, 0 );
195 connect( rightClickAction, SIGNAL(activated()), 192 connect( rightClickAction, SIGNAL(activated()),
196 canvas, SLOT( markRightClick() ) ); 193 canvas, SLOT( markRightClick() ) );
197 rightClickAction->addTo( cornerMenu ); 194 rightClickAction->addTo( cornerMenu );
198 rightClickAction->setEnabled( false ); 195 rightClickAction->setEnabled( false );
199} 196}
200 197
201void KVNC::toggleFullScreen() 198void KVNC::toggleFullScreen()
202{ 199{
203 if ( fullscreen ) { 200 if ( fullscreen ) {
204 canvas->releaseKeyboard(); 201 canvas->releaseKeyboard();
205 canvas->reparent( stack, 0, QPoint(0,0), false ); 202 canvas->reparent( stack, 0, QPoint(0,0), false );
206 canvas->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 203 canvas->setFrameStyle( QFrame::Panel | QFrame::Sunken );
207 setCentralWidget( stack ); 204 setCentralWidget( stack );
208 stack->addWidget(canvas,get_unique_id()); 205 stack->addWidget(canvas,get_unique_id());
209 stack->raiseWidget(canvas); 206 stack->raiseWidget(canvas);
210 canvas->show(); 207 canvas->show();
211 stack->show(); 208 stack->show();
212 fullScreenAction->setText( tr("Full Screen") ); 209 fullScreenAction->setText( tr("Full Screen") );
213 } else { 210 } else {
214 canvas->setFrameStyle( QFrame::NoFrame ); 211 canvas->setFrameStyle( QFrame::NoFrame );
215 stack->removeWidget(canvas); 212 stack->removeWidget(canvas);
216 canvas->reparent( 0,WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop, 213 canvas->reparent( 0,WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop,
217 QPoint(0,0),false); 214 QPoint(0,0),false);
218 canvas->resize(qApp->desktop()->width(), qApp->desktop()->height()); 215 canvas->resize(qApp->desktop()->width(), qApp->desktop()->height());
219 canvas->raise(); 216 canvas->raise();
220 canvas->setFocus(); 217 canvas->setFocus();
221 canvas->grabKeyboard(); 218 canvas->grabKeyboard();
222 canvas->show(); 219 canvas->show();
223 220
224 fullScreenAction->setText( tr("Stop Full Screen") ); 221 fullScreenAction->setText( tr("Stop Full Screen") );
225 } 222 }
226 223
227 224
228 fullscreen = !fullscreen; 225 fullscreen = !fullscreen;
229} 226}
230 227
231void KVNC::closeConnection() 228void KVNC::closeConnection()
232{ 229{
233 if ( fullscreen ) 230 if ( fullscreen )
234 toggleFullScreen(); 231 toggleFullScreen();
235 canvas->closeConnection(); 232 canvas->closeConnection();
236} 233}
237 234
238void KVNC::showMenu() 235void KVNC::showMenu()
239{ 236{
240 QPoint pt = mapToGlobal(cornerButton->pos()); 237 QPoint pt = mapToGlobal(cornerButton->pos());
241 QSize s = cornerMenu->sizeHint(); 238 QSize s = cornerMenu->sizeHint();
242 pt.ry() -= s.height(); 239 pt.ry() -= s.height();
243 pt.rx() -= s.width(); 240 pt.rx() -= s.width();
244 cornerMenu->popup( pt ); 241 cornerMenu->popup( pt );
245} 242}
246 243
247void KVNC::connected() 244void KVNC::connected()
248{ 245{
249 static QString msg = tr( "Connected to remote host" ); 246 static QString msg = tr( "Connected to remote host" );
250 statusMessage( msg ); 247 statusMessage( msg );
251 ctlAltDelAction->setEnabled(true); 248 ctlAltDelAction->setEnabled(true);
252 disconnectAction->setEnabled( true ); 249 disconnectAction->setEnabled( true );
253 fullScreenAction->setEnabled( true ); 250 fullScreenAction->setEnabled( true );
254 doubleClickAction->setEnabled( false ); 251 doubleClickAction->setEnabled( false );
255 rightClickAction->setEnabled( true ); 252 rightClickAction->setEnabled( true );
256 stack->raiseWidget(canvas); 253 stack->raiseWidget(canvas);
257 bar->hide(); 254 bar->hide();
258} 255}
259 256
260void KVNC::loggedIn() 257void KVNC::loggedIn()
261{ 258{
262 static QString msg = tr( "Logged in to remote host" ); 259 static QString msg = tr( "Logged in to remote host" );
263 statusMessage( msg ); 260 statusMessage( msg );
264} 261}
265 262
266void KVNC::disconnected() 263void KVNC::disconnected()
267{ 264{
268 265
269 if ( fullscreen ) 266 if ( fullscreen )
270 toggleFullScreen(); 267 toggleFullScreen();
271 static QString msg = tr( "Connection closed" ); 268 static QString msg = tr( "Connection closed" );
272 statusMessage( msg ); 269 statusMessage( msg );
273 ctlAltDelAction->setEnabled(false); 270 ctlAltDelAction->setEnabled(false);
274 disconnectAction->setEnabled( false ); 271 disconnectAction->setEnabled( false );
275 fullScreenAction->setEnabled( false ); 272 fullScreenAction->setEnabled( false );
276 doubleClickAction->setEnabled( false ); 273 doubleClickAction->setEnabled( false );
277 rightClickAction->setEnabled( false ); 274 rightClickAction->setEnabled( false );
278 stack->raiseWidget(bookmarkSelector); 275 stack->raiseWidget(bookmarkSelector);
279 bar->show(); 276 bar->show();
280} 277}
281 278
282void KVNC::statusMessage( const QString &m ) 279void KVNC::statusMessage( const QString &m )
283{ 280{
284 Global::statusMessage( m ); 281 Global::statusMessage( m );
285} 282}
286 283
287void KVNC::error( const QString &msg ) 284void KVNC::error( const QString &msg )
288{ 285{
289 statusMessage( msg ); 286 statusMessage( msg );
290 QMessageBox::warning( this, tr("VNC Viewer"), msg ); 287 QMessageBox::warning( this, tr("VNC Viewer"), msg );
291} 288}
292void KVNC::deleteBookmark(void) 289void KVNC::deleteBookmark(void)
293{ 290{
294 bookmarkSelector->deleteBookmark(bookmarkSelector->selectedBookmark()); 291 bookmarkSelector->deleteBookmark(bookmarkSelector->selectedBookmark());
295} 292}