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