-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 | |||
@@ -44,16 +44,18 @@ | |||
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> | ||
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 |
55 | 57 | ||
56 | 58 | ||
57 | /* XPM */ | 59 | /* XPM */ |
58 | static char * filesave_xpm[] = { | 60 | static char * filesave_xpm[] = { |
59 | "16 16 78 1", | 61 | "16 16 78 1", |
@@ -405,16 +407,23 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) | |||
405 | 407 | ||
406 | searchBarAction = new QAction( tr("Search Bar Open"), | 408 | searchBarAction = new QAction( tr("Search Bar Open"), |
407 | QString::null, 0, this, 0 ); | 409 | QString::null, 0, this, 0 ); |
408 | connect( searchBarAction, SIGNAL( toggled(bool) ), | 410 | connect( searchBarAction, SIGNAL( toggled(bool) ), |
409 | this, SLOT( setSearchBar(bool) ) ); | 411 | this, SLOT( setSearchBar(bool) ) ); |
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 | ||
416 | font->insertItem(tr("About"), this, SLOT( doAbout()) ); | 425 | font->insertItem(tr("About"), this, SLOT( doAbout()) ); |
417 | 426 | ||
418 | mb->insertItem( tr( "File" ), file ); | 427 | mb->insertItem( tr( "File" ), file ); |
419 | mb->insertItem( tr( "Edit" ), edit ); | 428 | mb->insertItem( tr( "Edit" ), edit ); |
420 | mb->insertItem( tr( "View" ), font ); | 429 | mb->insertItem( tr( "View" ), font ); |
@@ -473,27 +482,34 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) | |||
473 | 482 | ||
474 | cfg.setGroup ( "View" ); | 483 | cfg.setGroup ( "View" ); |
475 | 484 | ||
476 | promptExit = cfg.readBoolEntry ( "PromptExit", false ); | 485 | promptExit = cfg.readBoolEntry ( "PromptExit", false ); |
477 | openDesktop = cfg.readBoolEntry ( "OpenDesktop", true ); | 486 | openDesktop = cfg.readBoolEntry ( "OpenDesktop", true ); |
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 | ||
495 | QFileInfo fi(currentFileName); | 511 | QFileInfo fi(currentFileName); |
496 | 512 | ||
497 | if(fi.baseName().left(1) == "") { | 513 | if(fi.baseName().left(1) == "") { |
498 | openDotFile(currentFileName); | 514 | openDotFile(currentFileName); |
499 | } else { | 515 | } else { |
@@ -508,19 +524,40 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) | |||
508 | } | 524 | } |
509 | 525 | ||
510 | TextEdit::~TextEdit() { | 526 | TextEdit::~TextEdit() { |
511 | qWarning("textedit d'tor"); | 527 | qWarning("textedit d'tor"); |
512 | delete editor; | 528 | delete editor; |
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() { |
522 | 559 | ||
523 | Config cfg ( "TextEdit" ); | 560 | Config cfg ( "TextEdit" ); |
524 | cfg. setGroup ( "Font" ); | 561 | cfg. setGroup ( "Font" ); |
525 | QFont f = editor->font(); | 562 | QFont f = editor->font(); |
526 | cfg.writeEntry ( "Family", f. family ( )); | 563 | cfg.writeEntry ( "Family", f. family ( )); |
@@ -809,16 +846,17 @@ void TextEdit::openFile( const DocLnk &f ) { | |||
809 | doc = new DocLnk(f); | 846 | doc = new DocLnk(f); |
810 | editor->setText(txt); | 847 | editor->setText(txt); |
811 | editor->setEdited( false); | 848 | editor->setEdited( false); |
812 | edited1=false; | 849 | edited1=false; |
813 | edited=false; | 850 | edited=false; |
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() { |
820 | menu->show(); | 858 | menu->show(); |
821 | editBar->show(); | 859 | editBar->show(); |
822 | if(!useSearchBar) | 860 | if(!useSearchBar) |
823 | searchBar->hide(); | 861 | searchBar->hide(); |
824 | else | 862 | else |
@@ -829,17 +867,18 @@ void TextEdit::showEditTools() { | |||
829 | /*! | 867 | /*! |
830 | unprompted save */ | 868 | unprompted save */ |
831 | bool TextEdit::save() { | 869 | bool TextEdit::save() { |
832 | qDebug("saveAsFile " + currentFileName); | 870 | qDebug("saveAsFile " + currentFileName); |
833 | if(currentFileName.isEmpty()) { | 871 | if(currentFileName.isEmpty()) { |
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); |
841 | QString rt = editor->text(); | 880 | QString rt = editor->text(); |
842 | if( !rt.isEmpty() ) { | 881 | if( !rt.isEmpty() ) { |
843 | if(name.isEmpty()) { | 882 | if(name.isEmpty()) { |
844 | saveAs(); | 883 | saveAs(); |
845 | } else { | 884 | } else { |
@@ -881,16 +920,17 @@ bool TextEdit::save() { | |||
881 | return true; | 920 | return true; |
882 | } | 921 | } |
883 | return false; | 922 | return false; |
884 | } | 923 | } |
885 | 924 | ||
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); |
892 | // case of nothing to save... | 932 | // case of nothing to save... |
893 | // if ( !doc && !currentFileName.isEmpty()) { | 933 | // if ( !doc && !currentFileName.isEmpty()) { |
894 | // //|| !bFromDocView) | 934 | // //|| !bFromDocView) |
895 | // qDebug("no doc"); | 935 | // qDebug("no doc"); |
896 | // return true; | 936 | // return true; |
@@ -939,21 +979,26 @@ bool TextEdit::saveAs() { | |||
939 | map.insert(tr("Text"), text ); | 979 | map.insert(tr("Text"), text ); |
940 | text << "*"; | 980 | text << "*"; |
941 | map.insert(tr("All"), text ); | 981 | map.insert(tr("All"), text ); |
942 | 982 | ||
943 | QFileInfo cuFi( currentFileName); | 983 | QFileInfo cuFi( currentFileName); |
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 | ||
955 | qDebug("saving filename "+fileNm); | 1000 | qDebug("saving filename "+fileNm); |
956 | QFileInfo fi(fileNm); | 1001 | QFileInfo fi(fileNm); |
957 | currentFileName=fi.fileName(); | 1002 | currentFileName=fi.fileName(); |
958 | if(doc) | 1003 | if(doc) |
959 | // QString file = doc->file(); | 1004 | // QString file = doc->file(); |
@@ -1135,8 +1180,86 @@ void TextEdit::doFilePerms(bool b) { | |||
1135 | void TextEdit::editPasteTimeDate() { | 1180 | void TextEdit::editPasteTimeDate() { |
1136 | #ifndef QT_NO_CLIPBOARD | 1181 | #ifndef QT_NO_CLIPBOARD |
1137 | QClipboard *cb = QApplication::clipboard(); | 1182 | QClipboard *cb = QApplication::clipboard(); |
1138 | QDateTime dt = QDateTime::currentDateTime(); | 1183 | QDateTime dt = QDateTime::currentDateTime(); |
1139 | cb->setText( dt.toString()); | 1184 | cb->setText( dt.toString()); |
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 | |||
@@ -42,37 +42,43 @@ class QWidgetStack; | |||
42 | class QToolButton; | 42 | class QToolButton; |
43 | class QPopupMenu; | 43 | class QPopupMenu; |
44 | class QToolBar; | 44 | class QToolBar; |
45 | class QLineEdit; | 45 | class QLineEdit; |
46 | class QAction; | 46 | 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 | { |
53 | Q_OBJECT | 54 | Q_OBJECT |
54 | 55 | ||
55 | public: | 56 | 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); |
74 | void doFilePerms(bool); | 80 | void doFilePerms(bool); |
75 | void doAbout(); | 81 | void doAbout(); |
76 | void setDocument(const QString&); | 82 | void setDocument(const QString&); |
77 | void changeFont(); | 83 | void changeFont(); |
78 | void fileNew(); | 84 | void fileNew(); |