-rw-r--r-- | core/apps/textedit/textedit.cpp | 145 | ||||
-rw-r--r-- | core/apps/textedit/textedit.h | 18 |
2 files changed, 146 insertions, 17 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp index e931f01..1e8ce7f 100644 --- a/core/apps/textedit/textedit.cpp +++ b/core/apps/textedit/textedit.cpp | |||
@@ -49,6 +49,8 @@ | |||
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> | ||
53 | #include <qdir.h> | ||
52 | #include <unistd.h> | 54 | #include <unistd.h> |
53 | #include <sys/stat.h> | 55 | #include <sys/stat.h> |
54 | #include <stdlib.h> //getenv | 56 | #include <stdlib.h> //getenv |
@@ -410,6 +412,13 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) | |||
410 | searchBarAction->setToggleAction(true); | 412 | searchBarAction->setToggleAction(true); |
411 | searchBarAction->addTo( advancedMenu); | 413 | searchBarAction->addTo( advancedMenu); |
412 | 414 | ||
415 | nAutoSave = new QAction( tr("Auto Save 5 min."), | ||
416 | QString::null, 0, this, 0 ); | ||
417 | connect( nAutoSave, SIGNAL( toggled(bool) ), | ||
418 | this, SLOT( doTimer(bool) ) ); | ||
419 | nAutoSave->setToggleAction(true); | ||
420 | nAutoSave->addTo( advancedMenu); | ||
421 | |||
413 | 422 | ||
414 | font->insertSeparator(); | 423 | font->insertSeparator(); |
415 | 424 | ||
@@ -478,17 +487,24 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) | |||
478 | filePerms = cfg.readBoolEntry ( "FilePermissions", false ); | 487 | filePerms = cfg.readBoolEntry ( "FilePermissions", false ); |
479 | useSearchBar = cfg.readBoolEntry ( "SearchBar", false ); | 488 | useSearchBar = cfg.readBoolEntry ( "SearchBar", false ); |
480 | startWithNew = cfg.readBoolEntry ( "startNew", true); | 489 | startWithNew = cfg.readBoolEntry ( "startNew", true); |
490 | featureAutoSave = cfg.readBoolEntry( "autosave", false); | ||
481 | 491 | ||
482 | if(useSearchBar) searchBarAction->setOn(true); | 492 | if(useSearchBar) searchBarAction->setOn(true); |
483 | if(promptExit ) nAdvanced->setOn( true ); | 493 | if(promptExit) nAdvanced->setOn( true ); |
484 | if(openDesktop) desktopAction->setOn( true ); | 494 | if(openDesktop) desktopAction->setOn( true ); |
485 | if(filePerms) filePermAction->setOn( true ); | 495 | if(filePerms) filePermAction->setOn( true ); |
486 | if(startWithNew) nStart->setOn( true ); | 496 | if(startWithNew) nStart->setOn( true ); |
487 | 497 | if(featureAutoSave) nAutoSave->setOn(true); | |
498 | |||
499 | // { | ||
500 | // doTimer(true); | ||
501 | // } | ||
502 | |||
488 | bool wrap = cfg. readBoolEntry ( "Wrap", true ); | 503 | bool wrap = cfg. readBoolEntry ( "Wrap", true ); |
489 | wa-> setOn ( wrap ); | 504 | wa-> setOn ( wrap ); |
490 | setWordWrap ( wrap ); | 505 | setWordWrap ( wrap ); |
491 | 506 | ||
507 | ///////////////// | ||
492 | if( qApp->argc() > 1) { | 508 | if( qApp->argc() > 1) { |
493 | currentFileName=qApp->argv()[1]; | 509 | currentFileName=qApp->argv()[1]; |
494 | 510 | ||
@@ -513,9 +529,30 @@ TextEdit::~TextEdit() { | |||
513 | } | 529 | } |
514 | 530 | ||
515 | void TextEdit::closeEvent(QCloseEvent *) { | 531 | void TextEdit::closeEvent(QCloseEvent *) { |
516 | if( edited1 && promptExit) | 532 | if( edited1 && promptExit) |
517 | saveAs(); | 533 | { |
518 | qApp->quit(); | 534 | switch( savePrompt() ) |
535 | { | ||
536 | case 1: | ||
537 | { | ||
538 | saveAs(); | ||
539 | qApp->quit(); | ||
540 | } | ||
541 | break; | ||
542 | |||
543 | case 2: | ||
544 | { | ||
545 | qApp->quit(); | ||
546 | } | ||
547 | break; | ||
548 | |||
549 | case -1: | ||
550 | break; | ||
551 | }; | ||
552 | } | ||
553 | else | ||
554 | qApp->quit(); | ||
555 | |||
519 | } | 556 | } |
520 | 557 | ||
521 | void TextEdit::cleanUp() { | 558 | void TextEdit::cleanUp() { |
@@ -814,6 +851,7 @@ void TextEdit::openFile( const DocLnk &f ) { | |||
814 | 851 | ||
815 | doc->setName(currentFileName); | 852 | doc->setName(currentFileName); |
816 | updateCaption(); | 853 | updateCaption(); |
854 | setTimer(); | ||
817 | } | 855 | } |
818 | 856 | ||
819 | void TextEdit::showEditTools() { | 857 | void TextEdit::showEditTools() { |
@@ -834,7 +872,8 @@ bool TextEdit::save() { | |||
834 | saveAs(); | 872 | saveAs(); |
835 | return false; | 873 | return false; |
836 | } | 874 | } |
837 | QString file = doc->file(); | 875 | |
876 | QString file = doc->file(); | ||
838 | qDebug("saver file "+file); | 877 | qDebug("saver file "+file); |
839 | QString name= doc->name(); | 878 | QString name= doc->name(); |
840 | qDebug("File named "+name); | 879 | qDebug("File named "+name); |
@@ -886,6 +925,7 @@ bool TextEdit::save() { | |||
886 | /*! | 925 | /*! |
887 | prompted save */ | 926 | prompted save */ |
888 | bool TextEdit::saveAs() { | 927 | bool TextEdit::saveAs() { |
928 | |||
889 | if(caption() == tr("Text Editor")) | 929 | if(caption() == tr("Text Editor")) |
890 | return false; | 930 | return false; |
891 | qDebug("saveAsFile " + currentFileName); | 931 | qDebug("saveAsFile " + currentFileName); |
@@ -944,11 +984,16 @@ bool TextEdit::saveAs() { | |||
944 | QString filee = cuFi.fileName(); | 984 | QString filee = cuFi.fileName(); |
945 | QString dire = cuFi.dirPath(); | 985 | QString dire = cuFi.dirPath(); |
946 | if(dire==".") | 986 | if(dire==".") |
947 | dire = QPEApplication::documentDir(); | 987 | dire = QPEApplication::documentDir(); |
948 | QString str = OFileDialog::getSaveFileName( 2, | 988 | QString str; |
949 | dire, | 989 | if( !featureAutoSave) |
950 | filee, map); | 990 | { |
951 | 991 | str = OFileDialog::getSaveFileName( 2, | |
992 | dire, | ||
993 | filee, map); | ||
994 | } | ||
995 | else | ||
996 | str=currentFileName; | ||
952 | if(!str.isEmpty()) { | 997 | if(!str.isEmpty()) { |
953 | QString fileNm=str; | 998 | QString fileNm=str; |
954 | 999 | ||
@@ -1140,3 +1185,81 @@ void TextEdit::editPasteTimeDate() { | |||
1140 | editor->paste(); | 1185 | editor->paste(); |
1141 | #endif | 1186 | #endif |
1142 | } | 1187 | } |
1188 | |||
1189 | int TextEdit::savePrompt() | ||
1190 | { | ||
1191 | switch( QMessageBox::information( 0, (tr("Textedit")), | ||
1192 | (tr("Textedit detected\n" | ||
1193 | "you have unsaved changes\n" | ||
1194 | "Go ahead and save?\n")), | ||
1195 | (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) ) | ||
1196 | { | ||
1197 | case 0: | ||
1198 | { | ||
1199 | return 1; | ||
1200 | } | ||
1201 | break; | ||
1202 | |||
1203 | case 1: | ||
1204 | { | ||
1205 | return 2; | ||
1206 | } | ||
1207 | break; | ||
1208 | |||
1209 | case 2: | ||
1210 | { | ||
1211 | return -1; | ||
1212 | } | ||
1213 | break; | ||
1214 | }; | ||
1215 | |||
1216 | return 0; | ||
1217 | } | ||
1218 | |||
1219 | void TextEdit::timerCrank() | ||
1220 | { | ||
1221 | if(featureAutoSave) | ||
1222 | { | ||
1223 | if( edited1 ) | ||
1224 | { | ||
1225 | if(currentFileName.isEmpty()) | ||
1226 | { | ||
1227 | currentFileName = QDir::homeDirPath()+"/textedit.tmp"; | ||
1228 | saveAs(); | ||
1229 | } | ||
1230 | else | ||
1231 | { | ||
1232 | qDebug("autosave"); | ||
1233 | save(); | ||
1234 | } | ||
1235 | setTimer(); | ||
1236 | } | ||
1237 | } | ||
1238 | } | ||
1239 | |||
1240 | void TextEdit::doTimer(bool b) | ||
1241 | { | ||
1242 | Config cfg("TextEdit"); | ||
1243 | cfg.setGroup ( "View" ); | ||
1244 | cfg.writeEntry ( "autosave", b); | ||
1245 | featureAutoSave = b; | ||
1246 | nAutoSave->setOn(b); | ||
1247 | if(b) | ||
1248 | { | ||
1249 | qDebug("doTimer true"); | ||
1250 | setTimer(); | ||
1251 | } | ||
1252 | else | ||
1253 | qDebug("doTimer false"); | ||
1254 | } | ||
1255 | |||
1256 | void TextEdit::setTimer() | ||
1257 | { | ||
1258 | if(featureAutoSave) | ||
1259 | { | ||
1260 | qDebug("setting autosave"); | ||
1261 | QTimer *timer = new QTimer(this ); | ||
1262 | connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) ); | ||
1263 | timer->start( 30000/*0*/, true); //5 minutes | ||
1264 | } | ||
1265 | } | ||
diff --git a/core/apps/textedit/textedit.h b/core/apps/textedit/textedit.h index 9f16ebf..643ea68 100644 --- a/core/apps/textedit/textedit.h +++ b/core/apps/textedit/textedit.h | |||
@@ -47,6 +47,7 @@ class QAction; | |||
47 | class FileSelector; | 47 | class FileSelector; |
48 | class QpeEditor; | 48 | class QpeEditor; |
49 | class QPopupMenu; | 49 | class QPopupMenu; |
50 | class QTimer; | ||
50 | 51 | ||
51 | class TextEdit : public QMainWindow | 52 | class TextEdit : public QMainWindow |
52 | { | 53 | { |
@@ -56,18 +57,23 @@ public: | |||
56 | TextEdit( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | 57 | TextEdit( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); |
57 | ~TextEdit(); | 58 | ~TextEdit(); |
58 | 59 | ||
60 | protected: | ||
59 | QPopupMenu *font; | 61 | QPopupMenu *font; |
60 | QAction *nStart, *nFileDlgOpt, *nAdvanced, *desktopAction, *filePermAction, *searchBarAction; | 62 | QAction *nStart, *nFileDlgOpt, *nAdvanced, *desktopAction, *filePermAction, *searchBarAction, *nAutoSave; |
61 | bool edited, edited1; | 63 | bool edited, edited1; |
62 | void openFile( const QString & ); | 64 | void openFile( const QString & ); |
63 | QCopChannel * channel; | 65 | QCopChannel * channel; |
64 | public slots: | 66 | |
65 | void editorChanged(); | 67 | bool featureAutoSave; |
66 | void receive(const QCString&, const QByteArray&); | ||
67 | protected: | ||
68 | void closeEvent( QCloseEvent *e ); | 68 | void closeEvent( QCloseEvent *e ); |
69 | void doSearchBar(); | 69 | void doSearchBar(); |
70 | int savePrompt(); | ||
71 | void setTimer(); | ||
70 | private slots: | 72 | private slots: |
73 | void editorChanged(); | ||
74 | void receive(const QCString&, const QByteArray&); | ||
75 | void timerCrank(); | ||
76 | void doTimer(bool); | ||
71 | void editPasteTimeDate(); | 77 | void editPasteTimeDate(); |
72 | void doPrompt(bool); | 78 | void doPrompt(bool); |
73 | void doDesktop(bool); | 79 | void doDesktop(bool); |