summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/textedit/textedit.cpp149
1 files changed, 78 insertions, 71 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index 5edf102..59a605a 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -1,1205 +1,1212 @@
1/********************************************************************** 1/**********************************************************************
2// textedit.cpp 2// textedit.cpp
3** Copyright (C) 2000 Trolltech AS. All rights reserved. 3** Copyright (C) 2000 Trolltech AS. All rights reserved.
4** 4**
5** This file is part of Opie Environment. 5** This file is part of Opie Environment.
6** 6**
7** This file may be distributed and/or modified under the terms of the 7** This file may be distributed and/or modified under the terms of the
8** GNU General Public License version 2 as published by the Free Software 8** GNU General Public License version 2 as published by the Free Software
9** Foundation and appearing in the file LICENSE.GPL included in the 9** Foundation and appearing in the file LICENSE.GPL included in the
10** packaging of this file. 10** packaging of this file.
11** 11**
12**********************************************************************/ 12**********************************************************************/
13// changes added by L. J. Potter Sun 02-17-2002 21:31:31 13// changes added by L. J. Potter Sun 02-17-2002 21:31:31
14#include "textedit.h" 14#include "textedit.h"
15#include "filePermissions.h" 15#include "filePermissions.h"
16 16
17 17
18#include <opie/ofileselector.h> 18#include <opie/ofileselector.h>
19#include <opie/ofiledialog.h> 19#include <opie/ofiledialog.h>
20#include <opie/ofontselector.h> 20#include <opie/ofontselector.h>
21 21
22#include <qpe/fontdatabase.h> 22#include <qpe/fontdatabase.h>
23#include <qpe/global.h> 23#include <qpe/global.h>
24#include <qpe/fileselector.h> 24#include <qpe/fileselector.h>
25#include <qpe/applnk.h> 25#include <qpe/applnk.h>
26#include <qpe/resource.h> 26#include <qpe/resource.h>
27#include <qpe/config.h> 27#include <qpe/config.h>
28#include <qpe/qpeapplication.h> 28#include <qpe/qpeapplication.h>
29#include <qpe/qpemenubar.h> 29#include <qpe/qpemenubar.h>
30#include <qpe/qpetoolbar.h> 30#include <qpe/qpetoolbar.h>
31#include <qpe/qcopenvelope_qws.h> 31#include <qpe/qcopenvelope_qws.h>
32 32
33#include <qpoint.h> 33#include <qpoint.h>
34#include <qtextstream.h> 34#include <qtextstream.h>
35#include <qdatetime.h> 35#include <qdatetime.h>
36#include <qclipboard.h> 36#include <qclipboard.h>
37#include <qstringlist.h> 37#include <qstringlist.h>
38#include <qaction.h> 38#include <qaction.h>
39#include <qcolordialog.h> 39#include <qcolordialog.h>
40#include <qfileinfo.h> 40#include <qfileinfo.h>
41#include <qlineedit.h> 41#include <qlineedit.h>
42#include <qmessagebox.h> 42#include <qmessagebox.h>
43#include <qobjectlist.h> 43#include <qobjectlist.h>
44#include <qpopupmenu.h> 44#include <qpopupmenu.h>
45#include <qspinbox.h> 45#include <qspinbox.h>
46#include <qtoolbutton.h> 46#include <qtoolbutton.h>
47#include <qwidgetstack.h> 47#include <qwidgetstack.h>
48#include <qcheckbox.h> 48#include <qcheckbox.h>
49#include <qcombo.h> 49#include <qcombo.h>
50#include <qlayout.h> 50#include <qlayout.h>
51#include <qapplication.h> 51#include <qapplication.h>
52#include <qtimer.h> 52#include <qtimer.h>
53#include <qdir.h> 53#include <qdir.h>
54#include <unistd.h> 54#include <unistd.h>
55#include <sys/stat.h> 55#include <sys/stat.h>
56#include <stdlib.h> //getenv 56#include <stdlib.h> //getenv
57 57
58#include "resource.h" 58#include "resource.h"
59 59
60#if QT_VERSION < 300 60#if QT_VERSION < 300
61 61
62class QpeEditor : public QMultiLineEdit 62class QpeEditor : public QMultiLineEdit
63{ 63{
64 64
65public: 65public:
66 QpeEditor( QWidget *parent, const char * name = 0 ) 66 QpeEditor( QWidget *parent, const char * name = 0 )
67 : QMultiLineEdit( parent, name ) { 67 : QMultiLineEdit( parent, name ) {
68 clearTableFlags(); 68 clearTableFlags();
69 setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar ); 69 setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar );
70} 70}
71 71
72 void find( const QString &txt, bool caseSensitive, 72 void find( const QString &txt, bool caseSensitive,
73 bool backwards ); 73 bool backwards );
74protected: 74protected:
75 bool markIt; 75 bool markIt;
76 int line1, line2, col1, col2; 76 int line1, line2, col1, col2;
77 void mousePressEvent( QMouseEvent * ); 77 void mousePressEvent( QMouseEvent * );
78 void mouseReleaseEvent( QMouseEvent * ); 78 void mouseReleaseEvent( QMouseEvent * );
79 79
80//public slots: 80//public slots:
81 /* 81 /*
82signals: 82signals:
83 void notFound(); 83 void notFound();
84 void searchWrapped(); 84 void searchWrapped();
85 */ 85 */
86 86
87private: 87private:
88 88
89}; 89};
90 90
91void QpeEditor::mousePressEvent( QMouseEvent *e ) { 91void QpeEditor::mousePressEvent( QMouseEvent *e ) {
92 switch(e->button()) { 92 switch(e->button()) {
93 case RightButton: 93 case RightButton:
94 { //rediculous workaround for qt popup menu 94 { //rediculous workaround for qt popup menu
95 //and the hold right click mechanism 95 //and the hold right click mechanism
96 this->setSelection( line1, col1, line2, col2); 96 this->setSelection( line1, col1, line2, col2);
97 QMultiLineEdit::mousePressEvent( e ); 97 QMultiLineEdit::mousePressEvent( e );
98 markIt = false; 98 markIt = false;
99 } 99 }
100 break; 100 break;
101 default: 101 default:
102 { 102 {
103 if(!markIt) { 103 if(!markIt) {
104 int line, col; 104 int line, col;
105 this->getCursorPosition(&line, &col); 105 this->getCursorPosition(&line, &col);
106 line1=line2=line; 106 line1=line2=line;
107 col1=col2=col; 107 col1=col2=col;
108 } 108 }
109 QMultiLineEdit::mousePressEvent( e ); 109 QMultiLineEdit::mousePressEvent( e );
110 } 110 }
111 break; 111 break;
112 }; 112 };
113} 113}
114 114
115void QpeEditor::mouseReleaseEvent( QMouseEvent * ) { 115void QpeEditor::mouseReleaseEvent( QMouseEvent * ) {
116 if(this->hasMarkedText()) { 116 if(this->hasMarkedText()) {
117 markIt = true; 117 markIt = true;
118 this->getMarkedRegion( &line1, &col1, &line2, & col2 ); 118 this->getMarkedRegion( &line1, &col1, &line2, & col2 );
119 } else { 119 } else {
120 markIt = false; 120 markIt = false;
121 } 121 }
122} 122}
123 123
124void QpeEditor::find ( const QString &txt, bool caseSensitive, 124void QpeEditor::find ( const QString &txt, bool caseSensitive,
125 bool backwards ) 125 bool backwards )
126{ 126{
127 static bool wrap = false; 127 static bool wrap = false;
128 int line, col; 128 int line, col;
129 if ( wrap ) { 129 if ( wrap ) {
130 if ( !backwards ) 130 if ( !backwards )
131 line = col = 0; 131 line = col = 0;
132 wrap = false; 132 wrap = false;
133 // emit searchWrapped(); 133 // emit searchWrapped();
134 } else { 134 } else {
135 getCursorPosition( &line, &col ); 135 getCursorPosition( &line, &col );
136 } 136 }
137 //ignore backwards for now.... 137 //ignore backwards for now....
138 if ( !backwards ) { 138 if ( !backwards ) {
139 for ( ; ; ) { 139 for ( ; ; ) {
140 if ( line >= numLines() ) { 140 if ( line >= numLines() ) {
141 wrap = true; 141 wrap = true;
142 //emit notFound(); 142 //emit notFound();
143 break; 143 break;
144 } 144 }
145 int findCol = getString( line )->find( txt, col, caseSensitive ); 145 int findCol = getString( line )->find( txt, col, caseSensitive );
146 if ( findCol >= 0 ) { 146 if ( findCol >= 0 ) {
147 setCursorPosition( line, findCol, false ); 147 setCursorPosition( line, findCol, false );
148 col = findCol + txt.length(); 148 col = findCol + txt.length();
149 setCursorPosition( line, col, true ); 149 setCursorPosition( line, col, true );
150 150
151 //found = true; 151 //found = true;
152 break; 152 break;
153 } 153 }
154 line++; 154 line++;
155 col = 0; 155 col = 0;
156 } 156 }
157 } 157 }
158} 158}
159 159
160 160
161#else 161#else
162 162
163#error "Must make a QpeEditor that inherits QTextEdit" 163#error "Must make a QpeEditor that inherits QTextEdit"
164 164
165#endif 165#endif
166 166
167 167
168static const int nfontsizes = 6; 168static const int nfontsizes = 6;
169static const int fontsize[nfontsizes] = {8,10,12,14,18,24}; 169static const int fontsize[nfontsizes] = {8,10,12,14,18,24};
170 170
171TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) 171TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
172 : QMainWindow( parent, name, f ), bFromDocView( false ) 172 : QMainWindow( parent, name, f ), bFromDocView( false )
173{ 173{
174 doc = 0; 174 doc = 0;
175 edited=false; 175 edited=false;
176 fromSetDocument=false; 176 fromSetDocument=false;
177 177
178 setToolBarsMovable( false ); 178 setToolBarsMovable( false );
179 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); 179 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) );
180 180
181 channel = new QCopChannel( "QPE/Application/textedit", this ); 181 channel = new QCopChannel( "QPE/Application/textedit", this );
182 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 182 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
183 this, SLOT(receive(const QCString&, const QByteArray&)) ); 183 this, SLOT(receive(const QCString&, const QByteArray&)) );
184 184
185 setIcon( Resource::loadPixmap( "TextEditor" ) ); 185 setIcon( Resource::loadPixmap( "TextEditor" ) );
186 186
187 QPEToolBar *bar = new QPEToolBar( this ); 187 QPEToolBar *bar = new QPEToolBar( this );
188 bar->setHorizontalStretchable( true ); 188 bar->setHorizontalStretchable( true );
189 menu = bar; 189 menu = bar;
190 190
191 QPEMenuBar *mb = new QPEMenuBar( bar ); 191 QPEMenuBar *mb = new QPEMenuBar( bar );
192 QPopupMenu *file = new QPopupMenu( this ); 192 QPopupMenu *file = new QPopupMenu( this );
193 QPopupMenu *edit = new QPopupMenu( this ); 193 QPopupMenu *edit = new QPopupMenu( this );
194 QPopupMenu *advancedMenu = new QPopupMenu(this); 194 QPopupMenu *advancedMenu = new QPopupMenu(this);
195 195
196 font = new QPopupMenu( this ); 196 font = new QPopupMenu( this );
197 197
198 bar = new QPEToolBar( this ); 198 bar = new QPEToolBar( this );
199 editBar = bar; 199 editBar = bar;
200 200
201 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), 201 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ),
202 QString::null, 0, this, 0 ); 202 QString::null, 0, this, 0 );
203 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); 203 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
204// a->addTo( bar ); 204// a->addTo( bar );
205 a->addTo( file ); 205 a->addTo( file );
206 206
207 a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), 207 a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ),
208 QString::null, 0, this, 0 ); 208 QString::null, 0, this, 0 );
209 connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); 209 connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
210 a->addTo( bar ); 210 a->addTo( bar );
211 a->addTo( file ); 211 a->addTo( file );
212 212
213 a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) , 213 a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) ,
214 QString::null, 0, this, 0 ); 214 QString::null, 0, this, 0 );
215 connect( a, SIGNAL( activated() ), this, SLOT( save() ) ); 215 connect( a, SIGNAL( activated() ), this, SLOT( save() ) );
216 file->insertSeparator(); 216 file->insertSeparator();
217 a->addTo( bar ); 217 a->addTo( bar );
218 a->addTo( file ); 218 a->addTo( file );
219 219
220 a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) , 220 a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) ,
221 QString::null, 0, this, 0 ); 221 QString::null, 0, this, 0 );
222 connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) ); 222 connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) );
223 a->addTo( file ); 223 a->addTo( file );
224 224
225 a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), 225 a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ),
226 QString::null, 0, this, 0 ); 226 QString::null, 0, this, 0 );
227 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); 227 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
228 a->addTo( editBar ); 228 a->addTo( editBar );
229 a->addTo( edit ); 229 a->addTo( edit );
230 230
231 a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), 231 a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ),
232 QString::null, 0, this, 0 ); 232 QString::null, 0, this, 0 );
233 connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) ); 233 connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) );
234 a->addTo( editBar ); 234 a->addTo( editBar );
235 a->addTo( edit ); 235 a->addTo( edit );
236 236
237 a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), 237 a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ),
238 QString::null, 0, this, 0 ); 238 QString::null, 0, this, 0 );
239 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); 239 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) );
240 a->addTo( editBar ); 240 a->addTo( editBar );
241 a->addTo( edit ); 241 a->addTo( edit );
242 242
243 243
244#ifndef QT_NO_CLIPBOARD 244#ifndef QT_NO_CLIPBOARD
245 a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ), 245 a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ),
246 QString::null, 0, this, 0 ); 246 QString::null, 0, this, 0 );
247 connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) ); 247 connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) );
248 a->addTo( edit ); 248 a->addTo( edit );
249#endif 249#endif
250 250
251 a = new QAction( tr( "Goto Line..." ), Resource::loadPixmap( "find" ), 251 a = new QAction( tr( "Goto Line..." ), Resource::loadPixmap( "find" ),
252 QString::null, 0, this, 0 ); 252 QString::null, 0, this, 0 );
253 connect( a, SIGNAL( activated() ), this, SLOT( gotoLine() ) ); 253 connect( a, SIGNAL( activated() ), this, SLOT( gotoLine() ) );
254 edit->insertSeparator(); 254 edit->insertSeparator();
255 a->addTo( edit ); 255 a->addTo( edit );
256 256
257 a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), 257 a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ),
258 QString::null, 0, this, 0 ); 258 QString::null, 0, this, 0 );
259 connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) ); 259 connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) );
260 a->addTo( bar ); 260 a->addTo( bar );
261 a->addTo( edit ); 261 a->addTo( edit );
262 262
263 zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 ); 263 zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 );
264 connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) ); 264 connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) );
265 zin->addTo( font ); 265 zin->addTo( font );
266 266
267 zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 ); 267 zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 );
268 connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) ); 268 connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) );
269 zout->addTo( font ); 269 zout->addTo( font );
270 270
271 font->insertSeparator(); 271 font->insertSeparator();
272 272
273 font->insertItem(tr("Font"), this, SLOT(changeFont()) ); 273 font->insertItem(tr("Font"), this, SLOT(changeFont()) );
274 274
275 font->insertSeparator(); 275 font->insertSeparator();
276 font->insertItem(tr("Advanced Features"), advancedMenu); 276 font->insertItem(tr("Advanced Features"), advancedMenu);
277 277
278 QAction *wa = new QAction( tr("Wrap lines"), 278 QAction *wa = new QAction( tr("Wrap lines"),
279 QString::null, 0, this, 0 ); 279 QString::null, 0, this, 0 );
280 connect( wa, SIGNAL( toggled(bool) ), 280 connect( wa, SIGNAL( toggled(bool) ),
281 this, SLOT( setWordWrap(bool) ) ); 281 this, SLOT( setWordWrap(bool) ) );
282 wa->setToggleAction(true); 282 wa->setToggleAction(true);
283 wa->addTo( advancedMenu); 283 wa->addTo( advancedMenu);
284 284
285 nStart = new QAction( tr("Start with new file"), 285 nStart = new QAction( tr("Start with new file"),
286 QString::null, 0, this, 0 ); 286 QString::null, 0, this, 0 );
287 connect( nStart, SIGNAL( toggled(bool) ), 287 connect( nStart, SIGNAL( toggled(bool) ),
288 this, SLOT( changeStartConfig(bool) ) ); 288 this, SLOT( changeStartConfig(bool) ) );
289 nStart->setToggleAction(true); 289 nStart->setToggleAction(true);
290 nStart->addTo( advancedMenu ); 290 nStart->addTo( advancedMenu );
291 nStart->setEnabled(false); 291 nStart->setEnabled(false);
292 292
293 nAdvanced = new QAction( tr("Prompt on Exit"), 293 nAdvanced = new QAction( tr("Prompt on Exit"),
294 QString::null, 0, this, 0 ); 294 QString::null, 0, this, 0 );
295 connect( nAdvanced, SIGNAL( toggled(bool) ), 295 connect( nAdvanced, SIGNAL( toggled(bool) ),
296 this, SLOT( doPrompt(bool) ) ); 296 this, SLOT( doPrompt(bool) ) );
297 nAdvanced->setToggleAction(true); 297 nAdvanced->setToggleAction(true);
298 nAdvanced->addTo( advancedMenu ); 298 nAdvanced->addTo( advancedMenu );
299 299
300 desktopAction = new QAction( tr("Always open linked file"), 300 desktopAction = new QAction( tr("Always open linked file"),
301 QString::null, 0, this, 0 ); 301 QString::null, 0, this, 0 );
302 connect( desktopAction, SIGNAL( toggled(bool) ), 302 connect( desktopAction, SIGNAL( toggled(bool) ),
303 this, SLOT( doDesktop(bool) ) ); 303 this, SLOT( doDesktop(bool) ) );
304 desktopAction->setToggleAction(true); 304 desktopAction->setToggleAction(true);
305 desktopAction->addTo( advancedMenu); 305 desktopAction->addTo( advancedMenu);
306 306
307 filePermAction = new QAction( tr("File Permissions"), 307 filePermAction = new QAction( tr("File Permissions"),
308 QString::null, 0, this, 0 ); 308 QString::null, 0, this, 0 );
309 connect( filePermAction, SIGNAL( toggled(bool) ), 309 connect( filePermAction, SIGNAL( toggled(bool) ),
310 this, SLOT( doFilePerms(bool) ) ); 310 this, SLOT( doFilePerms(bool) ) );
311 filePermAction->setToggleAction(true); 311 filePermAction->setToggleAction(true);
312 filePermAction->addTo( advancedMenu); 312 filePermAction->addTo( advancedMenu);
313 313
314 searchBarAction = new QAction( tr("Search Bar Open"), 314 searchBarAction = new QAction( tr("Search Bar Open"),
315 QString::null, 0, this, 0 ); 315 QString::null, 0, this, 0 );
316 connect( searchBarAction, SIGNAL( toggled(bool) ), 316 connect( searchBarAction, SIGNAL( toggled(bool) ),
317 this, SLOT( setSearchBar(bool) ) ); 317 this, SLOT( setSearchBar(bool) ) );
318 searchBarAction->setToggleAction(true); 318 searchBarAction->setToggleAction(true);
319 searchBarAction->addTo( advancedMenu); 319 searchBarAction->addTo( advancedMenu);
320 320
321 nAutoSave = new QAction( tr("Auto Save 5 min."), 321 nAutoSave = new QAction( tr("Auto Save 5 min."),
322 QString::null, 0, this, 0 ); 322 QString::null, 0, this, 0 );
323 connect( nAutoSave, SIGNAL( toggled(bool) ), 323 connect( nAutoSave, SIGNAL( toggled(bool) ),
324 this, SLOT( doTimer(bool) ) ); 324 this, SLOT( doTimer(bool) ) );
325 nAutoSave->setToggleAction(true); 325 nAutoSave->setToggleAction(true);
326 nAutoSave->addTo( advancedMenu); 326 nAutoSave->addTo( advancedMenu);
327 327
328 328
329 font->insertSeparator(); 329 font->insertSeparator();
330 330
331 font->insertItem(tr("About"), this, SLOT( doAbout()) ); 331 font->insertItem(tr("About"), this, SLOT( doAbout()) );
332 332
333 mb->insertItem( tr( "File" ), file ); 333 mb->insertItem( tr( "File" ), file );
334 mb->insertItem( tr( "Edit" ), edit ); 334 mb->insertItem( tr( "Edit" ), edit );
335 mb->insertItem( tr( "View" ), font ); 335 mb->insertItem( tr( "View" ), font );
336 336
337 searchBar = new QPEToolBar(this); 337 searchBar = new QPEToolBar(this);
338 addToolBar( searchBar, "Search", QMainWindow::Top, true ); 338 addToolBar( searchBar, "Search", QMainWindow::Top, true );
339 339
340 searchBar->setHorizontalStretchable( true ); 340 searchBar->setHorizontalStretchable( true );
341 341
342 searchEdit = new QLineEdit( searchBar, "searchEdit" ); 342 searchEdit = new QLineEdit( searchBar, "searchEdit" );
343 searchBar->setStretchableWidget( searchEdit ); 343 searchBar->setStretchableWidget( searchEdit );
344 connect( searchEdit, SIGNAL( textChanged( const QString & ) ), 344 connect( searchEdit, SIGNAL( textChanged( const QString & ) ),
345 this, SLOT( search() ) ); 345 this, SLOT( search() ) );
346 346
347 a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), 347 a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ),
348 QString::null, 0, this, 0 ); 348 QString::null, 0, this, 0 );
349 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); 349 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) );
350 a->addTo( searchBar ); 350 a->addTo( searchBar );
351 a->addTo( edit ); 351 a->addTo( edit );
352 352
353 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), 353 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ),
354 QString::null, 0, this, 0 ); 354 QString::null, 0, this, 0 );
355 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); 355 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) );
356 a->addTo( searchBar ); 356 a->addTo( searchBar );
357 357
358 edit->insertSeparator(); 358 edit->insertSeparator();
359 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ), 359 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ),
360 QString::null, 0, this, 0 ); 360 QString::null, 0, this, 0 );
361 connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) ); 361 connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) );
362 a->addTo( edit ); 362 a->addTo( edit );
363 363
364 searchBar->hide(); 364 searchBar->hide();
365 365
366 editor = new QpeEditor( this ); 366 editor = new QpeEditor( this );
367 setCentralWidget( editor ); 367 setCentralWidget( editor );
368 editor->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 368 editor->setFrameStyle( QFrame::Panel | QFrame::Sunken );
369 connect( editor, SIGNAL( textChanged() ), 369 connect( editor, SIGNAL( textChanged() ),
370 this, SLOT( editorChanged() ) ); 370 this, SLOT( editorChanged() ) );
371 371
372 QPEApplication::setStylusOperation( editor, QPEApplication::RightOnHold); 372 QPEApplication::setStylusOperation( editor, QPEApplication::RightOnHold);
373 373
374 Config cfg("TextEdit"); 374 Config cfg("TextEdit");
375 cfg. setGroup ( "Font" ); 375 cfg. setGroup ( "Font" );
376 376
377 QFont defaultFont = editor-> font ( ); 377 QFont defaultFont = editor-> font ( );
378 378
379 QString family = cfg. readEntry ( "Family", defaultFont. family ( )); 379 QString family = cfg. readEntry ( "Family", defaultFont. family ( ));
380 int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( )); 380 int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( ));
381 int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( )); 381 int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( ));
382 bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( )); 382 bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( ));
383 383
384 defaultFont = QFont ( family, size, weight, italic ); 384 defaultFont = QFont ( family, size, weight, italic );
385 editor-> setFont ( defaultFont ); 385 editor-> setFont ( defaultFont );
386
387// updateCaption(); 386// updateCaption();
388 387
389 cfg.setGroup ( "View" ); 388 cfg.setGroup ( "View" );
390 389
391 promptExit = cfg.readBoolEntry ( "PromptExit", false ); 390 promptExit = cfg.readBoolEntry ( "PromptExit", false );
392 openDesktop = cfg.readBoolEntry ( "OpenDesktop", true ); 391 openDesktop = cfg.readBoolEntry ( "OpenDesktop", true );
393 filePerms = cfg.readBoolEntry ( "FilePermissions", false ); 392 filePerms = cfg.readBoolEntry ( "FilePermissions", false );
394 useSearchBar = cfg.readBoolEntry ( "SearchBar", false ); 393 useSearchBar = cfg.readBoolEntry ( "SearchBar", false );
395 startWithNew = cfg.readBoolEntry ( "startNew", true); 394 startWithNew = cfg.readBoolEntry ( "startNew", true);
396 featureAutoSave = cfg.readBoolEntry( "autosave", false); 395 featureAutoSave = cfg.readBoolEntry( "autosave", false);
397 396
398 if(useSearchBar) searchBarAction->setOn(true); 397 if(useSearchBar) searchBarAction->setOn(true);
399 if(promptExit) nAdvanced->setOn( true ); 398 if(promptExit) nAdvanced->setOn( true );
400 if(openDesktop) desktopAction->setOn( true ); 399 if(openDesktop) desktopAction->setOn( true );
401 if(filePerms) filePermAction->setOn( true ); 400 if(filePerms) filePermAction->setOn( true );
402 if(startWithNew) nStart->setOn( true ); 401 if(startWithNew) nStart->setOn( true );
403 if(featureAutoSave) nAutoSave->setOn(true); 402 if(featureAutoSave) nAutoSave->setOn(true);
404 403
405// { 404// {
406// doTimer(true); 405// doTimer(true);
407// } 406// }
408 407
409 bool wrap = cfg. readBoolEntry ( "Wrap", true ); 408 bool wrap = cfg. readBoolEntry ( "Wrap", true );
410 wa-> setOn ( wrap ); 409 wa-> setOn ( wrap );
411 setWordWrap ( wrap ); 410 setWordWrap ( wrap );
412 411
413///////////////// 412/////////////////
414 if( qApp->argc() > 1) { 413 if( qApp->argc() > 1) {
415 currentFileName=qApp->argv()[1]; 414 currentFileName=qApp->argv()[1];
416 415
417 QFileInfo fi(currentFileName); 416 QFileInfo fi(currentFileName);
418 417
419 if(fi.baseName().left(1) == "") { 418 if(fi.baseName().left(1) == "") {
420 openDotFile(currentFileName); 419 openDotFile(currentFileName);
421 } else { 420 } else {
422 openFile(currentFileName); 421 openFile(currentFileName);
423 } 422 }
424 } else { 423 } else {
425 edited1=false; 424 edited1=false;
426 openDotFile(""); 425 openDotFile("");
427 } 426 }
428 427
429 viewSelection = cfg.readNumEntry( "FileView", 0 ); 428 viewSelection = cfg.readNumEntry( "FileView", 0 );
430} 429}
431 430
432TextEdit::~TextEdit() { 431TextEdit::~TextEdit() {
433 qWarning("textedit d'tor"); 432 qWarning("textedit d'tor");
434 delete editor; 433 delete editor;
435} 434}
436 435
437void TextEdit::closeEvent(QCloseEvent *) { 436void TextEdit::closeEvent(QCloseEvent *) {
438 if( edited1 && promptExit) 437 if( edited1 && promptExit)
439 { 438 {
440 switch( savePrompt() ) 439 switch( savePrompt() )
441 { 440 {
442 case 1: 441 case 1:
443 { 442 {
444 saveAs(); 443 saveAs();
445 qApp->quit(); 444 qApp->quit();
446 } 445 }
447 break; 446 break;
448 447
449 case 2: 448 case 2:
450 { 449 {
451 qApp->quit(); 450 qApp->quit();
452 } 451 }
453 break; 452 break;
454 453
455 case -1: 454 case -1:
456 break; 455 break;
457 }; 456 };
458 } 457 }
459 else 458 else
460 qApp->quit(); 459 qApp->quit();
461 460
462} 461}
463 462
464void TextEdit::cleanUp() { 463void TextEdit::cleanUp() {
465 464
466 Config cfg ( "TextEdit" ); 465 Config cfg ( "TextEdit" );
467 cfg. setGroup ( "Font" ); 466 cfg. setGroup ( "Font" );
468 QFont f = editor->font(); 467 QFont f = editor->font();
469 cfg.writeEntry ( "Family", f. family ( )); 468 cfg.writeEntry ( "Family", f. family ( ));
470 cfg.writeEntry ( "Size", f. pointSize ( )); 469 cfg.writeEntry ( "Size", f. pointSize ( ));
471 cfg.writeEntry ( "Weight", f. weight ( )); 470 cfg.writeEntry ( "Weight", f. weight ( ));
472 cfg.writeEntry ( "Italic", f. italic ( )); 471 cfg.writeEntry ( "Italic", f. italic ( ));
473 472
474 cfg.setGroup ( "View" ); 473 cfg.setGroup ( "View" );
475 cfg.writeEntry ( "Wrap", editor->wordWrap() == QMultiLineEdit::WidgetWidth ); 474 cfg.writeEntry ( "Wrap", editor->wordWrap() == QMultiLineEdit::WidgetWidth );
476 cfg.writeEntry ( "FileView", viewSelection ); 475 cfg.writeEntry ( "FileView", viewSelection );
477 476
478 cfg.writeEntry ( "PromptExit", promptExit ); 477 cfg.writeEntry ( "PromptExit", promptExit );
479 cfg.writeEntry ( "OpenDesktop", openDesktop ); 478 cfg.writeEntry ( "OpenDesktop", openDesktop );
480 cfg.writeEntry ( "FilePermissions", filePerms ); 479 cfg.writeEntry ( "FilePermissions", filePerms );
481 cfg.writeEntry ( "SearchBar", useSearchBar ); 480 cfg.writeEntry ( "SearchBar", useSearchBar );
482 cfg.writeEntry ( "startNew", startWithNew ); 481 cfg.writeEntry ( "startNew", startWithNew );
483 482
484} 483}
485 484
486 485
487void TextEdit::accept() { 486void TextEdit::accept() {
488 if( edited1) 487 if( edited1)
489 saveAs(); 488 saveAs();
490 qApp->quit(); 489 qApp->quit();
491} 490}
492 491
493void TextEdit::zoomIn() { 492void TextEdit::zoomIn() {
494 setFontSize(editor->font().pointSize()+1,false); 493 setFontSize(editor->font().pointSize()+1,false);
495} 494}
496 495
497void TextEdit::zoomOut() { 496void TextEdit::zoomOut() {
498 setFontSize(editor->font().pointSize()-1,true); 497 setFontSize(editor->font().pointSize()-1,true);
499} 498}
500 499
501 500
502void TextEdit::setFontSize(int sz, bool round_down_not_up) { 501void TextEdit::setFontSize(int sz, bool round_down_not_up) {
503 int s=10; 502 int s=10;
504 for (int i=0; i<nfontsizes; i++) { 503 for (int i=0; i<nfontsizes; i++) {
505 if ( fontsize[i] == sz ) { 504 if ( fontsize[i] == sz ) {
506 s = sz; 505 s = sz;
507 break; 506 break;
508 } else if ( round_down_not_up ) { 507 } else if ( round_down_not_up ) {
509 if ( fontsize[i] < sz ) 508 if ( fontsize[i] < sz )
510 s = fontsize[i]; 509 s = fontsize[i];
511 } else { 510 } else {
512 if ( fontsize[i] > sz ) { 511 if ( fontsize[i] > sz ) {
513 s = fontsize[i]; 512 s = fontsize[i];
514 break; 513 break;
515 } 514 }
516 } 515 }
517 } 516 }
518 517
519 QFont f = editor->font(); 518 QFont f = editor->font();
520 f.setPointSize(s); 519 f.setPointSize(s);
521 editor->setFont(f); 520 editor->setFont(f);
522 521
523 zin->setEnabled(s != fontsize[nfontsizes-1]); 522 zin->setEnabled(s != fontsize[nfontsizes-1]);
524 zout->setEnabled(s != fontsize[0]); 523 zout->setEnabled(s != fontsize[0]);
525} 524}
526 525
527void TextEdit::setBold(bool y) { 526void TextEdit::setBold(bool y) {
528 QFont f = editor->font(); 527 QFont f = editor->font();
529 f.setBold(y); 528 f.setBold(y);
530 editor->setFont(f); 529 editor->setFont(f);
531} 530}
532 531
533void TextEdit::setItalic(bool y) { 532void TextEdit::setItalic(bool y) {
534 QFont f = editor->font(); 533 QFont f = editor->font();
535 f.setItalic(y); 534 f.setItalic(y);
536 editor->setFont(f); 535 editor->setFont(f);
537} 536}
538 537
539void TextEdit::setWordWrap(bool y) { 538void TextEdit::setWordWrap(bool y) {
540 bool state = editor->edited(); 539 bool state = editor->edited();
541 QString captionStr = caption(); 540 QString captionStr = caption();
542 bool b1 = edited1; 541 bool b1 = edited1;
543 bool b2 = edited; 542 bool b2 = edited;
544 543
545 editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap ); 544 editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap );
546 editor->setEdited( state ); 545 editor->setEdited( state );
547 edited1=b1; 546 edited1=b1;
548 edited=b2; 547 edited=b2;
549 setCaption(captionStr); 548 setCaption(captionStr);
550} 549}
551 550
552void TextEdit::setSearchBar(bool b) { 551void TextEdit::setSearchBar(bool b) {
553 useSearchBar=b; 552 useSearchBar=b;
554 Config cfg("TextEdit"); 553 Config cfg("TextEdit");
555 cfg.setGroup("View"); 554 cfg.setGroup("View");
556 cfg.writeEntry ( "SearchBar", b ); 555 cfg.writeEntry ( "SearchBar", b );
557 searchBarAction->setOn(b); 556 searchBarAction->setOn(b);
558 if(b) 557 if(b)
559 searchBar->show(); 558 searchBar->show();
560 else 559 else
561 searchBar->hide(); 560 searchBar->hide();
562 editor->setFocus(); 561 editor->setFocus();
563} 562}
564 563
565void TextEdit::fileNew() { 564void TextEdit::fileNew() {
566// if( !bFromDocView ) { 565// if( !bFromDocView ) {
567// saveAs(); 566// saveAs();
568// } 567// }
569 newFile(DocLnk()); 568 newFile(DocLnk());
570} 569}
571 570
572void TextEdit::fileOpen() { 571void TextEdit::fileOpen() {
573 Config cfg("TextEdit"); 572 Config cfg("TextEdit");
574 cfg. setGroup ( "View" ); 573 cfg. setGroup ( "View" );
575 QString dir = cfg.readEntry("LastOpenDirectory", QPEApplication::documentDir()); 574 QString dir = cfg.readEntry("LastOpenDirectory", QPEApplication::documentDir());
576 QMap<QString, QStringList> map; 575 QMap<QString, QStringList> map;
577 map.insert(tr("All"), QStringList() ); 576 map.insert(tr("All"), QStringList() );
578 QStringList text; 577 QStringList text;
579 text << "text/*"; 578 text << "text/*";
580 map.insert(tr("Text"), text ); 579 map.insert(tr("Text"), text );
581 text << "*"; 580 text << "*";
582 map.insert(tr("All"), text ); 581 map.insert(tr("All"), text );
583 QString str = OFileDialog::getOpenFileName( 2, 582 QString str = OFileDialog::getOpenFileName( 2,
584 dir , 583 dir ,
585 QString::null, map); 584 QString::null, map);
586 if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() ) 585 if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() )
587 { 586 {
588 cfg.writeEntry("LastOpenDirectory", QFileInfo(str).dirPath(false)); 587 cfg.writeEntry("LastOpenDirectory", QFileInfo(str).dirPath(false));
589 openFile( str ); 588 openFile( str );
590 } 589 }
591 else 590 else
592 updateCaption(); 591 updateCaption();
593} 592}
594 593
595void TextEdit::doSearchBar() { 594void TextEdit::doSearchBar() {
596 if(!useSearchBar) 595 if(!useSearchBar)
597 searchBar->hide(); 596 searchBar->hide();
598 else 597 else
599 searchBar->show(); 598 searchBar->show();
600} 599}
601 600
602#if 0 601#if 0
603void TextEdit::slotFind() { 602void TextEdit::slotFind() {
604 FindDialog frmFind( tr("Text Editor"), this ); 603 FindDialog frmFind( tr("Text Editor"), this );
605 connect( &frmFind, SIGNAL(signalFindClicked(const QString &, bool, bool, int)), 604 connect( &frmFind, SIGNAL(signalFindClicked(const QString &, bool, bool, int)),
606 editor, SLOT(slotDoFind( const QString&,bool,bool))); 605 editor, SLOT(slotDoFind( const QString&,bool,bool)));
607 606
608 //case sensitive, backwards, [category] 607 //case sensitive, backwards, [category]
609 608
610 connect( editor, SIGNAL(notFound()), 609 connect( editor, SIGNAL(notFound()),
611 &frmFind, SLOT(slotNotFound()) ); 610 &frmFind, SLOT(slotNotFound()) );
612 connect( editor, SIGNAL(searchWrapped()), 611 connect( editor, SIGNAL(searchWrapped()),
613 &frmFind, SLOT(slotWrapAround()) ); 612 &frmFind, SLOT(slotWrapAround()) );
614 613
615 frmFind.exec(); 614 frmFind.exec();
616 615
617 616
618} 617}
619#endif 618#endif
620 619
621void TextEdit::fileRevert() { 620void TextEdit::fileRevert() {
622 clear(); 621 clear();
623 fileOpen(); 622 fileOpen();
624} 623}
625 624
626void TextEdit::editCut() { 625void TextEdit::editCut() {
627#ifndef QT_NO_CLIPBOARD 626#ifndef QT_NO_CLIPBOARD
628 editor->cut(); 627 editor->cut();
629#endif 628#endif
630} 629}
631 630
632void TextEdit::editCopy() { 631void TextEdit::editCopy() {
633#ifndef QT_NO_CLIPBOARD 632#ifndef QT_NO_CLIPBOARD
634 editor->copy(); 633 editor->copy();
635#endif 634#endif
636} 635}
637 636
638void TextEdit::editPaste() { 637void TextEdit::editPaste() {
639#ifndef QT_NO_CLIPBOARD 638#ifndef QT_NO_CLIPBOARD
640 editor->paste(); 639 editor->paste();
641#endif 640#endif
642} 641}
643 642
644void TextEdit::editFind() { 643void TextEdit::editFind() {
645 searchBar->show(); 644 searchBar->show();
646 searchEdit->setFocus(); 645 searchEdit->setFocus();
647} 646}
648 647
649void TextEdit::findNext() { 648void TextEdit::findNext() {
650 editor->find( searchEdit->text(), false, false ); 649 editor->find( searchEdit->text(), false, false );
651 650
652} 651}
653 652
654void TextEdit::findClose() { 653void TextEdit::findClose() {
655 searchBar->hide(); 654 searchBar->hide();
656} 655}
657 656
658void TextEdit::search() { 657void TextEdit::search() {
659 editor->find( searchEdit->text(), false, false ); 658 editor->find( searchEdit->text(), false, false );
660} 659}
661 660
662void TextEdit::newFile( const DocLnk &f ) { 661void TextEdit::newFile( const DocLnk &f ) {
663 DocLnk nf = f; 662 DocLnk nf = f;
664 nf.setType("text/plain"); 663 nf.setType("text/plain");
665 clear(); 664 clear();
666 setWState (WState_Reserved1 ); 665 setWState (WState_Reserved1 );
667 editor->setFocus(); 666 editor->setFocus();
668 doc = new DocLnk(nf); 667 doc = new DocLnk(nf);
669 currentFileName = "Unnamed"; 668 currentFileName = "Unnamed";
670 qDebug("newFile "+currentFileName); 669 qDebug("newFile "+currentFileName);
671 updateCaption( currentFileName); 670 updateCaption( currentFileName);
672// editor->setEdited( false); 671// editor->setEdited( false);
673} 672}
674 673
675void TextEdit::openDotFile( const QString &f ) { 674void TextEdit::openDotFile( const QString &f ) {
676 if(!currentFileName.isEmpty()) { 675 if(!currentFileName.isEmpty()) {
677 currentFileName=f; 676 currentFileName=f;
678 677
679 qDebug("openFile dotfile " + currentFileName); 678 qDebug("openFile dotfile " + currentFileName);
680 QString txt; 679 QString txt;
681 QFile file(f); 680 QFile file(f);
682 file.open(IO_ReadWrite); 681 file.open(IO_ReadWrite);
683 QTextStream t(&file); 682 QTextStream t(&file);
684 while ( !t.atEnd()) { 683 while ( !t.atEnd()) {
685 txt+=t.readLine()+"\n"; 684 txt+=t.readLine()+"\n";
686 } 685 }
687 editor->setText(txt); 686 editor->setText(txt);
688 editor->setEdited( false); 687 editor->setEdited( false);
689 edited1=false; 688 edited1=false;
690 edited=false; 689 edited=false;
691 690
692 691
693 } 692 }
694 updateCaption( currentFileName); 693 updateCaption( currentFileName);
695} 694}
696 695
697void TextEdit::openFile( const QString &f ) { 696void TextEdit::openFile( const QString &f ) {
698 qDebug("filename is "+ f); 697 qDebug("filename is "+ f);
699 QString filer; 698 QString filer;
700 QFileInfo fi( f); 699 QFileInfo fi( f);
701// bFromDocView = true; 700// bFromDocView = true;
702 if(f.find(".desktop",0,true) != -1 && !openDesktop ) { 701 if(f.find(".desktop",0,true) != -1 && !openDesktop )
703 switch ( QMessageBox::warning(this,tr("Text Editor"), 702 {
704 tr("Text Editor has detected<BR>you selected a <B>.desktop</B> 703 switch ( QMessageBox::warning(this,tr("Text Editor"),
704 tr("Text Editor has detected<BR>you selected a <B>.desktop</B>
705file.<BR>Open <B>.desktop</B> file or <B>linked</B> file?"), 705file.<BR>Open <B>.desktop</B> file or <B>linked</B> file?"),
706 tr(".desktop File"),tr("Linked Document"),0,1,1) ) { 706 tr(".desktop File"),tr("Linked Document"),0,1,1) )
707 case 0: 707 {
708 filer = f; 708 case 0: //desktop
709 break; 709 filer = f;
710 case 1: 710 break;
711 DocLnk sf(f); 711 case 1: //linked
712 filer = sf.file(); 712 DocLnk sf(f);
713 break; 713 filer = sf.file();
714 } 714 break;
715 } else if(fi.baseName().left(1) == "") { 715 };
716 currentFileName=f; 716 }
717 openDotFile(currentFileName); 717 else if(fi.baseName().left(1) == "")
718 } else { 718 {
719 DocLnk sf(f); 719 qDebug("opening dotfile");
720 filer = sf.file(); 720 currentFileName=f;
721 if(filer.right(1) == "/") 721 openDotFile(currentFileName);
722 filer = f; 722 return;
723 723 }
724 DocLnk nf; 724 else
725 nf.setType("text/plain"); 725 {
726 nf.setFile(filer); 726 DocLnk sf(f);
727 currentFileName=filer; 727 filer = sf.file();
728 if(filer.right(1) == "/")
729 filer = f;
730 }
728 731
729 nf.setName(fi.baseName()); 732 DocLnk nf;
730 openFile(nf); 733 nf.setType("text/plain");
734 nf.setFile(filer);
735 currentFileName=filer;
731 736
732 qDebug("openFile string "+currentFileName); 737 nf.setName(fi.baseName());
738 openFile(nf);
733 739
734 } 740 qDebug("openFile string "+currentFileName);
735 showEditTools(); 741
736 // Show filename in caption 742 showEditTools();
737 QString name = filer; 743 // Show filename in caption
738 int sep = name.findRev( '/' ); 744 QString name = filer;
739 if ( sep > 0 ) 745 int sep = name.findRev( '/' );
740 name = name.mid( sep+1 ); 746 if ( sep > 0 )
741 updateCaption( name ); 747 name = name.mid( sep+1 );
748 updateCaption( name );
742} 749}
743 750
744void TextEdit::openFile( const DocLnk &f ) { 751void TextEdit::openFile( const DocLnk &f ) {
745// clear(); 752// clear();
746// bFromDocView = true; 753// bFromDocView = true;
747 FileManager fm; 754 FileManager fm;
748 QString txt; 755 QString txt;
749 currentFileName=f.file(); 756 currentFileName=f.file();
750 qDebug("openFile doclnk " + currentFileName); 757 qDebug("openFile doclnk " + currentFileName);
751 if ( !fm.loadFile( f, txt ) ) { 758 if ( !fm.loadFile( f, txt ) ) {
752 // ####### could be a new file 759 // ####### could be a new file
753 qDebug( "Cannot open file" ); 760 qDebug( "Cannot open file" );
754 } 761 }
755// fileNew(); 762// fileNew();
756 if ( doc ) 763 if ( doc )
757 delete doc; 764 delete doc;
758 doc = new DocLnk(f); 765 doc = new DocLnk(f);
759 editor->setText(txt); 766 editor->setText(txt);
760 editor->setEdited( false); 767 editor->setEdited( false);
761 edited1=false; 768 edited1=false;
762 edited=false; 769 edited=false;
763 770
764 doc->setName(currentFileName); 771 doc->setName(currentFileName);
765 updateCaption(); 772 updateCaption();
766 setTimer(); 773 setTimer();
767} 774}
768 775
769void TextEdit::showEditTools() { 776void TextEdit::showEditTools() {
770 menu->show(); 777 menu->show();
771 editBar->show(); 778 editBar->show();
772 if(!useSearchBar) 779 if(!useSearchBar)
773 searchBar->hide(); 780 searchBar->hide();
774 else 781 else
775 searchBar->show(); 782 searchBar->show();
776 setWState (WState_Reserved1 ); 783 setWState (WState_Reserved1 );
777} 784}
778 785
779/*! 786/*!
780 unprompted save */ 787 unprompted save */
781bool TextEdit::save() { 788bool TextEdit::save() {
782 qDebug("saveAsFile " + currentFileName); 789 qDebug("saveAsFile " + currentFileName);
783 if(currentFileName.isEmpty()) { 790 if(currentFileName.isEmpty()) {
784 saveAs(); 791 saveAs();
785 return false; 792 return false;
786 } 793 }
787 794
788 QString file = doc->file(); 795 QString file = doc->file();
789 qDebug("saver file "+file); 796 qDebug("saver file "+file);
790 QString name= doc->name(); 797 QString name= doc->name();
791 qDebug("File named "+name); 798 qDebug("File named "+name);
792 QString rt = editor->text(); 799 QString rt = editor->text();
793 if( !rt.isEmpty() ) { 800 if( !rt.isEmpty() ) {
794 if(name.isEmpty()) { 801 if(name.isEmpty()) {
795 saveAs(); 802 saveAs();
796 } else { 803 } else {
797 currentFileName= name ; 804 currentFileName= name ;
798 qDebug("saveFile "+currentFileName); 805 qDebug("saveFile "+currentFileName);
799 806
800 struct stat buf; 807 struct stat buf;
801 mode_t mode; 808 mode_t mode;
802 stat(file.latin1(), &buf); 809 stat(file.latin1(), &buf);
803 mode = buf.st_mode; 810 mode = buf.st_mode;
804 811
805 if(!fileIs) { 812 if(!fileIs) {
806 doc->setName( name); 813 doc->setName( name);
807 FileManager fm; 814 FileManager fm;
808 if ( !fm.saveFile( *doc, rt ) ) { 815 if ( !fm.saveFile( *doc, rt ) ) {
809 return false; 816 return false;
810 } 817 }
811 } else { 818 } else {
812 qDebug("regular save file"); 819 qDebug("regular save file");
813 QFile f(file); 820 QFile f(file);
814 if( f.open(IO_WriteOnly)) { 821 if( f.open(IO_WriteOnly)) {
815 QCString crt = rt.utf8(); 822 QCString crt = rt.utf8();
816 f.writeBlock(crt,crt.length()); 823 f.writeBlock(crt,crt.length());
817 } else { 824 } else {
818 QMessageBox::message(tr("Text Edit"),tr("Write Failed")); 825 QMessageBox::message(tr("Text Edit"),tr("Write Failed"));
819 return false; 826 return false;
820 } 827 }
821 828
822 } 829 }
823 editor->setEdited( false); 830 editor->setEdited( false);
824 edited1=false; 831 edited1=false;
825 edited=false; 832 edited=false;
826 if(caption().left(1)=="*") 833 if(caption().left(1)=="*")
827 setCaption(caption().right(caption().length()-1)); 834 setCaption(caption().right(caption().length()-1));
828 835
829 836
830 chmod( file.latin1(), mode); 837 chmod( file.latin1(), mode);
831 } 838 }
832 return true; 839 return true;
833 } 840 }
834 return false; 841 return false;
835} 842}
836 843
837/*! 844/*!
838 prompted save */ 845 prompted save */
839bool TextEdit::saveAs() { 846bool TextEdit::saveAs() {
840 847
841 if(caption() == tr("Text Editor")) 848 if(caption() == tr("Text Editor"))
842 return false; 849 return false;
843 qDebug("saveAsFile " + currentFileName); 850 qDebug("saveAsFile " + currentFileName);
844 // case of nothing to save... 851 // case of nothing to save...
845// if ( !doc && !currentFileName.isEmpty()) { 852// if ( !doc && !currentFileName.isEmpty()) {
846// //|| !bFromDocView) 853// //|| !bFromDocView)
847// qDebug("no doc"); 854// qDebug("no doc");
848// return true; 855// return true;
849// } 856// }
850// if ( !editor->edited() ) { 857// if ( !editor->edited() ) {
851// delete doc; 858// delete doc;
852// doc = 0; 859// doc = 0;
853// return true; 860// return true;
854// } 861// }
855 862
856 QString rt = editor->text(); 863 QString rt = editor->text();
857 qDebug(currentFileName); 864 qDebug(currentFileName);
858 865
859 if( currentFileName.isEmpty() 866 if( currentFileName.isEmpty()
860 || currentFileName == tr("Unnamed") 867 || currentFileName == tr("Unnamed")
861 || currentFileName == tr("Text Editor")) { 868 || currentFileName == tr("Text Editor")) {
862 qDebug("do silly TT filename thing"); 869 qDebug("do silly TT filename thing");
863// if ( doc && doc->name().isEmpty() ) { 870// if ( doc && doc->name().isEmpty() ) {
864 QString pt = rt.simplifyWhiteSpace(); 871 QString pt = rt.simplifyWhiteSpace();
865 int i = pt.find( ' ' ); 872 int i = pt.find( ' ' );
866 QString docname = pt; 873 QString docname = pt;
867 if ( i > 0 ) 874 if ( i > 0 )
868 docname = pt.left( i ); 875 docname = pt.left( i );
869 // remove "." at the beginning 876 // remove "." at the beginning
870 while( docname.startsWith( "." ) ) 877 while( docname.startsWith( "." ) )
871 docname = docname.mid( 1 ); 878 docname = docname.mid( 1 );
872 docname.replace( QRegExp("/"), "_" ); 879 docname.replace( QRegExp("/"), "_" );
873 // cut the length. filenames longer than that 880 // cut the length. filenames longer than that
874 //don't make sense and something goes wrong when they get too long. 881 //don't make sense and something goes wrong when they get too long.
875 if ( docname.length() > 40 ) 882 if ( docname.length() > 40 )
876 docname = docname.left(40); 883 docname = docname.left(40);
877 if ( docname.isEmpty() ) 884 if ( docname.isEmpty() )
878 docname = tr("Unnamed"); 885 docname = tr("Unnamed");
879 if(doc) doc->setName(docname); 886 if(doc) doc->setName(docname);
880 currentFileName=docname; 887 currentFileName=docname;
881// } 888// }
882// else 889// else
883// qDebug("hmmmmmm"); 890// qDebug("hmmmmmm");
884 } 891 }
885 892
886 893
887 QMap<QString, QStringList> map; 894 QMap<QString, QStringList> map;
888 map.insert(tr("All"), QStringList() ); 895 map.insert(tr("All"), QStringList() );
889 QStringList text; 896 QStringList text;
890 text << "text/*"; 897 text << "text/*";
891 map.insert(tr("Text"), text ); 898 map.insert(tr("Text"), text );
892 text << "*"; 899 text << "*";
893 map.insert(tr("All"), text ); 900 map.insert(tr("All"), text );
894 901
895 QFileInfo cuFi( currentFileName); 902 QFileInfo cuFi( currentFileName);
896 QString filee = cuFi.fileName(); 903 QString filee = cuFi.fileName();
897 QString dire = cuFi.dirPath(); 904 QString dire = cuFi.dirPath();
898 if(dire==".") 905 if(dire==".")
899 dire = QPEApplication::documentDir(); 906 dire = QPEApplication::documentDir();
900 QString str; 907 QString str;
901 if( !featureAutoSave) 908 if( !featureAutoSave)
902 { 909 {
903 str = OFileDialog::getSaveFileName( 2, 910 str = OFileDialog::getSaveFileName( 2,
904 dire, 911 dire,
905 filee, map); 912 filee, map);
906 } 913 }
907 else 914 else
908 str=currentFileName; 915 str=currentFileName;
909 if(!str.isEmpty()) { 916 if(!str.isEmpty()) {
910 QString fileNm=str; 917 QString fileNm=str;
911 918
912 qDebug("saving filename "+fileNm); 919 qDebug("saving filename "+fileNm);
913 QFileInfo fi(fileNm); 920 QFileInfo fi(fileNm);
914 currentFileName=fi.fileName(); 921 currentFileName=fi.fileName();
915 if(doc) 922 if(doc)
916// QString file = doc->file(); 923// QString file = doc->file();
917// doc->removeFiles(); 924// doc->removeFiles();
918 delete doc; 925 delete doc;
919 DocLnk nf; 926 DocLnk nf;
920 nf.setType("text/plain"); 927 nf.setType("text/plain");
921 nf.setFile( fileNm); 928 nf.setFile( fileNm);
922 doc = new DocLnk(nf); 929 doc = new DocLnk(nf);
923// editor->setText(rt); 930// editor->setText(rt);
924 qDebug("Saving file as "+currentFileName); 931 qDebug("Saving file as "+currentFileName);
925 doc->setName( currentFileName); 932 doc->setName( currentFileName);
926 updateCaption( currentFileName); 933 updateCaption( currentFileName);
927 934
928 FileManager fm; 935 FileManager fm;
929 if ( !fm.saveFile( *doc, rt ) ) { 936 if ( !fm.saveFile( *doc, rt ) ) {
930 return false; 937 return false;
931 } 938 }
932 939
933 if( filePerms ) { 940 if( filePerms ) {
934 filePermissions *filePerm; 941 filePermissions *filePerm;
935 filePerm = new filePermissions(this, 942 filePerm = new filePermissions(this,
936 tr("Permissions"),true, 943 tr("Permissions"),true,
937 0,(const QString &)fileNm); 944 0,(const QString &)fileNm);
938 filePerm->showMaximized(); 945 filePerm->showMaximized();
939 filePerm->exec(); 946 filePerm->exec();
940 947
941 if( filePerm) 948 if( filePerm)
942 delete filePerm; 949 delete filePerm;
943 } 950 }
944// } 951// }
945 editor->setEdited( false); 952 editor->setEdited( false);
946 edited1 = false; 953 edited1 = false;
947 edited = false; 954 edited = false;
948 if(caption().left(1)=="*") 955 if(caption().left(1)=="*")
949 setCaption(caption().right(caption().length()-1)); 956 setCaption(caption().right(caption().length()-1));
950 957
951 return true; 958 return true;
952 } 959 }
953 qDebug("returning false"); 960 qDebug("returning false");
954 return false; 961 return false;
955} //end saveAs 962} //end saveAs
956 963
957void TextEdit::clear() { 964void TextEdit::clear() {
958 delete doc; 965 delete doc;
959 doc = 0; 966 doc = 0;
960 editor->clear(); 967 editor->clear();
961} 968}
962 969
963void TextEdit::updateCaption( const QString &name ) { 970void TextEdit::updateCaption( const QString &name ) {
964 971
965 if ( name.isEmpty() ) 972 if ( name.isEmpty() )
966 setCaption( tr("Text Editor") ); 973 setCaption( tr("Text Editor") );
967 else { 974 else {
968 QString s = name; 975 QString s = name;
969 if ( s.isNull() ) 976 if ( s.isNull() )
970 s = doc->name(); 977 s = doc->name();
971 if ( s.isEmpty() ) { 978 if ( s.isEmpty() ) {
972 s = tr( "Unnamed" ); 979 s = tr( "Unnamed" );
973 currentFileName=s; 980 currentFileName=s;
974 } 981 }
975// if(s.left(1) == "/") 982// if(s.left(1) == "/")
976// s = s.right(s.length()-1); 983// s = s.right(s.length()-1);
977 setCaption( s + " - " + tr("Text Editor") ); 984 setCaption( s + " - " + tr("Text Editor") );
978 } 985 }
979} 986}
980 987
981void TextEdit::setDocument(const QString& fileref) { 988void TextEdit::setDocument(const QString& fileref) {
982 if(fileref != "Unnamed") { 989 if(fileref != "Unnamed") {
983 currentFileName=fileref; 990 currentFileName=fileref;
984 qDebug("setDocument"); 991 qDebug("setDocument");
985 QFileInfo fi(currentFileName); 992 QFileInfo fi(currentFileName);
986 qDebug("basename:"+fi.baseName()+": current filenmame "+currentFileName); 993 qDebug("basename:"+fi.baseName()+": current filenmame "+currentFileName);
987 if( (fi.baseName().left(1)).isEmpty() ) { 994 if( (fi.baseName().left(1)).isEmpty() ) {
988 openDotFile(currentFileName); 995 openDotFile(currentFileName);
989 996
990 } else { 997 } else {
991 qDebug("setDoc open"); 998 qDebug("setDoc open");
992 bFromDocView = true; 999 bFromDocView = true;
993 openFile(fileref); 1000 openFile(fileref);
994 editor->setEdited(true); 1001 editor->setEdited(true);
995 edited1=false; 1002 edited1=false;
996 edited=true; 1003 edited=true;
997 // fromSetDocument=false; 1004 // fromSetDocument=false;
998 // doSearchBar(); 1005 // doSearchBar();
999 } 1006 }
1000 } 1007 }
1001 updateCaption( currentFileName); 1008 updateCaption( currentFileName);
1002} 1009}
1003 1010
1004void TextEdit::changeFont() { 1011void TextEdit::changeFont() {
1005 QDialog *d = new QDialog ( this, "FontDialog", true ); 1012 QDialog *d = new QDialog ( this, "FontDialog", true );
1006 d-> setCaption ( tr( "Choose font" )); 1013 d-> setCaption ( tr( "Choose font" ));
1007 QBoxLayout *lay = new QVBoxLayout ( d ); 1014 QBoxLayout *lay = new QVBoxLayout ( d );
1008 OFontSelector *ofs = new OFontSelector ( true, d ); 1015 OFontSelector *ofs = new OFontSelector ( true, d );
1009 lay-> addWidget ( ofs ); 1016 lay-> addWidget ( ofs );
1010 ofs-> setSelectedFont ( editor-> font ( )); 1017 ofs-> setSelectedFont ( editor-> font ( ));
1011 1018
1012 d-> showMaximized ( ); 1019 d-> showMaximized ( );
1013 if ( d-> exec ( ) == QDialog::Accepted ) 1020 if ( d-> exec ( ) == QDialog::Accepted )
1014 editor-> setFont ( ofs-> selectedFont ( )); 1021 editor-> setFont ( ofs-> selectedFont ( ));
1015 delete d; 1022 delete d;
1016 1023
1017} 1024}
1018 1025
1019void TextEdit::editDelete() { 1026void TextEdit::editDelete() {
1020 switch ( QMessageBox::warning(this,tr("Text Editor"), 1027 switch ( QMessageBox::warning(this,tr("Text Editor"),
1021 tr("Do you really want<BR>to <B>delete</B> " 1028 tr("Do you really want<BR>to <B>delete</B> "
1022 "the current file\nfrom the disk?<BR>This is " 1029 "the current file\nfrom the disk?<BR>This is "
1023 "<B>irreversable!!</B>"), 1030 "<B>irreversable!!</B>"),
1024 tr("Yes"),tr("No"),0,0,1) ) { 1031 tr("Yes"),tr("No"),0,0,1) ) {
1025 case 0: 1032 case 0:
1026 if(doc) { 1033 if(doc) {
1027 doc->removeFiles(); 1034 doc->removeFiles();
1028 clear(); 1035 clear();
1029 setCaption( tr("Text Editor") ); 1036 setCaption( tr("Text Editor") );
1030 } 1037 }
1031 break; 1038 break;
1032 case 1: 1039 case 1:
1033 // exit 1040 // exit
1034 break; 1041 break;
1035 }; 1042 };
1036} 1043}
1037 1044
1038void TextEdit::changeStartConfig( bool b ) { 1045void TextEdit::changeStartConfig( bool b ) {
1039 startWithNew=b; 1046 startWithNew=b;
1040 Config cfg("TextEdit"); 1047 Config cfg("TextEdit");
1041 cfg.setGroup("View"); 1048 cfg.setGroup("View");
1042 cfg.writeEntry("startNew",b); 1049 cfg.writeEntry("startNew",b);
1043 update(); 1050 update();
1044} 1051}
1045 1052
1046void TextEdit::editorChanged() { 1053void TextEdit::editorChanged() {
1047// qDebug("editor changed"); 1054// qDebug("editor changed");
1048 if( /*editor->edited() &&*/ /*edited && */!edited1) { 1055 if( /*editor->edited() &&*/ /*edited && */!edited1) {
1049 setCaption( "*"+caption()); 1056 setCaption( "*"+caption());
1050 edited1=true; 1057 edited1=true;
1051 } 1058 }
1052 edited=true; 1059 edited=true;
1053} 1060}
1054 1061
1055void TextEdit::receive(const QCString&msg, const QByteArray &) { 1062void TextEdit::receive(const QCString&msg, const QByteArray &) {
1056 qDebug("QCop "+msg); 1063 qDebug("QCop "+msg);
1057 if ( msg == "setDocument(QString)" ) { 1064 if ( msg == "setDocument(QString)" ) {
1058 qDebug("bugger all"); 1065 qDebug("bugger all");
1059 1066
1060 } 1067 }
1061 1068
1062} 1069}
1063 1070
1064void TextEdit::doAbout() { 1071void TextEdit::doAbout() {
1065 QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>" 1072 QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>"
1066 "2000 Trolltech AS, and<BR>" 1073 "2000 Trolltech AS, and<BR>"
1067 "2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>" 1074 "2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>"
1068 "and is licensed under the GPL")); 1075 "and is licensed under the GPL"));
1069} 1076}
1070 1077
1071void TextEdit::doPrompt(bool b) { 1078void TextEdit::doPrompt(bool b) {
1072 promptExit=b; 1079 promptExit=b;
1073 Config cfg("TextEdit"); 1080 Config cfg("TextEdit");
1074 cfg.setGroup ( "View" ); 1081 cfg.setGroup ( "View" );
1075 cfg.writeEntry ( "PromptExit", b); 1082 cfg.writeEntry ( "PromptExit", b);
1076} 1083}
1077 1084
1078void TextEdit::doDesktop(bool b) { 1085void TextEdit::doDesktop(bool b) {
1079 openDesktop=b; 1086 openDesktop=b;
1080 Config cfg("TextEdit"); 1087 Config cfg("TextEdit");
1081 cfg.setGroup ( "View" ); 1088 cfg.setGroup ( "View" );
1082 cfg.writeEntry ( "OpenDesktop", b); 1089 cfg.writeEntry ( "OpenDesktop", b);
1083} 1090}
1084 1091
1085void TextEdit::doFilePerms(bool b) { 1092void TextEdit::doFilePerms(bool b) {
1086 filePerms=b; 1093 filePerms=b;
1087 Config cfg("TextEdit"); 1094 Config cfg("TextEdit");
1088 cfg.setGroup ( "View" ); 1095 cfg.setGroup ( "View" );
1089 cfg.writeEntry ( "FilePermissions", b); 1096 cfg.writeEntry ( "FilePermissions", b);
1090} 1097}
1091 1098
1092void TextEdit::editPasteTimeDate() { 1099void TextEdit::editPasteTimeDate() {
1093#ifndef QT_NO_CLIPBOARD 1100#ifndef QT_NO_CLIPBOARD
1094 QClipboard *cb = QApplication::clipboard(); 1101 QClipboard *cb = QApplication::clipboard();
1095 QDateTime dt = QDateTime::currentDateTime(); 1102 QDateTime dt = QDateTime::currentDateTime();
1096 cb->setText( dt.toString()); 1103 cb->setText( dt.toString());
1097 editor->paste(); 1104 editor->paste();
1098#endif 1105#endif
1099} 1106}
1100 1107
1101int TextEdit::savePrompt() 1108int TextEdit::savePrompt()
1102{ 1109{
1103 switch( QMessageBox::information( 0, (tr("Textedit")), 1110 switch( QMessageBox::information( 0, (tr("Textedit")),
1104 (tr("Textedit detected\n" 1111 (tr("Textedit detected\n"
1105 "you have unsaved changes\n" 1112 "you have unsaved changes\n"
1106 "Go ahead and save?\n")), 1113 "Go ahead and save?\n")),
1107 (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) ) 1114 (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) )
1108 { 1115 {
1109 case 0: 1116 case 0:
1110 { 1117 {
1111 return 1; 1118 return 1;
1112 } 1119 }
1113 break; 1120 break;
1114 1121
1115 case 1: 1122 case 1:
1116 { 1123 {
1117 return 2; 1124 return 2;
1118 } 1125 }
1119 break; 1126 break;
1120 1127
1121 case 2: 1128 case 2:
1122 { 1129 {
1123 return -1; 1130 return -1;
1124 } 1131 }
1125 break; 1132 break;
1126 }; 1133 };
1127 1134
1128 return 0; 1135 return 0;
1129} 1136}
1130 1137
1131void TextEdit::timerCrank() 1138void TextEdit::timerCrank()
1132{ 1139{
1133 if(featureAutoSave && edited1) 1140 if(featureAutoSave && edited1)
1134 { 1141 {
1135 if(currentFileName.isEmpty()) 1142 if(currentFileName.isEmpty())
1136 { 1143 {
1137 currentFileName = QDir::homeDirPath()+"/textedit.tmp"; 1144 currentFileName = QDir::homeDirPath()+"/textedit.tmp";
1138 saveAs(); 1145 saveAs();
1139 } 1146 }
1140 else 1147 else
1141 { 1148 {
1142// qDebug("autosave"); 1149// qDebug("autosave");
1143 save(); 1150 save();
1144 } 1151 }
1145 setTimer(); 1152 setTimer();
1146 } 1153 }
1147} 1154}
1148 1155
1149void TextEdit::doTimer(bool b) 1156void TextEdit::doTimer(bool b)
1150{ 1157{
1151 Config cfg("TextEdit"); 1158 Config cfg("TextEdit");
1152 cfg.setGroup ( "View" ); 1159 cfg.setGroup ( "View" );
1153 cfg.writeEntry ( "autosave", b); 1160 cfg.writeEntry ( "autosave", b);
1154 featureAutoSave = b; 1161 featureAutoSave = b;
1155 nAutoSave->setOn(b); 1162 nAutoSave->setOn(b);
1156 if(b) 1163 if(b)
1157 { 1164 {
1158// qDebug("doTimer true"); 1165// qDebug("doTimer true");
1159 setTimer(); 1166 setTimer();
1160 } 1167 }
1161// else 1168// else
1162// qDebug("doTimer false"); 1169// qDebug("doTimer false");
1163} 1170}
1164 1171
1165void TextEdit::setTimer() 1172void TextEdit::setTimer()
1166{ 1173{
1167if(featureAutoSave) 1174if(featureAutoSave)
1168 { 1175 {
1169// qDebug("setting autosave"); 1176// qDebug("setting autosave");
1170 QTimer *timer = new QTimer(this ); 1177 QTimer *timer = new QTimer(this );
1171 connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) ); 1178 connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) );
1172 timer->start( 300000, true); //5 minutes 1179 timer->start( 300000, true); //5 minutes
1173 } 1180 }
1174} 1181}
1175 1182
1176void TextEdit::gotoLine() { 1183void TextEdit::gotoLine() {
1177 if( editor->length() < 1) 1184 if( editor->length() < 1)
1178 return; 1185 return;
1179 QWidget *d = QApplication::desktop(); 1186 QWidget *d = QApplication::desktop();
1180 gotoEdit = new QLineEdit( 0, "Goto line"); 1187 gotoEdit = new QLineEdit( 0, "Goto line");
1181 1188
1182 gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2)); 1189 gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2));
1183 gotoEdit->setFrame(true); 1190 gotoEdit->setFrame(true);
1184 gotoEdit->show(); 1191 gotoEdit->show();
1185 connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto())); 1192 connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto()));
1186} 1193}
1187 1194
1188void TextEdit::doGoto() { 1195void TextEdit::doGoto() {
1189 QString number = gotoEdit->text(); 1196 QString number = gotoEdit->text();
1190 gotoEdit->hide(); 1197 gotoEdit->hide();
1191 1198
1192 if(gotoEdit) { 1199 if(gotoEdit) {
1193 delete gotoEdit; 1200 delete gotoEdit;
1194 gotoEdit = 0; 1201 gotoEdit = 0;
1195 } 1202 }
1196 1203
1197 bool ok; 1204 bool ok;
1198 int lineNumber = number.toInt(&ok, 10); 1205 int lineNumber = number.toInt(&ok, 10);
1199 if( editor->numLines() < lineNumber) 1206 if( editor->numLines() < lineNumber)
1200 QMessageBox::message(tr("Text Edit"),tr("Not enough lines")); 1207 QMessageBox::message(tr("Text Edit"),tr("Not enough lines"));
1201 else 1208 else
1202 { 1209 {
1203 editor->setCursorPosition(lineNumber, 0, false); 1210 editor->setCursorPosition(lineNumber, 0, false);
1204 } 1211 }
1205} 1212}