author | ar <ar> | 2004-05-03 21:35:18 (UTC) |
---|---|---|
committer | ar <ar> | 2004-05-03 21:35:18 (UTC) |
commit | 412619441fab46fc79c695a23ccf9e38135bdfad (patch) (unidiff) | |
tree | 19d9b8af14cf6c345ef532bb32368b9c7b43c50f | |
parent | d1095d71394779557f446e2a67ba55bc62eec859 (diff) | |
download | opie-412619441fab46fc79c695a23ccf9e38135bdfad.zip opie-412619441fab46fc79c695a23ccf9e38135bdfad.tar.gz opie-412619441fab46fc79c695a23ccf9e38135bdfad.tar.bz2 |
- convert qDebug to odebug
29 files changed, 5340 insertions, 5269 deletions
diff --git a/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp b/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp index 5b22b00..270a4cf 100644 --- a/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp +++ b/noncore/apps/opie-gutenbrowser/LibraryDialog.cpp | |||
@@ -1,1067 +1,1071 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | // LibraryDialog.cpp - description | 2 | // LibraryDialog.cpp - description |
3 | // ------------------- | 3 | // ------------------- |
4 | // begin : Sat Aug 19 2000 | 4 | // begin : Sat Aug 19 2000 |
5 | // copyright : (C) 2000 - 2004 by llornkcor | 5 | // copyright : (C) 2000 - 2004 by llornkcor |
6 | // email : ljp@llornkcor.com | 6 | // email : ljp@llornkcor.com |
7 | // ***************************************************/ | 7 | // ***************************************************/ |
8 | // /*************************************************************************** | 8 | // /*************************************************************************** |
9 | // * This program is free software; you can redistribute it and/or modify * | 9 | // * This program is free software; you can redistribute it and/or modify * |
10 | // * it under the terms of the GNU General Public License as published by * | 10 | // * it under the terms of the GNU General Public License as published by * |
11 | // * the Free Software Foundation; either version 2 of the License, or * | 11 | // * the Free Software Foundation; either version 2 of the License, or * |
12 | // * (at your option) any later version. * | 12 | // * (at your option) any later version. * |
13 | // ***************************************************************************/ | 13 | // ***************************************************************************/ |
14 | //ftp://ibiblio.org/pub/docs/books/gutenberg/GUTINDEX.ALL | 14 | //ftp://ibiblio.org/pub/docs/books/gutenberg/GUTINDEX.ALL |
15 | 15 | ||
16 | #include "LibraryDialog.h" | ||
17 | #include "output.h" | ||
18 | |||
19 | /* OPIE */ | ||
16 | #include <qpe/applnk.h> | 20 | #include <qpe/applnk.h> |
17 | #include <qpe/qpeapplication.h> | 21 | #include <qpe/qpeapplication.h> |
18 | #include <qpe/qpedialog.h> | 22 | #include <qpe/qpedialog.h> |
23 | #include <opie2/odebug.h> | ||
19 | 24 | ||
20 | #include "LibraryDialog.h" | 25 | /* QT */ |
21 | #include "output.h" | ||
22 | |||
23 | #include <qpushbutton.h> | 26 | #include <qpushbutton.h> |
24 | #include <qmultilineedit.h> | 27 | #include <qmultilineedit.h> |
25 | //#include <qlayout.h> | 28 | //#include <qlayout.h> |
26 | 29 | ||
30 | /* STD */ | ||
27 | #include <unistd.h> | 31 | #include <unistd.h> |
28 | #include <stdio.h> | 32 | #include <stdio.h> |
29 | #include <stdlib.h> | 33 | #include <stdlib.h> |
30 | 34 | ||
31 | /* | 35 | /* |
32 | * The dialog will by default be modeless, unless you set 'modal' to | 36 | * The dialog will by default be modeless, unless you set 'modal' to |
33 | * TRUE to construct a modal dialog. */ | 37 | * TRUE to construct a modal dialog. */ |
34 | LibraryDialog::LibraryDialog( QWidget* parent, const char* name , bool modal, WFlags fl ) | 38 | LibraryDialog::LibraryDialog( QWidget* parent, const char* name , bool modal, WFlags fl ) |
35 | : QDialog( parent, name, true/* modal*/, fl ) | 39 | : QDialog( parent, name, true/* modal*/, fl ) |
36 | { | 40 | { |
37 | if ( !name ) | 41 | if ( !name ) |
38 | setName( "LibraryDialog" ); | 42 | setName( "LibraryDialog" ); |
39 | indexLoaded=false; | 43 | indexLoaded=false; |
40 | initDialog(); | 44 | initDialog(); |
41 | 45 | ||
42 | // this->setMaximumWidth(240); | 46 | // this->setMaximumWidth(240); |
43 | 47 | ||
44 | index = "GUTINDEX.ALL"; | 48 | index = "GUTINDEX.ALL"; |
45 | local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; | 49 | local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; |
46 | local_index = local_library + index; | 50 | local_index = local_library + index; |
47 | 51 | ||
48 | QString iniFile ; | 52 | QString iniFile ; |
49 | iniFile = QPEApplication::qpeDir()+"/etc/gutenbrowser/gutenbrowserrc"; | 53 | iniFile = QPEApplication::qpeDir()+"/etc/gutenbrowser/gutenbrowserrc"; |
50 | 54 | ||
51 | new_index =QPEApplication::qpeDir()+"/etc/gutenbrowser/PGWHOLE.TXT"; | 55 | new_index =QPEApplication::qpeDir()+"/etc/gutenbrowser/PGWHOLE.TXT"; |
52 | 56 | ||
53 | old_index = QPEApplication::qpeDir()+"/etc/gutenbrowser/GUTINDEX.ALL"; | 57 | old_index = QPEApplication::qpeDir()+"/etc/gutenbrowser/GUTINDEX.ALL"; |
54 | // old_index = QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL"; | 58 | // old_index = QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL"; |
55 | 59 | ||
56 | // iniFile = local_library+"gutenbrowserrc"; | 60 | // iniFile = local_library+"gutenbrowserrc"; |
57 | // new_index = local_library + "PGWHOLE.TXT"; | 61 | // new_index = local_library + "PGWHOLE.TXT"; |
58 | // old_index = local_library + "GUTINDEX.ALL"; | 62 | // old_index = local_library + "GUTINDEX.ALL"; |
59 | 63 | ||
60 | Config config("Gutenbrowser"); | 64 | Config config("Gutenbrowser"); |
61 | 65 | ||
62 | config.setGroup( "HttpServer" ); | 66 | config.setGroup( "HttpServer" ); |
63 | proxy_http = config.readEntry("Preferred", "http://sailor.gutenbook.org"); | 67 | proxy_http = config.readEntry("Preferred", "http://sailor.gutenbook.org"); |
64 | 68 | ||
65 | config.setGroup( "FTPsite" ); | 69 | config.setGroup( "FTPsite" ); |
66 | ftp_host=config.readEntry("SiteName", "sailor.gutenberg.org"); | 70 | ftp_host=config.readEntry("SiteName", "sailor.gutenberg.org"); |
67 | qDebug("Library Dialog: ftp_host is "+ftp_host); | 71 | odebug << "Library Dialog: ftp_host is "+ftp_host << oendl; |
68 | // ftp_host=ftp_host.right(ftp_host.length()-(ftp_host.find(") ",0,TRUE)+1) ); | 72 | // ftp_host=ftp_host.right(ftp_host.length()-(ftp_host.find(") ",0,TRUE)+1) ); |
69 | // ftp_host=ftp_host.stripWhiteSpace(); | 73 | // ftp_host=ftp_host.stripWhiteSpace(); |
70 | ftp_base_dir= config.readEntry("base", "/pub/gutenberg"); | 74 | ftp_base_dir= config.readEntry("base", "/pub/gutenberg"); |
71 | 75 | ||
72 | i_binary = 0; | 76 | i_binary = 0; |
73 | 77 | ||
74 | config.setGroup("SortAuth"); | 78 | config.setGroup("SortAuth"); |
75 | if( config.readEntry("authSort", "FALSE") == "TRUE") | 79 | if( config.readEntry("authSort", "FALSE") == "TRUE") |
76 | authBox->setChecked(TRUE); | 80 | authBox->setChecked(TRUE); |
77 | 81 | ||
78 | config.setGroup("General"); | 82 | config.setGroup("General"); |
79 | downDir =config.readEntry( "DownloadDirectory",local_library); | 83 | downDir =config.readEntry( "DownloadDirectory",local_library); |
80 | qDebug("downDir is "+downDir); | 84 | odebug << "downDir is "+downDir << oendl; |
81 | newindexLib.setName( old_index); | 85 | newindexLib.setName( old_index); |
82 | indexLib.setName( old_index); | 86 | indexLib.setName( old_index); |
83 | 87 | ||
84 | new QPEDialogListener(this); | 88 | new QPEDialogListener(this); |
85 | } | 89 | } |
86 | 90 | ||
87 | LibraryDialog::~LibraryDialog() | 91 | LibraryDialog::~LibraryDialog() |
88 | { | 92 | { |
89 | // delete QList_Item2; | 93 | // delete QList_Item2; |
90 | // delete QList_Item1; | 94 | // delete QList_Item1; |
91 | // delete QList_Item3; | 95 | // delete QList_Item3; |
92 | // delete QList_Item4; | 96 | // delete QList_Item4; |
93 | // delete QList_Item5; | 97 | // delete QList_Item5; |
94 | 98 | ||
95 | //saveConfig(); | 99 | // saveConfig(); |
96 | } | 100 | } |
97 | 101 | ||
98 | /*This groks using PGWHOLE.TXT */ | 102 | /*This groks using PGWHOLE.TXT */ |
99 | void LibraryDialog::Newlibrary() | 103 | void LibraryDialog::Newlibrary() |
100 | { | 104 | { |
101 | #ifndef Q_WS_QWS //sorry embedded gutenbrowser cant use zip files | 105 | #ifndef Q_WS_QWS //sorry embedded gutenbrowser cant use zip files |
102 | //qDebug("Opening new library index %s",newindexLib); | 106 | //odebug << "Opening new library index " << newindexLib << "" << oendl; |
103 | if ( newindexLib.open( IO_ReadOnly) ) { | 107 | if ( newindexLib.open( IO_ReadOnly) ) { |
104 | setCaption( tr( "Library Index - using master pg index." ) );// file opened successfully | 108 | setCaption( tr( "Library Index - using master pg index." ) );// file opened successfully |
105 | QTextStream indexStream( &newindexLib ); | 109 | QTextStream indexStream( &newindexLib ); |
106 | QString indexLine; | 110 | QString indexLine; |
107 | while ( !indexStream.atEnd() ) { // until end of file.. | 111 | while ( !indexStream.atEnd() ) { // until end of file.. |
108 | indexLine = indexStream.readLine(); | 112 | indexLine = indexStream.readLine(); |
109 | if ( ( indexLine.mid(4,4)).toInt() && !( indexLine.left(3)).toInt()) { | 113 | if ( ( indexLine.mid(4,4)).toInt() && !( indexLine.left(3)).toInt()) { |
110 | year = indexLine.mid(4,4); | 114 | year = indexLine.mid(4,4); |
111 | year = year.stripWhiteSpace(); | 115 | year = year.stripWhiteSpace(); |
112 | file = indexLine.mid( indexLine.find( "[", 0, TRUE )+1, 12 ); | 116 | file = indexLine.mid( indexLine.find( "[", 0, TRUE )+1, 12 ); |
113 | file = file.stripWhiteSpace(); | 117 | file = file.stripWhiteSpace(); |
114 | number = indexLine.mid( indexLine.find( "]", 0, TRUE ) +1, indexLine.find( " ", 0, TRUE )+1 ); | 118 | number = indexLine.mid( indexLine.find( "]", 0, TRUE ) +1, indexLine.find( " ", 0, TRUE )+1 ); |
115 | if( year.toInt() < 1984) | 119 | if( year.toInt() < 1984) |
116 | number = number.left( number.length() -1 ); | 120 | number = number.left( number.length() -1 ); |
117 | number = number.stripWhiteSpace(); | 121 | number = number.stripWhiteSpace(); |
118 | title = indexLine.mid( indexLine.find(" ", 26, TRUE), indexLine.length() ); | 122 | title = indexLine.mid( indexLine.find(" ", 26, TRUE), indexLine.length() ); |
119 | title = title.stripWhiteSpace(); | 123 | title = title.stripWhiteSpace(); |
120 | 124 | ||
121 | getAuthor(); // groks author | 125 | getAuthor(); // groks author |
122 | author = author.stripWhiteSpace(); | 126 | author = author.stripWhiteSpace(); |
123 | if (authBox->isChecked()) { // this reverses the first name and last name of the author | 127 | if (authBox->isChecked()) { // this reverses the first name and last name of the author |
124 | // qDebug("Sorting last name first"); | 128 | // odebug << "Sorting last name first" << oendl; |
125 | QString lastName, firstName=""; | 129 | QString lastName, firstName=""; |
126 | int finder=author.findRev( ' ', -1, TRUE); | 130 | int finder=author.findRev( ' ', -1, TRUE); |
127 | lastName=author.right( author.length()-finder); | 131 | lastName=author.right( author.length()-finder); |
128 | firstName=author.left(finder); | 132 | firstName=author.left(finder); |
129 | lastName=lastName.stripWhiteSpace(); | 133 | lastName=lastName.stripWhiteSpace(); |
130 | firstName=firstName.stripWhiteSpace(); | 134 | firstName=firstName.stripWhiteSpace(); |
131 | 135 | ||
132 | if( lastName.find( firstName, 0, true) == -1) // this avoids dup names | 136 | if( lastName.find( firstName, 0, true) == -1) // this avoids dup names |
133 | author=lastName+", "+firstName; | 137 | author=lastName+", "+firstName; |
134 | } | 138 | } |
135 | 139 | ||
136 | if( !number.isEmpty() && (title.find( "reserved",0, FALSE) == -1) && (file.find( "]",0, TRUE) == -1) ) { | 140 | if( !number.isEmpty() && (title.find( "reserved",0, FALSE) == -1) && (file.find( "]",0, TRUE) == -1) ) { |
137 | 141 | ||
138 | // fill string list or something to be able to resort the whole library | 142 | // fill string list or something to be able to resort the whole library |
139 | if( author.isEmpty() ) | 143 | if( author.isEmpty() ) |
140 | QList_Item5 = new QListViewItem( ListView5, /* number,*/ title, author, year, file ); | 144 | QList_Item5 = new QListViewItem( ListView5, /* number,*/ title, author, year, file ); |
141 | else { | 145 | else { |
142 | 146 | ||
143 | if( (author.left(1) >= QString("A") && author.left(1) <= QString("F")) || | 147 | if( (author.left(1) >= QString("A") && author.left(1) <= QString("F")) || |
144 | (author.left(1) >= QString("a") && author.left(1) <= QString("f")) ) | 148 | (author.left(1) >= QString("a") && author.left(1) <= QString("f")) ) |
145 | QList_Item1 = new QListViewItem( ListView1,/* number,*/ title, author, year, file ); | 149 | QList_Item1 = new QListViewItem( ListView1,/* number,*/ title, author, year, file ); |
146 | 150 | ||
147 | else if( (author.left(1) >= QString("G") && author.left(1) <= QString("M")) || | 151 | else if( (author.left(1) >= QString("G") && author.left(1) <= QString("M")) || |
148 | (author.left(1) >= QString("g") && author.left(1) <= QString("m")) ) | 152 | (author.left(1) >= QString("g") && author.left(1) <= QString("m")) ) |
149 | QList_Item2 = new QListViewItem( ListView2, /*number, */title, author, year, file ); | 153 | QList_Item2 = new QListViewItem( ListView2, /*number, */title, author, year, file ); |
150 | 154 | ||
151 | else if( (author.left(1) >= QString("N") && author.left(1) <= QString("R")) || | 155 | else if( (author.left(1) >= QString("N") && author.left(1) <= QString("R")) || |
152 | (author.left(1) >= QString("n") && author.left(1) <= QString("r")) ) | 156 | (author.left(1) >= QString("n") && author.left(1) <= QString("r")) ) |
153 | QList_Item3 = new QListViewItem( ListView3, /*number,*/ title, author, year, file ); | 157 | QList_Item3 = new QListViewItem( ListView3, /*number,*/ title, author, year, file ); |
154 | 158 | ||
155 | else if( (author.left(1) >= QString("S") && author.left(1) <= QString("Z")) || | 159 | else if( (author.left(1) >= QString("S") && author.left(1) <= QString("Z")) || |
156 | (author.left(1) >= QString("s") && author.left(1) <= QString("z")) ) | 160 | (author.left(1) >= QString("s") && author.left(1) <= QString("z")) ) |
157 | QList_Item4 = new QListViewItem( ListView4, /* number,*/ title, author, year, file ); | 161 | QList_Item4 = new QListViewItem( ListView4, /* number,*/ title, author, year, file ); |
158 | 162 | ||
159 | else | 163 | else |
160 | QList_Item5 = new QListViewItem( ListView5, /* number,*/ title, author, year, file ); | 164 | QList_Item5 = new QListViewItem( ListView5, /* number,*/ title, author, year, file ); |
161 | } | 165 | } |
162 | } | 166 | } |
163 | }// end if | 167 | }// end if |
164 | }// end while | 168 | }// end while |
165 | newindexLib.close(); | 169 | newindexLib.close(); |
166 | } | 170 | } |
167 | #ifndef Q_WS_QWS | 171 | #ifndef Q_WS_QWS |
168 | setCursor( arrowCursor); | 172 | setCursor( arrowCursor); |
169 | #endif | 173 | #endif |
170 | #endif | 174 | #endif |
171 | } // end Newlibrary() | 175 | } // end Newlibrary() |
172 | 176 | ||
173 | 177 | ||
174 | void LibraryDialog::Library() | 178 | void LibraryDialog::Library() |
175 | {// old library groking method | 179 | {// old library groking method |
176 | 180 | ||
177 | ListView1->clear(); | 181 | ListView1->clear(); |
178 | ListView2->clear(); | 182 | ListView2->clear(); |
179 | ListView3->clear(); | 183 | ListView3->clear(); |
180 | ListView4->clear(); | 184 | ListView4->clear(); |
181 | ListView5->clear(); | 185 | ListView5->clear(); |
182 | 186 | ||
183 | qDebug("opening GUTINDEX.ALL file"); | 187 | odebug << "opening GUTINDEX.ALL file" << oendl; |
184 | IDontKnowWhy = ""; | 188 | IDontKnowWhy = ""; |
185 | if ( indexLib.open( IO_ReadOnly) ) { // file opened successfully | 189 | if ( indexLib.open( IO_ReadOnly) ) { // file opened successfully |
186 | QTextStream indexStream( &indexLib ); | 190 | QTextStream indexStream( &indexLib ); |
187 | QString indexLine; | 191 | QString indexLine; |
188 | qApp->processEvents(); | 192 | qApp->processEvents(); |
189 | // int jig; | 193 | // int jig; |
190 | while ( !indexStream.eof() ) { | 194 | while ( !indexStream.eof() ) { |
191 | 195 | ||
192 | indexLine = indexStream.readLine(); | 196 | indexLine = indexStream.readLine(); |
193 | if ( indexLine != "") { | 197 | if ( indexLine != "") { |
194 | if( (indexLine.mid(4,4)).toInt() /* && !( indexLine.left(3)).toInt()*/ ) { | 198 | if( (indexLine.mid(4,4)).toInt() /* && !( indexLine.left(3)).toInt()*/ ) { |
195 | // month = indexLine.left( 3); | 199 | // month = indexLine.left( 3); |
196 | year = indexLine.mid(4,4); | 200 | year = indexLine.mid(4,4); |
197 | // title = indexLine.mid( 9, 50); | 201 | // title = indexLine.mid( 9, 50); |
198 | file = indexLine.mid(60,12); | 202 | file = indexLine.mid(60,12); |
199 | if(file.left(1).find("[",0,TRUE) != -1) | 203 | if(file.left(1).find("[",0,TRUE) != -1) |
200 | file.remove(1,1); | 204 | file.remove(1,1); |
201 | if( file.find("]",0,TRUE) != -1) | 205 | if( file.find("]",0,TRUE) != -1) |
202 | file = file.left( file.find("]",0,TRUE)); | 206 | file = file.left( file.find("]",0,TRUE)); |
203 | //qDebug("file is "+file); | 207 | //odebug << "file is "+file << oendl; |
204 | /// number = indexLine.mid( indexLine.find( "]", 0, TRUE ) +1, indexLine.find( " ", 0, TRUE )+1 ); | 208 | /// number = indexLine.mid( indexLine.find( "]", 0, TRUE ) +1, indexLine.find( " ", 0, TRUE )+1 ); |
205 | number = indexLine.mid(55,5); | 209 | number = indexLine.mid(55,5); |
206 | number = number.stripWhiteSpace(); | 210 | number = number.stripWhiteSpace(); |
207 | // title = indexLine.mid( indexLine.find(" ", 26, TRUE), indexLine.length() ); | 211 | // title = indexLine.mid( indexLine.find(" ", 26, TRUE), indexLine.length() ); |
208 | title = indexLine.mid( 9, 50 ); | 212 | title = indexLine.mid( 9, 50 ); |
209 | title = title.stripWhiteSpace(); | 213 | title = title.stripWhiteSpace(); |
210 | //qDebug("title is "+title); | 214 | //odebug << "title is "+title << oendl; |
211 | getAuthor(); // grok author | 215 | getAuthor(); // grok author |
212 | author = author.stripWhiteSpace(); | 216 | author = author.stripWhiteSpace(); |
213 | //qDebug("author is "+author); | 217 | //odebug << "author is "+author << oendl; |
214 | if (authBox->isChecked() == TRUE) { // this reverses the first name and last name of the author | 218 | if (authBox->isChecked() == TRUE) { // this reverses the first name and last name of the author |
215 | QString lastName, firstName=""; | 219 | QString lastName, firstName=""; |
216 | int finder=author.findRev( ' ', -1, TRUE); | 220 | int finder=author.findRev( ' ', -1, TRUE); |
217 | lastName=author.right( author.length()-finder); | 221 | lastName=author.right( author.length()-finder); |
218 | firstName=author.left(finder); | 222 | firstName=author.left(finder); |
219 | lastName=lastName.stripWhiteSpace(); | 223 | lastName=lastName.stripWhiteSpace(); |
220 | firstName=firstName.stripWhiteSpace(); | 224 | firstName=firstName.stripWhiteSpace(); |
221 | 225 | ||
222 | if( lastName.find( firstName, 0, true) == -1) // this avoids dup names | 226 | if( lastName.find( firstName, 0, true) == -1) // this avoids dup names |
223 | author=lastName+", "+firstName; | 227 | author=lastName+", "+firstName; |
224 | } | 228 | } |
225 | 229 | ||
226 | if( !number.isEmpty() && (title.find( "reserved",0, FALSE) == -1) /*&& (file.find( "]",0, TRUE))*/ ) { | 230 | if( !number.isEmpty() && (title.find( "reserved",0, FALSE) == -1) /*&& (file.find( "]",0, TRUE))*/ ) { |
227 | // fill string list or something to be able to sort by Author | 231 | // fill string list or something to be able to sort by Author |
228 | if( author.isEmpty() ) | 232 | if( author.isEmpty() ) |
229 | QList_Item5 = new QListViewItem( ListView5, /*number, */title, author, year, file ); | 233 | QList_Item5 = new QListViewItem( ListView5, /*number, */title, author, year, file ); |
230 | else { | 234 | else { |
231 | if( (author.left(1) >= QString("A") && author.left(1) <= QString("F")) || | 235 | if( (author.left(1) >= QString("A") && author.left(1) <= QString("F")) || |
232 | (author.left(1) >= QString("a") && author.left(1) <= QString("f")) ) | 236 | (author.left(1) >= QString("a") && author.left(1) <= QString("f")) ) |
233 | QList_Item1 = new QListViewItem( ListView1, /* number,*/ title, author, year, file ); | 237 | QList_Item1 = new QListViewItem( ListView1, /* number,*/ title, author, year, file ); |
234 | 238 | ||
235 | else if( (author.left(1) >= QString("G") && author.left(1) <= QString("M")) || | 239 | else if( (author.left(1) >= QString("G") && author.left(1) <= QString("M")) || |
236 | (author.left(1) >= QString("g") && author.left(1) <= QString("m")) ) | 240 | (author.left(1) >= QString("g") && author.left(1) <= QString("m")) ) |
237 | QList_Item2 = new QListViewItem( ListView2, /* number,*/ title, author, year, file ); | 241 | QList_Item2 = new QListViewItem( ListView2, /* number,*/ title, author, year, file ); |
238 | 242 | ||
239 | else if( (author.left(1) >= QString("N") && author.left(1) <= QString("R")) || | 243 | else if( (author.left(1) >= QString("N") && author.left(1) <= QString("R")) || |
240 | (author.left(1) >= QString("n") && author.left(1) <= QString("r")) ) | 244 | (author.left(1) >= QString("n") && author.left(1) <= QString("r")) ) |
241 | QList_Item3 = new QListViewItem( ListView3, /* number,*/ title, author, year, file ); | 245 | QList_Item3 = new QListViewItem( ListView3, /* number,*/ title, author, year, file ); |
242 | 246 | ||
243 | else if( (author.left(1) >= QString("S") && author.left(1) <= QString("Z")) || | 247 | else if( (author.left(1) >= QString("S") && author.left(1) <= QString("Z")) || |
244 | (author.left(1) >= QString("s") && author.left(1) <= QString("z")) ) | 248 | (author.left(1) >= QString("s") && author.left(1) <= QString("z")) ) |
245 | QList_Item4 = new QListViewItem( ListView4, /* number,*/ title, author, year, file ); | 249 | QList_Item4 = new QListViewItem( ListView4, /* number,*/ title, author, year, file ); |
246 | } | 250 | } |
247 | } | 251 | } |
248 | } | 252 | } |
249 | } | 253 | } |
250 | } | 254 | } |
251 | indexLib.close(); | 255 | indexLib.close(); |
252 | } else { | 256 | } else { |
253 | QString sMsg; | 257 | QString sMsg; |
254 | sMsg = ( tr("Error opening local library index:\n "))+local_index; | 258 | sMsg = ( tr("Error opening local library index:\n "))+local_index; |
255 | QMessageBox::message( "Error",sMsg); | 259 | QMessageBox::message( "Error",sMsg); |
256 | } | 260 | } |
257 | 261 | ||
258 | } //end Library() | 262 | } //end Library() |
259 | 263 | ||
260 | 264 | ||
261 | /* | 265 | /* |
262 | Groks the author out of the title */ | 266 | Groks the author out of the title */ |
263 | bool LibraryDialog::getAuthor() | 267 | bool LibraryDialog::getAuthor() |
264 | { | 268 | { |
265 | if( title.contains( ", by", TRUE)) { | 269 | if( title.contains( ", by", TRUE)) { |
266 | int auth; | 270 | int auth; |
267 | auth = title.find(", by", 0, TRUE); | 271 | auth = title.find(", by", 0, TRUE); |
268 | author = title.right(title.length() - (auth + 4) ); | 272 | author = title.right(title.length() - (auth + 4) ); |
269 | if( int finder = author.find("[", 0, TRUE)) { | 273 | if( int finder = author.find("[", 0, TRUE)) { |
270 | author = author.left(finder); | 274 | author = author.left(finder); |
271 | } | 275 | } |
272 | } | 276 | } |
273 | else if ( title.contains( "by, ", TRUE) ) { | 277 | else if ( title.contains( "by, ", TRUE) ) { |
274 | int auth; | 278 | int auth; |
275 | auth = title.find("by, ", 0, TRUE); | 279 | auth = title.find("by, ", 0, TRUE); |
276 | author = title.right(title.length() - (auth + 4) ); | 280 | author = title.right(title.length() - (auth + 4) ); |
277 | if( int finder = author.find("[", 0, TRUE)) { | 281 | if( int finder = author.find("[", 0, TRUE)) { |
278 | author = author.left( finder); | 282 | author = author.left( finder); |
279 | } | 283 | } |
280 | } | 284 | } |
281 | else if ( title.contains( " by", TRUE) ) { | 285 | else if ( title.contains( " by", TRUE) ) { |
282 | int auth; | 286 | int auth; |
283 | auth = title.find(" by", 0, TRUE); | 287 | auth = title.find(" by", 0, TRUE); |
284 | author = title.right(title.length() - (auth + 3) ); | 288 | author = title.right(title.length() - (auth + 3) ); |
285 | if( int finder = author.find("[", 0, TRUE)) { | 289 | if( int finder = author.find("[", 0, TRUE)) { |
286 | author = author.left( finder); | 290 | author = author.left( finder); |
287 | } | 291 | } |
288 | } | 292 | } |
289 | else if ( title.contains( "by ", TRUE) ) { | 293 | else if ( title.contains( "by ", TRUE) ) { |
290 | int auth; | 294 | int auth; |
291 | auth = title.find("by ", 0, TRUE); | 295 | auth = title.find("by ", 0, TRUE); |
292 | author = title.right(title.length() - (auth + 3) ); | 296 | author = title.right(title.length() - (auth + 3) ); |
293 | if( int finder = author.find("[", 0, TRUE)) { | 297 | if( int finder = author.find("[", 0, TRUE)) { |
294 | author = author.left( finder); | 298 | author = author.left( finder); |
295 | } | 299 | } |
296 | } | 300 | } |
297 | else if ( title.contains( ",", TRUE) ) { | 301 | else if ( title.contains( ",", TRUE) ) { |
298 | int auth; | 302 | int auth; |
299 | auth = title.find(",", 0, TRUE); | 303 | auth = title.find(",", 0, TRUE); |
300 | author = title.right( title.length() - (auth + 1) ); | 304 | author = title.right( title.length() - (auth + 1) ); |
301 | if ( author.contains( ",", TRUE) ) { | 305 | if ( author.contains( ",", TRUE) ) { |
302 | int auth; | 306 | int auth; |
303 | auth = author.find(",", 0, TRUE); | 307 | auth = author.find(",", 0, TRUE); |
304 | author = author.right( author.length() - (auth + 1) ); | 308 | author = author.right( author.length() - (auth + 1) ); |
305 | } | 309 | } |
306 | if( int finder = author.find("[", 0, TRUE)) { | 310 | if( int finder = author.find("[", 0, TRUE)) { |
307 | author = author.left( finder); | 311 | author = author.left( finder); |
308 | } | 312 | } |
309 | } | 313 | } |
310 | else if ( title.contains( "/", TRUE) ) { | 314 | else if ( title.contains( "/", TRUE) ) { |
311 | int auth; | 315 | int auth; |
312 | auth = title.find("/", 0, TRUE); | 316 | auth = title.find("/", 0, TRUE); |
313 | author = title.right(title.length() - (auth + 1) ); | 317 | author = title.right(title.length() - (auth + 1) ); |
314 | if( int finder = author.find("[", 0, TRUE)) { | 318 | if( int finder = author.find("[", 0, TRUE)) { |
315 | author = author.left( finder); | 319 | author = author.left( finder); |
316 | } | 320 | } |
317 | } | 321 | } |
318 | else if ( title.contains( "of", TRUE) ) { | 322 | else if ( title.contains( "of", TRUE) ) { |
319 | int auth; | 323 | int auth; |
320 | auth = title.find("of", 0, TRUE); | 324 | auth = title.find("of", 0, TRUE); |
321 | author = title.right(title.length() - (auth + 2) ); | 325 | author = title.right(title.length() - (auth + 2) ); |
322 | if( int finder = author.find("[", 0, TRUE)) | 326 | if( int finder = author.find("[", 0, TRUE)) |
323 | { | 327 | { |
324 | author = author.left( finder); | 328 | author = author.left( finder); |
325 | } | 329 | } |
326 | } else { | 330 | } else { |
327 | author = ""; | 331 | author = ""; |
328 | } | 332 | } |
329 | if ( author.contains("et. al")) { | 333 | if ( author.contains("et. al")) { |
330 | int auth; | 334 | int auth; |
331 | auth = author.find("et. al", 0, TRUE); | 335 | auth = author.find("et. al", 0, TRUE); |
332 | author = author.left( auth ); | 336 | author = author.left( auth ); |
333 | } | 337 | } |
334 | if ( author.contains("#")) { | 338 | if ( author.contains("#")) { |
335 | int auth; | 339 | int auth; |
336 | auth = author.find("#", 0, TRUE); | 340 | auth = author.find("#", 0, TRUE); |
337 | author = author.left( auth); | 341 | author = author.left( auth); |
338 | } | 342 | } |
339 | if ( author.contains("(")) { | 343 | if ( author.contains("(")) { |
340 | int auth; | 344 | int auth; |
341 | auth = author.find("(", 0, TRUE); | 345 | auth = author.find("(", 0, TRUE); |
342 | author = author.left( auth); | 346 | author = author.left( auth); |
343 | } | 347 | } |
344 | if ( author.contains("et al")) { | 348 | if ( author.contains("et al")) { |
345 | int auth; | 349 | int auth; |
346 | auth = author.find("et al", 0, TRUE); | 350 | auth = author.find("et al", 0, TRUE); |
347 | author = author.left( auth ); | 351 | author = author.left( auth ); |
348 | } | 352 | } |
349 | QRegExp r = QRegExp("[0-9]", TRUE, FALSE); | 353 | QRegExp r = QRegExp("[0-9]", TRUE, FALSE); |
350 | if ( author.left(2).find( r) != -1 ) { | 354 | if ( author.left(2).find( r) != -1 ) { |
351 | author = ""; | 355 | author = ""; |
352 | } | 356 | } |
353 | // if( author.contains(" ", TRUE)) { | 357 | // if( author.contains(" ", TRUE)) { |
354 | // int suth = author.findRev(" ", -1, TRUE); | 358 | // int suth = author.findRev(" ", -1, TRUE); |
355 | // author = author.right( author.length() - suth); | 359 | // author = author.right( author.length() - suth); |
356 | // } | 360 | // } |
357 | 361 | ||
358 | // title | 362 | // title |
359 | // author | 363 | // author |
360 | return true; | 364 | return true; |
361 | }////// end getAuthor() | 365 | }////// end getAuthor() |
362 | 366 | ||
363 | /* | 367 | /* |
364 | selected one etext*/ | 368 | selected one etext*/ |
365 | void LibraryDialog::select_title( QListViewItem * item) | 369 | void LibraryDialog::select_title( QListViewItem * item) |
366 | { | 370 | { |
367 | if(item != NULL) { | 371 | if(item != NULL) { |
368 | i++; | 372 | i++; |
369 | int index = tabWidget->currentPageIndex(); | 373 | int index = tabWidget->currentPageIndex(); |
370 | DlglistItemTitle = item->text(0); | 374 | DlglistItemTitle = item->text(0); |
371 | DlglistItemYear = item->text(2); | 375 | DlglistItemYear = item->text(2); |
372 | DlglistItemFile = item->text(3); | 376 | DlglistItemFile = item->text(3); |
373 | switch (index) { | 377 | switch (index) { |
374 | case 0: { | 378 | case 0: { |
375 | ListView1->clearSelection(); | 379 | ListView1->clearSelection(); |
376 | } | 380 | } |
377 | break; | 381 | break; |
378 | case 1: { | 382 | case 1: { |
379 | ListView2->clearSelection(); | 383 | ListView2->clearSelection(); |
380 | } | 384 | } |
381 | break; | 385 | break; |
382 | case 2: { | 386 | case 2: { |
383 | ListView3->clearSelection(); | 387 | ListView3->clearSelection(); |
384 | } | 388 | } |
385 | break; | 389 | break; |
386 | case 3: { | 390 | case 3: { |
387 | ListView4->clearSelection(); | 391 | ListView4->clearSelection(); |
388 | } | 392 | } |
389 | break; | 393 | break; |
390 | case 4: { | 394 | case 4: { |
391 | ListView5->clearSelection(); | 395 | ListView5->clearSelection(); |
392 | } | 396 | } |
393 | break; | 397 | break; |
394 | }; | 398 | }; |
395 | } | 399 | } |
396 | 400 | ||
397 | if(DlglistItemTitle.length()>2) { | 401 | if(DlglistItemTitle.length()>2) { |
398 | // DlglistItemNumber = item->text(0); | 402 | // DlglistItemNumber = item->text(0); |
399 | item = 0; | 403 | item = 0; |
400 | qDebug( "string from librarydialog is:%s %s %s", DlglistItemYear.latin1(),DlglistItemFile.latin1(),DlglistItemNumber.latin1()); | 404 | odebug << "string from librarydialog is:" << DlglistItemYear << " " << DlglistItemFile << " " << DlglistItemNumber << "" << oendl; |
401 | qDebug("Title is "+DlglistItemTitle); | 405 | odebug << "Title is "+DlglistItemTitle << oendl; |
402 | 406 | ||
403 | // check for connection here | 407 | // check for connection here |
404 | // if( get_extext()) | 408 | // if( get_extext()) |
405 | 409 | ||
406 | if(download_Etext()) { | 410 | if(download_Etext()) { |
407 | // qDebug("get here 2"); | 411 | // odebug << "get here 2" << oendl; |
408 | if(i_binary == 1) { | 412 | if(i_binary == 1) { |
409 | 413 | ||
410 | } | 414 | } |
411 | if(checkBox->isChecked () ) { | 415 | if(checkBox->isChecked () ) { |
412 | accept(); | 416 | accept(); |
413 | } | 417 | } |
414 | } | 418 | } |
415 | } | 419 | } |
416 | } | 420 | } |
417 | 421 | ||
418 | bool LibraryDialog::download_Etext() | 422 | bool LibraryDialog::download_Etext() |
419 | { // ftp method | 423 | { // ftp method |
420 | // might have to use old gpl'd ftp for embedded!! | 424 | // might have to use old gpl'd ftp for embedded!! |
421 | Config cfg("Gutenbrowser"); | 425 | Config cfg("Gutenbrowser"); |
422 | cfg.setGroup("FTPsite"); | 426 | cfg.setGroup("FTPsite"); |
423 | ftp_host=cfg.readEntry("SiteName", "sailor.gutenberg.org"); | 427 | ftp_host=cfg.readEntry("SiteName", "sailor.gutenberg.org"); |
424 | ftp_base_dir= cfg.readEntry("base", "/pub/gutenberg"); | 428 | ftp_base_dir= cfg.readEntry("base", "/pub/gutenberg"); |
425 | 429 | ||
426 | qDebug("about to network dialog"); | 430 | odebug << "about to network dialog" << oendl; |
427 | QString NewlistItemNumber, NewlistItemYear, ls_result, result_line, s, dir, networkUrl, outputFile; | 431 | QString NewlistItemNumber, NewlistItemYear, ls_result, result_line, s, dir, networkUrl, outputFile; |
428 | 432 | ||
429 | //////////////////// FIXME- if 'x' is part of real name.... | 433 | //////////////////// FIXME- if 'x' is part of real name.... |
430 | NewlistItemFile = DlglistItemFile.left(DlglistItemFile.find(".xxx", 1, FALSE)).left(DlglistItemFile.left(DlglistItemFile.find(".xxx", 1, FALSE)).find("x", 1, FALSE)); | 434 | NewlistItemFile = DlglistItemFile.left(DlglistItemFile.find(".xxx", 1, FALSE)).left(DlglistItemFile.left(DlglistItemFile.find(".xxx", 1, FALSE)).find("x", 1, FALSE)); |
431 | 435 | ||
432 | if( NewlistItemFile.find( DlglistItemFile.left(4) ,0,TRUE) ==-1 ) { | 436 | if( NewlistItemFile.find( DlglistItemFile.left(4) ,0,TRUE) ==-1 ) { |
433 | NewlistItemFile.replace( 0,4, DlglistItemFile.left(4)); | 437 | NewlistItemFile.replace( 0,4, DlglistItemFile.left(4)); |
434 | qDebug("NewlistItemFile is now "+NewlistItemFile); | 438 | odebug << "NewlistItemFile is now "+NewlistItemFile << oendl; |
435 | } | 439 | } |
436 | NewlistItemYear = DlglistItemYear.right(2); | 440 | NewlistItemYear = DlglistItemYear.right(2); |
437 | int NewlistItemYear_Int = NewlistItemYear.toInt(0, 10); | 441 | int NewlistItemYear_Int = NewlistItemYear.toInt(0, 10); |
438 | qDebug(NewlistItemYear); | 442 | odebug << NewlistItemYear << oendl; |
439 | if (NewlistItemYear_Int < 91 && NewlistItemYear_Int > 70) { | 443 | if (NewlistItemYear_Int < 91 && NewlistItemYear_Int > 70) { |
440 | NewlistItemYear = "90"; | 444 | NewlistItemYear = "90"; |
441 | } | 445 | } |
442 | Edir ="etext" +NewlistItemYear; | 446 | Edir ="etext" +NewlistItemYear; |
443 | dir= ftp_base_dir + "/etext" +NewlistItemYear+"/"; | 447 | dir= ftp_base_dir + "/etext" +NewlistItemYear+"/"; |
444 | if( ftp_base_dir.find("=",0,true) ) | 448 | if( ftp_base_dir.find("=",0,true) ) |
445 | ftp_base_dir.remove( ftp_base_dir.find("=",0,true),1); | 449 | ftp_base_dir.remove( ftp_base_dir.find("=",0,true),1); |
446 | 450 | ||
447 | networkUrl= "ftp://"+ftp_host+dir; | 451 | networkUrl= "ftp://"+ftp_host+dir; |
448 | 452 | ||
449 | outputFile=local_library+".guten_temp"; | 453 | outputFile=local_library+".guten_temp"; |
450 | //qDebug("Download file:%s",NewlistItemFile.latin1() ); | 454 | //odebug << "Download file:" << NewlistItemFile << "" << oendl; |
451 | qDebug("Checking: "+ftp_host+" "+dir+" "+outputFile+" "+NewlistItemFile); | 455 | odebug << "Checking: "+ftp_host+" "+dir+" "+outputFile+" "+NewlistItemFile << oendl; |
452 | QStringList networkList; | 456 | QStringList networkList; |
453 | networkList.append((const char *)ftp_host); | 457 | networkList.append((const char *)ftp_host); |
454 | networkList.append((const char *)dir); | 458 | networkList.append((const char *)dir); |
455 | networkList.append((const char *)outputFile); | 459 | networkList.append((const char *)outputFile); |
456 | networkList.append((const char *)NewlistItemFile); | 460 | networkList.append((const char *)NewlistItemFile); |
457 | //<< (char *)ftp_host << (char *)dir << (char *)outputFile << (char *)NewlistItemFile; | 461 | //<< (char *)ftp_host << (char *)dir << (char *)outputFile << (char *)NewlistItemFile; |
458 | 462 | ||
459 | NetworkDialog *NetworkDlg; | 463 | NetworkDialog *NetworkDlg; |
460 | NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog", TRUE, 0, networkList); | 464 | NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog", TRUE, 0, networkList); |
461 | 465 | ||
462 | 466 | ||
463 | if( NetworkDlg->exec() != 0 ) { // use new, improved, *INSTANT* network-dialog-file-getterer | 467 | if( NetworkDlg->exec() != 0 ) { // use new, improved, *INSTANT* network-dialog-file-getterer |
464 | File_Name= NetworkDlg->localFileName; | 468 | File_Name= NetworkDlg->localFileName; |
465 | qDebug("back to Library from Network Dialog"); | 469 | odebug << "back to Library from Network Dialog" << oendl; |
466 | qDebug("Just downloaded "+NetworkDlg->localFileName); | 470 | odebug << "Just downloaded "+NetworkDlg->localFileName << oendl; |
467 | 471 | ||
468 | // if (File_Name.find( local_library, 0, TRUE) != -1 ) { //could not be found | 472 | // if (File_Name.find( local_library, 0, TRUE) != -1 ) { //could not be found |
469 | // QString oldName=File_Name; | 473 | // QString oldName=File_Name; |
470 | // File_Name.replace(0,local_library.length(),downDir); | 474 | // File_Name.replace(0,local_library.length(),downDir); |
471 | // qDebug("File_Name now is "+File_Name); | 475 | // odebug << "File_Name now is "+File_Name << oendl; |
472 | 476 | ||
473 | // } | 477 | // } |
474 | // rename .txt to .etx | 478 | // rename .txt to .etx |
475 | if(NetworkDlg->successDownload) { | 479 | if(NetworkDlg->successDownload) { |
476 | qDebug("Filename is "+File_Name); | 480 | odebug << "Filename is "+File_Name << oendl; |
477 | if(File_Name.right(4)==".txt") { | 481 | if(File_Name.right(4)==".txt") { |
478 | QString s_fileName=File_Name; | 482 | QString s_fileName=File_Name; |
479 | s_fileName.replace( s_fileName.length()-3,3,"gtn"); | 483 | s_fileName.replace( s_fileName.length()-3,3,"gtn"); |
480 | // s_fileName.replace( s_fileName.length()-3,3,"etx"); | 484 | // s_fileName.replace( s_fileName.length()-3,3,"etx"); |
481 | rename(File_Name.latin1(),s_fileName.latin1()); | 485 | rename(File_Name.latin1(),s_fileName.latin1()); |
482 | File_Name=s_fileName; | 486 | File_Name=s_fileName; |
483 | 487 | ||
484 | qDebug("Filename is now "+File_Name); | 488 | odebug << "Filename is now "+File_Name << oendl; |
485 | 489 | ||
486 | } | 490 | } |
487 | if(File_Name.length() > 5 ) { | 491 | if(File_Name.length() > 5 ) { |
488 | setTitle(); | 492 | setTitle(); |
489 | QFileInfo fi(File_Name); | 493 | QFileInfo fi(File_Name); |
490 | QString name_file=fi.fileName(); | 494 | QString name_file=fi.fileName(); |
491 | name_file=name_file.left(name_file.length()-4); | 495 | name_file=name_file.left(name_file.length()-4); |
492 | 496 | ||
493 | qDebug("Setting doclink"); | 497 | odebug << "Setting doclink" << oendl; |
494 | DocLnk lnk; | 498 | DocLnk lnk; |
495 | qDebug("name is "+name_file); | 499 | odebug << "name is "+name_file << oendl; |
496 | lnk.setName(name_file); //sets file name | 500 | lnk.setName(name_file); //sets file name |
497 | qDebug("Title is "+DlglistItemTitle); | 501 | odebug << "Title is "+DlglistItemTitle << oendl; |
498 | lnk.setComment(DlglistItemTitle); | 502 | lnk.setComment(DlglistItemTitle); |
499 | 503 | ||
500 | qDebug("Filename is "+File_Name); | 504 | odebug << "Filename is "+File_Name << oendl; |
501 | lnk.setFile(File_Name); //sets File property | 505 | lnk.setFile(File_Name); //sets File property |
502 | lnk.setType("guten/plain");// hey is this a REGISTERED mime type?!?!? ;D | 506 | lnk.setType("guten/plain");// hey is this a REGISTERED mime type?!?!? ;D |
503 | lnk.setExec(File_Name); | 507 | lnk.setExec(File_Name); |
504 | lnk.setIcon("gutenbrowser/Gutenbrowser"); | 508 | lnk.setIcon("gutenbrowser/Gutenbrowser"); |
505 | if(!lnk.writeLink()) { | 509 | if(!lnk.writeLink()) { |
506 | qDebug("Writing doclink did not work"); | 510 | odebug << "Writing doclink did not work" << oendl; |
507 | } else { | 511 | } else { |
508 | } | 512 | } |
509 | } else | 513 | } else |
510 | QMessageBox::message("Note","There was an error\nwith the file"); | 514 | QMessageBox::message("Note","There was an error\nwith the file"); |
511 | } | 515 | } |
512 | } | 516 | } |
513 | return true; | 517 | return true; |
514 | } | 518 | } |
515 | 519 | ||
516 | bool LibraryDialog::httpDownload() | 520 | bool LibraryDialog::httpDownload() |
517 | {// httpDownload | 521 | {// httpDownload |
518 | #ifndef Q_WS_QWS | 522 | #ifndef Q_WS_QWS |
519 | Config config("Gutenbrowser"); | 523 | Config config("Gutenbrowser"); |
520 | config.setGroup( "Browser" ); | 524 | config.setGroup( "Browser" ); |
521 | QString brow = config.readEntry("Preferred", ""); | 525 | QString brow = config.readEntry("Preferred", ""); |
522 | QString file_name = "./.guten_temp"; | 526 | QString file_name = "./.guten_temp"; |
523 | // config.setGroup( "HttpServer" ); | 527 | // config.setGroup( "HttpServer" ); |
524 | // QString s_http = config.readEntry("Preferred", "http://sailor.gutenbook.org"); | 528 | // QString s_http = config.readEntry("Preferred", "http://sailor.gutenbook.org"); |
525 | QString httpName = proxy_http + "/"+Edir; | 529 | QString httpName = proxy_http + "/"+Edir; |
526 | // progressBar->setProgress( i); | 530 | // progressBar->setProgress( i); |
527 | i++; | 531 | i++; |
528 | if ( brow != "Konq") { /////////// use lynx | 532 | if ( brow != "Konq") { /////////// use lynx |
529 | // QString cmd = "lynx -source " + httpName +" | cat >> " + file_name; | 533 | // QString cmd = "lynx -source " + httpName +" | cat >> " + file_name; |
530 | // system(cmd); | 534 | // system(cmd); |
531 | } else { //////////// use KFM | 535 | } else { //////////// use KFM |
532 | // KFM::download( httpName, file_name); | 536 | // KFM::download( httpName, file_name); |
533 | } | 537 | } |
534 | i++; | 538 | i++; |
535 | QFile tmp( file_name); | 539 | QFile tmp( file_name); |
536 | QString str; | 540 | QString str; |
537 | if (tmp.open(IO_ReadOnly)) { | 541 | if (tmp.open(IO_ReadOnly)) { |
538 | QTextStream t( &tmp ); // use a text stream | 542 | QTextStream t( &tmp ); // use a text stream |
539 | while ( !t.eof()) { | 543 | while ( !t.eof()) { |
540 | QString s = t.readLine(); | 544 | QString s = t.readLine(); |
541 | if (s.contains( NewlistItemFile, FALSE) && (s.contains(".txt")) ) { | 545 | if (s.contains( NewlistItemFile, FALSE) && (s.contains(".txt")) ) { |
542 | str = s.mid( s.find( ".txt\">"+NewlistItemFile, 0, TRUE)+6, (s.find( ".txt</A>", 0, TRUE) + 4) - ( s.find( ".txt\">"+NewlistItemFile, 0, TRUE)+6 ) ); | 546 | str = s.mid( s.find( ".txt\">"+NewlistItemFile, 0, TRUE)+6, (s.find( ".txt</A>", 0, TRUE) + 4) - ( s.find( ".txt\">"+NewlistItemFile, 0, TRUE)+6 ) ); |
543 | httpName += "/" + str; | 547 | httpName += "/" + str; |
544 | } | 548 | } |
545 | } //end of while loop | 549 | } //end of while loop |
546 | } | 550 | } |
547 | tmp.close(); | 551 | tmp.close(); |
548 | m_getFilePath = local_library + str; | 552 | m_getFilePath = local_library + str; |
549 | i++; | 553 | i++; |
550 | if ( brow != "KFM"){ ///////// use lynx | 554 | if ( brow != "KFM"){ ///////// use lynx |
551 | QString cmd = "lynx -source " + httpName +" | cat >> " + m_getFilePath; | 555 | QString cmd = "lynx -source " + httpName +" | cat >> " + m_getFilePath; |
552 | // QMessageBox::message("Error", cmd); | 556 | // QMessageBox::message("Error", cmd); |
553 | system(cmd); | 557 | system(cmd); |
554 | } else { ////////// use KFM | 558 | } else { ////////// use KFM |
555 | // KFM::download( httpName, m_getFilePath); | 559 | // KFM::download( httpName, m_getFilePath); |
556 | } | 560 | } |
557 | i++; | 561 | i++; |
558 | #endif | 562 | #endif |
559 | return false; | 563 | return false; |
560 | } | 564 | } |
561 | 565 | ||
562 | void LibraryDialog::cancelIt() | 566 | void LibraryDialog::cancelIt() |
563 | { | 567 | { |
564 | saveConfig(); | 568 | saveConfig(); |
565 | 569 | ||
566 | DlglistItemNumber = ""; | 570 | DlglistItemNumber = ""; |
567 | this->reject(); | 571 | this->reject(); |
568 | } | 572 | } |
569 | 573 | ||
570 | bool LibraryDialog::setTitle() | 574 | bool LibraryDialog::setTitle() |
571 | { | 575 | { |
572 | Config config("Gutenbrowser"); | 576 | Config config("Gutenbrowser"); |
573 | qDebug("setting title"); | 577 | odebug << "setting title" << oendl; |
574 | qDebug(DlglistItemTitle); | 578 | odebug << DlglistItemTitle << oendl; |
575 | 579 | ||
576 | if( DlglistItemTitle.find("[",0,TRUE) != -1) | 580 | if( DlglistItemTitle.find("[",0,TRUE) != -1) |
577 | DlglistItemTitle.replace(DlglistItemTitle.find("[",0,TRUE),1, "(" ); | 581 | DlglistItemTitle.replace(DlglistItemTitle.find("[",0,TRUE),1, "(" ); |
578 | if( DlglistItemTitle.find("]",0,TRUE) !=-1) | 582 | if( DlglistItemTitle.find("]",0,TRUE) !=-1) |
579 | DlglistItemTitle.replace(DlglistItemTitle.find("]",0,TRUE),1, ")" ); | 583 | DlglistItemTitle.replace(DlglistItemTitle.find("]",0,TRUE),1, ")" ); |
580 | qDebug("Title being set is "+DlglistItemTitle); | 584 | odebug << "Title being set is "+DlglistItemTitle << oendl; |
581 | int test = 0; | 585 | int test = 0; |
582 | QString ramble, temp; | 586 | QString ramble, temp; |
583 | config.setGroup("Files"); | 587 | config.setGroup("Files"); |
584 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); | 588 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); |
585 | int i_numofFiles = s_numofFiles.toInt(); | 589 | int i_numofFiles = s_numofFiles.toInt(); |
586 | for ( int i = 0; i <= i_numofFiles; i++){ | 590 | for ( int i = 0; i <= i_numofFiles; i++){ |
587 | temp.setNum( i); | 591 | temp.setNum( i); |
588 | ramble = config.readEntry( temp, "" ); | 592 | ramble = config.readEntry( temp, "" ); |
589 | if( strcmp( ramble, File_Name) == 0){ | 593 | if( strcmp( ramble, File_Name) == 0){ |
590 | test = 1; | 594 | test = 1; |
591 | } | 595 | } |
592 | } | 596 | } |
593 | config.setGroup("Files"); | 597 | config.setGroup("Files"); |
594 | config.writeEntry( "NumberOfFiles", i_numofFiles +1 ); | 598 | config.writeEntry( "NumberOfFiles", i_numofFiles +1 ); |
595 | QString interger; | 599 | QString interger; |
596 | interger.setNum( i_numofFiles +1); | 600 | interger.setNum( i_numofFiles +1); |
597 | config.writeEntry( interger, File_Name); | 601 | config.writeEntry( interger, File_Name); |
598 | config.setGroup( "Titles" ); | 602 | config.setGroup( "Titles" ); |
599 | config.writeEntry( File_Name, DlglistItemTitle); | 603 | config.writeEntry( File_Name, DlglistItemTitle); |
600 | 604 | ||
601 | test = 0; | 605 | test = 0; |
602 | return true; | 606 | return true; |
603 | } | 607 | } |
604 | 608 | ||
605 | 609 | ||
606 | void LibraryDialog::saveConfig() | 610 | void LibraryDialog::saveConfig() |
607 | { | 611 | { |
608 | Config config("Gutenbrowser"); | 612 | Config config("Gutenbrowser"); |
609 | if( httpBox->isChecked() == TRUE) { | 613 | if( httpBox->isChecked() == TRUE) { |
610 | checked = 1; | 614 | checked = 1; |
611 | config.setGroup( "Proxy" ); | 615 | config.setGroup( "Proxy" ); |
612 | config.writeEntry("IsChecked", "TRUE"); | 616 | config.writeEntry("IsChecked", "TRUE"); |
613 | } else { | 617 | } else { |
614 | checked = 0; | 618 | checked = 0; |
615 | config.setGroup( "Proxy" ); | 619 | config.setGroup( "Proxy" ); |
616 | config.writeEntry("IsChecked", "FALSE"); | 620 | config.writeEntry("IsChecked", "FALSE"); |
617 | } | 621 | } |
618 | if (authBox->isChecked() == TRUE) { | 622 | if (authBox->isChecked() == TRUE) { |
619 | config.setGroup("SortAuth"); | 623 | config.setGroup("SortAuth"); |
620 | config.writeEntry("authSort", "TRUE"); | 624 | config.writeEntry("authSort", "TRUE"); |
621 | } else { | 625 | } else { |
622 | config.setGroup("SortAuth"); | 626 | config.setGroup("SortAuth"); |
623 | config.writeEntry("authSort", "FALSE"); | 627 | config.writeEntry("authSort", "FALSE"); |
624 | } | 628 | } |
625 | // config.write(); | 629 | // config.write(); |
626 | } | 630 | } |
627 | 631 | ||
628 | /* | 632 | /* |
629 | searches library index for user word*/ | 633 | searches library index for user word*/ |
630 | void LibraryDialog::onButtonSearch() | 634 | void LibraryDialog::onButtonSearch() |
631 | { | 635 | { |
632 | ListView1->clearSelection(); | 636 | ListView1->clearSelection(); |
633 | ListView2->clearSelection(); | 637 | ListView2->clearSelection(); |
634 | ListView3->clearSelection(); | 638 | ListView3->clearSelection(); |
635 | ListView4->clearSelection(); | 639 | ListView4->clearSelection(); |
636 | ListView5->clearSelection(); | 640 | ListView5->clearSelection(); |
637 | 641 | ||
638 | int curTab=tabWidget->currentPageIndex(); | 642 | int curTab=tabWidget->currentPageIndex(); |
639 | SearchDialog* searchDlg; | 643 | SearchDialog* searchDlg; |
640 | 644 | ||
641 | // if( resultsList) | 645 | // if( resultsList) |
642 | searchDlg = new SearchDialog( this, "Library Search", TRUE); | 646 | searchDlg = new SearchDialog( this, "Library Search", TRUE); |
643 | searchDlg->setCaption( tr( "Library Search" ) ); | 647 | searchDlg->setCaption( tr( "Library Search" ) ); |
644 | searchDlg->setLabel( "- author or title"); | 648 | searchDlg->setLabel( "- author or title"); |
645 | QString resultString; | 649 | QString resultString; |
646 | int i_berger = 0; | 650 | int i_berger = 0; |
647 | if( searchDlg->exec() != 0 ) { | 651 | if( searchDlg->exec() != 0 ) { |
648 | QString searcherStr = searchDlg->get_text(); | 652 | QString searcherStr = searchDlg->get_text(); |
649 | int fluff=0; | 653 | int fluff=0; |
650 | 654 | ||
651 | // int tabPage = tabWidget->currentPageIndex(); | 655 | // int tabPage = tabWidget->currentPageIndex(); |
652 | // TODO ititerate here... struct<listViews>?? | 656 | // TODO ititerate here... struct<listViews>?? |
653 | 657 | ||
654 | QListViewItemIterator it1( ListView1 ); | 658 | QListViewItemIterator it1( ListView1 ); |
655 | QListViewItemIterator it2( ListView2 ); | 659 | QListViewItemIterator it2( ListView2 ); |
656 | QListViewItemIterator it3( ListView3 ); | 660 | QListViewItemIterator it3( ListView3 ); |
657 | QListViewItemIterator it4( ListView4 ); | 661 | QListViewItemIterator it4( ListView4 ); |
658 | QListViewItemIterator it5( ListView5 ); | 662 | QListViewItemIterator it5( ListView5 ); |
659 | 663 | ||
660 | //// this is really pitiful work, | 664 | //// this is really pitiful work, |
661 | /////// | 665 | /////// |
662 | bool cS; | 666 | bool cS; |
663 | if( searchDlg->caseSensitiveCheckBox->isChecked()) | 667 | if( searchDlg->caseSensitiveCheckBox->isChecked()) |
664 | cS=true; //case sensitive | 668 | cS=true; //case sensitive |
665 | else | 669 | else |
666 | cS=false; | 670 | cS=false; |
667 | 671 | ||
668 | if(fluff==0) { | 672 | if(fluff==0) { |
669 | for ( ; it1.current(); ++it1 ) { | 673 | for ( ; it1.current(); ++it1 ) { |
670 | resultString = ( it1.current() )->text(0); | 674 | resultString = ( it1.current() )->text(0); |
671 | resultString += (" : "); | 675 | resultString += (" : "); |
672 | resultString += ( it1.current() )->text(2); | 676 | resultString += ( it1.current() )->text(2); |
673 | resultString += (" : "); | 677 | resultString += (" : "); |
674 | resultString += ( it1.current() )->text(3); | 678 | resultString += ( it1.current() )->text(3); |
675 | if( resultString.find( searcherStr, 0, cS) != -1) | 679 | if( resultString.find( searcherStr, 0, cS) != -1) |
676 | { | 680 | { |
677 | Searchlist.append( resultString); | 681 | Searchlist.append( resultString); |
678 | } | 682 | } |
679 | } | 683 | } |
680 | } | 684 | } |
681 | if(fluff==0) {// search routine here | 685 | if(fluff==0) {// search routine here |
682 | for ( ; it2.current(); ++it2 ) { | 686 | for ( ; it2.current(); ++it2 ) { |
683 | resultString = ( it2.current() )->text(0); | 687 | resultString = ( it2.current() )->text(0); |
684 | resultString += (" : "); | 688 | resultString += (" : "); |
685 | resultString += ( it2.current() )->text(2); | 689 | resultString += ( it2.current() )->text(2); |
686 | resultString += (" : "); | 690 | resultString += (" : "); |
687 | resultString += ( it2.current() )->text(3); | 691 | resultString += ( it2.current() )->text(3); |
688 | if( resultString.find( searcherStr, 0, cS) != -1) { | 692 | if( resultString.find( searcherStr, 0, cS) != -1) { |
689 | Searchlist.append( resultString); | 693 | Searchlist.append( resultString); |
690 | } | 694 | } |
691 | } | 695 | } |
692 | } | 696 | } |
693 | if(fluff==0) {// search routine here | 697 | if(fluff==0) {// search routine here |
694 | for ( ; it3.current(); ++it3 ) { | 698 | for ( ; it3.current(); ++it3 ) { |
695 | resultString = ( it3.current() )->text(0); | 699 | resultString = ( it3.current() )->text(0); |
696 | resultString += (" : "); | 700 | resultString += (" : "); |
697 | resultString += ( it3.current() )->text(2); | 701 | resultString += ( it3.current() )->text(2); |
698 | resultString += (" : "); | 702 | resultString += (" : "); |
699 | resultString += ( it3.current() )->text(3); | 703 | resultString += ( it3.current() )->text(3); |
700 | 704 | ||
701 | if( resultString.find( searcherStr, 0, cS) != -1) { | 705 | if( resultString.find( searcherStr, 0, cS) != -1) { |
702 | Searchlist.append( resultString); | 706 | Searchlist.append( resultString); |
703 | } | 707 | } |
704 | } | 708 | } |
705 | } | 709 | } |
706 | if(fluff==0) { | 710 | if(fluff==0) { |
707 | // search routine here | 711 | // search routine here |
708 | for ( ; it4.current(); ++it4 ) { | 712 | for ( ; it4.current(); ++it4 ) { |
709 | resultString = ( it4.current() )->text(0); | 713 | resultString = ( it4.current() )->text(0); |
710 | resultString += (" : "); | 714 | resultString += (" : "); |
711 | resultString += ( it4.current() )->text(2); | 715 | resultString += ( it4.current() )->text(2); |
712 | resultString += (" : "); | 716 | resultString += (" : "); |
713 | resultString += ( it4.current() )->text(3); | 717 | resultString += ( it4.current() )->text(3); |
714 | if( resultString.find( searcherStr, 0, cS) != -1) { | 718 | if( resultString.find( searcherStr, 0, cS) != -1) { |
715 | Searchlist.append( resultString); | 719 | Searchlist.append( resultString); |
716 | } | 720 | } |
717 | } | 721 | } |
718 | } | 722 | } |
719 | if(fluff==0) { // search routine here | 723 | if(fluff==0) { // search routine here |
720 | for ( ; it5.current(); ++it5 ) { | 724 | for ( ; it5.current(); ++it5 ) { |
721 | resultString = ( it5.current() )->text(0); | 725 | resultString = ( it5.current() )->text(0); |
722 | resultString += (" : "); | 726 | resultString += (" : "); |
723 | resultString += ( it5.current() )->text(2); | 727 | resultString += ( it5.current() )->text(2); |
724 | resultString += (" : "); | 728 | resultString += (" : "); |
725 | resultString += ( it5.current() )->text(3); | 729 | resultString += ( it5.current() )->text(3); |
726 | if( resultString.find( searcherStr, 0, cS) != -1) { | 730 | if( resultString.find( searcherStr, 0, cS) != -1) { |
727 | Searchlist.append( resultString); | 731 | Searchlist.append( resultString); |
728 | } | 732 | } |
729 | } | 733 | } |
730 | } | 734 | } |
731 | 735 | ||
732 | tabWidget->setCurrentPage( curTab); | 736 | tabWidget->setCurrentPage( curTab); |
733 | 737 | ||
734 | Searchlist.sort(); | 738 | Searchlist.sort(); |
735 | SearchResultsDlg* SearchResultsDialog; | 739 | SearchResultsDlg* SearchResultsDialog; |
736 | SearchResultsDialog = new SearchResultsDlg( searchDlg, "Results Dialog", true, 0 , Searchlist); | 740 | SearchResultsDialog = new SearchResultsDlg( searchDlg, "Results Dialog", true, 0 , Searchlist); |
737 | 741 | ||
738 | SearchResultsDialog->showMaximized(); | 742 | SearchResultsDialog->showMaximized(); |
739 | if( SearchResultsDialog->exec() != 0) { | 743 | if( SearchResultsDialog->exec() != 0) { |
740 | texter = SearchResultsDialog->selText; | 744 | texter = SearchResultsDialog->selText; |
741 | // qDebug(texter); | 745 | // odebug << texter << oendl; |
742 | resultLs= SearchResultsDialog->resultsList; | 746 | resultLs= SearchResultsDialog->resultsList; |
743 | i_berger = 1; | 747 | i_berger = 1; |
744 | } | 748 | } |
745 | Searchlist.clear(); | 749 | Searchlist.clear(); |
746 | 750 | ||
747 | // if(SearchResultsDialog) | 751 | // if(SearchResultsDialog) |
748 | // delete SearchResultsDialog; | 752 | // delete SearchResultsDialog; |
749 | QString tester; | 753 | QString tester; |
750 | for ( QStringList::Iterator it = resultLs.begin(); it != resultLs.end(); ++it ) { | 754 | for ( QStringList::Iterator it = resultLs.begin(); it != resultLs.end(); ++it ) { |
751 | texter.sprintf("%s \n",(*it).latin1()); | 755 | texter.sprintf("%s \n",(*it).latin1()); |
752 | // qDebug(texter); | 756 | // odebug << texter << oendl; |
753 | if( tester!=texter) | 757 | if( tester!=texter) |
754 | parseSearchResults( texter); | 758 | parseSearchResults( texter); |
755 | tester = texter; | 759 | tester = texter; |
756 | } | 760 | } |
757 | if(searchDlg) | 761 | if(searchDlg) |
758 | delete searchDlg; | 762 | delete searchDlg; |
759 | } | 763 | } |
760 | if(checkBox->isChecked() ) { | 764 | if(checkBox->isChecked() ) { |
761 | accept(); | 765 | accept(); |
762 | } else { | 766 | } else { |
763 | setActiveWindow(); | 767 | setActiveWindow(); |
764 | } | 768 | } |
765 | } | 769 | } |
766 | 770 | ||
767 | /* | 771 | /* |
768 | splits the result string and calls download for the current search result*/ | 772 | splits the result string and calls download for the current search result*/ |
769 | void LibraryDialog::parseSearchResults( QString resultStr) | 773 | void LibraryDialog::parseSearchResults( QString resultStr) |
770 | { | 774 | { |
771 | 775 | ||
772 | int stringLeng=resultStr.length(); | 776 | int stringLeng=resultStr.length(); |
773 | QString my; | 777 | QString my; |
774 | my.setNum( stringLeng, 10); | 778 | my.setNum( stringLeng, 10); |
775 | 779 | ||
776 | if( resultStr.length() > 2 && resultStr.length() < 130) { | 780 | if( resultStr.length() > 2 && resultStr.length() < 130) { |
777 | int titleInt = resultStr.find( " : ", 0, TRUE); | 781 | int titleInt = resultStr.find( " : ", 0, TRUE); |
778 | DlglistItemTitle = resultStr.left( titleInt); | 782 | DlglistItemTitle = resultStr.left( titleInt); |
779 | int yearInt = resultStr.find( " : ", titleInt+3, TRUE); | 783 | int yearInt = resultStr.find( " : ", titleInt+3, TRUE); |
780 | DlglistItemYear = resultStr.mid( titleInt+3, (yearInt - titleInt)-3); | 784 | DlglistItemYear = resultStr.mid( titleInt+3, (yearInt - titleInt)-3); |
781 | DlglistItemFile = resultStr.right( resultStr.length() - (yearInt + 3)); | 785 | DlglistItemFile = resultStr.right( resultStr.length() - (yearInt + 3)); |
782 | download_Etext(); | 786 | download_Etext(); |
783 | } | 787 | } |
784 | /* | 788 | /* |
785 | printf( DlglistItemTitle+"\n"); printf( DlglistItemYear+"\n"); printf( DlglistItemFile+"\n");*/ | 789 | printf( DlglistItemTitle+"\n"); printf( DlglistItemYear+"\n"); printf( DlglistItemFile+"\n");*/ |
786 | } | 790 | } |
787 | 791 | ||
788 | // bool LibraryDialog::UnzipIt( QString zipFile) { | 792 | // bool LibraryDialog::UnzipIt( QString zipFile) { |
789 | // //////////TODO findsome other way of dealingwithzip files. | 793 | // //////////TODO findsome other way of dealingwithzip files. |
790 | // ///usr/bin/unzip"; | 794 | // ///usr/bin/unzip"; |
791 | // if( QFile::exists( zipFile)) { | 795 | // if( QFile::exists( zipFile)) { |
792 | // // QString thatFile = local_library +"PGWHOLE.TXT"; | 796 | // // QString thatFile = local_library +"PGWHOLE.TXT"; |
793 | // QString cmd; | 797 | // QString cmd; |
794 | // #if defined(_WS_X11_) | 798 | // #if defined(_WS_X11_) |
795 | // cmd = "gunzip -d " + zipFile /*newestLibraryFile */+" -d " + local_library; | 799 | // cmd = "gunzip -d " + zipFile /*newestLibraryFile */+" -d " + local_library; |
796 | // #endif | 800 | // #endif |
797 | // #if defined(_WS_WIN_) | 801 | // #if defined(_WS_WIN_) |
798 | // QString temp= QDir::convertSeparators(local_library); | 802 | // QString temp= QDir::convertSeparators(local_library); |
799 | // zipFile=QDir::convertSeparators( zipFile); | 803 | // zipFile=QDir::convertSeparators( zipFile); |
800 | // cmd = temp+"unzip.exe -o " +zipFile/*newestLibraryFile */+" -d " + temp; | 804 | // cmd = temp+"unzip.exe -o " +zipFile/*newestLibraryFile */+" -d " + temp; |
801 | // #endif | 805 | // #endif |
802 | // #ifndef Q_WS_QWS | 806 | // #ifndef Q_WS_QWS |
803 | // // QString cmd = "gunzip -d " + zipFile /*newestLibraryFile */+" -d " + local_library; | 807 | // // QString cmd = "gunzip -d " + zipFile /*newestLibraryFile */+" -d " + local_library; |
804 | // cmd = "unzip " + zipFile; | 808 | // cmd = "unzip " + zipFile; |
805 | // #endif | 809 | // #endif |
806 | 810 | ||
807 | // int exit=QMessageBox::information(this, "Unzip?", "Ok to unzip "+ zipFile+" ?", QMessageBox::Yes, QMessageBox::No); | 811 | // int exit=QMessageBox::information(this, "Unzip?", "Ok to unzip "+ zipFile+" ?", QMessageBox::Yes, QMessageBox::No); |
808 | // if (exit==QMessageBox::Yes) { | 812 | // if (exit==QMessageBox::Yes) { |
809 | // qDebug("Issuing the command "+cmd); | 813 | // odebug << "Issuing the command "+cmd << oendl; |
810 | // #if defined(_WS_WIN_) | 814 | // #if defined(_WS_WIN_) |
811 | // WinExec( cmd, SW_HIDE ); | 815 | // WinExec( cmd, SW_HIDE ); |
812 | // #endif | 816 | // #endif |
813 | // #if defined(_WS_X11_) | 817 | // #if defined(_WS_X11_) |
814 | // system( cmd); | 818 | // system( cmd); |
815 | // #endif | 819 | // #endif |
816 | // #ifndef Q_WS_QWS | 820 | // #ifndef Q_WS_QWS |
817 | // system( cmd); | 821 | // system( cmd); |
818 | // #endif | 822 | // #endif |
819 | // // printf("unzip\n"); | 823 | // // printf("unzip\n"); |
820 | // // remove( zipFile /*newestLibraryFile*/); | 824 | // // remove( zipFile /*newestLibraryFile*/); |
821 | // return true; | 825 | // return true; |
822 | // } | 826 | // } |
823 | // else if(exit==QMessageBox::No) { | 827 | // else if(exit==QMessageBox::No) { |
824 | // // printf("unzip\n"); | 828 | // // printf("unzip\n"); |
825 | // return false; | 829 | // return false; |
826 | // } | 830 | // } |
827 | // } else { | 831 | // } else { |
828 | // // QMessageBox::message( "Note",( tr("Please install unzip in your PATH")) ); | 832 | // // QMessageBox::message( "Note",( tr("Please install unzip in your PATH")) ); |
829 | // return false; | 833 | // return false; |
830 | // } | 834 | // } |
831 | // return true; | 835 | // return true; |
832 | // } | 836 | // } |
833 | 837 | ||
834 | void LibraryDialog::sort() | 838 | void LibraryDialog::sort() |
835 | { | 839 | { |
836 | 840 | ||
837 | } | 841 | } |
838 | 842 | ||
839 | /* | 843 | /* |
840 | Downloads the current selected listitem*/ | 844 | Downloads the current selected listitem*/ |
841 | bool LibraryDialog::getItem(QListViewItem *it) | 845 | bool LibraryDialog::getItem(QListViewItem *it) |
842 | { | 846 | { |
843 | // qDebug("selected getItem"); | 847 | // odebug << "selected getItem" << oendl; |
844 | 848 | ||
845 | // DlglistItemNumber = it->text(0); | 849 | // DlglistItemNumber = it->text(0); |
846 | DlglistItemTitle = it->text(0); | 850 | DlglistItemTitle = it->text(0); |
847 | DlglistItemYear = it->text(2); | 851 | DlglistItemYear = it->text(2); |
848 | DlglistItemFile = it->text(3); | 852 | DlglistItemFile = it->text(3); |
849 | 853 | ||
850 | if(download_Etext()) { | 854 | if(download_Etext()) { |
851 | if(i_binary == 1) { | 855 | if(i_binary == 1) { |
852 | } | 856 | } |
853 | } | 857 | } |
854 | return true; | 858 | return true; |
855 | } | 859 | } |
856 | 860 | ||
857 | /* | 861 | /* |
858 | download button is pushed so we get the current items to download*/ | 862 | download button is pushed so we get the current items to download*/ |
859 | bool LibraryDialog::onButtonDownload() | 863 | bool LibraryDialog::onButtonDownload() |
860 | { | 864 | { |
861 | // qDebug("selected onButtonDownloadz"); | 865 | // odebug << "selected onButtonDownloadz" << oendl; |
862 | 866 | ||
863 | QListViewItemIterator it1( ListView1 ); | 867 | QListViewItemIterator it1( ListView1 ); |
864 | QListViewItemIterator it2( ListView2 ); | 868 | QListViewItemIterator it2( ListView2 ); |
865 | QListViewItemIterator it3( ListView3 ); | 869 | QListViewItemIterator it3( ListView3 ); |
866 | QListViewItemIterator it4( ListView4 ); | 870 | QListViewItemIterator it4( ListView4 ); |
867 | QListViewItemIterator it5( ListView5 ); | 871 | QListViewItemIterator it5( ListView5 ); |
868 | 872 | ||
869 | // iterate through all items of the listview | 873 | // iterate through all items of the listview |
870 | for ( ; it1.current(); ++it1 ) { | 874 | for ( ; it1.current(); ++it1 ) { |
871 | if ( it1.current()->isSelected() ) | 875 | if ( it1.current()->isSelected() ) |
872 | getItem(it1.current()); | 876 | getItem(it1.current()); |
873 | it1.current()->setSelected(FALSE); | 877 | it1.current()->setSelected(FALSE); |
874 | } | 878 | } |
875 | for ( ; it2.current(); ++it2 ) { | 879 | for ( ; it2.current(); ++it2 ) { |
876 | if ( it2.current()->isSelected() ) | 880 | if ( it2.current()->isSelected() ) |
877 | getItem(it2.current()); | 881 | getItem(it2.current()); |
878 | it2.current()->setSelected(FALSE); | 882 | it2.current()->setSelected(FALSE); |
879 | } | 883 | } |
880 | for ( ; it3.current(); ++it3 ) { | 884 | for ( ; it3.current(); ++it3 ) { |
881 | if ( it3.current()->isSelected() ) | 885 | if ( it3.current()->isSelected() ) |
882 | getItem(it3.current()); | 886 | getItem(it3.current()); |
883 | it3.current()->setSelected(FALSE); | 887 | it3.current()->setSelected(FALSE); |
884 | } | 888 | } |
885 | for ( ; it4.current(); ++it4 ) { | 889 | for ( ; it4.current(); ++it4 ) { |
886 | if ( it4.current()->isSelected() ) | 890 | if ( it4.current()->isSelected() ) |
887 | getItem(it4.current()); | 891 | getItem(it4.current()); |
888 | it4.current()->setSelected(FALSE); | 892 | it4.current()->setSelected(FALSE); |
889 | } | 893 | } |
890 | for ( ; it5.current(); ++it5 ) { | 894 | for ( ; it5.current(); ++it5 ) { |
891 | if ( it5.current()->isSelected() ) | 895 | if ( it5.current()->isSelected() ) |
892 | getItem(it5.current()); | 896 | getItem(it5.current()); |
893 | it5.current()->setSelected(FALSE); | 897 | it5.current()->setSelected(FALSE); |
894 | } | 898 | } |
895 | return true; | 899 | return true; |
896 | } | 900 | } |
897 | 901 | ||
898 | 902 | ||
899 | /* | 903 | /* |
900 | handles the sorting combo box */ | 904 | handles the sorting combo box */ |
901 | void LibraryDialog::comboSelect(int index) | 905 | void LibraryDialog::comboSelect(int index) |
902 | { | 906 | { |
903 | // qDebug("we are sorting"); | 907 | // odebug << "we are sorting" << oendl; |
904 | ListView1->setSorting( index, TRUE); | 908 | ListView1->setSorting( index, TRUE); |
905 | ListView2->setSorting( index, TRUE); | 909 | ListView2->setSorting( index, TRUE); |
906 | ListView3->setSorting( index, TRUE); | 910 | ListView3->setSorting( index, TRUE); |
907 | ListView4->setSorting( index, TRUE); | 911 | ListView4->setSorting( index, TRUE); |
908 | ListView5->setSorting( index, TRUE); | 912 | ListView5->setSorting( index, TRUE); |
909 | 913 | ||
910 | ListView1->sort(); | 914 | ListView1->sort(); |
911 | ListView2->sort(); | 915 | ListView2->sort(); |
912 | ListView3->sort(); | 916 | ListView3->sort(); |
913 | ListView4->sort(); | 917 | ListView4->sort(); |
914 | ListView5->sort(); | 918 | ListView5->sort(); |
915 | 919 | ||
916 | // ListView1->triggerUpdate(); | 920 | // ListView1->triggerUpdate(); |
917 | // ListView2->triggerUpdate(); | 921 | // ListView2->triggerUpdate(); |
918 | // ListView3->triggerUpdate(); | 922 | // ListView3->triggerUpdate(); |
919 | // ListView4->triggerUpdate(); | 923 | // ListView4->triggerUpdate(); |
920 | // ListView5->triggerUpdate(); | 924 | // ListView5->triggerUpdate(); |
921 | } | 925 | } |
922 | 926 | ||
923 | void LibraryDialog::newList() | 927 | void LibraryDialog::newList() |
924 | { | 928 | { |
925 | if(indexLoaded) { | 929 | if(indexLoaded) { |
926 | onButtonDownload(); | 930 | onButtonDownload(); |
927 | } else { | 931 | } else { |
928 | Output *outDlg; | 932 | Output *outDlg; |
929 | buttonNewList->setDown(TRUE); | 933 | buttonNewList->setDown(TRUE); |
930 | QDir gutDir(QPEApplication::qpeDir()+"etc/gutenbrowser"); | 934 | QDir gutDir(QPEApplication::qpeDir()+"etc/gutenbrowser"); |
931 | if(!gutDir.exists()) gutDir.mkdir(QPEApplication::qpeDir()+"etc/gutenbrowser",true); | 935 | if(!gutDir.exists()) gutDir.mkdir(QPEApplication::qpeDir()+"etc/gutenbrowser",true); |
932 | if( chdir(QPEApplication::qpeDir()+"etc/gutenbrowser") == 0) { | 936 | if( chdir(QPEApplication::qpeDir()+"etc/gutenbrowser") == 0) { |
933 | qDebug("changing dir "+QPEApplication::qpeDir()+"etc/gutenbrowser"); | 937 | odebug << "changing dir "+QPEApplication::qpeDir()+"etc/gutenbrowser" << oendl; |
934 | QString gutenindex1 = QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL"; | 938 | QString gutenindex1 = QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL"; |
935 | QString cmd="wget -O " + gutenindex1 + " http://sailor.gutenberg.org/GUTINDEX.ALL 2>&1"; | 939 | QString cmd="wget -O " + gutenindex1 + " http://sailor.gutenberg.org/GUTINDEX.ALL 2>&1"; |
936 | 940 | ||
937 | int result = QMessageBox::warning( this,"Download" | 941 | int result = QMessageBox::warning( this,"Download" |
938 | ,"Ok to use /'wget/' to download\na new library list?\n" | 942 | ,"Ok to use /'wget/' to download\na new library list?\n" |
939 | ,"Yes","No",0,0,1); | 943 | ,"Yes","No",0,0,1); |
940 | qApp->processEvents(); | 944 | qApp->processEvents(); |
941 | if(result == 0) { | 945 | if(result == 0) { |
942 | outDlg = new Output( 0, tr("Downloading Gutenberg Index...."),TRUE); | 946 | outDlg = new Output( 0, tr("Downloading Gutenberg Index...."),TRUE); |
943 | outDlg->showMaximized(); | 947 | outDlg->showMaximized(); |
944 | outDlg->show(); | 948 | outDlg->show(); |
945 | qApp->processEvents(); | 949 | qApp->processEvents(); |
946 | FILE *fp; | 950 | FILE *fp; |
947 | char line[130]; | 951 | char line[130]; |
948 | outDlg->OutputEdit->append( tr("Running wget") ); | 952 | outDlg->OutputEdit->append( tr("Running wget") ); |
949 | outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); | 953 | outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); |
950 | sleep(1); | 954 | sleep(1); |
951 | fp = popen( (const char *) cmd, "r"); | 955 | fp = popen( (const char *) cmd, "r"); |
952 | if ( !fp ) { | 956 | if ( !fp ) { |
953 | } else { | 957 | } else { |
954 | qDebug("Issuing the command\n"+cmd); | 958 | odebug << "Issuing the command\n"+cmd << oendl; |
955 | // system(cmd); | 959 | // system(cmd); |
956 | while ( fgets( line, sizeof line, fp)) { | 960 | while ( fgets( line, sizeof line, fp)) { |
957 | outDlg->OutputEdit->append(line); | 961 | outDlg->OutputEdit->append(line); |
958 | outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); | 962 | outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); |
959 | } | 963 | } |
960 | pclose(fp); | 964 | pclose(fp); |
961 | outDlg->OutputEdit->append("Finished downloading\n"); | 965 | outDlg->OutputEdit->append("Finished downloading\n"); |
962 | outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); | 966 | outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); |
963 | qApp->processEvents(); | 967 | qApp->processEvents(); |
964 | 968 | ||
965 | // if( QFile(gutenindex1).exists() ) { | 969 | // if( QFile(gutenindex1).exists() ) { |
966 | // QString gutenindex=QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL"; | 970 | // QString gutenindex=QPEApplication::qpeDir()+"etc/gutenbrowser/GUTINDEX.ALL"; |
967 | // if( rename(gutenindex1.latin1(),gutenindex.latin1()) !=0) | 971 | // if( rename(gutenindex1.latin1(),gutenindex.latin1()) !=0) |
968 | // qDebug("renaming error"); | 972 | // odebug << "renaming error" << oendl; |
969 | // } | 973 | // } |
970 | 974 | ||
971 | } | 975 | } |
972 | // outDlg->close(); | 976 | // outDlg->close(); |
973 | FindLibrary(); | 977 | FindLibrary(); |
974 | if(outDlg) delete outDlg; | 978 | if(outDlg) delete outDlg; |
975 | } | 979 | } |
976 | buttonNewList->setDown(FALSE); | 980 | buttonNewList->setDown(FALSE); |
977 | } else { | 981 | } else { |
978 | QMessageBox::message("Note","Could not change directories"); | 982 | QMessageBox::message("Note","Could not change directories"); |
979 | } | 983 | } |
980 | // if(outDlg) | 984 | // if(outDlg) |
981 | // delete outDlg; | 985 | // delete outDlg; |
982 | } | 986 | } |
983 | } | 987 | } |
984 | 988 | ||
985 | bool LibraryDialog::moreInfo() | 989 | bool LibraryDialog::moreInfo() |
986 | { | 990 | { |
987 | 991 | ||
988 | QListViewItem * item; | 992 | QListViewItem * item; |
989 | item = 0; | 993 | item = 0; |
990 | QString titleString; | 994 | QString titleString; |
991 | item = ListView1->currentItem(); | 995 | item = ListView1->currentItem(); |
992 | if( item != 0) { | 996 | if( item != 0) { |
993 | titleString = item->text(0); | 997 | titleString = item->text(0); |
994 | ListView1->clearSelection(); | 998 | ListView1->clearSelection(); |
995 | item = 0; | 999 | item = 0; |
996 | } | 1000 | } |
997 | if( item == 0) | 1001 | if( item == 0) |
998 | item = ListView2->currentItem(); | 1002 | item = ListView2->currentItem(); |
999 | if( item != 0) { | 1003 | if( item != 0) { |
1000 | titleString = item->text(0); | 1004 | titleString = item->text(0); |
1001 | ListView2->clearSelection(); | 1005 | ListView2->clearSelection(); |
1002 | item = 0; | 1006 | item = 0; |
1003 | } | 1007 | } |
1004 | if( item == 0) | 1008 | if( item == 0) |
1005 | item = ListView3->currentItem(); | 1009 | item = ListView3->currentItem(); |
1006 | if( item != 0) { | 1010 | if( item != 0) { |
1007 | titleString = item->text(0); | 1011 | titleString = item->text(0); |
1008 | ListView3->clearSelection(); | 1012 | ListView3->clearSelection(); |
1009 | item = 0; | 1013 | item = 0; |
1010 | } | 1014 | } |
1011 | if( item == 0) | 1015 | if( item == 0) |
1012 | item = ListView4->currentItem(); | 1016 | item = ListView4->currentItem(); |
1013 | if( item != 0) { | 1017 | if( item != 0) { |
1014 | titleString = item->text(0); | 1018 | titleString = item->text(0); |
1015 | ListView4->clearSelection(); | 1019 | ListView4->clearSelection(); |
1016 | item = 0; | 1020 | item = 0; |
1017 | } | 1021 | } |
1018 | if( item == 0) | 1022 | if( item == 0) |
1019 | item = ListView5->currentItem(); | 1023 | item = ListView5->currentItem(); |
1020 | if( item != 0) { | 1024 | if( item != 0) { |
1021 | titleString = item->text(0); | 1025 | titleString = item->text(0); |
1022 | ListView5->clearSelection(); | 1026 | ListView5->clearSelection(); |
1023 | item = 0; | 1027 | item = 0; |
1024 | } | 1028 | } |
1025 | item=0; | 1029 | item=0; |
1026 | if(titleString.length()>2) { | 1030 | if(titleString.length()>2) { |
1027 | qDebug( "Title is "+titleString ); | 1031 | odebug << "Title is "+titleString << oendl; |
1028 | titleString.replace( QRegExp("\\s"), "%20"); | 1032 | titleString.replace( QRegExp("\\s"), "%20"); |
1029 | titleString.replace( QRegExp("'"), "%20"); | 1033 | titleString.replace( QRegExp("'"), "%20"); |
1030 | titleString.replace( QRegExp("\""), "%20"); | 1034 | titleString.replace( QRegExp("\""), "%20"); |
1031 | titleString.replace( QRegExp("&"), "%20"); | 1035 | titleString.replace( QRegExp("&"), "%20"); |
1032 | QString cmd= "http://google.com/search?q="+titleString+"&num=30&sa=Google+Search"; | 1036 | QString cmd= "http://google.com/search?q="+titleString+"&num=30&sa=Google+Search"; |
1033 | cmd="opera "+cmd; | 1037 | cmd="opera "+cmd; |
1034 | system(cmd); | 1038 | system(cmd); |
1035 | } else | 1039 | } else |
1036 | QMessageBox::message( "Note","If you select a title, this will\nsearch google.com for that title."); | 1040 | QMessageBox::message( "Note","If you select a title, this will\nsearch google.com for that title."); |
1037 | return true; | 1041 | return true; |
1038 | 1042 | ||
1039 | } | 1043 | } |
1040 | 1044 | ||
1041 | /* | 1045 | /* |
1042 | This loads the library Index*/ | 1046 | This loads the library Index*/ |
1043 | void LibraryDialog::FindLibrary() | 1047 | void LibraryDialog::FindLibrary() |
1044 | { | 1048 | { |
1045 | buttonLibrary->setDown(TRUE); | 1049 | buttonLibrary->setDown(TRUE); |
1046 | 1050 | ||
1047 | qApp->processEvents(); | 1051 | qApp->processEvents(); |
1048 | if( QFile( new_index).exists() /* && this->isHidden() */) { | 1052 | if( QFile( new_index).exists() /* && this->isHidden() */) { |
1049 | newindexLib.setName( new_index); | 1053 | newindexLib.setName( new_index); |
1050 | indexLib.setName( new_index); | 1054 | indexLib.setName( new_index); |
1051 | qDebug("index file is "+ new_index); | 1055 | odebug << "index file is "+ new_index << oendl; |
1052 | Newlibrary(); | 1056 | Newlibrary(); |
1053 | } else { | 1057 | } else { |
1054 | newindexLib.setName( old_index); | 1058 | newindexLib.setName( old_index); |
1055 | indexLib.setName( old_index); | 1059 | indexLib.setName( old_index); |
1056 | qDebug("new index nameis "+ old_index); | 1060 | odebug << "new index nameis "+ old_index << oendl; |
1057 | Library(); | 1061 | Library(); |
1058 | } | 1062 | } |
1059 | indexLoaded=true; | 1063 | indexLoaded=true; |
1060 | buttonSearch->setEnabled(TRUE); | 1064 | buttonSearch->setEnabled(TRUE); |
1061 | moreInfoButton->setEnabled(TRUE); | 1065 | moreInfoButton->setEnabled(TRUE); |
1062 | 1066 | ||
1063 | buttonLibrary->setDown(FALSE); | 1067 | buttonLibrary->setDown(FALSE); |
1064 | buttonNewList->setText("Download"); | 1068 | buttonNewList->setText("Download"); |
1065 | qApp->processEvents(); | 1069 | qApp->processEvents(); |
1066 | 1070 | ||
1067 | } | 1071 | } |
diff --git a/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp b/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp index aed53c6..6e6b707 100644 --- a/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp +++ b/noncore/apps/opie-gutenbrowser/NetworkDialog.cpp | |||
@@ -1,329 +1,335 @@ | |||
1 | // /*************************************************************************** | 1 | // /*************************************************************************** |
2 | // NetworkDialog.cpp - description | 2 | // NetworkDialog.cpp - description |
3 | // begin : Sun Aug 27 2000 | 3 | // begin : Sun Aug 27 2000 |
4 | // copyright : (C) 2000 - 2004 by L.J. Potter | 4 | // copyright : (C) 2000 - 2004 by L.J. Potter |
5 | // email : ljp@llornkcor.com | 5 | // email : ljp@llornkcor.com |
6 | // * This program is free software; you can redistribute it and/or modify * | 6 | // * This program is free software; you can redistribute it and/or modify * |
7 | // * it under the terms of the GNU General Public License as published by * | 7 | // * it under the terms of the GNU General Public License as published by * |
8 | // * the Free Software Foundation; either version 2 of the License, or * | 8 | // * the Free Software Foundation; either version 2 of the License, or * |
9 | // * (at your option) any later version. * | 9 | // * (at your option) any later version. * |
10 | // ***************************************************************************/ | 10 | // ***************************************************************************/ |
11 | // // half-assed attempt at providing a network dialog. | 11 | // // half-assed attempt at providing a network dialog. |
12 | // /* Created: Sun Aug 27 15:24:52 2000*/ | 12 | // /* Created: Sun Aug 27 15:24:52 2000*/ |
13 | #include <unistd.h> | ||
14 | 13 | ||
15 | extern "C" { | ||
16 | #include <ftplib.h> | ||
17 | } | ||
18 | 14 | ||
19 | #include "NetworkDialog.h" | 15 | #include "NetworkDialog.h" |
20 | #include "gutenbrowser.h" | 16 | #include "gutenbrowser.h" |
21 | 17 | ||
18 | /* OPIE */ | ||
19 | #include <opie2/odebug.h> | ||
20 | |||
21 | /* QT */ | ||
22 | #include <qprogressbar.h> | 22 | #include <qprogressbar.h> |
23 | #include <qstringlist.h> | 23 | #include <qstringlist.h> |
24 | #include <qpe/config.h> | 24 | #include <qpe/config.h> |
25 | #include <qvaluelist.h> | 25 | #include <qvaluelist.h> |
26 | #include <qapplication.h> | 26 | #include <qapplication.h> |
27 | #include <qfile.h> | 27 | #include <qfile.h> |
28 | #include <qstringlist.h> | 28 | #include <qstringlist.h> |
29 | #include <qlabel.h> | 29 | #include <qlabel.h> |
30 | #include <qpushbutton.h> | 30 | #include <qpushbutton.h> |
31 | #include <qlayout.h> | 31 | #include <qlayout.h> |
32 | 32 | ||
33 | /* STD */ | ||
34 | #include <unistd.h> | ||
35 | extern "C" { | ||
36 | #include <ftplib.h> | ||
37 | } | ||
38 | |||
33 | QProgressBar* ProgressBar1; | 39 | QProgressBar* ProgressBar1; |
34 | QPushButton* buttonCancel; | 40 | QPushButton* buttonCancel; |
35 | static netbuf *conn = NULL; | 41 | static netbuf *conn = NULL; |
36 | 42 | ||
37 | static int log_progress(netbuf *ctl, int xfered, void *arg) { | 43 | static int log_progress(netbuf *ctl, int xfered, void *arg) { |
38 | int fsz = *(int *)arg; | 44 | int fsz = *(int *)arg; |
39 | int pct = (xfered * 100) / fsz; | 45 | int pct = (xfered * 100) / fsz; |
40 | printf("%3d%%\r", pct); | 46 | printf("%3d%%\r", pct); |
41 | fflush(stdout); | 47 | fflush(stdout); |
42 | ProgressBar1->setProgress(xfered); | 48 | ProgressBar1->setProgress(xfered); |
43 | qApp->processEvents(); | 49 | qApp->processEvents(); |
44 | 50 | ||
45 | return 1; | 51 | return 1; |
46 | } | 52 | } |
47 | 53 | ||
48 | NetworkDialog::NetworkDialog( QWidget* parent, const char* name, bool modal, WFlags fl, const QStringList netL) | 54 | NetworkDialog::NetworkDialog( QWidget* parent, const char* name, bool modal, WFlags fl, const QStringList netL) |
49 | : QDialog( parent, name, modal, fl ) | 55 | : QDialog( parent, name, modal, fl ) |
50 | { | 56 | { |
51 | 57 | ||
52 | ftp_host = netL[0]; | 58 | ftp_host = netL[0]; |
53 | networkUrl = strUrl = netL[0]; | 59 | networkUrl = strUrl = netL[0]; |
54 | 60 | ||
55 | dir = ftp_base_dir = netL[1]; | 61 | dir = ftp_base_dir = netL[1]; |
56 | localFileName = netL[2]; | 62 | localFileName = netL[2]; |
57 | s_partialFileName = netL[3]; | 63 | s_partialFileName = netL[3]; |
58 | 64 | ||
59 | resize(240,110); | 65 | resize(240,110); |
60 | 66 | ||
61 | local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; | 67 | local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; |
62 | // autoOk = autoDownload; | 68 | // autoOk = autoDownload; |
63 | // if( networkUrl.find("ftp",0,false)== -1 ) { | 69 | // if( networkUrl.find("ftp",0,false)== -1 ) { |
64 | // if ( !name ) | 70 | // if ( !name ) |
65 | // setName( "HTTP NetworkDialog" ); | 71 | // setName( "HTTP NetworkDialog" ); |
66 | // setCaption( tr( "HTTP Download ) ); | 72 | // setCaption( tr( "HTTP Download ) ); |
67 | // qInitNetworkProtocols(); // registers ftp protocol // for now | 73 | // qInitNetworkProtocols(); // registers ftp protocol // for now |
68 | // QNetworkProtocol::registerNetworkProtocol( "http", new QNetworkProtocolFactory<Http> ); | 74 | // QNetworkProtocol::registerNetworkProtocol( "http", new QNetworkProtocolFactory<Http> ); |
69 | // } else { | 75 | // } else { |
70 | if ( !name ) | 76 | if ( !name ) |
71 | setName( "FTP NetworkDialog" ); | 77 | setName( "FTP NetworkDialog" ); |
72 | setCaption(tr("FTP Download")); | 78 | setCaption(tr("FTP Download")); |
73 | // } | 79 | // } |
74 | initDialog(); //opens file to be written | 80 | initDialog(); //opens file to be written |
75 | } | 81 | } |
76 | 82 | ||
77 | NetworkDialog::~NetworkDialog() { | 83 | NetworkDialog::~NetworkDialog() { |
78 | } | 84 | } |
79 | 85 | ||
80 | void NetworkDialog::initDialog() { | 86 | void NetworkDialog::initDialog() { |
81 | 87 | ||
82 | totalBytesDownloaded=0; | 88 | totalBytesDownloaded=0; |
83 | warnLabel = new QLabel( this, "TextLabel" ); | 89 | warnLabel = new QLabel( this, "TextLabel" ); |
84 | warnLabel ->setText( tr( "Push Ok to download file...." ) ); | 90 | warnLabel ->setText( tr( "Push Ok to download file...." ) ); |
85 | TextLabel3 = new QLabel( this, "TextLabel3" ); | 91 | TextLabel3 = new QLabel( this, "TextLabel3" ); |
86 | TextLabel3->setText( ""); | 92 | TextLabel3->setText( ""); |
87 | QWidget* Layout1 = new QWidget( this, "Layout1" ); | 93 | QWidget* Layout1 = new QWidget( this, "Layout1" ); |
88 | 94 | ||
89 | hbox = new QHBoxLayout(Layout1); | 95 | hbox = new QHBoxLayout(Layout1); |
90 | hbox->setMargin(4); | 96 | hbox->setMargin(4); |
91 | 97 | ||
92 | ProgressBar1 = new QProgressBar( Layout1, "ProgressBar1" ); | 98 | ProgressBar1 = new QProgressBar( Layout1, "ProgressBar1" ); |
93 | ProgressBar1->setProgress(0); | 99 | ProgressBar1->setProgress(0); |
94 | hbox->addWidget(ProgressBar1,10,AlignCenter); | 100 | hbox->addWidget(ProgressBar1,10,AlignCenter); |
95 | 101 | ||
96 | hbox->addStretch(1); | 102 | hbox->addStretch(1); |
97 | buttonOk = new QPushButton( Layout1, "buttonOk" ); | 103 | buttonOk = new QPushButton( Layout1, "buttonOk" ); |
98 | buttonOk->setText( tr( "&OK" ) ); | 104 | buttonOk->setText( tr( "&OK" ) ); |
99 | hbox->addWidget(buttonOk,0,AlignRight); | 105 | hbox->addWidget(buttonOk,0,AlignRight); |
100 | hbox->addSpacing(5); | 106 | hbox->addSpacing(5); |
101 | buttonCancel = new QPushButton( Layout1, "buttonCancel" ); | 107 | buttonCancel = new QPushButton( Layout1, "buttonCancel" ); |
102 | buttonCancel->setText( tr( "&Cancel" ) ); | 108 | buttonCancel->setText( tr( "&Cancel" ) ); |
103 | buttonCancel->setAutoDefault( TRUE ); | 109 | buttonCancel->setAutoDefault( TRUE ); |
104 | buttonCancel->setDefault( TRUE ); | 110 | buttonCancel->setDefault( TRUE ); |
105 | hbox->addWidget(buttonCancel,0,AlignRight); | 111 | hbox->addWidget(buttonCancel,0,AlignRight); |
106 | 112 | ||
107 | ProgressBar1->setFixedSize(140,22); | 113 | ProgressBar1->setFixedSize(140,22); |
108 | buttonOk->setFixedSize(35,22); | 114 | buttonOk->setFixedSize(35,22); |
109 | buttonCancel->setFixedSize(35,22); | 115 | buttonCancel->setFixedSize(35,22); |
110 | warnLabel ->setGeometry( QRect( 5,1,230,25)); | 116 | warnLabel ->setGeometry( QRect( 5,1,230,25)); |
111 | TextLabel3->setGeometry( QRect( 5,20,230,25)); | 117 | TextLabel3->setGeometry( QRect( 5,20,230,25)); |
112 | Layout1->setGeometry( QRect(1,60,235,50)); //TODO check these!! | 118 | Layout1->setGeometry( QRect(1,60,235,50)); //TODO check these!! |
113 | 119 | ||
114 | // timer= new QTimer(this,"vu timer"); | 120 | // timer= new QTimer(this,"vu timer"); |
115 | // connectionTimer=new QTimer(this,"connectionTimeout"); | 121 | // connectionTimer=new QTimer(this,"connectionTimeout"); |
116 | 122 | ||
117 | connect(buttonOk,SIGNAL(clicked()),this,SLOT(doOk())); | 123 | connect(buttonOk,SIGNAL(clicked()),this,SLOT(doOk())); |
118 | connect(buttonCancel,SIGNAL(clicked()),this,SLOT(reject())); | 124 | connect(buttonCancel,SIGNAL(clicked()),this,SLOT(reject())); |
119 | // connect( timer, SIGNAL(timeout()), this , SLOT(timeSlot())); | 125 | // connect( timer, SIGNAL(timeout()), this , SLOT(timeSlot())); |
120 | // connect( connectionTimer,SIGNAL( timeout()),this,SLOT( connectionTimeSlot())); | 126 | // connect( connectionTimer,SIGNAL( timeout()),this,SLOT( connectionTimeSlot())); |
121 | if(autoOk) { | 127 | if(autoOk) { |
122 | qWarning("XXXXXXXXXXXXXXXXXXXXXXXX"); | 128 | owarn << "XXXXXXXXXXXXXXXXXXXXXXXX" << oendl; |
123 | buttonOk->setDown(true); | 129 | buttonOk->setDown(true); |
124 | doOk(); | 130 | doOk(); |
125 | } | 131 | } |
126 | } | 132 | } |
127 | 133 | ||
128 | void NetworkDialog::timeSlot() { | 134 | void NetworkDialog::timeSlot() { |
129 | 135 | ||
130 | // if(timerProgess < 19 && posTimer) { | 136 | // if(timerProgess < 19 && posTimer) { |
131 | // ProgressBar1->setProgress(timerProgess); | 137 | // ProgressBar1->setProgress(timerProgess); |
132 | // timerProgess++; | 138 | // timerProgess++; |
133 | // } else if(timerProgess > 19 && posTimer) { | 139 | // } else if(timerProgess > 19 && posTimer) { |
134 | // ProgressBar1->setProgress(timerProgess); | 140 | // ProgressBar1->setProgress(timerProgess); |
135 | // timerProgess++; | 141 | // timerProgess++; |
136 | // posTimer=FALSE; | 142 | // posTimer=FALSE; |
137 | // } | 143 | // } |
138 | // if(timerProgess > 1 &&!posTimer) { | 144 | // if(timerProgess > 1 &&!posTimer) { |
139 | // ProgressBar1->setProgress(timerProgess); | 145 | // ProgressBar1->setProgress(timerProgess); |
140 | // timerProgess--; | 146 | // timerProgess--; |
141 | // } else if(timerProgess > 1 &&!posTimer){ | 147 | // } else if(timerProgess > 1 &&!posTimer){ |
142 | // ProgressBar1->setProgress(timerProgess); | 148 | // ProgressBar1->setProgress(timerProgess); |
143 | // timerProgess--; | 149 | // timerProgess--; |
144 | // posTimer=TRUE; | 150 | // posTimer=TRUE; |
145 | // } | 151 | // } |
146 | // // qDebug("timer event"); | 152 | // // odebug << "timer event" << oendl; |
147 | // qApp->processEvents(); | 153 | // qApp->processEvents(); |
148 | // repaint(); | 154 | // repaint(); |
149 | } | 155 | } |
150 | 156 | ||
151 | void NetworkDialog::connectionTimeSlot() { | 157 | void NetworkDialog::connectionTimeSlot() { |
152 | // qDebug("Connections timed out"); | 158 | // odebug << "Connections timed out" << oendl; |
153 | // ftpQuit(); | 159 | // ftpQuit(); |
154 | // qApp->processEvents(); | 160 | // qApp->processEvents(); |
155 | // repaint(); | 161 | // repaint(); |
156 | // reject(); | 162 | // reject(); |
157 | } | 163 | } |
158 | 164 | ||
159 | 165 | ||
160 | /* | 166 | /* |
161 | downloads the file networkUrl */ | 167 | downloads the file networkUrl */ |
162 | bool NetworkDialog::downloadFile( QString networkUrl ) | 168 | bool NetworkDialog::downloadFile( QString networkUrl ) |
163 | { | 169 | { |
164 | int fsz; | 170 | int fsz; |
165 | // timer->start( 250 , FALSE); | 171 | // timer->start( 250 , FALSE); |
166 | // posTimer=TRUE; | 172 | // posTimer=TRUE; |
167 | // connectionTimer->start( 600 , FALSE); | 173 | // connectionTimer->start( 600 , FALSE); |
168 | warnLabel ->setText( ""); | 174 | warnLabel ->setText( ""); |
169 | qApp->processEvents(); | 175 | qApp->processEvents(); |
170 | qDebug("Downloading: %s",networkUrl.latin1()); | 176 | odebug << "Downloading: " << networkUrl << "" << oendl; |
171 | qDebug("Into: %s",localFileName.latin1()); | 177 | odebug << "Into: " << localFileName << "" << oendl; |
172 | if( networkUrl.length() > 5) { | 178 | if( networkUrl.length() > 5) { |
173 | QString ftp_user = "anonymous"; | 179 | QString ftp_user = "anonymous"; |
174 | QString ftp_pass = "zaurus@gutenbrowser.com"; | 180 | QString ftp_pass = "zaurus@gutenbrowser.com"; |
175 | // ftp_host= networkUrl.mid(networkUrl.find("ftp://",0, TRUE), | 181 | // ftp_host= networkUrl.mid(networkUrl.find("ftp://",0, TRUE), |
176 | if(ftp_host.length() < 2) { | 182 | if(ftp_host.length() < 2) { |
177 | qDebug("Please select an ftp host" ); | 183 | odebug << "Please select an ftp host" << oendl; |
178 | successDownload=false; | 184 | successDownload=false; |
179 | QMessageBox::message("Note","You need to select an ftp host"); | 185 | QMessageBox::message("Note","You need to select an ftp host"); |
180 | return false; | 186 | return false; |
181 | } | 187 | } |
182 | QString msg; | 188 | QString msg; |
183 | qDebug(ftp_host); | 189 | odebug << ftp_host << oendl; |
184 | qDebug("Opening ftp connection."); | 190 | odebug << "Opening ftp connection." << oendl; |
185 | warnLabel->setText("connecting to: "+ftp_host ); | 191 | warnLabel->setText("connecting to: "+ftp_host ); |
186 | qApp->processEvents(); | 192 | qApp->processEvents(); |
187 | /////////// Open FTP connection | 193 | /////////// Open FTP connection |
188 | if (!FtpConnect( ftp_host.latin1(), &conn)) { | 194 | if (!FtpConnect( ftp_host.latin1(), &conn)) { |
189 | i=0; | 195 | i=0; |
190 | successDownload=false; | 196 | successDownload=false; |
191 | QMessageBox::message("Note","Unable to connect to\n"+ftp_host); | 197 | QMessageBox::message("Note","Unable to connect to\n"+ftp_host); |
192 | return false; | 198 | return false; |
193 | } | 199 | } |
194 | TextLabel3->setText("Opening ftp connection."); | 200 | TextLabel3->setText("Opening ftp connection."); |
195 | qApp->processEvents(); | 201 | qApp->processEvents(); |
196 | if (!FtpLogin( ftp_user.latin1(), ftp_pass.latin1(),conn )) { | 202 | if (!FtpLogin( ftp_user.latin1(), ftp_pass.latin1(),conn )) { |
197 | FtpQuit(conn); | 203 | FtpQuit(conn); |
198 | successDownload=false; | 204 | successDownload=false; |
199 | msg.sprintf("Unable to log in\n%s",FtpLastResponse(conn)); | 205 | msg.sprintf("Unable to log in\n%s",FtpLastResponse(conn)); |
200 | QMessageBox::message("Note",msg); | 206 | QMessageBox::message("Note",msg); |
201 | return false; | 207 | return false; |
202 | } | 208 | } |
203 | qDebug("Changing directories."); | 209 | odebug << "Changing directories." << oendl; |
204 | TextLabel3->setText("Changing directories."); | 210 | TextLabel3->setText("Changing directories."); |
205 | qApp->processEvents(); | 211 | qApp->processEvents(); |
206 | if (!FtpChdir( dir.latin1(), conn )) { | 212 | if (!FtpChdir( dir.latin1(), conn )) { |
207 | successDownload=false; | 213 | successDownload=false; |
208 | msg.sprintf("Unable to change directories "+dir+"\n%s",FtpLastResponse(conn)); | 214 | msg.sprintf("Unable to change directories "+dir+"\n%s",FtpLastResponse(conn)); |
209 | QMessageBox::message("Note",msg); | 215 | QMessageBox::message("Note",msg); |
210 | FtpQuit(conn); | 216 | FtpQuit(conn); |
211 | return false; | 217 | return false; |
212 | } | 218 | } |
213 | // if (!FtpNlst( "./.guten_temp", dir, conn)) { | 219 | // if (!FtpNlst( "./.guten_temp", dir, conn)) { |
214 | // successDownload=false; | 220 | // successDownload=false; |
215 | // msg.sprintf("Unable to change directories "+dir+"\n%s",FtpLastResponse(conn)); | 221 | // msg.sprintf("Unable to change directories "+dir+"\n%s",FtpLastResponse(conn)); |
216 | // QMessageBox::message("Note",msg); | 222 | // QMessageBox::message("Note",msg); |
217 | // FtpQuit(conn); | 223 | // FtpQuit(conn); |
218 | // return false; | 224 | // return false; |
219 | // } | 225 | // } |
220 | qDebug("Requesting directory list."); | 226 | odebug << "Requesting directory list." << oendl; |
221 | TextLabel3->setText("Getting directory list."); | 227 | TextLabel3->setText("Getting directory list."); |
222 | qApp->processEvents(); | 228 | qApp->processEvents(); |
223 | if (!FtpDir( "./.guten_temp", dir.latin1(), conn) ) { | 229 | if (!FtpDir( "./.guten_temp", dir.latin1(), conn) ) { |
224 | msg.sprintf("Unable to list the directory\n"+dir+"\n%s",FtpLastResponse(conn)); | 230 | msg.sprintf("Unable to list the directory\n"+dir+"\n%s",FtpLastResponse(conn)); |
225 | QMessageBox::message("Note",msg); | 231 | QMessageBox::message("Note",msg); |
226 | successDownload=false; | 232 | successDownload=false; |
227 | FtpQuit(conn); | 233 | FtpQuit(conn); |
228 | return false; | 234 | return false; |
229 | } | 235 | } |
230 | QFile tmp("./.guten_temp"); | 236 | QFile tmp("./.guten_temp"); |
231 | QString s, File_Name; | 237 | QString s, File_Name; |
232 | 238 | ||
233 | if (tmp.open(IO_ReadOnly)) { | 239 | if (tmp.open(IO_ReadOnly)) { |
234 | QTextStream t( &tmp ); // use a text stream | 240 | QTextStream t( &tmp ); // use a text stream |
235 | qDebug("Finding partial filename "+s_partialFileName); | 241 | odebug << "Finding partial filename "+s_partialFileName << oendl; |
236 | while ( !t.eof()) { | 242 | while ( !t.eof()) { |
237 | s = t.readLine(); | 243 | s = t.readLine(); |
238 | 244 | ||
239 | if (s.contains(s_partialFileName, FALSE)) { | 245 | if (s.contains(s_partialFileName, FALSE)) { |
240 | QString str = s.right( (s.length()) - (s.find(s_partialFileName, FALSE)) ); | 246 | QString str = s.right( (s.length()) - (s.find(s_partialFileName, FALSE)) ); |
241 | 247 | ||
242 | if (str.contains(".txt")) { | 248 | if (str.contains(".txt")) { |
243 | File_Name = str; | 249 | File_Name = str; |
244 | qDebug("Found file_name "+ File_Name); | 250 | odebug << "Found file_name "+ File_Name << oendl; |
245 | break; | 251 | break; |
246 | } | 252 | } |
247 | // if (str.contains(".zip")) { | 253 | // if (str.contains(".zip")) { |
248 | // File_Name = str; | 254 | // File_Name = str; |
249 | // qDebug("Found file_name "+ File_Name); | 255 | // odebug << "Found file_name "+ File_Name << oendl; |
250 | // break; | 256 | // break; |
251 | // } | 257 | // } |
252 | 258 | ||
253 | } | 259 | } |
254 | } //end of while loop | 260 | } //end of while loop |
255 | tmp.close(); | 261 | tmp.close(); |
256 | // tmp.remove(); ///TODO this is for release version Zaurus | 262 | // tmp.remove(); ///TODO this is for release version Zaurus |
257 | } | 263 | } |
258 | else | 264 | else |
259 | qDebug("Error opening temp file."); | 265 | odebug << "Error opening temp file." << oendl; |
260 | 266 | ||
261 | Config cfg("Gutenbrowser"); | 267 | Config cfg("Gutenbrowser"); |
262 | cfg.setGroup("General"); | 268 | cfg.setGroup("General"); |
263 | QString temp=cfg.readEntry("DownloadDirectory",local_library); | 269 | QString temp=cfg.readEntry("DownloadDirectory",local_library); |
264 | 270 | ||
265 | localFileName = temp+File_Name; | 271 | localFileName = temp+File_Name; |
266 | qDebug("Requesting file "+ File_Name); | 272 | odebug << "Requesting file "+ File_Name << oendl; |
267 | qDebug( "Saving as "+localFileName); | 273 | odebug << "Saving as "+localFileName << oendl; |
268 | msg="Requesting file "+ File_Name; | 274 | msg="Requesting file "+ File_Name; |
269 | TextLabel3->setText(msg); | 275 | TextLabel3->setText(msg); |
270 | qApp->processEvents(); | 276 | qApp->processEvents(); |
271 | if( File_Name.length()>3) { | 277 | if( File_Name.length()>3) { |
272 | if (!FtpSize( File_Name.latin1(), &fsz, FTPLIB_ASCII, conn)) | 278 | if (!FtpSize( File_Name.latin1(), &fsz, FTPLIB_ASCII, conn)) |
273 | fsz = 0; | 279 | fsz = 0; |
274 | QString temp; | 280 | QString temp; |
275 | temp.sprintf( File_Name+" "+" %dkb", fsz); | 281 | temp.sprintf( File_Name+" "+" %dkb", fsz); |
276 | TextLabel3->setText(temp); | 282 | TextLabel3->setText(temp); |
277 | 283 | ||
278 | ProgressBar1->setTotalSteps(fsz); | 284 | ProgressBar1->setTotalSteps(fsz); |
279 | FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn); | 285 | FtpOptions(FTPLIB_CALLBACK, (long) log_progress, conn); |
280 | FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn); | 286 | FtpOptions(FTPLIB_IDLETIME, (long) 1000, conn); |
281 | FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn); | 287 | FtpOptions(FTPLIB_CALLBACKARG, (long) &fsz, conn); |
282 | FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn); | 288 | FtpOptions(FTPLIB_CALLBACKBYTES, (long) fsz/10, conn); |
283 | 289 | ||
284 | if (!FtpGet( localFileName.latin1(), File_Name.latin1(), FTPLIB_ASCII, conn)) { | 290 | if (!FtpGet( localFileName.latin1(), File_Name.latin1(), FTPLIB_ASCII, conn)) { |
285 | msg.sprintf("Could not download "+ File_Name+"\n%s",FtpLastResponse(conn)); | 291 | msg.sprintf("Could not download "+ File_Name+"\n%s",FtpLastResponse(conn)); |
286 | successDownload=false; | 292 | successDownload=false; |
287 | QMessageBox::message("Note",msg); | 293 | QMessageBox::message("Note",msg); |
288 | update(); | 294 | update(); |
289 | } | 295 | } |
290 | } else { | 296 | } else { |
291 | QMessageBox::message("Note","Could not download file "+ File_Name); | 297 | QMessageBox::message("Note","Could not download file "+ File_Name); |
292 | successDownload=false; | 298 | successDownload=false; |
293 | FtpQuit(conn); | 299 | FtpQuit(conn); |
294 | return false; | 300 | return false; |
295 | } | 301 | } |
296 | qDebug("Ftp session successful"); | 302 | odebug << "Ftp session successful" << oendl; |
297 | successDownload=TRUE; | 303 | successDownload=TRUE; |
298 | FtpQuit(conn); | 304 | FtpQuit(conn); |
299 | return true; | 305 | return true; |
300 | } //no network url | 306 | } //no network url |
301 | return false; | 307 | return false; |
302 | } | 308 | } |
303 | 309 | ||
304 | void NetworkDialog::doOk() { | 310 | void NetworkDialog::doOk() { |
305 | qWarning("Do OK"); | 311 | owarn << "Do OK" << oendl; |
306 | QString loginStr; | 312 | QString loginStr; |
307 | loginStr = "gutenbrowser"; | 313 | loginStr = "gutenbrowser"; |
308 | if ( !ftp_host.isEmpty() ) { | 314 | if ( !ftp_host.isEmpty() ) { |
309 | if( ftp_host.find( "/", ftp_host.length() - 1,TRUE) != -1 && ftp_host.find("ftp://",0, TRUE) != -1) { | 315 | if( ftp_host.find( "/", ftp_host.length() - 1,TRUE) != -1 && ftp_host.find("ftp://",0, TRUE) != -1) { |
310 | TextLabel3->setText( tr( "List remote dir:\n" + ftp_host) ); | 316 | TextLabel3->setText( tr( "List remote dir:\n" + ftp_host) ); |
311 | // TextLabel2->setText( tr( "local file to download into: " +localFileName ) ); | 317 | // TextLabel2->setText( tr( "local file to download into: " +localFileName ) ); |
312 | 318 | ||
313 | if( downloadFile(ftp_host)) | 319 | if( downloadFile(ftp_host)) |
314 | successDownload = true; | 320 | successDownload = true; |
315 | else { | 321 | else { |
316 | successDownload = false; | 322 | successDownload = false; |
317 | reject(); | 323 | reject(); |
318 | } | 324 | } |
319 | } else { | 325 | } else { |
320 | if(downloadFile(ftp_host)) | 326 | if(downloadFile(ftp_host)) |
321 | successDownload = true; | 327 | successDownload = true; |
322 | else { | 328 | else { |
323 | successDownload = false; | 329 | successDownload = false; |
324 | reject(); | 330 | reject(); |
325 | } | 331 | } |
326 | } | 332 | } |
327 | } | 333 | } |
328 | accept(); | 334 | accept(); |
329 | } | 335 | } |
diff --git a/noncore/apps/opie-gutenbrowser/SearchDialog.cpp b/noncore/apps/opie-gutenbrowser/SearchDialog.cpp index 4ddb3f0..d989304 100644 --- a/noncore/apps/opie-gutenbrowser/SearchDialog.cpp +++ b/noncore/apps/opie-gutenbrowser/SearchDialog.cpp | |||
@@ -1,136 +1,136 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | ** Created: Tue Aug 29 11:45:00 2000**/ | 2 | ** Created: Tue Aug 29 11:45:00 2000**/ |
3 | // copyright : (C) 2000 -2004 by llornkcor | 3 | // copyright : (C) 2000 -2004 by llornkcor |
4 | // email : ljp@llornkcor.com | 4 | // email : ljp@llornkcor.com |
5 | 5 | ||
6 | #include "SearchDialog.h" | 6 | #include "SearchDialog.h" |
7 | #include "SearchResults.h" | 7 | #include "SearchResults.h" |
8 | 8 | ||
9 | #include <qlayout.h> | 9 | #include <qlayout.h> |
10 | #include <qcheckbox.h> | 10 | #include <qcheckbox.h> |
11 | #include <qlabel.h> | 11 | #include <qlabel.h> |
12 | #include <qlineedit.h> | 12 | #include <qlineedit.h> |
13 | #include <qpushbutton.h> | 13 | #include <qpushbutton.h> |
14 | #include <qvariant.h> | 14 | #include <qvariant.h> |
15 | #include <qtooltip.h> | 15 | #include <qtooltip.h> |
16 | #include <qwhatsthis.h> | 16 | #include <qwhatsthis.h> |
17 | #include <qmessagebox.h> | 17 | #include <qmessagebox.h> |
18 | #include <qdir.h> | 18 | #include <qdir.h> |
19 | #include <qpe/config.h> | 19 | #include <qpe/config.h> |
20 | 20 | ||
21 | /*This is just a single text entry dialog */ | 21 | /*This is just a single text entry dialog */ |
22 | SearchDialog::SearchDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) | 22 | SearchDialog::SearchDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) |
23 | : QDialog( parent, name, modal, fl ) | 23 | : QDialog( parent, name, modal, fl ) |
24 | { | 24 | { |
25 | if ( !name ) | 25 | if ( !name ) |
26 | setName( "SearchDialog" ); | 26 | setName( "SearchDialog" ); |
27 | Config cfg("Gutenbrowser"); | 27 | Config cfg("Gutenbrowser"); |
28 | cfg.setGroup("General"); | 28 | cfg.setGroup("General"); |
29 | QString lastSearch=cfg.readEntry("LastSearch",""); | 29 | QString lastSearch=cfg.readEntry("LastSearch",""); |
30 | 30 | ||
31 | #warning FIXME | 31 | #warning FIXME |
32 | // FIXME | 32 | // FIXME |
33 | resize( 220,100); | 33 | resize( 220,100); |
34 | 34 | ||
35 | QGridLayout *layout = new QGridLayout( this ); | 35 | QGridLayout *layout = new QGridLayout( this ); |
36 | layout->setSpacing( 2); | 36 | layout->setSpacing( 2); |
37 | layout->setMargin( 2); | 37 | layout->setMargin( 2); |
38 | 38 | ||
39 | QString local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; | 39 | QString local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; |
40 | TextLabel1 = new QLabel( this, "TextLabel1" ); | 40 | TextLabel1 = new QLabel( this, "TextLabel1" ); |
41 | layout->addMultiCellWidget( TextLabel1, 0, 0, 0, 1); | 41 | layout->addMultiCellWidget( TextLabel1, 0, 0, 0, 1); |
42 | 42 | ||
43 | label1Str= "<P>Enter text to search etext for </P>" ; | 43 | label1Str= "<P>Enter text to search etext for </P>" ; |
44 | TextLabel1->setText( tr( label1Str) ); | 44 | TextLabel1->setText( tr( label1Str) ); |
45 | 45 | ||
46 | SearchLineEdit = new QLineEdit( this, "SearchLineEdit" ); | 46 | SearchLineEdit = new QLineEdit( this, "SearchLineEdit" ); |
47 | layout->addMultiCellWidget( SearchLineEdit, 1, 1, 0, 1); | 47 | layout->addMultiCellWidget( SearchLineEdit, 1, 1, 0, 1); |
48 | 48 | ||
49 | buttonOk = new QPushButton( this, "buttonOk" ); | 49 | buttonOk = new QPushButton( this, "buttonOk" ); |
50 | buttonOk->setText( tr( "Sea&rch" ) ); | 50 | buttonOk->setText( tr( "Sea&rch" ) ); |
51 | buttonOk->setAutoDefault( TRUE ); | 51 | buttonOk->setAutoDefault( TRUE ); |
52 | buttonOk->setToggleButton( TRUE); | 52 | buttonOk->setToggleButton( TRUE); |
53 | buttonOk->setDefault( TRUE ); | 53 | buttonOk->setDefault( TRUE ); |
54 | 54 | ||
55 | layout->addMultiCellWidget(buttonOk, 2, 2, 0, 0); | 55 | layout->addMultiCellWidget(buttonOk, 2, 2, 0, 0); |
56 | 56 | ||
57 | buttonCancel = new QPushButton( this, "buttonCancel" ); | 57 | buttonCancel = new QPushButton( this, "buttonCancel" ); |
58 | buttonCancel->setText( tr( "&Cancel" ) ); | 58 | buttonCancel->setText( tr( "&Cancel" ) ); |
59 | buttonCancel->setAutoDefault( TRUE ); | 59 | buttonCancel->setAutoDefault( TRUE ); |
60 | layout->addMultiCellWidget(buttonCancel, 2, 2, 1, 1); | 60 | layout->addMultiCellWidget(buttonCancel, 2, 2, 1, 1); |
61 | // buttonCancel->setMaximumWidth(40); | 61 | // buttonCancel->setMaximumWidth(40); |
62 | 62 | ||
63 | 63 | ||
64 | if( (QString)name !="Etext Search" ) | 64 | if( (QString)name !="Etext Search" ) |
65 | SearchLineEdit->setText(lastSearch); | 65 | SearchLineEdit->setText(lastSearch); |
66 | 66 | ||
67 | caseSensitiveCheckBox = new QCheckBox ( tr("Case Sensitive"), this ); | 67 | caseSensitiveCheckBox = new QCheckBox ( tr("Case Sensitive"), this ); |
68 | layout->addMultiCellWidget( caseSensitiveCheckBox, 3, 3, 0, 1); | 68 | layout->addMultiCellWidget( caseSensitiveCheckBox, 3, 3, 0, 1); |
69 | 69 | ||
70 | // signals and slots connections | 70 | // signals and slots connections |
71 | connect( buttonOk, SIGNAL( clicked() ), this, SLOT( byeBye() ) ); | 71 | connect( buttonOk, SIGNAL( clicked() ), this, SLOT( byeBye() ) ); |
72 | 72 | ||
73 | connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( closed() ) ); | 73 | connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( closed() ) ); |
74 | SearchLineEdit->setFocus(); | 74 | SearchLineEdit->setFocus(); |
75 | } | 75 | } |
76 | 76 | ||
77 | SearchDialog::~SearchDialog() | 77 | SearchDialog::~SearchDialog() |
78 | { | 78 | { |
79 | } | 79 | } |
80 | 80 | ||
81 | QString SearchDialog::get_text() { | 81 | QString SearchDialog::get_text() { |
82 | return SearchLineEdit->text(); | 82 | return SearchLineEdit->text(); |
83 | } | 83 | } |
84 | 84 | ||
85 | bool SearchDialog::get_direction() { | 85 | bool SearchDialog::get_direction() { |
86 | return false; //search forward | 86 | return false; //search forward |
87 | } | 87 | } |
88 | 88 | ||
89 | bool SearchDialog::case_sensitive() { | 89 | bool SearchDialog::case_sensitive() { |
90 | return true; | 90 | return true; |
91 | } | 91 | } |
92 | 92 | ||
93 | bool SearchDialog::forward_search() { | 93 | bool SearchDialog::forward_search() { |
94 | return true; | 94 | return true; |
95 | } | 95 | } |
96 | 96 | ||
97 | void SearchDialog::byeBye() | 97 | void SearchDialog::byeBye() |
98 | { | 98 | { |
99 | 99 | ||
100 | searchString = get_text(); | 100 | searchString = get_text(); |
101 | // qDebug("Search string is "+searchString); | 101 | // odebug << "Search string is "+searchString << oendl; |
102 | Config cfg("Gutenbrowser"); | 102 | Config cfg("Gutenbrowser"); |
103 | cfg.setGroup("General"); | 103 | cfg.setGroup("General"); |
104 | cfg.writeEntry("LastSearch",searchString); | 104 | cfg.writeEntry("LastSearch",searchString); |
105 | 105 | ||
106 | QString thisName=name(); | 106 | QString thisName=name(); |
107 | if( thisName.find("Library Search", 0, TRUE) != -1) { | 107 | if( thisName.find("Library Search", 0, TRUE) != -1) { |
108 | // searchString = SearchLineEdit->text(); | 108 | // searchString = SearchLineEdit->text(); |
109 | accept(); | 109 | accept(); |
110 | } else { | 110 | } else { |
111 | 111 | ||
112 | buttonOk->setDown(TRUE); | 112 | buttonOk->setDown(TRUE); |
113 | 113 | ||
114 | emit search_signal(); | 114 | emit search_signal(); |
115 | buttonOk->setDown(FALSE); | 115 | buttonOk->setDown(FALSE); |
116 | } | 116 | } |
117 | } | 117 | } |
118 | 118 | ||
119 | void SearchDialog::closed() | 119 | void SearchDialog::closed() |
120 | { | 120 | { |
121 | searchString = get_text(); | 121 | searchString = get_text(); |
122 | // qDebug("Search string is "+searchString); | 122 | // odebug << "Search string is "+searchString << oendl; |
123 | Config cfg("Gutenbrowser"); | 123 | Config cfg("Gutenbrowser"); |
124 | cfg.setGroup("General"); | 124 | cfg.setGroup("General"); |
125 | cfg.writeEntry("LastSearch",searchString); | 125 | cfg.writeEntry("LastSearch",searchString); |
126 | 126 | ||
127 | emit search_done_signal(); | 127 | emit search_done_signal(); |
128 | //this->reject(); | 128 | //this->reject(); |
129 | this->hide(); | 129 | this->hide(); |
130 | } | 130 | } |
131 | 131 | ||
132 | 132 | ||
133 | void SearchDialog::setLabel(QString labelText) | 133 | void SearchDialog::setLabel(QString labelText) |
134 | { | 134 | { |
135 | TextLabel1->setText( tr( label1Str+labelText) ); | 135 | TextLabel1->setText( tr( label1Str+labelText) ); |
136 | } | 136 | } |
diff --git a/noncore/apps/opie-gutenbrowser/browserDialog.cpp b/noncore/apps/opie-gutenbrowser/browserDialog.cpp index 81dd516..cc05d04 100644 --- a/noncore/apps/opie-gutenbrowser/browserDialog.cpp +++ b/noncore/apps/opie-gutenbrowser/browserDialog.cpp | |||
@@ -1,86 +1,87 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | copyright 2001 by L.J. Potter ljp@llornkcor.com | 2 | copyright 2001 by L.J. Potter ljp@llornkcor.com |
3 | copyright : (C) 2000 -2004 by llornkcor | 3 | copyright : (C) 2000 -2004 by llornkcor |
4 | email : ljp@llornkcor.com | 4 | email : ljp@llornkcor.com |
5 | 5 | ||
6 | ****************************************************************************/ | 6 | ****************************************************************************/ |
7 | 7 | ||
8 | #include "optionsDialog.h" | 8 | #include "optionsDialog.h" |
9 | //#include "fileBrowser.h" | 9 | //#include "fileBrowser.h" |
10 | 10 | ||
11 | /* OPIE */ | 11 | /* OPIE */ |
12 | #include <opie2/ofiledialog.h> | 12 | #include <opie2/ofiledialog.h> |
13 | #include <opie2/odebug.h> | ||
13 | using namespace Opie::Ui; | 14 | using namespace Opie::Ui; |
14 | 15 | ||
15 | /* QT */ | 16 | /* QT */ |
16 | #include <qlabel.h> | 17 | #include <qlabel.h> |
17 | #include <qlistbox.h> | 18 | #include <qlistbox.h> |
18 | #include <qpushbutton.h> | 19 | #include <qpushbutton.h> |
19 | #include <qlayout.h> | 20 | #include <qlayout.h> |
20 | 21 | ||
21 | void optionsDialog::BrowserDlg( ) | 22 | void optionsDialog::BrowserDlg( ) |
22 | { | 23 | { |
23 | // setCaption( tr( "Choose Browser" ) ); | 24 | // setCaption( tr( "Choose Browser" ) ); |
24 | http_ListBox1->insertItem( tr( "Opera")); | 25 | http_ListBox1->insertItem( tr( "Opera")); |
25 | http_ListBox1->insertItem( tr( "Konqueror")); | 26 | http_ListBox1->insertItem( tr( "Konqueror")); |
26 | http_ListBox1->insertItem( tr( "wget")); | 27 | http_ListBox1->insertItem( tr( "wget")); |
27 | } | 28 | } |
28 | 29 | ||
29 | void optionsDialog::select_title(int) { | 30 | void optionsDialog::select_title(int) { |
30 | browserName = http_ListBox1->currentText(); | 31 | browserName = http_ListBox1->currentText(); |
31 | Config config("Gutenbrowser"); | 32 | Config config("Gutenbrowser"); |
32 | config.setGroup( "Browser" ); | 33 | config.setGroup( "Browser" ); |
33 | printf("Brow is: "+browserName+"\n"); | 34 | printf("Brow is: "+browserName+"\n"); |
34 | config.writeEntry("Preferred", browserName); | 35 | config.writeEntry("Preferred", browserName); |
35 | TextLabel3_3->setText( "Current http browser: "+browserName ); | 36 | TextLabel3_3->setText( "Current http browser: "+browserName ); |
36 | } | 37 | } |
37 | 38 | ||
38 | void optionsDialog::BrowseSelected() { | 39 | void optionsDialog::BrowseSelected() { |
39 | QString fileName; | 40 | QString fileName; |
40 | Config cfg("Gutenbrowser"); | 41 | Config cfg("Gutenbrowser"); |
41 | cfg. setGroup ( "View" ); | 42 | cfg. setGroup ( "View" ); |
42 | QString dir = cfg.readEntry("LastOpenDirectory", QPEApplication::documentDir()); | 43 | QString dir = cfg.readEntry("LastOpenDirectory", QPEApplication::documentDir()); |
43 | QMap<QString, QStringList> map; | 44 | QMap<QString, QStringList> map; |
44 | map.insert(tr("All"), QStringList() ); | 45 | map.insert(tr("All"), QStringList() ); |
45 | QStringList text; | 46 | QStringList text; |
46 | text << "text/*"; | 47 | text << "text/*"; |
47 | map.insert(tr("Text"), text ); | 48 | map.insert(tr("Text"), text ); |
48 | text << "*"; | 49 | text << "*"; |
49 | map.insert(tr("All"), text ); | 50 | map.insert(tr("All"), text ); |
50 | 51 | ||
51 | QString str = OFileDialog::getOpenFileName( 2, dir , QString::null, map); | 52 | QString str = OFileDialog::getOpenFileName( 2, dir , QString::null, map); |
52 | if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() ) { | 53 | if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() ) { |
53 | fileName = str; | 54 | fileName = str; |
54 | // QStringList fileList=browseForFiles->fileList; | 55 | // QStringList fileList=browseForFiles->fileList; |
55 | // qDebug(selFile); | 56 | // odebug << selFile << oendl; |
56 | // QStringList::ConstIterator f; | 57 | // QStringList::ConstIterator f; |
57 | // QString fileTemp,filer; | 58 | // QString fileTemp,filer; |
58 | // for ( f = fileList.begin(); f != fileList.end(); f++ ) { | 59 | // for ( f = fileList.begin(); f != fileList.end(); f++ ) { |
59 | 60 | ||
60 | // fileTemp = *f; | 61 | // fileTemp = *f; |
61 | // fileTemp.right( fileTemp.length()-5); | 62 | // fileTemp.right( fileTemp.length()-5); |
62 | // fileName = fileTemp; | 63 | // fileName = fileTemp; |
63 | // if( !fileName.isEmpty() ){ | 64 | // if( !fileName.isEmpty() ){ |
64 | // filer = fileName; | 65 | // filer = fileName; |
65 | // } else { | 66 | // } else { |
66 | // QString sMsg; | 67 | // QString sMsg; |
67 | // sMsg = "Error opening library filelist "+fileName; | 68 | // sMsg = "Error opening library filelist "+fileName; |
68 | // } | 69 | // } |
69 | if ( !fileName.isNull() ) { // got a file name | 70 | if ( !fileName.isNull() ) { // got a file name |
70 | // ... | 71 | // ... |
71 | } | 72 | } |
72 | } | 73 | } |
73 | 74 | ||
74 | } | 75 | } |
75 | 76 | ||
76 | void optionsDialog::setHttp(int index) { | 77 | void optionsDialog::setHttp(int index) { |
77 | Config config("Gutenbrowser"); | 78 | Config config("Gutenbrowser"); |
78 | config.setGroup( "HttpServer" ); | 79 | config.setGroup( "HttpServer" ); |
79 | qDebug("writing http server"); | 80 | odebug << "writing http server" << oendl; |
80 | if( index== 0) { | 81 | if( index== 0) { |
81 | config.writeEntry("Preferred", "http://sailor.gutenberg.org"); | 82 | config.writeEntry("Preferred", "http://sailor.gutenberg.org"); |
82 | } else { | 83 | } else { |
83 | config.writeEntry("Preferred", "http://www.prairienet.org/pg"); | 84 | config.writeEntry("Preferred", "http://www.prairienet.org/pg"); |
84 | } | 85 | } |
85 | 86 | ||
86 | } | 87 | } |
diff --git a/noncore/apps/opie-gutenbrowser/fontDialog.cpp b/noncore/apps/opie-gutenbrowser/fontDialog.cpp index a17b1d3..fa964a6 100644 --- a/noncore/apps/opie-gutenbrowser/fontDialog.cpp +++ b/noncore/apps/opie-gutenbrowser/fontDialog.cpp | |||
@@ -1,260 +1,260 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | ** Created: Sun Jan 27 11:03:24 2002 | 2 | ** Created: Sun Jan 27 11:03:24 2002 |
3 | copyright 2002 by L.J. Potter ljp@llornkcor.com | 3 | copyright 2002 by L.J. Potter ljp@llornkcor.com |
4 | copyright : (C) 2000 -2004 by llornkcor | 4 | copyright : (C) 2000 -2004 by llornkcor |
5 | email : ljp@llornkcor.com | 5 | email : ljp@llornkcor.com |
6 | ****************************************************************************/ | 6 | ****************************************************************************/ |
7 | #include "fontDialog.h" | 7 | #include "fontDialog.h" |
8 | #include "optionsDialog.h" | 8 | #include "optionsDialog.h" |
9 | 9 | ||
10 | #include <qpe/fontdatabase.h> | 10 | #include <qpe/fontdatabase.h> |
11 | #include <qpe/config.h> | 11 | #include <qpe/config.h> |
12 | 12 | ||
13 | #include <qstringlist.h> | 13 | #include <qstringlist.h> |
14 | #include <qfontinfo.h> | 14 | #include <qfontinfo.h> |
15 | #include <qvaluelist.h> | 15 | #include <qvaluelist.h> |
16 | #include <qpe/qpeapplication.h> | 16 | #include <qpe/qpeapplication.h> |
17 | 17 | ||
18 | #include <qgroupbox.h> | 18 | #include <qgroupbox.h> |
19 | #include <qlabel.h> | 19 | #include <qlabel.h> |
20 | #include <qlistbox.h> | 20 | #include <qlistbox.h> |
21 | #include <qmultilineedit.h> | 21 | #include <qmultilineedit.h> |
22 | #include <qpushbutton.h> | 22 | #include <qpushbutton.h> |
23 | #include <qlayout.h> | 23 | #include <qlayout.h> |
24 | #include <qvariant.h> | 24 | #include <qvariant.h> |
25 | #include <qtooltip.h> | 25 | #include <qtooltip.h> |
26 | #include <qwhatsthis.h> | 26 | #include <qwhatsthis.h> |
27 | #include <qcombobox.h> | 27 | #include <qcombobox.h> |
28 | 28 | ||
29 | //#define BUGGY_SHARP_ZAURUS 0 | 29 | //#define BUGGY_SHARP_ZAURUS 0 |
30 | 30 | ||
31 | static const int nfontsizes = 9; | 31 | static const int nfontsizes = 9; |
32 | static const int fontsize[nfontsizes] = {8,9,10,11,12,13,14,18,24}; | 32 | static const int fontsize[nfontsizes] = {8,9,10,11,12,13,14,18,24}; |
33 | 33 | ||
34 | 34 | ||
35 | FontDialog::FontDialog( QWidget * parent, const char* name /*, bool modal, WFlags fl */) | 35 | FontDialog::FontDialog( QWidget * parent, const char* name /*, bool modal, WFlags fl */) |
36 | :/* QDialog*/ QWidget( parent, name /*, modal, fl */) | 36 | :/* QDialog*/ QWidget( parent, name /*, modal, fl */) |
37 | { | 37 | { |
38 | if ( !name ) | 38 | if ( !name ) |
39 | setName( "FontDialog" ); | 39 | setName( "FontDialog" ); |
40 | setCaption( tr( "Font Dialog" ) ); | 40 | setCaption( tr( "Font Dialog" ) ); |
41 | 41 | ||
42 | QGridLayout *layout = new QGridLayout( this ); | 42 | QGridLayout *layout = new QGridLayout( this ); |
43 | layout->setSpacing(2); | 43 | layout->setSpacing(2); |
44 | layout->setMargin(2); | 44 | layout->setMargin(2); |
45 | 45 | ||
46 | familyListBox = new QListBox( this, "familyListBox" ); | 46 | familyListBox = new QListBox( this, "familyListBox" ); |
47 | layout->addMultiCellWidget( familyListBox, 0, 2, 0, 0); | 47 | layout->addMultiCellWidget( familyListBox, 0, 2, 0, 0); |
48 | 48 | ||
49 | QBoxLayout * hbox = new QHBoxLayout(this); | 49 | QBoxLayout * hbox = new QHBoxLayout(this); |
50 | QBoxLayout * vbox = new QVBoxLayout(this); | 50 | QBoxLayout * vbox = new QVBoxLayout(this); |
51 | 51 | ||
52 | styleListBox = new QListBox( this, "styleListBox" ); | 52 | styleListBox = new QListBox( this, "styleListBox" ); |
53 | vbox->addWidget( styleListBox, 0); | 53 | vbox->addWidget( styleListBox, 0); |
54 | 54 | ||
55 | FontTextLabel4 = new QLabel( this, "TextLabel4" ); | 55 | FontTextLabel4 = new QLabel( this, "TextLabel4" ); |
56 | FontTextLabel4->setText( tr( "Size" ) ); | 56 | FontTextLabel4->setText( tr( "Size" ) ); |
57 | hbox->addWidget( FontTextLabel4,0); | 57 | hbox->addWidget( FontTextLabel4,0); |
58 | 58 | ||
59 | sizeComboBox = new QComboBox( FALSE, this, "SizeCombo"); | 59 | sizeComboBox = new QComboBox( FALSE, this, "SizeCombo"); |
60 | // sizeComboBox->setMaximumWidth(60); | 60 | // sizeComboBox->setMaximumWidth(60); |
61 | hbox->addWidget( sizeComboBox, 0); | 61 | hbox->addWidget( sizeComboBox, 0); |
62 | 62 | ||
63 | vbox->addLayout(hbox,0); | 63 | vbox->addLayout(hbox,0); |
64 | layout->addLayout( vbox,0,3); | 64 | layout->addLayout( vbox,0,3); |
65 | 65 | ||
66 | MultiLineEdit1 = new QMultiLineEdit( this, "MultiLineEdit1" ); | 66 | MultiLineEdit1 = new QMultiLineEdit( this, "MultiLineEdit1" ); |
67 | MultiLineEdit1->setText( tr( "The Quick Brown Fox Jumps Over The Lazy Dog" ) ); | 67 | MultiLineEdit1->setText( tr( "The Quick Brown Fox Jumps Over The Lazy Dog" ) ); |
68 | MultiLineEdit1->setWordWrap( QMultiLineEdit::WidgetWidth); | 68 | MultiLineEdit1->setWordWrap( QMultiLineEdit::WidgetWidth); |
69 | 69 | ||
70 | layout->addMultiCellWidget( MultiLineEdit1, 4, 4, 0, 3); | 70 | layout->addMultiCellWidget( MultiLineEdit1, 4, 4, 0, 3); |
71 | 71 | ||
72 | connect(familyListBox,SIGNAL(highlighted(const QString &)),SLOT(familyListBoxSlot(const QString &))); | 72 | connect(familyListBox,SIGNAL(highlighted(const QString &)),SLOT(familyListBoxSlot(const QString &))); |
73 | connect(styleListBox,SIGNAL(highlighted(const QString &)),SLOT(styleListBoxSlot(const QString &))); | 73 | connect(styleListBox,SIGNAL(highlighted(const QString &)),SLOT(styleListBoxSlot(const QString &))); |
74 | connect(sizeComboBox,SIGNAL(activated(const QString &)),SLOT(sizeComboBoxSlot(const QString &))); | 74 | connect(sizeComboBox,SIGNAL(activated(const QString &)),SLOT(sizeComboBoxSlot(const QString &))); |
75 | 75 | ||
76 | populateLists(); | 76 | populateLists(); |
77 | 77 | ||
78 | } | 78 | } |
79 | 79 | ||
80 | FontDialog::~FontDialog() | 80 | FontDialog::~FontDialog() |
81 | { | 81 | { |
82 | } | 82 | } |
83 | 83 | ||
84 | void FontDialog::familyListBoxSlot(const QString & text) | 84 | void FontDialog::familyListBoxSlot(const QString & text) |
85 | { | 85 | { |
86 | int styleInt = styleListBox->currentItem(); | 86 | int styleInt = styleListBox->currentItem(); |
87 | int sizeInt = sizeComboBox->currentText().toInt(); | 87 | int sizeInt = sizeComboBox->currentText().toInt(); |
88 | 88 | ||
89 | sizeComboBox->clear(); | 89 | sizeComboBox->clear(); |
90 | styleListBox->clear(); | 90 | styleListBox->clear(); |
91 | // clearListBoxes(); | 91 | // clearListBoxes(); |
92 | family = text; | 92 | family = text; |
93 | // qDebug(family); | 93 | // odebug << family << oendl; |
94 | QStringList styles = fdb.styles( family ); // string list of styles of our current font family | 94 | QStringList styles = fdb.styles( family ); // string list of styles of our current font family |
95 | styleListBox->insertStringList( styles); | 95 | styleListBox->insertStringList( styles); |
96 | QString dstyle;// = "\t" + style + " ("; | 96 | QString dstyle;// = "\t" + style + " ("; |
97 | 97 | ||
98 | #ifdef BUGGY_SHARP_ZAURUS | 98 | #ifdef BUGGY_SHARP_ZAURUS |
99 | 99 | ||
100 | QValueList<int> smoothies = fdb.smoothSizes( family, styleListBox->text(0) ); | 100 | QValueList<int> smoothies = fdb.smoothSizes( family, styleListBox->text(0) ); |
101 | for ( QValueList<int>::Iterator points = smoothies.begin(); points != smoothies.end(); ++points ) { | 101 | for ( QValueList<int>::Iterator points = smoothies.begin(); points != smoothies.end(); ++points ) { |
102 | dstyle = QString::number( *points ); | 102 | dstyle = QString::number( *points ); |
103 | qDebug(dstyle); | 103 | odebug << dstyle << oendl; |
104 | sizeComboBox->insertItem( dstyle.left( dstyle.length() - 1 )); | 104 | sizeComboBox->insertItem( dstyle.left( dstyle.length() - 1 )); |
105 | } | 105 | } |
106 | #else | 106 | #else |
107 | 107 | ||
108 | for (int i=0; i<nfontsizes; i++) { | 108 | for (int i=0; i<nfontsizes; i++) { |
109 | sizeComboBox->insertItem( QString::number(fontsize[i])); | 109 | sizeComboBox->insertItem( QString::number(fontsize[i])); |
110 | if(fontsize[i] == sizeInt) { | 110 | if(fontsize[i] == sizeInt) { |
111 | sizeComboBox->setCurrentItem(i); | 111 | sizeComboBox->setCurrentItem(i); |
112 | } | 112 | } |
113 | } | 113 | } |
114 | #endif | 114 | #endif |
115 | 115 | ||
116 | if(styleInt == -1 || styleInt > styleListBox->count() ) | 116 | if(styleInt == -1 || styleInt > styleListBox->count() ) |
117 | styleListBox->setCurrentItem(0); | 117 | styleListBox->setCurrentItem(0); |
118 | else | 118 | else |
119 | styleListBox->setCurrentItem(styleInt); | 119 | styleListBox->setCurrentItem(styleInt); |
120 | 120 | ||
121 | changeText(); | 121 | changeText(); |
122 | } | 122 | } |
123 | 123 | ||
124 | void FontDialog::styleListBoxSlot(const QString &text) | 124 | void FontDialog::styleListBoxSlot(const QString &text) |
125 | { | 125 | { |
126 | changeText(); | 126 | changeText(); |
127 | } | 127 | } |
128 | 128 | ||
129 | void FontDialog::sizeComboBoxSlot(const QString & text) | 129 | void FontDialog::sizeComboBoxSlot(const QString & text) |
130 | { | 130 | { |
131 | changeText(); | 131 | changeText(); |
132 | } | 132 | } |
133 | 133 | ||
134 | void FontDialog::populateLists() | 134 | void FontDialog::populateLists() |
135 | { | 135 | { |
136 | // QFont defaultFont=MultiLineEdit1->font(); | 136 | // QFont defaultFont=MultiLineEdit1->font(); |
137 | // QFont defaultFont=Lview->font(); | 137 | // QFont defaultFont=Lview->font(); |
138 | // QFontInfo fontInfo(defaultFont); | 138 | // QFontInfo fontInfo(defaultFont); |
139 | Config config("Gutenbrowser"); | 139 | Config config("Gutenbrowser"); |
140 | config.setGroup("Font"); | 140 | config.setGroup("Font"); |
141 | QString familyStr = config.readEntry("Family", "fixed"); | 141 | QString familyStr = config.readEntry("Family", "fixed"); |
142 | QString styleStr = config.readEntry("Style", "Regular"); | 142 | QString styleStr = config.readEntry("Style", "Regular"); |
143 | QString sizeStr = config.readEntry("Size", "10"); | 143 | QString sizeStr = config.readEntry("Size", "10"); |
144 | QString charSetStr = config.readEntry("CharSet", "iso10646-1" ); | 144 | QString charSetStr = config.readEntry("CharSet", "iso10646-1" ); |
145 | bool ok; | 145 | bool ok; |
146 | int i_size = sizeStr.toInt(&ok,10); | 146 | int i_size = sizeStr.toInt(&ok,10); |
147 | selectedFont = fdb.font(familyStr,styleStr,i_size,charSetStr); | 147 | selectedFont = fdb.font(familyStr,styleStr,i_size,charSetStr); |
148 | // defaultFont.setItalic(TRUE); | 148 | // defaultFont.setItalic(TRUE); |
149 | families = fdb.families(); | 149 | families = fdb.families(); |
150 | 150 | ||
151 | for ( QStringList::Iterator f = families.begin(); f != families.end();++f ) { | 151 | for ( QStringList::Iterator f = families.begin(); f != families.end();++f ) { |
152 | QString family = *f; | 152 | QString family = *f; |
153 | // if(family == defaultFont.family()) | 153 | // if(family == defaultFont.family()) |
154 | // qDebug(family); | 154 | // odebug << family << oendl; |
155 | familyListBox->insertItem( family); | 155 | familyListBox->insertItem( family); |
156 | 156 | ||
157 | if( familyListBox->text(0) == family) { | 157 | if( familyListBox->text(0) == family) { |
158 | QStringList styles = fdb.styles( family ); | 158 | QStringList styles = fdb.styles( family ); |
159 | // string list of styles of our current font family | 159 | // string list of styles of our current font family |
160 | styleListBox->insertStringList( styles); | 160 | styleListBox->insertStringList( styles); |
161 | 161 | ||
162 | for ( QStringList::Iterator s = styles.begin(); s != styles.end();++s ) { // for each font style | 162 | for ( QStringList::Iterator s = styles.begin(); s != styles.end();++s ) { // for each font style |
163 | style = *s; | 163 | style = *s; |
164 | QString dstyle;// = "\t" + style + " ("; | 164 | QString dstyle;// = "\t" + style + " ("; |
165 | if(styleListBox->text(0) == style) { | 165 | if(styleListBox->text(0) == style) { |
166 | 166 | ||
167 | QValueList<int> smoothies = fdb.smoothSizes( family, style ); | 167 | QValueList<int> smoothies = fdb.smoothSizes( family, style ); |
168 | for ( QValueList<int>::Iterator points = smoothies.begin(); points != smoothies.end(); ++points ) { | 168 | for ( QValueList<int>::Iterator points = smoothies.begin(); points != smoothies.end(); ++points ) { |
169 | dstyle = QString::number( *points ) + " "; | 169 | dstyle = QString::number( *points ) + " "; |
170 | sizeComboBox ->insertItem( dstyle.left( dstyle.length() - 1 )); | 170 | sizeComboBox ->insertItem( dstyle.left( dstyle.length() - 1 )); |
171 | } | 171 | } |
172 | dstyle = dstyle.left( dstyle.length() - 1 ) + ")"; | 172 | dstyle = dstyle.left( dstyle.length() - 1 ) + ")"; |
173 | } | 173 | } |
174 | } // styles | 174 | } // styles |
175 | } | 175 | } |
176 | } | 176 | } |
177 | for(int i=0;i < familyListBox->count();i++) { | 177 | for(int i=0;i < familyListBox->count();i++) { |
178 | if( familyListBox->text(i) == familyStr) | 178 | if( familyListBox->text(i) == familyStr) |
179 | familyListBox->setSelected( i, TRUE); | 179 | familyListBox->setSelected( i, TRUE); |
180 | } | 180 | } |
181 | 181 | ||
182 | for(int i=0;i < styleListBox->count();i++) { | 182 | for(int i=0;i < styleListBox->count();i++) { |
183 | if( styleListBox->text(i) == styleStr) | 183 | if( styleListBox->text(i) == styleStr) |
184 | styleListBox->setSelected( i, TRUE); | 184 | styleListBox->setSelected( i, TRUE); |
185 | } | 185 | } |
186 | 186 | ||
187 | for (int i=0; i<sizeComboBox->count(); i++) { | 187 | for (int i=0; i<sizeComboBox->count(); i++) { |
188 | 188 | ||
189 | #ifdef BUGGY_SHARP_ZAURUS | 189 | #ifdef BUGGY_SHARP_ZAURUS |
190 | if(sizeComboBox->text(i) == sizeStr) | 190 | if(sizeComboBox->text(i) == sizeStr) |
191 | #else | 191 | #else |
192 | if(fontsize[i] == i_size) | 192 | if(fontsize[i] == i_size) |
193 | #endif | 193 | #endif |
194 | sizeComboBox->setCurrentItem(i); | 194 | sizeComboBox->setCurrentItem(i); |
195 | } | 195 | } |
196 | changeText(); | 196 | changeText(); |
197 | } | 197 | } |
198 | 198 | ||
199 | void FontDialog::clearListBoxes() { | 199 | void FontDialog::clearListBoxes() { |
200 | familyListBox->clear(); | 200 | familyListBox->clear(); |
201 | sizeComboBox->clear(); | 201 | sizeComboBox->clear(); |
202 | styleListBox->clear(); | 202 | styleListBox->clear(); |
203 | } | 203 | } |
204 | 204 | ||
205 | void FontDialog::changeText() | 205 | void FontDialog::changeText() |
206 | { | 206 | { |
207 | if( familyListBox->currentItem() == -1) | 207 | if( familyListBox->currentItem() == -1) |
208 | family= familyListBox->text(0); | 208 | family= familyListBox->text(0); |
209 | else { | 209 | else { |
210 | family = familyListBox->currentText(); | 210 | family = familyListBox->currentText(); |
211 | } | 211 | } |
212 | // qDebug("Font family is "+family); | 212 | // odebug << "Font family is "+family << oendl; |
213 | if( styleListBox->currentItem() == -1) | 213 | if( styleListBox->currentItem() == -1) |
214 | style=styleListBox->text(0); | 214 | style=styleListBox->text(0); |
215 | else { | 215 | else { |
216 | style = styleListBox->currentText(); | 216 | style = styleListBox->currentText(); |
217 | } | 217 | } |
218 | // qDebug("font style is "+style); | 218 | // odebug << "font style is "+style << oendl; |
219 | 219 | ||
220 | if( sizeComboBox->currentItem() == -1 ) | 220 | if( sizeComboBox->currentItem() == -1 ) |
221 | size = sizeComboBox->text(0); | 221 | size = sizeComboBox->text(0); |
222 | else { | 222 | else { |
223 | size = sizeComboBox->currentText(); | 223 | size = sizeComboBox->currentText(); |
224 | } | 224 | } |
225 | 225 | ||
226 | // qDebug("Font size is "+size); | 226 | // odebug << "Font size is "+size << oendl; |
227 | bool ok; | 227 | bool ok; |
228 | int i_size = size.toInt(&ok,10); | 228 | int i_size = size.toInt(&ok,10); |
229 | QStringList charSetList = fdb.charSets(family); | 229 | QStringList charSetList = fdb.charSets(family); |
230 | // QStringList styles = fdb.styles( family ); // string list of styles of our current font family | 230 | // QStringList styles = fdb.styles( family ); // string list of styles of our current font family |
231 | QString charSet; | 231 | QString charSet; |
232 | for ( QStringList::Iterator s = charSetList.begin(); s != charSetList.end();++s ) { // for each font style | 232 | for ( QStringList::Iterator s = charSetList.begin(); s != charSetList.end();++s ) { // for each font style |
233 | charSet = *s; | 233 | charSet = *s; |
234 | // qDebug(charSet); | 234 | // odebug << charSet << oendl; |
235 | } | 235 | } |
236 | selectedFont = fdb.font(family,style,i_size,charSet); | 236 | selectedFont = fdb.font(family,style,i_size,charSet); |
237 | QFontInfo fontInfo( selectedFont); | 237 | QFontInfo fontInfo( selectedFont); |
238 | // if(fontInfo.italic() ) qDebug("italic"); | 238 | // if(fontInfo.italic() ) odebug << "italic" << oendl; |
239 | selectedFont.setWeight(fontInfo.weight() ); | 239 | selectedFont.setWeight(fontInfo.weight() ); |
240 | // qDebug("Style are "+style+" %d ",fontInfo.weight()); | 240 | // odebug << "Style are "+style+" " << fontInfo.weight() << " " << oendl; |
241 | Config cfg("Gutenbrowser"); | 241 | Config cfg("Gutenbrowser"); |
242 | cfg.setGroup("Font"); | 242 | cfg.setGroup("Font"); |
243 | cfg.writeEntry("Family",family); | 243 | cfg.writeEntry("Family",family); |
244 | cfg.writeEntry("Style",style); | 244 | cfg.writeEntry("Style",style); |
245 | cfg.writeEntry("Size",size); | 245 | cfg.writeEntry("Size",size); |
246 | cfg.writeEntry("CharSet",charSet); | 246 | cfg.writeEntry("CharSet",charSet); |
247 | 247 | ||
248 | if(style.find("Italic",0,TRUE) != -1) { | 248 | if(style.find("Italic",0,TRUE) != -1) { |
249 | selectedFont = fdb.font(family,"Regular",i_size,charSet); | 249 | selectedFont = fdb.font(family,"Regular",i_size,charSet); |
250 | selectedFont.setItalic(TRUE); //ya right | 250 | selectedFont.setItalic(TRUE); //ya right |
251 | cfg.writeEntry("Italic","TRUE"); | 251 | cfg.writeEntry("Italic","TRUE"); |
252 | // qDebug("Style is "+styleListBox->currentText()); | 252 | // odebug << "Style is "+styleListBox->currentText() << oendl; |
253 | } else | 253 | } else |
254 | cfg.writeEntry("Italic","FALSE"); | 254 | cfg.writeEntry("Italic","FALSE"); |
255 | 255 | ||
256 | MultiLineEdit1->setFont( selectedFont); | 256 | MultiLineEdit1->setFont( selectedFont); |
257 | MultiLineEdit1->update(); | 257 | MultiLineEdit1->update(); |
258 | changedFonts=TRUE; | 258 | changedFonts=TRUE; |
259 | } | 259 | } |
260 | 260 | ||
diff --git a/noncore/apps/opie-gutenbrowser/ftpsitedlg.cpp b/noncore/apps/opie-gutenbrowser/ftpsitedlg.cpp index ad770b5..a9c7346 100644 --- a/noncore/apps/opie-gutenbrowser/ftpsitedlg.cpp +++ b/noncore/apps/opie-gutenbrowser/ftpsitedlg.cpp | |||
@@ -1,247 +1,252 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | ftpsitedlg.cpp - description | 2 | ftpsitedlg.cpp - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Tue Jul 25 2000 | 4 | begin : Tue Jul 25 2000 |
5 | copyright : (C) 2000 -2004 by llornkcor | 5 | copyright : (C) 2000 -2004 by llornkcor |
6 | email : ljp@llornkcor.com | 6 | email : ljp@llornkcor.com |
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | /*************************************************************************** | 8 | /*************************************************************************** |
9 | * This program is free software; you can redistribute it and/or modify * | 9 | * This program is free software; you can redistribute it and/or modify * |
10 | * it under the terms of the GNU General Public License as published by * | 10 | * it under the terms of the GNU General Public License as published by * |
11 | * the Free Software Foundation; either version 2 of the License, or * | 11 | * the Free Software Foundation; either version 2 of the License, or * |
12 | * (at your option) any later version. * | 12 | * (at your option) any later version. * |
13 | ***************************************************************************/ | 13 | ***************************************************************************/ |
14 | |||
14 | #include "optionsDialog.h" | 15 | #include "optionsDialog.h" |
15 | #include "gutenbrowser.h" | 16 | #include "gutenbrowser.h" |
16 | //#include "NetworkDialog.h" | 17 | //#include "NetworkDialog.h" |
17 | #include "output.h" | 18 | #include "output.h" |
18 | 19 | ||
20 | /* OPIE */ | ||
21 | #include <opie2/odebug.h> | ||
22 | #include <qpe/config.h> | ||
23 | |||
24 | /* QT */ | ||
19 | #include <qprogressbar.h> | 25 | #include <qprogressbar.h> |
20 | #include <stdlib.h> | ||
21 | #include <qurloperator.h> | 26 | #include <qurloperator.h> |
22 | #include <qpe/config.h> | ||
23 | #include <qlistbox.h> | 27 | #include <qlistbox.h> |
24 | 28 | ||
29 | /* STD */ | ||
30 | #include <stdlib.h> | ||
25 | #include <unistd.h> | 31 | #include <unistd.h> |
26 | #include <stdio.h> | 32 | #include <stdio.h> |
27 | #include <stdlib.h> | ||
28 | 33 | ||
29 | // :)~ | 34 | // :)~ |
30 | void optionsDialog::ftpSiteDlg( ) | 35 | void optionsDialog::ftpSiteDlg( ) |
31 | { | 36 | { |
32 | //printf( "ftpSiteDlg: ListFile is "+ ListFile +"\n" ); | 37 | //printf( "ftpSiteDlg: ListFile is "+ ListFile +"\n" ); |
33 | // initDialog(); | 38 | // initDialog(); |
34 | local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; | 39 | local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; |
35 | // ListFile = local_library + "ftpList"; | 40 | // ListFile = local_library + "ftpList"; |
36 | ListFile = QPEApplication::qpeDir() + "/etc/gutenbrowser"; | 41 | ListFile = QPEApplication::qpeDir() + "/etc/gutenbrowser"; |
37 | QDir dir(ListFile); | 42 | QDir dir(ListFile); |
38 | if( !dir.exists()) | 43 | if( !dir.exists()) |
39 | dir.mkdir(ListFile,true); | 44 | dir.mkdir(ListFile,true); |
40 | ListFile+="/ftpList"; | 45 | ListFile+="/ftpList"; |
41 | qDebug("opening "+ListFile); | 46 | odebug << "opening "+ListFile << oendl; |
42 | if ( QFile(ListFile).exists() ) { | 47 | if ( QFile(ListFile).exists() ) { |
43 | openSiteList(); | 48 | openSiteList(); |
44 | } else { | 49 | } else { |
45 | switch( QMessageBox::warning( this, "Gutenbrowser", | 50 | switch( QMessageBox::warning( this, "Gutenbrowser", |
46 | "Do you want to download \nan ftp site list?", | 51 | "Do you want to download \nan ftp site list?", |
47 | QMessageBox::Yes, QMessageBox::No)) { | 52 | QMessageBox::Yes, QMessageBox::No)) { |
48 | case QMessageBox::Yes: // yes | 53 | case QMessageBox::Yes: // yes |
49 | getSite(); | 54 | getSite(); |
50 | break; | 55 | break; |
51 | case QMessageBox::No: // No | 56 | case QMessageBox::No: // No |
52 | // exit | 57 | // exit |
53 | break; | 58 | break; |
54 | } | 59 | } |
55 | 60 | ||
56 | } | 61 | } |
57 | } | 62 | } |
58 | 63 | ||
59 | 64 | ||
60 | /* | 65 | /* |
61 | // get ftp list from web- parse it. */ | 66 | // get ftp list from web- parse it. */ |
62 | void optionsDialog::getSite() | 67 | void optionsDialog::getSite() |
63 | { | 68 | { |
64 | QString file_name; | 69 | QString file_name; |
65 | QString ftp_listFileURL; | 70 | QString ftp_listFileURL; |
66 | QString outputFile; | 71 | QString outputFile; |
67 | // outputFile = local_library+ "list.html"; | 72 | // outputFile = local_library+ "list.html"; |
68 | outputFile = ListFile + "list.html"; | 73 | outputFile = ListFile + "list.html"; |
69 | QString networkUrl= "http://www.gutenberg.org/www/mirror.sites.html"; | 74 | QString networkUrl= "http://www.gutenberg.org/www/mirror.sites.html"; |
70 | //http://www.gutenberg.org/index.html"; | 75 | //http://www.gutenberg.org/index.html"; |
71 | // QString networkUrl= "http://llornkcor.com/index.shtml"; | 76 | // QString networkUrl= "http://llornkcor.com/index.shtml"; |
72 | // // "http://www.gutenberg.org/index.html" | 77 | // // "http://www.gutenberg.org/index.html" |
73 | // | 78 | // |
74 | //Qhttp stops working at times.... :( | 79 | //Qhttp stops working at times.... :( |
75 | // NetworkDialog *NetworkDlg; | 80 | // NetworkDialog *NetworkDlg; |
76 | // NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog",TRUE,0,networkUrl,outputFile); | 81 | // NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog",TRUE,0,networkUrl,outputFile); |
77 | // if( NetworkDlg->exec() != 0 ) | 82 | // if( NetworkDlg->exec() != 0 ) |
78 | // { // use new, improved, *INSTANT* network-dialog-file-getterer | 83 | // { // use new, improved, *INSTANT* network-dialog-file-getterer |
79 | // qDebug("gitcha!"); | 84 | // odebug << "gitcha!" << oendl; |
80 | // } | 85 | // } |
81 | // delete NetworkDlg; | 86 | // delete NetworkDlg; |
82 | //#ifdef Q_WS_QWS | 87 | //#ifdef Q_WS_QWS |
83 | 88 | ||
84 | // TODO qprocess here | 89 | // TODO qprocess here |
85 | 90 | ||
86 | QString cmd="wget -T 15 -O " +outputFile + " " + networkUrl + " 2>&1" ; | 91 | QString cmd="wget -T 15 -O " +outputFile + " " + networkUrl + " 2>&1" ; |
87 | qDebug("Issuing the command "+cmd); | 92 | odebug << "Issuing the command "+cmd << oendl; |
88 | Output *outDlg; | 93 | Output *outDlg; |
89 | outDlg = new Output( 0, tr("Downloading ftp sites...."),TRUE); | 94 | outDlg = new Output( 0, tr("Downloading ftp sites...."),TRUE); |
90 | outDlg->showMaximized(); | 95 | outDlg->showMaximized(); |
91 | outDlg->show(); | 96 | outDlg->show(); |
92 | qApp->processEvents(); | 97 | qApp->processEvents(); |
93 | FILE *fp; | 98 | FILE *fp; |
94 | char line[130]; | 99 | char line[130]; |
95 | outDlg->OutputEdit->append( tr("Running wget") ); | 100 | outDlg->OutputEdit->append( tr("Running wget") ); |
96 | sleep(1); | 101 | sleep(1); |
97 | fp = popen( (const char *) cmd, "r"); | 102 | fp = popen( (const char *) cmd, "r"); |
98 | while ( fgets( line, sizeof line, fp)) { | 103 | while ( fgets( line, sizeof line, fp)) { |
99 | outDlg->OutputEdit->append(line); | 104 | outDlg->OutputEdit->append(line); |
100 | outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); | 105 | outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); |
101 | } | 106 | } |
102 | pclose(fp); | 107 | pclose(fp); |
103 | outDlg->close(); | 108 | outDlg->close(); |
104 | if(outDlg) | 109 | if(outDlg) |
105 | delete outDlg; | 110 | delete outDlg; |
106 | 111 | ||
107 | // outputFile=ListFile; | 112 | // outputFile=ListFile; |
108 | ftp_QListBox_1->clear(); | 113 | ftp_QListBox_1->clear(); |
109 | parseFtpList( outputFile); // got the html list, now parse it so we can use it | 114 | parseFtpList( outputFile); // got the html list, now parse it so we can use it |
110 | } | 115 | } |
111 | 116 | ||
112 | bool optionsDialog::parseFtpList( QString outputFile) | 117 | bool optionsDialog::parseFtpList( QString outputFile) |
113 | { | 118 | { |
114 | // parse ftplist html and extract just the machine names/directories | 119 | // parse ftplist html and extract just the machine names/directories |
115 | // TODO: add locations!! | 120 | // TODO: add locations!! |
116 | qDebug("parse ftplist "+outputFile); | 121 | odebug << "parse ftplist "+outputFile << oendl; |
117 | QString ftpList, s_location; | 122 | QString ftpList, s_location; |
118 | QFile f( outputFile ); | 123 | QFile f( outputFile ); |
119 | 124 | ||
120 | if( f.open( IO_ReadWrite )) { | 125 | if( f.open( IO_ReadWrite )) { |
121 | QTextStream t( &f); | 126 | QTextStream t( &f); |
122 | QString countryName; | 127 | QString countryName; |
123 | bool b_gotchTest=false; | 128 | bool b_gotchTest=false; |
124 | 129 | ||
125 | while ( !t.eof() ) { | 130 | while ( !t.eof() ) { |
126 | QString s = t.readLine(); | 131 | QString s = t.readLine(); |
127 | int start; | 132 | int start; |
128 | int end; | 133 | int end; |
129 | if( s.find( "FTP mirror sites for Project Gutenberg:", 0, TRUE) !=-1) { //lower end of this file | 134 | if( s.find( "FTP mirror sites for Project Gutenberg:", 0, TRUE) !=-1) { //lower end of this file |
130 | b_gotchTest = true; | 135 | b_gotchTest = true; |
131 | } | 136 | } |
132 | if( b_gotchTest) { | 137 | if( b_gotchTest) { |
133 | if(( start = s.find( "ftp://", 0, TRUE))!=-1 ) { | 138 | if(( start = s.find( "ftp://", 0, TRUE))!=-1 ) { |
134 | end = s.find( "/\"", 0, TRUE);// ==-1)) { | 139 | end = s.find( "/\"", 0, TRUE);// ==-1)) { |
135 | if( end == -1) { | 140 | if( end == -1) { |
136 | end = s.find( "\">"); | 141 | end = s.find( "\">"); |
137 | } | 142 | } |
138 | ftpSite = s.mid( start, (end - start) ); | 143 | ftpSite = s.mid( start, (end - start) ); |
139 | if(ftpSite.right(1) != "/") { | 144 | if(ftpSite.right(1) != "/") { |
140 | // ftpSite += "/"; | 145 | // ftpSite += "/"; |
141 | } | 146 | } |
142 | ftpSite=ftpSite.right( ftpSite.length()-6); | 147 | ftpSite=ftpSite.right( ftpSite.length()-6); |
143 | if( ftpSite.find("\n", 0, TRUE) ) | 148 | if( ftpSite.find("\n", 0, TRUE) ) |
144 | ftpSite.remove( ftpSite.find("\n", 0, TRUE), 1); | 149 | ftpSite.remove( ftpSite.find("\n", 0, TRUE), 1); |
145 | 150 | ||
146 | if( ftpSite.find("\"", 0, TRUE) ) | 151 | if( ftpSite.find("\"", 0, TRUE) ) |
147 | ftpSite.remove( ftpSite.find("\"", 0, TRUE), 1); | 152 | ftpSite.remove( ftpSite.find("\"", 0, TRUE), 1); |
148 | if( ftpSite.find("a>", 0, TRUE) ) | 153 | if( ftpSite.find("a>", 0, TRUE) ) |
149 | ftpSite.remove( ftpSite.find("a>", 0, TRUE) -2, 4); | 154 | ftpSite.remove( ftpSite.find("a>", 0, TRUE) -2, 4); |
150 | 155 | ||
151 | 156 | ||
152 | s = t.readLine(); | 157 | s = t.readLine(); |
153 | s = t.readLine(); | 158 | s = t.readLine(); |
154 | if(( start=s.find("<BR>(", 0, TRUE) ) != -1) { | 159 | if(( start=s.find("<BR>(", 0, TRUE) ) != -1) { |
155 | // qDebug("%s",s.latin1()); | 160 | // odebug << "" << s << "" << oendl; |
156 | end = s.find( ")", 0, TRUE)+1; | 161 | end = s.find( ")", 0, TRUE)+1; |
157 | s_location= s.mid( start+4, (end - start) ); | 162 | s_location= s.mid( start+4, (end - start) ); |
158 | 163 | ||
159 | // qDebug("%s", s_location.latin1()); | 164 | // odebug << "" << s_location << "" << oendl; |
160 | // ftpList += ftpSite + "\n"; | 165 | // ftpList += ftpSite + "\n"; |
161 | // ftp_QListBox_1->sort( TRUE ); | 166 | // ftp_QListBox_1->sort( TRUE ); |
162 | ftpList += s_location+ " "+ftpSite+"\n"; | 167 | ftpList += s_location+ " "+ftpSite+"\n"; |
163 | 168 | ||
164 | ftp_QListBox_1->sort( TRUE ); | 169 | ftp_QListBox_1->sort( TRUE ); |
165 | QString winbug=" "; | 170 | QString winbug=" "; |
166 | ftp_QListBox_1->insertItem ( s_location.latin1() +winbug+ftpSite); | 171 | ftp_QListBox_1->insertItem ( s_location.latin1() +winbug+ftpSite); |
167 | // ftp_QListBox_1->insertItem ( ftpSite+" "+s_location.latin1()); | 172 | // ftp_QListBox_1->insertItem ( ftpSite+" "+s_location.latin1()); |
168 | } | 173 | } |
169 | 174 | ||
170 | // ftp_QListBox_1->insertItem ( ftpSite); | 175 | // ftp_QListBox_1->insertItem ( ftpSite); |
171 | } | 176 | } |
172 | } // end find ftp:// | 177 | } // end find ftp:// |
173 | 178 | ||
174 | } // end while loop | 179 | } // end while loop |
175 | QFile f2( ListFile); | 180 | QFile f2( ListFile); |
176 | if(!f2.open( IO_ReadWrite | IO_Truncate)) | 181 | if(!f2.open( IO_ReadWrite | IO_Truncate)) |
177 | QMessageBox::message( (tr("Note")), (tr("File not opened sucessfully.\n"+ListFile )) ); | 182 | QMessageBox::message( (tr("Note")), (tr("File not opened sucessfully.\n"+ListFile )) ); |
178 | f2.writeBlock( ftpList, ftpList.length() ); | 183 | f2.writeBlock( ftpList, ftpList.length() ); |
179 | f.close(); | 184 | f.close(); |
180 | f2.close(); | 185 | f2.close(); |
181 | if( f.exists() ) | 186 | if( f.exists() ) |
182 | f.remove(); | 187 | f.remove(); |
183 | } else { | 188 | } else { |
184 | QMessageBox::message( (tr("ftpSiteDlg")), (tr("List File not opened sucessfully." )) ); | 189 | QMessageBox::message( (tr("ftpSiteDlg")), (tr("List File not opened sucessfully." )) ); |
185 | return false; | 190 | return false; |
186 | } | 191 | } |
187 | setActiveWindow(); | 192 | setActiveWindow(); |
188 | return true; | 193 | return true; |
189 | } | 194 | } |
190 | 195 | ||
191 | void optionsDialog::openSiteList() { | 196 | void optionsDialog::openSiteList() { |
192 | 197 | ||
193 | qDebug(" just opens the ftp site list"); | 198 | odebug << " just opens the ftp site list" << oendl; |
194 | // ListFile = ( QDir::homeDirPath ()) +"/.gutenbrowser/ftpList"; | 199 | // ListFile = ( QDir::homeDirPath ()) +"/.gutenbrowser/ftpList"; |
195 | QFile f( ListFile); | 200 | QFile f( ListFile); |
196 | if(!f.open( IO_ReadWrite )) { | 201 | if(!f.open( IO_ReadWrite )) { |
197 | QMessageBox::message( (tr("Note")), (tr("File not opened sucessfully." )) ); | 202 | QMessageBox::message( (tr("Note")), (tr("File not opened sucessfully." )) ); |
198 | } else { | 203 | } else { |
199 | QTextStream t( &f); | 204 | QTextStream t( &f); |
200 | while ( !t.atEnd() ) { | 205 | while ( !t.atEnd() ) { |
201 | QString ftpSite = t.readLine(); | 206 | QString ftpSite = t.readLine(); |
202 | ftp_QListBox_1->sort( TRUE ); | 207 | ftp_QListBox_1->sort( TRUE ); |
203 | ftp_QListBox_1->insertItem ( ftpSite); | 208 | ftp_QListBox_1->insertItem ( ftpSite); |
204 | 209 | ||
205 | } // end while loop | 210 | } // end while loop |
206 | f.close(); | 211 | f.close(); |
207 | } | 212 | } |
208 | 213 | ||
209 | QListBoxItem *itemSel=0; | 214 | QListBoxItem *itemSel=0; |
210 | if( (itemSel=ftp_QListBox_1->findItem( ftp_host)) ) | 215 | if( (itemSel=ftp_QListBox_1->findItem( ftp_host)) ) |
211 | ftp_QListBox_1->setSelected( itemSel, true); | 216 | ftp_QListBox_1->setSelected( itemSel, true); |
212 | } | 217 | } |
213 | 218 | ||
214 | /* | 219 | /* |
215 | List box clicked */ | 220 | List box clicked */ |
216 | void optionsDialog::getSelection( QListBoxItem *item) | 221 | void optionsDialog::getSelection( QListBoxItem *item) |
217 | { | 222 | { |
218 | QString selctionStr; | 223 | QString selctionStr; |
219 | selctionStr = item->text(); | 224 | selctionStr = item->text(); |
220 | // selctionStr = ftp_QListBox_1->currentText(); | 225 | // selctionStr = ftp_QListBox_1->currentText(); |
221 | // printf( selctionStr+"\n" ); | 226 | // printf( selctionStr+"\n" ); |
222 | select_site( selctionStr ); | 227 | select_site( selctionStr ); |
223 | } | 228 | } |
224 | 229 | ||
225 | void optionsDialog::select_site( const char *index ) | 230 | void optionsDialog::select_site( const char *index ) |
226 | { | 231 | { |
227 | // ftp://ftp.datacanyon.com/pub/gutenberg/ | 232 | // ftp://ftp.datacanyon.com/pub/gutenberg/ |
228 | 233 | ||
229 | s_site = index; | 234 | s_site = index; |
230 | QString s_site2; | 235 | QString s_site2; |
231 | // if(s_site.find("(",0,TRUE)) | 236 | // if(s_site.find("(",0,TRUE)) |
232 | s_site2=s_site.right( s_site.length()-(s_site.find(" ",0,TRUE)+4) ); | 237 | s_site2=s_site.right( s_site.length()-(s_site.find(" ",0,TRUE)+4) ); |
233 | qDebug("Selected ftp site is "+ s_site2); | 238 | odebug << "Selected ftp site is "+ s_site2 << oendl; |
234 | int i_ftp = s_site2.find("/", 0, FALSE); | 239 | int i_ftp = s_site2.find("/", 0, FALSE); |
235 | ftp_host = s_site2.left(i_ftp ); | 240 | ftp_host = s_site2.left(i_ftp ); |
236 | ftp_base_dir = s_site2.right( s_site2.length() - i_ftp); | 241 | ftp_base_dir = s_site2.right( s_site2.length() - i_ftp); |
237 | 242 | ||
238 | // config->read(); | 243 | // config->read(); |
239 | Config config("Gutenbrowser"); | 244 | Config config("Gutenbrowser"); |
240 | config.setGroup( "FTPsite" ); | 245 | config.setGroup( "FTPsite" ); |
241 | config.writeEntry("SiteName",ftp_host); | 246 | config.writeEntry("SiteName",ftp_host); |
242 | config.writeEntry("base",ftp_base_dir); | 247 | config.writeEntry("base",ftp_base_dir); |
243 | // config->write(); | 248 | // config->write(); |
244 | TextLabel3->setText( "Current ftp server:\n"+ftp_host /*+ ftp_base_dir*/ ); | 249 | TextLabel3->setText( "Current ftp server:\n"+ftp_host /*+ ftp_base_dir*/ ); |
245 | // optionsDialog::accept(); | 250 | // optionsDialog::accept(); |
246 | } | 251 | } |
247 | 252 | ||
diff --git a/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp b/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp index 2a9a71e..be2b897 100644 --- a/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp +++ b/noncore/apps/opie-gutenbrowser/gutenbrowser.cpp | |||
@@ -1,1984 +1,1989 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | gutenbrowser.cpp - description | 2 | gutenbrowser.cpp - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Mon Jul 24 22:33:12 MDT 2000 | 4 | begin : Mon Jul 24 22:33:12 MDT 2000 |
5 | copyright : (C) 2000 -2004 by llornkcor | 5 | copyright : (C) 2000 -2004 by llornkcor |
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 | // http search | 12 | // http search |
13 | // http://digital.library.upenn.edu/books/authors.html | 13 | // http://digital.library.upenn.edu/books/authors.html |
14 | // http://digital.library.upenn.edu/books/titles.html | 14 | // http://digital.library.upenn.edu/books/titles.html |
15 | // ftp://ibiblio.org/pub/docs/books/gutenberg/GUTINDEX.ALL | 15 | // ftp://ibiblio.org/pub/docs/books/gutenberg/GUTINDEX.ALL |
16 | // donate@gutenberg.net | 16 | // donate@gutenberg.net |
17 | #include <qpe/qpeapplication.h> | 17 | |
18 | #include <qpe/fontdatabase.h> | ||
19 | #include <qpe/config.h> | ||
20 | #include <qpe/qcopenvelope_qws.h> | ||
21 | #include <qpe/mimetype.h> | ||
22 | #include <qpe/resource.h> | ||
23 | #include <qpe/applnk.h> | ||
24 | 18 | ||
25 | #include "editTitle.h" | 19 | #include "editTitle.h" |
26 | #include "gutenbrowser.h" | 20 | #include "gutenbrowser.h" |
27 | #include "LibraryDialog.h" | 21 | #include "LibraryDialog.h" |
28 | //#include "bookmarksdlg.h" | 22 | //#include "bookmarksdlg.h" |
29 | #include "optionsDialog.h" | 23 | #include "optionsDialog.h" |
30 | #include "helpme.h" | 24 | #include "helpme.h" |
31 | #include "NetworkDialog.h" | 25 | #include "NetworkDialog.h" |
32 | 26 | ||
33 | #include "openetext.h" | 27 | #include "openetext.h" |
34 | #include "output.h" | 28 | #include "output.h" |
35 | 29 | ||
30 | /* OPIE */ | ||
31 | #include <opie2/odebug.h> | ||
32 | #include <qpe/qpeapplication.h> | ||
33 | #include <qpe/fontdatabase.h> | ||
34 | #include <qpe/config.h> | ||
35 | #include <qpe/qcopenvelope_qws.h> | ||
36 | #include <qpe/mimetype.h> | ||
37 | #include <qpe/resource.h> | ||
38 | #include <qpe/applnk.h> | ||
36 | 39 | ||
40 | /* QT */ | ||
37 | #include <qregexp.h> | 41 | #include <qregexp.h> |
38 | #include <qregion.h> | 42 | #include <qregion.h> |
39 | #include <qpaintdevicemetrics.h> | 43 | #include <qpaintdevicemetrics.h> |
40 | #include <qvaluelist.h> | 44 | #include <qvaluelist.h> |
41 | #include <qlabel.h> | 45 | #include <qlabel.h> |
42 | #include <qclipboard.h> | 46 | #include <qclipboard.h> |
43 | #include <qpainter.h> | 47 | #include <qpainter.h> |
44 | #include <qpalette.h> | 48 | #include <qpalette.h> |
45 | #include <qobjectlist.h> | 49 | #include <qobjectlist.h> |
46 | #include <qfontdialog.h> | 50 | #include <qfontdialog.h> |
47 | #include <qtextview.h> | 51 | #include <qtextview.h> |
48 | #include <qbrush.h> | 52 | #include <qbrush.h> |
49 | #include <qfile.h> | 53 | #include <qfile.h> |
50 | #include <qfontinfo.h> | 54 | #include <qfontinfo.h> |
51 | #include <qscrollview.h> | 55 | #include <qscrollview.h> |
52 | #include <qpoint.h> | 56 | #include <qpoint.h> |
53 | 57 | ||
58 | /* STD */ | ||
54 | #include <stdio.h> | 59 | #include <stdio.h> |
55 | #include <stdlib.h> | 60 | #include <stdlib.h> |
56 | #include <unistd.h> | 61 | #include <unistd.h> |
57 | #include <sys/stat.h> | 62 | #include <sys/stat.h> |
58 | #include <fcntl.h> | 63 | #include <fcntl.h> |
59 | #include <errno.h> | 64 | #include <errno.h> |
60 | 65 | ||
61 | static const int nfontsizes = 9; | 66 | static const int nfontsizes = 9; |
62 | static const int fontsize[nfontsizes] = {8,9,10,11,12,13,14,18,24}; | 67 | static const int fontsize[nfontsizes] = {8,9,10,11,12,13,14,18,24}; |
63 | 68 | ||
64 | #ifdef NOQUICKLAUNCH | 69 | #ifdef NOQUICKLAUNCH |
65 | Gutenbrowser::Gutenbrowser() | 70 | Gutenbrowser::Gutenbrowser() |
66 | Gutenbrowser(); | 71 | Gutenbrowser(); |
67 | #else | 72 | #else |
68 | Gutenbrowser::Gutenbrowser(QWidget *,const char*, WFlags ) | 73 | Gutenbrowser::Gutenbrowser(QWidget *,const char*, WFlags ) |
69 | #endif | 74 | #endif |
70 | : QMainWindow() | 75 | : QMainWindow() |
71 | { | 76 | { |
72 | // QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | 77 | // QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; |
73 | // QCopEnvelope e("QPE/System", "grabKeyboard(QString)" ); | 78 | // QCopEnvelope e("QPE/System", "grabKeyboard(QString)" ); |
74 | // e << ""; | 79 | // e << ""; |
75 | // QPEApplication::grabKeyboard(); | 80 | // QPEApplication::grabKeyboard(); |
76 | showMainList=TRUE; | 81 | showMainList=TRUE; |
77 | working=false; | 82 | working=false; |
78 | this->setUpdatesEnabled(TRUE); | 83 | this->setUpdatesEnabled(TRUE); |
79 | // #ifndef Q_WS_QWS | 84 | // #ifndef Q_WS_QWS |
80 | QString msg; | 85 | QString msg; |
81 | msg="You have now entered unto gutenbrowser,\n"; | 86 | msg="You have now entered unto gutenbrowser,\n"; |
82 | msg+="make your self at home, sit back, relax and read something great.\n"; | 87 | msg+="make your self at home, sit back, relax and read something great.\n"; |
83 | 88 | ||
84 | local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; | 89 | local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; |
85 | setCaption("Gutenbrowser");// Embedded " VERSION); | 90 | setCaption("Gutenbrowser");// Embedded " VERSION); |
86 | this->setUpdatesEnabled(TRUE); | 91 | this->setUpdatesEnabled(TRUE); |
87 | 92 | ||
88 | // bool firstTime=FALSE; | 93 | // bool firstTime=FALSE; |
89 | topLayout = new QVBoxLayout( this, 0, 0, "topLayout"); | 94 | topLayout = new QVBoxLayout( this, 0, 0, "topLayout"); |
90 | 95 | ||
91 | menu = new QHBoxLayout(-1,"menu"); | 96 | menu = new QHBoxLayout(-1,"menu"); |
92 | buttons2 = new QHBoxLayout(-1,"buttons2"); | 97 | buttons2 = new QHBoxLayout(-1,"buttons2"); |
93 | edits = new QHBoxLayout(-1,"edits"); | 98 | edits = new QHBoxLayout(-1,"edits"); |
94 | 99 | ||
95 | useSplitter=TRUE; | 100 | useSplitter=TRUE; |
96 | 101 | ||
97 | initConfig(); | 102 | initConfig(); |
98 | initMenuBar(); | 103 | initMenuBar(); |
99 | initButtonBar(); | 104 | initButtonBar(); |
100 | initStatusBar(); | 105 | initStatusBar(); |
101 | initView(); | 106 | initView(); |
102 | initSlots(); | 107 | initSlots(); |
103 | 108 | ||
104 | QPEApplication::setStylusOperation( mainList->viewport(),QPEApplication::RightOnHold); | 109 | QPEApplication::setStylusOperation( mainList->viewport(),QPEApplication::RightOnHold); |
105 | 110 | ||
106 | connect( mainList, SIGNAL( mouseButtonPressed( int, QListBoxItem *, const QPoint &)), | 111 | connect( mainList, SIGNAL( mouseButtonPressed( int, QListBoxItem *, const QPoint &)), |
107 | this, SLOT( mainListPressed(int, QListBoxItem *, const QPoint &)) ); | 112 | this, SLOT( mainListPressed(int, QListBoxItem *, const QPoint &)) ); |
108 | if( useIcons) | 113 | if( useIcons) |
109 | toggleButtonIcons( TRUE); | 114 | toggleButtonIcons( TRUE); |
110 | else | 115 | else |
111 | toggleButtonIcons( FALSE); | 116 | toggleButtonIcons( FALSE); |
112 | 117 | ||
113 | enableButtons(false); | 118 | enableButtons(false); |
114 | 119 | ||
115 | Config config("Gutenbrowser"); // populate menubuttonlist | 120 | Config config("Gutenbrowser"); // populate menubuttonlist |
116 | config.setGroup("General"); | 121 | config.setGroup("General"); |
117 | 122 | ||
118 | config.setGroup( "Files" ); | 123 | config.setGroup( "Files" ); |
119 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); | 124 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); |
120 | int i_numofFiles = s_numofFiles.toInt(); | 125 | int i_numofFiles = s_numofFiles.toInt(); |
121 | 126 | ||
122 | QString tempFileName; | 127 | QString tempFileName; |
123 | 128 | ||
124 | for (int i = 0; i <= i_numofFiles; i++) { | 129 | for (int i = 0; i <= i_numofFiles; i++) { |
125 | // tempFileName.setNum(i); | 130 | // tempFileName.setNum(i); |
126 | config.setGroup( "Files" ); | 131 | config.setGroup( "Files" ); |
127 | QString ramble = config.readEntry( QString::number(i), "" ); | 132 | QString ramble = config.readEntry( QString::number(i), "" ); |
128 | 133 | ||
129 | config.setGroup( "Titles" ); | 134 | config.setGroup( "Titles" ); |
130 | QString tempTitle = config.readEntry( ramble, ""); | 135 | QString tempTitle = config.readEntry( ramble, ""); |
131 | config.setGroup( tempTitle); | 136 | config.setGroup( tempTitle); |
132 | int index=config.readNumEntry( "LineNumber", -1 ); | 137 | int index=config.readNumEntry( "LineNumber", -1 ); |
133 | if( index != -1) { | 138 | if( index != -1) { |
134 | // qDebug( tempTitle); | 139 | // odebug << tempTitle << oendl; |
135 | bookmarksMenu->insertItem( tempTitle); | 140 | bookmarksMenu->insertItem( tempTitle); |
136 | } | 141 | } |
137 | } | 142 | } |
138 | 143 | ||
139 | // QString gutenIndex= local_library + "GUTINDEX.ALL"; | 144 | // QString gutenIndex= local_library + "GUTINDEX.ALL"; |
140 | QString gutenIndex= QPEApplication::qpeDir()+ "/etc/gutenbrowser/GUTINDEX.ALL"; | 145 | QString gutenIndex= QPEApplication::qpeDir()+ "/etc/gutenbrowser/GUTINDEX.ALL"; |
141 | 146 | ||
142 | if( QFile( gutenIndex).exists() ) { | 147 | if( QFile( gutenIndex).exists() ) { |
143 | indexLib.setName( gutenIndex); | 148 | indexLib.setName( gutenIndex); |
144 | } else { | 149 | } else { |
145 | QString localLibIndexFile = QPEApplication::qpeDir()+ "/etc/gutenbrowser/PGWHOLE.TXT"; | 150 | QString localLibIndexFile = QPEApplication::qpeDir()+ "/etc/gutenbrowser/PGWHOLE.TXT"; |
146 | // QString localLibIndexFile= local_library + "PGWHOLE.TXT"; | 151 | // QString localLibIndexFile= local_library + "PGWHOLE.TXT"; |
147 | newindexLib.setName( localLibIndexFile); | 152 | newindexLib.setName( localLibIndexFile); |
148 | } | 153 | } |
149 | LibraryDlg = new LibraryDialog( this, "Library Index" /*, TRUE */); | 154 | LibraryDlg = new LibraryDialog( this, "Library Index" /*, TRUE */); |
150 | loadCheck=false; | 155 | loadCheck=false; |
151 | chdir(local_library); | 156 | chdir(local_library); |
152 | if(!showMainList) { | 157 | if(!showMainList) { |
153 | Lview->setFocus(); | 158 | Lview->setFocus(); |
154 | // if(firstTime) | 159 | // if(firstTime) |
155 | // Bookmark(); | 160 | // Bookmark(); |
156 | for (int i=1;i< qApp->argc();i++) { | 161 | for (int i=1;i< qApp->argc();i++) { |
157 | qDebug("Suppose we open somethin"); | 162 | odebug << "Suppose we open somethin" << oendl; |
158 | load(qApp->argv()[i]); | 163 | load(qApp->argv()[i]); |
159 | } | 164 | } |
160 | } else { | 165 | } else { |
161 | fillWithTitles(); | 166 | fillWithTitles(); |
162 | mainList->setFocus(); | 167 | mainList->setFocus(); |
163 | // mainList->setCurrentItem(0); | 168 | // mainList->setCurrentItem(0); |
164 | 169 | ||
165 | } | 170 | } |
166 | writeConfig(); | 171 | writeConfig(); |
167 | } //end init | 172 | } //end init |
168 | 173 | ||
169 | Gutenbrowser::~Gutenbrowser() { | 174 | Gutenbrowser::~Gutenbrowser() { |
170 | // QPEApplication::grabKeyboard(); | 175 | // QPEApplication::grabKeyboard(); |
171 | // QPEApplication::ungrabKeyboard(); | 176 | // QPEApplication::ungrabKeyboard(); |
172 | qDebug("Exit"); | 177 | odebug << "Exit" << oendl; |
173 | } | 178 | } |
174 | 179 | ||
175 | /* | 180 | /* |
176 | Google.com search */ | 181 | Google.com search */ |
177 | void Gutenbrowser::InfoBarClick() { | 182 | void Gutenbrowser::InfoBarClick() { |
178 | QString text; | 183 | QString text; |
179 | if( Lview->hasSelectedText()) { | 184 | if( Lview->hasSelectedText()) { |
180 | Lview->copy(); | 185 | Lview->copy(); |
181 | QClipboard *cb = QApplication::clipboard(); | 186 | QClipboard *cb = QApplication::clipboard(); |
182 | text = cb->text(); | 187 | text = cb->text(); |
183 | } else { | 188 | } else { |
184 | // text=title; | 189 | // text=title; |
185 | text=this->caption(); | 190 | text=this->caption(); |
186 | } | 191 | } |
187 | searchGoogle(text); | 192 | searchGoogle(text); |
188 | } | 193 | } |
189 | 194 | ||
190 | /* | 195 | /* |
191 | download http with wget or preferred browser */ | 196 | download http with wget or preferred browser */ |
192 | void Gutenbrowser::goGetit( const QString &url, bool showMsg) { | 197 | void Gutenbrowser::goGetit( const QString &url, bool showMsg) { |
193 | // int eexit=0; | 198 | // int eexit=0; |
194 | QString cmd; | 199 | QString cmd; |
195 | // config.read(); | 200 | // config.read(); |
196 | qApp->processEvents(); | 201 | qApp->processEvents(); |
197 | QString filename = QPEApplication::qpeDir(); | 202 | QString filename = QPEApplication::qpeDir(); |
198 | if(filename.right(1)!="/") | 203 | if(filename.right(1)!="/") |
199 | filename+="/etc/gutenbrowser/"; | 204 | filename+="/etc/gutenbrowser/"; |
200 | else | 205 | else |
201 | filename+="etc/gutenbrowser/"; | 206 | filename+="etc/gutenbrowser/"; |
202 | qDebug("filename "+filename); | 207 | odebug << "filename "+filename << oendl; |
203 | // QString filename = QDir::homeDirPath()+"/Applications/gutenbrowser/"; | 208 | // QString filename = QDir::homeDirPath()+"/Applications/gutenbrowser/"; |
204 | 209 | ||
205 | filename += url.right( url.length() - url.findRev("/",-1,TRUE) -1); | 210 | filename += url.right( url.length() - url.findRev("/",-1,TRUE) -1); |
206 | 211 | ||
207 | Config config("Gutenbrowser"); | 212 | Config config("Gutenbrowser"); |
208 | config.setGroup( "Browser" ); | 213 | config.setGroup( "Browser" ); |
209 | QString brow = config.readEntry("Preferred", "Opera"); | 214 | QString brow = config.readEntry("Preferred", "Opera"); |
210 | qDebug("Preferred browser is "+brow); | 215 | odebug << "Preferred browser is "+brow << oendl; |
211 | if(!showMsg) { //if we just get the gutenindex.all | 216 | if(!showMsg) { //if we just get the gutenindex.all |
212 | cmd="wget -O " + filename +" " + url+" 2>&1" ; | 217 | cmd="wget -O " + filename +" " + url+" 2>&1" ; |
213 | chdir(local_library); | 218 | chdir(local_library); |
214 | qDebug("Issuing the system command: %s", cmd.latin1()); | 219 | odebug << "Issuing the system command: " << cmd << "" << oendl; |
215 | 220 | ||
216 | Output *outDlg; | 221 | Output *outDlg; |
217 | outDlg = new Output(this, tr("Gutenbrowser Output"),FALSE); | 222 | outDlg = new Output(this, tr("Gutenbrowser Output"),FALSE); |
218 | outDlg->showMaximized(); | 223 | outDlg->showMaximized(); |
219 | outDlg->show(); | 224 | outDlg->show(); |
220 | qApp->processEvents(); | 225 | qApp->processEvents(); |
221 | FILE *fp; | 226 | FILE *fp; |
222 | char line[130]; | 227 | char line[130]; |
223 | outDlg->OutputEdit->append( tr("Running wget") ); | 228 | outDlg->OutputEdit->append( tr("Running wget") ); |
224 | sleep(1); | 229 | sleep(1); |
225 | fp = popen( (const char *) cmd, "r"); | 230 | fp = popen( (const char *) cmd, "r"); |
226 | // qDebug("Issuing the command\n"+cmd); | 231 | // odebug << "Issuing the command\n"+cmd << oendl; |
227 | // system(cmd); | 232 | // system(cmd); |
228 | while ( fgets( line, sizeof line, fp)) { | 233 | while ( fgets( line, sizeof line, fp)) { |
229 | outDlg->OutputEdit->append(line); | 234 | outDlg->OutputEdit->append(line); |
230 | outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); | 235 | outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); |
231 | } | 236 | } |
232 | pclose(fp); | 237 | pclose(fp); |
233 | outDlg->close(); | 238 | outDlg->close(); |
234 | if(outDlg) | 239 | if(outDlg) |
235 | delete outDlg; | 240 | delete outDlg; |
236 | } else { | 241 | } else { |
237 | if( brow == "Konq") { | 242 | if( brow == "Konq") { |
238 | cmd = "konqueror "+url+" &"; | 243 | cmd = "konqueror "+url+" &"; |
239 | } | 244 | } |
240 | if( brow == "Opera") { //for desktop testing | 245 | if( brow == "Opera") { //for desktop testing |
241 | cmd = "opera "+url+" &"; | 246 | cmd = "opera "+url+" &"; |
242 | } | 247 | } |
243 | // if( brow == "Opera") { // on Zaurus | 248 | // if( brow == "Opera") { // on Zaurus |
244 | // cmd = "operagui "+url+" &"; | 249 | // cmd = "operagui "+url+" &"; |
245 | // } | 250 | // } |
246 | if( brow == "Mozilla") { | 251 | if( brow == "Mozilla") { |
247 | cmd = "mozilla "+url+" &"; | 252 | cmd = "mozilla "+url+" &"; |
248 | } | 253 | } |
249 | if( brow == "Netscape") { | 254 | if( brow == "Netscape") { |
250 | cmd = "netscape "+url+" &"; | 255 | cmd = "netscape "+url+" &"; |
251 | } | 256 | } |
252 | if(brow == "wget") { | 257 | if(brow == "wget") { |
253 | // cmd="wget -q "+url+" &"; | 258 | // cmd="wget -q "+url+" &"; |
254 | QString tempHtml=local_library+"webster.html"; | 259 | QString tempHtml=local_library+"webster.html"; |
255 | cmd="wget -O "+tempHtml+" -q "+url; | 260 | cmd="wget -O "+tempHtml+" -q "+url; |
256 | } | 261 | } |
257 | 262 | ||
258 | chdir(local_library); | 263 | chdir(local_library); |
259 | qDebug("Issuing the sys command: %s", cmd.latin1()); | 264 | odebug << "Issuing the sys command: " << cmd << "" << oendl; |
260 | system(cmd); | 265 | system(cmd); |
261 | } | 266 | } |
262 | } | 267 | } |
263 | 268 | ||
264 | void Gutenbrowser::toggleButtonIcons( bool useEm) { | 269 | void Gutenbrowser::toggleButtonIcons( bool useEm) { |
265 | QString pixDir; | 270 | QString pixDir; |
266 | if(useEm) | 271 | if(useEm) |
267 | useEm=TRUE; | 272 | useEm=TRUE; |
268 | pixDir=QPEApplication::qpeDir()+"pics/gutenbrowser"; | 273 | pixDir=QPEApplication::qpeDir()+"pics/gutenbrowser"; |
269 | qDebug("Docdir is "+QPEApplication::documentDir()); | 274 | odebug << "Docdir is "+QPEApplication::documentDir() << oendl; |
270 | 275 | ||
271 | if( useIcons && QDir( pixDir).exists() ) { | 276 | if( useIcons && QDir( pixDir).exists() ) { |
272 | LibraryButton->setPixmap( Resource::loadPixmap("home") ); //in inline | 277 | LibraryButton->setPixmap( Resource::loadPixmap("home") ); //in inline |
273 | OpenButton->setPixmap( Resource::loadPixmap("gutenbrowser/openbook")); | 278 | OpenButton->setPixmap( Resource::loadPixmap("gutenbrowser/openbook")); |
274 | ForwardButton->setPixmap( Resource::loadPixmap("forward"));//in inline | 279 | ForwardButton->setPixmap( Resource::loadPixmap("forward"));//in inline |
275 | BackButton->setPixmap( Resource::loadPixmap("back") );//in inline | 280 | BackButton->setPixmap( Resource::loadPixmap("back") );//in inline |
276 | SearchButton->setPixmap( Resource::loadPixmap("gutenbrowser/search") );//in inline | 281 | SearchButton->setPixmap( Resource::loadPixmap("gutenbrowser/search") );//in inline |
277 | lastBmkButton->setPixmap( Resource::loadPixmap("gutenbrowser/bookmark_folder")); | 282 | lastBmkButton->setPixmap( Resource::loadPixmap("gutenbrowser/bookmark_folder")); |
278 | setBookmarkButton->setPixmap( Resource::loadPixmap("gutenbrowser/bookmark") ); | 283 | setBookmarkButton->setPixmap( Resource::loadPixmap("gutenbrowser/bookmark") ); |
279 | dictionaryButton->setPixmap( Resource::loadPixmap("gutenbrowser/spellcheck") ); | 284 | dictionaryButton->setPixmap( Resource::loadPixmap("gutenbrowser/spellcheck") ); |
280 | InfoBar->setPixmap( Resource::loadPixmap("gutenbrowser/google")); | 285 | InfoBar->setPixmap( Resource::loadPixmap("gutenbrowser/google")); |
281 | } | 286 | } |
282 | } | 287 | } |
283 | 288 | ||
284 | 289 | ||
285 | bool Gutenbrowser::queryExit() | 290 | bool Gutenbrowser::queryExit() |
286 | { | 291 | { |
287 | int exit=QMessageBox::information(this, "Quit...", "Do your really want to quit?", | 292 | int exit=QMessageBox::information(this, "Quit...", "Do your really want to quit?", |
288 | QMessageBox::Ok, QMessageBox::Cancel); | 293 | QMessageBox::Ok, QMessageBox::Cancel); |
289 | if (exit==1) { | 294 | if (exit==1) { |
290 | writeConfig(); | 295 | writeConfig(); |
291 | qApp->quit(); | 296 | qApp->quit(); |
292 | } else { | 297 | } else { |
293 | }; | 298 | }; |
294 | return (exit==1); | 299 | return (exit==1); |
295 | } | 300 | } |
296 | 301 | ||
297 | // SLOT IMPLEMENTATION | 302 | // SLOT IMPLEMENTATION |
298 | 303 | ||
299 | void Gutenbrowser::slotFilePrint() { | 304 | void Gutenbrowser::slotFilePrint() { |
300 | } | 305 | } |
301 | 306 | ||
302 | void Gutenbrowser::ByeBye() { | 307 | void Gutenbrowser::ByeBye() { |
303 | if (b_queryExit) | 308 | if (b_queryExit) |
304 | queryExit(); | 309 | queryExit(); |
305 | else { | 310 | else { |
306 | // writeConfig(); | 311 | // writeConfig(); |
307 | qApp->quit(); | 312 | qApp->quit(); |
308 | } | 313 | } |
309 | } | 314 | } |
310 | 315 | ||
311 | void Gutenbrowser::HelpBtn() { | 316 | void Gutenbrowser::HelpBtn() { |
312 | HelpMe* HelpDlg; | 317 | HelpMe* HelpDlg; |
313 | HelpDlg = new HelpMe( this, "Help Dialog"); | 318 | HelpDlg = new HelpMe( this, "Help Dialog"); |
314 | HelpDlg->showMaximized(); | 319 | HelpDlg->showMaximized(); |
315 | } | 320 | } |
316 | 321 | ||
317 | void Gutenbrowser::DownloadIndex() { | 322 | void Gutenbrowser::DownloadIndex() { |
318 | #ifndef Q_WS_QWS | 323 | #ifndef Q_WS_QWS |
319 | { | 324 | { |
320 | switch( QMessageBox::information( 0, (tr("Download Library Index, or FTP sites?")), | 325 | switch( QMessageBox::information( 0, (tr("Download Library Index, or FTP sites?")), |
321 | (tr("Do you want to download the newest\n" | 326 | (tr("Do you want to download the newest\n" |
322 | "Project Gutenberg Library Index?\n" | 327 | "Project Gutenberg Library Index?\n" |
323 | "or select an ftp site?\n")), | 328 | "or select an ftp site?\n")), |
324 | (tr("&Library Index")), (tr("&Ftp Site")), (tr("&Cancel")), 2, 2 ) ) | 329 | (tr("&Library Index")), (tr("&Ftp Site")), (tr("&Cancel")), 2, 2 ) ) |
325 | { | 330 | { |
326 | case 0: // index clicked, | 331 | case 0: // index clicked, |
327 | downloadLibIndex(); | 332 | downloadLibIndex(); |
328 | break; | 333 | break; |
329 | 334 | ||
330 | case 1: // ftp selected | 335 | case 1: // ftp selected |
331 | downloadFtpList(); | 336 | downloadFtpList(); |
332 | break; | 337 | break; |
333 | 338 | ||
334 | case 2: // Cancel | 339 | case 2: // Cancel |
335 | break; | 340 | break; |
336 | }; | 341 | }; |
337 | } | 342 | } |
338 | #endif | 343 | #endif |
339 | } // end DownloadIndex | 344 | } // end DownloadIndex |
340 | 345 | ||
341 | 346 | ||
342 | void Gutenbrowser::downloadFtpList() { | 347 | void Gutenbrowser::downloadFtpList() { |
343 | // QString cmd="wget http://www.promo.net/pg/list.html"); | 348 | // QString cmd="wget http://www.promo.net/pg/list.html"); |
344 | //system(cmd); | 349 | //system(cmd); |
345 | qApp->processEvents(); | 350 | qApp->processEvents(); |
346 | optionsDialog* optDlg; | 351 | optionsDialog* optDlg; |
347 | optDlg = new optionsDialog( this,"Options_Dlg", true); | 352 | optDlg = new optionsDialog( this,"Options_Dlg", true); |
348 | optDlg->getSite(); | 353 | optDlg->getSite(); |
349 | if(optDlg) | 354 | if(optDlg) |
350 | delete optDlg; | 355 | delete optDlg; |
351 | } | 356 | } |
352 | 357 | ||
353 | 358 | ||
354 | void Gutenbrowser::downloadLibIndex() { | 359 | void Gutenbrowser::downloadLibIndex() { |
355 | // QString dwmloader = local_library + "pgwhole.zip"; | 360 | // QString dwmloader = local_library + "pgwhole.zip"; |
356 | // QString cmd = "lynx -source http://www.gutenberg.net/pgwhole.zip | cat >> " + dwmloader; | 361 | // QString cmd = "lynx -source http://www.gutenberg.net/pgwhole.zip | cat >> " + dwmloader; |
357 | // system(cmd); | 362 | // system(cmd); |
358 | 363 | ||
359 | // QString outputFile= local_library+ "GUTINDEX.ALL"; | 364 | // QString outputFile= local_library+ "GUTINDEX.ALL"; |
360 | // config.setGroup( "FTPsite" ); // ftp server config | 365 | // config.setGroup( "FTPsite" ); // ftp server config |
361 | // ftp_host=config.readEntry("SiteName", ""); | 366 | // ftp_host=config.readEntry("SiteName", ""); |
362 | // ftp_base_dir= config.readEntry("base", ""); | 367 | // ftp_base_dir= config.readEntry("base", ""); |
363 | // QString networkUrl= "ftp://"+ftp_host+ftp_base_dir+"/GUTINDEX.ALL"; | 368 | // QString networkUrl= "ftp://"+ftp_host+ftp_base_dir+"/GUTINDEX.ALL"; |
364 | QDir dir( local_library); | 369 | QDir dir( local_library); |
365 | dir.cd("", TRUE); | 370 | dir.cd("", TRUE); |
366 | goGetit( "http://sailor.gutenberg.org/GUTINDEX.ALL", false); // until ghttp works on binaries -qt3 | 371 | goGetit( "http://sailor.gutenberg.org/GUTINDEX.ALL", false); // until ghttp works on binaries -qt3 |
367 | // goGetit( "http://www.gutenberg.net/pgwhole.zip", true); // until ghttp works on binaries -qt3 | 372 | // goGetit( "http://www.gutenberg.net/pgwhole.zip", true); // until ghttp works on binaries -qt3 |
368 | // NetworkDialog *NetworkDlg; | 373 | // NetworkDialog *NetworkDlg; |
369 | // NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog", TRUE, 0, networkUrl, outputFile ); | 374 | // NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog", TRUE, 0, networkUrl, outputFile ); |
370 | // if( NetworkDlg->exec() != 0 ) | 375 | // if( NetworkDlg->exec() != 0 ) |
371 | // { // use new, improved, *INSTANT* network-dialog-file-getterer | 376 | // { // use new, improved, *INSTANT* network-dialog-file-getterer |
372 | //// QMessageBox::message("Note",""); | 377 | //// QMessageBox::message("Note",""); |
373 | // } | 378 | // } |
374 | // if(NetworkDlg) | 379 | // if(NetworkDlg) |
375 | // delete NetworkDlg; | 380 | // delete NetworkDlg; |
376 | } | 381 | } |
377 | 382 | ||
378 | 383 | ||
379 | void Gutenbrowser::PrintBtn() { | 384 | void Gutenbrowser::PrintBtn() { |
380 | } | 385 | } |
381 | 386 | ||
382 | void Gutenbrowser::SearchBtn() { | 387 | void Gutenbrowser::SearchBtn() { |
383 | if( loadCheck) { | 388 | if( loadCheck) { |
384 | qDebug("loadCheck: we have a loaded doc"); | 389 | odebug << "loadCheck: we have a loaded doc" << oendl; |
385 | Search(); | 390 | Search(); |
386 | } | 391 | } |
387 | // else | 392 | // else |
388 | // QMessageBox::message("Note","Sorry, can't search. No etext is loaded"); | 393 | // QMessageBox::message("Note","Sorry, can't search. No etext is loaded"); |
389 | } | 394 | } |
390 | 395 | ||
391 | 396 | ||
392 | void Gutenbrowser::ForwardBtn() { | 397 | void Gutenbrowser::ForwardBtn() { |
393 | 398 | ||
394 | if( !ForwardButton->autoRepeat() && !ForwardButton->isDown()) { | 399 | if( !ForwardButton->autoRepeat() && !ForwardButton->isDown()) { |
395 | 400 | ||
396 | QString s; | 401 | QString s; |
397 | QString insertString; | 402 | QString insertString; |
398 | int pageSize= Lview->PageSize(); | 403 | int pageSize= Lview->PageSize(); |
399 | Lview->clear(); | 404 | Lview->clear(); |
400 | 405 | ||
401 | for(int fd=0; fd < pageSize - 1;fd++) { | 406 | for(int fd=0; fd < pageSize - 1;fd++) { |
402 | f.readLine(s, 256); | 407 | f.readLine(s, 256); |
403 | if(useWrap) | 408 | if(useWrap) |
404 | s.replace(QRegExp("\n"),""); | 409 | s.replace(QRegExp("\n"),""); |
405 | insertString+=s; | 410 | insertString+=s; |
406 | Lview->insertLine( s, -1); | 411 | Lview->insertLine( s, -1); |
407 | // qDebug(s); | 412 | // odebug << s << oendl; |
408 | currentLine++; | 413 | currentLine++; |
409 | } | 414 | } |
410 | // Lview->insertAt( insertString,0,0, FALSE); | 415 | // Lview->insertAt( insertString,0,0, FALSE); |
411 | currentFilePos = f.at(); | 416 | currentFilePos = f.at(); |
412 | // if( i_pageNum != pages) { | 417 | // if( i_pageNum != pages) { |
413 | // Lview->MultiLine_Ex::pageDown( FALSE); | 418 | // Lview->MultiLine_Ex::pageDown( FALSE); |
414 | i_pageNum++; | 419 | i_pageNum++; |
415 | pageStopArray.resize(i_pageNum + 1); | 420 | pageStopArray.resize(i_pageNum + 1); |
416 | // int length = Lview->length(); | 421 | // int length = Lview->length(); |
417 | 422 | ||
418 | pageStopArray[i_pageNum ] = currentFilePos; | 423 | pageStopArray[i_pageNum ] = currentFilePos; |
419 | // qDebug("%d current page is number %d, pagesize %d, length %d, current %d", | 424 | // qDebug("%d current page is number %d, pagesize %d, length %d, current %d", |
420 | // currentFilePos, i_pageNum, pageSize, Lview->length(), pageStopArray[i_pageNum] ); | 425 | // currentFilePos, i_pageNum, pageSize, Lview->length(), pageStopArray[i_pageNum] ); |
421 | setStatus(); | 426 | setStatus(); |
422 | Lview->setCursorPosition( 0, 0, FALSE); | 427 | Lview->setCursorPosition( 0, 0, FALSE); |
423 | // } | 428 | // } |
424 | 429 | ||
425 | } else { | 430 | } else { |
426 | // qDebug("bal"); | 431 | // odebug << "bal" << oendl; |
427 | // if( i_pageNum != pages) { | 432 | // if( i_pageNum != pages) { |
428 | 433 | ||
429 | // // int newTop = Lview->Top(); | 434 | // // int newTop = Lview->Top(); |
430 | // // if(Lview->lastRow() > i) | 435 | // // if(Lview->lastRow() > i) |
431 | // Lview->ScrollUp(1); | 436 | // Lview->ScrollUp(1); |
432 | // // i_pageNum++; | 437 | // // i_pageNum++; |
433 | // setStatus(); | 438 | // setStatus(); |
434 | // Lview->setCursorPosition( Lview->Top(), 0, FALSE); | 439 | // Lview->setCursorPosition( Lview->Top(), 0, FALSE); |
435 | 440 | ||
436 | // } | 441 | // } |
437 | 442 | ||
438 | } | 443 | } |
439 | Lview->setFocus(); | 444 | Lview->setFocus(); |
440 | 445 | ||
441 | // qDebug("page number %d line number %d", i_pageNum, currentLine); | 446 | // odebug << "page number " << i_pageNum << " line number " << currentLine << "" << oendl; |
442 | } | 447 | } |
443 | 448 | ||
444 | 449 | ||
445 | void Gutenbrowser::BackBtn() { | 450 | void Gutenbrowser::BackBtn() { |
446 | if( i_pageNum > 0) { | 451 | if( i_pageNum > 0) { |
447 | int pageSize= Lview->PageSize(); | 452 | int pageSize= Lview->PageSize(); |
448 | // int length=Lview->length(); | 453 | // int length=Lview->length(); |
449 | 454 | ||
450 | i_pageNum--; | 455 | i_pageNum--; |
451 | currentFilePos = f.at(); | 456 | currentFilePos = f.at(); |
452 | 457 | ||
453 | // qDebug("%d move back to %d, current page number %d, %d, length %d", | 458 | // qDebug("%d move back to %d, current page number %d, %d, length %d", |
454 | // currentFilePos, pageStopArray[i_pageNum - 1 ], i_pageNum, pageSize, Lview->length() ); | 459 | // currentFilePos, pageStopArray[i_pageNum - 1 ], i_pageNum, pageSize, Lview->length() ); |
455 | 460 | ||
456 | if( i_pageNum < 2) { | 461 | if( i_pageNum < 2) { |
457 | f.at( 0); | 462 | f.at( 0); |
458 | } else { | 463 | } else { |
459 | if(!f.at( pageStopArray[i_pageNum - 1] )) | 464 | if(!f.at( pageStopArray[i_pageNum - 1] )) |
460 | qDebug("File positioned backward did not work"); | 465 | odebug << "File positioned backward did not work" << oendl; |
461 | } | 466 | } |
462 | QString s; | 467 | QString s; |
463 | // int sizeLine=0; | 468 | // int sizeLine=0; |
464 | Lview->clear(); | 469 | Lview->clear(); |
465 | // QString insertString; | 470 | // QString insertString; |
466 | 471 | ||
467 | for(int fd = 0; fd < pageSize ;fd++) { | 472 | for(int fd = 0; fd < pageSize ;fd++) { |
468 | // Lview->removeLine( Lview->PageSize() ); | 473 | // Lview->removeLine( Lview->PageSize() ); |
469 | f.readLine(s, 256); | 474 | f.readLine(s, 256); |
470 | if(useWrap) | 475 | if(useWrap) |
471 | s.replace(QRegExp("\n"),""); | 476 | s.replace(QRegExp("\n"),""); |
472 | currentLine++; | 477 | currentLine++; |
473 | // insertString+=s; | 478 | // insertString+=s; |
474 | Lview->insertLine( s, -1); | 479 | Lview->insertLine( s, -1); |
475 | } | 480 | } |
476 | 481 | ||
477 | // Lview->insertAt( insertString,0,0, FALSE); | 482 | // Lview->insertAt( insertString,0,0, FALSE); |
478 | 483 | ||
479 | if( !BackButton->autoRepeat() && !BackButton->isDown()) { | 484 | if( !BackButton->autoRepeat() && !BackButton->isDown()) { |
480 | QString topR; | 485 | QString topR; |
481 | QString lastR; | 486 | QString lastR; |
482 | QString pageR; | 487 | QString pageR; |
483 | // int sizer = Lview->lastRow() - Lview->topRow(); | 488 | // int sizer = Lview->lastRow() - Lview->topRow(); |
484 | // int i_topRow = Lview->topRow(); | 489 | // int i_topRow = Lview->topRow(); |
485 | if( i_pageNum < 1) | 490 | if( i_pageNum < 1) |
486 | i_pageNum = 1; | 491 | i_pageNum = 1; |
487 | setCaption(QString::number(i_pageNum)); | 492 | setCaption(QString::number(i_pageNum)); |
488 | } else { | 493 | } else { |
489 | // int newTop = Lview->Top(); | 494 | // int newTop = Lview->Top(); |
490 | // if(Lview->lastRow() > i) | 495 | // if(Lview->lastRow() > i) |
491 | Lview->MultiLine_Ex::pageUp( FALSE); | 496 | Lview->MultiLine_Ex::pageUp( FALSE); |
492 | // Lview->ScrollDown(1); | 497 | // Lview->ScrollDown(1); |
493 | // i_pageNum--; | 498 | // i_pageNum--; |
494 | if( i_pageNum < 1) | 499 | if( i_pageNum < 1) |
495 | i_pageNum = 1; | 500 | i_pageNum = 1; |
496 | setStatus(); | 501 | setStatus(); |
497 | Lview->setCursorPosition( Lview->Top(), 0, FALSE); | 502 | Lview->setCursorPosition( Lview->Top(), 0, FALSE); |
498 | 503 | ||
499 | } | 504 | } |
500 | } | 505 | } |
501 | Lview->setFocus(); | 506 | Lview->setFocus(); |
502 | } | 507 | } |
503 | 508 | ||
504 | void Gutenbrowser::doBeginBtn() { | 509 | void Gutenbrowser::doBeginBtn() { |
505 | if(loadCheck) { | 510 | if(loadCheck) { |
506 | qApp->processEvents(); | 511 | qApp->processEvents(); |
507 | BeginBtn(); | 512 | BeginBtn(); |
508 | } | 513 | } |
509 | } | 514 | } |
510 | 515 | ||
511 | // moves text to the very top = 0 | 516 | // moves text to the very top = 0 |
512 | void Gutenbrowser::TopBtn() { | 517 | void Gutenbrowser::TopBtn() { |
513 | 518 | ||
514 | if(loadCheck) { | 519 | if(loadCheck) { |
515 | if( i_pageNum != 0) { | 520 | if( i_pageNum != 0) { |
516 | qDebug("top"); | 521 | odebug << "top" << oendl; |
517 | qApp->processEvents(); | 522 | qApp->processEvents(); |
518 | currentLine = 0; | 523 | currentLine = 0; |
519 | i_pageNum = 1; | 524 | i_pageNum = 1; |
520 | int pageSize = Lview->PageSize() ; | 525 | int pageSize = Lview->PageSize() ; |
521 | Lview->clear(); | 526 | Lview->clear(); |
522 | QString s; | 527 | QString s; |
523 | f.at(0); | 528 | f.at(0); |
524 | for(int fd=0; fd < pageSize ;fd++) { | 529 | for(int fd=0; fd < pageSize ;fd++) { |
525 | f.readLine(s, 256); | 530 | f.readLine(s, 256); |
526 | if(useWrap) | 531 | if(useWrap) |
527 | s.replace(QRegExp("\n"),""); | 532 | s.replace(QRegExp("\n"),""); |
528 | Lview->insertLine(s ,-1); | 533 | Lview->insertLine(s ,-1); |
529 | currentLine++; | 534 | currentLine++; |
530 | } | 535 | } |
531 | Lview->setCursorPosition( 0,0, FALSE); | 536 | Lview->setCursorPosition( 0,0, FALSE); |
532 | i_pageNum=1; | 537 | i_pageNum=1; |
533 | setStatus(); | 538 | setStatus(); |
534 | } | 539 | } |
535 | Lview->setFocus(); | 540 | Lview->setFocus(); |
536 | } | 541 | } |
537 | } | 542 | } |
538 | 543 | ||
539 | //moves text to the start of the EText | 544 | //moves text to the start of the EText |
540 | void Gutenbrowser::BeginBtn() { | 545 | void Gutenbrowser::BeginBtn() { |
541 | i_pageNum = 1; | 546 | i_pageNum = 1; |
542 | currentLine = 0; | 547 | currentLine = 0; |
543 | QString s_pattern="*END*THE SMALL PRINT"; | 548 | QString s_pattern="*END*THE SMALL PRINT"; |
544 | QString sPattern2 = "*END THE SMALL PRINT"; | 549 | QString sPattern2 = "*END THE SMALL PRINT"; |
545 | 550 | ||
546 | int pageSize = Lview->PageSize(); | 551 | int pageSize = Lview->PageSize(); |
547 | Lview->clear(); | 552 | Lview->clear(); |
548 | 553 | ||
549 | // int lines = Lview->numLines(); | 554 | // int lines = Lview->numLines(); |
550 | int pos = 0;//, i = 0; | 555 | int pos = 0;//, i = 0; |
551 | int i_topRow = Lview->topRow(); | 556 | int i_topRow = Lview->topRow(); |
552 | 557 | ||
553 | QString LeftText;// = Lview->text(); | 558 | QString LeftText;// = Lview->text(); |
554 | 559 | ||
555 | int linesPerPage = Lview->lastRow() - Lview->topRow(); | 560 | int linesPerPage = Lview->lastRow() - Lview->topRow(); |
556 | // int pages = (( linesPerPage / Lview->editSize() ) ) +1; | 561 | // int pages = (( linesPerPage / Lview->editSize() ) ) +1; |
557 | // int pageN = 0; | 562 | // int pageN = 0; |
558 | i_pageNum = 1; | 563 | i_pageNum = 1; |
559 | int lastPage=1; | 564 | int lastPage=1; |
560 | int lineNo=0; | 565 | int lineNo=0; |
561 | QString s; | 566 | QString s; |
562 | f.at( 0); | 567 | f.at( 0); |
563 | 568 | ||
564 | while ( !f.atEnd() ) { | 569 | while ( !f.atEnd() ) { |
565 | f.readLine(s, 256); | 570 | f.readLine(s, 256); |
566 | lineNo++; | 571 | lineNo++; |
567 | LeftText = s; | 572 | LeftText = s; |
568 | currentFilePos = f.at(); | 573 | currentFilePos = f.at(); |
569 | 574 | ||
570 | i_pageNum = lineNo/pageSize; | 575 | i_pageNum = lineNo/pageSize; |
571 | if(lastPage < i_pageNum) { | 576 | if(lastPage < i_pageNum) { |
572 | pageStopArray.resize(i_pageNum + 1); | 577 | pageStopArray.resize(i_pageNum + 1); |
573 | pageStopArray[i_pageNum ] = currentFilePos; | 578 | pageStopArray[i_pageNum ] = currentFilePos; |
574 | // qDebug("new page number %d, found at %d", i_pageNum, currentFilePos); | 579 | // odebug << "new page number " << i_pageNum << ", found at " << currentFilePos << "" << oendl; |
575 | } | 580 | } |
576 | // lastPage = i_pageNum; | 581 | // lastPage = i_pageNum; |
577 | if( LeftText.find( s_pattern, 0 , TRUE) != -1 || LeftText.find( sPattern2, 0 , TRUE) != -1 ) { | 582 | if( LeftText.find( s_pattern, 0 , TRUE) != -1 || LeftText.find( sPattern2, 0 , TRUE) != -1 ) { |
578 | qDebug("<<<<<< FOUND IT!! new page number %d, found at %d", i_pageNum, currentFilePos); | 583 | odebug << "<<<<<< FOUND IT!! new page number " << i_pageNum << ", found at " << currentFilePos << "" << oendl; |
579 | break; | 584 | break; |
580 | } | 585 | } |
581 | } | 586 | } |
582 | if(f.atEnd()) //in case we didnt find anything, we need to show something | 587 | if(f.atEnd()) //in case we didnt find anything, we need to show something |
583 | f.at(0); | 588 | f.at(0); |
584 | Lview->clear(); | 589 | Lview->clear(); |
585 | for(int fd=0; fd < pageSize - 1;fd++) { | 590 | for(int fd=0; fd < pageSize - 1;fd++) { |
586 | f.readLine(s, 256); | 591 | f.readLine(s, 256); |
587 | if(useWrap) | 592 | if(useWrap) |
588 | s.replace(QRegExp("\n"),""); | 593 | s.replace(QRegExp("\n"),""); |
589 | Lview->insertLine( s, -1); | 594 | Lview->insertLine( s, -1); |
590 | currentLine++; | 595 | currentLine++; |
591 | } | 596 | } |
592 | 597 | ||
593 | i_pageNum = lineNo/pageSize; | 598 | i_pageNum = lineNo/pageSize; |
594 | pageStopArray.resize(i_pageNum + 1); | 599 | pageStopArray.resize(i_pageNum + 1); |
595 | // int length = Lview->length(); | 600 | // int length = Lview->length(); |
596 | 601 | ||
597 | qApp->processEvents(); | 602 | qApp->processEvents(); |
598 | 603 | ||
599 | if( pos > i_topRow ) { | 604 | if( pos > i_topRow ) { |
600 | Lview->setCursorPosition( pos+linesPerPage+2/* - i_topRow+3 */,0, FALSE); | 605 | Lview->setCursorPosition( pos+linesPerPage+2/* - i_topRow+3 */,0, FALSE); |
601 | } else { | 606 | } else { |
602 | Lview->setCursorPosition( pos+2 , 0, FALSE ); | 607 | Lview->setCursorPosition( pos+2 , 0, FALSE ); |
603 | } | 608 | } |
604 | 609 | ||
605 | Lview->deselect(); | 610 | Lview->deselect(); |
606 | // AdjustStatus(); | 611 | // AdjustStatus(); |
607 | Lview->setFocus(); | 612 | Lview->setFocus(); |
608 | } | 613 | } |
609 | 614 | ||
610 | /* | 615 | /* |
611 | sets the current page and place as a bookmark*/ | 616 | sets the current page and place as a bookmark*/ |
612 | void Gutenbrowser::setBookmark() { | 617 | void Gutenbrowser::setBookmark() { |
613 | int eexit=QMessageBox::information(this, "Note", | 618 | int eexit=QMessageBox::information(this, "Note", |
614 | "Do you really want to \nset this bookmark?." | 619 | "Do you really want to \nset this bookmark?." |
615 | ,QMessageBox::Yes, QMessageBox::No); | 620 | ,QMessageBox::Yes, QMessageBox::No); |
616 | if (eexit== 3) { | 621 | if (eexit== 3) { |
617 | 622 | ||
618 | currentFilePos = f.at(); | 623 | currentFilePos = f.at(); |
619 | 624 | ||
620 | Config cfg("Gutenbrowser"); | 625 | Config cfg("Gutenbrowser"); |
621 | cfg.setGroup("General"); | 626 | cfg.setGroup("General"); |
622 | file_name=cfg.readEntry("Current",""); | 627 | file_name=cfg.readEntry("Current",""); |
623 | qApp->processEvents(); | 628 | qApp->processEvents(); |
624 | qDebug("Settingbook mark "+file_name); | 629 | odebug << "Settingbook mark "+file_name << oendl; |
625 | 630 | ||
626 | cfg.setGroup("Titles"); | 631 | cfg.setGroup("Titles"); |
627 | title=cfg.readEntry(file_name,""); | 632 | title=cfg.readEntry(file_name,""); |
628 | qDebug("title is "+ title); | 633 | odebug << "title is "+ title << oendl; |
629 | 634 | ||
630 | cfg.setGroup( "Bookmarks" ); | 635 | cfg.setGroup( "Bookmarks" ); |
631 | 636 | ||
632 | cfg.writeEntry("File Name",file_name); | 637 | cfg.writeEntry("File Name",file_name); |
633 | cfg.writeEntry("Page Number",QString::number(i_pageNum) ); | 638 | cfg.writeEntry("Page Number",QString::number(i_pageNum) ); |
634 | cfg.writeEntry( "PagePosition", QString::number( pageStopArray[i_pageNum - 1])); | 639 | cfg.writeEntry( "PagePosition", QString::number( pageStopArray[i_pageNum - 1])); |
635 | cfg.writeEntry("Title", title); | 640 | cfg.writeEntry("Title", title); |
636 | 641 | ||
637 | int row = Lview->topRow();// Lview->Top(); | 642 | int row = Lview->topRow();// Lview->Top(); |
638 | cfg.writeEntry("LineNumber",QString::number(row) ); | 643 | cfg.writeEntry("LineNumber",QString::number(row) ); |
639 | 644 | ||
640 | cfg.setGroup(title); | 645 | cfg.setGroup(title); |
641 | cfg.writeEntry("File Name",file_name); | 646 | cfg.writeEntry("File Name",file_name); |
642 | cfg.writeEntry( "LineNumber", QString::number( row)); | 647 | cfg.writeEntry( "LineNumber", QString::number( row)); |
643 | cfg.writeEntry( "PagePosition", QString::number( pageStopArray[i_pageNum - 1])); | 648 | cfg.writeEntry( "PagePosition", QString::number( pageStopArray[i_pageNum - 1])); |
644 | cfg.writeEntry( "Page Number", QString::number( i_pageNum) ); | 649 | cfg.writeEntry( "Page Number", QString::number( i_pageNum) ); |
645 | bookmarksMenu->insertItem( title); | 650 | bookmarksMenu->insertItem( title); |
646 | } | 651 | } |
647 | } //end setBookmark | 652 | } //end setBookmark |
648 | 653 | ||
649 | 654 | ||
650 | /* goes to last set bookmark*/ | 655 | /* goes to last set bookmark*/ |
651 | void Gutenbrowser::Bookmark( int itemId) { | 656 | void Gutenbrowser::Bookmark( int itemId) { |
652 | 657 | ||
653 | // qApp->processEvents(); | 658 | // qApp->processEvents(); |
654 | Config config("Gutenbrowser"); | 659 | Config config("Gutenbrowser"); |
655 | config.setGroup( "Bookmarks" ); | 660 | config.setGroup( "Bookmarks" ); |
656 | 661 | ||
657 | // qDebug("<<<<<< %d, %d", Lview->PageSize(), Lview->lastRow() - Lview->topRow() ); | 662 | // odebug << "<<<<<< " << Lview->PageSize() << ", " << Lview->lastRow() - Lview->topRow() << "" << oendl; |
658 | 663 | ||
659 | QString itemString; | 664 | QString itemString; |
660 | 665 | ||
661 | qDebug("menu item %d", itemId); | 666 | odebug << "menu item " << itemId << "" << oendl; |
662 | QString tempTitle; | 667 | QString tempTitle; |
663 | QString s_Bmrkrow; | 668 | QString s_Bmrkrow; |
664 | QString s_pageNum; | 669 | QString s_pageNum; |
665 | int Bmrkrow=0; | 670 | int Bmrkrow=0; |
666 | int bookmarkPosition = 0; | 671 | int bookmarkPosition = 0; |
667 | 672 | ||
668 | // qApp->processEvents(); | 673 | // qApp->processEvents(); |
669 | config.setGroup( "Bookmarks" ); | 674 | config.setGroup( "Bookmarks" ); |
670 | title = config.readEntry("Title", ""); | 675 | title = config.readEntry("Title", ""); |
671 | file_name = config.readEntry("File Name", ""); | 676 | file_name = config.readEntry("File Name", ""); |
672 | i_pageNum = config.readNumEntry("Page Number", 0); | 677 | i_pageNum = config.readNumEntry("Page Number", 0); |
673 | bookmarkPosition = config.readNumEntry( "PagePosition",0); | 678 | bookmarkPosition = config.readNumEntry( "PagePosition",0); |
674 | Bmrkrow = config.readNumEntry("LineNumber",0); | 679 | Bmrkrow = config.readNumEntry("LineNumber",0); |
675 | if( !file_name.contains("/")) { | 680 | if( !file_name.contains("/")) { |
676 | file_name = local_library + file_name; | 681 | file_name = local_library + file_name; |
677 | } | 682 | } |
678 | 683 | ||
679 | // getTitle(file_name); | 684 | // getTitle(file_name); |
680 | // qApp->processEvents(); | 685 | // qApp->processEvents(); |
681 | // Lview->setFocus(); | 686 | // Lview->setFocus(); |
682 | this->setFocus(); | 687 | this->setFocus(); |
683 | 688 | ||
684 | Lview->clear(); | 689 | Lview->clear(); |
685 | 690 | ||
686 | load(file_name); | 691 | load(file_name); |
687 | 692 | ||
688 | int pageSize= Lview->PageSize(); | 693 | int pageSize= Lview->PageSize(); |
689 | f.at(0); | 694 | f.at(0); |
690 | // Lview->clear(); | 695 | // Lview->clear(); |
691 | QString s; | 696 | QString s; |
692 | int lineNo=0; | 697 | int lineNo=0; |
693 | int lastPage=1; | 698 | int lastPage=1; |
694 | while ( !f.atEnd() ) { | 699 | while ( !f.atEnd() ) { |
695 | f.readLine(s, 256); | 700 | f.readLine(s, 256); |
696 | lineNo++; | 701 | lineNo++; |
697 | currentFilePos = f.at(); | 702 | currentFilePos = f.at(); |
698 | 703 | ||
699 | i_pageNum = lineNo/pageSize; | 704 | i_pageNum = lineNo/pageSize; |
700 | if(lastPage < i_pageNum) { | 705 | if(lastPage < i_pageNum) { |
701 | pageStopArray.resize(i_pageNum + 1); | 706 | pageStopArray.resize(i_pageNum + 1); |
702 | pageStopArray[i_pageNum ] = currentFilePos; | 707 | pageStopArray[i_pageNum ] = currentFilePos; |
703 | // qDebug("new page number %d, found at %d", i_pageNum, currentFilePos); | 708 | // odebug << "new page number " << i_pageNum << ", found at " << currentFilePos << "" << oendl; |
704 | } | 709 | } |
705 | if(currentFilePos == bookmarkPosition) | 710 | if(currentFilePos == bookmarkPosition) |
706 | break; | 711 | break; |
707 | } | 712 | } |
708 | if(f.atEnd()) | 713 | if(f.atEnd()) |
709 | f.at(0); | 714 | f.at(0); |
710 | else | 715 | else |
711 | f.at( bookmarkPosition); | 716 | f.at( bookmarkPosition); |
712 | 717 | ||
713 | for(int fd=0; fd < pageSize - 1;fd++) { | 718 | for(int fd=0; fd < pageSize - 1;fd++) { |
714 | f.readLine(s, 256); | 719 | f.readLine(s, 256); |
715 | lineNo++; | 720 | lineNo++; |
716 | if(useWrap) | 721 | if(useWrap) |
717 | s.replace(QRegExp("\n"),""); | 722 | s.replace(QRegExp("\n"),""); |
718 | Lview->insertLine( s, -1); | 723 | Lview->insertLine( s, -1); |
719 | currentLine++; | 724 | currentLine++; |
720 | } | 725 | } |
721 | 726 | ||
722 | i_pageNum = lineNo/pageSize; | 727 | i_pageNum = lineNo/pageSize; |
723 | pageStopArray.resize(i_pageNum + 1); | 728 | pageStopArray.resize(i_pageNum + 1); |
724 | 729 | ||
725 | if(showMainList) { | 730 | if(showMainList) { |
726 | showMainList=FALSE; | 731 | showMainList=FALSE; |
727 | mainList->hide(); | 732 | mainList->hide(); |
728 | Lview->show(); | 733 | Lview->show(); |
729 | // qApp->processEvents(); | 734 | // qApp->processEvents(); |
730 | } | 735 | } |
731 | 736 | ||
732 | qDebug("bookmark loaded"); | 737 | odebug << "bookmark loaded" << oendl; |
733 | setCaption(title); | 738 | setCaption(title); |
734 | } | 739 | } |
735 | 740 | ||
736 | 741 | ||
737 | bool Gutenbrowser::load( const char *fileName) { | 742 | bool Gutenbrowser::load( const char *fileName) { |
738 | 743 | ||
739 | // QCopEnvelope ( "QPE/System", "busy()" ); | 744 | // QCopEnvelope ( "QPE/System", "busy()" ); |
740 | // qDebug("Title is already set as "+title); | 745 | // odebug << "Title is already set as "+title << oendl; |
741 | qDebug("sizeHint %d pageSize %d", sizeHint().height(),Lview->PageSize() ); | 746 | odebug << "sizeHint " << sizeHint().height() << " pageSize " << Lview->PageSize() << "" << oendl; |
742 | if( Lview->PageSize() < 4) { | 747 | if( Lview->PageSize() < 4) { |
743 | 748 | ||
744 | Lview->setMaximumHeight( sizeHint().height() ); | 749 | Lview->setMaximumHeight( sizeHint().height() ); |
745 | Lview->setMinimumHeight( sizeHint().height() ); | 750 | Lview->setMinimumHeight( sizeHint().height() ); |
746 | pointSize = Lview->fontInfo().pointSize(); | 751 | pointSize = Lview->fontInfo().pointSize(); |
747 | qDebug("sizeHint %d point size %d", sizeHint().height(), pointSize); | 752 | odebug << "sizeHint " << sizeHint().height() << " point size " << pointSize << "" << oendl; |
748 | if(pointSize < 10) | 753 | if(pointSize < 10) |
749 | Lview->setFixedVisibleLines(19); | 754 | Lview->setFixedVisibleLines(19); |
750 | else | 755 | else |
751 | Lview->setFixedVisibleLines( ( (sizeHint().height() / pointSize ) * 2) -2); | 756 | Lview->setFixedVisibleLines( ( (sizeHint().height() / pointSize ) * 2) -2); |
752 | } | 757 | } |
753 | 758 | ||
754 | Config cfg("Gutenbrowser"); | 759 | Config cfg("Gutenbrowser"); |
755 | cfg.setGroup("General"); | 760 | cfg.setGroup("General"); |
756 | cfg.writeEntry("Current",fileName); | 761 | cfg.writeEntry("Current",fileName); |
757 | currentLine=0; | 762 | currentLine=0; |
758 | 763 | ||
759 | file_name=fileName; | 764 | file_name=fileName; |
760 | QString o_file = fileName; | 765 | QString o_file = fileName; |
761 | 766 | ||
762 | // if (i_pageNum < 1) { | 767 | // if (i_pageNum < 1) { |
763 | i_pageNum = 1; | 768 | i_pageNum = 1; |
764 | // } | 769 | // } |
765 | qDebug("ready to open "+o_file); | 770 | odebug << "ready to open "+o_file << oendl; |
766 | 771 | ||
767 | if(f.isOpen()) f.close(); | 772 | if(f.isOpen()) f.close(); |
768 | f.setName( o_file); | 773 | f.setName( o_file); |
769 | 774 | ||
770 | if ( !f.open( IO_ReadOnly)) { | 775 | if ( !f.open( IO_ReadOnly)) { |
771 | QMessageBox::message( (tr("Note")), (tr("File not opened sucessfully.\n" +o_file)) ); | 776 | QMessageBox::message( (tr("Note")), (tr("File not opened sucessfully.\n" +o_file)) ); |
772 | return false; | 777 | return false; |
773 | } | 778 | } |
774 | currentFilePos = 0; | 779 | currentFilePos = 0; |
775 | pageStopArray.resize(3); | 780 | pageStopArray.resize(3); |
776 | pageStopArray[0] = currentFilePos; | 781 | pageStopArray[0] = currentFilePos; |
777 | 782 | ||
778 | fileHandle = f.handle(); | 783 | fileHandle = f.handle(); |
779 | QString insertString; | 784 | QString insertString; |
780 | QTextStream t(&f); | 785 | QTextStream t(&f); |
781 | QString s; | 786 | QString s; |
782 | for(int fd=0; fd < Lview->PageSize() ;fd++) { | 787 | for(int fd=0; fd < Lview->PageSize() ;fd++) { |
783 | s=t.readLine(); | 788 | s=t.readLine(); |
784 | // insertString+=s; | 789 | // insertString+=s; |
785 | if(useWrap) | 790 | if(useWrap) |
786 | s.replace(QRegExp("\n"),""); | 791 | s.replace(QRegExp("\n"),""); |
787 | // s.replace(QRegExp("\r"),""); | 792 | // s.replace(QRegExp("\r"),""); |
788 | Lview->insertLine( s,-1); | 793 | Lview->insertLine( s,-1); |
789 | currentLine++; | 794 | currentLine++; |
790 | } | 795 | } |
791 | 796 | ||
792 | // int length = Lview->length(); | 797 | // int length = Lview->length(); |
793 | currentFilePos = f.at(); | 798 | currentFilePos = f.at(); |
794 | 799 | ||
795 | pageStopArray[1] = currentFilePos; | 800 | pageStopArray[1] = currentFilePos; |
796 | 801 | ||
797 | qDebug("<<<<<<<<<<<%d current page is number %d, length %d, current %d, pageSize %d", | 802 | qDebug("<<<<<<<<<<<%d current page is number %d, length %d, current %d, pageSize %d", |
798 | currentFilePos, i_pageNum, Lview->length(), pageStopArray[i_pageNum], Lview->PageSize() ); | 803 | currentFilePos, i_pageNum, Lview->length(), pageStopArray[i_pageNum], Lview->PageSize() ); |
799 | 804 | ||
800 | Lview->setMaxLines(Lview->PageSize()*2); | 805 | Lview->setMaxLines(Lview->PageSize()*2); |
801 | qDebug("Gulped %d", currentLine); | 806 | odebug << "Gulped " << currentLine << "" << oendl; |
802 | setCaption(title); | 807 | setCaption(title); |
803 | Lview->setAutoUpdate( TRUE); | 808 | Lview->setAutoUpdate( TRUE); |
804 | 809 | ||
805 | Lview->setCursorPosition(0,0,FALSE); | 810 | Lview->setCursorPosition(0,0,FALSE); |
806 | 811 | ||
807 | // pages = (int)(( Lview->numLines() / Lview->editSize() ) / 2 ) +1; | 812 | // pages = (int)(( Lview->numLines() / Lview->editSize() ) / 2 ) +1; |
808 | //qDebug("number of pages %d", pages); | 813 | //odebug << "number of pages " << pages << "" << oendl; |
809 | 814 | ||
810 | loadCheck = true; | 815 | loadCheck = true; |
811 | enableButtons(true); | 816 | enableButtons(true); |
812 | if( donateMenu->count() == 3) { | 817 | if( donateMenu->count() == 3) { |
813 | donateMenu->insertItem("Current Title", this, SLOT( InfoBarClick() )); | 818 | donateMenu->insertItem("Current Title", this, SLOT( InfoBarClick() )); |
814 | } | 819 | } |
815 | Lview->setFocus(); | 820 | Lview->setFocus(); |
816 | 821 | ||
817 | // QCopEnvelope("QPE/System", "notBusy()" ); | 822 | // QCopEnvelope("QPE/System", "notBusy()" ); |
818 | return true; | 823 | return true; |
819 | } // end load | 824 | } // end load |
820 | 825 | ||
821 | void Gutenbrowser::Search() { | 826 | void Gutenbrowser::Search() { |
822 | 827 | ||
823 | // if( searchDlg->isHidden()) | 828 | // if( searchDlg->isHidden()) |
824 | { | 829 | { |
825 | qDebug("Starting search dialog"); | 830 | odebug << "Starting search dialog" << oendl; |
826 | searchDlg = new SearchDialog( this, "Etext Search", true); | 831 | searchDlg = new SearchDialog( this, "Etext Search", true); |
827 | searchDlg->setCaption( tr( "Etext Search" )); | 832 | searchDlg->setCaption( tr( "Etext Search" )); |
828 | // searchDlg->setLabel( "- searches etext"); | 833 | // searchDlg->setLabel( "- searches etext"); |
829 | connect( searchDlg,SIGNAL( search_signal()),this,SLOT( search_slot())); | 834 | connect( searchDlg,SIGNAL( search_signal()),this,SLOT( search_slot())); |
830 | connect( searchDlg,SIGNAL( search_done_signal()),this,SLOT( searchdone_slot())); | 835 | connect( searchDlg,SIGNAL( search_done_signal()),this,SLOT( searchdone_slot())); |
831 | 836 | ||
832 | QString resultString; | 837 | QString resultString; |
833 | QString string = searchDlg->searchString; | 838 | QString string = searchDlg->searchString; |
834 | Lview->deselect(); | 839 | Lview->deselect(); |
835 | searchDlg->show(); | 840 | searchDlg->show(); |
836 | searchDlg->result(); | 841 | searchDlg->result(); |
837 | } | 842 | } |
838 | } | 843 | } |
839 | 844 | ||
840 | void Gutenbrowser::search_slot( ) { | 845 | void Gutenbrowser::search_slot( ) { |
841 | int line, col; | 846 | int line, col; |
842 | if (!searchDlg /*&& !loadCheck */) | 847 | if (!searchDlg /*&& !loadCheck */) |
843 | return; | 848 | return; |
844 | 849 | ||
845 | Lview->getCursorPosition(&line,&col); | 850 | Lview->getCursorPosition(&line,&col); |
846 | QString to_find_string=searchDlg->get_text(); | 851 | QString to_find_string=searchDlg->get_text(); |
847 | 852 | ||
848 | // searchDlg->get_direction();// is true if searching backward | 853 | // searchDlg->get_direction();// is true if searching backward |
849 | if ( last_search != 0 && searchDlg->get_direction() ){ | 854 | if ( last_search != 0 && searchDlg->get_direction() ){ |
850 | col = col - pattern.length() - 1 ; | 855 | col = col - pattern.length() - 1 ; |
851 | } | 856 | } |
852 | again: | 857 | again: |
853 | int result = doSearch( to_find_string , /* searchDlg->case_sensitive()*/ TRUE, searchDlg->forward_search(), line, col); | 858 | int result = doSearch( to_find_string , /* searchDlg->case_sensitive()*/ TRUE, searchDlg->forward_search(), line, col); |
854 | if(result == 0){ | 859 | if(result == 0){ |
855 | if(!searchDlg->get_direction()){ // forward search | 860 | if(!searchDlg->get_direction()){ // forward search |
856 | int query = QMessageBox::information( searchDlg, "Find", | 861 | int query = QMessageBox::information( searchDlg, "Find", |
857 | "End of document reached.\nContinue from the beginning?", | 862 | "End of document reached.\nContinue from the beginning?", |
858 | "Yes", "No", "", 0,1); | 863 | "Yes", "No", "", 0,1); |
859 | if (query == 0){ | 864 | if (query == 0){ |
860 | line = 0; | 865 | line = 0; |
861 | col = 0; | 866 | col = 0; |
862 | goto again; | 867 | goto again; |
863 | } | 868 | } |
864 | } else { //backward search | 869 | } else { //backward search |
865 | int query = QMessageBox::information( searchDlg, "Find", | 870 | int query = QMessageBox::information( searchDlg, "Find", |
866 | "End of document reached.\nContinue from the beginning?", | 871 | "End of document reached.\nContinue from the beginning?", |
867 | "Yes", "No", "", 0,1); | 872 | "Yes", "No", "", 0,1); |
868 | if (query == 0){ | 873 | if (query == 0){ |
869 | QString string = Lview->textLine( Lview->numLines() - 1 ); | 874 | QString string = Lview->textLine( Lview->numLines() - 1 ); |
870 | line = Lview->numLines() - 1; | 875 | line = Lview->numLines() - 1; |
871 | lineCheck = line; | 876 | lineCheck = line; |
872 | col = string.length(); | 877 | col = string.length(); |
873 | last_search = -1; //BACKWARD; | 878 | last_search = -1; //BACKWARD; |
874 | goto again; | 879 | goto again; |
875 | } | 880 | } |
876 | } | 881 | } |
877 | } else { | 882 | } else { |
878 | 883 | ||
879 | //// emit CursorPositionChanged(); textLine | 884 | //// emit CursorPositionChanged(); textLine |
880 | } | 885 | } |
881 | } | 886 | } |
882 | 887 | ||
883 | int Gutenbrowser::doSearch( const QString &s_pattern , bool case_sensitive, bool forward, int line, int col ) { | 888 | int Gutenbrowser::doSearch( const QString &s_pattern , bool case_sensitive, bool forward, int line, int col ) { |
884 | int i, length; | 889 | int i, length; |
885 | int pos = -1; | 890 | int pos = -1; |
886 | if(forward) { | 891 | if(forward) { |
887 | QString string; | 892 | QString string; |
888 | for(i = line; i < Lview->numLines(); i++) { | 893 | for(i = line; i < Lview->numLines(); i++) { |
889 | 894 | ||
890 | string = Lview->textLine(i); | 895 | string = Lview->textLine(i); |
891 | pos = string.find(s_pattern, i == line ? col : 0, case_sensitive); | 896 | pos = string.find(s_pattern, i == line ? col : 0, case_sensitive); |
892 | if( pos != -1) { | 897 | if( pos != -1) { |
893 | int top = Lview->Top(); | 898 | int top = Lview->Top(); |
894 | length = s_pattern.length(); | 899 | length = s_pattern.length(); |
895 | if( i > Lview->lastRow() ) { | 900 | if( i > Lview->lastRow() ) { |
896 | Lview->setCursorPosition(i,pos,FALSE); | 901 | Lview->setCursorPosition(i,pos,FALSE); |
897 | for(int l = 0 ; l < length; l++) { | 902 | for(int l = 0 ; l < length; l++) { |
898 | Lview->cursorRight(TRUE); | 903 | Lview->cursorRight(TRUE); |
899 | } | 904 | } |
900 | Lview->setCursorPosition( i , pos + length, TRUE ); | 905 | Lview->setCursorPosition( i , pos + length, TRUE ); |
901 | int newTop = Lview->Top(); | 906 | int newTop = Lview->Top(); |
902 | if(Lview->lastRow() > i) | 907 | if(Lview->lastRow() > i) |
903 | Lview->ScrollUp( newTop - top); | 908 | Lview->ScrollUp( newTop - top); |
904 | // AdjustStatus(); | 909 | // AdjustStatus(); |
905 | } else { | 910 | } else { |
906 | Lview->setCursorPosition(i,pos,FALSE); | 911 | Lview->setCursorPosition(i,pos,FALSE); |
907 | for(int l = 0 ; l < length; l++) { | 912 | for(int l = 0 ; l < length; l++) { |
908 | Lview->cursorRight(TRUE); | 913 | Lview->cursorRight(TRUE); |
909 | } | 914 | } |
910 | Lview->setCursorPosition( i , pos + length, TRUE ); | 915 | Lview->setCursorPosition( i , pos + length, TRUE ); |
911 | // AdjustStatus(); | 916 | // AdjustStatus(); |
912 | } | 917 | } |
913 | pattern = s_pattern; | 918 | pattern = s_pattern; |
914 | last_search = 1; //FORWARD; | 919 | last_search = 1; //FORWARD; |
915 | return 1; | 920 | return 1; |
916 | } | 921 | } |
917 | } | 922 | } |
918 | } else { //////////////// searching backwards | 923 | } else { //////////////// searching backwards |
919 | QString string; | 924 | QString string; |
920 | for( i = line; i >= 0; i--) { | 925 | for( i = line; i >= 0; i--) { |
921 | string = Lview->textLine(i); | 926 | string = Lview->textLine(i); |
922 | int line_length = string.length(); | 927 | int line_length = string.length(); |
923 | pos = string.findRev(s_pattern, line == i ? col : line_length , case_sensitive); | 928 | pos = string.findRev(s_pattern, line == i ? col : line_length , case_sensitive); |
924 | if (pos != -1) { | 929 | if (pos != -1) { |
925 | // int top = Lview->Top(); | 930 | // int top = Lview->Top(); |
926 | length = s_pattern.length(); | 931 | length = s_pattern.length(); |
927 | if( i < Lview->Top() ) { | 932 | if( i < Lview->Top() ) { |
928 | Lview->ScrollDown( Lview->PageSize() ); | 933 | Lview->ScrollDown( Lview->PageSize() ); |
929 | Lview->MultiLine_Ex::pageUp( FALSE ); | 934 | Lview->MultiLine_Ex::pageUp( FALSE ); |
930 | if( ! (line == i && pos > col ) ) { | 935 | if( ! (line == i && pos > col ) ) { |
931 | Lview->setCursorPosition( i ,pos ,FALSE ); | 936 | Lview->setCursorPosition( i ,pos ,FALSE ); |
932 | for(int l = 0 ; l < length; l++) { | 937 | for(int l = 0 ; l < length; l++) { |
933 | Lview->cursorRight(TRUE); | 938 | Lview->cursorRight(TRUE); |
934 | } | 939 | } |
935 | Lview->setCursorPosition(i ,pos + length ,TRUE ); | 940 | Lview->setCursorPosition(i ,pos + length ,TRUE ); |
936 | // int newTop = Lview->Top(); | 941 | // int newTop = Lview->Top(); |
937 | /* if(useSplitter) Rview->ScrollUp( newTop - top); | 942 | /* if(useSplitter) Rview->ScrollUp( newTop - top); |
938 | */ } | 943 | */ } |
939 | } else { | 944 | } else { |
940 | if( ! (line == i && pos > col ) ) { | 945 | if( ! (line == i && pos > col ) ) { |
941 | Lview->setCursorPosition( i, pos, FALSE ); | 946 | Lview->setCursorPosition( i, pos, FALSE ); |
942 | for( int l = 0 ; l < length; l++) { | 947 | for( int l = 0 ; l < length; l++) { |
943 | Lview->cursorRight( TRUE); | 948 | Lview->cursorRight( TRUE); |
944 | } | 949 | } |
945 | Lview->setCursorPosition( i, pos + length, TRUE ); | 950 | Lview->setCursorPosition( i, pos + length, TRUE ); |
946 | } | 951 | } |
947 | pattern = s_pattern; | 952 | pattern = s_pattern; |
948 | last_search = -1; | 953 | last_search = -1; |
949 | return 1; | 954 | return 1; |
950 | } | 955 | } |
951 | } | 956 | } |
952 | } | 957 | } |
953 | } | 958 | } |
954 | return 0; | 959 | return 0; |
955 | } | 960 | } |
956 | 961 | ||
957 | void Gutenbrowser::LibraryBtn() { | 962 | void Gutenbrowser::LibraryBtn() { |
958 | 963 | ||
959 | QString newestLibraryFile ="pgwhole.zip"; | 964 | QString newestLibraryFile ="pgwhole.zip"; |
960 | QString zipFile; | 965 | QString zipFile; |
961 | // qDebug("Local Library is %s ", local_library.latin1()); | 966 | // odebug << "Local Library is " << local_library << " " << oendl; |
962 | zipFile="/usr/bin/unzip"; | 967 | zipFile="/usr/bin/unzip"; |
963 | // qDebug("newestLibraryFile is %s ", newestLibraryFile.latin1()); | 968 | // odebug << "newestLibraryFile is " << newestLibraryFile << " " << oendl; |
964 | if( QFile::exists( local_library+newestLibraryFile)) { | 969 | if( QFile::exists( local_library+newestLibraryFile)) { |
965 | if( QFile::exists(zipFile) ) { | 970 | if( QFile::exists(zipFile) ) { |
966 | UnZipIt(newestLibraryFile); | 971 | UnZipIt(newestLibraryFile); |
967 | } | 972 | } |
968 | else | 973 | else |
969 | QMessageBox::message( "Note",( tr("Please install unzip")) ); | 974 | QMessageBox::message( "Note",( tr("Please install unzip")) ); |
970 | } | 975 | } |
971 | // LibraryDlg = new LibraryDialog( this, "Library Index"); | 976 | // LibraryDlg = new LibraryDialog( this, "Library Index"); |
972 | LibraryDlg->setCaption( tr( "Gutenberg Library")); | 977 | LibraryDlg->setCaption( tr( "Gutenberg Library")); |
973 | Config config("Gutenbrowser"); | 978 | Config config("Gutenbrowser"); |
974 | config.setGroup("General"); | 979 | config.setGroup("General"); |
975 | QString tmp=config.readEntry("RunBefore","FALSE"); | 980 | QString tmp=config.readEntry("RunBefore","FALSE"); |
976 | if(tmp=="FALSE") { | 981 | if(tmp=="FALSE") { |
977 | QMessageBox::message( "Note", | 982 | QMessageBox::message( "Note", |
978 | "<P>Your first time running gutenbrowser. You'll need to click the \"load library\" button to load the gutenberg index.</P>"); | 983 | "<P>Your first time running gutenbrowser. You'll need to click the \"load library\" button to load the gutenberg index.</P>"); |
979 | config.writeEntry("RunBefore","TRUE"); | 984 | config.writeEntry("RunBefore","TRUE"); |
980 | } | 985 | } |
981 | if(useSplitter) | 986 | if(useSplitter) |
982 | LibraryDlg->useSmallInterface=FALSE; | 987 | LibraryDlg->useSmallInterface=FALSE; |
983 | 988 | ||
984 | LibraryDlg->showMaximized(); | 989 | LibraryDlg->showMaximized(); |
985 | 990 | ||
986 | if( LibraryDlg->exec() != 0 ) { | 991 | if( LibraryDlg->exec() != 0 ) { |
987 | listItemNumber = LibraryDlg->DlglistItemNumber; | 992 | listItemNumber = LibraryDlg->DlglistItemNumber; |
988 | listItemFile = LibraryDlg->DlglistItemFile; | 993 | listItemFile = LibraryDlg->DlglistItemFile; |
989 | listItemYear = LibraryDlg->DlglistItemYear; | 994 | listItemYear = LibraryDlg->DlglistItemYear; |
990 | listItemTitle = LibraryDlg->DlglistItemTitle; | 995 | listItemTitle = LibraryDlg->DlglistItemTitle; |
991 | file_name = LibraryDlg->File_Name; | 996 | file_name = LibraryDlg->File_Name; |
992 | // qDebug("title is being set as "+title); | 997 | // odebug << "title is being set as "+title << oendl; |
993 | title = listItemTitle; | 998 | title = listItemTitle; |
994 | 999 | ||
995 | // config.setGroup( "Proxy" ); | 1000 | // config.setGroup( "Proxy" ); |
996 | // if( LibraryDlg->checked == 1) { | 1001 | // if( LibraryDlg->checked == 1) { |
997 | // config.writeEntry("IsChecked", "TRUE"); | 1002 | // config.writeEntry("IsChecked", "TRUE"); |
998 | // } else { | 1003 | // } else { |
999 | // config.writeEntry("IsChecked", "FALSE"); | 1004 | // config.writeEntry("IsChecked", "FALSE"); |
1000 | // } | 1005 | // } |
1001 | // config.write(); | 1006 | // config.write(); |
1002 | // config.read(); | 1007 | // config.read(); |
1003 | if ( listItemNumber.isNull()) { | 1008 | if ( listItemNumber.isNull()) { |
1004 | } else { | 1009 | } else { |
1005 | i_pageNum = 1; | 1010 | i_pageNum = 1; |
1006 | if( file_name !="Error" && file_name.length() >2 && !file_name.isEmpty() ) { | 1011 | if( file_name !="Error" && file_name.length() >2 && !file_name.isEmpty() ) { |
1007 | //replace .zip with txt for opening it. | 1012 | //replace .zip with txt for opening it. |
1008 | // printf("\nFile name is now\n"); | 1013 | // printf("\nFile name is now\n"); |
1009 | // printf(file_name); | 1014 | // printf(file_name); |
1010 | // printf("\n"); | 1015 | // printf("\n"); |
1011 | // | 1016 | // |
1012 | if( file_name.find(".zip")) | 1017 | if( file_name.find(".zip")) |
1013 | { | 1018 | { |
1014 | qDebug("Found zip file\n"); | 1019 | odebug << "Found zip file\n" << oendl; |
1015 | // QStringList args; | 1020 | // QStringList args; |
1016 | // args="unzip"; | 1021 | // args="unzip"; |
1017 | // args+="-o"; | 1022 | // args+="-o"; |
1018 | // args+=local_library+file_name; | 1023 | // args+=local_library+file_name; |
1019 | // args+="-d"; | 1024 | // args+="-d"; |
1020 | // args+=local_library; | 1025 | // args+=local_library; |
1021 | QString cmd = "/usr/bin/unzip -o " + local_library+file_name + " -d " + local_library; | 1026 | QString cmd = "/usr/bin/unzip -o " + local_library+file_name + " -d " + local_library; |
1022 | qDebug("Issuing the command "+ cmd); | 1027 | odebug << "Issuing the command "+ cmd << oendl; |
1023 | // unzipProc=new QProcess( this, "unzipProc" ); /// fark that idea! | 1028 | // unzipProc=new QProcess( this, "unzipProc" ); /// fark that idea! |
1024 | // unzipProc->start(); | 1029 | // unzipProc->start(); |
1025 | system(cmd); | 1030 | system(cmd); |
1026 | remove( file_name); | 1031 | remove( file_name); |
1027 | 1032 | ||
1028 | } | 1033 | } |
1029 | // // | 1034 | // // |
1030 | // file_name = file_name.left(4)+ ".txt"; | 1035 | // file_name = file_name.left(4)+ ".txt"; |
1031 | if( LibraryDlg) | 1036 | if( LibraryDlg) |
1032 | delete LibraryDlg; | 1037 | delete LibraryDlg; |
1033 | setTitle(); | 1038 | setTitle(); |
1034 | // QCopEnvelope ( "QPE/System", "busy()" ); | 1039 | // QCopEnvelope ( "QPE/System", "busy()" ); |
1035 | load( file_name); | 1040 | load( file_name); |
1036 | } else { | 1041 | } else { |
1037 | printf("Not opening the file.\n"); | 1042 | printf("Not opening the file.\n"); |
1038 | } | 1043 | } |
1039 | } | 1044 | } |
1040 | } | 1045 | } |
1041 | if(showMainList) { | 1046 | if(showMainList) { |
1042 | if(!Lview->isHidden()) | 1047 | if(!Lview->isHidden()) |
1043 | Lview->hide(); | 1048 | Lview->hide(); |
1044 | qApp->processEvents(); | 1049 | qApp->processEvents(); |
1045 | showMainList=TRUE; | 1050 | showMainList=TRUE; |
1046 | if(mainList->isHidden()) | 1051 | if(mainList->isHidden()) |
1047 | mainList->show(); | 1052 | mainList->show(); |
1048 | fillWithTitles(); | 1053 | fillWithTitles(); |
1049 | qApp->processEvents(); | 1054 | qApp->processEvents(); |
1050 | } else | 1055 | } else |
1051 | setCentralWidget( Lview); | 1056 | setCentralWidget( Lview); |
1052 | // QPEApplication::grabKeyboard(); | 1057 | // QPEApplication::grabKeyboard(); |
1053 | // fixKeys(); | 1058 | // fixKeys(); |
1054 | } | 1059 | } |
1055 | 1060 | ||
1056 | void Gutenbrowser::OpenBtn() { | 1061 | void Gutenbrowser::OpenBtn() { |
1057 | QString s_temp; | 1062 | QString s_temp; |
1058 | s_temp = status; | 1063 | s_temp = status; |
1059 | OpenEtext* OpenDlg; | 1064 | OpenEtext* OpenDlg; |
1060 | OpenDlg = new OpenEtext(this,"OpenDlg"); | 1065 | OpenDlg = new OpenEtext(this,"OpenDlg"); |
1061 | OpenDlg->showMaximized(); | 1066 | OpenDlg->showMaximized(); |
1062 | 1067 | ||
1063 | if( OpenDlg->exec() != 0) { | 1068 | if( OpenDlg->exec() != 0) { |
1064 | title = OpenDlg->openFileTitle; | 1069 | title = OpenDlg->openFileTitle; |
1065 | qDebug("title open as "+title); | 1070 | odebug << "title open as "+title << oendl; |
1066 | file_name = OpenDlg->file; | 1071 | file_name = OpenDlg->file; |
1067 | i_pageNum = 1; | 1072 | i_pageNum = 1; |
1068 | 1073 | ||
1069 | if( !file_name.isEmpty() || file_name.length() > 2 ) { | 1074 | if( !file_name.isEmpty() || file_name.length() > 2 ) { |
1070 | if(showMainList) { | 1075 | if(showMainList) { |
1071 | showMainList=FALSE; | 1076 | showMainList=FALSE; |
1072 | qDebug("ShowMainList is now false"); | 1077 | odebug << "ShowMainList is now false" << oendl; |
1073 | mainList->hide(); | 1078 | mainList->hide(); |
1074 | Lview->show(); | 1079 | Lview->show(); |
1075 | qApp->processEvents(); | 1080 | qApp->processEvents(); |
1076 | } | 1081 | } |
1077 | Lview->clear(); | 1082 | Lview->clear(); |
1078 | // QCopEnvelope ( "QPE/System", "busy()" ); | 1083 | // QCopEnvelope ( "QPE/System", "busy()" ); |
1079 | load(file_name); | 1084 | load(file_name); |
1080 | } else { | 1085 | } else { |
1081 | qDebug("file_name is empty!"); | 1086 | odebug << "file_name is empty!" << oendl; |
1082 | if(showMainList) { | 1087 | if(showMainList) { |
1083 | if(!Lview->isHidden()) | 1088 | if(!Lview->isHidden()) |
1084 | Lview->hide(); | 1089 | Lview->hide(); |
1085 | qApp->processEvents(); | 1090 | qApp->processEvents(); |
1086 | if(mainList->isHidden()) | 1091 | if(mainList->isHidden()) |
1087 | mainList->show(); | 1092 | mainList->show(); |
1088 | fillWithTitles(); | 1093 | fillWithTitles(); |
1089 | qApp->processEvents(); | 1094 | qApp->processEvents(); |
1090 | } | 1095 | } |
1091 | 1096 | ||
1092 | } | 1097 | } |
1093 | } | 1098 | } |
1094 | if( OpenDlg) | 1099 | if( OpenDlg) |
1095 | delete OpenDlg; | 1100 | delete OpenDlg; |
1096 | /* | 1101 | /* |
1097 | Config config("Gutenbrowser"); | 1102 | Config config("Gutenbrowser"); |
1098 | config.setGroup( title); | 1103 | config.setGroup( title); |
1099 | file_name = config.readEntry("File Name", ""); | 1104 | file_name = config.readEntry("File Name", ""); |
1100 | i_pageNum = config.readNumEntry("Page Number", -1); | 1105 | i_pageNum = config.readNumEntry("Page Number", -1); |
1101 | int Bmrkrow = config.readNumEntry("LineNumber", -1); | 1106 | int Bmrkrow = config.readNumEntry("LineNumber", -1); |
1102 | if(Bmrkrow > -1) { | 1107 | if(Bmrkrow > -1) { |
1103 | if( Bmrkrow > Lview->topRow() ) { | 1108 | if( Bmrkrow > Lview->topRow() ) { |
1104 | Lview->setCursorPosition( Bmrkrow ,0, FALSE ); | 1109 | Lview->setCursorPosition( Bmrkrow ,0, FALSE ); |
1105 | Lview->ScrollUp( Bmrkrow - Lview->topRow() ); | 1110 | Lview->ScrollUp( Bmrkrow - Lview->topRow() ); |
1106 | // AdjustStatus(); | 1111 | // AdjustStatus(); |
1107 | } | 1112 | } |
1108 | else if( Bmrkrow < Lview->topRow() ) { | 1113 | else if( Bmrkrow < Lview->topRow() ) { |
1109 | Lview->setCursorPosition( Lview->topRow() - Bmrkrow ,0, FALSE ); | 1114 | Lview->setCursorPosition( Lview->topRow() - Bmrkrow ,0, FALSE ); |
1110 | Lview->ScrollDown( Lview->topRow() - Bmrkrow ); | 1115 | Lview->ScrollDown( Lview->topRow() - Bmrkrow ); |
1111 | // AdjustStatus(); | 1116 | // AdjustStatus(); |
1112 | } | 1117 | } |
1113 | } | 1118 | } |
1114 | */ | 1119 | */ |
1115 | // ResizeEdits(); | 1120 | // ResizeEdits(); |
1116 | 1121 | ||
1117 | } | 1122 | } |
1118 | 1123 | ||
1119 | void Gutenbrowser::ChangeFont() { | 1124 | void Gutenbrowser::ChangeFont() { |
1120 | #ifndef Q_WS_QWS | 1125 | #ifndef Q_WS_QWS |
1121 | bool ok; | 1126 | bool ok; |
1122 | 1127 | ||
1123 | weight= Lview->fontInfo().weight(); | 1128 | weight= Lview->fontInfo().weight(); |
1124 | italic = Lview->fontInfo().italic(); | 1129 | italic = Lview->fontInfo().italic(); |
1125 | bold=Lview->fontInfo().bold(); | 1130 | bold=Lview->fontInfo().bold(); |
1126 | pointSize= Lview->fontInfo().pointSize(); | 1131 | pointSize= Lview->fontInfo().pointSize(); |
1127 | fontStr=Lview->fontInfo().family(); | 1132 | fontStr=Lview->fontInfo().family(); |
1128 | 1133 | ||
1129 | if(italic == true) | 1134 | if(italic == true) |
1130 | italicStr="TRUE"; | 1135 | italicStr="TRUE"; |
1131 | else | 1136 | else |
1132 | italicStr="FALSE"; | 1137 | italicStr="FALSE"; |
1133 | 1138 | ||
1134 | QFont currentfont( fontStr, pointSize, weight, italic ); | 1139 | QFont currentfont( fontStr, pointSize, weight, italic ); |
1135 | 1140 | ||
1136 | if (ok) { | 1141 | if (ok) { |
1137 | QFontInfo fontInfo(font ); | 1142 | QFontInfo fontInfo(font ); |
1138 | fontStr=fontInfo.family(); | 1143 | fontStr=fontInfo.family(); |
1139 | 1144 | ||
1140 | pointSize= fontInfo.pointSize(); | 1145 | pointSize= fontInfo.pointSize(); |
1141 | 1146 | ||
1142 | font.setFontSize(pointSize); | 1147 | font.setFontSize(pointSize); |
1143 | 1148 | ||
1144 | pointSizeStr.setNum( pointSize); | 1149 | pointSizeStr.setNum( pointSize); |
1145 | 1150 | ||
1146 | weight= fontInfo.weight(); | 1151 | weight= fontInfo.weight(); |
1147 | weightStr.setNum( weight); | 1152 | weightStr.setNum( weight); |
1148 | italic =fontInfo.italic(); | 1153 | italic =fontInfo.italic(); |
1149 | bold=fontInfo.bold(); | 1154 | bold=fontInfo.bold(); |
1150 | 1155 | ||
1151 | if(italic == true) | 1156 | if(italic == true) |
1152 | italicStr="TRUE"; | 1157 | italicStr="TRUE"; |
1153 | else | 1158 | else |
1154 | italicStr="FALSE"; | 1159 | italicStr="FALSE"; |
1155 | if(bold == true) | 1160 | if(bold == true) |
1156 | boldStr="TRUE"; | 1161 | boldStr="TRUE"; |
1157 | else | 1162 | else |
1158 | boldStr="FALSE"; | 1163 | boldStr="FALSE"; |
1159 | 1164 | ||
1160 | pointSizeStr.setNum( pointSize); | 1165 | pointSizeStr.setNum( pointSize); |
1161 | config.setGroup( "Font" ); | 1166 | config.setGroup( "Font" ); |
1162 | config.writeEntry("Family", fontStr ); | 1167 | config.writeEntry("Family", fontStr ); |
1163 | config.writeEntry("Size", pointSizeStr ); | 1168 | config.writeEntry("Size", pointSizeStr ); |
1164 | config.writeEntry("Weight", weightStr ); | 1169 | config.writeEntry("Weight", weightStr ); |
1165 | config.writeEntry("Italic", italicStr ); | 1170 | config.writeEntry("Italic", italicStr ); |
1166 | config.writeEntry("Bold", boldStr ); | 1171 | config.writeEntry("Bold", boldStr ); |
1167 | // config.write(); | 1172 | // config.write(); |
1168 | 1173 | ||
1169 | Lview->setFont(font); | 1174 | Lview->setFont(font); |
1170 | 1175 | ||
1171 | QRect lRect; | 1176 | QRect lRect; |
1172 | QRect rRect; | 1177 | QRect rRect; |
1173 | lRect = Lview->rect(); | 1178 | lRect = Lview->rect(); |
1174 | if(useSplitter) { | 1179 | if(useSplitter) { |
1175 | } | 1180 | } |
1176 | // if(loadCheck) { | 1181 | // if(loadCheck) { |
1177 | // ResizeEdits(); | 1182 | // ResizeEdits(); |
1178 | // } | 1183 | // } |
1179 | update(); | 1184 | update(); |
1180 | } | 1185 | } |
1181 | #endif | 1186 | #endif |
1182 | } | 1187 | } |
1183 | 1188 | ||
1184 | 1189 | ||
1185 | /* | 1190 | /* |
1186 | performs dictionary look ups on the web */ | 1191 | performs dictionary look ups on the web */ |
1187 | void Gutenbrowser::LookupBtn() { | 1192 | void Gutenbrowser::LookupBtn() { |
1188 | QString text; | 1193 | QString text; |
1189 | if( Lview->hasSelectedText()) { | 1194 | if( Lview->hasSelectedText()) { |
1190 | Lview->copy(); | 1195 | Lview->copy(); |
1191 | } | 1196 | } |
1192 | QClipboard *cb = QApplication::clipboard(); | 1197 | QClipboard *cb = QApplication::clipboard(); |
1193 | text = cb->text(); | 1198 | text = cb->text(); |
1194 | int eexit=QMessageBox::information(this, | 1199 | int eexit=QMessageBox::information(this, |
1195 | "Note","Do you want to lookup\n\""+text+"\"\non websters web dictionary?", | 1200 | "Note","Do you want to lookup\n\""+text+"\"\non websters web dictionary?", |
1196 | QMessageBox::Yes, QMessageBox::No); | 1201 | QMessageBox::Yes, QMessageBox::No); |
1197 | if (eexit== 3) { | 1202 | if (eexit== 3) { |
1198 | // this link for sale!! | 1203 | // this link for sale!! |
1199 | qApp->processEvents(); | 1204 | qApp->processEvents(); |
1200 | goGetit( "http://www.m-w.com/cgi-bin/dictionary?" + text, true); | 1205 | goGetit( "http://www.m-w.com/cgi-bin/dictionary?" + text, true); |
1201 | } | 1206 | } |
1202 | } | 1207 | } |
1203 | 1208 | ||
1204 | void Gutenbrowser::ClearEdit() { | 1209 | void Gutenbrowser::ClearEdit() { |
1205 | Lview->setText(""); | 1210 | Lview->setText(""); |
1206 | loadCheck = false; | 1211 | loadCheck = false; |
1207 | status = ( tr("Gutenbrowser")); | 1212 | status = ( tr("Gutenbrowser")); |
1208 | InfoBar->setText( ""); | 1213 | InfoBar->setText( ""); |
1209 | setCaption( tr("Gutenbrowser")); | 1214 | setCaption( tr("Gutenbrowser")); |
1210 | i_pageNum = 0; | 1215 | i_pageNum = 0; |
1211 | enableButtons(false); | 1216 | enableButtons(false); |
1212 | 1217 | ||
1213 | if(!showMainList) { | 1218 | if(!showMainList) { |
1214 | Lview->hide(); | 1219 | Lview->hide(); |
1215 | showMainList=TRUE; | 1220 | showMainList=TRUE; |
1216 | mainList->show(); | 1221 | mainList->show(); |
1217 | fillWithTitles(); | 1222 | fillWithTitles(); |
1218 | qApp->processEvents(); | 1223 | qApp->processEvents(); |
1219 | } | 1224 | } |
1220 | if(donateMenu->idAt(3) != -1) | 1225 | if(donateMenu->idAt(3) != -1) |
1221 | donateMenu->removeItemAt(3); | 1226 | donateMenu->removeItemAt(3); |
1222 | } | 1227 | } |
1223 | 1228 | ||
1224 | 1229 | ||
1225 | bool Gutenbrowser::getTitle( const char *file ) { | 1230 | bool Gutenbrowser::getTitle( const char *file ) { |
1226 | QString s_file; | 1231 | QString s_file; |
1227 | QString filer = file; | 1232 | QString filer = file; |
1228 | if( filer.contains(local_library, TRUE)) { | 1233 | if( filer.contains(local_library, TRUE)) { |
1229 | QFileInfo f(file); | 1234 | QFileInfo f(file); |
1230 | s_file = f.fileName(); | 1235 | s_file = f.fileName(); |
1231 | } else { | 1236 | } else { |
1232 | s_file = filer; | 1237 | s_file = filer; |
1233 | } | 1238 | } |
1234 | Config config("Gutenbrowser"); | 1239 | Config config("Gutenbrowser"); |
1235 | config.setGroup( "Files" ); | 1240 | config.setGroup( "Files" ); |
1236 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); | 1241 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); |
1237 | int i_numofFiles = s_numofFiles.toInt(); | 1242 | int i_numofFiles = s_numofFiles.toInt(); |
1238 | 1243 | ||
1239 | for (int i = 1; i <= i_numofFiles; i++) { | 1244 | for (int i = 1; i <= i_numofFiles; i++) { |
1240 | QString temp; | 1245 | QString temp; |
1241 | temp.setNum(i); | 1246 | temp.setNum(i); |
1242 | QString ramble = config.readEntry(temp, "" ); | 1247 | QString ramble = config.readEntry(temp, "" ); |
1243 | 1248 | ||
1244 | if( strcmp(ramble, s_file) == 0) { | 1249 | if( strcmp(ramble, s_file) == 0) { |
1245 | config.setGroup( "Titles" ); | 1250 | config.setGroup( "Titles" ); |
1246 | title = config.readEntry(ramble, ""); | 1251 | title = config.readEntry(ramble, ""); |
1247 | // qDebug("(getTitle)title is being set as "+title); | 1252 | // odebug << "(getTitle)title is being set as "+title << oendl; |
1248 | } | 1253 | } |
1249 | } | 1254 | } |
1250 | return true; | 1255 | return true; |
1251 | } | 1256 | } |
1252 | 1257 | ||
1253 | void Gutenbrowser::searchdone_slot() { | 1258 | void Gutenbrowser::searchdone_slot() { |
1254 | // if (!searchDlg) | 1259 | // if (!searchDlg) |
1255 | // return; | 1260 | // return; |
1256 | // searchDlg->hide(); | 1261 | // searchDlg->hide(); |
1257 | // Lview->setFocus(); | 1262 | // Lview->setFocus(); |
1258 | this->setFocus(); | 1263 | this->setFocus(); |
1259 | last_search = 0; | 1264 | last_search = 0; |
1260 | // ResizeEdits(); | 1265 | // ResizeEdits(); |
1261 | } | 1266 | } |
1262 | 1267 | ||
1263 | /* | 1268 | /* |
1264 | sets the status message */ | 1269 | sets the status message */ |
1265 | bool Gutenbrowser::setStatus() { | 1270 | bool Gutenbrowser::setStatus() { |
1266 | 1271 | ||
1267 | #ifndef Q_WS_QWS | 1272 | #ifndef Q_WS_QWS |
1268 | QString s_pages; | 1273 | QString s_pages; |
1269 | s_pages.setNum( pages); | 1274 | s_pages.setNum( pages); |
1270 | QString chNum; | 1275 | QString chNum; |
1271 | statusTop = status.left( status.find(" ", TRUE) ); | 1276 | statusTop = status.left( status.find(" ", TRUE) ); |
1272 | status.append(chNum.setNum( i_pageNum)); | 1277 | status.append(chNum.setNum( i_pageNum)); |
1273 | status += " / " + s_pages; | 1278 | status += " / " + s_pages; |
1274 | 1279 | ||
1275 | if(loadCheck) { | 1280 | if(loadCheck) { |
1276 | statusBar->message( status); | 1281 | statusBar->message( status); |
1277 | InfoBar->setText( title); | 1282 | InfoBar->setText( title); |
1278 | } else { | 1283 | } else { |
1279 | } | 1284 | } |
1280 | #else | 1285 | #else |
1281 | QString msg; | 1286 | QString msg; |
1282 | msg.sprintf(title+" %d", i_pageNum); | 1287 | msg.sprintf(title+" %d", i_pageNum); |
1283 | setCaption( msg); | 1288 | setCaption( msg); |
1284 | #endif | 1289 | #endif |
1285 | return true; | 1290 | return true; |
1286 | } | 1291 | } |
1287 | 1292 | ||
1288 | void Gutenbrowser::keyReleaseEvent( QKeyEvent *e) { | 1293 | void Gutenbrowser::keyReleaseEvent( QKeyEvent *e) { |
1289 | switch ( e->key() ) { | 1294 | switch ( e->key() ) { |
1290 | 1295 | ||
1291 | case Key_M: | 1296 | case Key_M: |
1292 | // Bookmark(); | 1297 | // Bookmark(); |
1293 | break; | 1298 | break; |
1294 | case Key_D: | 1299 | case Key_D: |
1295 | DownloadIndex(); | 1300 | DownloadIndex(); |
1296 | break; | 1301 | break; |
1297 | case Key_L: | 1302 | case Key_L: |
1298 | LibraryBtn(); | 1303 | LibraryBtn(); |
1299 | break; | 1304 | break; |
1300 | case Key_O: | 1305 | case Key_O: |
1301 | OpenBtn(); | 1306 | OpenBtn(); |
1302 | break; | 1307 | break; |
1303 | case Key_F: | 1308 | case Key_F: |
1304 | ForwardBtn(); | 1309 | ForwardBtn(); |
1305 | break; | 1310 | break; |
1306 | case Key_B: | 1311 | case Key_B: |
1307 | BackBtn(); | 1312 | BackBtn(); |
1308 | break; | 1313 | break; |
1309 | case Key_P: | 1314 | case Key_P: |
1310 | PrintBtn(); | 1315 | PrintBtn(); |
1311 | break; | 1316 | break; |
1312 | case Key_S: | 1317 | case Key_S: |
1313 | SearchBtn(); | 1318 | SearchBtn(); |
1314 | break; | 1319 | break; |
1315 | case Key_E: | 1320 | case Key_E: |
1316 | ByeBye(); | 1321 | ByeBye(); |
1317 | break; | 1322 | break; |
1318 | case Key_R: | 1323 | case Key_R: |
1319 | // setBookmark(); | 1324 | // setBookmark(); |
1320 | break; | 1325 | break; |
1321 | case Key_T: | 1326 | case Key_T: |
1322 | ChangeFont(); | 1327 | ChangeFont(); |
1323 | break; | 1328 | break; |
1324 | case Key_C: | 1329 | case Key_C: |
1325 | ClearEdit(); | 1330 | ClearEdit(); |
1326 | break; | 1331 | break; |
1327 | case Key_H: | 1332 | case Key_H: |
1328 | HelpBtn(); | 1333 | HelpBtn(); |
1329 | break; | 1334 | break; |
1330 | case Key_K: | 1335 | case Key_K: |
1331 | LookupBtn(); | 1336 | LookupBtn(); |
1332 | break; | 1337 | break; |
1333 | case Key_U:// hide menu | 1338 | case Key_U:// hide menu |
1334 | if(menubar->isHidden() ) | 1339 | if(menubar->isHidden() ) |
1335 | menubar->show(); | 1340 | menubar->show(); |
1336 | else | 1341 | else |
1337 | menubar->hide(); | 1342 | menubar->hide(); |
1338 | break; | 1343 | break; |
1339 | case Key_I: | 1344 | case Key_I: |
1340 | hideButtons(); | 1345 | hideButtons(); |
1341 | break; | 1346 | break; |
1342 | ////////////////////////////// Zaurus keys | 1347 | ////////////////////////////// Zaurus keys |
1343 | case Key_Home: | 1348 | case Key_Home: |
1344 | // BeginBtn(); | 1349 | // BeginBtn(); |
1345 | break; | 1350 | break; |
1346 | case Key_F9: //activity | 1351 | case Key_F9: //activity |
1347 | OpenBtn(); | 1352 | OpenBtn(); |
1348 | break; | 1353 | break; |
1349 | case Key_F10: //contacts | 1354 | case Key_F10: //contacts |
1350 | hideButtons(); | 1355 | hideButtons(); |
1351 | break; | 1356 | break; |
1352 | case Key_F11: //menu | 1357 | case Key_F11: //menu |
1353 | if(menubar->isHidden() ) | 1358 | if(menubar->isHidden() ) |
1354 | menubar->show(); | 1359 | menubar->show(); |
1355 | else | 1360 | else |
1356 | menubar->hide(); | 1361 | menubar->hide(); |
1357 | break; | 1362 | break; |
1358 | case Key_F12: //home | 1363 | case Key_F12: //home |
1359 | BeginBtn(); | 1364 | BeginBtn(); |
1360 | break; | 1365 | break; |
1361 | case Key_F13: //mail | 1366 | case Key_F13: //mail |
1362 | LibraryBtn(); | 1367 | LibraryBtn(); |
1363 | break; | 1368 | break; |
1364 | case Key_Space: | 1369 | case Key_Space: |
1365 | if(loadCheck) | 1370 | if(loadCheck) |
1366 | ForwardBtn(); | 1371 | ForwardBtn(); |
1367 | // else | 1372 | // else |
1368 | // Bookmark(); | 1373 | // Bookmark(); |
1369 | break; | 1374 | break; |
1370 | case Key_Down: | 1375 | case Key_Down: |
1371 | if(loadCheck) { | 1376 | if(loadCheck) { |
1372 | // if( !e->isAutoRepeat() ) | 1377 | // if( !e->isAutoRepeat() ) |
1373 | // AdjustStatus(); | 1378 | // AdjustStatus(); |
1374 | // } else { | 1379 | // } else { |
1375 | // LibraryBtn(); | 1380 | // LibraryBtn(); |
1376 | // ForwardBtn(); | 1381 | // ForwardBtn(); |
1377 | } | 1382 | } |
1378 | 1383 | ||
1379 | // ForwardButton->setFocus(); | 1384 | // ForwardButton->setFocus(); |
1380 | // Lview->setFocus(); | 1385 | // Lview->setFocus(); |
1381 | // if(s_Wrap=="FALSE") | 1386 | // if(s_Wrap=="FALSE") |
1382 | // Lview->MultiLine_Ex::ScrollDown( 1); | 1387 | // Lview->MultiLine_Ex::ScrollDown( 1); |
1383 | // LibraryBtn(); | 1388 | // LibraryBtn(); |
1384 | break; | 1389 | break; |
1385 | case Key_Up: | 1390 | case Key_Up: |
1386 | if(loadCheck) { | 1391 | if(loadCheck) { |
1387 | // if( !e->isAutoRepeat() ) | 1392 | // if( !e->isAutoRepeat() ) |
1388 | // AdjustStatus(); | 1393 | // AdjustStatus(); |
1389 | // } else { | 1394 | // } else { |
1390 | // OpenBtn(); | 1395 | // OpenBtn(); |
1391 | // BackBtn(); | 1396 | // BackBtn(); |
1392 | } | 1397 | } |
1393 | // BackButton->setFocus(); | 1398 | // BackButton->setFocus(); |
1394 | // Lview->setFocus(); | 1399 | // Lview->setFocus(); |
1395 | // if(s_Wrap=="FALSE") | 1400 | // if(s_Wrap=="FALSE") |
1396 | // Lview->MultiLine_Ex::ScrollUp( 1); | 1401 | // Lview->MultiLine_Ex::ScrollUp( 1); |
1397 | 1402 | ||
1398 | // LibraryBtn(); | 1403 | // LibraryBtn(); |
1399 | break; | 1404 | break; |
1400 | case Key_Right: | 1405 | case Key_Right: |
1401 | ForwardButton->setFocus(); | 1406 | ForwardButton->setFocus(); |
1402 | ForwardBtn(); | 1407 | ForwardBtn(); |
1403 | // LibraryBtn(); | 1408 | // LibraryBtn(); |
1404 | break; | 1409 | break; |
1405 | case Key_Left: | 1410 | case Key_Left: |
1406 | BackBtn(); | 1411 | BackBtn(); |
1407 | BackButton->setFocus(); | 1412 | BackButton->setFocus(); |
1408 | // OpenBtn(); | 1413 | // OpenBtn(); |
1409 | break; | 1414 | break; |
1410 | case Key_Escape: | 1415 | case Key_Escape: |
1411 | ByeBye(); | 1416 | ByeBye(); |
1412 | break; | 1417 | break; |
1413 | case Key_PageUp: | 1418 | case Key_PageUp: |
1414 | BackBtn(); | 1419 | BackBtn(); |
1415 | break; | 1420 | break; |
1416 | case Key_PageDown: | 1421 | case Key_PageDown: |
1417 | ForwardBtn(); | 1422 | ForwardBtn(); |
1418 | break; | 1423 | break; |
1419 | 1424 | ||
1420 | ////////////////////////////// Zaurus keys | 1425 | ////////////////////////////// Zaurus keys |
1421 | }; | 1426 | }; |
1422 | } | 1427 | } |
1423 | 1428 | ||
1424 | void Gutenbrowser::keyPressEvent( QKeyEvent *e) { | 1429 | void Gutenbrowser::keyPressEvent( QKeyEvent *e) { |
1425 | switch ( e->key() ) { | 1430 | switch ( e->key() ) { |
1426 | // case Key_Next: | 1431 | // case Key_Next: |
1427 | // ForwardBtn(); | 1432 | // ForwardBtn(); |
1428 | // break; | 1433 | // break; |
1429 | // case Key_Prior: | 1434 | // case Key_Prior: |
1430 | // BackBtn(); | 1435 | // BackBtn(); |
1431 | // break; | 1436 | // break; |
1432 | // case Key_Space: | 1437 | // case Key_Space: |
1433 | // ForwardBtn(); | 1438 | // ForwardBtn(); |
1434 | // break; | 1439 | // break; |
1435 | // case Key_Down: | 1440 | // case Key_Down: |
1436 | // Lview->MultiLine_Ex::ScrollUp( 1); | 1441 | // Lview->MultiLine_Ex::ScrollUp( 1); |
1437 | // if(useSplitter) Rview->MultiLine_Ex::ScrollUp( 1); | 1442 | // if(useSplitter) Rview->MultiLine_Ex::ScrollUp( 1); |
1438 | // break; | 1443 | // break; |
1439 | // case Key_Up: | 1444 | // case Key_Up: |
1440 | // if( Lview->Top() != 0) { | 1445 | // if( Lview->Top() != 0) { |
1441 | // Lview->MultiLine_Ex::ScrollDown( 1); | 1446 | // Lview->MultiLine_Ex::ScrollDown( 1); |
1442 | // if(useSplitter) Rview->MultiLine_Ex::ScrollDown( 1); | 1447 | // if(useSplitter) Rview->MultiLine_Ex::ScrollDown( 1); |
1443 | // } | 1448 | // } |
1444 | // break; | 1449 | // break; |
1445 | } | 1450 | } |
1446 | } | 1451 | } |
1447 | 1452 | ||
1448 | void Gutenbrowser::resizeEvent( QResizeEvent *ev) { | 1453 | void Gutenbrowser::resizeEvent( QResizeEvent *ev) { |
1449 | // qDebug("resize: %d,%d\n",ev->size().width(),ev->size().height()); | 1454 | // odebug << "resize: " << ev->size().width() << "," << ev->size().height() << "\n" << oendl; |
1450 | 1455 | ||
1451 | if( !LibraryDlg->isHidden()) | 1456 | if( !LibraryDlg->isHidden()) |
1452 | LibraryDlg->resize(ev->size().width(),ev->size().height() ); | 1457 | LibraryDlg->resize(ev->size().width(),ev->size().height() ); |
1453 | 1458 | ||
1454 | // if( loadCheck == true) { | 1459 | // if( loadCheck == true) { |
1455 | // ResizeEdits(); | 1460 | // ResizeEdits(); |
1456 | // AdjustStatus(); | 1461 | // AdjustStatus(); |
1457 | // } | 1462 | // } |
1458 | } | 1463 | } |
1459 | 1464 | ||
1460 | 1465 | ||
1461 | void Gutenbrowser::doOptions() { | 1466 | void Gutenbrowser::doOptions() { |
1462 | optionsDialog* optDlg; | 1467 | optionsDialog* optDlg; |
1463 | optDlg = new optionsDialog( this,"Options_Dlg", true); | 1468 | optDlg = new optionsDialog( this,"Options_Dlg", true); |
1464 | QString Ddir; | 1469 | QString Ddir; |
1465 | Config config("Gutenbrowser"); | 1470 | Config config("Gutenbrowser"); |
1466 | config.setGroup( "General" ); | 1471 | config.setGroup( "General" ); |
1467 | QFont myFont; | 1472 | QFont myFont; |
1468 | optDlg->showMaximized(); | 1473 | optDlg->showMaximized(); |
1469 | 1474 | ||
1470 | if( optDlg->exec() !=0) { | 1475 | if( optDlg->exec() !=0) { |
1471 | qApp->processEvents(); | 1476 | qApp->processEvents(); |
1472 | brow=optDlg->browserName; | 1477 | brow=optDlg->browserName; |
1473 | toggleButtonIcons( optDlg->useIcon); | 1478 | toggleButtonIcons( optDlg->useIcon); |
1474 | ftp_host= optDlg->ftp_host; | 1479 | ftp_host= optDlg->ftp_host; |
1475 | ftp_base_dir= optDlg->ftp_base_dir; | 1480 | ftp_base_dir= optDlg->ftp_base_dir; |
1476 | brow=optDlg->browserName; | 1481 | brow=optDlg->browserName; |
1477 | Ddir=optDlg->downloadDirEdit->text(); | 1482 | Ddir=optDlg->downloadDirEdit->text(); |
1478 | 1483 | ||
1479 | qDebug("writing library config"); | 1484 | odebug << "writing library config" << oendl; |
1480 | Config config("Gutenbrowser"); | 1485 | Config config("Gutenbrowser"); |
1481 | config.setGroup("General"); | 1486 | config.setGroup("General"); |
1482 | 1487 | ||
1483 | QString dirname= optDlg->downloadDirEdit->text(); | 1488 | QString dirname= optDlg->downloadDirEdit->text(); |
1484 | if(dirname.right(1)!="/") | 1489 | if(dirname.right(1)!="/") |
1485 | dirname+="/"; | 1490 | dirname+="/"; |
1486 | config.writeEntry( "DownloadDirectory",dirname); | 1491 | config.writeEntry( "DownloadDirectory",dirname); |
1487 | QDir newDir( optDlg->downloadDirEdit->text()); | 1492 | QDir newDir( optDlg->downloadDirEdit->text()); |
1488 | 1493 | ||
1489 | if( !newDir.exists() ) { | 1494 | if( !newDir.exists() ) { |
1490 | int exit=QMessageBox::information(this, "Note", "Ok, to make a new directory\n"+Ddir+" ?", | 1495 | int exit=QMessageBox::information(this, "Note", "Ok, to make a new directory\n"+Ddir+" ?", |
1491 | QMessageBox::Ok, QMessageBox::Cancel); | 1496 | QMessageBox::Ok, QMessageBox::Cancel); |
1492 | if (exit==1) { | 1497 | if (exit==1) { |
1493 | QString cmd="mkdir -p "; | 1498 | QString cmd="mkdir -p "; |
1494 | cmd+=Ddir.latin1(); | 1499 | cmd+=Ddir.latin1(); |
1495 | system(cmd); | 1500 | system(cmd); |
1496 | qDebug("Making new dir "+cmd); | 1501 | odebug << "Making new dir "+cmd << oendl; |
1497 | if(Ddir.right(1)!="/") { | 1502 | if(Ddir.right(1)!="/") { |
1498 | Ddir+="/"; | 1503 | Ddir+="/"; |
1499 | } | 1504 | } |
1500 | config.writeEntry("DownloadDirectory",Ddir); | 1505 | config.writeEntry("DownloadDirectory",Ddir); |
1501 | } | 1506 | } |
1502 | } | 1507 | } |
1503 | 1508 | ||
1504 | // if(optDlg->styleChanged) | 1509 | // if(optDlg->styleChanged) |
1505 | // setStyle( optDlg->styleInt); | 1510 | // setStyle( optDlg->styleInt); |
1506 | if(optDlg->b_qExit==TRUE) | 1511 | if(optDlg->b_qExit==TRUE) |
1507 | b_queryExit=TRUE; | 1512 | b_queryExit=TRUE; |
1508 | else | 1513 | else |
1509 | b_queryExit=FALSE; | 1514 | b_queryExit=FALSE; |
1510 | 1515 | ||
1511 | if(optDlg->fontDlg-> changedFonts) { | 1516 | if(optDlg->fontDlg-> changedFonts) { |
1512 | qDebug("Setting font"); | 1517 | odebug << "Setting font" << oendl; |
1513 | myFont=optDlg->fontDlg->selectedFont; | 1518 | myFont=optDlg->fontDlg->selectedFont; |
1514 | Lview->setFont( myFont); | 1519 | Lview->setFont( myFont); |
1515 | } | 1520 | } |
1516 | 1521 | ||
1517 | if(optDlg->useWordWrap_CheckBox->isChecked() ) { | 1522 | if(optDlg->useWordWrap_CheckBox->isChecked() ) { |
1518 | qDebug("WORD WRAP is set"); | 1523 | odebug << "WORD WRAP is set" << oendl; |
1519 | Lview->setWordWrap(QMultiLineEdit::WidgetWidth); | 1524 | Lview->setWordWrap(QMultiLineEdit::WidgetWidth); |
1520 | useWrap=true; | 1525 | useWrap=true; |
1521 | } else { | 1526 | } else { |
1522 | qDebug("Word wrap is NOT set"); | 1527 | odebug << "Word wrap is NOT set" << oendl; |
1523 | Lview->setWordWrap(QMultiLineEdit::NoWrap); | 1528 | Lview->setWordWrap(QMultiLineEdit::NoWrap); |
1524 | useWrap=false; | 1529 | useWrap=false; |
1525 | } | 1530 | } |
1526 | } | 1531 | } |
1527 | if(showMainList) { | 1532 | if(showMainList) { |
1528 | if(!Lview->isHidden()) | 1533 | if(!Lview->isHidden()) |
1529 | Lview->hide(); | 1534 | Lview->hide(); |
1530 | qApp->processEvents(); | 1535 | qApp->processEvents(); |
1531 | if(mainList->isHidden()) | 1536 | if(mainList->isHidden()) |
1532 | mainList->show(); | 1537 | mainList->show(); |
1533 | fillWithTitles(); | 1538 | fillWithTitles(); |
1534 | } else { | 1539 | } else { |
1535 | Lview->show(); | 1540 | Lview->show(); |
1536 | showMainList=FALSE; | 1541 | showMainList=FALSE; |
1537 | mainList->hide(); | 1542 | mainList->hide(); |
1538 | } | 1543 | } |
1539 | qApp->processEvents(); | 1544 | qApp->processEvents(); |
1540 | update(); | 1545 | update(); |
1541 | } | 1546 | } |
1542 | 1547 | ||
1543 | bool Gutenbrowser::setTitle() { | 1548 | bool Gutenbrowser::setTitle() { |
1544 | if( file_name.contains( local_library)) { | 1549 | if( file_name.contains( local_library)) { |
1545 | QFileInfo f( file_name); | 1550 | QFileInfo f( file_name); |
1546 | QString s_file = f.fileName(); | 1551 | QString s_file = f.fileName(); |
1547 | file_name = s_file; | 1552 | file_name = s_file; |
1548 | } | 1553 | } |
1549 | 1554 | ||
1550 | int test = 0; | 1555 | int test = 0; |
1551 | Config config("Gutenbrowser"); | 1556 | Config config("Gutenbrowser"); |
1552 | config.setGroup( "Files" ); | 1557 | config.setGroup( "Files" ); |
1553 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); | 1558 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); |
1554 | int i_numofFiles = s_numofFiles.toInt(); | 1559 | int i_numofFiles = s_numofFiles.toInt(); |
1555 | 1560 | ||
1556 | for (int i = 1; i <= i_numofFiles; i++) { | 1561 | for (int i = 1; i <= i_numofFiles; i++) { |
1557 | QString temp; | 1562 | QString temp; |
1558 | temp.setNum(i); | 1563 | temp.setNum(i); |
1559 | QString ramble = config.readEntry(temp, "" ); | 1564 | QString ramble = config.readEntry(temp, "" ); |
1560 | 1565 | ||
1561 | if( strcmp(ramble, file_name) == 0) { | 1566 | if( strcmp(ramble, file_name) == 0) { |
1562 | test = 1; | 1567 | test = 1; |
1563 | } | 1568 | } |
1564 | } | 1569 | } |
1565 | if (test == 0) { | 1570 | if (test == 0) { |
1566 | config.writeEntry("NumberOfFiles",i_numofFiles +1 ); | 1571 | config.writeEntry("NumberOfFiles",i_numofFiles +1 ); |
1567 | QString interger; | 1572 | QString interger; |
1568 | interger.setNum( i_numofFiles +1); | 1573 | interger.setNum( i_numofFiles +1); |
1569 | config.writeEntry(interger, file_name); | 1574 | config.writeEntry(interger, file_name); |
1570 | 1575 | ||
1571 | config.setGroup( "Titles" ); | 1576 | config.setGroup( "Titles" ); |
1572 | config.writeEntry(file_name,listItemTitle); | 1577 | config.writeEntry(file_name,listItemTitle); |
1573 | } | 1578 | } |
1574 | test = 0; | 1579 | test = 0; |
1575 | // config.write(); | 1580 | // config.write(); |
1576 | return true; | 1581 | return true; |
1577 | } | 1582 | } |
1578 | /*Calls new fangled network dialog */ | 1583 | /*Calls new fangled network dialog */ |
1579 | void Gutenbrowser::OnNetworkDialog( const QString &/*networkUrl*/, const QString &/*output*/) | 1584 | void Gutenbrowser::OnNetworkDialog( const QString &/*networkUrl*/, const QString &/*output*/) |
1580 | { | 1585 | { |
1581 | // qDebug(networkUrl); | 1586 | // odebug << networkUrl << oendl; |
1582 | // qDebug(output); | 1587 | // odebug << output << oendl; |
1583 | // #ifndef Q_WS_QWS | 1588 | // #ifndef Q_WS_QWS |
1584 | // NetworkDialog *NetworkDlg; | 1589 | // NetworkDialog *NetworkDlg; |
1585 | // if( networkUrl.length() < 4 ) networkUrl= "http://sailor.gutenberg.org/mirror.sites.html"; | 1590 | // if( networkUrl.length() < 4 ) networkUrl= "http://sailor.gutenberg.org/mirror.sites.html"; |
1586 | // NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog", TRUE, 0, networkUrl, output); | 1591 | // NetworkDlg = new NetworkDialog( this,"Network Protocol Dialog", TRUE, 0, networkUrl, output); |
1587 | // if( NetworkDlg->exec() != 0 ) { | 1592 | // if( NetworkDlg->exec() != 0 ) { |
1588 | // } | 1593 | // } |
1589 | // if(NetworkDlg) | 1594 | // if(NetworkDlg) |
1590 | // delete NetworkDlg; | 1595 | // delete NetworkDlg; |
1591 | // #endif | 1596 | // #endif |
1592 | } | 1597 | } |
1593 | 1598 | ||
1594 | void Gutenbrowser::donateGutenberg() | 1599 | void Gutenbrowser::donateGutenberg() |
1595 | { | 1600 | { |
1596 | int exit=QMessageBox::information(this,"Info", "http://www.gutenberg.org\ndonate@gutenberg.net", | 1601 | int exit=QMessageBox::information(this, "Info", "http://www.gutenberg.org\ndonate@gutenberg.net", |
1597 | QMessageBox::Ok, QMessageBox::Cancel); | 1602 | QMessageBox::Ok, QMessageBox::Cancel); |
1598 | 1603 | ||
1599 | if (exit==1) { | 1604 | if (exit==1) { |
1600 | } else { | 1605 | } else { |
1601 | }; | 1606 | }; |
1602 | } | 1607 | } |
1603 | 1608 | ||
1604 | void Gutenbrowser::donateByteMonkie() | 1609 | void Gutenbrowser::donateByteMonkie() |
1605 | { | 1610 | { |
1606 | } | 1611 | } |
1607 | 1612 | ||
1608 | void Gutenbrowser::writeConfig() | 1613 | void Gutenbrowser::writeConfig() |
1609 | { | 1614 | { |
1610 | // config.read(); | 1615 | // config.read(); |
1611 | // Config config("Gutenbrowser"); | 1616 | // Config config("Gutenbrowser"); |
1612 | // #ifndef Q_WS_QWS | 1617 | // #ifndef Q_WS_QWS |
1613 | // config.setGroup( "Geometry" ); | 1618 | // config.setGroup( "Geometry" ); |
1614 | // QString s; | 1619 | // QString s; |
1615 | // QString globalPosition; | 1620 | // QString globalPosition; |
1616 | // QPoint point; | 1621 | // QPoint point; |
1617 | // point=mapToGlobal(QPoint(0,0) ); | 1622 | // point=mapToGlobal(QPoint(0,0) ); |
1618 | // int posiX, posiY; | 1623 | // int posiX, posiY; |
1619 | // posiX=point.x(); | 1624 | // posiX=point.x(); |
1620 | // posiY=point.y(); | 1625 | // posiY=point.y(); |
1621 | // globalPosition.sprintf("%i,%i", posiX, posiY); | 1626 | // globalPosition.sprintf("%i,%i", posiX, posiY); |
1622 | 1627 | ||
1623 | // QRect frameRect; | 1628 | // QRect frameRect; |
1624 | // frameRect = geometry(); | 1629 | // frameRect = geometry(); |
1625 | // s.sprintf("%i,%i", frameRect.width(), frameRect.height()); | 1630 | // s.sprintf("%i,%i", frameRect.width(), frameRect.height()); |
1626 | // config.writeEntry("Frame", s); | 1631 | // config.writeEntry("Frame", s); |
1627 | // config.writeEntry("Position", globalPosition); | 1632 | // config.writeEntry("Position", globalPosition); |
1628 | 1633 | ||
1629 | // if( useIcons==TRUE) | 1634 | // if( useIcons==TRUE) |
1630 | // config.writeEntry("Icons", "TRUE"); | 1635 | // config.writeEntry("Icons", "TRUE"); |
1631 | // else | 1636 | // else |
1632 | // config.writeEntry("Icons", "FALSE"); | 1637 | // config.writeEntry("Icons", "FALSE"); |
1633 | // #endif | 1638 | // #endif |
1634 | 1639 | ||
1635 | // #ifndef Q_WS_QWS | 1640 | // #ifndef Q_WS_QWS |
1636 | // QString temp; | 1641 | // QString temp; |
1637 | // temp.setNum(styleI, 10); | 1642 | // temp.setNum(styleI, 10); |
1638 | // config.setGroup( "StyleIze" ); | 1643 | // config.setGroup( "StyleIze" ); |
1639 | // config.writeEntry( "Style", temp); | 1644 | // config.writeEntry( "Style", temp); |
1640 | // #endif | 1645 | // #endif |
1641 | 1646 | ||
1642 | // config.setGroup("General"); | 1647 | // config.setGroup("General"); |
1643 | } | 1648 | } |
1644 | 1649 | ||
1645 | void Gutenbrowser::annotations() | 1650 | void Gutenbrowser::annotations() |
1646 | { | 1651 | { |
1647 | // #ifndef Q_WS_QWS | 1652 | // #ifndef Q_WS_QWS |
1648 | // QMessageBox::message("Note","hi annotate"); | 1653 | // QMessageBox::message("Note","hi annotate"); |
1649 | // lastBmkButton->setDown(FALSE); | 1654 | // lastBmkButton->setDown(FALSE); |
1650 | // #endif | 1655 | // #endif |
1651 | } | 1656 | } |
1652 | 1657 | ||
1653 | void Gutenbrowser::hideButtons() | 1658 | void Gutenbrowser::hideButtons() |
1654 | { | 1659 | { |
1655 | 1660 | ||
1656 | if( !buttonsHidden) { | 1661 | if( !buttonsHidden) { |
1657 | buttonsHidden=TRUE; | 1662 | buttonsHidden=TRUE; |
1658 | LibraryButton->hide(); | 1663 | LibraryButton->hide(); |
1659 | SearchButton->hide(); | 1664 | SearchButton->hide(); |
1660 | InfoBar->hide(); | 1665 | InfoBar->hide(); |
1661 | OpenButton->hide(); | 1666 | OpenButton->hide(); |
1662 | BackButton->hide(); | 1667 | BackButton->hide(); |
1663 | ForwardButton->hide(); | 1668 | ForwardButton->hide(); |
1664 | setBookmarkButton->hide(); | 1669 | setBookmarkButton->hide(); |
1665 | lastBmkButton->hide(); | 1670 | lastBmkButton->hide(); |
1666 | dictionaryButton->hide(); | 1671 | dictionaryButton->hide(); |
1667 | if(useSplitter) { | 1672 | if(useSplitter) { |
1668 | ClearButton->hide(); | 1673 | ClearButton->hide(); |
1669 | PrintButton->hide(); | 1674 | PrintButton->hide(); |
1670 | beginButton->hide(); | 1675 | beginButton->hide(); |
1671 | HelpButton->hide(); | 1676 | HelpButton->hide(); |
1672 | FontButton->hide(); | 1677 | FontButton->hide(); |
1673 | ExitButton->hide(); | 1678 | ExitButton->hide(); |
1674 | OptionsButton->hide(); | 1679 | OptionsButton->hide(); |
1675 | DownloadButton->hide(); | 1680 | DownloadButton->hide(); |
1676 | } | 1681 | } |
1677 | } else { | 1682 | } else { |
1678 | buttonsHidden=FALSE; | 1683 | buttonsHidden=FALSE; |
1679 | 1684 | ||
1680 | LibraryButton->show(); | 1685 | LibraryButton->show(); |
1681 | SearchButton->show(); | 1686 | SearchButton->show(); |
1682 | InfoBar->show(); | 1687 | InfoBar->show(); |
1683 | OpenButton->show(); | 1688 | OpenButton->show(); |
1684 | BackButton->show(); | 1689 | BackButton->show(); |
1685 | ForwardButton->show(); | 1690 | ForwardButton->show(); |
1686 | setBookmarkButton->show(); | 1691 | setBookmarkButton->show(); |
1687 | lastBmkButton->show(); | 1692 | lastBmkButton->show(); |
1688 | dictionaryButton->show(); | 1693 | dictionaryButton->show(); |
1689 | if(useSplitter) { | 1694 | if(useSplitter) { |
1690 | ClearButton->show(); | 1695 | ClearButton->show(); |
1691 | PrintButton->show(); | 1696 | PrintButton->show(); |
1692 | beginButton->show(); | 1697 | beginButton->show(); |
1693 | HelpButton->show(); | 1698 | HelpButton->show(); |
1694 | FontButton->show(); | 1699 | FontButton->show(); |
1695 | ExitButton->show(); | 1700 | ExitButton->show(); |
1696 | OptionsButton->show(); | 1701 | OptionsButton->show(); |
1697 | DownloadButton->show(); | 1702 | DownloadButton->show(); |
1698 | } | 1703 | } |
1699 | } | 1704 | } |
1700 | } | 1705 | } |
1701 | 1706 | ||
1702 | void Gutenbrowser::focusInEvent( QFocusEvent* ) | 1707 | void Gutenbrowser::focusInEvent( QFocusEvent* ) |
1703 | { | 1708 | { |
1704 | } | 1709 | } |
1705 | void Gutenbrowser::focusOutEvent( QFocusEvent* ) | 1710 | void Gutenbrowser::focusOutEvent( QFocusEvent* ) |
1706 | { | 1711 | { |
1707 | } | 1712 | } |
1708 | 1713 | ||
1709 | void Gutenbrowser::cleanUp( ) | 1714 | void Gutenbrowser::cleanUp( ) |
1710 | { | 1715 | { |
1711 | writeConfig(); | 1716 | writeConfig(); |
1712 | QPEApplication::grabKeyboard(); | 1717 | QPEApplication::grabKeyboard(); |
1713 | 1718 | ||
1714 | QPEApplication::ungrabKeyboard(); | 1719 | QPEApplication::ungrabKeyboard(); |
1715 | // qDebug("Cleanup"); | 1720 | // odebug << "Cleanup" << oendl; |
1716 | if(f.isOpen()) f.close(); | 1721 | if(f.isOpen()) f.close(); |
1717 | } | 1722 | } |
1718 | 1723 | ||
1719 | void Gutenbrowser::fixKeys() | 1724 | void Gutenbrowser::fixKeys() |
1720 | { | 1725 | { |
1721 | qDebug("Attempting to fix keys"); | 1726 | odebug << "Attempting to fix keys" << oendl; |
1722 | 1727 | ||
1723 | } | 1728 | } |
1724 | 1729 | ||
1725 | void Gutenbrowser::enableButtons(bool b) | 1730 | void Gutenbrowser::enableButtons(bool b) |
1726 | { | 1731 | { |
1727 | BackButton->setEnabled(b); | 1732 | BackButton->setEnabled(b); |
1728 | ForwardButton->setEnabled(b); | 1733 | ForwardButton->setEnabled(b); |
1729 | SearchButton->setEnabled(b); | 1734 | SearchButton->setEnabled(b); |
1730 | setBookmarkButton->setEnabled(b); | 1735 | setBookmarkButton->setEnabled(b); |
1731 | dictionaryButton->setEnabled(b); | 1736 | dictionaryButton->setEnabled(b); |
1732 | InfoBar->setEnabled(b); | 1737 | InfoBar->setEnabled(b); |
1733 | 1738 | ||
1734 | editMenu->setItemEnabled( -5, b); | 1739 | editMenu->setItemEnabled( -5, b); |
1735 | editMenu->setItemEnabled( -6, b); | 1740 | editMenu->setItemEnabled( -6, b); |
1736 | editMenu->setItemEnabled( -7, b); | 1741 | editMenu->setItemEnabled( -7, b); |
1737 | editMenu->setItemEnabled( -8, b); | 1742 | editMenu->setItemEnabled( -8, b); |
1738 | 1743 | ||
1739 | } | 1744 | } |
1740 | 1745 | ||
1741 | void Gutenbrowser::fillWithTitles() { | 1746 | void Gutenbrowser::fillWithTitles() { |
1742 | Config config("Gutenbrowser"); | 1747 | Config config("Gutenbrowser"); |
1743 | config.setGroup( "Files" ); | 1748 | config.setGroup( "Files" ); |
1744 | int i_numofFiles = config.readNumEntry("NumberOfFiles", 0); | 1749 | int i_numofFiles = config.readNumEntry("NumberOfFiles", 0); |
1745 | mainList->clear(); | 1750 | mainList->clear(); |
1746 | QString temp; | 1751 | QString temp; |
1747 | for (int i = 1; i <= i_numofFiles; i++) { | 1752 | for (int i = 1; i <= i_numofFiles; i++) { |
1748 | temp.setNum(i); | 1753 | temp.setNum(i); |
1749 | config.setGroup( "Files" ); | 1754 | config.setGroup( "Files" ); |
1750 | QString ramble = config.readEntry(temp, "" ); | 1755 | QString ramble = config.readEntry(temp, "" ); |
1751 | config.setGroup( "Titles" ); | 1756 | config.setGroup( "Titles" ); |
1752 | temp = config.readEntry(ramble, ""); | 1757 | temp = config.readEntry(ramble, ""); |
1753 | if( !temp.isEmpty()) { | 1758 | if( !temp.isEmpty()) { |
1754 | mainList->insertItem ( Resource::loadPixmap("gutenbrowser/gutenbrowser_sm"), temp, -1); | 1759 | mainList->insertItem ( Resource::loadPixmap("gutenbrowser/gutenbrowser_sm"), temp, -1); |
1755 | } | 1760 | } |
1756 | } | 1761 | } |
1757 | } | 1762 | } |
1758 | 1763 | ||
1759 | void Gutenbrowser::listClickedSlot( QListBoxItem * index) { | 1764 | void Gutenbrowser::listClickedSlot( QListBoxItem * index) { |
1760 | // if( !working) { | 1765 | // if( !working) { |
1761 | // working=true; | 1766 | // working=true; |
1762 | if(index) { | 1767 | if(index) { |
1763 | // QCopEnvelope ( "QPE/System", "busy()" ); | 1768 | // QCopEnvelope ( "QPE/System", "busy()" ); |
1764 | title = index->text(); | 1769 | title = index->text(); |
1765 | showMainList=FALSE; | 1770 | showMainList=FALSE; |
1766 | mainList->hide(); | 1771 | mainList->hide(); |
1767 | Lview->show(); | 1772 | Lview->show(); |
1768 | qApp->processEvents(); | 1773 | qApp->processEvents(); |
1769 | QString temp; | 1774 | QString temp; |
1770 | temp.setNum( mainList->currentItem() + 1); | 1775 | temp.setNum( mainList->currentItem() + 1); |
1771 | // openFileTitle = title; | 1776 | // openFileTitle = title; |
1772 | Config config("Gutenbrowser"); | 1777 | Config config("Gutenbrowser"); |
1773 | config.setGroup( "Files" ); | 1778 | config.setGroup( "Files" ); |
1774 | QString file = config.readEntry(temp, ""); | 1779 | QString file = config.readEntry(temp, ""); |
1775 | qDebug("About to load"); | 1780 | odebug << "About to load" << oendl; |
1776 | if( Lview->isVisible()) | 1781 | if( Lview->isVisible()) |
1777 | load(file); | 1782 | load(file); |
1778 | 1783 | ||
1779 | config.setGroup( title); | 1784 | config.setGroup( title); |
1780 | file_name = config.readEntry("File Name", ""); | 1785 | file_name = config.readEntry("File Name", ""); |
1781 | i_pageNum = config.readNumEntry("Page Number", 1); | 1786 | i_pageNum = config.readNumEntry("Page Number", 1); |
1782 | int Bmrkrow = config.readNumEntry("LineNumber", -1); | 1787 | int Bmrkrow = config.readNumEntry("LineNumber", -1); |
1783 | if(Bmrkrow > -1) { | 1788 | if(Bmrkrow > -1) { |
1784 | if( Bmrkrow > Lview->topRow() ) { | 1789 | if( Bmrkrow > Lview->topRow() ) { |
1785 | Lview->setCursorPosition( Bmrkrow /* - Lview->topRow() */,0, FALSE ); | 1790 | Lview->setCursorPosition( Bmrkrow /* - Lview->topRow() */,0, FALSE ); |
1786 | Lview->ScrollUp( Bmrkrow - Lview->topRow() ); | 1791 | Lview->ScrollUp( Bmrkrow - Lview->topRow() ); |
1787 | // AdjustStatus(); | 1792 | // AdjustStatus(); |
1788 | } | 1793 | } |
1789 | else if( Bmrkrow < Lview->topRow() ) { | 1794 | else if( Bmrkrow < Lview->topRow() ) { |
1790 | Lview->setCursorPosition( Lview->topRow() - Bmrkrow ,0, FALSE ); | 1795 | Lview->setCursorPosition( Lview->topRow() - Bmrkrow ,0, FALSE ); |
1791 | Lview->ScrollDown( Lview->topRow() - Bmrkrow ); | 1796 | Lview->ScrollDown( Lview->topRow() - Bmrkrow ); |
1792 | // AdjustStatus(); | 1797 | // AdjustStatus(); |
1793 | } | 1798 | } |
1794 | } | 1799 | } |
1795 | } | 1800 | } |
1796 | } | 1801 | } |
1797 | 1802 | ||
1798 | void Gutenbrowser::infoGutenbrowser() { | 1803 | void Gutenbrowser::infoGutenbrowser() { |
1799 | QMessageBox::message("Info","Gutenbrowser was developed by\n" | 1804 | QMessageBox::message("Info","Gutenbrowser was developed by\n" |
1800 | "Lorn Potter\n" | 1805 | "Lorn Potter\n" |
1801 | "ljp<ljp@llornkcor.com>\n"); | 1806 | "ljp<ljp@llornkcor.com>\n"); |
1802 | } | 1807 | } |
1803 | 1808 | ||
1804 | void Gutenbrowser::setDocument(const QString & frozenBoogers) { | 1809 | void Gutenbrowser::setDocument(const QString & frozenBoogers) { |
1805 | this->hide(); | 1810 | this->hide(); |
1806 | if(showMainList) { | 1811 | if(showMainList) { |
1807 | showMainList=FALSE; | 1812 | showMainList=FALSE; |
1808 | if(!mainList->isHidden()) | 1813 | if(!mainList->isHidden()) |
1809 | mainList->hide(); | 1814 | mainList->hide(); |
1810 | if(Lview->isHidden()) | 1815 | if(Lview->isHidden()) |
1811 | Lview->show(); | 1816 | Lview->show(); |
1812 | qApp->processEvents(); | 1817 | qApp->processEvents(); |
1813 | } | 1818 | } |
1814 | DocLnk lnk; | 1819 | DocLnk lnk; |
1815 | lnk = DocLnk(frozenBoogers); | 1820 | lnk = DocLnk(frozenBoogers); |
1816 | // qDebug(lnk.file() ); | 1821 | // odebug << lnk.file() << oendl; |
1817 | title=lnk.comment(); | 1822 | title=lnk.comment(); |
1818 | load( lnk.file()); | 1823 | load( lnk.file()); |
1819 | this->show(); | 1824 | this->show(); |
1820 | // qDebug(title); | 1825 | // odebug << title << oendl; |
1821 | // qApp->processEvents(); | 1826 | // qApp->processEvents(); |
1822 | // repaint(); | 1827 | // repaint(); |
1823 | } | 1828 | } |
1824 | 1829 | ||
1825 | void Gutenbrowser::mainListPressed(int mouse, QListBoxItem * , const QPoint & ) | 1830 | void Gutenbrowser::mainListPressed(int mouse, QListBoxItem * , const QPoint & ) |
1826 | { | 1831 | { |
1827 | switch (mouse) { | 1832 | switch (mouse) { |
1828 | case 1: | 1833 | case 1: |
1829 | break; | 1834 | break; |
1830 | case 2: { | 1835 | case 2: { |
1831 | QPopupMenu m;// = new QPopupMenu( Local_View ); | 1836 | QPopupMenu m;// = new QPopupMenu( Local_View ); |
1832 | m.insertItem( tr( "Open" ), this, SLOT( menuOpen() )); | 1837 | m.insertItem( tr( "Open" ), this, SLOT( menuOpen() )); |
1833 | m.insertSeparator(); | 1838 | m.insertSeparator(); |
1834 | m.insertItem( tr( "Search google.com" ), this, SLOT( menuGoogle())); | 1839 | m.insertItem( tr( "Search google.com" ), this, SLOT( menuGoogle())); |
1835 | m.insertItem( tr( "Edit Title" ), this, SLOT( menuEditTitle())); | 1840 | m.insertItem( tr( "Edit Title" ), this, SLOT( menuEditTitle())); |
1836 | // m.insertSeparator(); | 1841 | // m.insertSeparator(); |
1837 | // m.insertItem( tr( "Delete" ), this, SLOT( remoteDelete() )); | 1842 | // m.insertItem( tr( "Delete" ), this, SLOT( remoteDelete() )); |
1838 | m.exec( QCursor::pos() ); | 1843 | m.exec( QCursor::pos() ); |
1839 | } | 1844 | } |
1840 | break; | 1845 | break; |
1841 | }; | 1846 | }; |
1842 | } | 1847 | } |
1843 | 1848 | ||
1844 | void Gutenbrowser::menuOpen() { | 1849 | void Gutenbrowser::menuOpen() { |
1845 | listClickedSlot( mainList->item( mainList->currentItem())); | 1850 | listClickedSlot( mainList->item( mainList->currentItem())); |
1846 | } | 1851 | } |
1847 | 1852 | ||
1848 | void Gutenbrowser::menuGoogle() { | 1853 | void Gutenbrowser::menuGoogle() { |
1849 | searchGoogle( mainList->text(mainList->currentItem())); | 1854 | searchGoogle( mainList->text(mainList->currentItem())); |
1850 | } | 1855 | } |
1851 | 1856 | ||
1852 | void Gutenbrowser::searchGoogle( const QString &tempText) { | 1857 | void Gutenbrowser::searchGoogle( const QString &tempText) { |
1853 | QString text = tempText; | 1858 | QString text = tempText; |
1854 | 1859 | ||
1855 | int eexit=QMessageBox::information(this, "Note","Do you want to search for\n"+text+ | 1860 | int eexit=QMessageBox::information(this, "Note","Do you want to search for\n"+text+ |
1856 | "\non google.com?",QMessageBox::Yes, QMessageBox::No); | 1861 | "\non google.com?",QMessageBox::Yes, QMessageBox::No); |
1857 | if (eexit== 3) { | 1862 | if (eexit== 3) { |
1858 | qApp->processEvents(); | 1863 | qApp->processEvents(); |
1859 | text.replace( QRegExp("\\s"), "%20"); | 1864 | text.replace( QRegExp("\\s"), "%20"); |
1860 | text.replace( QRegExp("#"), ""); | 1865 | text.replace( QRegExp("#"), ""); |
1861 | text.replace( QRegExp(","), "%20"); | 1866 | text.replace( QRegExp(","), "%20"); |
1862 | text.replace( QRegExp("'"), "%20"); | 1867 | text.replace( QRegExp("'"), "%20"); |
1863 | text.replace( QRegExp("("), ""); | 1868 | text.replace( QRegExp("("), ""); |
1864 | text.replace( QRegExp(")"), ""); | 1869 | text.replace( QRegExp(")"), ""); |
1865 | // text.replace( QRegExp("[0-9]"), ""); | 1870 | // text.replace( QRegExp("[0-9]"), ""); |
1866 | QString s_lookup = "http://google.com/search?q="+text+"&num=30&sa=Google+Search"; | 1871 | QString s_lookup = "http://google.com/search?q="+text+"&num=30&sa=Google+Search"; |
1867 | goGetit( s_lookup, true); | 1872 | goGetit( s_lookup, true); |
1868 | } | 1873 | } |
1869 | 1874 | ||
1870 | } | 1875 | } |
1871 | 1876 | ||
1872 | void Gutenbrowser::menuEditTitle() | 1877 | void Gutenbrowser::menuEditTitle() |
1873 | { | 1878 | { |
1874 | int currentItem = mainList->currentItem(); | 1879 | int currentItem = mainList->currentItem(); |
1875 | QString title_text = mainList->text( currentItem); | 1880 | QString title_text = mainList->text( currentItem); |
1876 | //qDebug("Selected "+title_text); | 1881 | //odebug << "Selected "+title_text << oendl; |
1877 | 1882 | ||
1878 | Config config("Gutenbrowser"); | 1883 | Config config("Gutenbrowser"); |
1879 | config.setGroup( "Files" ); | 1884 | config.setGroup( "Files" ); |
1880 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0"); | 1885 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0"); |
1881 | int i_numofFiles = s_numofFiles.toInt(); | 1886 | int i_numofFiles = s_numofFiles.toInt(); |
1882 | QString fileNum; | 1887 | QString fileNum; |
1883 | for (int i = 1; i <= i_numofFiles+1; i++) { | 1888 | for (int i = 1; i <= i_numofFiles+1; i++) { |
1884 | 1889 | ||
1885 | fileNum.setNum(i); | 1890 | fileNum.setNum(i); |
1886 | config.setGroup( "Files" ); | 1891 | config.setGroup( "Files" ); |
1887 | QString s_filename = config.readEntry(fileNum, "" ); | 1892 | QString s_filename = config.readEntry(fileNum, "" ); |
1888 | config.setGroup( "Titles" ); | 1893 | config.setGroup( "Titles" ); |
1889 | QString file_title = config.readEntry( s_filename, ""); | 1894 | QString file_title = config.readEntry( s_filename, ""); |
1890 | //qDebug("file_title is "+file_title); | 1895 | //odebug << "file_title is "+file_title << oendl; |
1891 | if(title_text == file_title ) { | 1896 | if(title_text == file_title ) { |
1892 | // selFile = s_filename; | 1897 | // selFile = s_filename; |
1893 | //qDebug("Edit: "+ file_title ); | 1898 | //odebug << "Edit: "+ file_title << oendl; |
1894 | i=i_numofFiles+1; | 1899 | i=i_numofFiles+1; |
1895 | Edit_Title *titleEdit; | 1900 | Edit_Title *titleEdit; |
1896 | titleEdit = new Edit_Title(this,file_title ,TRUE); | 1901 | titleEdit = new Edit_Title(this,file_title ,TRUE); |
1897 | if(titleEdit->exec() !=0) { | 1902 | if(titleEdit->exec() !=0) { |
1898 | //qDebug(titleEdit->newTitle); | 1903 | //odebug << titleEdit->newTitle << oendl; |
1899 | config.writeEntry( s_filename, titleEdit->newTitle); | 1904 | config.writeEntry( s_filename, titleEdit->newTitle); |
1900 | mainList->removeItem(currentItem); | 1905 | mainList->removeItem(currentItem); |
1901 | mainList->insertItem ( Resource::loadPixmap("gutenbrowser/gutenbrowser_sm"), titleEdit->newTitle, currentItem); | 1906 | mainList->insertItem ( Resource::loadPixmap("gutenbrowser/gutenbrowser_sm"), titleEdit->newTitle, currentItem); |
1902 | } | 1907 | } |
1903 | } | 1908 | } |
1904 | } | 1909 | } |
1905 | 1910 | ||
1906 | // getTitles(); | 1911 | // getTitles(); |
1907 | mainList->triggerUpdate(true); | 1912 | mainList->triggerUpdate(true); |
1908 | 1913 | ||
1909 | } | 1914 | } |
1910 | 1915 | ||
1911 | 1916 | ||
1912 | 1917 | ||
1913 | bool Gutenbrowser::UnZipIt(const QString &zipFile) { | 1918 | bool Gutenbrowser::UnZipIt(const QString &zipFile) { |
1914 | qDebug(zipFile); | 1919 | odebug << zipFile << oendl; |
1915 | #ifndef Q_WS_QWS | 1920 | #ifndef Q_WS_QWS |
1916 | if( QFile::exists( zipFile)) { // TODO findsome other way of dealingwithzip files. | 1921 | if( QFile::exists( zipFile)) { // TODO findsome other way of dealingwithzip files. |
1917 | bool isPgWhole=false; | 1922 | bool isPgWhole=false; |
1918 | QString thatFile; | 1923 | QString thatFile; |
1919 | if(zipFile.find("pgwhole",0,TRUE)) { | 1924 | if(zipFile.find("pgwhole",0,TRUE)) { |
1920 | isPgWhole=TRUE; | 1925 | isPgWhole=TRUE; |
1921 | thatFile= local_library +"PGWHOLE.TXT"; | 1926 | thatFile= local_library +"PGWHOLE.TXT"; |
1922 | } | 1927 | } |
1923 | // else { | 1928 | // else { |
1924 | // thatFile=zipFile.left(4); | 1929 | // thatFile=zipFile.left(4); |
1925 | // } | 1930 | // } |
1926 | // qDebug((const char*)local_library.latin1()); | 1931 | // odebug << (const char*)local_library.latin1() << oendl; |
1927 | QString cmd; | 1932 | QString cmd; |
1928 | #if defined(_WS_X11_) | 1933 | #if defined(_WS_X11_) |
1929 | if( chdir((const char*)local_library.latin1())!=0) | 1934 | if( chdir((const char*)local_library.latin1())!=0) |
1930 | qDebug("chdir failed."); | 1935 | odebug << "chdir failed." << oendl; |
1931 | cmd = "gunzip -S .zip " + local_library+zipFile; | 1936 | cmd = "gunzip -S .zip " + local_library+zipFile; |
1932 | //cmd = "gunzip -d " + zipFile /*newestLibraryFile */+" -d " + local_library; | 1937 | //cmd = "gunzip -d " + zipFile /*newestLibraryFile */+" -d " + local_library; |
1933 | #endif | 1938 | #endif |
1934 | #ifdef Q_WS_QWS | 1939 | #ifdef Q_WS_QWS |
1935 | if( chdir((const char*)local_library.latin1())!=0) | 1940 | if( chdir((const char*)local_library.latin1())!=0) |
1936 | qDebug("chdir failed."); | 1941 | odebug << "chdir failed." << oendl; |
1937 | cmd = "unzip " + local_library+zipFile; | 1942 | cmd = "unzip " + local_library+zipFile; |
1938 | // cmd = "/usr/bin/unzip -o " + local_library+zipFile +" -d /usr/share/doc/gutenbrowser" ;//+ local_library; | 1943 | // cmd = "/usr/bin/unzip -o " + local_library+zipFile +" -d /usr/share/doc/gutenbrowser" ;//+ local_library; |
1939 | #endif | 1944 | #endif |
1940 | int exit=QMessageBox::information(this, "Ok to unzip?", | 1945 | int exit=QMessageBox::information(this, "Ok to unzip?", |
1941 | "Ok to unnzip\n"+ zipFile+" ?", | 1946 | "Ok to unnzip\n"+ zipFile+" ?", |
1942 | QMessageBox::Yes, QMessageBox::No); | 1947 | QMessageBox::Yes, QMessageBox::No); |
1943 | if (exit==QMessageBox::Yes) { | 1948 | if (exit==QMessageBox::Yes) { |
1944 | #if defined(_WS_X11_)// | 1949 | #if defined(_WS_X11_)// |
1945 | qDebug("Issuing the command "+cmd); | 1950 | odebug << "Issuing the command "+cmd << oendl; |
1946 | system( cmd); | 1951 | system( cmd); |
1947 | if( QFile::exists(thatFile)) | 1952 | if( QFile::exists(thatFile)) |
1948 | remove (thatFile); | 1953 | remove (thatFile); |
1949 | if(isPgWhole) { | 1954 | if(isPgWhole) { |
1950 | if( rename("pgwhole","PGWHOLE.TXT") !=0) | 1955 | if( rename("pgwhole","PGWHOLE.TXT") !=0) |
1951 | qDebug("rename failed"); | 1956 | odebug << "rename failed" << oendl; |
1952 | } else { | 1957 | } else { |
1953 | if( rename(thatFile.left(4),thatFile.left(4)+".txt") !=0) | 1958 | if( rename(thatFile.left(4),thatFile.left(4)+".txt") !=0) |
1954 | qDebug("rename failed"); | 1959 | odebug << "rename failed" << oendl; |
1955 | } | 1960 | } |
1956 | #endif | 1961 | #endif |
1957 | #ifdef Q_WS_QWS | 1962 | #ifdef Q_WS_QWS |
1958 | qDebug("Issuing the command "+cmd); | 1963 | odebug << "Issuing the command "+cmd << oendl; |
1959 | system( cmd); | 1964 | system( cmd); |
1960 | if( QFile::exists(thatFile)) | 1965 | if( QFile::exists(thatFile)) |
1961 | remove(thatFile); | 1966 | remove(thatFile); |
1962 | if(isPgWhole) { | 1967 | if(isPgWhole) { |
1963 | if( rename("pgwhole","PGWHOLE.TXT") !=0) | 1968 | if( rename("pgwhole","PGWHOLE.TXT") !=0) |
1964 | qDebug("rename failed"); | 1969 | odebug << "rename failed" << oendl; |
1965 | } else { | 1970 | } else { |
1966 | if( rename(thatFile.left(4),thatFile.left(4)+".txt") !=0) | 1971 | if( rename(thatFile.left(4),thatFile.left(4)+".txt") !=0) |
1967 | qDebug("rename failed"); | 1972 | odebug << "rename failed" << oendl; |
1968 | } | 1973 | } |
1969 | #endif | 1974 | #endif |
1970 | // remove( zipFile); | 1975 | // remove( zipFile); |
1971 | return true; | 1976 | return true; |
1972 | } | 1977 | } |
1973 | else if(exit==QMessageBox::No) { | 1978 | else if(exit==QMessageBox::No) { |
1974 | // qDebug("unzip"); | 1979 | // odebug << "unzip" << oendl; |
1975 | return false; | 1980 | return false; |
1976 | } | 1981 | } |
1977 | } | 1982 | } |
1978 | else | 1983 | else |
1979 | QMessageBox::message( "Note",( tr("Please install unzip in your PATH")) ); | 1984 | QMessageBox::message( "Note",( tr("Please install unzip in your PATH")) ); |
1980 | #endif | 1985 | #endif |
1981 | return false; | 1986 | return false; |
1982 | } | 1987 | } |
1983 | 1988 | ||
1984 | 1989 | ||
diff --git a/noncore/apps/opie-gutenbrowser/gutenbrowserData.cpp b/noncore/apps/opie-gutenbrowser/gutenbrowserData.cpp index c9149ac..a226258 100644 --- a/noncore/apps/opie-gutenbrowser/gutenbrowserData.cpp +++ b/noncore/apps/opie-gutenbrowser/gutenbrowserData.cpp | |||
@@ -1,328 +1,332 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | gutenbrowser.cpp - description | 2 | gutenbrowser.cpp - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Mon Jul 24 22:33:12 MDT 2000 | 4 | begin : Mon Jul 24 22:33:12 MDT 2000 |
5 | copyright : (C) 2000 -2004 by llornkcor | 5 | copyright : (C) 2000 -2004 by llornkcor |
6 | email : ljp@llornkcor.com | 6 | email : ljp@llornkcor.com |
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | /*************************************************************************** | 8 | /*************************************************************************** |
9 | * This program is free software; you can redistribute it and/or modify * | 9 | * This program is free software; you can redistribute it and/or modify * |
10 | * it under the terms of the GNU General Public License as published by * | 10 | * it under the terms of the GNU General Public License as published by * |
11 | * the Free Software Foundation; either version 2 of the License, or * | 11 | * the Free Software Foundation; either version 2 of the License, or * |
12 | * (at your option) any later version. * | 12 | * (at your option) any later version. * |
13 | ***************************************************************************/ | 13 | ***************************************************************************/ |
14 | |||
14 | //#include "gutenbrowserData.h" | 15 | //#include "gutenbrowserData.h" |
15 | #include "gutenbrowser.h" | 16 | #include "gutenbrowser.h" |
16 | 17 | ||
18 | /* OPIE */ | ||
19 | #include <opie2/odebug.h> | ||
17 | #include <qpe/config.h> | 20 | #include <qpe/config.h> |
18 | #include <qpe/fontdatabase.h> | 21 | #include <qpe/fontdatabase.h> |
19 | #include <qpe/menubutton.h> | 22 | #include <qpe/menubutton.h> |
20 | #include <qpe/resource.h> | 23 | #include <qpe/resource.h> |
21 | #include <qpe/qpeapplication.h> | 24 | #include <qpe/qpeapplication.h> |
22 | 25 | ||
26 | /* QT */ | ||
23 | #include <qfontinfo.h> | 27 | #include <qfontinfo.h> |
24 | #include <qtoolbutton.h> | 28 | #include <qtoolbutton.h> |
25 | 29 | ||
26 | void Gutenbrowser::initSlots() { | 30 | void Gutenbrowser::initSlots() { |
27 | 31 | ||
28 | connect(LibraryButton,SIGNAL(released()),SLOT(LibraryBtn())); | 32 | connect(LibraryButton,SIGNAL(released()),SLOT(LibraryBtn())); |
29 | connect(OpenButton,SIGNAL(released()),SLOT(OpenBtn())); | 33 | connect(OpenButton,SIGNAL(released()),SLOT(OpenBtn())); |
30 | connect(SearchButton,SIGNAL(released()),SLOT(SearchBtn())); | 34 | connect(SearchButton,SIGNAL(released()),SLOT(SearchBtn())); |
31 | connect(ForwardButton,SIGNAL(clicked()),SLOT(ForwardBtn())); | 35 | connect(ForwardButton,SIGNAL(clicked()),SLOT(ForwardBtn())); |
32 | connect(BackButton,SIGNAL(clicked()),SLOT(BackBtn())); | 36 | connect(BackButton,SIGNAL(clicked()),SLOT(BackBtn())); |
33 | connect(setBookmarkButton,SIGNAL(released()),SLOT(setBookmark())); | 37 | connect(setBookmarkButton,SIGNAL(released()),SLOT(setBookmark())); |
34 | connect(dictionaryButton,SIGNAL(released()),SLOT(LookupBtn())); | 38 | connect(dictionaryButton,SIGNAL(released()),SLOT(LookupBtn())); |
35 | connect(InfoBar,SIGNAL(clicked()),SLOT(InfoBarClick())); | 39 | connect(InfoBar,SIGNAL(clicked()),SLOT(InfoBarClick())); |
36 | connect(qApp,SIGNAL(aboutToQuit()),SLOT(cleanUp())); | 40 | connect(qApp,SIGNAL(aboutToQuit()),SLOT(cleanUp())); |
37 | connect(mainList,SIGNAL(clicked(QListBoxItem *)),SLOT(listClickedSlot(QListBoxItem *))); | 41 | connect(mainList,SIGNAL(clicked(QListBoxItem *)),SLOT(listClickedSlot(QListBoxItem *))); |
38 | connect(bookmarksMenu,SIGNAL(activated(int)),SLOT(Bookmark(int))); | 42 | connect(bookmarksMenu,SIGNAL(activated(int)),SLOT(Bookmark(int))); |
39 | } | 43 | } |
40 | 44 | ||
41 | void Gutenbrowser::initConfig() { | 45 | void Gutenbrowser::initConfig() { |
42 | //qDebug("Starting configuration."); | 46 | //odebug << "Starting configuration." << oendl; |
43 | QDir library(local_library); | 47 | QDir library(local_library); |
44 | if ( !library.exists()) { | 48 | if ( !library.exists()) { |
45 | library.mkdir(local_library, TRUE); | 49 | library.mkdir(local_library, TRUE); |
46 | QString msg; | 50 | QString msg; |
47 | // #ifndef Q_WS_WIN | 51 | // #ifndef Q_WS_WIN |
48 | msg = "chmod 755 " + local_library; | 52 | msg = "chmod 755 " + local_library; |
49 | system(msg); | 53 | system(msg); |
50 | // QDir pixdir(local_library+"pix"); | 54 | // QDir pixdir(local_library+"pix"); |
51 | // if ( !pixdir.exists()) { | 55 | // if ( !pixdir.exists()) { |
52 | // pixdir.mkdir(local_library+"pix", TRUE); | 56 | // pixdir.mkdir(local_library+"pix", TRUE); |
53 | // QString msg; | 57 | // QString msg; |
54 | // msg = "chmod 755 " + local_library+"pix"; | 58 | // msg = "chmod 755 " + local_library+"pix"; |
55 | // system(msg); | 59 | // system(msg); |
56 | // } | 60 | // } |
57 | // #endif | 61 | // #endif |
58 | 62 | ||
59 | } | 63 | } |
60 | // qDebug( "init file is %s",iniFile.latin1()); | 64 | // odebug << "init file is " << iniFile << "" << oendl; |
61 | 65 | ||
62 | #ifdef Q_WS_QWS | 66 | #ifdef Q_WS_QWS |
63 | useSplitter=FALSE; | 67 | useSplitter=FALSE; |
64 | Config config("Gutenbrowser"); | 68 | Config config("Gutenbrowser"); |
65 | 69 | ||
66 | config.setGroup( "General" ); | 70 | config.setGroup( "General" ); |
67 | //useWordWrap_CheckBox | 71 | //useWordWrap_CheckBox |
68 | useIcons=TRUE; | 72 | useIcons=TRUE; |
69 | #else | 73 | #else |
70 | 74 | ||
71 | config.setGroup( "General" ); | 75 | config.setGroup( "General" ); |
72 | QString s_Split=config.readEntry("Splitter", "TRUE" ); | 76 | QString s_Split=config.readEntry("Splitter", "TRUE" ); |
73 | QWidget *d = QApplication::desktop(); | 77 | QWidget *d = QApplication::desktop(); |
74 | int width=d->width(); | 78 | int width=d->width(); |
75 | int height=d->height(); | 79 | int height=d->height(); |
76 | int w=0, h=0; | 80 | int w=0, h=0; |
77 | QString str, str2; | 81 | QString str, str2; |
78 | 82 | ||
79 | this->setMaximumWidth(width); | 83 | this->setMaximumWidth(width); |
80 | 84 | ||
81 | if(s_Split=="TRUE") | 85 | if(s_Split=="TRUE") |
82 | useSplitter=TRUE; | 86 | useSplitter=TRUE; |
83 | else | 87 | else |
84 | useSplitter=FALSE; | 88 | useSplitter=FALSE; |
85 | 89 | ||
86 | config.setGroup( "Geometry" ); | 90 | config.setGroup( "Geometry" ); |
87 | if(width < 1030) { | 91 | if(width < 1030) { |
88 | str = config.readEntry("Frame", "700,500"); | 92 | str = config.readEntry("Frame", "700,500"); |
89 | if( !str.isEmpty() && str.find(',')>=0) { | 93 | if( !str.isEmpty() && str.find(',')>=0) { |
90 | sscanf(str,"%d,%d",&w,&h); | 94 | sscanf(str,"%d,%d",&w,&h); |
91 | resize(w,h); | 95 | resize(w,h); |
92 | str2.sprintf("%d,%d", (width-w)/2,(height-h)/2); | 96 | str2.sprintf("%d,%d", (width-w)/2,(height-h)/2); |
93 | str = config.readEntry( "Position", str2); | 97 | str = config.readEntry( "Position", str2); |
94 | } else { | 98 | } else { |
95 | resize( 740,510 ); | 99 | resize( 740,510 ); |
96 | str2.sprintf("%d,%d", (width-w)/2,(height-h)/2); | 100 | str2.sprintf("%d,%d", (width-w)/2,(height-h)/2); |
97 | str = config.readEntry( "Position",str2); | 101 | str = config.readEntry( "Position",str2); |
98 | } | 102 | } |
99 | } else {// desktop is high res | 103 | } else {// desktop is high res |
100 | str = config.readEntry("Frame", "990,640"); | 104 | str = config.readEntry("Frame", "990,640"); |
101 | if( !str.isEmpty() && str.find(',')>=0) { | 105 | if( !str.isEmpty() && str.find(',')>=0) { |
102 | sscanf(str,"%d,%d",&w,&h); | 106 | sscanf(str,"%d,%d",&w,&h); |
103 | resize(w,h); | 107 | resize(w,h); |
104 | str2.sprintf("%d,%d", (width-w)/2,(height-h)/2); | 108 | str2.sprintf("%d,%d", (width-w)/2,(height-h)/2); |
105 | str = config.readEntry( "Position", str2); | 109 | str = config.readEntry( "Position", str2); |
106 | } else { | 110 | } else { |
107 | resize( 990,640 ); | 111 | resize( 990,640 ); |
108 | str2.sprintf("%d,%d", (width-w)/2,(height-h)/2); | 112 | str2.sprintf("%d,%d", (width-w)/2,(height-h)/2); |
109 | str = config.readEntry( "Position", str2); | 113 | str = config.readEntry( "Position", str2); |
110 | } | 114 | } |
111 | } | 115 | } |
112 | int posX, posY; | 116 | int posX, posY; |
113 | bool ok; | 117 | bool ok; |
114 | QString goober; | 118 | QString goober; |
115 | goober=str.left( str.find(",", 0, TRUE) ); | 119 | goober=str.left( str.find(",", 0, TRUE) ); |
116 | posX=goober.toInt( &ok, 10); | 120 | posX=goober.toInt( &ok, 10); |
117 | goober=str.right( str.findRev(",", -1, TRUE) ); | 121 | goober=str.right( str.findRev(",", -1, TRUE) ); |
118 | posY= goober.toInt( &ok, 10); | 122 | posY= goober.toInt( &ok, 10); |
119 | // move( posX, posY); | 123 | // move( posX, posY); |
120 | str = config.readEntry("Icons", "TRUE"); | 124 | str = config.readEntry("Icons", "TRUE"); |
121 | if(str == "TRUE") | 125 | if(str == "TRUE") |
122 | useIcons=TRUE; | 126 | useIcons=TRUE; |
123 | else | 127 | else |
124 | useIcons=FALSE; | 128 | useIcons=FALSE; |
125 | #endif | 129 | #endif |
126 | // #if defined(_WS_WIN_) | 130 | // #if defined(_WS_WIN_) |
127 | // move( posX-4, posY-20); | 131 | // move( posX-4, posY-20); |
128 | // #endif | 132 | // #endif |
129 | 133 | ||
130 | config.setGroup( "Browser" ); | 134 | config.setGroup( "Browser" ); |
131 | brow = config.readEntry( "Preferred", "Opera"); | 135 | brow = config.readEntry( "Preferred", "Opera"); |
132 | config.setGroup( "FTPsite" ); // ftp server config | 136 | config.setGroup( "FTPsite" ); // ftp server config |
133 | ftp_host=config.readEntry("SiteName", "sailor.gutenberg.org"); | 137 | ftp_host=config.readEntry("SiteName", "sailor.gutenberg.org"); |
134 | // ftp_host=ftp_host.right(ftp_host.length()-(ftp_host.find(") ",0,TRUE)+1) ); | 138 | // ftp_host=ftp_host.right(ftp_host.length()-(ftp_host.find(") ",0,TRUE)+1) ); |
135 | ftp_host=ftp_host.right(ftp_host.length()-(ftp_host.find(") ",0,TRUE)+1) ); | 139 | ftp_host=ftp_host.right(ftp_host.length()-(ftp_host.find(") ",0,TRUE)+1) ); |
136 | ftp_host=ftp_host.stripWhiteSpace(); | 140 | ftp_host=ftp_host.stripWhiteSpace(); |
137 | 141 | ||
138 | ftp_base_dir= config.readEntry("base", "/pub/gutenberg"); | 142 | ftp_base_dir= config.readEntry("base", "/pub/gutenberg"); |
139 | 143 | ||
140 | //bool ok2; | 144 | //bool ok2; |
141 | QString temp; | 145 | QString temp; |
142 | QString copying; | 146 | QString copying; |
143 | copying=""; | 147 | copying=""; |
144 | 148 | ||
145 | config.setGroup("General"); | 149 | config.setGroup("General"); |
146 | QString qExit; | 150 | QString qExit; |
147 | qExit=config.readEntry("queryExit","TRUE"); | 151 | qExit=config.readEntry("queryExit","TRUE"); |
148 | if(qExit=="TRUE") { | 152 | if(qExit=="TRUE") { |
149 | b_queryExit=TRUE; | 153 | b_queryExit=TRUE; |
150 | // qDebug("Please query before leaving the library."); | 154 | // odebug << "Please query before leaving the library." << oendl; |
151 | } else { | 155 | } else { |
152 | // qDebug("Please DO NOT query before leaving the library."); | 156 | // odebug << "Please DO NOT query before leaving the library." << oendl; |
153 | b_queryExit=FALSE; | 157 | b_queryExit=FALSE; |
154 | } | 158 | } |
155 | // bookmarks | 159 | // bookmarks |
156 | // config.setGroup("Titles"); | 160 | // config.setGroup("Titles"); |
157 | // QString tmpTitle=config.readEntry(file_name,""); | 161 | // QString tmpTitle=config.readEntry(file_name,""); |
158 | 162 | ||
159 | 163 | ||
160 | }// end initConfig() | 164 | }// end initConfig() |
161 | 165 | ||
162 | void Gutenbrowser::initMenuBar() | 166 | void Gutenbrowser::initMenuBar() |
163 | { | 167 | { |
164 | // qDebug("Starting menu init."); | 168 | // odebug << "Starting menu init." << oendl; |
165 | // menuBar entry fileMenu | 169 | // menuBar entry fileMenu |
166 | menubar = new QPEMenuBar(this); | 170 | menubar = new QPEMenuBar(this); |
167 | 171 | ||
168 | fileMenu=new QPopupMenu(); | 172 | fileMenu=new QPopupMenu(); |
169 | fileMenu->insertItem(Resource::loadPixmap("gutenbrowser/openbook"), | 173 | fileMenu->insertItem(Resource::loadPixmap("gutenbrowser/openbook"), |
170 | "Open Local Library...", this, SLOT( OpenBtn()) ); | 174 | "Open Local Library...", this, SLOT( OpenBtn()) ); |
171 | // fileMenu->insertItem("Download FTPSite", this, SLOT( downloadFtpList()) ); | 175 | // fileMenu->insertItem("Download FTPSite", this, SLOT( downloadFtpList()) ); |
172 | fileMenu->insertItem( Resource::loadPixmap("home"), | 176 | fileMenu->insertItem( Resource::loadPixmap("home"), |
173 | "Download Library Index", this, SLOT( downloadLibIndex()) ); | 177 | "Download Library Index", this, SLOT( downloadLibIndex()) ); |
174 | fileMenu->insertItem( Resource::loadPixmap("quit"), | 178 | fileMenu->insertItem( Resource::loadPixmap("quit"), |
175 | "Quit Gutenbrowser...", this, SLOT( ByeBye()) ); | 179 | "Quit Gutenbrowser...", this, SLOT( ByeBye()) ); |
176 | // menuBar entry editMenu | 180 | // menuBar entry editMenu |
177 | 181 | ||
178 | editMenu=new QPopupMenu(); | 182 | editMenu=new QPopupMenu(); |
179 | 183 | ||
180 | editMenu->insertItem(Resource::loadPixmap("up"), "Top", | 184 | editMenu->insertItem(Resource::loadPixmap("up"), "Top", |
181 | this, SLOT(TopBtn()) ); | 185 | this, SLOT(TopBtn()) ); |
182 | editMenu->insertItem( Resource::loadPixmap("back"), "Beginning", | 186 | editMenu->insertItem( Resource::loadPixmap("back"), "Beginning", |
183 | this, SLOT(doBeginBtn()) ); | 187 | this, SLOT(doBeginBtn()) ); |
184 | editMenu->insertItem( Resource::loadPixmap("gutenbrowser/search"), "Search", | 188 | editMenu->insertItem( Resource::loadPixmap("gutenbrowser/search"), "Search", |
185 | this, SLOT(SearchBtn()) ); | 189 | this, SLOT(SearchBtn()) ); |
186 | 190 | ||
187 | editMenu->insertItem("Clear", this, SLOT(ClearEdit()) ); | 191 | editMenu->insertItem("Clear", this, SLOT(ClearEdit()) ); |
188 | 192 | ||
189 | optionsMenu= new QPopupMenu(); | 193 | optionsMenu= new QPopupMenu(); |
190 | optionsMenu->insertItem( Resource::loadPixmap("gutenbrowser/configure"), | 194 | optionsMenu->insertItem( Resource::loadPixmap("gutenbrowser/configure"), |
191 | "Configure", this, SLOT(doOptions()) ); | 195 | "Configure", this, SLOT(doOptions()) ); |
192 | 196 | ||
193 | donateMenu = new QPopupMenu(); | 197 | donateMenu = new QPopupMenu(); |
194 | // donateMenu->insertItem("Gutenberg", this, SLOT(donateGutenberg()) ); | 198 | // donateMenu->insertItem("Gutenberg", this, SLOT(donateGutenberg()) ); |
195 | donateMenu->insertItem( Resource::loadPixmap("gutenbrowser/gutenbrowser_sm"), | 199 | donateMenu->insertItem( Resource::loadPixmap("gutenbrowser/gutenbrowser_sm"), |
196 | "Gutenbrowser Developer", this, SLOT(infoGutenbrowser()) ); | 200 | "Gutenbrowser Developer", this, SLOT(infoGutenbrowser()) ); |
197 | 201 | ||
198 | menubar->insertItem("File", fileMenu); | 202 | menubar->insertItem("File", fileMenu); |
199 | menubar->insertItem("Page", editMenu); | 203 | menubar->insertItem("Page", editMenu); |
200 | menubar->insertItem("Options", optionsMenu); | 204 | menubar->insertItem("Options", optionsMenu); |
201 | // menubar->insertItem("More Info", donateMenu); | 205 | // menubar->insertItem("More Info", donateMenu); |
202 | 206 | ||
203 | menu->addWidget( menubar,0); | 207 | menu->addWidget( menubar,0); |
204 | 208 | ||
205 | topLayout->addLayout( menu, 0); | 209 | topLayout->addLayout( menu, 0); |
206 | } | 210 | } |
207 | 211 | ||
208 | void Gutenbrowser::initButtonBar() | 212 | void Gutenbrowser::initButtonBar() |
209 | { | 213 | { |
210 | //qDebug("Starting buttonbar init."); | 214 | //odebug << "Starting buttonbar init." << oendl; |
211 | 215 | ||
212 | OpenButton = new QPushButton( this, "OpenButton" ); | 216 | OpenButton = new QPushButton( this, "OpenButton" ); |
213 | OpenButton->setFocusPolicy( QWidget::TabFocus ); | 217 | OpenButton->setFocusPolicy( QWidget::TabFocus ); |
214 | 218 | ||
215 | LibraryButton = new QPushButton( this, "LibraryButton" ); | 219 | LibraryButton = new QPushButton( this, "LibraryButton" ); |
216 | LibraryButton->setFocusPolicy( QWidget::TabFocus ); | 220 | LibraryButton->setFocusPolicy( QWidget::TabFocus ); |
217 | 221 | ||
218 | BackButton = new QPushButton( this, "BackButton" ); | 222 | BackButton = new QPushButton( this, "BackButton" ); |
219 | BackButton->setFocusPolicy( QWidget::TabFocus ); | 223 | BackButton->setFocusPolicy( QWidget::TabFocus ); |
220 | BackButton->setAutoRepeat(TRUE); | 224 | BackButton->setAutoRepeat(TRUE); |
221 | 225 | ||
222 | ForwardButton = new QPushButton( this, "ForwardButton" ); | 226 | ForwardButton = new QPushButton( this, "ForwardButton" ); |
223 | ForwardButton->setFocusPolicy( QWidget::TabFocus ); | 227 | ForwardButton->setFocusPolicy( QWidget::TabFocus ); |
224 | // ForwardButton->setAutoRepeat(TRUE); | 228 | // ForwardButton->setAutoRepeat(TRUE); |
225 | 229 | ||
226 | SearchButton = new QPushButton( this, "SearchButton" ); | 230 | SearchButton = new QPushButton( this, "SearchButton" ); |
227 | SearchButton->setFocusPolicy( QWidget::TabFocus ); | 231 | SearchButton->setFocusPolicy( QWidget::TabFocus ); |
228 | 232 | ||
229 | setBookmarkButton = new QPushButton( this, "setBookmark" ); | 233 | setBookmarkButton = new QPushButton( this, "setBookmark" ); |
230 | setBookmarkButton->setFocusPolicy( QWidget::TabFocus ); | 234 | setBookmarkButton->setFocusPolicy( QWidget::TabFocus ); |
231 | 235 | ||
232 | lastBmkButton = new MenuButton( this, "lastBmkButton" ); | 236 | lastBmkButton = new MenuButton( this, "lastBmkButton" ); |
233 | lastBmkButton->setFocusPolicy( QWidget::TabFocus ); | 237 | lastBmkButton->setFocusPolicy( QWidget::TabFocus ); |
234 | 238 | ||
235 | bookmarksMenu = new QPopupMenu(); | 239 | bookmarksMenu = new QPopupMenu(); |
236 | bookmarksMenu->insertItem("Last Set", this, SLOT(Bookmark( int) )); | 240 | bookmarksMenu->insertItem("Last Set", this, SLOT(Bookmark( int) )); |
237 | 241 | ||
238 | lastBmkButton->setPopup(bookmarksMenu); | 242 | lastBmkButton->setPopup(bookmarksMenu); |
239 | 243 | ||
240 | dictionaryButton = new QPushButton( this, "dictionaryButton" ); | 244 | dictionaryButton = new QPushButton( this, "dictionaryButton" ); |
241 | dictionaryButton->setFocusPolicy( QWidget::TabFocus ); | 245 | dictionaryButton->setFocusPolicy( QWidget::TabFocus ); |
242 | 246 | ||
243 | InfoBar = new QPushButton( this, "Info_Bar" ); | 247 | InfoBar = new QPushButton( this, "Info_Bar" ); |
244 | // qDebug("Infobar"); | 248 | // odebug << "Infobar" << oendl; |
245 | // if(!useSplitter) { | 249 | // if(!useSplitter) { |
246 | 250 | ||
247 | buttonsHidden=FALSE; | 251 | buttonsHidden=FALSE; |
248 | buttons2->setSpacing(2); | 252 | buttons2->setSpacing(2); |
249 | buttons2->addWidget(OpenButton, 0, AlignCenter); | 253 | buttons2->addWidget(OpenButton, 0, AlignCenter); |
250 | buttons2->addWidget(LibraryButton, 0, AlignCenter); | 254 | buttons2->addWidget(LibraryButton, 0, AlignCenter); |
251 | buttons2->addWidget(BackButton, 0, AlignCenter); | 255 | buttons2->addWidget(BackButton, 0, AlignCenter); |
252 | buttons2->addWidget(ForwardButton, 0, AlignCenter); | 256 | buttons2->addWidget(ForwardButton, 0, AlignCenter); |
253 | buttons2->addWidget(SearchButton, 0, AlignCenter); | 257 | buttons2->addWidget(SearchButton, 0, AlignCenter); |
254 | buttons2->addWidget(setBookmarkButton, 0, AlignCenter); | 258 | buttons2->addWidget(setBookmarkButton, 0, AlignCenter); |
255 | buttons2->addWidget(lastBmkButton, 0, AlignCenter); | 259 | buttons2->addWidget(lastBmkButton, 0, AlignCenter); |
256 | buttons2->addWidget(dictionaryButton, 0, AlignCenter); | 260 | buttons2->addWidget(dictionaryButton, 0, AlignCenter); |
257 | buttons2->addWidget(InfoBar, 0, AlignCenter); | 261 | buttons2->addWidget(InfoBar, 0, AlignCenter); |
258 | 262 | ||
259 | topLayout->setSpacing(0); | 263 | topLayout->setSpacing(0); |
260 | topLayout->addLayout( buttons2,0); | 264 | topLayout->addLayout( buttons2,0); |
261 | 265 | ||
262 | } | 266 | } |
263 | 267 | ||
264 | /* STATUSBAR*/ | 268 | /* STATUSBAR*/ |
265 | void Gutenbrowser::initStatusBar() | 269 | void Gutenbrowser::initStatusBar() |
266 | { | 270 | { |
267 | // #ifndef Q_WS_QWS | 271 | // #ifndef Q_WS_QWS |
268 | 272 | ||
269 | // statusBar = new QStatusBar( this, "Status Bar"); | 273 | // statusBar = new QStatusBar( this, "Status Bar"); |
270 | // statusBar->message(IDS_STATUS_DEFAULT, 2000); | 274 | // statusBar->message(IDS_STATUS_DEFAULT, 2000); |
271 | // #endif | 275 | // #endif |
272 | } | 276 | } |
273 | 277 | ||
274 | void Gutenbrowser::initView() | 278 | void Gutenbrowser::initView() |
275 | { | 279 | { |
276 | // set the main widget here | 280 | // set the main widget here |
277 | // QFont defaultFont( "charter", 10, 50, 0 ); | 281 | // QFont defaultFont( "charter", 10, 50, 0 ); |
278 | Lview = new MultiLine_Ex(this); | 282 | Lview = new MultiLine_Ex(this); |
279 | 283 | ||
280 | Config cfg("Gutenbrowser"); | 284 | Config cfg("Gutenbrowser"); |
281 | cfg.setGroup("Font"); | 285 | cfg.setGroup("Font"); |
282 | 286 | ||
283 | FontDatabase fdb; | 287 | FontDatabase fdb; |
284 | QFont defaultFont=Lview->font(); | 288 | QFont defaultFont=Lview->font(); |
285 | QFontInfo fontInfo(defaultFont); | 289 | QFontInfo fontInfo(defaultFont); |
286 | 290 | ||
287 | QString family = cfg.readEntry("Family", fontInfo.family()); | 291 | QString family = cfg.readEntry("Family", fontInfo.family()); |
288 | QString style = cfg.readEntry("Style", fdb.styleString(defaultFont)); | 292 | QString style = cfg.readEntry("Style", fdb.styleString(defaultFont)); |
289 | int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); | 293 | int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); |
290 | QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) ); | 294 | QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) ); |
291 | 295 | ||
292 | defaultFont = fdb.font(family,style,i_size,charSet); | 296 | defaultFont = fdb.font(family,style,i_size,charSet); |
293 | 297 | ||
294 | QString italic=cfg.readEntry("Italic","FALSE"); | 298 | QString italic=cfg.readEntry("Italic","FALSE"); |
295 | if(italic=="TRUE") { | 299 | if(italic=="TRUE") { |
296 | qDebug("Set Italic font"); | 300 | odebug << "Set Italic font" << oendl; |
297 | defaultFont = fdb.font(family,"Regular",i_size,charSet); //workaround | 301 | defaultFont = fdb.font(family,"Regular",i_size,charSet); //workaround |
298 | defaultFont.setItalic(TRUE); | 302 | defaultFont.setItalic(TRUE); |
299 | } | 303 | } |
300 | 304 | ||
301 | Lview->setFont( defaultFont); | 305 | Lview->setFont( defaultFont); |
302 | update(); | 306 | update(); |
303 | 307 | ||
304 | cfg.setGroup("General"); | 308 | cfg.setGroup("General"); |
305 | 309 | ||
306 | if( cfg.readBoolEntry("WordWrap", 1)) { | 310 | if( cfg.readBoolEntry("WordWrap", 1)) { |
307 | Lview->setWordWrap(QMultiLineEdit::WidgetWidth); | 311 | Lview->setWordWrap(QMultiLineEdit::WidgetWidth); |
308 | useWrap=true; | 312 | useWrap=true; |
309 | } else { | 313 | } else { |
310 | Lview->setWordWrap(QMultiLineEdit::NoWrap); | 314 | Lview->setWordWrap(QMultiLineEdit::NoWrap); |
311 | useWrap=false; | 315 | useWrap=false; |
312 | } | 316 | } |
313 | mainList = new QListBox(this,"mainlist"); | 317 | mainList = new QListBox(this,"mainlist"); |
314 | 318 | ||
315 | // QPEApplication::setStylusOperation( mainList->viewport(),QPEApplication::RightOnHold); | 319 | // QPEApplication::setStylusOperation( mainList->viewport(),QPEApplication::RightOnHold); |
316 | // mainList->showMaximized(); | 320 | // mainList->showMaximized(); |
317 | // mainList->setGeometry(2,30,230,160); | 321 | // mainList->setGeometry(2,30,230,160); |
318 | Lview->setReadOnly( true); | 322 | Lview->setReadOnly( true); |
319 | edits->addWidget( Lview); | 323 | edits->addWidget( Lview); |
320 | edits->addWidget(mainList); | 324 | edits->addWidget(mainList); |
321 | 325 | ||
322 | if(!showMainList) { | 326 | if(!showMainList) { |
323 | Lview->setText( "\nThis is gutenbrowser for the Sharp Zaurus.\nMake your self at home, sit back, relax and read something great. "); | 327 | Lview->setText( "\nThis is gutenbrowser for the Sharp Zaurus.\nMake your self at home, sit back, relax and read something great. "); |
324 | } else | 328 | } else |
325 | Lview->hide(); | 329 | Lview->hide(); |
326 | 330 | ||
327 | topLayout->addLayout( edits, 0); | 331 | topLayout->addLayout( edits, 0); |
328 | } | 332 | } |
diff --git a/noncore/apps/opie-gutenbrowser/helpme.cpp b/noncore/apps/opie-gutenbrowser/helpme.cpp index 6a9b8c0..53e0236 100644 --- a/noncore/apps/opie-gutenbrowser/helpme.cpp +++ b/noncore/apps/opie-gutenbrowser/helpme.cpp | |||
@@ -1,122 +1,127 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | helpme.cpp - description | 2 | helpme.cpp - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Tue Jul 25 2000 | 4 | begin : Tue Jul 25 2000 |
5 | begin : Sat Dec 4 1999 | 5 | begin : Sat Dec 4 1999 |
6 | copyright : (C) 2000 -2004 by llornkcor | 6 | copyright : (C) 2000 -2004 by llornkcor |
7 | email : ljp@llornkcor.com | 7 | email : ljp@llornkcor.com |
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 <qpe/qcopenvelope_qws.h> | ||
18 | #include <qpe/qpeapplication.h> | ||
19 | 17 | ||
20 | #include "helpme.h" | 18 | #include "helpme.h" |
21 | #include "helpwindow.h" | 19 | #include "helpwindow.h" |
22 | 20 | ||
21 | /* OPIE */ | ||
22 | #include <qpe/qcopenvelope_qws.h> | ||
23 | #include <qpe/qpeapplication.h> | ||
24 | #include <opie2/odebug.h> | ||
25 | |||
26 | /* QT */ | ||
23 | #include <qprogressdialog.h> | 27 | #include <qprogressdialog.h> |
24 | #include <qlayout.h> | 28 | #include <qlayout.h> |
25 | 29 | ||
30 | /* STD */ | ||
26 | #include <sys/stat.h> | 31 | #include <sys/stat.h> |
27 | #include <unistd.h> | 32 | #include <unistd.h> |
28 | 33 | ||
29 | HelpMe::HelpMe(QWidget *parent, QString name ) : QDialog(parent,name) | 34 | HelpMe::HelpMe(QWidget *parent, QString name ) : QDialog(parent,name) |
30 | { | 35 | { |
31 | local_library = ( QDir::homeDirPath ())+"/Applications/gutenbrowser/"; | 36 | local_library = ( QDir::homeDirPath ())+"/Applications/gutenbrowser/"; |
32 | setCaption(tr("Gutenbrowser About " VERSION)); | 37 | setCaption(tr("Gutenbrowser About " VERSION)); |
33 | 38 | ||
34 | QGridLayout *layout = new QGridLayout( this ); | 39 | QGridLayout *layout = new QGridLayout( this ); |
35 | layout->setSpacing( 4 ); | 40 | layout->setSpacing( 4 ); |
36 | layout->setMargin( 4 ); | 41 | layout->setMargin( 4 ); |
37 | 42 | ||
38 | Edit = new QMultiLineEdit(this, ""); | 43 | Edit = new QMultiLineEdit(this, ""); |
39 | Edit->setReadOnly(true); | 44 | Edit->setReadOnly(true); |
40 | Edit->append(tr("Based on gutenbook.pl, available from http://www.gutenbook.org")); | 45 | Edit->append(tr("Based on gutenbook.pl, available from http://www.gutenbook.org")); |
41 | Edit->append(tr("Much appreciation to Lee Burgess,")); | 46 | Edit->append(tr("Much appreciation to Lee Burgess,")); |
42 | Edit->append(tr("for the original idea and concept of gutenbook.\n")); | 47 | Edit->append(tr("for the original idea and concept of gutenbook.\n")); |
43 | Edit->append(tr("A list of current Gutenberg ftp sites is at http://promo.net/pg/index.html\n")); | 48 | Edit->append(tr("A list of current Gutenberg ftp sites is at http://promo.net/pg/index.html\n")); |
44 | Edit->append(tr("For bug reports, comments or questions about Gutenbrowser, email")); | 49 | Edit->append(tr("For bug reports, comments or questions about Gutenbrowser, email")); |
45 | Edit->append(tr("ljp@llornkcor.com\n")); | 50 | Edit->append(tr("ljp@llornkcor.com\n")); |
46 | Edit->append(tr("\nMade using Qt, Qt Embedded, and Qtopia, a cross platform development API\nhttp://www.trolltech.com\n\n")); | 51 | Edit->append(tr("\nMade using Qt, Qt Embedded, and Qtopia, a cross platform development API\nhttp://www.trolltech.com\n\n")); |
47 | Edit->append(tr("Arnold's Laws of Documentation:")); | 52 | Edit->append(tr("Arnold's Laws of Documentation:")); |
48 | Edit->append(tr("(1) If it should exist, it doesn't.")); | 53 | Edit->append(tr("(1) If it should exist, it doesn't.")); |
49 | Edit->append(tr("(2) If it does exist, it's out of date.")); | 54 | Edit->append(tr("(2) If it does exist, it's out of date.")); |
50 | Edit->append(tr("(3) Only documentation for")); | 55 | Edit->append(tr("(3) Only documentation for")); |
51 | Edit->append(tr("useless programs transcends the")); | 56 | Edit->append(tr("useless programs transcends the")); |
52 | Edit->append(tr("first two laws.\n")); | 57 | Edit->append(tr("first two laws.\n")); |
53 | Edit->append(tr("Everything is temporary, anyway....\n :o)")); | 58 | Edit->append(tr("Everything is temporary, anyway....\n :o)")); |
54 | Edit->setWordWrap(QMultiLineEdit::WidgetWidth); | 59 | Edit->setWordWrap(QMultiLineEdit::WidgetWidth); |
55 | QString pixDir; | 60 | QString pixDir; |
56 | pixDir=QPEApplication::qpeDir()+"/pics/"; | 61 | pixDir=QPEApplication::qpeDir()+"/pics/"; |
57 | QPushButton *help; | 62 | QPushButton *help; |
58 | help = new QPushButton(this); | 63 | help = new QPushButton(this); |
59 | help->setPixmap( QPixmap( pixDir+"gutenbrowser/help.png")); | 64 | help->setPixmap( QPixmap( pixDir+"gutenbrowser/help.png")); |
60 | help->setText("Help"); | 65 | help->setText("Help"); |
61 | connect( help,SIGNAL(clicked()),this,SLOT( help() )); | 66 | connect( help,SIGNAL(clicked()),this,SLOT( help() )); |
62 | 67 | ||
63 | /* QPushButton *ok; | 68 | /* QPushButton *ok; |
64 | ok = new QPushButton(this); | 69 | ok = new QPushButton(this); |
65 | ok->setPixmap( QPixmap( pixDir+"/gutenbrowser/exit.png")); | 70 | ok->setPixmap( QPixmap( pixDir+"/gutenbrowser/exit.png")); |
66 | ok->setText("ok"); | 71 | ok->setText("ok"); |
67 | connect(ok,SIGNAL(clicked()),this,SLOT(accept() )); | 72 | connect(ok,SIGNAL(clicked()),this,SLOT(accept() )); |
68 | */ | 73 | */ |
69 | help->setFixedHeight(25); | 74 | help->setFixedHeight(25); |
70 | // ok->setFixedHeight(25); | 75 | // ok->setFixedHeight(25); |
71 | 76 | ||
72 | // layout->addMultiCellWidget( ok, 0, 0, 4, 4 ); | 77 | // layout->addMultiCellWidget( ok, 0, 0, 4, 4 ); |
73 | layout->addMultiCellWidget( help, 0, 0, 4, 4 ); | 78 | layout->addMultiCellWidget( help, 0, 0, 4, 4 ); |
74 | layout->addMultiCellWidget( Edit, 1, 1, 0, 4 ); | 79 | layout->addMultiCellWidget( Edit, 1, 1, 0, 4 ); |
75 | } | 80 | } |
76 | 81 | ||
77 | HelpMe::~HelpMe() | 82 | HelpMe::~HelpMe() |
78 | { | 83 | { |
79 | //delete Edit; | 84 | //delete Edit; |
80 | 85 | ||
81 | } | 86 | } |
82 | 87 | ||
83 | void HelpMe::goToURL() | 88 | void HelpMe::goToURL() |
84 | { | 89 | { |
85 | 90 | ||
86 | url = "http://www.llornkcor.com/"; | 91 | url = "http://www.llornkcor.com/"; |
87 | goGetit( url); | 92 | goGetit( url); |
88 | } | 93 | } |
89 | 94 | ||
90 | void HelpMe::goToURL2() | 95 | void HelpMe::goToURL2() |
91 | { | 96 | { |
92 | url = "http://www.gutenberg.org"; | 97 | url = "http://www.gutenberg.org"; |
93 | goGetit( url); | 98 | goGetit( url); |
94 | } | 99 | } |
95 | 100 | ||
96 | void HelpMe::goToURL3() | 101 | void HelpMe::goToURL3() |
97 | { | 102 | { |
98 | url = "http://www.gutenbook.org"; | 103 | url = "http://www.gutenbook.org"; |
99 | goGetit( url); | 104 | goGetit( url); |
100 | } | 105 | } |
101 | 106 | ||
102 | void HelpMe::goGetit( QString url) | 107 | void HelpMe::goGetit( QString url) |
103 | { | 108 | { |
104 | HelpWindow *help = new HelpWindow( url, ".", 0, "gutenbrowser"); | 109 | HelpWindow *help = new HelpWindow( url, ".", 0, "gutenbrowser"); |
105 | help->setCaption("Qt Example - Helpviewer"); | 110 | help->setCaption("Qt Example - Helpviewer"); |
106 | help->showMaximized(); | 111 | help->showMaximized(); |
107 | help->show(); | 112 | help->show(); |
108 | } | 113 | } |
109 | 114 | ||
110 | void HelpMe::help() | 115 | void HelpMe::help() |
111 | { | 116 | { |
112 | QString msg ; | 117 | QString msg ; |
113 | msg=QPEApplication::qpeDir()+"help/html/gutenbrowser-index.html"; // or where ever this ends up to be | 118 | msg=QPEApplication::qpeDir()+"help/html/gutenbrowser-index.html"; // or where ever this ends up to be |
114 | qDebug(msg); | 119 | odebug << msg << oendl; |
115 | QString url = "file://"+msg; | 120 | QString url = "file://"+msg; |
116 | goGetit( url); | 121 | goGetit( url); |
117 | 122 | ||
118 | // QCopEnvelope e("QPE/Application/helpbrowser", "setDocument(QString)" ); | 123 | // QCopEnvelope e("QPE/Application/helpbrowser", "setDocument(QString)" ); |
119 | // e << msg; | 124 | // e << msg; |
120 | 125 | ||
121 | // goGetit( msg); | 126 | // goGetit( msg); |
122 | } | 127 | } |
diff --git a/noncore/apps/opie-gutenbrowser/main.cpp b/noncore/apps/opie-gutenbrowser/main.cpp index 5c3348c..71c836d 100644 --- a/noncore/apps/opie-gutenbrowser/main.cpp +++ b/noncore/apps/opie-gutenbrowser/main.cpp | |||
@@ -1,64 +1,64 @@ | |||
1 | 1 | ||
2 | /*************************************************************************** | 2 | /*************************************************************************** |
3 | main.cpp - description | 3 | main.cpp - description |
4 | ------------------- | 4 | ------------------- |
5 | begin : Mon Jul 24 22:33:12 MDT 2000 | 5 | begin : Mon Jul 24 22:33:12 MDT 2000 |
6 | copyright : (C) 2000 -2004 by llornkcor | 6 | copyright : (C) 2000 -2004 by llornkcor |
7 | email : ljp@llornkcor.com | 7 | email : ljp@llornkcor.com |
8 | * This program is free software; you can redistribute it and/or modify * | 8 | * This program is free software; you can redistribute it and/or modify * |
9 | * it under the terms of the GNU General Public License as published by * | 9 | * it under the terms of the GNU General Public License as published by * |
10 | * the Free Software Foundation; either version 2 of the License, or * | 10 | * the Free Software Foundation; either version 2 of the License, or * |
11 | * (at your option) any later version. * | 11 | * (at your option) any later version. * |
12 | ***************************************************************************/ | 12 | ***************************************************************************/ |
13 | #include "gutenbrowser.h" | 13 | #include "gutenbrowser.h" |
14 | #include <opie2/oapplicationfactory.h> | 14 | #include <opie2/oapplicationfactory.h> |
15 | 15 | ||
16 | using namespace Opie::Core; | 16 | using namespace Opie::Core; |
17 | 17 | ||
18 | OPIE_EXPORT_APP( OApplicationFactory<Gutenbrowser> ) | 18 | OPIE_EXPORT_APP( OApplicationFactory<Gutenbrowser> ) |
19 | 19 | ||
20 | // #ifdef QT_QWS_NONOPIE | 20 | // #ifdef QT_QWS_NONOPIE |
21 | 21 | ||
22 | // #include <qpe/qpeapplication.h> | 22 | // #include <qpe/qpeapplication.h> |
23 | // #include "gutenbrowser.h" | 23 | // #include "gutenbrowser.h" |
24 | // #include <qstring.h> | 24 | // #include <qstring.h> |
25 | // // #include <stdio.h> | 25 | // // #include <stdio.h> |
26 | // // #include <stdlib.h> | 26 | // // #include <stdlib.h> |
27 | 27 | ||
28 | // int main(int argc, char *argv[]){ | 28 | // int main(int argc, char *argv[]){ |
29 | // QPEApplication a(argc, argv); | 29 | // QPEApplication a(argc, argv); |
30 | // // char * psz; | 30 | // // char * psz; |
31 | // // if (argc > 1) { | 31 | // // if (argc > 1) { |
32 | // // for( int i=0; i < argc; i++) { | 32 | // // for( int i=0; i < argc; i++) { |
33 | // // psz = argv[i]; | 33 | // // psz = argv[i]; |
34 | // // if( psz[0] == '-' || psz[0] == '/' ) { | 34 | // // if( psz[0] == '-' || psz[0] == '/' ) { |
35 | // // // The next character is the option. | 35 | // // // The next character is the option. |
36 | // // switch( psz[1] ) | 36 | // // switch( psz[1] ) |
37 | // // { | 37 | // // { |
38 | // // case 'v': // help | 38 | // // case 'v': // help |
39 | // // printf("Gutenbrowser: "VERSION"\n"); | 39 | // // printf("Gutenbrowser: "VERSION"\n"); |
40 | // // // qDebug("Gutenbrowser: "VERSION); | 40 | // // // odebug << "Gutenbrowser: "VERSION << oendl; |
41 | // // // return 0; | 41 | // // // return 0; |
42 | // // break; | 42 | // // break; |
43 | // // case 't': // current time 19:34:20 04/03/00 | 43 | // // case 't': // current time 19:34:20 04/03/00 |
44 | // // // return 0; | 44 | // // // return 0; |
45 | // // break; | 45 | // // break; |
46 | // // case 'f': // | 46 | // // case 'f': // |
47 | // // // file_Name=argv[i+1]; | 47 | // // // file_Name=argv[i+1]; |
48 | // // break; | 48 | // // break; |
49 | // // } | 49 | // // } |
50 | // // } | 50 | // // } |
51 | // // } | 51 | // // } |
52 | // // } | 52 | // // } |
53 | // // QNetworkProtocol::registerNetworkProtocol("http", new QNetworkProtocolFactory<Http>); | 53 | // // QNetworkProtocol::registerNetworkProtocol("http", new QNetworkProtocolFactory<Http>); |
54 | // // qInitNetworkProtocols();//registers ftp protocol // for now | 54 | // // qInitNetworkProtocols();//registers ftp protocol // for now |
55 | // Gutenbrowser *gutenbrowser=new Gutenbrowser(); | 55 | // Gutenbrowser *gutenbrowser=new Gutenbrowser(); |
56 | // // a.setMainWidget(gutenbrowser); | 56 | // // a.setMainWidget(gutenbrowser); |
57 | // a.showMainWidget(gutenbrowser,TRUE); | 57 | // a.showMainWidget(gutenbrowser,TRUE); |
58 | // gutenbrowser->showMaximized(); | 58 | // gutenbrowser->showMaximized(); |
59 | // gutenbrowser->show(); | 59 | // gutenbrowser->show(); |
60 | // return a.exec(); | 60 | // return a.exec(); |
61 | // } | 61 | // } |
62 | 62 | ||
63 | 63 | ||
64 | // #endif | 64 | // #endif |
diff --git a/noncore/apps/opie-gutenbrowser/openetext.cpp b/noncore/apps/opie-gutenbrowser/openetext.cpp index bd44ce6..0267416 100644 --- a/noncore/apps/opie-gutenbrowser/openetext.cpp +++ b/noncore/apps/opie-gutenbrowser/openetext.cpp | |||
@@ -1,518 +1,521 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | openetext.cpp - description | 2 | openetext.cpp - description |
3 | begin : Sat Dec 4 1999 | 3 | begin : Sat Dec 4 1999 |
4 | begin : Tue Jul 25 2000 | 4 | begin : Tue Jul 25 2000 |
5 | copyright : (C) 2000 -2004 by llornkcor | 5 | copyright : (C) 2000 -2004 by llornkcor |
6 | email : ljp@llornkcor.com | 6 | email : ljp@llornkcor.com |
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | /*************************************************************************** | 8 | /*************************************************************************** |
9 | * This program is free software; you can redistribute it and/or modify * | 9 | * This program is free software; you can redistribute it and/or modify * |
10 | * it under the terms of the GNU General Public License as published by * | 10 | * it under the terms of the GNU General Public License as published by * |
11 | * the Free Software Foundation; either version 2 of the License, or * | 11 | * the Free Software Foundation; either version 2 of the License, or * |
12 | * (at your option) any later version. * | 12 | * (at your option) any later version. * |
13 | ***************************************************************************/ | 13 | ***************************************************************************/ |
14 | 14 | ||
15 | #include "gutenbrowser.h" | 15 | #include "gutenbrowser.h" |
16 | #include "openetext.h" | 16 | #include "openetext.h" |
17 | #include "editTitle.h" | 17 | #include "editTitle.h" |
18 | 18 | ||
19 | /* OPIE */ | 19 | /* OPIE */ |
20 | #include <opie2/ofiledialog.h> | 20 | #include <opie2/ofiledialog.h> |
21 | #include <opie2/odebug.h> | ||
21 | #include <qpe/applnk.h> | 22 | #include <qpe/applnk.h> |
22 | #include <qpe/config.h> | 23 | #include <qpe/config.h> |
23 | #include <qpe/qpeapplication.h> | 24 | #include <qpe/qpeapplication.h> |
24 | using namespace Opie::Ui; | 25 | using namespace Opie::Ui; |
25 | 26 | ||
26 | #include <stdlib.h> | 27 | /* QT */ |
27 | #include <qtextstream.h> | 28 | #include <qtextstream.h> |
28 | #include <qfileinfo.h> | 29 | #include <qfileinfo.h> |
29 | 30 | ||
31 | /* STD */ | ||
30 | #if defined(_WS_WIN_) | 32 | #if defined(_WS_WIN_) |
31 | #include <windows.h> | 33 | #include <windows.h> |
32 | #else | 34 | #else |
33 | #include <unistd.h> | 35 | #include <unistd.h> |
34 | #include "sys/stat.h" | 36 | #include <stdlib.h> |
37 | #include <sys/stat.h> | ||
35 | #endif | 38 | #endif |
36 | 39 | ||
37 | OpenEtext::OpenEtext(QWidget *parent, QString name) : QDialog(parent,name,true) | 40 | OpenEtext::OpenEtext(QWidget *parent, QString name) : QDialog(parent,name,true) |
38 | { | 41 | { |
39 | local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; | 42 | local_library = (QDir::homeDirPath ()) +"/Applications/gutenbrowser/"; |
40 | local_index=local_library+"GUTINDEX.ALL"; | 43 | local_index=local_library+"GUTINDEX.ALL"; |
41 | initDialog(); | 44 | initDialog(); |
42 | connect( QListBox_1, SIGNAL(selected ( int)),this, SLOT(select_title(int)) ); | 45 | connect( QListBox_1, SIGNAL(selected ( int)),this, SLOT(select_title(int)) ); |
43 | 46 | ||
44 | getTitles(); | 47 | getTitles(); |
45 | } | 48 | } |
46 | 49 | ||
47 | OpenEtext::~OpenEtext() | 50 | OpenEtext::~OpenEtext() |
48 | { | 51 | { |
49 | } | 52 | } |
50 | 53 | ||
51 | void OpenEtext::getTitles() | 54 | void OpenEtext::getTitles() |
52 | { | 55 | { |
53 | QListBox_1->clear(); | 56 | QListBox_1->clear(); |
54 | Config config("Gutenbrowser"); | 57 | Config config("Gutenbrowser"); |
55 | config.setGroup( "Files" ); | 58 | config.setGroup( "Files" ); |
56 | s_numofFiles = config.readEntry("NumberOfFiles", "0"); | 59 | s_numofFiles = config.readEntry("NumberOfFiles", "0"); |
57 | QLabel_1->setText( tr( | 60 | QLabel_1->setText( tr( |
58 | s_numofFiles+" etexts in your library.")); | 61 | s_numofFiles+" etexts in your library.")); |
59 | int i_numofFiles = s_numofFiles.toInt(); | 62 | int i_numofFiles = s_numofFiles.toInt(); |
60 | for (int i = 1; i <= i_numofFiles+1; i++) { | 63 | for (int i = 1; i <= i_numofFiles+1; i++) { |
61 | QString temp; | 64 | QString temp; |
62 | temp.setNum(i); | 65 | temp.setNum(i); |
63 | config.setGroup( "Files" ); | 66 | config.setGroup( "Files" ); |
64 | QString ramble = config.readEntry(temp, "" ); | 67 | QString ramble = config.readEntry(temp, "" ); |
65 | config.setGroup( "Titles" ); | 68 | config.setGroup( "Titles" ); |
66 | title = config.readEntry(ramble, ""); | 69 | title = config.readEntry(ramble, ""); |
67 | if( !title.isEmpty()) { | 70 | if( !title.isEmpty()) { |
68 | QListBox_1->insertItem ( QPixmap( QPEApplication::qpeDir()+"pics/gutenbrowser/gutenbrowser_sm.png"), title, -1); | 71 | QListBox_1->insertItem ( QPixmap( QPEApplication::qpeDir()+"pics/gutenbrowser/gutenbrowser_sm.png"), title, -1); |
69 | } | 72 | } |
70 | } | 73 | } |
71 | } | 74 | } |
72 | 75 | ||
73 | /* | 76 | /* |
74 | opens selected title */ | 77 | opens selected title */ |
75 | void OpenEtext::OpenTitle() | 78 | void OpenEtext::OpenTitle() |
76 | { | 79 | { |
77 | if( QListBox_1->currentItem() != -1) | 80 | if( QListBox_1->currentItem() != -1) |
78 | select_title( QListBox_1->currentItem() ); | 81 | select_title( QListBox_1->currentItem() ); |
79 | else { | 82 | else { |
80 | QString sMsg; | 83 | QString sMsg; |
81 | sMsg = "You must select an Etext to open"; | 84 | sMsg = "You must select an Etext to open"; |
82 | QMessageBox::message( "Error",sMsg); | 85 | QMessageBox::message( "Error",sMsg); |
83 | } | 86 | } |
84 | } | 87 | } |
85 | 88 | ||
86 | void OpenEtext::select_title(int index ) | 89 | void OpenEtext::select_title(int index ) |
87 | { | 90 | { |
88 | OpenButton->setDown(TRUE); | 91 | OpenButton->setDown(TRUE); |
89 | QString temp; | 92 | QString temp; |
90 | temp.setNum( index + 1); | 93 | temp.setNum( index + 1); |
91 | const char * title; | 94 | const char * title; |
92 | title = QListBox_1->text( index ); | 95 | title = QListBox_1->text( index ); |
93 | openFileTitle = title; | 96 | openFileTitle = title; |
94 | Config config("Gutenbrowser"); | 97 | Config config("Gutenbrowser"); |
95 | config.setGroup( "Files" ); | 98 | config.setGroup( "Files" ); |
96 | file = config.readEntry(temp, ""); | 99 | file = config.readEntry(temp, ""); |
97 | OpenEtext::accept(); | 100 | OpenEtext::accept(); |
98 | } | 101 | } |
99 | 102 | ||
100 | /* | 103 | /* |
101 | This function imports already existing etexts into the local library list*/ | 104 | This function imports already existing etexts into the local library list*/ |
102 | void OpenEtext::open() | 105 | void OpenEtext::open() |
103 | { | 106 | { |
104 | OpenFileButton->setDown(TRUE); | 107 | OpenFileButton->setDown(TRUE); |
105 | title = ""; | 108 | title = ""; |
106 | QString currDir=""; | 109 | QString currDir=""; |
107 | QString filer; | 110 | QString filer; |
108 | QString name_file; | 111 | QString name_file; |
109 | QString local ; | 112 | QString local ; |
110 | local = (QDir::homeDirPath () +"Applications/gutenbrowser"); | 113 | local = (QDir::homeDirPath () +"Applications/gutenbrowser"); |
111 | QDir library( local); | 114 | QDir library( local); |
112 | 115 | ||
113 | // fileBrowser *browseForFiles; | 116 | // fileBrowser *browseForFiles; |
114 | // browseForFiles=new fileBrowser(this,"Browse for File", TRUE, 0, "guten/plain;text/plain"); | 117 | // browseForFiles=new fileBrowser(this,"Browse for File", TRUE, 0, "guten/plain;text/plain"); |
115 | // // browseForFiles=new fileBrowser(this,"fileBrowser",TRUE,0, "*"); | 118 | // // browseForFiles=new fileBrowser(this,"fileBrowser",TRUE,0, "*"); |
116 | // browseForFiles->setFileView( 0); | 119 | // browseForFiles->setFileView( 0); |
117 | // browseForFiles->showMaximized(); | 120 | // browseForFiles->showMaximized(); |
118 | // browseForFiles->exec(); | 121 | // browseForFiles->exec(); |
119 | // QString selFile= browseForFiles->selectedFileName; | 122 | // QString selFile= browseForFiles->selectedFileName; |
120 | // fileList=browseForFiles->fileList; | 123 | // fileList=browseForFiles->fileList; |
121 | Config cfg("Gutenbrowser"); | 124 | Config cfg("Gutenbrowser"); |
122 | cfg. setGroup ( "View" ); | 125 | cfg. setGroup ( "View" ); |
123 | QString dir = cfg.readEntry("LastOpenDirectory", QPEApplication::documentDir()); | 126 | QString dir = cfg.readEntry("LastOpenDirectory", QPEApplication::documentDir()); |
124 | QMap<QString, QStringList> map; | 127 | QMap<QString, QStringList> map; |
125 | map.insert(tr("All"), QStringList() ); | 128 | map.insert(tr("All"), QStringList() ); |
126 | QStringList text; | 129 | QStringList text; |
127 | text << "text/*"; | 130 | text << "text/*"; |
128 | map.insert(tr("Text"), text ); | 131 | map.insert(tr("Text"), text ); |
129 | text << "*"; | 132 | text << "*"; |
130 | map.insert(tr("All"), text ); | 133 | map.insert(tr("All"), text ); |
131 | 134 | ||
132 | QString str = OFileDialog::getOpenFileName( 2, dir , QString::null, map); | 135 | QString str = OFileDialog::getOpenFileName( 2, dir , QString::null, map); |
133 | 136 | ||
134 | if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() ) { | 137 | if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() ) { |
135 | filer = str; | 138 | filer = str; |
136 | 139 | ||
137 | qDebug("Open file: "+str); | 140 | odebug << "Open file: "+str << oendl; |
138 | 141 | ||
139 | // QStringList::ConstIterator f; | 142 | // QStringList::ConstIterator f; |
140 | // QString fileTemp; | 143 | // QString fileTemp; |
141 | // for ( f = fileList.begin(); f != fileList.end(); f++ ) { | 144 | // for ( f = fileList.begin(); f != fileList.end(); f++ ) { |
142 | // fileTemp = *f; | 145 | // fileTemp = *f; |
143 | // fileTemp.right( fileTemp.length()-5); | 146 | // fileTemp.right( fileTemp.length()-5); |
144 | // fileName = fileTemp; | 147 | // fileName = fileTemp; |
145 | // if( !fileName.isEmpty() ){ | 148 | // if( !fileName.isEmpty() ){ |
146 | // filer = fileName; | 149 | // filer = fileName; |
147 | // } else { //filename is empty | 150 | // } else { //filename is empty |
148 | // // QString sMsg; | 151 | // // QString sMsg; |
149 | // // sMsg = "Error opening library filelist "+fileName; | 152 | // // sMsg = "Error opening library filelist "+fileName; |
150 | // } | 153 | // } |
151 | 154 | ||
152 | if( filer.right(4) == ".txt" | 155 | if( filer.right(4) == ".txt" |
153 | || filer.right(4) == ".TXT" | 156 | || filer.right(4) == ".TXT" |
154 | || filer.right(4) == ".etx" | 157 | || filer.right(4) == ".etx" |
155 | || filer.right(4) == ".ETX" | 158 | || filer.right(4) == ".ETX" |
156 | || filer.right(4) == ".etx" | 159 | || filer.right(4) == ".etx" |
157 | || filer.right(4) == ".ETX" | 160 | || filer.right(4) == ".ETX" |
158 | || filer.right(4) == ".zip" | 161 | || filer.right(4) == ".zip" |
159 | || filer.right(4) == ".ZIP" ) { | 162 | || filer.right(4) == ".ZIP" ) { |
160 | QFileInfo zipFile( filer); | 163 | QFileInfo zipFile( filer); |
161 | QString s_fileName = zipFile.fileName(); | 164 | QString s_fileName = zipFile.fileName(); |
162 | QString cmd; | 165 | QString cmd; |
163 | 166 | ||
164 | if( s_fileName.right(4) == ".zip") { // unzip that sucker.... | 167 | if( s_fileName.right(4) == ".zip") { // unzip that sucker.... |
165 | s_fileName = s_fileName.left( s_fileName.length() - 4); | 168 | s_fileName = s_fileName.left( s_fileName.length() - 4); |
166 | if( chdir((const char*)local_library.latin1())!=0) | 169 | if( chdir((const char*)local_library.latin1())!=0) |
167 | qDebug("chdir failed.");// QString cmd = "gunzip -d " + filer + " -d " + local_library; | 170 | odebug << "chdir failed." << oendl; // QString cmd = "gunzip -d " + filer + " -d " + local_library; |
168 | cmd = "gunzip -S .zip " + filer; | 171 | cmd = "gunzip -S .zip " + filer; |
169 | fileName = local_library + s_fileName + ".txt"; | 172 | fileName = local_library + s_fileName + ".txt"; |
170 | system( cmd); | 173 | system( cmd); |
171 | } | 174 | } |
172 | // this renames the .txt to .etx!! | 175 | // this renames the .txt to .etx!! |
173 | else /*if( s_fileName.right(4) == ".txt" || if( s_fileName.right(4) == ".TXT"))*/ { | 176 | else /*if( s_fileName.right(4) == ".txt" || if( s_fileName.right(4) == ".TXT"))*/ { |
174 | // qDebug("Filename is "+fileName); | 177 | // odebug << "Filename is "+fileName << oendl; |
175 | s_fileName = fileName; | 178 | s_fileName = fileName; |
176 | s_fileName.replace( s_fileName.length()-3,3,"gtn");// s_fileName.replace( s_fileName.length()-3,3,"etx"); | 179 | s_fileName.replace( s_fileName.length()-3,3,"gtn");// s_fileName.replace( s_fileName.length()-3,3,"etx"); |
177 | rename(fileName.latin1(),s_fileName.latin1()); | 180 | rename(fileName.latin1(),s_fileName.latin1()); |
178 | fileName = s_fileName; | 181 | fileName = s_fileName; |
179 | // qDebug("Filename is now "+fileName); | 182 | // odebug << "Filename is now "+fileName << oendl; |
180 | } | 183 | } |
181 | } else | 184 | } else |
182 | fileName = str; | 185 | fileName = str; |
183 | 186 | ||
184 | FindTitle(fileName); | 187 | FindTitle(fileName); |
185 | 188 | ||
186 | QFileInfo fi( fileName); | 189 | QFileInfo fi( fileName); |
187 | name_file = fi.fileName(); | 190 | name_file = fi.fileName(); |
188 | name_file = name_file.left(name_file.length() - 4); | 191 | name_file = name_file.left(name_file.length() - 4); |
189 | 192 | ||
190 | qDebug("Setting doclink"); | 193 | odebug << "Setting doclink" << oendl; |
191 | DocLnk lnk; | 194 | DocLnk lnk; |
192 | qDebug("name is " + name_file); | 195 | odebug << "name is " + name_file << oendl; |
193 | lnk.setName(name_file); //sets file name | 196 | lnk.setName(name_file); //sets file name |
194 | qDebug("Title is "+title); | 197 | odebug << "Title is "+title << oendl; |
195 | lnk.setComment(title); | 198 | lnk.setComment(title); |
196 | 199 | ||
197 | QListBox_1->clear(); | 200 | QListBox_1->clear(); |
198 | getTitles(); | 201 | getTitles(); |
199 | qDebug("Filename is "+fileName); | 202 | odebug << "Filename is "+fileName << oendl; |
200 | lnk.setFile(fileName); //sets File property | 203 | lnk.setFile(fileName); //sets File property |
201 | lnk.setType("guten/plain");// hey is this a REGISTERED mime type?!?!? ;D | 204 | lnk.setType("guten/plain");// hey is this a REGISTERED mime type?!?!? ;D |
202 | lnk.setExec(fileName); | 205 | lnk.setExec(fileName); |
203 | lnk.setIcon("gutenbrowser/Gutenbrowser"); | 206 | lnk.setIcon("gutenbrowser/Gutenbrowser"); |
204 | if(!lnk.writeLink()) | 207 | if(!lnk.writeLink()) |
205 | qDebug("Writing doclink did not work"); | 208 | odebug << "Writing doclink did not work" << oendl; |
206 | 209 | ||
207 | } // end of for each file name.... | 210 | } // end of for each file name.... |
208 | OpenFileButton->setDown(FALSE); | 211 | OpenFileButton->setDown(FALSE); |
209 | } | 212 | } |
210 | 213 | ||
211 | /* | 214 | /* |
212 | find the title in the config file */ | 215 | find the title in the config file */ |
213 | bool OpenEtext::FindTitle( QString filename) | 216 | bool OpenEtext::FindTitle( QString filename) |
214 | { | 217 | { |
215 | Config config("Gutenbrowser"); | 218 | Config config("Gutenbrowser"); |
216 | config.setGroup( "Files" ); | 219 | config.setGroup( "Files" ); |
217 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0"); | 220 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0"); |
218 | int i_numofFiles = s_numofFiles.toInt(); | 221 | int i_numofFiles = s_numofFiles.toInt(); |
219 | 222 | ||
220 | QFileInfo fi(filename); | 223 | QFileInfo fi(filename); |
221 | name = fi.fileName(); | 224 | name = fi.fileName(); |
222 | qDebug("filename to open is " + name); | 225 | odebug << "filename to open is " + name << oendl; |
223 | QFile indexLib( filename); | 226 | QFile indexLib( filename); |
224 | bool findCheck = FALSE; | 227 | bool findCheck = FALSE; |
225 | // int Titlenumber=0; | 228 | // int Titlenumber=0; |
226 | 229 | ||
227 | if ( indexLib.open( IO_ReadOnly) ) { | 230 | if ( indexLib.open( IO_ReadOnly) ) { |
228 | qDebug("file opened successfully"); | 231 | odebug << "file opened successfully" << oendl; |
229 | QTextStream indexStream( &indexLib ); | 232 | QTextStream indexStream( &indexLib ); |
230 | QString target = "Project Gutenberg Etext of"; | 233 | QString target = "Project Gutenberg Etext of"; |
231 | QString target2 = "Project Gutenberg Etext"; | 234 | QString target2 = "Project Gutenberg Etext"; |
232 | QString target3 = "Project Gutenberg's Etext of"; | 235 | QString target3 = "Project Gutenberg's Etext of"; |
233 | QString target4 = "Project Gutenberg's Etext"; | 236 | QString target4 = "Project Gutenberg's Etext"; |
234 | QString indexLine; | 237 | QString indexLine; |
235 | while ( !indexStream.eof() ) { | 238 | while ( !indexStream.eof() ) { |
236 | // until end of file.. | 239 | // until end of file.. |
237 | indexLine = indexStream.readLine(); | 240 | indexLine = indexStream.readLine(); |
238 | if( indexLine.find(target, 0, TRUE) > -1 && !findCheck) {findCheck = TRUE; | 241 | if( indexLine.find(target, 0, TRUE) > -1 && !findCheck) {findCheck = TRUE; |
239 | title = indexLine.mid( indexLine.find(target, 0, TRUE) + (target.length()) , indexLine.find("\r", 0, TRUE)); | 242 | title = indexLine.mid( indexLine.find(target, 0, TRUE) + (target.length()) , indexLine.find("\r", 0, TRUE)); |
240 | title = title.left( title.find( "*",0, TRUE)); | 243 | title = title.left( title.find( "*",0, TRUE)); |
241 | title = title.stripWhiteSpace (); | 244 | title = title.stripWhiteSpace (); |
242 | // qDebug("Found the title 1 and it is %s", title.latin1()); | 245 | // odebug << "Found the title 1 and it is " << title << "" << oendl; |
243 | // QListBox_1->insertItem ( title); | 246 | // QListBox_1->insertItem ( title); |
244 | } | 247 | } |
245 | if( indexLine.find( target2, 0, TRUE) > -1 && !findCheck) { | 248 | if( indexLine.find( target2, 0, TRUE) > -1 && !findCheck) { |
246 | findCheck = TRUE; | 249 | findCheck = TRUE; |
247 | title = indexLine.mid( indexLine.find( target2, 0, TRUE ) + ( target2.length()) , indexLine.find("\r", 0, TRUE) ); | 250 | title = indexLine.mid( indexLine.find( target2, 0, TRUE ) + ( target2.length()) , indexLine.find("\r", 0, TRUE) ); |
248 | title = title.left( title.find( "*",0, TRUE)); | 251 | title = title.left( title.find( "*",0, TRUE)); |
249 | title = title.stripWhiteSpace (); | 252 | title = title.stripWhiteSpace (); |
250 | // qDebug("Found the title 2 and it is %s", title.latin1()); | 253 | // odebug << "Found the title 2 and it is " << title << "" << oendl; |
251 | // QListBox_1->insertItem ( title); | 254 | // QListBox_1->insertItem ( title); |
252 | } | 255 | } |
253 | if( indexLine.find( target3, 0, TRUE) > -1 && !findCheck) { | 256 | if( indexLine.find( target3, 0, TRUE) > -1 && !findCheck) { |
254 | findCheck = TRUE; | 257 | findCheck = TRUE; |
255 | title = indexLine.mid( indexLine.find( target3, 0, TRUE) + ( target3.length()) , indexLine.find("\r", 0, TRUE)); | 258 | title = indexLine.mid( indexLine.find( target3, 0, TRUE) + ( target3.length()) , indexLine.find("\r", 0, TRUE)); |
256 | title = title.left( title.find( "*",0, TRUE)); | 259 | title = title.left( title.find( "*",0, TRUE)); |
257 | title = title.stripWhiteSpace (); | 260 | title = title.stripWhiteSpace (); |
258 | // qDebug("Found the title 3 and it is %s", title.latin1()); | 261 | // odebug << "Found the title 3 and it is " << title << "" << oendl; |
259 | } | 262 | } |
260 | if( indexLine.find( target4, 0, TRUE) > -1 && !findCheck) { | 263 | if( indexLine.find( target4, 0, TRUE) > -1 && !findCheck) { |
261 | findCheck = TRUE; | 264 | findCheck = TRUE; |
262 | title = indexLine.mid( indexLine.find( target4, 0, TRUE) + ( target4.length()) , indexLine.find("\r", 0, TRUE)); | 265 | title = indexLine.mid( indexLine.find( target4, 0, TRUE) + ( target4.length()) , indexLine.find("\r", 0, TRUE)); |
263 | title = title.left( title.find( "*",0, TRUE)); | 266 | title = title.left( title.find( "*",0, TRUE)); |
264 | title = title.stripWhiteSpace (); | 267 | title = title.stripWhiteSpace (); |
265 | // qDebug("Found the title 4 and it is %s", title.latin1()); | 268 | // odebug << "Found the title 4 and it is " << title << "" << oendl; |
266 | } | 269 | } |
267 | } //endof file | 270 | } //endof file |
268 | indexLib.close(); | 271 | indexLib.close(); |
269 | 272 | ||
270 | if( !findCheck || title.length() < 2) { | 273 | if( !findCheck || title.length() < 2) { |
271 | qDebug("Trying hard to find title from GUTINDEX.ALL"); | 274 | odebug << "Trying hard to find title from GUTINDEX.ALL" << oendl; |
272 | title = titleFromLibrary( filename); | 275 | title = titleFromLibrary( filename); |
273 | findCheck = TRUE; | 276 | findCheck = TRUE; |
274 | } | 277 | } |
275 | 278 | ||
276 | if ( checkConf() == false && findCheck == TRUE) { | 279 | if ( checkConf() == false && findCheck == TRUE) { |
277 | 280 | ||
278 | config.setGroup( "Files"); | 281 | config.setGroup( "Files"); |
279 | config.writeEntry("NumberOfFiles",i_numofFiles + 1 ); | 282 | config.writeEntry("NumberOfFiles",i_numofFiles + 1 ); |
280 | QString interger; | 283 | QString interger; |
281 | interger.setNum( i_numofFiles +1); | 284 | interger.setNum( i_numofFiles +1); |
282 | config.writeEntry(interger, filename); | 285 | config.writeEntry(interger, filename); |
283 | config.setGroup( "Titles" ); | 286 | config.setGroup( "Titles" ); |
284 | for (int i = 1; i <= i_numofFiles; i++) { //find dup titles in config file | 287 | for (int i = 1; i <= i_numofFiles; i++) { //find dup titles in config file |
285 | QString temp; | 288 | QString temp; |
286 | temp.setNum(i); | 289 | temp.setNum(i); |
287 | config.setGroup( "Files" ); | 290 | config.setGroup( "Files" ); |
288 | QString ramble = config.readEntry(temp, "" ); | 291 | QString ramble = config.readEntry(temp, "" ); |
289 | config.setGroup( "Titles" ); | 292 | config.setGroup( "Titles" ); |
290 | QString title1 = config.readEntry(ramble, ""); | 293 | QString title1 = config.readEntry(ramble, ""); |
291 | if(title1==title) | 294 | if(title1==title) |
292 | title+="1"; | 295 | title+="1"; |
293 | i= i_numofFiles+1; | 296 | i= i_numofFiles+1; |
294 | } | 297 | } |
295 | if(title.length()<3) { | 298 | if(title.length()<3) { |
296 | // qDebug("title is empty"); | 299 | // odebug << "title is empty" << oendl; |
297 | title="Unknown"; | 300 | title="Unknown"; |
298 | } | 301 | } |
299 | config.writeEntry( filename,title); | 302 | config.writeEntry( filename,title); |
300 | } | 303 | } |
301 | } else { | 304 | } else { |
302 | QString sMsg; | 305 | QString sMsg; |
303 | sMsg = "Error opening library file: "+filename; | 306 | sMsg = "Error opening library file: "+filename; |
304 | printf( sMsg+"\n"); | 307 | printf( sMsg+"\n"); |
305 | } | 308 | } |
306 | return true; | 309 | return true; |
307 | } | 310 | } |
308 | 311 | ||
309 | QString OpenEtext::titleFromLibrary( QString fileName) | 312 | QString OpenEtext::titleFromLibrary( QString fileName) |
310 | { | 313 | { |
311 | QFile indexLib( local_index); | 314 | QFile indexLib( local_index); |
312 | QString target; | 315 | QString target; |
313 | int find1 = fileName.findRev("/",-1,TRUE) + 1; | 316 | int find1 = fileName.findRev("/",-1,TRUE) + 1; |
314 | int find2 = fileName.findRev(".gtn",-1,TRUE) - find1; | 317 | int find2 = fileName.findRev(".gtn",-1,TRUE) - find1; |
315 | if(find2==-1-find1) | 318 | if(find2==-1-find1) |
316 | int find2 = fileName.findRev(".etx",-1,TRUE) - find1; | 319 | int find2 = fileName.findRev(".etx",-1,TRUE) - find1; |
317 | else if(find2==-1-find1) | 320 | else if(find2==-1-find1) |
318 | int find2 = fileName.findRev(".txt",-1,TRUE) - find1; | 321 | int find2 = fileName.findRev(".txt",-1,TRUE) - find1; |
319 | 322 | ||
320 | target = fileName.mid( find1, find2 ); | 323 | target = fileName.mid( find1, find2 ); |
321 | QString checker = target.right(1); | 324 | QString checker = target.right(1); |
322 | bool ok; | 325 | bool ok; |
323 | checker.toInt( &ok,10); | 326 | checker.toInt( &ok,10); |
324 | if( ok) { | 327 | if( ok) { |
325 | target = target.left( target.length()-1); | 328 | target = target.left( target.length()-1); |
326 | checker = target.right(1); | 329 | checker = target.right(1); |
327 | ok = FALSE; | 330 | ok = FALSE; |
328 | checker.toInt( &ok,10); | 331 | checker.toInt( &ok,10); |
329 | if( ok) { | 332 | if( ok) { |
330 | target = target.left( target.length()-1); | 333 | target = target.left( target.length()-1); |
331 | } | 334 | } |
332 | } | 335 | } |
333 | if ( indexLib.open( IO_ReadOnly) ) { | 336 | if ( indexLib.open( IO_ReadOnly) ) { |
334 | // file opened successfully | 337 | // file opened successfully |
335 | QTextStream indexStream( &indexLib ); | 338 | QTextStream indexStream( &indexLib ); |
336 | QString indexLine; | 339 | QString indexLine; |
337 | bool findCheck = FALSE; | 340 | bool findCheck = FALSE; |
338 | while ( !indexStream.atEnd() ) { // until end of file.. | 341 | while ( !indexStream.atEnd() ) { // until end of file.. |
339 | indexLine = indexStream.readLine(); | 342 | indexLine = indexStream.readLine(); |
340 | 343 | ||
341 | if( indexLine.find( target,0,FALSE) > 0 ) { | 344 | if( indexLine.find( target,0,FALSE) > 0 ) { |
342 | findCheck = TRUE; | 345 | findCheck = TRUE; |
343 | title = indexLine.mid( 9, 50); | 346 | title = indexLine.mid( 9, 50); |
344 | // title = indexLine.mid( 26, indexLine.length() ); | 347 | // title = indexLine.mid( 26, indexLine.length() ); |
345 | title = title.stripWhiteSpace (); | 348 | title = title.stripWhiteSpace (); |
346 | // qDebug("Finally Found the title and it is\n %s", title.latin1()); | 349 | // odebug << "Finally Found the title and it is\n " << title << "" << oendl; |
347 | // QListBox_1->insertItem ( title); | 350 | // QListBox_1->insertItem ( title); |
348 | } | 351 | } |
349 | } //end while loop | 352 | } //end while loop |
350 | } | 353 | } |
351 | else | 354 | else |
352 | qDebug("Error opening library index "+ local_index); | 355 | odebug << "Error opening library index "+ local_index << oendl; |
353 | return title; | 356 | return title; |
354 | } | 357 | } |
355 | 358 | ||
356 | bool OpenEtext::checkConf() | 359 | bool OpenEtext::checkConf() |
357 | { | 360 | { |
358 | QString file = fileName; | 361 | QString file = fileName; |
359 | Config config("Gutenbrowser"); | 362 | Config config("Gutenbrowser"); |
360 | config.setGroup( "Files" ); | 363 | config.setGroup( "Files" ); |
361 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); | 364 | QString s_numofFiles = config.readEntry("NumberOfFiles", "0" ); |
362 | int i_numofFiles = s_numofFiles.toInt(); | 365 | int i_numofFiles = s_numofFiles.toInt(); |
363 | 366 | ||
364 | for (int i = 1; i <= i_numofFiles; i++) { | 367 | for (int i = 1; i <= i_numofFiles; i++) { |
365 | QString temp; | 368 | QString temp; |
366 | temp.setNum(i); | 369 | temp.setNum(i); |
367 | config.setGroup( "Files"); | 370 | config.setGroup( "Files"); |
368 | QString ramble = config.readEntry(temp, "" ); | 371 | QString ramble = config.readEntry(temp, "" ); |
369 | 372 | ||
370 | if(ramble == file ) { | 373 | if(ramble == file ) { |
371 | return true; | 374 | return true; |
372 | } | 375 | } |
373 | } | 376 | } |
374 | return false; | 377 | return false; |
375 | } | 378 | } |
376 | 379 | ||
377 | void OpenEtext::remove() | 380 | void OpenEtext::remove() |
378 | { | 381 | { |
379 | title_text = QListBox_1->text( QListBox_1->currentItem() ); | 382 | title_text = QListBox_1->text( QListBox_1->currentItem() ); |
380 | title_text=title_text.stripWhiteSpace(); | 383 | title_text=title_text.stripWhiteSpace(); |
381 | QString msg ="<p>Do you really want to REMOVE\n" +title_text +"?\nThis will not delete the file.</P>"; | 384 | QString msg ="<p>Do you really want to REMOVE\n" +title_text +"?\nThis will not delete the file.</P>"; |
382 | switch( QMessageBox::information( this, (tr("Remove Etext")), | 385 | switch( QMessageBox::information( this, (tr("Remove Etext")), |
383 | (tr(msg)), | 386 | (tr(msg)), |
384 | (tr("&Yes")), (tr("&Cancel")), 0 )){ | 387 | (tr("&Yes")), (tr("&Cancel")), 0 )){ |
385 | case 0: // Yes clicked, | 388 | case 0: // Yes clicked, |
386 | removeSelection(); | 389 | removeSelection(); |
387 | QListBox_1->clear(); | 390 | QListBox_1->clear(); |
388 | getTitles(); | 391 | getTitles(); |
389 | break; | 392 | break; |
390 | case 1: // Cancel | 393 | case 1: // Cancel |
391 | break; | 394 | break; |
392 | }; | 395 | }; |
393 | } | 396 | } |
394 | 397 | ||
395 | /* | 398 | /* |
396 | this removes selected title entry*/ | 399 | this removes selected title entry*/ |
397 | void OpenEtext::removeSelection() | 400 | void OpenEtext::removeSelection() |
398 | { | 401 | { |
399 | Config config("Gutenbrowser"); | 402 | Config config("Gutenbrowser"); |
400 | config.setGroup( "Files" ); | 403 | config.setGroup( "Files" ); |
401 | s_numofFiles = config.readEntry("NumberOfFiles", "0"); | 404 | s_numofFiles = config.readEntry("NumberOfFiles", "0"); |
402 | int rem=0; | 405 | int rem=0; |
403 | int i_numofFiles = s_numofFiles.toInt(); | 406 | int i_numofFiles = s_numofFiles.toInt(); |
404 | QString fileNum2; | 407 | QString fileNum2; |
405 | QString fileNum; | 408 | QString fileNum; |
406 | 409 | ||
407 | for (int i = 1; i <= i_numofFiles; i++) { | 410 | for (int i = 1; i <= i_numofFiles; i++) { |
408 | fileNum.setNum(i); | 411 | fileNum.setNum(i); |
409 | config.setGroup( "Files" ); | 412 | config.setGroup( "Files" ); |
410 | 413 | ||
411 | QString s_filename = config.readEntry(fileNum, "" ); | 414 | QString s_filename = config.readEntry(fileNum, "" ); |
412 | config.setGroup( "Titles" ); | 415 | config.setGroup( "Titles" ); |
413 | 416 | ||
414 | QString file_title = config.readEntry( s_filename, ""); | 417 | QString file_title = config.readEntry( s_filename, ""); |
415 | if(title_text == file_title) { | 418 | if(title_text == file_title) { |
416 | rem=i; | 419 | rem=i; |
417 | //qDebug("file title to remove is "+file_title); | 420 | //odebug << "file title to remove is "+file_title << oendl; |
418 | selFile = s_filename; | 421 | selFile = s_filename; |
419 | config.removeEntry( s_filename); //removes file=title | 422 | config.removeEntry( s_filename); //removes file=title |
420 | } | 423 | } |
421 | } | 424 | } |
422 | config.setGroup( "Files" ); | 425 | config.setGroup( "Files" ); |
423 | 426 | ||
424 | for(int fg = rem; fg < i_numofFiles ; fg++ ) { //this rewrites Files number entry | 427 | for(int fg = rem; fg < i_numofFiles ; fg++ ) { //this rewrites Files number entry |
425 | fileNum.setNum(fg); | 428 | fileNum.setNum(fg); |
426 | fileNum2.setNum( fg + 1); | 429 | fileNum2.setNum( fg + 1); |
427 | 430 | ||
428 | QString s_filename2 = config.readEntry(fileNum2, "" ); | 431 | QString s_filename2 = config.readEntry(fileNum2, "" ); |
429 | 432 | ||
430 | if (!s_filename2.isEmpty()) { | 433 | if (!s_filename2.isEmpty()) { |
431 | config.writeEntry(fileNum, s_filename2 ); | 434 | config.writeEntry(fileNum, s_filename2 ); |
432 | } | 435 | } |
433 | } | 436 | } |
434 | config.writeEntry("NumberOfFiles", i_numofFiles - 1 ); | 437 | config.writeEntry("NumberOfFiles", i_numofFiles - 1 ); |
435 | config.removeEntry(fileNum2); | 438 | config.removeEntry(fileNum2); |
436 | // remFile(); | 439 | // remFile(); |
437 | } | 440 | } |
438 | 441 | ||
439 | /* | 442 | /* |
440 | removes file title name from list and config file*/ | 443 | removes file title name from list and config file*/ |
441 | void OpenEtext::remFile() | 444 | void OpenEtext::remFile() |
442 | { | 445 | { |
443 | Config config("Gutenbrowser"); | 446 | Config config("Gutenbrowser"); |
444 | config.setGroup( "Files" ); | 447 | config.setGroup( "Files" ); |
445 | QString remFile; | 448 | QString remFile; |
446 | s_numofFiles = config.readEntry("NumberOfFiles", "0"); | 449 | s_numofFiles = config.readEntry("NumberOfFiles", "0"); |
447 | int i_numofFiles = s_numofFiles.toInt(); | 450 | int i_numofFiles = s_numofFiles.toInt(); |
448 | for (int i = 1; i <= i_numofFiles; i++) { | 451 | for (int i = 1; i <= i_numofFiles; i++) { |
449 | QString fileNum; | 452 | QString fileNum; |
450 | fileNum.setNum(i); | 453 | fileNum.setNum(i); |
451 | QString s_filename = config.readEntry(fileNum, "" ); | 454 | QString s_filename = config.readEntry(fileNum, "" ); |
452 | 455 | ||
453 | if( s_filename == selFile) { | 456 | if( s_filename == selFile) { |
454 | config.removeEntry(selFile); | 457 | config.removeEntry(selFile); |
455 | 458 | ||
456 | for(int fg = i_numofFiles - i; fg < i_numofFiles ; fg++ ) { //this rewrites Files number entry | 459 | for(int fg = i_numofFiles - i; fg < i_numofFiles ; fg++ ) { //this rewrites Files number entry |
457 | QString fileNum2; | 460 | QString fileNum2; |
458 | fileNum2.setNum( fg + 1); | 461 | fileNum2.setNum( fg + 1); |
459 | QString s_filename2 = config.readEntry(fileNum2, "" ); | 462 | QString s_filename2 = config.readEntry(fileNum2, "" ); |
460 | 463 | ||
461 | if (!s_filename2.isEmpty()) { | 464 | if (!s_filename2.isEmpty()) { |
462 | config.writeEntry(fileNum, s_filename2 ); | 465 | config.writeEntry(fileNum, s_filename2 ); |
463 | } | 466 | } |
464 | } | 467 | } |
465 | } | 468 | } |
466 | } | 469 | } |
467 | config.writeEntry("NumberOfFiles", i_numofFiles - 1 ); | 470 | config.writeEntry("NumberOfFiles", i_numofFiles - 1 ); |
468 | config.removeEntry(s_numofFiles); | 471 | config.removeEntry(s_numofFiles); |
469 | 472 | ||
470 | QListBox_1->triggerUpdate(true); | 473 | QListBox_1->triggerUpdate(true); |
471 | } | 474 | } |
472 | 475 | ||
473 | /* | 476 | /* |
474 | sorts the list*/ | 477 | sorts the list*/ |
475 | void OpenEtext::scan() { | 478 | void OpenEtext::scan() { |
476 | 479 | ||
477 | QListBox_1->sort(TRUE); | 480 | QListBox_1->sort(TRUE); |
478 | QListBox_1->triggerUpdate(true); | 481 | QListBox_1->triggerUpdate(true); |
479 | } | 482 | } |
480 | 483 | ||
481 | void OpenEtext::editTitle() { | 484 | void OpenEtext::editTitle() { |
482 | 485 | ||
483 | int currentItem=QListBox_1->currentItem(); | 486 | int currentItem=QListBox_1->currentItem(); |
484 | QString title_text = QListBox_1->text( currentItem); | 487 | QString title_text = QListBox_1->text( currentItem); |
485 | //qDebug("Selected "+title_text); | 488 | //odebug << "Selected "+title_text << oendl; |
486 | 489 | ||
487 | Config config("Gutenbrowser"); | 490 | Config config("Gutenbrowser"); |
488 | config.setGroup( "Files" ); | 491 | config.setGroup( "Files" ); |
489 | s_numofFiles = config.readEntry("NumberOfFiles", "0"); | 492 | s_numofFiles = config.readEntry("NumberOfFiles", "0"); |
490 | int i_numofFiles = s_numofFiles.toInt(); | 493 | int i_numofFiles = s_numofFiles.toInt(); |
491 | QString fileNum; | 494 | QString fileNum; |
492 | for (int i = 1; i <= i_numofFiles+1; i++) { | 495 | for (int i = 1; i <= i_numofFiles+1; i++) { |
493 | 496 | ||
494 | fileNum.setNum(i); | 497 | fileNum.setNum(i); |
495 | config.setGroup( "Files" ); | 498 | config.setGroup( "Files" ); |
496 | QString s_filename = config.readEntry(fileNum, "" ); | 499 | QString s_filename = config.readEntry(fileNum, "" ); |
497 | config.setGroup( "Titles" ); | 500 | config.setGroup( "Titles" ); |
498 | QString file_title = config.readEntry( s_filename, ""); | 501 | QString file_title = config.readEntry( s_filename, ""); |
499 | //qDebug("file_title is "+file_title); | 502 | //odebug << "file_title is "+file_title << oendl; |
500 | if(title_text == file_title ) { | 503 | if(title_text == file_title ) { |
501 | selFile = s_filename; | 504 | selFile = s_filename; |
502 | //qDebug("Edit: "+ file_title ); | 505 | //odebug << "Edit: "+ file_title << oendl; |
503 | i=i_numofFiles+1; | 506 | i=i_numofFiles+1; |
504 | Edit_Title *titleEdit; | 507 | Edit_Title *titleEdit; |
505 | titleEdit = new Edit_Title(this,file_title ,TRUE); | 508 | titleEdit = new Edit_Title(this,file_title ,TRUE); |
506 | if(titleEdit->exec() !=0) { | 509 | if(titleEdit->exec() !=0) { |
507 | //qDebug(titleEdit->newTitle); | 510 | //odebug << titleEdit->newTitle << oendl; |
508 | config.writeEntry( s_filename, titleEdit->newTitle); | 511 | config.writeEntry( s_filename, titleEdit->newTitle); |
509 | QListBox_1->removeItem(currentItem); | 512 | QListBox_1->removeItem(currentItem); |
510 | QListBox_1->insertItem ( QPixmap( QPEApplication::qpeDir()+"pics/gutenbrowser/gutenbrowser_sm.png"), titleEdit->newTitle, currentItem); | 513 | QListBox_1->insertItem ( QPixmap( QPEApplication::qpeDir()+"pics/gutenbrowser/gutenbrowser_sm.png"), titleEdit->newTitle, currentItem); |
511 | } | 514 | } |
512 | } | 515 | } |
513 | } | 516 | } |
514 | 517 | ||
515 | // getTitles(); | 518 | // getTitles(); |
516 | QListBox_1->triggerUpdate(true); | 519 | QListBox_1->triggerUpdate(true); |
517 | } | 520 | } |
518 | 521 | ||
diff --git a/noncore/apps/opie-gutenbrowser/optionsDialog.cpp b/noncore/apps/opie-gutenbrowser/optionsDialog.cpp index bfd9c26..8cc83da 100644 --- a/noncore/apps/opie-gutenbrowser/optionsDialog.cpp +++ b/noncore/apps/opie-gutenbrowser/optionsDialog.cpp | |||
@@ -1,207 +1,215 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | optionsDialog.cpp - description | 2 | optionsDialog.cpp - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Tue Jul 25 2000 | 4 | begin : Tue Jul 25 2000 |
5 | copyright : (C) 2000 -2004 by llornkcor | 5 | copyright : (C) 2000 -2004 by llornkcor |
6 | email : ljp@llornkcor.com | 6 | email : ljp@llornkcor.com |
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | /*************************************************************************** | 8 | /*************************************************************************** |
9 | * * | 9 | * * |
10 | * This program is free software; you can redistribute it and/or modify * | 10 | * This program is free software; you can redistribute it and/or modify * |
11 | * it under the terms of the GNU General Public License as published by * | 11 | * it under the terms of the GNU General Public License as published by * |
12 | * the Free Software Foundation; either version 2 of the License, or * | 12 | * the Free Software Foundation; either version 2 of the License, or * |
13 | * (at your option) any later version. * | 13 | * (at your option) any later version. * |
14 | * * | 14 | * * |
15 | ***************************************************************************/ | 15 | ***************************************************************************/ |
16 | #include "optionsDialog.h" | ||
17 | #include <qpe/config.h> | ||
18 | #include "fontDialog.h" | ||
19 | 16 | ||
20 | // #include <unistd.h> | ||
21 | // #include <stdio.h> | ||
22 | // #include <stdlib.h> | ||
23 | 17 | ||
18 | #include "optionsDialog.h" | ||
19 | #include "fontDialog.h" | ||
24 | //#include "ftpsitedlg.h" | 20 | //#include "ftpsitedlg.h" |
25 | //#include "browserDialog.h" | 21 | //#include "browserDialog.h" |
26 | //#define Inherited QDialog | 22 | //#define Inherited QDialog |
23 | |||
24 | /* OPIE */ | ||
25 | #include <opie2/odebug.h> | ||
26 | #include <qpe/config.h> | ||
27 | |||
28 | /* QT */ | ||
27 | #include <qfont.h> | 29 | #include <qfont.h> |
28 | #include <qcheckbox.h> | 30 | #include <qcheckbox.h> |
29 | #include <qcombobox.h> | 31 | #include <qcombobox.h> |
30 | #include <qlabel.h> | 32 | #include <qlabel.h> |
31 | #include <qlistbox.h> | 33 | #include <qlistbox.h> |
32 | #include <qpushbutton.h> | 34 | #include <qpushbutton.h> |
33 | #include <qtabwidget.h> | 35 | #include <qtabwidget.h> |
34 | #include <qwidget.h> | 36 | #include <qwidget.h> |
35 | #include <qlayout.h> | 37 | #include <qlayout.h> |
36 | #include <qvariant.h> | 38 | #include <qvariant.h> |
37 | #include <qtooltip.h> | 39 | #include <qtooltip.h> |
38 | #ifndef Q_WS_QWS | 40 | #ifndef Q_WS_QWS |
39 | #include <qwhatsthis.h> | 41 | #include <qwhatsthis.h> |
40 | #endif | 42 | #endif |
43 | |||
44 | /* STD */ | ||
45 | // #include <unistd.h> | ||
46 | // #include <stdio.h> | ||
47 | // #include <stdlib.h> | ||
48 | |||
41 | /* | 49 | /* |
42 | * The dialog will by default be modeless, unless you set 'modal' to | 50 | * The dialog will by default be modeless, unless you set 'modal' to |
43 | * TRUE to construct a modal dialog. | 51 | * TRUE to construct a modal dialog. |
44 | */ | 52 | */ |
45 | optionsDialog::optionsDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) | 53 | optionsDialog::optionsDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) |
46 | : QDialog( parent, name, modal, fl ) | 54 | : QDialog( parent, name, modal, fl ) |
47 | { | 55 | { |
48 | if ( !name ) | 56 | if ( !name ) |
49 | setName( "optionsDialog" ); | 57 | setName( "optionsDialog" ); |
50 | changedFonts=FALSE; | 58 | changedFonts=FALSE; |
51 | // styleChanged=FALSE; | 59 | // styleChanged=FALSE; |
52 | // connect( this,SIGNAL( aboutToQuit()),SLOT( OnExit()) ); | 60 | // connect( this,SIGNAL( aboutToQuit()),SLOT( OnExit()) ); |
53 | b_qExit=TRUE; | 61 | b_qExit=TRUE; |
54 | initDialog(); | 62 | initDialog(); |
55 | 63 | ||
56 | ftpSiteDlg(); | 64 | ftpSiteDlg(); |
57 | BrowserDlg(); | 65 | BrowserDlg(); |
58 | FontDialog(); | 66 | FontDialog(); |
59 | } | 67 | } |
60 | 68 | ||
61 | optionsDialog::~optionsDialog() | 69 | optionsDialog::~optionsDialog() |
62 | { | 70 | { |
63 | //qDebug("OnExit()"); | 71 | //odebug << "OnExit()" << oendl; |
64 | // writeConfig(); | 72 | // writeConfig(); |
65 | } | 73 | } |
66 | 74 | ||
67 | /// optionsDialog | 75 | /// optionsDialog |
68 | void optionsDialog::doOptions() { | 76 | void optionsDialog::doOptions() { |
69 | 77 | ||
70 | // config.read(); | 78 | // config.read(); |
71 | getConfig(); | 79 | getConfig(); |
72 | } | 80 | } |
73 | 81 | ||
74 | void optionsDialog::getConfig() | 82 | void optionsDialog::getConfig() |
75 | { | 83 | { |
76 | Config config("Gutenbrowser"); | 84 | Config config("Gutenbrowser"); |
77 | config.setGroup( "FTPsite" ); // ftp server config | 85 | config.setGroup( "FTPsite" ); // ftp server config |
78 | ftp_host=config.readEntry("SiteName", "sailor.gutenberg.org"); | 86 | ftp_host=config.readEntry("SiteName", "sailor.gutenberg.org"); |
79 | ftp_base_dir= config.readEntry("base", "/pub/gutenberg"); | 87 | ftp_base_dir= config.readEntry("base", "/pub/gutenberg"); |
80 | 88 | ||
81 | TextLabel3->setText( "Current ftp server:\n"+ftp_host/* + ftp_base_dir */); | 89 | TextLabel3->setText( "Current ftp server:\n"+ftp_host/* + ftp_base_dir */); |
82 | 90 | ||
83 | config.setGroup( "Proxy" ); // use ftp/http config | 91 | config.setGroup( "Proxy" ); // use ftp/http config |
84 | if( config.readEntry("IsChecked", "FALSE") == "TRUE") { | 92 | if( config.readEntry("IsChecked", "FALSE") == "TRUE") { |
85 | Ftp_CheckBox->setChecked( FALSE); | 93 | Ftp_CheckBox->setChecked( FALSE); |
86 | } else { | 94 | } else { |
87 | Ftp_CheckBox->setChecked( TRUE); | 95 | Ftp_CheckBox->setChecked( TRUE); |
88 | } | 96 | } |
89 | 97 | ||
90 | config.setGroup( "HttpServer" ); | 98 | config.setGroup( "HttpServer" ); |
91 | QString s_http = config.readEntry("Preferred", "http://sailor.gutenbook.org"); | 99 | QString s_http = config.readEntry("Preferred", "http://sailor.gutenbook.org"); |
92 | if( s_http == "http://sailor.gutenbook.org") | 100 | if( s_http == "http://sailor.gutenbook.org") |
93 | ComboBox1->setCurrentItem(0); | 101 | ComboBox1->setCurrentItem(0); |
94 | else | 102 | else |
95 | ComboBox1->setCurrentItem(1); | 103 | ComboBox1->setCurrentItem(1); |
96 | 104 | ||
97 | config.setGroup( "Browser" ); | 105 | config.setGroup( "Browser" ); |
98 | brow = config.readEntry("Preferred", "Opera"); | 106 | brow = config.readEntry("Preferred", "Opera"); |
99 | browserName=brow; | 107 | browserName=brow; |
100 | 108 | ||
101 | TextLabel3_3->setText( "Current http browser:\n"+brow ); | 109 | TextLabel3_3->setText( "Current http browser:\n"+brow ); |
102 | 110 | ||
103 | config.setGroup( "Geometry" ); | 111 | config.setGroup( "Geometry" ); |
104 | 112 | ||
105 | // bool ok2; | 113 | // bool ok2; |
106 | QString temp; | 114 | QString temp; |
107 | // config.setGroup( "StyleIze" ); | 115 | // config.setGroup( "StyleIze" ); |
108 | // temp = config.readEntry( "Style", "0"); | 116 | // temp = config.readEntry( "Style", "0"); |
109 | // int i_style=temp.toInt( &ok2,10); | 117 | // int i_style=temp.toInt( &ok2,10); |
110 | // #ifndef Q_WS_QWS | 118 | // #ifndef Q_WS_QWS |
111 | 119 | ||
112 | // if( i_style==0){ styleInt=0; ComboBoxStyle->setCurrentItem(0);}//"styleMetal")); | 120 | // if( i_style==0){ styleInt=0; ComboBoxStyle->setCurrentItem(0);}//"styleMetal")); |
113 | // if( i_style==1) { styleInt=1; ComboBoxStyle->setCurrentItem(1);}//"styleWindows") ); | 121 | // if( i_style==1) { styleInt=1; ComboBoxStyle->setCurrentItem(1);}//"styleWindows") ); |
114 | // if( i_style==2) { styleInt=2; ComboBoxStyle->setCurrentItem(2);}//"stylePlatinum")); | 122 | // if( i_style==2) { styleInt=2; ComboBoxStyle->setCurrentItem(2);}//"stylePlatinum")); |
115 | // if( i_style==2){ styleInt=2; ComboBoxStyle->setCurrentItem(2);}//"styleCDE") ); | 123 | // if( i_style==2){ styleInt=2; ComboBoxStyle->setCurrentItem(2);}//"styleCDE") ); |
116 | // if( i_style==3) { styleInt=3; ComboBoxStyle->setCurrentItem(3);}//"styleMotif") ); | 124 | // if( i_style==3) { styleInt=3; ComboBoxStyle->setCurrentItem(3);}//"styleMotif") ); |
117 | // if( i_style==4) { styleInt=4; ComboBoxStyle->setCurrentItem(4);}//"styleMotifPlus")); | 125 | // if( i_style==4) { styleInt=4; ComboBoxStyle->setCurrentItem(4);}//"styleMotifPlus")); |
118 | // // if( i_style==5) { styleInt=5; ComboBoxStyle->setCurrentItem(5);}//"styleWood") ); | 126 | // // if( i_style==5) { styleInt=5; ComboBoxStyle->setCurrentItem(5);}//"styleWood") ); |
119 | // if( i_style==6) { styleInt=6; ComboBoxStyle->setCurrentItem(6);}//"styleSgi") ); | 127 | // if( i_style==6) { styleInt=6; ComboBoxStyle->setCurrentItem(6);}//"styleSgi") ); |
120 | // if( i_style==7) { styleInt=7; ComboBoxStyle->setCurrentItem(7);}//"stylePlatinumPlus") ); | 128 | // if( i_style==7) { styleInt=7; ComboBoxStyle->setCurrentItem(7);}//"stylePlatinumPlus") ); |
121 | // if( i_style==9){ styleInt=9; ComboBoxStyle->setCurrentItem(9);}//"styleLace")); | 129 | // if( i_style==9){ styleInt=9; ComboBoxStyle->setCurrentItem(9);}//"styleLace")); |
122 | // if( i_style==10){ styleInt=10; ComboBoxStyle->setCurrentItem(10);}//"styleLacePlus")); | 130 | // if( i_style==10){ styleInt=10; ComboBoxStyle->setCurrentItem(10);}//"styleLacePlus")); |
123 | // #endif | 131 | // #endif |
124 | config.setGroup("General"); | 132 | config.setGroup("General"); |
125 | QString qExit=config.readEntry("queryExit","TRUE"); | 133 | QString qExit=config.readEntry("queryExit","TRUE"); |
126 | if(qExit=="TRUE") { | 134 | if(qExit=="TRUE") { |
127 | cb_queryExit->setChecked(TRUE); | 135 | cb_queryExit->setChecked(TRUE); |
128 | qDebug("Config Setting b_qExit=TRUE;"); | 136 | odebug << "Config Setting b_qExit=TRUE;" << oendl; |
129 | b_qExit=TRUE; | 137 | b_qExit=TRUE; |
130 | } else { | 138 | } else { |
131 | cb_queryExit->setChecked(FALSE); | 139 | cb_queryExit->setChecked(FALSE); |
132 | qDebug("ConfigSetting b_qExit=FALSE;"); | 140 | odebug << "ConfigSetting b_qExit=FALSE;" << oendl; |
133 | b_qExit=FALSE; | 141 | b_qExit=FALSE; |
134 | } | 142 | } |
135 | 143 | ||
136 | 144 | ||
137 | useWordWrap_CheckBox->setChecked( config.readBoolEntry("WordWrap", 1)); | 145 | useWordWrap_CheckBox->setChecked( config.readBoolEntry("WordWrap", 1)); |
138 | QString downDir=config.readEntry( "DownloadDirectory",local_library); | 146 | QString downDir=config.readEntry( "DownloadDirectory",local_library); |
139 | downloadDirEdit->setText(downDir); | 147 | downloadDirEdit->setText(downDir); |
140 | } // end getConfig | 148 | } // end getConfig |
141 | 149 | ||
142 | // // void optionsDialog::setStyle( int index) { | 150 | // // void optionsDialog::setStyle( int index) { |
143 | 151 | ||
144 | // // qDebug("Set style%d",index); | 152 | // // odebug << "Set style" << index << "" << oendl; |
145 | // // //int styleInt= index; | 153 | // // //int styleInt= index; |
146 | // // styleChanged=TRUE; | 154 | // // styleChanged=TRUE; |
147 | // // if( ComboBoxStyle->currentItem()==0) styleInt=0;//"styleMetal")); | 155 | // // if( ComboBoxStyle->currentItem()==0) styleInt=0;//"styleMetal")); |
148 | // // if( ComboBoxStyle->currentItem()==1) styleInt=1;//"styleWindows") ); | 156 | // // if( ComboBoxStyle->currentItem()==1) styleInt=1;//"styleWindows") ); |
149 | // // if( ComboBoxStyle->currentItem()==2) styleInt=2;//"stylePlatinum")); | 157 | // // if( ComboBoxStyle->currentItem()==2) styleInt=2;//"stylePlatinum")); |
150 | // // // if( ComboBoxStyle->currentItem()==2) styleInt=2;//"styleCDE") ); | 158 | // // // if( ComboBoxStyle->currentItem()==2) styleInt=2;//"styleCDE") ); |
151 | // // // if( ComboBoxStyle->currentItem()==3) styleInt=3;//"styleMotif") ); | 159 | // // // if( ComboBoxStyle->currentItem()==3) styleInt=3;//"styleMotif") ); |
152 | // // // if( ComboBoxStyle->currentItem()==4) styleInt=4;//"styleMotifPlus")); | 160 | // // // if( ComboBoxStyle->currentItem()==4) styleInt=4;//"styleMotifPlus")); |
153 | // // // // if( ComboBoxStyle->currentItem()==5) styleInt=5;//"styleWood") ); | 161 | // // // // if( ComboBoxStyle->currentItem()==5) styleInt=5;//"styleWood") ); |
154 | // // // if( ComboBoxStyle->currentItem()==6) styleInt=6;//"styleSgi") ); | 162 | // // // if( ComboBoxStyle->currentItem()==6) styleInt=6;//"styleSgi") ); |
155 | // // // if( ComboBoxStyle->currentItem()==7) styleInt=7;//"stylePlatinumPlus") ); | 163 | // // // if( ComboBoxStyle->currentItem()==7) styleInt=7;//"stylePlatinumPlus") ); |
156 | // // // if( ComboBoxStyle->currentItem()==9) styleInt=9;//"styleLace")); | 164 | // // // if( ComboBoxStyle->currentItem()==9) styleInt=9;//"styleLace")); |
157 | // // // if( ComboBoxStyle->currentItem()==10) styleInt=10;//"styleLacePlus")); | 165 | // // // if( ComboBoxStyle->currentItem()==10) styleInt=10;//"styleLacePlus")); |
158 | // // QString temp; | 166 | // // QString temp; |
159 | // // temp.setNum(styleInt, 10); | 167 | // // temp.setNum(styleInt, 10); |
160 | // // Config config("Gutenbrowser"); | 168 | // // Config config("Gutenbrowser"); |
161 | // // config.setGroup( "StyleIze" ); | 169 | // // config.setGroup( "StyleIze" ); |
162 | // // config.writeEntry( "Style", temp); | 170 | // // config.writeEntry( "Style", temp); |
163 | // // config.write(); | 171 | // // config.write(); |
164 | // // } | 172 | // // } |
165 | 173 | ||
166 | void optionsDialog::slotQueryExit() | 174 | void optionsDialog::slotQueryExit() |
167 | { | 175 | { |
168 | Config config("Gutenbrowser"); | 176 | Config config("Gutenbrowser"); |
169 | config.setGroup("General"); | 177 | config.setGroup("General"); |
170 | qDebug("writing queryExit"); | 178 | odebug << "writing queryExit" << oendl; |
171 | if(cb_queryExit->isChecked()) { | 179 | if(cb_queryExit->isChecked()) { |
172 | b_qExit=TRUE; | 180 | b_qExit=TRUE; |
173 | config.writeEntry("queryExit","TRUE"); | 181 | config.writeEntry("queryExit","TRUE"); |
174 | qDebug("WritingConfig queryExit=TRUE"); | 182 | odebug << "WritingConfig queryExit=TRUE" << oendl; |
175 | } else { | 183 | } else { |
176 | b_qExit=FALSE; | 184 | b_qExit=FALSE; |
177 | config.writeEntry("queryExit","FALSE"); | 185 | config.writeEntry("queryExit","FALSE"); |
178 | qDebug("WritingConfig queryExit=FALSE"); | 186 | odebug << "WritingConfig queryExit=FALSE" << oendl; |
179 | } | 187 | } |
180 | config.write(); | 188 | config.write(); |
181 | } | 189 | } |
182 | 190 | ||
183 | 191 | ||
184 | // void optionsDialog::slotUseSplit() | 192 | // void optionsDialog::slotUseSplit() |
185 | // { | 193 | // { |
186 | 194 | ||
187 | // } | 195 | // } |
188 | 196 | ||
189 | // void optionsDialog::lineEditChanged(const QString &editText) { | 197 | // void optionsDialog::lineEditChanged(const QString &editText) { |
190 | // qDebug(editText); | 198 | // odebug << editText << oendl; |
191 | // } | 199 | // } |
192 | 200 | ||
193 | void optionsDialog::changeFonts() | 201 | void optionsDialog::changeFonts() |
194 | { | 202 | { |
195 | changedFonts=TRUE; | 203 | changedFonts=TRUE; |
196 | } | 204 | } |
197 | 205 | ||
198 | 206 | ||
199 | void optionsDialog::slotWordWrap(bool b) { | 207 | void optionsDialog::slotWordWrap(bool b) { |
200 | 208 | ||
201 | Config config("Gutenbrowser"); | 209 | Config config("Gutenbrowser"); |
202 | config.setGroup("General"); | 210 | config.setGroup("General"); |
203 | 211 | ||
204 | config.writeEntry("WordWrap", b); | 212 | config.writeEntry("WordWrap", b); |
205 | config.write(); | 213 | config.write(); |
206 | 214 | ||
207 | } | 215 | } |
diff --git a/noncore/apps/opie-reader/Aportis.cpp b/noncore/apps/opie-reader/Aportis.cpp index 2f8cdc3..06f44a4 100644 --- a/noncore/apps/opie-reader/Aportis.cpp +++ b/noncore/apps/opie-reader/Aportis.cpp | |||
@@ -1,374 +1,374 @@ | |||
1 | #include <stdio.h> | 1 | #include <stdio.h> |
2 | #include <string.h> | 2 | #include <string.h> |
3 | #include "Aportis.h" | 3 | #include "Aportis.h" |
4 | #include "my_list.h" | 4 | #include "my_list.h" |
5 | #include "Bkmks.h" | 5 | #include "Bkmks.h" |
6 | 6 | ||
7 | Aportis::Aportis() : peanutfile(false) { /*printf("constructing:%x\n",fin);*/ } | 7 | Aportis::Aportis() : peanutfile(false) { /*printf("constructing:%x\n",fin);*/ } |
8 | 8 | ||
9 | void Aportis::dePeanut(int& ch) | 9 | void Aportis::dePeanut(int& ch) |
10 | { | 10 | { |
11 | if (peanutfile && ch != EOF) | 11 | if (peanutfile && ch != EOF) |
12 | { | 12 | { |
13 | unsigned char c = ch; | 13 | unsigned char c = ch; |
14 | if (peanutfile) c ^= 0xa5; | 14 | if (peanutfile) c ^= 0xa5; |
15 | ch = c; | 15 | ch = c; |
16 | } | 16 | } |
17 | } | 17 | } |
18 | 18 | ||
19 | CList<Bkmk>* Aportis::getbkmklist() | 19 | CList<Bkmk>* Aportis::getbkmklist() |
20 | { | 20 | { |
21 | /* | 21 | /* |
22 | if (peanutfile) | 22 | if (peanutfile) |
23 | { | 23 | { |
24 | if (nRecs2 > nRecs) | 24 | if (nRecs2 > nRecs) |
25 | { | 25 | { |
26 | CList<Bkmk>* t = new CList<Bkmk>; | 26 | CList<Bkmk>* t = new CList<Bkmk>; |
27 | for (int i = nRecs; i < nRecs2; i++) | 27 | for (int i = nRecs; i < nRecs2; i++) |
28 | { | 28 | { |
29 | char name[17]; | 29 | char name[17]; |
30 | name[16] = '\0'; | 30 | name[16] = '\0'; |
31 | // qDebug("Record:%d, Length:%u",i,recordlength(i)); | 31 | // odebug << "Record:" << i << ", Length:" << recordlength(i) << "" << oendl; |
32 | gotorecordnumber(i); | 32 | gotorecordnumber(i); |
33 | fread(name,1,16,fin); | 33 | fread(name,1,16,fin); |
34 | unsigned long lcn; | 34 | unsigned long lcn; |
35 | fread(&lcn,sizeof(lcn),1,fin); | 35 | fread(&lcn,sizeof(lcn),1,fin); |
36 | lcn ^= 0xa5a5a5a5; | 36 | lcn ^= 0xa5a5a5a5; |
37 | lcn = SwapLong(lcn); | 37 | lcn = SwapLong(lcn); |
38 | // qDebug("Bookmark:%s:%u", name,lcn); | 38 | // odebug << "Bookmark:" << name << ":" << lcn << "" << oendl; |
39 | tchar tname[17]; | 39 | tchar tname[17]; |
40 | memset(tname, 0, sizeof(tname)); | 40 | memset(tname, 0, sizeof(tname)); |
41 | for (int i = 0; name[i] != 0; i++) | 41 | for (int i = 0; name[i] != 0; i++) |
42 | { | 42 | { |
43 | tname[i] = name[i] ^ 0xa5; | 43 | tname[i] = name[i] ^ 0xa5; |
44 | } | 44 | } |
45 | t->push_back(Bkmk(tname, NULL, lcn)); | 45 | t->push_back(Bkmk(tname, NULL, lcn)); |
46 | } | 46 | } |
47 | return t; | 47 | return t; |
48 | } | 48 | } |
49 | else | 49 | else |
50 | { | 50 | { |
51 | return NULL; | 51 | return NULL; |
52 | } | 52 | } |
53 | } | 53 | } |
54 | */ | 54 | */ |
55 | if (bCompressed != 4) return NULL; | 55 | if (bCompressed != 4) return NULL; |
56 | CList<Bkmk>* t = new CList<Bkmk>; | 56 | CList<Bkmk>* t = new CList<Bkmk>; |
57 | size_t cur = ftell(fin); | 57 | size_t cur = ftell(fin); |
58 | for (int i = 0; i < nRecs2; i++) | 58 | for (int i = 0; i < nRecs2; i++) |
59 | { | 59 | { |
60 | DWORD dwPos; | 60 | DWORD dwPos; |
61 | fseek(fin, 0x56 + 8*i, SEEK_SET); | 61 | fseek(fin, 0x56 + 8*i, SEEK_SET); |
62 | fread(&dwPos, 4, 1, fin); | 62 | fread(&dwPos, 4, 1, fin); |
63 | dwPos = SwapLong(dwPos); | 63 | dwPos = SwapLong(dwPos); |
64 | fseek(fin,dwPos,SEEK_SET); | 64 | fseek(fin,dwPos,SEEK_SET); |
65 | unsigned char ch; | 65 | unsigned char ch; |
66 | fread(&ch,1,1,fin); | 66 | fread(&ch,1,1,fin); |
67 | if (ch != 241) | 67 | if (ch != 241) |
68 | { | 68 | { |
69 | char name[17]; | 69 | char name[17]; |
70 | name[16] = '\0'; | 70 | name[16] = '\0'; |
71 | fseek(fin,dwPos,SEEK_SET); | 71 | fseek(fin,dwPos,SEEK_SET); |
72 | fread(name,1,16,fin); | 72 | fread(name,1,16,fin); |
73 | unsigned long lcn; | 73 | unsigned long lcn; |
74 | fread(&lcn,sizeof(lcn),1,fin); | 74 | fread(&lcn,sizeof(lcn),1,fin); |
75 | lcn = SwapLong(lcn); | 75 | lcn = SwapLong(lcn); |
76 | #ifdef _UNICODE | 76 | #ifdef _UNICODE |
77 | tchar tname[17]; | 77 | tchar tname[17]; |
78 | memset(tname, 0, sizeof(tname)); | 78 | memset(tname, 0, sizeof(tname)); |
79 | for (int i = 0; name[i] != 0; i++) | 79 | for (int i = 0; name[i] != 0; i++) |
80 | { | 80 | { |
81 | tname[i] = name[i]; | 81 | tname[i] = name[i]; |
82 | } | 82 | } |
83 | t->push_back(Bkmk(tname, NULL, lcn)); | 83 | t->push_back(Bkmk(tname, NULL, lcn)); |
84 | #else | 84 | #else |
85 | t->push_back(Bkmk(name,lcn)); | 85 | t->push_back(Bkmk(name,lcn)); |
86 | #endif | 86 | #endif |
87 | } | 87 | } |
88 | } | 88 | } |
89 | fseek(fin, cur, SEEK_SET); | 89 | fseek(fin, cur, SEEK_SET); |
90 | return t; | 90 | return t; |
91 | } | 91 | } |
92 | 92 | ||
93 | int Aportis::OpenFile(const char *src) | 93 | int Aportis::OpenFile(const char *src) |
94 | { | 94 | { |
95 | // printf("In openfile\n"); | 95 | // printf("In openfile\n"); |
96 | int ret = 0; | 96 | int ret = 0; |
97 | 97 | ||
98 | if (!Cpdb::openfile(src)) return -1; | 98 | if (!Cpdb::openfile(src)) return -1; |
99 | 99 | ||
100 | if (head.creator != 0x64414552 // 'dAER' | 100 | if (head.creator != 0x64414552 // 'dAER' |
101 | || head.type != 0x74584554) // 'tXET') | 101 | || head.type != 0x74584554) // 'tXET') |
102 | { | 102 | { |
103 | 103 | ||
104 | if (memcmp(&head.creator, "PPrs", 4) == 0 && memcmp(&head.type, "PNRd", 4) == 0) | 104 | if (memcmp(&head.creator, "PPrs", 4) == 0 && memcmp(&head.type, "PNRd", 4) == 0) |
105 | { | 105 | { |
106 | peanutfile = true; | 106 | peanutfile = true; |
107 | } | 107 | } |
108 | else | 108 | else |
109 | { | 109 | { |
110 | return -2; | 110 | return -2; |
111 | } | 111 | } |
112 | } | 112 | } |
113 | 113 | ||
114 | nRecs2 = nRecs = SwapWord(head.recordList.numRecords) - 1; | 114 | nRecs2 = nRecs = SwapWord(head.recordList.numRecords) - 1; |
115 | fseek(fin,0,SEEK_END); | 115 | fseek(fin,0,SEEK_END); |
116 | dwLen = ftell(fin); | 116 | dwLen = ftell(fin); |
117 | 117 | ||
118 | if (peanutfile) | 118 | if (peanutfile) |
119 | { | 119 | { |
120 | 120 | ||
121 | PeanutHeader hdr0; | 121 | PeanutHeader hdr0; |
122 | gotorecordnumber(0); | 122 | gotorecordnumber(0); |
123 | fread(&hdr0, sizeof(hdr0), 1, fin); | 123 | fread(&hdr0, sizeof(hdr0), 1, fin); |
124 | // qDebug("Version:%x", ntohs(hdr0.Version)); | 124 | // odebug << "Version:" << ntohs(hdr0.Version) << "" << oendl; |
125 | if (hdr0.Version && 0x0200) | 125 | if (hdr0.Version && 0x0200) |
126 | { | 126 | { |
127 | bCompressed = 2; | 127 | bCompressed = 2; |
128 | } | 128 | } |
129 | else | 129 | else |
130 | { | 130 | { |
131 | bCompressed = 1; | 131 | bCompressed = 1; |
132 | } | 132 | } |
133 | BlockSize = 4096; | 133 | BlockSize = 4096; |
134 | nRecs = SwapWord(hdr0.Records)-1; | 134 | nRecs = SwapWord(hdr0.Records)-1; |
135 | dwTLen = nRecs*BlockSize; | 135 | dwTLen = nRecs*BlockSize; |
136 | } | 136 | } |
137 | else | 137 | else |
138 | { | 138 | { |
139 | gotorecordnumber(0); | 139 | gotorecordnumber(0); |
140 | tDocRecord0 hdr0; | 140 | tDocRecord0 hdr0; |
141 | fread(&hdr0, sizeof(hdr0), 1, fin); | 141 | fread(&hdr0, sizeof(hdr0), 1, fin); |
142 | bCompressed = SwapWord(hdr0.wVersion); | 142 | bCompressed = SwapWord(hdr0.wVersion); |
143 | if (bCompressed!=1 && bCompressed!=2 && bCompressed != 4) { | 143 | if (bCompressed!=1 && bCompressed!=2 && bCompressed != 4) { |
144 | ret = bCompressed; | 144 | ret = bCompressed; |
145 | bCompressed = 2; | 145 | bCompressed = 2; |
146 | } | 146 | } |
147 | switch (bCompressed) | 147 | switch (bCompressed) |
148 | { | 148 | { |
149 | case 4: | 149 | case 4: |
150 | { | 150 | { |
151 | dwTLen = 0; | 151 | dwTLen = 0; |
152 | int i; | 152 | int i; |
153 | for (i = 0; i < nRecs; i++) | 153 | for (i = 0; i < nRecs; i++) |
154 | { | 154 | { |
155 | unsigned int bs = GetBS(i); | 155 | unsigned int bs = GetBS(i); |
156 | if (bs == 0) break; | 156 | if (bs == 0) break; |
157 | else dwTLen += bs; | 157 | else dwTLen += bs; |
158 | } | 158 | } |
159 | nRecs = i; | 159 | nRecs = i; |
160 | BlockSize = 0; | 160 | BlockSize = 0; |
161 | } | 161 | } |
162 | break; | 162 | break; |
163 | case 1: | 163 | case 1: |
164 | case 2: | 164 | case 2: |
165 | default: | 165 | default: |
166 | nRecs = SwapWord(hdr0.wNumRecs); | 166 | nRecs = SwapWord(hdr0.wNumRecs); |
167 | dwTLen = SwapLong(hdr0.dwStoryLen); | 167 | dwTLen = SwapLong(hdr0.dwStoryLen); |
168 | BlockSize = SwapWord(hdr0.wRecSize); | 168 | BlockSize = SwapWord(hdr0.wRecSize); |
169 | if (BlockSize == 0) | 169 | if (BlockSize == 0) |
170 | { | 170 | { |
171 | BlockSize = 4096; | 171 | BlockSize = 4096; |
172 | printf("WARNING: Blocksize not set in source file\n"); | 172 | printf("WARNING: Blocksize not set in source file\n"); |
173 | } | 173 | } |
174 | } | 174 | } |
175 | } | 175 | } |
176 | 176 | ||
177 | 177 | ||
178 | 178 | ||
179 | // this is the main record buffer | 179 | // this is the main record buffer |
180 | // it knows how to stretch to accomodate the decompress | 180 | // it knows how to stretch to accomodate the decompress |
181 | currentrec = 0; | 181 | currentrec = 0; |
182 | cbptr = 0; | 182 | cbptr = 0; |
183 | outptr = 0; | 183 | outptr = 0; |
184 | refreshbuffer(); | 184 | refreshbuffer(); |
185 | // qDebug("Number of records:[%u,%u]", nRecs, nRecs2); | 185 | // odebug << "Number of records:[" << nRecs << "," << nRecs2 << "]" << oendl; |
186 | return ret; | 186 | return ret; |
187 | } | 187 | } |
188 | 188 | ||
189 | int Aportis::getch() | 189 | int Aportis::getch() |
190 | { | 190 | { |
191 | if (bCompressed == 1) | 191 | if (bCompressed == 1) |
192 | { | 192 | { |
193 | if ((dwRecLen == 0) && !refreshbuffer()) return EOF; | 193 | if ((dwRecLen == 0) && !refreshbuffer()) return EOF; |
194 | else | 194 | else |
195 | { | 195 | { |
196 | int c = getc(fin); | 196 | int c = getc(fin); |
197 | dePeanut(c); | 197 | dePeanut(c); |
198 | dwRecLen--; | 198 | dwRecLen--; |
199 | currentpos++; | 199 | currentpos++; |
200 | return c; | 200 | return c; |
201 | } | 201 | } |
202 | } | 202 | } |
203 | if (outptr != cbptr) | 203 | if (outptr != cbptr) |
204 | { | 204 | { |
205 | currentpos++; | 205 | currentpos++; |
206 | return (circbuf[outptr = (outptr + 1) % 2048]); | 206 | return (circbuf[outptr = (outptr + 1) % 2048]); |
207 | } | 207 | } |
208 | if ((dwRecLen == 0) && !refreshbuffer()) return EOF; | 208 | if ((dwRecLen == 0) && !refreshbuffer()) return EOF; |
209 | currentpos++; | 209 | currentpos++; |
210 | int c; | 210 | int c; |
211 | 211 | ||
212 | // take a char from the input buffer | 212 | // take a char from the input buffer |
213 | c = getc(fin); | 213 | c = getc(fin); |
214 | dePeanut(c); | 214 | dePeanut(c); |
215 | dwRecLen--; | 215 | dwRecLen--; |
216 | // separate the char into zones: 0, 1...8, 9...0x7F, 0x80...0xBF, 0xC0...0xFF | 216 | // separate the char into zones: 0, 1...8, 9...0x7F, 0x80...0xBF, 0xC0...0xFF |
217 | 217 | ||
218 | // codes 1...8 mean copy that many chars; for accented chars & binary | 218 | // codes 1...8 mean copy that many chars; for accented chars & binary |
219 | if (c == 0) | 219 | if (c == 0) |
220 | { | 220 | { |
221 | circbuf[outptr = cbptr = (cbptr+1)%2048] = c; | 221 | circbuf[outptr = cbptr = (cbptr+1)%2048] = c; |
222 | return c; | 222 | return c; |
223 | } | 223 | } |
224 | else if (c >= 0x09 && c <= 0x7F) | 224 | else if (c >= 0x09 && c <= 0x7F) |
225 | { | 225 | { |
226 | circbuf[outptr = cbptr = (cbptr+1)%2048] = c; | 226 | circbuf[outptr = cbptr = (cbptr+1)%2048] = c; |
227 | return c; | 227 | return c; |
228 | } | 228 | } |
229 | else if (c >= 0x01 && c <= 0x08) | 229 | else if (c >= 0x01 && c <= 0x08) |
230 | { | 230 | { |
231 | dwRecLen -= c; | 231 | dwRecLen -= c; |
232 | while(c--) | 232 | while(c--) |
233 | { | 233 | { |
234 | int c = getc(fin); | 234 | int c = getc(fin); |
235 | dePeanut(c); | 235 | dePeanut(c); |
236 | circbuf[cbptr = (cbptr+1)%2048] = c; | 236 | circbuf[cbptr = (cbptr+1)%2048] = c; |
237 | } | 237 | } |
238 | return circbuf[outptr = (outptr+1)%2048]; | 238 | return circbuf[outptr = (outptr+1)%2048]; |
239 | } | 239 | } |
240 | else if (c >= 0x80 && c <= 0xBF) | 240 | else if (c >= 0x80 && c <= 0xBF) |
241 | { | 241 | { |
242 | int m,n; | 242 | int m,n; |
243 | c <<= 8; | 243 | c <<= 8; |
244 | int c1 = getc(fin); | 244 | int c1 = getc(fin); |
245 | dePeanut(c1); | 245 | dePeanut(c1); |
246 | c += c1; | 246 | c += c1; |
247 | dwRecLen--; | 247 | dwRecLen--; |
248 | m = (c & 0x3FFF) >> COUNT_BITS; | 248 | m = (c & 0x3FFF) >> COUNT_BITS; |
249 | n = c & ((1<<COUNT_BITS) - 1); | 249 | n = c & ((1<<COUNT_BITS) - 1); |
250 | n += 3; | 250 | n += 3; |
251 | while (n--) | 251 | while (n--) |
252 | { | 252 | { |
253 | cbptr = (cbptr+1)%2048; | 253 | cbptr = (cbptr+1)%2048; |
254 | circbuf[cbptr] = circbuf[(cbptr+2048-m)%2048]; | 254 | circbuf[cbptr] = circbuf[(cbptr+2048-m)%2048]; |
255 | } | 255 | } |
256 | return circbuf[outptr = (outptr+1)%2048]; | 256 | return circbuf[outptr = (outptr+1)%2048]; |
257 | } | 257 | } |
258 | else if (c >= 0xC0 && c <= 0xFF) | 258 | else if (c >= 0xC0 && c <= 0xFF) |
259 | { | 259 | { |
260 | circbuf[cbptr = (cbptr+1)%2048] = ' '; | 260 | circbuf[cbptr = (cbptr+1)%2048] = ' '; |
261 | circbuf[cbptr = (cbptr+1)%2048] = c^0x80; | 261 | circbuf[cbptr = (cbptr+1)%2048] = c^0x80; |
262 | return circbuf[outptr = (outptr+1)%2048]; | 262 | return circbuf[outptr = (outptr+1)%2048]; |
263 | } | 263 | } |
264 | } | 264 | } |
265 | 265 | ||
266 | unsigned int Aportis::GetBS(unsigned int bn) | 266 | unsigned int Aportis::GetBS(unsigned int bn) |
267 | { | 267 | { |
268 | DWORD dwPos; | 268 | DWORD dwPos; |
269 | WORD fs; | 269 | WORD fs; |
270 | 270 | ||
271 | fseek(fin, 0x56 + 8*bn, SEEK_SET); | 271 | fseek(fin, 0x56 + 8*bn, SEEK_SET); |
272 | fread(&dwPos, 4, 1, fin); | 272 | fread(&dwPos, 4, 1, fin); |
273 | dwPos = SwapLong(dwPos); | 273 | dwPos = SwapLong(dwPos); |
274 | fseek(fin,dwPos,SEEK_SET); | 274 | fseek(fin,dwPos,SEEK_SET); |
275 | 275 | ||
276 | // gotorecordnumber(bn+1); | 276 | // gotorecordnumber(bn+1); |
277 | unsigned char ch; | 277 | unsigned char ch; |
278 | fread(&ch,1,1,fin); | 278 | fread(&ch,1,1,fin); |
279 | if (ch == 241) | 279 | if (ch == 241) |
280 | { | 280 | { |
281 | fread(&fs,sizeof(fs),1,fin); | 281 | fread(&fs,sizeof(fs),1,fin); |
282 | fs = SwapWord(fs); | 282 | fs = SwapWord(fs); |
283 | } | 283 | } |
284 | else | 284 | else |
285 | fs = 0; | 285 | fs = 0; |
286 | return fs; | 286 | return fs; |
287 | } | 287 | } |
288 | 288 | ||
289 | unsigned int Aportis::locate() | 289 | unsigned int Aportis::locate() |
290 | { | 290 | { |
291 | if (bCompressed == 4) | 291 | if (bCompressed == 4) |
292 | { | 292 | { |
293 | size_t cur = ftell(fin); | 293 | size_t cur = ftell(fin); |
294 | unsigned int clen = 0; | 294 | unsigned int clen = 0; |
295 | for (unsigned int i = 0; i < currentrec-1; i++) | 295 | for (unsigned int i = 0; i < currentrec-1; i++) |
296 | { | 296 | { |
297 | unsigned int bs = GetBS(i); | 297 | unsigned int bs = GetBS(i); |
298 | if (bs == 0) break; | 298 | if (bs == 0) break; |
299 | clen += bs; | 299 | clen += bs; |
300 | } | 300 | } |
301 | fseek(fin,cur,SEEK_SET); | 301 | fseek(fin,cur,SEEK_SET); |
302 | return clen+currentpos; | 302 | return clen+currentpos; |
303 | } | 303 | } |
304 | else | 304 | else |
305 | return (currentrec-1)*BlockSize+currentpos; | 305 | return (currentrec-1)*BlockSize+currentpos; |
306 | } | 306 | } |
307 | 307 | ||
308 | void Aportis::locate(unsigned int n) | 308 | void Aportis::locate(unsigned int n) |
309 | { | 309 | { |
310 | unsigned int offset; | 310 | unsigned int offset; |
311 | // currentrec = (n >> OFFBITS); | 311 | // currentrec = (n >> OFFBITS); |
312 | switch (bCompressed) | 312 | switch (bCompressed) |
313 | { | 313 | { |
314 | case 4: | 314 | case 4: |
315 | { | 315 | { |
316 | DWORD clen = 0; | 316 | DWORD clen = 0; |
317 | offset = n; | 317 | offset = n; |
318 | unsigned int i; | 318 | unsigned int i; |
319 | for (i = 0; i < nRecs; i++) | 319 | for (i = 0; i < nRecs; i++) |
320 | { | 320 | { |
321 | unsigned int bs = GetBS(i); | 321 | unsigned int bs = GetBS(i); |
322 | if (bs == 0) break; | 322 | if (bs == 0) break; |
323 | clen += bs; | 323 | clen += bs; |
324 | if (clen > n) break; | 324 | if (clen > n) break; |
325 | offset = n - clen; | 325 | offset = n - clen; |
326 | } | 326 | } |
327 | currentrec = i; | 327 | currentrec = i; |
328 | } | 328 | } |
329 | break; | 329 | break; |
330 | case 1: | 330 | case 1: |
331 | case 2: | 331 | case 2: |
332 | default: | 332 | default: |
333 | currentrec = n / BlockSize; | 333 | currentrec = n / BlockSize; |
334 | offset = n % BlockSize; | 334 | offset = n % BlockSize; |
335 | } | 335 | } |
336 | 336 | ||
337 | outptr = cbptr; | 337 | outptr = cbptr; |
338 | refreshbuffer(); | 338 | refreshbuffer(); |
339 | while (currentpos < offset && getch() != EOF); | 339 | while (currentpos < offset && getch() != EOF); |
340 | } | 340 | } |
341 | 341 | ||
342 | bool Aportis::refreshbuffer() | 342 | bool Aportis::refreshbuffer() |
343 | { | 343 | { |
344 | if (currentrec < nRecs) | 344 | if (currentrec < nRecs) |
345 | { | 345 | { |
346 | dwRecLen = recordlength(currentrec+1); | 346 | dwRecLen = recordlength(currentrec+1); |
347 | gotorecordnumber(currentrec+1); | 347 | gotorecordnumber(currentrec+1); |
348 | if (bCompressed == 4) | 348 | if (bCompressed == 4) |
349 | { | 349 | { |
350 | unsigned char t[3]; | 350 | unsigned char t[3]; |
351 | fread(t,1,3,fin); | 351 | fread(t,1,3,fin); |
352 | if (t[0] != 241) | 352 | if (t[0] != 241) |
353 | { | 353 | { |
354 | printf("You shouldn't be here!\n"); | 354 | printf("You shouldn't be here!\n"); |
355 | return false; | 355 | return false; |
356 | } | 356 | } |
357 | dwRecLen -= 3; | 357 | dwRecLen -= 3; |
358 | } | 358 | } |
359 | /* | 359 | /* |
360 | int n = fread(t.buf, 1, dwRecLen, fin); | 360 | int n = fread(t.buf, 1, dwRecLen, fin); |
361 | t.len = n; | 361 | t.len = n; |
362 | // if(bCompressed) | 362 | // if(bCompressed) |
363 | t.Decompress(); | 363 | t.Decompress(); |
364 | 364 | ||
365 | t.buf[t.Len()] = '\0'; | 365 | t.buf[t.Len()] = '\0'; |
366 | */ | 366 | */ |
367 | currentpos = 0; | 367 | currentpos = 0; |
368 | currentrec++; | 368 | currentrec++; |
369 | return true; | 369 | return true; |
370 | } | 370 | } |
371 | else { | 371 | else { |
372 | return false; | 372 | return false; |
373 | } | 373 | } |
374 | } | 374 | } |
diff --git a/noncore/apps/opie-reader/Bkmks.cpp b/noncore/apps/opie-reader/Bkmks.cpp index 16bc1f1..480c240 100644 --- a/noncore/apps/opie-reader/Bkmks.cpp +++ b/noncore/apps/opie-reader/Bkmks.cpp | |||
@@ -1,320 +1,320 @@ | |||
1 | #include <qmessagebox.h> | 1 | #include <qmessagebox.h> |
2 | 2 | ||
3 | #include "Bkmks.h" | 3 | #include "Bkmks.h" |
4 | 4 | ||
5 | #include "my_list.h" | 5 | #include "my_list.h" |
6 | #include "version.h" | 6 | #include "version.h" |
7 | #include "names.h" | 7 | #include "names.h" |
8 | 8 | ||
9 | const unsigned long BkmkFile::magic = ((unsigned long)'q' << 24) | ((unsigned long)'t' << 16) | ((unsigned long)'r' << 8) | ((unsigned long)BKMKTYPE); | 9 | const unsigned long BkmkFile::magic = ((unsigned long)'q' << 24) | ((unsigned long)'t' << 16) | ((unsigned long)'r' << 8) | ((unsigned long)BKMKTYPE); |
10 | 10 | ||
11 | Bkmk::Bkmk(const unsigned char* _nm, unsigned short _nmlen, const unsigned char* _anno, unsigned short _annolen, unsigned int _p) : m_position(_p) | 11 | Bkmk::Bkmk(const unsigned char* _nm, unsigned short _nmlen, const unsigned char* _anno, unsigned short _annolen, unsigned int _p) : m_position(_p) |
12 | { | 12 | { |
13 | init(_nm, _nmlen, _anno, _annolen, _p); | 13 | init(_nm, _nmlen, _anno, _annolen, _p); |
14 | } | 14 | } |
15 | 15 | ||
16 | Bkmk::Bkmk(const tchar* _nm, const unsigned char* _anno, unsigned short annolen, unsigned int _p) : m_position(_p) | 16 | Bkmk::Bkmk(const tchar* _nm, const unsigned char* _anno, unsigned short annolen, unsigned int _p) : m_position(_p) |
17 | { | 17 | { |
18 | init(_nm, sizeof(tchar)*(ustrlen(_nm)+1), _anno, annolen, _p); | 18 | init(_nm, sizeof(tchar)*(ustrlen(_nm)+1), _anno, annolen, _p); |
19 | } | 19 | } |
20 | 20 | ||
21 | Bkmk::Bkmk(const tchar* _nm, const tchar* _anno, unsigned int _p) : m_position(_p) | 21 | Bkmk::Bkmk(const tchar* _nm, const tchar* _anno, unsigned int _p) : m_position(_p) |
22 | { | 22 | { |
23 | 23 | ||
24 | if (_anno == NULL) | 24 | if (_anno == NULL) |
25 | { | 25 | { |
26 | tchar t = 0; | 26 | tchar t = 0; |
27 | init(_nm, sizeof(tchar)*(ustrlen(_nm)+1), &t, sizeof(t), _p); | 27 | init(_nm, sizeof(tchar)*(ustrlen(_nm)+1), &t, sizeof(t), _p); |
28 | } | 28 | } |
29 | else | 29 | else |
30 | { | 30 | { |
31 | init(_nm, sizeof(tchar)*(ustrlen(_nm)+1), _anno, sizeof(tchar)*(ustrlen(_anno)+1), _p); | 31 | init(_nm, sizeof(tchar)*(ustrlen(_nm)+1), _anno, sizeof(tchar)*(ustrlen(_anno)+1), _p); |
32 | } | 32 | } |
33 | } | 33 | } |
34 | 34 | ||
35 | void Bkmk::init(const void* _nm, unsigned short _nmlen, const void* _anno, unsigned short _annolen, unsigned int _p) | 35 | void Bkmk::init(const void* _nm, unsigned short _nmlen, const void* _anno, unsigned short _annolen, unsigned int _p) |
36 | { | 36 | { |
37 | m_namelen = _nmlen; | 37 | m_namelen = _nmlen; |
38 | if (m_namelen > 0) | 38 | if (m_namelen > 0) |
39 | { | 39 | { |
40 | m_name = new unsigned char[m_namelen]; | 40 | m_name = new unsigned char[m_namelen]; |
41 | memcpy(m_name, _nm, m_namelen); | 41 | memcpy(m_name, _nm, m_namelen); |
42 | } | 42 | } |
43 | else | 43 | else |
44 | { | 44 | { |
45 | m_name = NULL; | 45 | m_name = NULL; |
46 | } | 46 | } |
47 | 47 | ||
48 | m_annolen = _annolen; | 48 | m_annolen = _annolen; |
49 | if (m_annolen > 0) | 49 | if (m_annolen > 0) |
50 | { | 50 | { |
51 | m_anno = new unsigned char[m_annolen]; | 51 | m_anno = new unsigned char[m_annolen]; |
52 | memcpy(m_anno, _anno, m_annolen); | 52 | memcpy(m_anno, _anno, m_annolen); |
53 | } | 53 | } |
54 | else | 54 | else |
55 | { | 55 | { |
56 | m_anno = NULL; | 56 | m_anno = NULL; |
57 | } | 57 | } |
58 | m_position = _p; | 58 | m_position = _p; |
59 | } | 59 | } |
60 | 60 | ||
61 | Bkmk::~Bkmk() | 61 | Bkmk::~Bkmk() |
62 | { | 62 | { |
63 | if (m_name != NULL) delete [] m_name; | 63 | if (m_name != NULL) delete [] m_name; |
64 | m_name = NULL; | 64 | m_name = NULL; |
65 | if (m_anno != NULL) delete [] m_anno; | 65 | if (m_anno != NULL) delete [] m_anno; |
66 | m_anno = NULL; | 66 | m_anno = NULL; |
67 | } | 67 | } |
68 | 68 | ||
69 | Bkmk& Bkmk::operator=(const Bkmk& rhs) | 69 | Bkmk& Bkmk::operator=(const Bkmk& rhs) |
70 | { | 70 | { |
71 | if (m_name != NULL) | 71 | if (m_name != NULL) |
72 | { | 72 | { |
73 | delete [] m_name; | 73 | delete [] m_name; |
74 | m_name = NULL; | 74 | m_name = NULL; |
75 | } | 75 | } |
76 | if (m_anno != NULL) | 76 | if (m_anno != NULL) |
77 | { | 77 | { |
78 | delete [] m_anno; | 78 | delete [] m_anno; |
79 | m_anno = NULL; | 79 | m_anno = NULL; |
80 | } | 80 | } |
81 | if (rhs.m_name != NULL) | 81 | if (rhs.m_name != NULL) |
82 | { | 82 | { |
83 | m_namelen = rhs.m_namelen; | 83 | m_namelen = rhs.m_namelen; |
84 | m_name = new unsigned char[m_namelen]; | 84 | m_name = new unsigned char[m_namelen]; |
85 | memcpy(m_name, rhs.m_name, m_namelen); | 85 | memcpy(m_name, rhs.m_name, m_namelen); |
86 | } | 86 | } |
87 | else | 87 | else |
88 | m_name = NULL; | 88 | m_name = NULL; |
89 | if (rhs.m_anno != NULL) | 89 | if (rhs.m_anno != NULL) |
90 | { | 90 | { |
91 | m_annolen = rhs.m_annolen; | 91 | m_annolen = rhs.m_annolen; |
92 | m_anno = new unsigned char[m_annolen]; | 92 | m_anno = new unsigned char[m_annolen]; |
93 | memcpy(m_anno, rhs.m_anno, m_annolen); | 93 | memcpy(m_anno, rhs.m_anno, m_annolen); |
94 | } | 94 | } |
95 | else | 95 | else |
96 | m_anno = NULL; | 96 | m_anno = NULL; |
97 | m_position = rhs.m_position; | 97 | m_position = rhs.m_position; |
98 | return *this; | 98 | return *this; |
99 | } | 99 | } |
100 | 100 | ||
101 | bool Bkmk::operator==(const Bkmk& rhs) | 101 | bool Bkmk::operator==(const Bkmk& rhs) |
102 | { | 102 | { |
103 | return (m_position == rhs.m_position && (rhs.m_namelen == m_namelen) && memcmp(m_name,rhs.m_name,m_namelen) == 0); | 103 | return (m_position == rhs.m_position && (rhs.m_namelen == m_namelen) && memcmp(m_name,rhs.m_name,m_namelen) == 0); |
104 | } | 104 | } |
105 | 105 | ||
106 | void Bkmk::setAnno(unsigned char* t, unsigned short len) | 106 | void Bkmk::setAnno(unsigned char* t, unsigned short len) |
107 | { | 107 | { |
108 | if (m_anno != NULL) | 108 | if (m_anno != NULL) |
109 | { | 109 | { |
110 | delete [] m_anno; | 110 | delete [] m_anno; |
111 | m_anno = NULL; | 111 | m_anno = NULL; |
112 | } | 112 | } |
113 | if (t != NULL) | 113 | if (t != NULL) |
114 | { | 114 | { |
115 | m_annolen = len; | 115 | m_annolen = len; |
116 | m_anno = new unsigned char[m_annolen]; | 116 | m_anno = new unsigned char[m_annolen]; |
117 | memcpy(m_anno, t, m_annolen); | 117 | memcpy(m_anno, t, m_annolen); |
118 | } | 118 | } |
119 | else | 119 | else |
120 | { | 120 | { |
121 | m_annolen = sizeof(tchar); | 121 | m_annolen = sizeof(tchar); |
122 | m_anno = new unsigned char[m_annolen]; | 122 | m_anno = new unsigned char[m_annolen]; |
123 | *((tchar*)m_anno) = 0; | 123 | *((tchar*)m_anno) = 0; |
124 | } | 124 | } |
125 | } | 125 | } |
126 | 126 | ||
127 | void Bkmk::setAnno(tchar* t) | 127 | void Bkmk::setAnno(tchar* t) |
128 | { | 128 | { |
129 | if (m_anno != NULL) | 129 | if (m_anno != NULL) |
130 | { | 130 | { |
131 | delete [] m_anno; | 131 | delete [] m_anno; |
132 | m_anno = NULL; | 132 | m_anno = NULL; |
133 | } | 133 | } |
134 | if (t != NULL) | 134 | if (t != NULL) |
135 | { | 135 | { |
136 | unsigned short len = ustrlen(t)+1; | 136 | unsigned short len = ustrlen(t)+1; |
137 | m_annolen = sizeof(tchar)*len; | 137 | m_annolen = sizeof(tchar)*len; |
138 | m_anno = new unsigned char[m_annolen]; | 138 | m_anno = new unsigned char[m_annolen]; |
139 | memcpy(m_anno, t, m_annolen); | 139 | memcpy(m_anno, t, m_annolen); |
140 | } | 140 | } |
141 | else | 141 | else |
142 | { | 142 | { |
143 | m_annolen = sizeof(tchar); | 143 | m_annolen = sizeof(tchar); |
144 | m_anno = new unsigned char[m_annolen]; | 144 | m_anno = new unsigned char[m_annolen]; |
145 | *((tchar*)m_anno) = 0; | 145 | *((tchar*)m_anno) = 0; |
146 | } | 146 | } |
147 | } | 147 | } |
148 | 148 | ||
149 | BkmkFile::BkmkFile(const char *fnm, bool w) | 149 | BkmkFile::BkmkFile(const char *fnm, bool w) |
150 | : | 150 | : |
151 | wt(w), isUpgraded(false) | 151 | wt(w), isUpgraded(false) |
152 | { | 152 | { |
153 | if (w) | 153 | if (w) |
154 | { | 154 | { |
155 | f = fopen(fnm, "wb"); | 155 | f = fopen(fnm, "wb"); |
156 | } | 156 | } |
157 | else | 157 | else |
158 | { | 158 | { |
159 | f = fopen(fnm, "rb"); | 159 | f = fopen(fnm, "rb"); |
160 | } | 160 | } |
161 | } | 161 | } |
162 | 162 | ||
163 | BkmkFile::~BkmkFile() | 163 | BkmkFile::~BkmkFile() |
164 | { | 164 | { |
165 | if (f != NULL) fclose(f); | 165 | if (f != NULL) fclose(f); |
166 | } | 166 | } |
167 | 167 | ||
168 | void BkmkFile::write(const Bkmk& b) | 168 | void BkmkFile::write(const Bkmk& b) |
169 | { | 169 | { |
170 | if (f != NULL) | 170 | if (f != NULL) |
171 | { | 171 | { |
172 | fwrite(&b.m_namelen, sizeof(b.m_namelen),1,f); | 172 | fwrite(&b.m_namelen, sizeof(b.m_namelen),1,f); |
173 | fwrite(b.m_name,1,b.m_namelen,f); | 173 | fwrite(b.m_name,1,b.m_namelen,f); |
174 | fwrite(&b.m_annolen, sizeof(b.m_annolen),1,f); | 174 | fwrite(&b.m_annolen, sizeof(b.m_annolen),1,f); |
175 | fwrite(b.m_anno,1,b.m_annolen,f); | 175 | fwrite(b.m_anno,1,b.m_annolen,f); |
176 | fwrite(&b.m_position,sizeof(b.m_position),1,f); | 176 | fwrite(&b.m_position,sizeof(b.m_position),1,f); |
177 | } | 177 | } |
178 | } | 178 | } |
179 | 179 | ||
180 | void BkmkFile::write(CList<Bkmk>& bl) | 180 | void BkmkFile::write(CList<Bkmk>& bl) |
181 | { | 181 | { |
182 | if (f != NULL) | 182 | if (f != NULL) |
183 | { | 183 | { |
184 | fwrite(&magic, sizeof(magic), 1, f); | 184 | fwrite(&magic, sizeof(magic), 1, f); |
185 | for (CList<Bkmk>::iterator i = bl.begin(); i != bl.end(); i++) | 185 | for (CList<Bkmk>::iterator i = bl.begin(); i != bl.end(); i++) |
186 | { | 186 | { |
187 | write(*i); | 187 | write(*i); |
188 | } | 188 | } |
189 | } | 189 | } |
190 | } | 190 | } |
191 | 191 | ||
192 | CList<Bkmk>* BkmkFile::readall() | 192 | CList<Bkmk>* BkmkFile::readall() |
193 | { | 193 | { |
194 | CList<Bkmk>* bl = NULL; | 194 | CList<Bkmk>* bl = NULL; |
195 | if (f != NULL) | 195 | if (f != NULL) |
196 | { | 196 | { |
197 | unsigned long newmagic; | 197 | unsigned long newmagic; |
198 | fread(&newmagic, sizeof(newmagic), 1, f); | 198 | fread(&newmagic, sizeof(newmagic), 1, f); |
199 | if ((newmagic & 0xffffff00) != (magic & 0xffffff00)) | 199 | if ((newmagic & 0xffffff00) != (magic & 0xffffff00)) |
200 | { | 200 | { |
201 | if (QMessageBox::warning(NULL, "Old bookmark file!", "Which version of " PROGNAME "\ndid you upgrade from?", "0_4*", "Any other version") == 0) | 201 | if (QMessageBox::warning(NULL, "Old bookmark file!", "Which version of " PROGNAME "\ndid you upgrade from?", "0_4*", "Any other version") == 0) |
202 | { | 202 | { |
203 | fseek(f,0,SEEK_SET); | 203 | fseek(f,0,SEEK_SET); |
204 | bl = readall00(&read05); | 204 | bl = readall00(&read05); |
205 | } | 205 | } |
206 | else | 206 | else |
207 | { | 207 | { |
208 | fseek(f,0,SEEK_SET); | 208 | fseek(f,0,SEEK_SET); |
209 | bl = readall00(&read03); | 209 | bl = readall00(&read03); |
210 | } | 210 | } |
211 | isUpgraded = true; | 211 | isUpgraded = true; |
212 | } | 212 | } |
213 | else | 213 | else |
214 | { | 214 | { |
215 | switch(newmagic & 0xff) | 215 | switch(newmagic & 0xff) |
216 | { | 216 | { |
217 | case 6: | 217 | case 6: |
218 | isUpgraded = false; | 218 | isUpgraded = false; |
219 | bl = readall00(read06); | 219 | bl = readall00(read06); |
220 | // qDebug("Correct version!"); | 220 | // odebug << "Correct version!" << oendl; |
221 | break; | 221 | break; |
222 | case 5: | 222 | case 5: |
223 | isUpgraded = true; | 223 | isUpgraded = true; |
224 | bl = readall00(read05); | 224 | bl = readall00(read05); |
225 | // qDebug("Known version!"); | 225 | // odebug << "Known version!" << oendl; |
226 | break; | 226 | break; |
227 | default: | 227 | default: |
228 | // qDebug("Unknown version!"); | 228 | // odebug << "Unknown version!" << oendl; |
229 | isUpgraded = true; | 229 | isUpgraded = true; |
230 | bl = readall00(read05); | 230 | bl = readall00(read05); |
231 | } | 231 | } |
232 | } | 232 | } |
233 | } | 233 | } |
234 | return bl; | 234 | return bl; |
235 | } | 235 | } |
236 | 236 | ||
237 | CList<Bkmk>* BkmkFile::readall00(Bkmk* (*readfn)(FILE*)) | 237 | CList<Bkmk>* BkmkFile::readall00(Bkmk* (*readfn)(FILE*)) |
238 | { | 238 | { |
239 | CList<Bkmk>* bl = new CList<Bkmk>; | 239 | CList<Bkmk>* bl = new CList<Bkmk>; |
240 | while (1) | 240 | while (1) |
241 | { | 241 | { |
242 | Bkmk* b = (*readfn)(f); | 242 | Bkmk* b = (*readfn)(f); |
243 | if (b == NULL) break; | 243 | if (b == NULL) break; |
244 | bl->push_back(*b); | 244 | bl->push_back(*b); |
245 | delete b; | 245 | delete b; |
246 | } | 246 | } |
247 | return bl; | 247 | return bl; |
248 | } | 248 | } |
249 | 249 | ||
250 | Bkmk* BkmkFile::read03(FILE* f) | 250 | Bkmk* BkmkFile::read03(FILE* f) |
251 | { | 251 | { |
252 | Bkmk* b = NULL; | 252 | Bkmk* b = NULL; |
253 | if (f != NULL) | 253 | if (f != NULL) |
254 | { | 254 | { |
255 | unsigned short ln; | 255 | unsigned short ln; |
256 | if (fread(&ln,sizeof(ln),1,f) == 1) | 256 | if (fread(&ln,sizeof(ln),1,f) == 1) |
257 | { | 257 | { |
258 | tchar* name = new tchar[ln+1]; | 258 | tchar* name = new tchar[ln+1]; |
259 | fread(name,sizeof(tchar),ln,f); | 259 | fread(name,sizeof(tchar),ln,f); |
260 | name[ln] = 0; | 260 | name[ln] = 0; |
261 | 261 | ||
262 | ln = 0; | 262 | ln = 0; |
263 | tchar* anno = new tchar[ln+1]; | 263 | tchar* anno = new tchar[ln+1]; |
264 | anno[ln] = 0; | 264 | anno[ln] = 0; |
265 | 265 | ||
266 | unsigned int pos; | 266 | unsigned int pos; |
267 | fread(&pos,sizeof(pos),1,f); | 267 | fread(&pos,sizeof(pos),1,f); |
268 | b = new Bkmk(name,anno,pos); | 268 | b = new Bkmk(name,anno,pos); |
269 | } | 269 | } |
270 | } | 270 | } |
271 | return b; | 271 | return b; |
272 | } | 272 | } |
273 | 273 | ||
274 | Bkmk* BkmkFile::read05(FILE* f) | 274 | Bkmk* BkmkFile::read05(FILE* f) |
275 | { | 275 | { |
276 | Bkmk* b = NULL; | 276 | Bkmk* b = NULL; |
277 | if (f != NULL) | 277 | if (f != NULL) |
278 | { | 278 | { |
279 | unsigned short ln; | 279 | unsigned short ln; |
280 | if (fread(&ln,sizeof(ln),1,f) == 1) | 280 | if (fread(&ln,sizeof(ln),1,f) == 1) |
281 | { | 281 | { |
282 | tchar* nm = new tchar[ln+1]; | 282 | tchar* nm = new tchar[ln+1]; |
283 | fread(nm,sizeof(tchar),ln,f); | 283 | fread(nm,sizeof(tchar),ln,f); |
284 | nm[ln] = 0; | 284 | nm[ln] = 0; |
285 | fread(&ln,sizeof(ln),1,f); | 285 | fread(&ln,sizeof(ln),1,f); |
286 | tchar* anno = new tchar[ln+1]; | 286 | tchar* anno = new tchar[ln+1]; |
287 | if (ln > 0) fread(anno,sizeof(tchar),ln,f); | 287 | if (ln > 0) fread(anno,sizeof(tchar),ln,f); |
288 | anno[ln] = 0; | 288 | anno[ln] = 0; |
289 | unsigned int pos; | 289 | unsigned int pos; |
290 | fread(&pos,sizeof(pos),1,f); | 290 | fread(&pos,sizeof(pos),1,f); |
291 | b = new Bkmk(nm,anno,pos); | 291 | b = new Bkmk(nm,anno,pos); |
292 | } | 292 | } |
293 | } | 293 | } |
294 | return b; | 294 | return b; |
295 | } | 295 | } |
296 | 296 | ||
297 | Bkmk* BkmkFile::read06(FILE* f) | 297 | Bkmk* BkmkFile::read06(FILE* f) |
298 | { | 298 | { |
299 | Bkmk* b = NULL; | 299 | Bkmk* b = NULL; |
300 | if (f != NULL) | 300 | if (f != NULL) |
301 | { | 301 | { |
302 | unsigned short ln; | 302 | unsigned short ln; |
303 | if (fread(&ln,sizeof(ln),1,f) == 1) | 303 | if (fread(&ln,sizeof(ln),1,f) == 1) |
304 | { | 304 | { |
305 | b = new Bkmk; | 305 | b = new Bkmk; |
306 | b->m_namelen = ln; | 306 | b->m_namelen = ln; |
307 | b->m_name = new unsigned char[b->m_namelen]; | 307 | b->m_name = new unsigned char[b->m_namelen]; |
308 | fread(b->m_name,1,b->m_namelen,f); | 308 | fread(b->m_name,1,b->m_namelen,f); |
309 | 309 | ||
310 | fread(&(b->m_annolen),sizeof(b->m_annolen),1,f); | 310 | fread(&(b->m_annolen),sizeof(b->m_annolen),1,f); |
311 | if (b->m_annolen > 0) | 311 | if (b->m_annolen > 0) |
312 | { | 312 | { |
313 | b->m_anno = new unsigned char[b->m_annolen]; | 313 | b->m_anno = new unsigned char[b->m_annolen]; |
314 | fread(b->m_anno,1,b->m_annolen,f); | 314 | fread(b->m_anno,1,b->m_annolen,f); |
315 | } | 315 | } |
316 | fread(&(b->m_position),sizeof(b->m_position),1,f); | 316 | fread(&(b->m_position),sizeof(b->m_position),1,f); |
317 | } | 317 | } |
318 | } | 318 | } |
319 | return b; | 319 | return b; |
320 | } | 320 | } |
diff --git a/noncore/apps/opie-reader/BuffDoc.cpp b/noncore/apps/opie-reader/BuffDoc.cpp index 4fbab93..68391b8 100644 --- a/noncore/apps/opie-reader/BuffDoc.cpp +++ b/noncore/apps/opie-reader/BuffDoc.cpp | |||
@@ -1,412 +1,412 @@ | |||
1 | 1 | ||
2 | #define NEWLINEBREAK | 2 | #define NEWLINEBREAK |
3 | 3 | ||
4 | #include "BuffDoc.h" | 4 | #include "BuffDoc.h" |
5 | //#include <FL/fl_draw.h> | 5 | //#include <FL/fl_draw.h> |
6 | #include "plucker.h" | 6 | #include "plucker.h" |
7 | #ifdef USENEF | 7 | #ifdef USENEF |
8 | #include "nef.h" | 8 | #include "nef.h" |
9 | #include "arrierego.h" | 9 | #include "arrierego.h" |
10 | #endif | 10 | #endif |
11 | 11 | ||
12 | linkType BuffDoc::hyperlink(unsigned int n, QString& wrd) | 12 | linkType BuffDoc::hyperlink(unsigned int n, QString& wrd) |
13 | { | 13 | { |
14 | linkType bRet = eNone; | 14 | linkType bRet = eNone; |
15 | if (exp != NULL) | 15 | if (exp != NULL) |
16 | { | 16 | { |
17 | bRet = exp->hyperlink(n, wrd); | 17 | bRet = exp->hyperlink(n, wrd); |
18 | if (bRet == eLink) | 18 | if (bRet == eLink) |
19 | { | 19 | { |
20 | lastword.empty(); | 20 | lastword.empty(); |
21 | lastsizes[0] = laststartline = n; | 21 | lastsizes[0] = laststartline = n; |
22 | #ifdef NEWLINEBREAK | 22 | #ifdef NEWLINEBREAK |
23 | lastispara = true; | 23 | lastispara = true; |
24 | #else | 24 | #else |
25 | lastispara = false; | 25 | lastispara = false; |
26 | #endif | 26 | #endif |
27 | lastsizes[0] = laststartline = exp->locate(); | 27 | lastsizes[0] = laststartline = exp->locate(); |
28 | } | 28 | } |
29 | } | 29 | } |
30 | return bRet; | 30 | return bRet; |
31 | } | 31 | } |
32 | 32 | ||
33 | void BuffDoc::locate(unsigned int n) | 33 | void BuffDoc::locate(unsigned int n) |
34 | { | 34 | { |
35 | // //qDebug("BuffDoc:locating:%u",n); | 35 | // //odebug << "BuffDoc:locating:" << n << "" << oendl; |
36 | lastword.empty(); | 36 | lastword.empty(); |
37 | lastsizes[0] = laststartline = n; | 37 | lastsizes[0] = laststartline = n; |
38 | #ifdef NEWLINEBREAK | 38 | #ifdef NEWLINEBREAK |
39 | lastispara = true; | 39 | lastispara = true; |
40 | #else | 40 | #else |
41 | lastispara = false; | 41 | lastispara = false; |
42 | #endif | 42 | #endif |
43 | // tchar linebuf[1024]; | 43 | // tchar linebuf[1024]; |
44 | if (exp != NULL) exp->locate(n); | 44 | if (exp != NULL) exp->locate(n); |
45 | // //qDebug("BuffDoc:Located"); | 45 | // //odebug << "BuffDoc:Located" << oendl; |
46 | } | 46 | } |
47 | 47 | ||
48 | #ifdef NEWLINEBREAK | 48 | #ifdef NEWLINEBREAK |
49 | bool BuffDoc::getline(CDrawBuffer* buff, int wth, unsigned char _border) | 49 | bool BuffDoc::getline(CDrawBuffer* buff, int wth, unsigned char _border) |
50 | { | 50 | { |
51 | bool moreleft = true; | 51 | bool moreleft = true; |
52 | bool margindone = false; | 52 | bool margindone = false; |
53 | int w = wth-2*_border; | 53 | int w = wth-2*_border; |
54 | tchar ch = 32; | 54 | tchar ch = 32; |
55 | CStyle cs; | 55 | CStyle cs; |
56 | buff->empty(); | 56 | buff->empty(); |
57 | if (exp == NULL) | 57 | if (exp == NULL) |
58 | { | 58 | { |
59 | buff->empty(); | 59 | buff->empty(); |
60 | buff->setEof(); | 60 | buff->setEof(); |
61 | return false; | 61 | return false; |
62 | } | 62 | } |
63 | int len = 0; | 63 | int len = 0; |
64 | if (lastword.length() > 0) | 64 | if (lastword.length() > 0) |
65 | { | 65 | { |
66 | *buff = lastword; | 66 | *buff = lastword; |
67 | cs = lastword.laststyle(); | 67 | cs = lastword.laststyle(); |
68 | w -= buff->leftMargin() + buff->rightMargin(); | 68 | w -= buff->leftMargin() + buff->rightMargin(); |
69 | margindone = true; | 69 | margindone = true; |
70 | len = lastword.length(); | 70 | len = lastword.length(); |
71 | } | 71 | } |
72 | else buff->empty(); | 72 | else buff->empty(); |
73 | lastword.empty(); | 73 | lastword.empty(); |
74 | unsigned int slen = buff->width(len); | 74 | unsigned int slen = buff->width(len); |
75 | if (lastispara) buff->setstartpara(); | 75 | if (lastispara) buff->setstartpara(); |
76 | while (1) | 76 | while (1) |
77 | { | 77 | { |
78 | lastsizes[len] = exp->locate(); | 78 | lastsizes[len] = exp->locate(); |
79 | getch(ch, cs); | 79 | getch(ch, cs); |
80 | if (ch == 10 && len == 0 && !lastispara) | 80 | if (ch == 10 && len == 0 && !lastispara) |
81 | { | 81 | { |
82 | lastsizes[len] = exp->locate(); | 82 | lastsizes[len] = exp->locate(); |
83 | getch(ch, cs); | 83 | getch(ch, cs); |
84 | } | 84 | } |
85 | if (ch == UEOF) | 85 | if (ch == UEOF) |
86 | { | 86 | { |
87 | if (len == 0) | 87 | if (len == 0) |
88 | { | 88 | { |
89 | buff->setEof(); | 89 | buff->setEof(); |
90 | moreleft = false; | 90 | moreleft = false; |
91 | } | 91 | } |
92 | laststartline = exp->locate(); | 92 | laststartline = exp->locate(); |
93 | break; | 93 | break; |
94 | } | 94 | } |
95 | if (ch == 10) | 95 | if (ch == 10) |
96 | { | 96 | { |
97 | buff->setendpara(); | 97 | buff->setendpara(); |
98 | lastispara = true; | 98 | lastispara = true; |
99 | laststartline = exp->locate(); | 99 | laststartline = exp->locate(); |
100 | break; | 100 | break; |
101 | } | 101 | } |
102 | lastispara = false; | 102 | lastispara = false; |
103 | buff->addch(ch, cs); | 103 | buff->addch(ch, cs); |
104 | len++; | 104 | len++; |
105 | if (!margindone) | 105 | if (!margindone) |
106 | { | 106 | { |
107 | w -= buff->leftMargin() + buff->rightMargin(); | 107 | w -= buff->leftMargin() + buff->rightMargin(); |
108 | margindone = true; | 108 | margindone = true; |
109 | } | 109 | } |
110 | if ((slen = buff->width(len)) > w) | 110 | if ((slen = buff->width(len)) > w) |
111 | { | 111 | { |
112 | if (ch == ' ' || len == 1) | 112 | if (ch == ' ' || len == 1) |
113 | { | 113 | { |
114 | if (ch == ' ') buff->truncate(len-1); | 114 | if (ch == ' ') buff->truncate(len-1); |
115 | laststartline = exp->locate(); | 115 | laststartline = exp->locate(); |
116 | break; | 116 | break; |
117 | } | 117 | } |
118 | else // should do a backward search for spaces, first. | 118 | else // should do a backward search for spaces, first. |
119 | { | 119 | { |
120 | for (int i = len-2; i > 0; i--) | 120 | for (int i = len-2; i > 0; i--) |
121 | { | 121 | { |
122 | if ((*buff)[i] == ' ') | 122 | if ((*buff)[i] == ' ') |
123 | { | 123 | { |
124 | (*buff)[len] = 0; | 124 | (*buff)[len] = 0; |
125 | lastword.setright(*buff, i+1); | 125 | lastword.setright(*buff, i+1); |
126 | buff->truncate(i); | 126 | buff->truncate(i); |
127 | (*buff)[i] = '\0'; | 127 | (*buff)[i] = '\0'; |
128 | laststartline = lastsizes[i+1]; | 128 | laststartline = lastsizes[i+1]; |
129 | buff->resize(); | 129 | buff->resize(); |
130 | for (int j = 0; j < lastword.length(); j++) | 130 | for (int j = 0; j < lastword.length(); j++) |
131 | { | 131 | { |
132 | lastsizes[j] = lastsizes[j+i+1]; | 132 | lastsizes[j] = lastsizes[j+i+1]; |
133 | } | 133 | } |
134 | return true; | 134 | return true; |
135 | } | 135 | } |
136 | if ((*buff)[i] == '-' && !(((*buff)[i-1] == '-') || ((*buff)[i+1] == '-'))) | 136 | if ((*buff)[i] == '-' && !(((*buff)[i-1] == '-') || ((*buff)[i+1] == '-'))) |
137 | { | 137 | { |
138 | (*buff)[len] = 0; | 138 | (*buff)[len] = 0; |
139 | lastword.setright(*buff, i+1); | 139 | lastword.setright(*buff, i+1); |
140 | buff->truncate(i+1); | 140 | buff->truncate(i+1); |
141 | (*buff)[i+1] = '\0'; | 141 | (*buff)[i+1] = '\0'; |
142 | laststartline = lastsizes[i+1]; | 142 | laststartline = lastsizes[i+1]; |
143 | buff->resize(); | 143 | buff->resize(); |
144 | for (int j = 0; j < lastword.length(); j++) | 144 | for (int j = 0; j < lastword.length(); j++) |
145 | { | 145 | { |
146 | lastsizes[j] = lastsizes[j+i+1]; | 146 | lastsizes[j] = lastsizes[j+i+1]; |
147 | } | 147 | } |
148 | return true; | 148 | return true; |
149 | } | 149 | } |
150 | } | 150 | } |
151 | laststartline = lastsizes[len-1]; | 151 | laststartline = lastsizes[len-1]; |
152 | (*buff)[len] = 0; | 152 | (*buff)[len] = 0; |
153 | lastword.setright(*buff, len - 1); | 153 | lastword.setright(*buff, len - 1); |
154 | buff->truncate(len-1); | 154 | buff->truncate(len-1); |
155 | buff->addch('-', cs); | 155 | buff->addch('-', cs); |
156 | for (int j = 0; j < lastword.length(); j++) | 156 | for (int j = 0; j < lastword.length(); j++) |
157 | { | 157 | { |
158 | lastsizes[j] = lastsizes[j+len]; | 158 | lastsizes[j] = lastsizes[j+len]; |
159 | } | 159 | } |
160 | break; | 160 | break; |
161 | } | 161 | } |
162 | } | 162 | } |
163 | } | 163 | } |
164 | (*buff)[len] = '\0'; | 164 | (*buff)[len] = '\0'; |
165 | buff->resize(); | 165 | buff->resize(); |
166 | return moreleft; | 166 | return moreleft; |
167 | } | 167 | } |
168 | #else | 168 | #else |
169 | bool BuffDoc::getline(CDrawBuffer* buff, int wth, unsigned char _border) | 169 | bool BuffDoc::getline(CDrawBuffer* buff, int wth, unsigned char _border) |
170 | { | 170 | { |
171 | bool margindone = false; | 171 | bool margindone = false; |
172 | int w = wth-2*_border; | 172 | int w = wth-2*_border; |
173 | tchar ch = 32; | 173 | tchar ch = 32; |
174 | CStyle cs; | 174 | CStyle cs; |
175 | buff->empty(); | 175 | buff->empty(); |
176 | if (exp == NULL) | 176 | if (exp == NULL) |
177 | { | 177 | { |
178 | //(*buff)[0] = '\0'; | 178 | //(*buff)[0] = '\0'; |
179 | buff->empty(); | 179 | buff->empty(); |
180 | return false; | 180 | return false; |
181 | } | 181 | } |
182 | int len = 0, lastcheck = 0; | 182 | int len = 0, lastcheck = 0; |
183 | if (lastword.length() > 0) | 183 | if (lastword.length() > 0) |
184 | { | 184 | { |
185 | *buff = lastword; | 185 | *buff = lastword; |
186 | cs = lastword.laststyle(); | 186 | cs = lastword.laststyle(); |
187 | w -= buff->leftMargin() + buff->rightMargin(); | 187 | w -= buff->leftMargin() + buff->rightMargin(); |
188 | margindone = true; | 188 | margindone = true; |
189 | } | 189 | } |
190 | else buff->empty(); | 190 | else buff->empty(); |
191 | // //qDebug("Buff:%s Lastword:%s", (const char*)toQString(buff->data()), (const char*)toQString(lastword.data())); | 191 | // //odebug << "Buff:" << toQString(buff->data()) << " Lastword:" << toQString(lastword.data()) << "" << oendl; |
192 | lastcheck = len = buff->length(); | 192 | lastcheck = len = buff->length(); |
193 | unsigned int slen = buff->width(len); | 193 | unsigned int slen = buff->width(len); |
194 | if (slen > w) | 194 | if (slen > w) |
195 | { | 195 | { |
196 | for ( ; len > 1; len--) | 196 | for ( ; len > 1; len--) |
197 | { | 197 | { |
198 | if (buff->width(len) < w) break; | 198 | if (buff->width(len) < w) break; |
199 | } | 199 | } |
200 | // lastword = buff->data() + len - 1; | 200 | // lastword = buff->data() + len - 1; |
201 | laststartline = lastsizes[len-1]; | 201 | laststartline = lastsizes[len-1]; |
202 | for (int i = 0; i < buff->length(); i++) lastsizes[i] = lastsizes[i+len-1]; | 202 | for (int i = 0; i < buff->length(); i++) lastsizes[i] = lastsizes[i+len-1]; |
203 | // (*buff)[len-1] = '-'; | 203 | // (*buff)[len-1] = '-'; |
204 | if (len > 2) | 204 | if (len > 2) |
205 | { | 205 | { |
206 | lastword.setright(*buff, len - 1); | 206 | lastword.setright(*buff, len - 1); |
207 | buff->truncate(len-1); | 207 | buff->truncate(len-1); |
208 | buff->addch('-', cs); | 208 | buff->addch('-', cs); |
209 | (*buff)[len] = '\0'; | 209 | (*buff)[len] = '\0'; |
210 | } | 210 | } |
211 | 211 | ||
212 | else | 212 | else |
213 | { | 213 | { |
214 | lastword.empty(); | 214 | lastword.empty(); |
215 | (*buff)[len] = '\0'; | 215 | (*buff)[len] = '\0'; |
216 | } | 216 | } |
217 | buff->resize(); | 217 | buff->resize(); |
218 | return true; | 218 | return true; |
219 | } | 219 | } |
220 | if (lastispara) | 220 | if (lastispara) |
221 | { | 221 | { |
222 | lastispara = false; | 222 | lastispara = false; |
223 | // lastword[0] = '\0'; | 223 | // lastword[0] = '\0'; |
224 | lastword.empty(); | 224 | lastword.empty(); |
225 | len = buff->length(); | 225 | len = buff->length(); |
226 | while (buff->width(len) > w) len--; | 226 | while (buff->width(len) > w) len--; |
227 | // (*buff)[len] = '\0'; | 227 | // (*buff)[len] = '\0'; |
228 | buff->truncate(len); | 228 | buff->truncate(len); |
229 | laststartline = exp->locate(); | 229 | laststartline = exp->locate(); |
230 | buff->resize(); | 230 | buff->resize(); |
231 | return true; | 231 | return true; |
232 | } | 232 | } |
233 | lastispara = false; | 233 | lastispara = false; |
234 | for (int i = 0; i < len; i++) allsizes[i] = lastsizes[i]; | 234 | for (int i = 0; i < len; i++) allsizes[i] = lastsizes[i]; |
235 | while (slen < w) | 235 | while (slen < w) |
236 | { | 236 | { |
237 | lastcheck = len; | 237 | lastcheck = len; |
238 | allsizes[len] = exp->locate(); | 238 | allsizes[len] = exp->locate(); |
239 | getch(ch, cs); | 239 | getch(ch, cs); |
240 | while (ch != ' ' && ch != '\012' && ch != UEOF && len < 128) | 240 | while (ch != ' ' && ch != '\012' && ch != UEOF && len < 128) |
241 | { | 241 | { |
242 | len++; | 242 | len++; |
243 | buff->addch(ch,cs); | 243 | buff->addch(ch,cs); |
244 | allsizes[len] = exp->locate(); | 244 | allsizes[len] = exp->locate(); |
245 | getch(ch, cs); | 245 | getch(ch, cs); |
246 | } | 246 | } |
247 | (*buff)[len] = 0; | 247 | (*buff)[len] = 0; |
248 | slen = buff->width(len); | 248 | slen = buff->width(len); |
249 | len++; | 249 | len++; |
250 | buff->addch(' ', cs); | 250 | buff->addch(' ', cs); |
251 | if (!margindone) | 251 | if (!margindone) |
252 | { | 252 | { |
253 | w -= buff->leftMargin() + buff->rightMargin(); | 253 | w -= buff->leftMargin() + buff->rightMargin(); |
254 | margindone = true; | 254 | margindone = true; |
255 | } | 255 | } |
256 | allsizes[len] = exp->locate(); | 256 | allsizes[len] = exp->locate(); |
257 | if (slen < w && ch != ' ') | 257 | if (slen < w && ch != ' ') |
258 | { | 258 | { |
259 | lastcheck = len; | 259 | lastcheck = len; |
260 | break; | 260 | break; |
261 | } | 261 | } |
262 | lastispara = (ch == '\012'); | 262 | lastispara = (ch == '\012'); |
263 | } | 263 | } |
264 | (*buff)[len] = '\0'; | 264 | (*buff)[len] = '\0'; |
265 | // lastword = buff->data()+lastcheck; | 265 | // lastword = buff->data()+lastcheck; |
266 | #ifdef _WINDOWS | 266 | #ifdef _WINDOWS |
267 | lastword.setright(*buff, (lastcheck > 0) ? lastcheck : 1); | 267 | lastword.setright(*buff, (lastcheck > 0) ? lastcheck : 1); |
268 | { | 268 | { |
269 | int i; | 269 | int i; |
270 | for (i = 0; i < lastword.length(); i++) lastsizes[i] = allsizes[i+lastcheck]; | 270 | for (i = 0; i < lastword.length(); i++) lastsizes[i] = allsizes[i+lastcheck]; |
271 | } | 271 | } |
272 | #else | 272 | #else |
273 | lastword.setright(*buff, (lastcheck > 0) ? lastcheck : 1); | 273 | lastword.setright(*buff, (lastcheck > 0) ? lastcheck : 1); |
274 | for (int i = 0; i < lastword.length(); i++) lastsizes[i] = allsizes[i+lastcheck]; | 274 | for (int i = 0; i < lastword.length(); i++) lastsizes[i] = allsizes[i+lastcheck]; |
275 | #endif | 275 | #endif |
276 | if (lastcheck > 0) | 276 | if (lastcheck > 0) |
277 | { | 277 | { |
278 | laststartline = allsizes[lastcheck]; | 278 | laststartline = allsizes[lastcheck]; |
279 | // (*buff)[lastcheck-1] = '\0'; | 279 | // (*buff)[lastcheck-1] = '\0'; |
280 | buff->truncate(lastcheck-1); | 280 | buff->truncate(lastcheck-1); |
281 | } | 281 | } |
282 | else | 282 | else |
283 | { | 283 | { |
284 | laststartline = (lastcheck == len) ? exp->locate() : allsizes[lastcheck+1]; | 284 | laststartline = (lastcheck == len) ? exp->locate() : allsizes[lastcheck+1]; |
285 | // (*buff)[lastcheck] = '\0'; | 285 | // (*buff)[lastcheck] = '\0'; |
286 | buff->truncate(lastcheck); | 286 | buff->truncate(lastcheck); |
287 | } | 287 | } |
288 | // buff->frig(); | 288 | // buff->frig(); |
289 | buff->resize(); | 289 | buff->resize(); |
290 | if (ch == UEOF && buff->length() == 0) | 290 | if (ch == UEOF && buff->length() == 0) |
291 | { | 291 | { |
292 | buff->setEof(); | 292 | buff->setEof(); |
293 | return false; | 293 | return false; |
294 | } | 294 | } |
295 | return true; | 295 | return true; |
296 | } | 296 | } |
297 | #endif | 297 | #endif |
298 | 298 | ||
299 | bool BuffDoc::getline(CDrawBuffer* buff, int wth, int cw, unsigned char _border) | 299 | bool BuffDoc::getline(CDrawBuffer* buff, int wth, int cw, unsigned char _border) |
300 | { | 300 | { |
301 | int w = wth-2*_border; | 301 | int w = wth-2*_border; |
302 | buff->empty(); | 302 | buff->empty(); |
303 | if (exp == NULL) | 303 | if (exp == NULL) |
304 | { | 304 | { |
305 | return false; | 305 | return false; |
306 | } | 306 | } |
307 | tchar ch; | 307 | tchar ch; |
308 | CStyle cs; | 308 | CStyle cs; |
309 | int i = 1; | 309 | int i = 1; |
310 | while (i*cw < w-buff->offset(w,0)) | 310 | while (i*cw < w-buff->offset(w,0)) |
311 | { | 311 | { |
312 | getch(ch, cs); | 312 | getch(ch, cs); |
313 | if (ch == '\12' || ch == UEOF) break; | 313 | if (ch == '\12' || ch == UEOF) break; |
314 | buff->addch(ch,cs); | 314 | buff->addch(ch,cs); |
315 | i++; | 315 | i++; |
316 | } | 316 | } |
317 | buff->truncate(i); | 317 | buff->truncate(i); |
318 | laststartline = exp->locate(); | 318 | laststartline = exp->locate(); |
319 | buff->resize(); | 319 | buff->resize(); |
320 | return (ch != UEOF); | 320 | return (ch != UEOF); |
321 | } | 321 | } |
322 | 322 | ||
323 | int BuffDoc::openfile(QWidget* _parent, const char *src) | 323 | int BuffDoc::openfile(QWidget* _parent, const char *src) |
324 | { | 324 | { |
325 | // //qDebug("BuffDoc:Openfile:%s", src); | 325 | // //odebug << "BuffDoc:Openfile:" << src << "" << oendl; |
326 | // //qDebug("Trying aportis %x",exp); | 326 | // //odebug << "Trying aportis " << exp << "" << oendl; |
327 | if (exp != NULL) delete exp; | 327 | if (exp != NULL) delete exp; |
328 | lastword.empty(); | 328 | lastword.empty(); |
329 | lastsizes[0] = laststartline = 0; | 329 | lastsizes[0] = laststartline = 0; |
330 | #ifdef NEWLINEBREAK | 330 | #ifdef NEWLINEBREAK |
331 | lastispara = true; | 331 | lastispara = true; |
332 | #else | 332 | #else |
333 | lastispara = false; | 333 | lastispara = false; |
334 | #endif | 334 | #endif |
335 | /* | 335 | /* |
336 | exp = new Text; | 336 | exp = new Text; |
337 | int ret = exp->openfile(src); | 337 | int ret = exp->openfile(src); |
338 | */ | 338 | */ |
339 | 339 | ||
340 | exp = new Aportis; | 340 | exp = new Aportis; |
341 | int ret = exp->openfile(src); | 341 | int ret = exp->openfile(src); |
342 | if (ret == -1) | 342 | if (ret == -1) |
343 | { | 343 | { |
344 | delete exp; | 344 | delete exp; |
345 | exp = NULL; | 345 | exp = NULL; |
346 | return ret; | 346 | return ret; |
347 | } | 347 | } |
348 | if (ret == -2) | 348 | if (ret == -2) |
349 | { | 349 | { |
350 | 350 | ||
351 | delete exp; | 351 | delete exp; |
352 | exp = new ztxt; | 352 | exp = new ztxt; |
353 | ret = exp->openfile(src); | 353 | ret = exp->openfile(src); |
354 | } | 354 | } |
355 | #ifdef USENEF | 355 | #ifdef USENEF |
356 | if (ret != 0) | 356 | if (ret != 0) |
357 | { | 357 | { |
358 | 358 | ||
359 | delete exp; | 359 | delete exp; |
360 | exp = new CArriere; | 360 | exp = new CArriere; |
361 | ret = exp->openfile(src); | 361 | ret = exp->openfile(src); |
362 | } | 362 | } |
363 | if (ret != 0) | 363 | if (ret != 0) |
364 | { | 364 | { |
365 | 365 | ||
366 | delete exp; | 366 | delete exp; |
367 | exp = new CNEF; | 367 | exp = new CNEF; |
368 | ret = exp->openfile(src); | 368 | ret = exp->openfile(src); |
369 | } | 369 | } |
370 | #endif | 370 | #endif |
371 | if (ret != 0) | 371 | if (ret != 0) |
372 | { | 372 | { |
373 | 373 | ||
374 | delete exp; | 374 | delete exp; |
375 | exp = new CPlucker; | 375 | exp = new CPlucker; |
376 | ret = exp->openfile(src); | 376 | ret = exp->openfile(src); |
377 | } | 377 | } |
378 | if (ret != 0) | 378 | if (ret != 0) |
379 | { | 379 | { |
380 | delete exp; | 380 | delete exp; |
381 | //qDebug("Trying ppms"); | 381 | //odebug << "Trying ppms" << oendl; |
382 | exp = new ppm_expander; | 382 | exp = new ppm_expander; |
383 | ret = exp->openfile(src); | 383 | ret = exp->openfile(src); |
384 | } | 384 | } |
385 | if (ret != 0) | 385 | if (ret != 0) |
386 | { | 386 | { |
387 | delete exp; | 387 | delete exp; |
388 | exp = new Text; | 388 | exp = new Text; |
389 | // //qDebug("Trying text"); | 389 | // //odebug << "Trying text" << oendl; |
390 | ret = exp->openfile(src); | 390 | ret = exp->openfile(src); |
391 | } | 391 | } |
392 | 392 | ||
393 | if (ret != 0) | 393 | if (ret != 0) |
394 | { | 394 | { |
395 | delete exp; | 395 | delete exp; |
396 | QMessageBox::information(_parent, PROGNAME, "Unknown file compression type","Try another file"); | 396 | QMessageBox::information(_parent, PROGNAME, "Unknown file compression type","Try another file"); |
397 | return ret; | 397 | return ret; |
398 | } | 398 | } |
399 | // //qDebug("Doing final open:%x:%x",exp,filt); | 399 | // //odebug << "Doing final open:" << exp << ":" << filt << "" << oendl; |
400 | 400 | ||
401 | lastword.empty(); | 401 | lastword.empty(); |
402 | lastsizes[0] = laststartline = 0; | 402 | lastsizes[0] = laststartline = 0; |
403 | #ifdef NEWLINEBREAK | 403 | #ifdef NEWLINEBREAK |
404 | lastispara = true; | 404 | lastispara = true; |
405 | #else | 405 | #else |
406 | lastispara = false; | 406 | lastispara = false; |
407 | #endif | 407 | #endif |
408 | exp->locate(0); | 408 | exp->locate(0); |
409 | filt->setsource(exp); | 409 | filt->setsource(exp); |
410 | // //qDebug("BuffDoc:file opened"); | 410 | // //odebug << "BuffDoc:file opened" << oendl; |
411 | return 0; | 411 | return 0; |
412 | } | 412 | } |
diff --git a/noncore/apps/opie-reader/CDrawBuffer.cpp b/noncore/apps/opie-reader/CDrawBuffer.cpp index ec36fb2..b137ac3 100644 --- a/noncore/apps/opie-reader/CDrawBuffer.cpp +++ b/noncore/apps/opie-reader/CDrawBuffer.cpp | |||
@@ -1,546 +1,546 @@ | |||
1 | #include "CDrawBuffer.h" | 1 | #include "CDrawBuffer.h" |
2 | #include "FontControl.h" | 2 | #include "FontControl.h" |
3 | #include <qpainter.h> | 3 | #include <qpainter.h> |
4 | #include <qimage.h> | 4 | #include <qimage.h> |
5 | 5 | ||
6 | CDrawBuffer::~CDrawBuffer() | 6 | CDrawBuffer::~CDrawBuffer() |
7 | { | 7 | { |
8 | while (!segs.isEmpty()) segs.erase(0); | 8 | while (!segs.isEmpty()) segs.erase(0); |
9 | } | 9 | } |
10 | 10 | ||
11 | void CDrawBuffer::setright(CDrawBuffer& rhs, int f) | 11 | void CDrawBuffer::setright(CDrawBuffer& rhs, int f) |
12 | { | 12 | { |
13 | int i; | 13 | int i; |
14 | len = rhs.len; | 14 | len = rhs.len; |
15 | fc = rhs.fc; | 15 | fc = rhs.fc; |
16 | m_maxstyle = m_ascent = m_descent = m_lineSpacing = m_lineExtraSpacing = 0; | 16 | m_maxstyle = m_ascent = m_descent = m_lineSpacing = m_lineExtraSpacing = 0; |
17 | while (!segs.isEmpty()) | 17 | while (!segs.isEmpty()) |
18 | { | 18 | { |
19 | segs.erase(0); | 19 | segs.erase(0); |
20 | } | 20 | } |
21 | for (CList<textsegment>::iterator iter = rhs.segs.begin(); iter != rhs.segs.end(); ) | 21 | for (CList<textsegment>::iterator iter = rhs.segs.begin(); iter != rhs.segs.end(); ) |
22 | { | 22 | { |
23 | CList<textsegment>::iterator next = iter; | 23 | CList<textsegment>::iterator next = iter; |
24 | iter++; | 24 | iter++; |
25 | if (iter == rhs.segs.end() || iter->start > f) | 25 | if (iter == rhs.segs.end() || iter->start > f) |
26 | { | 26 | { |
27 | int st = next->start-f; | 27 | int st = next->start-f; |
28 | if (st < 0) st = 0; | 28 | if (st < 0) st = 0; |
29 | 29 | ||
30 | CStyle _style = next->style; | 30 | CStyle _style = next->style; |
31 | 31 | ||
32 | segs.push_back(textsegment(st,next->style)); | 32 | segs.push_back(textsegment(st,next->style)); |
33 | } | 33 | } |
34 | } | 34 | } |
35 | for (i = f; rhs[i] != '\0'; i++) (*this)[i-f] = rhs[i]; | 35 | for (i = f; rhs[i] != '\0'; i++) (*this)[i-f] = rhs[i]; |
36 | (*this)[i-f] = '\0'; | 36 | (*this)[i-f] = '\0'; |
37 | len = i; | 37 | len = i; |
38 | } | 38 | } |
39 | 39 | ||
40 | CDrawBuffer& CDrawBuffer::operator=(CDrawBuffer& rhs) | 40 | CDrawBuffer& CDrawBuffer::operator=(CDrawBuffer& rhs) |
41 | { | 41 | { |
42 | int i; | 42 | int i; |
43 | // //qDebug("Trying 2"); | 43 | // //odebug << "Trying 2" << oendl; |
44 | len = rhs.len; | 44 | len = rhs.len; |
45 | m_maxstyle = rhs.m_maxstyle; | 45 | m_maxstyle = rhs.m_maxstyle; |
46 | m_ascent = rhs.m_ascent; | 46 | m_ascent = rhs.m_ascent; |
47 | m_descent = rhs.m_descent; | 47 | m_descent = rhs.m_descent; |
48 | m_lineSpacing = rhs.m_lineSpacing; | 48 | m_lineSpacing = rhs.m_lineSpacing; |
49 | m_lineExtraSpacing = rhs.m_lineExtraSpacing; | 49 | m_lineExtraSpacing = rhs.m_lineExtraSpacing; |
50 | while (!segs.isEmpty()) | 50 | while (!segs.isEmpty()) |
51 | { | 51 | { |
52 | segs.erase(0); | 52 | segs.erase(0); |
53 | } | 53 | } |
54 | for (CList<textsegment>::iterator iter = rhs.segs.begin(); iter != rhs.segs.end(); iter++) | 54 | for (CList<textsegment>::iterator iter = rhs.segs.begin(); iter != rhs.segs.end(); iter++) |
55 | { | 55 | { |
56 | segs.push_back(*iter); | 56 | segs.push_back(*iter); |
57 | } | 57 | } |
58 | for (i = 0; rhs[i] != '\0'; i++) (*this)[i] = rhs[i]; | 58 | for (i = 0; rhs[i] != '\0'; i++) (*this)[i] = rhs[i]; |
59 | (*this)[i] = '\0'; | 59 | (*this)[i] = '\0'; |
60 | len = i; | 60 | len = i; |
61 | // //qDebug("Tried 2"); | 61 | // //odebug << "Tried 2" << oendl; |
62 | return *this; | 62 | return *this; |
63 | } | 63 | } |
64 | 64 | ||
65 | CDrawBuffer& CDrawBuffer::operator=(const tchar*sztmp) | 65 | CDrawBuffer& CDrawBuffer::operator=(const tchar*sztmp) |
66 | { | 66 | { |
67 | int i; | 67 | int i; |
68 | while (!segs.isEmpty()) | 68 | while (!segs.isEmpty()) |
69 | { | 69 | { |
70 | segs.erase(0); | 70 | segs.erase(0); |
71 | } | 71 | } |
72 | segs.push_back(textsegment(0, CStyle())); | 72 | segs.push_back(textsegment(0, CStyle())); |
73 | for (i = 0; sztmp[i] != '\0'; i++) (*this)[i] = sztmp[i]; | 73 | for (i = 0; sztmp[i] != '\0'; i++) (*this)[i] = sztmp[i]; |
74 | (*this)[i] = '\0'; | 74 | (*this)[i] = '\0'; |
75 | len = i; | 75 | len = i; |
76 | return *this; | 76 | return *this; |
77 | } | 77 | } |
78 | 78 | ||
79 | void CDrawBuffer::empty() | 79 | void CDrawBuffer::empty() |
80 | { | 80 | { |
81 | m_bSop = false; | 81 | m_bSop = false; |
82 | m_bEop = false; | 82 | m_bEop = false; |
83 | len = 0; | 83 | len = 0; |
84 | (*this)[0] = 0; | 84 | (*this)[0] = 0; |
85 | while (!segs.isEmpty()) | 85 | while (!segs.isEmpty()) |
86 | { | 86 | { |
87 | segs.erase(0); | 87 | segs.erase(0); |
88 | } | 88 | } |
89 | segs.push_back(textsegment(0,CStyle())); | 89 | segs.push_back(textsegment(0,CStyle())); |
90 | m_maxstyle = m_ascent = m_descent = m_lineSpacing = m_lineExtraSpacing = 0; | 90 | m_maxstyle = m_ascent = m_descent = m_lineSpacing = m_lineExtraSpacing = 0; |
91 | m_bEof = false; | 91 | m_bEof = false; |
92 | } | 92 | } |
93 | 93 | ||
94 | void CDrawBuffer::addch(tchar ch, CStyle _style/* = ucFontBase*/) | 94 | void CDrawBuffer::addch(tchar ch, CStyle _style/* = ucFontBase*/) |
95 | { | 95 | { |
96 | if (len == 0) | 96 | if (len == 0) |
97 | { | 97 | { |
98 | segs.first().start = 0; | 98 | segs.first().start = 0; |
99 | segs.first().style = _style; | 99 | segs.first().style = _style; |
100 | } | 100 | } |
101 | else if (_style != segs.last().style) | 101 | else if (_style != segs.last().style) |
102 | { | 102 | { |
103 | segs.push_back(textsegment(len, _style)); | 103 | segs.push_back(textsegment(len, _style)); |
104 | } | 104 | } |
105 | (*this)[len++] = ch; | 105 | (*this)[len++] = ch; |
106 | } | 106 | } |
107 | 107 | ||
108 | void CDrawBuffer::truncate(int n) | 108 | void CDrawBuffer::truncate(int n) |
109 | { | 109 | { |
110 | len = n; | 110 | len = n; |
111 | (*this)[n] = 0; | 111 | (*this)[n] = 0; |
112 | } | 112 | } |
113 | 113 | ||
114 | int CDrawBuffer::width(int numchars, bool onscreen, int scwidth, unsigned char _border) | 114 | int CDrawBuffer::width(int numchars, bool onscreen, int scwidth, unsigned char _border) |
115 | { | 115 | { |
116 | int gzoom = fc->gzoom(); | 116 | int gzoom = fc->gzoom(); |
117 | int currentx = 0, end = 0; | 117 | int currentx = 0, end = 0; |
118 | QString text = (numchars < 0) ? toQString(data()) : toQString(data(), numchars); | 118 | QString text = (numchars < 0) ? toQString(data()) : toQString(data(), numchars); |
119 | CList<textsegment>::iterator textstart = segs.begin(); | 119 | CList<textsegment>::iterator textstart = segs.begin(); |
120 | int extraspace = 0; | 120 | int extraspace = 0; |
121 | bool just = (onscreen && !m_bEop && textstart->style.getJustify() == m_AlignJustify); | 121 | bool just = (onscreen && !m_bEop && textstart->style.getJustify() == m_AlignJustify); |
122 | int spaces = 0; | 122 | int spaces = 0; |
123 | int spacesofar = 0; | 123 | int spacesofar = 0; |
124 | int spacenumber = 0; | 124 | int spacenumber = 0; |
125 | int nonspace = 0; | 125 | int nonspace = 0; |
126 | if (just) | 126 | if (just) |
127 | { | 127 | { |
128 | for (int i = 0; i < len; i++) | 128 | for (int i = 0; i < len; i++) |
129 | { | 129 | { |
130 | if ((*this)[i] != ' ') | 130 | if ((*this)[i] != ' ') |
131 | { | 131 | { |
132 | nonspace = i; | 132 | nonspace = i; |
133 | break; | 133 | break; |
134 | } | 134 | } |
135 | } | 135 | } |
136 | #ifdef _WINDOWS | 136 | #ifdef _WINDOWS |
137 | for (i = nonspace; i < len; i++) | 137 | for (i = nonspace; i < len; i++) |
138 | #else | 138 | #else |
139 | for (int i = nonspace; i < len; i++) | 139 | for (int i = nonspace; i < len; i++) |
140 | #endif | 140 | #endif |
141 | { | 141 | { |
142 | if ((*this)[i] == ' ') | 142 | if ((*this)[i] == ' ') |
143 | { | 143 | { |
144 | spaces++; | 144 | spaces++; |
145 | } | 145 | } |
146 | } | 146 | } |
147 | if (spaces == 0) | 147 | if (spaces == 0) |
148 | { | 148 | { |
149 | just = false; | 149 | just = false; |
150 | } | 150 | } |
151 | else | 151 | else |
152 | { | 152 | { |
153 | extraspace = (scwidth - 2*_border - rightMargin() - leftMargin() - width()); | 153 | extraspace = (scwidth - 2*_border - rightMargin() - leftMargin() - width()); |
154 | if (extraspace == 0) just = false; | 154 | if (extraspace == 0) just = false; |
155 | } | 155 | } |
156 | } | 156 | } |
157 | CList<textsegment>::iterator textend = textstart; | 157 | CList<textsegment>::iterator textend = textstart; |
158 | do | 158 | do |
159 | { | 159 | { |
160 | textend++; | 160 | textend++; |
161 | end = (textend != segs.end()) ? textend->start : len; | 161 | end = (textend != segs.end()) ? textend->start : len; |
162 | if (numchars >= 0 && end > numchars) | 162 | if (numchars >= 0 && end > numchars) |
163 | { | 163 | { |
164 | end = numchars; | 164 | end = numchars; |
165 | } | 165 | } |
166 | CStyle currentstyle = textstart->style; | 166 | CStyle currentstyle = textstart->style; |
167 | if (currentstyle.isPicture()) | 167 | if (currentstyle.isPicture()) |
168 | { | 168 | { |
169 | if (currentstyle.canScale()) | 169 | if (currentstyle.canScale()) |
170 | { | 170 | { |
171 | currentx += (gzoom*currentstyle.getPicture()->width())/100; | 171 | currentx += (gzoom*currentstyle.getPicture()->width())/100; |
172 | } | 172 | } |
173 | else | 173 | else |
174 | { | 174 | { |
175 | currentx += currentstyle.getPicture()->width(); | 175 | currentx += currentstyle.getPicture()->width(); |
176 | } | 176 | } |
177 | } | 177 | } |
178 | else | 178 | else |
179 | { | 179 | { |
180 | if (currentstyle.isMono() && !fc->hasCourier()) | 180 | if (currentstyle.isMono() && !fc->hasCourier()) |
181 | { | 181 | { |
182 | int cw = (7*fc->getsize(currentstyle))/10; | 182 | int cw = (7*fc->getsize(currentstyle))/10; |
183 | currentx += cw*(end-textstart->start); | 183 | currentx += cw*(end-textstart->start); |
184 | } | 184 | } |
185 | else | 185 | else |
186 | { | 186 | { |
187 | QFont f(currentstyle.isMono() ? QString(fc->fixedfontname()) : fc->name(), fc->getsize(currentstyle), (currentstyle.isBold()) ? QFont::Bold : QFont::Normal, (currentstyle.isItalic()) ); | 187 | QFont f(currentstyle.isMono() ? QString(fc->fixedfontname()) : fc->name(), fc->getsize(currentstyle), (currentstyle.isBold()) ? QFont::Bold : QFont::Normal, (currentstyle.isItalic()) ); |
188 | // f.setUnderline(currentstyle.isUnderline()); | 188 | // f.setUnderline(currentstyle.isUnderline()); |
189 | QString str = text.mid(textstart->start, end-textstart->start); | 189 | QString str = text.mid(textstart->start, end-textstart->start); |
190 | QFontMetrics fm(f); | 190 | QFontMetrics fm(f); |
191 | if (just) | 191 | if (just) |
192 | { | 192 | { |
193 | int lastspace = -1; | 193 | int lastspace = -1; |
194 | int nsp = 0; | 194 | int nsp = 0; |
195 | int cx = currentx; | 195 | int cx = currentx; |
196 | while ((nsp = str.find(" ", lastspace+1)) >= 0) | 196 | while ((nsp = str.find(" ", lastspace+1)) >= 0) |
197 | { | 197 | { |
198 | if (nsp > nonspace) | 198 | if (nsp > nonspace) |
199 | { | 199 | { |
200 | spacenumber++; | 200 | spacenumber++; |
201 | int nexttoadd = (extraspace*spacenumber+spaces/2)/spaces - spacesofar; | 201 | int nexttoadd = (extraspace*spacenumber+spaces/2)/spaces - spacesofar; |
202 | QString nstr = str.mid(lastspace+1, nsp-lastspace); | 202 | QString nstr = str.mid(lastspace+1, nsp-lastspace); |
203 | int lw = fm.width(nstr); | 203 | int lw = fm.width(nstr); |
204 | cx += lw+nexttoadd; | 204 | cx += lw+nexttoadd; |
205 | spacesofar += nexttoadd; | 205 | spacesofar += nexttoadd; |
206 | lastspace = nsp; | 206 | lastspace = nsp; |
207 | } | 207 | } |
208 | else | 208 | else |
209 | { | 209 | { |
210 | QString nstr = str.mid(lastspace+1, nsp-lastspace); | 210 | QString nstr = str.mid(lastspace+1, nsp-lastspace); |
211 | // qDebug("str:%s: last:%d new:%d nstr:%s:", (const char*)str, lastspace, nsp, (const char*)nstr); | 211 | // odebug << "str:" << str << ": last:" << lastspace << " new:" << nsp << " nstr:" << nstr << ":" << oendl; |
212 | int lw = fm.width(nstr); | 212 | int lw = fm.width(nstr); |
213 | cx += lw; | 213 | cx += lw; |
214 | lastspace = nsp; | 214 | lastspace = nsp; |
215 | } | 215 | } |
216 | } | 216 | } |
217 | QString nstr = str.right(str.length()-1-lastspace); | 217 | QString nstr = str.right(str.length()-1-lastspace); |
218 | cx += fm.width(nstr); | 218 | cx += fm.width(nstr); |
219 | currentx = cx; | 219 | currentx = cx; |
220 | } | 220 | } |
221 | else | 221 | else |
222 | { | 222 | { |
223 | currentx += fm.width(str); | 223 | currentx += fm.width(str); |
224 | } | 224 | } |
225 | } | 225 | } |
226 | } | 226 | } |
227 | textstart = textend; | 227 | textstart = textend; |
228 | } | 228 | } |
229 | while (textend != segs.end() && end != numchars && textstart->start < len); | 229 | while (textend != segs.end() && end != numchars && textstart->start < len); |
230 | return currentx; | 230 | return currentx; |
231 | } | 231 | } |
232 | 232 | ||
233 | int CDrawBuffer::leftMargin() | 233 | int CDrawBuffer::leftMargin() |
234 | { | 234 | { |
235 | return (segs.begin()->style.getLeftMargin()*fc->getsize(segs.begin()->style)+3)/6; | 235 | return (segs.begin()->style.getLeftMargin()*fc->getsize(segs.begin()->style)+3)/6; |
236 | } | 236 | } |
237 | 237 | ||
238 | int CDrawBuffer::rightMargin() | 238 | int CDrawBuffer::rightMargin() |
239 | { | 239 | { |
240 | return (segs.begin()->style.getRightMargin()*fc->getsize(segs.begin()->style)+3)/6; | 240 | return (segs.begin()->style.getRightMargin()*fc->getsize(segs.begin()->style)+3)/6; |
241 | } | 241 | } |
242 | 242 | ||
243 | int CDrawBuffer::offset(int scwidth, unsigned char _border) | 243 | int CDrawBuffer::offset(int scwidth, unsigned char _border) |
244 | { | 244 | { |
245 | int currentx = _border; | 245 | int currentx = _border; |
246 | switch(segs.begin()->style.getJustify()) | 246 | switch(segs.begin()->style.getJustify()) |
247 | { | 247 | { |
248 | case m_AlignRight: | 248 | case m_AlignRight: |
249 | { | 249 | { |
250 | currentx = scwidth - _border - rightMargin() - width(); | 250 | currentx = scwidth - _border - rightMargin() - width(); |
251 | } | 251 | } |
252 | break; | 252 | break; |
253 | case m_AlignCentre: | 253 | case m_AlignCentre: |
254 | { | 254 | { |
255 | currentx = ( | 255 | currentx = ( |
256 | scwidth + | 256 | scwidth + |
257 | leftMargin() - rightMargin() | 257 | leftMargin() - rightMargin() |
258 | - width())/2; | 258 | - width())/2; |
259 | } | 259 | } |
260 | break; | 260 | break; |
261 | case m_AlignJustify: | 261 | case m_AlignJustify: |
262 | case m_AlignLeft: | 262 | case m_AlignLeft: |
263 | currentx = _border + leftMargin(); | 263 | currentx = _border + leftMargin(); |
264 | break; | 264 | break; |
265 | } | 265 | } |
266 | return currentx; | 266 | return currentx; |
267 | } | 267 | } |
268 | 268 | ||
269 | void CDrawBuffer::render(QPainter* _p, int _y, bool _bMono, int _charWidth, int scwidth, unsigned char _border) | 269 | void CDrawBuffer::render(QPainter* _p, int _y, bool _bMono, int _charWidth, int scwidth, unsigned char _border) |
270 | { | 270 | { |
271 | int gzoom = fc->gzoom(); | 271 | int gzoom = fc->gzoom(); |
272 | int currentx = offset(scwidth, _border); | 272 | int currentx = offset(scwidth, _border); |
273 | QString text = toQString(data()); | 273 | QString text = toQString(data()); |
274 | CList<textsegment>::iterator textstart = segs.begin(); | 274 | CList<textsegment>::iterator textstart = segs.begin(); |
275 | int extraspace = 0; | 275 | int extraspace = 0; |
276 | bool just = (!m_bEop && textstart->style.getJustify() == m_AlignJustify); | 276 | bool just = (!m_bEop && textstart->style.getJustify() == m_AlignJustify); |
277 | int spaces = 0; | 277 | int spaces = 0; |
278 | int spacesofar = 0; | 278 | int spacesofar = 0; |
279 | int spacenumber = 0; | 279 | int spacenumber = 0; |
280 | int nonspace = 0; | 280 | int nonspace = 0; |
281 | if (just) | 281 | if (just) |
282 | { | 282 | { |
283 | for (int i = 0; i < len; i++) | 283 | for (int i = 0; i < len; i++) |
284 | { | 284 | { |
285 | if ((*this)[i] != ' ') | 285 | if ((*this)[i] != ' ') |
286 | { | 286 | { |
287 | nonspace = i; | 287 | nonspace = i; |
288 | break; | 288 | break; |
289 | } | 289 | } |
290 | } | 290 | } |
291 | #ifdef _WINDOWS | 291 | #ifdef _WINDOWS |
292 | for (i = nonspace; i < len; i++) | 292 | for (i = nonspace; i < len; i++) |
293 | #else | 293 | #else |
294 | for (int i = nonspace; i < len; i++) | 294 | for (int i = nonspace; i < len; i++) |
295 | #endif | 295 | #endif |
296 | { | 296 | { |
297 | if ((*this)[i] == ' ') | 297 | if ((*this)[i] == ' ') |
298 | { | 298 | { |
299 | spaces++; | 299 | spaces++; |
300 | } | 300 | } |
301 | } | 301 | } |
302 | if (spaces == 0) | 302 | if (spaces == 0) |
303 | { | 303 | { |
304 | just = false; | 304 | just = false; |
305 | } | 305 | } |
306 | else | 306 | else |
307 | { | 307 | { |
308 | extraspace = (scwidth - 2*_border - rightMargin() - leftMargin() - width()); | 308 | extraspace = (scwidth - 2*_border - rightMargin() - leftMargin() - width()); |
309 | if (extraspace == 0) just = false; | 309 | if (extraspace == 0) just = false; |
310 | } | 310 | } |
311 | } | 311 | } |
312 | CList<textsegment>::iterator textend = textstart; | 312 | CList<textsegment>::iterator textend = textstart; |
313 | do | 313 | do |
314 | { | 314 | { |
315 | textend++; | 315 | textend++; |
316 | int end = (textend != segs.end()) ? textend->start : len; | 316 | int end = (textend != segs.end()) ? textend->start : len; |
317 | CStyle currentstyle = textstart->style; | 317 | CStyle currentstyle = textstart->style; |
318 | QFont f((currentstyle.isMono() && fc->hasCourier()) ? fc->fixedfontname() : fc->name(), fc->getsize(currentstyle), (currentstyle.isBold()) ? QFont::Bold : QFont::Normal, (currentstyle.isItalic()) ); | 318 | QFont f((currentstyle.isMono() && fc->hasCourier()) ? fc->fixedfontname() : fc->name(), fc->getsize(currentstyle), (currentstyle.isBold()) ? QFont::Bold : QFont::Normal, (currentstyle.isItalic()) ); |
319 | //f.setUnderline(currentstyle.isUnderline()); | 319 | //f.setUnderline(currentstyle.isUnderline()); |
320 | //if (currentstyle.isUnderline()) qDebug("UNDERLINE"); | 320 | //if (currentstyle.isUnderline()) odebug << "UNDERLINE" << oendl; |
321 | _p->setFont(f); | 321 | _p->setFont(f); |
322 | QString str = text.mid(textstart->start, end-textstart->start); | 322 | QString str = text.mid(textstart->start, end-textstart->start); |
323 | #if defined(OPIE) || !defined(USEQPE) | 323 | #if defined(OPIE) || !defined(USEQPE) |
324 | _p->setPen(QPen(QColor(currentstyle.Red(), currentstyle.Green(), currentstyle.Blue()), fc->getsize(currentstyle)/100)); | 324 | _p->setPen(QPen(QColor(currentstyle.Red(), currentstyle.Green(), currentstyle.Blue()), fc->getsize(currentstyle)/100)); |
325 | #else | 325 | #else |
326 | _p->setPen(QPen(QColor(currentstyle.Red(), currentstyle.Green(), currentstyle.Blue()), fc->getsize(currentstyle)/10)); | 326 | _p->setPen(QPen(QColor(currentstyle.Red(), currentstyle.Green(), currentstyle.Blue()), fc->getsize(currentstyle)/10)); |
327 | #endif | 327 | #endif |
328 | int voffset = currentstyle.getVOffset()*fc->getsize(currentstyle)/2; | 328 | int voffset = currentstyle.getVOffset()*fc->getsize(currentstyle)/2; |
329 | if (_bMono) | 329 | if (_bMono) |
330 | { | 330 | { |
331 | if (currentstyle.isUnderline()) | 331 | if (currentstyle.isUnderline()) |
332 | { | 332 | { |
333 | _p->drawLine( currentx, _y+voffset, currentx + str.length()*_charWidth, _y+voffset); | 333 | _p->drawLine( currentx, _y+voffset, currentx + str.length()*_charWidth, _y+voffset); |
334 | } | 334 | } |
335 | if (currentstyle.isStrikethru()) | 335 | if (currentstyle.isStrikethru()) |
336 | { | 336 | { |
337 | int ascent = fc->ascent(currentstyle)/3; | 337 | int ascent = fc->ascent(currentstyle)/3; |
338 | _p->drawLine( currentx, _y-ascent+voffset, currentx + str.length()*_charWidth, _y-ascent+voffset); | 338 | _p->drawLine( currentx, _y-ascent+voffset, currentx + str.length()*_charWidth, _y-ascent+voffset); |
339 | } | 339 | } |
340 | for (int i = 0; i < str.length(); i++) | 340 | for (int i = 0; i < str.length(); i++) |
341 | { | 341 | { |
342 | _p->drawText( currentx + i*_charWidth, _y+voffset, QString(str[i])); | 342 | _p->drawText( currentx + i*_charWidth, _y+voffset, QString(str[i])); |
343 | } | 343 | } |
344 | currentx += str.length()*_charWidth; | 344 | currentx += str.length()*_charWidth; |
345 | } | 345 | } |
346 | else | 346 | else |
347 | { | 347 | { |
348 | if (currentstyle.isPicture()) | 348 | if (currentstyle.isPicture()) |
349 | { | 349 | { |
350 | int ht = (gzoom*currentstyle.getPicture()->height())/100; | 350 | int ht = (gzoom*currentstyle.getPicture()->height())/100; |
351 | int wt = (gzoom*currentstyle.getPicture()->width())/100; | 351 | int wt = (gzoom*currentstyle.getPicture()->width())/100; |
352 | int ascent = fc->ascent(currentstyle)/2; | 352 | int ascent = fc->ascent(currentstyle)/2; |
353 | int yoffset = ht/2 + ascent; | 353 | int yoffset = ht/2 + ascent; |
354 | 354 | ||
355 | QPixmap pc; | 355 | QPixmap pc; |
356 | if (gzoom != 100 && currentstyle.canScale()) | 356 | if (gzoom != 100 && currentstyle.canScale()) |
357 | { | 357 | { |
358 | QImage im = currentstyle.getPicture()->smoothScale(wt,ht); | 358 | QImage im = currentstyle.getPicture()->smoothScale(wt,ht); |
359 | pc.convertFromImage(im); | 359 | pc.convertFromImage(im); |
360 | } | 360 | } |
361 | else | 361 | else |
362 | { | 362 | { |
363 | pc.convertFromImage(*currentstyle.getPicture()); | 363 | pc.convertFromImage(*currentstyle.getPicture()); |
364 | } | 364 | } |
365 | _p->drawPixmap( currentx, _y-yoffset, pc ); | 365 | _p->drawPixmap( currentx, _y-yoffset, pc ); |
366 | currentx += wt; | 366 | currentx += wt; |
367 | } | 367 | } |
368 | else | 368 | else |
369 | { | 369 | { |
370 | if (currentstyle.isMono() && !fc->hasCourier()) | 370 | if (currentstyle.isMono() && !fc->hasCourier()) |
371 | { | 371 | { |
372 | int cw = (7*fc->getsize(currentstyle))/10; | 372 | int cw = (7*fc->getsize(currentstyle))/10; |
373 | int w = cw*(end-textstart->start); | 373 | int w = cw*(end-textstart->start); |
374 | if (currentstyle.isUnderline()) | 374 | if (currentstyle.isUnderline()) |
375 | { | 375 | { |
376 | _p->drawLine( currentx, _y+voffset, currentx + w, _y+voffset); | 376 | _p->drawLine( currentx, _y+voffset, currentx + w, _y+voffset); |
377 | } | 377 | } |
378 | if (currentstyle.isStrikethru()) | 378 | if (currentstyle.isStrikethru()) |
379 | { | 379 | { |
380 | int ascent = fc->ascent(currentstyle)/3; | 380 | int ascent = fc->ascent(currentstyle)/3; |
381 | _p->drawLine( currentx, _y-ascent+voffset, currentx + w, _y-ascent+voffset); | 381 | _p->drawLine( currentx, _y-ascent+voffset, currentx + w, _y-ascent+voffset); |
382 | } | 382 | } |
383 | QString str = text.mid(textstart->start, end-textstart->start); | 383 | QString str = text.mid(textstart->start, end-textstart->start); |
384 | 384 | ||
385 | for (unsigned int i = 0; i < str.length(); i++) | 385 | for (unsigned int i = 0; i < str.length(); i++) |
386 | { | 386 | { |
387 | #ifdef _WINDOWS | 387 | #ifdef _WINDOWS |
388 | _p->drawText( currentx, _y+voffset, QString(str.at(i))); | 388 | _p->drawText( currentx, _y+voffset, QString(str.at(i))); |
389 | #else | 389 | #else |
390 | _p->drawText( currentx, _y+voffset, QString(str[i])); | 390 | _p->drawText( currentx, _y+voffset, QString(str[i])); |
391 | #endif | 391 | #endif |
392 | currentx += cw; | 392 | currentx += cw; |
393 | } | 393 | } |
394 | } | 394 | } |
395 | else | 395 | else |
396 | { | 396 | { |
397 | QFontMetrics fm(f); | 397 | QFontMetrics fm(f); |
398 | int w; | 398 | int w; |
399 | if (just) | 399 | if (just) |
400 | { | 400 | { |
401 | int lastspace = -1; | 401 | int lastspace = -1; |
402 | int nsp = 0; | 402 | int nsp = 0; |
403 | int cx = currentx; | 403 | int cx = currentx; |
404 | while ((nsp = str.find(" ", lastspace+1)) >= 0) | 404 | while ((nsp = str.find(" ", lastspace+1)) >= 0) |
405 | { | 405 | { |
406 | if (nsp+textstart->start >= nonspace) | 406 | if (nsp+textstart->start >= nonspace) |
407 | { | 407 | { |
408 | spacenumber++; | 408 | spacenumber++; |
409 | int nexttoadd = (extraspace*spacenumber+spaces/2)/spaces - spacesofar; | 409 | int nexttoadd = (extraspace*spacenumber+spaces/2)/spaces - spacesofar; |
410 | QString nstr = str.mid(lastspace+1, nsp-lastspace); | 410 | QString nstr = str.mid(lastspace+1, nsp-lastspace); |
411 | // qDebug("str:%s: last:%d new:%d nstr:%s:", (const char*)str, lastspace, nsp, (const char*)nstr); | 411 | // odebug << "str:" << str << ": last:" << lastspace << " new:" << nsp << " nstr:" << nstr << ":" << oendl; |
412 | int lw = fm.width(nstr); | 412 | int lw = fm.width(nstr); |
413 | _p->drawText( cx, _y+voffset, nstr); | 413 | _p->drawText( cx, _y+voffset, nstr); |
414 | cx += lw+nexttoadd; | 414 | cx += lw+nexttoadd; |
415 | spacesofar += nexttoadd; | 415 | spacesofar += nexttoadd; |
416 | lastspace = nsp; | 416 | lastspace = nsp; |
417 | } | 417 | } |
418 | else | 418 | else |
419 | { | 419 | { |
420 | QString nstr = str.mid(lastspace+1, nsp-lastspace); | 420 | QString nstr = str.mid(lastspace+1, nsp-lastspace); |
421 | // qDebug("str:%s: last:%d new:%d nstr:%s:", (const char*)str, lastspace, nsp, (const char*)nstr); | 421 | // odebug << "str:" << str << ": last:" << lastspace << " new:" << nsp << " nstr:" << nstr << ":" << oendl; |
422 | int lw = fm.width(nstr); | 422 | int lw = fm.width(nstr); |
423 | _p->drawText( cx, _y+voffset, nstr); | 423 | _p->drawText( cx, _y+voffset, nstr); |
424 | cx += lw; | 424 | cx += lw; |
425 | lastspace = nsp; | 425 | lastspace = nsp; |
426 | } | 426 | } |
427 | } | 427 | } |
428 | QString nstr = str.right(str.length()-1-lastspace); | 428 | QString nstr = str.right(str.length()-1-lastspace); |
429 | _p->drawText( cx, _y+voffset, nstr); | 429 | _p->drawText( cx, _y+voffset, nstr); |
430 | cx += fm.width(nstr); | 430 | cx += fm.width(nstr); |
431 | w = cx - currentx; | 431 | w = cx - currentx; |
432 | } | 432 | } |
433 | else | 433 | else |
434 | { | 434 | { |
435 | _p->drawText( currentx, _y+voffset, str); | 435 | _p->drawText( currentx, _y+voffset, str); |
436 | w = fm.width(str); | 436 | w = fm.width(str); |
437 | } | 437 | } |
438 | if (currentstyle.isUnderline()) | 438 | if (currentstyle.isUnderline()) |
439 | { | 439 | { |
440 | _p->drawLine( currentx, _y+voffset, currentx + w, _y+voffset); | 440 | _p->drawLine( currentx, _y+voffset, currentx + w, _y+voffset); |
441 | } | 441 | } |
442 | if (currentstyle.isStrikethru()) | 442 | if (currentstyle.isStrikethru()) |
443 | { | 443 | { |
444 | int ascent = fc->ascent(currentstyle)/3; | 444 | int ascent = fc->ascent(currentstyle)/3; |
445 | _p->drawLine( currentx, _y-ascent+voffset, currentx + w, _y-ascent+voffset); | 445 | _p->drawLine( currentx, _y-ascent+voffset, currentx + w, _y-ascent+voffset); |
446 | } | 446 | } |
447 | currentx += w; | 447 | currentx += w; |
448 | } | 448 | } |
449 | } | 449 | } |
450 | } | 450 | } |
451 | textstart = textend; | 451 | textstart = textend; |
452 | } | 452 | } |
453 | while (textend != segs.end() && textstart->start < len); | 453 | while (textend != segs.end() && textstart->start < len); |
454 | } | 454 | } |
455 | 455 | ||
456 | CStyle CDrawBuffer::laststyle() | 456 | CStyle CDrawBuffer::laststyle() |
457 | { | 457 | { |
458 | return segs.last().style; | 458 | return segs.last().style; |
459 | } | 459 | } |
460 | 460 | ||
461 | linkType CDrawBuffer::getLinkType(int numchars, size_t& tgt) | 461 | linkType CDrawBuffer::getLinkType(int numchars, size_t& tgt) |
462 | { | 462 | { |
463 | int end = 0; | 463 | int end = 0; |
464 | CStyle currentstyle; | 464 | CStyle currentstyle; |
465 | CList<textsegment>::iterator textstart = segs.begin(); | 465 | CList<textsegment>::iterator textstart = segs.begin(); |
466 | CList<textsegment>::iterator textend = textstart; | 466 | CList<textsegment>::iterator textend = textstart; |
467 | do | 467 | do |
468 | { | 468 | { |
469 | textend++; | 469 | textend++; |
470 | end = (textend != segs.end()) ? textend->start : len; | 470 | end = (textend != segs.end()) ? textend->start : len; |
471 | currentstyle = textstart->style; | 471 | currentstyle = textstart->style; |
472 | /* | 472 | /* |
473 | if (currentstyle.isPicture()) qDebug("Passed thru picture"); | 473 | if (currentstyle.isPicture()) odebug << "Passed thru picture" << oendl; |
474 | if (currentstyle.getLink()) qDebug("Passed thru link"); | 474 | if (currentstyle.getLink()) odebug << "Passed thru link" << oendl; |
475 | //qDebug("islink:%d - %d", numchars, end); | 475 | //odebug << "islink:" << numchars << " - " << end << "" << oendl; |
476 | */ | 476 | */ |
477 | textstart = textend; | 477 | textstart = textend; |
478 | } | 478 | } |
479 | while (textend != segs.end() && end <= numchars); | 479 | while (textend != segs.end() && end <= numchars); |
480 | // if (currentstyle.isPicture()) qDebug("Clicked on picture"); | 480 | // if (currentstyle.isPicture()) odebug << "Clicked on picture" << oendl; |
481 | if (currentstyle.getPictureLink()) | 481 | if (currentstyle.getPictureLink()) |
482 | { | 482 | { |
483 | tgt = currentstyle.getPictureLinkData(); | 483 | tgt = currentstyle.getPictureLinkData(); |
484 | return ePicture; | 484 | return ePicture; |
485 | } | 485 | } |
486 | if (currentstyle.getLink()) | 486 | if (currentstyle.getLink()) |
487 | { | 487 | { |
488 | tgt = currentstyle.getData(); | 488 | tgt = currentstyle.getData(); |
489 | return eLink; | 489 | return eLink; |
490 | } | 490 | } |
491 | return eNone; | 491 | return eNone; |
492 | } | 492 | } |
493 | 493 | ||
494 | void CDrawBuffer::resize() | 494 | void CDrawBuffer::resize() |
495 | { | 495 | { |
496 | int gzoom = fc->gzoom(); | 496 | int gzoom = fc->gzoom(); |
497 | m_maxstyle = m_ascent = m_descent = m_lineSpacing = m_lineExtraSpacing = 0; | 497 | m_maxstyle = m_ascent = m_descent = m_lineSpacing = m_lineExtraSpacing = 0; |
498 | for (CList<textsegment>::iterator iter = segs.begin(); iter != segs.end() && iter->start <= len; ) | 498 | for (CList<textsegment>::iterator iter = segs.begin(); iter != segs.end() && iter->start <= len; ) |
499 | { | 499 | { |
500 | CList<textsegment>::iterator next = iter; | 500 | CList<textsegment>::iterator next = iter; |
501 | iter++; | 501 | iter++; |
502 | int st = next->start; | 502 | int st = next->start; |
503 | if (st < 0) st = 0; | 503 | if (st < 0) st = 0; |
504 | 504 | ||
505 | CStyle _style = next->style; | 505 | CStyle _style = next->style; |
506 | 506 | ||
507 | int linespacing, ascent, descent, extra; | 507 | int linespacing, ascent, descent, extra; |
508 | 508 | ||
509 | ascent = fc->ascent(_style); | 509 | ascent = fc->ascent(_style); |
510 | descent = fc->descent(_style); | 510 | descent = fc->descent(_style); |
511 | linespacing = fc->lineSpacing(_style); | 511 | linespacing = fc->lineSpacing(_style); |
512 | extra = linespacing - ascent - descent; | 512 | extra = linespacing - ascent - descent; |
513 | if (_style.isPicture() && _style.canScale()) | 513 | if (_style.isPicture() && _style.canScale()) |
514 | { | 514 | { |
515 | descent = ((gzoom*_style.getPicture()->height())/100-ascent)/2; | 515 | descent = ((gzoom*_style.getPicture()->height())/100-ascent)/2; |
516 | ascent = ((gzoom*_style.getPicture()->height())/100+ascent)/2; | 516 | ascent = ((gzoom*_style.getPicture()->height())/100+ascent)/2; |
517 | } | 517 | } |
518 | /* | 518 | /* |
519 | else if (fc != NULL) | 519 | else if (fc != NULL) |
520 | { | 520 | { |
521 | ascent = fc->ascent(_style); | 521 | ascent = fc->ascent(_style); |
522 | descent = fc->descent(_style); | 522 | descent = fc->descent(_style); |
523 | linespacing = fc->lineSpacing(_style); | 523 | linespacing = fc->lineSpacing(_style); |
524 | extra = linespacing - ascent - descent; | 524 | extra = linespacing - ascent - descent; |
525 | } | 525 | } |
526 | */ | 526 | */ |
527 | if (ascent > m_ascent) m_ascent = ascent; | 527 | if (ascent > m_ascent) m_ascent = ascent; |
528 | if (descent > m_descent) m_descent = descent; | 528 | if (descent > m_descent) m_descent = descent; |
529 | if (extra > m_lineExtraSpacing) m_lineExtraSpacing = extra; | 529 | if (extra > m_lineExtraSpacing) m_lineExtraSpacing = extra; |
530 | m_lineSpacing = m_ascent+m_descent+m_lineExtraSpacing; | 530 | m_lineSpacing = m_ascent+m_descent+m_lineExtraSpacing; |
531 | } | 531 | } |
532 | int lead = fc->getlead(); | 532 | int lead = fc->getlead(); |
533 | if (lead != 0) | 533 | if (lead != 0) |
534 | { | 534 | { |
535 | int xt = (lead*m_lineSpacing+5)/10; | 535 | int xt = (lead*m_lineSpacing+5)/10; |
536 | m_descent += xt; | 536 | m_descent += xt; |
537 | m_lineSpacing += xt; | 537 | m_lineSpacing += xt; |
538 | } | 538 | } |
539 | if (m_bSop) | 539 | if (m_bSop) |
540 | { | 540 | { |
541 | int xt = ((segs.begin()->style.getExtraSpace()+fc->getextraspace())*fc->getsize(segs.begin()->style)+5)/10; | 541 | int xt = ((segs.begin()->style.getExtraSpace()+fc->getextraspace())*fc->getsize(segs.begin()->style)+5)/10; |
542 | //qDebug("ExtraSpace:%d", xt); | 542 | //odebug << "ExtraSpace:" << xt << "" << oendl; |
543 | m_ascent += xt; | 543 | m_ascent += xt; |
544 | m_lineSpacing += xt; | 544 | m_lineSpacing += xt; |
545 | } | 545 | } |
546 | } | 546 | } |
diff --git a/noncore/apps/opie-reader/QTReader.cpp b/noncore/apps/opie-reader/QTReader.cpp index d64abb4..b356ba5 100644 --- a/noncore/apps/opie-reader/QTReader.cpp +++ b/noncore/apps/opie-reader/QTReader.cpp | |||
@@ -1,1554 +1,1554 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | ** $Id$ | 2 | ** $Id$ |
3 | ** | 3 | ** |
4 | ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. | 4 | ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. |
5 | ** | 5 | ** |
6 | ** This file is part of an example program for Qt. This example | 6 | ** This file is part of an example program for Qt. This example |
7 | ** program may be used, distributed and modified without limitation. | 7 | ** program may be used, distributed and modified without limitation. |
8 | ** | 8 | ** |
9 | *****************************************************************************/ | 9 | *****************************************************************************/ |
10 | 10 | ||
11 | #include "QTReader.h" | 11 | #include "QTReader.h" |
12 | #include "QTReaderApp.h" | 12 | #include "QTReaderApp.h" |
13 | #ifdef USEQPE | 13 | #ifdef USEQPE |
14 | #include <qpe/qpeapplication.h> | 14 | #include <qpe/qpeapplication.h> |
15 | #endif | 15 | #endif |
16 | #include <math.h> | 16 | #include <math.h> |
17 | #include <ctype.h> | 17 | #include <ctype.h> |
18 | #include <stdio.h> //for sprintf | 18 | #include <stdio.h> //for sprintf |
19 | #ifdef USEQPE | 19 | #ifdef USEQPE |
20 | #include <qpe/config.h> | 20 | #include <qpe/config.h> |
21 | #include <qpe/applnk.h> | 21 | #include <qpe/applnk.h> |
22 | #include <qpe/global.h> | 22 | #include <qpe/global.h> |
23 | #include <qpe/qcopenvelope_qws.h> | 23 | #include <qpe/qcopenvelope_qws.h> |
24 | #endif | 24 | #endif |
25 | 25 | ||
26 | #ifdef _UNICODE | 26 | #ifdef _UNICODE |
27 | const char *QTReader::fonts[] = { "unifont", "Courier", "Times", 0 }; | 27 | const char *QTReader::fonts[] = { "unifont", "Courier", "Times", 0 }; |
28 | #else | 28 | #else |
29 | const char *QTReader::fonts[] = { "Helvetica", "Courier", "Times", 0 }; | 29 | const char *QTReader::fonts[] = { "Helvetica", "Courier", "Times", 0 }; |
30 | #endif | 30 | #endif |
31 | //const int QTReader::fontsizes[] = { 8, 10, 12, 14, 18, 24, 30, 40, 50, 60, 70, 80, 90, 100, 0 }; | 31 | //const int QTReader::fontsizes[] = { 8, 10, 12, 14, 18, 24, 30, 40, 50, 60, 70, 80, 90, 100, 0 }; |
32 | 32 | ||
33 | //const tchar *QTReader::fonts[] = { "unifont", "fixed", "micro", "smoothtimes", "Courier", "Times", 0 }; | 33 | //const tchar *QTReader::fonts[] = { "unifont", "fixed", "micro", "smoothtimes", "Courier", "Times", 0 }; |
34 | //const int QTReader::fontsizes[] = {10,16,17,22,0}; | 34 | //const int QTReader::fontsizes[] = {10,16,17,22,0}; |
35 | //const tchar *QTReader::fonts[] = { "verdana", "Courier", "Times", 0 }; | 35 | //const tchar *QTReader::fonts[] = { "verdana", "Courier", "Times", 0 }; |
36 | //const int QTReader::fontsizes[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0}; | 36 | //const int QTReader::fontsizes[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0}; |
37 | 37 | ||
38 | tchar QTReader::pluckernextpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','n','e','x','t',' ','p','a','r','t',0 }; | 38 | tchar QTReader::pluckernextpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','n','e','x','t',' ','p','a','r','t',0 }; |
39 | tchar QTReader::jplucknextpart[] = { 'N','e','x','t',' ','P','a','r','t',' ','>','>',0 }; | 39 | tchar QTReader::jplucknextpart[] = { 'N','e','x','t',' ','P','a','r','t',' ','>','>',0 }; |
40 | //tchar QTReader::jplucknextpart[] = { 10,'#',10,'N','e','x','t',' ','P','a','r','t',' ','>','>',0 }; | 40 | //tchar QTReader::jplucknextpart[] = { 10,'#',10,'N','e','x','t',' ','P','a','r','t',' ','>','>',0 }; |
41 | 41 | ||
42 | QTReader::QTReader( QWidget *parent, const char *name, WFlags f) : | 42 | QTReader::QTReader( QWidget *parent, const char *name, WFlags f) : |
43 | QWidget(parent, name, f), | 43 | QWidget(parent, name, f), |
44 | m_delay(100), | 44 | m_delay(100), |
45 | m_scrolldy1(0), | 45 | m_scrolldy1(0), |
46 | m_scrolldy2(0), | 46 | m_scrolldy2(0), |
47 | m_autoScroll(false), | 47 | m_autoScroll(false), |
48 | //textarray(NULL), | 48 | //textarray(NULL), |
49 | //locnarray(NULL), | 49 | //locnarray(NULL), |
50 | numlines(0), | 50 | numlines(0), |
51 | m_fontname("unifont"), | 51 | m_fontname("unifont"), |
52 | m_fm(NULL), | 52 | m_fm(NULL), |
53 | mouseUpOn(true), | 53 | mouseUpOn(true), |
54 | m_twotouch(true), | 54 | m_twotouch(true), |
55 | m_touchone(true), | 55 | m_touchone(true), |
56 | bDoUpdates(false), | 56 | bDoUpdates(false), |
57 | #ifdef _SCROLLPIPE | 57 | #ifdef _SCROLLPIPE |
58 | m_pipeout(NULL), | 58 | m_pipeout(NULL), |
59 | #endif | 59 | #endif |
60 | m_border(2) | 60 | m_border(2) |
61 | { | 61 | { |
62 | m_overlap = 1; | 62 | m_overlap = 1; |
63 | setKeyCompression ( true ); | 63 | setKeyCompression ( true ); |
64 | // init(); | 64 | // init(); |
65 | } | 65 | } |
66 | 66 | ||
67 | /* | 67 | /* |
68 | QTReader::QTReader( const QString& filename, QWidget *parent=0, const tchar *name=0, WFlags f = 0) : | 68 | QTReader::QTReader( const QString& filename, QWidget *parent=0, const tchar *name=0, WFlags f = 0) : |
69 | QWidget(parent, name, f), | 69 | QWidget(parent, name, f), |
70 | m_textfont(0), | 70 | m_textfont(0), |
71 | m_textsize(1), | 71 | m_textsize(1), |
72 | textarray(NULL), | 72 | textarray(NULL), |
73 | numlines(0), | 73 | numlines(0), |
74 | bstripcr(true), | 74 | bstripcr(true), |
75 | bunindent(false), | 75 | bunindent(false), |
76 | brepara(false), | 76 | brepara(false), |
77 | bdblspce(false), | 77 | bdblspce(false), |
78 | btight(false), | 78 | btight(false), |
79 | bindenter(0), | 79 | bindenter(0), |
80 | m_fm(NULL) | 80 | m_fm(NULL) |
81 | { | 81 | { |
82 | init(); | 82 | init(); |
83 | // // qDebug("Load_file(1)"); | 83 | // // odebug << "Load_file(1)" << oendl; |
84 | load_file((const tchar*)filename); | 84 | load_file((const tchar*)filename); |
85 | } | 85 | } |
86 | */ | 86 | */ |
87 | 87 | ||
88 | /* | 88 | /* |
89 | void QTReader::mouseMoveEvent(QMouseEvent* _e) | 89 | void QTReader::mouseMoveEvent(QMouseEvent* _e) |
90 | { | 90 | { |
91 | 91 | ||
92 | mouseUpOn = !(_e->pos().x() == -1); | 92 | mouseUpOn = !(_e->pos().x() == -1); |
93 | 93 | ||
94 | qDebug("MouseMove:[%d, %d]", _e->pos().x(), _e->pos().y()); | 94 | odebug << "MouseMove:[" << _e->pos().x() << ", " << _e->pos().y() << "]" << oendl; |
95 | } | 95 | } |
96 | */ | 96 | */ |
97 | long QTReader::real_delay() | 97 | long QTReader::real_delay() |
98 | { | 98 | { |
99 | return ( 8976 + m_delay ) / ( m_linespacing * m_linespacing ); | 99 | return ( 8976 + m_delay ) / ( m_linespacing * m_linespacing ); |
100 | } | 100 | } |
101 | 101 | ||
102 | void QTReader::mousePressEvent( QMouseEvent* _e ) | 102 | void QTReader::mousePressEvent( QMouseEvent* _e ) |
103 | { | 103 | { |
104 | buffdoc.unsuspend(); | 104 | buffdoc.unsuspend(); |
105 | if (_e->button() == RightButton) | 105 | if (_e->button() == RightButton) |
106 | { | 106 | { |
107 | //qDebug("MousePress"); | 107 | //odebug << "MousePress" << oendl; |
108 | mouseUpOn = false; | 108 | mouseUpOn = false; |
109 | if (m_swapmouse) | 109 | if (m_swapmouse) |
110 | { | 110 | { |
111 | int lineno = 0; | 111 | int lineno = 0; |
112 | int ht = textarray[0]->lineSpacing(); | 112 | int ht = textarray[0]->lineSpacing(); |
113 | while ((ht < _e->y()) && (lineno < numlines)) | 113 | while ((ht < _e->y()) && (lineno < numlines)) |
114 | { | 114 | { |
115 | ht += textarray[++lineno]->lineSpacing(); | 115 | ht += textarray[++lineno]->lineSpacing(); |
116 | } | 116 | } |
117 | size_t startpos, startoffset, tgt; | 117 | size_t startpos, startoffset, tgt; |
118 | getcurrentpos(_e->x(), _e->y(), startpos, startoffset, tgt); | 118 | getcurrentpos(_e->x(), _e->y(), startpos, startoffset, tgt); |
119 | processmousewordevent(startpos, startoffset, _e, lineno); | 119 | processmousewordevent(startpos, startoffset, _e, lineno); |
120 | } | 120 | } |
121 | else | 121 | else |
122 | processmousepositionevent(_e); | 122 | processmousepositionevent(_e); |
123 | } | 123 | } |
124 | } | 124 | } |
125 | 125 | ||
126 | void QTReader::processmousepositionevent( QMouseEvent* _e ) | 126 | void QTReader::processmousepositionevent( QMouseEvent* _e ) |
127 | { | 127 | { |
128 | if (buffdoc.hasnavigation()) | 128 | if (buffdoc.hasnavigation()) |
129 | { | 129 | { |
130 | if (_e->y() > (2*height())/3) | 130 | if (_e->y() > (2*height())/3) |
131 | { | 131 | { |
132 | goDown(); | 132 | goDown(); |
133 | } | 133 | } |
134 | else if (_e->y() < height()/3) | 134 | else if (_e->y() < height()/3) |
135 | { | 135 | { |
136 | goUp(); | 136 | goUp(); |
137 | } | 137 | } |
138 | else | 138 | else |
139 | { | 139 | { |
140 | if (_e->x() < width()/3) | 140 | if (_e->x() < width()/3) |
141 | { | 141 | { |
142 | goBack(); | 142 | goBack(); |
143 | } | 143 | } |
144 | else if (_e->x() > (2*width())/3) | 144 | else if (_e->x() > (2*width())/3) |
145 | { | 145 | { |
146 | goForward(); | 146 | goForward(); |
147 | } | 147 | } |
148 | else | 148 | else |
149 | { | 149 | { |
150 | goHome(); | 150 | goHome(); |
151 | } | 151 | } |
152 | } | 152 | } |
153 | } | 153 | } |
154 | else | 154 | else |
155 | { | 155 | { |
156 | if (_e->y() > height()/2) | 156 | if (_e->y() > height()/2) |
157 | { | 157 | { |
158 | goDown(); | 158 | goDown(); |
159 | } | 159 | } |
160 | else | 160 | else |
161 | { | 161 | { |
162 | goUp(); | 162 | goUp(); |
163 | } | 163 | } |
164 | } | 164 | } |
165 | } | 165 | } |
166 | 166 | ||
167 | void QTReader::goHome() | 167 | void QTReader::goHome() |
168 | { | 168 | { |
169 | if (buffdoc.hasnavigation()) | 169 | if (buffdoc.hasnavigation()) |
170 | { | 170 | { |
171 | size_t current=pagelocate(); | 171 | size_t current=pagelocate(); |
172 | size_t home=buffdoc.getHome(); | 172 | size_t home=buffdoc.getHome(); |
173 | if (current!=home) | 173 | if (current!=home) |
174 | { | 174 | { |
175 | buffdoc.saveposn(current); | 175 | buffdoc.saveposn(current); |
176 | locate(home); | 176 | locate(home); |
177 | } | 177 | } |
178 | } | 178 | } |
179 | } | 179 | } |
180 | 180 | ||
181 | void QTReader::goBack() | 181 | void QTReader::goBack() |
182 | { | 182 | { |
183 | if (buffdoc.hasnavigation()) | 183 | if (buffdoc.hasnavigation()) |
184 | { | 184 | { |
185 | size_t target = pagelocate(); | 185 | size_t target = pagelocate(); |
186 | buffdoc.writeposn(target); | 186 | buffdoc.writeposn(target); |
187 | if (buffdoc.back(target)) | 187 | if (buffdoc.back(target)) |
188 | { | 188 | { |
189 | locate(target); | 189 | locate(target); |
190 | } | 190 | } |
191 | } | 191 | } |
192 | } | 192 | } |
193 | 193 | ||
194 | void QTReader::goForward() | 194 | void QTReader::goForward() |
195 | { | 195 | { |
196 | if (buffdoc.hasnavigation()) | 196 | if (buffdoc.hasnavigation()) |
197 | { | 197 | { |
198 | size_t target = pagelocate(); | 198 | size_t target = pagelocate(); |
199 | if (buffdoc.forward(target)) | 199 | if (buffdoc.forward(target)) |
200 | { | 200 | { |
201 | locate(target); | 201 | locate(target); |
202 | } | 202 | } |
203 | } | 203 | } |
204 | } | 204 | } |
205 | 205 | ||
206 | linkType QTReader::getcurrentpos(int x, int y, size_t& start, size_t& offset, size_t& tgt) | 206 | linkType QTReader::getcurrentpos(int x, int y, size_t& start, size_t& offset, size_t& tgt) |
207 | { | 207 | { |
208 | int lineno = 0; | 208 | int lineno = 0; |
209 | int ht = textarray[0]->lineSpacing(); | 209 | int ht = textarray[0]->lineSpacing(); |
210 | while ((ht < y) && (lineno < numlines)) | 210 | while ((ht < y) && (lineno < numlines)) |
211 | { | 211 | { |
212 | ht += textarray[++lineno]->lineSpacing(); | 212 | ht += textarray[++lineno]->lineSpacing(); |
213 | } | 213 | } |
214 | start = locnarray[lineno]; | 214 | start = locnarray[lineno]; |
215 | if (m_bMonoSpaced) | 215 | if (m_bMonoSpaced) |
216 | { | 216 | { |
217 | offset = (x - textarray[lineno]->offset(width(), m_border))/m_charWidth; | 217 | offset = (x - textarray[lineno]->offset(width(), m_border))/m_charWidth; |
218 | } | 218 | } |
219 | else | 219 | else |
220 | { | 220 | { |
221 | int i; | 221 | int i; |
222 | CDrawBuffer* t = textarray[lineno]; | 222 | CDrawBuffer* t = textarray[lineno]; |
223 | x = x - t->offset(width(), m_border); | 223 | x = x - t->offset(width(), m_border); |
224 | for (i = t->length(); i >= 0 && t->width(i, true, width(), m_border) > x; i--); | 224 | for (i = t->length(); i >= 0 && t->width(i, true, width(), m_border) > x; i--); |
225 | offset = i; | 225 | offset = i; |
226 | } | 226 | } |
227 | return textarray[lineno]->getLinkType(offset, tgt); | 227 | return textarray[lineno]->getLinkType(offset, tgt); |
228 | } | 228 | } |
229 | 229 | ||
230 | void QTReader::suspend() | 230 | void QTReader::suspend() |
231 | { | 231 | { |
232 | #ifdef OPIE | 232 | #ifdef OPIE |
233 | if (memcmp("/mnt/", m_lastfile.latin1(), 5) == 0) buffdoc.suspend(); | 233 | if (memcmp("/mnt/", m_lastfile.latin1(), 5) == 0) buffdoc.suspend(); |
234 | #else | 234 | #else |
235 | if (memcmp("/usr/mnt.rom/", m_lastfile.latin1(), 13) == 0) buffdoc.suspend(); | 235 | if (memcmp("/usr/mnt.rom/", m_lastfile.latin1(), 13) == 0) buffdoc.suspend(); |
236 | #endif | 236 | #endif |
237 | } | 237 | } |
238 | 238 | ||
239 | void QTReader::setTwoTouch(bool _b) | 239 | void QTReader::setTwoTouch(bool _b) |
240 | { | 240 | { |
241 | setBackgroundColor( white ); | 241 | setBackgroundColor( white ); |
242 | m_twotouch = m_touchone = _b; | 242 | m_twotouch = m_touchone = _b; |
243 | } | 243 | } |
244 | 244 | ||
245 | void QTReader::setContinuous(bool _b) | 245 | void QTReader::setContinuous(bool _b) |
246 | { | 246 | { |
247 | buffdoc.unsuspend(); | 247 | buffdoc.unsuspend(); |
248 | buffdoc.setContinuous(m_continuousDocument = _b); | 248 | buffdoc.setContinuous(m_continuousDocument = _b); |
249 | } | 249 | } |
250 | 250 | ||
251 | void QTReader::processmousewordevent(size_t startpos, size_t startoffset, QMouseEvent* _e, int lineno) | 251 | void QTReader::processmousewordevent(size_t startpos, size_t startoffset, QMouseEvent* _e, int lineno) |
252 | { | 252 | { |
253 | QString wrd; | 253 | QString wrd; |
254 | if (m_twotouch) | 254 | if (m_twotouch) |
255 | { | 255 | { |
256 | if (m_touchone) | 256 | if (m_touchone) |
257 | { | 257 | { |
258 | m_touchone = false; | 258 | m_touchone = false; |
259 | m_startpos = startpos; | 259 | m_startpos = startpos; |
260 | m_startoffset = startoffset; | 260 | m_startoffset = startoffset; |
261 | setBackgroundColor( lightGray ); | 261 | setBackgroundColor( lightGray ); |
262 | } | 262 | } |
263 | else | 263 | else |
264 | { | 264 | { |
265 | m_touchone = true; | 265 | m_touchone = true; |
266 | setBackgroundColor( white ); | 266 | setBackgroundColor( white ); |
267 | size_t endpos, endoffset; | 267 | size_t endpos, endoffset; |
268 | endpos = startpos; | 268 | endpos = startpos; |
269 | endoffset = startoffset; | 269 | endoffset = startoffset; |
270 | size_t currentpos = locate(); | 270 | size_t currentpos = locate(); |
271 | if (endpos >= m_startpos) | 271 | if (endpos >= m_startpos) |
272 | { | 272 | { |
273 | jumpto(m_startpos); | 273 | jumpto(m_startpos); |
274 | for (int i = 0; i < m_startoffset; i++) | 274 | for (int i = 0; i < m_startoffset; i++) |
275 | { | 275 | { |
276 | getch(); | 276 | getch(); |
277 | } | 277 | } |
278 | if (m_startpos == endpos) | 278 | if (m_startpos == endpos) |
279 | { | 279 | { |
280 | for (int i = m_startoffset; i <= endoffset; i++) | 280 | for (int i = m_startoffset; i <= endoffset; i++) |
281 | { | 281 | { |
282 | wrd += QChar(getch()); | 282 | wrd += QChar(getch()); |
283 | } | 283 | } |
284 | } | 284 | } |
285 | else | 285 | else |
286 | { | 286 | { |
287 | while (buffdoc.explocate() <= endpos) | 287 | while (buffdoc.explocate() <= endpos) |
288 | { | 288 | { |
289 | wrd += QChar(getch()); | 289 | wrd += QChar(getch()); |
290 | } | 290 | } |
291 | for (int i = 0; i < endoffset; i++) | 291 | for (int i = 0; i < endoffset; i++) |
292 | { | 292 | { |
293 | wrd += QChar(getch()); | 293 | wrd += QChar(getch()); |
294 | } | 294 | } |
295 | } | 295 | } |
296 | jumpto(currentpos); | 296 | jumpto(currentpos); |
297 | } | 297 | } |
298 | } | 298 | } |
299 | } | 299 | } |
300 | else if (m_bMonoSpaced) | 300 | else if (m_bMonoSpaced) |
301 | { | 301 | { |
302 | int chno = (_e->x()-textarray[lineno]->offset(width(), m_border))/m_charWidth; | 302 | int chno = (_e->x()-textarray[lineno]->offset(width(), m_border))/m_charWidth; |
303 | if (chno < ustrlen(textarray[lineno]->data())) | 303 | if (chno < ustrlen(textarray[lineno]->data())) |
304 | { | 304 | { |
305 | wrd[0] = textarray[lineno]->data()[chno]; | 305 | wrd[0] = textarray[lineno]->data()[chno]; |
306 | } | 306 | } |
307 | } | 307 | } |
308 | else | 308 | else |
309 | { | 309 | { |
310 | CDrawBuffer* t = textarray[lineno]; | 310 | CDrawBuffer* t = textarray[lineno]; |
311 | int first = 0; | 311 | int first = 0; |
312 | int tgt = _e->x() - t->offset(width(), m_border); | 312 | int tgt = _e->x() - t->offset(width(), m_border); |
313 | while (1) | 313 | while (1) |
314 | { | 314 | { |
315 | int i = first+1; | 315 | int i = first+1; |
316 | while (QChar((*t)[i]).isLetter() && (*t)[i] != 0) i++; | 316 | while (QChar((*t)[i]).isLetter() && (*t)[i] != 0) i++; |
317 | if (t->width(i, true, width(), m_border) > tgt) | 317 | if (t->width(i, true, width(), m_border) > tgt) |
318 | { | 318 | { |
319 | wrd = toQString(t->data()+first, i - first); | 319 | wrd = toQString(t->data()+first, i - first); |
320 | // qDebug("Got %s", (const char *)wrd); | 320 | // odebug << "Got " << (const char *)wrd << "" << oendl; |
321 | break; | 321 | break; |
322 | } | 322 | } |
323 | while (!QChar((*t)[i]).isLetter() && (*t)[i] != 0) i++; | 323 | while (!QChar((*t)[i]).isLetter() && (*t)[i] != 0) i++; |
324 | if ((*t)[i] == 0) break; | 324 | if ((*t)[i] == 0) break; |
325 | first = i; | 325 | first = i; |
326 | } | 326 | } |
327 | } | 327 | } |
328 | if (!wrd.isEmpty()) | 328 | if (!wrd.isEmpty()) |
329 | { | 329 | { |
330 | //qDebug("Selected:%s", (const char*)wrd); | 330 | //odebug << "Selected:" << wrd << "" << oendl; |
331 | emit OnWordSelected(wrd, locnarray[lineno], (m_twotouch) ? wrd : toQString(textarray[lineno]->data())); | 331 | emit OnWordSelected(wrd, locnarray[lineno], (m_twotouch) ? wrd : toQString(textarray[lineno]->data())); |
332 | } | 332 | } |
333 | } | 333 | } |
334 | 334 | ||
335 | void QTReader::mouseReleaseEvent( QMouseEvent* _e ) | 335 | void QTReader::mouseReleaseEvent( QMouseEvent* _e ) |
336 | { | 336 | { |
337 | buffdoc.unsuspend(); | 337 | buffdoc.unsuspend(); |
338 | if (_e->button() == LeftButton) | 338 | if (_e->button() == LeftButton) |
339 | { | 339 | { |
340 | if (mouseUpOn) | 340 | if (mouseUpOn) |
341 | { | 341 | { |
342 | // qDebug("MouseRelease"); | 342 | // odebug << "MouseRelease" << oendl; |
343 | if (_e->x() > width() - m_border) | 343 | if (_e->x() > width() - m_border) |
344 | { | 344 | { |
345 | locate(buffdoc.startSection()+((buffdoc.endSection()-buffdoc.startSection())*_e->y()+height()/2)/height()); | 345 | locate(buffdoc.startSection()+((buffdoc.endSection()-buffdoc.startSection())*_e->y()+height()/2)/height()); |
346 | return; | 346 | return; |
347 | } | 347 | } |
348 | if (textarray[0] != NULL) | 348 | if (textarray[0] != NULL) |
349 | { | 349 | { |
350 | QString line; | 350 | QString line; |
351 | // int lineno = _e->y()/m_linespacing; | 351 | // int lineno = _e->y()/m_linespacing; |
352 | int lineno = 0; | 352 | int lineno = 0; |
353 | int ht = textarray[0]->lineSpacing(); | 353 | int ht = textarray[0]->lineSpacing(); |
354 | while ((ht < _e->y()) && (lineno < numlines)) | 354 | while ((ht < _e->y()) && (lineno < numlines)) |
355 | { | 355 | { |
356 | ht += textarray[++lineno]->lineSpacing(); | 356 | ht += textarray[++lineno]->lineSpacing(); |
357 | } | 357 | } |
358 | size_t startpos, startoffset, tgt; | 358 | size_t startpos, startoffset, tgt; |
359 | switch (getcurrentpos(_e->x(), _e->y(), startpos, startoffset, tgt)) | 359 | switch (getcurrentpos(_e->x(), _e->y(), startpos, startoffset, tgt)) |
360 | { | 360 | { |
361 | case eLink: | 361 | case eLink: |
362 | { | 362 | { |
363 | size_t saveposn = pagelocate(); | 363 | size_t saveposn = pagelocate(); |
364 | QString href; | 364 | QString href; |
365 | linkType lt = buffdoc.hyperlink(tgt, href); | 365 | linkType lt = buffdoc.hyperlink(tgt, href); |
366 | if (lt == eLink) | 366 | if (lt == eLink) |
367 | { | 367 | { |
368 | buffdoc.saveposn(saveposn); | 368 | buffdoc.saveposn(saveposn); |
369 | fillbuffer(); | 369 | fillbuffer(); |
370 | update(); | 370 | update(); |
371 | } | 371 | } |
372 | else | 372 | else |
373 | { | 373 | { |
374 | if (lt == ePicture) | 374 | if (lt == ePicture) |
375 | { | 375 | { |
376 | QImage* pm = buffdoc.getPicture(tgt); | 376 | QImage* pm = buffdoc.getPicture(tgt); |
377 | if (pm != NULL) | 377 | if (pm != NULL) |
378 | { | 378 | { |
379 | emit OnShowPicture(*pm); | 379 | emit OnShowPicture(*pm); |
380 | delete pm; | 380 | delete pm; |
381 | } | 381 | } |
382 | } | 382 | } |
383 | else | 383 | else |
384 | { | 384 | { |
385 | // QString anchortext = textarray[lineno]->getanchortext(startoffset); | 385 | // QString anchortext = textarray[lineno]->getanchortext(startoffset); |
386 | if (!href.isEmpty()) | 386 | if (!href.isEmpty()) |
387 | { | 387 | { |
388 | emit OnURLSelected(href); | 388 | emit OnURLSelected(href); |
389 | } | 389 | } |
390 | } | 390 | } |
391 | locate(pagelocate()); | 391 | locate(pagelocate()); |
392 | } | 392 | } |
393 | return; | 393 | return; |
394 | } | 394 | } |
395 | case ePicture: | 395 | case ePicture: |
396 | { | 396 | { |
397 | // qDebug("Picture:%x", tgt); | 397 | // odebug << "Picture:" << tgt << "" << oendl; |
398 | QImage* pm = buffdoc.getPicture(tgt); | 398 | QImage* pm = buffdoc.getPicture(tgt); |
399 | if (pm != NULL) | 399 | if (pm != NULL) |
400 | { | 400 | { |
401 | emit OnShowPicture(*pm); | 401 | emit OnShowPicture(*pm); |
402 | delete pm; | 402 | delete pm; |
403 | } | 403 | } |
404 | else | 404 | else |
405 | { | 405 | { |
406 | locate(pagelocate()); | 406 | locate(pagelocate()); |
407 | } | 407 | } |
408 | return; | 408 | return; |
409 | } | 409 | } |
410 | case eNone: | 410 | case eNone: |
411 | break; | 411 | break; |
412 | default: | 412 | default: |
413 | // qDebug("Unknown linktype"); | 413 | // odebug << "Unknown linktype" << oendl; |
414 | return; | 414 | return; |
415 | } | 415 | } |
416 | if (m_swapmouse) | 416 | if (m_swapmouse) |
417 | processmousepositionevent(_e); | 417 | processmousepositionevent(_e); |
418 | else | 418 | else |
419 | processmousewordevent(startpos, startoffset, _e, lineno); | 419 | processmousewordevent(startpos, startoffset, _e, lineno); |
420 | } | 420 | } |
421 | } | 421 | } |
422 | else | 422 | else |
423 | { | 423 | { |
424 | mouseUpOn = true; | 424 | mouseUpOn = true; |
425 | } | 425 | } |
426 | } | 426 | } |
427 | } | 427 | } |
428 | 428 | ||
429 | void QTReader::focusInEvent(QFocusEvent* e) | 429 | void QTReader::focusInEvent(QFocusEvent* e) |
430 | { | 430 | { |
431 | if (m_autoScroll) timer->start(real_delay(), false); | 431 | if (m_autoScroll) timer->start(real_delay(), false); |
432 | update(); | 432 | update(); |
433 | } | 433 | } |
434 | 434 | ||
435 | void QTReader::focusOutEvent(QFocusEvent* e) | 435 | void QTReader::focusOutEvent(QFocusEvent* e) |
436 | { | 436 | { |
437 | if (m_autoScroll) | 437 | if (m_autoScroll) |
438 | { | 438 | { |
439 | timer->stop(); | 439 | timer->stop(); |
440 | //m_scrolldy1 = m_scrolldy2 = 0; | 440 | //m_scrolldy1 = m_scrolldy2 = 0; |
441 | } | 441 | } |
442 | } | 442 | } |
443 | 443 | ||
444 | #ifndef _WINDOWS | 444 | #ifndef _WINDOWS |
445 | #include <unistd.h> | 445 | #include <unistd.h> |
446 | #endif | 446 | #endif |
447 | 447 | ||
448 | void QTReader::goDown() | 448 | void QTReader::goDown() |
449 | { | 449 | { |
450 | if (m_bpagemode) | 450 | if (m_bpagemode) |
451 | { | 451 | { |
452 | dopagedn(); | 452 | dopagedn(); |
453 | } | 453 | } |
454 | else | 454 | else |
455 | { | 455 | { |
456 | lineDown(); | 456 | lineDown(); |
457 | } | 457 | } |
458 | } | 458 | } |
459 | 459 | ||
460 | void QTReader::goUp() | 460 | void QTReader::goUp() |
461 | { | 461 | { |
462 | if (m_bpagemode) | 462 | if (m_bpagemode) |
463 | { | 463 | { |
464 | dopageup(); | 464 | dopageup(); |
465 | } | 465 | } |
466 | else | 466 | else |
467 | { | 467 | { |
468 | lineUp(); | 468 | lineUp(); |
469 | } | 469 | } |
470 | } | 470 | } |
471 | 471 | ||
472 | void QTReader::NavUp() | 472 | void QTReader::NavUp() |
473 | { | 473 | { |
474 | buffdoc.unsuspend(); | 474 | buffdoc.unsuspend(); |
475 | if (buffdoc.hasnavigation()) | 475 | if (buffdoc.hasnavigation()) |
476 | { | 476 | { |
477 | /* | 477 | /* |
478 | size_t target = pagelocate(); | 478 | size_t target = pagelocate(); |
479 | if (buffdoc.back(target)) | 479 | if (buffdoc.back(target)) |
480 | { | 480 | { |
481 | locate(target); | 481 | locate(target); |
482 | } | 482 | } |
483 | */ | 483 | */ |
484 | locate(buffdoc.startSection()); | 484 | locate(buffdoc.startSection()); |
485 | } | 485 | } |
486 | else | 486 | else |
487 | { | 487 | { |
488 | goUp(); | 488 | goUp(); |
489 | } | 489 | } |
490 | } | 490 | } |
491 | 491 | ||
492 | void QTReader::NavDown() | 492 | void QTReader::NavDown() |
493 | { | 493 | { |
494 | buffdoc.unsuspend(); | 494 | buffdoc.unsuspend(); |
495 | if (buffdoc.hasnavigation()) | 495 | if (buffdoc.hasnavigation()) |
496 | { | 496 | { |
497 | /* | 497 | /* |
498 | size_t target = pagelocate(); | 498 | size_t target = pagelocate(); |
499 | if (buffdoc.forward(target)) | 499 | if (buffdoc.forward(target)) |
500 | { | 500 | { |
501 | locate(target); | 501 | locate(target); |
502 | } | 502 | } |
503 | */ | 503 | */ |
504 | dopageup(buffdoc.endSection()); | 504 | dopageup(buffdoc.endSection()); |
505 | } | 505 | } |
506 | else | 506 | else |
507 | { | 507 | { |
508 | goDown(); | 508 | goDown(); |
509 | } | 509 | } |
510 | } | 510 | } |
511 | 511 | ||
512 | void QTReader::zoomin() | 512 | void QTReader::zoomin() |
513 | { | 513 | { |
514 | if (m_fontControl.increasesize()) | 514 | if (m_fontControl.increasesize()) |
515 | { | 515 | { |
516 | bool sc = m_autoScroll; | 516 | bool sc = m_autoScroll; |
517 | setfont(); | 517 | setfont(); |
518 | m_autoScroll = false; | 518 | m_autoScroll = false; |
519 | locate(pagelocate()); | 519 | locate(pagelocate()); |
520 | update(); | 520 | update(); |
521 | m_autoScroll = sc; | 521 | m_autoScroll = sc; |
522 | if (m_autoScroll) autoscroll(); | 522 | if (m_autoScroll) autoscroll(); |
523 | } | 523 | } |
524 | } | 524 | } |
525 | 525 | ||
526 | void QTReader::zoomout() | 526 | void QTReader::zoomout() |
527 | { | 527 | { |
528 | if (m_fontControl.decreasesize()) | 528 | if (m_fontControl.decreasesize()) |
529 | { | 529 | { |
530 | bool sc = m_autoScroll; | 530 | bool sc = m_autoScroll; |
531 | m_autoScroll = false; | 531 | m_autoScroll = false; |
532 | setfont(); | 532 | setfont(); |
533 | locate(pagelocate()); | 533 | locate(pagelocate()); |
534 | update(); | 534 | update(); |
535 | m_autoScroll = sc; | 535 | m_autoScroll = sc; |
536 | if (m_autoScroll) autoscroll(); | 536 | if (m_autoScroll) autoscroll(); |
537 | } | 537 | } |
538 | } | 538 | } |
539 | 539 | ||
540 | void QTReader::reduceScroll() | 540 | void QTReader::reduceScroll() |
541 | { | 541 | { |
542 | if (m_delay < 59049) | 542 | if (m_delay < 59049) |
543 | { | 543 | { |
544 | m_delay = (3*m_delay)/2; | 544 | m_delay = (3*m_delay)/2; |
545 | timer->changeInterval(real_delay()); | 545 | timer->changeInterval(real_delay()); |
546 | } | 546 | } |
547 | else | 547 | else |
548 | { | 548 | { |
549 | m_delay = 59049; | 549 | m_delay = 59049; |
550 | } | 550 | } |
551 | } | 551 | } |
552 | 552 | ||
553 | void QTReader::increaseScroll() | 553 | void QTReader::increaseScroll() |
554 | { | 554 | { |
555 | if (m_delay > 1024) | 555 | if (m_delay > 1024) |
556 | { | 556 | { |
557 | m_delay = (2*m_delay)/3; | 557 | m_delay = (2*m_delay)/3; |
558 | timer->changeInterval(real_delay()); | 558 | timer->changeInterval(real_delay()); |
559 | } | 559 | } |
560 | else | 560 | else |
561 | { | 561 | { |
562 | m_delay = 1024; | 562 | m_delay = 1024; |
563 | } | 563 | } |
564 | } | 564 | } |
565 | 565 | ||
566 | void QTReader::keyPressEvent(QKeyEvent* e) | 566 | void QTReader::keyPressEvent(QKeyEvent* e) |
567 | { | 567 | { |
568 | buffdoc.unsuspend(); | 568 | buffdoc.unsuspend(); |
569 | ((QTReaderApp*)parent()->parent())->handlekey(e); | 569 | ((QTReaderApp*)parent()->parent())->handlekey(e); |
570 | // e->ignore(); | 570 | // e->ignore(); |
571 | return; | 571 | return; |
572 | #ifdef _SCROLLPIPE | 572 | #ifdef _SCROLLPIPE |
573 | if (m_isPaused) | 573 | if (m_isPaused) |
574 | { | 574 | { |
575 | m_isPaused = false; | 575 | m_isPaused = false; |
576 | if (e->key() != Key_Space) | 576 | if (e->key() != Key_Space) |
577 | { | 577 | { |
578 | m_autoScroll = false; | 578 | m_autoScroll = false; |
579 | if (m_pipeout != NULL) | 579 | if (m_pipeout != NULL) |
580 | { | 580 | { |
581 | pclose(m_pipeout); | 581 | pclose(m_pipeout); |
582 | m_pipeout = NULL; | 582 | m_pipeout = NULL; |
583 | } | 583 | } |
584 | ((QTReaderApp*)parent()->parent())->setScrollState(m_autoScroll); | 584 | ((QTReaderApp*)parent()->parent())->setScrollState(m_autoScroll); |
585 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | 585 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; |
586 | } | 586 | } |
587 | else | 587 | else |
588 | { | 588 | { |
589 | timer->start(real_delay(), false); | 589 | timer->start(real_delay(), false); |
590 | } | 590 | } |
591 | e->accept(); | 591 | e->accept(); |
592 | return; | 592 | return; |
593 | } | 593 | } |
594 | #endif | 594 | #endif |
595 | /* | 595 | /* |
596 | switch (e->key()) | 596 | switch (e->key()) |
597 | { | 597 | { |
598 | case Key_Down: | 598 | case Key_Down: |
599 | { | 599 | { |
600 | e->accept(); | 600 | e->accept(); |
601 | if (m_autoScroll) | 601 | if (m_autoScroll) |
602 | { | 602 | { |
603 | if (m_delay < 59049) | 603 | if (m_delay < 59049) |
604 | { | 604 | { |
605 | m_delay = (3*m_delay)/2; | 605 | m_delay = (3*m_delay)/2; |
606 | timer->changeInterval(real_delay()); | 606 | timer->changeInterval(real_delay()); |
607 | } | 607 | } |
608 | else | 608 | else |
609 | { | 609 | { |
610 | m_delay = 59049; | 610 | m_delay = 59049; |
611 | } | 611 | } |
612 | } | 612 | } |
613 | else | 613 | else |
614 | { | 614 | { |
615 | goDown(); | 615 | goDown(); |
616 | } | 616 | } |
617 | } | 617 | } |
618 | break; | 618 | break; |
619 | case Key_Up: | 619 | case Key_Up: |
620 | { | 620 | { |
621 | e->accept(); | 621 | e->accept(); |
622 | if (m_autoScroll) | 622 | if (m_autoScroll) |
623 | { | 623 | { |
624 | if (m_delay > 1024) | 624 | if (m_delay > 1024) |
625 | { | 625 | { |
626 | m_delay = (2*m_delay)/3; | 626 | m_delay = (2*m_delay)/3; |
627 | timer->changeInterval(real_delay()); | 627 | timer->changeInterval(real_delay()); |
628 | } | 628 | } |
629 | else | 629 | else |
630 | { | 630 | { |
631 | m_delay = 1024; | 631 | m_delay = 1024; |
632 | } | 632 | } |
633 | } | 633 | } |
634 | else | 634 | else |
635 | { | 635 | { |
636 | goUp(); | 636 | goUp(); |
637 | } | 637 | } |
638 | } | 638 | } |
639 | break; | 639 | break; |
640 | case Key_Right: | 640 | case Key_Right: |
641 | { | 641 | { |
642 | e->accept(); | 642 | e->accept(); |
643 | if (m_navkeys && buffdoc.hasnavigation()) | 643 | if (m_navkeys && buffdoc.hasnavigation()) |
644 | { | 644 | { |
645 | size_t target = pagelocate(); | 645 | size_t target = pagelocate(); |
646 | if (buffdoc.forward(target)) | 646 | if (buffdoc.forward(target)) |
647 | { | 647 | { |
648 | locate(target); | 648 | locate(target); |
649 | } | 649 | } |
650 | } | 650 | } |
651 | else zoomin(); | 651 | else zoomin(); |
652 | } | 652 | } |
653 | break; | 653 | break; |
654 | case Key_Left: | 654 | case Key_Left: |
655 | { | 655 | { |
656 | e->accept(); | 656 | e->accept(); |
657 | if (m_navkeys && buffdoc.hasnavigation()) | 657 | if (m_navkeys && buffdoc.hasnavigation()) |
658 | { | 658 | { |
659 | size_t target = pagelocate(); | 659 | size_t target = pagelocate(); |
660 | if (buffdoc.back(target)) | 660 | if (buffdoc.back(target)) |
661 | { | 661 | { |
662 | locate(target); | 662 | locate(target); |
663 | } | 663 | } |
664 | } | 664 | } |
665 | else zoomout(); | 665 | else zoomout(); |
666 | } | 666 | } |
667 | break; | 667 | break; |
668 | default: | 668 | default: |
669 | e->ignore(); | 669 | e->ignore(); |
670 | } | 670 | } |
671 | */ | 671 | */ |
672 | } | 672 | } |
673 | 673 | ||
674 | void QTReader::setautoscroll(bool _sc) | 674 | void QTReader::setautoscroll(bool _sc) |
675 | { | 675 | { |
676 | if (_sc == m_autoScroll) return; | 676 | if (_sc == m_autoScroll) return; |
677 | if (m_autoScroll) | 677 | if (m_autoScroll) |
678 | { | 678 | { |
679 | m_autoScroll = false; | 679 | m_autoScroll = false; |
680 | #ifdef USEQPE | 680 | #ifdef USEQPE |
681 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | 681 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; |
682 | #endif | 682 | #endif |
683 | #ifdef _SCROLLPIPE | 683 | #ifdef _SCROLLPIPE |
684 | if (m_pipeout != NULL) | 684 | if (m_pipeout != NULL) |
685 | { | 685 | { |
686 | pclose(m_pipeout); | 686 | pclose(m_pipeout); |
687 | m_pipeout = NULL; | 687 | m_pipeout = NULL; |
688 | } | 688 | } |
689 | #endif | 689 | #endif |
690 | } | 690 | } |
691 | else | 691 | else |
692 | { | 692 | { |
693 | CDrawBuffer* reusebuffer = textarray[numlines]; | 693 | CDrawBuffer* reusebuffer = textarray[numlines]; |
694 | if (reusebuffer == NULL || reusebuffer->eof()) return; | 694 | if (reusebuffer == NULL || reusebuffer->eof()) return; |
695 | m_autoScroll = true; | 695 | m_autoScroll = true; |
696 | #ifdef _SCROLLPIPE | 696 | #ifdef _SCROLLPIPE |
697 | if (!m_pipetarget.isEmpty()) | 697 | if (!m_pipetarget.isEmpty()) |
698 | { | 698 | { |
699 | // qDebug("Opening pipe to %s", (const char*)m_pipetarget); | 699 | // odebug << "Opening pipe to " << m_pipetarget << "" << oendl; |
700 | m_pipeout = popen((const char*)m_pipetarget, "w"); | 700 | m_pipeout = popen((const char*)m_pipetarget, "w"); |
701 | m_isPaused = false; | 701 | m_isPaused = false; |
702 | } | 702 | } |
703 | #endif | 703 | #endif |
704 | autoscroll(); | 704 | autoscroll(); |
705 | #ifdef USEQPE | 705 | #ifdef USEQPE |
706 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Disable; // light is even not dimmed | 706 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Disable; // light is even not dimmed |
707 | #endif | 707 | #endif |
708 | } | 708 | } |
709 | } | 709 | } |
710 | 710 | ||
711 | bool QTReader::getline(CDrawBuffer *buff) | 711 | bool QTReader::getline(CDrawBuffer *buff) |
712 | { | 712 | { |
713 | buffdoc.unsuspend(); | 713 | buffdoc.unsuspend(); |
714 | if (m_bMonoSpaced) | 714 | if (m_bMonoSpaced) |
715 | { | 715 | { |
716 | return buffdoc.getline(buff ,width(), m_charWidth, m_border); | 716 | return buffdoc.getline(buff ,width(), m_charWidth, m_border); |
717 | } | 717 | } |
718 | else | 718 | else |
719 | { | 719 | { |
720 | return buffdoc.getline(buff, width(), m_border); | 720 | return buffdoc.getline(buff, width(), m_border); |
721 | } | 721 | } |
722 | } | 722 | } |
723 | 723 | ||
724 | void QTReader::doscroll() | 724 | void QTReader::doscroll() |
725 | { | 725 | { |
726 | if (!m_autoScroll) | 726 | if (!m_autoScroll) |
727 | { | 727 | { |
728 | timer->stop(); | 728 | timer->stop(); |
729 | return; | 729 | return; |
730 | } | 730 | } |
731 | // timer->changeInterval(real_delay()); | 731 | // timer->changeInterval(real_delay()); |
732 | QPainter p( this ); | 732 | QPainter p( this ); |
733 | QBrush b( white); | 733 | QBrush b( white); |
734 | bitBlt(this,0,0,this,0,1,width(),-1); | 734 | bitBlt(this,0,0,this,0,1,width(),-1); |
735 | qDrawPlainRect(&p,0,height() - 2,width(),2,white,1,&b); | 735 | qDrawPlainRect(&p,0,height() - 2,width(),2,white,1,&b); |
736 | 736 | ||
737 | if (++m_scrolldy1 == textarray[0]->lineSpacing()) | 737 | if (++m_scrolldy1 == textarray[0]->lineSpacing()) |
738 | { | 738 | { |
739 | #ifdef _SCROLLPIPE | 739 | #ifdef _SCROLLPIPE |
740 | if (m_pipeout != NULL) | 740 | if (m_pipeout != NULL) |
741 | { | 741 | { |
742 | QString outstr = toQString(textarray[0]->data()); | 742 | QString outstr = toQString(textarray[0]->data()); |
743 | if (!outstr.isEmpty()) | 743 | if (!outstr.isEmpty()) |
744 | { | 744 | { |
745 | fprintf(m_pipeout, "%s\n", (const char*)outstr); | 745 | fprintf(m_pipeout, "%s\n", (const char*)outstr); |
746 | fflush(m_pipeout); | 746 | fflush(m_pipeout); |
747 | } | 747 | } |
748 | else if (m_pauseAfterEachPara) | 748 | else if (m_pauseAfterEachPara) |
749 | { | 749 | { |
750 | m_isPaused = true; | 750 | m_isPaused = true; |
751 | timer->stop(); | 751 | timer->stop(); |
752 | } | 752 | } |
753 | // write(m_pipeout, (const char*)outstr, outstr.length()); | 753 | // write(m_pipeout, (const char*)outstr, outstr.length()); |
754 | // write(m_pipeout, "\n", 1); | 754 | // write(m_pipeout, "\n", 1); |
755 | // fputc(10, m_pipeout); | 755 | // fputc(10, m_pipeout); |
756 | } | 756 | } |
757 | #endif | 757 | #endif |
758 | CDrawBuffer* buff = textarray[0]; | 758 | CDrawBuffer* buff = textarray[0]; |
759 | for (int i = 1; i <= numlines; i++) | 759 | for (int i = 1; i <= numlines; i++) |
760 | { | 760 | { |
761 | textarray[i-1] = textarray[i]; | 761 | textarray[i-1] = textarray[i]; |
762 | locnarray[i-1] = locnarray[i]; | 762 | locnarray[i-1] = locnarray[i]; |
763 | } | 763 | } |
764 | textarray[numlines] = buff; | 764 | textarray[numlines] = buff; |
765 | --numlines; | 765 | --numlines; |
766 | m_scrolldy1 = 0; | 766 | m_scrolldy1 = 0; |
767 | } | 767 | } |
768 | if (++m_scrolldy2 == textarray[numlines]->lineSpacing()) | 768 | if (++m_scrolldy2 == textarray[numlines]->lineSpacing()) |
769 | { | 769 | { |
770 | m_scrolldy2 = 0; | 770 | m_scrolldy2 = 0; |
771 | numlines++; | 771 | numlines++; |
772 | 772 | ||
773 | if (textarray[numlines] == NULL) | 773 | if (textarray[numlines] == NULL) |
774 | { | 774 | { |
775 | textarray[numlines] = new CDrawBuffer(&m_fontControl); | 775 | textarray[numlines] = new CDrawBuffer(&m_fontControl); |
776 | } | 776 | } |
777 | locnarray[numlines] = locate(); | 777 | locnarray[numlines] = locate(); |
778 | int ch = getline(textarray[numlines]); | 778 | int ch = getline(textarray[numlines]); |
779 | textarray[numlines-1]->render(&p, height() - textarray[numlines-1]->descent() - 2, m_bMonoSpaced, m_charWidth, width(), m_border); | 779 | textarray[numlines-1]->render(&p, height() - textarray[numlines-1]->descent() - 2, m_bMonoSpaced, m_charWidth, width(), m_border); |
780 | mylastpos = locate(); | 780 | mylastpos = locate(); |
781 | if (!ch) | 781 | if (!ch) |
782 | { | 782 | { |
783 | m_autoScroll = false; | 783 | m_autoScroll = false; |
784 | #ifdef _SCROLLPIPE | 784 | #ifdef _SCROLLPIPE |
785 | for (int i = 0; i < numlines; i++) | 785 | for (int i = 0; i < numlines; i++) |
786 | { | 786 | { |
787 | if (m_pipeout != NULL) | 787 | if (m_pipeout != NULL) |
788 | { | 788 | { |
789 | QString outstr = toQString(textarray[i]->data()); | 789 | QString outstr = toQString(textarray[i]->data()); |
790 | if (!outstr.isEmpty()) | 790 | if (!outstr.isEmpty()) |
791 | { | 791 | { |
792 | fprintf(m_pipeout, "%s\n", (const char*)outstr); | 792 | fprintf(m_pipeout, "%s\n", (const char*)outstr); |
793 | fflush(m_pipeout); | 793 | fflush(m_pipeout); |
794 | } | 794 | } |
795 | } | 795 | } |
796 | } | 796 | } |
797 | #endif | 797 | #endif |
798 | ((QTReaderApp*)parent()->parent())->setScrollState(m_autoScroll); | 798 | ((QTReaderApp*)parent()->parent())->setScrollState(m_autoScroll); |
799 | #ifdef USEQPE | 799 | #ifdef USEQPE |
800 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | 800 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; |
801 | #endif | 801 | #endif |
802 | } | 802 | } |
803 | emit OnRedraw(); | 803 | emit OnRedraw(); |
804 | } | 804 | } |
805 | } | 805 | } |
806 | 806 | ||
807 | void QTReader::autoscroll() | 807 | void QTReader::autoscroll() |
808 | { | 808 | { |
809 | timer->start(real_delay(), false); | 809 | timer->start(real_delay(), false); |
810 | } | 810 | } |
811 | 811 | ||
812 | void QTReader::setfont() | 812 | void QTReader::setfont() |
813 | { | 813 | { |
814 | // m_fontControl.Change | 814 | // m_fontControl.Change |
815 | m_charWidth = (m_charpc*m_fontControl.currentsize())/100; | 815 | m_charWidth = (m_charpc*m_fontControl.currentsize())/100; |
816 | if (m_charWidth <= 0) m_charWidth = 1; | 816 | if (m_charWidth <= 0) m_charWidth = 1; |
817 | m_ascent = m_fontControl.ascent(); | 817 | m_ascent = m_fontControl.ascent(); |
818 | m_descent = m_fontControl.descent(); | 818 | m_descent = m_fontControl.descent(); |
819 | m_linespacing = m_fontControl.lineSpacing(); | 819 | m_linespacing = m_fontControl.lineSpacing(); |
820 | } | 820 | } |
821 | 821 | ||
822 | void QTReader::drawFonts( QPainter *p ) | 822 | void QTReader::drawFonts( QPainter *p ) |
823 | { | 823 | { |
824 | if (bDoUpdates) | 824 | if (bDoUpdates) |
825 | { | 825 | { |
826 | //qDebug("How refreshing..."); | 826 | //odebug << "How refreshing..." << oendl; |
827 | if (buffdoc.empty()) return; | 827 | if (buffdoc.empty()) return; |
828 | setfont(); | 828 | setfont(); |
829 | if (m_lastwidth != width()) | 829 | if (m_lastwidth != width()) |
830 | { | 830 | { |
831 | // qDebug("Not Optimised %d", m_lastwidth); | 831 | // odebug << "Not Optimised " << m_lastwidth << "" << oendl; |
832 | m_lastwidth = width(); | 832 | m_lastwidth = width(); |
833 | m_lastheight = height(); | 833 | m_lastheight = height(); |
834 | buffdoc.setwidth(m_lastwidth-2*m_border); | 834 | buffdoc.setwidth(m_lastwidth-2*m_border); |
835 | locate(pagelocate()); | 835 | locate(pagelocate()); |
836 | // qDebug("Not Optimised %d", m_lastwidth); | 836 | // odebug << "Not Optimised " << m_lastwidth << "" << oendl; |
837 | } | 837 | } |
838 | else | 838 | else |
839 | { | 839 | { |
840 | int newht = height(); | 840 | int newht = height(); |
841 | if (m_lastheight > newht) | 841 | if (m_lastheight > newht) |
842 | { | 842 | { |
843 | // qDebug("Optimised < %d %d %d", numlines, m_lastheight, newht); | 843 | // odebug << "Optimised < " << numlines << " " << m_lastheight << " " << newht << "" << oendl; |
844 | int ypos = 0; | 844 | int ypos = 0; |
845 | for (int i = 0; i < numlines; i++) | 845 | for (int i = 0; i < numlines; i++) |
846 | { | 846 | { |
847 | if ((ypos += textarray[i]->lineSpacing()) > newht) | 847 | if ((ypos += textarray[i]->lineSpacing()) > newht) |
848 | { | 848 | { |
849 | numlines = i; | 849 | numlines = i; |
850 | jumpto(mylastpos = locnarray[i+1]); | 850 | jumpto(mylastpos = locnarray[i+1]); |
851 | break; | 851 | break; |
852 | } | 852 | } |
853 | } | 853 | } |
854 | // qDebug("Optimised < %d", numlines); | 854 | // odebug << "Optimised < " << numlines << "" << oendl; |
855 | m_lastheight = newht; | 855 | m_lastheight = newht; |
856 | } | 856 | } |
857 | else if (m_lastheight < newht) | 857 | else if (m_lastheight < newht) |
858 | { | 858 | { |
859 | // qDebug("Optimised > %d", numlines); | 859 | // odebug << "Optimised > " << numlines << "" << oendl; |
860 | int ypos = 0; | 860 | int ypos = 0; |
861 | for (int i = 0; i <= numlines; i++) | 861 | for (int i = 0; i <= numlines; i++) |
862 | { | 862 | { |
863 | ypos += textarray[i]->lineSpacing(); | 863 | ypos += textarray[i]->lineSpacing(); |
864 | } | 864 | } |
865 | fillbuffer(numlines+1, ypos, newht); | 865 | fillbuffer(numlines+1, ypos, newht); |
866 | // qDebug("Optimised > %d", numlines); | 866 | // odebug << "Optimised > " << numlines << "" << oendl; |
867 | } | 867 | } |
868 | if (numlines > 0) | 868 | if (numlines > 0) |
869 | { | 869 | { |
870 | int ypos = textarray[0]->ascent(); | 870 | int ypos = textarray[0]->ascent(); |
871 | textarray[0]->render( p, ypos, m_bMonoSpaced, m_charWidth, width(), m_border); | 871 | textarray[0]->render( p, ypos, m_bMonoSpaced, m_charWidth, width(), m_border); |
872 | // int last = (m_showlast) ? numlines : numlines-1; | 872 | // int last = (m_showlast) ? numlines : numlines-1; |
873 | // for (int i = 1; i <= last; i++) | 873 | // for (int i = 1; i <= last; i++) |
874 | for (int i = 1; i < numlines; i++) | 874 | for (int i = 1; i < numlines; i++) |
875 | { | 875 | { |
876 | // ypos += (textarray[i-1]->lineSpacing() + textarray[i]->lineSpacing())/2; | 876 | // ypos += (textarray[i-1]->lineSpacing() + textarray[i]->lineSpacing())/2; |
877 | ypos += (textarray[i-1]->descent() + textarray[i]->ascent())+ | 877 | ypos += (textarray[i-1]->descent() + textarray[i]->ascent())+ |
878 | (textarray[i-1]->lineExtraSpacing() + textarray[i]->lineExtraSpacing())/2; | 878 | (textarray[i-1]->lineExtraSpacing() + textarray[i]->lineExtraSpacing())/2; |
879 | textarray[i]->render( p, ypos, m_bMonoSpaced, m_charWidth, width(), m_border); | 879 | textarray[i]->render( p, ypos, m_bMonoSpaced, m_charWidth, width(), m_border); |
880 | } | 880 | } |
881 | // mylastpos = locate(); | 881 | // mylastpos = locate(); |
882 | } | 882 | } |
883 | } | 883 | } |
884 | 884 | ||
885 | m_scrolldy1 = m_scrolldy2 = m_scrollpart; | 885 | m_scrolldy1 = m_scrolldy2 = m_scrollpart; |
886 | if (m_border > 5 && !buffdoc.empty()) | 886 | if (m_border > 5 && !buffdoc.empty()) |
887 | { | 887 | { |
888 | p->fillRect(width()-2, 0, 2, height(), cyan); | 888 | p->fillRect(width()-2, 0, 2, height(), cyan); |
889 | int sectionsize = (buffdoc.endSection()-buffdoc.startSection()); | 889 | int sectionsize = (buffdoc.endSection()-buffdoc.startSection()); |
890 | int mid = (height()*(locnarray[numlines]+locnarray[0]-2*buffdoc.startSection())+sectionsize)/(2*sectionsize); | 890 | int mid = (height()*(locnarray[numlines]+locnarray[0]-2*buffdoc.startSection())+sectionsize)/(2*sectionsize); |
891 | p->fillRect(width()-2, mid-5, 2, 10, yellow); | 891 | p->fillRect(width()-2, mid-5, 2, 10, yellow); |
892 | p->fillRect(width()-2, (height()*(locnarray[0]-buffdoc.startSection())+sectionsize/2)/sectionsize, 2, ((locnarray[numlines]-locnarray[0])*height()+sectionsize/2)/sectionsize, magenta); | 892 | p->fillRect(width()-2, (height()*(locnarray[0]-buffdoc.startSection())+sectionsize/2)/sectionsize, 2, ((locnarray[numlines]-locnarray[0])*height()+sectionsize/2)/sectionsize, magenta); |
893 | } | 893 | } |
894 | 894 | ||
895 | emit OnRedraw(); | 895 | emit OnRedraw(); |
896 | } | 896 | } |
897 | /* | 897 | /* |
898 | else | 898 | else |
899 | { | 899 | { |
900 | qDebug("Not so refreshing..."); | 900 | odebug << "Not so refreshing..." << oendl; |
901 | } | 901 | } |
902 | */ | 902 | */ |
903 | } | 903 | } |
904 | 904 | ||
905 | QString QTReader::firstword() | 905 | QString QTReader::firstword() |
906 | { | 906 | { |
907 | if (m_bMonoSpaced) | 907 | if (m_bMonoSpaced) |
908 | { | 908 | { |
909 | return toQString(textarray[0]->data()); | 909 | return toQString(textarray[0]->data()); |
910 | } | 910 | } |
911 | else | 911 | else |
912 | { | 912 | { |
913 | int start, end, len, j; | 913 | int start, end, len, j; |
914 | for (j = 0; j < numlines; j++) | 914 | for (j = 0; j < numlines; j++) |
915 | { | 915 | { |
916 | len = textarray[j]->length(); | 916 | len = textarray[j]->length(); |
917 | for (start = 0; start < len && !isalpha((*textarray[j])[start]); start++); | 917 | for (start = 0; start < len && !isalpha((*textarray[j])[start]); start++); |
918 | if (start < len) break; | 918 | if (start < len) break; |
919 | } | 919 | } |
920 | if (j < numlines) | 920 | if (j < numlines) |
921 | { | 921 | { |
922 | QString ret = ""; | 922 | QString ret = ""; |
923 | for (end = start; end < len && isalpha((*textarray[j])[end]); end++) | 923 | for (end = start; end < len && isalpha((*textarray[j])[end]); end++) |
924 | ret += (*textarray[j])[end]; | 924 | ret += (*textarray[j])[end]; |
925 | if (ret.isEmpty()) ret = "Current position"; | 925 | if (ret.isEmpty()) ret = "Current position"; |
926 | return ret; | 926 | return ret; |
927 | } | 927 | } |
928 | else | 928 | else |
929 | return "Current position"; | 929 | return "Current position"; |
930 | } | 930 | } |
931 | } | 931 | } |
932 | 932 | ||
933 | // | 933 | // |
934 | // Construct the QTReader with buttons. | 934 | // Construct the QTReader with buttons. |
935 | // | 935 | // |
936 | 936 | ||
937 | bool QTReader::ChangeFont(int tgt) | 937 | bool QTReader::ChangeFont(int tgt) |
938 | { | 938 | { |
939 | return m_fontControl.ChangeFont(m_fontname, tgt); | 939 | return m_fontControl.ChangeFont(m_fontname, tgt); |
940 | } | 940 | } |
941 | 941 | ||
942 | void QTReader::init() | 942 | void QTReader::init() |
943 | { | 943 | { |
944 | // m_showlast = true; | 944 | // m_showlast = true; |
945 | // setCaption( "Qt Draw Demo Application" ); | 945 | // setCaption( "Qt Draw Demo Application" ); |
946 | 946 | ||
947 | buffdoc.unsuspend(); | 947 | buffdoc.unsuspend(); |
948 | setBackgroundColor( white ); | 948 | setBackgroundColor( white ); |
949 | // QPainter p(this); | 949 | // QPainter p(this); |
950 | // p.setBackgroundMode( Qt::OpaqueMode ); | 950 | // p.setBackgroundMode( Qt::OpaqueMode ); |
951 | buffdoc.setfilter(getfilter()); | 951 | buffdoc.setfilter(getfilter()); |
952 | ChangeFont(m_textsize); | 952 | ChangeFont(m_textsize); |
953 | setFocusPolicy(QWidget::StrongFocus); | 953 | setFocusPolicy(QWidget::StrongFocus); |
954 | // resize( 240, 320 ); | 954 | // resize( 240, 320 ); |
955 | //setFocus(); | 955 | //setFocus(); |
956 | timer = new QTimer(this); | 956 | timer = new QTimer(this); |
957 | connect(timer, SIGNAL(timeout()), this, SLOT(doscroll())); | 957 | connect(timer, SIGNAL(timeout()), this, SLOT(doscroll())); |
958 | // QMessageBox::information(this, "init", m_lastfile, 1); | 958 | // QMessageBox::information(this, "init", m_lastfile, 1); |
959 | setfont(); | 959 | setfont(); |
960 | /* | 960 | /* |
961 | if (!m_lastfile.isEmpty()) | 961 | if (!m_lastfile.isEmpty()) |
962 | { | 962 | { |
963 | m_string = DocLnk(m_lastfile).name(); | 963 | m_string = DocLnk(m_lastfile).name(); |
964 | load_file(m_lastfile); | 964 | load_file(m_lastfile); |
965 | } | 965 | } |
966 | */ | 966 | */ |
967 | } | 967 | } |
968 | 968 | ||
969 | // | 969 | // |
970 | // Clean up | 970 | // Clean up |
971 | // | 971 | // |
972 | QTReader::~QTReader() | 972 | QTReader::~QTReader() |
973 | { | 973 | { |
974 | #ifdef USEQPE | 974 | #ifdef USEQPE |
975 | if (m_autoScroll) | 975 | if (m_autoScroll) |
976 | { | 976 | { |
977 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | 977 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; |
978 | } | 978 | } |
979 | #endif | 979 | #endif |
980 | #ifdef _SCROLLPIPE | 980 | #ifdef _SCROLLPIPE |
981 | if (m_pipeout != NULL) | 981 | if (m_pipeout != NULL) |
982 | { | 982 | { |
983 | fclose(m_pipeout); | 983 | fclose(m_pipeout); |
984 | } | 984 | } |
985 | #endif | 985 | #endif |
986 | } | 986 | } |
987 | 987 | ||
988 | // | 988 | // |
989 | // Calls the drawing function as specified by the radio buttons. | 989 | // Calls the drawing function as specified by the radio buttons. |
990 | // | 990 | // |
991 | 991 | ||
992 | void QTReader::drawIt( QPainter *p ) | 992 | void QTReader::drawIt( QPainter *p ) |
993 | { | 993 | { |
994 | drawFonts(p); | 994 | drawFonts(p); |
995 | } | 995 | } |
996 | 996 | ||
997 | // | 997 | // |
998 | // Called when the print button is clicked. | 998 | // Called when the print button is clicked. |
999 | // | 999 | // |
1000 | /* | 1000 | /* |
1001 | void QTReader::printIt() | 1001 | void QTReader::printIt() |
1002 | { | 1002 | { |
1003 | #ifndef QT_NO_PRINTER | 1003 | #ifndef QT_NO_PRINTER |
1004 | if ( printer->setup( this ) ) { | 1004 | if ( printer->setup( this ) ) { |
1005 | QPainter paint; | 1005 | QPainter paint; |
1006 | if ( !paint.begin( printer ) ) | 1006 | if ( !paint.begin( printer ) ) |
1007 | return; | 1007 | return; |
1008 | drawIt( &paint ); | 1008 | drawIt( &paint ); |
1009 | } | 1009 | } |
1010 | #endif | 1010 | #endif |
1011 | } | 1011 | } |
1012 | */ | 1012 | */ |
1013 | // | 1013 | // |
1014 | // Called when the widget needs to be updated. | 1014 | // Called when the widget needs to be updated. |
1015 | // | 1015 | // |
1016 | 1016 | ||
1017 | void QTReader::paintEvent( QPaintEvent * ) | 1017 | void QTReader::paintEvent( QPaintEvent * ) |
1018 | { | 1018 | { |
1019 | QPainter paint( this ); | 1019 | QPainter paint( this ); |
1020 | drawIt( &paint ); | 1020 | drawIt( &paint ); |
1021 | } | 1021 | } |
1022 | 1022 | ||
1023 | // | 1023 | // |
1024 | // Called when the widget has been resized. | 1024 | // Called when the widget has been resized. |
1025 | // Moves the button group to the upper right corner | 1025 | // Moves the button group to the upper right corner |
1026 | // of the widget. | 1026 | // of the widget. |
1027 | 1027 | ||
1028 | /* | 1028 | /* |
1029 | void QTReader::resizeEvent( QResizeEvent * ) | 1029 | void QTReader::resizeEvent( QResizeEvent * ) |
1030 | { | 1030 | { |
1031 | // // qDebug("resize:(%u,%u)", width(), height()); | 1031 | // // odebug << "resize:(" << width() << "," << height() << ")" << oendl; |
1032 | // bgroup->move( width()-bgroup->width(), 0 ); | 1032 | // bgroup->move( width()-bgroup->width(), 0 ); |
1033 | } | 1033 | } |
1034 | */ | 1034 | */ |
1035 | 1035 | ||
1036 | // | 1036 | // |
1037 | // Create and display our widget. | 1037 | // Create and display our widget. |
1038 | // | 1038 | // |
1039 | /* | 1039 | /* |
1040 | int main( int argc, tchar **argv ) | 1040 | int main( int argc, tchar **argv ) |
1041 | { | 1041 | { |
1042 | QApplication app( argc, argv ); | 1042 | QApplication app( argc, argv ); |
1043 | QTReader draw; | 1043 | QTReader draw; |
1044 | app.setMainWidget( &draw ); | 1044 | app.setMainWidget( &draw ); |
1045 | draw.setCaption("Qt Example - Drawdemo"); | 1045 | draw.setCaption("Qt Example - Drawdemo"); |
1046 | draw.show(); | 1046 | draw.show(); |
1047 | return app.exec(); | 1047 | return app.exec(); |
1048 | } | 1048 | } |
1049 | */ | 1049 | */ |
1050 | 1050 | ||
1051 | 1051 | ||
1052 | bool QTReader::locate(unsigned long n) { | 1052 | bool QTReader::locate(unsigned long n) { |
1053 | //printf("Locate\n"); | 1053 | //printf("Locate\n"); |
1054 | buffdoc.unsuspend(); | 1054 | buffdoc.unsuspend(); |
1055 | buffdoc.locate(n); | 1055 | buffdoc.locate(n); |
1056 | // // qDebug("&buffdoc.located"); | 1056 | // // odebug << "&buffdoc.located" << oendl; |
1057 | fillbuffer(); | 1057 | fillbuffer(); |
1058 | // // qDebug("&Buffer filled"); | 1058 | // // odebug << "&Buffer filled" << oendl; |
1059 | update(); | 1059 | update(); |
1060 | // // qDebug("&Located"); | 1060 | // // odebug << "&Located" << oendl; |
1061 | return true; | 1061 | return true; |
1062 | } | 1062 | } |
1063 | 1063 | ||
1064 | unsigned int QTReader::screenlines() | 1064 | unsigned int QTReader::screenlines() |
1065 | { | 1065 | { |
1066 | // int linespacing = (tight) ? m_ascent : m_ascent+m_descent; | 1066 | // int linespacing = (tight) ? m_ascent : m_ascent+m_descent; |
1067 | // return (height()-m_descent)/(m_linespacing); | 1067 | // return (height()-m_descent)/(m_linespacing); |
1068 | return (height()-2)/(m_linespacing); | 1068 | return (height()-2)/(m_linespacing); |
1069 | }; | 1069 | }; |
1070 | 1070 | ||
1071 | bool QTReader::fillbuffer(int reuse, int ht, int newht) | 1071 | bool QTReader::fillbuffer(int reuse, int ht, int newht) |
1072 | { | 1072 | { |
1073 | buffdoc.unsuspend(); | 1073 | buffdoc.unsuspend(); |
1074 | if (buffdoc.empty()) return false; | 1074 | if (buffdoc.empty()) return false; |
1075 | if (newht < 0) | 1075 | if (newht < 0) |
1076 | m_lastheight = height(); | 1076 | m_lastheight = height(); |
1077 | else | 1077 | else |
1078 | m_lastheight = newht; | 1078 | m_lastheight = newht; |
1079 | int ch; | 1079 | int ch; |
1080 | bool ret = false; | 1080 | bool ret = false; |
1081 | unsigned int oldpagepos = locnarray[reuse]; | 1081 | unsigned int oldpagepos = locnarray[reuse]; |
1082 | int lastypos = ht, ypos = ht; | 1082 | int lastypos = ht, ypos = ht; |
1083 | numlines = reuse; | 1083 | numlines = reuse; |
1084 | while (ypos < m_lastheight || numlines < 2) | 1084 | while (ypos < m_lastheight || numlines < 2) |
1085 | { | 1085 | { |
1086 | lastypos = ypos; | 1086 | lastypos = ypos; |
1087 | if (textarray[numlines] == NULL) | 1087 | if (textarray[numlines] == NULL) |
1088 | { | 1088 | { |
1089 | textarray[numlines] = new CDrawBuffer(&m_fontControl); | 1089 | textarray[numlines] = new CDrawBuffer(&m_fontControl); |
1090 | } | 1090 | } |
1091 | locnarray[numlines] = locate(); | 1091 | locnarray[numlines] = locate(); |
1092 | int ch = getline(textarray[numlines]); | 1092 | int ch = getline(textarray[numlines]); |
1093 | ypos += textarray[numlines]->lineSpacing(); | 1093 | ypos += textarray[numlines]->lineSpacing(); |
1094 | numlines++; | 1094 | numlines++; |
1095 | if (!ch) | 1095 | if (!ch) |
1096 | { | 1096 | { |
1097 | if (numlines - reuse == 1 /*&& locnarray[numlines] == buffdoc.locate()*/) | 1097 | if (numlines - reuse == 1 /*&& locnarray[numlines] == buffdoc.locate()*/) |
1098 | { | 1098 | { |
1099 | locate(oldpagepos); | 1099 | locate(oldpagepos); |
1100 | return false; | 1100 | return false; |
1101 | } | 1101 | } |
1102 | else | 1102 | else |
1103 | { | 1103 | { |
1104 | --numlines; | 1104 | --numlines; |
1105 | mylastpos = locate(); | 1105 | mylastpos = locate(); |
1106 | return true; | 1106 | return true; |
1107 | } | 1107 | } |
1108 | } | 1108 | } |
1109 | } | 1109 | } |
1110 | 1110 | ||
1111 | --numlines; | 1111 | --numlines; |
1112 | mylastpos = locate(); | 1112 | mylastpos = locate(); |
1113 | m_scrolldy1 = m_scrolldy2 = m_scrollpart = m_lastheight - lastypos; | 1113 | m_scrolldy1 = m_scrolldy2 = m_scrollpart = m_lastheight - lastypos; |
1114 | 1114 | ||
1115 | return true; | 1115 | return true; |
1116 | } | 1116 | } |
1117 | 1117 | ||
1118 | void QTReader::dopagedn() | 1118 | void QTReader::dopagedn() |
1119 | { | 1119 | { |
1120 | // qDebug("HEIGHT(2):%d", m_lastheight); | 1120 | // odebug << "HEIGHT(2):" << m_lastheight << "" << oendl; |
1121 | buffdoc.unsuspend(); | 1121 | buffdoc.unsuspend(); |
1122 | int skip = 0, ypos = 0; | 1122 | int skip = 0, ypos = 0; |
1123 | if (locate() != mylastpos) | 1123 | if (locate() != mylastpos) |
1124 | { | 1124 | { |
1125 | ////qDebug("Jumping to %u", mylastpos); | 1125 | ////odebug << "Jumping to " << mylastpos << "" << oendl; |
1126 | jumpto(mylastpos); | 1126 | jumpto(mylastpos); |
1127 | } | 1127 | } |
1128 | CDrawBuffer* reusebuffer = textarray[numlines]; | 1128 | CDrawBuffer* reusebuffer = textarray[numlines]; |
1129 | if (reusebuffer != NULL && reusebuffer->eof()) return; | 1129 | if (reusebuffer != NULL && reusebuffer->eof()) return; |
1130 | if (reusebuffer != NULL) | 1130 | if (reusebuffer != NULL) |
1131 | { | 1131 | { |
1132 | for (int i = 0; i <= m_overlap; i++) | 1132 | for (int i = 0; i <= m_overlap; i++) |
1133 | { | 1133 | { |
1134 | int offset = numlines - m_overlap + i; | 1134 | int offset = numlines - m_overlap + i; |
1135 | reusebuffer = textarray[offset]; | 1135 | reusebuffer = textarray[offset]; |
1136 | size_t reuselocn = locnarray[offset]; | 1136 | size_t reuselocn = locnarray[offset]; |
1137 | textarray[offset] = textarray[i]; | 1137 | textarray[offset] = textarray[i]; |
1138 | textarray[i] = reusebuffer; | 1138 | textarray[i] = reusebuffer; |
1139 | // reusebuffer->empty(); | 1139 | // reusebuffer->empty(); |
1140 | locnarray[offset] = locnarray[i]; | 1140 | locnarray[offset] = locnarray[i]; |
1141 | locnarray[i] = reuselocn; | 1141 | locnarray[i] = reuselocn; |
1142 | ypos += textarray[i]->lineSpacing(); | 1142 | ypos += textarray[i]->lineSpacing(); |
1143 | skip++; | 1143 | skip++; |
1144 | } | 1144 | } |
1145 | } | 1145 | } |
1146 | if (fillbuffer(skip, ypos)) | 1146 | if (fillbuffer(skip, ypos)) |
1147 | { | 1147 | { |
1148 | update(); | 1148 | update(); |
1149 | } | 1149 | } |
1150 | } | 1150 | } |
1151 | 1151 | ||
1152 | void QTReader::dopageup() | 1152 | void QTReader::dopageup() |
1153 | { | 1153 | { |
1154 | buffdoc.unsuspend(); | 1154 | buffdoc.unsuspend(); |
1155 | dopageup(locnarray[(m_overlap < numlines) ? m_overlap : numlines/2]); | 1155 | dopageup(locnarray[(m_overlap < numlines) ? m_overlap : numlines/2]); |
1156 | } | 1156 | } |
1157 | 1157 | ||
1158 | bool QTReader::synch(size_t start, size_t end) | 1158 | bool QTReader::synch(size_t start, size_t end) |
1159 | { | 1159 | { |
1160 | jumpto(start); | 1160 | jumpto(start); |
1161 | while (start++ < end) | 1161 | while (start++ < end) |
1162 | { | 1162 | { |
1163 | tchar ch = getch(); | 1163 | tchar ch = getch(); |
1164 | if (ch == 10) return true; | 1164 | if (ch == 10) return true; |
1165 | if (ch == UEOF) return false; | 1165 | if (ch == UEOF) return false; |
1166 | } | 1166 | } |
1167 | return false; | 1167 | return false; |
1168 | } | 1168 | } |
1169 | 1169 | ||
1170 | void QTReader::dopageup(unsigned int target) | 1170 | void QTReader::dopageup(unsigned int target) |
1171 | { | 1171 | { |
1172 | buffdoc.unsuspend(); | 1172 | buffdoc.unsuspend(); |
1173 | CBufferFace<CDrawBuffer*> buff; | 1173 | CBufferFace<CDrawBuffer*> buff; |
1174 | CBufferFace<size_t> loc; | 1174 | CBufferFace<size_t> loc; |
1175 | 1175 | ||
1176 | size_t delta, guess = 2*(locate()-pagelocate()), lastdelta = 0; | 1176 | size_t delta, guess = 2*(locate()-pagelocate()), lastdelta = 0; |
1177 | bool ch = true; | 1177 | bool ch = true; |
1178 | int nbfl, ypos = 0; | 1178 | int nbfl, ypos = 0; |
1179 | if (guess < 128) guess = 128; | 1179 | if (guess < 128) guess = 128; |
1180 | while (1) | 1180 | while (1) |
1181 | { | 1181 | { |
1182 | ch = true; | 1182 | ch = true; |
1183 | if (target < guess) | 1183 | if (target < guess) |
1184 | { | 1184 | { |
1185 | delta = 0; // 0 is a flag to say don't guess any more | 1185 | delta = 0; // 0 is a flag to say don't guess any more |
1186 | jumpto( (m_continuousDocument) ? 0 : buffdoc.startSection() ); | 1186 | jumpto( (m_continuousDocument) ? 0 : buffdoc.startSection() ); |
1187 | } | 1187 | } |
1188 | else if (!m_continuousDocument && (target - guess < buffdoc.startSection())) | 1188 | else if (!m_continuousDocument && (target - guess < buffdoc.startSection())) |
1189 | { | 1189 | { |
1190 | delta = 0; // 0 is a flag to say don't guess any more | 1190 | delta = 0; // 0 is a flag to say don't guess any more |
1191 | jumpto(buffdoc.startSection()); | 1191 | jumpto(buffdoc.startSection()); |
1192 | } | 1192 | } |
1193 | else | 1193 | else |
1194 | { | 1194 | { |
1195 | delta = guess; | 1195 | delta = guess; |
1196 | if (!synch(target-delta, target-lastdelta)) | 1196 | if (!synch(target-delta, target-lastdelta)) |
1197 | { | 1197 | { |
1198 | lastdelta = delta; | 1198 | lastdelta = delta; |
1199 | if (guess < 4000) | 1199 | if (guess < 4000) |
1200 | { | 1200 | { |
1201 | guess <<= 1; | 1201 | guess <<= 1; |
1202 | continue; | 1202 | continue; |
1203 | } | 1203 | } |
1204 | else | 1204 | else |
1205 | { | 1205 | { |
1206 | jumpto(target-delta); | 1206 | jumpto(target-delta); |
1207 | } | 1207 | } |
1208 | } | 1208 | } |
1209 | } | 1209 | } |
1210 | 1210 | ||
1211 | nbfl = 0; | 1211 | nbfl = 0; |
1212 | ypos = 0; | 1212 | ypos = 0; |
1213 | 1213 | ||
1214 | while (locate() < target) | 1214 | while (locate() < target) |
1215 | { | 1215 | { |
1216 | if (buff[nbfl] == NULL) buff[nbfl] = new CDrawBuffer(&m_fontControl); | 1216 | if (buff[nbfl] == NULL) buff[nbfl] = new CDrawBuffer(&m_fontControl); |
1217 | loc[nbfl] = locate(); | 1217 | loc[nbfl] = locate(); |
1218 | ch = getline(buff[nbfl]); | 1218 | ch = getline(buff[nbfl]); |
1219 | ypos += buff[nbfl]->lineSpacing(); | 1219 | ypos += buff[nbfl]->lineSpacing(); |
1220 | nbfl++; | 1220 | nbfl++; |
1221 | if (!ch) break; | 1221 | if (!ch) break; |
1222 | } | 1222 | } |
1223 | if (guess < 4000 && ypos < height() && (delta != 0)) | 1223 | if (guess < 4000 && ypos < height() && (delta != 0)) |
1224 | { | 1224 | { |
1225 | for (int i = 0; i < nbfl; i++) | 1225 | for (int i = 0; i < nbfl; i++) |
1226 | { | 1226 | { |
1227 | delete buff[i]; | 1227 | delete buff[i]; |
1228 | buff[i] = NULL; | 1228 | buff[i] = NULL; |
1229 | } | 1229 | } |
1230 | guess <<= 1; | 1230 | guess <<= 1; |
1231 | continue; | 1231 | continue; |
1232 | } | 1232 | } |
1233 | break; | 1233 | break; |
1234 | } | 1234 | } |
1235 | if (ch) | 1235 | if (ch) |
1236 | { | 1236 | { |
1237 | if (buff[nbfl] == NULL) buff[nbfl] = new CDrawBuffer(&m_fontControl); | 1237 | if (buff[nbfl] == NULL) buff[nbfl] = new CDrawBuffer(&m_fontControl); |
1238 | loc[nbfl] = locate(); | 1238 | loc[nbfl] = locate(); |
1239 | int ch = getline(buff[nbfl]); | 1239 | int ch = getline(buff[nbfl]); |
1240 | nbfl++; | 1240 | nbfl++; |
1241 | } | 1241 | } |
1242 | /* | 1242 | /* |
1243 | ypos = 0; | 1243 | ypos = 0; |
1244 | numlines = 0; | 1244 | numlines = 0; |
1245 | while (ypos < height() && numlines <= nbfl-1) | 1245 | while (ypos < height() && numlines <= nbfl-1) |
1246 | { | 1246 | { |
1247 | ypos += buff[nbfl - numlines - 1]->lineSpacing(); | 1247 | ypos += buff[nbfl - numlines - 1]->lineSpacing(); |
1248 | numlines++; | 1248 | numlines++; |
1249 | } | 1249 | } |
1250 | --numlines; | 1250 | --numlines; |
1251 | */ | 1251 | */ |
1252 | 1252 | ||
1253 | ypos = 0; | 1253 | ypos = 0; |
1254 | numlines = 0; | 1254 | numlines = 0; |
1255 | while (ypos < height() && numlines+2 <= nbfl) | 1255 | while (ypos < height() && numlines+2 <= nbfl) |
1256 | { | 1256 | { |
1257 | ypos += buff[nbfl - numlines - 2]->lineSpacing(); | 1257 | ypos += buff[nbfl - numlines - 2]->lineSpacing(); |
1258 | numlines++; | 1258 | numlines++; |
1259 | } | 1259 | } |
1260 | if (numlines > 0) --numlines; | 1260 | if (numlines > 0) --numlines; |
1261 | if (numlines == 0 && nbfl > 1) numlines = 1; | 1261 | if (numlines == 0 && nbfl > 1) numlines = 1; |
1262 | 1262 | ||
1263 | int offset = nbfl-1; | 1263 | int offset = nbfl-1; |
1264 | offset -= numlines; | 1264 | offset -= numlines; |
1265 | ypos = 0; | 1265 | ypos = 0; |
1266 | for (int i = 0; i <= numlines; i++) | 1266 | for (int i = 0; i <= numlines; i++) |
1267 | { | 1267 | { |
1268 | delete textarray[i]; | 1268 | delete textarray[i]; |
1269 | textarray[i] = buff[offset+i]; | 1269 | textarray[i] = buff[offset+i]; |
1270 | locnarray[i] = loc[offset + i]; | 1270 | locnarray[i] = loc[offset + i]; |
1271 | ypos += textarray[i]->lineSpacing(); | 1271 | ypos += textarray[i]->lineSpacing(); |
1272 | } | 1272 | } |
1273 | #ifdef _WINDOWS | 1273 | #ifdef _WINDOWS |
1274 | for (i = 0; i < nbfl - numlines - 1; i++) | 1274 | for (i = 0; i < nbfl - numlines - 1; i++) |
1275 | #else | 1275 | #else |
1276 | for (int i = 0; i < nbfl - numlines - 1; i++) | 1276 | for (int i = 0; i < nbfl - numlines - 1; i++) |
1277 | #endif | 1277 | #endif |
1278 | { | 1278 | { |
1279 | delete buff[i]; | 1279 | delete buff[i]; |
1280 | } | 1280 | } |
1281 | 1281 | ||
1282 | while (ypos < height()) | 1282 | while (ypos < height()) |
1283 | { | 1283 | { |
1284 | numlines++; | 1284 | numlines++; |
1285 | locnarray[numlines] = locate(); | 1285 | locnarray[numlines] = locate(); |
1286 | if (textarray[numlines] == NULL) textarray[numlines] = new CDrawBuffer(&m_fontControl); | 1286 | if (textarray[numlines] == NULL) textarray[numlines] = new CDrawBuffer(&m_fontControl); |
1287 | if (!getline(textarray[numlines])) break; | 1287 | if (!getline(textarray[numlines])) break; |
1288 | ypos += textarray[numlines]->lineSpacing(); | 1288 | ypos += textarray[numlines]->lineSpacing(); |
1289 | } | 1289 | } |
1290 | 1290 | ||
1291 | mylastpos = locate(); | 1291 | mylastpos = locate(); |
1292 | 1292 | ||
1293 | update(); | 1293 | update(); |
1294 | } | 1294 | } |
1295 | 1295 | ||
1296 | bool QTReader::load_file(const char *newfile, unsigned int _lcn) | 1296 | bool QTReader::load_file(const char *newfile, unsigned int _lcn) |
1297 | { | 1297 | { |
1298 | // QMessageBox::information(this, "Name", name, 1); | 1298 | // QMessageBox::information(this, "Name", name, 1); |
1299 | // QMessageBox::information(this, "load_file", newfile, 1); | 1299 | // QMessageBox::information(this, "load_file", newfile, 1); |
1300 | 1300 | ||
1301 | bool bRC = false; | 1301 | bool bRC = false; |
1302 | unsigned int lcn = _lcn; | 1302 | unsigned int lcn = _lcn; |
1303 | if (m_lastfile == newfile) | 1303 | if (m_lastfile == newfile) |
1304 | { | 1304 | { |
1305 | lcn = m_lastposn; | 1305 | lcn = m_lastposn; |
1306 | } | 1306 | } |
1307 | // QMessageBox::information(0, "Opening...", newfile); | 1307 | // QMessageBox::information(0, "Opening...", newfile); |
1308 | m_lastwidth = width(); | 1308 | m_lastwidth = width(); |
1309 | m_lastheight = height(); | 1309 | m_lastheight = height(); |
1310 | if (buffdoc.openfile(this,newfile) == 0) | 1310 | if (buffdoc.openfile(this,newfile) == 0) |
1311 | { | 1311 | { |
1312 | m_lastfile = newfile; | 1312 | m_lastfile = newfile; |
1313 | buffdoc.setwidth(m_lastwidth-2*m_border); | 1313 | buffdoc.setwidth(m_lastwidth-2*m_border); |
1314 | bRC = true; | 1314 | bRC = true; |
1315 | buffdoc.setContinuous(m_continuousDocument); | 1315 | buffdoc.setContinuous(m_continuousDocument); |
1316 | // // qDebug("buffdoc.openfile done"); | 1316 | // // odebug << "buffdoc.openfile done" << oendl; |
1317 | locate(lcn); | 1317 | locate(lcn); |
1318 | // // qDebug("buffdoc.locate done"); | 1318 | // // odebug << "buffdoc.locate done" << oendl; |
1319 | } | 1319 | } |
1320 | setfilter(getfilter()); | 1320 | setfilter(getfilter()); |
1321 | update(); | 1321 | update(); |
1322 | // // qDebug("Updated"); | 1322 | // // odebug << "Updated" << oendl; |
1323 | return bRC; | 1323 | return bRC; |
1324 | } | 1324 | } |
1325 | 1325 | ||
1326 | void QTReader::lineDown() | 1326 | void QTReader::lineDown() |
1327 | { | 1327 | { |
1328 | int ypos = 0; | 1328 | int ypos = 0; |
1329 | int offset = numlines; | 1329 | int offset = numlines; |
1330 | 1330 | ||
1331 | for (int i = 0; i <= numlines; i++) | 1331 | for (int i = 0; i <= numlines; i++) |
1332 | { | 1332 | { |
1333 | if ((ypos += textarray[numlines-i]->lineSpacing()) > height()) | 1333 | if ((ypos += textarray[numlines-i]->lineSpacing()) > height()) |
1334 | { | 1334 | { |
1335 | offset = i-1; | 1335 | offset = i-1; |
1336 | break; | 1336 | break; |
1337 | } | 1337 | } |
1338 | } | 1338 | } |
1339 | offset = numlines - offset; | 1339 | offset = numlines - offset; |
1340 | #ifdef _WINDOWS | 1340 | #ifdef _WINDOWS |
1341 | for (i = offset; i <= numlines; i++) | 1341 | for (i = offset; i <= numlines; i++) |
1342 | #else | 1342 | #else |
1343 | for (int i = offset; i <= numlines; i++) | 1343 | for (int i = offset; i <= numlines; i++) |
1344 | #endif | 1344 | #endif |
1345 | { | 1345 | { |
1346 | CDrawBuffer* buff = textarray[i-offset]; | 1346 | CDrawBuffer* buff = textarray[i-offset]; |
1347 | textarray[i-offset] = textarray[i]; | 1347 | textarray[i-offset] = textarray[i]; |
1348 | locnarray[i-offset] = locnarray[i]; | 1348 | locnarray[i-offset] = locnarray[i]; |
1349 | textarray[i] = buff; | 1349 | textarray[i] = buff; |
1350 | } | 1350 | } |
1351 | numlines = numlines - offset + 1; | 1351 | numlines = numlines - offset + 1; |
1352 | locnarray[numlines] = locate(); | 1352 | locnarray[numlines] = locate(); |
1353 | if (textarray[numlines] == NULL) | 1353 | if (textarray[numlines] == NULL) |
1354 | { | 1354 | { |
1355 | textarray[numlines] = new CDrawBuffer(&m_fontControl); | 1355 | textarray[numlines] = new CDrawBuffer(&m_fontControl); |
1356 | } | 1356 | } |
1357 | getline(textarray[numlines]); | 1357 | getline(textarray[numlines]); |
1358 | mylastpos = locate(); | 1358 | mylastpos = locate(); |
1359 | update(); | 1359 | update(); |
1360 | } | 1360 | } |
1361 | /* | 1361 | /* |
1362 | void QTReader::lineUp() | 1362 | void QTReader::lineUp() |
1363 | { | 1363 | { |
1364 | CBuffer** buff = textarray; | 1364 | CBuffer** buff = textarray; |
1365 | unsigned int *loc = new unsigned int[numlines]; | 1365 | unsigned int *loc = new unsigned int[numlines]; |
1366 | int cbptr = 0; | 1366 | int cbptr = 0; |
1367 | if (locate() != mylastpos) jumpto(mylastpos); | 1367 | if (locate() != mylastpos) jumpto(mylastpos); |
1368 | unsigned int target = locnarray[numlines-1]; | 1368 | unsigned int target = locnarray[numlines-1]; |
1369 | if (buffdoc.hasrandomaccess()) | 1369 | if (buffdoc.hasrandomaccess()) |
1370 | { | 1370 | { |
1371 | unsigned int delta = locate()-pagelocate(); | 1371 | unsigned int delta = locate()-pagelocate(); |
1372 | if (delta < 64) delta = 64; | 1372 | if (delta < 64) delta = 64; |
1373 | do | 1373 | do |
1374 | { | 1374 | { |
1375 | delta <<= 1; | 1375 | delta <<= 1; |
1376 | if (delta >= target) | 1376 | if (delta >= target) |
1377 | { | 1377 | { |
1378 | delta = target; | 1378 | delta = target; |
1379 | jumpto(0); | 1379 | jumpto(0); |
1380 | for (int i = 0; i < numlines; i++) | 1380 | for (int i = 0; i < numlines; i++) |
1381 | { | 1381 | { |
1382 | loc[i] = locate(); | 1382 | loc[i] = locate(); |
1383 | getline(buff[i]); | 1383 | getline(buff[i]); |
1384 | } | 1384 | } |
1385 | break; | 1385 | break; |
1386 | } | 1386 | } |
1387 | jumpto(target-delta); | 1387 | jumpto(target-delta); |
1388 | do | 1388 | do |
1389 | { | 1389 | { |
1390 | buffdoc.getline(buff[0],width()); | 1390 | buffdoc.getline(buff[0],width()); |
1391 | #ifdef WS | 1391 | #ifdef WS |
1392 | //printf("Trying:%s\n",buff[0]); | 1392 | //printf("Trying:%s\n",buff[0]); |
1393 | #endif | 1393 | #endif |
1394 | if (locate() > target) continue; | 1394 | if (locate() > target) continue; |
1395 | } | 1395 | } |
1396 | while (!buffdoc.iseol()); | 1396 | while (!buffdoc.iseol()); |
1397 | for (int i = 0; i < numlines; i++) | 1397 | for (int i = 0; i < numlines; i++) |
1398 | { | 1398 | { |
1399 | loc[i] = locate(); | 1399 | loc[i] = locate(); |
1400 | buffdoc.getline(buff[i],width()); | 1400 | buffdoc.getline(buff[i],width()); |
1401 | #ifdef WS | 1401 | #ifdef WS |
1402 | //printf("Filling:%s\n",buff[i]); | 1402 | //printf("Filling:%s\n",buff[i]); |
1403 | #endif | 1403 | #endif |
1404 | } | 1404 | } |
1405 | } | 1405 | } |
1406 | while (locate() >= target && delta < 4096); | 1406 | while (locate() >= target && delta < 4096); |
1407 | #ifdef WS | 1407 | #ifdef WS |
1408 | //printf("Delta:%u\n",delta); | 1408 | //printf("Delta:%u\n",delta); |
1409 | #endif | 1409 | #endif |
1410 | } | 1410 | } |
1411 | else | 1411 | else |
1412 | { | 1412 | { |
1413 | jumpto(0); | 1413 | jumpto(0); |
1414 | for (int i = 0; i < numlines; i++) | 1414 | for (int i = 0; i < numlines; i++) |
1415 | { | 1415 | { |
1416 | loc[i] = locate(); | 1416 | loc[i] = locate(); |
1417 | buffdoc.getline(buff[i],width()); | 1417 | buffdoc.getline(buff[i],width()); |
1418 | } | 1418 | } |
1419 | } | 1419 | } |
1420 | cbptr = 0; | 1420 | cbptr = 0; |
1421 | while (locate() < target) | 1421 | while (locate() < target) |
1422 | { | 1422 | { |
1423 | loc[cbptr] = locate(); | 1423 | loc[cbptr] = locate(); |
1424 | buffdoc.getline(buff[cbptr], width()); | 1424 | buffdoc.getline(buff[cbptr], width()); |
1425 | #ifdef WS | 1425 | #ifdef WS |
1426 | //printf("Adding:%s\n",buff[cbptr]->data()); | 1426 | //printf("Adding:%s\n",buff[cbptr]->data()); |
1427 | #endif | 1427 | #endif |
1428 | cbptr = (cbptr+1) % numlines; | 1428 | cbptr = (cbptr+1) % numlines; |
1429 | } | 1429 | } |
1430 | pagepos = loc[cbptr]; | 1430 | pagepos = loc[cbptr]; |
1431 | textarray = new CBuffer*[numlines]; | 1431 | textarray = new CBuffer*[numlines]; |
1432 | for (int i = 0; i < numlines; i++) | 1432 | for (int i = 0; i < numlines; i++) |
1433 | { | 1433 | { |
1434 | int j = (cbptr+i)%numlines; | 1434 | int j = (cbptr+i)%numlines; |
1435 | textarray[i] = buff[j]; | 1435 | textarray[i] = buff[j]; |
1436 | locnarray[i] = loc[j]; | 1436 | locnarray[i] = loc[j]; |
1437 | } | 1437 | } |
1438 | delete [] buff; | 1438 | delete [] buff; |
1439 | delete [] loc; | 1439 | delete [] loc; |
1440 | mylastpos = locate(); | 1440 | mylastpos = locate(); |
1441 | update(); | 1441 | update(); |
1442 | } | 1442 | } |
1443 | */ | 1443 | */ |
1444 | void QTReader::lineUp() | 1444 | void QTReader::lineUp() |
1445 | { | 1445 | { |
1446 | buffdoc.unsuspend(); | 1446 | buffdoc.unsuspend(); |
1447 | CDrawBuffer* buff = textarray[numlines]; | 1447 | CDrawBuffer* buff = textarray[numlines]; |
1448 | unsigned int loc; | 1448 | unsigned int loc; |
1449 | unsigned int end = locnarray[numlines]; | 1449 | unsigned int end = locnarray[numlines]; |
1450 | int cbptr = 0; | 1450 | int cbptr = 0; |
1451 | if (locate() != mylastpos) jumpto(mylastpos); | 1451 | if (locate() != mylastpos) jumpto(mylastpos); |
1452 | unsigned int target = locnarray[0]; | 1452 | unsigned int target = locnarray[0]; |
1453 | if (target == 0) return; | 1453 | if (target == 0) return; |
1454 | if (!m_continuousDocument && (target == buffdoc.startSection())) return; | 1454 | if (!m_continuousDocument && (target == buffdoc.startSection())) return; |
1455 | if (buffdoc.hasrandomaccess()) | 1455 | if (buffdoc.hasrandomaccess()) |
1456 | { | 1456 | { |
1457 | unsigned int delta = locate()-pagelocate(); | 1457 | unsigned int delta = locate()-pagelocate(); |
1458 | if (delta < 64) delta = 64; | 1458 | if (delta < 64) delta = 64; |
1459 | do | 1459 | do |
1460 | { | 1460 | { |
1461 | delta <<= 1; | 1461 | delta <<= 1; |
1462 | if (delta >= target) | 1462 | if (delta >= target) |
1463 | { | 1463 | { |
1464 | delta = target; | 1464 | delta = target; |
1465 | jumpto(0); | 1465 | jumpto(0); |
1466 | loc = locate(); | 1466 | loc = locate(); |
1467 | getline(buff); | 1467 | getline(buff); |
1468 | break; | 1468 | break; |
1469 | } | 1469 | } |
1470 | else if (!m_continuousDocument && (target - delta < buffdoc.startSection())) | 1470 | else if (!m_continuousDocument && (target - delta < buffdoc.startSection())) |
1471 | { | 1471 | { |
1472 | delta = target-buffdoc.startSection(); | 1472 | delta = target-buffdoc.startSection(); |
1473 | jumpto(buffdoc.startSection()); | 1473 | jumpto(buffdoc.startSection()); |
1474 | loc = locate(); | 1474 | loc = locate(); |
1475 | getline(buff); | 1475 | getline(buff); |
1476 | break; | 1476 | break; |
1477 | } | 1477 | } |
1478 | jumpto(target-delta); | 1478 | jumpto(target-delta); |
1479 | do | 1479 | do |
1480 | { | 1480 | { |
1481 | getline(buff); | 1481 | getline(buff); |
1482 | #ifdef WS | 1482 | #ifdef WS |
1483 | //printf("Trying:%s\n",buff[0]); | 1483 | //printf("Trying:%s\n",buff[0]); |
1484 | #endif | 1484 | #endif |
1485 | if (locate() > target) continue; | 1485 | if (locate() > target) continue; |
1486 | } | 1486 | } |
1487 | while (!buffdoc.iseol()); | 1487 | while (!buffdoc.iseol()); |
1488 | loc = locate(); | 1488 | loc = locate(); |
1489 | getline(buff); | 1489 | getline(buff); |
1490 | } | 1490 | } |
1491 | while (locate() >= target && delta < 4096); | 1491 | while (locate() >= target && delta < 4096); |
1492 | } | 1492 | } |
1493 | else | 1493 | else |
1494 | { | 1494 | { |
1495 | jumpto(0); | 1495 | jumpto(0); |
1496 | loc = locate(); | 1496 | loc = locate(); |
1497 | getline(buff); | 1497 | getline(buff); |
1498 | } | 1498 | } |
1499 | cbptr = 0; | 1499 | cbptr = 0; |
1500 | while (locate() < target) | 1500 | while (locate() < target) |
1501 | { | 1501 | { |
1502 | loc = locate(); | 1502 | loc = locate(); |
1503 | getline(buff); | 1503 | getline(buff); |
1504 | } | 1504 | } |
1505 | for (int i = numlines; i > 0; i--) | 1505 | for (int i = numlines; i > 0; i--) |
1506 | { | 1506 | { |
1507 | textarray[i] = textarray[i-1]; | 1507 | textarray[i] = textarray[i-1]; |
1508 | locnarray[i] = locnarray[i-1]; | 1508 | locnarray[i] = locnarray[i-1]; |
1509 | } | 1509 | } |
1510 | textarray[0] = buff; | 1510 | textarray[0] = buff; |
1511 | locnarray[0] = loc; | 1511 | locnarray[0] = loc; |
1512 | int start = numlines; | 1512 | int start = numlines; |
1513 | int ypos = 0; | 1513 | int ypos = 0; |
1514 | #ifdef _WINDOWS | 1514 | #ifdef _WINDOWS |
1515 | for (i = 0; i <= numlines; i++) | 1515 | for (i = 0; i <= numlines; i++) |
1516 | #else | 1516 | #else |
1517 | for (int i = 0; i <= numlines; i++) | 1517 | for (int i = 0; i <= numlines; i++) |
1518 | #endif | 1518 | #endif |
1519 | { | 1519 | { |
1520 | ypos += textarray[i]->lineSpacing(); | 1520 | ypos += textarray[i]->lineSpacing(); |
1521 | if (ypos > height()) | 1521 | if (ypos > height()) |
1522 | { | 1522 | { |
1523 | start = i; | 1523 | start = i; |
1524 | ypos -= textarray[i]->lineSpacing(); | 1524 | ypos -= textarray[i]->lineSpacing(); |
1525 | break; | 1525 | break; |
1526 | } | 1526 | } |
1527 | } | 1527 | } |
1528 | jumpto(locnarray[start]); | 1528 | jumpto(locnarray[start]); |
1529 | fillbuffer(start, ypos); | 1529 | fillbuffer(start, ypos); |
1530 | update(); | 1530 | update(); |
1531 | } | 1531 | } |
1532 | 1532 | ||
1533 | bool QTReader::empty() | 1533 | bool QTReader::empty() |
1534 | { | 1534 | { |
1535 | return buffdoc.empty(); | 1535 | return buffdoc.empty(); |
1536 | } | 1536 | } |
1537 | 1537 | ||
1538 | MarkupType QTReader::PreferredMarkup() | 1538 | MarkupType QTReader::PreferredMarkup() |
1539 | { | 1539 | { |
1540 | MarkupType m = buffdoc.PreferredMarkup(); | 1540 | MarkupType m = buffdoc.PreferredMarkup(); |
1541 | if (m == cTEXT) | 1541 | if (m == cTEXT) |
1542 | { | 1542 | { |
1543 | int ext = m_lastfile.findRev('.'); | 1543 | int ext = m_lastfile.findRev('.'); |
1544 | if (ext >= 0) | 1544 | if (ext >= 0) |
1545 | { | 1545 | { |
1546 | QString ft = m_lastfile.right(m_lastfile.length()-ext-1).upper(); | 1546 | QString ft = m_lastfile.right(m_lastfile.length()-ext-1).upper(); |
1547 | if (ft.left(3) == "HTM") | 1547 | if (ft.left(3) == "HTM") |
1548 | { | 1548 | { |
1549 | m = cHTML; | 1549 | m = cHTML; |
1550 | } | 1550 | } |
1551 | } | 1551 | } |
1552 | } | 1552 | } |
1553 | return m; | 1553 | return m; |
1554 | } | 1554 | } |
diff --git a/noncore/apps/opie-reader/QTReaderApp.cpp b/noncore/apps/opie-reader/QTReaderApp.cpp index b072854..f18cb59 100644 --- a/noncore/apps/opie-reader/QTReaderApp.cpp +++ b/noncore/apps/opie-reader/QTReaderApp.cpp | |||
@@ -1,4221 +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 | |||
20 | #include "useqpe.h" | 21 | #include "useqpe.h" |
21 | #include <qregexp.h> | 22 | #include "QTReader.h" |
22 | #include <qclipboard.h> | 23 | #include "GraphicWin.h" |
23 | #include <qwidgetstack.h> | 24 | #include "Bkmks.h" |
25 | #include "cbkmkselector.h" | ||
26 | #include "infowin.h" | ||
27 | #include "ToolbarPrefs.h" | ||
28 | #include "Prefs.h" | ||
29 | #include "CAnnoEdit.h" | ||
30 | #include "QFloatBar.h" | ||
31 | #include "FixedFont.h" | ||
32 | #include "URLDialog.h" | ||
33 | #include "QTReaderApp.h" | ||
34 | #include "CDrawBuffer.h" | ||
35 | #include "Filedata.h" | ||
36 | #include "opie.h" | ||
37 | #include "names.h" | ||
38 | #include "CEncoding_tables.h" | ||
39 | #include "CloseDialog.h" | ||
40 | |||
41 | /* OPIE */ | ||
42 | #include <opie2/odebug.h> | ||
43 | #ifdef USEQPE | ||
44 | #include <qpe/menubutton.h> | ||
45 | #include <qpe/fontdatabase.h> | ||
46 | #include <qpe/global.h> | ||
47 | #include <qpe/applnk.h> | ||
48 | #include <qpe/config.h> | ||
49 | #include <qpe/qcopenvelope_qws.h> | ||
50 | #endif | ||
51 | |||
52 | /* QT */ | ||
24 | #ifdef USEQPE | 53 | #ifdef USEQPE |
25 | #include <qmenubar.h> | 54 | #include <qmenubar.h> |
26 | #include <qtoolbar.h> | 55 | #include <qtoolbar.h> |
27 | #endif | 56 | #endif |
57 | #include <qregexp.h> | ||
58 | #include <qclipboard.h> | ||
59 | #include <qwidgetstack.h> | ||
28 | #include <qmenubar.h> | 60 | #include <qmenubar.h> |
29 | #include <qtoolbar.h> | 61 | #include <qtoolbar.h> |
30 | #ifdef USEQPE | ||
31 | #include <qpe/menubutton.h> | ||
32 | #include <qpe/fontdatabase.h> | ||
33 | #endif | ||
34 | #include <qcombobox.h> | 62 | #include <qcombobox.h> |
35 | #include <qpopupmenu.h> | 63 | #include <qpopupmenu.h> |
36 | #include <qaction.h> | 64 | #include <qaction.h> |
37 | #include <qapplication.h> | 65 | #include <qapplication.h> |
38 | #include <qlineedit.h> | 66 | #include <qlineedit.h> |
39 | #include <qtoolbutton.h> | 67 | #include <qtoolbutton.h> |
40 | #include <qspinbox.h> | 68 | #include <qspinbox.h> |
41 | #include <qobjectlist.h> | 69 | #include <qobjectlist.h> |
42 | #ifdef USEQPE | ||
43 | #include <qpe/global.h> | ||
44 | #include <qpe/applnk.h> | ||
45 | #endif | ||
46 | #include <qfileinfo.h> | 70 | #include <qfileinfo.h> |
47 | #include <stdlib.h> //getenv | ||
48 | #include <qprogressbar.h> | 71 | #include <qprogressbar.h> |
49 | #ifdef USEQPE | ||
50 | #include <qpe/config.h> | ||
51 | #endif | ||
52 | #include <qbuttongroup.h> | 72 | #include <qbuttongroup.h> |
53 | #include <qradiobutton.h> | 73 | #include <qradiobutton.h> |
54 | #ifdef USEQPE | 74 | |
55 | #include <qpe/qcopenvelope_qws.h> | 75 | /* STD */ |
56 | #endif | 76 | #include <stdlib.h> //getenv |
57 | #include "QTReader.h" | 77 | |
58 | #include "GraphicWin.h" | ||
59 | #include "Bkmks.h" | ||
60 | #include "cbkmkselector.h" | ||
61 | #include "infowin.h" | ||
62 | #include "ToolbarPrefs.h" | ||
63 | #include "Prefs.h" | ||
64 | #include "CAnnoEdit.h" | ||
65 | #include "QFloatBar.h" | ||
66 | #include "FixedFont.h" | ||
67 | #include "URLDialog.h" | ||
68 | //#include <qpe/fontdatabase.h> | ||
69 | 78 | ||
70 | #ifdef USEQPE | 79 | #ifdef USEQPE |
71 | #include <qpe/resource.h> | 80 | #include <qpe/resource.h> |
72 | #include <qpe/qpeapplication.h> | 81 | #include <qpe/qpeapplication.h> |
73 | #include "fileBrowser.h" | 82 | #include "fileBrowser.h" |
74 | #else | 83 | #else |
75 | #include "qfiledialog.h" | 84 | #include "qfiledialog.h" |
76 | #endif | 85 | #endif |
77 | 86 | ||
78 | #include "QTReaderApp.h" | ||
79 | #include "CDrawBuffer.h" | ||
80 | #include "Filedata.h" | ||
81 | #include "opie.h" | ||
82 | #include "names.h" | ||
83 | #include "CEncoding_tables.h" | ||
84 | #include "CloseDialog.h" | ||
85 | |||
86 | bool CheckVersion(int&, int&, char&); | 87 | bool CheckVersion(int&, int&, char&); |
87 | 88 | ||
88 | #ifdef _WINDOWS | 89 | #ifdef _WINDOWS |
89 | #define PICDIR "c:\\uqtreader\\pics\\" | 90 | #define PICDIR "c:\\uqtreader\\pics\\" |
90 | #else | 91 | #else |
91 | #ifdef USEQPE | 92 | #ifdef USEQPE |
92 | #define PICDIR "opie-reader/" | 93 | #define PICDIR "opie-reader/" |
93 | #else | 94 | #else |
94 | #define PICDIR "/home/tim/uqtreader/pics/" | 95 | #define PICDIR "/home/tim/uqtreader/pics/" |
95 | #endif | 96 | #endif |
96 | #endif | 97 | #endif |
97 | 98 | ||
98 | unsigned long QTReaderApp::m_uid = 0; | 99 | unsigned long QTReaderApp::m_uid = 0; |
99 | 100 | ||
100 | void QTReaderApp::setScrollState(bool _b) { m_scrollButton->setOn(_b); } | 101 | void QTReaderApp::setScrollState(bool _b) { m_scrollButton->setOn(_b); } |
101 | 102 | ||
102 | #ifdef USEQPE | 103 | #ifdef USEQPE |
103 | #define geticon(iconname) Resource::loadPixmap( iconname ) | 104 | #define geticon(iconname) Resource::loadPixmap( iconname ) |
104 | #define getmyicon(iconname) Resource::loadPixmap( PICDIR iconname ) | 105 | #define getmyicon(iconname) Resource::loadPixmap( PICDIR iconname ) |
105 | #else | 106 | #else |
106 | #define geticon(iconname) QPixmap(PICDIR iconname ".png") | 107 | #define geticon(iconname) QPixmap(PICDIR iconname ".png") |
107 | #define getmyicon(iconname) geticon(iconname) | 108 | #define getmyicon(iconname) geticon(iconname) |
108 | //#define geticon(iconname) QIconSet( QPixmap(PICDIR iconname) ) | 109 | //#define geticon(iconname) QIconSet( QPixmap(PICDIR iconname) ) |
109 | #endif | 110 | #endif |
110 | 111 | ||
111 | #ifndef _WINDOWS | 112 | #ifndef _WINDOWS |
112 | #include <unistd.h> | 113 | #include <unistd.h> |
113 | #endif | 114 | #endif |
114 | #include <stddef.h> | 115 | #include <stddef.h> |
115 | #ifndef _WINDOWS | 116 | #ifndef _WINDOWS |
116 | #include <dirent.h> | 117 | #include <dirent.h> |
117 | #endif | 118 | #endif |
118 | 119 | ||
119 | void QTReaderApp::listBkmkFiles() | 120 | void QTReaderApp::listBkmkFiles() |
120 | { | 121 | { |
121 | bkmkselector->clear(); | 122 | bkmkselector->clear(); |
122 | bkmkselector->setText("Cancel"); | 123 | bkmkselector->setText("Cancel"); |
123 | #ifndef USEQPE | 124 | #ifndef USEQPE |
124 | int cnt = 0; | 125 | int cnt = 0; |
125 | 126 | ||
126 | QDir d = QDir::home(); // "/" | 127 | QDir d = QDir::home(); // "/" |
127 | if ( !d.cd(APPDIR) ) { // "/tmp" | 128 | if ( !d.cd(APPDIR) ) { // "/tmp" |
128 | qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); | 129 | owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; |
129 | d = QDir::home(); | 130 | d = QDir::home(); |
130 | d.mkdir(APPDIR); | 131 | d.mkdir(APPDIR); |
131 | d.cd(APPDIR); | 132 | d.cd(APPDIR); |
132 | } | 133 | } |
133 | 134 | ||
134 | 135 | ||
135 | 136 | ||
136 | 137 | ||
137 | d.setFilter( QDir::Files | QDir::NoSymLinks ); | 138 | d.setFilter( QDir::Files | QDir::NoSymLinks ); |
138 | // d.setSorting( QDir::Size | QDir::Reversed ); | 139 | // d.setSorting( QDir::Size | QDir::Reversed ); |
139 | 140 | ||
140 | const QFileInfoList *list = d.entryInfoList(); | 141 | const QFileInfoList *list = d.entryInfoList(); |
141 | QFileInfoListIterator it( *list ); // create list iterator | 142 | QFileInfoListIterator it( *list ); // create list iterator |
142 | QFileInfo *fi; // pointer for traversing | 143 | QFileInfo *fi; // pointer for traversing |
143 | 144 | ||
144 | while ( (fi=it.current()) ) { // for each file... | 145 | while ( (fi=it.current()) ) { // for each file... |
145 | 146 | ||
146 | bkmkselector->insertItem(fi->fileName()); | 147 | bkmkselector->insertItem(fi->fileName()); |
147 | cnt++; | 148 | cnt++; |
148 | 149 | ||
149 | //qDebug( "%10li %s", fi->size(), fi->fileName().data() ); | 150 | //odebug << "" << fi->size() << " " << fi->fileName().data() << "" << oendl; |
150 | ++it; // goto next list element | 151 | ++it; // goto next list element |
151 | } | 152 | } |
152 | 153 | ||
153 | #else /* USEQPE */ | 154 | #else /* USEQPE */ |
154 | int cnt = 0; | 155 | int cnt = 0; |
155 | DIR *d; | 156 | DIR *d; |
156 | d = opendir((const char *)Global::applicationFileName(APPDIR,"")); | 157 | d = opendir((const char *)Global::applicationFileName(APPDIR,"")); |
157 | 158 | ||
158 | while(1) | 159 | while(1) |
159 | { | 160 | { |
160 | struct dirent* de; | 161 | struct dirent* de; |
161 | struct stat buf; | 162 | struct stat buf; |
162 | de = readdir(d); | 163 | de = readdir(d); |
163 | if (de == NULL) break; | 164 | if (de == NULL) break; |
164 | 165 | ||
165 | 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)) |
166 | { | 167 | { |
167 | bkmkselector->insertItem(de->d_name); | 168 | bkmkselector->insertItem(de->d_name); |
168 | cnt++; | 169 | cnt++; |
169 | } | 170 | } |
170 | } | 171 | } |
171 | 172 | ||
172 | closedir(d); | 173 | closedir(d); |
173 | #endif | 174 | #endif |
174 | if (cnt > 0) | 175 | if (cnt > 0) |
175 | { | 176 | { |
176 | //tjw menu->hide(); | 177 | //tjw menu->hide(); |
177 | editorStack->raiseWidget( bkmkselector ); | 178 | editorStack->raiseWidget( bkmkselector ); |
178 | hidetoolbars(); | 179 | hidetoolbars(); |
179 | m_nBkmkAction = cRmBkmkFile; | 180 | m_nBkmkAction = cRmBkmkFile; |
180 | } | 181 | } |
181 | else | 182 | else |
182 | QMessageBox::information(this, PROGNAME, "No bookmark files"); | 183 | QMessageBox::information(this, PROGNAME, "No bookmark files"); |
183 | } | 184 | } |
184 | 185 | ||
185 | void QTReaderApp::hidetoolbars() | 186 | void QTReaderApp::hidetoolbars() |
186 | { | 187 | { |
187 | menubar->hide(); | 188 | menubar->hide(); |
188 | if (fileBar != NULL) fileBar->hide(); | 189 | if (fileBar != NULL) fileBar->hide(); |
189 | if (viewBar != NULL) viewBar->hide(); | 190 | if (viewBar != NULL) viewBar->hide(); |
190 | if (navBar != NULL) navBar->hide(); | 191 | if (navBar != NULL) navBar->hide(); |
191 | if (markBar != NULL) markBar->hide(); | 192 | if (markBar != NULL) markBar->hide(); |
192 | if (m_fontVisible) m_fontBar->hide(); | 193 | if (m_fontVisible) m_fontBar->hide(); |
193 | if (regVisible) | 194 | if (regVisible) |
194 | { | 195 | { |
195 | #ifdef USEQPE | 196 | #ifdef USEQPE |
196 | Global::hideInputMethod(); | 197 | Global::hideInputMethod(); |
197 | #endif | 198 | #endif |
198 | regBar->hide(); | 199 | regBar->hide(); |
199 | } | 200 | } |
200 | if (searchVisible) | 201 | if (searchVisible) |
201 | { | 202 | { |
202 | #ifdef USEQPE | 203 | #ifdef USEQPE |
203 | Global::hideInputMethod(); | 204 | Global::hideInputMethod(); |
204 | #endif | 205 | #endif |
205 | searchBar->hide(); | 206 | searchBar->hide(); |
206 | } | 207 | } |
207 | } | 208 | } |
208 | 209 | ||
209 | QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) | 210 | QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) |
210 | : QMainWindow( parent, name, f ), bFromDocView( FALSE ), m_dontSave(false), | 211 | : QMainWindow( parent, name, f ), bFromDocView( FALSE ), m_dontSave(false), |
211 | fileBar(NULL), navBar(NULL), viewBar(NULL), markBar(NULL) | 212 | fileBar(NULL), navBar(NULL), viewBar(NULL), markBar(NULL) |
212 | { | 213 | { |
213 | m_url_clipboard = false; | 214 | m_url_clipboard = false; |
214 | m_url_localfile = false; | 215 | m_url_localfile = false; |
215 | m_url_globalfile = false; | 216 | m_url_globalfile = false; |
216 | ftime(&m_lastkeytime); | 217 | ftime(&m_lastkeytime); |
217 | //// qDebug("Application directory = %s", (const tchar *)QPEApplication::documentDir()); | 218 | //// odebug << "Application directory = " << (const tchar *)QPEApplication::documentDir() << "" << oendl; |
218 | //// qDebug("Application directory = %s", (const tchar *)Global::applicationFileName("uqtreader","bkmks.xml")); | 219 | //// odebug << "Application directory = " << (const tchar *)Global::applicationFileName("uqtreader" << "" << oendl; |
219 | 220 | ||
220 | m_bcloseDisabled = true; | 221 | m_bcloseDisabled = true; |
221 | m_disableesckey = false; | 222 | m_disableesckey = false; |
222 | pBkmklist = NULL; | 223 | pBkmklist = NULL; |
223 | pOpenlist = NULL; | 224 | pOpenlist = NULL; |
224 | // doc = 0; | 225 | // doc = 0; |
225 | 226 | ||
226 | m_fBkmksChanged = false; | 227 | m_fBkmksChanged = false; |
227 | 228 | ||
228 | QString lang = getenv( "LANG" ); | 229 | QString lang = getenv( "LANG" ); |
229 | QString rot = getenv( "QWS_DISPLAY" ); | 230 | QString rot = getenv( "QWS_DISPLAY" ); |
230 | 231 | ||
231 | /* | 232 | /* |
232 | int m_rot = 0; | 233 | int m_rot = 0; |
233 | if (rot.contains("Rot90")) | 234 | if (rot.contains("Rot90")) |
234 | { | 235 | { |
235 | m_rot = 90; | 236 | m_rot = 90; |
236 | } | 237 | } |
237 | else if (rot.contains("Rot180")) | 238 | else if (rot.contains("Rot180")) |
238 | { | 239 | { |
239 | m_rot = 180; | 240 | m_rot = 180; |
240 | } | 241 | } |
241 | else if (rot.contains("Rot270")) | 242 | else if (rot.contains("Rot270")) |
242 | { | 243 | { |
243 | m_rot = 270; | 244 | m_rot = 270; |
244 | } | 245 | } |
245 | 246 | ||
246 | // qDebug("Initial Rotation(%d):%s", m_rot, (const char*)rot); | 247 | // odebug << "Initial Rotation(" << m_rot << "):" << rot << "" << oendl; |
247 | */ | 248 | */ |
248 | m_autogenstr = "^ *[A-Z].*[a-z] *$"; | 249 | m_autogenstr = "^ *[A-Z].*[a-z] *$"; |
249 | 250 | ||
250 | #ifdef USEQPE | 251 | #ifdef USEQPE |
251 | setIcon( Resource::loadPixmap( PICDIR "uqtreader") ); | 252 | setIcon( Resource::loadPixmap( PICDIR "uqtreader") ); |
252 | #else | 253 | #else |
253 | setIcon( QPixmap (PICDIR "uqtreader.png") ); | 254 | setIcon( QPixmap (PICDIR "uqtreader.png") ); |
254 | #endif /* USEQPE */ | 255 | #endif /* USEQPE */ |
255 | 256 | ||
256 | // QToolBar *bar = new QToolBar( this ); | 257 | // QToolBar *bar = new QToolBar( this ); |
257 | // menubar = new QToolBar( this ); | 258 | // menubar = new QToolBar( this ); |
258 | #ifdef USEQPE | 259 | #ifdef USEQPE |
259 | Config config( APPDIR ); | 260 | Config config( APPDIR ); |
260 | #else | 261 | #else |
261 | QDir d = QDir::home(); // "/" | 262 | QDir d = QDir::home(); // "/" |
262 | if ( !d.cd(APPDIR) ) { // "/tmp" | 263 | if ( !d.cd(APPDIR) ) { // "/tmp" |
263 | qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); | 264 | owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; |
264 | d = QDir::home(); | 265 | d = QDir::home(); |
265 | d.mkdir(APPDIR); | 266 | d.mkdir(APPDIR); |
266 | d.cd(APPDIR); | 267 | d.cd(APPDIR); |
267 | } | 268 | } |
268 | QFileInfo fi(d, INIFILE); | 269 | QFileInfo fi(d, INIFILE); |
269 | // qDebug("Path:%s", (const char*)fi.absFilePath()); | 270 | // odebug << "Path:" << fi.absFilePath() << "" << oendl; |
270 | Config config(fi.absFilePath()); | 271 | Config config(fi.absFilePath()); |
271 | #endif | 272 | #endif |
272 | config.setGroup("Toolbar"); | 273 | config.setGroup("Toolbar"); |
273 | m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false); | 274 | m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false); |
274 | m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1); | 275 | m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1); |
275 | m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2); | 276 | m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2); |
276 | menubar = new QToolBar("Menus", this, m_tbposition); | 277 | menubar = new QToolBar("Menus", this, m_tbposition); |
277 | 278 | ||
278 | // fileBar = new QToolBar("File", this); | 279 | // fileBar = new QToolBar("File", this); |
279 | // QToolBar* viewBar = new QToolBar("File", this); | 280 | // QToolBar* viewBar = new QToolBar("File", this); |
280 | // QToolBar* navBar = new QToolBar("File", this); | 281 | // QToolBar* navBar = new QToolBar("File", this); |
281 | // QToolBar* markBar = new QToolBar("File", this); | 282 | // QToolBar* markBar = new QToolBar("File", this); |
282 | 283 | ||
283 | #ifdef USEQPE | 284 | #ifdef USEQPE |
284 | mb = new QMenuBar( menubar ); | 285 | mb = new QMenuBar( menubar ); |
285 | #else | 286 | #else |
286 | mb = new QMenuBar( menubar ); | 287 | mb = new QMenuBar( menubar ); |
287 | #endif | 288 | #endif |
288 | 289 | ||
289 | //#ifdef USEQPE | 290 | //#ifdef USEQPE |
290 | QPopupMenu* tmp = new QPopupMenu(mb); | 291 | QPopupMenu* tmp = new QPopupMenu(mb); |
291 | mb->insertItem( geticon( "AppsIcon" ), tmp ); | 292 | mb->insertItem( geticon( "AppsIcon" ), tmp ); |
292 | //#else | 293 | //#else |
293 | // QMenuBar* tmp = mb; | 294 | // QMenuBar* tmp = mb; |
294 | //#endif | 295 | //#endif |
295 | 296 | ||
296 | QPopupMenu *file = new QPopupMenu( mb ); | 297 | QPopupMenu *file = new QPopupMenu( mb ); |
297 | tmp->insertItem( tr( "File" ), file ); | 298 | tmp->insertItem( tr( "File" ), file ); |
298 | 299 | ||
299 | QPopupMenu *navigation = new QPopupMenu(mb); | 300 | QPopupMenu *navigation = new QPopupMenu(mb); |
300 | tmp->insertItem( tr( "Navigation" ), navigation ); | 301 | tmp->insertItem( tr( "Navigation" ), navigation ); |
301 | 302 | ||
302 | QPopupMenu *view = new QPopupMenu( mb ); | 303 | QPopupMenu *view = new QPopupMenu( mb ); |
303 | tmp->insertItem( tr( "View" ), view ); | 304 | tmp->insertItem( tr( "View" ), view ); |
304 | 305 | ||
305 | QPopupMenu *marks = new QPopupMenu( this ); | 306 | QPopupMenu *marks = new QPopupMenu( this ); |
306 | tmp->insertItem( tr( "Marks" ), marks ); | 307 | tmp->insertItem( tr( "Marks" ), marks ); |
307 | 308 | ||
308 | QPopupMenu *settings = new QPopupMenu( this ); | 309 | QPopupMenu *settings = new QPopupMenu( this ); |
309 | tmp->insertItem( tr( "Settings" ), settings ); | 310 | tmp->insertItem( tr( "Settings" ), settings ); |
310 | 311 | ||
311 | // addToolBar(menubar, "Menus",QMainWindow::Top); | 312 | // addToolBar(menubar, "Menus",QMainWindow::Top); |
312 | // addToolBar(fileBar, "Toolbar",QMainWindow::Top); | 313 | // addToolBar(fileBar, "Toolbar",QMainWindow::Top); |
313 | 314 | ||
314 | // QPopupMenu *edit = new QPopupMenu( this ); | 315 | // QPopupMenu *edit = new QPopupMenu( this ); |
315 | 316 | ||
316 | /* | 317 | /* |
317 | 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 ); |
318 | connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); | 319 | connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); |
319 | a->addTo( bar ); | 320 | a->addTo( bar ); |
320 | a->addTo( file ); | 321 | a->addTo( file ); |
321 | */ | 322 | */ |
322 | 323 | ||
323 | editorStack = new QWidgetStack( this ); | 324 | editorStack = new QWidgetStack( this ); |
324 | setCentralWidget( editorStack ); | 325 | setCentralWidget( editorStack ); |
325 | 326 | ||
326 | searchVisible = FALSE; | 327 | searchVisible = FALSE; |
327 | regVisible = FALSE; | 328 | regVisible = FALSE; |
328 | m_fontVisible = false; | 329 | m_fontVisible = false; |
329 | 330 | ||
330 | m_annoWin = new CAnnoEdit(editorStack); | 331 | m_annoWin = new CAnnoEdit(editorStack); |
331 | editorStack->addWidget(m_annoWin, get_unique_id()); | 332 | editorStack->addWidget(m_annoWin, get_unique_id()); |
332 | 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&) ) ); |
333 | connect( m_annoWin, SIGNAL( cancelled() ), this, SLOT( infoClose() ) ); | 334 | connect( m_annoWin, SIGNAL( cancelled() ), this, SLOT( infoClose() ) ); |
334 | 335 | ||
335 | m_infoWin = new infowin(editorStack); | 336 | m_infoWin = new infowin(editorStack); |
336 | editorStack->addWidget(m_infoWin, get_unique_id()); | 337 | editorStack->addWidget(m_infoWin, get_unique_id()); |
337 | connect( m_infoWin, SIGNAL( Close() ), this, SLOT( infoClose() ) ); | 338 | connect( m_infoWin, SIGNAL( Close() ), this, SLOT( infoClose() ) ); |
338 | 339 | ||
339 | m_graphicwin = new GraphicWin(editorStack); | 340 | m_graphicwin = new GraphicWin(editorStack); |
340 | editorStack->addWidget(m_graphicwin, get_unique_id()); | 341 | editorStack->addWidget(m_graphicwin, get_unique_id()); |
341 | connect( m_graphicwin, SIGNAL( Closed() ), this, SLOT( infoClose() ) ); | 342 | connect( m_graphicwin, SIGNAL( Closed() ), this, SLOT( infoClose() ) ); |
342 | 343 | ||
343 | // bkmkselector = new QListBox(editorStack, "Bookmarks"); | 344 | // bkmkselector = new QListBox(editorStack, "Bookmarks"); |
344 | bkmkselector = new CBkmkSelector(editorStack, "Bookmarks"); | 345 | bkmkselector = new CBkmkSelector(editorStack, "Bookmarks"); |
345 | // connect(bkmkselector, SIGNAL( selected(const QString&) ), this, SLOT( gotobkmk(const QString&) ) ); | 346 | // connect(bkmkselector, SIGNAL( selected(const QString&) ), this, SLOT( gotobkmk(const QString&) ) ); |
346 | connect(bkmkselector, SIGNAL( selected(int) ), this, SLOT( gotobkmk(int) ) ); | 347 | connect(bkmkselector, SIGNAL( selected(int) ), this, SLOT( gotobkmk(int) ) ); |
347 | connect(bkmkselector, SIGNAL( cancelled() ), this, SLOT( cancelbkmk() ) ); | 348 | connect(bkmkselector, SIGNAL( cancelled() ), this, SLOT( cancelbkmk() ) ); |
348 | editorStack->addWidget( bkmkselector, get_unique_id() ); | 349 | editorStack->addWidget( bkmkselector, get_unique_id() ); |
349 | 350 | ||
350 | /* | 351 | /* |
351 | importSelector = new FileSelector( "*", editorStack, "importselector", false ); | 352 | importSelector = new FileSelector( "*", editorStack, "importselector", false ); |
352 | connect( importSelector, SIGNAL( fileSelected(const DocLnk&) ), this, SLOT( importFile(const DocLnk&) ) ); | 353 | connect( importSelector, SIGNAL( fileSelected(const DocLnk&) ), this, SLOT( importFile(const DocLnk&) ) ); |
353 | 354 | ||
354 | editorStack->addWidget( importSelector, get_unique_id() ); | 355 | editorStack->addWidget( importSelector, get_unique_id() ); |
355 | 356 | ||
356 | // don't need the close visible, it is redundant... | 357 | // don't need the close visible, it is redundant... |
357 | importSelector->setCloseVisible( FALSE ); | 358 | importSelector->setCloseVisible( FALSE ); |
358 | */ | 359 | */ |
359 | // qDebug("Reading file list"); | 360 | // odebug << "Reading file list" << oendl; |
360 | readfilelist(); | 361 | readfilelist(); |
361 | 362 | ||
362 | reader = new QTReader( editorStack ); | 363 | reader = new QTReader( editorStack ); |
363 | 364 | ||
364 | reader->bDoUpdates = false; | 365 | reader->bDoUpdates = false; |
365 | 366 | ||
366 | #ifdef USEQPE | 367 | #ifdef USEQPE |
367 | ((QPEApplication*)qApp)->setStylusOperation(reader, QPEApplication::RightOnHold); | 368 | ((QPEApplication*)qApp)->setStylusOperation(reader, QPEApplication::RightOnHold); |
368 | #endif | 369 | #endif |
369 | 370 | ||
370 | // qDebug("Reading config"); | 371 | // odebug << "Reading config" << oendl; |
371 | // Config config( APPDIR ); | 372 | // Config config( APPDIR ); |
372 | config.setGroup( "View" ); | 373 | config.setGroup( "View" ); |
373 | m_debounce = config.readNumEntry("Debounce", 0); | 374 | m_debounce = config.readNumEntry("Debounce", 0); |
374 | #ifdef USEQPE | 375 | #ifdef USEQPE |
375 | m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); | 376 | m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); |
376 | #else | 377 | #else |
377 | m_bFloatingDialog = config.readBoolEntry("FloatDialogs", true); | 378 | m_bFloatingDialog = config.readBoolEntry("FloatDialogs", true); |
378 | #endif | 379 | #endif |
379 | reader->bstripcr = config.readBoolEntry( "StripCr", true ); | 380 | reader->bstripcr = config.readBoolEntry( "StripCr", true ); |
380 | reader->bfulljust = config.readBoolEntry( "FullJust", false ); | 381 | reader->bfulljust = config.readBoolEntry( "FullJust", false ); |
381 | reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); | 382 | reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); |
382 | reader->setlead(config.readNumEntry( "ExtraLead", 0 )); | 383 | reader->setlead(config.readNumEntry( "ExtraLead", 0 )); |
383 | reader->btextfmt = config.readBoolEntry( "TextFmt", false ); | 384 | reader->btextfmt = config.readBoolEntry( "TextFmt", false ); |
384 | reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); | 385 | reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); |
385 | reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); | 386 | reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); |
386 | reader->bpeanut = config.readBoolEntry( "Peanut", false ); | 387 | reader->bpeanut = config.readBoolEntry( "Peanut", false ); |
387 | reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); | 388 | reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); |
388 | reader->bdepluck = config.readBoolEntry( "Depluck", false ); | 389 | reader->bdepluck = config.readBoolEntry( "Depluck", false ); |
389 | reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); | 390 | reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); |
390 | reader->bonespace = config.readBoolEntry( "OneSpace", false ); | 391 | reader->bonespace = config.readBoolEntry( "OneSpace", false ); |
391 | reader->bunindent = config.readBoolEntry( "Unindent", false ); | 392 | reader->bunindent = config.readBoolEntry( "Unindent", false ); |
392 | reader->brepara = config.readBoolEntry( "Repara", false ); | 393 | reader->brepara = config.readBoolEntry( "Repara", false ); |
393 | reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); | 394 | reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); |
394 | reader->bindenter = config.readNumEntry( "Indent", 0 ); | 395 | reader->bindenter = config.readNumEntry( "Indent", 0 ); |
395 | reader->m_textsize = config.readNumEntry( "FontSize", 12 ); | 396 | reader->m_textsize = config.readNumEntry( "FontSize", 12 ); |
396 | reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); | 397 | reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); |
397 | reader->m_lastfile = config.readEntry( "LastFile", QString::null ); | 398 | reader->m_lastfile = config.readEntry( "LastFile", QString::null ); |
398 | reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); | 399 | reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); |
399 | reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); | 400 | reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); |
400 | reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); | 401 | reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); |
401 | reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false); | 402 | reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false); |
402 | reader->m_fontname = config.readEntry( "Fontname", "helvetica" ); | 403 | reader->m_fontname = config.readEntry( "Fontname", "helvetica" ); |
403 | reader->m_encd = config.readNumEntry( "Encoding", 0 ); | 404 | reader->m_encd = config.readNumEntry( "Encoding", 0 ); |
404 | reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); | 405 | reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); |
405 | reader->m_overlap = config.readNumEntry( "Overlap", 0 ); | 406 | reader->m_overlap = config.readNumEntry( "Overlap", 0 ); |
406 | reader->m_border = config.readNumEntry( "Margin", 6 ); | 407 | reader->m_border = config.readNumEntry( "Margin", 6 ); |
407 | #ifdef REPALM | 408 | #ifdef REPALM |
408 | reader->brepalm = config.readBoolEntry( "Repalm", true ); | 409 | reader->brepalm = config.readBoolEntry( "Repalm", true ); |
409 | #endif | 410 | #endif |
410 | reader->bremap = config.readBoolEntry( "Remap", true ); | 411 | reader->bremap = config.readBoolEntry( "Remap", true ); |
411 | reader->bmakebold = config.readBoolEntry( "MakeBold", false ); | 412 | reader->bmakebold = config.readBoolEntry( "MakeBold", false ); |
412 | reader->setContinuous(config.readBoolEntry( "Continuous", true )); | 413 | reader->setContinuous(config.readBoolEntry( "Continuous", true )); |
413 | m_targetapp = config.readEntry( "TargetApp", QString::null ); | 414 | m_targetapp = config.readEntry( "TargetApp", QString::null ); |
414 | m_targetmsg = config.readEntry( "TargetMsg", QString::null ); | 415 | m_targetmsg = config.readEntry( "TargetMsg", QString::null ); |
415 | #ifdef _SCROLLPIPE | 416 | #ifdef _SCROLLPIPE |
416 | reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); | 417 | reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); |
417 | reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); | 418 | reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); |
418 | #endif | 419 | #endif |
419 | m_twoTouch = config.readBoolEntry( "TwoTouch", false); | 420 | m_twoTouch = config.readBoolEntry( "TwoTouch", false); |
420 | m_doAnnotation = config.readBoolEntry( "Annotation", false); | 421 | m_doAnnotation = config.readBoolEntry( "Annotation", false); |
421 | m_doDictionary = config.readBoolEntry( "Dictionary", false); | 422 | m_doDictionary = config.readBoolEntry( "Dictionary", false); |
422 | m_doClipboard = config.readBoolEntry( "Clipboard", false); | 423 | m_doClipboard = config.readBoolEntry( "Clipboard", false); |
423 | m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); | 424 | m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); |
424 | m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); | 425 | m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); |
425 | m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); | 426 | m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); |
426 | m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); | 427 | m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); |
427 | m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); | 428 | m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); |
428 | m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); | 429 | m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); |
429 | m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); | 430 | m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); |
430 | 431 | ||
431 | m_leftScroll = config.readBoolEntry("LeftScroll", false); | 432 | m_leftScroll = config.readBoolEntry("LeftScroll", false); |
432 | m_rightScroll = config.readBoolEntry("RightScroll", false); | 433 | m_rightScroll = config.readBoolEntry("RightScroll", false); |
433 | m_upScroll = config.readBoolEntry("UpScroll", true); | 434 | m_upScroll = config.readBoolEntry("UpScroll", true); |
434 | m_downScroll = config.readBoolEntry("DownScroll", true); | 435 | m_downScroll = config.readBoolEntry("DownScroll", true); |
435 | 436 | ||
436 | m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false); | 437 | m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false); |
437 | reader->setBaseSize(config.readNumEntry( "Basesize", 10 )); | 438 | reader->setBaseSize(config.readNumEntry( "Basesize", 10 )); |
438 | 439 | ||
439 | #ifndef USEQPE | 440 | #ifndef USEQPE |
440 | config.setGroup( "Geometry" ); | 441 | config.setGroup( "Geometry" ); |
441 | setGeometry(0,0, | 442 | setGeometry(0,0, |
442 | config.readNumEntry( "width", QApplication::desktop()->width()/2 ), | 443 | config.readNumEntry( "width", QApplication::desktop()->width()/2 ), |
443 | config.readNumEntry( "height", QApplication::desktop()->height()/2 )); | 444 | config.readNumEntry( "height", QApplication::desktop()->height()/2 )); |
444 | move( | 445 | move( |
445 | config.readNumEntry( "x", 20 ), | 446 | config.readNumEntry( "x", 20 ), |
446 | config.readNumEntry( "y", 20 )); | 447 | config.readNumEntry( "y", 20 )); |
447 | #endif | 448 | #endif |
448 | 449 | ||
449 | 450 | ||
450 | 451 | ||
451 | setTwoTouch(m_twoTouch); | 452 | setTwoTouch(m_twoTouch); |
452 | 453 | ||
453 | connect( reader, SIGNAL( OnShowPicture(QImage&) ), this, SLOT( showgraphic(QImage&) ) ); | 454 | connect( reader, SIGNAL( OnShowPicture(QImage&) ), this, SLOT( showgraphic(QImage&) ) ); |
454 | 455 | ||
455 | connect( reader, SIGNAL( OnRedraw() ), this, SLOT( OnRedraw() ) ); | 456 | connect( reader, SIGNAL( OnRedraw() ), this, SLOT( OnRedraw() ) ); |
456 | 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&) ) ); |
457 | connect( reader, SIGNAL( OnURLSelected(const QString&) ), this, SLOT( OnURLSelected(const QString&) ) ); | 458 | connect( reader, SIGNAL( OnURLSelected(const QString&) ), this, SLOT( OnURLSelected(const QString&) ) ); |
458 | editorStack->addWidget( reader, get_unique_id() ); | 459 | editorStack->addWidget( reader, get_unique_id() ); |
459 | 460 | ||
460 | 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); |
461 | connect( m_preferences_action, SIGNAL( activated() ), this, SLOT( showprefs() ) ); | 462 | connect( m_preferences_action, SIGNAL( activated() ), this, SLOT( showprefs() ) ); |
462 | m_preferences_action->addTo( settings ); | 463 | m_preferences_action->addTo( settings ); |
463 | 464 | ||
464 | 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); |
465 | connect( m_saveconfig_action, SIGNAL( activated() ), this, SLOT( SaveConfig() ) ); | 466 | connect( m_saveconfig_action, SIGNAL( activated() ), this, SLOT( SaveConfig() ) ); |
466 | m_saveconfig_action->addTo( settings ); | 467 | m_saveconfig_action->addTo( settings ); |
467 | 468 | ||
468 | 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); |
469 | connect( m_loadconfig_action, SIGNAL( activated() ), this, SLOT( LoadConfig() ) ); | 470 | connect( m_loadconfig_action, SIGNAL( activated() ), this, SLOT( LoadConfig() ) ); |
470 | m_loadconfig_action->addTo( settings ); | 471 | m_loadconfig_action->addTo( settings ); |
471 | 472 | ||
472 | 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); |
473 | connect( m_tidyconfig_action, SIGNAL( activated() ), this, SLOT( TidyConfig() ) ); | 474 | connect( m_tidyconfig_action, SIGNAL( activated() ), this, SLOT( TidyConfig() ) ); |
474 | m_tidyconfig_action->addTo( settings ); | 475 | m_tidyconfig_action->addTo( settings ); |
475 | 476 | ||
476 | settings->insertSeparator(); | 477 | settings->insertSeparator(); |
477 | 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); |
478 | connect( m_toolbarprefs_action, SIGNAL( activated() ), this, SLOT( showtoolbarprefs() ) ); | 479 | connect( m_toolbarprefs_action, SIGNAL( activated() ), this, SLOT( showtoolbarprefs() ) ); |
479 | m_toolbarprefs_action->addTo( settings ); | 480 | m_toolbarprefs_action->addTo( settings ); |
480 | 481 | ||
481 | 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 ); |
482 | connect( m_open_action, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); | 483 | connect( m_open_action, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); |
483 | m_open_action->addTo( file ); | 484 | m_open_action->addTo( file ); |
484 | 485 | ||
485 | 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 ); |
486 | connect( m_close_action, SIGNAL( activated() ), this, SLOT( fileClose() ) ); | 487 | connect( m_close_action, SIGNAL( activated() ), this, SLOT( fileClose() ) ); |
487 | m_close_action->addTo( file ); | 488 | m_close_action->addTo( file ); |
488 | 489 | ||
489 | #ifdef _SCRIPT | 490 | #ifdef _SCRIPT |
490 | a = new QAction( tr( "Run Script" ), QString::null, 0, this, NULL); | 491 | a = new QAction( tr( "Run Script" ), QString::null, 0, this, NULL); |
491 | connect( a, SIGNAL( activated() ), this, SLOT( RunScript() ) ); | 492 | connect( a, SIGNAL( activated() ), this, SLOT( RunScript() ) ); |
492 | a->addTo( file ); | 493 | a->addTo( file ); |
493 | #endif | 494 | #endif |
494 | /* | 495 | /* |
495 | 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 ); |
496 | connect( a, SIGNAL( activated() ), this, SLOT( fileRevert() ) ); | 497 | connect( a, SIGNAL( activated() ), this, SLOT( fileRevert() ) ); |
497 | a->addTo( file ); | 498 | a->addTo( file ); |
498 | 499 | ||
499 | 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 ); |
500 | connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); | 501 | connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); |
501 | a->addTo( filebar() ); | 502 | a->addTo( filebar() ); |
502 | a->addTo( edit ); | 503 | a->addTo( edit ); |
503 | */ | 504 | */ |
504 | 505 | ||
505 | 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); |
506 | connect( m_info_action, SIGNAL( activated() ), this, SLOT( showinfo() ) ); | 507 | connect( m_info_action, SIGNAL( activated() ), this, SLOT( showinfo() ) ); |
507 | m_info_action->addTo( file ); | 508 | m_info_action->addTo( file ); |
508 | 509 | ||
509 | 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 ); |
510 | connect( m_touch_action, SIGNAL( toggled(bool) ), this, SLOT( setTwoTouch(bool) ) ); | 511 | connect( m_touch_action, SIGNAL( toggled(bool) ), this, SLOT( setTwoTouch(bool) ) ); |
511 | m_touch_action->setOn(m_twoTouch); | 512 | m_touch_action->setOn(m_twoTouch); |
512 | m_touch_action->addTo( file ); | 513 | m_touch_action->addTo( file ); |
513 | 514 | ||
514 | 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); |
515 | connect( m_find_action, SIGNAL( activated() ), this, SLOT( editFind() ) ); | 516 | connect( m_find_action, SIGNAL( activated() ), this, SLOT( editFind() ) ); |
516 | file->insertSeparator(); | 517 | file->insertSeparator(); |
517 | // a->addTo( bar ); | 518 | // a->addTo( bar ); |
518 | m_find_action->addTo( file ); | 519 | m_find_action->addTo( file ); |
519 | 520 | ||
520 | 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); |
521 | connect( m_exportlinks_action, SIGNAL( activated() ), this, SLOT( ExportLinks() ) ); | 522 | connect( m_exportlinks_action, SIGNAL( activated() ), this, SLOT( ExportLinks() ) ); |
522 | m_exportlinks_action->addTo( file ); | 523 | m_exportlinks_action->addTo( file ); |
523 | 524 | ||
524 | 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 ); |
525 | connect( m_scrollButton, SIGNAL( toggled(bool) ), this, SLOT( autoScroll(bool) ) ); | 526 | connect( m_scrollButton, SIGNAL( toggled(bool) ), this, SLOT( autoScroll(bool) ) ); |
526 | m_scrollButton->addTo(navigation); | 527 | m_scrollButton->addTo(navigation); |
527 | m_scrollButton->setOn(false); | 528 | m_scrollButton->setOn(false); |
528 | 529 | ||
529 | 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); |
530 | connect( m_start_action, SIGNAL( activated() ), this, SLOT( gotoStart() ) ); | 531 | connect( m_start_action, SIGNAL( activated() ), this, SLOT( gotoStart() ) ); |
531 | m_start_action->addTo(navigation); | 532 | m_start_action->addTo(navigation); |
532 | 533 | ||
533 | 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); |
534 | connect( m_end_action, SIGNAL( activated() ), this, SLOT( gotoEnd() ) ); | 535 | connect( m_end_action, SIGNAL( activated() ), this, SLOT( gotoEnd() ) ); |
535 | m_end_action->addTo(navigation); | 536 | m_end_action->addTo(navigation); |
536 | 537 | ||
537 | 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); |
538 | connect( m_jump_action, SIGNAL( activated() ), this, SLOT( jump() ) ); | 539 | connect( m_jump_action, SIGNAL( activated() ), this, SLOT( jump() ) ); |
539 | m_jump_action->addTo(navigation); | 540 | m_jump_action->addTo(navigation); |
540 | 541 | ||
541 | 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 ); |
542 | connect( m_pageline_action, SIGNAL( toggled(bool) ), this, SLOT( pagemode(bool) ) ); | 543 | connect( m_pageline_action, SIGNAL( toggled(bool) ), this, SLOT( pagemode(bool) ) ); |
543 | m_pageline_action->addTo(navigation); | 544 | m_pageline_action->addTo(navigation); |
544 | m_pageline_action->setOn(reader->m_bpagemode); | 545 | m_pageline_action->setOn(reader->m_bpagemode); |
545 | 546 | ||
546 | 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 ); |
547 | connect( m_pageup_action, SIGNAL( activated() ), this, SLOT( pageup() ) ); | 548 | connect( m_pageup_action, SIGNAL( activated() ), this, SLOT( pageup() ) ); |
548 | m_pageup_action->addTo( navigation ); | 549 | m_pageup_action->addTo( navigation ); |
549 | 550 | ||
550 | 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 ); |
551 | connect( m_pagedn_action, SIGNAL( activated() ), this, SLOT( pagedn() ) ); | 552 | connect( m_pagedn_action, SIGNAL( activated() ), this, SLOT( pagedn() ) ); |
552 | m_pagedn_action->addTo( navigation ); | 553 | m_pagedn_action->addTo( navigation ); |
553 | 554 | ||
554 | 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 ); |
555 | connect( m_back_action, SIGNAL( activated() ), reader, SLOT( goBack() ) ); | 556 | connect( m_back_action, SIGNAL( activated() ), reader, SLOT( goBack() ) ); |
556 | m_back_action->addTo( navigation ); | 557 | m_back_action->addTo( navigation ); |
557 | 558 | ||
558 | 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 ); |
559 | connect( m_home_action, SIGNAL( activated() ), reader, SLOT( goHome() ) ); | 560 | connect( m_home_action, SIGNAL( activated() ), reader, SLOT( goHome() ) ); |
560 | m_home_action->addTo( navigation ); | 561 | m_home_action->addTo( navigation ); |
561 | 562 | ||
562 | 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 ); |
563 | connect( m_forward_action, SIGNAL( activated() ), reader, SLOT( goForward() ) ); | 564 | connect( m_forward_action, SIGNAL( activated() ), reader, SLOT( goForward() ) ); |
564 | m_forward_action->addTo( navigation ); | 565 | m_forward_action->addTo( navigation ); |
565 | 566 | ||
566 | /* | 567 | /* |
567 | a = new QAction( tr( "Find" ), QString::null, 0, this, NULL, true ); | 568 | a = new QAction( tr( "Find" ), QString::null, 0, this, NULL, true ); |
568 | // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); | 569 | // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); |
569 | a->addTo( file ); | 570 | a->addTo( file ); |
570 | 571 | ||
571 | 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 ); |
572 | // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); | 573 | // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); |
573 | a->addTo( file ); | 574 | a->addTo( file ); |
574 | */ | 575 | */ |
575 | 576 | ||
576 | // file->insertSeparator(); | 577 | // file->insertSeparator(); |
577 | 578 | ||
578 | #ifdef _SCROLLPIPE | 579 | #ifdef _SCROLLPIPE |
579 | 580 | ||
580 | QActionGroup* ag = new QActionGroup(this); | 581 | QActionGroup* ag = new QActionGroup(this); |
581 | ag->setExclusive(false); | 582 | ag->setExclusive(false); |
582 | spacemenu = new QPopupMenu(this); | 583 | spacemenu = new QPopupMenu(this); |
583 | file->insertItem( tr( "Scrolling" ), spacemenu ); | 584 | file->insertItem( tr( "Scrolling" ), spacemenu ); |
584 | 585 | ||
585 | a = new QAction( tr( "Set Target" ), QString::null, 0, ag, NULL); | 586 | a = new QAction( tr( "Set Target" ), QString::null, 0, ag, NULL); |
586 | connect( a, SIGNAL( activated() ), this, SLOT( setpipetarget() ) ); | 587 | connect( a, SIGNAL( activated() ), this, SLOT( setpipetarget() ) ); |
587 | 588 | ||
588 | 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 ); |
589 | connect( a, SIGNAL( toggled(bool) ), this, SLOT( setpause(bool) ) ); | 590 | connect( a, SIGNAL( toggled(bool) ), this, SLOT( setpause(bool) ) ); |
590 | a->setOn(reader->m_pauseAfterEachPara); | 591 | a->setOn(reader->m_pauseAfterEachPara); |
591 | 592 | ||
592 | ag->addTo(spacemenu); | 593 | ag->addTo(spacemenu); |
593 | // file->insertSeparator(); | 594 | // file->insertSeparator(); |
594 | 595 | ||
595 | #endif | 596 | #endif |
596 | 597 | ||
597 | /* | 598 | /* |
598 | a = new QAction( tr( "Import" ), QString::null, 0, this, NULL ); | 599 | a = new QAction( tr( "Import" ), QString::null, 0, this, NULL ); |
599 | connect( a, SIGNAL( activated() ), this, SLOT( importFiles() ) ); | 600 | connect( a, SIGNAL( activated() ), this, SLOT( importFiles() ) ); |
600 | a->addTo( file ); | 601 | a->addTo( file ); |
601 | */ | 602 | */ |
602 | 603 | ||
603 | /* | 604 | /* |
604 | 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 ); |
605 | connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); | 606 | connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); |
606 | a->addTo( fileBar ); | 607 | a->addTo( fileBar ); |
607 | a->addTo( edit ); | 608 | a->addTo( edit ); |
608 | */ | 609 | */ |
609 | 610 | ||
610 | // 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 ); |
611 | 612 | ||
612 | m_fullscreen = false; | 613 | m_fullscreen = false; |
613 | 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 ); |
614 | connect( m_actFullscreen, SIGNAL( toggled(bool) ), this, SLOT( setfullscreen(bool) ) ); | 615 | connect( m_actFullscreen, SIGNAL( toggled(bool) ), this, SLOT( setfullscreen(bool) ) ); |
615 | m_actFullscreen->setOn(m_fullscreen); | 616 | m_actFullscreen->setOn(m_fullscreen); |
616 | m_actFullscreen->addTo( view ); | 617 | m_actFullscreen->addTo( view ); |
617 | 618 | ||
618 | view->insertSeparator(); | 619 | view->insertSeparator(); |
619 | 620 | ||
620 | 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); |
621 | connect( m_zoomin_action, SIGNAL( activated() ), this, SLOT( zoomin() ) ); | 622 | connect( m_zoomin_action, SIGNAL( activated() ), this, SLOT( zoomin() ) ); |
622 | m_zoomin_action->addTo( view ); | 623 | m_zoomin_action->addTo( view ); |
623 | 624 | ||
624 | 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); |
625 | connect( m_zoomout_action, SIGNAL( activated() ), this, SLOT( zoomout() ) ); | 626 | connect( m_zoomout_action, SIGNAL( activated() ), this, SLOT( zoomout() ) ); |
626 | m_zoomout_action->addTo( view ); | 627 | m_zoomout_action->addTo( view ); |
627 | 628 | ||
628 | view->insertSeparator(); | 629 | view->insertSeparator(); |
629 | 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); |
630 | connect( m_setfont_action, SIGNAL( activated() ), this, SLOT( setfont() ) ); | 631 | connect( m_setfont_action, SIGNAL( activated() ), this, SLOT( setfont() ) ); |
631 | m_setfont_action->addTo( view ); | 632 | m_setfont_action->addTo( view ); |
632 | 633 | ||
633 | view->insertSeparator(); | 634 | view->insertSeparator(); |
634 | 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); |
635 | connect( m_setenc_action, SIGNAL( activated() ), this, SLOT( chooseencoding() ) ); | 636 | connect( m_setenc_action, SIGNAL( activated() ), this, SLOT( chooseencoding() ) ); |
636 | m_setenc_action->addTo( view ); | 637 | m_setenc_action->addTo( view ); |
637 | 638 | ||
638 | 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); |
639 | connect( m_setmono_action, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); | 640 | connect( m_setmono_action, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); |
640 | m_setmono_action->addTo( view ); | 641 | m_setmono_action->addTo( view ); |
641 | m_setmono_action->setOn(reader->m_bMonoSpaced); | 642 | m_setmono_action->setOn(reader->m_bMonoSpaced); |
642 | 643 | ||
643 | 644 | ||
644 | // a = new QAction( tr( "Zoom" ), QString::null, 0, this, NULL, true ); | 645 | // a = new QAction( tr( "Zoom" ), QString::null, 0, this, NULL, true ); |
645 | // 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 ); |
646 | 647 | ||
647 | 648 | ||
648 | 649 | ||
649 | // a->addTo( filebar() ); | 650 | // a->addTo( filebar() ); |
650 | // view->insertSeparator(); | 651 | // view->insertSeparator(); |
651 | 652 | ||
652 | /* | 653 | /* |
653 | 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 ); |
654 | connect( a, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); | 655 | connect( a, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); |
655 | a->setOn(reader->m_bMonoSpaced); | 656 | a->setOn(reader->m_bMonoSpaced); |
656 | a->addTo( view ); | 657 | a->addTo( view ); |
657 | */ | 658 | */ |
658 | /* | 659 | /* |
659 | a = new QAction( tr( "Set Width" ), QString::null, 0, this, NULL); | 660 | a = new QAction( tr( "Set Width" ), QString::null, 0, this, NULL); |
660 | connect( a, SIGNAL( activated() ), this, SLOT( setspacing() ) ); | 661 | connect( a, SIGNAL( activated() ), this, SLOT( setspacing() ) ); |
661 | a->addTo( view ); | 662 | a->addTo( view ); |
662 | */ | 663 | */ |
663 | 664 | ||
664 | 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); |
665 | connect( m_mark_action, SIGNAL( activated() ), this, SLOT( addbkmk() ) ); | 666 | connect( m_mark_action, SIGNAL( activated() ), this, SLOT( addbkmk() ) ); |
666 | m_mark_action->addTo( marks ); | 667 | m_mark_action->addTo( marks ); |
667 | 668 | ||
668 | 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); |
669 | connect( m_annotate_action, SIGNAL( activated() ), this, SLOT( addanno() ) ); | 670 | connect( m_annotate_action, SIGNAL( activated() ), this, SLOT( addanno() ) ); |
670 | m_annotate_action->addTo( marks ); | 671 | m_annotate_action->addTo( marks ); |
671 | 672 | ||
672 | 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 ); |
673 | connect( m_goto_action, SIGNAL( activated() ), this, SLOT( do_gotomark() ) ); | 674 | connect( m_goto_action, SIGNAL( activated() ), this, SLOT( do_gotomark() ) ); |
674 | m_goto_action->addTo( marks ); | 675 | m_goto_action->addTo( marks ); |
675 | 676 | ||
676 | 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); |
677 | connect( m_delete_action, SIGNAL( activated() ), this, SLOT( do_delmark() ) ); | 678 | connect( m_delete_action, SIGNAL( activated() ), this, SLOT( do_delmark() ) ); |
678 | m_delete_action->addTo( marks ); | 679 | m_delete_action->addTo( marks ); |
679 | 680 | ||
680 | 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 ); |
681 | connect( m_autogen_action, SIGNAL( activated() ), this, SLOT( do_autogen() ) ); | 682 | connect( m_autogen_action, SIGNAL( activated() ), this, SLOT( do_autogen() ) ); |
682 | marks->insertSeparator(); | 683 | marks->insertSeparator(); |
683 | m_autogen_action->addTo( marks ); | 684 | m_autogen_action->addTo( marks ); |
684 | 685 | ||
685 | 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); |
686 | connect( m_clear_action, SIGNAL( activated() ), this, SLOT( clearBkmkList() ) ); | 687 | connect( m_clear_action, SIGNAL( activated() ), this, SLOT( clearBkmkList() ) ); |
687 | m_clear_action->addTo( marks ); | 688 | m_clear_action->addTo( marks ); |
688 | 689 | ||
689 | 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 ); |
690 | connect( m_save_action, SIGNAL( activated() ), this, SLOT( savebkmks() ) ); | 691 | connect( m_save_action, SIGNAL( activated() ), this, SLOT( savebkmks() ) ); |
691 | m_save_action->addTo( marks ); | 692 | m_save_action->addTo( marks ); |
692 | 693 | ||
693 | 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); |
694 | connect( m_tidy_action, SIGNAL( activated() ), this, SLOT( listBkmkFiles() ) ); | 695 | connect( m_tidy_action, SIGNAL( activated() ), this, SLOT( listBkmkFiles() ) ); |
695 | marks->insertSeparator(); | 696 | marks->insertSeparator(); |
696 | m_tidy_action->addTo( marks ); | 697 | m_tidy_action->addTo( marks ); |
697 | 698 | ||
698 | 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); |
699 | connect( m_startBlock_action, SIGNAL( activated() ), this, SLOT( editMark() ) ); | 700 | connect( m_startBlock_action, SIGNAL( activated() ), this, SLOT( editMark() ) ); |
700 | marks->insertSeparator(); | 701 | marks->insertSeparator(); |
701 | m_startBlock_action->addTo( marks ); | 702 | m_startBlock_action->addTo( marks ); |
702 | 703 | ||
703 | 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); |
704 | connect( m_endBlock_action, SIGNAL( activated() ), this, SLOT( editCopy() ) ); | 705 | connect( m_endBlock_action, SIGNAL( activated() ), this, SLOT( editCopy() ) ); |
705 | m_endBlock_action->addTo( marks ); | 706 | m_endBlock_action->addTo( marks ); |
706 | 707 | ||
707 | m_bkmkAvail = NULL; | 708 | m_bkmkAvail = NULL; |
708 | 709 | ||
709 | 710 | ||
710 | setToolBarsMovable(m_tbmove); | 711 | setToolBarsMovable(m_tbmove); |
711 | addtoolbars(&config); | 712 | addtoolbars(&config); |
712 | 713 | ||
713 | pbar = new QProgressBar(this); | 714 | pbar = new QProgressBar(this); |
714 | pbar->hide(); | 715 | pbar->hide(); |
715 | 716 | ||
716 | searchBar = new QFloatBar( "Search", this, QMainWindow::Top, TRUE ); | 717 | searchBar = new QFloatBar( "Search", this, QMainWindow::Top, TRUE ); |
717 | 718 | ||
718 | searchBar->setHorizontalStretchable( TRUE ); | 719 | searchBar->setHorizontalStretchable( TRUE ); |
719 | 720 | ||
720 | connect(searchBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() )); | 721 | connect(searchBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() )); |
721 | 722 | ||
722 | searchEdit = new QLineEdit( searchBar, "searchEdit" ); | 723 | searchEdit = new QLineEdit( searchBar, "searchEdit" ); |
723 | // QFont f("unifont", 16 /*, QFont::Bold*/); | 724 | // QFont f("unifont", 16 /*, QFont::Bold*/); |
724 | // searchEdit->setFont( f ); | 725 | // searchEdit->setFont( f ); |
725 | searchBar->setStretchableWidget( searchEdit ); | 726 | searchBar->setStretchableWidget( searchEdit ); |
726 | 727 | ||
727 | 728 | ||
728 | #ifdef __ISEARCH | 729 | #ifdef __ISEARCH |
729 | connect( searchEdit, SIGNAL( textChanged(const QString&) ), | 730 | connect( searchEdit, SIGNAL( textChanged(const QString&) ), |
730 | this, SLOT( search(const QString&) ) ); | 731 | this, SLOT( search(const QString&) ) ); |
731 | #else | 732 | #else |
732 | connect( searchEdit, SIGNAL( returnPressed() ), | 733 | connect( searchEdit, SIGNAL( returnPressed() ), |
733 | this, SLOT( search() ) ); | 734 | this, SLOT( search() ) ); |
734 | #endif | 735 | #endif |
735 | 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 ); |
736 | connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); | 737 | connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); |
737 | a->addTo( searchBar ); | 738 | a->addTo( searchBar ); |
738 | 739 | ||
739 | 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 ); |
740 | connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); | 741 | connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); |
741 | a->addTo( searchBar ); | 742 | a->addTo( searchBar ); |
742 | 743 | ||
743 | searchBar->hide(); | 744 | searchBar->hide(); |
744 | 745 | ||
745 | regBar = new QFloatBar( "Autogen", this, QMainWindow::Top, TRUE ); | 746 | regBar = new QFloatBar( "Autogen", this, QMainWindow::Top, TRUE ); |
746 | connect(regBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() )); | 747 | connect(regBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() )); |
747 | 748 | ||
748 | regBar->setHorizontalStretchable( TRUE ); | 749 | regBar->setHorizontalStretchable( TRUE ); |
749 | 750 | ||
750 | regEdit = new QLineEdit( regBar, "regEdit" ); | 751 | regEdit = new QLineEdit( regBar, "regEdit" ); |
751 | // regEdit->setFont( f ); | 752 | // regEdit->setFont( f ); |
752 | 753 | ||
753 | regBar->setStretchableWidget( regEdit ); | 754 | regBar->setStretchableWidget( regEdit ); |
754 | 755 | ||
755 | connect( regEdit, SIGNAL( returnPressed() ), | 756 | connect( regEdit, SIGNAL( returnPressed() ), |
756 | this, SLOT( do_regaction() ) ); | 757 | this, SLOT( do_regaction() ) ); |
757 | 758 | ||
758 | 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 ); |
759 | connect( a, SIGNAL( activated() ), this, SLOT( do_regaction() ) ); | 760 | connect( a, SIGNAL( activated() ), this, SLOT( do_regaction() ) ); |
760 | a->addTo( regBar ); | 761 | a->addTo( regBar ); |
761 | 762 | ||
762 | 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 ); |
763 | connect( a, SIGNAL( activated() ), this, SLOT( regClose() ) ); | 764 | connect( a, SIGNAL( activated() ), this, SLOT( regClose() ) ); |
764 | a->addTo( regBar ); | 765 | a->addTo( regBar ); |
765 | 766 | ||
766 | regBar->hide(); | 767 | regBar->hide(); |
767 | 768 | ||
768 | m_fontBar = new QToolBar( "Autogen", this, QMainWindow::Top, TRUE ); | 769 | m_fontBar = new QToolBar( "Autogen", this, QMainWindow::Top, TRUE ); |
769 | 770 | ||
770 | m_fontBar->setHorizontalStretchable( TRUE ); | 771 | m_fontBar->setHorizontalStretchable( TRUE ); |
771 | 772 | ||
772 | // qDebug("Font selector"); | 773 | // odebug << "Font selector" << oendl; |
773 | m_fontSelector = new QComboBox(false, m_fontBar); | 774 | m_fontSelector = new QComboBox(false, m_fontBar); |
774 | m_fontBar->setStretchableWidget( m_fontSelector ); | 775 | m_fontBar->setStretchableWidget( m_fontSelector ); |
775 | { | 776 | { |
776 | #ifndef USEQPE | 777 | #ifndef USEQPE |
777 | QFontDatabase f; | 778 | QFontDatabase f; |
778 | #else | 779 | #else |
779 | FontDatabase f; | 780 | FontDatabase f; |
780 | #endif | 781 | #endif |
781 | QStringList flist = f.families(); | 782 | QStringList flist = f.families(); |
782 | bool realfont = false; | 783 | bool realfont = false; |
783 | for (QStringList::Iterator nm = flist.begin(); nm != flist.end(); nm++) | 784 | for (QStringList::Iterator nm = flist.begin(); nm != flist.end(); nm++) |
784 | { | 785 | { |
785 | if (reader->m_fontname == *nm) | 786 | if (reader->m_fontname == *nm) |
786 | { | 787 | { |
787 | realfont = true; | 788 | realfont = true; |
788 | } | 789 | } |
789 | if ((*nm).contains(FIXEDFONT,false)) reader->m_fontControl.hasCourier(true, *nm); | 790 | if ((*nm).contains(FIXEDFONT,false)) reader->m_fontControl.hasCourier(true, *nm); |
790 | } | 791 | } |
791 | if (!realfont) reader->m_fontname = flist[0]; | 792 | if (!realfont) reader->m_fontname = flist[0]; |
792 | } // delete the FontDatabase!!! | 793 | } // delete the FontDatabase!!! |
793 | connect( m_fontSelector, SIGNAL( activated(const QString&) ), | 794 | connect( m_fontSelector, SIGNAL( activated(const QString&) ), |
794 | this, SLOT( do_setfont(const QString&) ) ); | 795 | this, SLOT( do_setfont(const QString&) ) ); |
795 | connect( m_fontSelector, SIGNAL( activated(int) ), | 796 | connect( m_fontSelector, SIGNAL( activated(int) ), |
796 | this, SLOT( do_setencoding(int) ) ); | 797 | this, SLOT( do_setencoding(int) ) ); |
797 | 798 | ||
798 | m_fontBar->hide(); | 799 | m_fontBar->hide(); |
799 | m_fontVisible = false; | 800 | m_fontVisible = false; |
800 | #ifdef USEMSGS | 801 | #ifdef USEMSGS |
801 | connect(qApp, SIGNAL( appMessage(const QCString&,const QByteArray&) ), | 802 | connect(qApp, SIGNAL( appMessage(const QCString&,const QByteArray&) ), |
802 | this, SLOT( msgHandler(const QCString&,const QByteArray&) ) ); | 803 | this, SLOT( msgHandler(const QCString&,const QByteArray&) ) ); |
803 | #endif | 804 | #endif |
804 | // qDebug("Initing"); | 805 | // odebug << "Initing" << oendl; |
805 | reader->init(); | 806 | reader->init(); |
806 | // qDebug("Inited"); | 807 | // odebug << "Inited" << oendl; |
807 | // m_buttonAction[m_spaceTarget]->setOn(true); | 808 | // m_buttonAction[m_spaceTarget]->setOn(true); |
808 | // qDebug("fonting"); | 809 | // odebug << "fonting" << oendl; |
809 | do_setfont(reader->m_fontname); | 810 | do_setfont(reader->m_fontname); |
810 | if (!reader->m_lastfile.isEmpty()) | 811 | if (!reader->m_lastfile.isEmpty()) |
811 | { | 812 | { |
812 | //qDebug("doclnk"); | 813 | // odebug << "doclnk" << oendl; |
813 | //doc = new DocLnk(reader->m_lastfile); | 814 | // doc = new DocLnk(reader->m_lastfile); |
814 | //qDebug("doclnk done"); | 815 | // odebug << "doclnk done" << oendl; |
815 | if (pOpenlist != NULL) | 816 | if (pOpenlist != NULL) |
816 | { | 817 | { |
817 | 818 | ||
818 | /* | 819 | /* |
819 | int ind = 0; | 820 | int ind = 0; |
820 | Bkmk* p = (*pOpenlist)[ind]; | 821 | Bkmk* p = (*pOpenlist)[ind]; |
821 | while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) | 822 | while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) |
822 | { | 823 | { |
823 | p = (*pOpenlist)[++ind]; | 824 | p = (*pOpenlist)[++ind]; |
824 | } | 825 | } |
825 | */ | 826 | */ |
826 | Bkmk* p = NULL; | 827 | Bkmk* p = NULL; |
827 | for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) | 828 | for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) |
828 | { | 829 | { |
829 | p = iter.pContent(); | 830 | p = iter.pContent(); |
830 | if (toQString(CFiledata(p->anno()).name()) == reader->m_lastfile) | 831 | if (toQString(CFiledata(p->anno()).name()) == reader->m_lastfile) |
831 | { | 832 | { |
832 | break; | 833 | break; |
833 | } | 834 | } |
834 | // qDebug("Item:%s", (const char*)toQString(CFiledata(p->anno()).name())); | 835 | // odebug << "Item:" << toQString(CFiledata(p->anno()).name()) << "" << oendl; |
835 | p = NULL; | 836 | p = NULL; |
836 | } | 837 | } |
837 | if (p != NULL) | 838 | if (p != NULL) |
838 | { | 839 | { |
839 | //qDebug("openfrombkmk"); | 840 | // odebug << "openfrombkmk" << oendl; |
840 | if (!openfrombkmk(p)) | 841 | if (!openfrombkmk(p)) |
841 | showEditTools(); | 842 | showEditTools(); |
842 | } | 843 | } |
843 | else | 844 | else |
844 | { | 845 | { |
845 | //qDebug("openfile"); | 846 | // odebug << "openfile" << oendl; |
846 | openFile( reader->m_lastfile ); | 847 | openFile( reader->m_lastfile ); |
847 | } | 848 | } |
848 | } | 849 | } |
849 | else | 850 | else |
850 | { | 851 | { |
851 | // qDebug("Openfile 2"); | 852 | // odebug << "Openfile 2" << oendl; |
852 | if (!reader->m_lastfile.isEmpty()) | 853 | if (!reader->m_lastfile.isEmpty()) |
853 | openFile( reader->m_lastfile ); | 854 | openFile( reader->m_lastfile ); |
854 | } | 855 | } |
855 | } | 856 | } |
856 | else | 857 | else |
857 | { | 858 | { |
858 | showEditTools(); | 859 | showEditTools(); |
859 | } | 860 | } |
860 | // qApp->processEvents(); | 861 | // qApp->processEvents(); |
861 | reader->bDoUpdates = true; | 862 | reader->bDoUpdates = true; |
862 | reader->update(); | 863 | reader->update(); |
863 | config.setGroup("Version"); | 864 | config.setGroup("Version"); |
864 | int major = config.readNumEntry("Major", 0); | 865 | int major = config.readNumEntry("Major", 0); |
865 | int bkmktype = config.readNumEntry("BkmkType", 0); | 866 | int bkmktype = config.readNumEntry("BkmkType", 0); |
866 | char minor = config.readNumEntry("Minor", 0); | 867 | char minor = config.readNumEntry("Minor", 0); |
867 | if (CheckVersion(major, bkmktype, minor)) | 868 | if (CheckVersion(major, bkmktype, minor)) |
868 | { | 869 | { |
869 | config.writeEntry("Major", major); | 870 | config.writeEntry("Major", major); |
870 | config.writeEntry("BkmkType", bkmktype); | 871 | config.writeEntry("BkmkType", bkmktype); |
871 | config.writeEntry("Minor", (int)minor); | 872 | config.writeEntry("Minor", (int)minor); |
872 | } | 873 | } |
873 | // qDebug("finished update"); | 874 | // odebug << "finished update" << oendl; |
874 | } | 875 | } |
875 | 876 | ||
876 | void QTReaderApp::addtoolbars(Config* config) | 877 | void QTReaderApp::addtoolbars(Config* config) |
877 | { | 878 | { |
878 | config->setGroup("Toolbar"); | 879 | config->setGroup("Toolbar"); |
879 | 880 | ||
880 | if (fileBar != NULL) | 881 | if (fileBar != NULL) |
881 | { | 882 | { |
882 | if (fileBar != menubar) | 883 | if (fileBar != menubar) |
883 | { | 884 | { |
884 | fileBar->clear(); | 885 | fileBar->clear(); |
885 | } | 886 | } |
886 | else | 887 | else |
887 | { | 888 | { |
888 | m_preferences_action->removeFrom( filebar() ); | 889 | m_preferences_action->removeFrom( filebar() ); |
889 | m_open_action->removeFrom( filebar() ); | 890 | m_open_action->removeFrom( filebar() ); |
890 | m_close_action->removeFrom( filebar() ); | 891 | m_close_action->removeFrom( filebar() ); |
891 | m_info_action->removeFrom( filebar() ); | 892 | m_info_action->removeFrom( filebar() ); |
892 | m_touch_action->removeFrom( filebar() ); | 893 | m_touch_action->removeFrom( filebar() ); |
893 | m_find_action->removeFrom( filebar() ); | 894 | m_find_action->removeFrom( filebar() ); |
894 | } | 895 | } |
895 | } | 896 | } |
896 | 897 | ||
897 | m_preferences_action->addTo( filebar() ); | 898 | m_preferences_action->addTo( filebar() ); |
898 | addfilebar(config, "Open", m_open_action); | 899 | addfilebar(config, "Open", m_open_action); |
899 | addfilebar(config, "Close", m_close_action); | 900 | addfilebar(config, "Close", m_close_action); |
900 | addfilebar(config, "Info", m_info_action); | 901 | addfilebar(config, "Info", m_info_action); |
901 | addfilebar(config, "Two/One Touch", m_touch_action); | 902 | addfilebar(config, "Two/One Touch", m_touch_action); |
902 | addfilebar(config, "Find", m_find_action); | 903 | addfilebar(config, "Find", m_find_action); |
903 | 904 | ||
904 | if (navBar != NULL) | 905 | if (navBar != NULL) |
905 | { | 906 | { |
906 | if ((navBar == fileBar) && (fileBar == menubar)) | 907 | if ((navBar == fileBar) && (fileBar == menubar)) |
907 | { | 908 | { |
908 | m_scrollButton->removeFrom( navbar() ); | 909 | m_scrollButton->removeFrom( navbar() ); |
909 | m_start_action->removeFrom( navbar() ); | 910 | m_start_action->removeFrom( navbar() ); |
910 | m_end_action->removeFrom( navbar() ); | 911 | m_end_action->removeFrom( navbar() ); |
911 | m_jump_action->removeFrom( navbar() ); | 912 | m_jump_action->removeFrom( navbar() ); |
912 | m_pageline_action->removeFrom( navbar() ); | 913 | m_pageline_action->removeFrom( navbar() ); |
913 | m_pageup_action->removeFrom( navbar() ); | 914 | m_pageup_action->removeFrom( navbar() ); |
914 | m_pagedn_action->removeFrom( navbar() ); | 915 | m_pagedn_action->removeFrom( navbar() ); |
915 | m_back_action->removeFrom( navbar() ); | 916 | m_back_action->removeFrom( navbar() ); |
916 | m_home_action->removeFrom( navbar() ); | 917 | m_home_action->removeFrom( navbar() ); |
917 | m_forward_action->removeFrom( navbar() ); | 918 | m_forward_action->removeFrom( navbar() ); |
918 | } | 919 | } |
919 | else if (navBar != fileBar) | 920 | else if (navBar != fileBar) |
920 | { | 921 | { |
921 | navBar->clear(); | 922 | navBar->clear(); |
922 | } | 923 | } |
923 | } | 924 | } |
924 | 925 | ||
925 | addnavbar(config, "Scroll", m_scrollButton); | 926 | addnavbar(config, "Scroll", m_scrollButton); |
926 | addnavbar(config, "Goto Start", m_start_action); | 927 | addnavbar(config, "Goto Start", m_start_action); |
927 | addnavbar(config, "Goto End", m_end_action); | 928 | addnavbar(config, "Goto End", m_end_action); |
928 | 929 | ||
929 | addnavbar(config, "Jump", m_jump_action); | 930 | addnavbar(config, "Jump", m_jump_action); |
930 | addnavbar(config, "Page/Line Scroll", m_pageline_action); | 931 | addnavbar(config, "Page/Line Scroll", m_pageline_action); |
931 | 932 | ||
932 | addnavbar(config, "Page Up", m_pageup_action); | 933 | addnavbar(config, "Page Up", m_pageup_action); |
933 | addnavbar(config, "Page Down", m_pagedn_action); | 934 | addnavbar(config, "Page Down", m_pagedn_action); |
934 | 935 | ||
935 | addnavbar(config, "Back", m_back_action); | 936 | addnavbar(config, "Back", m_back_action); |
936 | addnavbar(config, "Home", m_home_action); | 937 | addnavbar(config, "Home", m_home_action); |
937 | addnavbar(config, "Forward", m_forward_action); | 938 | addnavbar(config, "Forward", m_forward_action); |
938 | 939 | ||
939 | if (viewBar != NULL) | 940 | if (viewBar != NULL) |
940 | { | 941 | { |
941 | if ((viewBar == fileBar) && (fileBar == menubar)) | 942 | if ((viewBar == fileBar) && (fileBar == menubar)) |
942 | { | 943 | { |
943 | m_actFullscreen->removeFrom( filebar() ); | 944 | m_actFullscreen->removeFrom( filebar() ); |
944 | m_zoomin_action->removeFrom( viewbar() ); | 945 | m_zoomin_action->removeFrom( viewbar() ); |
945 | m_zoomout_action->removeFrom( viewbar() ); | 946 | m_zoomout_action->removeFrom( viewbar() ); |
946 | m_setfont_action->removeFrom( viewbar() ); | 947 | m_setfont_action->removeFrom( viewbar() ); |
947 | m_setenc_action->removeFrom( viewbar() ); | 948 | m_setenc_action->removeFrom( viewbar() ); |
948 | m_setmono_action->removeFrom( viewbar() ); | 949 | m_setmono_action->removeFrom( viewbar() ); |
949 | } | 950 | } |
950 | else if (viewBar != fileBar) | 951 | else if (viewBar != fileBar) |
951 | { | 952 | { |
952 | viewBar->clear(); | 953 | viewBar->clear(); |
953 | } | 954 | } |
954 | } | 955 | } |
955 | 956 | ||
956 | addviewbar(config, "Fullscreen", m_actFullscreen); | 957 | addviewbar(config, "Fullscreen", m_actFullscreen); |
957 | addviewbar(config, "Zoom In", m_zoomin_action); | 958 | addviewbar(config, "Zoom In", m_zoomin_action); |
958 | addviewbar(config, "Zoom Out", m_zoomout_action); | 959 | addviewbar(config, "Zoom Out", m_zoomout_action); |
959 | addviewbar(config, "Set Font", m_setfont_action); | 960 | addviewbar(config, "Set Font", m_setfont_action); |
960 | addviewbar(config, "Encoding Select", m_setenc_action); | 961 | addviewbar(config, "Encoding Select", m_setenc_action); |
961 | addviewbar(config, "Ideogram Mode", m_setmono_action); | 962 | addviewbar(config, "Ideogram Mode", m_setmono_action); |
962 | 963 | ||
963 | if (markBar != NULL) | 964 | if (markBar != NULL) |
964 | { | 965 | { |
965 | if ((markBar == fileBar) && (fileBar == menubar)) | 966 | if ((markBar == fileBar) && (fileBar == menubar)) |
966 | { | 967 | { |
967 | m_mark_action->removeFrom( markbar() ); | 968 | m_mark_action->removeFrom( markbar() ); |
968 | m_annotate_action->removeFrom( markbar()); | 969 | m_annotate_action->removeFrom( markbar()); |
969 | m_goto_action->removeFrom( markbar() ); | 970 | m_goto_action->removeFrom( markbar() ); |
970 | m_delete_action->removeFrom( markbar() ); | 971 | m_delete_action->removeFrom( markbar() ); |
971 | m_autogen_action->removeFrom( markbar() ); | 972 | m_autogen_action->removeFrom( markbar() ); |
972 | m_clear_action->removeFrom( markbar() ); | 973 | m_clear_action->removeFrom( markbar() ); |
973 | m_save_action->removeFrom( markbar() ); | 974 | m_save_action->removeFrom( markbar() ); |
974 | m_tidy_action->removeFrom( markbar() ); | 975 | m_tidy_action->removeFrom( markbar() ); |
975 | m_startBlock_action->removeFrom( markbar() ); | 976 | m_startBlock_action->removeFrom( markbar() ); |
976 | m_endBlock_action->removeFrom( markbar() ); | 977 | m_endBlock_action->removeFrom( markbar() ); |
977 | } | 978 | } |
978 | else if (markBar != fileBar) | 979 | else if (markBar != fileBar) |
979 | { | 980 | { |
980 | markBar->clear(); | 981 | markBar->clear(); |
981 | } | 982 | } |
982 | } | 983 | } |
983 | addmarkbar(config, "Mark", m_mark_action); | 984 | addmarkbar(config, "Mark", m_mark_action); |
984 | addmarkbar(config, "Annotate", m_annotate_action); | 985 | addmarkbar(config, "Annotate", m_annotate_action); |
985 | addmarkbar(config, "Goto", m_goto_action); | 986 | addmarkbar(config, "Goto", m_goto_action); |
986 | addmarkbar(config, "Delete", m_delete_action); | 987 | addmarkbar(config, "Delete", m_delete_action); |
987 | addmarkbar(config, "Autogen", m_autogen_action); | 988 | addmarkbar(config, "Autogen", m_autogen_action); |
988 | addmarkbar(config, "Clear", m_clear_action); | 989 | addmarkbar(config, "Clear", m_clear_action); |
989 | addmarkbar(config, "Save", m_save_action); | 990 | addmarkbar(config, "Save", m_save_action); |
990 | addmarkbar(config, "Tidy", m_tidy_action); | 991 | addmarkbar(config, "Tidy", m_tidy_action); |
991 | addmarkbar(config, "Start Block", m_startBlock_action); | 992 | addmarkbar(config, "Start Block", m_startBlock_action); |
992 | addmarkbar(config, "Copy Block", m_endBlock_action); | 993 | addmarkbar(config, "Copy Block", m_endBlock_action); |
993 | if (checkbar(config, "Annotation indicator")) | 994 | if (checkbar(config, "Annotation indicator")) |
994 | { | 995 | { |
995 | if (m_bkmkAvail == NULL) | 996 | if (m_bkmkAvail == NULL) |
996 | { | 997 | { |
997 | 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 ); |
998 | connect( m_bkmkAvail, SIGNAL( activated() ), this, SLOT( showAnnotation() ) ); | 999 | connect( m_bkmkAvail, SIGNAL( activated() ), this, SLOT( showAnnotation() ) ); |
999 | 1000 | ||
1000 | m_bkmkAvail->setEnabled(false); | 1001 | m_bkmkAvail->setEnabled(false); |
1001 | } | 1002 | } |
1002 | QLabel *spacer = new QLabel(markBar, ""); | 1003 | QLabel *spacer = new QLabel(markBar, ""); |
1003 | markbar()->setStretchableWidget(spacer); | 1004 | markbar()->setStretchableWidget(spacer); |
1004 | m_bkmkAvail->removeFrom( markbar() ); | 1005 | m_bkmkAvail->removeFrom( markbar() ); |
1005 | m_bkmkAvail->addTo( markbar() ); | 1006 | m_bkmkAvail->addTo( markbar() ); |
1006 | } | 1007 | } |
1007 | else | 1008 | else |
1008 | { | 1009 | { |
1009 | if (m_bkmkAvail != NULL) | 1010 | if (m_bkmkAvail != NULL) |
1010 | { | 1011 | { |
1011 | m_bkmkAvail->removeFrom( markbar() ); | 1012 | m_bkmkAvail->removeFrom( markbar() ); |
1012 | delete m_bkmkAvail; | 1013 | delete m_bkmkAvail; |
1013 | m_bkmkAvail = NULL; | 1014 | m_bkmkAvail = NULL; |
1014 | } | 1015 | } |
1015 | } | 1016 | } |
1016 | } | 1017 | } |
1017 | 1018 | ||
1018 | bool QTReaderApp::checkbar(Config* _config, const QString& key) | 1019 | bool QTReaderApp::checkbar(Config* _config, const QString& key) |
1019 | { | 1020 | { |
1020 | return _config->readBoolEntry(key, false); | 1021 | return _config->readBoolEntry(key, false); |
1021 | } | 1022 | } |
1022 | 1023 | ||
1023 | 1024 | ||
1024 | QToolBar* QTReaderApp::filebar() | 1025 | QToolBar* QTReaderApp::filebar() |
1025 | { | 1026 | { |
1026 | if (fileBar == NULL) | 1027 | if (fileBar == NULL) |
1027 | { | 1028 | { |
1028 | switch (m_tbpol) | 1029 | switch (m_tbpol) |
1029 | { | 1030 | { |
1030 | case cesSingle: | 1031 | case cesSingle: |
1031 | // qDebug("Setting filebar to menubar"); | 1032 | // odebug << "Setting filebar to menubar" << oendl; |
1032 | fileBar = menubar; | 1033 | fileBar = menubar; |
1033 | break; | 1034 | break; |
1034 | default: | 1035 | default: |
1035 | qDebug("Incorrect toolbar policy set"); | 1036 | odebug << "Incorrect toolbar policy set" << oendl; |
1036 | case cesMenuTool: | 1037 | case cesMenuTool: |
1037 | case cesMultiple: | 1038 | case cesMultiple: |
1038 | // qDebug("Creating new file bar"); | 1039 | // odebug << "Creating new file bar" << oendl; |
1039 | fileBar = new QToolBar("File", this, m_tbposition); | 1040 | fileBar = new QToolBar("File", this, m_tbposition); |
1040 | break; | 1041 | break; |
1041 | } | 1042 | } |
1042 | //fileBar->setHorizontalStretchable( true ); | 1043 | // fileBar->setHorizontalStretchable( true ); |
1043 | } | 1044 | } |
1044 | return fileBar; | 1045 | return fileBar; |
1045 | } | 1046 | } |
1046 | QToolBar* QTReaderApp::viewbar() | 1047 | QToolBar* QTReaderApp::viewbar() |
1047 | { | 1048 | { |
1048 | if (viewBar == NULL) | 1049 | if (viewBar == NULL) |
1049 | { | 1050 | { |
1050 | switch (m_tbpol) | 1051 | switch (m_tbpol) |
1051 | { | 1052 | { |
1052 | case cesMultiple: | 1053 | case cesMultiple: |
1053 | viewBar = new QToolBar("View", this, m_tbposition); | 1054 | viewBar = new QToolBar("View", this, m_tbposition); |
1054 | break; | 1055 | break; |
1055 | default: | 1056 | default: |
1056 | qDebug("Incorrect toolbar policy set"); | 1057 | odebug << "Incorrect toolbar policy set" << oendl; |
1057 | case cesSingle: | 1058 | case cesSingle: |
1058 | case cesMenuTool: | 1059 | case cesMenuTool: |
1059 | viewBar = fileBar; | 1060 | viewBar = fileBar; |
1060 | break; | 1061 | break; |
1061 | } | 1062 | } |
1062 | } | 1063 | } |
1063 | return viewBar; | 1064 | return viewBar; |
1064 | } | 1065 | } |
1065 | QToolBar* QTReaderApp::navbar() | 1066 | QToolBar* QTReaderApp::navbar() |
1066 | { | 1067 | { |
1067 | if (navBar == NULL) | 1068 | if (navBar == NULL) |
1068 | { | 1069 | { |
1069 | switch (m_tbpol) | 1070 | switch (m_tbpol) |
1070 | { | 1071 | { |
1071 | case cesMultiple: | 1072 | case cesMultiple: |
1072 | // qDebug("Creating new nav bar"); | 1073 | // odebug << "Creating new nav bar" << oendl; |
1073 | navBar = new QToolBar("Navigation", this, m_tbposition); | 1074 | navBar = new QToolBar("Navigation", this, m_tbposition); |
1074 | break; | 1075 | break; |
1075 | default: | 1076 | default: |
1076 | qDebug("Incorrect toolbar policy set"); | 1077 | odebug << "Incorrect toolbar policy set" << oendl; |
1077 | case cesSingle: | 1078 | case cesSingle: |
1078 | case cesMenuTool: | 1079 | case cesMenuTool: |
1079 | navBar = fileBar; | 1080 | navBar = fileBar; |
1080 | // qDebug("Setting navbar to filebar"); | 1081 | // odebug << "Setting navbar to filebar" << oendl; |
1081 | break; | 1082 | break; |
1082 | } | 1083 | } |
1083 | } | 1084 | } |
1084 | return navBar; | 1085 | return navBar; |
1085 | } | 1086 | } |
1086 | QToolBar* QTReaderApp::markbar() | 1087 | QToolBar* QTReaderApp::markbar() |
1087 | { | 1088 | { |
1088 | if (markBar == NULL) | 1089 | if (markBar == NULL) |
1089 | { | 1090 | { |
1090 | switch (m_tbpol) | 1091 | switch (m_tbpol) |
1091 | { | 1092 | { |
1092 | case cesMultiple: | 1093 | case cesMultiple: |
1093 | markBar = new QToolBar("Marks", this, m_tbposition); | 1094 | markBar = new QToolBar("Marks", this, m_tbposition); |
1094 | break; | 1095 | break; |
1095 | default: | 1096 | default: |
1096 | qDebug("Incorrect toolbar policy set"); | 1097 | odebug << "Incorrect toolbar policy set" << oendl; |
1097 | case cesSingle: | 1098 | case cesSingle: |
1098 | case cesMenuTool: | 1099 | case cesMenuTool: |
1099 | markBar = fileBar; | 1100 | markBar = fileBar; |
1100 | break; | 1101 | break; |
1101 | } | 1102 | } |
1102 | } | 1103 | } |
1103 | return markBar; | 1104 | return markBar; |
1104 | } | 1105 | } |
1105 | 1106 | ||
1106 | void QTReaderApp::addfilebar(Config* _config, const QString& key, QAction* a) | 1107 | void QTReaderApp::addfilebar(Config* _config, const QString& key, QAction* a) |
1107 | { | 1108 | { |
1108 | if (_config->readBoolEntry(key, false)) a->addTo( filebar() ); | 1109 | if (_config->readBoolEntry(key, false)) a->addTo( filebar() ); |
1109 | } | 1110 | } |
1110 | void QTReaderApp::addnavbar(Config* _config, const QString& key, QAction* a) | 1111 | void QTReaderApp::addnavbar(Config* _config, const QString& key, QAction* a) |
1111 | { | 1112 | { |
1112 | if (_config->readBoolEntry(key, false)) a->addTo( navbar() ); | 1113 | if (_config->readBoolEntry(key, false)) a->addTo( navbar() ); |
1113 | } | 1114 | } |
1114 | void QTReaderApp::addmarkbar(Config* _config, const QString& key, QAction* a) | 1115 | void QTReaderApp::addmarkbar(Config* _config, const QString& key, QAction* a) |
1115 | { | 1116 | { |
1116 | if (_config->readBoolEntry(key, false)) a->addTo( markbar() ); | 1117 | if (_config->readBoolEntry(key, false)) a->addTo( markbar() ); |
1117 | } | 1118 | } |
1118 | void QTReaderApp::addviewbar(Config* _config, const QString& key, QAction* a) | 1119 | void QTReaderApp::addviewbar(Config* _config, const QString& key, QAction* a) |
1119 | { | 1120 | { |
1120 | if (_config->readBoolEntry(key, false)) a->addTo( viewbar() ); | 1121 | if (_config->readBoolEntry(key, false)) a->addTo( viewbar() ); |
1121 | } | 1122 | } |
1122 | 1123 | ||
1123 | void QTReaderApp::suspend() { reader->suspend(); } | 1124 | void QTReaderApp::suspend() { reader->suspend(); } |
1124 | 1125 | ||
1125 | #ifdef USEMSGS | 1126 | #ifdef USEMSGS |
1126 | void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) | 1127 | void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) |
1127 | { | 1128 | { |
1128 | QString msg = QString::fromUtf8(_msg); | 1129 | QString msg = QString::fromUtf8(_msg); |
1129 | 1130 | ||
1130 | //// qDebug("Received:%s", (const char*)msg); | 1131 | //// odebug << "Received:" << msg << "" << oendl; |
1131 | 1132 | ||
1132 | QDataStream stream( _data, IO_ReadOnly ); | 1133 | QDataStream stream( _data, IO_ReadOnly ); |
1133 | if ( msg == "info(QString)" ) | 1134 | if ( msg == "info(QString)" ) |
1134 | { | 1135 | { |
1135 | QString info; | 1136 | QString info; |
1136 | stream >> info; | 1137 | stream >> info; |
1137 | QMessageBox::information(this, PROGNAME, info); | 1138 | QMessageBox::information(this, PROGNAME, info); |
1138 | } | 1139 | } |
1139 | else if ( msg == "Update(int)" ) | 1140 | else if ( msg == "Update(int)" ) |
1140 | { | 1141 | { |
1141 | int info; | 1142 | int info; |
1142 | stream >> info; | 1143 | stream >> info; |
1143 | if (info) | 1144 | if (info) |
1144 | { | 1145 | { |
1145 | reader->bDoUpdates = true; | 1146 | reader->bDoUpdates = true; |
1146 | reader->refresh(); | 1147 | reader->refresh(); |
1147 | } | 1148 | } |
1148 | else | 1149 | else |
1149 | { | 1150 | { |
1150 | reader->bDoUpdates = false; | 1151 | reader->bDoUpdates = false; |
1151 | } | 1152 | } |
1152 | } | 1153 | } |
1153 | else if ( msg == "warn(QString)" ) | 1154 | else if ( msg == "warn(QString)" ) |
1154 | { | 1155 | { |
1155 | QString info; | 1156 | QString info; |
1156 | stream >> info; | 1157 | stream >> info; |
1157 | QMessageBox::warning(this, PROGNAME, info); | 1158 | QMessageBox::warning(this, PROGNAME, info); |
1158 | } | 1159 | } |
1159 | else if ( msg == "exit()" ) | 1160 | else if ( msg == "exit()" ) |
1160 | { | 1161 | { |
1161 | m_dontSave = true; | 1162 | m_dontSave = true; |
1162 | close(); | 1163 | close(); |
1163 | } | 1164 | } |
1164 | else if ( msg == "pageDown()" ) | 1165 | else if ( msg == "pageDown()" ) |
1165 | { | 1166 | { |
1166 | reader->dopagedn(); | 1167 | reader->dopagedn(); |
1167 | } | 1168 | } |
1168 | else if ( msg == "pageUp()" ) | 1169 | else if ( msg == "pageUp()" ) |
1169 | { | 1170 | { |
1170 | reader->dopageup(); | 1171 | reader->dopageup(); |
1171 | } | 1172 | } |
1172 | else if ( msg == "lineDown()" ) | 1173 | else if ( msg == "lineDown()" ) |
1173 | { | 1174 | { |
1174 | reader->lineDown(); | 1175 | reader->lineDown(); |
1175 | } | 1176 | } |
1176 | else if ( msg == "lineUp()" ) | 1177 | else if ( msg == "lineUp()" ) |
1177 | { | 1178 | { |
1178 | reader->lineUp(); | 1179 | reader->lineUp(); |
1179 | } | 1180 | } |
1180 | else if ( msg == "showText()" ) | 1181 | else if ( msg == "showText()" ) |
1181 | { | 1182 | { |
1182 | showEditTools(); | 1183 | showEditTools(); |
1183 | } | 1184 | } |
1184 | else if ( msg == "home()" ) | 1185 | else if ( msg == "home()" ) |
1185 | { | 1186 | { |
1186 | reader->goHome(); | 1187 | reader->goHome(); |
1187 | } | 1188 | } |
1188 | else if ( msg == "back()" ) | 1189 | else if ( msg == "back()" ) |
1189 | { | 1190 | { |
1190 | reader->goBack(); | 1191 | reader->goBack(); |
1191 | } | 1192 | } |
1192 | else if ( msg == "forward()" ) | 1193 | else if ( msg == "forward()" ) |
1193 | { | 1194 | { |
1194 | reader->goForward(); | 1195 | reader->goForward(); |
1195 | } | 1196 | } |
1196 | else if ( msg == "File/Open(QString)" ) | 1197 | else if ( msg == "File/Open(QString)" ) |
1197 | { | 1198 | { |
1198 | QString info; | 1199 | QString info; |
1199 | stream >> info; | 1200 | stream >> info; |
1200 | openFile( info ); | 1201 | openFile( info ); |
1201 | } | 1202 | } |
1202 | else if ( msg == "File/Info()" ) | 1203 | else if ( msg == "File/Info()" ) |
1203 | { | 1204 | { |
1204 | showinfo(); | 1205 | showinfo(); |
1205 | } | 1206 | } |
1206 | else if ( msg == "File/Action(QString)" ) | 1207 | else if ( msg == "File/Action(QString)" ) |
1207 | { | 1208 | { |
1208 | QString info; | 1209 | QString info; |
1209 | stream >> info; | 1210 | stream >> info; |
1210 | m_spaceTarget = ActNameToInt(info); | 1211 | m_spaceTarget = ActNameToInt(info); |
1211 | } | 1212 | } |
1212 | else if ( msg == "Navigation/Scroll(int)" ) | 1213 | else if ( msg == "Navigation/Scroll(int)" ) |
1213 | { | 1214 | { |
1214 | int info; | 1215 | int info; |
1215 | stream >> info; | 1216 | stream >> info; |
1216 | autoScroll(info); | 1217 | autoScroll(info); |
1217 | } | 1218 | } |
1218 | 1219 | ||
1219 | else if ( msg == "Navigation/GotoStart()" ) | 1220 | else if ( msg == "Navigation/GotoStart()" ) |
1220 | { | 1221 | { |
1221 | gotoStart(); | 1222 | gotoStart(); |
1222 | } | 1223 | } |
1223 | else if ( msg == "Navigation/GotoEnd()" ) | 1224 | else if ( msg == "Navigation/GotoEnd()" ) |
1224 | { | 1225 | { |
1225 | gotoEnd(); | 1226 | gotoEnd(); |
1226 | } | 1227 | } |
1227 | else if ( msg == "Navigation/Jump(int)" ) | 1228 | else if ( msg == "Navigation/Jump(int)" ) |
1228 | { | 1229 | { |
1229 | int info; | 1230 | int info; |
1230 | stream >> info; | 1231 | stream >> info; |
1231 | reader->locate(info); | 1232 | reader->locate(info); |
1232 | } | 1233 | } |
1233 | else if ( msg == "Navigation/Page/LineScroll(int)" ) | 1234 | else if ( msg == "Navigation/Page/LineScroll(int)" ) |
1234 | { | 1235 | { |
1235 | int info; | 1236 | int info; |
1236 | stream >> info; | 1237 | stream >> info; |
1237 | pagemode(info); | 1238 | pagemode(info); |
1238 | } | 1239 | } |
1239 | else if ( msg == "Navigation/SetOverlap(int)" ) | 1240 | else if ( msg == "Navigation/SetOverlap(int)" ) |
1240 | { | 1241 | { |
1241 | int info; | 1242 | int info; |
1242 | stream >> info; | 1243 | stream >> info; |
1243 | reader->m_overlap = info; | 1244 | reader->m_overlap = info; |
1244 | } | 1245 | } |
1245 | else if ( msg == "Navigation/SetMargin(int)" ) | 1246 | else if ( msg == "Navigation/SetMargin(int)" ) |
1246 | { | 1247 | { |
1247 | int info; | 1248 | int info; |
1248 | stream >> info; | 1249 | stream >> info; |
1249 | do_margin(info); | 1250 | do_margin(info); |
1250 | } | 1251 | } |
1251 | else if ( msg == "File/SetDictionary(QString)" ) | 1252 | else if ( msg == "File/SetDictionary(QString)" ) |
1252 | { | 1253 | { |
1253 | QString info; | 1254 | QString info; |
1254 | stream >> info; | 1255 | stream >> info; |
1255 | do_settarget(info); | 1256 | do_settarget(info); |
1256 | } | 1257 | } |
1257 | #ifdef _SCROLLPIPE | 1258 | #ifdef _SCROLLPIPE |
1258 | else if ( msg == "File/SetScrollTarget(QString)" ) | 1259 | else if ( msg == "File/SetScrollTarget(QString)" ) |
1259 | { | 1260 | { |
1260 | QString info; | 1261 | QString info; |
1261 | stream >> info; | 1262 | stream >> info; |
1262 | reader->m_pipetarget = info; | 1263 | reader->m_pipetarget = info; |
1263 | } | 1264 | } |
1264 | #endif | 1265 | #endif |
1265 | else if ( msg == "File/Two/OneTouch(int)" ) | 1266 | else if ( msg == "File/Two/OneTouch(int)" ) |
1266 | { | 1267 | { |
1267 | int info; | 1268 | int info; |
1268 | stream >> info; | 1269 | stream >> info; |
1269 | setTwoTouch(info); | 1270 | setTwoTouch(info); |
1270 | } | 1271 | } |
1271 | else if ( msg == "Target/Annotation(int)" ) | 1272 | else if ( msg == "Target/Annotation(int)" ) |
1272 | { | 1273 | { |
1273 | int info; | 1274 | int info; |
1274 | stream >> info; | 1275 | stream >> info; |
1275 | OnAnnotation(info); | 1276 | OnAnnotation(info); |
1276 | } | 1277 | } |
1277 | else if ( msg == "Target/Dictionary(int)" ) | 1278 | else if ( msg == "Target/Dictionary(int)" ) |
1278 | { | 1279 | { |
1279 | int info; | 1280 | int info; |
1280 | stream >> info; | 1281 | stream >> info; |
1281 | OnDictionary(info); | 1282 | OnDictionary(info); |
1282 | } | 1283 | } |
1283 | else if ( msg == "Target/Clipboard(int)" ) | 1284 | else if ( msg == "Target/Clipboard(int)" ) |
1284 | { | 1285 | { |
1285 | int info; | 1286 | int info; |
1286 | stream >> info; | 1287 | stream >> info; |
1287 | OnClipboard(info); | 1288 | OnClipboard(info); |
1288 | } | 1289 | } |
1289 | else if ( msg == "File/Find(QString)" ) | 1290 | else if ( msg == "File/Find(QString)" ) |
1290 | { | 1291 | { |
1291 | QString info; | 1292 | QString info; |
1292 | stream >> info; | 1293 | stream >> info; |
1293 | QRegExp arg(info); | 1294 | QRegExp arg(info); |
1294 | size_t pos = reader->pagelocate(); | 1295 | size_t pos = reader->pagelocate(); |
1295 | size_t start = pos; | 1296 | size_t start = pos; |
1296 | CDrawBuffer test(&(reader->m_fontControl)); | 1297 | CDrawBuffer test(&(reader->m_fontControl)); |
1297 | reader->getline(&test); | 1298 | reader->getline(&test); |
1298 | while (arg.match(toQString(test.data())) == -1) | 1299 | while (arg.match(toQString(test.data())) == -1) |
1299 | { | 1300 | { |
1300 | pos = reader->locate(); | 1301 | pos = reader->locate(); |
1301 | if (!reader->getline(&test)) | 1302 | if (!reader->getline(&test)) |
1302 | { | 1303 | { |
1303 | QMessageBox::information(this, PROGNAME, QString("Can't find\n")+info); | 1304 | QMessageBox::information(this, PROGNAME, QString("Can't find\n")+info); |
1304 | pos = start; | 1305 | pos = start; |
1305 | break; | 1306 | break; |
1306 | } | 1307 | } |
1307 | } | 1308 | } |
1308 | reader->locate(pos); | 1309 | reader->locate(pos); |
1309 | } | 1310 | } |
1310 | else if ( msg == "File/Fullscreen(int)" ) | 1311 | else if ( msg == "File/Fullscreen(int)" ) |
1311 | { | 1312 | { |
1312 | int info; | 1313 | int info; |
1313 | stream >> info; | 1314 | stream >> info; |
1314 | setfullscreen(info); | 1315 | setfullscreen(info); |
1315 | } | 1316 | } |
1316 | else if ( msg == "File/Continuous(int)" ) | 1317 | else if ( msg == "File/Continuous(int)" ) |
1317 | { | 1318 | { |
1318 | int info; | 1319 | int info; |
1319 | stream >> info; | 1320 | stream >> info; |
1320 | setcontinuous(info); | 1321 | setcontinuous(info); |
1321 | } | 1322 | } |
1322 | else if ( msg == "Markup(QString)" ) | 1323 | else if ( msg == "Markup(QString)" ) |
1323 | { | 1324 | { |
1324 | QString info; | 1325 | QString info; |
1325 | stream >> info; | 1326 | stream >> info; |
1326 | if (info == "Auto") | 1327 | if (info == "Auto") |
1327 | { | 1328 | { |
1328 | autofmt(true); | 1329 | autofmt(true); |
1329 | } | 1330 | } |
1330 | if (info == "None") | 1331 | if (info == "None") |
1331 | { | 1332 | { |
1332 | autofmt(false); | 1333 | autofmt(false); |
1333 | textfmt(false); | 1334 | textfmt(false); |
1334 | striphtml(false); | 1335 | striphtml(false); |
1335 | peanut(false); | 1336 | peanut(false); |
1336 | } | 1337 | } |
1337 | if (info == "Text") | 1338 | if (info == "Text") |
1338 | { | 1339 | { |
1339 | textfmt(true); | 1340 | textfmt(true); |
1340 | } | 1341 | } |
1341 | if (info == "HTML") | 1342 | if (info == "HTML") |
1342 | { | 1343 | { |
1343 | striphtml(true); | 1344 | striphtml(true); |
1344 | } | 1345 | } |
1345 | if (info == "Peanut/PML") | 1346 | if (info == "Peanut/PML") |
1346 | { | 1347 | { |
1347 | peanut(true); | 1348 | peanut(true); |
1348 | } | 1349 | } |
1349 | } | 1350 | } |
1350 | else if ( msg == "Layout/StripCR(int)" ) | 1351 | else if ( msg == "Layout/StripCR(int)" ) |
1351 | { | 1352 | { |
1352 | int info; | 1353 | int info; |
1353 | stream >> info; | 1354 | stream >> info; |
1354 | stripcr(info); | 1355 | stripcr(info); |
1355 | } | 1356 | } |
1356 | else if ( msg == "Layout/Dehyphen(int)" ) | 1357 | else if ( msg == "Layout/Dehyphen(int)" ) |
1357 | { | 1358 | { |
1358 | int info; | 1359 | int info; |
1359 | stream >> info; | 1360 | stream >> info; |
1360 | dehyphen(info); | 1361 | dehyphen(info); |
1361 | } | 1362 | } |
1362 | else if ( msg == "Layout/Depluck(int)" ) | 1363 | else if ( msg == "Layout/Depluck(int)" ) |
1363 | { | 1364 | { |
1364 | int info; | 1365 | int info; |
1365 | stream >> info; | 1366 | stream >> info; |
1366 | depluck(info); | 1367 | depluck(info); |
1367 | } | 1368 | } |
1368 | else if ( msg == "Layout/Dejpluck(int)" ) | 1369 | else if ( msg == "Layout/Dejpluck(int)" ) |
1369 | { | 1370 | { |
1370 | int info; | 1371 | int info; |
1371 | stream >> info; | 1372 | stream >> info; |
1372 | dejpluck(info); | 1373 | dejpluck(info); |
1373 | } | 1374 | } |
1374 | else if ( msg == "Layout/SingleSpace(int)" ) | 1375 | else if ( msg == "Layout/SingleSpace(int)" ) |
1375 | { | 1376 | { |
1376 | int info; | 1377 | int info; |
1377 | stream >> info; | 1378 | stream >> info; |
1378 | onespace(info); | 1379 | onespace(info); |
1379 | } | 1380 | } |
1380 | #ifdef REPALM | 1381 | #ifdef REPALM |
1381 | else if ( msg == "Layout/Repalm(int)" ) | 1382 | else if ( msg == "Layout/Repalm(int)" ) |
1382 | { | 1383 | { |
1383 | int info; | 1384 | int info; |
1384 | stream >> info; | 1385 | stream >> info; |
1385 | repalm(info); | 1386 | repalm(info); |
1386 | } | 1387 | } |
1387 | #endif | 1388 | #endif |
1388 | else if ( msg == "Layout/Unindent(int)" ) | 1389 | else if ( msg == "Layout/Unindent(int)" ) |
1389 | { | 1390 | { |
1390 | int info; | 1391 | int info; |
1391 | stream >> info; | 1392 | stream >> info; |
1392 | unindent(info); | 1393 | unindent(info); |
1393 | } | 1394 | } |
1394 | else if ( msg == "Layout/Re-paragraph(int)" ) | 1395 | else if ( msg == "Layout/Re-paragraph(int)" ) |
1395 | { | 1396 | { |
1396 | int info; | 1397 | int info; |
1397 | stream >> info; | 1398 | stream >> info; |
1398 | repara(info); | 1399 | repara(info); |
1399 | } | 1400 | } |
1400 | else if ( msg == "Layout/DoubleSpace(int)" ) | 1401 | else if ( msg == "Layout/DoubleSpace(int)" ) |
1401 | { | 1402 | { |
1402 | int info; | 1403 | int info; |
1403 | stream >> info; | 1404 | stream >> info; |
1404 | dblspce(info); | 1405 | dblspce(info); |
1405 | } | 1406 | } |
1406 | else if ( msg == "Layout/Indent(int)" ) | 1407 | else if ( msg == "Layout/Indent(int)" ) |
1407 | { | 1408 | { |
1408 | int info; | 1409 | int info; |
1409 | stream >> info; | 1410 | stream >> info; |
1410 | reader->bindenter = info; | 1411 | reader->bindenter = info; |
1411 | reader->setfilter(reader->getfilter()); | 1412 | reader->setfilter(reader->getfilter()); |
1412 | } | 1413 | } |
1413 | else if ( msg == "Layout/Remap(int)" ) | 1414 | else if ( msg == "Layout/Remap(int)" ) |
1414 | { | 1415 | { |
1415 | int info; | 1416 | int info; |
1416 | stream >> info; | 1417 | stream >> info; |
1417 | remap(info); | 1418 | remap(info); |
1418 | } | 1419 | } |
1419 | else if ( msg == "Layout/Embolden(int)" ) | 1420 | else if ( msg == "Layout/Embolden(int)" ) |
1420 | { | 1421 | { |
1421 | int info; | 1422 | int info; |
1422 | stream >> info; | 1423 | stream >> info; |
1423 | embolden(info); | 1424 | embolden(info); |
1424 | } | 1425 | } |
1425 | else if ( msg == "Format/Ideogram/Word(int)" ) | 1426 | else if ( msg == "Format/Ideogram/Word(int)" ) |
1426 | { | 1427 | { |
1427 | int info; | 1428 | int info; |
1428 | stream >> info; | 1429 | stream >> info; |
1429 | monospace(info); | 1430 | monospace(info); |
1430 | } | 1431 | } |
1431 | else if ( msg == "Format/SetWidth(int)" ) | 1432 | else if ( msg == "Format/SetWidth(int)" ) |
1432 | { | 1433 | { |
1433 | int info; | 1434 | int info; |
1434 | stream >> info; | 1435 | stream >> info; |
1435 | reader->m_charpc = info; | 1436 | reader->m_charpc = info; |
1436 | reader->setfont(); | 1437 | reader->setfont(); |
1437 | reader->refresh(); | 1438 | reader->refresh(); |
1438 | } | 1439 | } |
1439 | else if ( msg == "Format/SetFont(QString,int)" ) | 1440 | else if ( msg == "Format/SetFont(QString,int)" ) |
1440 | { | 1441 | { |
1441 | QString fontname; | 1442 | QString fontname; |
1442 | int size; | 1443 | int size; |
1443 | stream >> fontname; | 1444 | stream >> fontname; |
1444 | stream >> size; | 1445 | stream >> size; |
1445 | setfontHelper(fontname, size); | 1446 | setfontHelper(fontname, size); |
1446 | } | 1447 | } |
1447 | else if ( msg == "Marks/Autogen(QString)" ) | 1448 | else if ( msg == "Marks/Autogen(QString)" ) |
1448 | { | 1449 | { |
1449 | QString info; | 1450 | QString info; |
1450 | stream >> info; | 1451 | stream >> info; |
1451 | do_autogen(info); | 1452 | do_autogen(info); |
1452 | } | 1453 | } |
1453 | else if ( msg == "File/StartBlock()" ) | 1454 | else if ( msg == "File/StartBlock()" ) |
1454 | { | 1455 | { |
1455 | editMark(); | 1456 | editMark(); |
1456 | } | 1457 | } |
1457 | else if ( msg == "File/CopyBlock()" ) | 1458 | else if ( msg == "File/CopyBlock()" ) |
1458 | { | 1459 | { |
1459 | editCopy(); | 1460 | editCopy(); |
1460 | } | 1461 | } |
1461 | } | 1462 | } |
1462 | #endif | 1463 | #endif |
1463 | ActionTypes QTReaderApp::ActNameToInt(const QString& _enc) | 1464 | ActionTypes QTReaderApp::ActNameToInt(const QString& _enc) |
1464 | { | 1465 | { |
1465 | for (int i = 0; i < MAX_ACTIONS; i++) | 1466 | for (int i = 0; i < MAX_ACTIONS; i++) |
1466 | { | 1467 | { |
1467 | if (m_buttonAction[i]->text() == _enc) return (ActionTypes)i; | 1468 | if (m_buttonAction[i]->text() == _enc) return (ActionTypes)i; |
1468 | } | 1469 | } |
1469 | return cesAutoScroll; | 1470 | return cesAutoScroll; |
1470 | } | 1471 | } |
1471 | 1472 | ||
1472 | void QTReaderApp::setfullscreen(bool sfs) | 1473 | void QTReaderApp::setfullscreen(bool sfs) |
1473 | { | 1474 | { |
1474 | reader->bDoUpdates = false; | 1475 | reader->bDoUpdates = false; |
1475 | m_fullscreen = sfs; | 1476 | m_fullscreen = sfs; |
1476 | showEditTools(); | 1477 | showEditTools(); |
1477 | // qApp->processEvents(); | 1478 | // qApp->processEvents(); |
1478 | reader->bDoUpdates = true; | 1479 | reader->bDoUpdates = true; |
1479 | reader->update(); | 1480 | reader->update(); |
1480 | } | 1481 | } |
1481 | 1482 | ||
1482 | void QTReaderApp::buttonActionSelected(QAction* _a) | 1483 | void QTReaderApp::buttonActionSelected(QAction* _a) |
1483 | { | 1484 | { |
1484 | //// qDebug("es:%x : %s (%u)", _a, (const char *)(_a->text()), ActNameToInt(_a->text())); | 1485 | //// odebug << "es:" << _a << " : " << (const char *)(_a->text()) << " (" << ActNameToInt(_a->text()) << ")" << oendl; |
1485 | m_spaceTarget = ActNameToInt(_a->text()); | 1486 | m_spaceTarget = ActNameToInt(_a->text()); |
1486 | } | 1487 | } |
1487 | 1488 | ||
1488 | QTReaderApp::~QTReaderApp() | 1489 | QTReaderApp::~QTReaderApp() |
1489 | { | 1490 | { |
1490 | } | 1491 | } |
1491 | 1492 | ||
1492 | void QTReaderApp::autoScroll(bool _b) | 1493 | void QTReaderApp::autoScroll(bool _b) |
1493 | { | 1494 | { |
1494 | reader->setautoscroll(_b); | 1495 | reader->setautoscroll(_b); |
1495 | setScrollState(reader->m_autoScroll); | 1496 | setScrollState(reader->m_autoScroll); |
1496 | } | 1497 | } |
1497 | 1498 | ||
1498 | void QTReaderApp::zoomin() | 1499 | void QTReaderApp::zoomin() |
1499 | { | 1500 | { |
1500 | reader->zoomin(); | 1501 | reader->zoomin(); |
1501 | } | 1502 | } |
1502 | 1503 | ||
1503 | void QTReaderApp::zoomout() | 1504 | void QTReaderApp::zoomout() |
1504 | { | 1505 | { |
1505 | reader->zoomout(); | 1506 | reader->zoomout(); |
1506 | } | 1507 | } |
1507 | 1508 | ||
1508 | void QTReaderApp::clearBkmkList() | 1509 | void QTReaderApp::clearBkmkList() |
1509 | { | 1510 | { |
1510 | delete pBkmklist; | 1511 | delete pBkmklist; |
1511 | pBkmklist = NULL; | 1512 | pBkmklist = NULL; |
1512 | m_fBkmksChanged = false; | 1513 | m_fBkmksChanged = false; |
1513 | } | 1514 | } |
1514 | 1515 | ||
1515 | void QTReaderApp::fileClose() | 1516 | void QTReaderApp::fileClose() |
1516 | { | 1517 | { |
1517 | CCloseDialog* cd = new CCloseDialog(reader->m_string, false, this); | 1518 | CCloseDialog* cd = new CCloseDialog(reader->m_string, false, this); |
1518 | if (cd->exec()) | 1519 | if (cd->exec()) |
1519 | { | 1520 | { |
1520 | if (pOpenlist != NULL) | 1521 | if (pOpenlist != NULL) |
1521 | { | 1522 | { |
1522 | int ind = 0; | 1523 | int ind = 0; |
1523 | Bkmk* p = (*pOpenlist)[ind]; | 1524 | Bkmk* p = (*pOpenlist)[ind]; |
1524 | while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) | 1525 | while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) |
1525 | { | 1526 | { |
1526 | p = (*pOpenlist)[++ind]; | 1527 | p = (*pOpenlist)[++ind]; |
1527 | } | 1528 | } |
1528 | if (p != NULL) pOpenlist->erase(ind); | 1529 | if (p != NULL) pOpenlist->erase(ind); |
1529 | if (cd->delFile()) | 1530 | if (cd->delFile()) |
1530 | { | 1531 | { |
1531 | unlink((const char*)reader->m_lastfile); | 1532 | unlink((const char*)reader->m_lastfile); |
1532 | } | 1533 | } |
1533 | if (cd->delMarks()) | 1534 | if (cd->delMarks()) |
1534 | { | 1535 | { |
1535 | #ifndef USEQPE | 1536 | #ifndef USEQPE |
1536 | QDir d = QDir::home(); // "/" | 1537 | QDir d = QDir::home(); // "/" |
1537 | d.cd(APPDIR); | 1538 | d.cd(APPDIR); |
1538 | d.remove(reader->m_string); | 1539 | d.remove(reader->m_string); |
1539 | #else /* USEQPE */ | 1540 | #else /* USEQPE */ |
1540 | unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); | 1541 | unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); |
1541 | #endif /* USEQPE */ | 1542 | #endif /* USEQPE */ |
1542 | } | 1543 | } |
1543 | if (cd->delConfig()) | 1544 | if (cd->delConfig()) |
1544 | { | 1545 | { |
1545 | #ifndef USEQPE | 1546 | #ifndef USEQPE |
1546 | QDir d = QDir::home(); // "/" | 1547 | QDir d = QDir::home(); // "/" |
1547 | d.cd(APPDIR "/configs"); | 1548 | d.cd(APPDIR "/configs"); |
1548 | d.remove(reader->m_string); | 1549 | d.remove(reader->m_string); |
1549 | #else /* USEQPE */ | 1550 | #else /* USEQPE */ |
1550 | unlink((const char *)Global::applicationFileName(APPDIR "/configs",reader->m_string)); | 1551 | unlink((const char *)Global::applicationFileName(APPDIR "/configs",reader->m_string)); |
1551 | #endif /* USEQPE */ | 1552 | #endif /* USEQPE */ |
1552 | } | 1553 | } |
1553 | } | 1554 | } |
1554 | 1555 | ||
1555 | fileOpen2(); | 1556 | fileOpen2(); |
1556 | } | 1557 | } |
1557 | delete cd; | 1558 | delete cd; |
1558 | } | 1559 | } |
1559 | 1560 | ||
1560 | void QTReaderApp::updatefileinfo() | 1561 | void QTReaderApp::updatefileinfo() |
1561 | { | 1562 | { |
1562 | if (reader->m_string.isEmpty()) return; | 1563 | if (reader->m_string.isEmpty()) return; |
1563 | if (reader->m_lastfile.isEmpty()) return; | 1564 | if (reader->m_lastfile.isEmpty()) return; |
1564 | tchar* nm = fromQString(reader->m_string); | 1565 | tchar* nm = fromQString(reader->m_string); |
1565 | tchar* fl = fromQString(reader->m_lastfile); | 1566 | tchar* fl = fromQString(reader->m_lastfile); |
1566 | // qDebug("Lastfile:%x", fl); | 1567 | // odebug << "Lastfile:" << fl << "" << oendl; |
1567 | bool notadded = true; | 1568 | bool notadded = true; |
1568 | if (pOpenlist == NULL) pOpenlist = new CList<Bkmk>; | 1569 | if (pOpenlist == NULL) pOpenlist = new CList<Bkmk>; |
1569 | else | 1570 | else |
1570 | { | 1571 | { |
1571 | for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) | 1572 | for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) |
1572 | { | 1573 | { |
1573 | if (ustrcmp(CFiledata(iter->anno()).name(), fl) == 0) | 1574 | if (ustrcmp(CFiledata(iter->anno()).name(), fl) == 0) |
1574 | { | 1575 | { |
1575 | iter->value(reader->pagelocate()); | 1576 | iter->value(reader->pagelocate()); |
1576 | unsigned short dlen; | 1577 | unsigned short dlen; |
1577 | unsigned char* data; | 1578 | unsigned char* data; |
1578 | CFiledata fd(iter->anno()); | 1579 | CFiledata fd(iter->anno()); |
1579 | reader->setSaveData(data, dlen, fd.content(), fd.length()); | 1580 | reader->setSaveData(data, dlen, fd.content(), fd.length()); |
1580 | // qDebug("Filedata(1):%u, %u", fd.length(), dlen); | 1581 | // odebug << "Filedata(1):" << fd.length() << ", " << dlen << "" << oendl; |
1581 | // getstate(data, dlen); | 1582 | // getstate(data, dlen); |
1582 | iter->setAnno(data, dlen); | 1583 | iter->setAnno(data, dlen); |
1583 | notadded = false; | 1584 | notadded = false; |
1584 | delete [] data; | 1585 | delete [] data; |
1585 | break; | 1586 | break; |
1586 | } | 1587 | } |
1587 | } | 1588 | } |
1588 | } | 1589 | } |
1589 | // qDebug("Added?:%x", notadded); | 1590 | // odebug << "Added?:" << notadded << "" << oendl; |
1590 | if (notadded) | 1591 | if (notadded) |
1591 | { | 1592 | { |
1592 | struct stat fnstat; | 1593 | struct stat fnstat; |
1593 | stat((const char *)reader->m_lastfile, &fnstat); | 1594 | stat((const char *)reader->m_lastfile, &fnstat); |
1594 | CFiledata fd(fnstat.st_mtime, fl); | 1595 | CFiledata fd(fnstat.st_mtime, fl); |
1595 | unsigned short dlen; | 1596 | unsigned short dlen; |
1596 | unsigned char* data; | 1597 | unsigned char* data; |
1597 | reader->setSaveData(data, dlen, fd.content(), fd.length()); | 1598 | reader->setSaveData(data, dlen, fd.content(), fd.length()); |
1598 | pOpenlist->push_front(Bkmk(nm, data, dlen, reader->pagelocate())); | 1599 | pOpenlist->push_front(Bkmk(nm, data, dlen, reader->pagelocate())); |
1599 | //qDebug("Filedata(2):%u, %u", fd.length(), dlen); | 1600 | // odebug << "Filedata(2):" << fd.length() << ", " << dlen << "" << oendl; |
1600 | delete [] data; | 1601 | delete [] data; |
1601 | } | 1602 | } |
1602 | delete [] nm; | 1603 | delete [] nm; |
1603 | delete [] fl; | 1604 | delete [] fl; |
1604 | } | 1605 | } |
1605 | 1606 | ||
1606 | void QTReaderApp::fileOpen() | 1607 | void QTReaderApp::fileOpen() |
1607 | { | 1608 | { |
1608 | /* | 1609 | /* |
1609 | menu->hide(); | 1610 | menu->hide(); |
1610 | fileBar->hide(); | 1611 | fileBar->hide(); |
1611 | if (regVisible) regBar->hide(); | 1612 | if (regVisible) regBar->hide(); |
1612 | if (searchVisible) searchBar->hide(); | 1613 | if (searchVisible) searchBar->hide(); |
1613 | */ | 1614 | */ |
1614 | // qDebug("fileOpen"); | 1615 | // odebug << "fileOpen" << oendl; |
1615 | // if (!reader->m_lastfile.isEmpty()) | 1616 | // if (!reader->m_lastfile.isEmpty()) |
1616 | updatefileinfo(); | 1617 | updatefileinfo(); |
1617 | fileOpen2(); | 1618 | fileOpen2(); |
1618 | } | 1619 | } |
1619 | 1620 | ||
1620 | void QTReaderApp::fileOpen2() | 1621 | void QTReaderApp::fileOpen2() |
1621 | { | 1622 | { |
1622 | if (pBkmklist != NULL) | 1623 | if (pBkmklist != NULL) |
1623 | { | 1624 | { |
1624 | if (m_fBkmksChanged) | 1625 | if (m_fBkmksChanged) |
1625 | { | 1626 | { |
1626 | 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) |
1627 | savebkmks(); | 1628 | savebkmks(); |
1628 | } | 1629 | } |
1629 | delete pBkmklist; | 1630 | delete pBkmklist; |
1630 | pBkmklist = NULL; | 1631 | pBkmklist = NULL; |
1631 | m_fBkmksChanged = false; | 1632 | m_fBkmksChanged = false; |
1632 | } | 1633 | } |
1633 | reader->disableAutoscroll(); | 1634 | reader->disableAutoscroll(); |
1634 | /* | 1635 | /* |
1635 | editorStack->raiseWidget( fileSelector ); | 1636 | editorStack->raiseWidget( fileSelector ); |
1636 | fileSelector->reread(); | 1637 | fileSelector->reread(); |
1637 | */ | 1638 | */ |
1638 | bool usebrowser = true; | 1639 | bool usebrowser = true; |
1639 | if (pOpenlist != NULL) | 1640 | if (pOpenlist != NULL) |
1640 | { | 1641 | { |
1641 | m_nBkmkAction = cOpenFile; | 1642 | m_nBkmkAction = cOpenFile; |
1642 | if (listbkmk(pOpenlist, "Browse")) usebrowser = false; | 1643 | if (listbkmk(pOpenlist, "Browse")) usebrowser = false; |
1643 | } | 1644 | } |
1644 | if (usebrowser) | 1645 | if (usebrowser) |
1645 | { | 1646 | { |
1646 | QString fn = usefilebrowser(); | 1647 | QString fn = usefilebrowser(); |
1647 | //qApp->processEvents(); | 1648 | // qApp->processEvents(); |
1648 | if (!fn.isEmpty() && QFileInfo(fn).isFile()) | 1649 | if (!fn.isEmpty() && QFileInfo(fn).isFile()) |
1649 | { | 1650 | { |
1650 | openFile(fn); | 1651 | openFile(fn); |
1651 | } | 1652 | } |
1652 | reader->setFocus(); | 1653 | reader->setFocus(); |
1653 | } | 1654 | } |
1654 | // reader->refresh(); | 1655 | // reader->refresh(); |
1655 | // qDebug("HEIGHT:%d", reader->m_lastheight); | 1656 | // odebug << "HEIGHT:" << reader->m_lastheight << "" << oendl; |
1656 | } | 1657 | } |
1657 | 1658 | ||
1658 | QString QTReaderApp::usefilebrowser() | 1659 | QString QTReaderApp::usefilebrowser() |
1659 | { | 1660 | { |
1660 | #ifndef USEQPE | 1661 | #ifndef USEQPE |
1661 | QString s( QFileDialog::getOpenFileName( reader->m_lastfile, QString::null, this ) ); | 1662 | QString s( QFileDialog::getOpenFileName( reader->m_lastfile, QString::null, this ) ); |
1662 | return s; | 1663 | return s; |
1663 | #else | 1664 | #else |
1664 | fileBrowser* fb = new fileBrowser(false, this,"OpieReader",!m_bFloatingDialog, | 1665 | fileBrowser* fb = new fileBrowser(false, this,"OpieReader",!m_bFloatingDialog, |
1665 | 0, | 1666 | 0, |
1666 | // WStyle_Customize | WStyle_NoBorderEx, | 1667 | // WStyle_Customize | WStyle_NoBorderEx, |
1667 | "*", QFileInfo(reader->m_lastfile).dirPath(true)); | 1668 | "*", QFileInfo(reader->m_lastfile).dirPath(true)); |
1668 | 1669 | ||
1669 | 1670 | ||
1670 | QString fn; | 1671 | QString fn; |
1671 | if (fb->exec()) | 1672 | if (fb->exec()) |
1672 | { | 1673 | { |
1673 | fn = fb->getCurrentFile(); | 1674 | fn = fb->getCurrentFile(); |
1674 | } | 1675 | } |
1675 | // qDebug("Selected %s", (const char*)fn); | 1676 | // odebug << "Selected " << fn << "" << oendl; |
1676 | delete fb; | 1677 | delete fb; |
1677 | showEditTools(); | 1678 | showEditTools(); |
1678 | return fn; | 1679 | return fn; |
1679 | #endif | 1680 | #endif |
1680 | } | 1681 | } |
1681 | 1682 | ||
1682 | void QTReaderApp::showgraphic(QImage& pm) | 1683 | void QTReaderApp::showgraphic(QImage& pm) |
1683 | { | 1684 | { |
1684 | QPixmap pc; | 1685 | QPixmap pc; |
1685 | pc.convertFromImage(pm); | 1686 | pc.convertFromImage(pm); |
1686 | m_graphicwin->setPixmap(pc); | 1687 | m_graphicwin->setPixmap(pc); |
1687 | editorStack->raiseWidget( m_graphicwin ); | 1688 | editorStack->raiseWidget( m_graphicwin ); |
1688 | m_graphicwin->setFocus(); | 1689 | m_graphicwin->setFocus(); |
1689 | } | 1690 | } |
1690 | 1691 | ||
1691 | 1692 | ||
1692 | void QTReaderApp::showprefs() | 1693 | void QTReaderApp::showprefs() |
1693 | { | 1694 | { |
1694 | CPrefs* prefwin = new CPrefs(!m_bFloatingDialog, this); | 1695 | CPrefs* prefwin = new CPrefs(!m_bFloatingDialog, this); |
1695 | 1696 | ||
1696 | prefwin->twotouch(m_twoTouch); | 1697 | prefwin->twotouch(m_twoTouch); |
1697 | prefwin->propfontchange(m_propogatefontchange); | 1698 | prefwin->propfontchange(m_propogatefontchange); |
1698 | prefwin->StripCR(reader->bstripcr); | 1699 | prefwin->StripCR(reader->bstripcr); |
1699 | prefwin->Dehyphen(reader->bdehyphen); | 1700 | prefwin->Dehyphen(reader->bdehyphen); |
1700 | prefwin->SingleSpace(reader->bonespace); | 1701 | prefwin->SingleSpace(reader->bonespace); |
1701 | prefwin->Unindent(reader->bunindent); | 1702 | prefwin->Unindent(reader->bunindent); |
1702 | prefwin->Reparagraph(reader->brepara); | 1703 | prefwin->Reparagraph(reader->brepara); |
1703 | prefwin->DoubleSpace(reader->bdblspce); | 1704 | prefwin->DoubleSpace(reader->bdblspce); |
1704 | prefwin->Remap(reader->bremap); | 1705 | prefwin->Remap(reader->bremap); |
1705 | prefwin->Embolden(reader->bmakebold); | 1706 | prefwin->Embolden(reader->bmakebold); |
1706 | prefwin->FullJustify(reader->bfulljust); | 1707 | prefwin->FullJustify(reader->bfulljust); |
1707 | prefwin->ParaLead(reader->getextraspace()); | 1708 | prefwin->ParaLead(reader->getextraspace()); |
1708 | prefwin->LineLead(reader->getlead()); | 1709 | prefwin->LineLead(reader->getlead()); |
1709 | prefwin->Margin(reader->m_border); | 1710 | prefwin->Margin(reader->m_border); |
1710 | prefwin->Indent(reader->bindenter); | 1711 | prefwin->Indent(reader->bindenter); |
1711 | if (reader->bautofmt) | 1712 | if (reader->bautofmt) |
1712 | { | 1713 | { |
1713 | prefwin->Markup(0); | 1714 | prefwin->Markup(0); |
1714 | } | 1715 | } |
1715 | else if (reader->btextfmt) | 1716 | else if (reader->btextfmt) |
1716 | { | 1717 | { |
1717 | prefwin->Markup(2); | 1718 | prefwin->Markup(2); |
1718 | } | 1719 | } |
1719 | else if (reader->bstriphtml) | 1720 | else if (reader->bstriphtml) |
1720 | { | 1721 | { |
1721 | prefwin->Markup(3); | 1722 | prefwin->Markup(3); |
1722 | } | 1723 | } |
1723 | else if (reader->bpeanut) | 1724 | else if (reader->bpeanut) |
1724 | { | 1725 | { |
1725 | prefwin->Markup(4); | 1726 | prefwin->Markup(4); |
1726 | } | 1727 | } |
1727 | else | 1728 | else |
1728 | { | 1729 | { |
1729 | prefwin->Markup(1); | 1730 | prefwin->Markup(1); |
1730 | } | 1731 | } |
1731 | prefwin->Depluck(reader->bdepluck); | 1732 | prefwin->Depluck(reader->bdepluck); |
1732 | prefwin->Dejpluck(reader->bdejpluck); | 1733 | prefwin->Dejpluck(reader->bdejpluck); |
1733 | prefwin->Continuous(reader->m_continuousDocument); | 1734 | prefwin->Continuous(reader->m_continuousDocument); |
1734 | 1735 | ||
1735 | prefwin->dictApplication(m_targetapp); | 1736 | prefwin->dictApplication(m_targetapp); |
1736 | prefwin->dictMessage(m_targetmsg); | 1737 | prefwin->dictMessage(m_targetmsg); |
1737 | 1738 | ||
1738 | prefwin->spaceAction(m_spaceTarget); | 1739 | prefwin->spaceAction(m_spaceTarget); |
1739 | prefwin->escapeAction(m_escapeTarget); | 1740 | prefwin->escapeAction(m_escapeTarget); |
1740 | prefwin->returnAction(m_returnTarget); | 1741 | prefwin->returnAction(m_returnTarget); |
1741 | prefwin->leftAction(m_leftTarget); | 1742 | prefwin->leftAction(m_leftTarget); |
1742 | prefwin->rightAction(m_rightTarget); | 1743 | prefwin->rightAction(m_rightTarget); |
1743 | prefwin->upAction(m_upTarget); | 1744 | prefwin->upAction(m_upTarget); |
1744 | prefwin->downAction(m_downTarget); | 1745 | prefwin->downAction(m_downTarget); |
1745 | 1746 | ||
1746 | prefwin->leftScroll(m_leftScroll); | 1747 | prefwin->leftScroll(m_leftScroll); |
1747 | prefwin->rightScroll(m_rightScroll); | 1748 | prefwin->rightScroll(m_rightScroll); |
1748 | prefwin->upScroll(m_upScroll); | 1749 | prefwin->upScroll(m_upScroll); |
1749 | prefwin->downScroll(m_downScroll); | 1750 | prefwin->downScroll(m_downScroll); |
1750 | 1751 | ||
1751 | prefwin->miscannotation(m_doAnnotation); | 1752 | prefwin->miscannotation(m_doAnnotation); |
1752 | prefwin->miscdictionary(m_doDictionary); | 1753 | prefwin->miscdictionary(m_doDictionary); |
1753 | prefwin->miscclipboard(m_doClipboard); | 1754 | prefwin->miscclipboard(m_doClipboard); |
1754 | 1755 | ||
1755 | prefwin->SwapMouse(reader->m_swapmouse); | 1756 | prefwin->SwapMouse(reader->m_swapmouse); |
1756 | 1757 | ||
1757 | prefwin->Font(reader->m_fontname); | 1758 | prefwin->Font(reader->m_fontname); |
1758 | 1759 | ||
1759 | prefwin->gfxsize(reader->getBaseSize()); | 1760 | prefwin->gfxsize(reader->getBaseSize()); |
1760 | 1761 | ||
1761 | prefwin->pageoverlap(reader->m_overlap); | 1762 | prefwin->pageoverlap(reader->m_overlap); |
1762 | 1763 | ||
1763 | prefwin->ideogram(reader->m_bMonoSpaced); | 1764 | prefwin->ideogram(reader->m_bMonoSpaced); |
1764 | 1765 | ||
1765 | prefwin->encoding(reader->m_encd); | 1766 | prefwin->encoding(reader->m_encd); |
1766 | 1767 | ||
1767 | prefwin->ideogramwidth(reader->m_charpc); | 1768 | prefwin->ideogramwidth(reader->m_charpc); |
1768 | 1769 | ||
1769 | if (prefwin->exec()) | 1770 | if (prefwin->exec()) |
1770 | { | 1771 | { |
1771 | m_twoTouch = prefwin->twotouch(); | 1772 | m_twoTouch = prefwin->twotouch(); |
1772 | reader->setTwoTouch(m_twoTouch); | 1773 | reader->setTwoTouch(m_twoTouch); |
1773 | m_touch_action->setOn(m_twoTouch); | 1774 | m_touch_action->setOn(m_twoTouch); |
1774 | 1775 | ||
1775 | reader->bstripcr = prefwin->StripCR(); | 1776 | reader->bstripcr = prefwin->StripCR(); |
1776 | reader->bdehyphen = prefwin->Dehyphen(); | 1777 | reader->bdehyphen = prefwin->Dehyphen(); |
1777 | reader->bonespace = prefwin->SingleSpace(); | 1778 | reader->bonespace = prefwin->SingleSpace(); |
1778 | reader->bunindent = prefwin->Unindent(); | 1779 | reader->bunindent = prefwin->Unindent(); |
1779 | reader->brepara = prefwin->Reparagraph(); | 1780 | reader->brepara = prefwin->Reparagraph(); |
1780 | reader->bdblspce = prefwin->DoubleSpace(); | 1781 | reader->bdblspce = prefwin->DoubleSpace(); |
1781 | reader->bremap = prefwin->Remap(); | 1782 | reader->bremap = prefwin->Remap(); |
1782 | reader->bmakebold = prefwin->Embolden(); | 1783 | reader->bmakebold = prefwin->Embolden(); |
1783 | reader->bfulljust = prefwin->FullJustify(); | 1784 | reader->bfulljust = prefwin->FullJustify(); |
1784 | reader->setextraspace(prefwin->ParaLead()); | 1785 | reader->setextraspace(prefwin->ParaLead()); |
1785 | reader->setlead(prefwin->LineLead()); | 1786 | reader->setlead(prefwin->LineLead()); |
1786 | reader->m_border = prefwin->Margin(); | 1787 | reader->m_border = prefwin->Margin(); |
1787 | reader->bindenter = prefwin->Indent(); | 1788 | reader->bindenter = prefwin->Indent(); |
1788 | reader->bautofmt = reader->btextfmt = reader->bstriphtml = reader->bpeanut = false; | 1789 | reader->bautofmt = reader->btextfmt = reader->bstriphtml = reader->bpeanut = false; |
1789 | switch (prefwin->Markup()) | 1790 | switch (prefwin->Markup()) |
1790 | { | 1791 | { |
1791 | case 0: | 1792 | case 0: |
1792 | reader->bautofmt = true; | 1793 | reader->bautofmt = true; |
1793 | break; | 1794 | break; |
1794 | case 1: | 1795 | case 1: |
1795 | break; | 1796 | break; |
1796 | case 2: | 1797 | case 2: |
1797 | reader->btextfmt = true; | 1798 | reader->btextfmt = true; |
1798 | break; | 1799 | break; |
1799 | case 3: | 1800 | case 3: |
1800 | reader->bstriphtml = true; | 1801 | reader->bstriphtml = true; |
1801 | break; | 1802 | break; |
1802 | case 4: | 1803 | case 4: |
1803 | reader->bpeanut = true; | 1804 | reader->bpeanut = true; |
1804 | break; | 1805 | break; |
1805 | default: | 1806 | default: |
1806 | qDebug("Format out of range"); | 1807 | odebug << "Format out of range" << oendl; |
1807 | } | 1808 | } |
1808 | reader->bdepluck = prefwin->Depluck(); | 1809 | reader->bdepluck = prefwin->Depluck(); |
1809 | reader->bdejpluck = prefwin->Dejpluck(); | 1810 | reader->bdejpluck = prefwin->Dejpluck(); |
1810 | reader->setContinuous(prefwin->Continuous()); | 1811 | reader->setContinuous(prefwin->Continuous()); |
1811 | 1812 | ||
1812 | m_spaceTarget = (ActionTypes)prefwin->spaceAction(); | 1813 | m_spaceTarget = (ActionTypes)prefwin->spaceAction(); |
1813 | m_escapeTarget = (ActionTypes)prefwin->escapeAction(); | 1814 | m_escapeTarget = (ActionTypes)prefwin->escapeAction(); |
1814 | m_returnTarget = (ActionTypes)prefwin->returnAction(); | 1815 | m_returnTarget = (ActionTypes)prefwin->returnAction(); |
1815 | m_leftTarget = (ActionTypes)prefwin->leftAction(); | 1816 | m_leftTarget = (ActionTypes)prefwin->leftAction(); |
1816 | m_rightTarget = (ActionTypes)prefwin->rightAction(); | 1817 | m_rightTarget = (ActionTypes)prefwin->rightAction(); |
1817 | m_upTarget = (ActionTypes)prefwin->upAction(); | 1818 | m_upTarget = (ActionTypes)prefwin->upAction(); |
1818 | m_downTarget = (ActionTypes)prefwin->downAction(); | 1819 | m_downTarget = (ActionTypes)prefwin->downAction(); |
1819 | m_leftScroll = prefwin->leftScroll(); | 1820 | m_leftScroll = prefwin->leftScroll(); |
1820 | m_rightScroll = prefwin->rightScroll(); | 1821 | m_rightScroll = prefwin->rightScroll(); |
1821 | m_upScroll = prefwin->upScroll(); | 1822 | m_upScroll = prefwin->upScroll(); |
1822 | m_downScroll = prefwin->downScroll(); | 1823 | m_downScroll = prefwin->downScroll(); |
1823 | 1824 | ||
1824 | m_targetapp = prefwin->dictApplication(); | 1825 | m_targetapp = prefwin->dictApplication(); |
1825 | m_targetmsg = prefwin->dictMessage(); | 1826 | m_targetmsg = prefwin->dictMessage(); |
1826 | 1827 | ||
1827 | m_doAnnotation = prefwin->miscannotation(); | 1828 | m_doAnnotation = prefwin->miscannotation(); |
1828 | m_doDictionary = prefwin->miscdictionary(); | 1829 | m_doDictionary = prefwin->miscdictionary(); |
1829 | m_doClipboard = prefwin->miscclipboard(); | 1830 | m_doClipboard = prefwin->miscclipboard(); |
1830 | reader->m_swapmouse = prefwin->SwapMouse(); | 1831 | reader->m_swapmouse = prefwin->SwapMouse(); |
1831 | reader->setBaseSize(prefwin->gfxsize()); | 1832 | reader->setBaseSize(prefwin->gfxsize()); |
1832 | reader->m_overlap = prefwin->pageoverlap(); | 1833 | reader->m_overlap = prefwin->pageoverlap(); |
1833 | reader->m_bMonoSpaced = prefwin->ideogram(); | 1834 | reader->m_bMonoSpaced = prefwin->ideogram(); |
1834 | m_setmono_action->setOn(reader->m_bMonoSpaced); | 1835 | m_setmono_action->setOn(reader->m_bMonoSpaced); |
1835 | reader->m_encd = prefwin->encoding(); | 1836 | reader->m_encd = prefwin->encoding(); |
1836 | reader->m_charpc = prefwin->ideogramwidth(); | 1837 | reader->m_charpc = prefwin->ideogramwidth(); |
1837 | 1838 | ||
1838 | if ( | 1839 | if ( |
1839 | reader->m_fontname != prefwin->Font() | 1840 | reader->m_fontname != prefwin->Font() |
1840 | || | 1841 | || |
1841 | m_propogatefontchange != prefwin->propfontchange()) | 1842 | m_propogatefontchange != prefwin->propfontchange()) |
1842 | { | 1843 | { |
1843 | m_propogatefontchange = prefwin->propfontchange(); | 1844 | m_propogatefontchange = prefwin->propfontchange(); |
1844 | setfontHelper(prefwin->Font()); | 1845 | setfontHelper(prefwin->Font()); |
1845 | } | 1846 | } |
1846 | delete prefwin; | 1847 | delete prefwin; |
1847 | reader->setfilter(reader->getfilter()); | 1848 | reader->setfilter(reader->getfilter()); |
1848 | reader->refresh(); | 1849 | reader->refresh(); |
1849 | 1850 | ||
1850 | } | 1851 | } |
1851 | else | 1852 | else |
1852 | { | 1853 | { |
1853 | delete prefwin; | 1854 | delete prefwin; |
1854 | } | 1855 | } |
1855 | } | 1856 | } |
1856 | 1857 | ||
1857 | void QTReaderApp::showtoolbarprefs() | 1858 | void QTReaderApp::showtoolbarprefs() |
1858 | { | 1859 | { |
1859 | #ifdef USEQPE | 1860 | #ifdef USEQPE |
1860 | CBarPrefs* prefwin = new CBarPrefs(APPDIR, !m_bFloatingDialog, this); | 1861 | CBarPrefs* prefwin = new CBarPrefs(APPDIR, !m_bFloatingDialog, this); |
1861 | #else | 1862 | #else |
1862 | QFileInfo fi; | 1863 | QFileInfo fi; |
1863 | QDir d = QDir::home(); // "/" | 1864 | QDir d = QDir::home(); // "/" |
1864 | if ( !d.cd(APPDIR) ) | 1865 | if ( !d.cd(APPDIR) ) |
1865 | { // "/tmp" | 1866 | { // "/tmp" |
1866 | qWarning( "Cannot find the \"~/%s\" directory", APPDIR ); | 1867 | owarn << "Cannot find the \"~/" << APPDIR << "\" directory" << oendl; |
1867 | d = QDir::home(); | 1868 | d = QDir::home(); |
1868 | d.mkdir(APPDIR); | 1869 | d.mkdir(APPDIR); |
1869 | d.cd(APPDIR); | 1870 | d.cd(APPDIR); |
1870 | } | 1871 | } |
1871 | fi.setFile(d, INIFILE); | 1872 | fi.setFile(d, INIFILE); |
1872 | CBarPrefs* prefwin = new CBarPrefs(fi.absFilePath(), !m_bFloatingDialog, this); | 1873 | CBarPrefs* prefwin = new CBarPrefs(fi.absFilePath(), !m_bFloatingDialog, this); |
1873 | #endif | 1874 | #endif |
1874 | prefwin->tbpolicy(m_tbpolsave); | 1875 | prefwin->tbpolicy(m_tbpolsave); |
1875 | prefwin->tbposition(m_tbposition-2); | 1876 | prefwin->tbposition(m_tbposition-2); |
1876 | prefwin->tbmovable(m_tbmovesave); | 1877 | prefwin->tbmovable(m_tbmovesave); |
1877 | prefwin->floating(m_bFloatingDialog); | 1878 | prefwin->floating(m_bFloatingDialog); |
1878 | if (prefwin->exec()) | 1879 | if (prefwin->exec()) |
1879 | { | 1880 | { |
1880 | m_bFloatingDialog = prefwin->floating(); | 1881 | m_bFloatingDialog = prefwin->floating(); |
1881 | if ( | 1882 | if ( |
1882 | m_tbpolsave != (ToolbarPolicy)prefwin->tbpolicy() | 1883 | m_tbpolsave != (ToolbarPolicy)prefwin->tbpolicy() |
1883 | || | 1884 | || |
1884 | m_tbposition != (ToolBarDock)(prefwin->tbposition()+2) | 1885 | m_tbposition != (ToolBarDock)(prefwin->tbposition()+2) |
1885 | || | 1886 | || |
1886 | m_tbmovesave != prefwin->tbmovable() | 1887 | m_tbmovesave != prefwin->tbmovable() |
1887 | ) | 1888 | ) |
1888 | { | 1889 | { |
1889 | 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"); |
1890 | } | 1891 | } |
1891 | m_tbpolsave = (ToolbarPolicy)prefwin->tbpolicy(); | 1892 | m_tbpolsave = (ToolbarPolicy)prefwin->tbpolicy(); |
1892 | m_tbposition = (ToolBarDock)(prefwin->tbposition()+2); | 1893 | m_tbposition = (ToolBarDock)(prefwin->tbposition()+2); |
1893 | m_tbmovesave = prefwin->tbmovable(); | 1894 | m_tbmovesave = prefwin->tbmovable(); |
1894 | bool isChanged = prefwin->isChanged(); | 1895 | bool isChanged = prefwin->isChanged(); |
1895 | delete prefwin; | 1896 | delete prefwin; |
1896 | #ifdef USEQPE | 1897 | #ifdef USEQPE |
1897 | Config config( APPDIR ); | 1898 | Config config( APPDIR ); |
1898 | #else | 1899 | #else |
1899 | QFileInfo fi; | 1900 | QFileInfo fi; |
1900 | QDir d = QDir::home(); // "/" | 1901 | QDir d = QDir::home(); // "/" |
1901 | if ( !d.cd(APPDIR) ) | 1902 | if ( !d.cd(APPDIR) ) |
1902 | { // "/tmp" | 1903 | { // "/tmp" |
1903 | qWarning( "Cannot find the \"~/%s\" directory", APPDIR ); | 1904 | owarn << "Cannot find the \"~/" << APPDIR << "\" directory" << oendl; |
1904 | d = QDir::home(); | 1905 | d = QDir::home(); |
1905 | d.mkdir(APPDIR); | 1906 | d.mkdir(APPDIR); |
1906 | d.cd(APPDIR); | 1907 | d.cd(APPDIR); |
1907 | } | 1908 | } |
1908 | fi.setFile(d, INIFILE); | 1909 | fi.setFile(d, INIFILE); |
1909 | Config config( fi.absFilePath() ); | 1910 | Config config( fi.absFilePath() ); |
1910 | #endif | 1911 | #endif |
1911 | if (isChanged) addtoolbars(&config); | 1912 | if (isChanged) addtoolbars(&config); |
1912 | } | 1913 | } |
1913 | else | 1914 | else |
1914 | { | 1915 | { |
1915 | delete prefwin; | 1916 | delete prefwin; |
1916 | } | 1917 | } |
1917 | } | 1918 | } |
1918 | 1919 | ||
1919 | void QTReaderApp::showinfo() | 1920 | void QTReaderApp::showinfo() |
1920 | { | 1921 | { |
1921 | unsigned long fs, ts, pl; | 1922 | unsigned long fs, ts, pl; |
1922 | if (reader->empty()) | 1923 | if (reader->empty()) |
1923 | { | 1924 | { |
1924 | QMessageBox::information(this, PROGNAME, "No file loaded", 1); | 1925 | QMessageBox::information(this, PROGNAME, "No file loaded", 1); |
1925 | } | 1926 | } |
1926 | else | 1927 | else |
1927 | { | 1928 | { |
1928 | reader->sizes(fs,ts); | 1929 | reader->sizes(fs,ts); |
1929 | pl = reader->pagelocate(); | 1930 | pl = reader->pagelocate(); |
1930 | m_infoWin->setFileSize(fs); | 1931 | m_infoWin->setFileSize(fs); |
1931 | m_infoWin->setTextSize(ts); | 1932 | m_infoWin->setTextSize(ts); |
1932 | m_infoWin->setRatio(100-(100*fs + (ts >> 1))/ts); | 1933 | m_infoWin->setRatio(100-(100*fs + (ts >> 1))/ts); |
1933 | m_infoWin->setLocation(pl); | 1934 | m_infoWin->setLocation(pl); |
1934 | m_infoWin->setRead((100*pl + (ts >> 1))/ts); | 1935 | m_infoWin->setRead((100*pl + (ts >> 1))/ts); |
1935 | editorStack->raiseWidget( m_infoWin ); | 1936 | editorStack->raiseWidget( m_infoWin ); |
1936 | m_infoWin->setFocus(); | 1937 | m_infoWin->setFocus(); |
1937 | } | 1938 | } |
1938 | } | 1939 | } |
1939 | 1940 | ||
1940 | void QTReaderApp::addAnno(const QString& name, const QString& text, size_t posn) | 1941 | void QTReaderApp::addAnno(const QString& name, const QString& text, size_t posn) |
1941 | { | 1942 | { |
1942 | if (pBkmklist == NULL) pBkmklist = new CList<Bkmk>; | 1943 | if (pBkmklist == NULL) pBkmklist = new CList<Bkmk>; |
1943 | #ifdef _UNICODE | 1944 | #ifdef _UNICODE |
1944 | CBuffer buff(name.length()+1); | 1945 | CBuffer buff(name.length()+1); |
1945 | int i; | 1946 | int i; |
1946 | for (i = 0; i < name.length(); i++) | 1947 | for (i = 0; i < name.length(); i++) |
1947 | { | 1948 | { |
1948 | buff[i] = name[i].unicode(); | 1949 | buff[i] = name[i].unicode(); |
1949 | } | 1950 | } |
1950 | buff[i] = 0; | 1951 | buff[i] = 0; |
1951 | CBuffer buff2(text.length()+1); | 1952 | CBuffer buff2(text.length()+1); |
1952 | for (i = 0; i < text.length(); i++) | 1953 | for (i = 0; i < text.length(); i++) |
1953 | { | 1954 | { |
1954 | buff2[i] = text[i].unicode(); | 1955 | buff2[i] = text[i].unicode(); |
1955 | } | 1956 | } |
1956 | buff2[i] = 0; | 1957 | buff2[i] = 0; |
1957 | pBkmklist->push_front(Bkmk(buff.data(), buff2.data(), posn)); | 1958 | pBkmklist->push_front(Bkmk(buff.data(), buff2.data(), posn)); |
1958 | #else | 1959 | #else |
1959 | pBkmklist->push_front(Bkmk((const tchar*)text,posn)); | 1960 | pBkmklist->push_front(Bkmk((const tchar*)text,posn)); |
1960 | #endif | 1961 | #endif |
1961 | m_fBkmksChanged = true; | 1962 | m_fBkmksChanged = true; |
1962 | pBkmklist->sort(); | 1963 | pBkmklist->sort(); |
1963 | } | 1964 | } |
1964 | 1965 | ||
1965 | void QTReaderApp::addAnno(const QString& name, const QString& text) | 1966 | void QTReaderApp::addAnno(const QString& name, const QString& text) |
1966 | { | 1967 | { |
1967 | if (m_annoIsEditing) | 1968 | if (m_annoIsEditing) |
1968 | { | 1969 | { |
1969 | if (name.isEmpty()) | 1970 | if (name.isEmpty()) |
1970 | { | 1971 | { |
1971 | 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); |
1972 | } | 1973 | } |
1973 | else | 1974 | else |
1974 | { | 1975 | { |
1975 | addAnno(name, text, m_annoWin->getPosn()); | 1976 | addAnno(name, text, m_annoWin->getPosn()); |
1976 | } | 1977 | } |
1977 | showEditTools(); | 1978 | showEditTools(); |
1979 | } | ||
1980 | else | ||
1981 | { | ||
1982 | if (m_annoWin->edited()) | ||
1983 | { | ||
1984 | CBuffer buff(text.length()+1); | ||
1985 | int i; | ||
1986 | for (i = 0; i < text.length(); i++) | ||
1987 | { | ||
1988 | buff[i] = text[i].unicode(); | ||
1989 | } | ||
1990 | buff[i] = 0; | ||
1991 | m_fBkmksChanged = true; | ||
1992 | m_anno->setAnno(buff.data()); | ||
1993 | } | ||
1994 | bool found = findNextBookmark(m_anno->value()+1); | ||
1995 | if (found) | ||
1996 | { | ||
1997 | m_annoWin->setName(toQString(m_anno->name())); | ||
1998 | m_annoWin->setAnno(toQString(m_anno->anno())); | ||
1978 | } | 1999 | } |
1979 | else | 2000 | else |
1980 | { | 2001 | { |
1981 | if (m_annoWin->edited()) | 2002 | showEditTools(); |
1982 | { | 2003 | } |
1983 | CBuffer buff(text.length()+1); | ||
1984 | int i; | ||
1985 | for (i = 0; i < text.length(); i++) | ||
1986 | { | ||
1987 | buff[i] = text[i].unicode(); | ||
1988 | } | ||
1989 | buff[i] = 0; | ||
1990 | m_fBkmksChanged = true; | ||
1991 | m_anno->setAnno(buff.data()); | ||
1992 | } | ||
1993 | bool found = findNextBookmark(m_anno->value()+1); | ||
1994 | if (found) | ||
1995 | { | ||
1996 | m_annoWin->setName(toQString(m_anno->name())); | ||
1997 | m_annoWin->setAnno(toQString(m_anno->anno())); | ||
1998 | } | ||
1999 | else | ||
2000 | { | ||
2001 | showEditTools(); | ||
2002 | } | ||
2003 | } | 2004 | } |
2004 | } | 2005 | } |
2005 | 2006 | ||
2006 | bool QTReaderApp::findNextBookmark(size_t start) | 2007 | bool QTReaderApp::findNextBookmark(size_t start) |
2007 | { | 2008 | { |
2008 | bool found = false; | 2009 | bool found = false; |
2009 | for (CList<Bkmk>::iterator iter = pBkmklist->begin(); iter != pBkmklist->end(); iter++) | 2010 | for (CList<Bkmk>::iterator iter = pBkmklist->begin(); iter != pBkmklist->end(); iter++) |
2010 | { | 2011 | { |
2011 | if (iter->value() >= start) | 2012 | if (iter->value() >= start) |
2012 | { | 2013 | { |
2013 | if (iter->value() < reader->locate()) | 2014 | if (iter->value() < reader->locate()) |
2014 | { | 2015 | { |
2015 | found = true; | 2016 | found = true; |
2016 | m_anno = iter.pContent(); | 2017 | m_anno = iter.pContent(); |
2017 | } | 2018 | } |
2018 | break; | 2019 | break; |
2019 | } | 2020 | } |
2020 | } | 2021 | } |
2021 | return found; | 2022 | return found; |
2022 | } | 2023 | } |
2023 | 2024 | ||
2024 | void QTReaderApp::addanno() | 2025 | void QTReaderApp::addanno() |
2025 | { | 2026 | { |
2026 | if (reader->empty()) | 2027 | if (reader->empty()) |
2027 | { | 2028 | { |
2028 | QMessageBox::information(this, PROGNAME, "No file loaded", 1); | 2029 | QMessageBox::information(this, PROGNAME, "No file loaded", 1); |
2029 | } | 2030 | } |
2030 | else | 2031 | else |
2031 | { | 2032 | { |
2032 | m_annoWin->setName(""); | 2033 | m_annoWin->setName(""); |
2033 | m_annoWin->setAnno(""); | 2034 | m_annoWin->setAnno(""); |
2034 | m_annoWin->setPosn(reader->pagelocate()); | 2035 | m_annoWin->setPosn(reader->pagelocate()); |
2035 | m_annoIsEditing = true; | 2036 | m_annoIsEditing = true; |
2036 | editorStack->raiseWidget( m_annoWin ); | 2037 | editorStack->raiseWidget( m_annoWin ); |
2037 | #ifdef USEQPE | 2038 | #ifdef USEQPE |
2038 | Global::showInputMethod(); | 2039 | Global::showInputMethod(); |
2039 | #endif | 2040 | #endif |
2040 | m_annoWin->setFocus(); | 2041 | m_annoWin->setFocus(); |
2041 | } | 2042 | } |
2042 | } | 2043 | } |
2043 | 2044 | ||
2044 | void QTReaderApp::infoClose() | 2045 | void QTReaderApp::infoClose() |
2045 | { | 2046 | { |
2046 | showEditTools(); | 2047 | showEditTools(); |
2047 | } | 2048 | } |
2048 | 2049 | ||
2049 | /* | 2050 | /* |
2050 | void QTReaderApp::fileRevert() | 2051 | void QTReaderApp::fileRevert() |
2051 | { | 2052 | { |
2052 | clear(); | 2053 | clear(); |
2053 | fileOpen(); | 2054 | fileOpen(); |
2054 | } | 2055 | } |
2055 | 2056 | ||
2056 | void QTReaderApp::editCut() | 2057 | void QTReaderApp::editCut() |
2057 | { | 2058 | { |
2058 | #ifndef QT_NO_CLIPBOARD | 2059 | #ifndef QT_NO_CLIPBOARD |
2059 | editor->cut(); | 2060 | editor->cut(); |
2060 | #endif | 2061 | #endif |
2061 | } | 2062 | } |
2062 | */ | 2063 | */ |
2063 | void QTReaderApp::editMark() | 2064 | void QTReaderApp::editMark() |
2064 | { | 2065 | { |
2065 | m_savedpos = reader->pagelocate(); | 2066 | m_savedpos = reader->pagelocate(); |
2066 | } | 2067 | } |
2067 | 2068 | ||
2068 | void QTReaderApp::editCopy() | 2069 | void QTReaderApp::editCopy() |
2069 | { | 2070 | { |
2070 | QClipboard* cb = QApplication::clipboard(); | 2071 | QClipboard* cb = QApplication::clipboard(); |
2071 | QString text; | 2072 | QString text; |
2072 | int ch; | 2073 | int ch; |
2073 | unsigned long currentpos = reader->pagelocate(); | 2074 | unsigned long currentpos = reader->pagelocate(); |
2074 | unsigned long endpos = reader->locate(); | 2075 | unsigned long endpos = reader->locate(); |
2075 | if (m_savedpos == 0xffffffff) | 2076 | if (m_savedpos == 0xffffffff) |
2076 | { | 2077 | { |
2077 | m_savedpos = currentpos; | 2078 | m_savedpos = currentpos; |
2078 | } | 2079 | } |
2079 | reader->jumpto(m_savedpos); | 2080 | reader->jumpto(m_savedpos); |
2080 | while (reader->explocate() < endpos && (ch = reader->getch()) != UEOF) | 2081 | while (reader->explocate() < endpos && (ch = reader->getch()) != UEOF) |
2081 | { | 2082 | { |
2082 | text += ch; | 2083 | text += ch; |
2083 | } | 2084 | } |
2084 | cb->setText(text); | 2085 | cb->setText(text); |
2085 | reader->locate(currentpos); | 2086 | reader->locate(currentpos); |
2086 | m_savedpos = 0xffffffff; | 2087 | m_savedpos = 0xffffffff; |
2087 | } | 2088 | } |
2088 | 2089 | ||
2089 | void QTReaderApp::gotoStart() | 2090 | void QTReaderApp::gotoStart() |
2090 | { | 2091 | { |
2091 | reader->locate(reader->buffdoc.startSection()); | 2092 | reader->locate(reader->buffdoc.startSection()); |
2092 | } | 2093 | } |
2093 | 2094 | ||
2094 | void QTReaderApp::gotoEnd() | 2095 | void QTReaderApp::gotoEnd() |
2095 | { | 2096 | { |
2096 | reader->dopageup(reader->buffdoc.endSection()); | 2097 | reader->dopageup(reader->buffdoc.endSection()); |
2097 | } | 2098 | } |
2098 | 2099 | ||
2099 | void QTReaderApp::pageup() | 2100 | void QTReaderApp::pageup() |
2100 | { | 2101 | { |
2101 | reader->NavUp(); | 2102 | reader->NavUp(); |
2102 | } | 2103 | } |
2103 | 2104 | ||
2104 | void QTReaderApp::pagedn() | 2105 | void QTReaderApp::pagedn() |
2105 | { | 2106 | { |
2106 | reader->NavDown(); | 2107 | reader->NavDown(); |
2107 | } | 2108 | } |
2108 | 2109 | ||
2109 | void QTReaderApp::pagemode(bool _b) | 2110 | void QTReaderApp::pagemode(bool _b) |
2110 | { | 2111 | { |
2111 | reader->setpagemode(_b); | 2112 | reader->setpagemode(_b); |
2112 | } | 2113 | } |
2113 | 2114 | ||
2114 | /* | 2115 | /* |
2115 | void QTReaderApp::setspacing() | 2116 | void QTReaderApp::setspacing() |
2116 | { | 2117 | { |
2117 | m_nRegAction = cMonoSpace; | 2118 | m_nRegAction = cMonoSpace; |
2118 | char lcn[20]; | 2119 | char lcn[20]; |
2119 | sprintf(lcn, "%lu", reader->m_charpc); | 2120 | sprintf(lcn, "%lu", reader->m_charpc); |
2120 | regEdit->setText(lcn); | 2121 | regEdit->setText(lcn); |
2121 | do_regedit(); | 2122 | do_regedit(); |
2122 | } | 2123 | } |
2123 | */ | 2124 | */ |
2124 | void QTReaderApp::settarget() | 2125 | void QTReaderApp::settarget() |
2125 | { | 2126 | { |
2126 | m_nRegAction = cSetTarget; | 2127 | m_nRegAction = cSetTarget; |
2127 | QString text = ((m_targetapp.isEmpty()) ? QString("") : m_targetapp) | 2128 | QString text = ((m_targetapp.isEmpty()) ? QString("") : m_targetapp) |
2128 | + "/" | 2129 | + "/" |
2129 | + ((m_targetmsg.isEmpty()) ? QString("") : m_targetmsg); | 2130 | + ((m_targetmsg.isEmpty()) ? QString("") : m_targetmsg); |
2130 | regEdit->setText(text); | 2131 | regEdit->setText(text); |
2131 | do_regedit(); | 2132 | do_regedit(); |
2132 | } | 2133 | } |
2133 | 2134 | ||
2134 | /* | 2135 | /* |
2135 | void QTReaderApp::do_mono(const QString& lcn) | 2136 | void QTReaderApp::do_mono(const QString& lcn) |
2136 | { | 2137 | { |
2137 | bool ok; | 2138 | bool ok; |
2138 | unsigned long ulcn = lcn.toULong(&ok); | 2139 | unsigned long ulcn = lcn.toULong(&ok); |
2139 | if (ok) | 2140 | if (ok) |
2140 | { | 2141 | { |
2141 | reader->m_charpc = ulcn; | 2142 | reader->m_charpc = ulcn; |
2142 | reader->setfont(); | 2143 | reader->setfont(); |
2143 | reader->refresh(); | 2144 | reader->refresh(); |
2144 | //reader->setmono(true); | 2145 | // reader->setmono(true); |
2145 | } | 2146 | } |
2146 | else | 2147 | else |
2147 | QMessageBox::information(this, PROGNAME, "Must be a number"); | 2148 | QMessageBox::information(this, PROGNAME, "Must be a number"); |
2148 | } | 2149 | } |
2149 | */ | 2150 | */ |
2150 | /* | 2151 | /* |
2151 | void QTReaderApp::editPaste() | 2152 | void QTReaderApp::editPaste() |
2152 | { | 2153 | { |
2153 | #ifndef QT_NO_CLIPBOARD | 2154 | #ifndef QT_NO_CLIPBOARD |
2154 | editor->paste(); | 2155 | editor->paste(); |
2155 | #endif | 2156 | #endif |
2156 | } | 2157 | } |
2157 | */ | 2158 | */ |
2158 | 2159 | ||
2159 | void QTReaderApp::editFind() | 2160 | void QTReaderApp::editFind() |
2160 | { | 2161 | { |
2161 | searchStart = reader->pagelocate(); | 2162 | searchStart = reader->pagelocate(); |
2162 | #ifdef __ISEARCH | 2163 | #ifdef __ISEARCH |
2163 | searchStack = new QStack<searchrecord>; | 2164 | searchStack = new QStack<searchrecord>; |
2164 | #endif | 2165 | #endif |
2165 | #ifdef USEQPE | 2166 | #ifdef USEQPE |
2166 | Global::showInputMethod(); | 2167 | Global::showInputMethod(); |
2167 | #endif | 2168 | #endif |
2168 | searchBar->show(); | 2169 | searchBar->show(); |
2169 | searchVisible = TRUE; | 2170 | searchVisible = TRUE; |
2170 | searchEdit->setFocus(); | 2171 | searchEdit->setFocus(); |
2171 | #ifdef __ISEARCH | 2172 | #ifdef __ISEARCH |
2172 | searchStack->push(new searchrecord("",reader->pagelocate())); | 2173 | searchStack->push(new searchrecord("",reader->pagelocate())); |
2173 | #endif | 2174 | #endif |
2174 | } | 2175 | } |
2175 | 2176 | ||
2176 | void QTReaderApp::findNext() | 2177 | void QTReaderApp::findNext() |
2177 | { | 2178 | { |
2178 | // // qDebug("findNext called\n"); | 2179 | // // odebug << "findNext called\n" << oendl; |
2179 | #ifdef __ISEARCH | 2180 | #ifdef __ISEARCH |
2180 | QString arg = searchEdit->text(); | 2181 | QString arg = searchEdit->text(); |
2181 | #else | 2182 | #else |
2182 | QRegExp arg = searchEdit->text(); | 2183 | QRegExp arg = searchEdit->text(); |
2183 | #endif | 2184 | #endif |
2184 | CDrawBuffer test(&(reader->m_fontControl)); | 2185 | CDrawBuffer test(&(reader->m_fontControl)); |
2185 | size_t start = reader->pagelocate(); | 2186 | size_t start = reader->pagelocate(); |
2186 | reader->jumpto(start); | 2187 | reader->jumpto(start); |
2187 | reader->getline(&test); | 2188 | reader->getline(&test); |
2188 | dosearch(start, test, arg); | 2189 | dosearch(start, test, arg); |
2189 | } | 2190 | } |
2190 | 2191 | ||
2191 | void QTReaderApp::findClose() | 2192 | void QTReaderApp::findClose() |
2192 | { | 2193 | { |
2193 | searchVisible = FALSE; | 2194 | searchVisible = FALSE; |
2194 | searchEdit->setText(""); | 2195 | searchEdit->setText(""); |
2195 | #ifdef USEQPE | 2196 | #ifdef USEQPE |
2196 | Global::hideInputMethod(); | 2197 | Global::hideInputMethod(); |
2197 | #endif | 2198 | #endif |
2198 | searchBar->hide(); | 2199 | searchBar->hide(); |
2199 | #ifdef __ISEARCH | 2200 | #ifdef __ISEARCH |
2200 | // searchStack = new QStack<searchrecord>; | 2201 | // searchStack = new QStack<searchrecord>; |
2201 | while (!searchStack->isEmpty()) | 2202 | while (!searchStack->isEmpty()) |
2202 | { | 2203 | { |
2203 | delete searchStack->pop(); | 2204 | delete searchStack->pop(); |
2204 | } | 2205 | } |
2205 | delete searchStack; | 2206 | delete searchStack; |
2206 | #endif | 2207 | #endif |
2207 | reader->setFocus(); | 2208 | reader->setFocus(); |
2208 | } | 2209 | } |
2209 | 2210 | ||
2210 | void QTReaderApp::regClose() | 2211 | void QTReaderApp::regClose() |
2211 | { | 2212 | { |
2212 | regVisible = FALSE; | 2213 | regVisible = FALSE; |
2213 | regEdit->setText(""); | 2214 | regEdit->setText(""); |
2214 | regBar->hide(); | 2215 | regBar->hide(); |
2215 | #ifdef USEQPE | 2216 | #ifdef USEQPE |
2216 | Global::hideInputMethod(); | 2217 | Global::hideInputMethod(); |
2217 | #endif | 2218 | #endif |
2218 | reader->setFocus(); | 2219 | reader->setFocus(); |
2219 | } | 2220 | } |
2220 | 2221 | ||
2221 | #ifdef __ISEARCH | 2222 | #ifdef __ISEARCH |
2222 | bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QString& arg) | 2223 | bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QString& arg) |
2223 | #else | 2224 | #else |
2224 | bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg) | 2225 | bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg) |
2225 | #endif | 2226 | #endif |
2226 | { | 2227 | { |
2227 | bool ret = true; | 2228 | bool ret = true; |
2228 | unsigned long fs, ts; | 2229 | unsigned long fs, ts; |
2229 | reader->sizes(fs,ts); | 2230 | reader->sizes(fs,ts); |
2230 | size_t pos = reader->locate(); | 2231 | size_t pos = reader->locate(); |
2231 | pbar->setGeometry(searchBar->x(),searchBar->y(),searchBar->width(), searchBar->height()); | 2232 | pbar->setGeometry(searchBar->x(),searchBar->y(),searchBar->width(), searchBar->height()); |
2232 | pbar->show(); | 2233 | pbar->show(); |
2233 | pbar->raise(); | 2234 | pbar->raise(); |
2234 | pbar->reset(); | 2235 | pbar->reset(); |
2235 | int offset; | 2236 | int offset; |
2236 | int lastpc = (100*pos)/ts; | 2237 | int lastpc = (100*pos)/ts; |
2237 | pbar->setProgress(lastpc); | 2238 | pbar->setProgress(lastpc); |
2238 | // qApp->processEvents(); | 2239 | // qApp->processEvents(); |
2239 | if (reader->buffdoc.getpara(test) >= 0) | 2240 | if (reader->buffdoc.getpara(test) >= 0) |
2240 | { | 2241 | { |
2241 | reader->setFocus(); | 2242 | reader->setFocus(); |
2242 | #ifdef __ISEARCH | 2243 | #ifdef __ISEARCH |
2243 | while (strstr(test.data(),(const tchar*)arg) == NULL) | 2244 | while (strstr(test.data(),(const tchar*)arg) == NULL) |
2244 | #else | 2245 | #else |
2245 | #ifdef _UNICODE | 2246 | #ifdef _UNICODE |
2246 | while ((offset = arg.match(toQString(test.data()))) == -1) | 2247 | while ((offset = arg.match(toQString(test.data()))) == -1) |
2247 | #else | 2248 | #else |
2248 | while (arg.match(test.data()) == -1) | 2249 | while (arg.match(test.data()) == -1) |
2249 | #endif | 2250 | #endif |
2250 | #endif | 2251 | #endif |
2251 | { | 2252 | { |
2252 | pos = reader->locate(); | 2253 | pos = reader->locate(); |
2253 | int pc = (100*pos)/ts; | 2254 | int pc = (100*pos)/ts; |
2254 | if (pc != lastpc) | 2255 | if (pc != lastpc) |
2255 | { | 2256 | { |
2256 | pbar->setProgress(pc); | 2257 | pbar->setProgress(pc); |
2257 | qApp->processEvents(); | 2258 | qApp->processEvents(); |
2258 | reader->setFocus(); | 2259 | reader->setFocus(); |
2259 | lastpc = pc; | 2260 | lastpc = pc; |
2260 | } | ||
2261 | |||
2262 | if (reader->buffdoc.getpara(test) < 0) | ||
2263 | { | ||
2264 | if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2) | ||
2265 | pos = searchStart; | ||
2266 | else | ||
2267 | pos = start; | ||
2268 | findClose(); | ||
2269 | pbar->hide(); | ||
2270 | reader->locate(pos); | ||
2271 | return false; | ||
2272 | } | ||
2273 | } | 2261 | } |
2274 | // qDebug("Found it at %u:%u", pos, offset); | 2262 | |
2263 | if (reader->buffdoc.getpara(test) < 0) | ||
2264 | { | ||
2265 | if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2) | ||
2266 | pos = searchStart; | ||
2267 | else | ||
2268 | pos = start; | ||
2269 | findClose(); | ||
2270 | pbar->hide(); | ||
2271 | reader->locate(pos); | ||
2272 | return false; | ||
2273 | } | ||
2274 | } | ||
2275 | // odebug << "Found it at " << pos << ":" << offset << "" << oendl; | ||
2275 | pbar->hide(); | 2276 | pbar->hide(); |
2276 | // qDebug("Hid"); | 2277 | // odebug << "Hid" << oendl; |
2277 | reader->locate(pos+offset); | 2278 | reader->locate(pos+offset); |
2278 | // qDebug("Loacted"); | 2279 | // odebug << "Loacted" << oendl; |
2279 | // qDebug("page up"); | 2280 | // odebug << "page up" << oendl; |
2280 | ret = true; | 2281 | ret = true; |
2281 | } | 2282 | } |
2282 | else | 2283 | else |
2283 | { | 2284 | { |
2284 | 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) |
2285 | pos = searchStart; | 2286 | pos = searchStart; |
2286 | else | 2287 | else |
2287 | pos = start; | 2288 | pos = start; |
2288 | ret = false; | 2289 | ret = false; |
2289 | findClose(); | 2290 | findClose(); |
2290 | } | 2291 | } |
2291 | return ret; | 2292 | return ret; |
2292 | } | 2293 | } |
2293 | 2294 | ||
2294 | #ifdef __ISEARCH | 2295 | #ifdef __ISEARCH |
2295 | void QTReaderApp::search(const QString & arg) | 2296 | void QTReaderApp::search(const QString & arg) |
2296 | { | 2297 | { |
2297 | searchrecord* ss = searchStack->top(); | 2298 | searchrecord* ss = searchStack->top(); |
2298 | CBuffer test; | 2299 | CBuffer test; |
2299 | size_t start = reader->pagelocate(); | 2300 | size_t start = reader->pagelocate(); |
2300 | bool haspopped = false; | 2301 | bool haspopped = false; |
2301 | while (arg.left(ss->s.length()) != ss->s) | 2302 | while (arg.left(ss->s.length()) != ss->s) |
2302 | { | 2303 | { |
2303 | haspopped = true; | 2304 | haspopped = true; |
2304 | start = ss->pos; | 2305 | start = ss->pos; |
2305 | // reader->locate(start); | 2306 | // reader->locate(start); |
2306 | searchStack->pop(); | 2307 | searchStack->pop(); |
2307 | delete ss; | 2308 | delete ss; |
2308 | } | 2309 | } |
2309 | if (haspopped) reader->locate(start); | 2310 | if (haspopped) reader->locate(start); |
2310 | /* | 2311 | /* |
2311 | if (arg.length() < ss->len) | 2312 | if (arg.length() < ss->len) |
2312 | { | 2313 | { |
2313 | start = ss->pos; | 2314 | start = ss->pos; |
2314 | reader->locate(start); | 2315 | reader->locate(start); |
2315 | searchStack->pop(); | 2316 | searchStack->pop(); |
2316 | delete ss; | 2317 | delete ss; |
2317 | } | 2318 | } |
2318 | */ | 2319 | */ |
2319 | else | 2320 | else |
2320 | { | 2321 | { |
2321 | start = reader->pagelocate(); | 2322 | start = reader->pagelocate(); |
2322 | reader->jumpto(start); | 2323 | reader->jumpto(start); |
2323 | searchStack->push(new searchrecord(arg,start)); | 2324 | searchStack->push(new searchrecord(arg,start)); |
2324 | } | 2325 | } |
2325 | dosearch(start, test, arg); | 2326 | dosearch(start, test, arg); |
2326 | } | 2327 | } |
2327 | #else | 2328 | #else |
2328 | void QTReaderApp::search() | 2329 | void QTReaderApp::search() |
2329 | { | 2330 | { |
2330 | findNext(); | 2331 | findNext(); |
2331 | } | 2332 | } |
2332 | #endif | 2333 | #endif |
2333 | 2334 | ||
2334 | void QTReaderApp::openFile( const QString &f ) | 2335 | void QTReaderApp::openFile( const QString &f ) |
2335 | { | 2336 | { |
2336 | // qDebug("File:%s", (const char*)f); | 2337 | // odebug << "File:" << f << "" << oendl; |
2337 | // openFile(DocLnk(f)); | 2338 | // openFile(DocLnk(f)); |
2338 | //} | 2339 | //} |
2339 | // | 2340 | // |
2340 | //void QTReaderApp::openFile( const DocLnk &f ) | 2341 | //void QTReaderApp::openFile( const DocLnk &f ) |
2341 | //{ | 2342 | //{ |
2342 | clear(); | 2343 | clear(); |
2343 | QFileInfo fm(f); | 2344 | QFileInfo fm(f); |
2344 | if ( fm.exists() ) | 2345 | if ( fm.exists() ) |
2345 | { | 2346 | { |
2346 | // QMessageBox::information(0, "Progress", "Calling fileNew()"); | 2347 | // QMessageBox::information(0, "Progress", "Calling fileNew()"); |
2347 | #ifdef USEQPE | 2348 | #ifdef USEQPE |
2348 | if (fm.extension( FALSE ) == "desktop") | 2349 | if (fm.extension( FALSE ) == "desktop") |
2349 | { | 2350 | { |
2350 | DocLnk d(f); | 2351 | DocLnk d(f); |
2351 | QFileInfo fnew(d.file()); | 2352 | QFileInfo fnew(d.file()); |
2352 | fm = fnew; | 2353 | fm = fnew; |
2353 | if (!fm.exists()) return; | 2354 | if (!fm.exists()) return; |
2354 | } | 2355 | } |
2355 | #endif | 2356 | #endif |
2356 | clear(); | 2357 | clear(); |
2357 | 2358 | ||
2358 | reader->setText(fm.baseName(), fm.absFilePath()); | 2359 | reader->setText(fm.baseName(), fm.absFilePath()); |
2359 | m_loadedconfig = readconfig(reader->m_string, false); | 2360 | m_loadedconfig = readconfig(reader->m_string, false); |
2360 | showEditTools(); | 2361 | showEditTools(); |
2361 | readbkmks(); | 2362 | readbkmks(); |
2362 | m_savedpos = 0xffffffff; | 2363 | m_savedpos = 0xffffffff; |
2363 | } | 2364 | } |
2364 | else | 2365 | else |
2365 | { | 2366 | { |
2366 | QMessageBox::information(this, PROGNAME, "File does not exist"); | 2367 | QMessageBox::information(this, PROGNAME, "File does not exist"); |
2367 | reader->m_lastfile = QString::null; | 2368 | reader->m_lastfile = QString::null; |
2368 | } | 2369 | } |
2369 | 2370 | ||
2370 | } | 2371 | } |
2371 | /* | 2372 | /* |
2372 | void QTReaderApp::resizeEvent(QResizeEvent* e) | 2373 | void QTReaderApp::resizeEvent(QResizeEvent* e) |
2373 | { | 2374 | { |
2374 | if (m_fullscreen) | 2375 | if (m_fullscreen) |
2375 | { | 2376 | { |
2376 | showNormal(); | 2377 | showNormal(); |
2377 | showFullScreen(); | 2378 | showFullScreen(); |
2378 | } | 2379 | } |
2379 | } | 2380 | } |
2380 | */ | 2381 | */ |
2381 | void QTReaderApp::handlekey(QKeyEvent* e) | 2382 | void QTReaderApp::handlekey(QKeyEvent* e) |
2382 | { | 2383 | { |
2383 | // qDebug("Keypress event"); | 2384 | // odebug << "Keypress event" << oendl; |
2384 | timeb now; | 2385 | timeb now; |
2385 | ftime(&now); | 2386 | ftime(&now); |
2386 | 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; |
2387 | if (etime < m_debounce) | 2388 | if (etime < m_debounce) |
2388 | { | 2389 | { |
2389 | return; | 2390 | return; |
2390 | } | 2391 | } |
2391 | m_lastkeytime = now; | 2392 | m_lastkeytime = now; |
2392 | switch(e->key()) | 2393 | switch(e->key()) |
2393 | { | 2394 | { |
2394 | case Key_Escape: | 2395 | case Key_Escape: |
2395 | // qDebug("escape event"); | 2396 | // odebug << "escape event" << oendl; |
2396 | if (m_disableesckey) | 2397 | if (m_disableesckey) |
2397 | { | 2398 | { |
2398 | m_disableesckey = false; | 2399 | m_disableesckey = false; |
2399 | } | 2400 | } |
2400 | else | 2401 | else |
2401 | { | 2402 | { |
2402 | m_bcloseDisabled = true; | 2403 | m_bcloseDisabled = true; |
2403 | if (m_fullscreen) | 2404 | if (m_fullscreen) |
2404 | { | 2405 | { |
2405 | m_actFullscreen->setOn(false); | 2406 | m_actFullscreen->setOn(false); |
2406 | e->accept(); | 2407 | e->accept(); |
2407 | } | 2408 | } |
2408 | else | 2409 | else |
2409 | { | 2410 | { |
2410 | // qDebug("escape action"); | 2411 | // odebug << "escape action" << oendl; |
2411 | doAction(m_escapeTarget, e); | 2412 | doAction(m_escapeTarget, e); |
2412 | } | 2413 | } |
2413 | } | 2414 | } |
2414 | break; | 2415 | break; |
2415 | case Key_Space: | 2416 | case Key_Space: |
2416 | { | 2417 | { |
2417 | doAction(m_spaceTarget, e); | 2418 | doAction(m_spaceTarget, e); |
2418 | } | 2419 | } |
2419 | break; | 2420 | break; |
2420 | case Key_Return: | 2421 | case Key_Return: |
2421 | { | 2422 | { |
2422 | doAction(m_returnTarget, e); | 2423 | doAction(m_returnTarget, e); |
2423 | } | 2424 | } |
2424 | break; | 2425 | break; |
2425 | case Key_Left: | 2426 | case Key_Left: |
2426 | { | 2427 | { |
2427 | if (reader->m_autoScroll && m_leftScroll) | 2428 | if (reader->m_autoScroll && m_leftScroll) |
2428 | { | 2429 | { |
2429 | reader->reduceScroll(); | 2430 | reader->reduceScroll(); |
2430 | } | 2431 | } |
2431 | else | 2432 | else |
2432 | { | 2433 | { |
2433 | doAction(m_leftTarget, e); | 2434 | doAction(m_leftTarget, e); |
2434 | } | 2435 | } |
2435 | } | 2436 | } |
2436 | break; | 2437 | break; |
2437 | case Key_Right: | 2438 | case Key_Right: |
2438 | { | 2439 | { |
2439 | if (reader->m_autoScroll && m_rightScroll) | 2440 | if (reader->m_autoScroll && m_rightScroll) |
2440 | { | 2441 | { |
2441 | reader->increaseScroll(); | 2442 | reader->increaseScroll(); |
2442 | } | 2443 | } |
2443 | else | 2444 | else |
2444 | { | 2445 | { |
2445 | doAction(m_rightTarget, e); | 2446 | doAction(m_rightTarget, e); |
2446 | } | 2447 | } |
2447 | } | 2448 | } |
2448 | break; | 2449 | break; |
2449 | case Key_Up: | 2450 | case Key_Up: |
2450 | { | 2451 | { |
2451 | if (reader->m_autoScroll && m_upScroll) | 2452 | if (reader->m_autoScroll && m_upScroll) |
2452 | { | 2453 | { |
2453 | reader->increaseScroll(); | 2454 | reader->increaseScroll(); |
2454 | } | 2455 | } |
2455 | else | 2456 | else |
2456 | { | 2457 | { |
2457 | doAction(m_upTarget, e); | 2458 | doAction(m_upTarget, e); |
2458 | } | 2459 | } |
2459 | } | 2460 | } |
2460 | break; | 2461 | break; |
2461 | case Key_Down: | 2462 | case Key_Down: |
2462 | { | 2463 | { |
2463 | if (reader->m_autoScroll && m_downScroll) | 2464 | if (reader->m_autoScroll && m_downScroll) |
2464 | { | 2465 | { |
2465 | reader->reduceScroll(); | 2466 | reader->reduceScroll(); |
2466 | } | 2467 | } |
2467 | else | 2468 | else |
2468 | { | 2469 | { |
2469 | doAction(m_downTarget, e); | 2470 | doAction(m_downTarget, e); |
2470 | } | 2471 | } |
2471 | } | 2472 | } |
2472 | break; | 2473 | break; |
2473 | default: | 2474 | default: |
2474 | { | 2475 | { |
2475 | e->ignore(); | 2476 | e->ignore(); |
2476 | } | 2477 | } |
2477 | 2478 | ||
2478 | /* | 2479 | /* |
2479 | QString msg("Key press was:"); | 2480 | QString msg("Key press was:"); |
2480 | QString key; | 2481 | QString key; |
2481 | msg += key.setNum(e->key()); | 2482 | msg += key.setNum(e->key()); |
2482 | QMessageBox::information(this, PROGNAME, msg); | 2483 | QMessageBox::information(this, PROGNAME, msg); |
2483 | */ | 2484 | */ |
2484 | } | 2485 | } |
2485 | } | 2486 | } |
2486 | 2487 | ||
2487 | void QTReaderApp::showEditTools() | 2488 | void QTReaderApp::showEditTools() |
2488 | { | 2489 | { |
2489 | // if ( !doc ) | 2490 | // if ( !doc ) |
2490 | //close(); | 2491 | // close(); |
2491 | if (m_fullscreen) | 2492 | if (m_fullscreen) |
2492 | { | 2493 | { |
2493 | if (menubar != NULL) menubar->hide(); | 2494 | if (menubar != NULL) menubar->hide(); |
2494 | if (fileBar != NULL) fileBar->hide(); | 2495 | if (fileBar != NULL) fileBar->hide(); |
2495 | if (viewBar != NULL) viewBar->hide(); | 2496 | if (viewBar != NULL) viewBar->hide(); |
2496 | if (navBar != NULL) navBar->hide(); | 2497 | if (navBar != NULL) navBar->hide(); |
2497 | if (markBar != NULL) markBar->hide(); | 2498 | if (markBar != NULL) markBar->hide(); |
2498 | searchBar->hide(); | 2499 | searchBar->hide(); |
2499 | regBar->hide(); | 2500 | regBar->hide(); |
2500 | #ifdef USEQPE | 2501 | #ifdef USEQPE |
2501 | Global::hideInputMethod(); | 2502 | Global::hideInputMethod(); |
2502 | #endif | 2503 | #endif |
2503 | m_fontBar->hide(); | 2504 | m_fontBar->hide(); |
2504 | //showNormal(); | 2505 | // showNormal(); |
2505 | showFullScreen(); | 2506 | showFullScreen(); |
2506 | } | 2507 | } |
2507 | else | 2508 | else |
2508 | { | 2509 | { |
2509 | //qDebug("him"); | 2510 | // odebug << "him" << oendl; |
2510 | #ifdef USEQPE | 2511 | #ifdef USEQPE |
2511 | Global::hideInputMethod(); | 2512 | Global::hideInputMethod(); |
2512 | #endif | 2513 | #endif |
2513 | //qDebug("eb"); | 2514 | // odebug << "eb" << oendl; |
2514 | menubar->show(); | 2515 | menubar->show(); |
2515 | if (fileBar != NULL) fileBar->show(); | 2516 | if (fileBar != NULL) fileBar->show(); |
2516 | if (viewBar != NULL) viewBar->show(); | 2517 | if (viewBar != NULL) viewBar->show(); |
2517 | if (navBar != NULL) navBar->show(); | 2518 | if (navBar != NULL) navBar->show(); |
2518 | if (markBar != NULL) markBar->show(); | 2519 | if (markBar != NULL) markBar->show(); |
2519 | mb->show(); | 2520 | mb->show(); |
2520 | if ( searchVisible ) | 2521 | if ( searchVisible ) |
2521 | { | 2522 | { |
2522 | #ifdef USEQPE | 2523 | #ifdef USEQPE |
2523 | Global::showInputMethod(); | 2524 | Global::showInputMethod(); |
2524 | #endif | 2525 | #endif |
2525 | searchBar->show(); | 2526 | searchBar->show(); |
2526 | } | 2527 | } |
2527 | if ( regVisible ) | 2528 | if ( regVisible ) |
2528 | { | 2529 | { |
2529 | #ifdef USEQPE | 2530 | #ifdef USEQPE |
2530 | Global::showInputMethod(); | 2531 | Global::showInputMethod(); |
2531 | #endif | 2532 | #endif |
2532 | regBar->show(); | 2533 | regBar->show(); |
2533 | } | 2534 | } |
2534 | if (m_fontVisible) m_fontBar->show(); | 2535 | if (m_fontVisible) m_fontBar->show(); |
2535 | //qDebug("sn"); | 2536 | // odebug << "sn" << oendl; |
2536 | showNormal(); | 2537 | showNormal(); |
2537 | //qDebug("sm"); | 2538 | // odebug << "sm" << oendl; |
2538 | #ifdef USEQPE | 2539 | #ifdef USEQPE |
2539 | showMaximized(); | 2540 | showMaximized(); |
2540 | #endif | 2541 | #endif |
2541 | //setCentralWidget(reader); | 2542 | // setCentralWidget(reader); |
2542 | } | 2543 | } |
2543 | 2544 | ||
2544 | // qDebug("uc"); | 2545 | // odebug << "uc" << oendl; |
2545 | updateCaption(); | 2546 | updateCaption(); |
2546 | // qDebug("rw"); | 2547 | // odebug << "rw" << oendl; |
2547 | editorStack->raiseWidget( reader ); | 2548 | editorStack->raiseWidget( reader ); |
2548 | // qDebug("sf"); | 2549 | // odebug << "sf" << oendl; |
2549 | reader->setFocus(); | 2550 | reader->setFocus(); |
2550 | reader->refresh(); | 2551 | reader->refresh(); |
2551 | } | 2552 | } |
2552 | /* | 2553 | /* |
2553 | void QTReaderApp::save() | 2554 | void QTReaderApp::save() |
2554 | { | 2555 | { |
2555 | if ( !doc ) | 2556 | if ( !doc ) |
2556 | return; | 2557 | return; |
2557 | if ( !editor->edited() ) | 2558 | if ( !editor->edited() ) |
2558 | return; | 2559 | return; |
2559 | 2560 | ||
2560 | QString rt = editor->text(); | 2561 | QString rt = editor->text(); |
2561 | QString pt = rt; | 2562 | QString pt = rt; |
2562 | 2563 | ||
2563 | if ( doc->name().isEmpty() ) { | 2564 | if ( doc->name().isEmpty() ) { |
2564 | unsigned ispace = pt.find( ' ' ); | 2565 | unsigned ispace = pt.find( ' ' ); |
2565 | unsigned ienter = pt.find( '\n' ); | 2566 | unsigned ienter = pt.find( '\n' ); |
2566 | int i = (ispace < ienter) ? ispace : ienter; | 2567 | int i = (ispace < ienter) ? ispace : ienter; |
2567 | QString docname; | 2568 | QString docname; |
2568 | if ( i == -1 ) { | 2569 | if ( i == -1 ) { |
2569 | if ( pt.isEmpty() ) | 2570 | if ( pt.isEmpty() ) |
2570 | docname = "Empty Text"; | 2571 | docname = "Empty Text"; |
2571 | else | 2572 | else |
2572 | docname = pt; | 2573 | docname = pt; |
2573 | } else { | 2574 | } else { |
2574 | docname = pt.left( i ); | 2575 | docname = pt.left( i ); |
2575 | } | 2576 | } |
2576 | doc->setName(docname); | 2577 | doc->setName(docname); |
2577 | } | 2578 | } |
2578 | FileManager fm; | 2579 | FileManager fm; |
2579 | fm.saveFile( *doc, rt ); | 2580 | fm.saveFile( *doc, rt ); |
2580 | } | 2581 | } |
2581 | */ | 2582 | */ |
2582 | 2583 | ||
2583 | void QTReaderApp::clear() | 2584 | void QTReaderApp::clear() |
2584 | { | 2585 | { |
2585 | // if (doc != 0) | 2586 | // if (doc != 0) |
2586 | // { | 2587 | // { |
2587 | // QMessageBox::information(this, PROGNAME, "Deleting doc", 1); | 2588 | // QMessageBox::information(this, PROGNAME, "Deleting doc", 1); |
2588 | //delete doc; | 2589 | // delete doc; |
2589 | // QMessageBox::information(this, PROGNAME, "Deleted doc", 1); | 2590 | // QMessageBox::information(this, PROGNAME, "Deleted doc", 1); |
2590 | //doc = 0; | 2591 | // doc = 0; |
2591 | // } | 2592 | // } |
2592 | reader->clear(); | 2593 | reader->clear(); |
2593 | } | 2594 | } |
2594 | 2595 | ||
2595 | void QTReaderApp::updateCaption() | 2596 | void QTReaderApp::updateCaption() |
2596 | { | 2597 | { |
2597 | // if ( !doc ) | 2598 | // if ( !doc ) |
2598 | //setCaption( tr("QTReader") ); | 2599 | // setCaption( tr("QTReader") ); |
2599 | // else { | 2600 | // else { |
2600 | //QString s = doc->name(); | 2601 | // QString s = doc->name(); |
2601 | //if ( s.isEmpty() ) | 2602 | // if ( s.isEmpty() ) |
2602 | // s = tr( "Unnamed" ); | 2603 | // s = tr( "Unnamed" ); |
2603 | setCaption( reader->m_string + " - " + tr("Reader") ); | 2604 | setCaption( reader->m_string + " - " + tr("Reader") ); |
2604 | // } | 2605 | // } |
2605 | } | 2606 | } |
2606 | 2607 | ||
2607 | void QTReaderApp::setDocument(const QString& fileref) | 2608 | void QTReaderApp::setDocument(const QString& fileref) |
2608 | { | 2609 | { |
2609 | bFromDocView = TRUE; | 2610 | bFromDocView = TRUE; |
2610 | //QMessageBox::information(0, "setDocument", fileref); | 2611 | //QMessageBox::information(0, "setDocument", fileref); |
2611 | openFile(fileref); | 2612 | openFile(fileref); |
2612 | // showEditTools(); | 2613 | // showEditTools(); |
2613 | } | 2614 | } |
2614 | 2615 | ||
2615 | void QTReaderApp::closeEvent( QCloseEvent *e ) | 2616 | void QTReaderApp::closeEvent( QCloseEvent *e ) |
2616 | { | 2617 | { |
2617 | // qDebug("Close event"); | 2618 | // odebug << "Close event" << oendl; |
2618 | if (m_fullscreen) | 2619 | if (m_fullscreen) |
2619 | { | 2620 | { |
2620 | m_fullscreen = false; | 2621 | m_fullscreen = false; |
2621 | showEditTools(); | 2622 | showEditTools(); |
2622 | e->accept(); | 2623 | e->accept(); |
2623 | } | 2624 | } |
2624 | else if (m_dontSave) | 2625 | else if (m_dontSave) |
2625 | { | 2626 | { |
2626 | e->accept(); | 2627 | e->accept(); |
2627 | } | 2628 | } |
2628 | else | 2629 | else |
2629 | { | 2630 | { |
2630 | if (editorStack->visibleWidget() == reader) | 2631 | if (editorStack->visibleWidget() == reader) |
2631 | { | 2632 | { |
2632 | if ((m_escapeTarget != cesNone) && m_bcloseDisabled) | 2633 | if ((m_escapeTarget != cesNone) && m_bcloseDisabled) |
2633 | { | 2634 | { |
2634 | //qDebug("Close disabled"); | 2635 | // odebug << "Close disabled" << oendl; |
2635 | m_bcloseDisabled = false; | 2636 | m_bcloseDisabled = false; |
2636 | e->ignore(); | 2637 | e->ignore(); |
2637 | } | 2638 | } |
2638 | else | 2639 | else |
2639 | { | 2640 | { |
2640 | if (m_fontVisible) | 2641 | if (m_fontVisible) |
2641 | { | 2642 | { |
2642 | m_fontBar->hide(); | 2643 | m_fontBar->hide(); |
2643 | m_fontVisible = false; | 2644 | m_fontVisible = false; |
2644 | } | 2645 | } |
2645 | if (regVisible) | 2646 | if (regVisible) |
2646 | { | 2647 | { |
2647 | regBar->hide(); | 2648 | regBar->hide(); |
2648 | #ifdef USEQPE | 2649 | #ifdef USEQPE |
2649 | Global::hideInputMethod(); | 2650 | Global::hideInputMethod(); |
2650 | #endif | 2651 | #endif |
2651 | regVisible = false; | 2652 | regVisible = false; |
2652 | return; | 2653 | return; |
2653 | } | 2654 | } |
2654 | if (searchVisible) | 2655 | if (searchVisible) |
2655 | { | 2656 | { |
2656 | searchBar->hide(); | 2657 | searchBar->hide(); |
2657 | #ifdef USEQPE | 2658 | #ifdef USEQPE |
2658 | Global::hideInputMethod(); | 2659 | Global::hideInputMethod(); |
2659 | #endif | 2660 | #endif |
2660 | searchVisible = false; | 2661 | searchVisible = false; |
2661 | return; | 2662 | return; |
2662 | } | 2663 | } |
2663 | if (m_fBkmksChanged && pBkmklist != NULL) | 2664 | if (m_fBkmksChanged && pBkmklist != NULL) |
2664 | { | 2665 | { |
2665 | 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) |
2666 | savebkmks(); | 2667 | savebkmks(); |
2667 | delete pBkmklist; | 2668 | delete pBkmklist; |
2668 | pBkmklist = NULL; | 2669 | pBkmklist = NULL; |
2669 | m_fBkmksChanged = false; | 2670 | m_fBkmksChanged = false; |
2670 | } | 2671 | } |
2671 | bFromDocView = FALSE; | 2672 | bFromDocView = FALSE; |
2672 | updatefileinfo(); | 2673 | updatefileinfo(); |
2673 | saveprefs(); | 2674 | saveprefs(); |
2674 | e->accept(); | 2675 | e->accept(); |
2675 | } | 2676 | } |
2676 | } | 2677 | } |
2677 | else | 2678 | else |
2678 | { | 2679 | { |
2679 | showEditTools(); | 2680 | showEditTools(); |
2680 | m_disableesckey = true; | 2681 | m_disableesckey = true; |
2681 | } | 2682 | } |
2682 | } | 2683 | } |
2683 | } | 2684 | } |
2684 | 2685 | ||
2685 | void QTReaderApp::do_gotomark() | 2686 | void QTReaderApp::do_gotomark() |
2686 | { | 2687 | { |
2687 | m_nBkmkAction = cGotoBkmk; | 2688 | m_nBkmkAction = cGotoBkmk; |
2688 | if (!listbkmk(pBkmklist)) | 2689 | if (!listbkmk(pBkmklist)) |
2689 | QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); | 2690 | QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); |
2690 | } | 2691 | } |
2691 | 2692 | ||
2692 | void QTReaderApp::do_delmark() | 2693 | void QTReaderApp::do_delmark() |
2693 | { | 2694 | { |
2694 | m_nBkmkAction = cDelBkmk; | 2695 | m_nBkmkAction = cDelBkmk; |
2695 | if (!listbkmk(pBkmklist)) | 2696 | if (!listbkmk(pBkmklist)) |
2696 | QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); | 2697 | QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); |
2697 | } | 2698 | } |
2698 | 2699 | ||
2699 | bool QTReaderApp::listbkmk(CList<Bkmk>* plist, const QString& _lab) | 2700 | bool QTReaderApp::listbkmk(CList<Bkmk>* plist, const QString& _lab) |
2700 | { | 2701 | { |
2701 | bkmkselector->clear(); | 2702 | bkmkselector->clear(); |
2702 | if (_lab.isEmpty()) | 2703 | if (_lab.isEmpty()) |
2703 | bkmkselector->setText("Cancel"); | 2704 | bkmkselector->setText("Cancel"); |
2704 | else | 2705 | else |
2705 | bkmkselector->setText(_lab); | 2706 | bkmkselector->setText(_lab); |
2706 | int cnt = 0; | 2707 | int cnt = 0; |
2707 | if (plist != NULL) | 2708 | if (plist != NULL) |
2708 | { | 2709 | { |
2709 | for (CList<Bkmk>::iterator i = plist->begin(); i != plist->end(); i++) | 2710 | for (CList<Bkmk>::iterator i = plist->begin(); i != plist->end(); i++) |
2710 | { | 2711 | { |
2711 | #ifdef _UNICODE | 2712 | #ifdef _UNICODE |
2712 | // qDebug("Item:%s", (const char*)toQString(i->name())); | 2713 | // odebug << "Item:" << toQString(i->name()) << "" << oendl; |
2713 | bkmkselector->insertItem(toQString(i->name())); | 2714 | bkmkselector->insertItem(toQString(i->name())); |
2714 | #else | 2715 | #else |
2715 | bkmkselector->insertItem(i->name()); | 2716 | bkmkselector->insertItem(i->name()); |
2716 | #endif | 2717 | #endif |
2717 | cnt++; | 2718 | cnt++; |
2718 | } | 2719 | } |
2719 | } | 2720 | } |
2720 | if (cnt > 0) | 2721 | if (cnt > 0) |
2721 | { | 2722 | { |
2722 | hidetoolbars(); | 2723 | hidetoolbars(); |
2723 | editorStack->raiseWidget( bkmkselector ); | 2724 | editorStack->raiseWidget( bkmkselector ); |
2724 | return true; | 2725 | return true; |
2725 | } | 2726 | } |
2726 | else | 2727 | else |
2727 | return false; | 2728 | return false; |
2728 | } | 2729 | } |
2729 | 2730 | ||
2730 | void QTReaderApp::do_autogen() | 2731 | void QTReaderApp::do_autogen() |
2731 | { | 2732 | { |
2732 | m_nRegAction = cAutoGen; | 2733 | m_nRegAction = cAutoGen; |
2733 | regEdit->setText(m_autogenstr); | 2734 | regEdit->setText(m_autogenstr); |
2734 | do_regedit(); | 2735 | do_regedit(); |
2735 | } | 2736 | } |
2736 | 2737 | ||
2737 | void QTReaderApp::do_regedit() | 2738 | void QTReaderApp::do_regedit() |
2738 | { | 2739 | { |
2739 | // fileBar->hide(); | 2740 | // fileBar->hide(); |
2740 | reader->bDoUpdates = false; | 2741 | reader->bDoUpdates = false; |
2741 | // qDebug("Showing regbar"); | 2742 | // odebug << "Showing regbar" << oendl; |
2742 | regBar->show(); | 2743 | regBar->show(); |
2743 | // qDebug("Showing kbd"); | 2744 | // odebug << "Showing kbd" << oendl; |
2744 | #ifdef USEQPE | 2745 | #ifdef USEQPE |
2745 | Global::showInputMethod(); | 2746 | Global::showInputMethod(); |
2746 | #endif | 2747 | #endif |
2747 | regVisible = true; | 2748 | regVisible = true; |
2748 | regEdit->setFocus(); | 2749 | regEdit->setFocus(); |
2749 | // qApp->processEvents(); | 2750 | // qApp->processEvents(); |
2750 | reader->bDoUpdates = true; | 2751 | reader->bDoUpdates = true; |
2751 | reader->update(); | 2752 | reader->update(); |
2752 | } | 2753 | } |
2753 | 2754 | ||
2754 | bool QTReaderApp::openfrombkmk(Bkmk* bk) | 2755 | bool QTReaderApp::openfrombkmk(Bkmk* bk) |
2755 | { | 2756 | { |
2756 | QString fn = toQString( | 2757 | QString fn = toQString( |
2757 | CFiledata(bk->anno()).name() | 2758 | CFiledata(bk->anno()).name() |
2758 | ); | 2759 | ); |
2759 | //qDebug("fileinfo"); | 2760 | // odebug << "fileinfo" << oendl; |
2760 | if (!fn.isEmpty() && QFileInfo(fn).isFile()) | 2761 | if (!fn.isEmpty() && QFileInfo(fn).isFile()) |
2761 | { | 2762 | { |
2762 | //qDebug("Opening"); | 2763 | // odebug << "Opening" << oendl; |
2763 | openFile(fn); | 2764 | openFile(fn); |
2764 | struct stat fnstat; | 2765 | struct stat fnstat; |
2765 | stat((const char *)reader->m_lastfile, &fnstat); | 2766 | stat((const char *)reader->m_lastfile, &fnstat); |
2766 | 2767 | ||
2767 | if (CFiledata(bk->anno()).date() | 2768 | if (CFiledata(bk->anno()).date() |
2768 | != fnstat.st_mtime) | 2769 | != fnstat.st_mtime) |
2769 | { | 2770 | { |
2770 | CFiledata fd(bk->anno()); | 2771 | CFiledata fd(bk->anno()); |
2771 | fd.setdate(fnstat.st_mtime); | 2772 | fd.setdate(fnstat.st_mtime); |
2772 | bk->value(0); | 2773 | bk->value(0); |
2773 | } | ||
2774 | else | ||
2775 | { | ||
2776 | unsigned short svlen = bk->filedatalen(); | ||
2777 | unsigned char* svdata = bk->filedata(); | ||
2778 | reader->putSaveData(svdata, svlen); | ||
2779 | // setstate(svdata, svlen); | ||
2780 | if (svlen != 0) | ||
2781 | { | ||
2782 | QMessageBox::warning(this, PROGNAME, "Not all file data used\nNew version?"); | ||
2783 | } | ||
2784 | // qDebug("updating"); | ||
2785 | // showEditTools(); | ||
2786 | reader->locate(bk->value()); | ||
2787 | } | ||
2788 | return true; | ||
2789 | } | 2774 | } |
2790 | else | 2775 | else |
2791 | { | 2776 | { |
2792 | return false; | 2777 | unsigned short svlen = bk->filedatalen(); |
2778 | unsigned char* svdata = bk->filedata(); | ||
2779 | reader->putSaveData(svdata, svlen); | ||
2780 | // setstate(svdata, svlen); | ||
2781 | if (svlen != 0) | ||
2782 | { | ||
2783 | QMessageBox::warning(this, PROGNAME, "Not all file data used\nNew version?"); | ||
2784 | } | ||
2785 | // odebug << "updating" << oendl; | ||
2786 | // showEditTools(); | ||
2787 | reader->locate(bk->value()); | ||
2788 | } | ||
2789 | return true; | ||
2790 | } | ||
2791 | else | ||
2792 | { | ||
2793 | return false; | ||
2793 | } | 2794 | } |
2794 | } | 2795 | } |
2795 | 2796 | ||
2796 | void QTReaderApp::gotobkmk(int ind) | 2797 | void QTReaderApp::gotobkmk(int ind) |
2797 | { | 2798 | { |
2798 | showEditTools(); | 2799 | showEditTools(); |
2799 | switch (m_nBkmkAction) | 2800 | switch (m_nBkmkAction) |
2800 | { | 2801 | { |
2801 | case cOpenFile: | 2802 | case cOpenFile: |
2802 | { | 2803 | { |
2803 | // qApp->processEvents(); | 2804 | // qApp->processEvents(); |
2804 | if (!openfrombkmk((*pOpenlist)[ind])) | 2805 | if (!openfrombkmk((*pOpenlist)[ind])) |
2805 | { | 2806 | { |
2806 | pOpenlist->erase(ind); | 2807 | pOpenlist->erase(ind); |
2807 | QMessageBox::information(this, PROGNAME, "Can't find file"); | 2808 | QMessageBox::information(this, PROGNAME, "Can't find file"); |
2808 | } | 2809 | } |
2809 | } | 2810 | } |
2810 | break; | 2811 | break; |
2811 | case cGotoBkmk: | 2812 | case cGotoBkmk: |
2812 | reader->locate((*pBkmklist)[ind]->value()); | 2813 | reader->locate((*pBkmklist)[ind]->value()); |
2813 | break; | 2814 | break; |
2814 | case cDelBkmk: | 2815 | case cDelBkmk: |
2815 | //// qDebug("Deleting:%s\n",(*pBkmklist)[ind]->name()); | 2816 | //// odebug << "Deleting:" << (*pBkmklist)[ind]->name() << "\n" << oendl; |
2816 | pBkmklist->erase(ind); | 2817 | pBkmklist->erase(ind); |
2817 | m_fBkmksChanged = true; | 2818 | m_fBkmksChanged = true; |
2818 | // pBkmklist->sort(); | 2819 | // pBkmklist->sort(); |
2819 | break; | 2820 | break; |
2820 | case cRmBkmkFile: | 2821 | case cRmBkmkFile: |
2821 | { | 2822 | { |
2822 | #ifndef USEQPE | 2823 | #ifndef USEQPE |
2823 | QDir d = QDir::home(); // "/" | 2824 | QDir d = QDir::home(); // "/" |
2824 | d.cd(APPDIR); | 2825 | d.cd(APPDIR); |
2825 | d.remove(bkmkselector->text(ind)); | 2826 | d.remove(bkmkselector->text(ind)); |
2826 | #else /* USEQPE */ | 2827 | #else /* USEQPE */ |
2827 | unlink((const char *)Global::applicationFileName(APPDIR,bkmkselector->text(ind))); | 2828 | unlink((const char *)Global::applicationFileName(APPDIR,bkmkselector->text(ind))); |
2828 | #endif /* USEQPE */ | 2829 | #endif /* USEQPE */ |
2829 | } | 2830 | } |
2830 | break; | 2831 | break; |
2831 | case cLdConfig: | 2832 | case cLdConfig: |
2832 | readconfig(bkmkselector->text(ind), false); | 2833 | readconfig(bkmkselector->text(ind), false); |
2833 | break; | 2834 | break; |
2834 | case cRmConfig: | 2835 | case cRmConfig: |
2835 | { | 2836 | { |
2836 | #ifndef USEQPE | 2837 | #ifndef USEQPE |
2837 | QDir d = QDir::home(); // "/" | 2838 | QDir d = QDir::home(); // "/" |
2838 | d.cd(APPDIR "/configs"); | 2839 | d.cd(APPDIR "/configs"); |
2839 | d.remove(bkmkselector->text(ind)); | 2840 | d.remove(bkmkselector->text(ind)); |
2840 | #else /* USEQPE */ | 2841 | #else /* USEQPE */ |
2841 | unlink((const char *)Global::applicationFileName(APPDIR "/configs",bkmkselector->text(ind))); | 2842 | unlink((const char *)Global::applicationFileName(APPDIR "/configs",bkmkselector->text(ind))); |
2842 | #endif /* USEQPE */ | 2843 | #endif /* USEQPE */ |
2843 | } | 2844 | } |
2844 | break; | 2845 | break; |
2845 | case cExportLinks: | 2846 | case cExportLinks: |
2846 | { | 2847 | { |
2847 | #ifndef USEQPE | 2848 | #ifndef USEQPE |
2848 | QDir d = QDir::home(); // "/" | 2849 | QDir d = QDir::home(); // "/" |
2849 | d.cd(APPDIR "/urls"); | 2850 | d.cd(APPDIR "/urls"); |
2850 | QFileInfo fi(d, bkmkselector->text(ind)); | 2851 | QFileInfo fi(d, bkmkselector->text(ind)); |
2851 | if (fi.exists()) | 2852 | if (fi.exists()) |
2852 | { | 2853 | { |
2853 | QString outfile( QFileDialog::getSaveFileName( QString::null, QString::null, this ) ); | 2854 | QString outfile( QFileDialog::getSaveFileName( QString::null, QString::null, this ) ); |
2854 | if (!outfile.isEmpty()) | 2855 | if (!outfile.isEmpty()) |
2855 | { | 2856 | { |
2856 | FILE* fout = fopen((const char *)outfile, "w"); | 2857 | FILE* fout = fopen((const char *)outfile, "w"); |
2857 | if (fout != NULL) | 2858 | if (fout != NULL) |
2858 | { | 2859 | { |
2859 | FILE* fin = fopen((const char *)fi.absFilePath(), "r"); | 2860 | FILE* fin = fopen((const char *)fi.absFilePath(), "r"); |
2860 | if (fin != NULL) | 2861 | if (fin != NULL) |
2861 | { | 2862 | { |
2862 | fprintf(fout, "<html><body>\n"); | 2863 | fprintf(fout, "<html><body>\n"); |
2863 | int ch = 0; | 2864 | int ch = 0; |
2864 | while ((ch = fgetc(fin)) != EOF) | 2865 | while ((ch = fgetc(fin)) != EOF) |
2865 | { | 2866 | { |
2866 | fputc(ch, fout); | 2867 | fputc(ch, fout); |
2867 | } | 2868 | } |
2868 | fclose(fin); | 2869 | fclose(fin); |
2869 | fprintf(fout, "</html></body>\n"); | 2870 | fprintf(fout, "</html></body>\n"); |
2870 | d.remove(bkmkselector->text(ind)); | 2871 | d.remove(bkmkselector->text(ind)); |
2871 | } | 2872 | } |
2872 | fclose(fout); | 2873 | fclose(fout); |
2873 | } | 2874 | } |
2874 | else | 2875 | else |
2875 | QMessageBox::information(this, PROGNAME, "Couldn't open output"); | 2876 | QMessageBox::information(this, PROGNAME, "Couldn't open output"); |
2876 | } | 2877 | } |
2877 | } | 2878 | } |
2878 | #else /* USEQPE */ | 2879 | #else /* USEQPE */ |
2879 | 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"); |
2880 | if (fin != NULL) | 2881 | if (fin != NULL) |
2881 | { | 2882 | { |
2882 | bool allok = false; | 2883 | bool allok = false; |
2883 | 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); |
2884 | if (fb->exec()) | 2885 | if (fb->exec()) |
2885 | { | 2886 | { |
2886 | QString outfile = fb->getCurrentFile(); | 2887 | QString outfile = fb->getCurrentFile(); |
2887 | FILE* fout = fopen((const char *)outfile, "w"); | 2888 | FILE* fout = fopen((const char *)outfile, "w"); |
2888 | if (fout != NULL) | 2889 | if (fout != NULL) |
2889 | { | 2890 | { |
2890 | fprintf(fout, "<html><body>\n"); | 2891 | fprintf(fout, "<html><body>\n"); |
2891 | int ch = 0; | 2892 | int ch = 0; |
2892 | while ((ch = fgetc(fin)) != EOF) | 2893 | while ((ch = fgetc(fin)) != EOF) |
2893 | { | 2894 | { |
2894 | fputc(ch, fout); | 2895 | fputc(ch, fout); |
2895 | } | 2896 | } |
2896 | fprintf(fout, "</html></body>\n"); | 2897 | fprintf(fout, "</html></body>\n"); |
2897 | fclose(fout); | 2898 | fclose(fout); |
2898 | allok = true; | 2899 | allok = true; |
2899 | } | 2900 | } |
2900 | else | 2901 | else |
2901 | QMessageBox::information(this, PROGNAME, "Couldn't open output"); | 2902 | QMessageBox::information(this, PROGNAME, "Couldn't open output"); |
2902 | } | 2903 | } |
2903 | delete fb; | 2904 | delete fb; |
2904 | fclose(fin); | 2905 | fclose(fin); |
2905 | 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))); |
2906 | } | 2907 | } |
2907 | else | 2908 | else |
2908 | { | 2909 | { |
2909 | QMessageBox::information(this, PROGNAME, "Couldn't open input"); | 2910 | QMessageBox::information(this, PROGNAME, "Couldn't open input"); |
2910 | } | 2911 | } |
2911 | 2912 | ||
2912 | /* | 2913 | /* |
2913 | 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 ); |
2914 | int ret = f->exec(); | 2915 | int ret = f->exec(); |
2915 | qDebug("Return:%d", ret); | 2916 | odebug << "Return:" << ret << "" << oendl; |
2916 | DocLnk* doc = f->getDoc(); | 2917 | DocLnk* doc = f->getDoc(); |
2917 | if (doc != NULL) | 2918 | if (doc != NULL) |
2918 | { | 2919 | { |
2919 | 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"); |
2920 | QString rt; | 2921 | QString rt; |
2921 | rt = "<html><body>\n"; | 2922 | rt = "<html><body>\n"; |
2922 | int ch = 0; | 2923 | int ch = 0; |
2923 | while ((ch = fgetc(fin)) != EOF) | 2924 | while ((ch = fgetc(fin)) != EOF) |
2924 | { | 2925 | { |
2925 | rt += (char)ch; | 2926 | rt += (char)ch; |
2926 | } | 2927 | } |
2927 | fclose(fin); | 2928 | fclose(fin); |
2928 | rt += "</html></body>\n"; | 2929 | rt += "</html></body>\n"; |
2929 | if ( doc->name().isEmpty() ) | 2930 | if ( doc->name().isEmpty() ) |
2930 | { | 2931 | { |
2931 | doc->setName(bkmkselector->text(ind)); | 2932 | doc->setName(bkmkselector->text(ind)); |
2932 | } | 2933 | } |
2933 | FileManager fm; | 2934 | FileManager fm; |
2934 | fm.saveFile( *doc, rt ); | 2935 | fm.saveFile( *doc, rt ); |
2935 | qDebug("YES"); | 2936 | odebug << "YES" << oendl; |
2936 | } | 2937 | } |
2937 | else | 2938 | else |
2938 | { | 2939 | { |
2939 | qDebug("NO"); | 2940 | odebug << "NO" << oendl; |
2940 | } | 2941 | } |
2941 | delete f; | 2942 | delete f; |
2942 | */ | 2943 | */ |
2943 | 2944 | ||
2944 | #endif /* USEQPE */ | 2945 | #endif /* USEQPE */ |
2945 | } | 2946 | } |
2946 | break; | 2947 | break; |
2947 | } | 2948 | } |
2948 | } | 2949 | } |
2949 | 2950 | ||
2950 | void QTReaderApp::cancelbkmk() | 2951 | void QTReaderApp::cancelbkmk() |
2951 | { | 2952 | { |
2952 | if (m_nBkmkAction == cOpenFile) | 2953 | if (m_nBkmkAction == cOpenFile) |
2953 | { | 2954 | { |
2954 | QString fn = usefilebrowser(); | 2955 | QString fn = usefilebrowser(); |
2955 | if (!fn.isEmpty() && QFileInfo(fn).isFile()) openFile(fn); | 2956 | if (!fn.isEmpty() && QFileInfo(fn).isFile()) openFile(fn); |
2956 | } | 2957 | } |
2957 | showEditTools(); | 2958 | showEditTools(); |
2958 | } | 2959 | } |
2959 | 2960 | ||
2960 | void QTReaderApp::jump() | 2961 | void QTReaderApp::jump() |
2961 | { | 2962 | { |
2962 | m_nRegAction = cJump; | 2963 | m_nRegAction = cJump; |
2963 | char lcn[20]; | 2964 | char lcn[20]; |
2964 | sprintf(lcn, "%lu", reader->pagelocate()); | 2965 | sprintf(lcn, "%lu", reader->pagelocate()); |
2965 | regEdit->setText(lcn); | 2966 | regEdit->setText(lcn); |
2966 | do_regedit(); | 2967 | do_regedit(); |
2967 | } | 2968 | } |
2968 | 2969 | ||
2969 | void QTReaderApp::do_jump(const QString& lcn) | 2970 | void QTReaderApp::do_jump(const QString& lcn) |
2970 | { | 2971 | { |
2971 | bool ok; | 2972 | bool ok; |
2972 | unsigned long ulcn = lcn.toULong(&ok); | 2973 | unsigned long ulcn = lcn.toULong(&ok); |
2973 | if (ok) | 2974 | if (ok) |
2974 | reader->locate(ulcn); | 2975 | reader->locate(ulcn); |
2975 | else | 2976 | else |
2976 | QMessageBox::information(this, PROGNAME, "Must be a number"); | 2977 | QMessageBox::information(this, PROGNAME, "Must be a number"); |
2977 | } | 2978 | } |
2978 | 2979 | ||
2979 | void QTReaderApp::do_regaction() | 2980 | void QTReaderApp::do_regaction() |
2980 | { | 2981 | { |
2981 | reader->bDoUpdates = false; | 2982 | reader->bDoUpdates = false; |
2982 | regBar->hide(); | 2983 | regBar->hide(); |
2983 | #ifdef USEQPE | 2984 | #ifdef USEQPE |
2984 | Global::hideInputMethod(); | 2985 | Global::hideInputMethod(); |
2985 | #endif | 2986 | #endif |
2986 | regVisible = false; | 2987 | regVisible = false; |
2987 | switch(m_nRegAction) | 2988 | switch(m_nRegAction) |
2988 | { | 2989 | { |
2989 | case cAutoGen: | 2990 | case cAutoGen: |
2990 | do_autogen(regEdit->text()); | 2991 | do_autogen(regEdit->text()); |
2991 | break; | 2992 | break; |
2992 | case cAddBkmk: | 2993 | case cAddBkmk: |
2993 | do_addbkmk(regEdit->text()); | 2994 | do_addbkmk(regEdit->text()); |
2994 | break; | 2995 | break; |
2995 | case cJump: | 2996 | case cJump: |
2996 | do_jump(regEdit->text()); | 2997 | do_jump(regEdit->text()); |
2997 | break; | 2998 | break; |
2998 | /* | 2999 | /* |
2999 | case cMonoSpace: | 3000 | case cMonoSpace: |
3000 | do_mono(regEdit->text()); | 3001 | do_mono(regEdit->text()); |
3001 | break; | 3002 | break; |
3002 | */ | 3003 | */ |
3003 | case cSetTarget: | 3004 | case cSetTarget: |
3004 | do_settarget(regEdit->text()); | 3005 | do_settarget(regEdit->text()); |
3005 | break; | 3006 | break; |
3006 | #ifdef _SCROLLPIPE | 3007 | #ifdef _SCROLLPIPE |
3007 | case cSetPipeTarget: | 3008 | case cSetPipeTarget: |
3008 | do_setpipetarget(regEdit->text()); | 3009 | do_setpipetarget(regEdit->text()); |
3009 | break; | 3010 | break; |
3010 | #endif | 3011 | #endif |
3011 | case cSetConfigName: | 3012 | case cSetConfigName: |
3012 | // qDebug("Saving config"); | 3013 | // odebug << "Saving config" << oendl; |
3013 | do_saveconfig(regEdit->text(), false); | 3014 | do_saveconfig(regEdit->text(), false); |
3014 | break; | 3015 | break; |
3015 | } | 3016 | } |
3016 | // reader->restore(); | 3017 | // reader->restore(); |
3017 | // fileBar->show(); | 3018 | // fileBar->show(); |
3018 | reader->setFocus(); | 3019 | reader->setFocus(); |
3019 | // qApp->processEvents(); | 3020 | // qApp->processEvents(); |
3020 | reader->bDoUpdates = true; | 3021 | reader->bDoUpdates = true; |
3021 | reader->update(); | 3022 | reader->update(); |
3022 | } | 3023 | } |
3023 | 3024 | ||
3024 | void QTReaderApp::do_settarget(const QString& _txt) | 3025 | void QTReaderApp::do_settarget(const QString& _txt) |
3025 | { | 3026 | { |
3026 | int ind = _txt.find('/'); | 3027 | int ind = _txt.find('/'); |
3027 | if (ind == -1) | 3028 | if (ind == -1) |
3028 | { | 3029 | { |
3029 | m_targetapp = ""; | 3030 | m_targetapp = ""; |
3030 | m_targetmsg = ""; | 3031 | m_targetmsg = ""; |
3031 | QMessageBox::information(this, PROGNAME, "Format is\nappname/messagename"); | 3032 | QMessageBox::information(this, PROGNAME, "Format is\nappname/messagename"); |
3032 | } | 3033 | } |
3033 | else | 3034 | else |
3034 | { | 3035 | { |
3035 | m_targetapp = _txt.left(ind); | 3036 | m_targetapp = _txt.left(ind); |
3036 | m_targetmsg = _txt.right(_txt.length()-ind-1); | 3037 | m_targetmsg = _txt.right(_txt.length()-ind-1); |
3037 | } | 3038 | } |
3038 | } | 3039 | } |
3039 | 3040 | ||
3040 | void QTReaderApp::chooseencoding() | 3041 | void QTReaderApp::chooseencoding() |
3041 | { | 3042 | { |
3042 | m_fontSelector->clear(); | 3043 | m_fontSelector->clear(); |
3043 | m_fontSelector->insertItem("Ascii"); | 3044 | m_fontSelector->insertItem("Ascii"); |
3044 | m_fontSelector->insertItem("UTF-8"); | 3045 | m_fontSelector->insertItem("UTF-8"); |
3045 | m_fontSelector->insertItem("UCS-2(BE)"); | 3046 | m_fontSelector->insertItem("UCS-2(BE)"); |
3046 | m_fontSelector->insertItem("USC-2(LE)"); | 3047 | m_fontSelector->insertItem("USC-2(LE)"); |
3047 | m_fontSelector->insertItem("Palm"); | 3048 | m_fontSelector->insertItem("Palm"); |
3048 | for (unicodetable::iterator iter = unicodetable::begin(); iter != unicodetable::end(); iter++) | 3049 | for (unicodetable::iterator iter = unicodetable::begin(); iter != unicodetable::end(); iter++) |
3049 | { | 3050 | { |
3050 | m_fontSelector->insertItem(iter->mime); | 3051 | m_fontSelector->insertItem(iter->mime); |
3051 | } // delete the FontDatabase!!! | 3052 | } // delete the FontDatabase!!! |
3052 | m_fontSelector->setCurrentItem (reader->m_encd); | 3053 | m_fontSelector->setCurrentItem (reader->m_encd); |
3053 | m_fontAction = cChooseEncoding; | 3054 | m_fontAction = cChooseEncoding; |
3054 | m_fontBar->show(); | 3055 | m_fontBar->show(); |
3055 | m_fontVisible = true; | 3056 | m_fontVisible = true; |
3056 | } | 3057 | } |
3057 | 3058 | ||
3058 | void QTReaderApp::setfont() | 3059 | void QTReaderApp::setfont() |
3059 | { | 3060 | { |
3060 | m_fontSelector->clear(); | 3061 | m_fontSelector->clear(); |
3061 | { | 3062 | { |
3062 | #ifdef USEQPE | 3063 | #ifdef USEQPE |
3063 | FontDatabase f; | 3064 | FontDatabase f; |
3064 | #else | 3065 | #else |
3065 | QFontDatabase f; | 3066 | QFontDatabase f; |
3066 | #endif | 3067 | #endif |
3067 | QStringList flist = f.families(); | 3068 | QStringList flist = f.families(); |
3068 | m_fontSelector->insertStringList(flist); | 3069 | m_fontSelector->insertStringList(flist); |
3069 | } // delete the FontDatabase!!! | 3070 | } // delete the FontDatabase!!! |
3070 | 3071 | ||
3071 | for (int i = 1; i <= m_fontSelector->count(); i++) | 3072 | for (int i = 1; i <= m_fontSelector->count(); i++) |
3072 | { | 3073 | { |
3073 | if (m_fontSelector->text(i) == reader->m_fontname) | 3074 | if (m_fontSelector->text(i) == reader->m_fontname) |
3074 | { | 3075 | { |
3075 | m_fontSelector->setCurrentItem(i); | 3076 | m_fontSelector->setCurrentItem(i); |
3076 | break; | 3077 | break; |
3077 | } | 3078 | } |
3078 | } | 3079 | } |
3079 | m_fontAction = cChooseFont; | 3080 | m_fontAction = cChooseFont; |
3080 | m_fontBar->show(); | 3081 | m_fontBar->show(); |
3081 | m_fontVisible = true; | 3082 | m_fontVisible = true; |
3082 | } | 3083 | } |
3083 | 3084 | ||
3084 | void QTReaderApp::setfontHelper(const QString& lcn, int size) | 3085 | void QTReaderApp::setfontHelper(const QString& lcn, int size) |
3085 | { | 3086 | { |
3086 | if (size == 0) size = reader->m_fontControl.currentsize(); | 3087 | if (size == 0) size = reader->m_fontControl.currentsize(); |
3087 | if (m_propogatefontchange) | 3088 | if (m_propogatefontchange) |
3088 | { | 3089 | { |
3089 | QFont f(lcn, 10); | 3090 | QFont f(lcn, 10); |
3090 | bkmkselector->setFont( f ); | 3091 | bkmkselector->setFont( f ); |
3091 | regEdit->setFont( f ); | 3092 | regEdit->setFont( f ); |
3092 | searchEdit->setFont( f ); | 3093 | searchEdit->setFont( f ); |
3093 | m_annoWin->setFont( f ); | 3094 | m_annoWin->setFont( f ); |
3094 | } | 3095 | } |
3095 | reader->m_fontname = lcn; | 3096 | reader->m_fontname = lcn; |
3096 | if (!reader->ChangeFont(size)) | 3097 | if (!reader->ChangeFont(size)) |
3097 | { | 3098 | { |
3098 | reader->ChangeFont(size); | 3099 | reader->ChangeFont(size); |
3099 | } | 3100 | } |
3100 | } | 3101 | } |
3101 | 3102 | ||
3102 | void QTReaderApp::do_setencoding(int i) | 3103 | void QTReaderApp::do_setencoding(int i) |
3103 | { | 3104 | { |
3104 | // qDebug("setencoding:%d", i); | 3105 | // odebug << "setencoding:" << i << "" << oendl; |
3105 | if (m_fontAction == cChooseEncoding) | 3106 | if (m_fontAction == cChooseEncoding) |
3106 | { | 3107 | { |
3107 | reader->setencoding(i); | 3108 | reader->setencoding(i); |
3108 | } | 3109 | } |
3109 | reader->refresh(); | 3110 | reader->refresh(); |
3110 | m_fontBar->hide(); | 3111 | m_fontBar->hide(); |
3111 | m_fontVisible = false; | 3112 | m_fontVisible = false; |
3112 | // qDebug("showedit"); | 3113 | // odebug << "showedit" << oendl; |
3113 | if (reader->isVisible()) showEditTools(); | 3114 | if (reader->isVisible()) showEditTools(); |
3114 | // qDebug("showeditdone"); | 3115 | // odebug << "showeditdone" << oendl; |
3115 | } | 3116 | } |
3116 | 3117 | ||
3117 | void QTReaderApp::do_setfont(const QString& lcn) | 3118 | void QTReaderApp::do_setfont(const QString& lcn) |
3118 | { | 3119 | { |
3119 | if (m_fontAction == cChooseFont) | 3120 | if (m_fontAction == cChooseFont) |
3120 | { | 3121 | { |
3121 | setfontHelper(lcn); | 3122 | setfontHelper(lcn); |
3122 | } | 3123 | } |
3123 | reader->refresh(); | 3124 | reader->refresh(); |
3124 | m_fontBar->hide(); | 3125 | m_fontBar->hide(); |
3125 | m_fontVisible = false; | 3126 | m_fontVisible = false; |
3126 | // qDebug("showedit"); | 3127 | // odebug << "showedit" << oendl; |
3127 | //if (reader->isVisible()) | 3128 | //if (reader->isVisible()) |
3128 | showEditTools(); | 3129 | showEditTools(); |
3129 | // qDebug("showeditdone"); | 3130 | // odebug << "showeditdone" << oendl; |
3130 | } | 3131 | } |
3131 | 3132 | ||
3132 | void QTReaderApp::do_autogen(const QString& regText) | 3133 | void QTReaderApp::do_autogen(const QString& regText) |
3133 | { | 3134 | { |
3134 | unsigned long fs, ts; | 3135 | unsigned long fs, ts; |
3135 | reader->sizes(fs,ts); | 3136 | reader->sizes(fs,ts); |
3136 | // // qDebug("Reg:%s\n", (const tchar*)(regEdit->text())); | 3137 | // // odebug << "Reg:" << (const tchar*)(regEdit->text()) << "\n" << oendl; |
3137 | m_autogenstr = regText; | 3138 | m_autogenstr = regText; |
3138 | QRegExp re(regText); | 3139 | QRegExp re(regText); |
3139 | CBuffer buff; | 3140 | CBuffer buff; |
3140 | if (pBkmklist != NULL) delete pBkmklist; | 3141 | if (pBkmklist != NULL) delete pBkmklist; |
3141 | pBkmklist = new CList<Bkmk>; | 3142 | pBkmklist = new CList<Bkmk>; |
3142 | m_fBkmksChanged = true; | 3143 | m_fBkmksChanged = true; |
3143 | 3144 | ||
3144 | pbar->setGeometry(regBar->x(),regBar->y(),regBar->width(), regBar->height()); | 3145 | pbar->setGeometry(regBar->x(),regBar->y(),regBar->width(), regBar->height()); |
3145 | pbar->show(); | 3146 | pbar->show(); |
3146 | pbar->raise(); | 3147 | pbar->raise(); |
3147 | pbar->reset(); | 3148 | pbar->reset(); |
3148 | reader->update(); | 3149 | reader->update(); |
3149 | qApp->processEvents(); | 3150 | qApp->processEvents(); |
3150 | reader->setFocus(); | 3151 | reader->setFocus(); |
3151 | reader->jumpto(0); | 3152 | reader->jumpto(0); |
3152 | int lastpc = 0; | 3153 | int lastpc = 0; |
3153 | int i = 0; | 3154 | int i = 0; |
3154 | while (i >= 0) | 3155 | while (i >= 0) |
3155 | { | 3156 | { |
3156 | unsigned int lcn = reader->locate(); | 3157 | unsigned int lcn = reader->locate(); |
3157 | int pc = (100*lcn)/ts; | 3158 | int pc = (100*lcn)/ts; |
3158 | if (pc != lastpc) | 3159 | if (pc != lastpc) |
3159 | { | 3160 | { |
3160 | pbar->setProgress(pc); | 3161 | pbar->setProgress(pc); |
3161 | qApp->processEvents(); | 3162 | qApp->processEvents(); |
3162 | if (reader->locate() != lcn) reader->jumpto(lcn); | 3163 | if (reader->locate() != lcn) reader->jumpto(lcn); |
3163 | reader->setFocus(); | 3164 | reader->setFocus(); |
3164 | lastpc = pc; | 3165 | lastpc = pc; |
3165 | } | 3166 | } |
3166 | i = reader->buffdoc.getpara(buff); | 3167 | i = reader->buffdoc.getpara(buff); |
3167 | #ifdef _UNICODE | 3168 | #ifdef _UNICODE |
3168 | if (re.match(toQString(buff.data())) != -1) | 3169 | if (re.match(toQString(buff.data())) != -1) |
3169 | #else | 3170 | #else |
3170 | if (re.match(buff.data()) != -1) | 3171 | if (re.match(buff.data()) != -1) |
3171 | #endif | 3172 | #endif |
3172 | pBkmklist->push_back(Bkmk(buff.data(), NULL, lcn)); | 3173 | pBkmklist->push_back(Bkmk(buff.data(), NULL, lcn)); |
3173 | } | 3174 | } |
3174 | pBkmklist->sort(); | 3175 | pBkmklist->sort(); |
3175 | pbar->setProgress(100); | 3176 | pbar->setProgress(100); |
3176 | qApp->processEvents(); | 3177 | qApp->processEvents(); |
3177 | pbar->hide(); | 3178 | pbar->hide(); |
3178 | reader->refresh(); | 3179 | reader->refresh(); |
3179 | } | 3180 | } |
3180 | 3181 | ||
3181 | void QTReaderApp::saveprefs() | 3182 | void QTReaderApp::saveprefs() |
3182 | { | 3183 | { |
3183 | // qDebug("saveprefs"); | 3184 | // odebug << "saveprefs" << oendl; |
3184 | // reader->saveprefs("uqtreader"); | 3185 | // reader->saveprefs("uqtreader"); |
3185 | // if (!m_loadedconfig) | 3186 | // if (!m_loadedconfig) |
3186 | do_saveconfig( APPDIR, true ); | 3187 | do_saveconfig( APPDIR, true ); |
3187 | 3188 | ||
3188 | /* | 3189 | /* |
3189 | Config config( APPDIR ); | 3190 | Config config( APPDIR ); |
3190 | config.setGroup( "View" ); | 3191 | config.setGroup( "View" ); |
3191 | 3192 | ||
3192 | reader->m_lastposn = reader->pagelocate(); | 3193 | reader->m_lastposn = reader->pagelocate(); |
3193 | 3194 | ||
3194 | config.writeEntry("FloatDialogs", m_bFloatingDialog); | 3195 | config.writeEntry("FloatDialogs", m_bFloatingDialog); |
3195 | config.writeEntry( "StripCr", reader->bstripcr ); | 3196 | config.writeEntry( "StripCr", reader->bstripcr ); |
3196 | config.writeEntry( "AutoFmt", reader->bautofmt ); | 3197 | config.writeEntry( "AutoFmt", reader->bautofmt ); |
3197 | config.writeEntry( "TextFmt", reader->btextfmt ); | 3198 | config.writeEntry( "TextFmt", reader->btextfmt ); |
3198 | config.writeEntry( "StripHtml", reader->bstriphtml ); | 3199 | config.writeEntry( "StripHtml", reader->bstriphtml ); |
3199 | config.writeEntry( "Dehyphen", reader->bdehyphen ); | 3200 | config.writeEntry( "Dehyphen", reader->bdehyphen ); |
3200 | config.writeEntry( "Depluck", reader->bdepluck ); | 3201 | config.writeEntry( "Depluck", reader->bdepluck ); |
3201 | config.writeEntry( "Dejpluck", reader->bdejpluck ); | 3202 | config.writeEntry( "Dejpluck", reader->bdejpluck ); |
3202 | config.writeEntry( "OneSpace", reader->bonespace ); | 3203 | config.writeEntry( "OneSpace", reader->bonespace ); |
3203 | config.writeEntry( "Unindent", reader->bunindent ); | 3204 | config.writeEntry( "Unindent", reader->bunindent ); |
3204 | config.writeEntry( "Repara", reader->brepara ); | 3205 | config.writeEntry( "Repara", reader->brepara ); |
3205 | config.writeEntry( "DoubleSpace", reader->bdblspce ); | 3206 | config.writeEntry( "DoubleSpace", reader->bdblspce ); |
3206 | config.writeEntry( "Indent", reader->bindenter ); | 3207 | config.writeEntry( "Indent", reader->bindenter ); |
3207 | config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) ); | 3208 | config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) ); |
3208 | config.writeEntry( "ScrollDelay", reader->m_delay); | 3209 | config.writeEntry( "ScrollDelay", reader->m_delay); |
3209 | config.writeEntry( "LastFile", reader->m_lastfile ); | 3210 | config.writeEntry( "LastFile", reader->m_lastfile ); |
3210 | config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); | 3211 | config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); |
3211 | config.writeEntry( "PageMode", reader->m_bpagemode ); | 3212 | config.writeEntry( "PageMode", reader->m_bpagemode ); |
3212 | config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); | 3213 | config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); |
3213 | config.writeEntry( "SwapMouse", reader->m_swapmouse); | 3214 | config.writeEntry( "SwapMouse", reader->m_swapmouse); |
3214 | config.writeEntry( "Fontname", reader->m_fontname ); | 3215 | config.writeEntry( "Fontname", reader->m_fontname ); |
3215 | config.writeEntry( "Encoding", reader->m_encd ); | 3216 | config.writeEntry( "Encoding", reader->m_encd ); |
3216 | config.writeEntry( "CharSpacing", reader->m_charpc ); | 3217 | config.writeEntry( "CharSpacing", reader->m_charpc ); |
3217 | config.writeEntry( "Overlap", (int)(reader->m_overlap) ); | 3218 | config.writeEntry( "Overlap", (int)(reader->m_overlap) ); |
3218 | config.writeEntry( "Margin", (int)reader->m_border ); | 3219 | config.writeEntry( "Margin", (int)reader->m_border ); |
3219 | config.writeEntry( "TargetApp", m_targetapp ); | 3220 | config.writeEntry( "TargetApp", m_targetapp ); |
3220 | config.writeEntry( "TargetMsg", m_targetmsg ); | 3221 | config.writeEntry( "TargetMsg", m_targetmsg ); |
3221 | #ifdef _SCROLLPIPE | 3222 | #ifdef _SCROLLPIPE |
3222 | config.writeEntry( "PipeTarget", reader->m_pipetarget ); | 3223 | config.writeEntry( "PipeTarget", reader->m_pipetarget ); |
3223 | config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); | 3224 | config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); |
3224 | #endif | 3225 | #endif |
3225 | config.writeEntry( "TwoTouch", m_twoTouch ); | 3226 | config.writeEntry( "TwoTouch", m_twoTouch ); |
3226 | config.writeEntry( "Annotation", m_doAnnotation); | 3227 | config.writeEntry( "Annotation", m_doAnnotation); |
3227 | config.writeEntry( "Dictionary", m_doDictionary); | 3228 | config.writeEntry( "Dictionary", m_doDictionary); |
3228 | config.writeEntry( "Clipboard", m_doClipboard); | 3229 | config.writeEntry( "Clipboard", m_doClipboard); |
3229 | config.writeEntry( "SpaceTarget", m_spaceTarget); | 3230 | config.writeEntry( "SpaceTarget", m_spaceTarget); |
3230 | config.writeEntry( "EscapeTarget", m_escapeTarget); | 3231 | config.writeEntry( "EscapeTarget", m_escapeTarget); |
3231 | config.writeEntry( "ReturnTarget", m_returnTarget); | 3232 | config.writeEntry( "ReturnTarget", m_returnTarget); |
3232 | config.writeEntry( "LeftTarget", m_leftTarget); | 3233 | config.writeEntry( "LeftTarget", m_leftTarget); |
3233 | config.writeEntry( "RightTarget", m_rightTarget); | 3234 | config.writeEntry( "RightTarget", m_rightTarget); |
3234 | config.writeEntry( "UpTarget", m_upTarget); | 3235 | config.writeEntry( "UpTarget", m_upTarget); |
3235 | config.writeEntry( "DownTarget", m_downTarget); | 3236 | config.writeEntry( "DownTarget", m_downTarget); |
3236 | config.writeEntry("LeftScroll", m_leftScroll); | 3237 | config.writeEntry("LeftScroll", m_leftScroll); |
3237 | config.writeEntry("RightScroll", m_rightScroll); | 3238 | config.writeEntry("RightScroll", m_rightScroll); |
3238 | config.writeEntry("UpScroll", m_upScroll); | 3239 | config.writeEntry("UpScroll", m_upScroll); |
3239 | config.writeEntry("DownScroll", m_downScroll); | 3240 | config.writeEntry("DownScroll", m_downScroll); |
3240 | #ifdef REPALM | 3241 | #ifdef REPALM |
3241 | config.writeEntry( "Repalm", reader->brepalm ); | 3242 | config.writeEntry( "Repalm", reader->brepalm ); |
3242 | #endif | 3243 | #endif |
3243 | config.writeEntry( "Remap", reader->bremap ); | 3244 | config.writeEntry( "Remap", reader->bremap ); |
3244 | config.writeEntry( "Peanut", reader->bpeanut ); | 3245 | config.writeEntry( "Peanut", reader->bpeanut ); |
3245 | config.writeEntry( "MakeBold", reader->bmakebold ); | 3246 | config.writeEntry( "MakeBold", reader->bmakebold ); |
3246 | config.writeEntry( "Continuous", reader->m_continuousDocument ); | 3247 | config.writeEntry( "Continuous", reader->m_continuousDocument ); |
3247 | config.writeEntry( "FullJust", reader->bfulljust ); | 3248 | config.writeEntry( "FullJust", reader->bfulljust ); |
3248 | config.writeEntry( "ExtraSpace", reader->getextraspace() ); | 3249 | config.writeEntry( "ExtraSpace", reader->getextraspace() ); |
3249 | config.writeEntry( "ExtraLead", reader->getlead() ); | 3250 | config.writeEntry( "ExtraLead", reader->getlead() ); |
3250 | config.writeEntry( "Basesize", (int)reader->getBaseSize()); | 3251 | config.writeEntry( "Basesize", (int)reader->getBaseSize()); |
3251 | config.writeEntry( "RequestorFontChange", m_propogatefontchange); | 3252 | config.writeEntry( "RequestorFontChange", m_propogatefontchange); |
3252 | 3253 | ||
3253 | config.setGroup( "Toolbar" ); | 3254 | config.setGroup( "Toolbar" ); |
3254 | config.writeEntry("Movable", m_tbmovesave); | 3255 | config.writeEntry("Movable", m_tbmovesave); |
3255 | config.writeEntry("Policy", m_tbpolsave); | 3256 | config.writeEntry("Policy", m_tbpolsave); |
3256 | config.writeEntry("Position", m_tbposition); | 3257 | config.writeEntry("Position", m_tbposition); |
3257 | */ | 3258 | */ |
3258 | savefilelist(); | 3259 | savefilelist(); |
3259 | } | 3260 | } |
3260 | 3261 | ||
3261 | /* | 3262 | /* |
3262 | void QTReaderApp::oldFile() | 3263 | void QTReaderApp::oldFile() |
3263 | { | 3264 | { |
3264 | // qDebug("oldFile called"); | 3265 | // odebug << "oldFile called" << oendl; |
3265 | reader->setText(true); | 3266 | reader->setText(true); |
3266 | // qDebug("settext called"); | 3267 | // odebug << "settext called" << oendl; |
3267 | showEditTools(); | 3268 | showEditTools(); |
3268 | // qDebug("showedit called"); | 3269 | // odebug << "showedit called" << oendl; |
3269 | } | 3270 | } |
3270 | */ | 3271 | */ |
3271 | 3272 | ||
3272 | /* | 3273 | /* |
3273 | void info_cb(Fl_Widget* o, void* _data) | 3274 | void info_cb(Fl_Widget* o, void* _data) |
3274 | { | 3275 | { |
3275 | 3276 | ||
3276 | if (infowin == NULL) | 3277 | if (infowin == NULL) |
3277 | { | 3278 | { |
3278 | 3279 | ||
3279 | infowin = new Fl_Window(160,240); | 3280 | infowin = new Fl_Window(160,240); |
3280 | filename = new Fl_Output(45,5,110,14,"Filename"); | 3281 | filename = new Fl_Output(45,5,110,14,"Filename"); |
3281 | filesize = new Fl_Output(45,25,110,14,"Filesize"); | 3282 | filesize = new Fl_Output(45,25,110,14,"Filesize"); |
3282 | textsize = new Fl_Output(45,45,110,14,"Textsize"); | 3283 | textsize = new Fl_Output(45,45,110,14,"Textsize"); |
3283 | comprat = new CBar(45,65,110,14,"Ratio %"); | 3284 | comprat = new CBar(45,65,110,14,"Ratio %"); |
3284 | posn = new Fl_Output(45,85,110,14,"Location"); | 3285 | posn = new Fl_Output(45,85,110,14,"Location"); |
3285 | frcn = new CBar(45,105,110,14,"% Read"); | 3286 | frcn = new CBar(45,105,110,14,"% Read"); |
3286 | about = new Fl_Multiline_Output(5,125,150,90); | 3287 | about = new Fl_Multiline_Output(5,125,150,90); |
3287 | 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"); |
3288 | 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"); |
3289 | infowin->set_modal(); | 3290 | infowin->set_modal(); |
3290 | } | 3291 | } |
3291 | if (((reader_ui *)_data)->g_filename[0] != '\0') | 3292 | if (((reader_ui *)_data)->g_filename[0] != '\0') |
3292 | { | 3293 | { |
3293 | unsigned long fs,ts; | 3294 | unsigned long fs,ts; |
3294 | tchar sz[20]; | 3295 | tchar sz[20]; |
3295 | ((reader_ui *)_data)->input->sizes(fs,ts); | 3296 | ((reader_ui *)_data)->input->sizes(fs,ts); |
3296 | unsigned long pl = ((reader_ui *)_data)->input->locate(); | 3297 | unsigned long pl = ((reader_ui *)_data)->input->locate(); |
3297 | 3298 | ||
3298 | filename->value(((reader_ui *)_data)->g_filename); | 3299 | filename->value(((reader_ui *)_data)->g_filename); |
3299 | 3300 | ||
3300 | sprintf(sz,"%u",fs); | 3301 | sprintf(sz,"%u",fs); |
3301 | filesize->value(sz); | 3302 | filesize->value(sz); |
3302 | 3303 | ||
3303 | sprintf(sz,"%u",ts); | 3304 | sprintf(sz,"%u",ts); |
3304 | textsize->value(sz); | 3305 | textsize->value(sz); |
3305 | 3306 | ||
3306 | comprat->value(100-(100*fs + (ts >> 1))/ts); | 3307 | comprat->value(100-(100*fs + (ts >> 1))/ts); |
3307 | 3308 | ||
3308 | sprintf(sz,"%u",pl); | 3309 | sprintf(sz,"%u",pl); |
3309 | posn->value(sz); | 3310 | posn->value(sz); |
3310 | 3311 | ||
3311 | frcn->value((100*pl + (ts >> 1))/ts); | 3312 | frcn->value((100*pl + (ts >> 1))/ts); |
3312 | } | 3313 | } |
3313 | infowin->show(); | 3314 | infowin->show(); |
3314 | } | 3315 | } |
3315 | */ | 3316 | */ |
3316 | 3317 | ||
3317 | void QTReaderApp::savebkmks() | 3318 | void QTReaderApp::savebkmks() |
3318 | { | 3319 | { |
3319 | if (pBkmklist != NULL) | 3320 | if (pBkmklist != NULL) |
3320 | { | 3321 | { |
3321 | #ifndef USEQPE | 3322 | #ifndef USEQPE |
3322 | QDir d = QDir::home(); // "/" | 3323 | QDir d = QDir::home(); // "/" |
3323 | d.cd(APPDIR); | 3324 | d.cd(APPDIR); |
3324 | QFileInfo fi(d, reader->m_string); | 3325 | QFileInfo fi(d, reader->m_string); |
3325 | BkmkFile bf((const char *)fi.absFilePath(), true); | 3326 | BkmkFile bf((const char *)fi.absFilePath(), true); |
3326 | #else /* USEQPE */ | 3327 | #else /* USEQPE */ |
3327 | BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string), true); | 3328 | BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string), true); |
3328 | #endif /* USEQPE */ | 3329 | #endif /* USEQPE */ |
3329 | bf.write(*pBkmklist); | 3330 | bf.write(*pBkmklist); |
3330 | } | 3331 | } |
3331 | m_fBkmksChanged = false; | 3332 | m_fBkmksChanged = false; |
3332 | } | 3333 | } |
3333 | 3334 | ||
3334 | void QTReaderApp::readfilelist() | 3335 | void QTReaderApp::readfilelist() |
3335 | { | 3336 | { |
3336 | #ifndef USEQPE | 3337 | #ifndef USEQPE |
3337 | QDir d = QDir::home(); // "/" | 3338 | QDir d = QDir::home(); // "/" |
3338 | d.cd(APPDIR); | 3339 | d.cd(APPDIR); |
3339 | QFileInfo fi(d, ".openfiles"); | 3340 | QFileInfo fi(d, ".openfiles"); |
3340 | BkmkFile bf((const char *)fi.absFilePath()); | 3341 | BkmkFile bf((const char *)fi.absFilePath()); |
3341 | #else /* USEQPE */ | 3342 | #else /* USEQPE */ |
3342 | BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles")); | 3343 | BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles")); |
3343 | #endif /* USEQPE */ | 3344 | #endif /* USEQPE */ |
3344 | // qDebug("Reading open files"); | 3345 | // odebug << "Reading open files" << oendl; |
3345 | pOpenlist = bf.readall(); | 3346 | pOpenlist = bf.readall(); |
3346 | // if (pOpenlist != NULL) qDebug("...with success"); | 3347 | // if (pOpenlist != NULL) odebug << "...with success" << oendl; |
3347 | // else qDebug("...without success!"); | 3348 | // else odebug << "...without success!" << oendl; |
3348 | } | 3349 | } |
3349 | 3350 | ||
3350 | void QTReaderApp::savefilelist() | 3351 | void QTReaderApp::savefilelist() |
3351 | { | 3352 | { |
3352 | if (pOpenlist != NULL) | 3353 | if (pOpenlist != NULL) |
3353 | { | 3354 | { |
3354 | #ifndef USEQPE | 3355 | #ifndef USEQPE |
3355 | QDir d = QDir::home(); // "/" | 3356 | QDir d = QDir::home(); // "/" |
3356 | d.cd(APPDIR); | 3357 | d.cd(APPDIR); |
3357 | QFileInfo fi(d, ".openfiles"); | 3358 | QFileInfo fi(d, ".openfiles"); |
3358 | BkmkFile bf((const char *)fi.absFilePath(), true); | 3359 | BkmkFile bf((const char *)fi.absFilePath(), true); |
3359 | #else /* USEQPE */ | 3360 | #else /* USEQPE */ |
3360 | BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles"), true); | 3361 | BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles"), true); |
3361 | #endif /* USEQPE */ | 3362 | #endif /* USEQPE */ |
3362 | //qDebug("Writing open files"); | 3363 | // odebug << "Writing open files" << oendl; |
3363 | bf.write(*pOpenlist); | 3364 | bf.write(*pOpenlist); |
3364 | } | 3365 | } |
3365 | } | 3366 | } |
3366 | 3367 | ||
3367 | void QTReaderApp::readbkmks() | 3368 | void QTReaderApp::readbkmks() |
3368 | { | 3369 | { |
3369 | if (pBkmklist != NULL) | 3370 | if (pBkmklist != NULL) |
3370 | { | 3371 | { |
3371 | delete pBkmklist; | 3372 | delete pBkmklist; |
3372 | } | 3373 | } |
3373 | struct stat fnstat; | 3374 | struct stat fnstat; |
3374 | struct stat bkstat; | 3375 | struct stat bkstat; |
3375 | #ifndef USEQPE | 3376 | #ifndef USEQPE |
3376 | QDir d = QDir::home(); // "/" | 3377 | QDir d = QDir::home(); // "/" |
3377 | d.cd(APPDIR); | 3378 | d.cd(APPDIR); |
3378 | QFileInfo fi(d, reader->m_string); | 3379 | QFileInfo fi(d, reader->m_string); |
3379 | #endif /* ! USEQPE */ | 3380 | #endif /* ! USEQPE */ |
3380 | if ( | 3381 | if ( |
3381 | stat((const char *)reader->m_lastfile, &fnstat) == 0 | 3382 | stat((const char *)reader->m_lastfile, &fnstat) == 0 |
3382 | && | 3383 | && |
3383 | #ifndef USEQPE | 3384 | #ifndef USEQPE |
3384 | stat((const char *)fi.absFilePath(), &bkstat) == 0 | 3385 | stat((const char *)fi.absFilePath(), &bkstat) == 0 |
3385 | #else /* USEQPE */ | 3386 | #else /* USEQPE */ |
3386 | stat((const char *)Global::applicationFileName(APPDIR,reader->m_string), &bkstat) == 0 | 3387 | stat((const char *)Global::applicationFileName(APPDIR,reader->m_string), &bkstat) == 0 |
3387 | #endif /* USEQPE */ | 3388 | #endif /* USEQPE */ |
3388 | ) | 3389 | ) |
3390 | { | ||
3391 | if (bkstat.st_mtime < fnstat.st_mtime) | ||
3389 | { | 3392 | { |
3390 | if (bkstat.st_mtime < fnstat.st_mtime) | ||
3391 | { | ||
3392 | #ifndef USEQPE | 3393 | #ifndef USEQPE |
3393 | unlink((const char *)fi.absFilePath()); | 3394 | unlink((const char *)fi.absFilePath()); |
3394 | #else /* USEQPE */ | 3395 | #else /* USEQPE */ |
3395 | unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); | 3396 | unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); |
3396 | #endif /* USEQPE */ | 3397 | #endif /* USEQPE */ |
3397 | } | 3398 | } |
3398 | } | 3399 | } |
3399 | 3400 | ||
3400 | #ifndef USEQPE | 3401 | #ifndef USEQPE |
3401 | BkmkFile bf((const char *)fi.absFilePath()); | 3402 | BkmkFile bf((const char *)fi.absFilePath()); |
3402 | #else /* USEQPE */ | 3403 | #else /* USEQPE */ |
3403 | BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string)); | 3404 | BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string)); |
3404 | #endif /* USEQPE */ | 3405 | #endif /* USEQPE */ |
3405 | 3406 | ||
3406 | pBkmklist = bf.readall(); | 3407 | pBkmklist = bf.readall(); |
3407 | m_fBkmksChanged = bf.upgraded(); | 3408 | m_fBkmksChanged = bf.upgraded(); |
3408 | if (pBkmklist == NULL) | 3409 | if (pBkmklist == NULL) |
3409 | { | 3410 | { |
3410 | pBkmklist = reader->getbkmklist(); | 3411 | pBkmklist = reader->getbkmklist(); |
3411 | } | 3412 | } |
3412 | if (pBkmklist != NULL) | 3413 | if (pBkmklist != NULL) |
3413 | pBkmklist->sort(); | 3414 | pBkmklist->sort(); |
3414 | } | 3415 | } |
3415 | 3416 | ||
3416 | void QTReaderApp::addbkmk() | 3417 | void QTReaderApp::addbkmk() |
3417 | { | 3418 | { |
3418 | m_nRegAction = cAddBkmk; | 3419 | m_nRegAction = cAddBkmk; |
3419 | regEdit->setText(reader->firstword()); | 3420 | regEdit->setText(reader->firstword()); |
3420 | do_regedit(); | 3421 | do_regedit(); |
3421 | } | 3422 | } |
3422 | 3423 | ||
3423 | void QTReaderApp::do_addbkmk(const QString& text) | 3424 | void QTReaderApp::do_addbkmk(const QString& text) |
3424 | { | 3425 | { |
3425 | if (text.isEmpty()) | 3426 | if (text.isEmpty()) |
3426 | { | 3427 | { |
3427 | 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); |
3428 | } | 3429 | } |
3429 | else | 3430 | else |
3430 | { | 3431 | { |
3431 | if (pBkmklist == NULL) pBkmklist = new CList<Bkmk>; | 3432 | if (pBkmklist == NULL) pBkmklist = new CList<Bkmk>; |
3432 | #ifdef _UNICODE | 3433 | #ifdef _UNICODE |
3433 | CBuffer buff; | 3434 | CBuffer buff; |
3434 | int i = 0; | 3435 | int i = 0; |
3435 | for (i = 0; i < text.length(); i++) | 3436 | for (i = 0; i < text.length(); i++) |
3436 | { | 3437 | { |
3437 | buff[i] = text[i].unicode(); | 3438 | buff[i] = text[i].unicode(); |
3438 | } | 3439 | } |
3439 | buff[i] = 0; | 3440 | buff[i] = 0; |
3440 | pBkmklist->push_front(Bkmk(buff.data(), NULL, reader->pagelocate())); | 3441 | pBkmklist->push_front(Bkmk(buff.data(), NULL, reader->pagelocate())); |
3441 | #else | 3442 | #else |
3442 | pBkmklist->push_front(Bkmk((const tchar*)text, reader->pagelocate())); | 3443 | pBkmklist->push_front(Bkmk((const tchar*)text, reader->pagelocate())); |
3443 | #endif | 3444 | #endif |
3444 | m_fBkmksChanged = true; | 3445 | m_fBkmksChanged = true; |
3445 | pBkmklist->sort(); | 3446 | pBkmklist->sort(); |
3446 | } | 3447 | } |
3447 | } | 3448 | } |
3448 | 3449 | ||
3449 | void QTReaderApp::OnRedraw() | 3450 | void QTReaderApp::OnRedraw() |
3450 | { | 3451 | { |
3451 | if ((pBkmklist != NULL) && (m_bkmkAvail != NULL)) | 3452 | if ((pBkmklist != NULL) && (m_bkmkAvail != NULL)) |
3452 | { | 3453 | { |
3453 | bool found = findNextBookmark(reader->pagelocate()); | 3454 | bool found = findNextBookmark(reader->pagelocate()); |
3454 | m_bkmkAvail->setEnabled(found); | 3455 | m_bkmkAvail->setEnabled(found); |
3455 | } | 3456 | } |
3456 | } | 3457 | } |
3457 | 3458 | ||
3458 | void QTReaderApp::showAnnotation() | 3459 | void QTReaderApp::showAnnotation() |
3459 | { | 3460 | { |
3460 | m_annoWin->setName(toQString(m_anno->name())); | 3461 | m_annoWin->setName(toQString(m_anno->name())); |
3461 | m_annoWin->setAnno(toQString(m_anno->anno())); | 3462 | m_annoWin->setAnno(toQString(m_anno->anno())); |
3462 | m_annoIsEditing = false; | 3463 | m_annoIsEditing = false; |
3463 | #ifdef USEQPE | 3464 | #ifdef USEQPE |
3464 | Global::showInputMethod(); | 3465 | Global::showInputMethod(); |
3465 | #endif | 3466 | #endif |
3466 | editorStack->raiseWidget( m_annoWin ); | 3467 | editorStack->raiseWidget( m_annoWin ); |
3467 | m_annoWin->setFocus(); | 3468 | m_annoWin->setFocus(); |
3468 | } | 3469 | } |
3469 | 3470 | ||
3470 | void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, const QString& line) | 3471 | void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, const QString& line) |
3471 | { | 3472 | { |
3472 | //// qDebug("OnWordSelected(%u):%s", posn, (const char*)wrd); | 3473 | //// odebug << "OnWordSelected(" << posn << "):" << wrd << "" << oendl; |
3473 | 3474 | ||
3474 | if (m_doClipboard) | 3475 | if (m_doClipboard) |
3475 | { | 3476 | { |
3476 | QClipboard* cb = QApplication::clipboard(); | 3477 | QClipboard* cb = QApplication::clipboard(); |
3477 | cb->setText(wrd); | 3478 | cb->setText(wrd); |
3478 | #ifdef USEQPE | 3479 | #ifdef USEQPE |
3479 | if (wrd.length() > 10) | 3480 | if (wrd.length() > 10) |
3480 | { | 3481 | { |
3481 | Global::statusMessage(wrd.left(8) + ".."); | 3482 | Global::statusMessage(wrd.left(8) + ".."); |
3482 | } | 3483 | } |
3483 | else | 3484 | else |
3484 | { | 3485 | { |
3485 | Global::statusMessage(wrd); | 3486 | Global::statusMessage(wrd); |
3486 | } | 3487 | } |
3487 | #endif | 3488 | #endif |
3488 | } | 3489 | } |
3489 | if (m_doAnnotation) | 3490 | if (m_doAnnotation) |
3490 | { | 3491 | { |
3491 | //addAnno(wrd, "Need to be able to edit this", posn); | 3492 | // addAnno(wrd, "Need to be able to edit this", posn); |
3492 | m_annoWin->setName(line); | 3493 | m_annoWin->setName(line); |
3493 | m_annoWin->setAnno(""); | 3494 | m_annoWin->setAnno(""); |
3494 | m_annoWin->setPosn(posn); | 3495 | m_annoWin->setPosn(posn); |
3495 | m_annoIsEditing = true; | 3496 | m_annoIsEditing = true; |
3496 | #ifdef USEQPE | 3497 | #ifdef USEQPE |
3497 | Global::showInputMethod(); | 3498 | Global::showInputMethod(); |
3498 | #endif | 3499 | #endif |
3499 | editorStack->raiseWidget( m_annoWin ); | 3500 | editorStack->raiseWidget( m_annoWin ); |
3500 | } | 3501 | } |
3501 | #ifdef USEQPE | 3502 | #ifdef USEQPE |
3502 | if (m_doDictionary) | 3503 | if (m_doDictionary) |
3503 | { | 3504 | { |
3504 | if (!m_targetapp.isEmpty() && !m_targetmsg.isEmpty()) | 3505 | if (!m_targetapp.isEmpty() && !m_targetmsg.isEmpty()) |
3505 | { | 3506 | { |
3506 | QCopEnvelope e(("QPE/Application/"+m_targetapp).utf8(), (m_targetmsg+"(QString)").utf8()); | 3507 | QCopEnvelope e(("QPE/Application/"+m_targetapp).utf8(), (m_targetmsg+"(QString)").utf8()); |
3507 | e << wrd; | 3508 | e << wrd; |
3508 | } | 3509 | } |
3509 | } | 3510 | } |
3510 | #endif | 3511 | #endif |
3511 | } | 3512 | } |
3512 | 3513 | ||
3513 | void QTReaderApp::doAction(ActionTypes a, QKeyEvent* e) | 3514 | void QTReaderApp::doAction(ActionTypes a, QKeyEvent* e) |
3514 | { | 3515 | { |
3515 | if (a == 0) | 3516 | if (a == 0) |
3516 | { | 3517 | { |
3517 | e->ignore(); | 3518 | e->ignore(); |
3518 | } | 3519 | } |
3519 | else | 3520 | else |
3520 | { | 3521 | { |
3521 | e->accept(); | 3522 | e->accept(); |
3522 | //qDebug("Accepted"); | 3523 | // odebug << "Accepted" << oendl; |
3523 | switch (a) | 3524 | switch (a) |
3524 | { | 3525 | { |
3525 | case cesOpenFile: | 3526 | case cesOpenFile: |
3526 | { | 3527 | { |
3527 | fileOpen(); | 3528 | fileOpen(); |
3528 | } | 3529 | } |
3529 | break; | 3530 | break; |
3530 | case cesAutoScroll: | 3531 | case cesAutoScroll: |
3531 | { | 3532 | { |
3532 | reader->setautoscroll(!reader->m_autoScroll); | 3533 | reader->setautoscroll(!reader->m_autoScroll); |
3533 | setScrollState(reader->m_autoScroll); | 3534 | setScrollState(reader->m_autoScroll); |
3534 | } | 3535 | } |
3535 | break; | 3536 | break; |
3536 | case cesActionMark: | 3537 | case cesActionMark: |
3537 | { | 3538 | { |
3538 | addbkmk(); | 3539 | addbkmk(); |
3539 | } | 3540 | } |
3540 | break; | 3541 | break; |
3541 | case cesFullScreen: | 3542 | case cesFullScreen: |
3542 | { | 3543 | { |
3543 | m_actFullscreen->setOn(!m_fullscreen); | 3544 | m_actFullscreen->setOn(!m_fullscreen); |
3544 | } | 3545 | } |
3545 | break; | 3546 | break; |
3546 | case cesActionAnno: | 3547 | case cesActionAnno: |
3547 | { | 3548 | { |
3548 | addanno(); | 3549 | addanno(); |
3549 | } | 3550 | } |
3550 | break; | 3551 | break; |
3551 | case cesZoomIn: | 3552 | case cesZoomIn: |
3552 | zoomin(); | 3553 | zoomin(); |
3553 | break; | 3554 | break; |
3554 | case cesZoomOut: | 3555 | case cesZoomOut: |
3555 | zoomout(); | 3556 | zoomout(); |
3556 | break; | 3557 | break; |
3557 | case cesBack: | 3558 | case cesBack: |
3558 | reader->goBack(); | 3559 | reader->goBack(); |
3559 | break; | 3560 | break; |
3560 | case cesForward: | 3561 | case cesForward: |
3561 | reader->goForward(); | 3562 | reader->goForward(); |
3562 | break; | 3563 | break; |
3563 | case cesHome: | 3564 | case cesHome: |
3564 | reader->goHome(); | 3565 | reader->goHome(); |
3565 | break; | 3566 | break; |
3566 | case cesPageUp: | 3567 | case cesPageUp: |
3567 | reader->dopageup(); | 3568 | reader->dopageup(); |
3568 | break; | 3569 | break; |
3569 | case cesPageDown: | 3570 | case cesPageDown: |
3570 | reader->dopagedn(); | 3571 | reader->dopagedn(); |
3571 | break; | 3572 | break; |
3572 | case cesLineUp: | 3573 | case cesLineUp: |
3573 | reader->lineUp(); | 3574 | reader->lineUp(); |
3574 | break; | 3575 | break; |
3575 | case cesLineDown: | 3576 | case cesLineDown: |
3576 | reader->lineDown(); | 3577 | reader->lineDown(); |
3577 | break; | 3578 | break; |
3578 | case cesStartDoc: | 3579 | case cesStartDoc: |
3579 | gotoStart(); | 3580 | gotoStart(); |
3580 | break; | 3581 | break; |
3581 | case cesEndDoc: | 3582 | case cesEndDoc: |
3582 | gotoEnd(); | 3583 | gotoEnd(); |
3583 | break; | 3584 | break; |
3584 | default: | 3585 | default: |
3585 | qDebug("Unknown ActionType:%u", a); | 3586 | odebug << "Unknown ActionType:" << a << "" << oendl; |
3586 | break; | 3587 | break; |
3587 | } | 3588 | } |
3588 | } | 3589 | } |
3589 | } | 3590 | } |
3590 | 3591 | ||
3591 | void QTReaderApp::setTwoTouch(bool _b) { reader->setTwoTouch(_b); } | 3592 | void QTReaderApp::setTwoTouch(bool _b) { reader->setTwoTouch(_b); } |
3592 | void QTReaderApp::restoreFocus() { reader->setFocus(); } | 3593 | void QTReaderApp::restoreFocus() { reader->setFocus(); } |
3593 | 3594 | ||
3594 | void QTReaderApp::SaveConfig() | 3595 | void QTReaderApp::SaveConfig() |
3595 | { | 3596 | { |
3596 | m_nRegAction = cSetConfigName; | 3597 | m_nRegAction = cSetConfigName; |
3597 | regEdit->setText(reader->m_string); | 3598 | regEdit->setText(reader->m_string); |
3598 | do_regedit(); | 3599 | do_regedit(); |
3599 | } | 3600 | } |
3600 | 3601 | ||
3601 | void QTReaderApp::do_saveconfig(const QString& _txt, bool full) | 3602 | void QTReaderApp::do_saveconfig(const QString& _txt, bool full) |
3602 | { | 3603 | { |
3603 | // qDebug("do_saveconfig:%s", (const char*)_txt); | 3604 | // odebug << "do_saveconfig:" << _txt << "" << oendl; |
3604 | #ifdef USEQPE | 3605 | #ifdef USEQPE |
3605 | QString configname; | 3606 | QString configname; |
3606 | Config::Domain dom; | 3607 | Config::Domain dom; |
3607 | 3608 | ||
3608 | if (full) | 3609 | if (full) |
3609 | { | 3610 | { |
3610 | configname = _txt; | 3611 | configname = _txt; |
3611 | dom = Config::User; | 3612 | dom = Config::User; |
3612 | } | 3613 | } |
3613 | else | 3614 | else |
3614 | { | 3615 | { |
3615 | configname = Global::applicationFileName(APPDIR "/configs", _txt); | 3616 | configname = Global::applicationFileName(APPDIR "/configs", _txt); |
3616 | dom = Config::File; | 3617 | dom = Config::File; |
3617 | } | 3618 | } |
3618 | 3619 | ||
3619 | Config config(configname, dom); | 3620 | Config config(configname, dom); |
3620 | config.setGroup( "View" ); | 3621 | config.setGroup( "View" ); |
3621 | 3622 | ||
3622 | #else | 3623 | #else |
3623 | QFileInfo fi; | 3624 | QFileInfo fi; |
3624 | if (full) | 3625 | if (full) |
3625 | { | 3626 | { |
3626 | // qDebug("full:%s", (const char*)_txt); | 3627 | // odebug << "full:" << _txt << "" << oendl; |
3627 | QDir d = QDir::home(); // "/" | 3628 | QDir d = QDir::home(); // "/" |
3628 | if ( !d.cd(_txt) ) | 3629 | if ( !d.cd(_txt) ) |
3629 | { // "/tmp" | 3630 | { // "/tmp" |
3630 | qWarning( "Cannot find the \"~/%s\" directory", (const char*)_txt ); | 3631 | owarn << "Cannot find the \"~/" << _txt << "\" directory" << oendl; |
3631 | d = QDir::home(); | 3632 | d = QDir::home(); |
3632 | d.mkdir(_txt); | 3633 | d.mkdir(_txt); |
3633 | d.cd(_txt); | 3634 | d.cd(_txt); |
3634 | } | 3635 | } |
3635 | fi.setFile(d, INIFILE); | 3636 | fi.setFile(d, INIFILE); |
3636 | } | 3637 | } |
3637 | else | 3638 | else |
3638 | { | 3639 | { |
3639 | QDir d = QDir::home(); // "/" | 3640 | QDir d = QDir::home(); // "/" |
3640 | if ( !d.cd(APPDIR) ) | 3641 | if ( !d.cd(APPDIR) ) |
3641 | { // "/tmp" | 3642 | { // "/tmp" |
3642 | qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); | 3643 | owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; |
3643 | d = QDir::home(); | 3644 | d = QDir::home(); |
3644 | d.mkdir(APPDIR); | 3645 | d.mkdir(APPDIR); |
3645 | d.cd(APPDIR); | 3646 | d.cd(APPDIR); |
3646 | } | 3647 | } |
3647 | if ( !d.cd("configs") ) | 3648 | if ( !d.cd("configs") ) |
3648 | { // "/tmp" | 3649 | { // "/tmp" |
3649 | qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" ); | 3650 | owarn << "Cannot find the \"~/" APPDIR "/configs\" directory" << oendl; |
3650 | d = QDir::home(); | 3651 | d = QDir::home(); |
3651 | d.cd(APPDIR); | 3652 | d.cd(APPDIR); |
3652 | d.mkdir("configs"); | 3653 | d.mkdir("configs"); |
3653 | d.cd("configs"); | 3654 | d.cd("configs"); |
3654 | } | 3655 | } |
3655 | fi.setFile(d, _txt); | 3656 | fi.setFile(d, _txt); |
3656 | } | 3657 | } |
3657 | //qDebug("Path:%s", (const char*)fi.absFilePath()); | 3658 | // odebug << "Path:" << fi.absFilePath() << "" << oendl; |
3658 | Config config(fi.absFilePath()); | 3659 | Config config(fi.absFilePath()); |
3659 | #endif | 3660 | #endif |
3660 | 3661 | ||
3661 | 3662 | ||
3662 | config.writeEntry( "StripCr", reader->bstripcr ); | 3663 | config.writeEntry( "StripCr", reader->bstripcr ); |
3663 | config.writeEntry( "AutoFmt", reader->bautofmt ); | 3664 | config.writeEntry( "AutoFmt", reader->bautofmt ); |
3664 | config.writeEntry( "TextFmt", reader->btextfmt ); | 3665 | config.writeEntry( "TextFmt", reader->btextfmt ); |
3665 | config.writeEntry( "StripHtml", reader->bstriphtml ); | 3666 | config.writeEntry( "StripHtml", reader->bstriphtml ); |
3666 | config.writeEntry( "Dehyphen", reader->bdehyphen ); | 3667 | config.writeEntry( "Dehyphen", reader->bdehyphen ); |
3667 | config.writeEntry( "Depluck", reader->bdepluck ); | 3668 | config.writeEntry( "Depluck", reader->bdepluck ); |
3668 | config.writeEntry( "Dejpluck", reader->bdejpluck ); | 3669 | config.writeEntry( "Dejpluck", reader->bdejpluck ); |
3669 | config.writeEntry( "OneSpace", reader->bonespace ); | 3670 | config.writeEntry( "OneSpace", reader->bonespace ); |
3670 | config.writeEntry( "Unindent", reader->bunindent ); | 3671 | config.writeEntry( "Unindent", reader->bunindent ); |
3671 | config.writeEntry( "Repara", reader->brepara ); | 3672 | config.writeEntry( "Repara", reader->brepara ); |
3672 | config.writeEntry( "DoubleSpace", reader->bdblspce ); | 3673 | config.writeEntry( "DoubleSpace", reader->bdblspce ); |
3673 | config.writeEntry( "Indent", reader->bindenter ); | 3674 | config.writeEntry( "Indent", reader->bindenter ); |
3674 | config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) ); | 3675 | config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) ); |
3675 | config.writeEntry( "ScrollDelay", reader->m_delay); | 3676 | config.writeEntry( "ScrollDelay", reader->m_delay); |
3676 | if (full) | 3677 | if (full) |
3677 | { | 3678 | { |
3678 | config.writeEntry("Debounce", m_debounce); | 3679 | config.writeEntry("Debounce", m_debounce); |
3679 | config.writeEntry("FloatDialogs", m_bFloatingDialog); | 3680 | config.writeEntry("FloatDialogs", m_bFloatingDialog); |
3680 | reader->m_lastposn = reader->pagelocate(); | 3681 | reader->m_lastposn = reader->pagelocate(); |
3681 | config.writeEntry( "LastFile", reader->m_lastfile ); | 3682 | config.writeEntry( "LastFile", reader->m_lastfile ); |
3682 | config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); | 3683 | config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); |
3683 | } | 3684 | } |
3684 | config.writeEntry( "PageMode", reader->m_bpagemode ); | 3685 | config.writeEntry( "PageMode", reader->m_bpagemode ); |
3685 | config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); | 3686 | config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); |
3686 | config.writeEntry( "SwapMouse", reader->m_swapmouse); | 3687 | config.writeEntry( "SwapMouse", reader->m_swapmouse); |
3687 | config.writeEntry( "Fontname", reader->m_fontname ); | 3688 | config.writeEntry( "Fontname", reader->m_fontname ); |
3688 | config.writeEntry( "Encoding", reader->m_encd ); | 3689 | config.writeEntry( "Encoding", reader->m_encd ); |
3689 | config.writeEntry( "CharSpacing", reader->m_charpc ); | 3690 | config.writeEntry( "CharSpacing", reader->m_charpc ); |
3690 | config.writeEntry( "Overlap", (int)(reader->m_overlap) ); | 3691 | config.writeEntry( "Overlap", (int)(reader->m_overlap) ); |
3691 | config.writeEntry( "Margin", (int)reader->m_border ); | 3692 | config.writeEntry( "Margin", (int)reader->m_border ); |
3692 | config.writeEntry( "TargetApp", m_targetapp ); | 3693 | config.writeEntry( "TargetApp", m_targetapp ); |
3693 | config.writeEntry( "TargetMsg", m_targetmsg ); | 3694 | config.writeEntry( "TargetMsg", m_targetmsg ); |
3694 | #ifdef _SCROLLPIPE | 3695 | #ifdef _SCROLLPIPE |
3695 | config.writeEntry( "PipeTarget", reader->m_pipetarget ); | 3696 | config.writeEntry( "PipeTarget", reader->m_pipetarget ); |
3696 | config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); | 3697 | config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); |
3697 | #endif | 3698 | #endif |
3698 | config.writeEntry( "TwoTouch", m_twoTouch ); | 3699 | config.writeEntry( "TwoTouch", m_twoTouch ); |
3699 | config.writeEntry( "Annotation", m_doAnnotation); | 3700 | config.writeEntry( "Annotation", m_doAnnotation); |
3700 | config.writeEntry( "Dictionary", m_doDictionary); | 3701 | config.writeEntry( "Dictionary", m_doDictionary); |
3701 | config.writeEntry( "Clipboard", m_doClipboard); | 3702 | config.writeEntry( "Clipboard", m_doClipboard); |
3702 | config.writeEntry( "SpaceTarget", m_spaceTarget); | 3703 | config.writeEntry( "SpaceTarget", m_spaceTarget); |
3703 | config.writeEntry( "EscapeTarget", m_escapeTarget); | 3704 | config.writeEntry( "EscapeTarget", m_escapeTarget); |
3704 | config.writeEntry( "ReturnTarget", m_returnTarget); | 3705 | config.writeEntry( "ReturnTarget", m_returnTarget); |
3705 | config.writeEntry( "LeftTarget", m_leftTarget); | 3706 | config.writeEntry( "LeftTarget", m_leftTarget); |
3706 | config.writeEntry( "RightTarget", m_rightTarget); | 3707 | config.writeEntry( "RightTarget", m_rightTarget); |
3707 | config.writeEntry( "UpTarget", m_upTarget); | 3708 | config.writeEntry( "UpTarget", m_upTarget); |
3708 | config.writeEntry( "DownTarget", m_downTarget); | 3709 | config.writeEntry( "DownTarget", m_downTarget); |
3709 | config.writeEntry("LeftScroll", m_leftScroll); | 3710 | config.writeEntry("LeftScroll", m_leftScroll); |
3710 | config.writeEntry("RightScroll", m_rightScroll); | 3711 | config.writeEntry("RightScroll", m_rightScroll); |
3711 | config.writeEntry("UpScroll", m_upScroll); | 3712 | config.writeEntry("UpScroll", m_upScroll); |
3712 | config.writeEntry("DownScroll", m_downScroll); | 3713 | config.writeEntry("DownScroll", m_downScroll); |
3713 | #ifdef REPALM | 3714 | #ifdef REPALM |
3714 | config.writeEntry( "Repalm", reader->brepalm ); | 3715 | config.writeEntry( "Repalm", reader->brepalm ); |
3715 | #endif | 3716 | #endif |
3716 | config.writeEntry( "Remap", reader->bremap ); | 3717 | config.writeEntry( "Remap", reader->bremap ); |
3717 | config.writeEntry( "Peanut", reader->bpeanut ); | 3718 | config.writeEntry( "Peanut", reader->bpeanut ); |
3718 | config.writeEntry( "MakeBold", reader->bmakebold ); | 3719 | config.writeEntry( "MakeBold", reader->bmakebold ); |
3719 | config.writeEntry( "Continuous", reader->m_continuousDocument ); | 3720 | config.writeEntry( "Continuous", reader->m_continuousDocument ); |
3720 | config.writeEntry( "FullJust", reader->bfulljust ); | 3721 | config.writeEntry( "FullJust", reader->bfulljust ); |
3721 | config.writeEntry( "ExtraSpace", reader->getextraspace() ); | 3722 | config.writeEntry( "ExtraSpace", reader->getextraspace() ); |
3722 | config.writeEntry( "ExtraLead", reader->getlead() ); | 3723 | config.writeEntry( "ExtraLead", reader->getlead() ); |
3723 | config.writeEntry( "Basesize", (int)reader->getBaseSize()); | 3724 | config.writeEntry( "Basesize", (int)reader->getBaseSize()); |
3724 | config.writeEntry( "RequestorFontChange", m_propogatefontchange); | 3725 | config.writeEntry( "RequestorFontChange", m_propogatefontchange); |
3725 | if (full) | 3726 | if (full) |
3726 | { | 3727 | { |
3727 | config.setGroup( "Toolbar" ); | 3728 | config.setGroup( "Toolbar" ); |
3728 | config.writeEntry("Movable", m_tbmovesave); | 3729 | config.writeEntry("Movable", m_tbmovesave); |
3729 | config.writeEntry("Policy", m_tbpolsave); | 3730 | config.writeEntry("Policy", m_tbpolsave); |
3730 | config.writeEntry("Position", m_tbposition); | 3731 | config.writeEntry("Position", m_tbposition); |
3731 | #ifndef USEQPE | 3732 | #ifndef USEQPE |
3732 | config.setGroup( "Geometry" ); | 3733 | config.setGroup( "Geometry" ); |
3733 | config.writeEntry( "x", x() ); | 3734 | config.writeEntry( "x", x() ); |
3734 | config.writeEntry( "y", y() ); | 3735 | config.writeEntry( "y", y() ); |
3735 | config.writeEntry( "width", width() ); | 3736 | config.writeEntry( "width", width() ); |
3736 | config.writeEntry( "height", height() ); | 3737 | config.writeEntry( "height", height() ); |
3737 | #endif | 3738 | #endif |
3738 | } | 3739 | } |
3739 | } | 3740 | } |
3740 | 3741 | ||
3741 | /* | 3742 | /* |
3742 | void QTReaderApp::setstate(unsigned char* _sd, unsigned short _sdlen) | 3743 | void QTReaderApp::setstate(unsigned char* _sd, unsigned short _sdlen) |
3743 | { | 3744 | { |
3744 | unsigned short sdlen; | 3745 | unsigned short sdlen; |
3745 | memcpy(&sdlen, _sd, sizeof(sdlen)); | 3746 | memcpy(&sdlen, _sd, sizeof(sdlen)); |
3746 | sdlen -= sizeof(sdlen); | 3747 | sdlen -= sizeof(sdlen); |
3747 | _sd += sizeof(sdlen); | 3748 | _sd += sizeof(sdlen); |
3748 | statedata* sd; | 3749 | statedata* sd; |
3749 | char* data; | 3750 | char* data; |
3750 | if (sdlen < sizeof(statedata)+1) | 3751 | if (sdlen < sizeof(statedata)+1) |
3751 | { | 3752 | { |
3752 | sdlen = sizeof(statedata)+1; | 3753 | sdlen = sizeof(statedata)+1; |
3753 | } | 3754 | } |
3754 | data = new char[sdlen]; | 3755 | data = new char[sdlen]; |
3755 | sd = (statedata*)data; | 3756 | sd = (statedata*)data; |
3756 | memcpy(sd, _sd, sdlen); | 3757 | memcpy(sd, _sd, sdlen); |
3757 | data[sdlen] = 0; | 3758 | data[sdlen] = 0; |
3758 | reader->setstate(*sd); | 3759 | reader->setstate(*sd); |
3759 | delete [] data; | 3760 | delete [] data; |
3760 | } | 3761 | } |
3761 | 3762 | ||
3762 | void QTReaderApp::getstate(unsigned char*& data, unsigned short& len) | 3763 | void QTReaderApp::getstate(unsigned char*& data, unsigned short& len) |
3763 | { | 3764 | { |
3764 | unsigned char* olddata = data; | 3765 | unsigned char* olddata = data; |
3765 | unsigned short oldlen = len; | 3766 | unsigned short oldlen = len; |
3766 | len = oldlen+sizeof(unsigned short)+sizeof(statedata)+reader->m_fontname.length(); | 3767 | len = oldlen+sizeof(unsigned short)+sizeof(statedata)+reader->m_fontname.length(); |
3767 | data = new unsigned char[len]; | 3768 | data = new unsigned char[len]; |
3768 | memcpy(data, olddata, oldlen); | 3769 | memcpy(data, olddata, oldlen); |
3769 | delete [] olddata; | 3770 | delete [] olddata; |
3770 | memcpy(data+oldlen, &len, sizeof(len)); | 3771 | memcpy(data+oldlen, &len, sizeof(len)); |
3771 | statedata* sd = (statedata*)(data+oldlen+sizeof(unsigned short)); | 3772 | statedata* sd = (statedata*)(data+oldlen+sizeof(unsigned short)); |
3772 | 3773 | ||
3773 | sd->bstripcr = reader->bstripcr; | 3774 | sd->bstripcr = reader->bstripcr; |
3774 | sd->btextfmt = reader->btextfmt; | 3775 | sd->btextfmt = reader->btextfmt; |
3775 | sd->bautofmt = reader->bautofmt; | 3776 | sd->bautofmt = reader->bautofmt; |
3776 | sd->bstriphtml = reader->bstriphtml; | 3777 | sd->bstriphtml = reader->bstriphtml; |
3777 | sd->bpeanut = reader->bpeanut; | 3778 | sd->bpeanut = reader->bpeanut; |
3778 | sd->bdehyphen = reader->bdehyphen; | 3779 | sd->bdehyphen = reader->bdehyphen; |
3779 | sd->bdepluck = reader->bdepluck; | 3780 | sd->bdepluck = reader->bdepluck; |
3780 | sd->bdejpluck = reader->bdejpluck; | 3781 | sd->bdejpluck = reader->bdejpluck; |
3781 | sd->bonespace = reader->bonespace; | 3782 | sd->bonespace = reader->bonespace; |
3782 | sd->bunindent = reader->bunindent; | 3783 | sd->bunindent = reader->bunindent; |
3783 | sd->brepara = reader->brepara; | 3784 | sd->brepara = reader->brepara; |
3784 | sd->bdblspce = reader->bdblspce; | 3785 | sd->bdblspce = reader->bdblspce; |
3785 | sd->m_bpagemode = reader->m_bpagemode; | 3786 | sd->m_bpagemode = reader->m_bpagemode; |
3786 | sd->m_bMonoSpaced = reader->m_bMonoSpaced; | 3787 | sd->m_bMonoSpaced = reader->m_bMonoSpaced; |
3787 | sd->bremap = reader->bremap; | 3788 | sd->bremap = reader->bremap; |
3788 | sd->bmakebold = reader->bmakebold; | 3789 | sd->bmakebold = reader->bmakebold; |
3789 | sd->Continuous = reader->m_continuousDocument; | 3790 | sd->Continuous = reader->m_continuousDocument; |
3790 | #ifdef REPALM | 3791 | #ifdef REPALM |
3791 | sd->brepalm = reader->brepalm; | 3792 | sd->brepalm = reader->brepalm; |
3792 | #endif | 3793 | #endif |
3793 | sd->bindenter = reader->bindenter; | 3794 | sd->bindenter = reader->bindenter; |
3794 | sd->m_textsize = reader->m_textsize; //reader->m_fontControl.currentsize() | 3795 | sd->m_textsize = reader->m_textsize; //reader->m_fontControl.currentsize() |
3795 | sd->m_encd = reader->m_encd; | 3796 | sd->m_encd = reader->m_encd; |
3796 | sd->m_charpc = reader->m_charpc; | 3797 | sd->m_charpc = reader->m_charpc; |
3797 | strcpy(sd->m_fontname, reader->m_fontname.latin1()); | 3798 | strcpy(sd->m_fontname, reader->m_fontname.latin1()); |
3798 | } | 3799 | } |
3799 | */ | 3800 | */ |
3800 | #ifdef _SCRIPT | 3801 | #ifdef _SCRIPT |
3801 | void QTReaderApp::RunScript() | 3802 | void QTReaderApp::RunScript() |
3802 | { | 3803 | { |
3803 | fileBrowser* fb = new fileBrowser(this,"OpieReader",!m_bFloatingDialog, | 3804 | fileBrowser* fb = new fileBrowser(this,"OpieReader",!m_bFloatingDialog, |
3804 | 0, | 3805 | 0, |
3805 | // WStyle_Customize | WStyle_NoBorderEx, | 3806 | // WStyle_Customize | WStyle_NoBorderEx, |
3806 | "*", Global::applicationFileName(APPDIR "/scripts", "")); | 3807 | "*", Global::applicationFileName(APPDIR "/scripts", "")); |
3807 | 3808 | ||
3808 | QString fn; | 3809 | QString fn; |
3809 | if (fb->exec()) | 3810 | if (fb->exec()) |
3810 | { | 3811 | { |
3811 | fn = fb->fileList[0]; | 3812 | fn = fb->fileList[0]; |
3812 | } | 3813 | } |
3813 | delete fb; | 3814 | delete fb; |
3814 | if ( !fn.isEmpty() && fork() == 0 ) | 3815 | if ( !fn.isEmpty() && fork() == 0 ) |
3815 | { | 3816 | { |
3816 | execlp((const char *)fn,(const char *)fn,NULL); | 3817 | execlp((const char *)fn,(const char *)fn,NULL); |
3817 | } | 3818 | } |
3818 | } | 3819 | } |
3819 | 3820 | ||
3820 | void QTReaderApp::SaveScript(const char* sname) | 3821 | void QTReaderApp::SaveScript(const char* sname) |
3821 | { | 3822 | { |
3822 | FILE* f = fopen(sname,"w"); | 3823 | FILE* f = fopen(sname,"w"); |
3823 | if (f != NULL) | 3824 | if (f != NULL) |
3824 | { | 3825 | { |
3825 | #ifdef OPIE | 3826 | #ifdef OPIE |
3826 | 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"); |
3827 | #else | 3828 | #else |
3828 | 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"); |
3829 | #endif | 3830 | #endif |
3830 | fprintf(f, "msg \"Update(int)\" 0\n"); | 3831 | fprintf(f, "msg \"Update(int)\" 0\n"); |
3831 | 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); |
3832 | if (reader->btextfmt) fprintf(f, "msg \"Markup(QString)\" \"Text\"\n"); | 3833 | if (reader->btextfmt) fprintf(f, "msg \"Markup(QString)\" \"Text\"\n"); |
3833 | else if (reader->bautofmt) fprintf(f, "msg \"Markup(QString)\" \"Auto\"\n"); | 3834 | else if (reader->bautofmt) fprintf(f, "msg \"Markup(QString)\" \"Auto\"\n"); |
3834 | else if (reader->bstriphtml) fprintf(f, "msg \"Markup(QString)\" \"HTML\"\n"); | 3835 | else if (reader->bstriphtml) fprintf(f, "msg \"Markup(QString)\" \"HTML\"\n"); |
3835 | 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"); |
3836 | else fprintf(f, "msg \"Markup(QString)\" \"None\"\n"); | 3837 | else fprintf(f, "msg \"Markup(QString)\" \"None\"\n"); |
3837 | 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); |
3838 | 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); |
3839 | 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); |
3840 | 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); |
3841 | 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); |
3842 | 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); |
3843 | 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); |
3844 | fprintf(f, "msg \"Layout/Indent(int)\" %d\n", reader->bindenter); | 3845 | fprintf(f, "msg \"Layout/Indent(int)\" %d\n", reader->bindenter); |
3845 | 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); |
3846 | 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); |
3847 | 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); |
3848 | 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()); |
3849 | fprintf(f, "msg \"Format/SetWidth(int)\" %d\n", reader->m_charpc); | 3850 | fprintf(f, "msg \"Format/SetWidth(int)\" %d\n", reader->m_charpc); |
3850 | fprintf(f, "msg \"Navigation/SetOverlap(int)\" %d\n", reader->m_overlap); | 3851 | fprintf(f, "msg \"Navigation/SetOverlap(int)\" %d\n", reader->m_overlap); |
3851 | 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); |
3852 | 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); |
3853 | 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); |
3854 | 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); |
3855 | #ifdef _SCROLLPIPE | 3856 | #ifdef _SCROLLPIPE |
3856 | 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); |
3857 | #endif | 3858 | #endif |
3858 | 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); |
3859 | 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); |
3860 | 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); |
3861 | 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); |
3862 | 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()); |
3863 | fprintf(f, "msg \"Update(int)\" 1\n"); | 3864 | fprintf(f, "msg \"Update(int)\" 1\n"); |
3864 | fprintf(f, "msg \"info(QString)\" \"All Done\"\n"); | 3865 | fprintf(f, "msg \"info(QString)\" \"All Done\"\n"); |
3865 | fclose(f); | 3866 | fclose(f); |
3866 | chmod(sname, S_IXUSR | S_IXGRP | S_IXOTH); | 3867 | chmod(sname, S_IXUSR | S_IXGRP | S_IXOTH); |
3867 | } | 3868 | } |
3868 | } | 3869 | } |
3869 | 3870 | ||
3870 | void QTReaderApp::SaveConfig() | 3871 | void QTReaderApp::SaveConfig() |
3871 | { | 3872 | { |
3872 | m_nRegAction = cSetConfigName; | 3873 | m_nRegAction = cSetConfigName; |
3873 | regEdit->setText(""); | 3874 | regEdit->setText(""); |
3874 | do_regedit(); | 3875 | do_regedit(); |
3875 | } | 3876 | } |
3876 | 3877 | ||
3877 | void QTReaderApp::do_saveconfig(const QString& _txt) | 3878 | void QTReaderApp::do_saveconfig(const QString& _txt) |
3878 | { | 3879 | { |
3879 | SaveScript(Global::applicationFileName(APPDIR "/scripts", _txt)); | 3880 | SaveScript(Global::applicationFileName(APPDIR "/scripts", _txt)); |
3880 | } | 3881 | } |
3881 | #endif | 3882 | #endif |
3882 | 3883 | ||
3883 | #ifdef _SCROLLPIPE | 3884 | #ifdef _SCROLLPIPE |
3884 | void QTReaderApp::setpipetarget() | 3885 | void QTReaderApp::setpipetarget() |
3885 | { | 3886 | { |
3886 | m_nRegAction = cSetPipeTarget; | 3887 | m_nRegAction = cSetPipeTarget; |
3887 | QString text = (reader->m_pipetarget.isEmpty()) ? QString("") : reader->m_pipetarget; | 3888 | QString text = (reader->m_pipetarget.isEmpty()) ? QString("") : reader->m_pipetarget; |
3888 | regEdit->setText(text); | 3889 | regEdit->setText(text); |
3889 | do_regedit(); | 3890 | do_regedit(); |
3890 | } | 3891 | } |
3891 | 3892 | ||
3892 | void QTReaderApp::do_setpipetarget(const QString& _txt) | 3893 | void QTReaderApp::do_setpipetarget(const QString& _txt) |
3893 | { | 3894 | { |
3894 | reader->m_pipetarget = _txt; | 3895 | reader->m_pipetarget = _txt; |
3895 | } | 3896 | } |
3896 | 3897 | ||
3897 | void QTReaderApp::setpause(bool sfs) | 3898 | void QTReaderApp::setpause(bool sfs) |
3898 | { | 3899 | { |
3899 | reader->m_pauseAfterEachPara = sfs; | 3900 | reader->m_pauseAfterEachPara = sfs; |
3900 | } | 3901 | } |
3901 | #endif | 3902 | #endif |
3902 | 3903 | ||
3903 | void QTReaderApp::monospace(bool _b) | 3904 | void QTReaderApp::monospace(bool _b) |
3904 | { | 3905 | { |
3905 | reader->setmono(_b); | 3906 | reader->setmono(_b); |
3906 | } | 3907 | } |
3907 | 3908 | ||
3908 | bool QTReaderApp::readconfig(const QString& _txt, bool full=false) | 3909 | bool QTReaderApp::readconfig(const QString& _txt, bool full=false) |
3909 | { | 3910 | { |
3910 | #ifdef USEQPE | 3911 | #ifdef USEQPE |
3911 | QString configname; | 3912 | QString configname; |
3912 | Config::Domain dom; | 3913 | Config::Domain dom; |
3913 | 3914 | ||
3914 | if (full) | 3915 | if (full) |
3915 | { | 3916 | { |
3916 | configname = _txt; | 3917 | configname = _txt; |
3917 | dom = Config::User; | 3918 | dom = Config::User; |
3918 | } | 3919 | } |
3919 | else | 3920 | else |
3920 | { | 3921 | { |
3921 | configname = Global::applicationFileName(APPDIR "/configs", _txt); | 3922 | configname = Global::applicationFileName(APPDIR "/configs", _txt); |
3922 | QFileInfo fm(configname); | 3923 | QFileInfo fm(configname); |
3923 | if ( !fm.exists() ) return false; | 3924 | if ( !fm.exists() ) return false; |
3924 | dom = Config::File; | 3925 | dom = Config::File; |
3925 | } | 3926 | } |
3926 | 3927 | ||
3927 | Config config(configname, dom); | 3928 | Config config(configname, dom); |
3928 | config.setGroup( "View" ); | 3929 | config.setGroup( "View" ); |
3929 | 3930 | ||
3930 | #else | 3931 | #else |
3931 | QFileInfo fi; | 3932 | QFileInfo fi; |
3932 | if (full) | 3933 | if (full) |
3933 | { | 3934 | { |
3934 | QDir d = QDir::home(); // "/" | 3935 | QDir d = QDir::home(); // "/" |
3935 | if ( !d.cd(_txt) ) | 3936 | if ( !d.cd(_txt) ) |
3936 | { // "/tmp" | 3937 | { // "/tmp" |
3937 | qWarning( "Cannot find the \"~/%s\" directory", (const char*)_txt ); | 3938 | owarn << "Cannot find the \"~/" << _txt << "\" directory" << oendl; |
3938 | d = QDir::home(); | 3939 | d = QDir::home(); |
3939 | d.mkdir(_txt); | 3940 | d.mkdir(_txt); |
3940 | d.cd(_txt); | 3941 | d.cd(_txt); |
3941 | } | 3942 | } |
3942 | fi.setFile(d, INIFILE); | 3943 | fi.setFile(d, INIFILE); |
3943 | } | 3944 | } |
3944 | else | 3945 | else |
3945 | { | 3946 | { |
3946 | QDir d = QDir::home(); // "/" | 3947 | QDir d = QDir::home(); // "/" |
3947 | if ( !d.cd(APPDIR) ) | 3948 | if ( !d.cd(APPDIR) ) |
3948 | { // "/tmp" | 3949 | { // "/tmp" |
3949 | qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); | 3950 | owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; |
3950 | d = QDir::home(); | 3951 | d = QDir::home(); |
3951 | d.mkdir(APPDIR); | 3952 | d.mkdir(APPDIR); |
3952 | d.cd(APPDIR); | 3953 | d.cd(APPDIR); |
3953 | } | 3954 | } |
3954 | if ( !d.cd("configs") ) | 3955 | if ( !d.cd("configs") ) |
3955 | { // "/tmp" | 3956 | { // "/tmp" |
3956 | qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" ); | 3957 | owarn << "Cannot find the \"~/" APPDIR "/configs\" directory" << oendl; |
3957 | d = QDir::home(); | 3958 | d = QDir::home(); |
3958 | d.mkdir("configs"); | 3959 | d.mkdir("configs"); |
3959 | d.cd("configs"); | 3960 | d.cd("configs"); |
3960 | } | 3961 | } |
3961 | fi.setFile(d, _txt); | 3962 | fi.setFile(d, _txt); |
3962 | } | 3963 | } |
3963 | #ifdef _WINDOWS | 3964 | #ifdef _WINDOWS |
3964 | struct stat fnstat; | 3965 | struct stat fnstat; |
3965 | 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 |
3966 | #else | 3967 | #else |
3967 | if (!fi.exists()) return false; | 3968 | if (!fi.exists()) return false; |
3968 | #endif | 3969 | #endif |
3969 | Config config(fi.absFilePath()); | 3970 | Config config(fi.absFilePath()); |
3970 | #endif | 3971 | #endif |
3971 | if (full) | 3972 | if (full) |
3972 | { | 3973 | { |
3973 | config.setGroup("Toolbar"); | 3974 | config.setGroup("Toolbar"); |
3974 | m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false); | 3975 | m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false); |
3975 | m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1); | 3976 | m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1); |
3976 | m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2); | 3977 | m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2); |
3977 | } | 3978 | } |
3978 | config.setGroup( "View" ); | 3979 | config.setGroup( "View" ); |
3979 | m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); | 3980 | m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); |
3980 | reader->bstripcr = config.readBoolEntry( "StripCr", true ); | 3981 | reader->bstripcr = config.readBoolEntry( "StripCr", true ); |
3981 | reader->bfulljust = config.readBoolEntry( "FullJust", false ); | 3982 | reader->bfulljust = config.readBoolEntry( "FullJust", false ); |
3982 | reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); | 3983 | reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); |
3983 | reader->setlead(config.readNumEntry( "ExtraLead", 0 )); | 3984 | reader->setlead(config.readNumEntry( "ExtraLead", 0 )); |
3984 | reader->btextfmt = config.readBoolEntry( "TextFmt", false ); | 3985 | reader->btextfmt = config.readBoolEntry( "TextFmt", false ); |
3985 | reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); | 3986 | reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); |
3986 | reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); | 3987 | reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); |
3987 | reader->bpeanut = config.readBoolEntry( "Peanut", false ); | 3988 | reader->bpeanut = config.readBoolEntry( "Peanut", false ); |
3988 | reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); | 3989 | reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); |
3989 | reader->bdepluck = config.readBoolEntry( "Depluck", false ); | 3990 | reader->bdepluck = config.readBoolEntry( "Depluck", false ); |
3990 | reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); | 3991 | reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); |
3991 | reader->bonespace = config.readBoolEntry( "OneSpace", false ); | 3992 | reader->bonespace = config.readBoolEntry( "OneSpace", false ); |
3992 | reader->bunindent = config.readBoolEntry( "Unindent", false ); | 3993 | reader->bunindent = config.readBoolEntry( "Unindent", false ); |
3993 | reader->brepara = config.readBoolEntry( "Repara", false ); | 3994 | reader->brepara = config.readBoolEntry( "Repara", false ); |
3994 | reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); | 3995 | reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); |
3995 | reader->bindenter = config.readNumEntry( "Indent", 0 ); | 3996 | reader->bindenter = config.readNumEntry( "Indent", 0 ); |
3996 | reader->m_textsize = config.readNumEntry( "FontSize", 12 ); | 3997 | reader->m_textsize = config.readNumEntry( "FontSize", 12 ); |
3997 | reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); | 3998 | reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); |
3998 | if (full) | 3999 | if (full) |
3999 | { | 4000 | { |
4000 | reader->m_lastfile = config.readEntry( "LastFile", QString::null ); | 4001 | reader->m_lastfile = config.readEntry( "LastFile", QString::null ); |
4001 | reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); | 4002 | reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); |
4002 | } | 4003 | } |
4003 | reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); | 4004 | reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); |
4004 | reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); | 4005 | reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); |
4005 | reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false); | 4006 | reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false); |
4006 | reader->m_fontname = config.readEntry( "Fontname", "helvetica" ); | 4007 | reader->m_fontname = config.readEntry( "Fontname", "helvetica" ); |
4007 | reader->m_encd = config.readNumEntry( "Encoding", 0 ); | 4008 | reader->m_encd = config.readNumEntry( "Encoding", 0 ); |
4008 | reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); | 4009 | reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); |
4009 | reader->m_overlap = config.readNumEntry( "Overlap", 0 ); | 4010 | reader->m_overlap = config.readNumEntry( "Overlap", 0 ); |
4010 | reader->m_border = config.readNumEntry( "Margin", 6 ); | 4011 | reader->m_border = config.readNumEntry( "Margin", 6 ); |
4011 | #ifdef REPALM | 4012 | #ifdef REPALM |
4012 | reader->brepalm = config.readBoolEntry( "Repalm", true ); | 4013 | reader->brepalm = config.readBoolEntry( "Repalm", true ); |
4013 | #endif | 4014 | #endif |
4014 | reader->bremap = config.readBoolEntry( "Remap", true ); | 4015 | reader->bremap = config.readBoolEntry( "Remap", true ); |
4015 | reader->bmakebold = config.readBoolEntry( "MakeBold", false ); | 4016 | reader->bmakebold = config.readBoolEntry( "MakeBold", false ); |
4016 | reader->setContinuous(config.readBoolEntry( "Continuous", true )); | 4017 | reader->setContinuous(config.readBoolEntry( "Continuous", true )); |
4017 | m_targetapp = config.readEntry( "TargetApp", QString::null ); | 4018 | m_targetapp = config.readEntry( "TargetApp", QString::null ); |
4018 | m_targetmsg = config.readEntry( "TargetMsg", QString::null ); | 4019 | m_targetmsg = config.readEntry( "TargetMsg", QString::null ); |
4019 | #ifdef _SCROLLPIPE | 4020 | #ifdef _SCROLLPIPE |
4020 | reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); | 4021 | reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); |
4021 | reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); | 4022 | reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); |
4022 | #endif | 4023 | #endif |
4023 | m_twoTouch = config.readBoolEntry( "TwoTouch", false); | 4024 | m_twoTouch = config.readBoolEntry( "TwoTouch", false); |
4024 | m_doAnnotation = config.readBoolEntry( "Annotation", false); | 4025 | m_doAnnotation = config.readBoolEntry( "Annotation", false); |
4025 | m_doDictionary = config.readBoolEntry( "Dictionary", false); | 4026 | m_doDictionary = config.readBoolEntry( "Dictionary", false); |
4026 | m_doClipboard = config.readBoolEntry( "Clipboard", false); | 4027 | m_doClipboard = config.readBoolEntry( "Clipboard", false); |
4027 | m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); | 4028 | m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); |
4028 | m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); | 4029 | m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); |
4029 | m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); | 4030 | m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); |
4030 | m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); | 4031 | m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); |
4031 | m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); | 4032 | m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); |
4032 | m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); | 4033 | m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); |
4033 | m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); | 4034 | m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); |
4034 | 4035 | ||
4035 | m_leftScroll = config.readBoolEntry("LeftScroll", false); | 4036 | m_leftScroll = config.readBoolEntry("LeftScroll", false); |
4036 | m_rightScroll = config.readBoolEntry("RightScroll", false); | 4037 | m_rightScroll = config.readBoolEntry("RightScroll", false); |
4037 | m_upScroll = config.readBoolEntry("UpScroll", true); | 4038 | m_upScroll = config.readBoolEntry("UpScroll", true); |
4038 | m_downScroll = config.readBoolEntry("DownScroll", true); | 4039 | m_downScroll = config.readBoolEntry("DownScroll", true); |
4039 | m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false); | 4040 | m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false); |
4040 | reader->setBaseSize(config.readNumEntry( "Basesize", 10 )); | 4041 | reader->setBaseSize(config.readNumEntry( "Basesize", 10 )); |
4041 | reader->setTwoTouch(m_twoTouch); | 4042 | reader->setTwoTouch(m_twoTouch); |
4042 | 4043 | ||
4043 | m_touch_action->setOn(m_twoTouch); | 4044 | m_touch_action->setOn(m_twoTouch); |
4044 | m_setmono_action->setOn(reader->m_bMonoSpaced); | 4045 | m_setmono_action->setOn(reader->m_bMonoSpaced); |
4045 | setfontHelper(reader->m_fontname); | 4046 | setfontHelper(reader->m_fontname); |
4046 | if (full) | 4047 | if (full) |
4047 | { | 4048 | { |
4048 | addtoolbars(&config); | 4049 | addtoolbars(&config); |
4049 | } | 4050 | } |
4050 | reader->setfilter(reader->getfilter()); | 4051 | reader->setfilter(reader->getfilter()); |
4051 | reader->refresh(); | 4052 | reader->refresh(); |
4052 | return true; | 4053 | return true; |
4053 | } | 4054 | } |
4054 | 4055 | ||
4055 | bool QTReaderApp::PopulateConfig(const char* tgtdir) | 4056 | bool QTReaderApp::PopulateConfig(const char* tgtdir) |
4056 | { | 4057 | { |
4057 | bkmkselector->clear(); | 4058 | bkmkselector->clear(); |
4058 | bkmkselector->setText("Cancel"); | 4059 | bkmkselector->setText("Cancel"); |
4059 | #ifndef USEQPE | 4060 | #ifndef USEQPE |
4060 | int cnt = 0; | 4061 | int cnt = 0; |
4061 | 4062 | ||
4062 | QDir d = QDir::home(); // "/" | 4063 | QDir d = QDir::home(); // "/" |
4063 | if ( !d.cd(APPDIR) ) { // "/tmp" | 4064 | if ( !d.cd(APPDIR) ) { // "/tmp" |
4064 | qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); | 4065 | owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; |
4065 | d = QDir::home(); | 4066 | d = QDir::home(); |
4066 | d.mkdir(APPDIR); | 4067 | d.mkdir(APPDIR); |
4067 | d.cd(APPDIR); | 4068 | d.cd(APPDIR); |
4068 | } | 4069 | } |
4069 | if ( !d.cd(tgtdir) ) { // "/tmp" | 4070 | if ( !d.cd(tgtdir) ) { // "/tmp" |
4070 | qWarning( "Cannot find the \"~/" APPDIR "/%s\" directory", tgtdir ); | 4071 | owarn << "Cannot find the \"~/" APPDIR "/" << tgtdir << "\" directory" << oendl; |
4071 | d = QDir::home(); | 4072 | d = QDir::home(); |
4072 | d.mkdir(tgtdir); | 4073 | d.mkdir(tgtdir); |
4073 | d.cd(tgtdir); | 4074 | d.cd(tgtdir); |
4074 | } | 4075 | } |
4075 | d.setFilter( QDir::Files | QDir::NoSymLinks ); | 4076 | d.setFilter( QDir::Files | QDir::NoSymLinks ); |
4076 | // d.setSorting( QDir::Size | QDir::Reversed ); | 4077 | // d.setSorting( QDir::Size | QDir::Reversed ); |
4077 | 4078 | ||
4078 | const QFileInfoList *list = d.entryInfoList(); | 4079 | const QFileInfoList *list = d.entryInfoList(); |
4079 | QFileInfoListIterator it( *list ); // create list iterator | 4080 | QFileInfoListIterator it( *list ); // create list iterator |
4080 | QFileInfo *fi; // pointer for traversing | 4081 | QFileInfo *fi; // pointer for traversing |
4081 | 4082 | ||
4082 | while ( (fi=it.current()) ) { // for each file... | 4083 | while ( (fi=it.current()) ) { // for each file... |
4083 | 4084 | ||
4084 | bkmkselector->insertItem(fi->fileName()); | 4085 | bkmkselector->insertItem(fi->fileName()); |
4085 | cnt++; | 4086 | cnt++; |
4086 | 4087 | ||
4087 | //qDebug( "%10li %s", fi->size(), fi->fileName().data() ); | 4088 | //odebug << "" << fi->size() << " " << fi->fileName().data() << "" << oendl; |
4088 | ++it; // goto next list element | 4089 | ++it; // goto next list element |
4089 | } | 4090 | } |
4090 | 4091 | ||
4091 | #else /* USEQPE */ | 4092 | #else /* USEQPE */ |
4092 | int cnt = 0; | 4093 | int cnt = 0; |
4093 | DIR *d; | 4094 | DIR *d; |
4094 | char* finaldir; | 4095 | char* finaldir; |
4095 | finaldir = new char[strlen(APPDIR)+1+strlen(tgtdir)+1]; | 4096 | finaldir = new char[strlen(APPDIR)+1+strlen(tgtdir)+1]; |
4096 | strcpy(finaldir, APPDIR); | 4097 | strcpy(finaldir, APPDIR); |
4097 | strcat(finaldir, "/"); | 4098 | strcat(finaldir, "/"); |
4098 | strcat(finaldir, tgtdir); | 4099 | strcat(finaldir, tgtdir); |
4099 | d = opendir((const char *)Global::applicationFileName(finaldir,"")); | 4100 | d = opendir((const char *)Global::applicationFileName(finaldir,"")); |
4100 | 4101 | ||
4101 | while(1) | 4102 | while(1) |
4102 | { | 4103 | { |
4103 | struct dirent* de; | 4104 | struct dirent* de; |
4104 | struct stat buf; | 4105 | struct stat buf; |
4105 | de = readdir(d); | 4106 | de = readdir(d); |
4106 | if (de == NULL) break; | 4107 | if (de == NULL) break; |
4107 | 4108 | ||
4108 | 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)) |
4109 | { | 4110 | { |
4110 | bkmkselector->insertItem(de->d_name); | 4111 | bkmkselector->insertItem(de->d_name); |
4111 | cnt++; | 4112 | cnt++; |
4112 | } | 4113 | } |
4113 | } | 4114 | } |
4114 | delete [] finaldir; | 4115 | delete [] finaldir; |
4115 | closedir(d); | 4116 | closedir(d); |
4116 | #endif | 4117 | #endif |
4117 | return (cnt > 0); | 4118 | return (cnt > 0); |
4118 | } | 4119 | } |
4119 | 4120 | ||
4120 | void QTReaderApp::LoadConfig() | 4121 | void QTReaderApp::LoadConfig() |
4121 | { | 4122 | { |
4122 | if (PopulateConfig("configs")) | 4123 | if (PopulateConfig("configs")) |
4123 | { | 4124 | { |
4124 | editorStack->raiseWidget( bkmkselector ); | 4125 | editorStack->raiseWidget( bkmkselector ); |
4125 | hidetoolbars(); | 4126 | hidetoolbars(); |
4126 | m_nBkmkAction = cLdConfig; | 4127 | m_nBkmkAction = cLdConfig; |
4127 | } | 4128 | } |
4128 | else | 4129 | else |
4129 | QMessageBox::information(this, PROGNAME, "No config files"); | 4130 | QMessageBox::information(this, PROGNAME, "No config files"); |
4130 | } | 4131 | } |
4131 | 4132 | ||
4132 | void QTReaderApp::TidyConfig() | 4133 | void QTReaderApp::TidyConfig() |
4133 | { | 4134 | { |
4134 | if (PopulateConfig("configs")) | 4135 | if (PopulateConfig("configs")) |
4135 | { | 4136 | { |
4136 | editorStack->raiseWidget( bkmkselector ); | 4137 | editorStack->raiseWidget( bkmkselector ); |
4137 | hidetoolbars(); | 4138 | hidetoolbars(); |
4138 | m_nBkmkAction = cRmConfig; | 4139 | m_nBkmkAction = cRmConfig; |
4139 | } | 4140 | } |
4140 | else | 4141 | else |
4141 | QMessageBox::information(this, PROGNAME, "No config files"); | 4142 | QMessageBox::information(this, PROGNAME, "No config files"); |
4142 | } | 4143 | } |
4143 | 4144 | ||
4144 | void QTReaderApp::ExportLinks() | 4145 | void QTReaderApp::ExportLinks() |
4145 | { | 4146 | { |
4146 | if (PopulateConfig("urls")) | 4147 | if (PopulateConfig("urls")) |
4147 | { | 4148 | { |
4148 | editorStack->raiseWidget( bkmkselector ); | 4149 | editorStack->raiseWidget( bkmkselector ); |
4149 | hidetoolbars(); | 4150 | hidetoolbars(); |
4150 | m_nBkmkAction = cExportLinks; | 4151 | m_nBkmkAction = cExportLinks; |
4151 | } | 4152 | } |
4152 | else | 4153 | else |
4153 | QMessageBox::information(this, PROGNAME, "No url files"); | 4154 | QMessageBox::information(this, PROGNAME, "No url files"); |
4154 | } | 4155 | } |
4155 | 4156 | ||
4156 | void QTReaderApp::OnURLSelected(const QString& href) | 4157 | void QTReaderApp::OnURLSelected(const QString& href) |
4157 | { | 4158 | { |
4158 | CURLDialog* urld = new CURLDialog(href, false, this); | 4159 | CURLDialog* urld = new CURLDialog(href, false, this); |
4159 | urld->clipboard(m_url_clipboard); | 4160 | urld->clipboard(m_url_clipboard); |
4160 | urld->localfile(m_url_localfile); | 4161 | urld->localfile(m_url_localfile); |
4161 | urld->globalfile(m_url_globalfile); | 4162 | urld->globalfile(m_url_globalfile); |
4162 | if (urld->exec()) | 4163 | if (urld->exec()) |
4163 | { | 4164 | { |
4164 | m_url_clipboard = urld->clipboard(); | 4165 | m_url_clipboard = urld->clipboard(); |
4165 | m_url_localfile = urld->localfile(); | 4166 | m_url_localfile = urld->localfile(); |
4166 | m_url_globalfile = urld->globalfile(); | 4167 | m_url_globalfile = urld->globalfile(); |
4167 | if (m_url_clipboard) | 4168 | if (m_url_clipboard) |
4168 | { | 4169 | { |
4169 | QClipboard* cb = QApplication::clipboard(); | 4170 | QClipboard* cb = QApplication::clipboard(); |
4170 | cb->setText(href); | 4171 | cb->setText(href); |
4171 | qDebug("<a href=\"%s\">%s</a>", (const char*)href, (const char*)href); | 4172 | odebug << "<a href=\"" << href << "\">" << href << "</a>" << oendl; |
4172 | } | 4173 | } |
4173 | if (m_url_localfile) | 4174 | if (m_url_localfile) |
4174 | { | 4175 | { |
4175 | writeUrl(reader->m_string, href); | 4176 | writeUrl(reader->m_string, href); |
4176 | } | 4177 | } |
4177 | if (m_url_globalfile) | 4178 | if (m_url_globalfile) |
4178 | { | 4179 | { |
4179 | writeUrl("GlobalURLFile", href); | 4180 | writeUrl("GlobalURLFile", href); |
4180 | } | 4181 | } |
4181 | } | 4182 | } |
4182 | delete urld; | 4183 | delete urld; |
4183 | } | 4184 | } |
4184 | 4185 | ||
4185 | void QTReaderApp::writeUrl(const QString& file, const QString& href) | 4186 | void QTReaderApp::writeUrl(const QString& file, const QString& href) |
4186 | { | 4187 | { |
4187 | QString filename; | 4188 | QString filename; |
4188 | #ifdef USEQPE | 4189 | #ifdef USEQPE |
4189 | filename = Global::applicationFileName(APPDIR "/urls", file); | 4190 | filename = Global::applicationFileName(APPDIR "/urls", file); |
4190 | #else | 4191 | #else |
4191 | QFileInfo fi; | 4192 | QFileInfo fi; |
4192 | QDir d = QDir::home(); // "/" | 4193 | QDir d = QDir::home(); // "/" |
4193 | if ( !d.cd(APPDIR) ) | 4194 | if ( !d.cd(APPDIR) ) |
4194 | { // "/tmp" | 4195 | { // "/tmp" |
4195 | qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); | 4196 | owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; |
4196 | d = QDir::home(); | 4197 | d = QDir::home(); |
4197 | d.mkdir(APPDIR); | 4198 | d.mkdir(APPDIR); |
4198 | d.cd(APPDIR); | 4199 | d.cd(APPDIR); |
4199 | } | 4200 | } |
4200 | if ( !d.cd("urls") ) | 4201 | if ( !d.cd("urls") ) |
4201 | { // "/tmp" | 4202 | { // "/tmp" |
4202 | qWarning( "Cannot find the \"~/" APPDIR "/urls\" directory" ); | 4203 | owarn << "Cannot find the \"~/" APPDIR "/urls\" directory" << oendl; |
4203 | d = QDir::home(); | 4204 | d = QDir::home(); |
4204 | d.cd(APPDIR); | 4205 | d.cd(APPDIR); |
4205 | d.mkdir("urls"); | 4206 | d.mkdir("urls"); |
4206 | d.cd("urls"); | 4207 | d.cd("urls"); |
4207 | } | 4208 | } |
4208 | fi.setFile(d, file); | 4209 | fi.setFile(d, file); |
4209 | filename = fi.absFilePath(); | 4210 | filename = fi.absFilePath(); |
4210 | #endif | 4211 | #endif |
4211 | FILE* fout = fopen(filename, "a"); | 4212 | FILE* fout = fopen(filename, "a"); |
4212 | if (fout != NULL) | 4213 | if (fout != NULL) |
4213 | { | 4214 | { |
4214 | 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); |
4215 | fclose(fout); | 4216 | fclose(fout); |
4216 | } | 4217 | } |
4217 | else | 4218 | else |
4218 | { | 4219 | { |
4219 | QMessageBox::warning(this, PROGNAME, "Problem with writing URL"); | 4220 | QMessageBox::warning(this, PROGNAME, "Problem with writing URL"); |
4220 | } | 4221 | } |
4221 | } | 4222 | } |
diff --git a/noncore/apps/opie-reader/StyleConsts.cpp b/noncore/apps/opie-reader/StyleConsts.cpp index 9fb56b7..f47acee 100644 --- a/noncore/apps/opie-reader/StyleConsts.cpp +++ b/noncore/apps/opie-reader/StyleConsts.cpp | |||
@@ -1,94 +1,94 @@ | |||
1 | 1 | ||
2 | #include <qimage.h> | 2 | #include <qimage.h> |
3 | #include "StyleConsts.h" | 3 | #include "StyleConsts.h" |
4 | 4 | ||
5 | GraphicLink::~GraphicLink() { delete graphic; } | 5 | GraphicLink::~GraphicLink() { delete graphic; } |
6 | 6 | ||
7 | pmstore::~pmstore() | 7 | pmstore::~pmstore() |
8 | { | 8 | { |
9 | //// qDebug("Deleting image"); | 9 | //// odebug << "Deleting image" << oendl; |
10 | delete graphic; | 10 | delete graphic; |
11 | } | 11 | } |
12 | 12 | ||
13 | CStyle::~CStyle() | 13 | CStyle::~CStyle() |
14 | { | 14 | { |
15 | if (graphic != NULL) | 15 | if (graphic != NULL) |
16 | { | 16 | { |
17 | if (--(graphic->count) == 0) | 17 | if (--(graphic->count) == 0) |
18 | { | 18 | { |
19 | delete graphic; | 19 | delete graphic; |
20 | } | 20 | } |
21 | } | 21 | } |
22 | } | 22 | } |
23 | 23 | ||
24 | CStyle::CStyle(const CStyle& rhs) : graphic(NULL) | 24 | CStyle::CStyle(const CStyle& rhs) : graphic(NULL) |
25 | { | 25 | { |
26 | *this = rhs; | 26 | *this = rhs; |
27 | } | 27 | } |
28 | 28 | ||
29 | CStyle& CStyle::operator=(const CStyle& rhs) | 29 | CStyle& CStyle::operator=(const CStyle& rhs) |
30 | { | 30 | { |
31 | if (rhs.graphic != NULL) | 31 | if (rhs.graphic != NULL) |
32 | { | 32 | { |
33 | (rhs.graphic->count)++; | 33 | (rhs.graphic->count)++; |
34 | if (graphic != NULL) | 34 | if (graphic != NULL) |
35 | { | 35 | { |
36 | if (--(graphic->count) == 0) | 36 | if (--(graphic->count) == 0) |
37 | { | 37 | { |
38 | delete graphic; | 38 | delete graphic; |
39 | } | 39 | } |
40 | } | 40 | } |
41 | graphic = rhs.graphic; | 41 | graphic = rhs.graphic; |
42 | } | 42 | } |
43 | else | 43 | else |
44 | { | 44 | { |
45 | if (graphic != NULL) | 45 | if (graphic != NULL) |
46 | { | 46 | { |
47 | if (--(graphic->count) == 0) | 47 | if (--(graphic->count) == 0) |
48 | { | 48 | { |
49 | delete graphic; | 49 | delete graphic; |
50 | } | 50 | } |
51 | graphic = NULL; | 51 | graphic = NULL; |
52 | } | 52 | } |
53 | } | 53 | } |
54 | sty = rhs.sty; | 54 | sty = rhs.sty; |
55 | return *this; | 55 | return *this; |
56 | } | 56 | } |
57 | 57 | ||
58 | void CStyle::clearPicture() | 58 | void CStyle::clearPicture() |
59 | { | 59 | { |
60 | if (graphic != NULL) | 60 | if (graphic != NULL) |
61 | { | 61 | { |
62 | if (--(graphic->count) == 0) | 62 | if (--(graphic->count) == 0) |
63 | { | 63 | { |
64 | delete graphic; | 64 | delete graphic; |
65 | } | 65 | } |
66 | graphic = NULL; | 66 | graphic = NULL; |
67 | } | 67 | } |
68 | } | 68 | } |
69 | 69 | ||
70 | void CStyle::unset() | 70 | void CStyle::unset() |
71 | { | 71 | { |
72 | sty.unset(); | 72 | sty.unset(); |
73 | if (graphic != NULL) | 73 | if (graphic != NULL) |
74 | { | 74 | { |
75 | if (--(graphic->count) == 0) | 75 | if (--(graphic->count) == 0) |
76 | { | 76 | { |
77 | delete graphic; | 77 | delete graphic; |
78 | } | 78 | } |
79 | graphic = NULL; | 79 | graphic = NULL; |
80 | } | 80 | } |
81 | } | 81 | } |
82 | 82 | ||
83 | void CStyle::setPicture(bool canScale, QImage* _g, bool il, unsigned long tgt) | 83 | void CStyle::setPicture(bool canScale, QImage* _g, bool il, unsigned long tgt) |
84 | { | 84 | { |
85 | if (graphic != NULL) | 85 | if (graphic != NULL) |
86 | { | 86 | { |
87 | if (--(graphic->count) == 0) | 87 | if (--(graphic->count) == 0) |
88 | { | 88 | { |
89 | delete graphic; | 89 | delete graphic; |
90 | } | 90 | } |
91 | graphic = NULL; | 91 | graphic = NULL; |
92 | } | 92 | } |
93 | if (_g != NULL) graphic = new pmstore(canScale, _g, il, tgt); | 93 | if (_g != NULL) graphic = new pmstore(canScale, _g, il, tgt); |
94 | } | 94 | } |
diff --git a/noncore/apps/opie-reader/fileBrowser.cpp b/noncore/apps/opie-reader/fileBrowser.cpp index e1cde6c..72a1222 100644 --- a/noncore/apps/opie-reader/fileBrowser.cpp +++ b/noncore/apps/opie-reader/fileBrowser.cpp | |||
@@ -1,266 +1,266 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | 2 | ||
3 | Derived from a file browser which was | 3 | Derived from a file browser which was |
4 | 4 | ||
5 | ** copyright 2001 ljp ljp@llornkcor.com | 5 | ** copyright 2001 ljp ljp@llornkcor.com |
6 | 6 | ||
7 | Extensive modification by Tim Wentford to allow it to work in rotated mode | 7 | Extensive 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 | #ifndef _WINDOWS | 15 | #ifndef _WINDOWS |
16 | #include <unistd.h> | 16 | #include <unistd.h> |
17 | #endif | 17 | #endif |
18 | #include <qlayout.h> | 18 | #include <qlayout.h> |
19 | #ifdef _WINDOWS | 19 | #ifdef _WINDOWS |
20 | #include <direct.h> | 20 | #include <direct.h> |
21 | #endif | 21 | #endif |
22 | 22 | ||
23 | #include <qpe/qpeapplication.h> | 23 | #include <qpe/qpeapplication.h> |
24 | 24 | ||
25 | 25 | ||
26 | fileBrowser::fileBrowser( bool allownew, QWidget* parent, const char* name, bool modal, WFlags fl , const QString filter, const QString iPath ) | 26 | fileBrowser::fileBrowser( bool allownew, QWidget* parent, const char* name, bool modal, WFlags fl , const QString filter, const QString iPath ) |
27 | : QDialog( parent, name, true, | 27 | : QDialog( parent, name, true, |
28 | fl/* | WStyle_Customize | WStyle_Tool*/), | 28 | fl/* | WStyle_Customize | WStyle_Tool*/), |
29 | filterspec(QDir::All) | 29 | filterspec(QDir::All) |
30 | { | 30 | { |
31 | // showMaximized(); | 31 | // showMaximized(); |
32 | if ( !name ) | 32 | if ( !name ) |
33 | setName( "fileBrowser" ); | 33 | setName( "fileBrowser" ); |
34 | /* | 34 | /* |
35 | if (parent != NULL) | 35 | if (parent != NULL) |
36 | { | 36 | { |
37 | #ifdef OPIE | 37 | #ifdef OPIE |
38 | move(0,0); | 38 | move(0,0); |
39 | resize( parent->width(), parent->height() ); | 39 | resize( parent->width(), parent->height() ); |
40 | #else | 40 | #else |
41 | setGeometry(parent->x(), parent->y(), parent->width(), parent->height() ); | 41 | setGeometry(parent->x(), parent->y(), parent->width(), parent->height() ); |
42 | #endif | 42 | #endif |
43 | } | 43 | } |
44 | */ | 44 | */ |
45 | // showFullScreen(); | 45 | // showFullScreen(); |
46 | setCaption(tr( "Browse for file" ) ); | 46 | setCaption(tr( "Browse for file" ) ); |
47 | filterStr=filter; | 47 | filterStr=filter; |
48 | 48 | ||
49 | buttonOk = new QPushButton( this, "buttonOk" ); | 49 | buttonOk = new QPushButton( this, "buttonOk" ); |
50 | buttonOk->setFixedSize( 25, 25 ); | 50 | buttonOk->setFixedSize( 25, 25 ); |
51 | buttonOk->setAutoDefault( false ); | 51 | buttonOk->setAutoDefault( false ); |
52 | buttonOk->setText( tr( "/" ) ); | 52 | buttonOk->setText( tr( "/" ) ); |
53 | 53 | ||
54 | buttonShowHidden = new QPushButton( this, "buttonShowHidden" ); | 54 | buttonShowHidden = new QPushButton( this, "buttonShowHidden" ); |
55 | // buttonShowHidden->setFixedSize( 50, 25 ); | 55 | // buttonShowHidden->setFixedSize( 50, 25 ); |
56 | buttonShowHidden->setText( tr( "Hidden" ) ); | 56 | buttonShowHidden->setText( tr( "Hidden" ) ); |
57 | buttonShowHidden->setAutoDefault( false ); | 57 | buttonShowHidden->setAutoDefault( false ); |
58 | buttonShowHidden->setToggleButton( true ); | 58 | buttonShowHidden->setToggleButton( true ); |
59 | buttonShowHidden->setOn( false ); | 59 | buttonShowHidden->setOn( false ); |
60 | 60 | ||
61 | dirLabel = new QLabel(this, "DirLabel"); | 61 | dirLabel = new QLabel(this, "DirLabel"); |
62 | dirLabel->setAlignment(AlignLeft | AlignVCenter | ExpandTabs | WordBreak); | 62 | dirLabel->setAlignment(AlignLeft | AlignVCenter | ExpandTabs | WordBreak); |
63 | dirLabel->setText(currentDir.canonicalPath()); | 63 | dirLabel->setText(currentDir.canonicalPath()); |
64 | 64 | ||
65 | ListView = new QtrListView( this, "ListView" ); | 65 | ListView = new QtrListView( this, "ListView" ); |
66 | ListView->addColumn( tr( "Name" ) ); | 66 | ListView->addColumn( tr( "Name" ) ); |
67 | ListView->setSorting( 2, FALSE); | 67 | ListView->setSorting( 2, FALSE); |
68 | ListView->addColumn( tr( "Size" ) ); | 68 | ListView->addColumn( tr( "Size" ) ); |
69 | ListView->setSelectionMode(QListView::Single); | 69 | ListView->setSelectionMode(QListView::Single); |
70 | ListView->setAllColumnsShowFocus( TRUE ); | 70 | ListView->setAllColumnsShowFocus( TRUE ); |
71 | ListView->setColumnWidthMode(0, QListView::Manual); | 71 | ListView->setColumnWidthMode(0, QListView::Manual); |
72 | ListView->setColumnWidthMode(1, QListView::Manual); | 72 | ListView->setColumnWidthMode(1, QListView::Manual); |
73 | 73 | ||
74 | // signals and slots connections | 74 | // signals and slots connections |
75 | connect( buttonShowHidden, SIGNAL( toggled(bool) ), this, SLOT( setHidden(bool) ) ); | 75 | connect( buttonShowHidden, SIGNAL( toggled(bool) ), this, SLOT( setHidden(bool) ) ); |
76 | connect( buttonOk, SIGNAL( clicked() ), this, SLOT( OnRoot() ) ); | 76 | connect( buttonOk, SIGNAL( clicked() ), this, SLOT( OnRoot() ) ); |
77 | connect( ListView, SIGNAL(doubleClicked(QListViewItem*)), SLOT(listDoubleClicked(QListViewItem*)) ); | 77 | connect( ListView, SIGNAL(doubleClicked(QListViewItem*)), SLOT(listDoubleClicked(QListViewItem*)) ); |
78 | connect( ListView, SIGNAL(clicked(QListViewItem*)), SLOT(listClicked(QListViewItem*)) ); | 78 | connect( ListView, SIGNAL(clicked(QListViewItem*)), SLOT(listClicked(QListViewItem*)) ); |
79 | connect( ListView, SIGNAL(OnOKButton(QListViewItem*)), SLOT(listClicked(QListViewItem*)) ); | 79 | connect( ListView, SIGNAL(OnOKButton(QListViewItem*)), SLOT(listClicked(QListViewItem*)) ); |
80 | connect( ListView, SIGNAL(OnCentreButton(QListViewItem*)), SLOT(listClicked(QListViewItem*)) ); | 80 | connect( ListView, SIGNAL(OnCentreButton(QListViewItem*)), SLOT(listClicked(QListViewItem*)) ); |
81 | connect( ListView, SIGNAL(OnCancelButton()), SLOT(OnCancel()) ); | 81 | connect( ListView, SIGNAL(OnCancelButton()), SLOT(OnCancel()) ); |
82 | 82 | ||
83 | QVBoxLayout* grid = new QVBoxLayout(this); | 83 | QVBoxLayout* grid = new QVBoxLayout(this); |
84 | QHBoxLayout* hgrid = new QHBoxLayout(grid); | 84 | QHBoxLayout* hgrid = new QHBoxLayout(grid); |
85 | hgrid->addWidget(dirLabel,1); | 85 | hgrid->addWidget(dirLabel,1); |
86 | hgrid->addWidget(buttonShowHidden); | 86 | hgrid->addWidget(buttonShowHidden); |
87 | hgrid->addWidget(buttonOk); | 87 | hgrid->addWidget(buttonOk); |
88 | grid->addWidget(ListView,1); | 88 | grid->addWidget(ListView,1); |
89 | if (allownew) | 89 | if (allownew) |
90 | { | 90 | { |
91 | m_filename = new QLineEdit(this); | 91 | m_filename = new QLineEdit(this); |
92 | grid->addWidget(m_filename); | 92 | grid->addWidget(m_filename); |
93 | connect( m_filename, SIGNAL( returnPressed() ), this, SLOT( onReturn() )); | 93 | connect( m_filename, SIGNAL( returnPressed() ), this, SLOT( onReturn() )); |
94 | } | 94 | } |
95 | else | 95 | else |
96 | { | 96 | { |
97 | m_filename = NULL; | 97 | m_filename = NULL; |
98 | } | 98 | } |
99 | 99 | ||
100 | if (QFileInfo(iPath).exists()) | 100 | if (QFileInfo(iPath).exists()) |
101 | { | 101 | { |
102 | currentDir.setPath(iPath); | 102 | currentDir.setPath(iPath); |
103 | #ifdef _WINDOWS | 103 | #ifdef _WINDOWS |
104 | _chdir(iPath.latin1()); | 104 | _chdir(iPath.latin1()); |
105 | #else | 105 | #else |
106 | chdir(iPath.latin1()); | 106 | chdir(iPath.latin1()); |
107 | #endif | 107 | #endif |
108 | } | 108 | } |
109 | else | 109 | else |
110 | { | 110 | { |
111 | currentDir.setPath(QDir::currentDirPath()); | 111 | currentDir.setPath(QDir::currentDirPath()); |
112 | chdir(QDir::currentDirPath().latin1()); | 112 | chdir(QDir::currentDirPath().latin1()); |
113 | } | 113 | } |
114 | 114 | ||
115 | populateList(); | 115 | populateList(); |
116 | 116 | ||
117 | if (modal) | 117 | if (modal) |
118 | QPEApplication::showDialog( this ); | 118 | QPEApplication::showDialog( this ); |
119 | } | 119 | } |
120 | 120 | ||
121 | void fileBrowser::resizeEvent(QResizeEvent* e) | 121 | void fileBrowser::resizeEvent(QResizeEvent* e) |
122 | { | 122 | { |
123 | ListView->setColumnWidth(1,(ListView->width())/4); | 123 | ListView->setColumnWidth(1,(ListView->width())/4); |
124 | ListView->setColumnWidth(0,ListView->width()-20-ListView->columnWidth(1)); | 124 | ListView->setColumnWidth(0,ListView->width()-20-ListView->columnWidth(1)); |
125 | } | 125 | } |
126 | 126 | ||
127 | fileBrowser::~fileBrowser() | 127 | fileBrowser::~fileBrowser() |
128 | { | 128 | { |
129 | } | 129 | } |
130 | 130 | ||
131 | 131 | ||
132 | void fileBrowser::populateList() | 132 | void fileBrowser::populateList() |
133 | { | 133 | { |
134 | ListView->clear(); | 134 | ListView->clear(); |
135 | ////qDebug(currentDir.canonicalPath()); | 135 | ////odebug << currentDir.canonicalPath() << oendl; |
136 | // currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::NoSymLinks ); | 136 | // currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::NoSymLinks ); |
137 | currentDir.setFilter( filterspec ); | 137 | currentDir.setFilter( filterspec ); |
138 | currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); | 138 | currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); |
139 | currentDir.setMatchAllDirs(TRUE); | 139 | currentDir.setMatchAllDirs(TRUE); |
140 | 140 | ||
141 | currentDir.setNameFilter(filterStr); | 141 | currentDir.setNameFilter(filterStr); |
142 | // currentDir.setNameFilter("*.txt;*.etx"); | 142 | // currentDir.setNameFilter("*.txt;*.etx"); |
143 | QString fileL, fileS; | 143 | QString fileL, fileS; |
144 | const QFileInfoList *list = currentDir.entryInfoList(); | 144 | const QFileInfoList *list = currentDir.entryInfoList(); |
145 | QFileInfoListIterator it(*list); | 145 | QFileInfoListIterator it(*list); |
146 | QFileInfo *fi; | 146 | QFileInfo *fi; |
147 | while ( (fi=it.current()) ) | 147 | while ( (fi=it.current()) ) |
148 | { | 148 | { |
149 | if (fi->fileName() != ".") | 149 | if (fi->fileName() != ".") |
150 | { | 150 | { |
151 | fileS.sprintf( "%10li", fi->size() ); | 151 | fileS.sprintf( "%10li", fi->size() ); |
152 | fileL.sprintf( "%s",fi->fileName().data() ); | 152 | fileL.sprintf( "%s",fi->fileName().data() ); |
153 | if( fi->isDir() ) | 153 | if( fi->isDir() ) |
154 | { | 154 | { |
155 | fileL+="/"; | 155 | fileL+="/"; |
156 | } | 156 | } |
157 | else | 157 | else |
158 | { | 158 | { |
159 | //// qDebug("Not a dir: "+currentDir.canonicalPath()+fileL); | 159 | //// odebug << "Not a dir: "+currentDir.canonicalPath()+fileL << oendl; |
160 | } | 160 | } |
161 | new QListViewItem( ListView,fileL,fileS ); | 161 | new QListViewItem( ListView,fileL,fileS ); |
162 | } | 162 | } |
163 | ++it; | 163 | ++it; |
164 | } | 164 | } |
165 | ListView->setSorting( 2, FALSE); | 165 | ListView->setSorting( 2, FALSE); |
166 | dirLabel->setText("Current Directory:\n"+currentDir.canonicalPath()); | 166 | dirLabel->setText("Current Directory:\n"+currentDir.canonicalPath()); |
167 | ListView->setFocus(); | 167 | ListView->setFocus(); |
168 | } | 168 | } |
169 | 169 | ||
170 | void fileBrowser::upDir() | 170 | void fileBrowser::upDir() |
171 | { | 171 | { |
172 | //// qDebug(currentDir.canonicalPath()); | 172 | //// odebug << currentDir.canonicalPath() << oendl; |
173 | } | 173 | } |
174 | 174 | ||
175 | void fileBrowser::listClicked(QListViewItem *selectedItem) | 175 | void fileBrowser::listClicked(QListViewItem *selectedItem) |
176 | { | 176 | { |
177 | if (selectedItem == NULL) return; | 177 | if (selectedItem == NULL) return; |
178 | QString strItem=selectedItem->text(0); | 178 | QString strItem=selectedItem->text(0); |
179 | 179 | ||
180 | //// qDebug("%s", (const char*)strItem); | 180 | //// odebug << "" << strItem << "" << oendl; |
181 | 181 | ||
182 | 182 | ||
183 | QString strSize=selectedItem->text(1); | 183 | QString strSize=selectedItem->text(1); |
184 | 184 | ||
185 | strSize.stripWhiteSpace(); | 185 | strSize.stripWhiteSpace(); |
186 | 186 | ||
187 | bool ok; | 187 | bool ok; |
188 | 188 | ||
189 | QFileInfo fi(strItem); | 189 | QFileInfo fi(strItem); |
190 | while (fi.isSymLink()) fi.setFile(fi.readLink()); | 190 | while (fi.isSymLink()) fi.setFile(fi.readLink()); |
191 | if (fi.isDir()) | 191 | if (fi.isDir()) |
192 | { | 192 | { |
193 | strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); | 193 | strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); |
194 | 194 | ||
195 | if(QDir(strItem).exists()) | 195 | if(QDir(strItem).exists()) |
196 | { | 196 | { |
197 | currentDir.cd(strItem, TRUE); | 197 | currentDir.cd(strItem, TRUE); |
198 | populateList(); | 198 | populateList(); |
199 | } | 199 | } |
200 | } else | 200 | } else |
201 | { | 201 | { |
202 | QListViewItem *selectedItem = ListView->selectedItem(); | 202 | QListViewItem *selectedItem = ListView->selectedItem(); |
203 | if (selectedItem == NULL) | 203 | if (selectedItem == NULL) |
204 | { | 204 | { |
205 | filename = ""; | 205 | filename = ""; |
206 | } | 206 | } |
207 | else | 207 | else |
208 | { | 208 | { |
209 | filename = QDir::cleanDirPath(currentDir.canonicalPath()+"/"+selectedItem->text(0)); | 209 | filename = QDir::cleanDirPath(currentDir.canonicalPath()+"/"+selectedItem->text(0)); |
210 | } | 210 | } |
211 | OnOK(); | 211 | OnOK(); |
212 | } | 212 | } |
213 | chdir(strItem.latin1()); | 213 | chdir(strItem.latin1()); |
214 | // | 214 | // |
215 | 215 | ||
216 | } | 216 | } |
217 | 217 | ||
218 | // you may want to switch these 2 functions. I like single clicks | 218 | // you may want to switch these 2 functions. I like single clicks |
219 | void fileBrowser::listDoubleClicked(QListViewItem *selectedItem) | 219 | void fileBrowser::listDoubleClicked(QListViewItem *selectedItem) |
220 | { | 220 | { |
221 | } | 221 | } |
222 | 222 | ||
223 | QString fileBrowser::getCurrentFile() | 223 | QString fileBrowser::getCurrentFile() |
224 | { | 224 | { |
225 | return filename; | 225 | return filename; |
226 | } | 226 | } |
227 | 227 | ||
228 | void fileBrowser::OnOK() | 228 | void fileBrowser::OnOK() |
229 | { | 229 | { |
230 | accept(); | 230 | accept(); |
231 | } | 231 | } |
232 | 232 | ||
233 | void fileBrowser::OnRoot() | 233 | void fileBrowser::OnRoot() |
234 | { | 234 | { |
235 | currentDir.cd("/", TRUE); | 235 | currentDir.cd("/", TRUE); |
236 | populateList(); | 236 | populateList(); |
237 | chdir("/"); | 237 | chdir("/"); |
238 | } | 238 | } |
239 | 239 | ||
240 | void fileBrowser::OnCancel() | 240 | void fileBrowser::OnCancel() |
241 | { | 241 | { |
242 | reject(); | 242 | reject(); |
243 | } | 243 | } |
244 | 244 | ||
245 | void fileBrowser::setHidden(bool _hidden) | 245 | void fileBrowser::setHidden(bool _hidden) |
246 | { | 246 | { |
247 | if (_hidden) | 247 | if (_hidden) |
248 | filterspec = QDir::All | QDir::Hidden; | 248 | filterspec = QDir::All | QDir::Hidden; |
249 | else | 249 | else |
250 | filterspec = QDir::All; | 250 | filterspec = QDir::All; |
251 | populateList(); | 251 | populateList(); |
252 | } | 252 | } |
253 | 253 | ||
254 | void fileBrowser::onReturn() | 254 | void fileBrowser::onReturn() |
255 | { | 255 | { |
256 | QListViewItem *selectedItem = ListView->selectedItem(); | 256 | QListViewItem *selectedItem = ListView->selectedItem(); |
257 | if (selectedItem == NULL) | 257 | if (selectedItem == NULL) |
258 | { | 258 | { |
259 | filename = m_filename->text(); | 259 | filename = m_filename->text(); |
260 | } | 260 | } |
261 | else | 261 | else |
262 | { | 262 | { |
263 | filename = QDir::cleanDirPath(currentDir.canonicalPath()+"/"+m_filename->text()); | 263 | filename = QDir::cleanDirPath(currentDir.canonicalPath()+"/"+m_filename->text()); |
264 | } | 264 | } |
265 | OnOK(); | 265 | OnOK(); |
266 | } | 266 | } |
diff --git a/noncore/apps/opie-reader/opie-reader.pro b/noncore/apps/opie-reader/opie-reader.pro index e42204a..dbf6964 100644 --- a/noncore/apps/opie-reader/opie-reader.pro +++ b/noncore/apps/opie-reader/opie-reader.pro | |||
@@ -1,92 +1,92 @@ | |||
1 | CONFIG = qt warn_on | 1 | CONFIG = qt warn_on |
2 | HEADERS = Aportis.h \ | 2 | HEADERS = Aportis.h \ |
3 | Bkmks.h \ | 3 | Bkmks.h \ |
4 | BuffDoc.h \ | 4 | BuffDoc.h \ |
5 | CAnnoEdit.h \ | 5 | CAnnoEdit.h \ |
6 | CBuffer.h \ | 6 | CBuffer.h \ |
7 | CDrawBuffer.h \ | 7 | CDrawBuffer.h \ |
8 | CEncoding.h \ | 8 | CEncoding.h \ |
9 | CEncoding_tables.h \ | 9 | CEncoding_tables.h \ |
10 | CExpander.h \ | 10 | CExpander.h \ |
11 | CFilter.h \ | 11 | CFilter.h \ |
12 | CloseDialog.h \ | 12 | CloseDialog.h \ |
13 | Filedata.h \ | 13 | Filedata.h \ |
14 | FixedFont.h \ | 14 | FixedFont.h \ |
15 | FontControl.h \ | 15 | FontControl.h \ |
16 | GraphicWin.h \ | 16 | GraphicWin.h \ |
17 | Markups.h \ | 17 | Markups.h \ |
18 | Navigation.h \ | 18 | Navigation.h \ |
19 | Palm2QImage.h \ | 19 | Palm2QImage.h \ |
20 | Prefs.h \ | 20 | Prefs.h \ |
21 | QFloatBar.h \ | 21 | QFloatBar.h \ |
22 | QTReader.h \ | 22 | QTReader.h \ |
23 | QTReaderApp.h \ | 23 | QTReaderApp.h \ |
24 | QtrListView.h \ | 24 | QtrListView.h \ |
25 | Queue.h \ | 25 | Queue.h \ |
26 | StateData.h \ | 26 | StateData.h \ |
27 | StyleConsts.h \ | 27 | StyleConsts.h \ |
28 | ToolbarPrefs.h \ | 28 | ToolbarPrefs.h \ |
29 | URLDialog.h \ | 29 | URLDialog.h \ |
30 | ZText.h \ | 30 | ZText.h \ |
31 | arith.h \ | 31 | arith.h \ |
32 | cbkmkselector.h \ | 32 | cbkmkselector.h \ |
33 | config.h \ | 33 | config.h \ |
34 | fileBrowser.h \ | 34 | fileBrowser.h \ |
35 | infowin.h \ | 35 | infowin.h \ |
36 | linktype.h \ | 36 | linktype.h \ |
37 | my_list.h \ | 37 | my_list.h \ |
38 | names.h \ | 38 | names.h \ |
39 | opie.h \ | 39 | opie.h \ |
40 | pdb.h \ | 40 | pdb.h \ |
41 | plucker_base.h \ | 41 | plucker_base.h \ |
42 | plucker.h \ | 42 | plucker.h \ |
43 | ppm.h \ | 43 | ppm.h \ |
44 | ppm_expander.h \ | 44 | ppm_expander.h \ |
45 | usenef.h \ | 45 | usenef.h \ |
46 | useqpe.h \ | 46 | useqpe.h \ |
47 | ustring.h \ | 47 | ustring.h \ |
48 | utypes.h \ | 48 | utypes.h \ |
49 | version.h \ | 49 | version.h \ |
50 | ztxt.h | 50 | ztxt.h |
51 | 51 | ||
52 | SOURCES = Aportis.cpp \ | 52 | SOURCES = Aportis.cpp \ |
53 | Bkmks.cpp \ | 53 | Bkmks.cpp \ |
54 | BuffDoc.cpp \ | 54 | BuffDoc.cpp \ |
55 | CBuffer.cpp \ | 55 | CBuffer.cpp \ |
56 | CDrawBuffer.cpp \ | 56 | CDrawBuffer.cpp \ |
57 | CEncoding.cpp \ | 57 | CEncoding.cpp \ |
58 | CEncoding_tables.cpp \ | 58 | CEncoding_tables.cpp \ |
59 | CFilter.cpp \ | 59 | CFilter.cpp \ |
60 | CloseDialog.cpp \ | 60 | CloseDialog.cpp \ |
61 | FontControl.cpp \ | 61 | FontControl.cpp \ |
62 | Navigation.cpp \ | 62 | Navigation.cpp \ |
63 | Palm2QImage.cpp \ | 63 | Palm2QImage.cpp \ |
64 | Prefs.cpp \ | 64 | Prefs.cpp \ |
65 | QTReader.cpp \ | 65 | QTReader.cpp \ |
66 | QTReaderApp.cpp \ | 66 | QTReaderApp.cpp \ |
67 | QtrListView.cpp \ | 67 | QtrListView.cpp \ |
68 | StyleConsts.cpp \ | 68 | StyleConsts.cpp \ |
69 | ToolbarPrefs.cpp \ | 69 | ToolbarPrefs.cpp \ |
70 | URLDialog.cpp \ | 70 | URLDialog.cpp \ |
71 | arith_d.cpp \ | 71 | arith_d.cpp \ |
72 | fileBrowser.cpp \ | 72 | fileBrowser.cpp \ |
73 | infowin.cpp \ | 73 | infowin.cpp \ |
74 | main.cpp \ | 74 | main.cpp \ |
75 | pdb.cpp \ | 75 | pdb.cpp \ |
76 | plucker.cpp \ | 76 | plucker.cpp \ |
77 | plucker_base.cpp \ | 77 | plucker_base.cpp \ |
78 | ppm.cpp \ | 78 | ppm.cpp \ |
79 | ppm_expander.cpp \ | 79 | ppm_expander.cpp \ |
80 | version.cpp \ | 80 | version.cpp \ |
81 | ztxt.cpp | 81 | ztxt.cpp |
82 | 82 | ||
83 | DESTDIR = $(OPIEDIR)/bin | 83 | DESTDIR = $(OPIEDIR)/bin |
84 | TARGET = reader | 84 | TARGET = reader |
85 | 85 | ||
86 | INCLUDEPATH+= $(OPIEDIR)/include | 86 | INCLUDEPATH += $(OPIEDIR)/include |
87 | DEPENDPATH+= $(OPIEDIR)/include | 87 | DEPENDPATH += $(OPIEDIR)/include |
88 | LIBS += -lqpe | 88 | LIBS += -lqpe -lopiecore2 |
89 | 89 | ||
90 | include ( $(OPIEDIR)/include.pro ) | 90 | include ( $(OPIEDIR)/include.pro ) |
91 | 91 | ||
92 | 92 | ||
diff --git a/noncore/apps/opie-reader/plucker.cpp b/noncore/apps/opie-reader/plucker.cpp index e52fd6a..a8e688f 100644 --- a/noncore/apps/opie-reader/plucker.cpp +++ b/noncore/apps/opie-reader/plucker.cpp | |||
@@ -1,151 +1,151 @@ | |||
1 | #include <stdio.h> | 1 | #include <stdio.h> |
2 | #include <string.h> | 2 | #include <string.h> |
3 | #ifdef USEQPE | 3 | #ifdef USEQPE |
4 | #include <qpe/qcopenvelope_qws.h> | 4 | #include <qpe/qcopenvelope_qws.h> |
5 | #endif | 5 | #endif |
6 | #ifdef LOCALPICTURES | 6 | #ifdef LOCALPICTURES |
7 | #include <qscrollview.h> | 7 | #include <qscrollview.h> |
8 | #endif | 8 | #endif |
9 | #ifdef USEQPE | 9 | #ifdef USEQPE |
10 | #include <qpe/global.h> | 10 | #include <qpe/global.h> |
11 | #include <qpe/qpeapplication.h> | 11 | #include <qpe/qpeapplication.h> |
12 | #else | 12 | #else |
13 | #include <qapplication.h> | 13 | #include <qapplication.h> |
14 | #endif | 14 | #endif |
15 | 15 | ||
16 | #include "plucker.h" | 16 | #include "plucker.h" |
17 | #include "Palm2QImage.h" | 17 | #include "Palm2QImage.h" |
18 | 18 | ||
19 | 19 | ||
20 | struct CPlucker_dataRecord | 20 | struct CPlucker_dataRecord |
21 | { | 21 | { |
22 | UInt16 uid; | 22 | UInt16 uid; |
23 | UInt16 nParagraphs; | 23 | UInt16 nParagraphs; |
24 | UInt16 size; | 24 | UInt16 size; |
25 | UInt8 type; | 25 | UInt8 type; |
26 | UInt8 reserved; | 26 | UInt8 reserved; |
27 | }; | 27 | }; |
28 | 28 | ||
29 | int CPlucker::HeaderSize() | 29 | int CPlucker::HeaderSize() |
30 | { | 30 | { |
31 | return sizeof(CPlucker_dataRecord); | 31 | return sizeof(CPlucker_dataRecord); |
32 | } | 32 | } |
33 | 33 | ||
34 | void CPlucker::GetHeader(UInt16& uid, UInt16& nParagraphs, UInt32& size, UInt8& type, UInt8& reserved) | 34 | void CPlucker::GetHeader(UInt16& uid, UInt16& nParagraphs, UInt32& size, UInt8& type, UInt8& reserved) |
35 | { | 35 | { |
36 | CPlucker_dataRecord thishdr; | 36 | CPlucker_dataRecord thishdr; |
37 | fread(&thishdr, 1, HeaderSize(), fin); | 37 | fread(&thishdr, 1, HeaderSize(), fin); |
38 | uid = ntohs(thishdr.uid); | 38 | uid = ntohs(thishdr.uid); |
39 | nParagraphs = ntohs(thishdr.nParagraphs); | 39 | nParagraphs = ntohs(thishdr.nParagraphs); |
40 | size = ntohs(thishdr.size); | 40 | size = ntohs(thishdr.size); |
41 | type = thishdr.type; | 41 | type = thishdr.type; |
42 | reserved = thishdr.reserved; | 42 | reserved = thishdr.reserved; |
43 | } | 43 | } |
44 | 44 | ||
45 | CPlucker::CPlucker() | 45 | CPlucker::CPlucker() |
46 | { /*printf("constructing:%x\n",fin);*/ } | 46 | { /*printf("constructing:%x\n",fin);*/ } |
47 | 47 | ||
48 | bool CPlucker::CorrectDecoder() | 48 | bool CPlucker::CorrectDecoder() |
49 | { | 49 | { |
50 | return (memcmp(&head.type, "DataPlkr", 8) == 0); | 50 | return (memcmp(&head.type, "DataPlkr", 8) == 0); |
51 | } | 51 | } |
52 | 52 | ||
53 | int CPlucker::bgetch() | 53 | int CPlucker::bgetch() |
54 | { | 54 | { |
55 | int ch = EOF; | 55 | int ch = EOF; |
56 | if (bufferpos >= buffercontent) | 56 | if (bufferpos >= buffercontent) |
57 | { | 57 | { |
58 | if (!m_continuous) return EOF; | 58 | if (!m_continuous) return EOF; |
59 | if (bufferrec >= ntohs(head.recordList.numRecords) - 1) return EOF; | 59 | if (bufferrec >= ntohs(head.recordList.numRecords) - 1) return EOF; |
60 | ////qDebug("Passing through %u", currentpos); | 60 | ////odebug << "Passing through " << currentpos << "" << oendl; |
61 | if (!expand(bufferrec+1)) return EOF; | 61 | if (!expand(bufferrec+1)) return EOF; |
62 | mystyle.unset(); | 62 | mystyle.unset(); |
63 | if (m_ParaOffsets[m_nextParaIndex] == 0) | 63 | if (m_ParaOffsets[m_nextParaIndex] == 0) |
64 | { | 64 | { |
65 | while (m_ParaOffsets[m_nextParaIndex+1] == 0) | 65 | while (m_ParaOffsets[m_nextParaIndex+1] == 0) |
66 | { | 66 | { |
67 | // qDebug("Skipping extraspace:%d", m_ParaAttrs[m_nextParaIndex]&7); | 67 | // odebug << "Skipping extraspace:" << m_ParaAttrs[m_nextParaIndex]&7 << "" << oendl; |
68 | m_nextParaIndex++; | 68 | m_nextParaIndex++; |
69 | } | 69 | } |
70 | } | 70 | } |
71 | mystyle.setExtraSpace((m_ParaAttrs[m_nextParaIndex]&7)*2); | 71 | mystyle.setExtraSpace((m_ParaAttrs[m_nextParaIndex]&7)*2); |
72 | //qDebug("Using extraspace:%d", m_ParaAttrs[m_nextParaIndex]&7); | 72 | //odebug << "Using extraspace:" << m_ParaAttrs[m_nextParaIndex]&7 << "" << oendl; |
73 | ch = 10; | 73 | ch = 10; |
74 | EOPPhase = 4; | 74 | EOPPhase = 4; |
75 | } | 75 | } |
76 | else if (bufferpos == m_nextPara) | 76 | else if (bufferpos == m_nextPara) |
77 | { | 77 | { |
78 | while (bufferpos == m_nextPara) | 78 | while (bufferpos == m_nextPara) |
79 | { | 79 | { |
80 | UInt16 attr = m_ParaAttrs[m_nextParaIndex]; | 80 | UInt16 attr = m_ParaAttrs[m_nextParaIndex]; |
81 | m_nextParaIndex++; | 81 | m_nextParaIndex++; |
82 | // qDebug("Skipping extraspace:%d", m_ParaAttrs[m_nextParaIndex]&7); | 82 | // odebug << "Skipping extraspace:" << m_ParaAttrs[m_nextParaIndex]&7 << "" << oendl; |
83 | if (m_nextParaIndex == m_nParas) | 83 | if (m_nextParaIndex == m_nParas) |
84 | { | 84 | { |
85 | m_nextPara = -1; | 85 | m_nextPara = -1; |
86 | } | 86 | } |
87 | else | 87 | else |
88 | { | 88 | { |
89 | m_nextPara += m_ParaOffsets[m_nextParaIndex]; | 89 | m_nextPara += m_ParaOffsets[m_nextParaIndex]; |
90 | } | 90 | } |
91 | } | 91 | } |
92 | mystyle.unset(); | 92 | mystyle.unset(); |
93 | mystyle.setExtraSpace((m_ParaAttrs[m_nextParaIndex]&7)*2); | 93 | mystyle.setExtraSpace((m_ParaAttrs[m_nextParaIndex]&7)*2); |
94 | //qDebug("Using extraspace:%d", m_ParaAttrs[m_nextParaIndex]&7); | 94 | //odebug << "Using extraspace:" << m_ParaAttrs[m_nextParaIndex]&7 << "" << oendl; |
95 | if (m_lastBreak == locate()) | 95 | if (m_lastBreak == locate()) |
96 | { | 96 | { |
97 | currentpos++; | 97 | currentpos++; |
98 | ch = expandedtextbuffer[bufferpos++]; | 98 | ch = expandedtextbuffer[bufferpos++]; |
99 | } | 99 | } |
100 | else | 100 | else |
101 | { | 101 | { |
102 | ch = 10; | 102 | ch = 10; |
103 | } | 103 | } |
104 | } | 104 | } |
105 | else | 105 | else |
106 | { | 106 | { |
107 | currentpos++; | 107 | currentpos++; |
108 | ch = expandedtextbuffer[bufferpos++]; | 108 | ch = expandedtextbuffer[bufferpos++]; |
109 | } | 109 | } |
110 | return ch; | 110 | return ch; |
111 | } | 111 | } |
112 | 112 | ||
113 | tchar CPlucker::getch(bool fast) | 113 | tchar CPlucker::getch(bool fast) |
114 | { | 114 | { |
115 | mystyle.clearPicture(); | 115 | mystyle.clearPicture(); |
116 | 116 | ||
117 | if (EOPPhase > 0) | 117 | if (EOPPhase > 0) |
118 | { | 118 | { |
119 | int ch = 10; | 119 | int ch = 10; |
120 | switch (EOPPhase) | 120 | switch (EOPPhase) |
121 | { | 121 | { |
122 | case 4: | 122 | case 4: |
123 | if (!fast) mystyle.setPicture(false, hRule(100,5)); | 123 | if (!fast) mystyle.setPicture(false, hRule(100,5)); |
124 | mystyle.setCentreJustify(); | 124 | mystyle.setCentreJustify(); |
125 | ch = '#'; | 125 | ch = '#'; |
126 | break; | 126 | break; |
127 | case 3: | 127 | case 3: |
128 | mystyle.setFontSize(3); | 128 | mystyle.setFontSize(3); |
129 | ch = 10; | 129 | ch = 10; |
130 | break; | 130 | break; |
131 | case 2: | 131 | case 2: |
132 | ch = 10; | 132 | ch = 10; |
133 | break; | 133 | break; |
134 | case 1: | 134 | case 1: |
135 | mystyle.unset(); | 135 | mystyle.unset(); |
136 | default: | 136 | default: |
137 | ch = 10; | 137 | ch = 10; |
138 | } | 138 | } |
139 | EOPPhase--; | 139 | EOPPhase--; |
140 | return ch; | 140 | return ch; |
141 | } | 141 | } |
142 | 142 | ||
143 | return getch_base(fast); | 143 | return getch_base(fast); |
144 | } | 144 | } |
145 | 145 | ||
146 | QImage* CPlucker::imagefromdata(UInt8* imgbuffer, UInt32 imgsize) | 146 | QImage* CPlucker::imagefromdata(UInt8* imgbuffer, UInt32 imgsize) |
147 | { | 147 | { |
148 | QImage* qimage = Palm2QImage(imgbuffer, imgsize); | 148 | QImage* qimage = Palm2QImage(imgbuffer, imgsize); |
149 | delete [] imgbuffer; | 149 | delete [] imgbuffer; |
150 | return qimage; | 150 | return qimage; |
151 | } | 151 | } |
diff --git a/noncore/apps/opie-reader/plucker_base.cpp b/noncore/apps/opie-reader/plucker_base.cpp index caa945d..b523a54 100644 --- a/noncore/apps/opie-reader/plucker_base.cpp +++ b/noncore/apps/opie-reader/plucker_base.cpp | |||
@@ -1,1235 +1,1243 @@ | |||
1 | |||
2 | |||
1 | #include "useqpe.h" | 3 | #include "useqpe.h" |
2 | #include <stdio.h> | 4 | #include "plucker_base.h" |
3 | #include <string.h> | 5 | #include "Aportis.h" |
6 | #include "Palm2QImage.h" | ||
7 | |||
8 | /* OPIE */ | ||
9 | #include <opie2/odebug.h> | ||
4 | #ifdef USEQPE | 10 | #ifdef USEQPE |
5 | #include <qpe/qcopenvelope_qws.h> | 11 | #include <qpe/qcopenvelope_qws.h> |
6 | #endif /* USEQPE */ | ||
7 | #ifdef LOCALPICTURES | ||
8 | #include <qscrollview.h> | ||
9 | #endif | ||
10 | #ifdef USEQPE | ||
11 | #include <qpe/global.h> | 12 | #include <qpe/global.h> |
12 | #endif /* USEQPE */ | 13 | #endif /* USEQPE */ |
14 | |||
13 | #ifndef USEQPE | 15 | #ifndef USEQPE |
14 | #include <qapplication.h> | 16 | #include <qapplication.h> |
15 | #else /* USEQPE */ | 17 | #else /* USEQPE */ |
16 | #include <qpe/qpeapplication.h> | 18 | #include <qpe/qpeapplication.h> |
17 | #endif /* USEQPE */ | 19 | #endif /* USEQPE */ |
18 | 20 | ||
19 | #include "plucker_base.h" | 21 | /* QT */ |
20 | #include "Aportis.h" | 22 | #ifdef LOCALPICTURES |
21 | #include "Palm2QImage.h" | 23 | #include <qscrollview.h> |
24 | #endif | ||
25 | |||
26 | /* STD */ | ||
27 | #include <stdio.h> | ||
28 | #include <string.h> | ||
29 | |||
22 | 30 | ||
23 | CPlucker_base::CPlucker_base() : | 31 | CPlucker_base::CPlucker_base() : |
24 | #ifdef LOCALPICTURES | 32 | #ifdef LOCALPICTURES |
25 | m_viewer(NULL), | 33 | m_viewer(NULL), |
26 | m_picture(NULL), | 34 | m_picture(NULL), |
27 | #endif | 35 | #endif |
28 | expandedtextbuffer(NULL), | 36 | expandedtextbuffer(NULL), |
29 | compressedtextbuffer(NULL) | 37 | compressedtextbuffer(NULL) |
30 | //, urls(NULL) | 38 | //, urls(NULL) |
31 | { /*printf("constructing:%x\n",fin);*/ } | 39 | { /*printf("constructing:%x\n",fin);*/ } |
32 | 40 | ||
33 | 41 | ||
34 | void CPlucker_base::Expand(UInt32 reclen, UInt8 type, UInt8* buffer, UInt32 buffersize) | 42 | void CPlucker_base::Expand(UInt32 reclen, UInt8 type, UInt8* buffer, UInt32 buffersize) |
35 | { | 43 | { |
36 | if (type%2 == 0) | 44 | if (type%2 == 0) |
37 | { | 45 | { |
38 | fread(buffer, reclen, sizeof(char), fin); | 46 | fread(buffer, reclen, sizeof(char), fin); |
39 | } | 47 | } |
40 | else | 48 | else |
41 | { | 49 | { |
42 | UInt8* readbuffer = NULL; | 50 | UInt8* readbuffer = NULL; |
43 | if (reclen > compressedbuffersize) | 51 | if (reclen > compressedbuffersize) |
44 | { | 52 | { |
45 | readbuffer = new UInt8[reclen]; | 53 | readbuffer = new UInt8[reclen]; |
46 | } | 54 | } |
47 | else | 55 | else |
48 | { | 56 | { |
49 | readbuffer = compressedtextbuffer; | 57 | readbuffer = compressedtextbuffer; |
50 | } | 58 | } |
51 | if (readbuffer != NULL) | 59 | if (readbuffer != NULL) |
52 | { | 60 | { |
53 | fread(readbuffer, reclen, sizeof(char), fin); | 61 | fread(readbuffer, reclen, sizeof(char), fin); |
54 | switch (ntohs(hdr0.version)) | 62 | switch (ntohs(hdr0.version)) |
55 | { | 63 | { |
56 | case 2: | 64 | case 2: |
57 | UnZip(readbuffer, reclen, buffer, buffersize); | 65 | UnZip(readbuffer, reclen, buffer, buffersize); |
58 | break; | 66 | break; |
59 | case 1: | 67 | case 1: |
60 | UnDoc(readbuffer, reclen, buffer, buffersize); | 68 | UnDoc(readbuffer, reclen, buffer, buffersize); |
61 | break; | 69 | break; |
62 | } | 70 | } |
63 | if (reclen > compressedbuffersize) | 71 | if (reclen > compressedbuffersize) |
64 | { | 72 | { |
65 | delete [] readbuffer; | 73 | delete [] readbuffer; |
66 | } | 74 | } |
67 | } | 75 | } |
68 | } | 76 | } |
69 | } | 77 | } |
70 | 78 | ||
71 | void CPlucker_base::sizes(unsigned long& _file, unsigned long& _text) | 79 | void CPlucker_base::sizes(unsigned long& _file, unsigned long& _text) |
72 | { | 80 | { |
73 | _file = file_length; | 81 | _file = file_length; |
74 | if (textlength == 0) | 82 | if (textlength == 0) |
75 | { | 83 | { |
76 | for (int recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++) | 84 | for (int recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++) |
77 | { | 85 | { |
78 | gotorecordnumber(recptr); | 86 | gotorecordnumber(recptr); |
79 | UInt16 thishdr_uid, thishdr_nParagraphs; | 87 | UInt16 thishdr_uid, thishdr_nParagraphs; |
80 | UInt32 thishdr_size; | 88 | UInt32 thishdr_size; |
81 | UInt8 thishdr_type, thishdr_reserved; | 89 | UInt8 thishdr_type, thishdr_reserved; |
82 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 90 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
83 | if (thishdr_type < 2) textlength += thishdr_size; | 91 | if (thishdr_type < 2) textlength += thishdr_size; |
84 | } | 92 | } |
85 | } | 93 | } |
86 | _text = textlength; | 94 | _text = textlength; |
87 | //ntohl(hdr0.size); | 95 | //ntohl(hdr0.size); |
88 | } | 96 | } |
89 | 97 | ||
90 | char* CPlucker_base::geturl(UInt16 tgt) | 98 | char* CPlucker_base::geturl(UInt16 tgt) |
91 | { | 99 | { |
92 | char * pRet = NULL; | 100 | char * pRet = NULL; |
93 | gotorecordnumber(0); | 101 | gotorecordnumber(0); |
94 | fread(&hdr0, 1, 6, fin); | 102 | fread(&hdr0, 1, 6, fin); |
95 | unsigned int nrecs = ntohs(hdr0.nRecords); | 103 | unsigned int nrecs = ntohs(hdr0.nRecords); |
96 | //qDebug("Version %u, no. recs %u", ntohs(hdr0.version), nrecs); | 104 | //odebug << "Version " << ntohs(hdr0.version) << ", no. recs " << nrecs << "" << oendl; |
97 | UInt16 urlid = 0; | 105 | UInt16 urlid = 0; |
98 | bool urlsfound = false; | 106 | bool urlsfound = false; |
99 | char* urls = NULL; | 107 | char* urls = NULL; |
100 | size_t urlsize = 0; | 108 | size_t urlsize = 0; |
101 | for (unsigned int i = 0; i < nrecs; i++) | 109 | for (unsigned int i = 0; i < nrecs; i++) |
102 | { | 110 | { |
103 | UInt16 id, name; | 111 | UInt16 id, name; |
104 | fread(&name, 1, sizeof(name), fin); | 112 | fread(&name, 1, sizeof(name), fin); |
105 | fread(&id, 1, sizeof(id), fin); | 113 | fread(&id, 1, sizeof(id), fin); |
106 | //qDebug("N:%d, I:%d", ntohs(name), ntohs(id)); | 114 | //odebug << "N:" << ntohs(name) << ", I:" << ntohs(id) << "" << oendl; |
107 | if (ntohs(name) == 2) | 115 | if (ntohs(name) == 2) |
108 | { | 116 | { |
109 | urlsfound = true; | 117 | urlsfound = true; |
110 | urlid = id; | 118 | urlid = id; |
111 | //qDebug("Found url index:%d", ntohs(urlid)); | 119 | //odebug << "Found url index:" << ntohs(urlid) << "" << oendl; |
112 | } | 120 | } |
113 | ////qDebug("%x", id); | 121 | // //odebug << "" << id << "" << oendl; |
114 | } | 122 | } |
115 | if (urlsfound) | 123 | if (urlsfound) |
116 | { | 124 | { |
117 | unsigned short recptr = finduid(ntohs(urlid)); | 125 | unsigned short recptr = finduid(ntohs(urlid)); |
118 | if (recptr != 0) | 126 | if (recptr != 0) |
119 | { | 127 | { |
120 | gotorecordnumber(recptr); | 128 | gotorecordnumber(recptr); |
121 | UInt16 thishdr_uid, thishdr_nParagraphs; | 129 | UInt16 thishdr_uid, thishdr_nParagraphs; |
122 | UInt32 thishdr_size; | 130 | UInt32 thishdr_size; |
123 | UInt8 thishdr_type, thishdr_reserved; | 131 | UInt8 thishdr_type, thishdr_reserved; |
124 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 132 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
125 | UInt16 urlctr = 0; | 133 | UInt16 urlctr = 0; |
126 | while (1) | 134 | while (1) |
127 | { | 135 | { |
128 | UInt16 tctr; | 136 | UInt16 tctr; |
129 | fread(&tctr, 1, sizeof(tctr), fin); | 137 | fread(&tctr, 1, sizeof(tctr), fin); |
130 | fread(&urlid, 1, sizeof(urlid), fin); | 138 | fread(&urlid, 1, sizeof(urlid), fin); |
131 | tctr = ntohs(tctr); | 139 | tctr = ntohs(tctr); |
132 | //qDebug("tgt:%u urlctr:%u tctr:%u", tgt, urlctr, tctr); | 140 | //odebug << "tgt:" << tgt << " urlctr:" << urlctr << " tctr:" << tctr << "" << oendl; |
133 | if (tctr >= tgt) | 141 | if (tctr >= tgt) |
134 | { | 142 | { |
135 | break; | 143 | break; |
136 | } | 144 | } |
137 | urlctr = tctr; | 145 | urlctr = tctr; |
138 | } | 146 | } |
139 | //qDebug("urls are in %d", ntohs(urlid)); | 147 | //odebug << "urls are in " << ntohs(urlid) << "" << oendl; |
140 | recptr = finduid(ntohs(urlid)); | 148 | recptr = finduid(ntohs(urlid)); |
141 | if (recptr != 0) | 149 | if (recptr != 0) |
142 | { | 150 | { |
143 | UInt32 reclen = recordlength(recptr) - HeaderSize(); | 151 | UInt32 reclen = recordlength(recptr) - HeaderSize(); |
144 | gotorecordnumber(recptr); | 152 | gotorecordnumber(recptr); |
145 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 153 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
146 | //qDebug("Found urls:%x",thishdr_type); | 154 | //odebug << "Found urls:" << thishdr_type << "" << oendl; |
147 | urlsize = thishdr_size; | 155 | urlsize = thishdr_size; |
148 | urls = new char[urlsize]; | 156 | urls = new char[urlsize]; |
149 | Expand(reclen, thishdr_type, (UInt8*)urls, urlsize); | 157 | Expand(reclen, thishdr_type, (UInt8*)urls, urlsize); |
150 | char* ptr = urls; | 158 | char* ptr = urls; |
151 | int rn = urlctr+1; | 159 | int rn = urlctr+1; |
152 | while (ptr - urls < urlsize) | 160 | while (ptr - urls < urlsize) |
153 | { | 161 | { |
154 | if (rn == tgt) | 162 | if (rn == tgt) |
155 | { | 163 | { |
156 | //qDebug("URL:%s", ptr); | 164 | //odebug << "URL:" << ptr << "" << oendl; |
157 | int len = strlen(ptr)+1; | 165 | int len = strlen(ptr)+1; |
158 | pRet = new char[len]; | 166 | pRet = new char[len]; |
159 | memcpy(pRet, ptr, len); | 167 | memcpy(pRet, ptr, len); |
160 | break; | 168 | break; |
161 | } | 169 | } |
162 | ptr += strlen(ptr)+1; | 170 | ptr += strlen(ptr)+1; |
163 | rn++; | 171 | rn++; |
164 | } | 172 | } |
165 | delete [] urls; | 173 | delete [] urls; |
166 | } | 174 | } |
167 | } | 175 | } |
168 | } | 176 | } |
169 | else | 177 | else |
170 | { | 178 | { |
171 | QMessageBox::information(NULL, | 179 | QMessageBox::information(NULL, |
172 | QString(PROGNAME), | 180 | QString(PROGNAME), |
173 | QString("No external links\nin this pluck") | 181 | QString("No external links\nin this pluck") |
174 | ); | 182 | ); |
175 | } | 183 | } |
176 | return pRet; | 184 | return pRet; |
177 | } | 185 | } |
178 | 186 | ||
179 | CPlucker_base::~CPlucker_base() | 187 | CPlucker_base::~CPlucker_base() |
180 | { | 188 | { |
181 | if (expandedtextbuffer != NULL) delete [] expandedtextbuffer; | 189 | if (expandedtextbuffer != NULL) delete [] expandedtextbuffer; |
182 | if (compressedtextbuffer != NULL) delete [] compressedtextbuffer; | 190 | if (compressedtextbuffer != NULL) delete [] compressedtextbuffer; |
183 | #ifdef LOCALPICTURES | 191 | #ifdef LOCALPICTURES |
184 | if (m_viewer != NULL) delete m_viewer; | 192 | if (m_viewer != NULL) delete m_viewer; |
185 | #endif | 193 | #endif |
186 | } | 194 | } |
187 | 195 | ||
188 | int CPlucker_base::getch() { return getch(false); } | 196 | int CPlucker_base::getch() { return getch(false); } |
189 | 197 | ||
190 | void CPlucker_base::getch(tchar& ch, CStyle& sty) | 198 | void CPlucker_base::getch(tchar& ch, CStyle& sty) |
191 | { | 199 | { |
192 | ch = getch(false); | 200 | ch = getch(false); |
193 | sty = mystyle; | 201 | sty = mystyle; |
194 | } | 202 | } |
195 | 203 | ||
196 | unsigned int CPlucker_base::locate() | 204 | unsigned int CPlucker_base::locate() |
197 | { | 205 | { |
198 | return currentpos; | 206 | return currentpos; |
199 | /* | 207 | /* |
200 | UInt16 thisrec = 1; | 208 | UInt16 thisrec = 1; |
201 | unsigned long locpos = 0; | 209 | unsigned long locpos = 0; |
202 | gotorecordnumber(thisrec); | 210 | gotorecordnumber(thisrec); |
203 | UInt16 thishdr_uid, thishdr_nParagraphs; | 211 | UInt16 thishdr_uid, thishdr_nParagraphs; |
204 | UInt32 thishdr_size; | 212 | UInt32 thishdr_size; |
205 | UInt8 thishdr_type, thishdr_reserved; | 213 | UInt8 thishdr_type, thishdr_reserved; |
206 | while (thisrec < bufferrec) | 214 | while (thisrec < bufferrec) |
207 | { | 215 | { |
208 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 216 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
209 | if (thishdr_type < 2) locpos += thishdr_size; | 217 | if (thishdr_type < 2) locpos += thishdr_size; |
210 | thisrec++; | 218 | thisrec++; |
211 | gotorecordnumber(thisrec); | 219 | gotorecordnumber(thisrec); |
212 | } | 220 | } |
213 | return locpos+bufferpos; | 221 | return locpos+bufferpos; |
214 | */ | 222 | */ |
215 | } | 223 | } |
216 | 224 | ||
217 | void CPlucker_base::locate(unsigned int n) | 225 | void CPlucker_base::locate(unsigned int n) |
218 | { | 226 | { |
219 | 227 | ||
220 | // clock_t start = clock(); | 228 | // clock_t start = clock(); |
221 | UInt32 textlength = currentpos - bufferpos; | 229 | UInt32 textlength = currentpos - bufferpos; |
222 | UInt16 recptr = bufferrec; | 230 | UInt16 recptr = bufferrec; |
223 | if (n < textlength/2) | 231 | if (n < textlength/2) |
224 | { | 232 | { |
225 | textlength = 0; | 233 | textlength = 0; |
226 | UInt16 thishdr_uid, thishdr_nParagraphs; | 234 | UInt16 thishdr_uid, thishdr_nParagraphs; |
227 | UInt32 thishdr_size = buffercontent; | 235 | UInt32 thishdr_size = buffercontent; |
228 | UInt8 thishdr_type, thishdr_reserved; | 236 | UInt8 thishdr_type, thishdr_reserved; |
229 | for (recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++) | 237 | for (recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++) |
230 | { | 238 | { |
231 | gotorecordnumber(recptr); | 239 | gotorecordnumber(recptr); |
232 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 240 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
233 | if (thishdr_type < 2) | 241 | if (thishdr_type < 2) |
234 | { | 242 | { |
235 | textlength += thishdr_size; | 243 | textlength += thishdr_size; |
236 | if (textlength > n) | 244 | if (textlength > n) |
237 | { | 245 | { |
238 | textlength -= thishdr_size; | 246 | textlength -= thishdr_size; |
239 | break; | 247 | break; |
240 | } | 248 | } |
241 | } | 249 | } |
242 | } | 250 | } |
243 | } | 251 | } |
244 | else if (n < textlength) | 252 | else if (n < textlength) |
245 | { | 253 | { |
246 | UInt16 thishdr_uid, thishdr_nParagraphs; | 254 | UInt16 thishdr_uid, thishdr_nParagraphs; |
247 | UInt32 thishdr_size; | 255 | UInt32 thishdr_size; |
248 | UInt8 thishdr_type, thishdr_reserved; | 256 | UInt8 thishdr_type, thishdr_reserved; |
249 | while (n < textlength && recptr > 1) | 257 | while (n < textlength && recptr > 1) |
250 | { | 258 | { |
251 | recptr--; | 259 | recptr--; |
252 | gotorecordnumber(recptr); | 260 | gotorecordnumber(recptr); |
253 | //qDebug("recptr:%u", recptr); | 261 | //odebug << "recptr:" << recptr << "" << oendl; |
254 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 262 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
255 | if (thishdr_type < 2) | 263 | if (thishdr_type < 2) |
256 | { | 264 | { |
257 | textlength -= thishdr_size; | 265 | textlength -= thishdr_size; |
258 | } | 266 | } |
259 | } | 267 | } |
260 | } | 268 | } |
261 | else | 269 | else |
262 | { | 270 | { |
263 | UInt16 thishdr_uid, thishdr_nParagraphs; | 271 | UInt16 thishdr_uid, thishdr_nParagraphs; |
264 | UInt32 thishdr_size = buffercontent; | 272 | UInt32 thishdr_size = buffercontent; |
265 | UInt8 thishdr_type, thishdr_reserved; | 273 | UInt8 thishdr_type, thishdr_reserved; |
266 | while (n > textlength + thishdr_size && recptr < ntohs(head.recordList.numRecords)-1) | 274 | while (n > textlength + thishdr_size && recptr < ntohs(head.recordList.numRecords)-1) |
267 | { | 275 | { |
268 | textlength += thishdr_size; | 276 | textlength += thishdr_size; |
269 | recptr++; | 277 | recptr++; |
270 | gotorecordnumber(recptr); | 278 | gotorecordnumber(recptr); |
271 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 279 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
272 | if (!(thishdr_type < 2)) | 280 | if (!(thishdr_type < 2)) |
273 | { | 281 | { |
274 | thishdr_size = 0; | 282 | thishdr_size = 0; |
275 | } | 283 | } |
276 | } | 284 | } |
277 | } | 285 | } |
278 | // qDebug("Time(1): %u", clock()-start); | 286 | // odebug << "Time(1): " << clock()-start << "" << oendl; |
279 | /* | 287 | /* |
280 | expand(recptr); | 288 | expand(recptr); |
281 | mystyle.unset(); | 289 | mystyle.unset(); |
282 | bufferpos = n-textlength; | 290 | bufferpos = n-textlength; |
283 | currentpos = n; | 291 | currentpos = n; |
284 | while (bufferpos >= m_nextPara && m_nextPara >= 0) | 292 | while (bufferpos >= m_nextPara && m_nextPara >= 0) |
285 | { | 293 | { |
286 | UInt16 attr = m_ParaAttrs[m_nextParaIndex]; | 294 | UInt16 attr = m_ParaAttrs[m_nextParaIndex]; |
287 | m_nextParaIndex++; | 295 | m_nextParaIndex++; |
288 | if (m_nextParaIndex == m_nParas) | 296 | if (m_nextParaIndex == m_nParas) |
289 | { | 297 | { |
290 | m_nextPara = -1; | 298 | m_nextPara = -1; |
291 | } | 299 | } |
292 | else | 300 | else |
293 | { | 301 | { |
294 | m_nextPara += m_ParaOffsets[m_nextParaIndex]; | 302 | m_nextPara += m_ParaOffsets[m_nextParaIndex]; |
295 | } | 303 | } |
296 | } | 304 | } |
297 | 305 | ||
298 | return; | 306 | return; |
299 | */ | 307 | */ |
300 | // start = clock(); | 308 | // start = clock(); |
301 | 309 | ||
302 | UInt16 thisrec = 0; | 310 | UInt16 thisrec = 0; |
303 | unsigned long locpos = 0; | 311 | unsigned long locpos = 0; |
304 | unsigned long bs = 0; | 312 | unsigned long bs = 0; |
305 | UInt16 thishdr_uid, thishdr_nParagraphs; | 313 | UInt16 thishdr_uid, thishdr_nParagraphs; |
306 | UInt32 thishdr_size; | 314 | UInt32 thishdr_size; |
307 | UInt8 thishdr_type, thishdr_reserved; | 315 | UInt8 thishdr_type, thishdr_reserved; |
308 | do | 316 | do |
309 | { | 317 | { |
310 | thisrec++; | 318 | thisrec++; |
311 | locpos += bs; | 319 | locpos += bs; |
312 | gotorecordnumber(thisrec); | 320 | gotorecordnumber(thisrec); |
313 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 321 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
314 | if (thishdr_type < 2) | 322 | if (thishdr_type < 2) |
315 | { | 323 | { |
316 | bs = thishdr_size; | 324 | bs = thishdr_size; |
317 | } | 325 | } |
318 | else | 326 | else |
319 | { | 327 | { |
320 | bs = 0; | 328 | bs = 0; |
321 | } | 329 | } |
322 | } while (locpos + bs <= n); | 330 | } while (locpos + bs <= n); |
323 | 331 | ||
324 | // qDebug("Time(2): %u", clock()-start); | 332 | // odebug << "Time(2): " << clock()-start << "" << oendl; |
325 | if (recptr != thisrec) | 333 | if (recptr != thisrec) |
326 | { | 334 | { |
327 | qDebug("Disaster:recptr:%u thisrec:%u", recptr, thisrec); | 335 | odebug << "Disaster:recptr:" << recptr << " thisrec:" << thisrec << "" << oendl; |
328 | UInt16 thishdr_uid, thishdr_nParagraphs; | 336 | UInt16 thishdr_uid, thishdr_nParagraphs; |
329 | UInt32 thishdr_size = buffercontent; | 337 | UInt32 thishdr_size = buffercontent; |
330 | UInt8 thishdr_type, thishdr_reserved; | 338 | UInt8 thishdr_type, thishdr_reserved; |
331 | for (recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++) | 339 | for (recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++) |
332 | { | 340 | { |
333 | gotorecordnumber(recptr); | 341 | gotorecordnumber(recptr); |
334 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 342 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
335 | // qDebug("UID:%u Paras:%u Size:%u Type:%u Reserved:%u", thishdr_uid, thishdr_nParagraphs, thishdr_size, (unsigned int)thishdr_type, (unsigned int)thishdr_reserved); | 343 | // odebug << "UID:" << thishdr_uid << " Paras:" << thishdr_nParagraphs << " Size:" << thishdr_size << " Type:" << (unsigned int)thishdr_type << " Reserved:" << (unsigned int)thishdr_reserved << "" << oendl; |
336 | } | 344 | } |
337 | //QApplication::exit ( 100 ); | 345 | // QApplication::exit ( 100 ); |
338 | } | 346 | } |
339 | 347 | ||
340 | currentpos = locpos; | 348 | currentpos = locpos; |
341 | expand(thisrec); | 349 | expand(thisrec); |
342 | while (currentpos < n && bufferpos < buffercontent) getch_base(true); | 350 | while (currentpos < n && bufferpos < buffercontent) getch_base(true); |
343 | 351 | ||
344 | /* // This is faster but the alignment attribute doesn't get set 8^( | 352 | /* // This is faster but the alignment attribute doesn't get set 8^( |
345 | bufferpos = n-locpos; | 353 | bufferpos = n-locpos; |
346 | currentpos = n; | 354 | currentpos = n; |
347 | while (bufferpos >= m_nextPara && m_nextPara >= 0) | 355 | while (bufferpos >= m_nextPara && m_nextPara >= 0) |
348 | { | 356 | { |
349 | UInt16 attr = m_ParaAttrs[m_nextParaIndex]; | 357 | UInt16 attr = m_ParaAttrs[m_nextParaIndex]; |
350 | m_nextParaIndex++; | 358 | m_nextParaIndex++; |
351 | if (m_nextParaIndex == m_nParas) | 359 | if (m_nextParaIndex == m_nParas) |
352 | { | 360 | { |
353 | m_nextPara = -1; | 361 | m_nextPara = -1; |
354 | } | 362 | } |
355 | else | 363 | else |
356 | { | 364 | { |
357 | m_nextPara += m_ParaOffsets[m_nextParaIndex]; | 365 | m_nextPara += m_ParaOffsets[m_nextParaIndex]; |
358 | } | 366 | } |
359 | } | 367 | } |
360 | */ | 368 | */ |
361 | } | 369 | } |
362 | 370 | ||
363 | bool CPlucker_base::expand(int thisrec) | 371 | bool CPlucker_base::expand(int thisrec) |
364 | { | 372 | { |
365 | mystyle.unset(); | 373 | mystyle.unset(); |
366 | size_t reclen = recordlength(thisrec); | 374 | size_t reclen = recordlength(thisrec); |
367 | gotorecordnumber(thisrec); | 375 | gotorecordnumber(thisrec); |
368 | UInt16 thishdr_uid, thishdr_nParagraphs; | 376 | UInt16 thishdr_uid, thishdr_nParagraphs; |
369 | UInt32 thishdr_size; | 377 | UInt32 thishdr_size; |
370 | UInt8 thishdr_type, thishdr_reserved; | 378 | UInt8 thishdr_type, thishdr_reserved; |
371 | while (1) | 379 | while (1) |
372 | { | 380 | { |
373 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 381 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
374 | //qDebug("This (%d) type is %d, uid is %u", thisrec, thishdr_type, thishdr_uid); | 382 | //odebug << "This (" << thisrec << ") type is " << thishdr_type << ", uid is " << thishdr_uid << "" << oendl; |
375 | if (thishdr_type < 2) break; | 383 | if (thishdr_type < 2) break; |
376 | //qDebug("Skipping paragraph of type %d", thishdr_type); | 384 | //odebug << "Skipping paragraph of type " << thishdr_type << "" << oendl; |
377 | if (++thisrec >= ntohs(head.recordList.numRecords) - 1) return false; | 385 | if (++thisrec >= ntohs(head.recordList.numRecords) - 1) return false; |
378 | reclen = recordlength(thisrec); | 386 | reclen = recordlength(thisrec); |
379 | gotorecordnumber(thisrec); | 387 | gotorecordnumber(thisrec); |
380 | } | 388 | } |
381 | m_nParas = thishdr_nParagraphs; | 389 | m_nParas = thishdr_nParagraphs; |
382 | m_bufferisreserved = (thishdr_reserved != 0); | 390 | m_bufferisreserved = (thishdr_reserved != 0); |
383 | //qDebug("It has %u paragraphs and is %u bytes", thishdr_nParagraphs, thishdr_size); | 391 | //odebug << "It has " << thishdr_nParagraphs << " paragraphs and is " << thishdr_size << " bytes" << oendl; |
384 | uid = thishdr_uid; | 392 | uid = thishdr_uid; |
385 | // gotorecordnumber(thisrec); | 393 | // gotorecordnumber(thisrec); |
386 | // fread(expandedtextbuffer,1,10,fin); | 394 | // fread(expandedtextbuffer,1,10,fin); |
387 | for (int i = 0; i < m_nParas; i++) | 395 | for (int i = 0; i < m_nParas; i++) |
388 | { | 396 | { |
389 | UInt16 ubytes, attrs; | 397 | UInt16 ubytes, attrs; |
390 | fread(&ubytes, 1, sizeof(ubytes), fin); | 398 | fread(&ubytes, 1, sizeof(ubytes), fin); |
391 | fread(&attrs, 1, sizeof(attrs), fin); | 399 | fread(&attrs, 1, sizeof(attrs), fin); |
392 | m_ParaOffsets[i] = ntohs(ubytes); | 400 | m_ParaOffsets[i] = ntohs(ubytes); |
393 | m_ParaAttrs[i] = ntohs(attrs); | 401 | m_ParaAttrs[i] = ntohs(attrs); |
394 | ////qDebug("Bytes %u, Attr %x", ntohs(ubytes), ntohs(attrs)); | 402 | // //odebug << "Bytes " << ntohs(ubytes) << ", Attr " << ntohs(attrs) << "" << oendl; |
395 | } | 403 | } |
396 | if (m_nParas > 0) | 404 | if (m_nParas > 0) |
397 | { | 405 | { |
398 | m_nextPara = m_ParaOffsets[0]; | 406 | m_nextPara = m_ParaOffsets[0]; |
399 | //qDebug("First offset = %u", m_nextPara); | 407 | //odebug << "First offset = " << m_nextPara << "" << oendl; |
400 | m_nextParaIndex = 0; | 408 | m_nextParaIndex = 0; |
401 | } | 409 | } |
402 | else | 410 | else |
403 | { | 411 | { |
404 | m_nextPara = -1; | 412 | m_nextPara = -1; |
405 | } | 413 | } |
406 | 414 | ||
407 | reclen -= HeaderSize()+4*m_nParas; | 415 | reclen -= HeaderSize()+4*m_nParas; |
408 | 416 | ||
409 | buffercontent = thishdr_size; | 417 | buffercontent = thishdr_size; |
410 | 418 | ||
411 | if (thishdr_size > buffersize) | 419 | if (thishdr_size > buffersize) |
412 | { | 420 | { |
413 | delete [] expandedtextbuffer; | 421 | delete [] expandedtextbuffer; |
414 | buffersize = thishdr_size; | 422 | buffersize = thishdr_size; |
415 | expandedtextbuffer = new UInt8[buffersize]; | 423 | expandedtextbuffer = new UInt8[buffersize]; |
416 | } | 424 | } |
417 | 425 | ||
418 | Expand(reclen, thishdr_type, expandedtextbuffer, buffercontent); | 426 | Expand(reclen, thishdr_type, expandedtextbuffer, buffercontent); |
419 | bufferpos = 0; | 427 | bufferpos = 0; |
420 | bufferrec = thisrec; | 428 | bufferrec = thisrec; |
421 | //qDebug("BC:%u, HS:%u", buffercontent, thishdr_size); | 429 | //odebug << "BC:" << buffercontent << ", HS:" << thishdr_size << "" << oendl; |
422 | return true; | 430 | return true; |
423 | } | 431 | } |
424 | 432 | ||
425 | void CPlucker_base::UnZip(UInt8* compressedbuffer, size_t reclen, UInt8* tgtbuffer, size_t bsize) | 433 | void CPlucker_base::UnZip(UInt8* compressedbuffer, size_t reclen, UInt8* tgtbuffer, size_t bsize) |
426 | { | 434 | { |
427 | z_stream zstream; | 435 | z_stream zstream; |
428 | memset(&zstream,sizeof(zstream),0); | 436 | memset(&zstream,sizeof(zstream),0); |
429 | zstream.next_in = compressedbuffer; | 437 | zstream.next_in = compressedbuffer; |
430 | zstream.next_out = tgtbuffer; | 438 | zstream.next_out = tgtbuffer; |
431 | zstream.avail_out = bsize; | 439 | zstream.avail_out = bsize; |
432 | zstream.avail_in = reclen; | 440 | zstream.avail_in = reclen; |
433 | 441 | ||
434 | int keylen = 0; | 442 | int keylen = 0; |
435 | 443 | ||
436 | zstream.zalloc = Z_NULL; | 444 | zstream.zalloc = Z_NULL; |
437 | zstream.zfree = Z_NULL; | 445 | zstream.zfree = Z_NULL; |
438 | zstream.opaque = Z_NULL; | 446 | zstream.opaque = Z_NULL; |
439 | 447 | ||
440 | // printf("Initialising\n"); | 448 | // printf("Initialising\n"); |
441 | 449 | ||
442 | inflateInit(&zstream); | 450 | inflateInit(&zstream); |
443 | int err = 0; | 451 | int err = 0; |
444 | do { | 452 | do { |
445 | if ( zstream.avail_in == 0 && 0 < keylen ) { | 453 | if ( zstream.avail_in == 0 && 0 < keylen ) { |
446 | zstream.next_in = compressedbuffer + keylen; | 454 | zstream.next_in = compressedbuffer + keylen; |
447 | zstream.avail_in = reclen - keylen; | 455 | zstream.avail_in = reclen - keylen; |
448 | keylen = 0; | 456 | keylen = 0; |
449 | } | 457 | } |
450 | zstream.next_out = tgtbuffer; | 458 | zstream.next_out = tgtbuffer; |
451 | zstream.avail_out = bsize; | 459 | zstream.avail_out = bsize; |
452 | 460 | ||
453 | err = inflate( &zstream, Z_SYNC_FLUSH ); | 461 | err = inflate( &zstream, Z_SYNC_FLUSH ); |
454 | 462 | ||
455 | ////qDebug("err:%d - %u", err, zstream.avail_in); | 463 | // //odebug << "err:" << err << " - " << zstream.avail_in << "" << oendl; |
456 | 464 | ||
457 | } while ( err == Z_OK ); | 465 | } while ( err == Z_OK ); |
458 | 466 | ||
459 | inflateEnd(&zstream); | 467 | inflateEnd(&zstream); |
460 | } | 468 | } |
461 | 469 | ||
462 | void CPlucker_base::UnDoc(UInt8* compressedbuffer, size_t reclen, UInt8* tgtbuffer, size_t bsize) | 470 | void CPlucker_base::UnDoc(UInt8* compressedbuffer, size_t reclen, UInt8* tgtbuffer, size_t bsize) |
463 | { | 471 | { |
464 | // UInt16 headerSize; | 472 | // UInt16 headerSize; |
465 | UInt16 docSize; | 473 | UInt16 docSize; |
466 | UInt16 i; | 474 | UInt16 i; |
467 | UInt16 j; | 475 | UInt16 j; |
468 | UInt16 k; | 476 | UInt16 k; |
469 | 477 | ||
470 | UInt8 *inBuf = compressedbuffer; | 478 | UInt8 *inBuf = compressedbuffer; |
471 | UInt8 *outBuf = tgtbuffer; | 479 | UInt8 *outBuf = tgtbuffer; |
472 | 480 | ||
473 | // headerSize = sizeof( Header ) + record->paragraphs * sizeof( Paragraph ); | 481 | // headerSize = sizeof( Header ) + record->paragraphs * sizeof( Paragraph ); |
474 | docSize = reclen; | 482 | docSize = reclen; |
475 | 483 | ||
476 | j = 0; | 484 | j = 0; |
477 | k = 0; | 485 | k = 0; |
478 | while ( j < docSize ) { | 486 | while ( j < docSize ) { |
479 | i = 0; | 487 | i = 0; |
480 | while ( i < bsize && j < docSize ) { | 488 | while ( i < bsize && j < docSize ) { |
481 | UInt16 c; | 489 | UInt16 c; |
482 | 490 | ||
483 | c = (UInt16) inBuf[ j++ ]; | 491 | c = (UInt16) inBuf[ j++ ]; |
484 | if ( 0 < c && c < 9 ) { | 492 | if ( 0 < c && c < 9 ) { |
485 | while ( 0 < c-- ) | 493 | while ( 0 < c-- ) |
486 | outBuf[ i++ ] = inBuf[ j++ ]; | 494 | outBuf[ i++ ] = inBuf[ j++ ]; |
487 | } | 495 | } |
488 | else if ( c < 0x80 ) | 496 | else if ( c < 0x80 ) |
489 | outBuf[ i++ ] = c; | 497 | outBuf[ i++ ] = c; |
490 | else if ( 0xc0 <= c ) { | 498 | else if ( 0xc0 <= c ) { |
491 | outBuf[ i++ ] = ' '; | 499 | outBuf[ i++ ] = ' '; |
492 | outBuf[ i++ ] = c ^ 0x80; | 500 | outBuf[ i++ ] = c ^ 0x80; |
493 | } | 501 | } |
494 | else { | 502 | else { |
495 | Int16 m; | 503 | Int16 m; |
496 | Int16 n; | 504 | Int16 n; |
497 | 505 | ||
498 | c <<= 8; | 506 | c <<= 8; |
499 | c += inBuf[ j++ ]; | 507 | c += inBuf[ j++ ]; |
500 | 508 | ||
501 | m = ( c & 0x3fff ) >> COUNT_BITS; | 509 | m = ( c & 0x3fff ) >> COUNT_BITS; |
502 | n = c & ( ( 1 << COUNT_BITS ) - 1 ); | 510 | n = c & ( ( 1 << COUNT_BITS ) - 1 ); |
503 | n += 2; | 511 | n += 2; |
504 | 512 | ||
505 | do { | 513 | do { |
506 | outBuf[ i ] = outBuf[ i - m ]; | 514 | outBuf[ i ] = outBuf[ i - m ]; |
507 | i++; | 515 | i++; |
508 | } while ( 0 < n-- ); | 516 | } while ( 0 < n-- ); |
509 | } | 517 | } |
510 | } | 518 | } |
511 | k += bsize; | 519 | k += bsize; |
512 | } | 520 | } |
513 | } | 521 | } |
514 | 522 | ||
515 | void CPlucker_base::home() | 523 | void CPlucker_base::home() |
516 | { | 524 | { |
517 | currentpos = 0; | 525 | currentpos = 0; |
518 | expand(1); | 526 | expand(1); |
519 | } | 527 | } |
520 | 528 | ||
521 | CList<Bkmk>* CPlucker_base::getbkmklist() | 529 | CList<Bkmk>* CPlucker_base::getbkmklist() |
522 | { | 530 | { |
523 | /* | 531 | /* |
524 | UInt16 thishdr_uid, thishdr_nParagraphs; | 532 | UInt16 thishdr_uid, thishdr_nParagraphs; |
525 | UInt32 thishdr_size; | 533 | UInt32 thishdr_size; |
526 | UInt8 thishdr_type, thishdr_reserved; | 534 | UInt8 thishdr_type, thishdr_reserved; |
527 | 535 | ||
528 | for (int i = 1; i < ntohs(head.recordList.numRecords); i++) | 536 | for (int i = 1; i < ntohs(head.recordList.numRecords); i++) |
529 | { | 537 | { |
530 | gotorecordnumber(i); | 538 | gotorecordnumber(i); |
531 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 539 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
532 | if (thishdr_type == 8) | 540 | if (thishdr_type == 8) |
533 | { | 541 | { |
534 | UInt16 n; | 542 | UInt16 n; |
535 | fread(&n, 1, sizeof(n), fin); | 543 | fread(&n, 1, sizeof(n), fin); |
536 | n = ntohs(n); | 544 | n = ntohs(n); |
537 | //qDebug("Found %u bookmarks", n); | 545 | //odebug << "Found " << n << " bookmarks" << oendl; |
538 | } | 546 | } |
539 | //qDebug("Found:%d, %u", i , thishdr_type); | 547 | //odebug << "Found:" << i << ", " << thishdr_type << "" << oendl; |
540 | } | 548 | } |
541 | */ | 549 | */ |
542 | return NULL; | 550 | return NULL; |
543 | } | 551 | } |
544 | 552 | ||
545 | 553 | ||
546 | QImage* CPlucker_base::expandimg(UInt16 tgt, bool border) | 554 | QImage* CPlucker_base::expandimg(UInt16 tgt, bool border) |
547 | { | 555 | { |
548 | QImage* qimage = getimg(tgt); | 556 | QImage* qimage = getimg(tgt); |
549 | QImage* ret; | 557 | QImage* ret; |
550 | if (qimage == NULL) return NULL; | 558 | if (qimage == NULL) return NULL; |
551 | if (border) | 559 | if (border) |
552 | { | 560 | { |
553 | QPixmap* image = new QPixmap(0,0); | 561 | QPixmap* image = new QPixmap(0,0); |
554 | image->convertFromImage(*qimage); | 562 | image->convertFromImage(*qimage); |
555 | delete qimage; | 563 | delete qimage; |
556 | QPixmap* pret = new QPixmap(image->width()+4, image->height()+4); | 564 | QPixmap* pret = new QPixmap(image->width()+4, image->height()+4); |
557 | pret->fill(Qt::red); | 565 | pret->fill(Qt::red); |
558 | bitBlt(pret, 2, 2, image, 0, 0, -1, -1);//, Qt::RasterOp::CopyROP); | 566 | bitBlt(pret, 2, 2, image, 0, 0, -1, -1);//, Qt::RasterOp::CopyROP); |
559 | delete image; | 567 | delete image; |
560 | ret = new QImage(pret->convertToImage()); | 568 | ret = new QImage(pret->convertToImage()); |
561 | } | 569 | } |
562 | else | 570 | else |
563 | { | 571 | { |
564 | ret = qimage; | 572 | ret = qimage; |
565 | } | 573 | } |
566 | return ret; | 574 | return ret; |
567 | } | 575 | } |
568 | 576 | ||
569 | #ifdef _BUFFERPICS | 577 | #ifdef _BUFFERPICS |
570 | #include <qmap.h> | 578 | #include <qmap.h> |
571 | #endif | 579 | #endif |
572 | 580 | ||
573 | QImage* CPlucker_base::getPicture(unsigned long tgt) | 581 | QImage* CPlucker_base::getPicture(unsigned long tgt) |
574 | { | 582 | { |
575 | #ifdef _BUFFERPICS | 583 | #ifdef _BUFFERPICS |
576 | static QMap<unsigned long, QPixmap> pix; | 584 | static QMap<unsigned long, QPixmap> pix; |
577 | QMap<unsigned long, QPixmap>::Iterator t = pix.find(tgt); | 585 | QMap<unsigned long, QPixmap>::Iterator t = pix.find(tgt); |
578 | if (t == pix.end()) | 586 | if (t == pix.end()) |
579 | { | 587 | { |
580 | pix[tgt] = *expandimg(tgt); | 588 | pix[tgt] = *expandimg(tgt); |
581 | return &pix[tgt]; | 589 | return &pix[tgt]; |
582 | } | 590 | } |
583 | else | 591 | else |
584 | return &(t.data()); | 592 | return &(t.data()); |
585 | #else | 593 | #else |
586 | return expandimg(tgt >> 16); | 594 | return expandimg(tgt >> 16); |
587 | #endif | 595 | #endif |
588 | } | 596 | } |
589 | 597 | ||
590 | #ifdef LOCALPICTURES | 598 | #ifdef LOCALPICTURES |
591 | #include <unistd.h> | 599 | #include <unistd.h> |
592 | #include <qpe/global.h> | 600 | #include <qpe/global.h> |
593 | void CPlucker_base::showimg(UInt16 tgt) | 601 | void CPlucker_base::showimg(UInt16 tgt) |
594 | { | 602 | { |
595 | //qDebug("Crassssssh!"); | 603 | //odebug << "Crassssssh!" << oendl; |
596 | QPixmap* qimage = expandimg(tgt); | 604 | QPixmap* qimage = expandimg(tgt); |
597 | m_picture->setFixedSize(qimage->size()); | 605 | m_picture->setFixedSize(qimage->size()); |
598 | m_picture->setBackgroundPixmap(*qimage); | 606 | m_picture->setBackgroundPixmap(*qimage); |
599 | delete qimage; | 607 | delete qimage; |
600 | m_viewer->show(); | 608 | m_viewer->show(); |
601 | 609 | ||
602 | /* | 610 | /* |
603 | char tmp[] = "uqtreader.XXXXXX"; | 611 | char tmp[] = "uqtreader.XXXXXX"; |
604 | QImage* qimage = getimg(tgt); | 612 | QImage* qimage = getimg(tgt); |
605 | QPixmap* image = new QPixmap(0,0); | 613 | QPixmap* image = new QPixmap(0,0); |
606 | // //qDebug("New image"); | 614 | // //odebug << "New image" << oendl; |
607 | image->convertFromImage(*qimage); | 615 | image->convertFromImage(*qimage); |
608 | delete qimage; | 616 | delete qimage; |
609 | char tmpfile[sizeof(tmp)+1]; | 617 | char tmpfile[sizeof(tmp)+1]; |
610 | strcpy(tmpfile,tmp); | 618 | strcpy(tmpfile,tmp); |
611 | int f = mkstemp(tmpfile); | 619 | int f = mkstemp(tmpfile); |
612 | close(f); | 620 | close(f); |
613 | //qDebug("TMPFILE:%s", tmpfile); | 621 | //odebug << "TMPFILE:" << tmpfile << "" << oendl; |
614 | if (image->save(tmpfile,"PNG")) | 622 | if (image->save(tmpfile,"PNG")) |
615 | { | 623 | { |
616 | QCopEnvelope e("QPE/Application/showimg", "setDocument(QString)"); | 624 | QCopEnvelope e("QPE/Application/showimg", "setDocument(QString)"); |
617 | e << QString(tmpfile); | 625 | e << QString(tmpfile); |
618 | } | 626 | } |
619 | Global::statusMessage("Opening image"); | 627 | Global::statusMessage("Opening image"); |
620 | sleep(5); | 628 | sleep(5); |
621 | delete image; | 629 | delete image; |
622 | unlink(tmpfile); | 630 | unlink(tmpfile); |
623 | */ | 631 | */ |
624 | } | 632 | } |
625 | 633 | ||
626 | #endif | 634 | #endif |
627 | 635 | ||
628 | unsigned short CPlucker_base::finduid(unsigned short urlid) | 636 | unsigned short CPlucker_base::finduid(unsigned short urlid) |
629 | { | 637 | { |
630 | // //qDebug("Finding %u", urlid); | 638 | // //odebug << "Finding " << urlid << "" << oendl; |
631 | unsigned short jmin = 1, jmax = ntohs(head.recordList.numRecords); | 639 | unsigned short jmin = 1, jmax = ntohs(head.recordList.numRecords); |
632 | unsigned short jmid = (jmin+jmax) >> 1; | 640 | unsigned short jmid = (jmin+jmax) >> 1; |
633 | while (jmax - jmin > 1) | 641 | while (jmax - jmin > 1) |
634 | { | 642 | { |
635 | gotorecordnumber(jmid); | 643 | gotorecordnumber(jmid); |
636 | UInt16 thishdr_uid, thishdr_nParagraphs; | 644 | UInt16 thishdr_uid, thishdr_nParagraphs; |
637 | UInt32 thishdr_size; | 645 | UInt32 thishdr_size; |
638 | UInt8 thishdr_type, thishdr_reserved; | 646 | UInt8 thishdr_type, thishdr_reserved; |
639 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 647 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
640 | unsigned short luid = thishdr_uid; | 648 | unsigned short luid = thishdr_uid; |
641 | ////qDebug("%u %u %u : %u", jmin, jmid, jmax, urlid); | 649 | // //odebug << "" << jmin << " " << jmid << " " << jmax << " : " << urlid << "" << oendl; |
642 | if (luid == urlid) | 650 | if (luid == urlid) |
643 | { | 651 | { |
644 | return jmid; | 652 | return jmid; |
645 | } | 653 | } |
646 | if (luid < urlid) | 654 | if (luid < urlid) |
647 | { | 655 | { |
648 | jmin = jmid; | 656 | jmin = jmid; |
649 | } | 657 | } |
650 | else | 658 | else |
651 | { | 659 | { |
652 | jmax = jmid; | 660 | jmax = jmid; |
653 | } | 661 | } |
654 | jmid = (jmin+jmax) >> 1; | 662 | jmid = (jmin+jmax) >> 1; |
655 | } | 663 | } |
656 | gotorecordnumber(jmin); | 664 | gotorecordnumber(jmin); |
657 | UInt16 thishdr_uid, thishdr_nParagraphs; | 665 | UInt16 thishdr_uid, thishdr_nParagraphs; |
658 | UInt32 thishdr_size; | 666 | UInt32 thishdr_size; |
659 | UInt8 thishdr_type, thishdr_reserved; | 667 | UInt8 thishdr_type, thishdr_reserved; |
660 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 668 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
661 | unsigned short luid = thishdr_uid; | 669 | unsigned short luid = thishdr_uid; |
662 | //qDebug("jmin at end:%u,%u", jmin, luid); | 670 | //odebug << "jmin at end:" << jmin << "," << luid << "" << oendl; |
663 | if (luid == urlid) | 671 | if (luid == urlid) |
664 | { | 672 | { |
665 | return jmin; | 673 | return jmin; |
666 | } | 674 | } |
667 | gotorecordnumber(jmax); | 675 | gotorecordnumber(jmax); |
668 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 676 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
669 | luid = thishdr_uid; | 677 | luid = thishdr_uid; |
670 | //qDebug("jmax at end:%u,%u", jmax, luid); | 678 | //odebug << "jmax at end:" << jmax << "," << luid << "" << oendl; |
671 | if (luid == urlid) | 679 | if (luid == urlid) |
672 | { | 680 | { |
673 | return jmax; | 681 | return jmax; |
674 | } | 682 | } |
675 | //qDebug("Couldn't find %u", urlid); | 683 | //odebug << "Couldn't find " << urlid << "" << oendl; |
676 | return 0; // Not found! | 684 | return 0; // Not found! |
677 | } | 685 | } |
678 | 686 | ||
679 | 687 | ||
680 | void CPlucker_base::setSaveData(unsigned char*& data, unsigned short& len, unsigned char* src, unsigned short srclen) | 688 | void CPlucker_base::setSaveData(unsigned char*& data, unsigned short& len, unsigned char* src, unsigned short srclen) |
681 | { | 689 | { |
682 | unsigned short sz = 0; | 690 | unsigned short sz = 0; |
683 | for (CList<unsigned long>::iterator it = visited.begin(); it != visited.end(); it++) | 691 | for (CList<unsigned long>::iterator it = visited.begin(); it != visited.end(); it++) |
684 | { | 692 | { |
685 | sz++; | 693 | sz++; |
686 | } | 694 | } |
687 | size_t newlen = srclen+sizeof(sz)+sz*sizeof(unsigned long); | 695 | size_t newlen = srclen+sizeof(sz)+sz*sizeof(unsigned long); |
688 | unsigned char* newdata = new unsigned char[newlen]; | 696 | unsigned char* newdata = new unsigned char[newlen]; |
689 | unsigned char* pdata = newdata; | 697 | unsigned char* pdata = newdata; |
690 | memcpy(newdata, src, srclen); | 698 | memcpy(newdata, src, srclen); |
691 | newdata += srclen; | 699 | newdata += srclen; |
692 | memcpy(newdata, &sz, sizeof(sz)); | 700 | memcpy(newdata, &sz, sizeof(sz)); |
693 | newdata += sizeof(sz); | 701 | newdata += sizeof(sz); |
694 | #ifdef _WINDOWS | 702 | #ifdef _WINDOWS |
695 | for (it = visited.begin(); it != visited.end(); it++) | 703 | for (it = visited.begin(); it != visited.end(); it++) |
696 | #else | 704 | #else |
697 | for (CList<unsigned long>::iterator it = visited.begin(); it != visited.end(); it++) | 705 | for (CList<unsigned long>::iterator it = visited.begin(); it != visited.end(); it++) |
698 | #endif | 706 | #endif |
699 | { | 707 | { |
700 | unsigned long t = *it; | 708 | unsigned long t = *it; |
701 | //qDebug("[%u]", t); | 709 | // odebug << "[" << t << "]" << oendl; |
702 | memcpy(newdata, &t, sizeof(t)); | 710 | memcpy(newdata, &t, sizeof(t)); |
703 | newdata += sizeof(t); | 711 | newdata += sizeof(t); |
704 | } | 712 | } |
705 | m_nav.setSaveData(data, len, pdata, newlen); | 713 | m_nav.setSaveData(data, len, pdata, newlen); |
706 | delete [] pdata; | 714 | delete [] pdata; |
707 | } | 715 | } |
708 | 716 | ||
709 | void CPlucker_base::putSaveData(unsigned char*& src, unsigned short& srclen) | 717 | void CPlucker_base::putSaveData(unsigned char*& src, unsigned short& srclen) |
710 | { | 718 | { |
711 | unsigned short sz; | 719 | unsigned short sz; |
712 | if (srclen >= sizeof(sz)) | 720 | if (srclen >= sizeof(sz)) |
713 | { | 721 | { |
714 | memcpy(&sz, src, sizeof(sz)); | 722 | memcpy(&sz, src, sizeof(sz)); |
715 | src += sizeof(sz); | 723 | src += sizeof(sz); |
716 | srclen -= sizeof(sz); | 724 | srclen -= sizeof(sz); |
717 | } | 725 | } |
718 | for (int i = 0; i < sz; i++) | 726 | for (int i = 0; i < sz; i++) |
719 | { | 727 | { |
720 | unsigned long t; | 728 | unsigned long t; |
721 | if (srclen >= sizeof(t)) | 729 | if (srclen >= sizeof(t)) |
722 | { | 730 | { |
723 | memcpy(&t, src, sizeof(t)); | 731 | memcpy(&t, src, sizeof(t)); |
724 | // qDebug("[%u]", t); | 732 | // odebug << "[" << t << "]" << oendl; |
725 | visited.push_front(t); | 733 | visited.push_front(t); |
726 | src += sizeof(t); | 734 | src += sizeof(t); |
727 | srclen -= sizeof(t); | 735 | srclen -= sizeof(t); |
728 | } | 736 | } |
729 | else | 737 | else |
730 | { | 738 | { |
731 | QMessageBox::warning(NULL, PROGNAME, "File data mismatch\nMight fix itself"); | 739 | QMessageBox::warning(NULL, PROGNAME, "File data mismatch\nMight fix itself"); |
732 | break; | 740 | break; |
733 | } | 741 | } |
734 | } | 742 | } |
735 | m_nav.putSaveData(src, srclen); | 743 | m_nav.putSaveData(src, srclen); |
736 | } | 744 | } |
737 | 745 | ||
738 | int CPlucker_base::OpenFile(const char *src) | 746 | int CPlucker_base::OpenFile(const char *src) |
739 | { | 747 | { |
740 | m_lastBreak = 0; | 748 | m_lastBreak = 0; |
741 | if (!Cpdb::openfile(src)) | 749 | if (!Cpdb::openfile(src)) |
742 | { | 750 | { |
743 | return -1; | 751 | return -1; |
744 | } | 752 | } |
745 | 753 | ||
746 | if (!CorrectDecoder()) return -1; | 754 | if (!CorrectDecoder()) return -1; |
747 | 755 | ||
748 | gotorecordnumber(0); | 756 | gotorecordnumber(0); |
749 | fread(&hdr0, 1, 6, fin); | 757 | fread(&hdr0, 1, 6, fin); |
750 | setbuffersize(); | 758 | setbuffersize(); |
751 | compressedtextbuffer = new UInt8[compressedbuffersize]; | 759 | compressedtextbuffer = new UInt8[compressedbuffersize]; |
752 | expandedtextbuffer = new UInt8[buffersize]; | 760 | expandedtextbuffer = new UInt8[buffersize]; |
753 | 761 | ||
754 | //qDebug("Total number of records:%u", ntohs(head.recordList.numRecords)); | 762 | //odebug << "Total number of records:" << ntohs(head.recordList.numRecords) << "" << oendl; |
755 | 763 | ||
756 | unsigned int nrecs = ntohs(hdr0.nRecords); | 764 | unsigned int nrecs = ntohs(hdr0.nRecords); |
757 | //qDebug("Version %u, no. recs %u", ntohs(hdr0.version), nrecs); | 765 | //odebug << "Version " << ntohs(hdr0.version) << ", no. recs " << nrecs << "" << oendl; |
758 | UInt16 homerecid = 1; | 766 | UInt16 homerecid = 1; |
759 | for (unsigned int i = 0; i < nrecs; i++) | 767 | for (unsigned int i = 0; i < nrecs; i++) |
760 | { | 768 | { |
761 | UInt16 id, name; | 769 | UInt16 id, name; |
762 | fread(&name, 1, sizeof(name), fin); | 770 | fread(&name, 1, sizeof(name), fin); |
763 | fread(&id, 1, sizeof(id), fin); | 771 | fread(&id, 1, sizeof(id), fin); |
764 | //qDebug("N:%d, I:%d", ntohs(name), ntohs(id)); | 772 | //odebug << "N:" << ntohs(name) << ", I:" << ntohs(id) << "" << oendl; |
765 | if (ntohs(name) == 0) homerecid = ntohs(id); | 773 | if (ntohs(name) == 0) homerecid = ntohs(id); |
766 | } | 774 | } |
767 | 775 | ||
768 | textlength = 0; | 776 | textlength = 0; |
769 | for (int recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++) | 777 | for (int recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++) |
770 | { | 778 | { |
771 | gotorecordnumber(recptr); | 779 | gotorecordnumber(recptr); |
772 | UInt16 thishdr_uid, thishdr_nParagraphs; | 780 | UInt16 thishdr_uid, thishdr_nParagraphs; |
773 | UInt32 thishdr_size; | 781 | UInt32 thishdr_size; |
774 | UInt8 thishdr_type, thishdr_reserved; | 782 | UInt8 thishdr_type, thishdr_reserved; |
775 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 783 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
776 | if (thishdr_uid == homerecid) | 784 | if (thishdr_uid == homerecid) |
777 | { | 785 | { |
778 | m_homepos = textlength; | 786 | m_homepos = textlength; |
779 | break; | 787 | break; |
780 | } | 788 | } |
781 | if (thishdr_type < 2) textlength += thishdr_size; | 789 | if (thishdr_type < 2) textlength += thishdr_size; |
782 | } | 790 | } |
783 | textlength = 0; | 791 | textlength = 0; |
784 | home(); | 792 | home(); |
785 | #ifdef LOCALPICTURES | 793 | #ifdef LOCALPICTURES |
786 | if (m_viewer == NULL) | 794 | if (m_viewer == NULL) |
787 | { | 795 | { |
788 | m_viewer = new QScrollView(NULL); | 796 | m_viewer = new QScrollView(NULL); |
789 | m_picture = new QWidget(m_viewer->viewport()); | 797 | m_picture = new QWidget(m_viewer->viewport()); |
790 | m_viewer->addChild(m_picture); | 798 | m_viewer->addChild(m_picture); |
791 | } | 799 | } |
792 | #endif | 800 | #endif |
793 | return 0; | 801 | return 0; |
794 | 802 | ||
795 | } | 803 | } |
796 | 804 | ||
797 | QImage* CPlucker_base::getimg(UInt16 tgt) | 805 | QImage* CPlucker_base::getimg(UInt16 tgt) |
798 | { | 806 | { |
799 | size_t reclen; | 807 | size_t reclen; |
800 | UInt16 thisrec = finduid(tgt); | 808 | UInt16 thisrec = finduid(tgt); |
801 | reclen = recordlength(thisrec); | 809 | reclen = recordlength(thisrec); |
802 | gotorecordnumber(thisrec); | 810 | gotorecordnumber(thisrec); |
803 | UInt16 thishdr_uid, thishdr_nParagraphs; | 811 | UInt16 thishdr_uid, thishdr_nParagraphs; |
804 | UInt32 thishdr_size; | 812 | UInt32 thishdr_size; |
805 | UInt8 thishdr_type, thishdr_reserved; | 813 | UInt8 thishdr_type, thishdr_reserved; |
806 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 814 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
807 | reclen -= HeaderSize(); | 815 | reclen -= HeaderSize(); |
808 | 816 | ||
809 | UInt32 imgsize = thishdr_size; | 817 | UInt32 imgsize = thishdr_size; |
810 | UInt8* imgbuffer = new UInt8[imgsize]; | 818 | UInt8* imgbuffer = new UInt8[imgsize]; |
811 | 819 | ||
812 | Expand(reclen, thishdr_type, imgbuffer, imgsize); | 820 | Expand(reclen, thishdr_type, imgbuffer, imgsize); |
813 | 821 | ||
814 | return imagefromdata(imgbuffer, imgsize); | 822 | return imagefromdata(imgbuffer, imgsize); |
815 | } | 823 | } |
816 | 824 | ||
817 | linkType CPlucker_base::hyperlink(unsigned int n, QString& wrd) | 825 | linkType CPlucker_base::hyperlink(unsigned int n, QString& wrd) |
818 | { | 826 | { |
819 | visited.push_front(n); | 827 | visited.push_front(n); |
820 | UInt16 tuid = (n >> 16); | 828 | UInt16 tuid = (n >> 16); |
821 | n &= 0xffff; | 829 | n &= 0xffff; |
822 | // //qDebug("Hyper:<%u,%u>", tuid, n); | 830 | // //odebug << "Hyper:<" << tuid << "," << n << ">" << oendl; |
823 | UInt16 thisrec = 1; | 831 | UInt16 thisrec = 1; |
824 | currentpos = 0; | 832 | currentpos = 0; |
825 | gotorecordnumber(thisrec); | 833 | gotorecordnumber(thisrec); |
826 | UInt16 thishdr_uid, thishdr_nParagraphs; | 834 | UInt16 thishdr_uid, thishdr_nParagraphs; |
827 | UInt32 thishdr_size; | 835 | UInt32 thishdr_size; |
828 | UInt8 thishdr_type, thishdr_reserved; | 836 | UInt8 thishdr_type, thishdr_reserved; |
829 | while (1) | 837 | while (1) |
830 | { | 838 | { |
831 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); | 839 | GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); |
832 | if (tuid == thishdr_uid) break; | 840 | if (tuid == thishdr_uid) break; |
833 | if (thishdr_type < 2) currentpos += thishdr_size; | 841 | if (thishdr_type < 2) currentpos += thishdr_size; |
834 | ////qDebug("hyper-cp:%u", currentpos); | 842 | // //odebug << "hyper-cp:" << currentpos << "" << oendl; |
835 | thisrec++; | 843 | thisrec++; |
836 | if (thisrec >= ntohs(head.recordList.numRecords)) | 844 | if (thisrec >= ntohs(head.recordList.numRecords)) |
837 | { | 845 | { |
838 | char *turl = geturl(tuid); | 846 | char *turl = geturl(tuid); |
839 | if (turl == NULL) | 847 | if (turl == NULL) |
840 | { | 848 | { |
841 | QMessageBox::information(NULL, | 849 | QMessageBox::information(NULL, |
842 | QString(PROGNAME), | 850 | QString(PROGNAME), |
843 | QString("Couldn't find link") | 851 | QString("Couldn't find link") |
844 | ); | 852 | ); |
845 | } | 853 | } |
846 | else | 854 | else |
847 | { | 855 | { |
848 | wrd = turl; | 856 | wrd = turl; |
849 | #ifdef USEQPE | 857 | #ifdef USEQPE |
850 | if (wrd.length() > 10) | 858 | if (wrd.length() > 10) |
851 | { | 859 | { |
852 | Global::statusMessage(wrd.left(8) + ".."); | 860 | Global::statusMessage(wrd.left(8) + ".."); |
853 | } | 861 | } |
854 | else | 862 | else |
855 | { | 863 | { |
856 | Global::statusMessage(wrd); | 864 | Global::statusMessage(wrd); |
857 | } | 865 | } |
858 | #else | 866 | #else |
859 | #endif /* USEQPE */ | 867 | #endif /* USEQPE */ |
860 | //qDebug("Link:%s", (const char*)wrd); | 868 | //odebug << "Link:" << wrd << "" << oendl; |
861 | // setlink(fn, wrd); | 869 | // setlink(fn, wrd); |
862 | delete [] turl; | 870 | delete [] turl; |
863 | } | 871 | } |
864 | return eNone; | 872 | return eNone; |
865 | } | 873 | } |
866 | gotorecordnumber(thisrec); | 874 | gotorecordnumber(thisrec); |
867 | } | 875 | } |
868 | if (thishdr_type > 1) | 876 | if (thishdr_type > 1) |
869 | { | 877 | { |
870 | if (thishdr_type == 4) | 878 | if (thishdr_type == 4) |
871 | { | 879 | { |
872 | QMessageBox::information(NULL, | 880 | QMessageBox::information(NULL, |
873 | QString(PROGNAME), | 881 | QString(PROGNAME), |
874 | QString("Mailto links\nnot yet supported (2)")); | 882 | QString("Mailto links\nnot yet supported (2)")); |
875 | } | 883 | } |
876 | else | 884 | else |
877 | { | 885 | { |
878 | if (thishdr_type > 3) | 886 | if (thishdr_type > 3) |
879 | { | 887 | { |
880 | QMessageBox::information(NULL, | 888 | QMessageBox::information(NULL, |
881 | QString(PROGNAME), | 889 | QString(PROGNAME), |
882 | QString("External links\nnot yet supported (2)") | 890 | QString("External links\nnot yet supported (2)") |
883 | ); | 891 | ); |
884 | return eNone; | 892 | return eNone; |
885 | } | 893 | } |
886 | else | 894 | else |
887 | { | 895 | { |
888 | #ifdef LOCALPICTURES | 896 | #ifdef LOCALPICTURES |
889 | showimg(tuid); | 897 | showimg(tuid); |
890 | #else | 898 | #else |
891 | return ePicture; | 899 | return ePicture; |
892 | #endif | 900 | #endif |
893 | } | 901 | } |
894 | } | 902 | } |
895 | return eNone; | 903 | return eNone; |
896 | } | 904 | } |
897 | /* | 905 | /* |
898 | if (thishdr_type == 2 || thishdr_type == 3) | 906 | if (thishdr_type == 2 || thishdr_type == 3) |
899 | { | 907 | { |
900 | expandimg(thisrec); | 908 | expandimg(thisrec); |
901 | 909 | ||
902 | } | 910 | } |
903 | */ | 911 | */ |
904 | else | 912 | else |
905 | { | 913 | { |
906 | expand(thisrec); | 914 | expand(thisrec); |
907 | if (n != 0) | 915 | if (n != 0) |
908 | { | 916 | { |
909 | if (n >= m_nParas) | 917 | if (n >= m_nParas) |
910 | { | 918 | { |
911 | QMessageBox::information(NULL, | 919 | QMessageBox::information(NULL, |
912 | QString(PROGNAME), | 920 | QString(PROGNAME), |
913 | QString("Error in link\nPara # too big") | 921 | QString("Error in link\nPara # too big") |
914 | ); | 922 | ); |
915 | return eNone; | 923 | return eNone; |
916 | } | 924 | } |
917 | unsigned int noff = 0; | 925 | unsigned int noff = 0; |
918 | for (unsigned int i = 0; i < n; i++) noff += m_ParaOffsets[i]; | 926 | for (unsigned int i = 0; i < n; i++) noff += m_ParaOffsets[i]; |
919 | n = noff; | 927 | n = noff; |
920 | } | 928 | } |
921 | if (n > thishdr_size) | 929 | if (n > thishdr_size) |
922 | { | 930 | { |
923 | QMessageBox::information(NULL, | 931 | QMessageBox::information(NULL, |
924 | QString(PROGNAME), | 932 | QString(PROGNAME), |
925 | QString("Error in link\nOffset too big") | 933 | QString("Error in link\nOffset too big") |
926 | ); | 934 | ); |
927 | return eNone; | 935 | return eNone; |
928 | } | 936 | } |
929 | //qDebug("Hyper:<%u,%u>", tuid, n); | 937 | //odebug << "Hyper:<" << tuid << "," << n << ">" << oendl; |
930 | while (bufferpos < n && bufferpos < buffercontent) getch_base(true); | 938 | while (bufferpos < n && bufferpos < buffercontent) getch_base(true); |
931 | /* // This is faster but the alignment doesn't get set | 939 | /* // This is faster but the alignment doesn't get set |
932 | mystyle.unset(); | 940 | mystyle.unset(); |
933 | bufferpos = n; | 941 | bufferpos = n; |
934 | currentpos += n; | 942 | currentpos += n; |
935 | while (bufferpos >= m_nextPara && m_nextPara >= 0) | 943 | while (bufferpos >= m_nextPara && m_nextPara >= 0) |
936 | { | 944 | { |
937 | UInt16 attr = m_ParaAttrs[m_nextParaIndex]; | 945 | UInt16 attr = m_ParaAttrs[m_nextParaIndex]; |
938 | m_nextParaIndex++; | 946 | m_nextParaIndex++; |
939 | if (m_nextParaIndex == m_nParas) | 947 | if (m_nextParaIndex == m_nParas) |
940 | { | 948 | { |
941 | m_nextPara = -1; | 949 | m_nextPara = -1; |
942 | } | 950 | } |
943 | else | 951 | else |
944 | { | 952 | { |
945 | m_nextPara += m_ParaOffsets[m_nextParaIndex]; | 953 | m_nextPara += m_ParaOffsets[m_nextParaIndex]; |
946 | } | 954 | } |
947 | } | 955 | } |
948 | */ | 956 | */ |
949 | } | 957 | } |
950 | return eLink; | 958 | return eLink; |
951 | } | 959 | } |
952 | 960 | ||
953 | tchar CPlucker_base::getch_base(bool fast) | 961 | tchar CPlucker_base::getch_base(bool fast) |
954 | { | 962 | { |
955 | int ch = bgetch(); | 963 | int ch = bgetch(); |
956 | while (ch == 0) | 964 | while (ch == 0) |
957 | { | 965 | { |
958 | ch = bgetch(); | 966 | ch = bgetch(); |
959 | ////qDebug("Function:%x", ch); | 967 | // //odebug << "Function:" << ch << "" << oendl; |
960 | switch (ch) | 968 | switch (ch) |
961 | { | 969 | { |
962 | case 0x38: | 970 | case 0x38: |
963 | // //qDebug("Break:%u", locate()); | 971 | // //odebug << "Break:" << locate() << "" << oendl; |
964 | if (m_lastBreak == locate()) | 972 | if (m_lastBreak == locate()) |
965 | { | 973 | { |
966 | ch = bgetch(); | 974 | ch = bgetch(); |
967 | } | 975 | } |
968 | else | 976 | else |
969 | { | 977 | { |
970 | ch = 10; | 978 | ch = 10; |
971 | } | 979 | } |
972 | m_lastBreak = locate(); | 980 | m_lastBreak = locate(); |
973 | break; | 981 | break; |
974 | case 0x0a: | 982 | case 0x0a: |
975 | case 0x0c: | 983 | case 0x0c: |
976 | { | 984 | { |
977 | unsigned long ln = 0; | 985 | unsigned long ln = 0; |
978 | int skip = ch & 7; | 986 | int skip = ch & 7; |
979 | for (int i = 0; i < 2; i++) | 987 | for (int i = 0; i < 2; i++) |
980 | { | 988 | { |
981 | int ch = bgetch(); | 989 | int ch = bgetch(); |
982 | ln = (ln << 8) + ch; | 990 | ln = (ln << 8) + ch; |
983 | // //qDebug("ch:%d, ln:%u", ch, ln); | 991 | // //odebug << "ch:" << ch << ", ln:" << ln << "" << oendl; |
984 | } | 992 | } |
985 | if (skip == 2) | 993 | if (skip == 2) |
986 | { | 994 | { |
987 | ln <<= 16; | 995 | ln <<= 16; |
988 | } | 996 | } |
989 | else | 997 | else |
990 | { | 998 | { |
991 | for (int i = 0; i < 2; i++) | 999 | for (int i = 0; i < 2; i++) |
992 | { | 1000 | { |
993 | int ch = bgetch(); | 1001 | int ch = bgetch(); |
994 | ln = (ln << 8) + ch; | 1002 | ln = (ln << 8) + ch; |
995 | // //qDebug("ch:%d, ln:%u", ch, ln); | 1003 | // //odebug << "ch:" << ch << ", ln:" << ln << "" << oendl; |
996 | } | 1004 | } |
997 | } | 1005 | } |
998 | // //qDebug("ln:%u", ln); | 1006 | // //odebug << "ln:" << ln << "" << oendl; |
999 | mystyle.setLink(true); | 1007 | mystyle.setLink(true); |
1000 | mystyle.setData(ln); | 1008 | mystyle.setData(ln); |
1001 | // mystyle.setColour(255, 0, 0); | 1009 | // mystyle.setColour(255, 0, 0); |
1002 | bool hasseen = false; | 1010 | bool hasseen = false; |
1003 | for (CList<unsigned long>::iterator it = visited.begin(); it != visited.end(); it++) | 1011 | for (CList<unsigned long>::iterator it = visited.begin(); it != visited.end(); it++) |
1004 | { | 1012 | { |
1005 | if (*it == ln) | 1013 | if (*it == ln) |
1006 | { | 1014 | { |
1007 | hasseen = true; | 1015 | hasseen = true; |
1008 | break; | 1016 | break; |
1009 | } | 1017 | } |
1010 | } | 1018 | } |
1011 | if (hasseen) | 1019 | if (hasseen) |
1012 | { | 1020 | { |
1013 | mystyle.setStrikethru(); | 1021 | mystyle.setStrikethru(); |
1014 | } | 1022 | } |
1015 | else | 1023 | else |
1016 | { | 1024 | { |
1017 | mystyle.setUnderline(); | 1025 | mystyle.setUnderline(); |
1018 | } | 1026 | } |
1019 | ch = bgetch(); | 1027 | ch = bgetch(); |
1020 | } | 1028 | } |
1021 | break; | 1029 | break; |
1022 | case 0x08: | 1030 | case 0x08: |
1023 | ch = bgetch(); | 1031 | ch = bgetch(); |
1024 | // mystyle.setColour(0, 0, 0); | 1032 | // mystyle.setColour(0, 0, 0); |
1025 | mystyle.unsetUnderline(); | 1033 | mystyle.unsetUnderline(); |
1026 | mystyle.unsetStrikethru(); | 1034 | mystyle.unsetStrikethru(); |
1027 | mystyle.setLink(false); | 1035 | mystyle.setLink(false); |
1028 | mystyle.setData(0); | 1036 | mystyle.setData(0); |
1029 | break; | 1037 | break; |
1030 | case 0x40: | 1038 | case 0x40: |
1031 | mystyle.setItalic(); | 1039 | mystyle.setItalic(); |
1032 | ch = bgetch(); | 1040 | ch = bgetch(); |
1033 | break; | 1041 | break; |
1034 | case 0x48: | 1042 | case 0x48: |
1035 | mystyle.unsetItalic(); | 1043 | mystyle.unsetItalic(); |
1036 | ch = bgetch(); | 1044 | ch = bgetch(); |
1037 | break; | 1045 | break; |
1038 | case 0x11: | 1046 | case 0x11: |
1039 | { | 1047 | { |
1040 | ch = bgetch(); | 1048 | ch = bgetch(); |
1041 | // //qDebug("Font:%d",ch); | 1049 | // //odebug << "Font:" << ch << "" << oendl; |
1042 | mystyle.setVOffset(0); | 1050 | mystyle.setVOffset(0); |
1043 | mystyle.unsetMono(); | 1051 | mystyle.unsetMono(); |
1044 | mystyle.unsetBold(); | 1052 | mystyle.unsetBold(); |
1045 | mystyle.setFontSize(0); | 1053 | mystyle.setFontSize(0); |
1046 | switch (ch) | 1054 | switch (ch) |
1047 | { | 1055 | { |
1048 | case 0: | 1056 | case 0: |
1049 | break; | 1057 | break; |
1050 | case 1: | 1058 | case 1: |
1051 | mystyle.setBold(); | 1059 | mystyle.setBold(); |
1052 | mystyle.setFontSize(3); | 1060 | mystyle.setFontSize(3); |
1053 | break; | 1061 | break; |
1054 | case 2: | 1062 | case 2: |
1055 | mystyle.setBold(); | 1063 | mystyle.setBold(); |
1056 | mystyle.setFontSize(2); | 1064 | mystyle.setFontSize(2); |
1057 | break; | 1065 | break; |
1058 | case 3: | 1066 | case 3: |
1059 | mystyle.setBold(); | 1067 | mystyle.setBold(); |
1060 | mystyle.setFontSize(1); | 1068 | mystyle.setFontSize(1); |
1061 | break; | 1069 | break; |
1062 | case 4: | 1070 | case 4: |
1063 | mystyle.setBold(); | 1071 | mystyle.setBold(); |
1064 | break; | 1072 | break; |
1065 | case 5: | 1073 | case 5: |
1066 | mystyle.setBold(); | 1074 | mystyle.setBold(); |
1067 | break; | 1075 | break; |
1068 | case 6: | 1076 | case 6: |
1069 | mystyle.setBold(); | 1077 | mystyle.setBold(); |
1070 | break; | 1078 | break; |
1071 | case 7: | 1079 | case 7: |
1072 | mystyle.setBold(); | 1080 | mystyle.setBold(); |
1073 | break; | 1081 | break; |
1074 | case 8: // should be fixed width | 1082 | case 8: // should be fixed width |
1075 | //qDebug("Trying fixed width"); | 1083 | //odebug << "Trying fixed width" << oendl; |
1076 | mystyle.setMono(); | 1084 | mystyle.setMono(); |
1077 | break; | 1085 | break; |
1078 | case 9: | 1086 | case 9: |
1079 | mystyle.setFontSize(-1); | 1087 | mystyle.setFontSize(-1); |
1080 | break; | 1088 | break; |
1081 | case 10: | 1089 | case 10: |
1082 | mystyle.setFontSize(-2); | 1090 | mystyle.setFontSize(-2); |
1083 | mystyle.setVOffset(1); | 1091 | mystyle.setVOffset(1); |
1084 | break; | 1092 | break; |
1085 | case 11: | 1093 | case 11: |
1086 | mystyle.setFontSize(-2); | 1094 | mystyle.setFontSize(-2); |
1087 | mystyle.setVOffset(-1); | 1095 | mystyle.setVOffset(-1); |
1088 | break; | 1096 | break; |
1089 | default: | 1097 | default: |
1090 | qDebug("Unrecognised font"); | 1098 | odebug << "Unrecognised font" << oendl; |
1091 | break; | 1099 | break; |
1092 | } | 1100 | } |
1093 | ch = bgetch(); | 1101 | ch = bgetch(); |
1094 | } | 1102 | } |
1095 | break; | 1103 | break; |
1096 | case 0x29: | 1104 | case 0x29: |
1097 | ch = bgetch(); | 1105 | ch = bgetch(); |
1098 | switch (ch) | 1106 | switch (ch) |
1099 | { | 1107 | { |
1100 | case 0: | 1108 | case 0: |
1101 | mystyle.setLeftJustify(); | 1109 | mystyle.setLeftJustify(); |
1102 | // //qDebug("left"); | 1110 | // //odebug << "left" << oendl; |
1103 | break; | 1111 | break; |
1104 | case 1: | 1112 | case 1: |
1105 | mystyle.setRightJustify(); | 1113 | mystyle.setRightJustify(); |
1106 | // //qDebug("right"); | 1114 | // //odebug << "right" << oendl; |
1107 | break; | 1115 | break; |
1108 | case 2: | 1116 | case 2: |
1109 | mystyle.setCentreJustify(); | 1117 | mystyle.setCentreJustify(); |
1110 | // //qDebug("centre"); | 1118 | // //odebug << "centre" << oendl; |
1111 | break; | 1119 | break; |
1112 | case 3: | 1120 | case 3: |
1113 | mystyle.setFullJustify(); | 1121 | mystyle.setFullJustify(); |
1114 | // //qDebug("full"); | 1122 | // //odebug << "full" << oendl; |
1115 | break; | 1123 | break; |
1116 | 1124 | ||
1117 | } | 1125 | } |
1118 | ch = bgetch(); | 1126 | ch = bgetch(); |
1119 | break; | 1127 | break; |
1120 | case 0x53: | 1128 | case 0x53: |
1121 | { | 1129 | { |
1122 | int r = bgetch(); | 1130 | int r = bgetch(); |
1123 | int g = bgetch(); | 1131 | int g = bgetch(); |
1124 | int b = bgetch(); | 1132 | int b = bgetch(); |
1125 | mystyle.setColour(r,g,b); | 1133 | mystyle.setColour(r,g,b); |
1126 | ch = bgetch(); | 1134 | ch = bgetch(); |
1127 | } | 1135 | } |
1128 | break; | 1136 | break; |
1129 | case 0x1a: | 1137 | case 0x1a: |
1130 | case 0x5c: | 1138 | case 0x5c: |
1131 | { | 1139 | { |
1132 | bool hasalternate = (ch == 0x5c); | 1140 | bool hasalternate = (ch == 0x5c); |
1133 | UInt16 ir = bgetch(); | 1141 | UInt16 ir = bgetch(); |
1134 | ir = (ir << 8) + bgetch(); | 1142 | ir = (ir << 8) + bgetch(); |
1135 | if (hasalternate) | 1143 | if (hasalternate) |
1136 | { | 1144 | { |
1137 | //qDebug("Alternate image:%x", ir); | 1145 | //odebug << "Alternate image:" << ir << "" << oendl; |
1138 | UInt16 ir2 = bgetch(); | 1146 | UInt16 ir2 = bgetch(); |
1139 | ir2 = (ir2 << 8) + bgetch(); | 1147 | ir2 = (ir2 << 8) + bgetch(); |
1140 | if (!fast) mystyle.setPicture(true, expandimg(ir2, true), true, ir << 16); | 1148 | if (!fast) mystyle.setPicture(true, expandimg(ir2, true), true, ir << 16); |
1141 | #ifdef LOCALPICTURES | 1149 | #ifdef LOCALPICTURES |
1142 | UInt32 ln = ir; | 1150 | UInt32 ln = ir; |
1143 | ln <<= 16; | 1151 | ln <<= 16; |
1144 | mystyle.setLink(true); | 1152 | mystyle.setLink(true); |
1145 | mystyle.setData(ln); | 1153 | mystyle.setData(ln); |
1146 | #endif | 1154 | #endif |
1147 | } | 1155 | } |
1148 | else | 1156 | else |
1149 | { | 1157 | { |
1150 | if (!fast) mystyle.setPicture(true, expandimg(ir)); | 1158 | if (!fast) mystyle.setPicture(true, expandimg(ir)); |
1151 | } | 1159 | } |
1152 | // if (mystyle.getLink()) qDebug("Picture link!"); | 1160 | // if (mystyle.getLink()) odebug << "Picture link!" << oendl; |
1153 | ch = '#'; | 1161 | ch = '#'; |
1154 | } | 1162 | } |
1155 | // ch = bgetch(); | 1163 | // ch = bgetch(); |
1156 | break; | 1164 | break; |
1157 | case 0x33: | 1165 | case 0x33: |
1158 | { | 1166 | { |
1159 | UInt8 h = bgetch(); | 1167 | UInt8 h = bgetch(); |
1160 | UInt8 wc = bgetch(); | 1168 | UInt8 wc = bgetch(); |
1161 | UInt8 pc = bgetch(); | 1169 | UInt8 pc = bgetch(); |
1162 | UInt16 w = wc; | 1170 | UInt16 w = wc; |
1163 | // //qDebug("h,w,pc [%u, %u, %u]", h, w, pc); | 1171 | // //odebug << "h,w,pc [" << h << ", " << w << ", " << pc << "]" << oendl; |
1164 | if (w == 0) | 1172 | if (w == 0) |
1165 | { | 1173 | { |
1166 | w = (m_scrWidth*(unsigned long)pc)/100; | 1174 | w = (m_scrWidth*(unsigned long)pc)/100; |
1167 | } | 1175 | } |
1168 | if (w == 0) w = m_scrWidth; | 1176 | if (w == 0) w = m_scrWidth; |
1169 | mystyle.setPicture(false, hRule(w,h,mystyle.Red(),mystyle.Green(),mystyle.Blue())); | 1177 | mystyle.setPicture(false, hRule(w,h,mystyle.Red(),mystyle.Green(),mystyle.Blue())); |
1170 | // if (mystyle.getLink()) //qDebug("hRule link!"); | 1178 | // if (mystyle.getLink()) //odebug << "hRule link!" << oendl; |
1171 | ch = '#'; | 1179 | ch = '#'; |
1172 | } | 1180 | } |
1173 | break; | 1181 | break; |
1174 | case 0x60: | 1182 | case 0x60: |
1175 | mystyle.setUnderline(); | 1183 | mystyle.setUnderline(); |
1176 | ch = bgetch(); | 1184 | ch = bgetch(); |
1177 | break; | 1185 | break; |
1178 | case 0x68: | 1186 | case 0x68: |
1179 | mystyle.unsetUnderline(); | 1187 | mystyle.unsetUnderline(); |
1180 | ch = bgetch(); | 1188 | ch = bgetch(); |
1181 | break; | 1189 | break; |
1182 | case 0x22: | 1190 | case 0x22: |
1183 | ch = bgetch(); | 1191 | ch = bgetch(); |
1184 | mystyle.setLeftMargin(ch); | 1192 | mystyle.setLeftMargin(ch); |
1185 | // //qDebug("Left margin:%d", ch); | 1193 | // //odebug << "Left margin:" << ch << "" << oendl; |
1186 | ch = bgetch(); | 1194 | ch = bgetch(); |
1187 | mystyle.setRightMargin(ch); | 1195 | mystyle.setRightMargin(ch); |
1188 | // //qDebug("Right margin:%d", ch); | 1196 | // //odebug << "Right margin:" << ch << "" << oendl; |
1189 | ch = bgetch(); | 1197 | ch = bgetch(); |
1190 | break; | 1198 | break; |
1191 | case 0x70: | 1199 | case 0x70: |
1192 | mystyle.setStrikethru(); | 1200 | mystyle.setStrikethru(); |
1193 | ch = bgetch(); | 1201 | ch = bgetch(); |
1194 | break; | 1202 | break; |
1195 | case 0x78: | 1203 | case 0x78: |
1196 | mystyle.unsetStrikethru(); | 1204 | mystyle.unsetStrikethru(); |
1197 | ch = bgetch(); | 1205 | ch = bgetch(); |
1198 | break; | 1206 | break; |
1199 | case 0x83: | 1207 | case 0x83: |
1200 | { | 1208 | { |
1201 | int tlen = bgetch(); | 1209 | int tlen = bgetch(); |
1202 | ch = bgetch(); | 1210 | ch = bgetch(); |
1203 | ch <<= 8; | 1211 | ch <<= 8; |
1204 | ch |= (tchar)bgetch(); | 1212 | ch |= (tchar)bgetch(); |
1205 | for (int i = 0; i < tlen; i++) bgetch(); | 1213 | for (int i = 0; i < tlen; i++) bgetch(); |
1206 | //qDebug("Function 83"); | 1214 | //odebug << "Function 83" << oendl; |
1207 | } | 1215 | } |
1208 | break; | 1216 | break; |
1209 | case 0x85: | 1217 | case 0x85: |
1210 | default: | 1218 | default: |
1211 | qDebug("Function:%x NOT IMPLEMENTED", ch); | 1219 | odebug << "Function:" << ch << " NOT IMPLEMENTED" << oendl; |
1212 | { | 1220 | { |
1213 | int skip = ch & 7; | 1221 | int skip = ch & 7; |
1214 | for (int i = 0; i < skip; i++) | 1222 | for (int i = 0; i < skip; i++) |
1215 | { | 1223 | { |
1216 | ch = bgetch(); | 1224 | ch = bgetch(); |
1217 | //qDebug("Arg %d, %d", i, ch); | 1225 | //odebug << "Arg " << i << ", " << ch << "" << oendl; |
1218 | } | 1226 | } |
1219 | ch = bgetch(); | 1227 | ch = bgetch(); |
1220 | } | 1228 | } |
1221 | } | 1229 | } |
1222 | } | 1230 | } |
1223 | 1231 | ||
1224 | if (m_lastIsBreak && !mystyle.isMono()) | 1232 | if (m_lastIsBreak && !mystyle.isMono()) |
1225 | { | 1233 | { |
1226 | while (ch == ' ') | 1234 | while (ch == ' ') |
1227 | { | 1235 | { |
1228 | ch = getch(false); | 1236 | ch = getch(false); |
1229 | } | 1237 | } |
1230 | } | 1238 | } |
1231 | 1239 | ||
1232 | m_lastIsBreak = (ch == 10); | 1240 | m_lastIsBreak = (ch == 10); |
1233 | 1241 | ||
1234 | return (ch == EOF) ? UEOF : ch; | 1242 | return (ch == EOF) ? UEOF : ch; |
1235 | } | 1243 | } |
diff --git a/noncore/apps/tinykate/libkate/document/katebuffer.cpp b/noncore/apps/tinykate/libkate/document/katebuffer.cpp index 22a4917..4c15fd0 100644 --- a/noncore/apps/tinykate/libkate/document/katebuffer.cpp +++ b/noncore/apps/tinykate/libkate/document/katebuffer.cpp | |||
@@ -1,179 +1,180 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KWrite | 2 | This file is part of KWrite |
3 | Copyright (c) 2000 Waldo Bastian <bastian@kde.org> | 3 | Copyright (c) 2000 Waldo Bastian <bastian@kde.org> |
4 | Copyright (c) 2002 Joseph Wenninger <jowenn@kde.org> | 4 | Copyright (c) 2002 Joseph Wenninger <jowenn@kde.org> |
5 | 5 | ||
6 | $Id$ | 6 | $Id$ |
7 | 7 | ||
8 | This library is free software; you can redistribute it and/or | 8 | This library is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU Library General Public | 9 | modify it under the terms of the GNU Library General Public |
10 | License version 2 as published by the Free Software Foundation. | 10 | License version 2 as published by the Free Software Foundation. |
11 | 11 | ||
12 | This library is distributed in the hope that it will be useful, | 12 | This library is distributed in the hope that it will be useful, |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 | Library General Public License for more details. | 15 | Library General Public License for more details. |
16 | 16 | ||
17 | You should have received a copy of the GNU Library General Public License | 17 | You should have received a copy of the GNU Library General Public License |
18 | along with this library; see the file COPYING.LIB. If not, write to | 18 | along with this library; see the file COPYING.LIB. If not, write to |
19 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 19 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
20 | Boston, MA 02111-1307, USA. | 20 | Boston, MA 02111-1307, USA. |
21 | */ | 21 | */ |
22 | 22 | ||
23 | 23 | ||
24 | #include "katebuffer.h" | 24 | #include "katebuffer.h" |
25 | #include "kdebug.h" | ||
25 | 26 | ||
26 | // Includes for reading file | 27 | /* OPIE */ |
27 | #include <sys/types.h> | 28 | #include <opie2/odebug.h> |
28 | #include <sys/stat.h> | ||
29 | #include <fcntl.h> | ||
30 | #include <errno.h> | ||
31 | #include <unistd.h> | ||
32 | 29 | ||
30 | /* QT */ | ||
33 | #include <qfile.h> | 31 | #include <qfile.h> |
34 | #include <qtextstream.h> | 32 | #include <qtextstream.h> |
35 | |||
36 | #include <qtimer.h> | 33 | #include <qtimer.h> |
37 | #include <qtextcodec.h> | 34 | #include <qtextcodec.h> |
38 | 35 | ||
39 | // | 36 | /* STD */ |
40 | 37 | // Includes for reading file | |
38 | #include <sys/types.h> | ||
39 | #include <sys/stat.h> | ||
40 | #include <fcntl.h> | ||
41 | #include <errno.h> | ||
42 | #include <unistd.h> | ||
41 | #include <assert.h> | 43 | #include <assert.h> |
42 | #include <kdebug.h> | ||
43 | 44 | ||
44 | /** | 45 | /** |
45 | * Create an empty buffer. | 46 | * Create an empty buffer. |
46 | */ | 47 | */ |
47 | KWBuffer::KWBuffer() | 48 | KWBuffer::KWBuffer() |
48 | { | 49 | { |
49 | clear(); | 50 | clear(); |
50 | } | 51 | } |
51 | 52 | ||
52 | void | 53 | void |
53 | KWBuffer::clear() | 54 | KWBuffer::clear() |
54 | { | 55 | { |
55 | m_stringListIt=0; | 56 | m_stringListIt=0; |
56 | m_stringListCurrent=0; | 57 | m_stringListCurrent=0; |
57 | m_stringList.clear(); | 58 | m_stringList.clear(); |
58 | m_lineCount=1; | 59 | m_lineCount=1; |
59 | m_stringListIt = m_stringList.append(new TextLine()); | 60 | m_stringListIt = m_stringList.append(new TextLine()); |
60 | } | 61 | } |
61 | 62 | ||
62 | /** | 63 | /** |
63 | * Insert a file at line @p line in the buffer. | 64 | * Insert a file at line @p line in the buffer. |
64 | */ | 65 | */ |
65 | void | 66 | void |
66 | KWBuffer::insertFile(int line, const QString &file, QTextCodec *codec) | 67 | KWBuffer::insertFile(int line, const QString &file, QTextCodec *codec) |
67 | { | 68 | { |
68 | if (line) { | 69 | if (line) { |
69 | qDebug("insert File only supports insertion at line 0 == file opening"); | 70 | odebug << "insert File only supports insertion at line 0 == file opening" << oendl; |
70 | return; | 71 | return; |
71 | } | 72 | } |
72 | clear(); | 73 | clear(); |
73 | QFile iofile(file); | 74 | QFile iofile(file); |
74 | iofile.open(IO_ReadOnly); | 75 | iofile.open(IO_ReadOnly); |
75 | QTextStream stream(&iofile); | 76 | QTextStream stream(&iofile); |
76 | stream.setCodec(codec); | 77 | stream.setCodec(codec); |
77 | QString qsl; | 78 | QString qsl; |
78 | int count=0; | 79 | int count=0; |
79 | for (count=0;((qsl=stream.readLine())!=QString::null);count++) | 80 | for (count=0;((qsl=stream.readLine())!=QString::null); count++) |
80 | { | 81 | { |
81 | if (count==0) | 82 | if (count==0) |
82 | { | 83 | { |
83 | (*m_stringListIt)->append(qsl.unicode(),qsl.length()); | 84 | (*m_stringListIt)->append(qsl.unicode(),qsl.length()); |
84 | } | 85 | } |
85 | else | 86 | else |
86 | { | 87 | { |
87 | TextLine::Ptr tl=new TextLine(); | 88 | TextLine::Ptr tl=new TextLine(); |
88 | tl ->append(qsl.unicode(),qsl.length()); | 89 | tl ->append(qsl.unicode(),qsl.length()); |
89 | m_stringListIt=m_stringList.append(tl); | 90 | m_stringListIt=m_stringList.append(tl); |
90 | } | 91 | } |
91 | } | 92 | } |
92 | if (count!=0) | 93 | if (count!=0) |
93 | { | 94 | { |
94 | m_stringListCurrent=count-1; | 95 | m_stringListCurrent=count-1; |
95 | m_lineCount=count; | 96 | m_lineCount=count; |
96 | } | 97 | } |
97 | } | 98 | } |
98 | 99 | ||
99 | void | 100 | void |
100 | KWBuffer::loadFilePart() | 101 | KWBuffer::loadFilePart() |
101 | { | 102 | { |
102 | } | 103 | } |
103 | 104 | ||
104 | 105 | ||
105 | void | 106 | void |
106 | KWBuffer::insertData(int line, const QByteArray &data, QTextCodec *codec) | 107 | KWBuffer::insertData(int line, const QByteArray &data, QTextCodec *codec) |
107 | { | 108 | { |
108 | } | 109 | } |
109 | 110 | ||
110 | void | 111 | void |
111 | KWBuffer::slotLoadFile() | 112 | KWBuffer::slotLoadFile() |
112 | { | 113 | { |
113 | loadFilePart(); | 114 | loadFilePart(); |
114 | // emit linesChanged(m_totalLines); | 115 | // emit linesChanged(m_totalLines); |
115 | emit linesChanged(20); | 116 | emit linesChanged(20); |
116 | } | 117 | } |
117 | 118 | ||
118 | /** | 119 | /** |
119 | * Return the total number of lines in the buffer. | 120 | * Return the total number of lines in the buffer. |
120 | */ | 121 | */ |
121 | int | 122 | int |
122 | KWBuffer::count() | 123 | KWBuffer::count() |
123 | { | 124 | { |
124 | qDebug("m_stringList.count %d",m_stringList.count()); | 125 | odebug << "m_stringList.count " << m_stringList.count() << "" << oendl; |
125 | return m_lineCount; | 126 | return m_lineCount; |
126 | //return m_stringList.count(); | 127 | // return m_stringList.count(); |
127 | // return m_totalLines; | 128 | // return m_totalLines; |
128 | } | 129 | } |
129 | 130 | ||
130 | 131 | ||
131 | void KWBuffer::seek(int i) | 132 | void KWBuffer::seek(int i) |
132 | { | 133 | { |
133 | if (m_stringListCurrent == i) | 134 | if (m_stringListCurrent == i) |
134 | return; | 135 | return; |
135 | while(m_stringListCurrent < i) | 136 | while(m_stringListCurrent < i) |
136 | { | 137 | { |
137 | ++m_stringListCurrent; | 138 | ++m_stringListCurrent; |
138 | ++m_stringListIt; | 139 | ++m_stringListIt; |
139 | } | 140 | } |
140 | while(m_stringListCurrent > i) | 141 | while(m_stringListCurrent > i) |
141 | { | 142 | { |
142 | --m_stringListCurrent; | 143 | --m_stringListCurrent; |
143 | --m_stringListIt; | 144 | --m_stringListIt; |
144 | } | 145 | } |
145 | } | 146 | } |
146 | 147 | ||
147 | 148 | ||
148 | TextLine::Ptr | 149 | TextLine::Ptr |
149 | KWBuffer::line(int i) | 150 | KWBuffer::line(int i) |
150 | { | 151 | { |
151 | if (i>=m_stringList.count()) return 0; | 152 | if (i>=m_stringList.count()) return 0; |
152 | seek(i); | 153 | seek(i); |
153 | return *m_stringListIt; | 154 | return *m_stringListIt; |
154 | } | 155 | } |
155 | 156 | ||
156 | void | 157 | void |
157 | KWBuffer::insertLine(int i, TextLine::Ptr line) | 158 | KWBuffer::insertLine(int i, TextLine::Ptr line) |
158 | { | 159 | { |
159 | seek(i); | 160 | seek(i); |
160 | m_stringListIt = m_stringList.insert(m_stringListIt, line); | 161 | m_stringListIt = m_stringList.insert(m_stringListIt, line); |
161 | m_stringListCurrent = i; | 162 | m_stringListCurrent = i; |
162 | m_lineCount++; | 163 | m_lineCount++; |
163 | } | 164 | } |
164 | 165 | ||
165 | 166 | ||
166 | void | 167 | void |
167 | KWBuffer::removeLine(int i) | 168 | KWBuffer::removeLine(int i) |
168 | { | 169 | { |
169 | seek(i); | 170 | seek(i); |
170 | m_stringListIt = m_stringList.remove(m_stringListIt); | 171 | m_stringListIt = m_stringList.remove(m_stringListIt); |
171 | m_stringListCurrent = i; | 172 | m_stringListCurrent = i; |
172 | m_lineCount--; | 173 | m_lineCount--; |
173 | } | 174 | } |
174 | 175 | ||
175 | void | 176 | void |
176 | KWBuffer::changeLine(int i) | 177 | KWBuffer::changeLine(int i) |
177 | { | 178 | { |
178 | } | 179 | } |
179 | 180 | ||
diff --git a/noncore/apps/tinykate/libkate/document/katedocument.cpp b/noncore/apps/tinykate/libkate/document/katedocument.cpp index 0c742d7..6dc4fd2 100644 --- a/noncore/apps/tinykate/libkate/document/katedocument.cpp +++ b/noncore/apps/tinykate/libkate/document/katedocument.cpp | |||
@@ -1,1198 +1,1199 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | katedocument.cpp - description | 2 | katedocument.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 | * * | 13 | * * |
14 | * This program is free software; you can redistribute it and/or modify * | 14 | * This program is free software; you can redistribute it and/or modify * |
15 | * it under the terms of the GNU General Public License as published by * | 15 | * it under the terms of the GNU General Public License as published by * |
16 | * the Free Software Foundation; either version 2 of the License, or * | 16 | * the Free Software Foundation; either version 2 of the License, or * |
17 | * (at your option) any later version. * | 17 | * (at your option) any later version. * |
18 | * * | 18 | * * |
19 | ***************************************************************************/ | 19 | ***************************************************************************/ |
20 | 20 | ||
21 | /* | 21 | /* |
22 | Copyright (C) 1998, 1999 Jochen Wilhelmy | 22 | Copyright (C) 1998, 1999 Jochen Wilhelmy |
23 | digisnap@cs.tu-berlin.de | 23 | digisnap@cs.tu-berlin.de |
24 | 24 | ||
25 | This library is free software; you can redistribute it and/or | 25 | This library is free software; you can redistribute it and/or |
26 | modify it under the terms of the GNU Library General Public | 26 | modify it under the terms of the GNU Library General Public |
27 | License as published by the Free Software Foundation; either | 27 | License as published by the Free Software Foundation; either |
28 | version 2 of the License, or (at your option) any later version. | 28 | version 2 of the License, or (at your option) any later version. |
29 | 29 | ||
30 | This library is distributed in the hope that it will be useful, | 30 | This library is distributed in the hope that it will be useful, |
31 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 31 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
32 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 32 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
33 | Library General Public License for more details. | 33 | Library General Public License for more details. |
34 | 34 | ||
35 | You should have received a copy of the GNU Library General Public License | 35 | You should have received a copy of the GNU Library General Public License |
36 | along with this library; see the file COPYING.LIB. If not, write to | 36 | along with this library; see the file COPYING.LIB. If not, write to |
37 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 37 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
38 | Boston, MA 02111-1307, USA. | 38 | Boston, MA 02111-1307, USA. |
39 | */ | 39 | */ |
40 | 40 | ||
41 | #include "katedocument.h" | 41 | #include "katedocument.h" |
42 | #include "kmessagebox.h" | ||
43 | #include "kglobal.h" | ||
42 | 44 | ||
45 | //#include "kcharsets.h" | ||
46 | #include "kdebug.h" | ||
47 | //#include "kinstance.h" | ||
43 | 48 | ||
44 | #include <qfileinfo.h> | 49 | #include "kglobalsettings.h" |
45 | #include <qdatetime.h> | 50 | //#include "kaction.h" |
51 | //#include "kstdaction.h" | ||
46 | 52 | ||
47 | #include <kmessagebox.h> | 53 | #include "../view/kateview.h" |
48 | #include <qpe/config.h> | 54 | #include "katebuffer.h" |
49 | #include <qstring.h> | 55 | #include "katetextline.h" |
50 | 56 | ||
51 | #include <sys/time.h> | 57 | #include "katecmd.h" |
52 | #include <unistd.h> | ||
53 | 58 | ||
54 | #include <stdio.h> | 59 | /* OPIE */ |
60 | #include <opie2/odebug.h> | ||
61 | #include <qpe/config.h> | ||
55 | 62 | ||
63 | /* QT */ | ||
64 | #include <qfileinfo.h> | ||
65 | #include <qdatetime.h> | ||
66 | #include <qstring.h> | ||
56 | #include <qtimer.h> | 67 | #include <qtimer.h> |
57 | #include <qobject.h> | 68 | #include <qobject.h> |
58 | #include <qapplication.h> | 69 | #include <qapplication.h> |
59 | #include <qclipboard.h> | 70 | #include <qclipboard.h> |
60 | #include <qfont.h> | 71 | #include <qfont.h> |
61 | #include <qpainter.h> | 72 | #include <qpainter.h> |
62 | #include <qfile.h> | 73 | #include <qfile.h> |
63 | #include <qtextstream.h> | 74 | #include <qtextstream.h> |
64 | #include <qtextcodec.h> | 75 | #include <qtextcodec.h> |
65 | #include <kglobal.h> | ||
66 | 76 | ||
67 | //#include <kcharsets.h> | 77 | /* STD */ |
68 | #include <kdebug.h> | 78 | #include <sys/time.h> |
69 | //#include <kinstance.h> | 79 | #include <unistd.h> |
70 | 80 | #include <stdio.h> | |
71 | #include <kglobalsettings.h> | ||
72 | //#include <kaction.h> | ||
73 | //#include <kstdaction.h> | ||
74 | |||
75 | #include "../view/kateview.h" | ||
76 | #include "katebuffer.h" | ||
77 | #include "katetextline.h" | ||
78 | |||
79 | #include "katecmd.h" | ||
80 | 81 | ||
81 | KateAction::KateAction(Action a, PointStruc &cursor, int len, const QString &text) | 82 | KateAction::KateAction(Action a, PointStruc &cursor, int len, const QString &text) |
82 | : action(a), cursor(cursor), len(len), text(text) { | 83 | : action(a), cursor(cursor), len(len), text(text) { |
83 | } | 84 | } |
84 | 85 | ||
85 | KateActionGroup::KateActionGroup(PointStruc &aStart, int type) | 86 | KateActionGroup::KateActionGroup(PointStruc &aStart, int type) |
86 | : start(aStart), action(0L), undoType(type) { | 87 | : start(aStart), action(0L), undoType(type) { |
87 | } | 88 | } |
88 | 89 | ||
89 | KateActionGroup::~KateActionGroup() { | 90 | KateActionGroup::~KateActionGroup() { |
90 | KateAction *current, *next; | 91 | KateAction *current, *next; |
91 | 92 | ||
92 | current = action; | 93 | current = action; |
93 | while (current) { | 94 | while (current) { |
94 | next = current->next; | 95 | next = current->next; |
95 | delete current; | 96 | delete current; |
96 | current = next; | 97 | current = next; |
97 | } | 98 | } |
98 | } | 99 | } |
99 | 100 | ||
100 | void KateActionGroup::insertAction(KateAction *a) { | 101 | void KateActionGroup::insertAction(KateAction *a) { |
101 | a->next = action; | 102 | a->next = action; |
102 | action = a; | 103 | action = a; |
103 | } | 104 | } |
104 | 105 | ||
105 | const char * KateActionGroup::typeName(int type) | 106 | const char * KateActionGroup::typeName(int type) |
106 | { | 107 | { |
107 | // return a short text description of the given undo group type suitable for a menu | 108 | // return a short text description of the given undo group type suitable for a menu |
108 | // not the lack of i18n's, the caller is expected to handle translation | 109 | // not the lack of i18n's, the caller is expected to handle translation |
109 | switch (type) { | 110 | switch (type) { |
110 | case ugPaste : return "Paste Text"; | 111 | case ugPaste : return "Paste Text"; |
111 | case ugDelBlock : return "Selection Overwrite"; | 112 | case ugDelBlock : return "Selection Overwrite"; |
112 | case ugIndent : return "Indent"; | 113 | case ugIndent : return "Indent"; |
113 | case ugUnindent : return "Unindent"; | 114 | case ugUnindent : return "Unindent"; |
114 | case ugComment : return "Comment"; | 115 | case ugComment : return "Comment"; |
115 | case ugUncomment : return "Uncomment"; | 116 | case ugUncomment : return "Uncomment"; |
116 | case ugReplace : return "Text Replace"; | 117 | case ugReplace : return "Text Replace"; |
117 | case ugSpell : return "Spell Check"; | 118 | case ugSpell : return "Spell Check"; |
118 | case ugInsChar : return "Typing"; | 119 | case ugInsChar : return "Typing"; |
119 | case ugDelChar : return "Delete Text"; | 120 | case ugDelChar : return "Delete Text"; |
120 | case ugInsLine : return "New Line"; | 121 | case ugInsLine : return "New Line"; |
121 | case ugDelLine : return "Delete Line"; | 122 | case ugDelLine : return "Delete Line"; |
122 | } | 123 | } |
123 | return ""; | 124 | return ""; |
124 | } | 125 | } |
125 | 126 | ||
126 | const int KateDocument::maxAttribs = 32; | 127 | const int KateDocument::maxAttribs = 32; |
127 | 128 | ||
128 | QStringList KateDocument::searchForList = QStringList(); | 129 | QStringList KateDocument::searchForList = QStringList(); |
129 | QStringList KateDocument::replaceWithList = QStringList(); | 130 | QStringList KateDocument::replaceWithList = QStringList(); |
130 | 131 | ||
131 | uint KateDocument::uniqueID = 0; | 132 | uint KateDocument::uniqueID = 0; |
132 | 133 | ||
133 | QPtrDict<KateDocument::KateDocPrivate>* KateDocument::d_ptr = 0; | 134 | QPtrDict<KateDocument::KateDocPrivate>* KateDocument::d_ptr = 0; |
134 | 135 | ||
135 | 136 | ||
136 | KateDocument::KateDocument(bool bSingleViewMode, bool bBrowserView, | 137 | KateDocument::KateDocument(bool bSingleViewMode, bool bBrowserView, |
137 | QWidget *parentWidget, const char *widgetName, | 138 | QWidget *parentWidget, const char *widgetName, |
138 | QObject *, const char *) | 139 | QObject *, const char *) |
139 | : Kate::Document (), | 140 | : Kate::Document (), |
140 | myFont(KGlobalSettings::generalFont()), myFontBold(KGlobalSettings::generalFont()), myFontItalic(KGlobalSettings::generalFont()), myFontBI(KGlobalSettings::generalFont()), | 141 | myFont(KGlobalSettings::generalFont()), myFontBold(KGlobalSettings::generalFont()), myFontItalic(KGlobalSettings::generalFont()), myFontBI(KGlobalSettings::generalFont()), |
141 | myFontMetrics (myFont), myFontMetricsBold (myFontBold), myFontMetricsItalic (myFontItalic), myFontMetricsBI (myFontBI), | 142 | myFontMetrics (myFont), myFontMetricsBold (myFontBold), myFontMetricsItalic (myFontItalic), myFontMetricsBI (myFontBI), |
142 | hlManager(HlManager::self ()) | 143 | hlManager(HlManager::self ()) |
143 | { | 144 | { |
144 | 145 | ||
145 | d(this)->hlSetByUser = false; | 146 | d(this)->hlSetByUser = false; |
146 | PreHighlightedTill=0; | 147 | PreHighlightedTill=0; |
147 | RequestPreHighlightTill=0; | 148 | RequestPreHighlightTill=0; |
148 | 149 | ||
149 | m_bSingleViewMode=bSingleViewMode; | 150 | m_bSingleViewMode=bSingleViewMode; |
150 | m_bBrowserView = bBrowserView; | 151 | m_bBrowserView = bBrowserView; |
151 | 152 | ||
152 | m_url = QString::null; | 153 | m_url = QString::null; |
153 | 154 | ||
154 | // NOTE: QFont::CharSet doesn't provide all the charsets KDE supports | 155 | // NOTE: QFont::CharSet doesn't provide all the charsets KDE supports |
155 | // (esp. it doesn't distinguish between UTF-8 and iso10646-1) | 156 | // (esp. it doesn't distinguish between UTF-8 and iso10646-1) |
156 | 157 | ||
157 | myEncoding = QString::fromLatin1(QTextCodec::codecForLocale()->name()); | 158 | myEncoding = QString::fromLatin1(QTextCodec::codecForLocale()->name()); |
158 | 159 | ||
159 | maxLength = -1; | 160 | maxLength = -1; |
160 | 161 | ||
161 | setFont (KGlobalSettings::generalFont()); | 162 | setFont (KGlobalSettings::generalFont()); |
162 | 163 | ||
163 | myDocID = uniqueID; | 164 | myDocID = uniqueID; |
164 | uniqueID++; | 165 | uniqueID++; |
165 | 166 | ||
166 | myDocName = QString (""); | 167 | myDocName = QString (""); |
167 | fileInfo = new QFileInfo (); | 168 | fileInfo = new QFileInfo (); |
168 | 169 | ||
169 | myCmd = new KateCmd (this); | 170 | myCmd = new KateCmd (this); |
170 | 171 | ||
171 | connect(this,SIGNAL(modifiedChanged()),this,SLOT(slotModChanged())); | 172 | connect(this,SIGNAL(modifiedChanged()),this,SLOT(slotModChanged())); |
172 | 173 | ||
173 | buffer = new KWBuffer; | 174 | buffer = new KWBuffer; |
174 | connect(buffer, SIGNAL(linesChanged(int)), this, SLOT(slotBufferChanged())); | 175 | connect(buffer, SIGNAL(linesChanged(int)), this, SLOT(slotBufferChanged())); |
175 | // connect(buffer, SIGNAL(textChanged()), this, SIGNAL(textChanged())); | 176 | // connect(buffer, SIGNAL(textChanged()), this, SIGNAL(textChanged())); |
176 | connect(buffer, SIGNAL(needHighlight(long,long)),this,SLOT(slotBufferHighlight(long,long))); | 177 | connect(buffer, SIGNAL(needHighlight(long,long)),this,SLOT(slotBufferHighlight(long,long))); |
177 | 178 | ||
178 | colors[0] = KGlobalSettings::baseColor(); | 179 | colors[0] = KGlobalSettings::baseColor(); |
179 | colors[1] = KGlobalSettings::highlightColor(); | 180 | colors[1] = KGlobalSettings::highlightColor(); |
180 | 181 | ||
181 | m_attribs = new Attribute[maxAttribs]; | 182 | m_attribs = new Attribute[maxAttribs]; |
182 | 183 | ||
183 | m_highlight = 0L; | 184 | m_highlight = 0L; |
184 | tabChars = 8; | 185 | tabChars = 8; |
185 | 186 | ||
186 | m_singleSelection = false; | 187 | m_singleSelection = false; |
187 | 188 | ||
188 | newDocGeometry = false; | 189 | newDocGeometry = false; |
189 | readOnly = false; | 190 | readOnly = false; |
190 | newDoc = false; | 191 | newDoc = false; |
191 | 192 | ||
192 | modified = false; | 193 | modified = false; |
193 | 194 | ||
194 | undoList.setAutoDelete(true); | 195 | undoList.setAutoDelete(true); |
195 | undoState = 0; | 196 | undoState = 0; |
196 | undoSteps = 50; | 197 | undoSteps = 50; |
197 | 198 | ||
198 | pseudoModal = 0L; | 199 | pseudoModal = 0L; |
199 | clear(); | 200 | clear(); |
200 | 201 | ||
201 | setHighlight(0); //calls updateFontData() | 202 | setHighlight(0); //calls updateFontData() |
202 | // if the user changes the highlight with the dialog, notify the doc | 203 | // if the user changes the highlight with the dialog, notify the doc |
203 | connect(hlManager,SIGNAL(changed()),SLOT(hlChanged())); | 204 | connect(hlManager,SIGNAL(changed()),SLOT(hlChanged())); |
204 | 205 | ||
205 | newDocGeometry = false; | 206 | newDocGeometry = false; |
206 | 207 | ||
207 | readConfig(); | 208 | readConfig(); |
208 | 209 | ||
209 | setReadOnly(false); | 210 | setReadOnly(false); |
210 | } | 211 | } |
211 | 212 | ||
212 | void KateDocument::setDontChangeHlOnSave() | 213 | void KateDocument::setDontChangeHlOnSave() |
213 | { | 214 | { |
214 | d(this)->hlSetByUser = true; | 215 | d(this)->hlSetByUser = true; |
215 | } | 216 | } |
216 | 217 | ||
217 | void KateDocument::setFont (QFont font) | 218 | void KateDocument::setFont (QFont font) |
218 | { | 219 | { |
219 | kdDebug()<<"Kate:: setFont"<<endl; | 220 | kdDebug()<<"Kate:: setFont"<<endl; |
220 | int oldwidth=myFontMetrics.width('W'); //Quick & Dirty Hack (by JoWenn) //Remove in KDE 3.0 | 221 | int oldwidth=myFontMetrics.width('W'); //Quick & Dirty Hack (by JoWenn) //Remove in KDE 3.0 |
221 | myFont = font; | 222 | myFont = font; |
222 | myFontBold = QFont (font); | 223 | myFontBold = QFont (font); |
223 | myFontBold.setBold (true); | 224 | myFontBold.setBold (true); |
224 | 225 | ||
225 | myFontItalic = QFont (font); | 226 | myFontItalic = QFont (font); |
226 | myFontItalic.setItalic (true); | 227 | myFontItalic.setItalic (true); |
227 | 228 | ||
228 | myFontBI = QFont (font); | 229 | myFontBI = QFont (font); |
229 | myFontBI.setBold (true); | 230 | myFontBI.setBold (true); |
230 | myFontBI.setItalic (true); | 231 | myFontBI.setItalic (true); |
231 | 232 | ||
232 | myFontMetrics = CachedFontMetrics (myFont); | 233 | myFontMetrics = CachedFontMetrics (myFont); |
233 | myFontMetricsBold = CachedFontMetrics (myFontBold); | 234 | myFontMetricsBold = CachedFontMetrics (myFontBold); |
234 | myFontMetricsItalic = CachedFontMetrics (myFontItalic); | 235 | myFontMetricsItalic = CachedFontMetrics (myFontItalic); |
235 | myFontMetricsBI = CachedFontMetrics (myFontBI); | 236 | myFontMetricsBI = CachedFontMetrics (myFontBI); |
236 | int newwidth=myFontMetrics.width('W'); //Quick & Dirty Hack (by JoWenn) //Remove in KDE 3.0 | 237 | int newwidth=myFontMetrics.width('W'); //Quick & Dirty Hack (by JoWenn) //Remove in KDE 3.0 |
237 | maxLength=maxLength*(float)newwidth/(float)oldwidth; //Quick & Dirty Hack (by JoWenn) //Remove in KDE 3.0 | 238 | maxLength=maxLength*(float)newwidth/(float)oldwidth; //Quick & Dirty Hack (by JoWenn) //Remove in KDE 3.0 |
238 | 239 | ||
239 | updateFontData(); | 240 | updateFontData(); |
240 | updateViews(); //Quick & Dirty Hack (by JoWenn) //Remove in KDE 3.0 | 241 | updateViews(); //Quick & Dirty Hack (by JoWenn) //Remove in KDE 3.0 |
241 | 242 | ||
242 | } | 243 | } |
243 | 244 | ||
244 | long KateDocument::needPreHighlight(long till) | 245 | long KateDocument::needPreHighlight(long till) |
245 | { | 246 | { |
246 | int max=numLines()-1; | 247 | int max=numLines()-1; |
247 | if (till>max) | 248 | if (till>max) |
248 | { | 249 | { |
249 | till=max; | 250 | till=max; |
250 | } | 251 | } |
251 | if (PreHighlightedTill>=till) return -1; | 252 | if (PreHighlightedTill>=till) return -1; |
252 | 253 | ||
253 | long tmp=RequestPreHighlightTill; | 254 | long tmp=RequestPreHighlightTill; |
254 | if (RequestPreHighlightTill<till) | 255 | if (RequestPreHighlightTill<till) |
255 | { | 256 | { |
256 | RequestPreHighlightTill=till; | 257 | RequestPreHighlightTill=till; |
257 | if (tmp<=PreHighlightedTill) QTimer::singleShot(10,this,SLOT(doPreHighlight())); | 258 | if (tmp<=PreHighlightedTill) QTimer::singleShot(10,this,SLOT(doPreHighlight())); |
258 | } | 259 | } |
259 | return RequestPreHighlightTill; | 260 | return RequestPreHighlightTill; |
260 | } | 261 | } |
261 | 262 | ||
262 | void KateDocument::doPreHighlight() | 263 | void KateDocument::doPreHighlight() |
263 | { | 264 | { |
264 | int from = PreHighlightedTill; | 265 | int from = PreHighlightedTill; |
265 | int till = PreHighlightedTill+200; | 266 | int till = PreHighlightedTill+200; |
266 | int max = numLines()-1; | 267 | int max = numLines()-1; |
267 | if (till > max) | 268 | if (till > max) |
268 | { | 269 | { |
269 | till = max; | 270 | till = max; |
270 | } | 271 | } |
271 | PreHighlightedTill = till; | 272 | PreHighlightedTill = till; |
272 | updateLines(from,till); | 273 | updateLines(from,till); |
273 | emit preHighlightChanged(PreHighlightedTill); | 274 | emit preHighlightChanged(PreHighlightedTill); |
274 | if (PreHighlightedTill<RequestPreHighlightTill) | 275 | if (PreHighlightedTill<RequestPreHighlightTill) |
275 | QTimer::singleShot(10,this,SLOT(doPreHighlight())); | 276 | QTimer::singleShot(10,this,SLOT(doPreHighlight())); |
276 | } | 277 | } |
277 | 278 | ||
278 | KateDocument::~KateDocument() | 279 | KateDocument::~KateDocument() |
279 | { | 280 | { |
280 | m_highlight->release(); | 281 | m_highlight->release(); |
281 | writeConfig(); | 282 | writeConfig(); |
282 | 283 | ||
283 | if ( !m_bSingleViewMode ) | 284 | if ( !m_bSingleViewMode ) |
284 | { | 285 | { |
285 | m_views.setAutoDelete( true ); | 286 | m_views.setAutoDelete( true ); |
286 | m_views.clear(); | 287 | m_views.clear(); |
287 | m_views.setAutoDelete( false ); | 288 | m_views.setAutoDelete( false ); |
288 | } | 289 | } |
289 | delete_d(this); | 290 | delete_d(this); |
290 | } | 291 | } |
291 | 292 | ||
292 | void KateDocument::openURL(const QString &filename) | 293 | void KateDocument::openURL(const QString &filename) |
293 | { | 294 | { |
294 | 295 | ||
295 | m_file=filename; | 296 | m_file=filename; |
296 | fileInfo->setFile (m_file); | 297 | fileInfo->setFile (m_file); |
297 | setMTime(); | 298 | setMTime(); |
298 | 299 | ||
299 | if (!fileInfo->exists() || !fileInfo->isReadable()) | 300 | if (!fileInfo->exists() || !fileInfo->isReadable()) |
300 | { | 301 | { |
301 | qDebug("File doesn't exit or couldn't be read"); | 302 | odebug << "File doesn't exit or couldn't be read" << oendl; |
302 | return ; | 303 | return ; |
303 | } | 304 | } |
304 | 305 | ||
305 | buffer->clear(); | 306 | buffer->clear(); |
306 | #warning fixme | 307 | #warning fixme |
307 | // buffer->insertFile(0, m_file, KGlobal::charsets()->codecForName(myEncoding)); | 308 | // buffer->insertFile(0, m_file, KGlobal::charsets()->codecForName(myEncoding)); |
308 | qDebug("Telling buffer to open file"); | 309 | odebug << "Telling buffer to open file" << oendl; |
309 | buffer->insertFile(0, m_file, QTextCodec::codecForLocale()); | 310 | buffer->insertFile(0, m_file, QTextCodec::codecForLocale()); |
310 | 311 | ||
311 | setMTime(); | 312 | setMTime(); |
312 | 313 | ||
313 | if (myWordWrap) | 314 | if (myWordWrap) |
314 | wrapText (myWordWrapAt); | 315 | wrapText (myWordWrapAt); |
315 | 316 | ||
316 | int hl = hlManager->wildcardFind( m_file ); | 317 | int hl = hlManager->wildcardFind( m_file ); |
317 | 318 | ||
318 | setHighlight(hl); | 319 | setHighlight(hl); |
319 | 320 | ||
320 | updateLines(); | 321 | updateLines(); |
321 | updateViews(); | 322 | updateViews(); |
322 | 323 | ||
323 | emit fileNameChanged(); | 324 | emit fileNameChanged(); |
324 | 325 | ||
325 | return ; | 326 | return ; |
326 | } | 327 | } |
327 | 328 | ||
328 | bool KateDocument::saveFile() | 329 | bool KateDocument::saveFile() |
329 | { | 330 | { |
330 | 331 | ||
331 | QFile f( m_file ); | 332 | QFile f( m_file ); |
332 | if ( !f.open( IO_WriteOnly ) ) | 333 | if ( !f.open( IO_WriteOnly ) ) |
333 | return false; // Error | 334 | return false; // Error |
334 | 335 | ||
335 | QTextStream stream(&f); | 336 | QTextStream stream(&f); |
336 | 337 | ||
337 | stream.setEncoding(QTextStream::RawUnicode); // disable Unicode headers | 338 | stream.setEncoding(QTextStream::RawUnicode); // disable Unicode headers |
338 | #warning fixme | 339 | #warning fixme |
339 | // stream.setCodec(KGlobal::charsets()->codecForName(myEncoding)); | 340 | // stream.setCodec(KGlobal::charsets()->codecForName(myEncoding)); |
340 | stream.setCodec(QTextCodec::codecForLocale()); // this line sets the mapper to the correct codec | 341 | stream.setCodec(QTextCodec::codecForLocale()); // this line sets the mapper to the correct codec |
341 | 342 | ||
342 | int maxLine = numLines(); | 343 | int maxLine = numLines(); |
343 | int line = 0; | 344 | int line = 0; |
344 | while(true) | 345 | while(true) |
345 | { | 346 | { |
346 | stream << getTextLine(line)->getString(); | 347 | stream << getTextLine(line)->getString(); |
347 | line++; | 348 | line++; |
348 | if (line >= maxLine) break; | 349 | if (line >= maxLine) break; |
349 | 350 | ||
350 | if (eolMode == KateDocument::eolUnix) stream << "\n"; | 351 | if (eolMode == KateDocument::eolUnix) stream << "\n"; |
351 | else if (eolMode == KateDocument::eolDos) stream << "\r\n"; | 352 | else if (eolMode == KateDocument::eolDos) stream << "\r\n"; |
352 | else if (eolMode == KateDocument::eolMacintosh) stream << '\r'; | 353 | else if (eolMode == KateDocument::eolMacintosh) stream << '\r'; |
353 | }; | 354 | }; |
354 | f.close(); | 355 | f.close(); |
355 | 356 | ||
356 | fileInfo->setFile (m_file); | 357 | fileInfo->setFile (m_file); |
357 | setMTime(); | 358 | setMTime(); |
358 | 359 | ||
359 | if (!(d(this)->hlSetByUser)) | 360 | if (!(d(this)->hlSetByUser)) |
360 | { | 361 | { |
361 | int hl = hlManager->wildcardFind( m_file ); | 362 | int hl = hlManager->wildcardFind( m_file ); |
362 | 363 | ||
363 | setHighlight(hl); | 364 | setHighlight(hl); |
364 | } | 365 | } |
365 | emit fileNameChanged (); | 366 | emit fileNameChanged (); |
366 | 367 | ||
367 | return (f.status() == IO_Ok); | 368 | return (f.status() == IO_Ok); |
368 | } | 369 | } |
369 | 370 | ||
370 | KTextEditor::View *KateDocument::createView( QWidget *parent, const char *name ) | 371 | KTextEditor::View *KateDocument::createView( QWidget *parent, const char *name ) |
371 | { | 372 | { |
372 | return new KateView( this, parent, name); | 373 | return new KateView( this, parent, name); |
373 | } | 374 | } |
374 | 375 | ||
375 | QString KateDocument::textLine( int line ) const | 376 | QString KateDocument::textLine( int line ) const |
376 | { | 377 | { |
377 | TextLine::Ptr l = getTextLine( line ); | 378 | TextLine::Ptr l = getTextLine( line ); |
378 | if ( !l ) | 379 | if ( !l ) |
379 | return QString(); | 380 | return QString(); |
380 | 381 | ||
381 | return l->getString(); | 382 | return l->getString(); |
382 | } | 383 | } |
383 | 384 | ||
384 | void KateDocument::replaceLine(const QString& s,int line) | 385 | void KateDocument::replaceLine(const QString& s,int line) |
385 | { | 386 | { |
386 | remove_Line(line,false); | 387 | remove_Line(line,false); |
387 | insert_Line(s,line,true); | 388 | insert_Line(s,line,true); |
388 | } | 389 | } |
389 | 390 | ||
390 | void KateDocument::insertLine( const QString &str, int l ) { | 391 | void KateDocument::insertLine( const QString &str, int l ) { |
391 | insert_Line(str,l,true); | 392 | insert_Line(str,l,true); |
392 | } | 393 | } |
393 | 394 | ||
394 | void KateDocument::insert_Line(const QString& s,int line, bool update) | 395 | void KateDocument::insert_Line(const QString& s,int line, bool update) |
395 | { | 396 | { |
396 | kdDebug(13020)<<"KateDocument::insertLine "<<s<<QString(" %1").arg(line)<<endl; | 397 | kdDebug(13020)<<"KateDocument::insertLine "<<s<<QString(" %1").arg(line)<<endl; |
397 | TextLine::Ptr TL=new TextLine(); | 398 | TextLine::Ptr TL=new TextLine(); |
398 | TL->append(s.unicode(),s.length()); | 399 | TL->append(s.unicode(),s.length()); |
399 | buffer->insertLine(line,TL); | 400 | buffer->insertLine(line,TL); |
400 | if (update) | 401 | if (update) |
401 | { | 402 | { |
402 | newDocGeometry=true; | 403 | newDocGeometry=true; |
403 | updateLines(line); | 404 | updateLines(line); |
404 | updateViews(); | 405 | updateViews(); |
405 | } | 406 | } |
406 | } | 407 | } |
407 | 408 | ||
408 | void KateDocument::insertAt( const QString &s, int line, int col, bool ) | 409 | void KateDocument::insertAt( const QString &s, int line, int col, bool ) |
409 | { | 410 | { |
410 | VConfig c; | 411 | VConfig c; |
411 | c.view = 0; // ### FIXME | 412 | c.view = 0; // ### FIXME |
412 | c.cursor.x = col; | 413 | c.cursor.x = col; |
413 | c.cursor.y = line; | 414 | c.cursor.y = line; |
414 | c.cXPos = 0; // ### FIXME | 415 | c.cXPos = 0; // ### FIXME |
415 | c.flags = 0; // ### FIXME | 416 | c.flags = 0; // ### FIXME |
416 | insert( c, s ); | 417 | insert( c, s ); |
417 | } | 418 | } |
418 | 419 | ||
419 | void KateDocument::removeLine( int line ) { | 420 | void KateDocument::removeLine( int line ) { |
420 | remove_Line(line,true); | 421 | remove_Line(line,true); |
421 | } | 422 | } |
422 | 423 | ||
423 | void KateDocument::remove_Line(int line,bool update) | 424 | void KateDocument::remove_Line(int line,bool update) |
424 | { | 425 | { |
425 | kdDebug(13020)<<"KateDocument::removeLine "<<QString("%1").arg(line)<<endl; | 426 | kdDebug(13020)<<"KateDocument::removeLine "<<QString("%1").arg(line)<<endl; |
426 | buffer->removeLine(line); | 427 | buffer->removeLine(line); |
427 | // newDocGeometry=true; | 428 | // newDocGeometry=true; |
428 | // if line==0) | 429 | // if line==0) |
429 | if (update) | 430 | if (update) |
430 | { | 431 | { |
431 | updateLines(line); | 432 | updateLines(line); |
432 | updateViews(); | 433 | updateViews(); |
433 | } | 434 | } |
434 | } | 435 | } |
435 | 436 | ||
436 | int KateDocument::length() const | 437 | int KateDocument::length() const |
437 | { | 438 | { |
438 | return text().length(); | 439 | return text().length(); |
439 | } | 440 | } |
440 | 441 | ||
441 | void KateDocument::setSelection( int , int , int , int ) | 442 | void KateDocument::setSelection( int , int , int , int ) |
442 | { | 443 | { |
443 | } | 444 | } |
444 | 445 | ||
445 | bool KateDocument::hasSelection() const | 446 | bool KateDocument::hasSelection() const |
446 | { | 447 | { |
447 | return (selectEnd >= selectStart); | 448 | return (selectEnd >= selectStart); |
448 | } | 449 | } |
449 | 450 | ||
450 | QString KateDocument::selection() const | 451 | QString KateDocument::selection() const |
451 | { | 452 | { |
452 | uint flags = 0; | 453 | uint flags = 0; |
453 | TextLine::Ptr textLine; | 454 | TextLine::Ptr textLine; |
454 | int len, z, start, end, i; | 455 | int len, z, start, end, i; |
455 | 456 | ||
456 | len = 1; | 457 | len = 1; |
457 | if (!(flags & KateView::cfVerticalSelect)) { | 458 | if (!(flags & KateView::cfVerticalSelect)) { |
458 | for (z = selectStart; z <= selectEnd; z++) { | 459 | for (z = selectStart; z <= selectEnd; z++) { |
459 | textLine = getTextLine(z); | 460 | textLine = getTextLine(z); |
460 | len += textLine->numSelected(); | 461 | len += textLine->numSelected(); |
461 | if (textLine->isSelected()) len++; | 462 | if (textLine->isSelected()) len++; |
462 | } | 463 | } |
463 | QString s; | 464 | QString s; |
464 | len = 0; | 465 | len = 0; |
465 | for (z = selectStart; z <= selectEnd; z++) { | 466 | for (z = selectStart; z <= selectEnd; z++) { |
466 | textLine = getTextLine(z); | 467 | textLine = getTextLine(z); |
467 | end = 0; | 468 | end = 0; |
468 | do { | 469 | do { |
469 | start = textLine->findUnselected(end); | 470 | start = textLine->findUnselected(end); |
470 | end = textLine->findSelected(start); | 471 | end = textLine->findSelected(start); |
471 | for (i = start; i < end; i++) { | 472 | for (i = start; i < end; i++) { |
472 | s[len] = textLine->getChar(i); | 473 | s[len] = textLine->getChar(i); |
473 | len++; | 474 | len++; |
474 | } | 475 | } |
475 | } while (start < end); | 476 | } while (start < end); |
476 | if (textLine->isSelected()) { | 477 | if (textLine->isSelected()) { |
477 | s[len] = '\n'; | 478 | s[len] = '\n'; |
478 | len++; | 479 | len++; |
479 | } | 480 | } |
480 | } | 481 | } |
481 | // s[len] = '\0'; | 482 | // s[len] = '\0'; |
482 | return s; | 483 | return s; |
483 | } else { | 484 | } else { |
484 | for (z = selectStart; z <= selectEnd; z++) { | 485 | for (z = selectStart; z <= selectEnd; z++) { |
485 | textLine = getTextLine(z); | 486 | textLine = getTextLine(z); |
486 | len += textLine->numSelected() + 1; | 487 | len += textLine->numSelected() + 1; |
487 | } | 488 | } |
488 | QString s; | 489 | QString s; |
489 | len = 0; | 490 | len = 0; |
490 | for (z = selectStart; z <= selectEnd; z++) { | 491 | for (z = selectStart; z <= selectEnd; z++) { |
491 | textLine = getTextLine(z); | 492 | textLine = getTextLine(z); |
492 | end = 0; | 493 | end = 0; |
493 | do { | 494 | do { |
494 | start = textLine->findUnselected(end); | 495 | start = textLine->findUnselected(end); |
495 | end = textLine->findSelected(start); | 496 | end = textLine->findSelected(start); |
496 | for (i = start; i < end; i++) { | 497 | for (i = start; i < end; i++) { |
497 | s[len] = textLine->getChar(i); | 498 | s[len] = textLine->getChar(i); |
498 | len++; | 499 | len++; |
499 | } | 500 | } |
500 | } while (start < end); | 501 | } while (start < end); |
501 | s[len] = '\n'; | 502 | s[len] = '\n'; |
502 | len++; | 503 | len++; |
503 | } | 504 | } |
504 | // s[len] = '\0'; // the final \0 is not counted in length() | 505 | // s[len] = '\0'; // the final \0 is not counted in length() |
505 | return s; | 506 | return s; |
506 | } | 507 | } |
507 | } | 508 | } |
508 | 509 | ||
509 | int KateDocument::numLines() const | 510 | int KateDocument::numLines() const |
510 | { | 511 | { |
511 | return buffer->count(); | 512 | return buffer->count(); |
512 | } | 513 | } |
513 | 514 | ||
514 | 515 | ||
515 | TextLine::Ptr KateDocument::getTextLine(int line) const | 516 | TextLine::Ptr KateDocument::getTextLine(int line) const |
516 | { | 517 | { |
517 | // This is a hack to get this stuff working. | 518 | // This is a hack to get this stuff working. |
518 | return buffer->line(line); | 519 | return buffer->line(line); |
519 | } | 520 | } |
520 | 521 | ||
521 | int KateDocument::textLength(int line) { | 522 | int KateDocument::textLength(int line) { |
522 | TextLine::Ptr textLine = getTextLine(line); | 523 | TextLine::Ptr textLine = getTextLine(line); |
523 | if (!textLine) return 0; | 524 | if (!textLine) return 0; |
524 | return textLine->length(); | 525 | return textLine->length(); |
525 | } | 526 | } |
526 | 527 | ||
527 | void KateDocument::setTabWidth(int chars) { | 528 | void KateDocument::setTabWidth(int chars) { |
528 | if (tabChars == chars) return; | 529 | if (tabChars == chars) return; |
529 | if (chars < 1) chars = 1; | 530 | if (chars < 1) chars = 1; |
530 | if (chars > 16) chars = 16; | 531 | if (chars > 16) chars = 16; |
531 | tabChars = chars; | 532 | tabChars = chars; |
532 | updateFontData(); | 533 | updateFontData(); |
533 | 534 | ||
534 | maxLength = -1; | 535 | maxLength = -1; |
535 | for (int i=0; i < buffer->count(); i++) | 536 | for (int i=0; i < buffer->count(); i++) |
536 | { | 537 | { |
537 | TextLine::Ptr textLine = buffer->line(i); | 538 | TextLine::Ptr textLine = buffer->line(i); |
538 | int len = textWidth(textLine,textLine->length()); | 539 | int len = textWidth(textLine,textLine->length()); |
539 | if (len > maxLength) { | 540 | if (len > maxLength) { |
540 | maxLength = len; | 541 | maxLength = len; |
541 | longestLine = textLine; | 542 | longestLine = textLine; |
542 | } | 543 | } |
543 | } | 544 | } |
544 | } | 545 | } |
545 | 546 | ||
546 | void KateDocument::setReadOnly(bool m) { | 547 | void KateDocument::setReadOnly(bool m) { |
547 | KTextEditor::View *view; | 548 | KTextEditor::View *view; |
548 | 549 | ||
549 | if (m != readOnly) { | 550 | if (m != readOnly) { |
550 | readOnly = m; | 551 | readOnly = m; |
551 | // if (readOnly) recordReset(); | 552 | // if (readOnly) recordReset(); |
552 | for (view = m_views.first(); view != 0L; view = m_views.next() ) { | 553 | for (view = m_views.first(); view != 0L; view = m_views.next() ) { |
553 | emit static_cast<KateView *>( view )->newStatus(); | 554 | emit static_cast<KateView *>( view )->newStatus(); |
554 | } | 555 | } |
555 | } | 556 | } |
556 | } | 557 | } |
557 | 558 | ||
558 | bool KateDocument::isReadOnly() const { | 559 | bool KateDocument::isReadOnly() const { |
559 | return readOnly; | 560 | return readOnly; |
560 | } | 561 | } |
561 | 562 | ||
562 | void KateDocument::setNewDoc( bool m ) | 563 | void KateDocument::setNewDoc( bool m ) |
563 | { | 564 | { |
564 | // KTextEditor::View *view; | 565 | // KTextEditor::View *view; |
565 | 566 | ||
566 | if ( m != newDoc ) | 567 | if ( m != newDoc ) |
567 | { | 568 | { |
568 | newDoc = m; | 569 | newDoc = m; |
569 | //// if (readOnly) recordReset(); | 570 | //// if (readOnly) recordReset(); |
570 | // for (view = m_views.first(); view != 0L; view = m_views.next() ) { | 571 | // for (view = m_views.first(); view != 0L; view = m_views.next() ) { |
571 | // emit static_cast<KateView *>( view )->newStatus(); | 572 | // emit static_cast<KateView *>( view )->newStatus(); |
572 | // } | 573 | // } |
573 | } | 574 | } |
574 | } | 575 | } |
575 | 576 | ||
576 | bool KateDocument::isNewDoc() const { | 577 | bool KateDocument::isNewDoc() const { |
577 | return newDoc; | 578 | return newDoc; |
578 | } | 579 | } |
579 | 580 | ||
580 | void KateDocument::setModified(bool m) { | 581 | void KateDocument::setModified(bool m) { |
581 | KTextEditor::View *view; | 582 | KTextEditor::View *view; |
582 | 583 | ||
583 | if (m != modified) { | 584 | if (m != modified) { |
584 | modified = m; | 585 | modified = m; |
585 | for (view = m_views.first(); view != 0L; view = m_views.next() ) { | 586 | for (view = m_views.first(); view != 0L; view = m_views.next() ) { |
586 | emit static_cast<KateView *>( view )->newStatus(); | 587 | emit static_cast<KateView *>( view )->newStatus(); |
587 | } | 588 | } |
588 | emit modifiedChanged (); | 589 | emit modifiedChanged (); |
589 | } | 590 | } |
590 | } | 591 | } |
591 | 592 | ||
592 | bool KateDocument::isModified() const { | 593 | bool KateDocument::isModified() const { |
593 | return modified; | 594 | return modified; |
594 | } | 595 | } |
595 | 596 | ||
596 | void KateDocument::readConfig() | 597 | void KateDocument::readConfig() |
597 | { | 598 | { |
598 | KateConfig *config = KGlobal::config(); | 599 | KateConfig *config = KGlobal::config(); |
599 | config->setGroup("Kate Document"); | 600 | config->setGroup("Kate Document"); |
600 | 601 | ||
601 | myWordWrap = config->readBoolEntry("Word Wrap On", false); | 602 | myWordWrap = config->readBoolEntry("Word Wrap On", false); |
602 | myWordWrapAt = config->readNumEntry("Word Wrap At", 80); | 603 | myWordWrapAt = config->readNumEntry("Word Wrap At", 80); |
603 | if (myWordWrap) | 604 | if (myWordWrap) |
604 | wrapText (myWordWrapAt); | 605 | wrapText (myWordWrapAt); |
605 | 606 | ||
606 | setTabWidth(config->readNumEntry("TabWidth", 8)); | 607 | setTabWidth(config->readNumEntry("TabWidth", 8)); |
607 | setUndoSteps(config->readNumEntry("UndoSteps", 50)); | 608 | setUndoSteps(config->readNumEntry("UndoSteps", 50)); |
608 | m_singleSelection = config->readBoolEntry("SingleSelection", false); | 609 | m_singleSelection = config->readBoolEntry("SingleSelection", false); |
609 | myEncoding = config->readEntry("Encoding", QString::fromLatin1(QTextCodec::codecForLocale()->name())); | 610 | myEncoding = config->readEntry("Encoding", QString::fromLatin1(QTextCodec::codecForLocale()->name())); |
610 | setFont (config->readFontEntry("Font", myFont)); | 611 | setFont (config->readFontEntry("Font", myFont)); |
611 | 612 | ||
612 | colors[0] = config->readColorEntry("Color Background", colors[0]); | 613 | colors[0] = config->readColorEntry("Color Background", colors[0]); |
613 | colors[1] = config->readColorEntry("Color Selected", colors[1]); | 614 | colors[1] = config->readColorEntry("Color Selected", colors[1]); |
614 | 615 | ||
615 | // config->sync(); | 616 | // config->sync(); |
616 | } | 617 | } |
617 | 618 | ||
618 | void KateDocument::writeConfig() | 619 | void KateDocument::writeConfig() |
619 | { | 620 | { |
620 | KateConfig *config = KGlobal::config(); | 621 | KateConfig *config = KGlobal::config(); |
621 | config->setGroup("Kate Document"); | 622 | config->setGroup("Kate Document"); |
622 | config->writeEntry("Word Wrap On", myWordWrap); | 623 | config->writeEntry("Word Wrap On", myWordWrap); |
623 | config->writeEntry("Word Wrap At", myWordWrapAt); | 624 | config->writeEntry("Word Wrap At", myWordWrapAt); |
624 | config->writeEntry("TabWidth", tabChars); | 625 | config->writeEntry("TabWidth", tabChars); |
625 | config->writeEntry("UndoSteps", undoSteps); | 626 | config->writeEntry("UndoSteps", undoSteps); |
626 | config->writeEntry("SingleSelection", m_singleSelection); | 627 | config->writeEntry("SingleSelection", m_singleSelection); |
627 | config->writeEntry("Encoding", myEncoding); | 628 | config->writeEntry("Encoding", myEncoding); |
628 | config->writeEntry("Font", myFont); | 629 | config->writeEntry("Font", myFont); |
629 | config->writeEntry("Color Background", colors[0]); | 630 | config->writeEntry("Color Background", colors[0]); |
630 | config->writeEntry("Color Selected", colors[1]); | 631 | config->writeEntry("Color Selected", colors[1]); |
631 | // config->sync(); | 632 | // config->sync(); |
632 | } | 633 | } |
633 | 634 | ||
634 | void KateDocument::readSessionConfig(KateConfig *config) | 635 | void KateDocument::readSessionConfig(KateConfig *config) |
635 | { | 636 | { |
636 | m_url = config->readEntry("URL"); // ### doesn't this break the encoding? (Simon) | 637 | m_url = config->readEntry("URL"); // ### doesn't this break the encoding? (Simon) |
637 | setHighlight(hlManager->nameFind(config->readEntry("Highlight"))); | 638 | setHighlight(hlManager->nameFind(config->readEntry("Highlight"))); |
638 | // anders: restore bookmarks if possible | 639 | // anders: restore bookmarks if possible |
639 | QValueList<int> l = config->readIntListEntry("Bookmarks"); | 640 | QValueList<int> l = config->readIntListEntry("Bookmarks"); |
640 | if ( l.count() ) { | 641 | if ( l.count() ) { |
641 | for (uint i=0; i < l.count(); i++) { | 642 | for (uint i=0; i < l.count(); i++) { |
642 | if ( numLines() < l[i] ) break; | 643 | if ( numLines() < l[i] ) break; |
643 | getTextLine( l[i] )->addMark( Bookmark ); | 644 | getTextLine( l[i] )->addMark( Bookmark ); |
644 | } | 645 | } |
645 | } | 646 | } |
646 | } | 647 | } |
647 | 648 | ||
648 | void KateDocument::writeSessionConfig(KateConfig *config) | 649 | void KateDocument::writeSessionConfig(KateConfig *config) |
649 | { | 650 | { |
650 | #if 0 | 651 | #if 0 |
651 | config->writeEntry("URL", m_url); // ### encoding?? (Simon) | 652 | config->writeEntry("URL", m_url); // ### encoding?? (Simon) |
652 | config->writeEntry("Highlight", m_highlight->name()); | 653 | config->writeEntry("Highlight", m_highlight->name()); |
653 | // anders: save bookmarks | 654 | // anders: save bookmarks |
654 | QList<Kate::Mark> l = marks(); | 655 | QList<Kate::Mark> l = marks(); |
655 | QValueList<int> ml; | 656 | QValueList<int> ml; |
656 | for (uint i=0; i < l.count(); i++) { | 657 | for (uint i=0; i < l.count(); i++) { |
657 | if ( l.at(i)->type == 1) // only save bookmarks | 658 | if ( l.at(i)->type == 1) // only save bookmarks |
658 | ml << l.at(i)->line; | 659 | ml << l.at(i)->line; |
659 | } | 660 | } |
660 | if ( ml.count() ) | 661 | if ( ml.count() ) |
661 | config->writeEntry("Bookmarks", ml); | 662 | config->writeEntry("Bookmarks", ml); |
662 | #endif | 663 | #endif |
663 | } | 664 | } |
664 | 665 | ||
665 | 666 | ||
666 | void KateDocument::setHighlight(int n) { | 667 | void KateDocument::setHighlight(int n) { |
667 | Highlight *h; | 668 | Highlight *h; |
668 | 669 | ||
669 | // hlNumber = n; | 670 | // hlNumber = n; |
670 | 671 | ||
671 | h = hlManager->getHl(n); | 672 | h = hlManager->getHl(n); |
672 | if (h == m_highlight) { | 673 | if (h == m_highlight) { |
673 | updateLines(); | 674 | updateLines(); |
674 | } else { | 675 | } else { |
675 | if (m_highlight != 0L) m_highlight->release(); | 676 | if (m_highlight != 0L) m_highlight->release(); |
676 | h->use(); | 677 | h->use(); |
677 | m_highlight = h; | 678 | m_highlight = h; |
678 | makeAttribs(); | 679 | makeAttribs(); |
679 | } | 680 | } |
680 | PreHighlightedTill=0; | 681 | PreHighlightedTill=0; |
681 | RequestPreHighlightTill=0; | 682 | RequestPreHighlightTill=0; |
682 | emit(highlightChanged()); | 683 | emit(highlightChanged()); |
683 | } | 684 | } |
684 | 685 | ||
685 | void KateDocument::makeAttribs() { | 686 | void KateDocument::makeAttribs() { |
686 | qDebug("KateDocument::makeAttribs()"); | 687 | odebug << "KateDocument::makeAttribs()" << oendl; |
687 | m_numAttribs = hlManager->makeAttribs(m_highlight, m_attribs, maxAttribs); | 688 | m_numAttribs = hlManager->makeAttribs(m_highlight, m_attribs, maxAttribs); |
688 | updateFontData(); | 689 | updateFontData(); |
689 | updateLines(); | 690 | updateLines(); |
690 | } | 691 | } |
691 | 692 | ||
692 | void KateDocument::updateFontData() { | 693 | void KateDocument::updateFontData() { |
693 | int maxAscent, maxDescent; | 694 | int maxAscent, maxDescent; |
694 | int tabWidth; | 695 | int tabWidth; |
695 | KateView *view; | 696 | KateView *view; |
696 | 697 | ||
697 | maxAscent = myFontMetrics.ascent(); | 698 | maxAscent = myFontMetrics.ascent(); |
698 | maxDescent = myFontMetrics.descent(); | 699 | maxDescent = myFontMetrics.descent(); |
699 | tabWidth = myFontMetrics.width(' '); | 700 | tabWidth = myFontMetrics.width(' '); |
700 | 701 | ||
701 | fontHeight = maxAscent + maxDescent + 1; | 702 | fontHeight = maxAscent + maxDescent + 1; |
702 | fontAscent = maxAscent; | 703 | fontAscent = maxAscent; |
703 | m_tabWidth = tabChars*tabWidth; | 704 | m_tabWidth = tabChars*tabWidth; |
704 | 705 | ||
705 | for (view = views.first(); view != 0L; view = views.next() ) { | 706 | for (view = views.first(); view != 0L; view = views.next() ) { |
706 | view->myViewInternal->drawBuffer->resize(view->width(),fontHeight); | 707 | view->myViewInternal->drawBuffer->resize(view->width(),fontHeight); |
707 | view->tagAll(); | 708 | view->tagAll(); |
708 | view->updateCursor(); | 709 | view->updateCursor(); |
709 | } | 710 | } |
710 | } | 711 | } |
711 | 712 | ||
712 | void KateDocument::hlChanged() { //slot | 713 | void KateDocument::hlChanged() { //slot |
713 | makeAttribs(); | 714 | makeAttribs(); |
714 | updateViews(); | 715 | updateViews(); |
715 | } | 716 | } |
716 | 717 | ||
717 | 718 | ||
718 | void KateDocument::addView(KTextEditor::View *view) { | 719 | void KateDocument::addView(KTextEditor::View *view) { |
719 | views.append( static_cast<KateView *>( view ) ); | 720 | views.append( static_cast<KateView *>( view ) ); |
720 | KTextEditor::Document::addView( view ); | 721 | KTextEditor::Document::addView( view ); |
721 | connect( static_cast<KateView *>( view ), SIGNAL( destroyed() ), this, SLOT( slotViewDestroyed() ) ); | 722 | connect( static_cast<KateView *>( view ), SIGNAL( destroyed() ), this, SLOT( slotViewDestroyed() ) ); |
722 | } | 723 | } |
723 | 724 | ||
724 | void KateDocument::removeView(KTextEditor::View *view) { | 725 | void KateDocument::removeView(KTextEditor::View *view) { |
725 | // if (undoView == view) recordReset(); | 726 | // if (undoView == view) recordReset(); |
726 | disconnect( static_cast<KateView *>( view ), SIGNAL( destroyed() ), this, SLOT( slotViewDestroyed() ) ); | 727 | disconnect( static_cast<KateView *>( view ), SIGNAL( destroyed() ), this, SLOT( slotViewDestroyed() ) ); |
727 | views.removeRef( static_cast<KateView *>( view ) ); | 728 | views.removeRef( static_cast<KateView *>( view ) ); |
728 | KTextEditor::Document::removeView( view ); | 729 | KTextEditor::Document::removeView( view ); |
729 | } | 730 | } |
730 | 731 | ||
731 | void KateDocument::slotViewDestroyed() | 732 | void KateDocument::slotViewDestroyed() |
732 | { | 733 | { |
733 | views.removeRef( static_cast<const KateView *>( sender() ) ); | 734 | views.removeRef( static_cast<const KateView *>( sender() ) ); |
734 | } | 735 | } |
735 | 736 | ||
736 | bool KateDocument::ownedView(KateView *view) { | 737 | bool KateDocument::ownedView(KateView *view) { |
737 | // do we own the given view? | 738 | // do we own the given view? |
738 | return (views.containsRef(view) > 0); | 739 | return (views.containsRef(view) > 0); |
739 | } | 740 | } |
740 | 741 | ||
741 | bool KateDocument::isLastView(int numViews) { | 742 | bool KateDocument::isLastView(int numViews) { |
742 | return ((int) views.count() == numViews); | 743 | return ((int) views.count() == numViews); |
743 | } | 744 | } |
744 | 745 | ||
745 | int KateDocument::textWidth(const TextLine::Ptr &textLine, int cursorX) { | 746 | int KateDocument::textWidth(const TextLine::Ptr &textLine, int cursorX) { |
746 | int x; | 747 | int x; |
747 | int z; | 748 | int z; |
748 | QChar ch; | 749 | QChar ch; |
749 | Attribute *a; | 750 | Attribute *a; |
750 | 751 | ||
751 | x = 0; | 752 | x = 0; |
752 | for (z = 0; z < cursorX; z++) { | 753 | for (z = 0; z < cursorX; z++) { |
753 | ch = textLine->getChar(z); | 754 | ch = textLine->getChar(z); |
754 | a = &m_attribs[textLine->getAttr(z)]; | 755 | a = &m_attribs[textLine->getAttr(z)]; |
755 | 756 | ||
756 | if (ch == '\t') | 757 | if (ch == '\t') |
757 | x += m_tabWidth - (x % m_tabWidth); | 758 | x += m_tabWidth - (x % m_tabWidth); |
758 | else if (a->bold && a->italic) | 759 | else if (a->bold && a->italic) |
759 | x += myFontMetricsBI.width(ch); | 760 | x += myFontMetricsBI.width(ch); |
760 | else if (a->bold) | 761 | else if (a->bold) |
761 | x += myFontMetricsBold.width(ch); | 762 | x += myFontMetricsBold.width(ch); |
762 | else if (a->italic) | 763 | else if (a->italic) |
763 | x += myFontMetricsItalic.width(ch); | 764 | x += myFontMetricsItalic.width(ch); |
764 | else | 765 | else |
765 | x += myFontMetrics.width(ch); | 766 | x += myFontMetrics.width(ch); |
766 | } | 767 | } |
767 | return x; | 768 | return x; |
768 | } | 769 | } |
769 | 770 | ||
770 | int KateDocument::textWidth(PointStruc &cursor) { | 771 | int KateDocument::textWidth(PointStruc &cursor) { |
771 | if (cursor.x < 0) | 772 | if (cursor.x < 0) |
772 | cursor.x = 0; | 773 | cursor.x = 0; |
773 | if (cursor.y < 0) | 774 | if (cursor.y < 0) |
774 | cursor.y = 0; | 775 | cursor.y = 0; |
775 | if (cursor.y >= numLines()) | 776 | if (cursor.y >= numLines()) |
776 | cursor.y = lastLine(); | 777 | cursor.y = lastLine(); |
777 | return textWidth(getTextLine(cursor.y),cursor.x); | 778 | return textWidth(getTextLine(cursor.y),cursor.x); |
778 | } | 779 | } |
779 | 780 | ||
780 | int KateDocument::textWidth(bool wrapCursor, PointStruc &cursor, int xPos) { | 781 | int KateDocument::textWidth(bool wrapCursor, PointStruc &cursor, int xPos) { |
781 | int len; | 782 | int len; |
782 | int x, oldX; | 783 | int x, oldX; |
783 | int z; | 784 | int z; |
784 | QChar ch; | 785 | QChar ch; |
785 | Attribute *a; | 786 | Attribute *a; |
786 | 787 | ||
787 | if (cursor.y < 0) cursor.y = 0; | 788 | if (cursor.y < 0) cursor.y = 0; |
788 | if (cursor.y > lastLine()) cursor.y = lastLine(); | 789 | if (cursor.y > lastLine()) cursor.y = lastLine(); |
789 | TextLine::Ptr textLine = getTextLine(cursor.y); | 790 | TextLine::Ptr textLine = getTextLine(cursor.y); |
790 | len = textLine->length(); | 791 | len = textLine->length(); |
791 | 792 | ||
792 | x = oldX = z = 0; | 793 | x = oldX = z = 0; |
793 | while (x < xPos && (!wrapCursor || z < len)) { | 794 | while (x < xPos && (!wrapCursor || z < len)) { |
794 | oldX = x; | 795 | oldX = x; |
795 | ch = textLine->getChar(z); | 796 | ch = textLine->getChar(z); |
796 | a = &m_attribs[textLine->getAttr(z)]; | 797 | a = &m_attribs[textLine->getAttr(z)]; |
797 | 798 | ||
798 | if (ch == '\t') | 799 | if (ch == '\t') |
799 | x += m_tabWidth - (x % m_tabWidth); | 800 | x += m_tabWidth - (x % m_tabWidth); |
800 | else if (a->bold && a->italic) | 801 | else if (a->bold && a->italic) |
801 | x += myFontMetricsBI.width(ch); | 802 | x += myFontMetricsBI.width(ch); |
802 | else if (a->bold) | 803 | else if (a->bold) |
803 | x += myFontMetricsBold.width(ch); | 804 | x += myFontMetricsBold.width(ch); |
804 | else if (a->italic) | 805 | else if (a->italic) |
805 | x += myFontMetricsItalic.width(ch); | 806 | x += myFontMetricsItalic.width(ch); |
806 | else | 807 | else |
807 | x += myFontMetrics.width(ch); | 808 | x += myFontMetrics.width(ch); |
808 | 809 | ||
809 | z++; | 810 | z++; |
810 | } | 811 | } |
811 | if (xPos - oldX < x - xPos && z > 0) { | 812 | if (xPos - oldX < x - xPos && z > 0) { |
812 | z--; | 813 | z--; |
813 | x = oldX; | 814 | x = oldX; |
814 | } | 815 | } |
815 | cursor.x = z; | 816 | cursor.x = z; |
816 | return x; | 817 | return x; |
817 | } | 818 | } |
818 | 819 | ||
819 | 820 | ||
820 | int KateDocument::textPos(const TextLine::Ptr &textLine, int xPos) { | 821 | int KateDocument::textPos(const TextLine::Ptr &textLine, int xPos) { |
821 | int x, oldX; | 822 | int x, oldX; |
822 | int z; | 823 | int z; |
823 | QChar ch; | 824 | QChar ch; |
824 | Attribute *a; | 825 | Attribute *a; |
825 | 826 | ||
826 | x = oldX = z = 0; | 827 | x = oldX = z = 0; |
827 | while (x < xPos) { // && z < len) { | 828 | while (x < xPos) { // && z < len) { |
828 | oldX = x; | 829 | oldX = x; |
829 | ch = textLine->getChar(z); | 830 | ch = textLine->getChar(z); |
830 | a = &m_attribs[textLine->getAttr(z)]; | 831 | a = &m_attribs[textLine->getAttr(z)]; |
831 | 832 | ||
832 | if (ch == '\t') | 833 | if (ch == '\t') |
833 | x += m_tabWidth - (x % m_tabWidth); | 834 | x += m_tabWidth - (x % m_tabWidth); |
834 | else if (a->bold && a->italic) | 835 | else if (a->bold && a->italic) |
835 | x += myFontMetricsBI.width(ch); | 836 | x += myFontMetricsBI.width(ch); |
836 | else if (a->bold) | 837 | else if (a->bold) |
837 | x += myFontMetricsBold.width(ch); | 838 | x += myFontMetricsBold.width(ch); |
838 | else if (a->italic) | 839 | else if (a->italic) |
839 | x += myFontMetricsItalic.width(ch); | 840 | x += myFontMetricsItalic.width(ch); |
840 | else | 841 | else |
841 | x += myFontMetrics.width(ch); | 842 | x += myFontMetrics.width(ch); |
842 | 843 | ||
843 | z++; | 844 | z++; |
844 | } | 845 | } |
845 | if (xPos - oldX < x - xPos && z > 0) { | 846 | if (xPos - oldX < x - xPos && z > 0) { |
846 | z--; | 847 | z--; |
847 | // newXPos = oldX; | 848 | // newXPos = oldX; |
848 | }// else newXPos = x; | 849 | }// else newXPos = x; |
849 | return z; | 850 | return z; |
850 | } | 851 | } |
851 | 852 | ||
852 | int KateDocument::textWidth() { | 853 | int KateDocument::textWidth() { |
853 | return int(maxLength + 8); | 854 | return int(maxLength + 8); |
854 | } | 855 | } |
855 | 856 | ||
856 | int KateDocument::textHeight() { | 857 | int KateDocument::textHeight() { |
857 | return numLines()*fontHeight; | 858 | return numLines()*fontHeight; |
858 | } | 859 | } |
859 | 860 | ||
860 | void KateDocument::insert(VConfig &c, const QString &s) { | 861 | void KateDocument::insert(VConfig &c, const QString &s) { |
861 | int pos; | 862 | int pos; |
862 | QChar ch; | 863 | QChar ch; |
863 | QString buf; | 864 | QString buf; |
864 | 865 | ||
865 | if (s.isEmpty()) return; | 866 | if (s.isEmpty()) return; |
866 | 867 | ||
867 | recordStart(c, KateActionGroup::ugPaste); | 868 | recordStart(c, KateActionGroup::ugPaste); |
868 | 869 | ||
869 | pos = 0; | 870 | pos = 0; |
870 | if (!(c.flags & KateView::cfVerticalSelect)) { | 871 | if (!(c.flags & KateView::cfVerticalSelect)) { |
871 | do { | 872 | do { |
872 | ch = s[pos]; | 873 | ch = s[pos]; |
873 | if (ch.isPrint() || ch == '\t') { | 874 | if (ch.isPrint() || ch == '\t') { |
874 | buf += ch; // append char to buffer | 875 | buf += ch; // append char to buffer |
875 | } else if (ch == '\n') { | 876 | } else if (ch == '\n') { |
876 | recordAction(KateAction::newLine, c.cursor); // wrap contents behind cursor to new line | 877 | recordAction(KateAction::newLine, c.cursor); // wrap contents behind cursor to new line |
877 | recordInsert(c, buf); // append to old line | 878 | recordInsert(c, buf); // append to old line |
878 | // c.cursor.x += buf.length(); | 879 | // c.cursor.x += buf.length(); |
879 | buf.truncate(0); // clear buffer | 880 | buf.truncate(0); // clear buffer |
880 | c.cursor.y++; | 881 | c.cursor.y++; |
881 | c.cursor.x = 0; | 882 | c.cursor.x = 0; |
882 | } | 883 | } |
883 | pos++; | 884 | pos++; |
884 | } while (pos < (int) s.length()); | 885 | } while (pos < (int) s.length()); |
885 | } else { | 886 | } else { |
886 | int xPos; | 887 | int xPos; |
887 | 888 | ||
888 | xPos = textWidth(c.cursor); | 889 | xPos = textWidth(c.cursor); |
889 | do { | 890 | do { |
890 | ch = s[pos]; | 891 | ch = s[pos]; |
891 | if (ch.isPrint() || ch == '\t') { | 892 | if (ch.isPrint() || ch == '\t') { |
892 | buf += ch; | 893 | buf += ch; |
893 | } else if (ch == '\n') { | 894 | } else if (ch == '\n') { |
894 | recordInsert(c, buf); | 895 | recordInsert(c, buf); |
895 | c.cursor.x += buf.length(); | 896 | c.cursor.x += buf.length(); |
896 | buf.truncate(0); | 897 | buf.truncate(0); |
897 | c.cursor.y++; | 898 | c.cursor.y++; |
898 | if (c.cursor.y >= numLines()) | 899 | if (c.cursor.y >= numLines()) |
899 | recordAction(KateAction::insLine, c.cursor); | 900 | recordAction(KateAction::insLine, c.cursor); |
900 | c.cursor.x = textPos(getTextLine(c.cursor.y), xPos); | 901 | c.cursor.x = textPos(getTextLine(c.cursor.y), xPos); |
901 | } | 902 | } |
902 | pos++; | 903 | pos++; |
903 | } while (pos < (int) s.length()); | 904 | } while (pos < (int) s.length()); |
904 | } | 905 | } |
905 | recordInsert(c, buf); | 906 | recordInsert(c, buf); |
906 | c.cursor.x += buf.length(); | 907 | c.cursor.x += buf.length(); |
907 | recordEnd(c); | 908 | recordEnd(c); |
908 | } | 909 | } |
909 | 910 | ||
910 | void KateDocument::insertFile(VConfig &c, QIODevice &dev) | 911 | void KateDocument::insertFile(VConfig &c, QIODevice &dev) |
911 | { | 912 | { |
912 | recordStart(c, KateActionGroup::ugPaste); | 913 | recordStart(c, KateActionGroup::ugPaste); |
913 | 914 | ||
914 | QString buf; | 915 | QString buf; |
915 | QChar ch, last; | 916 | QChar ch, last; |
916 | 917 | ||
917 | QTextStream stream( &dev ); | 918 | QTextStream stream( &dev ); |
918 | 919 | ||
919 | while ( !stream.atEnd() ) { | 920 | while ( !stream.atEnd() ) { |
920 | stream >> ch; | 921 | stream >> ch; |
921 | 922 | ||
922 | if (ch.isPrint() || ch == '\t') { | 923 | if (ch.isPrint() || ch == '\t') { |
923 | buf += ch; | 924 | buf += ch; |
924 | } else if (ch == '\n' || ch == '\r') { | 925 | } else if (ch == '\n' || ch == '\r') { |
925 | if (last != '\r' || ch != '\n') { | 926 | if (last != '\r' || ch != '\n') { |
926 | recordAction(KateAction::newLine, c.cursor); | 927 | recordAction(KateAction::newLine, c.cursor); |
927 | recordInsert(c, buf); | 928 | recordInsert(c, buf); |
928 | buf.truncate(0); | 929 | buf.truncate(0); |
929 | c.cursor.y++; | 930 | c.cursor.y++; |
930 | c.cursor.x = 0; | 931 | c.cursor.x = 0; |
931 | } | 932 | } |
932 | last = ch; | 933 | last = ch; |
933 | } | 934 | } |
934 | } | 935 | } |
935 | 936 | ||
936 | recordInsert(c, buf); | 937 | recordInsert(c, buf); |
937 | recordEnd(c); | 938 | recordEnd(c); |
938 | } | 939 | } |
939 | 940 | ||
940 | int KateDocument::currentColumn(PointStruc &cursor) { | 941 | int KateDocument::currentColumn(PointStruc &cursor) { |
941 | return getTextLine(cursor.y)->cursorX(cursor.x,tabChars); | 942 | return getTextLine(cursor.y)->cursorX(cursor.x,tabChars); |
942 | } | 943 | } |
943 | 944 | ||
944 | bool KateDocument::insertChars(VConfig &c, const QString &chars) { | 945 | bool KateDocument::insertChars(VConfig &c, const QString &chars) { |
945 | int z, pos, l; | 946 | int z, pos, l; |
946 | bool onlySpaces; | 947 | bool onlySpaces; |
947 | QChar ch; | 948 | QChar ch; |
948 | QString buf; | 949 | QString buf; |
949 | 950 | ||
950 | TextLine::Ptr textLine = getTextLine(c.cursor.y); | 951 | TextLine::Ptr textLine = getTextLine(c.cursor.y); |
951 | 952 | ||
952 | pos = 0; | 953 | pos = 0; |
953 | onlySpaces = true; | 954 | onlySpaces = true; |
954 | for (z = 0; z < (int) chars.length(); z++) { | 955 | for (z = 0; z < (int) chars.length(); z++) { |
955 | ch = chars[z]; | 956 | ch = chars[z]; |
956 | if (ch == '\t' && c.flags & KateView::cfReplaceTabs) { | 957 | if (ch == '\t' && c.flags & KateView::cfReplaceTabs) { |
957 | l = tabChars - (textLine->cursorX(c.cursor.x, tabChars) % tabChars); | 958 | l = tabChars - (textLine->cursorX(c.cursor.x, tabChars) % tabChars); |
958 | while (l > 0) { | 959 | while (l > 0) { |
959 | buf.insert(pos, ' '); | 960 | buf.insert(pos, ' '); |
960 | pos++; | 961 | pos++; |
961 | l--; | 962 | l--; |
962 | } | 963 | } |
963 | } else if (ch.isPrint() || ch == '\t') { | 964 | } else if (ch.isPrint() || ch == '\t') { |
964 | buf.insert(pos, ch); | 965 | buf.insert(pos, ch); |
965 | pos++; | 966 | pos++; |
966 | if (ch != ' ') onlySpaces = false; | 967 | if (ch != ' ') onlySpaces = false; |
967 | if (c.flags & KateView::cfAutoBrackets) { | 968 | if (c.flags & KateView::cfAutoBrackets) { |
968 | if (ch == '(') buf.insert(pos, ')'); | 969 | if (ch == '(') buf.insert(pos, ')'); |
969 | if (ch == '[') buf.insert(pos, ']'); | 970 | if (ch == '[') buf.insert(pos, ']'); |
970 | if (ch == '{') buf.insert(pos, '}'); | 971 | if (ch == '{') buf.insert(pos, '}'); |
971 | } | 972 | } |
972 | } | 973 | } |
973 | } | 974 | } |
974 | //pos = cursor increment | 975 | //pos = cursor increment |
975 | 976 | ||
976 | //return false if nothing has to be inserted | 977 | //return false if nothing has to be inserted |
977 | if (buf.isEmpty()) return false; | 978 | if (buf.isEmpty()) return false; |
978 | 979 | ||
979 | //auto deletion of the marked text occurs not very often and can therefore | 980 | //auto deletion of the marked text occurs not very often and can therefore |
980 | // be recorded separately | 981 | // be recorded separately |
981 | if (c.flags &KateView:: cfDelOnInput) delMarkedText(c); | 982 | if (c.flags &KateView:: cfDelOnInput) delMarkedText(c); |
982 | 983 | ||
983 | recordStart(c, KateActionGroup::ugInsChar); | 984 | recordStart(c, KateActionGroup::ugInsChar); |
984 | recordReplace(c/*.cursor*/, (c.flags & KateView::cfOvr) ? buf.length() : 0, buf); | 985 | recordReplace(c/*.cursor*/, (c.flags & KateView::cfOvr) ? buf.length() : 0, buf); |
985 | c.cursor.x += pos; | 986 | c.cursor.x += pos; |
986 | 987 | ||
987 | if (myWordWrap && myWordWrapAt > 0) { | 988 | if (myWordWrap && myWordWrapAt > 0) { |
988 | int line; | 989 | int line; |
989 | const QChar *s; | 990 | const QChar *s; |
990 | // int pos; | 991 | // int pos; |
991 | PointStruc actionCursor; | 992 | PointStruc actionCursor; |
992 | 993 | ||
993 | line = c.cursor.y; | 994 | line = c.cursor.y; |
994 | do { | 995 | do { |
995 | textLine = getTextLine(line); | 996 | textLine = getTextLine(line); |
996 | s = textLine->getText(); | 997 | s = textLine->getText(); |
997 | l = textLine->length(); | 998 | l = textLine->length(); |
998 | for (z = myWordWrapAt; z < l; z++) if (!s[z].isSpace()) break; //search for text to wrap | 999 | for (z = myWordWrapAt; z < l; z++) if (!s[z].isSpace()) break; //search for text to wrap |
999 | if (z >= l) break; // nothing more to wrap | 1000 | if (z >= l) break; // nothing more to wrap |
1000 | pos = myWordWrapAt; | 1001 | pos = myWordWrapAt; |
1001 | for (; z >= 0; z--) { //find wrap position | 1002 | for (; z >= 0; z--) { //find wrap position |
1002 | if (s[z].isSpace()) { | 1003 | if (s[z].isSpace()) { |
1003 | pos = z + 1; | 1004 | pos = z + 1; |
1004 | break; | 1005 | break; |
1005 | } | 1006 | } |
1006 | } | 1007 | } |
1007 | //pos = wrap position | 1008 | //pos = wrap position |
1008 | 1009 | ||
1009 | if (line == c.cursor.y && pos <= c.cursor.x) { | 1010 | if (line == c.cursor.y && pos <= c.cursor.x) { |
1010 | //wrap cursor | 1011 | //wrap cursor |
1011 | c.cursor.y++; | 1012 | c.cursor.y++; |
1012 | c.cursor.x -= pos; | 1013 | c.cursor.x -= pos; |
1013 | } | 1014 | } |
1014 | 1015 | ||
1015 | if (line == lastLine() || (getTextLine(line+1)->length() == 0) ) { | 1016 | if (line == lastLine() || (getTextLine(line+1)->length() == 0) ) { |
1016 | //at end of doc: create new line | 1017 | //at end of doc: create new line |
1017 | actionCursor.x = pos; | 1018 | actionCursor.x = pos; |
1018 | actionCursor.y = line; | 1019 | actionCursor.y = line; |
1019 | recordAction(KateAction::newLine,actionCursor); | 1020 | recordAction(KateAction::newLine,actionCursor); |
1020 | } else { | 1021 | } else { |
1021 | //wrap | 1022 | //wrap |
1022 | actionCursor.y = line + 1; | 1023 | actionCursor.y = line + 1; |
1023 | if (!s[l - 1].isSpace()) { //add space in next line if necessary | 1024 | if (!s[l - 1].isSpace()) { //add space in next line if necessary |
1024 | actionCursor.x = 0; | 1025 | actionCursor.x = 0; |
1025 | recordInsert(actionCursor, " "); | 1026 | recordInsert(actionCursor, " "); |
1026 | } | 1027 | } |
1027 | actionCursor.x = textLine->length() - pos; | 1028 | actionCursor.x = textLine->length() - pos; |
1028 | recordAction(KateAction::wordWrap, actionCursor); | 1029 | recordAction(KateAction::wordWrap, actionCursor); |
1029 | } | 1030 | } |
1030 | line++; | 1031 | line++; |
1031 | } while (true); | 1032 | } while (true); |
1032 | } | 1033 | } |
1033 | recordEnd(c); | 1034 | recordEnd(c); |
1034 | return true; | 1035 | return true; |
1035 | } | 1036 | } |
1036 | 1037 | ||
1037 | QString tabString(int pos, int tabChars) { | 1038 | QString tabString(int pos, int tabChars) { |
1038 | QString s; | 1039 | QString s; |
1039 | while (pos >= tabChars) { | 1040 | while (pos >= tabChars) { |
1040 | s += '\t'; | 1041 | s += '\t'; |
1041 | pos -= tabChars; | 1042 | pos -= tabChars; |
1042 | } | 1043 | } |
1043 | while (pos > 0) { | 1044 | while (pos > 0) { |
1044 | s += ' '; | 1045 | s += ' '; |
1045 | pos--; | 1046 | pos--; |
1046 | } | 1047 | } |
1047 | return s; | 1048 | return s; |
1048 | } | 1049 | } |
1049 | 1050 | ||
1050 | void KateDocument::newLine(VConfig &c) { | 1051 | void KateDocument::newLine(VConfig &c) { |
1051 | 1052 | ||
1052 | //auto deletion of marked text is done by the view to have a more | 1053 | //auto deletion of marked text is done by the view to have a more |
1053 | // "low level" KateDocument::newLine method | 1054 | // "low level" KateDocument::newLine method |
1054 | recordStart(c, KateActionGroup::ugInsLine); | 1055 | recordStart(c, KateActionGroup::ugInsLine); |
1055 | 1056 | ||
1056 | if (!(c.flags & KateView::cfAutoIndent)) { | 1057 | if (!(c.flags & KateView::cfAutoIndent)) { |
1057 | recordAction(KateAction::newLine,c.cursor); | 1058 | recordAction(KateAction::newLine,c.cursor); |
1058 | c.cursor.y++; | 1059 | c.cursor.y++; |
1059 | c.cursor.x = 0; | 1060 | c.cursor.x = 0; |
1060 | } else { | 1061 | } else { |
1061 | TextLine::Ptr textLine = getTextLine(c.cursor.y); | 1062 | TextLine::Ptr textLine = getTextLine(c.cursor.y); |
1062 | int pos = textLine->firstChar(); | 1063 | int pos = textLine->firstChar(); |
1063 | if (c.cursor.x < pos) c.cursor.x = pos; // place cursor on first char if before | 1064 | if (c.cursor.x < pos) c.cursor.x = pos; // place cursor on first char if before |
1064 | 1065 | ||
1065 | int y = c.cursor.y; | 1066 | int y = c.cursor.y; |
1066 | while ((y > 0) && (pos < 0)) { // search a not empty text line | 1067 | while ((y > 0) && (pos < 0)) { // search a not empty text line |
1067 | textLine = getTextLine(--y); | 1068 | textLine = getTextLine(--y); |
1068 | pos = textLine->firstChar(); | 1069 | pos = textLine->firstChar(); |
1069 | } | 1070 | } |
1070 | recordAction(KateAction::newLine, c.cursor); | 1071 | recordAction(KateAction::newLine, c.cursor); |
1071 | c.cursor.y++; | 1072 | c.cursor.y++; |
1072 | c.cursor.x = 0; | 1073 | c.cursor.x = 0; |
1073 | if (pos > 0) { | 1074 | if (pos > 0) { |
1074 | pos = textLine->cursorX(pos, tabChars); | 1075 | pos = textLine->cursorX(pos, tabChars); |
1075 | // if (getTextLine(c.cursor.y)->length() > 0) { | 1076 | // if (getTextLine(c.cursor.y)->length() > 0) { |
1076 | QString s = tabString(pos, (c.flags & KateView::cfSpaceIndent) ? 0xffffff : tabChars); | 1077 | QString s = tabString(pos, (c.flags & KateView::cfSpaceIndent) ? 0xffffff : tabChars); |
1077 | recordInsert(c.cursor, s); | 1078 | recordInsert(c.cursor, s); |
1078 | pos = s.length(); | 1079 | pos = s.length(); |
1079 | // } | 1080 | // } |
1080 | // recordInsert(c.cursor, QString(textLine->getText(), pos)); | 1081 | // recordInsert(c.cursor, QString(textLine->getText(), pos)); |
1081 | c.cursor.x = pos; | 1082 | c.cursor.x = pos; |
1082 | } | 1083 | } |
1083 | } | 1084 | } |
1084 | 1085 | ||
1085 | recordEnd(c); | 1086 | recordEnd(c); |
1086 | } | 1087 | } |
1087 | 1088 | ||
1088 | void KateDocument::killLine(VConfig &c) { | 1089 | void KateDocument::killLine(VConfig &c) { |
1089 | 1090 | ||
1090 | recordStart(c, KateActionGroup::ugDelLine); | 1091 | recordStart(c, KateActionGroup::ugDelLine); |
1091 | c.cursor.x = 0; | 1092 | c.cursor.x = 0; |
1092 | recordDelete(c.cursor, 0xffffff); | 1093 | recordDelete(c.cursor, 0xffffff); |
1093 | if (c.cursor.y < lastLine()) { | 1094 | if (c.cursor.y < lastLine()) { |
1094 | recordAction(KateAction::killLine, c.cursor); | 1095 | recordAction(KateAction::killLine, c.cursor); |
1095 | } | 1096 | } |
1096 | recordEnd(c); | 1097 | recordEnd(c); |
1097 | } | 1098 | } |
1098 | 1099 | ||
1099 | void KateDocument::backspace(VConfig &c) { | 1100 | void KateDocument::backspace(VConfig &c) { |
1100 | 1101 | ||
1101 | if (c.cursor.x <= 0 && c.cursor.y <= 0) return; | 1102 | if (c.cursor.x <= 0 && c.cursor.y <= 0) return; |
1102 | 1103 | ||
1103 | if (c.cursor.x > 0) { | 1104 | if (c.cursor.x > 0) { |
1104 | recordStart(c, KateActionGroup::ugDelChar); | 1105 | recordStart(c, KateActionGroup::ugDelChar); |
1105 | if (!(c.flags & KateView::cfBackspaceIndents)) { | 1106 | if (!(c.flags & KateView::cfBackspaceIndents)) { |
1106 | // ordinary backspace | 1107 | // ordinary backspace |
1107 | c.cursor.x--; | 1108 | c.cursor.x--; |
1108 | recordDelete(c.cursor, 1); | 1109 | recordDelete(c.cursor, 1); |
1109 | } else { | 1110 | } else { |
1110 | // backspace indents: erase to next indent position | 1111 | // backspace indents: erase to next indent position |
1111 | int l = 1; // del one char | 1112 | int l = 1; // del one char |
1112 | 1113 | ||
1113 | TextLine::Ptr textLine = getTextLine(c.cursor.y); | 1114 | TextLine::Ptr textLine = getTextLine(c.cursor.y); |
1114 | int pos = textLine->firstChar(); | 1115 | int pos = textLine->firstChar(); |
1115 | if (pos < 0 || pos >= c.cursor.x) { | 1116 | if (pos < 0 || pos >= c.cursor.x) { |
1116 | // only spaces on left side of cursor | 1117 | // only spaces on left side of cursor |
1117 | // search a line with less spaces | 1118 | // search a line with less spaces |
1118 | int y = c.cursor.y; | 1119 | int y = c.cursor.y; |
1119 | while (y > 0) { | 1120 | while (y > 0) { |
1120 | textLine = getTextLine(--y); | 1121 | textLine = getTextLine(--y); |
1121 | pos = textLine->firstChar(); | 1122 | pos = textLine->firstChar(); |
1122 | if (pos >= 0 && pos < c.cursor.x) { | 1123 | if (pos >= 0 && pos < c.cursor.x) { |
1123 | l = c.cursor.x - pos; // del more chars | 1124 | l = c.cursor.x - pos; // del more chars |
1124 | break; | 1125 | break; |
1125 | } | 1126 | } |
1126 | } | 1127 | } |
1127 | } | 1128 | } |
1128 | // break effectively jumps here | 1129 | // break effectively jumps here |
1129 | c.cursor.x -= l; | 1130 | c.cursor.x -= l; |
1130 | recordDelete(c.cursor, l); | 1131 | recordDelete(c.cursor, l); |
1131 | } | 1132 | } |
1132 | } else { | 1133 | } else { |
1133 | // c.cursor.x == 0: wrap to previous line | 1134 | // c.cursor.x == 0: wrap to previous line |
1134 | recordStart(c, KateActionGroup::ugDelLine); | 1135 | recordStart(c, KateActionGroup::ugDelLine); |
1135 | c.cursor.y--; | 1136 | c.cursor.y--; |
1136 | c.cursor.x = getTextLine(c.cursor.y)->length(); | 1137 | c.cursor.x = getTextLine(c.cursor.y)->length(); |
1137 | recordAction(KateAction::delLine,c.cursor); | 1138 | recordAction(KateAction::delLine,c.cursor); |
1138 | } | 1139 | } |
1139 | recordEnd(c); | 1140 | recordEnd(c); |
1140 | } | 1141 | } |
1141 | 1142 | ||
1142 | 1143 | ||
1143 | void KateDocument::del(VConfig &c) { | 1144 | void KateDocument::del(VConfig &c) { |
1144 | TextLine::Ptr textLine = getTextLine(c.cursor.y); | 1145 | TextLine::Ptr textLine = getTextLine(c.cursor.y); |
1145 | int len = (c.flags & KateView::cfRemoveSpaces) ? textLine->lastChar() : textLine->length(); | 1146 | int len = (c.flags & KateView::cfRemoveSpaces) ? textLine->lastChar() : textLine->length(); |
1146 | if (c.cursor.x < len/*getTextLine(c.cursor.y)->length()*/) { | 1147 | if (c.cursor.x < len/*getTextLine(c.cursor.y)->length()*/) { |
1147 | // delete one character | 1148 | // delete one character |
1148 | recordStart(c, KateActionGroup::ugDelChar); | 1149 | recordStart(c, KateActionGroup::ugDelChar); |
1149 | recordDelete(c.cursor, 1); | 1150 | recordDelete(c.cursor, 1); |
1150 | recordEnd(c); | 1151 | recordEnd(c); |
1151 | } else { | 1152 | } else { |
1152 | if (c.cursor.y < lastLine()) { | 1153 | if (c.cursor.y < lastLine()) { |
1153 | // wrap next line to this line | 1154 | // wrap next line to this line |
1154 | textLine->truncate(c.cursor.x); // truncate spaces | 1155 | textLine->truncate(c.cursor.x); // truncate spaces |
1155 | recordStart(c, KateActionGroup::ugDelLine); | 1156 | recordStart(c, KateActionGroup::ugDelLine); |
1156 | recordAction(KateAction::delLine,c.cursor); | 1157 | recordAction(KateAction::delLine,c.cursor); |
1157 | recordEnd(c); | 1158 | recordEnd(c); |
1158 | } | 1159 | } |
1159 | } | 1160 | } |
1160 | } | 1161 | } |
1161 | 1162 | ||
1162 | void KateDocument::clear() { | 1163 | void KateDocument::clear() { |
1163 | PointStruc cursor; | 1164 | PointStruc cursor; |
1164 | KateView *view; | 1165 | KateView *view; |
1165 | 1166 | ||
1166 | setPseudoModal(0L); | 1167 | setPseudoModal(0L); |
1167 | cursor.x = cursor.y = 0; | 1168 | cursor.x = cursor.y = 0; |
1168 | for (view = views.first(); view != 0L; view = views.next() ) { | 1169 | for (view = views.first(); view != 0L; view = views.next() ) { |
1169 | view->updateCursor(cursor); | 1170 | view->updateCursor(cursor); |
1170 | view->tagAll(); | 1171 | view->tagAll(); |
1171 | } | 1172 | } |
1172 | 1173 | ||
1173 | eolMode = KateDocument::eolUnix; | 1174 | eolMode = KateDocument::eolUnix; |
1174 | 1175 | ||
1175 | buffer->clear(); | 1176 | buffer->clear(); |
1176 | longestLine = buffer->line(0); | 1177 | longestLine = buffer->line(0); |
1177 | 1178 | ||
1178 | maxLength = 0; | 1179 | maxLength = 0; |
1179 | 1180 | ||
1180 | select.x = -1; | 1181 | select.x = -1; |
1181 | 1182 | ||
1182 | selectStart = 0xffffff; | 1183 | selectStart = 0xffffff; |
1183 | selectEnd = 0; | 1184 | selectEnd = 0; |
1184 | oldMarkState = false; | 1185 | oldMarkState = false; |
1185 | 1186 | ||
1186 | setModified(false); | 1187 | setModified(false); |
1187 | 1188 | ||
1188 | undoList.clear(); | 1189 | undoList.clear(); |
1189 | currentUndo = 0; | 1190 | currentUndo = 0; |
1190 | newUndo(); | 1191 | newUndo(); |
1191 | } | 1192 | } |
1192 | 1193 | ||
1193 | void KateDocument::cut(VConfig &c) { | 1194 | void KateDocument::cut(VConfig &c) { |
1194 | 1195 | ||
1195 | if (selectEnd < selectStart) return; | 1196 | if (selectEnd < selectStart) return; |
1196 | 1197 | ||
1197 | copy(c.flags); | 1198 | copy(c.flags); |
1198 | delMarkedText(c); | 1199 | delMarkedText(c); |
@@ -1414,1026 +1415,1026 @@ void KateDocument::selectTo(VConfig &c, PointStruc &cursor, int cXPos) { | |||
1414 | select = cursor; | 1415 | select = cursor; |
1415 | optimizeSelection(); | 1416 | optimizeSelection(); |
1416 | emit selectionChanged(); | 1417 | emit selectionChanged(); |
1417 | } | 1418 | } |
1418 | 1419 | ||
1419 | 1420 | ||
1420 | void KateDocument::selectAll() { | 1421 | void KateDocument::selectAll() { |
1421 | int z; | 1422 | int z; |
1422 | TextLine::Ptr textLine; | 1423 | TextLine::Ptr textLine; |
1423 | 1424 | ||
1424 | select.x = -1; | 1425 | select.x = -1; |
1425 | 1426 | ||
1426 | // if (selectStart != 0 || selectEnd != lastLine()) recordReset(); | 1427 | // if (selectStart != 0 || selectEnd != lastLine()) recordReset(); |
1427 | 1428 | ||
1428 | selectStart = 0; | 1429 | selectStart = 0; |
1429 | selectEnd = lastLine(); | 1430 | selectEnd = lastLine(); |
1430 | 1431 | ||
1431 | tagLines(selectStart,selectEnd); | 1432 | tagLines(selectStart,selectEnd); |
1432 | 1433 | ||
1433 | for (z = selectStart; z < selectEnd; z++) { | 1434 | for (z = selectStart; z < selectEnd; z++) { |
1434 | textLine = getTextLine(z); | 1435 | textLine = getTextLine(z); |
1435 | textLine->selectEol(true,0); | 1436 | textLine->selectEol(true,0); |
1436 | } | 1437 | } |
1437 | textLine = getTextLine(z); | 1438 | textLine = getTextLine(z); |
1438 | textLine->select(true,0,textLine->length()); | 1439 | textLine->select(true,0,textLine->length()); |
1439 | emit selectionChanged(); | 1440 | emit selectionChanged(); |
1440 | } | 1441 | } |
1441 | 1442 | ||
1442 | void KateDocument::deselectAll() { | 1443 | void KateDocument::deselectAll() { |
1443 | select.x = -1; | 1444 | select.x = -1; |
1444 | if (selectEnd < selectStart) return; | 1445 | if (selectEnd < selectStart) return; |
1445 | 1446 | ||
1446 | // recordReset(); | 1447 | // recordReset(); |
1447 | 1448 | ||
1448 | tagLines(selectStart,selectEnd); | 1449 | tagLines(selectStart,selectEnd); |
1449 | 1450 | ||
1450 | for (int z = selectStart; z <= selectEnd; z++) { | 1451 | for (int z = selectStart; z <= selectEnd; z++) { |
1451 | TextLine::Ptr textLine = getTextLine(z); | 1452 | TextLine::Ptr textLine = getTextLine(z); |
1452 | textLine->selectEol(false,0); | 1453 | textLine->selectEol(false,0); |
1453 | } | 1454 | } |
1454 | selectStart = 0xffffff; | 1455 | selectStart = 0xffffff; |
1455 | selectEnd = 0; | 1456 | selectEnd = 0; |
1456 | emit selectionChanged(); | 1457 | emit selectionChanged(); |
1457 | } | 1458 | } |
1458 | 1459 | ||
1459 | void KateDocument::invertSelection() { | 1460 | void KateDocument::invertSelection() { |
1460 | TextLine::Ptr textLine; | 1461 | TextLine::Ptr textLine; |
1461 | 1462 | ||
1462 | select.x = -1; | 1463 | select.x = -1; |
1463 | 1464 | ||
1464 | // if (selectStart != 0 || selectEnd != lastLine()) recordReset(); | 1465 | // if (selectStart != 0 || selectEnd != lastLine()) recordReset(); |
1465 | 1466 | ||
1466 | selectStart = 0; | 1467 | selectStart = 0; |
1467 | selectEnd = lastLine(); | 1468 | selectEnd = lastLine(); |
1468 | 1469 | ||
1469 | tagLines(selectStart,selectEnd); | 1470 | tagLines(selectStart,selectEnd); |
1470 | 1471 | ||
1471 | for (int z = selectStart; z < selectEnd; z++) { | 1472 | for (int z = selectStart; z < selectEnd; z++) { |
1472 | textLine = getTextLine(z); | 1473 | textLine = getTextLine(z); |
1473 | textLine->toggleSelectEol(0); | 1474 | textLine->toggleSelectEol(0); |
1474 | } | 1475 | } |
1475 | textLine = getTextLine(selectEnd); | 1476 | textLine = getTextLine(selectEnd); |
1476 | textLine->toggleSelect(0,textLine->length()); | 1477 | textLine->toggleSelect(0,textLine->length()); |
1477 | optimizeSelection(); | 1478 | optimizeSelection(); |
1478 | emit selectionChanged(); | 1479 | emit selectionChanged(); |
1479 | } | 1480 | } |
1480 | 1481 | ||
1481 | void KateDocument::selectWord(PointStruc &cursor, int flags) { | 1482 | void KateDocument::selectWord(PointStruc &cursor, int flags) { |
1482 | int start, end, len; | 1483 | int start, end, len; |
1483 | 1484 | ||
1484 | TextLine::Ptr textLine = getTextLine(cursor.y); | 1485 | TextLine::Ptr textLine = getTextLine(cursor.y); |
1485 | len = textLine->length(); | 1486 | len = textLine->length(); |
1486 | start = end = cursor.x; | 1487 | start = end = cursor.x; |
1487 | while (start > 0 && m_highlight->isInWord(textLine->getChar(start - 1))) start--; | 1488 | while (start > 0 && m_highlight->isInWord(textLine->getChar(start - 1))) start--; |
1488 | while (end < len && m_highlight->isInWord(textLine->getChar(end))) end++; | 1489 | while (end < len && m_highlight->isInWord(textLine->getChar(end))) end++; |
1489 | if (end <= start) return; | 1490 | if (end <= start) return; |
1490 | if (!(flags & KateView::cfKeepSelection)) deselectAll(); | 1491 | if (!(flags & KateView::cfKeepSelection)) deselectAll(); |
1491 | // else recordReset(); | 1492 | // else recordReset(); |
1492 | 1493 | ||
1493 | textLine->select(true, start, end); | 1494 | textLine->select(true, start, end); |
1494 | 1495 | ||
1495 | anchor.x = start; | 1496 | anchor.x = start; |
1496 | select.x = end; | 1497 | select.x = end; |
1497 | anchor.y = select.y = cursor.y; | 1498 | anchor.y = select.y = cursor.y; |
1498 | tagLines(cursor.y, cursor.y); | 1499 | tagLines(cursor.y, cursor.y); |
1499 | if (cursor.y < selectStart) selectStart = cursor.y; | 1500 | if (cursor.y < selectStart) selectStart = cursor.y; |
1500 | if (cursor.y > selectEnd) selectEnd = cursor.y; | 1501 | if (cursor.y > selectEnd) selectEnd = cursor.y; |
1501 | emit selectionChanged(); | 1502 | emit selectionChanged(); |
1502 | } | 1503 | } |
1503 | 1504 | ||
1504 | void KateDocument::selectLength(PointStruc &cursor, int length, int flags) { | 1505 | void KateDocument::selectLength(PointStruc &cursor, int length, int flags) { |
1505 | int start, end; | 1506 | int start, end; |
1506 | 1507 | ||
1507 | TextLine::Ptr textLine = getTextLine(cursor.y); | 1508 | TextLine::Ptr textLine = getTextLine(cursor.y); |
1508 | start = cursor.x; | 1509 | start = cursor.x; |
1509 | end = start + length; | 1510 | end = start + length; |
1510 | if (end <= start) return; | 1511 | if (end <= start) return; |
1511 | if (!(flags & KateView::cfKeepSelection)) deselectAll(); | 1512 | if (!(flags & KateView::cfKeepSelection)) deselectAll(); |
1512 | 1513 | ||
1513 | textLine->select(true, start, end); | 1514 | textLine->select(true, start, end); |
1514 | 1515 | ||
1515 | anchor.x = start; | 1516 | anchor.x = start; |
1516 | select.x = end; | 1517 | select.x = end; |
1517 | anchor.y = select.y = cursor.y; | 1518 | anchor.y = select.y = cursor.y; |
1518 | tagLines(cursor.y, cursor.y); | 1519 | tagLines(cursor.y, cursor.y); |
1519 | if (cursor.y < selectStart) selectStart = cursor.y; | 1520 | if (cursor.y < selectStart) selectStart = cursor.y; |
1520 | if (cursor.y > selectEnd) selectEnd = cursor.y; | 1521 | if (cursor.y > selectEnd) selectEnd = cursor.y; |
1521 | emit selectionChanged(); | 1522 | emit selectionChanged(); |
1522 | } | 1523 | } |
1523 | 1524 | ||
1524 | void KateDocument::doIndent(VConfig &c, int change) { | 1525 | void KateDocument::doIndent(VConfig &c, int change) { |
1525 | 1526 | ||
1526 | c.cursor.x = 0; | 1527 | c.cursor.x = 0; |
1527 | 1528 | ||
1528 | recordStart(c, (change < 0) ? KateActionGroup::ugUnindent | 1529 | recordStart(c, (change < 0) ? KateActionGroup::ugUnindent |
1529 | : KateActionGroup::ugIndent); | 1530 | : KateActionGroup::ugIndent); |
1530 | 1531 | ||
1531 | if (selectEnd < selectStart) { | 1532 | if (selectEnd < selectStart) { |
1532 | // single line | 1533 | // single line |
1533 | optimizeLeadingSpace(c.cursor.y, c.flags, change); | 1534 | optimizeLeadingSpace(c.cursor.y, c.flags, change); |
1534 | } else { | 1535 | } else { |
1535 | // entire selection | 1536 | // entire selection |
1536 | TextLine::Ptr textLine; | 1537 | TextLine::Ptr textLine; |
1537 | int line, z; | 1538 | int line, z; |
1538 | QChar ch; | 1539 | QChar ch; |
1539 | 1540 | ||
1540 | if (c.flags & KateView::cfKeepIndentProfile && change < 0) { | 1541 | if (c.flags & KateView::cfKeepIndentProfile && change < 0) { |
1541 | // unindent so that the existing indent profile doesn´t get screwed | 1542 | // unindent so that the existing indent profile doesn´t get screwed |
1542 | // if any line we may unindent is already full left, don't do anything | 1543 | // if any line we may unindent is already full left, don't do anything |
1543 | for (line = selectStart; line <= selectEnd; line++) { | 1544 | for (line = selectStart; line <= selectEnd; line++) { |
1544 | textLine = getTextLine(line); | 1545 | textLine = getTextLine(line); |
1545 | if (textLine->isSelected() || textLine->numSelected()) { | 1546 | if (textLine->isSelected() || textLine->numSelected()) { |
1546 | for (z = 0; z < tabChars; z++) { | 1547 | for (z = 0; z < tabChars; z++) { |
1547 | ch = textLine->getChar(z); | 1548 | ch = textLine->getChar(z); |
1548 | if (ch == '\t') break; | 1549 | if (ch == '\t') break; |
1549 | if (ch != ' ') { | 1550 | if (ch != ' ') { |
1550 | change = 0; | 1551 | change = 0; |
1551 | goto jumpOut; | 1552 | goto jumpOut; |
1552 | } | 1553 | } |
1553 | } | 1554 | } |
1554 | } | 1555 | } |
1555 | } | 1556 | } |
1556 | jumpOut:; | 1557 | jumpOut:; |
1557 | } | 1558 | } |
1558 | 1559 | ||
1559 | for (line = selectStart; line <= selectEnd; line++) { | 1560 | for (line = selectStart; line <= selectEnd; line++) { |
1560 | textLine = getTextLine(line); | 1561 | textLine = getTextLine(line); |
1561 | if (textLine->isSelected() || textLine->numSelected()) { | 1562 | if (textLine->isSelected() || textLine->numSelected()) { |
1562 | optimizeLeadingSpace(line, c.flags, change); | 1563 | optimizeLeadingSpace(line, c.flags, change); |
1563 | } | 1564 | } |
1564 | } | 1565 | } |
1565 | } | 1566 | } |
1566 | // recordEnd now removes empty undo records | 1567 | // recordEnd now removes empty undo records |
1567 | recordEnd(c.view, c.cursor, c.flags | KateView::cfPersistent); | 1568 | recordEnd(c.view, c.cursor, c.flags | KateView::cfPersistent); |
1568 | } | 1569 | } |
1569 | 1570 | ||
1570 | /* | 1571 | /* |
1571 | Optimize the leading whitespace for a single line. | 1572 | Optimize the leading whitespace for a single line. |
1572 | If change is > 0, it adds indentation units (tabChars) | 1573 | If change is > 0, it adds indentation units (tabChars) |
1573 | if change is == 0, it only optimizes | 1574 | if change is == 0, it only optimizes |
1574 | If change is < 0, it removes indentation units | 1575 | If change is < 0, it removes indentation units |
1575 | This will be used to indent, unindent, and optimal-fill a line. | 1576 | This will be used to indent, unindent, and optimal-fill a line. |
1576 | If excess space is removed depends on the flag cfKeepExtraSpaces | 1577 | If excess space is removed depends on the flag cfKeepExtraSpaces |
1577 | which has to be set by the user | 1578 | which has to be set by the user |
1578 | */ | 1579 | */ |
1579 | void KateDocument::optimizeLeadingSpace(int line, int flags, int change) { | 1580 | void KateDocument::optimizeLeadingSpace(int line, int flags, int change) { |
1580 | int len; | 1581 | int len; |
1581 | int chars, space, okLen; | 1582 | int chars, space, okLen; |
1582 | QChar ch; | 1583 | QChar ch; |
1583 | int extra; | 1584 | int extra; |
1584 | QString s; | 1585 | QString s; |
1585 | PointStruc cursor; | 1586 | PointStruc cursor; |
1586 | 1587 | ||
1587 | TextLine::Ptr textLine = getTextLine(line); | 1588 | TextLine::Ptr textLine = getTextLine(line); |
1588 | len = textLine->length(); | 1589 | len = textLine->length(); |
1589 | space = 0; // length of space at the beginning of the textline | 1590 | space = 0; // length of space at the beginning of the textline |
1590 | okLen = 0; // length of space which does not have to be replaced | 1591 | okLen = 0; // length of space which does not have to be replaced |
1591 | for (chars = 0; chars < len; chars++) { | 1592 | for (chars = 0; chars < len; chars++) { |
1592 | ch = textLine->getChar(chars); | 1593 | ch = textLine->getChar(chars); |
1593 | if (ch == ' ') { | 1594 | if (ch == ' ') { |
1594 | space++; | 1595 | space++; |
1595 | if (flags & KateView::cfSpaceIndent && okLen == chars) okLen++; | 1596 | if (flags & KateView::cfSpaceIndent && okLen == chars) okLen++; |
1596 | } else if (ch == '\t') { | 1597 | } else if (ch == '\t') { |
1597 | space += tabChars - space % tabChars; | 1598 | space += tabChars - space % tabChars; |
1598 | if (!(flags & KateView::cfSpaceIndent) && okLen == chars) okLen++; | 1599 | if (!(flags & KateView::cfSpaceIndent) && okLen == chars) okLen++; |
1599 | } else break; | 1600 | } else break; |
1600 | } | 1601 | } |
1601 | 1602 | ||
1602 | space += change*tabChars; // modify space width | 1603 | space += change*tabChars; // modify space width |
1603 | // if line contains only spaces it will be cleared | 1604 | // if line contains only spaces it will be cleared |
1604 | if (space < 0 || chars == len) space = 0; | 1605 | if (space < 0 || chars == len) space = 0; |
1605 | 1606 | ||
1606 | extra = space % tabChars; // extra spaces which don´t fit the indentation pattern | 1607 | extra = space % tabChars; // extra spaces which don´t fit the indentation pattern |
1607 | if (flags & KateView::cfKeepExtraSpaces) chars -= extra; | 1608 | if (flags & KateView::cfKeepExtraSpaces) chars -= extra; |
1608 | 1609 | ||
1609 | if (flags & KateView::cfSpaceIndent) { | 1610 | if (flags & KateView::cfSpaceIndent) { |
1610 | space -= extra; | 1611 | space -= extra; |
1611 | ch = ' '; | 1612 | ch = ' '; |
1612 | } else { | 1613 | } else { |
1613 | space /= tabChars; | 1614 | space /= tabChars; |
1614 | ch = '\t'; | 1615 | ch = '\t'; |
1615 | } | 1616 | } |
1616 | 1617 | ||
1617 | // don´t replace chars which are already ok | 1618 | // don´t replace chars which are already ok |
1618 | cursor.x = QMIN(okLen, QMIN(chars, space)); | 1619 | cursor.x = QMIN(okLen, QMIN(chars, space)); |
1619 | chars -= cursor.x; | 1620 | chars -= cursor.x; |
1620 | space -= cursor.x; | 1621 | space -= cursor.x; |
1621 | if (chars == 0 && space == 0) return; //nothing to do | 1622 | if (chars == 0 && space == 0) return; //nothing to do |
1622 | 1623 | ||
1623 | s.fill(ch, space); | 1624 | s.fill(ch, space); |
1624 | 1625 | ||
1625 | //printf("chars %d insert %d cursor.x %d\n", chars, insert, cursor.x); | 1626 | //printf("chars %d insert %d cursor.x %d\n", chars, insert, cursor.x); |
1626 | cursor.y = line; | 1627 | cursor.y = line; |
1627 | recordReplace(cursor, chars, s); | 1628 | recordReplace(cursor, chars, s); |
1628 | } | 1629 | } |
1629 | 1630 | ||
1630 | void KateDocument::doComment(VConfig &c, int change) | 1631 | void KateDocument::doComment(VConfig &c, int change) |
1631 | { | 1632 | { |
1632 | c.flags |=KateView:: cfPersistent; | 1633 | c.flags |=KateView:: cfPersistent; |
1633 | 1634 | ||
1634 | recordStart(c, (change < 0) ? KateActionGroup::ugUncomment | 1635 | recordStart(c, (change < 0) ? KateActionGroup::ugUncomment |
1635 | : KateActionGroup::ugComment); | 1636 | : KateActionGroup::ugComment); |
1636 | 1637 | ||
1637 | QString startComment = m_highlight->getCommentStart(); | 1638 | QString startComment = m_highlight->getCommentStart(); |
1638 | QString startLineComment = m_highlight->getCommentSingleLineStart(); | 1639 | QString startLineComment = m_highlight->getCommentSingleLineStart(); |
1639 | QString endComment = m_highlight->getCommentEnd(); | 1640 | QString endComment = m_highlight->getCommentEnd(); |
1640 | 1641 | ||
1641 | int startCommentLen = startComment.length(); | 1642 | int startCommentLen = startComment.length(); |
1642 | int startLineCommentLen = startLineComment.length(); | 1643 | int startLineCommentLen = startLineComment.length(); |
1643 | int endCommentLen = endComment.length(); | 1644 | int endCommentLen = endComment.length(); |
1644 | 1645 | ||
1645 | if (change > 0) | 1646 | if (change > 0) |
1646 | { | 1647 | { |
1647 | if ( !hasMarkedText() ) | 1648 | if ( !hasMarkedText() ) |
1648 | { | 1649 | { |
1649 | if (startLineComment != "") | 1650 | if (startLineComment != "") |
1650 | { | 1651 | { |
1651 | // Add a start comment mark | 1652 | // Add a start comment mark |
1652 | c.cursor.x = 0; | 1653 | c.cursor.x = 0; |
1653 | recordReplace(c.cursor, 0, startLineComment); | 1654 | recordReplace(c.cursor, 0, startLineComment); |
1654 | } | 1655 | } |
1655 | else if ((startComment != "") && (endComment != "")) | 1656 | else if ((startComment != "") && (endComment != "")) |
1656 | { | 1657 | { |
1657 | // Add a start comment mark | 1658 | // Add a start comment mark |
1658 | c.cursor.x = 0; | 1659 | c.cursor.x = 0; |
1659 | recordReplace(c.cursor, 0, startComment); | 1660 | recordReplace(c.cursor, 0, startComment); |
1660 | 1661 | ||
1661 | // Add an end comment mark | 1662 | // Add an end comment mark |
1662 | TextLine* textline = getTextLine(c.cursor.y); | 1663 | TextLine* textline = getTextLine(c.cursor.y); |
1663 | c.cursor.x = textline->length(); | 1664 | c.cursor.x = textline->length(); |
1664 | recordReplace(c.cursor, 0, endComment); | 1665 | recordReplace(c.cursor, 0, endComment); |
1665 | c.cursor.x = 0; | 1666 | c.cursor.x = 0; |
1666 | } | 1667 | } |
1667 | } | 1668 | } |
1668 | else if ((startComment != "") && (endComment != "")) | 1669 | else if ((startComment != "") && (endComment != "")) |
1669 | { | 1670 | { |
1670 | QString marked (c.view->markedText ()); | 1671 | QString marked (c.view->markedText ()); |
1671 | int preDeleteLine = -1, preDeleteCol = -1; | 1672 | int preDeleteLine = -1, preDeleteCol = -1; |
1672 | c.view->getCursorPosition (&preDeleteLine, &preDeleteCol); | 1673 | c.view->getCursorPosition (&preDeleteLine, &preDeleteCol); |
1673 | 1674 | ||
1674 | if (marked.length() > 0) | 1675 | if (marked.length() > 0) |
1675 | c.view->keyDelete (); | 1676 | c.view->keyDelete (); |
1676 | 1677 | ||
1677 | int line = -1, col = -1; | 1678 | int line = -1, col = -1; |
1678 | c.view->getCursorPosition (&line, &col); | 1679 | c.view->getCursorPosition (&line, &col); |
1679 | 1680 | ||
1680 | c.view->insertText (startComment + marked + endComment); | 1681 | c.view->insertText (startComment + marked + endComment); |
1681 | } | 1682 | } |
1682 | } | 1683 | } |
1683 | else | 1684 | else |
1684 | { | 1685 | { |
1685 | if ( !hasMarkedText() ) | 1686 | if ( !hasMarkedText() ) |
1686 | { | 1687 | { |
1687 | TextLine* textline = getTextLine(c.cursor.y); | 1688 | TextLine* textline = getTextLine(c.cursor.y); |
1688 | 1689 | ||
1689 | if(textline->startingWith(startLineComment)) | 1690 | if(textline->startingWith(startLineComment)) |
1690 | { | 1691 | { |
1691 | // Remove start comment mark | 1692 | // Remove start comment mark |
1692 | c.cursor.x = 0; | 1693 | c.cursor.x = 0; |
1693 | recordReplace(c.cursor, startLineCommentLen, ""); | 1694 | recordReplace(c.cursor, startLineCommentLen, ""); |
1694 | } | 1695 | } |
1695 | else if (textline->startingWith(startComment) && textline->endingWith(endComment)) | 1696 | else if (textline->startingWith(startComment) && textline->endingWith(endComment)) |
1696 | { | 1697 | { |
1697 | // Remove start comment mark | 1698 | // Remove start comment mark |
1698 | c.cursor.x = 0; | 1699 | c.cursor.x = 0; |
1699 | recordReplace(c.cursor, startCommentLen, ""); | 1700 | recordReplace(c.cursor, startCommentLen, ""); |
1700 | 1701 | ||
1701 | // Remove end comment mark | 1702 | // Remove end comment mark |
1702 | if(endComment != "") | 1703 | if(endComment != "") |
1703 | { | 1704 | { |
1704 | c.cursor.x = textline->length() - endCommentLen; | 1705 | c.cursor.x = textline->length() - endCommentLen; |
1705 | recordReplace(c.cursor, endCommentLen, ""); | 1706 | recordReplace(c.cursor, endCommentLen, ""); |
1706 | c.cursor.x = 0; | 1707 | c.cursor.x = 0; |
1707 | } | 1708 | } |
1708 | } | 1709 | } |
1709 | } | 1710 | } |
1710 | else | 1711 | else |
1711 | { | 1712 | { |
1712 | QString marked (c.view->markedText ()); | 1713 | QString marked (c.view->markedText ()); |
1713 | int preDeleteLine = -1, preDeleteCol = -1; | 1714 | int preDeleteLine = -1, preDeleteCol = -1; |
1714 | c.view->getCursorPosition (&preDeleteLine, &preDeleteCol); | 1715 | c.view->getCursorPosition (&preDeleteLine, &preDeleteCol); |
1715 | 1716 | ||
1716 | int start = marked.find (startComment); | 1717 | int start = marked.find (startComment); |
1717 | int end = marked.findRev (endComment); | 1718 | int end = marked.findRev (endComment); |
1718 | 1719 | ||
1719 | if ((start > -1) && (end > -1)) | 1720 | if ((start > -1) && (end > -1)) |
1720 | { | 1721 | { |
1721 | marked.remove (start, startCommentLen); | 1722 | marked.remove (start, startCommentLen); |
1722 | marked.remove (end-startCommentLen, endCommentLen); | 1723 | marked.remove (end-startCommentLen, endCommentLen); |
1723 | 1724 | ||
1724 | c.view->keyDelete (); | 1725 | c.view->keyDelete (); |
1725 | 1726 | ||
1726 | int line = -1, col = -1; | 1727 | int line = -1, col = -1; |
1727 | c.view->getCursorPosition (&line, &col); | 1728 | c.view->getCursorPosition (&line, &col); |
1728 | c.view->insertText (marked); | 1729 | c.view->insertText (marked); |
1729 | } | 1730 | } |
1730 | } | 1731 | } |
1731 | } | 1732 | } |
1732 | 1733 | ||
1733 | recordEnd(c.view, c.cursor, c.flags | KateView::cfPersistent); | 1734 | recordEnd(c.view, c.cursor, c.flags | KateView::cfPersistent); |
1734 | } | 1735 | } |
1735 | 1736 | ||
1736 | 1737 | ||
1737 | QString KateDocument::text() const | 1738 | QString KateDocument::text() const |
1738 | { | 1739 | { |
1739 | QString s; | 1740 | QString s; |
1740 | 1741 | ||
1741 | for (int i=0; i < buffer->count(); i++) | 1742 | for (int i=0; i < buffer->count(); i++) |
1742 | { | 1743 | { |
1743 | TextLine::Ptr textLine = buffer->line(i); | 1744 | TextLine::Ptr textLine = buffer->line(i); |
1744 | s.insert(s.length(), textLine->getText(), textLine->length()); | 1745 | s.insert(s.length(), textLine->getText(), textLine->length()); |
1745 | if ( (i < (buffer->count()-1)) ) | 1746 | if ( (i < (buffer->count()-1)) ) |
1746 | s.append('\n'); | 1747 | s.append('\n'); |
1747 | } | 1748 | } |
1748 | 1749 | ||
1749 | return s; | 1750 | return s; |
1750 | } | 1751 | } |
1751 | 1752 | ||
1752 | QString KateDocument::getWord(PointStruc &cursor) { | 1753 | QString KateDocument::getWord(PointStruc &cursor) { |
1753 | int start, end, len; | 1754 | int start, end, len; |
1754 | 1755 | ||
1755 | TextLine::Ptr textLine = getTextLine(cursor.y); | 1756 | TextLine::Ptr textLine = getTextLine(cursor.y); |
1756 | len = textLine->length(); | 1757 | len = textLine->length(); |
1757 | start = end = cursor.x; | 1758 | start = end = cursor.x; |
1758 | while (start > 0 && m_highlight->isInWord(textLine->getChar(start - 1))) start--; | 1759 | while (start > 0 && m_highlight->isInWord(textLine->getChar(start - 1))) start--; |
1759 | while (end < len && m_highlight->isInWord(textLine->getChar(end))) end++; | 1760 | while (end < len && m_highlight->isInWord(textLine->getChar(end))) end++; |
1760 | len = end - start; | 1761 | len = end - start; |
1761 | return QString(&textLine->getText()[start], len); | 1762 | return QString(&textLine->getText()[start], len); |
1762 | } | 1763 | } |
1763 | 1764 | ||
1764 | void KateDocument::setText(const QString &s) { | 1765 | void KateDocument::setText(const QString &s) { |
1765 | int pos; | 1766 | int pos; |
1766 | QChar ch; | 1767 | QChar ch; |
1767 | 1768 | ||
1768 | clear(); | 1769 | clear(); |
1769 | 1770 | ||
1770 | int line=1; | 1771 | int line=1; |
1771 | 1772 | ||
1772 | TextLine::Ptr textLine = buffer->line(0); | 1773 | TextLine::Ptr textLine = buffer->line(0); |
1773 | for (pos = 0; pos <= (int) s.length(); pos++) { | 1774 | for (pos = 0; pos <= (int) s.length(); pos++) { |
1774 | ch = s[pos]; | 1775 | ch = s[pos]; |
1775 | if (ch.isPrint() || ch == '\t') { | 1776 | if (ch.isPrint() || ch == '\t') { |
1776 | textLine->append(&ch, 1); | 1777 | textLine->append(&ch, 1); |
1777 | } else if (ch == '\n') | 1778 | } else if (ch == '\n') |
1778 | { | 1779 | { |
1779 | textLine = new TextLine(); | 1780 | textLine = new TextLine(); |
1780 | buffer->insertLine (line, textLine); | 1781 | buffer->insertLine (line, textLine); |
1781 | line++; | 1782 | line++; |
1782 | } | 1783 | } |
1783 | } | 1784 | } |
1784 | updateLines(); | 1785 | updateLines(); |
1785 | } | 1786 | } |
1786 | 1787 | ||
1787 | 1788 | ||
1788 | QString KateDocument::markedText(int flags) { | 1789 | QString KateDocument::markedText(int flags) { |
1789 | TextLine::Ptr textLine; | 1790 | TextLine::Ptr textLine; |
1790 | int len, z, start, end, i; | 1791 | int len, z, start, end, i; |
1791 | 1792 | ||
1792 | len = 1; | 1793 | len = 1; |
1793 | if (!(flags & KateView::cfVerticalSelect)) { | 1794 | if (!(flags & KateView::cfVerticalSelect)) { |
1794 | for (z = selectStart; z <= selectEnd; z++) { | 1795 | for (z = selectStart; z <= selectEnd; z++) { |
1795 | textLine = getTextLine(z); | 1796 | textLine = getTextLine(z); |
1796 | len += textLine->numSelected(); | 1797 | len += textLine->numSelected(); |
1797 | if (textLine->isSelected()) len++; | 1798 | if (textLine->isSelected()) len++; |
1798 | } | 1799 | } |
1799 | QString s; | 1800 | QString s; |
1800 | len = 0; | 1801 | len = 0; |
1801 | for (z = selectStart; z <= selectEnd; z++) { | 1802 | for (z = selectStart; z <= selectEnd; z++) { |
1802 | textLine = getTextLine(z); | 1803 | textLine = getTextLine(z); |
1803 | end = 0; | 1804 | end = 0; |
1804 | do { | 1805 | do { |
1805 | start = textLine->findUnselected(end); | 1806 | start = textLine->findUnselected(end); |
1806 | end = textLine->findSelected(start); | 1807 | end = textLine->findSelected(start); |
1807 | for (i = start; i < end; i++) { | 1808 | for (i = start; i < end; i++) { |
1808 | s[len] = textLine->getChar(i); | 1809 | s[len] = textLine->getChar(i); |
1809 | len++; | 1810 | len++; |
1810 | } | 1811 | } |
1811 | } while (start < end); | 1812 | } while (start < end); |
1812 | if (textLine->isSelected()) { | 1813 | if (textLine->isSelected()) { |
1813 | s[len] = '\n'; | 1814 | s[len] = '\n'; |
1814 | len++; | 1815 | len++; |
1815 | } | 1816 | } |
1816 | } | 1817 | } |
1817 | // s[len] = '\0'; | 1818 | // s[len] = '\0'; |
1818 | return s; | 1819 | return s; |
1819 | } else { | 1820 | } else { |
1820 | for (z = selectStart; z <= selectEnd; z++) { | 1821 | for (z = selectStart; z <= selectEnd; z++) { |
1821 | textLine = getTextLine(z); | 1822 | textLine = getTextLine(z); |
1822 | len += textLine->numSelected() + 1; | 1823 | len += textLine->numSelected() + 1; |
1823 | } | 1824 | } |
1824 | QString s; | 1825 | QString s; |
1825 | len = 0; | 1826 | len = 0; |
1826 | for (z = selectStart; z <= selectEnd; z++) { | 1827 | for (z = selectStart; z <= selectEnd; z++) { |
1827 | textLine = getTextLine(z); | 1828 | textLine = getTextLine(z); |
1828 | end = 0; | 1829 | end = 0; |
1829 | do { | 1830 | do { |
1830 | start = textLine->findUnselected(end); | 1831 | start = textLine->findUnselected(end); |
1831 | end = textLine->findSelected(start); | 1832 | end = textLine->findSelected(start); |
1832 | for (i = start; i < end; i++) { | 1833 | for (i = start; i < end; i++) { |
1833 | s[len] = textLine->getChar(i); | 1834 | s[len] = textLine->getChar(i); |
1834 | len++; | 1835 | len++; |
1835 | } | 1836 | } |
1836 | } while (start < end); | 1837 | } while (start < end); |
1837 | s[len] = '\n'; | 1838 | s[len] = '\n'; |
1838 | len++; | 1839 | len++; |
1839 | } | 1840 | } |
1840 | // s[len] = '\0'; // the final \0 is not counted in length() | 1841 | // s[len] = '\0'; // the final \0 is not counted in length() |
1841 | return s; | 1842 | return s; |
1842 | } | 1843 | } |
1843 | } | 1844 | } |
1844 | 1845 | ||
1845 | void KateDocument::delMarkedText(VConfig &c/*, bool undo*/) { | 1846 | void KateDocument::delMarkedText(VConfig &c/*, bool undo*/) { |
1846 | int end = 0; | 1847 | int end = 0; |
1847 | 1848 | ||
1848 | if (selectEnd < selectStart) return; | 1849 | if (selectEnd < selectStart) return; |
1849 | 1850 | ||
1850 | // the caller may have already started an undo record for the current action | 1851 | // the caller may have already started an undo record for the current action |
1851 | // if (undo) | 1852 | // if (undo) |
1852 | 1853 | ||
1853 | //auto deletion of the marked text occurs not very often and can therefore | 1854 | //auto deletion of the marked text occurs not very often and can therefore |
1854 | // be recorded separately | 1855 | // be recorded separately |
1855 | recordStart(c, KateActionGroup::ugDelBlock); | 1856 | recordStart(c, KateActionGroup::ugDelBlock); |
1856 | 1857 | ||
1857 | for (c.cursor.y = selectEnd; c.cursor.y >= selectStart; c.cursor.y--) { | 1858 | for (c.cursor.y = selectEnd; c.cursor.y >= selectStart; c.cursor.y--) { |
1858 | TextLine::Ptr textLine = getTextLine(c.cursor.y); | 1859 | TextLine::Ptr textLine = getTextLine(c.cursor.y); |
1859 | 1860 | ||
1860 | c.cursor.x = textLine->length(); | 1861 | c.cursor.x = textLine->length(); |
1861 | do { | 1862 | do { |
1862 | end = textLine->findRevUnselected(c.cursor.x); | 1863 | end = textLine->findRevUnselected(c.cursor.x); |
1863 | if (end == 0) break; | 1864 | if (end == 0) break; |
1864 | c.cursor.x = textLine->findRevSelected(end); | 1865 | c.cursor.x = textLine->findRevSelected(end); |
1865 | recordDelete(c.cursor, end - c.cursor.x); | 1866 | recordDelete(c.cursor, end - c.cursor.x); |
1866 | } while (true); | 1867 | } while (true); |
1867 | end = c.cursor.x; | 1868 | end = c.cursor.x; |
1868 | c.cursor.x = textLine->length(); | 1869 | c.cursor.x = textLine->length(); |
1869 | if (textLine->isSelected()) recordAction(KateAction::delLine,c.cursor); | 1870 | if (textLine->isSelected()) recordAction(KateAction::delLine,c.cursor); |
1870 | } | 1871 | } |
1871 | c.cursor.y++; | 1872 | c.cursor.y++; |
1872 | /*if (end < c.cursor.x)*/ c.cursor.x = end; | 1873 | /*if (end < c.cursor.x)*/ c.cursor.x = end; |
1873 | 1874 | ||
1874 | selectEnd = -1; | 1875 | selectEnd = -1; |
1875 | select.x = -1; | 1876 | select.x = -1; |
1876 | 1877 | ||
1877 | /*if (undo)*/ recordEnd(c); | 1878 | /*if (undo)*/ recordEnd(c); |
1878 | } | 1879 | } |
1879 | 1880 | ||
1880 | void KateDocument::tagLineRange(int line, int x1, int x2) { | 1881 | void KateDocument::tagLineRange(int line, int x1, int x2) { |
1881 | int z; | 1882 | int z; |
1882 | 1883 | ||
1883 | for (z = 0; z < (int) views.count(); z++) { | 1884 | for (z = 0; z < (int) views.count(); z++) { |
1884 | views.at(z)->tagLines(line, line, x1, x2); | 1885 | views.at(z)->tagLines(line, line, x1, x2); |
1885 | } | 1886 | } |
1886 | } | 1887 | } |
1887 | 1888 | ||
1888 | void KateDocument::tagLines(int start, int end) { | 1889 | void KateDocument::tagLines(int start, int end) { |
1889 | int z; | 1890 | int z; |
1890 | 1891 | ||
1891 | for (z = 0; z < (int) views.count(); z++) { | 1892 | for (z = 0; z < (int) views.count(); z++) { |
1892 | views.at(z)->tagLines(start, end, 0, 0xffffff); | 1893 | views.at(z)->tagLines(start, end, 0, 0xffffff); |
1893 | } | 1894 | } |
1894 | } | 1895 | } |
1895 | 1896 | ||
1896 | void KateDocument::tagAll() { | 1897 | void KateDocument::tagAll() { |
1897 | int z; | 1898 | int z; |
1898 | 1899 | ||
1899 | for (z = 0; z < (int) views.count(); z++) { | 1900 | for (z = 0; z < (int) views.count(); z++) { |
1900 | views.at(z)->tagAll(); | 1901 | views.at(z)->tagAll(); |
1901 | } | 1902 | } |
1902 | } | 1903 | } |
1903 | 1904 | ||
1904 | void KateDocument::updateLines(int startLine, int endLine, int flags, int cursorY) { | 1905 | void KateDocument::updateLines(int startLine, int endLine, int flags, int cursorY) { |
1905 | TextLine::Ptr textLine; | 1906 | TextLine::Ptr textLine; |
1906 | int line, last_line; | 1907 | int line, last_line; |
1907 | int ctxNum, endCtx; | 1908 | int ctxNum, endCtx; |
1908 | // kdDebug(13020)<<"******************KateDocument::updateLines Checkpoint 1"<<endl; | 1909 | // kdDebug(13020)<<"******************KateDocument::updateLines Checkpoint 1"<<endl; |
1909 | if (buffer->line(startLine)==0) {kdDebug(13020)<<"********************No buffer for line " << startLine << " found**************"<<endl; return;}; | 1910 | if (buffer->line(startLine)==0) {kdDebug(13020)<<"********************No buffer for line " << startLine << " found**************"<<endl; return;}; |
1910 | // kdDebug(13020)<<"KateDocument::updateLines Checkpoint 2"<<endl; | 1911 | // kdDebug(13020)<<"KateDocument::updateLines Checkpoint 2"<<endl; |
1911 | last_line = lastLine(); | 1912 | last_line = lastLine(); |
1912 | // if (endLine >= last_line) endLine = last_line; | 1913 | // if (endLine >= last_line) endLine = last_line; |
1913 | 1914 | ||
1914 | line = startLine; | 1915 | line = startLine; |
1915 | ctxNum = 0; | 1916 | ctxNum = 0; |
1916 | if (line > 0) ctxNum = getTextLine(line - 1)->getContext(); | 1917 | if (line > 0) ctxNum = getTextLine(line - 1)->getContext(); |
1917 | do { | 1918 | do { |
1918 | // kdDebug(13020)<<QString("**************Working on line: %1").arg(line)<<endl; | 1919 | // kdDebug(13020)<<QString("**************Working on line: %1").arg(line)<<endl; |
1919 | textLine = getTextLine(line); | 1920 | textLine = getTextLine(line); |
1920 | if (textLine==0) kdDebug(13020)<<"****updateLines()>> error textLine==0"<<endl; | 1921 | if (textLine==0) kdDebug(13020)<<"****updateLines()>> error textLine==0"<<endl; |
1921 | if (line <= endLine && line != cursorY) { | 1922 | if (line <= endLine && line != cursorY) { |
1922 | if (flags & KateView::cfRemoveSpaces) textLine->removeSpaces(); | 1923 | if (flags & KateView::cfRemoveSpaces) textLine->removeSpaces(); |
1923 | updateMaxLength(textLine); | 1924 | updateMaxLength(textLine); |
1924 | } | 1925 | } |
1925 | endCtx = textLine->getContext(); | 1926 | endCtx = textLine->getContext(); |
1926 | // qDebug("DOHIGHLIGHT"); | 1927 | // odebug << "DOHIGHLIGHT" << oendl; |
1927 | 1928 | ||
1928 | ctxNum = m_highlight->doHighlight(ctxNum,textLine); | 1929 | ctxNum = m_highlight->doHighlight(ctxNum,textLine); |
1929 | textLine->setContext(ctxNum); | 1930 | textLine->setContext(ctxNum); |
1930 | line++; | 1931 | line++; |
1931 | } while ((buffer->line(line)!=0) && (line <= endLine || endCtx != ctxNum)); | 1932 | } while ((buffer->line(line)!=0) && (line <= endLine || endCtx != ctxNum)); |
1932 | // kdDebug(13020)<<"updateLines :: while loop left"<<endl; | 1933 | // kdDebug(13020)<<"updateLines :: while loop left"<<endl; |
1933 | tagLines(startLine, line - 1); | 1934 | tagLines(startLine, line - 1); |
1934 | } | 1935 | } |
1935 | 1936 | ||
1936 | 1937 | ||
1937 | void KateDocument::updateMaxLength(TextLine::Ptr &textLine) { | 1938 | void KateDocument::updateMaxLength(TextLine::Ptr &textLine) { |
1938 | int len; | 1939 | int len; |
1939 | 1940 | ||
1940 | len = textWidth(textLine,textLine->length()); | 1941 | len = textWidth(textLine,textLine->length()); |
1941 | 1942 | ||
1942 | if (len > maxLength) { | 1943 | if (len > maxLength) { |
1943 | longestLine = textLine; | 1944 | longestLine = textLine; |
1944 | maxLength = len; | 1945 | maxLength = len; |
1945 | newDocGeometry = true; | 1946 | newDocGeometry = true; |
1946 | } else { | 1947 | } else { |
1947 | if (!longestLine || (textLine == longestLine && len <= maxLength*3/4)) { | 1948 | if (!longestLine || (textLine == longestLine && len <= maxLength*3/4)) { |
1948 | maxLength = -1; | 1949 | maxLength = -1; |
1949 | for (int i = 0; i < numLines();i++) { | 1950 | for (int i = 0; i < numLines();i++) { |
1950 | textLine = getTextLine(i); | 1951 | textLine = getTextLine(i); |
1951 | len = textWidth(textLine,textLine->length()); | 1952 | len = textWidth(textLine,textLine->length()); |
1952 | if (len > maxLength) { | 1953 | if (len > maxLength) { |
1953 | maxLength = len; | 1954 | maxLength = len; |
1954 | longestLine = textLine; | 1955 | longestLine = textLine; |
1955 | } | 1956 | } |
1956 | } | 1957 | } |
1957 | newDocGeometry = true; | 1958 | newDocGeometry = true; |
1958 | } | 1959 | } |
1959 | } | 1960 | } |
1960 | } | 1961 | } |
1961 | 1962 | ||
1962 | void KateDocument::slotBufferChanged() { | 1963 | void KateDocument::slotBufferChanged() { |
1963 | newDocGeometry = true; | 1964 | newDocGeometry = true; |
1964 | //updateLines();//JW | 1965 | //updateLines();//JW |
1965 | updateViews(); | 1966 | updateViews(); |
1966 | } | 1967 | } |
1967 | 1968 | ||
1968 | void KateDocument::slotBufferHighlight(long start,long stop) { | 1969 | void KateDocument::slotBufferHighlight(long start,long stop) { |
1969 | kdDebug(13020)<<"KateDocument::slotBufferHighlight"<<QString("%1-%2").arg(start).arg(stop)<<endl; | 1970 | kdDebug(13020)<<"KateDocument::slotBufferHighlight"<<QString("%1-%2").arg(start).arg(stop)<<endl; |
1970 | updateLines(start,stop); | 1971 | updateLines(start,stop); |
1971 | // buffer->startLoadTimer(); | 1972 | // buffer->startLoadTimer(); |
1972 | } | 1973 | } |
1973 | 1974 | ||
1974 | void KateDocument::updateViews(KateView *exclude) { | 1975 | void KateDocument::updateViews(KateView *exclude) { |
1975 | KateView *view; | 1976 | KateView *view; |
1976 | int flags; | 1977 | int flags; |
1977 | bool markState = hasMarkedText(); | 1978 | bool markState = hasMarkedText(); |
1978 | 1979 | ||
1979 | flags = (newDocGeometry) ? KateView::ufDocGeometry : 0; | 1980 | flags = (newDocGeometry) ? KateView::ufDocGeometry : 0; |
1980 | for (view = views.first(); view != 0L; view = views.next() ) { | 1981 | for (view = views.first(); view != 0L; view = views.next() ) { |
1981 | if (view != exclude) view->updateView(flags); | 1982 | if (view != exclude) view->updateView(flags); |
1982 | 1983 | ||
1983 | // notify every view about the changed mark state.... | 1984 | // notify every view about the changed mark state.... |
1984 | if (oldMarkState != markState) emit view->newMarkStatus(); | 1985 | if (oldMarkState != markState) emit view->newMarkStatus(); |
1985 | } | 1986 | } |
1986 | oldMarkState = markState; | 1987 | oldMarkState = markState; |
1987 | newDocGeometry = false; | 1988 | newDocGeometry = false; |
1988 | } | 1989 | } |
1989 | 1990 | ||
1990 | QColor &KateDocument::cursorCol(int x, int y) { | 1991 | QColor &KateDocument::cursorCol(int x, int y) { |
1991 | int attr; | 1992 | int attr; |
1992 | Attribute *a; | 1993 | Attribute *a; |
1993 | 1994 | ||
1994 | TextLine::Ptr textLine = getTextLine(y); | 1995 | TextLine::Ptr textLine = getTextLine(y); |
1995 | attr = textLine->getRawAttr(x); | 1996 | attr = textLine->getRawAttr(x); |
1996 | a = &m_attribs[attr & taAttrMask]; | 1997 | a = &m_attribs[attr & taAttrMask]; |
1997 | if (attr & taSelected) return a->selCol; else return a->col; | 1998 | if (attr & taSelected) return a->selCol; else return a->col; |
1998 | } | 1999 | } |
1999 | 2000 | ||
2000 | void KateDocument::paintTextLine(QPainter &paint, int line, int xStart, int xEnd, bool showTabs) | 2001 | void KateDocument::paintTextLine(QPainter &paint, int line, int xStart, int xEnd, bool showTabs) |
2001 | { | 2002 | { |
2002 | paintTextLine (paint, line, 0, xStart, xEnd, showTabs); | 2003 | paintTextLine (paint, line, 0, xStart, xEnd, showTabs); |
2003 | } | 2004 | } |
2004 | 2005 | ||
2005 | void KateDocument::paintTextLine(QPainter &paint, int line, int y, int xStart, int xEnd, bool showTabs) | 2006 | void KateDocument::paintTextLine(QPainter &paint, int line, int y, int xStart, int xEnd, bool showTabs) |
2006 | { | 2007 | { |
2007 | TextLine::Ptr textLine; | 2008 | TextLine::Ptr textLine; |
2008 | int len; | 2009 | int len; |
2009 | const QChar *s; | 2010 | const QChar *s; |
2010 | int z, x; | 2011 | int z, x; |
2011 | QChar ch; | 2012 | QChar ch; |
2012 | Attribute *a = 0L; | 2013 | Attribute *a = 0L; |
2013 | int attr, nextAttr; | 2014 | int attr, nextAttr; |
2014 | int xs; | 2015 | int xs; |
2015 | int xc, zc; | 2016 | int xc, zc; |
2016 | 2017 | ||
2017 | if (line > lastLine()) { | 2018 | if (line > lastLine()) { |
2018 | paint.fillRect(0, y, xEnd - xStart,fontHeight, colors[0]); | 2019 | paint.fillRect(0, y, xEnd - xStart,fontHeight, colors[0]); |
2019 | return; | 2020 | return; |
2020 | } | 2021 | } |
2021 | 2022 | ||
2022 | textLine = getTextLine(line); | 2023 | textLine = getTextLine(line); |
2023 | len = textLine->length(); | 2024 | len = textLine->length(); |
2024 | s = textLine->getText(); | 2025 | s = textLine->getText(); |
2025 | 2026 | ||
2026 | // skip to first visible character | 2027 | // skip to first visible character |
2027 | x = 0; | 2028 | x = 0; |
2028 | z = 0; | 2029 | z = 0; |
2029 | do { | 2030 | do { |
2030 | xc = x; | 2031 | xc = x; |
2031 | zc = z; | 2032 | zc = z; |
2032 | if (z == len) break; | 2033 | if (z == len) break; |
2033 | ch = s[z];//textLine->getChar(z); | 2034 | ch = s[z];//textLine->getChar(z); |
2034 | if (ch == '\t') { | 2035 | if (ch == '\t') { |
2035 | x += m_tabWidth - (x % m_tabWidth); | 2036 | x += m_tabWidth - (x % m_tabWidth); |
2036 | } else { | 2037 | } else { |
2037 | a = &m_attribs[textLine->getAttr(z)]; | 2038 | a = &m_attribs[textLine->getAttr(z)]; |
2038 | 2039 | ||
2039 | if (a->bold && a->italic) | 2040 | if (a->bold && a->italic) |
2040 | x += myFontMetricsBI.width(ch); | 2041 | x += myFontMetricsBI.width(ch); |
2041 | else if (a->bold) | 2042 | else if (a->bold) |
2042 | x += myFontMetricsBold.width(ch); | 2043 | x += myFontMetricsBold.width(ch); |
2043 | else if (a->italic) | 2044 | else if (a->italic) |
2044 | x += myFontMetricsItalic.width(ch); | 2045 | x += myFontMetricsItalic.width(ch); |
2045 | else | 2046 | else |
2046 | x += myFontMetrics.width(ch); | 2047 | x += myFontMetrics.width(ch); |
2047 | } | 2048 | } |
2048 | z++; | 2049 | z++; |
2049 | } while (x <= xStart); | 2050 | } while (x <= xStart); |
2050 | 2051 | ||
2051 | // draw background | 2052 | // draw background |
2052 | xs = xStart; | 2053 | xs = xStart; |
2053 | attr = textLine->getRawAttr(zc); | 2054 | attr = textLine->getRawAttr(zc); |
2054 | while (x < xEnd) | 2055 | while (x < xEnd) |
2055 | { | 2056 | { |
2056 | nextAttr = textLine->getRawAttr(z); | 2057 | nextAttr = textLine->getRawAttr(z); |
2057 | if ((nextAttr ^ attr) & taSelected) | 2058 | if ((nextAttr ^ attr) & taSelected) |
2058 | { | 2059 | { |
2059 | if (attr & taSelected) | 2060 | if (attr & taSelected) |
2060 | paint.fillRect(xs - xStart, y, x - xs, fontHeight, colors[1]); | 2061 | paint.fillRect(xs - xStart, y, x - xs, fontHeight, colors[1]); |
2061 | else | 2062 | else |
2062 | paint.fillRect(xs - xStart, y, x - xs, fontHeight, colors[0]); | 2063 | paint.fillRect(xs - xStart, y, x - xs, fontHeight, colors[0]); |
2063 | 2064 | ||
2064 | xs = x; | 2065 | xs = x; |
2065 | attr = nextAttr; | 2066 | attr = nextAttr; |
2066 | } | 2067 | } |
2067 | 2068 | ||
2068 | if (z == len) break; | 2069 | if (z == len) break; |
2069 | 2070 | ||
2070 | ch = s[z];//textLine->getChar(z); | 2071 | ch = s[z];//textLine->getChar(z); |
2071 | 2072 | ||
2072 | if (ch == '\t') | 2073 | if (ch == '\t') |
2073 | x += m_tabWidth - (x % m_tabWidth); | 2074 | x += m_tabWidth - (x % m_tabWidth); |
2074 | else | 2075 | else |
2075 | { | 2076 | { |
2076 | a = &m_attribs[textLine->getAttr(z)]; | 2077 | a = &m_attribs[textLine->getAttr(z)]; |
2077 | 2078 | ||
2078 | if (a->bold && a->italic) | 2079 | if (a->bold && a->italic) |
2079 | x += myFontMetricsBI.width(ch); | 2080 | x += myFontMetricsBI.width(ch); |
2080 | else if (a->bold) | 2081 | else if (a->bold) |
2081 | x += myFontMetricsBold.width(ch); | 2082 | x += myFontMetricsBold.width(ch); |
2082 | else if (a->italic) | 2083 | else if (a->italic) |
2083 | x += myFontMetricsItalic.width(ch); | 2084 | x += myFontMetricsItalic.width(ch); |
2084 | else | 2085 | else |
2085 | x += myFontMetrics.width(ch); | 2086 | x += myFontMetrics.width(ch); |
2086 | } | 2087 | } |
2087 | z++; | 2088 | z++; |
2088 | } | 2089 | } |
2089 | 2090 | ||
2090 | if (attr & taSelected) | 2091 | if (attr & taSelected) |
2091 | paint.fillRect(xs - xStart, y, xEnd - xs, fontHeight, colors[1]); | 2092 | paint.fillRect(xs - xStart, y, xEnd - xs, fontHeight, colors[1]); |
2092 | else | 2093 | else |
2093 | paint.fillRect(xs - xStart, y, xEnd - xs, fontHeight, colors[0]); | 2094 | paint.fillRect(xs - xStart, y, xEnd - xs, fontHeight, colors[0]); |
2094 | 2095 | ||
2095 | len = z; //reduce length to visible length | 2096 | len = z; //reduce length to visible length |
2096 | 2097 | ||
2097 | // draw text | 2098 | // draw text |
2098 | x = xc; | 2099 | x = xc; |
2099 | z = zc; | 2100 | z = zc; |
2100 | y += fontAscent;// -1; | 2101 | y += fontAscent;// -1; |
2101 | attr = -1; | 2102 | attr = -1; |
2102 | while (z < len) { | 2103 | while (z < len) { |
2103 | ch = s[z];//textLine->getChar(z); | 2104 | ch = s[z];//textLine->getChar(z); |
2104 | if (ch == '\t') { | 2105 | if (ch == '\t') { |
2105 | if (z > zc) { | 2106 | if (z > zc) { |
2106 | //this should cause no copy at all | 2107 | //this should cause no copy at all |
2107 | QConstString str((QChar *) &s[zc], z - zc /*+1*/); | 2108 | QConstString str((QChar *) &s[zc], z - zc /*+1*/); |
2108 | QString s = str.string(); | 2109 | QString s = str.string(); |
2109 | paint.drawText(x - xStart, y, s); | 2110 | paint.drawText(x - xStart, y, s); |
2110 | 2111 | ||
2111 | if (a->bold && a->italic) | 2112 | if (a->bold && a->italic) |
2112 | x += myFontMetricsBI.width(s); | 2113 | x += myFontMetricsBI.width(s); |
2113 | else if (a->bold) | 2114 | else if (a->bold) |
2114 | x += myFontMetricsBold.width(s); | 2115 | x += myFontMetricsBold.width(s); |
2115 | else if (a->italic) | 2116 | else if (a->italic) |
2116 | x += myFontMetricsItalic.width(s); | 2117 | x += myFontMetricsItalic.width(s); |
2117 | else | 2118 | else |
2118 | x += myFontMetrics.width(s); | 2119 | x += myFontMetrics.width(s); |
2119 | } | 2120 | } |
2120 | zc = z +1; | 2121 | zc = z +1; |
2121 | 2122 | ||
2122 | if (showTabs) { | 2123 | if (showTabs) { |
2123 | nextAttr = textLine->getRawAttr(z); | 2124 | nextAttr = textLine->getRawAttr(z); |
2124 | if (nextAttr != attr) { | 2125 | if (nextAttr != attr) { |
2125 | attr = nextAttr; | 2126 | attr = nextAttr; |
2126 | a = &m_attribs[attr & taAttrMask]; | 2127 | a = &m_attribs[attr & taAttrMask]; |
2127 | 2128 | ||
2128 | if (attr & taSelected) paint.setPen(a->selCol); | 2129 | if (attr & taSelected) paint.setPen(a->selCol); |
2129 | else paint.setPen(a->col); | 2130 | else paint.setPen(a->col); |
2130 | 2131 | ||
2131 | if (a->bold && a->italic) | 2132 | if (a->bold && a->italic) |
2132 | paint.setFont(myFontBI); | 2133 | paint.setFont(myFontBI); |
2133 | else if (a->bold) | 2134 | else if (a->bold) |
2134 | paint.setFont(myFontBold); | 2135 | paint.setFont(myFontBold); |
2135 | else if (a->italic) | 2136 | else if (a->italic) |
2136 | paint.setFont(myFontItalic); | 2137 | paint.setFont(myFontItalic); |
2137 | else | 2138 | else |
2138 | paint.setFont(myFont); | 2139 | paint.setFont(myFont); |
2139 | } | 2140 | } |
2140 | 2141 | ||
2141 | // paint.drawLine(x - xStart, y -2, x - xStart, y); | 2142 | // paint.drawLine(x - xStart, y -2, x - xStart, y); |
2142 | // paint.drawLine(x - xStart, y, x - xStart + 2, y); | 2143 | // paint.drawLine(x - xStart, y, x - xStart + 2, y); |
2143 | paint.drawPoint(x - xStart, y); | 2144 | paint.drawPoint(x - xStart, y); |
2144 | paint.drawPoint(x - xStart +1, y); | 2145 | paint.drawPoint(x - xStart +1, y); |
2145 | paint.drawPoint(x - xStart, y -1); | 2146 | paint.drawPoint(x - xStart, y -1); |
2146 | } | 2147 | } |
2147 | x += m_tabWidth - (x % m_tabWidth); | 2148 | x += m_tabWidth - (x % m_tabWidth); |
2148 | } else { | 2149 | } else { |
2149 | nextAttr = textLine->getRawAttr(z); | 2150 | nextAttr = textLine->getRawAttr(z); |
2150 | if (nextAttr != attr) { | 2151 | if (nextAttr != attr) { |
2151 | if (z > zc) { | 2152 | if (z > zc) { |
2152 | QConstString str((QChar *) &s[zc], z - zc /*+1*/); | 2153 | QConstString str((QChar *) &s[zc], z - zc /*+1*/); |
2153 | QString s = str.string(); | 2154 | QString s = str.string(); |
2154 | paint.drawText(x - xStart, y, s); | 2155 | paint.drawText(x - xStart, y, s); |
2155 | 2156 | ||
2156 | if (a->bold && a->italic) | 2157 | if (a->bold && a->italic) |
2157 | x += myFontMetricsBI.width(s); | 2158 | x += myFontMetricsBI.width(s); |
2158 | else if (a->bold) | 2159 | else if (a->bold) |
2159 | x += myFontMetricsBold.width(s); | 2160 | x += myFontMetricsBold.width(s); |
2160 | else if (a->italic) | 2161 | else if (a->italic) |
2161 | x += myFontMetricsItalic.width(s); | 2162 | x += myFontMetricsItalic.width(s); |
2162 | else | 2163 | else |
2163 | x += myFontMetrics.width(s); | 2164 | x += myFontMetrics.width(s); |
2164 | zc = z; | 2165 | zc = z; |
2165 | } | 2166 | } |
2166 | attr = nextAttr; | 2167 | attr = nextAttr; |
2167 | a = &m_attribs[attr & taAttrMask]; | 2168 | a = &m_attribs[attr & taAttrMask]; |
2168 | 2169 | ||
2169 | if (attr & taSelected) paint.setPen(a->selCol); | 2170 | if (attr & taSelected) paint.setPen(a->selCol); |
2170 | else paint.setPen(a->col); | 2171 | else paint.setPen(a->col); |
2171 | 2172 | ||
2172 | if (a->bold && a->italic) | 2173 | if (a->bold && a->italic) |
2173 | paint.setFont(myFontBI); | 2174 | paint.setFont(myFontBI); |
2174 | else if (a->bold) | 2175 | else if (a->bold) |
2175 | paint.setFont(myFontBold); | 2176 | paint.setFont(myFontBold); |
2176 | else if (a->italic) | 2177 | else if (a->italic) |
2177 | paint.setFont(myFontItalic); | 2178 | paint.setFont(myFontItalic); |
2178 | else | 2179 | else |
2179 | paint.setFont(myFont); | 2180 | paint.setFont(myFont); |
2180 | } | 2181 | } |
2181 | } | 2182 | } |
2182 | z++; | 2183 | z++; |
2183 | } | 2184 | } |
2184 | if (z > zc) { | 2185 | if (z > zc) { |
2185 | QConstString str((QChar *) &s[zc], z - zc /*+1*/); | 2186 | QConstString str((QChar *) &s[zc], z - zc /*+1*/); |
2186 | paint.drawText(x - xStart, y, str.string()); | 2187 | paint.drawText(x - xStart, y, str.string()); |
2187 | } | 2188 | } |
2188 | } | 2189 | } |
2189 | 2190 | ||
2190 | // Applies the search context, and returns whether a match was found. If one is, | 2191 | // Applies the search context, and returns whether a match was found. If one is, |
2191 | // the length of the string matched is also returned. | 2192 | // the length of the string matched is also returned. |
2192 | bool KateDocument::doSearch(SConfig &sc, const QString &searchFor) { | 2193 | bool KateDocument::doSearch(SConfig &sc, const QString &searchFor) { |
2193 | int line, col; | 2194 | int line, col; |
2194 | int searchEnd; | 2195 | int searchEnd; |
2195 | int bufLen, tlen; | 2196 | int bufLen, tlen; |
2196 | QChar *t; | 2197 | QChar *t; |
2197 | TextLine::Ptr textLine; | 2198 | TextLine::Ptr textLine; |
2198 | int pos, newPos; | 2199 | int pos, newPos; |
2199 | 2200 | ||
2200 | if (searchFor.isEmpty()) return false; | 2201 | if (searchFor.isEmpty()) return false; |
2201 | 2202 | ||
2202 | bufLen = 0; | 2203 | bufLen = 0; |
2203 | t = 0L; | 2204 | t = 0L; |
2204 | 2205 | ||
2205 | line = sc.cursor.y; | 2206 | line = sc.cursor.y; |
2206 | col = sc.cursor.x; | 2207 | col = sc.cursor.x; |
2207 | if (!(sc.flags & KateView::sfBackward)) { | 2208 | if (!(sc.flags & KateView::sfBackward)) { |
2208 | //forward search | 2209 | //forward search |
2209 | if (sc.flags & KateView::sfSelected) { | 2210 | if (sc.flags & KateView::sfSelected) { |
2210 | if (line < selectStart) { | 2211 | if (line < selectStart) { |
2211 | line = selectStart; | 2212 | line = selectStart; |
2212 | col = 0; | 2213 | col = 0; |
2213 | } | 2214 | } |
2214 | searchEnd = selectEnd; | 2215 | searchEnd = selectEnd; |
2215 | } else searchEnd = lastLine(); | 2216 | } else searchEnd = lastLine(); |
2216 | 2217 | ||
2217 | while (line <= searchEnd) { | 2218 | while (line <= searchEnd) { |
2218 | textLine = getTextLine(line); | 2219 | textLine = getTextLine(line); |
2219 | tlen = textLine->length(); | 2220 | tlen = textLine->length(); |
2220 | if (tlen > bufLen) { | 2221 | if (tlen > bufLen) { |
2221 | delete t; | 2222 | delete t; |
2222 | bufLen = (tlen + 255) & (~255); | 2223 | bufLen = (tlen + 255) & (~255); |
2223 | t = new QChar[bufLen]; | 2224 | t = new QChar[bufLen]; |
2224 | } | 2225 | } |
2225 | memcpy(t, textLine->getText(), tlen*sizeof(QChar)); | 2226 | memcpy(t, textLine->getText(), tlen*sizeof(QChar)); |
2226 | if (sc.flags & KateView::sfSelected) { | 2227 | if (sc.flags & KateView::sfSelected) { |
2227 | pos = 0; | 2228 | pos = 0; |
2228 | do { | 2229 | do { |
2229 | pos = textLine->findSelected(pos); | 2230 | pos = textLine->findSelected(pos); |
2230 | newPos = textLine->findUnselected(pos); | 2231 | newPos = textLine->findUnselected(pos); |
2231 | memset(&t[pos], 0, (newPos - pos)*sizeof(QChar)); | 2232 | memset(&t[pos], 0, (newPos - pos)*sizeof(QChar)); |
2232 | pos = newPos; | 2233 | pos = newPos; |
2233 | } while (pos < tlen); | 2234 | } while (pos < tlen); |
2234 | } | 2235 | } |
2235 | 2236 | ||
2236 | QString text(t, tlen); | 2237 | QString text(t, tlen); |
2237 | if (sc.flags & KateView::sfWholeWords) { | 2238 | if (sc.flags & KateView::sfWholeWords) { |
2238 | // Until the end of the line... | 2239 | // Until the end of the line... |
2239 | while (col < tlen) { | 2240 | while (col < tlen) { |
2240 | // ...find the next match. | 2241 | // ...find the next match. |
2241 | col = sc.search(text, col); | 2242 | col = sc.search(text, col); |
2242 | if (col != -1) { | 2243 | if (col != -1) { |
2243 | // Is the match delimited correctly? | 2244 | // Is the match delimited correctly? |
2244 | if (((col == 0) || (!m_highlight->isInWord(t[col]))) && | 2245 | if (((col == 0) || (!m_highlight->isInWord(t[col]))) && |
2245 | ((col + sc.matchedLength == tlen) || (!m_highlight->isInWord(t[col + sc.matchedLength])))) { | 2246 | ((col + sc.matchedLength == tlen) || (!m_highlight->isInWord(t[col + sc.matchedLength])))) { |
2246 | goto found; | 2247 | goto found; |
2247 | } | 2248 | } |
2248 | else { | 2249 | else { |
2249 | // Start again from the next character. | 2250 | // Start again from the next character. |
2250 | col++; | 2251 | col++; |
2251 | } | 2252 | } |
2252 | } | 2253 | } |
2253 | else { | 2254 | else { |
2254 | // No match. | 2255 | // No match. |
2255 | break; | 2256 | break; |
2256 | } | 2257 | } |
2257 | } | 2258 | } |
2258 | } | 2259 | } |
2259 | else { | 2260 | else { |
2260 | // Non-whole-word search. | 2261 | // Non-whole-word search. |
2261 | col = sc.search(text, col); | 2262 | col = sc.search(text, col); |
2262 | if (col != -1) | 2263 | if (col != -1) |
2263 | goto found; | 2264 | goto found; |
2264 | } | 2265 | } |
2265 | col = 0; | 2266 | col = 0; |
2266 | line++; | 2267 | line++; |
2267 | } | 2268 | } |
2268 | } else { | 2269 | } else { |
2269 | // backward search | 2270 | // backward search |
2270 | if (sc.flags & KateView::sfSelected) { | 2271 | if (sc.flags & KateView::sfSelected) { |
2271 | if (line > selectEnd) { | 2272 | if (line > selectEnd) { |
2272 | line = selectEnd; | 2273 | line = selectEnd; |
2273 | col = -1; | 2274 | col = -1; |
2274 | } | 2275 | } |
2275 | searchEnd = selectStart; | 2276 | searchEnd = selectStart; |
2276 | } else searchEnd = 0; | 2277 | } else searchEnd = 0; |
2277 | 2278 | ||
2278 | while (line >= searchEnd) { | 2279 | while (line >= searchEnd) { |
2279 | textLine = getTextLine(line); | 2280 | textLine = getTextLine(line); |
2280 | tlen = textLine->length(); | 2281 | tlen = textLine->length(); |
2281 | if (tlen > bufLen) { | 2282 | if (tlen > bufLen) { |
2282 | delete t; | 2283 | delete t; |
2283 | bufLen = (tlen + 255) & (~255); | 2284 | bufLen = (tlen + 255) & (~255); |
2284 | t = new QChar[bufLen]; | 2285 | t = new QChar[bufLen]; |
2285 | } | 2286 | } |
2286 | memcpy(t, textLine->getText(), tlen*sizeof(QChar)); | 2287 | memcpy(t, textLine->getText(), tlen*sizeof(QChar)); |
2287 | if (sc.flags & KateView::sfSelected) { | 2288 | if (sc.flags & KateView::sfSelected) { |
2288 | pos = 0; | 2289 | pos = 0; |
2289 | do { | 2290 | do { |
2290 | pos = textLine->findSelected(pos); | 2291 | pos = textLine->findSelected(pos); |
2291 | newPos = textLine->findUnselected(pos); | 2292 | newPos = textLine->findUnselected(pos); |
2292 | memset(&t[pos], 0, (newPos - pos)*sizeof(QChar)); | 2293 | memset(&t[pos], 0, (newPos - pos)*sizeof(QChar)); |
2293 | pos = newPos; | 2294 | pos = newPos; |
2294 | } while (pos < tlen); | 2295 | } while (pos < tlen); |
2295 | } | 2296 | } |
2296 | 2297 | ||
2297 | if (col < 0 || col > tlen) col = tlen; | 2298 | if (col < 0 || col > tlen) col = tlen; |
2298 | 2299 | ||
2299 | QString text(t, tlen); | 2300 | QString text(t, tlen); |
2300 | if (sc.flags & KateView::sfWholeWords) { | 2301 | if (sc.flags & KateView::sfWholeWords) { |
2301 | // Until the beginning of the line... | 2302 | // Until the beginning of the line... |
2302 | while (col >= 0) { | 2303 | while (col >= 0) { |
2303 | // ...find the next match. | 2304 | // ...find the next match. |
2304 | col = sc.search(text, col); | 2305 | col = sc.search(text, col); |
2305 | if (col != -1) { | 2306 | if (col != -1) { |
2306 | // Is the match delimited correctly? | 2307 | // Is the match delimited correctly? |
2307 | if (((col == 0) || (!m_highlight->isInWord(t[col]))) && | 2308 | if (((col == 0) || (!m_highlight->isInWord(t[col]))) && |
2308 | ((col + sc.matchedLength == tlen) || (!m_highlight->isInWord(t[col + sc.matchedLength])))) { | 2309 | ((col + sc.matchedLength == tlen) || (!m_highlight->isInWord(t[col + sc.matchedLength])))) { |
2309 | goto found; | 2310 | goto found; |
2310 | } | 2311 | } |
2311 | else { | 2312 | else { |
2312 | // Start again from the previous character. | 2313 | // Start again from the previous character. |
2313 | col--; | 2314 | col--; |
2314 | } | 2315 | } |
2315 | } | 2316 | } |
2316 | else { | 2317 | else { |
2317 | // No match. | 2318 | // No match. |
2318 | break; | 2319 | break; |
2319 | } | 2320 | } |
2320 | } | 2321 | } |
2321 | } | 2322 | } |
2322 | else { | 2323 | else { |
2323 | // Non-whole-word search. | 2324 | // Non-whole-word search. |
2324 | col = sc.search(text, col); | 2325 | col = sc.search(text, col); |
2325 | if (col != -1) | 2326 | if (col != -1) |
2326 | goto found; | 2327 | goto found; |
2327 | } | 2328 | } |
2328 | col = -1; | 2329 | col = -1; |
2329 | line--; | 2330 | line--; |
2330 | } | 2331 | } |
2331 | } | 2332 | } |
2332 | sc.flags |= KateView::sfWrapped; | 2333 | sc.flags |= KateView::sfWrapped; |
2333 | return false; | 2334 | return false; |
2334 | found: | 2335 | found: |
2335 | if (sc.flags & KateView::sfWrapped) { | 2336 | if (sc.flags & KateView::sfWrapped) { |
2336 | if ((line > sc.startCursor.y || (line == sc.startCursor.y && col >= sc.startCursor.x)) | 2337 | if ((line > sc.startCursor.y || (line == sc.startCursor.y && col >= sc.startCursor.x)) |
2337 | ^ ((sc.flags & KateView::sfBackward) != 0)) return false; | 2338 | ^ ((sc.flags & KateView::sfBackward) != 0)) return false; |
2338 | } | 2339 | } |
2339 | sc.cursor.x = col; | 2340 | sc.cursor.x = col; |
2340 | sc.cursor.y = line; | 2341 | sc.cursor.y = line; |
2341 | return true; | 2342 | return true; |
2342 | } | 2343 | } |
2343 | 2344 | ||
2344 | void KateDocument::tagLine(int line) { | 2345 | void KateDocument::tagLine(int line) { |
2345 | 2346 | ||
2346 | if (tagStart > line) tagStart = line; | 2347 | if (tagStart > line) tagStart = line; |
2347 | if (tagEnd < line) tagEnd = line; | 2348 | if (tagEnd < line) tagEnd = line; |
2348 | } | 2349 | } |
2349 | 2350 | ||
2350 | void KateDocument::insLine(int line) { | 2351 | void KateDocument::insLine(int line) { |
2351 | KateView *view; | 2352 | KateView *view; |
2352 | 2353 | ||
2353 | if (selectStart >= line) selectStart++; | 2354 | if (selectStart >= line) selectStart++; |
2354 | if (selectEnd >= line) selectEnd++; | 2355 | if (selectEnd >= line) selectEnd++; |
2355 | if (tagStart >= line) tagStart++; | 2356 | if (tagStart >= line) tagStart++; |
2356 | if (tagEnd >= line) tagEnd++; | 2357 | if (tagEnd >= line) tagEnd++; |
2357 | 2358 | ||
2358 | newDocGeometry = true; | 2359 | newDocGeometry = true; |
2359 | for (view = views.first(); view != 0L; view = views.next() ) { | 2360 | for (view = views.first(); view != 0L; view = views.next() ) { |
2360 | view->insLine(line); | 2361 | view->insLine(line); |
2361 | } | 2362 | } |
2362 | } | 2363 | } |
2363 | 2364 | ||
2364 | void KateDocument::delLine(int line) { | 2365 | void KateDocument::delLine(int line) { |
2365 | KateView *view; | 2366 | KateView *view; |
2366 | 2367 | ||
2367 | if (selectStart >= line && selectStart > 0) selectStart--; | 2368 | if (selectStart >= line && selectStart > 0) selectStart--; |
2368 | if (selectEnd >= line) selectEnd--; | 2369 | if (selectEnd >= line) selectEnd--; |
2369 | if (tagStart >= line && tagStart > 0) tagStart--; | 2370 | if (tagStart >= line && tagStart > 0) tagStart--; |
2370 | if (tagEnd >= line) tagEnd--; | 2371 | if (tagEnd >= line) tagEnd--; |
2371 | 2372 | ||
2372 | newDocGeometry = true; | 2373 | newDocGeometry = true; |
2373 | for (view = views.first(); view != 0L; view = views.next() ) { | 2374 | for (view = views.first(); view != 0L; view = views.next() ) { |
2374 | view->delLine(line); | 2375 | view->delLine(line); |
2375 | } | 2376 | } |
2376 | } | 2377 | } |
2377 | 2378 | ||
2378 | void KateDocument::optimizeSelection() { | 2379 | void KateDocument::optimizeSelection() { |
2379 | TextLine::Ptr textLine; | 2380 | TextLine::Ptr textLine; |
2380 | 2381 | ||
2381 | while (selectStart <= selectEnd) { | 2382 | while (selectStart <= selectEnd) { |
2382 | textLine = getTextLine(selectStart); | 2383 | textLine = getTextLine(selectStart); |
2383 | if (textLine->isSelected() || textLine->numSelected() > 0) break; | 2384 | if (textLine->isSelected() || textLine->numSelected() > 0) break; |
2384 | selectStart++; | 2385 | selectStart++; |
2385 | } | 2386 | } |
2386 | while (selectEnd >= selectStart) { | 2387 | while (selectEnd >= selectStart) { |
2387 | textLine = getTextLine(selectEnd); | 2388 | textLine = getTextLine(selectEnd); |
2388 | if (textLine->isSelected() || textLine->numSelected() > 0) break; | 2389 | if (textLine->isSelected() || textLine->numSelected() > 0) break; |
2389 | selectEnd--; | 2390 | selectEnd--; |
2390 | } | 2391 | } |
2391 | if (selectStart > selectEnd) { | 2392 | if (selectStart > selectEnd) { |
2392 | selectStart = 0xffffff; | 2393 | selectStart = 0xffffff; |
2393 | selectEnd = 0; | 2394 | selectEnd = 0; |
2394 | } | 2395 | } |
2395 | } | 2396 | } |
2396 | 2397 | ||
2397 | void KateDocument::doAction(KateAction *a) { | 2398 | void KateDocument::doAction(KateAction *a) { |
2398 | 2399 | ||
2399 | switch (a->action) { | 2400 | switch (a->action) { |
2400 | case KateAction::replace: | 2401 | case KateAction::replace: |
2401 | doReplace(a); | 2402 | doReplace(a); |
2402 | break; | 2403 | break; |
2403 | case KateAction::wordWrap: | 2404 | case KateAction::wordWrap: |
2404 | doWordWrap(a); | 2405 | doWordWrap(a); |
2405 | break; | 2406 | break; |
2406 | case KateAction::wordUnWrap: | 2407 | case KateAction::wordUnWrap: |
2407 | doWordUnWrap(a); | 2408 | doWordUnWrap(a); |
2408 | break; | 2409 | break; |
2409 | case KateAction::newLine: | 2410 | case KateAction::newLine: |
2410 | doNewLine(a); | 2411 | doNewLine(a); |
2411 | break; | 2412 | break; |
2412 | case KateAction::delLine: | 2413 | case KateAction::delLine: |
2413 | doDelLine(a); | 2414 | doDelLine(a); |
2414 | break; | 2415 | break; |
2415 | case KateAction::insLine: | 2416 | case KateAction::insLine: |
2416 | doInsLine(a); | 2417 | doInsLine(a); |
2417 | break; | 2418 | break; |
2418 | case KateAction::killLine: | 2419 | case KateAction::killLine: |
2419 | doKillLine(a); | 2420 | doKillLine(a); |
2420 | break; | 2421 | break; |
2421 | /* case KateAction::doubleLine: | 2422 | /* case KateAction::doubleLine: |
2422 | break; | 2423 | break; |
2423 | case KateAction::removeLine: | 2424 | case KateAction::removeLine: |
2424 | break;*/ | 2425 | break;*/ |
2425 | } | 2426 | } |
2426 | } | 2427 | } |
2427 | 2428 | ||
2428 | void KateDocument::doReplace(KateAction *a) { | 2429 | void KateDocument::doReplace(KateAction *a) { |
2429 | TextLine::Ptr textLine; | 2430 | TextLine::Ptr textLine; |
2430 | int l; | 2431 | int l; |
2431 | 2432 | ||
2432 | //exchange current text with stored text in KateAction *a | 2433 | //exchange current text with stored text in KateAction *a |
2433 | 2434 | ||
2434 | textLine = getTextLine(a->cursor.y); | 2435 | textLine = getTextLine(a->cursor.y); |
2435 | l = textLine->length() - a->cursor.x; | 2436 | l = textLine->length() - a->cursor.x; |
2436 | if (l > a->len) l = a->len; | 2437 | if (l > a->len) l = a->len; |
2437 | 2438 | ||
2438 | QString oldText(&textLine->getText()[a->cursor.x], (l < 0) ? 0 : l); | 2439 | QString oldText(&textLine->getText()[a->cursor.x], (l < 0) ? 0 : l); |
2439 | textLine->replace(a->cursor.x, a->len, a->text.unicode(), a->text.length()); | 2440 | textLine->replace(a->cursor.x, a->len, a->text.unicode(), a->text.length()); |
diff --git a/noncore/apps/tinykate/libkate/document/katehighlight.cpp b/noncore/apps/tinykate/libkate/document/katehighlight.cpp index 0d2c283..539d356 100644 --- a/noncore/apps/tinykate/libkate/document/katehighlight.cpp +++ b/noncore/apps/tinykate/libkate/document/katehighlight.cpp | |||
@@ -1,1459 +1,1463 @@ | |||
1 | /* | 1 | /* |
2 | Copyright (C) 1998, 1999 Jochen Wilhelmy | 2 | Copyright (C) 1998, 1999 Jochen Wilhelmy |
3 | digisnap@cs.tu-berlin.de | 3 | digisnap@cs.tu-berlin.de |
4 | (C) 2002, 2001 The Kate Team <kwrite-devel@kde.org> | 4 | (C) 2002, 2001 The Kate Team <kwrite-devel@kde.org> |
5 | (C) 2002 Joseph Wenninger <jowenn@kde.org> | 5 | (C) 2002 Joseph Wenninger <jowenn@kde.org> |
6 | This library is free software; you can redistribute it and/or | 6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public | 7 | modify it under the terms of the GNU Library General Public |
8 | License as published by the Free Software Foundation; either | 8 | License as published by the Free Software Foundation; either |
9 | version 2 of the License, or (at your option) any later version. | 9 | version 2 of the License, or (at your option) any later version. |
10 | 10 | ||
11 | This library is distributed in the hope that it will be useful, | 11 | This library is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | Library General Public License for more details. | 14 | Library General Public License for more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU Library General Public License | 16 | You should have received a copy of the GNU Library General Public License |
17 | along with this library; see the file COPYING.LIB. If not, write to | 17 | along with this library; see the file COPYING.LIB. If not, write to |
18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 18 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
19 | Boston, MA 02111-1307, USA. | 19 | Boston, MA 02111-1307, USA. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <string.h> | ||
23 | |||
24 | #include <qtextstream.h> | ||
25 | #include <qpe/config.h> | ||
26 | #include <kglobal.h> | ||
27 | //#include <kinstance.h> | ||
28 | //#include <kmimemagic.h> | ||
29 | #include <klocale.h> | ||
30 | //#include <kregexp.h> | ||
31 | #include <kglobalsettings.h> | ||
32 | #include <kdebug.h> | ||
33 | #include <kstddirs.h> | ||
34 | |||
35 | #include "katehighlight.h" | 22 | #include "katehighlight.h" |
36 | |||
37 | |||
38 | #include "katetextline.h" | 23 | #include "katetextline.h" |
39 | #include "katedocument.h" | 24 | #include "katedocument.h" |
40 | #include "katesyntaxdocument.h" | 25 | #include "katesyntaxdocument.h" |
41 | 26 | ||
27 | #include "kglobal.h" | ||
28 | //#include "kinstance.h" | ||
29 | //#include "kmimemagic.h" | ||
30 | #include "klocale.h" | ||
31 | //#include "kregexp.h" | ||
32 | #include "kglobalsettings.h" | ||
33 | #include "kdebug.h" | ||
34 | #include "kstddirs.h" | ||
35 | |||
36 | /* OPIE */ | ||
37 | #include <opie2/odebug.h> | ||
38 | #include <qpe/config.h> | ||
39 | |||
40 | /* QT */ | ||
41 | #include <qtextstream.h> | ||
42 | |||
43 | /* STD */ | ||
44 | #include <string.h> | ||
45 | |||
42 | 46 | ||
43 | HlManager *HlManager::s_pSelf = 0; | 47 | HlManager *HlManager::s_pSelf = 0; |
44 | 48 | ||
45 | enum Item_styles { dsNormal,dsKeyword,dsDataType,dsDecVal,dsBaseN,dsFloat,dsChar,dsString,dsComment,dsOthers}; | 49 | enum Item_styles { dsNormal,dsKeyword,dsDataType,dsDecVal,dsBaseN,dsFloat,dsChar,dsString,dsComment,dsOthers}; |
46 | 50 | ||
47 | static bool trueBool = true; | 51 | static bool trueBool = true; |
48 | static QString stdDeliminator = QString ("!%&()*+,-./:;<=>?[]^{|}~ \t\\"); | 52 | static QString stdDeliminator = QString ("!%&()*+,-./:;<=>?[]^{|}~ \t\\"); |
49 | 53 | ||
50 | int getDefStyleNum(QString name) | 54 | int getDefStyleNum(QString name) |
51 | { | 55 | { |
52 | if (name=="dsNormal") return dsNormal; | 56 | if (name=="dsNormal") return dsNormal; |
53 | if (name=="dsKeyword") return dsKeyword; | 57 | if (name=="dsKeyword") return dsKeyword; |
54 | if (name=="dsDataType") return dsDataType; | 58 | if (name=="dsDataType") return dsDataType; |
55 | if (name=="dsDecVal") return dsDecVal; | 59 | if (name=="dsDecVal") return dsDecVal; |
56 | if (name=="dsBaseN") return dsBaseN; | 60 | if (name=="dsBaseN") return dsBaseN; |
57 | if (name=="dsFloat") return dsFloat; | 61 | if (name=="dsFloat") return dsFloat; |
58 | if (name=="dsChar") return dsChar; | 62 | if (name=="dsChar") return dsChar; |
59 | if (name=="dsString") return dsString; | 63 | if (name=="dsString") return dsString; |
60 | if (name=="dsComment") return dsComment; | 64 | if (name=="dsComment") return dsComment; |
61 | if (name=="dsOthers") return dsOthers; | 65 | if (name=="dsOthers") return dsOthers; |
62 | 66 | ||
63 | return dsNormal; | 67 | return dsNormal; |
64 | } | 68 | } |
65 | 69 | ||
66 | bool ustrchr(const QChar *s, uint len, QChar c) | 70 | bool ustrchr(const QChar *s, uint len, QChar c) |
67 | { | 71 | { |
68 | for (int z=0; z < len; z++) | 72 | for (int z=0; z < len; z++) |
69 | { | 73 | { |
70 | if (*s == c) return true; | 74 | if (*s == c) return true; |
71 | s++; | 75 | s++; |
72 | } | 76 | } |
73 | 77 | ||
74 | return false; | 78 | return false; |
75 | } | 79 | } |
76 | 80 | ||
77 | HlItem::HlItem(int attribute, int context) | 81 | HlItem::HlItem(int attribute, int context) |
78 | : attr(attribute), ctx(context) {subItems=0; | 82 | : attr(attribute), ctx(context) {subItems=0; |
79 | } | 83 | } |
80 | 84 | ||
81 | HlItem::~HlItem() | 85 | HlItem::~HlItem() |
82 | { | 86 | { |
83 | //kdDebug(13010)<<"In hlItem::~HlItem()"<<endl; | 87 | //kdDebug(13010)<<"In hlItem::~HlItem()"<<endl; |
84 | if (subItems!=0) {subItems->setAutoDelete(true); subItems->clear(); delete subItems;} | 88 | if (subItems!=0) {subItems->setAutoDelete(true); subItems->clear(); delete subItems;} |
85 | } | 89 | } |
86 | 90 | ||
87 | bool HlItem::startEnable(QChar c) | 91 | bool HlItem::startEnable(QChar c) |
88 | { | 92 | { |
89 | return true; | 93 | return true; |
90 | } | 94 | } |
91 | 95 | ||
92 | HlCharDetect::HlCharDetect(int attribute, int context, QChar c) | 96 | HlCharDetect::HlCharDetect(int attribute, int context, QChar c) |
93 | : HlItem(attribute,context), sChar(c) { | 97 | : HlItem(attribute,context), sChar(c) { |
94 | } | 98 | } |
95 | 99 | ||
96 | const QChar *HlCharDetect::checkHgl(const QChar *str, int len, bool) { | 100 | const QChar *HlCharDetect::checkHgl(const QChar *str, int len, bool) { |
97 | if (*str == sChar) return str + 1; | 101 | if (*str == sChar) return str + 1; |
98 | return 0L; | 102 | return 0L; |
99 | } | 103 | } |
100 | 104 | ||
101 | Hl2CharDetect::Hl2CharDetect(int attribute, int context, QChar ch1, QChar ch2) | 105 | Hl2CharDetect::Hl2CharDetect(int attribute, int context, QChar ch1, QChar ch2) |
102 | : HlItem(attribute,context) { | 106 | : HlItem(attribute,context) { |
103 | sChar1 = ch1; | 107 | sChar1 = ch1; |
104 | sChar2 = ch2; | 108 | sChar2 = ch2; |
105 | } | 109 | } |
106 | 110 | ||
107 | const QChar *Hl2CharDetect::checkHgl(const QChar *str, int len, bool) { | 111 | const QChar *Hl2CharDetect::checkHgl(const QChar *str, int len, bool) { |
108 | if (str[0] == sChar1 && str[1] == sChar2) return str + 2; | 112 | if (str[0] == sChar1 && str[1] == sChar2) return str + 2; |
109 | return 0L; | 113 | return 0L; |
110 | } | 114 | } |
111 | 115 | ||
112 | HlStringDetect::HlStringDetect(int attribute, int context, const QString &s, bool inSensitive) | 116 | HlStringDetect::HlStringDetect(int attribute, int context, const QString &s, bool inSensitive) |
113 | : HlItem(attribute, context), str(inSensitive ? s.upper():s), _inSensitive(inSensitive) { | 117 | : HlItem(attribute, context), str(inSensitive ? s.upper():s), _inSensitive(inSensitive) { |
114 | } | 118 | } |
115 | 119 | ||
116 | HlStringDetect::~HlStringDetect() { | 120 | HlStringDetect::~HlStringDetect() { |
117 | } | 121 | } |
118 | 122 | ||
119 | const QChar *HlStringDetect::checkHgl(const QChar *s, int len, bool) { | 123 | const QChar *HlStringDetect::checkHgl(const QChar *s, int len, bool) { |
120 | if (!_inSensitive) {if (memcmp(s, str.unicode(), str.length()*sizeof(QChar)) == 0) return s + str.length();} | 124 | if (!_inSensitive) {if (memcmp(s, str.unicode(), str.length()*sizeof(QChar)) == 0) return s + str.length();} |
121 | else | 125 | else |
122 | { | 126 | { |
123 | QString tmp=QString(s,str.length()).upper(); | 127 | QString tmp=QString(s,str.length()).upper(); |
124 | if (tmp==str) return s+str.length(); | 128 | if (tmp==str) return s+str.length(); |
125 | } | 129 | } |
126 | return 0L; | 130 | return 0L; |
127 | } | 131 | } |
128 | 132 | ||
129 | 133 | ||
130 | HlRangeDetect::HlRangeDetect(int attribute, int context, QChar ch1, QChar ch2) | 134 | HlRangeDetect::HlRangeDetect(int attribute, int context, QChar ch1, QChar ch2) |
131 | : HlItem(attribute,context) { | 135 | : HlItem(attribute,context) { |
132 | sChar1 = ch1; | 136 | sChar1 = ch1; |
133 | sChar2 = ch2; | 137 | sChar2 = ch2; |
134 | } | 138 | } |
135 | 139 | ||
136 | const QChar *HlRangeDetect::checkHgl(const QChar *s, int len, bool) { | 140 | const QChar *HlRangeDetect::checkHgl(const QChar *s, int len, bool) { |
137 | if (*s == sChar1) | 141 | if (*s == sChar1) |
138 | { | 142 | { |
139 | do | 143 | do |
140 | { | 144 | { |
141 | s++; | 145 | s++; |
142 | len--; | 146 | len--; |
143 | if (len == 0) return 0L; | 147 | if (len == 0) return 0L; |
144 | } | 148 | } |
145 | while (*s != sChar2); | 149 | while (*s != sChar2); |
146 | 150 | ||
147 | return s + 1; | 151 | return s + 1; |
148 | } | 152 | } |
149 | return 0L; | 153 | return 0L; |
150 | } | 154 | } |
151 | 155 | ||
152 | HlKeyword::HlKeyword (int attribute, int context,bool casesensitive, const QChar *deliminator, uint deliLen) | 156 | HlKeyword::HlKeyword (int attribute, int context,bool casesensitive, const QChar *deliminator, uint deliLen) |
153 | : HlItem(attribute,context), dict (113, casesensitive) | 157 | : HlItem(attribute,context), dict (113, casesensitive) |
154 | { | 158 | { |
155 | deliminatorChars = deliminator; | 159 | deliminatorChars = deliminator; |
156 | deliminatorLen = deliLen; | 160 | deliminatorLen = deliLen; |
157 | _caseSensitive=casesensitive; | 161 | _caseSensitive=casesensitive; |
158 | } | 162 | } |
159 | 163 | ||
160 | HlKeyword::~HlKeyword() { | 164 | HlKeyword::~HlKeyword() { |
161 | } | 165 | } |
162 | 166 | ||
163 | bool HlKeyword::startEnable(QChar c) | 167 | bool HlKeyword::startEnable(QChar c) |
164 | { | 168 | { |
165 | return ustrchr(deliminatorChars, deliminatorLen, c); | 169 | return ustrchr(deliminatorChars, deliminatorLen, c); |
166 | } | 170 | } |
167 | 171 | ||
168 | // If we use a dictionary for lookup we don't really need | 172 | // If we use a dictionary for lookup we don't really need |
169 | // an item as such we are using the key to lookup | 173 | // an item as such we are using the key to lookup |
170 | void HlKeyword::addWord(const QString &word) | 174 | void HlKeyword::addWord(const QString &word) |
171 | { | 175 | { |
172 | words.append(word); | 176 | words.append(word); |
173 | dict.insert(word,&trueBool); | 177 | dict.insert(word,&trueBool); |
174 | } | 178 | } |
175 | 179 | ||
176 | void HlKeyword::addList(const QStringList& list) | 180 | void HlKeyword::addList(const QStringList& list) |
177 | { | 181 | { |
178 | 182 | ||
179 | words+=list; | 183 | words+=list; |
180 | for(uint i=0;i<list.count();i++) dict.insert(list[i], &trueBool); | 184 | for(uint i=0;i<list.count();i++) dict.insert(list[i], &trueBool); |
181 | } | 185 | } |
182 | 186 | ||
183 | const QChar *HlKeyword::checkHgl(const QChar *s, int len, bool b) | 187 | const QChar *HlKeyword::checkHgl(const QChar *s, int len, bool b) |
184 | { | 188 | { |
185 | if (len == 0) return 0L; | 189 | if (len == 0) return 0L; |
186 | 190 | ||
187 | const QChar *s2 = s; | 191 | const QChar *s2 = s; |
188 | 192 | ||
189 | while ( (len > 0) && (!ustrchr(deliminatorChars, deliminatorLen, *s2)) ) | 193 | while ( (len > 0) && (!ustrchr(deliminatorChars, deliminatorLen, *s2)) ) |
190 | { | 194 | { |
191 | s2++; | 195 | s2++; |
192 | len--; | 196 | len--; |
193 | } | 197 | } |
194 | 198 | ||
195 | if (s2 == s) return 0L; | 199 | if (s2 == s) return 0L; |
196 | 200 | ||
197 | QString lookup = QString(s,s2-s); | 201 | QString lookup = QString(s,s2-s); |
198 | 202 | ||
199 | if ( dict.find(lookup) ) return s2; | 203 | if ( dict.find(lookup) ) return s2; |
200 | return 0L; | 204 | return 0L; |
201 | } | 205 | } |
202 | 206 | ||
203 | HlInt::HlInt(int attribute, int context) | 207 | HlInt::HlInt(int attribute, int context) |
204 | : HlItem(attribute,context) { | 208 | : HlItem(attribute,context) { |
205 | } | 209 | } |
206 | 210 | ||
207 | const QChar *HlInt::checkHgl(const QChar *str, int len, bool) { | 211 | const QChar *HlInt::checkHgl(const QChar *str, int len, bool) { |
208 | const QChar *s,*s1; | 212 | const QChar *s,*s1; |
209 | 213 | ||
210 | s = str; | 214 | s = str; |
211 | while (s->isDigit()) s++; | 215 | while (s->isDigit()) s++; |
212 | if (s > str) | 216 | if (s > str) |
213 | { | 217 | { |
214 | if (subItems) | 218 | if (subItems) |
215 | { | 219 | { |
216 | for (HlItem *it=subItems->first();it;it=subItems->next()) | 220 | for (HlItem *it=subItems->first();it;it=subItems->next()) |
217 | { | 221 | { |
218 | s1=it->checkHgl(s, len, false); | 222 | s1=it->checkHgl(s, len, false); |
219 | if (s1) return s1; | 223 | if (s1) return s1; |
220 | } | 224 | } |
221 | } | 225 | } |
222 | return s; | 226 | return s; |
223 | } | 227 | } |
224 | return 0L; | 228 | return 0L; |
225 | } | 229 | } |
226 | 230 | ||
227 | HlFloat::HlFloat(int attribute, int context) | 231 | HlFloat::HlFloat(int attribute, int context) |
228 | : HlItem(attribute,context) { | 232 | : HlItem(attribute,context) { |
229 | } | 233 | } |
230 | 234 | ||
231 | const QChar *HlFloat::checkHgl(const QChar *s, int len, bool) { | 235 | const QChar *HlFloat::checkHgl(const QChar *s, int len, bool) { |
232 | bool b, p; | 236 | bool b, p; |
233 | const QChar *s1; | 237 | const QChar *s1; |
234 | 238 | ||
235 | b = false; | 239 | b = false; |
236 | while (s->isDigit()){ | 240 | while (s->isDigit()){ |
237 | s++; | 241 | s++; |
238 | b = true; | 242 | b = true; |
239 | } | 243 | } |
240 | if (p = (*s == '.')) { | 244 | if (p = (*s == '.')) { |
241 | s++; | 245 | s++; |
242 | while (s->isDigit()) { | 246 | while (s->isDigit()) { |
243 | s++; | 247 | s++; |
244 | b = true; | 248 | b = true; |
245 | } | 249 | } |
246 | } | 250 | } |
247 | if (!b) return 0L; | 251 | if (!b) return 0L; |
248 | if ((*s&0xdf) == 'E') s++; | 252 | if ((*s&0xdf) == 'E') s++; |
249 | else | 253 | else |
250 | if (!p) return 0L; | 254 | if (!p) return 0L; |
251 | else | 255 | else |
252 | { | 256 | { |
253 | if (subItems) | 257 | if (subItems) |
254 | { | 258 | { |
255 | for (HlItem *it=subItems->first();it;it=subItems->next()) | 259 | for (HlItem *it=subItems->first();it;it=subItems->next()) |
256 | { | 260 | { |
257 | s1=it->checkHgl(s, len, false); | 261 | s1=it->checkHgl(s, len, false); |
258 | if (s1) return s1; | 262 | if (s1) return s1; |
259 | } | 263 | } |
260 | } | 264 | } |
261 | return s; | 265 | return s; |
262 | } | 266 | } |
263 | if ((*s == '-')||(*s =='+')) s++; | 267 | if ((*s == '-')||(*s =='+')) s++; |
264 | b = false; | 268 | b = false; |
265 | while (s->isDigit()) { | 269 | while (s->isDigit()) { |
266 | s++; | 270 | s++; |
267 | b = true; | 271 | b = true; |
268 | } | 272 | } |
269 | if (b) | 273 | if (b) |
270 | { | 274 | { |
271 | if (subItems) | 275 | if (subItems) |
272 | { | 276 | { |
273 | for (HlItem *it=subItems->first();it;it=subItems->next()) | 277 | for (HlItem *it=subItems->first();it;it=subItems->next()) |
274 | { | 278 | { |
275 | s1=it->checkHgl(s, len, false); | 279 | s1=it->checkHgl(s, len, false); |
276 | if (s1) return s1; | 280 | if (s1) return s1; |
277 | } | 281 | } |
278 | } | 282 | } |
279 | return s; | 283 | return s; |
280 | } | 284 | } |
281 | else return 0L; | 285 | else return 0L; |
282 | } | 286 | } |
283 | 287 | ||
284 | 288 | ||
285 | HlCInt::HlCInt(int attribute, int context) | 289 | HlCInt::HlCInt(int attribute, int context) |
286 | : HlInt(attribute,context) { | 290 | : HlInt(attribute,context) { |
287 | } | 291 | } |
288 | 292 | ||
289 | const QChar *HlCInt::checkHgl(const QChar *s, int len, bool lineStart) { | 293 | const QChar *HlCInt::checkHgl(const QChar *s, int len, bool lineStart) { |
290 | 294 | ||
291 | // if (*s == '0') s++; else s = HlInt::checkHgl(s); | 295 | // if (*s == '0') s++; else s = HlInt::checkHgl(s); |
292 | s = HlInt::checkHgl(s, len, lineStart); | 296 | s = HlInt::checkHgl(s, len, lineStart); |
293 | if (s != 0L) { | 297 | if (s != 0L) { |
294 | int l = 0; | 298 | int l = 0; |
295 | int u = 0; | 299 | int u = 0; |
296 | const QChar *str; | 300 | const QChar *str; |
297 | 301 | ||
298 | do { | 302 | do { |
299 | str = s; | 303 | str = s; |
300 | if ((*s&0xdf) == 'L' ) { | 304 | if ((*s&0xdf) == 'L' ) { |
301 | l++; | 305 | l++; |
302 | if (l > 2) return 0L; | 306 | if (l > 2) return 0L; |
303 | s++; | 307 | s++; |
304 | } | 308 | } |
305 | if ((*s&0xdf) == 'U' ){ | 309 | if ((*s&0xdf) == 'U' ){ |
306 | u++; | 310 | u++; |
307 | if (u > 1) return 0L; | 311 | if (u > 1) return 0L; |
308 | s++; | 312 | s++; |
309 | } | 313 | } |
310 | } while (s != str); | 314 | } while (s != str); |
311 | } | 315 | } |
312 | return s; | 316 | return s; |
313 | } | 317 | } |
314 | 318 | ||
315 | HlCOct::HlCOct(int attribute, int context) | 319 | HlCOct::HlCOct(int attribute, int context) |
316 | : HlItem(attribute,context) { | 320 | : HlItem(attribute,context) { |
317 | } | 321 | } |
318 | 322 | ||
319 | const QChar *HlCOct::checkHgl(const QChar *str, int len, bool) { | 323 | const QChar *HlCOct::checkHgl(const QChar *str, int len, bool) { |
320 | const QChar *s; | 324 | const QChar *s; |
321 | 325 | ||
322 | if (*str == '0') { | 326 | if (*str == '0') { |
323 | str++; | 327 | str++; |
324 | s = str; | 328 | s = str; |
325 | while (*s >= '0' && *s <= '7') s++; | 329 | while (*s >= '0' && *s <= '7') s++; |
326 | if (s > str) { | 330 | if (s > str) { |
327 | if ((*s&0xdf) == 'L' || (*s&0xdf) == 'U' ) s++; | 331 | if ((*s&0xdf) == 'L' || (*s&0xdf) == 'U' ) s++; |
328 | return s; | 332 | return s; |
329 | } | 333 | } |
330 | } | 334 | } |
331 | return 0L; | 335 | return 0L; |
332 | } | 336 | } |
333 | 337 | ||
334 | HlCHex::HlCHex(int attribute, int context) | 338 | HlCHex::HlCHex(int attribute, int context) |
335 | : HlItem(attribute,context) { | 339 | : HlItem(attribute,context) { |
336 | } | 340 | } |
337 | 341 | ||
338 | const QChar *HlCHex::checkHgl(const QChar *str, int len, bool) { | 342 | const QChar *HlCHex::checkHgl(const QChar *str, int len, bool) { |
339 | const QChar *s=str; | 343 | const QChar *s=str; |
340 | #if 0 | 344 | #if 0 |
341 | int i; | 345 | int i; |
342 | for (i=0;(*s)!='\0';s++,i++); | 346 | for (i=0;(*s)!='\0';s++,i++); |
343 | QString line(str,i); | 347 | QString line(str,i); |
344 | QRegExp3 rx("0[xX][a-fA-F\\d]+[UuLl]?"); // this matches but is also matching parenthesis | 348 | QRegExp3 rx("0[xX][a-fA-F\\d]+[UuLl]?"); // this matches but is also matching parenthesis |
345 | int pos=rx.search(line,0); | 349 | int pos=rx.search(line,0); |
346 | if(pos > -1) return str+rx.matchedLength(); | 350 | if(pos > -1) return str+rx.matchedLength(); |
347 | else | 351 | else |
348 | return 0L; | 352 | return 0L; |
349 | 353 | ||
350 | #else | 354 | #else |
351 | if (str[0] == '0' && ((str[1]&0xdf) == 'X' )) { | 355 | if (str[0] == '0' && ((str[1]&0xdf) == 'X' )) { |
352 | str += 2; | 356 | str += 2; |
353 | s = str; | 357 | s = str; |
354 | while (s->isDigit() || ((*s&0xdf) >= 'A' && (*s&0xdf) <= 'F') /*|| (*s >= 'a' && *s <= 'f')*/) s++; | 358 | while (s->isDigit() || ((*s&0xdf) >= 'A' && (*s&0xdf) <= 'F') /*|| (*s >= 'a' && *s <= 'f')*/) s++; |
355 | if (s > str) { | 359 | if (s > str) { |
356 | if ((*s&0xdf) == 'L' || (*s&0xdf) == 'U' ) s++; | 360 | if ((*s&0xdf) == 'L' || (*s&0xdf) == 'U' ) s++; |
357 | return s; | 361 | return s; |
358 | } | 362 | } |
359 | } | 363 | } |
360 | return 0L; | 364 | return 0L; |
361 | #endif | 365 | #endif |
362 | } | 366 | } |
363 | 367 | ||
364 | HlCFloat::HlCFloat(int attribute, int context) | 368 | HlCFloat::HlCFloat(int attribute, int context) |
365 | : HlFloat(attribute,context) { | 369 | : HlFloat(attribute,context) { |
366 | } | 370 | } |
367 | 371 | ||
368 | const QChar *HlCFloat::checkHgl(const QChar *s, int len, bool lineStart) { | 372 | const QChar *HlCFloat::checkHgl(const QChar *s, int len, bool lineStart) { |
369 | 373 | ||
370 | s = HlFloat::checkHgl(s, len, lineStart); | 374 | s = HlFloat::checkHgl(s, len, lineStart); |
371 | if (s && ((*s&0xdf) == 'F' )) s++; | 375 | if (s && ((*s&0xdf) == 'F' )) s++; |
372 | return s; | 376 | return s; |
373 | } | 377 | } |
374 | 378 | ||
375 | HlAnyChar::HlAnyChar(int attribute, int context, const QChar* charList, uint len) | 379 | HlAnyChar::HlAnyChar(int attribute, int context, const QChar* charList, uint len) |
376 | : HlItem(attribute, context) { | 380 | : HlItem(attribute, context) { |
377 | _charList=charList; | 381 | _charList=charList; |
378 | _charListLen=len; | 382 | _charListLen=len; |
379 | } | 383 | } |
380 | 384 | ||
381 | const QChar *HlAnyChar::checkHgl(const QChar *s, int len, bool) | 385 | const QChar *HlAnyChar::checkHgl(const QChar *s, int len, bool) |
382 | { | 386 | { |
383 | if (ustrchr(_charList, _charListLen, *s)) return s +1; | 387 | if (ustrchr(_charList, _charListLen, *s)) return s +1; |
384 | return 0L; | 388 | return 0L; |
385 | } | 389 | } |
386 | 390 | ||
387 | HlRegExpr::HlRegExpr(int attribute, int context,QString regexp) | 391 | HlRegExpr::HlRegExpr(int attribute, int context,QString regexp) |
388 | : HlItem(attribute, context) { | 392 | : HlItem(attribute, context) { |
389 | 393 | ||
390 | handlesLinestart=regexp.startsWith("^"); | 394 | handlesLinestart=regexp.startsWith("^"); |
391 | if(!handlesLinestart) regexp.prepend("^"); | 395 | if(!handlesLinestart) regexp.prepend("^"); |
392 | Expr=new QRegExp3(regexp); | 396 | Expr=new QRegExp3(regexp); |
393 | } | 397 | } |
394 | 398 | ||
395 | const QChar *HlRegExpr::checkHgl(const QChar *s, int len, bool lineStart) | 399 | const QChar *HlRegExpr::checkHgl(const QChar *s, int len, bool lineStart) |
396 | { | 400 | { |
397 | if ((!lineStart) && handlesLinestart) return 0; | 401 | if ((!lineStart) && handlesLinestart) return 0; |
398 | 402 | ||
399 | QString line(s,len); | 403 | QString line(s,len); |
400 | int pos = Expr->search( line, 0 ); | 404 | int pos = Expr->search( line, 0 ); |
401 | if (pos==-1) return 0L; | 405 | if (pos==-1) return 0L; |
402 | else | 406 | else |
403 | return (s+Expr->matchedLength()); | 407 | return (s+Expr->matchedLength()); |
404 | }; | 408 | }; |
405 | 409 | ||
406 | 410 | ||
407 | HlLineContinue::HlLineContinue(int attribute, int context) | 411 | HlLineContinue::HlLineContinue(int attribute, int context) |
408 | : HlItem(attribute,context) { | 412 | : HlItem(attribute,context) { |
409 | } | 413 | } |
410 | 414 | ||
411 | const QChar *HlLineContinue::checkHgl(const QChar *s, int len, bool) { | 415 | const QChar *HlLineContinue::checkHgl(const QChar *s, int len, bool) { |
412 | 416 | ||
413 | if ((s[0].latin1() == '\\') && (len == 1)) | 417 | if ((s[0].latin1() == '\\') && (len == 1)) |
414 | { | 418 | { |
415 | return s + 1; | 419 | return s + 1; |
416 | } | 420 | } |
417 | return 0L; | 421 | return 0L; |
418 | } | 422 | } |
419 | 423 | ||
420 | 424 | ||
421 | HlCStringChar::HlCStringChar(int attribute, int context) | 425 | HlCStringChar::HlCStringChar(int attribute, int context) |
422 | : HlItem(attribute,context) { | 426 | : HlItem(attribute,context) { |
423 | } | 427 | } |
424 | 428 | ||
425 | //checks for hex and oct (for example \x1b or \033) | 429 | //checks for hex and oct (for example \x1b or \033) |
426 | const QChar *checkCharHexOct(const QChar *str) { | 430 | const QChar *checkCharHexOct(const QChar *str) { |
427 | const QChar *s; | 431 | const QChar *s; |
428 | s=str; | 432 | s=str; |
429 | int n; | 433 | int n; |
430 | if (*s == 'x') { | 434 | if (*s == 'x') { |
431 | n = 0; | 435 | n = 0; |
432 | do { | 436 | do { |
433 | s++; | 437 | s++; |
434 | n *= 16; | 438 | n *= 16; |
435 | if (s->isDigit()) n += *s - '0'; | 439 | if (s->isDigit()) n += *s - '0'; |
436 | else if ((*s&0xdf) >= 'A' && (*s&0xdf) <= 'F') n += (*s&0xdf) - 'A' + 10; | 440 | else if ((*s&0xdf) >= 'A' && (*s&0xdf) <= 'F') n += (*s&0xdf) - 'A' + 10; |
437 | // else if (*s >= 'a' && *s <= 'f') n += *s - 'a' + 10; | 441 | // else if (*s >= 'a' && *s <= 'f') n += *s - 'a' + 10; |
438 | else break; | 442 | else break; |
439 | if (n >= 256) return 0L; | 443 | if (n >= 256) return 0L; |
440 | } while (true); | 444 | } while (true); |
441 | if (s - str == 1) return 0L; | 445 | if (s - str == 1) return 0L; |
442 | } else { | 446 | } else { |
443 | if (!(*s >= '0' && *s <= '7')) return 0L; | 447 | if (!(*s >= '0' && *s <= '7')) return 0L; |
444 | n = *s - '0'; | 448 | n = *s - '0'; |
445 | do { | 449 | do { |
446 | s++; | 450 | s++; |
447 | n *= 8; | 451 | n *= 8; |
448 | if (*s >= '0' && *s <= '7') n += *s - '0'; else break; | 452 | if (*s >= '0' && *s <= '7') n += *s - '0'; else break; |
449 | if (n >= 256) return s; | 453 | if (n >= 256) return s; |
450 | } while (s - str < 3); | 454 | } while (s - str < 3); |
451 | } | 455 | } |
452 | return s; | 456 | return s; |
453 | } | 457 | } |
454 | // checks for C escaped chars \n and escaped hex/octal chars | 458 | // checks for C escaped chars \n and escaped hex/octal chars |
455 | const QChar *checkEscapedChar(const QChar *s, int len) { | 459 | const QChar *checkEscapedChar(const QChar *s, int len) { |
456 | int i; | 460 | int i; |
457 | if (s[0] == '\\' && (len > 1) ) { | 461 | if (s[0] == '\\' && (len > 1) ) { |
458 | s++; | 462 | s++; |
459 | switch(*s){ | 463 | switch(*s){ |
460 | case 'a': // checks for control chars | 464 | case 'a': // checks for control chars |
461 | case 'b': // we want to fall through | 465 | case 'b': // we want to fall through |
462 | case 'e': | 466 | case 'e': |
463 | case 'f': | 467 | case 'f': |
464 | 468 | ||
465 | case 'n': | 469 | case 'n': |
466 | case 'r': | 470 | case 'r': |
467 | case 't': | 471 | case 't': |
468 | case 'v': | 472 | case 'v': |
469 | case '\'': | 473 | case '\'': |
470 | case '\"': | 474 | case '\"': |
471 | case '?' : // added ? ANSI C classifies this as an escaped char | 475 | case '?' : // added ? ANSI C classifies this as an escaped char |
472 | case '\\': s++; | 476 | case '\\': s++; |
473 | break; | 477 | break; |
474 | case 'x': // if it's like \xff | 478 | case 'x': // if it's like \xff |
475 | s++; // eat the x | 479 | s++; // eat the x |
476 | // these for loops can probably be | 480 | // these for loops can probably be |
477 | // replaced with something else but | 481 | // replaced with something else but |
478 | // for right now they work | 482 | // for right now they work |
479 | // check for hexdigits | 483 | // check for hexdigits |
480 | for(i=0;i<2 &&(*s >= '0' && *s <= '9' || (*s&0xdf) >= 'A' && (*s&0xdf) <= 'F');i++,s++); | 484 | for(i=0;i<2 &&(*s >= '0' && *s <= '9' || (*s&0xdf) >= 'A' && (*s&0xdf) <= 'F');i++,s++); |
481 | if(i==0) return 0L; // takes care of case '\x' | 485 | if(i==0) return 0L; // takes care of case '\x' |
482 | break; | 486 | break; |
483 | 487 | ||
484 | case '0': case '1': case '2': case '3' : | 488 | case '0': case '1': case '2': case '3' : |
485 | case '4': case '5': case '6': case '7' : | 489 | case '4': case '5': case '6': case '7' : |
486 | for(i=0;i < 3 &&(*s >='0'&& *s<='7');i++,s++); | 490 | for(i=0;i < 3 &&(*s >='0'&& *s<='7');i++,s++); |
487 | break; | 491 | break; |
488 | default: return 0L; | 492 | default: return 0L; |
489 | } | 493 | } |
490 | return s; | 494 | return s; |
491 | } | 495 | } |
492 | return 0L; | 496 | return 0L; |
493 | } | 497 | } |
494 | 498 | ||
495 | const QChar *HlCStringChar::checkHgl(const QChar *str, int len, bool) { | 499 | const QChar *HlCStringChar::checkHgl(const QChar *str, int len, bool) { |
496 | return checkEscapedChar(str, len); | 500 | return checkEscapedChar(str, len); |
497 | } | 501 | } |
498 | 502 | ||
499 | 503 | ||
500 | HlCChar::HlCChar(int attribute, int context) | 504 | HlCChar::HlCChar(int attribute, int context) |
501 | : HlItem(attribute,context) { | 505 | : HlItem(attribute,context) { |
502 | } | 506 | } |
503 | 507 | ||
504 | const QChar *HlCChar::checkHgl(const QChar *str, int len, bool) { | 508 | const QChar *HlCChar::checkHgl(const QChar *str, int len, bool) { |
505 | const QChar *s; | 509 | const QChar *s; |
506 | 510 | ||
507 | if ((len > 1) && (str[0] == '\'') && (str[1] != '\'')) | 511 | if ((len > 1) && (str[0] == '\'') && (str[1] != '\'')) |
508 | { | 512 | { |
509 | s = checkEscapedChar(&str[1], len); //try to match escaped char | 513 | s = checkEscapedChar(&str[1], len); //try to match escaped char |
510 | if (!s) s = &str[2]; //match single non-escaped char | 514 | if (!s) s = &str[2]; //match single non-escaped char |
511 | if (*s == '\'') return s + 1; | 515 | if (*s == '\'') return s + 1; |
512 | } | 516 | } |
513 | return 0L; | 517 | return 0L; |
514 | } | 518 | } |
515 | 519 | ||
516 | 520 | ||
517 | //-------- | 521 | //-------- |
518 | ItemStyle::ItemStyle() : selCol(Qt::white), bold(false), italic(false) { | 522 | ItemStyle::ItemStyle() : selCol(Qt::white), bold(false), italic(false) { |
519 | } | 523 | } |
520 | 524 | ||
521 | ItemStyle::ItemStyle(const QColor &col, const QColor &selCol, | 525 | ItemStyle::ItemStyle(const QColor &col, const QColor &selCol, |
522 | bool bold, bool italic) | 526 | bool bold, bool italic) |
523 | : col(col), selCol(selCol), bold(bold), italic(italic) { | 527 | : col(col), selCol(selCol), bold(bold), italic(italic) { |
524 | } | 528 | } |
525 | 529 | ||
526 | ItemData::ItemData(const QString name, int defStyleNum) | 530 | ItemData::ItemData(const QString name, int defStyleNum) |
527 | : name(name), defStyleNum(defStyleNum), defStyle(true) { | 531 | : name(name), defStyleNum(defStyleNum), defStyle(true) { |
528 | } | 532 | } |
529 | 533 | ||
530 | ItemData::ItemData(const QString name, int defStyleNum, | 534 | ItemData::ItemData(const QString name, int defStyleNum, |
531 | const QColor &col, const QColor &selCol, bool bold, bool italic) | 535 | const QColor &col, const QColor &selCol, bool bold, bool italic) |
532 | : ItemStyle(col,selCol,bold,italic), name(name), defStyleNum(defStyleNum), | 536 | : ItemStyle(col,selCol,bold,italic), name(name), defStyleNum(defStyleNum), |
533 | defStyle(false) { | 537 | defStyle(false) { |
534 | } | 538 | } |
535 | 539 | ||
536 | HlData::HlData(const QString &wildcards, const QString &mimetypes, const QString &identifier) | 540 | HlData::HlData(const QString &wildcards, const QString &mimetypes, const QString &identifier) |
537 | : wildcards(wildcards), mimetypes(mimetypes), identifier(identifier) { | 541 | : wildcards(wildcards), mimetypes(mimetypes), identifier(identifier) { |
538 | 542 | ||
539 | //JW itemDataList.setAutoDelete(true); | 543 | //JW itemDataList.setAutoDelete(true); |
540 | } | 544 | } |
541 | 545 | ||
542 | HlContext::HlContext(int attribute, int lineEndContext, int _lineBeginContext) | 546 | HlContext::HlContext(int attribute, int lineEndContext, int _lineBeginContext) |
543 | : attr(attribute), ctx(lineEndContext),lineBeginContext(_lineBeginContext) { | 547 | : attr(attribute), ctx(lineEndContext),lineBeginContext(_lineBeginContext) { |
544 | items.setAutoDelete(true); | 548 | items.setAutoDelete(true); |
545 | } | 549 | } |
546 | 550 | ||
547 | Hl2CharDetect::Hl2CharDetect(int attribute, int context, const QChar *s) | 551 | Hl2CharDetect::Hl2CharDetect(int attribute, int context, const QChar *s) |
548 | : HlItem(attribute,context) { | 552 | : HlItem(attribute,context) { |
549 | sChar1 = s[0]; | 553 | sChar1 = s[0]; |
550 | sChar2 = s[1]; | 554 | sChar2 = s[1]; |
551 | } | 555 | } |
552 | 556 | ||
553 | Highlight::Highlight(syntaxModeListItem *def) : refCount(0) | 557 | Highlight::Highlight(syntaxModeListItem *def) : refCount(0) |
554 | { | 558 | { |
555 | noHl = false; | 559 | noHl = false; |
556 | 560 | ||
557 | if (def == 0) | 561 | if (def == 0) |
558 | { | 562 | { |
559 | noHl = true; | 563 | noHl = true; |
560 | iName = I18N_NOOP("Normal"); | 564 | iName = I18N_NOOP("Normal"); |
561 | iSection = ""; | 565 | iSection = ""; |
562 | } | 566 | } |
563 | else | 567 | else |
564 | { | 568 | { |
565 | iName = def->name; | 569 | iName = def->name; |
566 | iSection = def->section; | 570 | iSection = def->section; |
567 | iWildcards = def->extension; | 571 | iWildcards = def->extension; |
568 | iMimetypes = def->mimetype; | 572 | iMimetypes = def->mimetype; |
569 | identifier = def->identifier; | 573 | identifier = def->identifier; |
570 | } | 574 | } |
571 | deliminator = stdDeliminator; | 575 | deliminator = stdDeliminator; |
572 | deliminatorChars = deliminator.unicode(); | 576 | deliminatorChars = deliminator.unicode(); |
573 | deliminatorLen = deliminator.length(); | 577 | deliminatorLen = deliminator.length(); |
574 | } | 578 | } |
575 | 579 | ||
576 | Highlight::~Highlight() | 580 | Highlight::~Highlight() |
577 | { | 581 | { |
578 | } | 582 | } |
579 | 583 | ||
580 | int Highlight::doHighlight(int ctxNum, TextLine *textLine) | 584 | int Highlight::doHighlight(int ctxNum, TextLine *textLine) |
581 | { | 585 | { |
582 | if (noHl) | 586 | if (noHl) |
583 | { | 587 | { |
584 | textLine->setAttribs(0,0,textLine->length()); | 588 | textLine->setAttribs(0,0,textLine->length()); |
585 | textLine->setAttr(0); | 589 | textLine->setAttr(0); |
586 | return 0; | 590 | return 0; |
587 | } | 591 | } |
588 | 592 | ||
589 | HlContext *context; | 593 | HlContext *context; |
590 | const QChar *s2; | 594 | const QChar *s2; |
591 | HlItem *item; | 595 | HlItem *item; |
592 | 596 | ||
593 | context = contextList[ctxNum]; | 597 | context = contextList[ctxNum]; |
594 | if (context->lineBeginContext!=-1) | 598 | if (context->lineBeginContext!=-1) |
595 | { | 599 | { |
596 | ctxNum=context->lineBeginContext; | 600 | ctxNum=context->lineBeginContext; |
597 | context=contextList[ctxNum]; | 601 | context=contextList[ctxNum]; |
598 | } | 602 | } |
599 | 603 | ||
600 | QChar lastChar = ' '; | 604 | QChar lastChar = ' '; |
601 | 605 | ||
602 | // first char | 606 | // first char |
603 | const QChar *str = textLine->getText(); | 607 | const QChar *str = textLine->getText(); |
604 | 608 | ||
605 | // non space char - index of that char | 609 | // non space char - index of that char |
606 | const QChar *s1 = textLine->firstNonSpace(); | 610 | const QChar *s1 = textLine->firstNonSpace(); |
607 | uint z = textLine->firstChar(); | 611 | uint z = textLine->firstChar(); |
608 | 612 | ||
609 | // length of textline | 613 | // length of textline |
610 | uint len = textLine->length(); | 614 | uint len = textLine->length(); |
611 | 615 | ||
612 | bool found = false; | 616 | bool found = false; |
613 | while (z < len) | 617 | while (z < len) |
614 | { | 618 | { |
615 | found = false; | 619 | found = false; |
616 | 620 | ||
617 | for (item = context->items.first(); item != 0L; item = context->items.next()) | 621 | for (item = context->items.first(); item != 0L; item = context->items.next()) |
618 | { | 622 | { |
619 | if (item->startEnable(lastChar)) | 623 | if (item->startEnable(lastChar)) |
620 | { | 624 | { |
621 | s2 = item->checkHgl(s1, len-z, z==0); | 625 | s2 = item->checkHgl(s1, len-z, z==0); |
622 | if (s2 > s1) | 626 | if (s2 > s1) |
623 | { | 627 | { |
624 | qDebug("An item has been detected"); | 628 | odebug << "An item has been detected" << oendl; |
625 | textLine->setAttribs(item->attr,s1 - str,s2 - str); | 629 | textLine->setAttribs(item->attr,s1 - str,s2 - str); |
626 | ctxNum = item->ctx; | 630 | ctxNum = item->ctx; |
627 | context = contextList[ctxNum]; | 631 | context = contextList[ctxNum]; |
628 | z = z + s2 - s1 - 1; | 632 | z = z + s2 - s1 - 1; |
629 | s1 = s2 - 1; | 633 | s1 = s2 - 1; |
630 | found = true; | 634 | found = true; |
631 | break; | 635 | break; |
632 | } | 636 | } |
633 | } | 637 | } |
634 | } | 638 | } |
635 | 639 | ||
636 | // nothing found: set attribute of one char | 640 | // nothing found: set attribute of one char |
637 | if (!found) | 641 | if (!found) |
638 | textLine->setAttribs(context->attr,s1 - str,s1 - str + 1); | 642 | textLine->setAttribs(context->attr,s1 - str,s1 - str + 1); |
639 | 643 | ||
640 | lastChar = *s1; | 644 | lastChar = *s1; |
641 | s1++; | 645 | s1++; |
642 | z++; | 646 | z++; |
643 | } | 647 | } |
644 | 648 | ||
645 | //set "end of line"-properties | 649 | //set "end of line"-properties |
646 | textLine->setAttr(context->attr); | 650 | textLine->setAttr(context->attr); |
647 | 651 | ||
648 | //return new context | 652 | //return new context |
649 | return context->ctx; | 653 | return context->ctx; |
650 | } | 654 | } |
651 | 655 | ||
652 | KateConfig *Highlight::getKateConfig() { | 656 | KateConfig *Highlight::getKateConfig() { |
653 | KateConfig *config; | 657 | KateConfig *config; |
654 | config=KGlobal::config(); | 658 | config=KGlobal::config(); |
655 | config->setGroup(iName + QString(" Highlight")); | 659 | config->setGroup(iName + QString(" Highlight")); |
656 | return config; | 660 | return config; |
657 | } | 661 | } |
658 | 662 | ||
659 | QString Highlight::getWildcards() { | 663 | QString Highlight::getWildcards() { |
660 | KateConfig *config; | 664 | KateConfig *config; |
661 | 665 | ||
662 | config = getKateConfig(); | 666 | config = getKateConfig(); |
663 | 667 | ||
664 | //if wildcards not yet in config, then use iWildCards as default | 668 | //if wildcards not yet in config, then use iWildCards as default |
665 | return config->readEntry("Wildcards", iWildcards); | 669 | return config->readEntry("Wildcards", iWildcards); |
666 | } | 670 | } |
667 | 671 | ||
668 | 672 | ||
669 | QString Highlight::getMimetypes() { | 673 | QString Highlight::getMimetypes() { |
670 | KateConfig *config; | 674 | KateConfig *config; |
671 | 675 | ||
672 | config = getKateConfig(); | 676 | config = getKateConfig(); |
673 | 677 | ||
674 | return config->readEntry("Mimetypes", iMimetypes); | 678 | return config->readEntry("Mimetypes", iMimetypes); |
675 | } | 679 | } |
676 | 680 | ||
677 | 681 | ||
678 | HlData *Highlight::getData() { | 682 | HlData *Highlight::getData() { |
679 | KateConfig *config; | 683 | KateConfig *config; |
680 | HlData *hlData; | 684 | HlData *hlData; |
681 | 685 | ||
682 | config = getKateConfig(); | 686 | config = getKateConfig(); |
683 | 687 | ||
684 | // iWildcards = config->readEntry("Wildcards"); | 688 | // iWildcards = config->readEntry("Wildcards"); |
685 | // iMimetypes = config->readEntry("Mimetypes"); | 689 | // iMimetypes = config->readEntry("Mimetypes"); |
686 | // hlData = new HlData(iWildcards,iMimetypes); | 690 | // hlData = new HlData(iWildcards,iMimetypes); |
687 | hlData = new HlData( | 691 | hlData = new HlData( |
688 | config->readEntry("Wildcards", iWildcards), | 692 | config->readEntry("Wildcards", iWildcards), |
689 | config->readEntry("Mimetypes", iMimetypes), | 693 | config->readEntry("Mimetypes", iMimetypes), |
690 | config->readEntry("Identifier", identifier)); | 694 | config->readEntry("Identifier", identifier)); |
691 | getItemDataList(hlData->itemDataList, config); | 695 | getItemDataList(hlData->itemDataList, config); |
692 | return hlData; | 696 | return hlData; |
693 | } | 697 | } |
694 | 698 | ||
695 | void Highlight::setData(HlData *hlData) { | 699 | void Highlight::setData(HlData *hlData) { |
696 | KateConfig *config; | 700 | KateConfig *config; |
697 | 701 | ||
698 | config = getKateConfig(); | 702 | config = getKateConfig(); |
699 | 703 | ||
700 | // iWildcards = hlData->wildcards; | 704 | // iWildcards = hlData->wildcards; |
701 | // iMimetypes = hlData->mimetypes; | 705 | // iMimetypes = hlData->mimetypes; |
702 | 706 | ||
703 | config->writeEntry("Wildcards",hlData->wildcards); | 707 | config->writeEntry("Wildcards",hlData->wildcards); |
704 | config->writeEntry("Mimetypes",hlData->mimetypes); | 708 | config->writeEntry("Mimetypes",hlData->mimetypes); |
705 | 709 | ||
706 | setItemDataList(hlData->itemDataList,config); | 710 | setItemDataList(hlData->itemDataList,config); |
707 | } | 711 | } |
708 | 712 | ||
709 | void Highlight::getItemDataList(ItemDataList &list) { | 713 | void Highlight::getItemDataList(ItemDataList &list) { |
710 | KateConfig *config; | 714 | KateConfig *config; |
711 | 715 | ||
712 | config = getKateConfig(); | 716 | config = getKateConfig(); |
713 | getItemDataList(list, config); | 717 | getItemDataList(list, config); |
714 | } | 718 | } |
715 | 719 | ||
716 | void Highlight::getItemDataList(ItemDataList &list, KateConfig *config) { | 720 | void Highlight::getItemDataList(ItemDataList &list, KateConfig *config) { |
717 | ItemData *p; | 721 | ItemData *p; |
718 | QString s; | 722 | QString s; |
719 | QRgb col, selCol; | 723 | QRgb col, selCol; |
720 | 724 | ||
721 | list.clear(); | 725 | list.clear(); |
722 | //JW list.setAutoDelete(true); | 726 | //JW list.setAutoDelete(true); |
723 | createItemData(list); | 727 | createItemData(list); |
724 | 728 | ||
725 | for (p = list.first(); p != 0L; p = list.next()) { | 729 | for (p = list.first(); p != 0L; p = list.next()) { |
726 | s = config->readEntry(p->name); | 730 | s = config->readEntry(p->name); |
727 | if (!s.isEmpty()) { | 731 | if (!s.isEmpty()) { |
728 | sscanf(s.latin1(),"%d,%X,%X,%d,%d", &p->defStyle,&col,&selCol,&p->bold,&p->italic); | 732 | sscanf(s.latin1(),"%d,%X,%X,%d,%d", &p->defStyle,&col,&selCol,&p->bold,&p->italic); |
729 | p->col.setRgb(col); | 733 | p->col.setRgb(col); |
730 | p->selCol.setRgb(selCol); | 734 | p->selCol.setRgb(selCol); |
731 | } | 735 | } |
732 | } | 736 | } |
733 | } | 737 | } |
734 | 738 | ||
735 | /******************************************************************************************* | 739 | /******************************************************************************************* |
736 | Highlight - setItemDataList | 740 | Highlight - setItemDataList |
737 | saves the ItemData / attribute / style definitions to the apps configfile. | 741 | saves the ItemData / attribute / style definitions to the apps configfile. |
738 | Especially needed for user overridden values. | 742 | Especially needed for user overridden values. |
739 | 743 | ||
740 | * input: ItemDataList &list :reference to the list, whose | 744 | * input: ItemDataList &list :reference to the list, whose |
741 | * items should be saved | 745 | * items should be saved |
742 | * KateConfig *config :Pointer KDE configuration | 746 | * KateConfig *config :Pointer KDE configuration |
743 | * class, which should be used | 747 | * class, which should be used |
744 | * as storage | 748 | * as storage |
745 | ************* | 749 | ************* |
746 | * output: none | 750 | * output: none |
747 | ************* | 751 | ************* |
748 | * return value: none | 752 | * return value: none |
749 | *******************************************************************************************/ | 753 | *******************************************************************************************/ |
750 | 754 | ||
751 | void Highlight::setItemDataList(ItemDataList &list, KateConfig *config) { | 755 | void Highlight::setItemDataList(ItemDataList &list, KateConfig *config) { |
752 | ItemData *p; | 756 | ItemData *p; |
753 | QString s; | 757 | QString s; |
754 | 758 | ||
755 | for (p = list.first(); p != 0L; p = list.next()) { | 759 | for (p = list.first(); p != 0L; p = list.next()) { |
756 | s.sprintf("%d,%X,%X,%d,%d", | 760 | s.sprintf("%d,%X,%X,%d,%d", |
757 | p->defStyle,p->col.rgb(),p->selCol.rgb(),p->bold,p->italic); | 761 | p->defStyle,p->col.rgb(),p->selCol.rgb(),p->bold,p->italic); |
758 | config->writeEntry(p->name,s); | 762 | config->writeEntry(p->name,s); |
759 | } | 763 | } |
760 | } | 764 | } |
761 | 765 | ||
762 | 766 | ||
763 | /******************************************************************************************* | 767 | /******************************************************************************************* |
764 | Highlight - use | 768 | Highlight - use |
765 | Increase the usage count and trigger initialization if needed | 769 | Increase the usage count and trigger initialization if needed |
766 | 770 | ||
767 | * input: none | 771 | * input: none |
768 | ************* | 772 | ************* |
769 | * output: none | 773 | * output: none |
770 | ************* | 774 | ************* |
771 | * return value: none | 775 | * return value: none |
772 | *******************************************************************************************/ | 776 | *******************************************************************************************/ |
773 | 777 | ||
774 | void Highlight::use() | 778 | void Highlight::use() |
775 | { | 779 | { |
776 | if (refCount == 0) init(); | 780 | if (refCount == 0) init(); |
777 | refCount++; | 781 | refCount++; |
778 | } | 782 | } |
779 | 783 | ||
780 | 784 | ||
781 | /******************************************************************************************* | 785 | /******************************************************************************************* |
782 | Highlight - release | 786 | Highlight - release |
783 | Decrease the usage count and trigger a cleanup if needed | 787 | Decrease the usage count and trigger a cleanup if needed |
784 | 788 | ||
785 | * input: none | 789 | * input: none |
786 | ************* | 790 | ************* |
787 | * output: none | 791 | * output: none |
788 | ************* | 792 | ************* |
789 | * return value: none | 793 | * return value: none |
790 | *******************************************************************************************/ | 794 | *******************************************************************************************/ |
791 | 795 | ||
792 | void Highlight::release() | 796 | void Highlight::release() |
793 | { | 797 | { |
794 | refCount--; | 798 | refCount--; |
795 | if (refCount == 0) done(); | 799 | if (refCount == 0) done(); |
796 | } | 800 | } |
797 | 801 | ||
798 | /******************************************************************************************* | 802 | /******************************************************************************************* |
799 | Highlight - init | 803 | Highlight - init |
800 | If it's the first time a particular highlighting is used create the needed contextlist | 804 | If it's the first time a particular highlighting is used create the needed contextlist |
801 | 805 | ||
802 | * input: none | 806 | * input: none |
803 | ************* | 807 | ************* |
804 | * output: none | 808 | * output: none |
805 | ************* | 809 | ************* |
806 | * return value: none | 810 | * return value: none |
807 | *******************************************************************************************/ | 811 | *******************************************************************************************/ |
808 | 812 | ||
809 | void Highlight::init() | 813 | void Highlight::init() |
810 | { | 814 | { |
811 | if (noHl) | 815 | if (noHl) |
812 | return; | 816 | return; |
813 | 817 | ||
814 | for (int z = 0; z < nContexts; z++) contextList[z] = 0L; | 818 | for (int z = 0; z < nContexts; z++) contextList[z] = 0L; |
815 | makeContextList(); | 819 | makeContextList(); |
816 | } | 820 | } |
817 | 821 | ||
818 | 822 | ||
819 | /******************************************************************************************* | 823 | /******************************************************************************************* |
820 | Highlight - done | 824 | Highlight - done |
821 | If the there is no document using the highlighting style free the complete context | 825 | If the there is no document using the highlighting style free the complete context |
822 | structure. | 826 | structure. |
823 | 827 | ||
824 | * input: none | 828 | * input: none |
825 | ************* | 829 | ************* |
826 | * output: none | 830 | * output: none |
827 | ************* | 831 | ************* |
828 | * return value: none | 832 | * return value: none |
829 | *******************************************************************************************/ | 833 | *******************************************************************************************/ |
830 | 834 | ||
831 | void Highlight::done() | 835 | void Highlight::done() |
832 | { | 836 | { |
833 | if (noHl) | 837 | if (noHl) |
834 | return; | 838 | return; |
835 | 839 | ||
836 | for (int z = 0; z < nContexts; z++) delete contextList[z]; | 840 | for (int z = 0; z < nContexts; z++) delete contextList[z]; |
837 | } | 841 | } |
838 | 842 | ||
839 | 843 | ||
840 | /******************************************************************************************* | 844 | /******************************************************************************************* |
841 | Highlight - createItemData | 845 | Highlight - createItemData |
842 | This function reads the itemData entries from the config file, which specifies the | 846 | This function reads the itemData entries from the config file, which specifies the |
843 | default attribute styles for matched items/contexts. | 847 | default attribute styles for matched items/contexts. |
844 | 848 | ||
845 | * input: none | 849 | * input: none |
846 | ************* | 850 | ************* |
847 | * output: ItemDataList &list :A reference to the internal | 851 | * output: ItemDataList &list :A reference to the internal |
848 | list containing the parsed | 852 | list containing the parsed |
849 | default config | 853 | default config |
850 | ************* | 854 | ************* |
851 | * return value: none | 855 | * return value: none |
852 | *******************************************************************************************/ | 856 | *******************************************************************************************/ |
853 | 857 | ||
854 | void Highlight::createItemData(ItemDataList &list) | 858 | void Highlight::createItemData(ItemDataList &list) |
855 | { | 859 | { |
856 | qDebug("Highlight::createItemData"); | 860 | odebug << "Highlight::createItemData" << oendl; |
857 | 861 | ||
858 | // If no highlighting is selected we need only one default. | 862 | // If no highlighting is selected we need only one default. |
859 | if (noHl) | 863 | if (noHl) |
860 | { | 864 | { |
861 | list.append(new ItemData(I18N_NOOP("Normal Text"), dsNormal)); | 865 | list.append(new ItemData(I18N_NOOP("Normal Text"), dsNormal)); |
862 | return; | 866 | return; |
863 | } | 867 | } |
864 | 868 | ||
865 | QString color; | 869 | QString color; |
866 | QString selColor; | 870 | QString selColor; |
867 | QString bold; | 871 | QString bold; |
868 | QString italic; | 872 | QString italic; |
869 | 873 | ||
870 | // If the internal list isn't already available read the config file | 874 | // If the internal list isn't already available read the config file |
871 | if (internalIDList.count()==0) | 875 | if (internalIDList.count()==0) |
872 | { | 876 | { |
873 | //if all references to the list are destried the contents will also be deleted | 877 | //if all references to the list are destried the contents will also be deleted |
874 | internalIDList.setAutoDelete(true); | 878 | internalIDList.setAutoDelete(true); |
875 | syntaxContextData *data; | 879 | syntaxContextData *data; |
876 | 880 | ||
877 | qDebug("Trying to read itemData section"); | 881 | odebug << "Trying to read itemData section" << oendl; |
878 | 882 | ||
879 | //Tell the syntax document class which file we want to parse and which data group | 883 | //Tell the syntax document class which file we want to parse and which data group |
880 | HlManager::self()->syntax->setIdentifier(identifier); | 884 | HlManager::self()->syntax->setIdentifier(identifier); |
881 | data=HlManager::self()->syntax->getGroupInfo("highlighting","itemData"); | 885 | data=HlManager::self()->syntax->getGroupInfo("highlighting","itemData"); |
882 | //begin with the real parsing | 886 | //begin with the real parsing |
883 | while (HlManager::self()->syntax->nextGroup(data)) | 887 | while (HlManager::self()->syntax->nextGroup(data)) |
884 | { | 888 | { |
885 | qDebug("Setting up one itemData element"); | 889 | odebug << "Setting up one itemData element" << oendl; |
886 | // read all attributes | 890 | // read all attributes |
887 | color=HlManager::self()->syntax->groupData(data,QString("color")); | 891 | color=HlManager::self()->syntax->groupData(data,QString("color")); |
888 | selColor=HlManager::self()->syntax->groupData(data,QString("selColor")); | 892 | selColor=HlManager::self()->syntax->groupData(data,QString("selColor")); |
889 | bold=HlManager::self()->syntax->groupData(data,QString("bold")); | 893 | bold=HlManager::self()->syntax->groupData(data,QString("bold")); |
890 | italic=HlManager::self()->syntax->groupData(data,QString("italic")); | 894 | italic=HlManager::self()->syntax->groupData(data,QString("italic")); |
891 | //check if the user overrides something | 895 | //check if the user overrides something |
892 | if ( (!color.isEmpty()) && (!selColor.isEmpty()) && (!bold.isEmpty()) && (!italic.isEmpty())) | 896 | if ( (!color.isEmpty()) && (!selColor.isEmpty()) && (!bold.isEmpty()) && (!italic.isEmpty())) |
893 | { | 897 | { |
894 | //create a user defined style | 898 | //create a user defined style |
895 | internalIDList.append(new ItemData( | 899 | internalIDList.append(new ItemData( |
896 | HlManager::self()->syntax->groupData(data,QString("name")).simplifyWhiteSpace(), | 900 | HlManager::self()->syntax->groupData(data,QString("name")).simplifyWhiteSpace(), |
897 | getDefStyleNum(HlManager::self()->syntax->groupData(data,QString("defStyleNum"))), | 901 | getDefStyleNum(HlManager::self()->syntax->groupData(data,QString("defStyleNum"))), |
898 | QColor(color),QColor(selColor),(bold=="true") || (bold=="1"), (italic=="true") || (italic=="1") | 902 | QColor(color),QColor(selColor),(bold=="true") || (bold=="1"), (italic=="true") || (italic=="1") |
899 | )); | 903 | )); |
900 | } | 904 | } |
901 | else | 905 | else |
902 | { | 906 | { |
903 | //assign a default style | 907 | //assign a default style |
904 | internalIDList.append(new ItemData( | 908 | internalIDList.append(new ItemData( |
905 | HlManager::self()->syntax->groupData(data,QString("name")).simplifyWhiteSpace(), | 909 | HlManager::self()->syntax->groupData(data,QString("name")).simplifyWhiteSpace(), |
906 | getDefStyleNum(HlManager::self()->syntax->groupData(data,QString("defStyleNum"))))); | 910 | getDefStyleNum(HlManager::self()->syntax->groupData(data,QString("defStyleNum"))))); |
907 | 911 | ||
908 | } | 912 | } |
909 | } | 913 | } |
910 | //clean up | 914 | //clean up |
911 | if (data) HlManager::self()->syntax->freeGroupInfo(data); | 915 | if (data) HlManager::self()->syntax->freeGroupInfo(data); |
912 | } | 916 | } |
913 | 917 | ||
914 | //set the ouput reference | 918 | //set the ouput reference |
915 | list=internalIDList; | 919 | list=internalIDList; |
916 | } | 920 | } |
917 | 921 | ||
918 | 922 | ||
919 | /******************************************************************************************* | 923 | /******************************************************************************************* |
920 | Highlight - lookupAttrName | 924 | Highlight - lookupAttrName |
921 | This function is a helper for makeContextList and createHlItem. It looks the given | 925 | This function is a helper for makeContextList and createHlItem. It looks the given |
922 | attribute name in the itemData list up and returns it's index | 926 | attribute name in the itemData list up and returns it's index |
923 | 927 | ||
924 | * input: QString &name :the attribute name to lookup | 928 | * input: QString &name :the attribute name to lookup |
925 | * ItemDataList &iDl :the list containing all | 929 | * ItemDataList &iDl :the list containing all |
926 | * available attributes | 930 | * available attributes |
927 | ************* | 931 | ************* |
928 | * output: none | 932 | * output: none |
929 | ************* | 933 | ************* |
930 | * return value: int :The index of the attribute | 934 | * return value: int :The index of the attribute |
931 | * or 0 | 935 | * or 0 |
932 | *******************************************************************************************/ | 936 | *******************************************************************************************/ |
933 | 937 | ||
934 | int Highlight::lookupAttrName(const QString& name, ItemDataList &iDl) | 938 | int Highlight::lookupAttrName(const QString& name, ItemDataList &iDl) |
935 | { | 939 | { |
936 | for (int i=0;i<iDl.count();i++) | 940 | for (int i=0;i<iDl.count();i++) |
937 | { | 941 | { |
938 | if (iDl.at(i)->name==name) return i; | 942 | if (iDl.at(i)->name==name) return i; |
939 | } | 943 | } |
940 | kdDebug(13010)<<"Couldn't resolve itemDataName"<<endl; | 944 | kdDebug(13010)<<"Couldn't resolve itemDataName"<<endl; |
941 | return 0; | 945 | return 0; |
942 | } | 946 | } |
943 | 947 | ||
944 | 948 | ||
945 | /******************************************************************************************* | 949 | /******************************************************************************************* |
946 | Highlight - createHlItem | 950 | Highlight - createHlItem |
947 | This function is a helper for makeContextList. It parses the xml file for | 951 | This function is a helper for makeContextList. It parses the xml file for |
948 | information, how single or multi line comments are marked | 952 | information, how single or multi line comments are marked |
949 | 953 | ||
950 | * input: syntaxContextData *data : Data about the item read from | 954 | * input: syntaxContextData *data : Data about the item read from |
951 | * the xml file | 955 | * the xml file |
952 | * ItemDataList &iDl : List of all available itemData | 956 | * ItemDataList &iDl : List of all available itemData |
953 | * entries. Needed for attribute | 957 | * entries. Needed for attribute |
954 | * name->index translation | 958 | * name->index translation |
955 | ************* | 959 | ************* |
956 | * output: none | 960 | * output: none |
957 | ************* | 961 | ************* |
958 | * return value: HlItem * : Pointer to the newly created item | 962 | * return value: HlItem * : Pointer to the newly created item |
959 | * object | 963 | * object |
960 | *******************************************************************************************/ | 964 | *******************************************************************************************/ |
961 | 965 | ||
962 | HlItem *Highlight::createHlItem(syntaxContextData *data, ItemDataList &iDl) | 966 | HlItem *Highlight::createHlItem(syntaxContextData *data, ItemDataList &iDl) |
963 | { | 967 | { |
964 | // No highlighting -> exit | 968 | // No highlighting -> exit |
965 | if (noHl) | 969 | if (noHl) |
966 | return 0; | 970 | return 0; |
967 | 971 | ||
968 | // get the (tagname) itemd type | 972 | // get the (tagname) itemd type |
969 | QString dataname=HlManager::self()->syntax->groupItemData(data,QString("")); | 973 | QString dataname=HlManager::self()->syntax->groupItemData(data,QString("")); |
970 | 974 | ||
971 | // BEGIN - Translation of the attribute parameter | 975 | // BEGIN - Translation of the attribute parameter |
972 | QString tmpAttr=HlManager::self()->syntax->groupItemData(data,QString("attribute")).simplifyWhiteSpace(); | 976 | QString tmpAttr=HlManager::self()->syntax->groupItemData(data,QString("attribute")).simplifyWhiteSpace(); |
973 | int attr; | 977 | int attr; |
974 | if (QString("%1").arg(tmpAttr.toInt())==tmpAttr) | 978 | if (QString("%1").arg(tmpAttr.toInt())==tmpAttr) |
975 | attr=tmpAttr.toInt(); | 979 | attr=tmpAttr.toInt(); |
976 | else | 980 | else |
977 | attr=lookupAttrName(tmpAttr,iDl); | 981 | attr=lookupAttrName(tmpAttr,iDl); |
978 | // END - Translation of the attribute parameter | 982 | // END - Translation of the attribute parameter |
979 | 983 | ||
980 | // Info about context switch | 984 | // Info about context switch |
981 | int context=((HlManager::self()->syntax->groupItemData(data,QString("context"))).toInt()); | 985 | int context=((HlManager::self()->syntax->groupItemData(data,QString("context"))).toInt()); |
982 | 986 | ||
983 | // Get the char parameter (eg DetectChar) | 987 | // Get the char parameter (eg DetectChar) |
984 | char chr; | 988 | char chr; |
985 | if (! HlManager::self()->syntax->groupItemData(data,QString("char")).isEmpty()) | 989 | if (! HlManager::self()->syntax->groupItemData(data,QString("char")).isEmpty()) |
986 | chr= (HlManager::self()->syntax->groupItemData(data,QString("char")).latin1())[0]; | 990 | chr= (HlManager::self()->syntax->groupItemData(data,QString("char")).latin1())[0]; |
987 | else | 991 | else |
988 | chr=0; | 992 | chr=0; |
989 | 993 | ||
990 | // Get the String parameter (eg. StringDetect) | 994 | // Get the String parameter (eg. StringDetect) |
991 | QString stringdata=HlManager::self()->syntax->groupItemData(data,QString("String")); | 995 | QString stringdata=HlManager::self()->syntax->groupItemData(data,QString("String")); |
992 | 996 | ||
993 | // Get a second char parameter (char1) (eg Detect2Chars) | 997 | // Get a second char parameter (char1) (eg Detect2Chars) |
994 | char chr1; | 998 | char chr1; |
995 | if (! HlManager::self()->syntax->groupItemData(data,QString("char1")).isEmpty()) | 999 | if (! HlManager::self()->syntax->groupItemData(data,QString("char1")).isEmpty()) |
996 | chr1= (HlManager::self()->syntax->groupItemData(data,QString("char1")).latin1())[0]; | 1000 | chr1= (HlManager::self()->syntax->groupItemData(data,QString("char1")).latin1())[0]; |
997 | else | 1001 | else |
998 | chr1=0; | 1002 | chr1=0; |
999 | 1003 | ||
1000 | // Will be removed eventuall. Atm used for StringDetect | 1004 | // Will be removed eventuall. Atm used for StringDetect |
1001 | bool insensitive=(HlManager::self()->syntax->groupItemData(data,QString("insensitive"))==QString("TRUE")); | 1005 | bool insensitive=(HlManager::self()->syntax->groupItemData(data,QString("insensitive"))==QString("TRUE")); |
1002 | 1006 | ||
1003 | 1007 | ||
1004 | //Create the item corresponding to it's type and set it's parameters | 1008 | //Create the item corresponding to it's type and set it's parameters |
1005 | if (dataname=="keyword") | 1009 | if (dataname=="keyword") |
1006 | { | 1010 | { |
1007 | HlKeyword *keyword=new HlKeyword(attr,context,casesensitive, | 1011 | HlKeyword *keyword=new HlKeyword(attr,context,casesensitive, |
1008 | deliminatorChars, deliminatorLen); | 1012 | deliminatorChars, deliminatorLen); |
1009 | 1013 | ||
1010 | //Get the entries for the keyword lookup list | 1014 | //Get the entries for the keyword lookup list |
1011 | keyword->addList(HlManager::self()->syntax->finddata("highlighting",stringdata)); | 1015 | keyword->addList(HlManager::self()->syntax->finddata("highlighting",stringdata)); |
1012 | return keyword; | 1016 | return keyword; |
1013 | } else | 1017 | } else |
1014 | if (dataname=="Float") return (new HlFloat(attr,context)); else | 1018 | if (dataname=="Float") return (new HlFloat(attr,context)); else |
1015 | if (dataname=="Int") return(new HlInt(attr,context)); else | 1019 | if (dataname=="Int") return(new HlInt(attr,context)); else |
1016 | if (dataname=="DetectChar") return(new HlCharDetect(attr,context,chr)); else | 1020 | if (dataname=="DetectChar") return(new HlCharDetect(attr,context,chr)); else |
1017 | if (dataname=="Detect2Chars") return(new Hl2CharDetect(attr,context,chr,chr1)); else | 1021 | if (dataname=="Detect2Chars") return(new Hl2CharDetect(attr,context,chr,chr1)); else |
1018 | if (dataname=="RangeDetect") return(new HlRangeDetect(attr,context, chr, chr1)); else | 1022 | if (dataname=="RangeDetect") return(new HlRangeDetect(attr,context, chr, chr1)); else |
1019 | if (dataname=="LineContinue") return(new HlLineContinue(attr,context)); else | 1023 | if (dataname=="LineContinue") return(new HlLineContinue(attr,context)); else |
1020 | if (dataname=="StringDetect") return(new HlStringDetect(attr,context,stringdata,insensitive)); else | 1024 | if (dataname=="StringDetect") return(new HlStringDetect(attr,context,stringdata,insensitive)); else |
1021 | if (dataname=="AnyChar") return(new HlAnyChar(attr,context,stringdata.unicode(), stringdata.length())); else | 1025 | if (dataname=="AnyChar") return(new HlAnyChar(attr,context,stringdata.unicode(), stringdata.length())); else |
1022 | if (dataname=="RegExpr") return(new HlRegExpr(attr,context,stringdata)); else | 1026 | if (dataname=="RegExpr") return(new HlRegExpr(attr,context,stringdata)); else |
1023 | if(dataname=="HlCChar") return ( new HlCChar(attr,context));else | 1027 | if(dataname=="HlCChar") return ( new HlCChar(attr,context));else |
1024 | if(dataname=="HlCHex") return (new HlCHex(attr,context));else | 1028 | if(dataname=="HlCHex") return (new HlCHex(attr,context));else |
1025 | if(dataname=="HlCOct") return (new HlCOct(attr,context)); else | 1029 | if(dataname=="HlCOct") return (new HlCOct(attr,context)); else |
1026 | if(dataname=="HlCStringChar") return (new HlCStringChar(attr,context)); else | 1030 | if(dataname=="HlCStringChar") return (new HlCStringChar(attr,context)); else |
1027 | 1031 | ||
1028 | { | 1032 | { |
1029 | // oops, unknown type. Perhaps a spelling error in the xml file | 1033 | // oops, unknown type. Perhaps a spelling error in the xml file |
1030 | return 0; | 1034 | return 0; |
1031 | } | 1035 | } |
1032 | 1036 | ||
1033 | 1037 | ||
1034 | } | 1038 | } |
1035 | 1039 | ||
1036 | 1040 | ||
1037 | /******************************************************************************************* | 1041 | /******************************************************************************************* |
1038 | Highlight - isInWord | 1042 | Highlight - isInWord |
1039 | 1043 | ||
1040 | * input: Qchar c Character to investigate | 1044 | * input: Qchar c Character to investigate |
1041 | ************* | 1045 | ************* |
1042 | * output: none | 1046 | * output: none |
1043 | ************* | 1047 | ************* |
1044 | * return value: returns true, if c is no deliminator | 1048 | * return value: returns true, if c is no deliminator |
1045 | *******************************************************************************************/ | 1049 | *******************************************************************************************/ |
1046 | 1050 | ||
1047 | bool Highlight::isInWord(QChar c) | 1051 | bool Highlight::isInWord(QChar c) |
1048 | { | 1052 | { |
1049 | return !ustrchr(deliminatorChars, deliminatorLen, c); | 1053 | return !ustrchr(deliminatorChars, deliminatorLen, c); |
1050 | } | 1054 | } |
1051 | 1055 | ||
1052 | 1056 | ||
1053 | 1057 | ||
1054 | /******************************************************************************************* | 1058 | /******************************************************************************************* |
1055 | Highlight - readCommentConfig | 1059 | Highlight - readCommentConfig |
1056 | This function is a helper for makeContextList. It parses the xml file for | 1060 | This function is a helper for makeContextList. It parses the xml file for |
1057 | information, how single or multi line comments are marked | 1061 | information, how single or multi line comments are marked |
1058 | 1062 | ||
1059 | * input: none | 1063 | * input: none |
1060 | ************* | 1064 | ************* |
1061 | * output: none | 1065 | * output: none |
1062 | ************* | 1066 | ************* |
1063 | * return value: none | 1067 | * return value: none |
1064 | *******************************************************************************************/ | 1068 | *******************************************************************************************/ |
1065 | 1069 | ||
1066 | void Highlight::readCommentConfig() | 1070 | void Highlight::readCommentConfig() |
1067 | { | 1071 | { |
1068 | 1072 | ||
1069 | cslStart = ""; | 1073 | cslStart = ""; |
1070 | HlManager::self()->syntax->setIdentifier(identifier); | 1074 | HlManager::self()->syntax->setIdentifier(identifier); |
1071 | 1075 | ||
1072 | syntaxContextData *data=HlManager::self()->syntax->getGroupInfo("general","comment"); | 1076 | syntaxContextData *data=HlManager::self()->syntax->getGroupInfo("general","comment"); |
1073 | if (data) | 1077 | if (data) |
1074 | { | 1078 | { |
1075 | // kdDebug(13010)<<"COMMENT DATA FOUND"<<endl; | 1079 | // kdDebug(13010)<<"COMMENT DATA FOUND"<<endl; |
1076 | while (HlManager::self()->syntax->nextGroup(data)) | 1080 | while (HlManager::self()->syntax->nextGroup(data)) |
1077 | { | 1081 | { |
1078 | 1082 | ||
1079 | if (HlManager::self()->syntax->groupData(data,"name")=="singleLine") | 1083 | if (HlManager::self()->syntax->groupData(data,"name")=="singleLine") |
1080 | cslStart=HlManager::self()->syntax->groupData(data,"start"); | 1084 | cslStart=HlManager::self()->syntax->groupData(data,"start"); |
1081 | if (HlManager::self()->syntax->groupData(data,"name")=="multiLine") | 1085 | if (HlManager::self()->syntax->groupData(data,"name")=="multiLine") |
1082 | { | 1086 | { |
1083 | cmlStart=HlManager::self()->syntax->groupData(data,"start"); | 1087 | cmlStart=HlManager::self()->syntax->groupData(data,"start"); |
1084 | cmlEnd=HlManager::self()->syntax->groupData(data,"end"); | 1088 | cmlEnd=HlManager::self()->syntax->groupData(data,"end"); |
1085 | } | 1089 | } |
1086 | } | 1090 | } |
1087 | HlManager::self()->syntax->freeGroupInfo(data); | 1091 | HlManager::self()->syntax->freeGroupInfo(data); |
1088 | } | 1092 | } |
1089 | 1093 | ||
1090 | } | 1094 | } |
1091 | 1095 | ||
1092 | /******************************************************************************************* | 1096 | /******************************************************************************************* |
1093 | Highlight - readGlobalKeyWordConfig | 1097 | Highlight - readGlobalKeyWordConfig |
1094 | This function is a helper for makeContextList. It parses the xml file for | 1098 | This function is a helper for makeContextList. It parses the xml file for |
1095 | information, if keywords should be treated case(in)sensitive and creates the keyword | 1099 | information, if keywords should be treated case(in)sensitive and creates the keyword |
1096 | delimiter list. Which is the default list, without any given weak deliminiators | 1100 | delimiter list. Which is the default list, without any given weak deliminiators |
1097 | 1101 | ||
1098 | * input: none | 1102 | * input: none |
1099 | ************* | 1103 | ************* |
1100 | * output: none | 1104 | * output: none |
1101 | ************* | 1105 | ************* |
1102 | * return value: none | 1106 | * return value: none |
1103 | *******************************************************************************************/ | 1107 | *******************************************************************************************/ |
1104 | 1108 | ||
1105 | 1109 | ||
1106 | void Highlight::readGlobalKeywordConfig() | 1110 | void Highlight::readGlobalKeywordConfig() |
1107 | { | 1111 | { |
1108 | // Tell the syntax document class which file we want to parse | 1112 | // Tell the syntax document class which file we want to parse |
1109 | HlManager::self()->syntax->setIdentifier(identifier); | 1113 | HlManager::self()->syntax->setIdentifier(identifier); |
1110 | 1114 | ||
1111 | // Get the keywords config entry | 1115 | // Get the keywords config entry |
1112 | syntaxContextData * data=HlManager::self()->syntax->getConfig("general","keywords"); | 1116 | syntaxContextData * data=HlManager::self()->syntax->getConfig("general","keywords"); |
1113 | if (data) | 1117 | if (data) |
1114 | { | 1118 | { |
1115 | kdDebug(13010)<<"Found global keyword config"<<endl; | 1119 | kdDebug(13010)<<"Found global keyword config"<<endl; |
1116 | 1120 | ||
1117 | if (HlManager::self()->syntax->groupItemData(data,QString("casesensitive"))!="0") | 1121 | if (HlManager::self()->syntax->groupItemData(data,QString("casesensitive"))!="0") |
1118 | casesensitive=true; else {casesensitive=false; kdDebug(13010)<<"Turning on case insensitiveness"<<endl;} | 1122 | casesensitive=true; else {casesensitive=false; kdDebug(13010)<<"Turning on case insensitiveness"<<endl;} |
1119 | //get the weak deliminators | 1123 | //get the weak deliminators |
1120 | weakDeliminator=(!HlManager::self()->syntax->groupItemData(data,QString("weakDeliminator"))); | 1124 | weakDeliminator=(!HlManager::self()->syntax->groupItemData(data,QString("weakDeliminator"))); |
1121 | 1125 | ||
1122 | // remove any weakDelimitars (if any) from the default list and store this list. | 1126 | // remove any weakDelimitars (if any) from the default list and store this list. |
1123 | int f; | 1127 | int f; |
1124 | for (int s=0; s < weakDeliminator.length(); s++) | 1128 | for (int s=0; s < weakDeliminator.length(); s++) |
1125 | { | 1129 | { |
1126 | f = 0; | 1130 | f = 0; |
1127 | f = deliminator.find (weakDeliminator[s]); | 1131 | f = deliminator.find (weakDeliminator[s]); |
1128 | 1132 | ||
1129 | if (f > -1) | 1133 | if (f > -1) |
1130 | deliminator.remove (f, 1); | 1134 | deliminator.remove (f, 1); |
1131 | } | 1135 | } |
1132 | 1136 | ||
1133 | deliminatorChars = deliminator.unicode(); | 1137 | deliminatorChars = deliminator.unicode(); |
1134 | deliminatorLen = deliminator.length(); | 1138 | deliminatorLen = deliminator.length(); |
1135 | 1139 | ||
1136 | HlManager::self()->syntax->freeGroupInfo(data); | 1140 | HlManager::self()->syntax->freeGroupInfo(data); |
1137 | } | 1141 | } |
1138 | else | 1142 | else |
1139 | { | 1143 | { |
1140 | //Default values | 1144 | //Default values |
1141 | casesensitive=true; | 1145 | casesensitive=true; |
1142 | weakDeliminator=QString(""); | 1146 | weakDeliminator=QString(""); |
1143 | } | 1147 | } |
1144 | 1148 | ||
1145 | } | 1149 | } |
1146 | 1150 | ||
1147 | /******************************************************************************************* | 1151 | /******************************************************************************************* |
1148 | Highlight - makeContextList | 1152 | Highlight - makeContextList |
1149 | That's the most important initialization function for each highlighting. It's called | 1153 | That's the most important initialization function for each highlighting. It's called |
1150 | each time a document gets a highlighting style assigned. parses the xml file and | 1154 | each time a document gets a highlighting style assigned. parses the xml file and |
1151 | creates a corresponding internal structure | 1155 | creates a corresponding internal structure |
1152 | 1156 | ||
1153 | * input: none | 1157 | * input: none |
1154 | ************* | 1158 | ************* |
1155 | * output: none | 1159 | * output: none |
1156 | ************* | 1160 | ************* |
1157 | * return value: none | 1161 | * return value: none |
1158 | *******************************************************************************************/ | 1162 | *******************************************************************************************/ |
1159 | 1163 | ||
1160 | 1164 | ||
1161 | void Highlight::makeContextList() | 1165 | void Highlight::makeContextList() |
1162 | { | 1166 | { |
1163 | if (noHl) | 1167 | if (noHl) |
1164 | return; | 1168 | return; |
1165 | 1169 | ||
1166 | HlKeyword *keyword=0, *dataType=0; | 1170 | HlKeyword *keyword=0, *dataType=0; |
1167 | syntaxContextData *data, *datasub; | 1171 | syntaxContextData *data, *datasub; |
1168 | HlItem *c; | 1172 | HlItem *c; |
1169 | 1173 | ||
1170 | readCommentConfig(); | 1174 | readCommentConfig(); |
1171 | readGlobalKeywordConfig(); | 1175 | readGlobalKeywordConfig(); |
1172 | 1176 | ||
1173 | // Let the syntax document class know, which file we'd like to parse | 1177 | // Let the syntax document class know, which file we'd like to parse |
1174 | HlManager::self()->syntax->setIdentifier(identifier); | 1178 | HlManager::self()->syntax->setIdentifier(identifier); |
1175 | 1179 | ||
1176 | // This list is needed for the translation of the attribute parameter, if the itemData name is given instead of the index | 1180 | // This list is needed for the translation of the attribute parameter, if the itemData name is given instead of the index |
1177 | ItemDataList iDl; | 1181 | ItemDataList iDl; |
1178 | createItemData(iDl); | 1182 | createItemData(iDl); |
1179 | 1183 | ||
1180 | //start the real work | 1184 | //start the real work |
1181 | data=HlManager::self()->syntax->getGroupInfo("highlighting","context"); | 1185 | data=HlManager::self()->syntax->getGroupInfo("highlighting","context"); |
1182 | int i=0; | 1186 | int i=0; |
1183 | if (data) | 1187 | if (data) |
1184 | { | 1188 | { |
1185 | while (HlManager::self()->syntax->nextGroup(data)) | 1189 | while (HlManager::self()->syntax->nextGroup(data)) |
1186 | { | 1190 | { |
1187 | 1191 | ||
1188 | // BEGIN - Translation of the attribute parameter | 1192 | // BEGIN - Translation of the attribute parameter |
1189 | QString tmpAttr=HlManager::self()->syntax->groupData(data,QString("attribute")).simplifyWhiteSpace(); | 1193 | QString tmpAttr=HlManager::self()->syntax->groupData(data,QString("attribute")).simplifyWhiteSpace(); |
1190 | int attr; | 1194 | int attr; |
1191 | if (QString("%1").arg(tmpAttr.toInt())==tmpAttr) | 1195 | if (QString("%1").arg(tmpAttr.toInt())==tmpAttr) |
1192 | attr=tmpAttr.toInt(); | 1196 | attr=tmpAttr.toInt(); |
1193 | else | 1197 | else |
1194 | attr=lookupAttrName(tmpAttr,iDl); | 1198 | attr=lookupAttrName(tmpAttr,iDl); |
1195 | // END - Translation of the attribute parameter | 1199 | // END - Translation of the attribute parameter |
1196 | 1200 | ||
1197 | contextList[i]=new HlContext( | 1201 | contextList[i]=new HlContext( |
1198 | attr, | 1202 | attr, |
1199 | (HlManager::self()->syntax->groupData(data,QString("lineEndContext"))).toInt(), | 1203 | (HlManager::self()->syntax->groupData(data,QString("lineEndContext"))).toInt(), |
1200 | (HlManager::self()->syntax->groupData(data,QString("lineBeginContext"))).isEmpty()?-1: | 1204 | (HlManager::self()->syntax->groupData(data,QString("lineBeginContext"))).isEmpty()?-1: |
1201 | (HlManager::self()->syntax->groupData(data,QString("lineBeginContext"))).toInt()); | 1205 | (HlManager::self()->syntax->groupData(data,QString("lineBeginContext"))).toInt()); |
1202 | 1206 | ||
1203 | 1207 | ||
1204 | //Let's create all items for the context | 1208 | //Let's create all items for the context |
1205 | while (HlManager::self()->syntax->nextItem(data)) | 1209 | while (HlManager::self()->syntax->nextItem(data)) |
1206 | { | 1210 | { |
1207 | // kdDebug(13010)<< "In make Contextlist: Item:"<<endl; | 1211 | // kdDebug(13010)<< "In make Contextlist: Item:"<<endl; |
1208 | c=createHlItem(data,iDl); | 1212 | c=createHlItem(data,iDl); |
1209 | if (c) | 1213 | if (c) |
1210 | { | 1214 | { |
1211 | contextList[i]->items.append(c); | 1215 | contextList[i]->items.append(c); |
1212 | 1216 | ||
1213 | // Not supported completely atm and only one level. Subitems.(all have to be matched to at once) | 1217 | // Not supported completely atm and only one level. Subitems.(all have to be matched to at once) |
1214 | datasub=HlManager::self()->syntax->getSubItems(data); | 1218 | datasub=HlManager::self()->syntax->getSubItems(data); |
1215 | bool tmpbool; | 1219 | bool tmpbool; |
1216 | if (tmpbool=HlManager::self()->syntax->nextItem(datasub)) | 1220 | if (tmpbool=HlManager::self()->syntax->nextItem(datasub)) |
1217 | { | 1221 | { |
1218 | c->subItems=new QList<HlItem>; | 1222 | c->subItems=new QList<HlItem>; |
1219 | for (;tmpbool;tmpbool=HlManager::self()->syntax->nextItem(datasub)) | 1223 | for (;tmpbool;tmpbool=HlManager::self()->syntax->nextItem(datasub)) |
1220 | c->subItems->append(createHlItem(datasub,iDl)); | 1224 | c->subItems->append(createHlItem(datasub,iDl)); |
1221 | } | 1225 | } |
1222 | HlManager::self()->syntax->freeGroupInfo(datasub); | 1226 | HlManager::self()->syntax->freeGroupInfo(datasub); |
1223 | // end of sublevel | 1227 | // end of sublevel |
1224 | } | 1228 | } |
1225 | // kdDebug(13010)<<"Last line in loop"<<endl; | 1229 | // kdDebug(13010)<<"Last line in loop"<<endl; |
1226 | } | 1230 | } |
1227 | i++; | 1231 | i++; |
1228 | } | 1232 | } |
1229 | } | 1233 | } |
1230 | 1234 | ||
1231 | HlManager::self()->syntax->freeGroupInfo(data); | 1235 | HlManager::self()->syntax->freeGroupInfo(data); |
1232 | 1236 | ||
1233 | 1237 | ||
1234 | } | 1238 | } |
1235 | 1239 | ||
1236 | HlManager::HlManager() : QObject(0L) | 1240 | HlManager::HlManager() : QObject(0L) |
1237 | { | 1241 | { |
1238 | syntax = new SyntaxDocument(); | 1242 | syntax = new SyntaxDocument(); |
1239 | SyntaxModeList modeList = syntax->modeList(); | 1243 | SyntaxModeList modeList = syntax->modeList(); |
1240 | 1244 | ||
1241 | hlList.setAutoDelete(true); | 1245 | hlList.setAutoDelete(true); |
1242 | hlList.append(new Highlight(0)); | 1246 | hlList.append(new Highlight(0)); |
1243 | 1247 | ||
1244 | uint i=0; | 1248 | uint i=0; |
1245 | while (i < modeList.count()) | 1249 | while (i < modeList.count()) |
1246 | { | 1250 | { |
1247 | hlList.append(new Highlight(modeList.at(i))); | 1251 | hlList.append(new Highlight(modeList.at(i))); |
1248 | i++; | 1252 | i++; |
1249 | } | 1253 | } |
1250 | } | 1254 | } |
1251 | 1255 | ||
1252 | HlManager::~HlManager() { | 1256 | HlManager::~HlManager() { |
1253 | if(syntax) delete syntax; | 1257 | if(syntax) delete syntax; |
1254 | } | 1258 | } |
1255 | 1259 | ||
1256 | HlManager *HlManager::self() | 1260 | HlManager *HlManager::self() |
1257 | { | 1261 | { |
1258 | if ( !s_pSelf ) | 1262 | if ( !s_pSelf ) |
1259 | s_pSelf = new HlManager; | 1263 | s_pSelf = new HlManager; |
1260 | return s_pSelf; | 1264 | return s_pSelf; |
1261 | } | 1265 | } |
1262 | 1266 | ||
1263 | Highlight *HlManager::getHl(int n) { | 1267 | Highlight *HlManager::getHl(int n) { |
1264 | if (n < 0 || n >= (int) hlList.count()) n = 0; | 1268 | if (n < 0 || n >= (int) hlList.count()) n = 0; |
1265 | return hlList.at(n); | 1269 | return hlList.at(n); |
1266 | } | 1270 | } |
1267 | 1271 | ||
1268 | int HlManager::defaultHl() { | 1272 | int HlManager::defaultHl() { |
1269 | KateConfig *config; | 1273 | KateConfig *config; |
1270 | config = KGlobal::config(); | 1274 | config = KGlobal::config(); |
1271 | config->setGroup("General Options"); | 1275 | config->setGroup("General Options"); |
1272 | 1276 | ||
1273 | #warning fixme return nameFind(config->readEntry("Highlight")); | 1277 | #warning fixme return nameFind(config->readEntry("Highlight")); |
1274 | 1278 | ||
1275 | } | 1279 | } |
1276 | 1280 | ||
1277 | 1281 | ||
1278 | int HlManager::nameFind(const QString &name) { | 1282 | int HlManager::nameFind(const QString &name) { |
1279 | int z; | 1283 | int z; |
1280 | 1284 | ||
1281 | for (z = hlList.count() - 1; z > 0; z--) { | 1285 | for (z = hlList.count() - 1; z > 0; z--) { |
1282 | if (hlList.at(z)->iName == name) break; | 1286 | if (hlList.at(z)->iName == name) break; |
1283 | } | 1287 | } |
1284 | return z; | 1288 | return z; |
1285 | } | 1289 | } |
1286 | 1290 | ||
1287 | int HlManager::wildcardFind(const QString &fileName) { | 1291 | int HlManager::wildcardFind(const QString &fileName) { |
1288 | Highlight *highlight; | 1292 | Highlight *highlight; |
1289 | int p1, p2; | 1293 | int p1, p2; |
1290 | QString w; | 1294 | QString w; |
1291 | for (highlight = hlList.first(); highlight != 0L; highlight = hlList.next()) { | 1295 | for (highlight = hlList.first(); highlight != 0L; highlight = hlList.next()) { |
1292 | p1 = 0; | 1296 | p1 = 0; |
1293 | w = highlight->getWildcards(); | 1297 | w = highlight->getWildcards(); |
1294 | while (p1 < (int) w.length()) { | 1298 | while (p1 < (int) w.length()) { |
1295 | p2 = w.find(';',p1); | 1299 | p2 = w.find(';',p1); |
1296 | if (p2 == -1) p2 = w.length(); | 1300 | if (p2 == -1) p2 = w.length(); |
1297 | if (p1 < p2) { | 1301 | if (p1 < p2) { |
1298 | QRegExp regExp(w.mid(p1,p2 - p1),true,true); | 1302 | QRegExp regExp(w.mid(p1,p2 - p1),true,true); |
1299 | if (regExp.match(fileName) == 0) return hlList.at(); | 1303 | if (regExp.match(fileName) == 0) return hlList.at(); |
1300 | } | 1304 | } |
1301 | p1 = p2 + 1; | 1305 | p1 = p2 + 1; |
1302 | } | 1306 | } |
1303 | } | 1307 | } |
1304 | return -1; | 1308 | return -1; |
1305 | } | 1309 | } |
1306 | 1310 | ||
1307 | 1311 | ||
1308 | int HlManager::makeAttribs(Highlight *highlight, Attribute *a, int maxAttribs) { | 1312 | int HlManager::makeAttribs(Highlight *highlight, Attribute *a, int maxAttribs) { |
1309 | ItemStyleList defaultStyleList; | 1313 | ItemStyleList defaultStyleList; |
1310 | ItemStyle *defaultStyle; | 1314 | ItemStyle *defaultStyle; |
1311 | ItemDataList itemDataList; | 1315 | ItemDataList itemDataList; |
1312 | ItemData *itemData; | 1316 | ItemData *itemData; |
1313 | int nAttribs, z; | 1317 | int nAttribs, z; |
1314 | 1318 | ||
1315 | qDebug("HlManager::makeAttribs"); | 1319 | odebug << "HlManager::makeAttribs" << oendl; |
1316 | 1320 | ||
1317 | defaultStyleList.setAutoDelete(true); | 1321 | defaultStyleList.setAutoDelete(true); |
1318 | getDefaults(defaultStyleList); | 1322 | getDefaults(defaultStyleList); |
1319 | 1323 | ||
1320 | // itemDataList.setAutoDelete(true); | 1324 | // itemDataList.setAutoDelete(true); |
1321 | highlight->getItemDataList(itemDataList); | 1325 | highlight->getItemDataList(itemDataList); |
1322 | nAttribs = itemDataList.count(); | 1326 | nAttribs = itemDataList.count(); |
1323 | for (z = 0; z < nAttribs; z++) { | 1327 | for (z = 0; z < nAttribs; z++) { |
1324 | qDebug("HlManager::makeAttribs: createing one attribute definition"); | 1328 | odebug << "HlManager::makeAttribs: createing one attribute definition" << oendl; |
1325 | itemData = itemDataList.at(z); | 1329 | itemData = itemDataList.at(z); |
1326 | if (itemData->defStyle) { | 1330 | if (itemData->defStyle) { |
1327 | // default style | 1331 | // default style |
1328 | defaultStyle = defaultStyleList.at(itemData->defStyleNum); | 1332 | defaultStyle = defaultStyleList.at(itemData->defStyleNum); |
1329 | a[z].col = defaultStyle->col; | 1333 | a[z].col = defaultStyle->col; |
1330 | a[z].selCol = defaultStyle->selCol; | 1334 | a[z].selCol = defaultStyle->selCol; |
1331 | a[z].bold = defaultStyle->bold; | 1335 | a[z].bold = defaultStyle->bold; |
1332 | a[z].italic = defaultStyle->italic; | 1336 | a[z].italic = defaultStyle->italic; |
1333 | } else { | 1337 | } else { |
1334 | // custom style | 1338 | // custom style |
1335 | a[z].col = itemData->col; | 1339 | a[z].col = itemData->col; |
1336 | a[z].selCol = itemData->selCol; | 1340 | a[z].selCol = itemData->selCol; |
1337 | a[z].bold = itemData->bold; | 1341 | a[z].bold = itemData->bold; |
1338 | a[z].italic = itemData->italic; | 1342 | a[z].italic = itemData->italic; |
1339 | } | 1343 | } |
1340 | } | 1344 | } |
1341 | 1345 | ||
1342 | for (; z < maxAttribs; z++) { | 1346 | for (; z < maxAttribs; z++) { |
1343 | a[z].col = black; | 1347 | a[z].col = black; |
1344 | a[z].selCol = black; | 1348 | a[z].selCol = black; |
1345 | a[z].bold = defaultStyle->bold; | 1349 | a[z].bold = defaultStyle->bold; |
1346 | a[z].italic = defaultStyle->italic; | 1350 | a[z].italic = defaultStyle->italic; |
1347 | } | 1351 | } |
1348 | return nAttribs; | 1352 | return nAttribs; |
1349 | } | 1353 | } |
1350 | 1354 | ||
1351 | int HlManager::defaultStyles() { | 1355 | int HlManager::defaultStyles() { |
1352 | return 10; | 1356 | return 10; |
1353 | } | 1357 | } |
1354 | 1358 | ||
1355 | QString HlManager::defaultStyleName(int n) | 1359 | QString HlManager::defaultStyleName(int n) |
1356 | { | 1360 | { |
1357 | static QStringList names; | 1361 | static QStringList names; |
1358 | 1362 | ||
1359 | if (names.isEmpty()) | 1363 | if (names.isEmpty()) |
1360 | { | 1364 | { |
1361 | names << i18n("Normal"); | 1365 | names << i18n("Normal"); |
1362 | names << i18n("Keyword"); | 1366 | names << i18n("Keyword"); |
1363 | names << i18n("Data Type"); | 1367 | names << i18n("Data Type"); |
1364 | names << i18n("Decimal/Value"); | 1368 | names << i18n("Decimal/Value"); |
1365 | names << i18n("Base-N Integer"); | 1369 | names << i18n("Base-N Integer"); |
1366 | names << i18n("Floating Point"); | 1370 | names << i18n("Floating Point"); |
1367 | names << i18n("Character"); | 1371 | names << i18n("Character"); |
1368 | names << i18n("String"); | 1372 | names << i18n("String"); |
1369 | names << i18n("Comment"); | 1373 | names << i18n("Comment"); |
1370 | names << i18n("Others"); | 1374 | names << i18n("Others"); |
1371 | } | 1375 | } |
1372 | 1376 | ||
1373 | return names[n]; | 1377 | return names[n]; |
1374 | } | 1378 | } |
1375 | 1379 | ||
1376 | void HlManager::getDefaults(ItemStyleList &list) { | 1380 | void HlManager::getDefaults(ItemStyleList &list) { |
1377 | KateConfig *config; | 1381 | KateConfig *config; |
1378 | int z; | 1382 | int z; |
1379 | ItemStyle *i; | 1383 | ItemStyle *i; |
1380 | QString s; | 1384 | QString s; |
1381 | QRgb col, selCol; | 1385 | QRgb col, selCol; |
1382 | 1386 | ||
1383 | list.setAutoDelete(true); | 1387 | list.setAutoDelete(true); |
1384 | //ItemStyle(color, selected color, bold, italic) | 1388 | //ItemStyle(color, selected color, bold, italic) |
1385 | list.append(new ItemStyle(black,white,false,false)); //normal | 1389 | list.append(new ItemStyle(black,white,false,false)); //normal |
1386 | list.append(new ItemStyle(black,white,true,false)); //keyword | 1390 | list.append(new ItemStyle(black,white,true,false)); //keyword |
1387 | list.append(new ItemStyle(darkRed,white,false,false)); //datatype | 1391 | list.append(new ItemStyle(darkRed,white,false,false)); //datatype |
1388 | list.append(new ItemStyle(blue,cyan,false,false)); //decimal/value | 1392 | list.append(new ItemStyle(blue,cyan,false,false)); //decimal/value |
1389 | list.append(new ItemStyle(darkCyan,cyan,false,false)); //base n | 1393 | list.append(new ItemStyle(darkCyan,cyan,false,false)); //base n |
1390 | list.append(new ItemStyle(darkMagenta,cyan,false,false));//float | 1394 | list.append(new ItemStyle(darkMagenta,cyan,false,false));//float |
1391 | list.append(new ItemStyle(magenta,magenta,false,false)); //char | 1395 | list.append(new ItemStyle(magenta,magenta,false,false)); //char |
1392 | list.append(new ItemStyle(red,red,false,false)); //string | 1396 | list.append(new ItemStyle(red,red,false,false)); //string |
1393 | list.append(new ItemStyle(darkGray,gray,false,true)); //comment | 1397 | list.append(new ItemStyle(darkGray,gray,false,true)); //comment |
1394 | list.append(new ItemStyle(darkGreen,green,false,false)); //others | 1398 | list.append(new ItemStyle(darkGreen,green,false,false)); //others |
1395 | 1399 | ||
1396 | #warning fixme | 1400 | #warning fixme |
1397 | /* | 1401 | /* |
1398 | config = KateFactory::instance()->config(); | 1402 | config = KateFactory::instance()->config(); |
1399 | config->setGroup("Default Item Styles"); | 1403 | config->setGroup("Default Item Styles"); |
1400 | for (z = 0; z < defaultStyles(); z++) { | 1404 | for (z = 0; z < defaultStyles(); z++) { |
1401 | i = list.at(z); | 1405 | i = list.at(z); |
1402 | s = config->readEntry(defaultStyleName(z)); | 1406 | s = config->readEntry(defaultStyleName(z)); |
1403 | if (!s.isEmpty()) { | 1407 | if (!s.isEmpty()) { |
1404 | sscanf(s.latin1(),"%X,%X,%d,%d",&col,&selCol,&i->bold,&i->italic); | 1408 | sscanf(s.latin1(),"%X,%X,%d,%d",&col,&selCol,&i->bold,&i->italic); |
1405 | i->col.setRgb(col); | 1409 | i->col.setRgb(col); |
1406 | i->selCol.setRgb(selCol); | 1410 | i->selCol.setRgb(selCol); |
1407 | } | 1411 | } |
1408 | } | 1412 | } |
1409 | */ | 1413 | */ |
1410 | } | 1414 | } |
1411 | 1415 | ||
1412 | void HlManager::setDefaults(ItemStyleList &list) { | 1416 | void HlManager::setDefaults(ItemStyleList &list) { |
1413 | KateConfig *config; | 1417 | KateConfig *config; |
1414 | int z; | 1418 | int z; |
1415 | ItemStyle *i; | 1419 | ItemStyle *i; |
1416 | char s[64]; | 1420 | char s[64]; |
1417 | #warning fixme | 1421 | #warning fixme |
1418 | /* | 1422 | /* |
1419 | config = KateFactory::instance()->config(); | 1423 | config = KateFactory::instance()->config(); |
1420 | config->setGroup("Default Item Styles"); | 1424 | config->setGroup("Default Item Styles"); |
1421 | for (z = 0; z < defaultStyles(); z++) { | 1425 | for (z = 0; z < defaultStyles(); z++) { |
1422 | i = list.at(z); | 1426 | i = list.at(z); |
1423 | sprintf(s,"%X,%X,%d,%d",i->col.rgb(),i->selCol.rgb(),i->bold, i->italic); | 1427 | sprintf(s,"%X,%X,%d,%d",i->col.rgb(),i->selCol.rgb(),i->bold, i->italic); |
1424 | config->writeEntry(defaultStyleName(z),s); | 1428 | config->writeEntry(defaultStyleName(z),s); |
1425 | } | 1429 | } |
1426 | */ | 1430 | */ |
1427 | emit changed(); | 1431 | emit changed(); |
1428 | } | 1432 | } |
1429 | 1433 | ||
1430 | 1434 | ||
1431 | int HlManager::highlights() { | 1435 | int HlManager::highlights() { |
1432 | return (int) hlList.count(); | 1436 | return (int) hlList.count(); |
1433 | } | 1437 | } |
1434 | 1438 | ||
1435 | QString HlManager::hlName(int n) { | 1439 | QString HlManager::hlName(int n) { |
1436 | return hlList.at(n)->iName; | 1440 | return hlList.at(n)->iName; |
1437 | } | 1441 | } |
1438 | 1442 | ||
1439 | QString HlManager::hlSection(int n) { | 1443 | QString HlManager::hlSection(int n) { |
1440 | return hlList.at(n)->iSection; | 1444 | return hlList.at(n)->iSection; |
1441 | } | 1445 | } |
1442 | 1446 | ||
1443 | void HlManager::getHlDataList(HlDataList &list) { | 1447 | void HlManager::getHlDataList(HlDataList &list) { |
1444 | int z; | 1448 | int z; |
1445 | 1449 | ||
1446 | for (z = 0; z < (int) hlList.count(); z++) { | 1450 | for (z = 0; z < (int) hlList.count(); z++) { |
1447 | list.append(hlList.at(z)->getData()); | 1451 | list.append(hlList.at(z)->getData()); |
1448 | } | 1452 | } |
1449 | } | 1453 | } |
1450 | 1454 | ||
1451 | void HlManager::setHlDataList(HlDataList &list) { | 1455 | void HlManager::setHlDataList(HlDataList &list) { |
1452 | int z; | 1456 | int z; |
1453 | 1457 | ||
1454 | for (z = 0; z < (int) hlList.count(); z++) { | 1458 | for (z = 0; z < (int) hlList.count(); z++) { |
1455 | hlList.at(z)->setData(list.at(z)); | 1459 | hlList.at(z)->setData(list.at(z)); |
1456 | } | 1460 | } |
1457 | //notify documents about changes in highlight configuration | 1461 | //notify documents about changes in highlight configuration |
1458 | emit changed(); | 1462 | emit changed(); |
1459 | } | 1463 | } |
diff --git a/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp b/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp index 6059e9b..9fa4452 100644 --- a/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp +++ b/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp | |||
@@ -1,306 +1,311 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | katesyntaxdocument.cpp - description | 2 | katesyntaxdocument.cpp - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Sat 31 March 2001 | 4 | begin : Sat 31 March 2001 |
5 | copyright : (C) 2001,2002 by Joseph Wenninger | 5 | copyright : (C) 2001,2002 by Joseph Wenninger |
6 | email : jowenn@kde.org | 6 | email : jowenn@kde.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 | 17 | ||
18 | #include "katesyntaxdocument.h" | 18 | #include "katesyntaxdocument.h" |
19 | #include <kateconfig.h> | 19 | #include "kateconfig.h" |
20 | #include "kdebug.h" | ||
21 | #include "kstddirs.h" | ||
22 | #include "klocale.h" | ||
23 | #include "kmessagebox.h" | ||
24 | #include "kglobal.h" | ||
25 | |||
26 | /* OPIE */ | ||
27 | #include <opie2/odebug.h> | ||
28 | #include <qpe/qpeapplication.h> | ||
29 | |||
30 | /* QT */ | ||
20 | #include <qfile.h> | 31 | #include <qfile.h> |
21 | #include <kdebug.h> | ||
22 | #include <kstddirs.h> | ||
23 | #include <klocale.h> | ||
24 | #include <kmessagebox.h> | ||
25 | #include <qstringlist.h> | 32 | #include <qstringlist.h> |
26 | #include <kglobal.h> | ||
27 | #include <qpe/qpeapplication.h> | ||
28 | #include <qdir.h> | 33 | #include <qdir.h> |
29 | 34 | ||
30 | SyntaxDocument::SyntaxDocument() | 35 | SyntaxDocument::SyntaxDocument() |
31 | { | 36 | { |
32 | m_root=0; | 37 | m_root=0; |
33 | currentFile=""; | 38 | currentFile=""; |
34 | setupModeList(); | 39 | setupModeList(); |
35 | } | 40 | } |
36 | 41 | ||
37 | void SyntaxDocument::setIdentifier(const QString& identifier) | 42 | void SyntaxDocument::setIdentifier(const QString& identifier) |
38 | { | 43 | { |
39 | #warning FIXME delete m_root; | 44 | #warning FIXME delete m_root; |
40 | m_root=Opie::Core::XMLElement::load(identifier); | 45 | m_root=Opie::Core::XMLElement::load(identifier); |
41 | if (!m_root) KMessageBox::error( 0L, i18n("Can't open %1").arg(identifier) ); | 46 | if (!m_root) KMessageBox::error( 0L, i18n("Can't open %1").arg(identifier) ); |
42 | 47 | ||
43 | } | 48 | } |
44 | 49 | ||
45 | SyntaxDocument::~SyntaxDocument() | 50 | SyntaxDocument::~SyntaxDocument() |
46 | { | 51 | { |
47 | } | 52 | } |
48 | 53 | ||
49 | void SyntaxDocument::setupModeList(bool force) | 54 | void SyntaxDocument::setupModeList(bool force) |
50 | { | 55 | { |
51 | 56 | ||
52 | if (myModeList.count() > 0) return; | 57 | if (myModeList.count() > 0) return; |
53 | 58 | ||
54 | KateConfig *config=KGlobal::config(); | 59 | KateConfig *config=KGlobal::config(); |
55 | KStandardDirs *dirs = KGlobal::dirs(); | 60 | KStandardDirs *dirs = KGlobal::dirs(); |
56 | 61 | ||
57 | // QStringList list=dirs->findAllResources("data","kate/syntax/*.xml",false,true); | 62 | // QStringList list=dirs->findAllResources("data","kate/syntax/*.xml",false,true); |
58 | QString path=QPEApplication::qpeDir() +"share/tinykate/syntax/"; | 63 | QString path=QPEApplication::qpeDir() +"share/tinykate/syntax/"; |
59 | 64 | ||
60 | QDir dir(path); | 65 | QDir dir(path); |
61 | QStringList list=dir.entryList("*.xml"); | 66 | QStringList list=dir.entryList("*.xml"); |
62 | 67 | ||
63 | for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) | 68 | for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) |
64 | { | 69 | { |
65 | QString Group="Highlighting_Cache"+path+*it; | 70 | QString Group="Highlighting_Cache"+path+*it; |
66 | if ((config->hasGroup(Group)) && (!force)) | 71 | if ((config->hasGroup(Group)) && (!force)) |
67 | { | 72 | { |
68 | config->setGroup(Group); | 73 | config->setGroup(Group); |
69 | syntaxModeListItem *mli=new syntaxModeListItem; | 74 | syntaxModeListItem *mli=new syntaxModeListItem; |
70 | mli->name = config->readEntry("name",""); | 75 | mli->name = config->readEntry("name",""); |
71 | mli->section = config->readEntry("section",""); | 76 | mli->section = config->readEntry("section",""); |
72 | mli->mimetype = config->readEntry("mimetype",""); | 77 | mli->mimetype = config->readEntry("mimetype",""); |
73 | mli->extension = config->readEntry("extension",""); | 78 | mli->extension = config->readEntry("extension",""); |
74 | mli->identifier = path+*it; | 79 | mli->identifier = path+*it; |
75 | myModeList.append(mli); | 80 | myModeList.append(mli); |
76 | } | 81 | } |
77 | else | 82 | else |
78 | { | 83 | { |
79 | qDebug("Found a description file:"+path+(*it)); | 84 | odebug << "Found a description file:"+path+(*it) << oendl; |
80 | setIdentifier(path+(*it)); | 85 | setIdentifier(path+(*it)); |
81 | Opie::Core::XMLElement *e=m_root; | 86 | Opie::Core::XMLElement *e=m_root; |
82 | if (e) | 87 | if (e) |
83 | { | 88 | { |
84 | e=e->firstChild(); | 89 | e=e->firstChild(); |
85 | qDebug(e->tagName()); | 90 | odebug << e->tagName() << oendl; |
86 | if (e->tagName()=="language") | 91 | if (e->tagName()=="language") |
87 | { | 92 | { |
88 | syntaxModeListItem *mli=new syntaxModeListItem; | 93 | syntaxModeListItem *mli=new syntaxModeListItem; |
89 | mli->name = e->attribute("name"); | 94 | mli->name = e->attribute("name"); |
90 | mli->section = e->attribute("section"); | 95 | mli->section = e->attribute("section"); |
91 | mli->mimetype = e->attribute("mimetype"); | 96 | mli->mimetype = e->attribute("mimetype"); |
92 | mli->extension = e->attribute("extensions"); | 97 | mli->extension = e->attribute("extensions"); |
93 | qDebug(QString("valid description for: %1/%2").arg(mli->section).arg(mli->name)); | 98 | odebug << QString("valid description for: %1/%2").arg(mli->section).arg(mli->name) << oendl; |
94 | if (mli->section.isEmpty()) | 99 | if (mli->section.isEmpty()) |
95 | mli->section=i18n("Other"); | 100 | mli->section=i18n("Other"); |
96 | 101 | ||
97 | mli->identifier = path+(*it); | 102 | mli->identifier = path+(*it); |
98 | config->setGroup(Group); | 103 | config->setGroup(Group); |
99 | config->writeEntry("name",mli->name); | 104 | config->writeEntry("name",mli->name); |
100 | config->writeEntry("section",mli->section); | 105 | config->writeEntry("section",mli->section); |
101 | config->writeEntry("mimetype",mli->mimetype); | 106 | config->writeEntry("mimetype",mli->mimetype); |
102 | config->writeEntry("extension",mli->extension); | 107 | config->writeEntry("extension",mli->extension); |
103 | myModeList.append(mli); | 108 | myModeList.append(mli); |
104 | } | 109 | } |
105 | } | 110 | } |
106 | } | 111 | } |
107 | } | 112 | } |
108 | config->write(); | 113 | config->write(); |
109 | // config->sync(); | 114 | // config->sync(); |
110 | } | 115 | } |
111 | 116 | ||
112 | SyntaxModeList SyntaxDocument::modeList() | 117 | SyntaxModeList SyntaxDocument::modeList() |
113 | { | 118 | { |
114 | return myModeList; | 119 | return myModeList; |
115 | } | 120 | } |
116 | 121 | ||
117 | bool SyntaxDocument::nextGroup( syntaxContextData* data) | 122 | bool SyntaxDocument::nextGroup( syntaxContextData* data) |
118 | { | 123 | { |
119 | if(!data) return false; | 124 | if(!data) return false; |
120 | 125 | ||
121 | if (!data->currentGroup) | 126 | if (!data->currentGroup) |
122 | data->currentGroup=data->parent->firstChild(); | 127 | data->currentGroup=data->parent->firstChild(); |
123 | else | 128 | else |
124 | data->currentGroup=data->currentGroup->nextChild(); | 129 | data->currentGroup=data->currentGroup->nextChild(); |
125 | 130 | ||
126 | data->item=0; | 131 | data->item=0; |
127 | 132 | ||
128 | if (!data->currentGroup) | 133 | if (!data->currentGroup) |
129 | return false; | 134 | return false; |
130 | else | 135 | else |
131 | return true; | 136 | return true; |
132 | } | 137 | } |
133 | 138 | ||
134 | bool SyntaxDocument::nextItem( syntaxContextData* data) | 139 | bool SyntaxDocument::nextItem( syntaxContextData* data) |
135 | { | 140 | { |
136 | if(!data) return false; | 141 | if(!data) return false; |
137 | 142 | ||
138 | if (!data->item) | 143 | if (!data->item) |
139 | data->item=data->currentGroup->firstChild(); | 144 | data->item=data->currentGroup->firstChild(); |
140 | else | 145 | else |
141 | data->item=data->item->nextChild(); | 146 | data->item=data->item->nextChild(); |
142 | 147 | ||
143 | if (!data->item) | 148 | if (!data->item) |
144 | return false; | 149 | return false; |
145 | else | 150 | else |
146 | return true; | 151 | return true; |
147 | } | 152 | } |
148 | 153 | ||
149 | QString SyntaxDocument::groupItemData( syntaxContextData* data,QString name) | 154 | QString SyntaxDocument::groupItemData( syntaxContextData* data,QString name) |
150 | { | 155 | { |
151 | if(!data) | 156 | if(!data) |
152 | return QString::null; | 157 | return QString::null; |
153 | 158 | ||
154 | if ( (data->item) && (name.isEmpty())) | 159 | if ( (data->item) && (name.isEmpty())) |
155 | return data->item->tagName(); | 160 | return data->item->tagName(); |
156 | 161 | ||
157 | if (data->item) | 162 | if (data->item) |
158 | return data->item->attribute(name); | 163 | return data->item->attribute(name); |
159 | else | 164 | else |
160 | return QString(); | 165 | return QString(); |
161 | } | 166 | } |
162 | 167 | ||
163 | QString SyntaxDocument::groupData( syntaxContextData* data,QString name) | 168 | QString SyntaxDocument::groupData( syntaxContextData* data,QString name) |
164 | { | 169 | { |
165 | if(!data) | 170 | if(!data) |
166 | return QString::null; | 171 | return QString::null; |
167 | 172 | ||
168 | if (data->currentGroup) | 173 | if (data->currentGroup) |
169 | return data->currentGroup->attribute(name); | 174 | return data->currentGroup->attribute(name); |
170 | else | 175 | else |
171 | return QString(); | 176 | return QString(); |
172 | } | 177 | } |
173 | 178 | ||
174 | void SyntaxDocument::freeGroupInfo( syntaxContextData* data) | 179 | void SyntaxDocument::freeGroupInfo( syntaxContextData* data) |
175 | { | 180 | { |
176 | if (data) | 181 | if (data) |
177 | delete data; | 182 | delete data; |
178 | } | 183 | } |
179 | 184 | ||
180 | syntaxContextData* SyntaxDocument::getSubItems(syntaxContextData* data) | 185 | syntaxContextData* SyntaxDocument::getSubItems(syntaxContextData* data) |
181 | { | 186 | { |
182 | syntaxContextData *retval=new syntaxContextData; | 187 | syntaxContextData *retval=new syntaxContextData; |
183 | retval->parent=0; | 188 | retval->parent=0; |
184 | retval->currentGroup=0; | 189 | retval->currentGroup=0; |
185 | retval->item=0; | 190 | retval->item=0; |
186 | if (data != 0) | 191 | if (data != 0) |
187 | { | 192 | { |
188 | retval->parent=data->currentGroup; | 193 | retval->parent=data->currentGroup; |
189 | retval->currentGroup=data->item; | 194 | retval->currentGroup=data->item; |
190 | retval->item=0; | 195 | retval->item=0; |
191 | } | 196 | } |
192 | 197 | ||
193 | return retval; | 198 | return retval; |
194 | } | 199 | } |
195 | 200 | ||
196 | syntaxContextData* SyntaxDocument::getConfig(const QString& mainGroupName, const QString &Config) | 201 | syntaxContextData* SyntaxDocument::getConfig(const QString& mainGroupName, const QString &Config) |
197 | { | 202 | { |
198 | Opie::Core::XMLElement *e = m_root->firstChild()->firstChild(); | 203 | Opie::Core::XMLElement *e = m_root->firstChild()->firstChild(); |
199 | 204 | ||
200 | while (e) | 205 | while (e) |
201 | { | 206 | { |
202 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (outer loop) " <<endl; | 207 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (outer loop) " <<endl; |
203 | 208 | ||
204 | if (e->tagName().compare(mainGroupName)==0 ) | 209 | if (e->tagName().compare(mainGroupName)==0 ) |
205 | { | 210 | { |
206 | Opie::Core::XMLElement *e1=e->firstChild(); | 211 | Opie::Core::XMLElement *e1=e->firstChild(); |
207 | 212 | ||
208 | while (e1) | 213 | while (e1) |
209 | { | 214 | { |
210 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (inner loop) " <<endl; | 215 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (inner loop) " <<endl; |
211 | 216 | ||
212 | if (e1->tagName()==Config) | 217 | if (e1->tagName()==Config) |
213 | { | 218 | { |
214 | syntaxContextData *data=new ( syntaxContextData); | 219 | syntaxContextData *data=new ( syntaxContextData); |
215 | data->currentGroup=0; | 220 | data->currentGroup=0; |
216 | data->parent=0; | 221 | data->parent=0; |
217 | data->item=e1; | 222 | data->item=e1; |
218 | return data; | 223 | return data; |
219 | } | 224 | } |
220 | 225 | ||
221 | e1=e1->nextChild(); | 226 | e1=e1->nextChild(); |
222 | } | 227 | } |
223 | 228 | ||
224 | kdDebug(13010) << "WARNING :returning null 3"<< endl; | 229 | kdDebug(13010) << "WARNING :returning null 3"<< endl; |
225 | return 0; | 230 | return 0; |
226 | } | 231 | } |
227 | 232 | ||
228 | e=e->nextChild(); | 233 | e=e->nextChild(); |
229 | } | 234 | } |
230 | 235 | ||
231 | kdDebug(13010) << "WARNING :returning null 4" << endl; | 236 | kdDebug(13010) << "WARNING :returning null 4" << endl; |
232 | return 0; | 237 | return 0; |
233 | } | 238 | } |
234 | 239 | ||
235 | 240 | ||
236 | 241 | ||
237 | syntaxContextData* SyntaxDocument::getGroupInfo(const QString& mainGroupName, const QString &group) | 242 | syntaxContextData* SyntaxDocument::getGroupInfo(const QString& mainGroupName, const QString &group) |
238 | { | 243 | { |
239 | 244 | ||
240 | Opie::Core::XMLElement *e=m_root->firstChild()->firstChild(); | 245 | Opie::Core::XMLElement *e=m_root->firstChild()->firstChild(); |
241 | 246 | ||
242 | while (e) | 247 | while (e) |
243 | { | 248 | { |
244 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (outer loop) " <<endl; | 249 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (outer loop) " <<endl; |
245 | 250 | ||
246 | if (e->tagName().compare(mainGroupName)==0 ) | 251 | if (e->tagName().compare(mainGroupName)==0 ) |
247 | { | 252 | { |
248 | Opie::Core::XMLElement *e1=e->firstChild(); | 253 | Opie::Core::XMLElement *e1=e->firstChild(); |
249 | 254 | ||
250 | while (e1) | 255 | while (e1) |
251 | { | 256 | { |
252 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (inner loop) " <<endl; | 257 | kdDebug(13010)<<"in SyntaxDocument::getGroupInfo (inner loop) " <<endl; |
253 | if (e1->tagName()==group+"s") | 258 | if (e1->tagName()==group+"s") |
254 | { | 259 | { |
255 | syntaxContextData *data=new ( syntaxContextData); | 260 | syntaxContextData *data=new ( syntaxContextData); |
256 | data->parent=e1; | 261 | data->parent=e1; |
257 | data->currentGroup=0; | 262 | data->currentGroup=0; |
258 | data->item=0; | 263 | data->item=0; |
259 | return data; | 264 | return data; |
260 | } | 265 | } |
261 | 266 | ||
262 | e1=e1->nextChild(); | 267 | e1=e1->nextChild(); |
263 | } | 268 | } |
264 | 269 | ||
265 | kdDebug(13010) << "WARNING : getGroupInfo returning null :1 " << endl; | 270 | kdDebug(13010) << "WARNING : getGroupInfo returning null :1 " << endl; |
266 | return 0; | 271 | return 0; |
267 | } | 272 | } |
268 | 273 | ||
269 | e=e->nextChild(); | 274 | e=e->nextChild(); |
270 | } | 275 | } |
271 | 276 | ||
272 | kdDebug(13010) << "WARNING : getGroupInfo returning null :2" << endl; | 277 | kdDebug(13010) << "WARNING : getGroupInfo returning null :2" << endl; |
273 | return 0; | 278 | return 0; |
274 | } | 279 | } |
275 | 280 | ||
276 | 281 | ||
277 | QStringList& SyntaxDocument::finddata(const QString& mainGroup,const QString& type,bool clearList) | 282 | QStringList& SyntaxDocument::finddata(const QString& mainGroup,const QString& type,bool clearList) |
278 | { | 283 | { |
279 | Opie::Core::XMLElement *e = m_root->firstChild(); | 284 | Opie::Core::XMLElement *e = m_root->firstChild(); |
280 | if (clearList) | 285 | if (clearList) |
281 | m_data.clear(); | 286 | m_data.clear(); |
282 | 287 | ||
283 | for(e=e->firstChild(); e; e=e->nextChild()) | 288 | for(e=e->firstChild(); e; e=e->nextChild()) |
284 | { | 289 | { |
285 | if (e->tagName()==mainGroup) | 290 | if (e->tagName()==mainGroup) |
286 | { | 291 | { |
287 | for (Opie::Core::XMLElement *e1=e->firstChild();e1;e1=e1->nextChild()) | 292 | for (Opie::Core::XMLElement *e1=e->firstChild();e1;e1=e1->nextChild()) |
288 | { | 293 | { |
289 | if (e1->tagName()!="list") continue; | 294 | if (e1->tagName()!="list") continue; |
290 | 295 | ||
291 | if (e1->attribute("name")==type) | 296 | if (e1->attribute("name")==type) |
292 | { | 297 | { |
293 | for (Opie::Core::XMLElement *e2=e1->firstChild();e2;e2=e2->nextChild()) | 298 | for (Opie::Core::XMLElement *e2=e1->firstChild();e2;e2=e2->nextChild()) |
294 | { | 299 | { |
295 | qDebug("FOUND A LIST ENTRY("+e2->tagName()+"):"+e2->firstChild()->value()); | 300 | odebug << "FOUND A LIST ENTRY("+e2->tagName()+"):"+e2->firstChild()->value() << oendl; |
296 | m_data+=e2->firstChild()->value().stripWhiteSpace(); | 301 | m_data+=e2->firstChild()->value().stripWhiteSpace(); |
297 | } | 302 | } |
298 | break; | 303 | break; |
299 | } | 304 | } |
300 | } | 305 | } |
301 | break; | 306 | break; |
302 | } | 307 | } |
303 | } | 308 | } |
304 | 309 | ||
305 | return m_data; | 310 | return m_data; |
306 | } | 311 | } |
diff --git a/noncore/apps/tinykate/libkate/kateconfig.cpp b/noncore/apps/tinykate/libkate/kateconfig.cpp index 96f91fb..782b629 100644 --- a/noncore/apps/tinykate/libkate/kateconfig.cpp +++ b/noncore/apps/tinykate/libkate/kateconfig.cpp | |||
@@ -1,632 +1,637 @@ | |||
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 | #define QTOPIA_INTERNAL_LANGLIST | ||
22 | #include "kateconfig.h" | ||
23 | |||
24 | /* OPIE */ | ||
25 | #include <opie2/odebug.h> | ||
26 | #include <qpe/global.h> | ||
27 | |||
28 | /* QT */ | ||
21 | #include <qdir.h> | 29 | #include <qdir.h> |
22 | #include <qmessagebox.h> | 30 | #include <qmessagebox.h> |
23 | #if QT_VERSION <= 230 && defined(QT_NO_CODECS) | 31 | #if QT_VERSION <= 230 && defined(QT_NO_CODECS) |
24 | #include <qtextcodec.h> | 32 | #include <qtextcodec.h> |
25 | #endif | 33 | #endif |
26 | #include <qtextstream.h> | 34 | #include <qtextstream.h> |
27 | 35 | ||
36 | /* STD */ | ||
28 | #include <sys/stat.h> | 37 | #include <sys/stat.h> |
29 | #include <sys/types.h> | 38 | #include <sys/types.h> |
30 | #include <fcntl.h> | 39 | #include <fcntl.h> |
31 | #include <stdlib.h> | 40 | #include <stdlib.h> |
32 | #include <unistd.h> | 41 | #include <unistd.h> |
33 | 42 | ||
34 | #define QTOPIA_INTERNAL_LANGLIST | ||
35 | #include "kateconfig.h" | ||
36 | #include <qpe/global.h> | ||
37 | |||
38 | 43 | ||
39 | /*! | 44 | /*! |
40 | \internal | 45 | \internal |
41 | */ | 46 | */ |
42 | QString KateConfig::configFilename(const QString& name, Domain d) | 47 | QString KateConfig::configFilename(const QString& name, Domain d) |
43 | { | 48 | { |
44 | switch (d) { | 49 | switch (d) { |
45 | case File: | 50 | case File: |
46 | return name; | 51 | return name; |
47 | case User: { | 52 | case User: { |
48 | QDir dir = (QString(getenv("HOME")) + "/Settings"); | 53 | QDir dir = (QString(getenv("HOME")) + "/Settings"); |
49 | if ( !dir.exists() ) | 54 | if ( !dir.exists() ) |
50 | mkdir(dir.path().local8Bit(),0700); | 55 | mkdir(dir.path().local8Bit(),0700); |
51 | return dir.path() + "/" + name + ".conf"; | 56 | return dir.path() + "/" + name + ".conf"; |
52 | } | 57 | } |
53 | } | 58 | } |
54 | return name; | 59 | return name; |
55 | } | 60 | } |
56 | 61 | ||
57 | /*! | 62 | /*! |
58 | \class KateConfig config.h | 63 | \class KateConfig config.h |
59 | \brief The KateConfig class provides for saving application cofniguration state. | 64 | \brief The KateConfig class provides for saving application cofniguration state. |
60 | 65 | ||
61 | You should keep a KateConfig in existence only while you do not want others | 66 | You should keep a KateConfig in existence only while you do not want others |
62 | to be able to change the state. There is no locking currently, but there | 67 | to be able to change the state. There is no locking currently, but there |
63 | may be in the future. | 68 | may be in the future. |
64 | */ | 69 | */ |
65 | 70 | ||
66 | /*! | 71 | /*! |
67 | \enum KateConfig::KateConfigGroup | 72 | \enum KateConfig::KateConfigGroup |
68 | \internal | 73 | \internal |
69 | */ | 74 | */ |
70 | 75 | ||
71 | /*! | 76 | /*! |
72 | \enum KateConfig::Domain | 77 | \enum KateConfig::Domain |
73 | 78 | ||
74 | \value File | 79 | \value File |
75 | \value User | 80 | \value User |
76 | 81 | ||
77 | See KateConfig for details. | 82 | See KateConfig for details. |
78 | */ | 83 | */ |
79 | 84 | ||
80 | /*! | 85 | /*! |
81 | Constructs a config that will load or create a configuration with the | 86 | Constructs a config that will load or create a configuration with the |
82 | given \a name in the given \a domain. | 87 | given \a name in the given \a domain. |
83 | 88 | ||
84 | You must call setGroup() before doing much else with the KateConfig. | 89 | You must call setGroup() before doing much else with the KateConfig. |
85 | 90 | ||
86 | In the default Domain, \e User, | 91 | In the default Domain, \e User, |
87 | the configuration is user-specific. \a name should not contain "/" in | 92 | the configuration is user-specific. \a name should not contain "/" in |
88 | this case, and in general should be the name of the C++ class that is | 93 | this case, and in general should be the name of the C++ class that is |
89 | primarily responsible for maintaining the configuration. | 94 | primarily responsible for maintaining the configuration. |
90 | 95 | ||
91 | In the File Domain, \a name is an absolute filename. | 96 | In the File Domain, \a name is an absolute filename. |
92 | */ | 97 | */ |
93 | KateConfig::KateConfig( const QString &name, Domain domain ) | 98 | KateConfig::KateConfig( const QString &name, Domain domain ) |
94 | : filename( configFilename(name,domain) ) | 99 | : filename( configFilename(name,domain) ) |
95 | { | 100 | { |
96 | qWarning("KateConfig constructor\n"); | 101 | owarn << "KateConfig constructor\n" << oendl; |
97 | git = groups.end(); | 102 | git = groups.end(); |
98 | read(); | 103 | read(); |
99 | QStringList l = Global::languageList(); | 104 | QStringList l = Global::languageList(); |
100 | lang = l[0]; | 105 | lang = l[0]; |
101 | glang = l[1]; | 106 | glang = l[1]; |
102 | } | 107 | } |
103 | 108 | ||
104 | 109 | ||
105 | // Sharp ROM compatibility | 110 | // Sharp ROM compatibility |
106 | KateConfig::KateConfig ( const QString &name, bool what ) | 111 | KateConfig::KateConfig ( const QString &name, bool what ) |
107 | : filename( configFilename(name,what ? User : File) ) | 112 | : filename( configFilename(name,what ? User : File) ) |
108 | { | 113 | { |
109 | git = groups.end(); | 114 | git = groups.end(); |
110 | read(); | 115 | read(); |
111 | QStringList l = Global::languageList(); | 116 | QStringList l = Global::languageList(); |
112 | lang = l[0]; | 117 | lang = l[0]; |
113 | glang = l[1]; | 118 | glang = l[1]; |
114 | } | 119 | } |
115 | 120 | ||
116 | /*! | 121 | /*! |
117 | Writes any changes to disk and destroys the in-memory object. | 122 | Writes any changes to disk and destroys the in-memory object. |
118 | */ | 123 | */ |
119 | KateConfig::~KateConfig() | 124 | KateConfig::~KateConfig() |
120 | { | 125 | { |
121 | qWarning("KateConfig destructor\n"); | 126 | owarn << "KateConfig destructor\n" << oendl; |
122 | if ( changed ) | 127 | if ( changed ) |
123 | write(); | 128 | write(); |
124 | } | 129 | } |
125 | 130 | ||
126 | /*! | 131 | /*! |
127 | Returns whether the current group has an entry called \a key. | 132 | Returns whether the current group has an entry called \a key. |
128 | */ | 133 | */ |
129 | bool KateConfig::hasKey( const QString &key ) const | 134 | bool KateConfig::hasKey( const QString &key ) const |
130 | { | 135 | { |
131 | if ( groups.end() == git ) | 136 | if ( groups.end() == git ) |
132 | return FALSE; | 137 | return FALSE; |
133 | KateConfigGroup::ConstIterator it = ( *git ).find( key ); | 138 | KateConfigGroup::ConstIterator it = ( *git ).find( key ); |
134 | return it != ( *git ).end(); | 139 | return it != ( *git ).end(); |
135 | } | 140 | } |
136 | 141 | ||
137 | /*! | 142 | /*! |
138 | Sets the current group for subsequent reading and writing of | 143 | Sets the current group for subsequent reading and writing of |
139 | entries to \a gname. Grouping allows the application to partition the namespace. | 144 | entries to \a gname. Grouping allows the application to partition the namespace. |
140 | 145 | ||
141 | This function must be called prior to any reading or writing | 146 | This function must be called prior to any reading or writing |
142 | of entries. | 147 | of entries. |
143 | 148 | ||
144 | The \a gname must not be empty. | 149 | The \a gname must not be empty. |
145 | */ | 150 | */ |
146 | void KateConfig::setGroup( const QString &gname ) | 151 | void KateConfig::setGroup( const QString &gname ) |
147 | { | 152 | { |
148 | QMap< QString, KateConfigGroup>::Iterator it = groups.find( gname ); | 153 | QMap< QString, KateConfigGroup>::Iterator it = groups.find( gname ); |
149 | if ( it == groups.end() ) { | 154 | if ( it == groups.end() ) { |
150 | git = groups.insert( gname, KateConfigGroup() ); | 155 | git = groups.insert( gname, KateConfigGroup() ); |
151 | changed = TRUE; | 156 | changed = TRUE; |
152 | return; | 157 | return; |
153 | } | 158 | } |
154 | git = it; | 159 | git = it; |
155 | } | 160 | } |
156 | 161 | ||
157 | /*! | 162 | /*! |
158 | Writes a (\a key, \a value) entry to the current group. | 163 | Writes a (\a key, \a value) entry to the current group. |
159 | 164 | ||
160 | \sa readEntry() | 165 | \sa readEntry() |
161 | */ | 166 | */ |
162 | void KateConfig::writeEntry( const QString &key, const char* value ) | 167 | void KateConfig::writeEntry( const QString &key, const char* value ) |
163 | { | 168 | { |
164 | writeEntry(key,QString(value)); | 169 | writeEntry(key,QString(value)); |
165 | } | 170 | } |
166 | 171 | ||
167 | /*! | 172 | /*! |
168 | Writes a (\a key, \a value) entry to the current group. | 173 | Writes a (\a key, \a value) entry to the current group. |
169 | 174 | ||
170 | \sa readEntry() | 175 | \sa readEntry() |
171 | */ | 176 | */ |
172 | void KateConfig::writeEntry( const QString &key, const QString &value ) | 177 | void KateConfig::writeEntry( const QString &key, const QString &value ) |
173 | { | 178 | { |
174 | if ( git == groups.end() ) { | 179 | if ( git == groups.end() ) { |
175 | qWarning( "no group set" ); | 180 | owarn << "no group set" << oendl; |
176 | return; | 181 | return; |
177 | } | 182 | } |
178 | if ( (*git)[key] != value ) { | 183 | if ( (*git)[key] != value ) { |
179 | ( *git ).insert( key, value ); | 184 | ( *git ).insert( key, value ); |
180 | changed = TRUE; | 185 | changed = TRUE; |
181 | } | 186 | } |
182 | } | 187 | } |
183 | 188 | ||
184 | /* | 189 | /* |
185 | Note that the degree of protection offered by the encryption here is | 190 | Note that the degree of protection offered by the encryption here is |
186 | only sufficient to avoid the most casual observation of the configuration | 191 | only sufficient to avoid the most casual observation of the configuration |
187 | files. People with access to the files can write down the contents and | 192 | files. People with access to the files can write down the contents and |
188 | decrypt it using this source code. | 193 | decrypt it using this source code. |
189 | 194 | ||
190 | Conceivably, and at some burden to the user, this encryption could | 195 | Conceivably, and at some burden to the user, this encryption could |
191 | be improved. | 196 | be improved. |
192 | */ | 197 | */ |
193 | static QString encipher(const QString& plain) | 198 | static QString encipher(const QString& plain) |
194 | { | 199 | { |
195 | // mainly, we make it long | 200 | // mainly, we make it long |
196 | QString cipher; | 201 | QString cipher; |
197 | int mix=28730492; | 202 | int mix=28730492; |
198 | for (int i=0; i<(int)plain.length(); i++) { | 203 | for (int i=0; i<(int)plain.length(); i++) { |
199 | int u = plain[i].unicode(); | 204 | int u = plain[i].unicode(); |
200 | int c = u ^ mix; | 205 | int c = u ^ mix; |
201 | QString x = QString::number(c,36); | 206 | QString x = QString::number(c,36); |
202 | cipher.append(QChar('a'+x.length())); | 207 | cipher.append(QChar('a'+x.length())); |
203 | cipher.append(x); | 208 | cipher.append(x); |
204 | mix *= u; | 209 | mix *= u; |
205 | } | 210 | } |
206 | return cipher; | 211 | return cipher; |
207 | } | 212 | } |
208 | 213 | ||
209 | static QString decipher(const QString& cipher) | 214 | static QString decipher(const QString& cipher) |
210 | { | 215 | { |
211 | QString plain; | 216 | QString plain; |
212 | int mix=28730492; | 217 | int mix=28730492; |
213 | for (int i=0; i<(int)cipher.length();) { | 218 | for (int i=0; i<(int)cipher.length();) { |
214 | int l = cipher[i].unicode()-'a'; | 219 | int l = cipher[i].unicode()-'a'; |
215 | QString x = cipher.mid(i+1,l); i+=l+1; | 220 | QString x = cipher.mid(i+1,l); i+=l+1; |
216 | int u = x.toInt(0,36) ^ mix; | 221 | int u = x.toInt(0,36) ^ mix; |
217 | plain.append(QChar(u)); | 222 | plain.append(QChar(u)); |
218 | mix *= u; | 223 | mix *= u; |
219 | } | 224 | } |
220 | return plain; | 225 | return plain; |
221 | } | 226 | } |
222 | 227 | ||
223 | /*! | 228 | /*! |
224 | Writes an encrypted (\a key, \a value) entry to the current group. | 229 | Writes an encrypted (\a key, \a value) entry to the current group. |
225 | 230 | ||
226 | Note that the degree of protection offered by the encryption is | 231 | Note that the degree of protection offered by the encryption is |
227 | only sufficient to avoid the most casual observation of the configuration | 232 | only sufficient to avoid the most casual observation of the configuration |
228 | files. | 233 | files. |
229 | 234 | ||
230 | \sa readEntry() | 235 | \sa readEntry() |
231 | */ | 236 | */ |
232 | void KateConfig::writeEntryCrypt( const QString &key, const QString &value ) | 237 | void KateConfig::writeEntryCrypt( const QString &key, const QString &value ) |
233 | { | 238 | { |
234 | if ( git == groups.end() ) { | 239 | if ( git == groups.end() ) { |
235 | qWarning( "no group set" ); | 240 | owarn << "no group set" << oendl; |
236 | return; | 241 | return; |
237 | } | 242 | } |
238 | QString evalue = encipher(value); | 243 | QString evalue = encipher(value); |
239 | if ( (*git)[key] != evalue ) { | 244 | if ( (*git)[key] != evalue ) { |
240 | ( *git ).insert( key, evalue ); | 245 | ( *git ).insert( key, evalue ); |
241 | changed = TRUE; | 246 | changed = TRUE; |
242 | } | 247 | } |
243 | } | 248 | } |
244 | 249 | ||
245 | /*! | 250 | /*! |
246 | Writes a (\a key, \a num) entry to the current group. | 251 | Writes a (\a key, \a num) entry to the current group. |
247 | 252 | ||
248 | \sa readNumEntry() | 253 | \sa readNumEntry() |
249 | */ | 254 | */ |
250 | void KateConfig::writeEntry( const QString &key, int num ) | 255 | void KateConfig::writeEntry( const QString &key, int num ) |
251 | { | 256 | { |
252 | QString s; | 257 | QString s; |
253 | s.setNum( num ); | 258 | s.setNum( num ); |
254 | writeEntry( key, s ); | 259 | writeEntry( key, s ); |
255 | } | 260 | } |
256 | 261 | ||
257 | void KateConfig::writeEntry( const QString &key, unsigned int num ) | 262 | void KateConfig::writeEntry( const QString &key, unsigned int num ) |
258 | { | 263 | { |
259 | QString s; | 264 | QString s; |
260 | s.setNum( num ); | 265 | s.setNum( num ); |
261 | writeEntry( key, s ); | 266 | writeEntry( key, s ); |
262 | } | 267 | } |
263 | 268 | ||
264 | #ifdef Q_HAS_BOOL_TYPE | 269 | #ifdef Q_HAS_BOOL_TYPE |
265 | /*! | 270 | /*! |
266 | Writes a (\a key, \a b) entry to the current group. This is equivalent | 271 | Writes a (\a key, \a b) entry to the current group. This is equivalent |
267 | to writing a 0 or 1 as an integer entry. | 272 | to writing a 0 or 1 as an integer entry. |
268 | 273 | ||
269 | \sa readBoolEntry() | 274 | \sa readBoolEntry() |
270 | */ | 275 | */ |
271 | void KateConfig::writeEntry( const QString &key, bool b ) | 276 | void KateConfig::writeEntry( const QString &key, bool b ) |
272 | { | 277 | { |
273 | QString s; | 278 | QString s; |
274 | s.setNum( ( int )b ); | 279 | s.setNum( ( int )b ); |
275 | writeEntry( key, s ); | 280 | writeEntry( key, s ); |
276 | } | 281 | } |
277 | #endif | 282 | #endif |
278 | 283 | ||
279 | /*! | 284 | /*! |
280 | Writes a (\a key, \a lst) entry to the current group. The list | 285 | Writes a (\a key, \a lst) entry to the current group. The list |
281 | is separated by \a sep, so the strings must not contain that character. | 286 | is separated by \a sep, so the strings must not contain that character. |
282 | 287 | ||
283 | \sa readListEntry() | 288 | \sa readListEntry() |
284 | */ | 289 | */ |
285 | void KateConfig::writeEntry( const QString &key, const QStringList &lst, const QChar &sep ) | 290 | void KateConfig::writeEntry( const QString &key, const QStringList &lst, const QChar &sep ) |
286 | { | 291 | { |
287 | QString s; | 292 | QString s; |
288 | QStringList::ConstIterator it = lst.begin(); | 293 | QStringList::ConstIterator it = lst.begin(); |
289 | for ( ; it != lst.end(); ++it ) | 294 | for ( ; it != lst.end(); ++it ) |
290 | s += *it + sep; | 295 | s += *it + sep; |
291 | writeEntry( key, s ); | 296 | writeEntry( key, s ); |
292 | } | 297 | } |
293 | 298 | ||
294 | void KateConfig::writeEntry( const QString &key, const QColor &val ) | 299 | void KateConfig::writeEntry( const QString &key, const QColor &val ) |
295 | { | 300 | { |
296 | QStringList l; | 301 | QStringList l; |
297 | l.append( QString().setNum(val.red()) ); | 302 | l.append( QString().setNum(val.red()) ); |
298 | l.append( QString().setNum(val.green()) ); | 303 | l.append( QString().setNum(val.green()) ); |
299 | l.append( QString().setNum(val.blue()) ); | 304 | l.append( QString().setNum(val.blue()) ); |
300 | 305 | ||
301 | writeEntry( key, l, QChar(',') ); | 306 | writeEntry( key, l, QChar(',') ); |
302 | } | 307 | } |
303 | 308 | ||
304 | void KateConfig::writeEntry( const QString &key, const QFont &val ) | 309 | void KateConfig::writeEntry( const QString &key, const QFont &val ) |
305 | { | 310 | { |
306 | QStringList l; | 311 | QStringList l; |
307 | l.append( val.family() ); | 312 | l.append( val.family() ); |
308 | l.append( QString().setNum(val.pointSize()) ); | 313 | l.append( QString().setNum(val.pointSize()) ); |
309 | l.append( QString().setNum(val.weight()) ); | 314 | l.append( QString().setNum(val.weight()) ); |
310 | l.append( QString().setNum((int)val.italic()) ); | 315 | l.append( QString().setNum((int)val.italic()) ); |
311 | l.append( QString().setNum((int)val.charSet()) ); | 316 | l.append( QString().setNum((int)val.charSet()) ); |
312 | 317 | ||
313 | writeEntry( key, l, QChar(',') ); | 318 | writeEntry( key, l, QChar(',') ); |
314 | } | 319 | } |
315 | 320 | ||
316 | /*! | 321 | /*! |
317 | Removes the \a key entry from the current group. Does nothing if | 322 | Removes the \a key entry from the current group. Does nothing if |
318 | there is no such entry. | 323 | there is no such entry. |
319 | */ | 324 | */ |
320 | 325 | ||
321 | void KateConfig::removeEntry( const QString &key ) | 326 | void KateConfig::removeEntry( const QString &key ) |
322 | { | 327 | { |
323 | if ( git == groups.end() ) { | 328 | if ( git == groups.end() ) { |
324 | qWarning( "no group set" ); | 329 | owarn << "no group set" << oendl; |
325 | return; | 330 | return; |
326 | } | 331 | } |
327 | ( *git ).remove( key ); | 332 | ( *git ).remove( key ); |
328 | changed = TRUE; | 333 | changed = TRUE; |
329 | } | 334 | } |
330 | 335 | ||
331 | /*! | 336 | /*! |
332 | \fn bool KateConfig::operator == ( const KateConfig & other ) const | 337 | \fn bool KateConfig::operator == ( const KateConfig & other ) const |
333 | 338 | ||
334 | Tests for equality with \a other. KateConfig objects are equal if they refer to the same filename. | 339 | Tests for equality with \a other. KateConfig objects are equal if they refer to the same filename. |
335 | */ | 340 | */ |
336 | 341 | ||
337 | /*! | 342 | /*! |
338 | \fn bool KateConfig::operator != ( const KateConfig & other ) const | 343 | \fn bool KateConfig::operator != ( const KateConfig & other ) const |
339 | 344 | ||
340 | Tests for inequality with \a other. KateConfig objects are equal if they refer to the same filename. | 345 | Tests for inequality with \a other. KateConfig objects are equal if they refer to the same filename. |
341 | */ | 346 | */ |
342 | 347 | ||
343 | /*! | 348 | /*! |
344 | \fn QString KateConfig::readEntry( const QString &key, const QString &deflt ) const | 349 | \fn QString KateConfig::readEntry( const QString &key, const QString &deflt ) const |
345 | 350 | ||
346 | Reads a string entry stored with \a key, defaulting to \a deflt if there is no entry. | 351 | Reads a string entry stored with \a key, defaulting to \a deflt if there is no entry. |
347 | */ | 352 | */ |
348 | 353 | ||
349 | /*! | 354 | /*! |
350 | \internal | 355 | \internal |
351 | For compatibility, non-const version. | 356 | For compatibility, non-const version. |
352 | */ | 357 | */ |
353 | QString KateConfig::readEntry( const QString &key, const QString &deflt ) | 358 | QString KateConfig::readEntry( const QString &key, const QString &deflt ) |
354 | { | 359 | { |
355 | QString res = readEntryDirect( key+"["+lang+"]" ); | 360 | QString res = readEntryDirect( key+"["+lang+"]" ); |
356 | if ( !res.isNull() ) | 361 | if ( !res.isNull() ) |
357 | return res; | 362 | return res; |
358 | if ( !glang.isEmpty() ) { | 363 | if ( !glang.isEmpty() ) { |
359 | res = readEntryDirect( key+"["+glang+"]" ); | 364 | res = readEntryDirect( key+"["+glang+"]" ); |
360 | if ( !res.isNull() ) | 365 | if ( !res.isNull() ) |
361 | return res; | 366 | return res; |
362 | } | 367 | } |
363 | return readEntryDirect( key, deflt ); | 368 | return readEntryDirect( key, deflt ); |
364 | } | 369 | } |
365 | 370 | ||
366 | /*! | 371 | /*! |
367 | \fn QString KateConfig::readEntryCrypt( const QString &key, const QString &deflt ) const | 372 | \fn QString KateConfig::readEntryCrypt( const QString &key, const QString &deflt ) const |
368 | 373 | ||
369 | Reads an encrypted string entry stored with \a key, defaulting to \a deflt if there is no entry. | 374 | Reads an encrypted string entry stored with \a key, defaulting to \a deflt if there is no entry. |
370 | */ | 375 | */ |
371 | 376 | ||
372 | /*! | 377 | /*! |
373 | \internal | 378 | \internal |
374 | For compatibility, non-const version. | 379 | For compatibility, non-const version. |
375 | */ | 380 | */ |
376 | QString KateConfig::readEntryCrypt( const QString &key, const QString &deflt ) | 381 | QString KateConfig::readEntryCrypt( const QString &key, const QString &deflt ) |
377 | { | 382 | { |
378 | QString res = readEntryDirect( key+"["+lang+"]" ); | 383 | QString res = readEntryDirect( key+"["+lang+"]" ); |
379 | if ( res.isNull() && glang.isEmpty() ) | 384 | if ( res.isNull() && glang.isEmpty() ) |
380 | res = readEntryDirect( key+"["+glang+"]" ); | 385 | res = readEntryDirect( key+"["+glang+"]" ); |
381 | if ( res.isNull() ) | 386 | if ( res.isNull() ) |
382 | res = readEntryDirect( key, QString::null ); | 387 | res = readEntryDirect( key, QString::null ); |
383 | if ( res.isNull() ) | 388 | if ( res.isNull() ) |
384 | return deflt; | 389 | return deflt; |
385 | return decipher(res); | 390 | return decipher(res); |
386 | } | 391 | } |
387 | 392 | ||
388 | /*! | 393 | /*! |
389 | \fn QString KateConfig::readEntryDirect( const QString &key, const QString &deflt ) const | 394 | \fn QString KateConfig::readEntryDirect( const QString &key, const QString &deflt ) const |
390 | \internal | 395 | \internal |
391 | */ | 396 | */ |
392 | 397 | ||
393 | /*! | 398 | /*! |
394 | \internal | 399 | \internal |
395 | For compatibility, non-const version. | 400 | For compatibility, non-const version. |
396 | */ | 401 | */ |
397 | QString KateConfig::readEntryDirect( const QString &key, const QString &deflt ) | 402 | QString KateConfig::readEntryDirect( const QString &key, const QString &deflt ) |
398 | { | 403 | { |
399 | if ( git == groups.end() ) { | 404 | if ( git == groups.end() ) { |
400 | //qWarning( "no group set" ); | 405 | //owarn << "no group set" << oendl; |
401 | return deflt; | 406 | return deflt; |
402 | } | 407 | } |
403 | KateConfigGroup::ConstIterator it = ( *git ).find( key ); | 408 | KateConfigGroup::ConstIterator it = ( *git ).find( key ); |
404 | if ( it != ( *git ).end() ) | 409 | if ( it != ( *git ).end() ) |
405 | return *it; | 410 | return *it; |
406 | else | 411 | else |
407 | return deflt; | 412 | return deflt; |
408 | } | 413 | } |
409 | 414 | ||
410 | /*! | 415 | /*! |
411 | \fn int KateConfig::readNumEntry( const QString &key, int deflt ) const | 416 | \fn int KateConfig::readNumEntry( const QString &key, int deflt ) const |
412 | Reads a numeric entry stored with \a key, defaulting to \a deflt if there is no entry. | 417 | Reads a numeric entry stored with \a key, defaulting to \a deflt if there is no entry. |
413 | */ | 418 | */ |
414 | 419 | ||
415 | /*! | 420 | /*! |
416 | \internal | 421 | \internal |
417 | For compatibility, non-const version. | 422 | For compatibility, non-const version. |
418 | */ | 423 | */ |
419 | int KateConfig::readNumEntry( const QString &key, int deflt ) | 424 | int KateConfig::readNumEntry( const QString &key, int deflt ) |
420 | { | 425 | { |
421 | QString s = readEntry( key ); | 426 | QString s = readEntry( key ); |
422 | if ( s.isEmpty() ) | 427 | if ( s.isEmpty() ) |
423 | return deflt; | 428 | return deflt; |
424 | else | 429 | else |
425 | return s.toInt(); | 430 | return s.toInt(); |
426 | } | 431 | } |
427 | 432 | ||
428 | /*! | 433 | /*! |
429 | \fn bool KateConfig::readBoolEntry( const QString &key, bool deflt ) const | 434 | \fn bool KateConfig::readBoolEntry( const QString &key, bool deflt ) const |
430 | Reads a bool entry stored with \a key, defaulting to \a deflt if there is no entry. | 435 | Reads a bool entry stored with \a key, defaulting to \a deflt if there is no entry. |
431 | */ | 436 | */ |
432 | 437 | ||
433 | /*! | 438 | /*! |
434 | \internal | 439 | \internal |
435 | For compatibility, non-const version. | 440 | For compatibility, non-const version. |
436 | */ | 441 | */ |
437 | bool KateConfig::readBoolEntry( const QString &key, bool deflt ) | 442 | bool KateConfig::readBoolEntry( const QString &key, bool deflt ) |
438 | { | 443 | { |
439 | QString s = readEntry( key ); | 444 | QString s = readEntry( key ); |
440 | if ( s.isEmpty() ) | 445 | if ( s.isEmpty() ) |
441 | return deflt; | 446 | return deflt; |
442 | else | 447 | else |
443 | return (bool)s.toInt(); | 448 | return (bool)s.toInt(); |
444 | } | 449 | } |
445 | 450 | ||
446 | /*! | 451 | /*! |
447 | \fn QStringList KateConfig::readListEntry( const QString &key, const QChar &sep ) const | 452 | \fn QStringList KateConfig::readListEntry( const QString &key, const QChar &sep ) const |
448 | Reads a string list entry stored with \a key, and with \a sep as the separator. | 453 | Reads a string list entry stored with \a key, and with \a sep as the separator. |
449 | */ | 454 | */ |
450 | 455 | ||
451 | /*! | 456 | /*! |
452 | \internal | 457 | \internal |
453 | For compatibility, non-const version. | 458 | For compatibility, non-const version. |
454 | */ | 459 | */ |
455 | QStringList KateConfig::readListEntry( const QString &key, const QChar &sep ) | 460 | QStringList KateConfig::readListEntry( const QString &key, const QChar &sep ) |
456 | { | 461 | { |
457 | QString s = readEntry( key ); | 462 | QString s = readEntry( key ); |
458 | if ( s.isEmpty() ) | 463 | if ( s.isEmpty() ) |
459 | return QStringList(); | 464 | return QStringList(); |
460 | else | 465 | else |
461 | return QStringList::split( sep, s ); | 466 | return QStringList::split( sep, s ); |
462 | } | 467 | } |
463 | 468 | ||
464 | QColor KateConfig::readColorEntry( const QString &key, const QColor &def ) const | 469 | QColor KateConfig::readColorEntry( const QString &key, const QColor &def ) const |
465 | { | 470 | { |
466 | QStringList list = readListEntry(key, QChar(',')); | 471 | QStringList list = readListEntry(key, QChar(',')); |
467 | if( list.count() != 3 ) | 472 | if( list.count() != 3 ) |
468 | return def; | 473 | return def; |
469 | 474 | ||
470 | return QColor(list[0].toInt(), list[1].toInt(), list[2].toInt()); | 475 | return QColor(list[0].toInt(), list[1].toInt(), list[2].toInt()); |
471 | } | 476 | } |
472 | 477 | ||
473 | QFont KateConfig::readFontEntry( const QString &key, const QFont &def ) const | 478 | QFont KateConfig::readFontEntry( const QString &key, const QFont &def ) const |
474 | { | 479 | { |
475 | QStringList list = readListEntry(key, QChar(',')); | 480 | QStringList list = readListEntry(key, QChar(',')); |
476 | if( list.count() != 5 ) | 481 | if( list.count() != 5 ) |
477 | return def; | 482 | return def; |
478 | 483 | ||
479 | return QFont(list[0], list[1].toInt(), list[2].toInt(), (bool)list[3].toInt(), (QFont::CharSet)list[4].toInt()); | 484 | return QFont(list[0], list[1].toInt(), list[2].toInt(), (bool)list[3].toInt(), (QFont::CharSet)list[4].toInt()); |
480 | } | 485 | } |
481 | 486 | ||
482 | QValueList<int> KateConfig::readIntListEntry( const QString &key ) const | 487 | QValueList<int> KateConfig::readIntListEntry( const QString &key ) const |
483 | { | 488 | { |
484 | QString s = readEntry( key ); | 489 | QString s = readEntry( key ); |
485 | QValueList<int> il; | 490 | QValueList<int> il; |
486 | if ( s.isEmpty() ) | 491 | if ( s.isEmpty() ) |
487 | return il; | 492 | return il; |
488 | 493 | ||
489 | QStringList l = QStringList::split( QChar(','), s ); | 494 | QStringList l = QStringList::split( QChar(','), s ); |
490 | 495 | ||
491 | QStringList::Iterator l_it; | 496 | QStringList::Iterator l_it; |
492 | for( l_it = l.begin(); l_it != l.end(); ++l_it ) | 497 | for( l_it = l.begin(); l_it != l.end(); ++l_it ) |
493 | il.append( (*l_it).toInt() ); | 498 | il.append( (*l_it).toInt() ); |
494 | return il; | 499 | return il; |
495 | } | 500 | } |
496 | 501 | ||
497 | /*! | 502 | /*! |
498 | Removes all entries from the current group. | 503 | Removes all entries from the current group. |
499 | */ | 504 | */ |
500 | void KateConfig::clearGroup() | 505 | void KateConfig::clearGroup() |
501 | { | 506 | { |
502 | if ( git == groups.end() ) { | 507 | if ( git == groups.end() ) { |
503 | qWarning( "no group set" ); | 508 | owarn << "no group set" << oendl; |
504 | return; | 509 | return; |
505 | } | 510 | } |
506 | if ( !(*git).isEmpty() ) { | 511 | if ( !(*git).isEmpty() ) { |
507 | ( *git ).clear(); | 512 | ( *git ).clear(); |
508 | changed = TRUE; | 513 | changed = TRUE; |
509 | } | 514 | } |
510 | } | 515 | } |
511 | 516 | ||
512 | /*! | 517 | /*! |
513 | \internal | 518 | \internal |
514 | */ | 519 | */ |
515 | void KateConfig::write( const QString &fn ) | 520 | void KateConfig::write( const QString &fn ) |
516 | { | 521 | { |
517 | QString strNewFile; | 522 | QString strNewFile; |
518 | if ( !fn.isEmpty() ) | 523 | if ( !fn.isEmpty() ) |
519 | filename = fn; | 524 | filename = fn; |
520 | strNewFile = filename + ".new"; | 525 | strNewFile = filename + ".new"; |
521 | 526 | ||
522 | QFile f( strNewFile ); | 527 | QFile f( strNewFile ); |
523 | if ( !f.open( IO_WriteOnly|IO_Raw ) ) { | 528 | if ( !f.open( IO_WriteOnly|IO_Raw ) ) { |
524 | qWarning( "could not open for writing `%s'", strNewFile.latin1() ); | 529 | owarn << "could not open for writing `" << strNewFile << "'" << oendl; |
525 | git = groups.end(); | 530 | git = groups.end(); |
526 | return; | 531 | return; |
527 | } | 532 | } |
528 | 533 | ||
529 | QString str; | 534 | QString str; |
530 | QCString cstr; | 535 | QCString cstr; |
531 | QMap< QString, KateConfigGroup >::Iterator g_it = groups.begin(); | 536 | QMap< QString, KateConfigGroup >::Iterator g_it = groups.begin(); |
532 | 537 | ||
533 | for ( ; g_it != groups.end(); ++g_it ) { | 538 | for ( ; g_it != groups.end(); ++g_it ) { |
534 | str += "[" + g_it.key() + "]\n"; | 539 | str += "[" + g_it.key() + "]\n"; |
535 | KateConfigGroup::Iterator e_it = ( *g_it ).begin(); | 540 | KateConfigGroup::Iterator e_it = ( *g_it ).begin(); |
536 | for ( ; e_it != ( *g_it ).end(); ++e_it ) | 541 | for ( ; e_it != ( *g_it ).end(); ++e_it ) |
537 | str += e_it.key() + " = " + *e_it + "\n"; | 542 | str += e_it.key() + " = " + *e_it + "\n"; |
538 | } | 543 | } |
539 | cstr = str.utf8(); | 544 | cstr = str.utf8(); |
540 | 545 | ||
541 | int total_length; | 546 | int total_length; |
542 | total_length = f.writeBlock( cstr.data(), cstr.length() ); | 547 | total_length = f.writeBlock( cstr.data(), cstr.length() ); |
543 | if ( total_length != int(cstr.length()) ) { | 548 | if ( total_length != int(cstr.length()) ) { |
544 | QMessageBox::critical( 0, QObject::tr("Out of Space"), | 549 | QMessageBox::critical( 0, QObject::tr("Out of Space"), |
545 | QObject::tr("There was a problem creating\nKateConfiguration Information \nfor this program.\n\nPlease free up some space and\ntry again.") ); | 550 | QObject::tr("There was a problem creating\nKateConfiguration Information \nfor this program.\n\nPlease free up some space and\ntry again.") ); |
546 | f.close(); | 551 | f.close(); |
547 | QFile::remove( strNewFile ); | 552 | QFile::remove( strNewFile ); |
548 | return; | 553 | return; |
549 | } | 554 | } |
550 | 555 | ||
551 | f.close(); | 556 | f.close(); |
552 | // now rename the file... | 557 | // now rename the file... |
553 | if ( rename( strNewFile, filename ) < 0 ) { | 558 | if ( rename( strNewFile, filename ) < 0 ) { |
554 | qWarning( "problem renaming the file %s to %s", strNewFile.latin1(), | 559 | qWarning( "problem renaming the file %s to %s", strNewFile.latin1(), |
555 | filename.latin1() ); | 560 | filename.latin1() ); |
556 | QFile::remove( strNewFile ); | 561 | QFile::remove( strNewFile ); |
557 | } | 562 | } |
558 | } | 563 | } |
559 | 564 | ||
560 | /*! | 565 | /*! |
561 | Returns whether the KateConfig is in a valid state. | 566 | Returns whether the KateConfig is in a valid state. |
562 | */ | 567 | */ |
563 | bool KateConfig::isValid() const | 568 | bool KateConfig::isValid() const |
564 | { | 569 | { |
565 | return groups.end() != git; | 570 | return groups.end() != git; |
566 | } | 571 | } |
567 | 572 | ||
568 | /*! | 573 | /*! |
569 | \internal | 574 | \internal |
570 | */ | 575 | */ |
571 | void KateConfig::read() | 576 | void KateConfig::read() |
572 | { | 577 | { |
573 | changed = FALSE; | 578 | changed = FALSE; |
574 | 579 | ||
575 | if ( !QFileInfo( filename ).exists() ) { | 580 | if ( !QFileInfo( filename ).exists() ) { |
576 | git = groups.end(); | 581 | git = groups.end(); |
577 | return; | 582 | return; |
578 | } | 583 | } |
579 | 584 | ||
580 | QFile f( filename ); | 585 | QFile f( filename ); |
581 | if ( !f.open( IO_ReadOnly ) ) { | 586 | if ( !f.open( IO_ReadOnly ) ) { |
582 | git = groups.end(); | 587 | git = groups.end(); |
583 | return; | 588 | return; |
584 | } | 589 | } |
585 | 590 | ||
586 | QTextStream s( &f ); | 591 | QTextStream s( &f ); |
587 | #if QT_VERSION <= 230 && defined(QT_NO_CODECS) | 592 | #if QT_VERSION <= 230 && defined(QT_NO_CODECS) |
588 | // The below should work, but doesn't in Qt 2.3.0 | 593 | // The below should work, but doesn't in Qt 2.3.0 |
589 | s.setCodec( QTextCodec::codecForMib( 106 ) ); | 594 | s.setCodec( QTextCodec::codecForMib( 106 ) ); |
590 | #else | 595 | #else |
591 | s.setEncoding( QTextStream::UnicodeUTF8 ); | 596 | s.setEncoding( QTextStream::UnicodeUTF8 ); |
592 | #endif | 597 | #endif |
593 | 598 | ||
594 | QStringList list = QStringList::split('\n', s.read() ); | 599 | QStringList list = QStringList::split('\n', s.read() ); |
595 | f.close(); | 600 | f.close(); |
596 | 601 | ||
597 | for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { | 602 | for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { |
598 | if ( !parse( *it ) ) { | 603 | if ( !parse( *it ) ) { |
599 | git = groups.end(); | 604 | git = groups.end(); |
600 | return; | 605 | return; |
601 | } | 606 | } |
602 | } | 607 | } |
603 | } | 608 | } |
604 | 609 | ||
605 | /*! | 610 | /*! |
606 | \internal | 611 | \internal |
607 | */ | 612 | */ |
608 | bool KateConfig::parse( const QString &l ) | 613 | bool KateConfig::parse( const QString &l ) |
609 | { | 614 | { |
610 | QString line = l.stripWhiteSpace(); | 615 | QString line = l.stripWhiteSpace(); |
611 | 616 | ||
612 | if ( line [0] == QChar ( '#' )) | 617 | if ( line [0] == QChar ( '#' )) |
613 | return true; // ignore comments | 618 | return true; // ignore comments |
614 | 619 | ||
615 | if ( line[ 0 ] == QChar( '[' ) ) { | 620 | if ( line[ 0 ] == QChar( '[' ) ) { |
616 | QString gname = line; | 621 | QString gname = line; |
617 | gname = gname.remove( 0, 1 ); | 622 | gname = gname.remove( 0, 1 ); |
618 | if ( gname[ (int)gname.length() - 1 ] == QChar( ']' ) ) | 623 | if ( gname[ (int)gname.length() - 1 ] == QChar( ']' ) ) |
619 | gname = gname.remove( gname.length() - 1, 1 ); | 624 | gname = gname.remove( gname.length() - 1, 1 ); |
620 | git = groups.insert( gname, KateConfigGroup() ); | 625 | git = groups.insert( gname, KateConfigGroup() ); |
621 | } else if ( !line.isEmpty() ) { | 626 | } else if ( !line.isEmpty() ) { |
622 | if ( git == groups.end() ) | 627 | if ( git == groups.end() ) |
623 | return FALSE; | 628 | return FALSE; |
624 | int eq = line.find( '=' ); | 629 | int eq = line.find( '=' ); |
625 | if ( eq == -1 ) | 630 | if ( eq == -1 ) |
626 | return FALSE; | 631 | return FALSE; |
627 | QString key = line.left(eq).stripWhiteSpace(); | 632 | QString key = line.left(eq).stripWhiteSpace(); |
628 | QString value = line.mid(eq+1).stripWhiteSpace(); | 633 | QString value = line.mid(eq+1).stripWhiteSpace(); |
629 | ( *git ).insert( key, value ); | 634 | ( *git ).insert( key, value ); |
630 | } | 635 | } |
631 | return TRUE; | 636 | return TRUE; |
632 | } | 637 | } |
diff --git a/noncore/apps/tinykate/tinykate.cpp b/noncore/apps/tinykate/tinykate.cpp index 3c9a637..9865c35 100644 --- a/noncore/apps/tinykate/tinykate.cpp +++ b/noncore/apps/tinykate/tinykate.cpp | |||
@@ -1,279 +1,284 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | tinykate.cpp | 2 | tinykate.cpp |
3 | Tiny KATE mainwindow | 3 | Tiny KATE mainwindow |
4 | ------------------- | 4 | ------------------- |
5 | begin : November 2002 | 5 | begin : November 2002 |
6 | copyright : (C) 2002 by Joseph Wenninger <jowenn@kde.org> | 6 | copyright : (C) 2002 by Joseph Wenninger <jowenn@kde.org> |
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | 8 | ||
9 | /*************************************************************************** | 9 | /*************************************************************************** |
10 | * * | 10 | * * |
11 | * This program is free softwaSre; you can redistribute it and/or modify * | 11 | * This program is free softwaSre; 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. * | 13 | * the Free Software Foundation. * |
14 | * ONLY VERSION 2 OF THE LICENSE IS APPLICABLE * | 14 | * ONLY VERSION 2 OF THE LICENSE IS APPLICABLE * |
15 | * * | 15 | * * |
16 | ***************************************************************************/ | 16 | ***************************************************************************/ |
17 | #include <qaction.h> | ||
18 | #include <qtoolbutton.h> | ||
19 | #include <qmenubar.h> | ||
20 | #include <qpe/resource.h> | ||
21 | #include <qpe/qpeapplication.h> | ||
22 | 17 | ||
18 | #include "tinykate.h" | ||
19 | |||
20 | #include "katedocument.h" | ||
21 | #include "kglobal.h" | ||
22 | |||
23 | /* OPIE */ | ||
24 | #include <opie2/odebug.h> | ||
23 | #include <opie2/ofiledialog.h> | 25 | #include <opie2/ofiledialog.h> |
26 | #include <qpe/resource.h> | ||
27 | #include <qpe/qpeapplication.h> | ||
24 | 28 | ||
25 | #include "tinykate.h" | 29 | /* QT */ |
30 | #include <qaction.h> | ||
31 | #include <qtoolbutton.h> | ||
32 | #include <qmenubar.h> | ||
26 | 33 | ||
27 | #include <katedocument.h> | ||
28 | #include <kglobal.h> | ||
29 | 34 | ||
30 | using namespace Opie::Ui; | 35 | using namespace Opie::Ui; |
31 | TinyKate::TinyKate( QWidget *parent, const char *name, WFlags f) : | 36 | TinyKate::TinyKate( QWidget *parent, const char *name, WFlags f) : |
32 | QMainWindow( parent, name, f ) | 37 | QMainWindow( parent, name, f ) |
33 | { | 38 | { |
34 | shutDown=false; | 39 | shutDown=false; |
35 | nextUnnamed=0; | 40 | nextUnnamed=0; |
36 | currentView=0; | 41 | currentView=0; |
37 | viewCount=0; | 42 | viewCount=0; |
38 | setCaption(tr("TinyKATE")); | 43 | setCaption(tr("TinyKATE")); |
39 | KGlobal::setAppName("TinyKATE"); | 44 | KGlobal::setAppName("TinyKATE"); |
40 | 45 | ||
41 | QMenuBar *mb = new QMenuBar( this ); | 46 | QMenuBar *mb = new QMenuBar( this ); |
42 | mb->setMargin( 0 ); | 47 | mb->setMargin( 0 ); |
43 | 48 | ||
44 | tabwidget=new OTabWidget(this); | 49 | tabwidget=new OTabWidget(this); |
45 | setCentralWidget(tabwidget); | 50 | setCentralWidget(tabwidget); |
46 | connect(tabwidget,SIGNAL(currentChanged(QWidget*)),this,SLOT(slotCurrentChanged(QWidget*))); | 51 | connect(tabwidget,SIGNAL(currentChanged(QWidget*)),this,SLOT(slotCurrentChanged(QWidget*))); |
47 | 52 | ||
48 | //FILE ACTIONS | 53 | //FILE ACTIONS |
49 | QPopupMenu *popup = new QPopupMenu( this ); | 54 | QPopupMenu *popup = new QPopupMenu( this ); |
50 | 55 | ||
51 | // Action for creating a new document | 56 | // Action for creating a new document |
52 | QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); | 57 | QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); |
53 | a->addTo( popup ); | 58 | a->addTo( popup ); |
54 | connect(a, SIGNAL(activated()), this, SLOT(slotNew())); | 59 | connect(a, SIGNAL(activated()), this, SLOT(slotNew())); |
55 | 60 | ||
56 | // Action for opening an exisiting document | 61 | // Action for opening an exisiting document |
57 | a = new QAction( tr( "Open" ),Resource::loadPixmap( "fileopen" ) , QString::null, 0, this, 0 ); | 62 | a = new QAction( tr( "Open" ),Resource::loadPixmap( "fileopen" ) , QString::null, 0, this, 0 ); |
58 | a->addTo(popup); | 63 | a->addTo(popup); |
59 | connect(a, SIGNAL(activated()), this, SLOT(slotOpen())); | 64 | connect(a, SIGNAL(activated()), this, SLOT(slotOpen())); |
60 | 65 | ||
61 | 66 | ||
62 | // Action for saving document | 67 | // Action for saving document |
63 | a = new QAction( tr( "Save" ), Resource::loadPixmap( "save" ) , QString::null, 0, this, 0 ); | 68 | a = new QAction( tr( "Save" ), Resource::loadPixmap( "save" ) , QString::null, 0, this, 0 ); |
64 | a->addTo(popup); | 69 | a->addTo(popup); |
65 | connect(a, SIGNAL(activated()), this, SLOT(slotSave())); | 70 | connect(a, SIGNAL(activated()), this, SLOT(slotSave())); |
66 | 71 | ||
67 | // Action for saving document to a new name | 72 | // Action for saving document to a new name |
68 | a = new QAction( tr( "Save As" ),Resource::loadPixmap( "save" ) , QString::null, 0, this, 0 ); | 73 | a = new QAction( tr( "Save As" ),Resource::loadPixmap( "save" ) , QString::null, 0, this, 0 ); |
69 | a->addTo(popup); | 74 | a->addTo(popup); |
70 | connect(a, SIGNAL(activated()), this, SLOT(slotSaveAs())); | 75 | connect(a, SIGNAL(activated()), this, SLOT(slotSaveAs())); |
71 | 76 | ||
72 | // Action for closing the currently active document | 77 | // Action for closing the currently active document |
73 | a = new QAction( tr( "Close" ), Resource::loadPixmap( "quit_icon" ) , QString::null, 0, this, 0 ); | 78 | a = new QAction( tr( "Close" ), Resource::loadPixmap( "quit_icon" ) , QString::null, 0, this, 0 ); |
74 | a->addTo(popup); | 79 | a->addTo(popup); |
75 | connect(a, SIGNAL(activated()), this, SLOT(slotClose())); | 80 | connect(a, SIGNAL(activated()), this, SLOT(slotClose())); |
76 | 81 | ||
77 | 82 | ||
78 | mb->insertItem(tr("File"),popup); | 83 | mb->insertItem(tr("File"),popup); |
79 | 84 | ||
80 | //EDIT ACTIONS | 85 | //EDIT ACTIONS |
81 | 86 | ||
82 | // Action for cutting text | 87 | // Action for cutting text |
83 | editCut = new QToolButton( 0 ); | 88 | editCut = new QToolButton( 0 ); |
84 | editCut->setAutoRaise( true ); | 89 | editCut->setAutoRaise( true ); |
85 | editCut->setIconSet( Resource::loadPixmap( "cut" ) ); | 90 | editCut->setIconSet( Resource::loadPixmap( "cut" ) ); |
86 | 91 | ||
87 | // Action for Copying text | 92 | // Action for Copying text |
88 | editCopy = new QToolButton( 0 ); | 93 | editCopy = new QToolButton( 0 ); |
89 | editCopy->setAutoRaise( true ); | 94 | editCopy->setAutoRaise( true ); |
90 | editCopy->setIconSet( Resource::loadPixmap( "copy" ) ); | 95 | editCopy->setIconSet( Resource::loadPixmap( "copy" ) ); |
91 | 96 | ||
92 | // Action for pasting text | 97 | // Action for pasting text |
93 | editPaste = new QToolButton( 0 ); | 98 | editPaste = new QToolButton( 0 ); |
94 | editPaste->setAutoRaise( true ); | 99 | editPaste->setAutoRaise( true ); |
95 | editPaste->setIconSet( Resource::loadPixmap( "paste" ) ); | 100 | editPaste->setIconSet( Resource::loadPixmap( "paste" ) ); |
96 | 101 | ||
97 | // Action for finding / replacing text | 102 | // Action for finding / replacing text |
98 | editFindReplace = new QToolButton( 0 ); | 103 | editFindReplace = new QToolButton( 0 ); |
99 | editFindReplace->setAutoRaise( true ); | 104 | editFindReplace->setAutoRaise( true ); |
100 | editFindReplace->setIconSet( Resource::loadPixmap("find") ); | 105 | editFindReplace->setIconSet( Resource::loadPixmap("find") ); |
101 | 106 | ||
102 | // Action for undo | 107 | // Action for undo |
103 | editUndo = new QToolButton( 0 ); | 108 | editUndo = new QToolButton( 0 ); |
104 | editUndo->setAutoRaise( true ); | 109 | editUndo->setAutoRaise( true ); |
105 | editUndo->setIconSet( Resource::loadPixmap( "undo" ) ); | 110 | editUndo->setIconSet( Resource::loadPixmap( "undo" ) ); |
106 | 111 | ||
107 | // Action for redo | 112 | // Action for redo |
108 | editRedo = new QToolButton( 0 ); | 113 | editRedo = new QToolButton( 0 ); |
109 | editRedo->setAutoRaise( true ); | 114 | editRedo->setAutoRaise( true ); |
110 | editRedo->setIconSet( Resource::loadPixmap( "redo" ) ); | 115 | editRedo->setIconSet( Resource::loadPixmap( "redo" ) ); |
111 | 116 | ||
112 | //VIEW ACITONS | 117 | //VIEW ACITONS |
113 | popup = new QPopupMenu( this ); | 118 | popup = new QPopupMenu( this ); |
114 | 119 | ||
115 | viewIncFontSizes = new QAction( tr( "Font +" ), QString::null, 0, this, 0 ); | 120 | viewIncFontSizes = new QAction( tr( "Font +" ), QString::null, 0, this, 0 ); |
116 | viewIncFontSizes->addTo( popup ); | 121 | viewIncFontSizes->addTo( popup ); |
117 | 122 | ||
118 | viewDecFontSizes = new QAction( tr( "Font -" ), QString::null, 0, this, 0 ); | 123 | viewDecFontSizes = new QAction( tr( "Font -" ), QString::null, 0, this, 0 ); |
119 | viewDecFontSizes->addTo( popup ); | 124 | viewDecFontSizes->addTo( popup ); |
120 | 125 | ||
121 | mb->insertItem(tr("View"),popup); | 126 | mb->insertItem(tr("View"),popup); |
122 | 127 | ||
123 | popup = new QPopupMenu( this ); | 128 | popup = new QPopupMenu( this ); |
124 | mb->insertItem(tr("Utils"),popup); | 129 | mb->insertItem(tr("Utils"),popup); |
125 | 130 | ||
126 | 131 | ||
127 | mb->insertItem( editCut ); | 132 | mb->insertItem( editCut ); |
128 | mb->insertItem( editCopy ); | 133 | mb->insertItem( editCopy ); |
129 | mb->insertItem( editPaste ); | 134 | mb->insertItem( editPaste ); |
130 | mb->insertItem( editFindReplace ); | 135 | mb->insertItem( editFindReplace ); |
131 | mb->insertItem( editUndo ); | 136 | mb->insertItem( editUndo ); |
132 | mb->insertItem( editRedo ); | 137 | mb->insertItem( editRedo ); |
133 | 138 | ||
134 | 139 | ||
135 | //Highlight management | 140 | //Highlight management |
136 | hlmenu=new QPopupMenu(this); | 141 | hlmenu=new QPopupMenu(this); |
137 | HlManager *hlm=HlManager::self(); | 142 | HlManager *hlm=HlManager::self(); |
138 | for (int i=0;i<hlm->highlights();i++) | 143 | for (int i=0;i<hlm->highlights();i++) |
139 | { | 144 | { |
140 | hlmenu->insertItem(hlm->hlName(i),i); | 145 | hlmenu->insertItem(hlm->hlName(i),i); |
141 | } | 146 | } |
142 | popup->insertItem(tr("Highlighting"),hlmenu); | 147 | popup->insertItem(tr("Highlighting"),hlmenu); |
143 | 148 | ||
144 | 149 | ||
145 | utilSettings = new QAction( tr( "Settings" ), QString::null, 0, this, 0 ); | 150 | utilSettings = new QAction( tr( "Settings" ), QString::null, 0, this, 0 ); |
146 | utilSettings->addTo( popup); | 151 | utilSettings->addTo( popup); |
147 | 152 | ||
148 | if( qApp->argc() > 1) open(qApp->argv()[1]); | 153 | if( qApp->argc() > 1) open(qApp->argv()[1]); |
149 | else slotNew(); | 154 | else slotNew(); |
150 | 155 | ||
151 | } | 156 | } |
152 | 157 | ||
153 | TinyKate::~TinyKate( ) | 158 | TinyKate::~TinyKate( ) |
154 | { | 159 | { |
155 | qWarning("TinyKate destructor\n"); | 160 | owarn << "TinyKate destructor\n" << oendl; |
156 | 161 | ||
157 | shutDown=true; | 162 | shutDown=true; |
158 | while (currentView!=0) { | 163 | while (currentView!=0) { |
159 | slotClose(); | 164 | slotClose(); |
160 | } | 165 | } |
161 | 166 | ||
162 | if( KGlobal::config() != 0 ) { | 167 | if( KGlobal::config() != 0 ) { |
163 | qWarning("deleting KateConfig object..\n"); | 168 | owarn << "deleting KateConfig object..\n" << oendl; |
164 | delete KGlobal::config(); | 169 | delete KGlobal::config(); |
165 | } | 170 | } |
166 | } | 171 | } |
167 | 172 | ||
168 | void TinyKate::slotOpen( ) | 173 | void TinyKate::slotOpen( ) |
169 | { | 174 | { |
170 | QString filename = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL, | 175 | QString filename = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL, |
171 | QString::null); | 176 | QString::null); |
172 | if (!filename.isEmpty()) { | 177 | if (!filename.isEmpty()) { |
173 | open(filename); | 178 | open(filename); |
174 | } | 179 | } |
175 | } | 180 | } |
176 | 181 | ||
177 | void TinyKate::open(const QString & filename) | 182 | void TinyKate::open(const QString & filename) |
178 | { | 183 | { |
179 | KateDocument *kd= new KateDocument(false, false, this,0,this); | 184 | KateDocument *kd= new KateDocument(false, false, this,0,this); |
180 | KTextEditor::View *kv; | 185 | KTextEditor::View *kv; |
181 | QFileInfo fi(filename); | 186 | QFileInfo fi(filename); |
182 | QString filenamed = fi.fileName(); | 187 | QString filenamed = fi.fileName(); |
183 | tabwidget->addTab(kv=kd->createView(tabwidget,"bLAH"),"tinykate/tinykate", filenamed ); | 188 | tabwidget->addTab(kv=kd->createView(tabwidget,"bLAH"),"tinykate/tinykate", filenamed ); |
184 | qDebug(filename); | 189 | odebug << filename << oendl; |
185 | 190 | ||
186 | kd->setDocName( filenamed); | 191 | kd->setDocName( filenamed); |
187 | kd->open( filename ); | 192 | kd->open( filename ); |
188 | viewCount++; | 193 | viewCount++; |
189 | } | 194 | } |
190 | 195 | ||
191 | void TinyKate::setDocument(const QString& fileref) | 196 | void TinyKate::setDocument(const QString& fileref) |
192 | { | 197 | { |
193 | open( fileref ); | 198 | open( fileref ); |
194 | } | 199 | } |
195 | 200 | ||
196 | void TinyKate::slotCurrentChanged( QWidget * view) | 201 | void TinyKate::slotCurrentChanged( QWidget * view) |
197 | { | 202 | { |
198 | if (currentView) { | 203 | if (currentView) { |
199 | 204 | ||
200 | disconnect(editCopy,SIGNAL(activated()),currentView,SLOT(copy())); | 205 | disconnect(editCopy,SIGNAL(activated()),currentView,SLOT(copy())); |
201 | disconnect(editCut,SIGNAL(activated()),currentView,SLOT(cut())); | 206 | disconnect(editCut,SIGNAL(activated()),currentView,SLOT(cut())); |
202 | disconnect(editPaste,SIGNAL(activated()),currentView,SLOT(paste())); | 207 | disconnect(editPaste,SIGNAL(activated()),currentView,SLOT(paste())); |
203 | disconnect(editUndo,SIGNAL(activated()),currentView,SLOT(undo())); | 208 | disconnect(editUndo,SIGNAL(activated()),currentView,SLOT(undo())); |
204 | disconnect(editRedo,SIGNAL(activated()),currentView,SLOT(redo())); | 209 | disconnect(editRedo,SIGNAL(activated()),currentView,SLOT(redo())); |
205 | disconnect(viewIncFontSizes,SIGNAL(activated()), currentView,SLOT(slotIncFontSizes())); | 210 | disconnect(viewIncFontSizes,SIGNAL(activated()), currentView,SLOT(slotIncFontSizes())); |
206 | disconnect(viewDecFontSizes,SIGNAL(activated()), currentView,SLOT(slotDecFontSizes())); | 211 | disconnect(viewDecFontSizes,SIGNAL(activated()), currentView,SLOT(slotDecFontSizes())); |
207 | disconnect(hlmenu,SIGNAL(activated(int)), currentView,SLOT(setHl(int))); | 212 | disconnect(hlmenu,SIGNAL(activated(int)), currentView,SLOT(setHl(int))); |
208 | disconnect(utilSettings,SIGNAL(activated()), currentView,SLOT(configDialog())); | 213 | disconnect(utilSettings,SIGNAL(activated()), currentView,SLOT(configDialog())); |
209 | } | 214 | } |
210 | 215 | ||
211 | currentView=(KTextEditor::View*)view; | 216 | currentView=(KTextEditor::View*)view; |
212 | 217 | ||
213 | connect(editCopy,SIGNAL(clicked()),currentView,SLOT(copy())); | 218 | connect(editCopy,SIGNAL(clicked()),currentView,SLOT(copy())); |
214 | connect(editCut,SIGNAL(clicked()),currentView,SLOT(cut())); | 219 | connect(editCut,SIGNAL(clicked()),currentView,SLOT(cut())); |
215 | connect(editPaste,SIGNAL(clicked()),currentView,SLOT(paste())); | 220 | connect(editPaste,SIGNAL(clicked()),currentView,SLOT(paste())); |
216 | connect(editUndo,SIGNAL(clicked()),currentView,SLOT(undo())); | 221 | connect(editUndo,SIGNAL(clicked()),currentView,SLOT(undo())); |
217 | connect(editRedo,SIGNAL(clicked()),currentView,SLOT(redo())); | 222 | connect(editRedo,SIGNAL(clicked()),currentView,SLOT(redo())); |
218 | connect(viewIncFontSizes,SIGNAL(activated()), currentView,SLOT(slotIncFontSizes())); | 223 | connect(viewIncFontSizes,SIGNAL(activated()), currentView,SLOT(slotIncFontSizes())); |
219 | connect(viewDecFontSizes,SIGNAL(activated()), currentView,SLOT(slotDecFontSizes())); | 224 | connect(viewDecFontSizes,SIGNAL(activated()), currentView,SLOT(slotDecFontSizes())); |
220 | connect(hlmenu,SIGNAL(activated(int)), currentView,SLOT(setHl(int))); | 225 | connect(hlmenu,SIGNAL(activated(int)), currentView,SLOT(setHl(int))); |
221 | connect(utilSettings,SIGNAL(activated()), currentView,SLOT(configDialog())); | 226 | connect(utilSettings,SIGNAL(activated()), currentView,SLOT(configDialog())); |
222 | 227 | ||
223 | } | 228 | } |
224 | 229 | ||
225 | void TinyKate::slotNew( ) | 230 | void TinyKate::slotNew( ) |
226 | { | 231 | { |
227 | KateDocument *kd= new KateDocument(false, false, this,0,this); | 232 | KateDocument *kd= new KateDocument(false, false, this,0,this); |
228 | KTextEditor::View *kv; | 233 | KTextEditor::View *kv; |
229 | tabwidget->addTab(kv=kd->createView(tabwidget,"BLAH"), | 234 | tabwidget->addTab(kv=kd->createView(tabwidget,"BLAH"), |
230 | "tinykate/tinykate", | 235 | "tinykate/tinykate", |
231 | tr("Unnamed %1").arg(nextUnnamed++)); | 236 | tr("Unnamed %1").arg(nextUnnamed++)); |
232 | viewCount++; | 237 | viewCount++; |
233 | } | 238 | } |
234 | 239 | ||
235 | void TinyKate::slotClose( ) | 240 | void TinyKate::slotClose( ) |
236 | { | 241 | { |
237 | if (currentView==0) return; | 242 | if (currentView==0) return; |
238 | KTextEditor::View *dv=currentView; | 243 | KTextEditor::View *dv=currentView; |
239 | currentView=0; | 244 | currentView=0; |
240 | tabwidget->removePage(dv); | 245 | tabwidget->removePage(dv); |
241 | delete dv->document(); | 246 | delete dv->document(); |
242 | viewCount--; | 247 | viewCount--; |
243 | if ((!viewCount) && (!shutDown)) slotNew(); | 248 | if ((!viewCount) && (!shutDown)) slotNew(); |
244 | } | 249 | } |
245 | 250 | ||
246 | void TinyKate::slotSave() { | 251 | void TinyKate::slotSave() { |
247 | // feel free to make this how you want | 252 | // feel free to make this how you want |
248 | if (currentView==0) return; | 253 | if (currentView==0) return; |
249 | 254 | ||
250 | // KateView *kv = (KateView*) currentView; | 255 | // KateView *kv = (KateView*) currentView; |
251 | KateDocument *kd = (KateDocument*) currentView->document(); | 256 | KateDocument *kd = (KateDocument*) currentView->document(); |
252 | // qDebug("saving file "+kd->docName()); | 257 | // odebug << "saving file "+kd->docName() << oendl; |
253 | if( kd->docName().isEmpty()) | 258 | if( kd->docName().isEmpty()) |
254 | slotSaveAs(); | 259 | slotSaveAs(); |
255 | else | 260 | else |
256 | kd->saveFile(); | 261 | kd->saveFile(); |
257 | // kv->save(); | 262 | // kv->save(); |
258 | // kd->saveFile(); | 263 | // kd->saveFile(); |
259 | } | 264 | } |
260 | 265 | ||
261 | void TinyKate::slotSaveAs() { | 266 | void TinyKate::slotSaveAs() { |
262 | if (currentView==0) return; | 267 | if (currentView==0) return; |
263 | KateDocument *kd = (KateDocument*) currentView->document(); | 268 | KateDocument *kd = (KateDocument*) currentView->document(); |
264 | 269 | ||
265 | QString filename= OFileDialog::getSaveFileName(OFileSelector::EXTENDED_ALL, | 270 | QString filename= OFileDialog::getSaveFileName(OFileSelector::EXTENDED_ALL, |
266 | QString::null); | 271 | QString::null); |
267 | if (!filename.isEmpty()) { | 272 | if (!filename.isEmpty()) { |
268 | qDebug("saving file "+filename); | 273 | odebug << "saving file "+filename << oendl; |
269 | QFileInfo fi(filename); | 274 | QFileInfo fi(filename); |
270 | QString filenamed = fi.fileName(); | 275 | QString filenamed = fi.fileName(); |
271 | kd->setDocFile( filename); | 276 | kd->setDocFile( filename); |
272 | kd->setDocName( filenamed); | 277 | kd->setDocName( filenamed); |
273 | kd->saveFile(); | 278 | kd->saveFile(); |
274 | // KTextEditor::View *dv = currentView; | 279 | // KTextEditor::View *dv = currentView; |
275 | // tabwidget->changeTab( dv, filenamed); | 280 | // tabwidget->changeTab( dv, filenamed); |
276 | // need to change tab label here | 281 | // need to change tab label here |
277 | } | 282 | } |
278 | 283 | ||
279 | } | 284 | } |