summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2003-02-18 19:09:14 (UTC)
committer llornkcor <llornkcor>2003-02-18 19:09:14 (UTC)
commit4dd3080c36c96c58564a29f1b3d2cf21bfb1eae2 (patch) (side-by-side diff)
treefbc89396011e0e9a0dc04fcd1454ee670d6fcae3
parent50f0a50a14f87960cf9492d01aeed5a56a6dca06 (diff)
downloadopie-4dd3080c36c96c58564a29f1b3d2cf21bfb1eae2.zip
opie-4dd3080c36c96c58564a29f1b3d2cf21bfb1eae2.tar.gz
opie-4dd3080c36c96c58564a29f1b3d2cf21bfb1eae2.tar.bz2
autosave feature. will save to ~/textedit.tmp is no filename has been set. moved stuff from public methods
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/textedit/textedit.cpp145
-rw-r--r--core/apps/textedit/textedit.h18
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
@@ -51,2 +51,4 @@
#include <qapplication.h>
+#include <qtimer.h>
+#include <qdir.h>
#include <unistd.h>
@@ -412,2 +414,9 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
+ nAutoSave = new QAction( tr("Auto Save 5 min."),
+ QString::null, 0, this, 0 );
+ connect( nAutoSave, SIGNAL( toggled(bool) ),
+ this, SLOT( doTimer(bool) ) );
+ nAutoSave->setToggleAction(true);
+ nAutoSave->addTo( advancedMenu);
+
@@ -480,5 +489,6 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
startWithNew = cfg.readBoolEntry ( "startNew", true);
+ featureAutoSave = cfg.readBoolEntry( "autosave", false);
if(useSearchBar) searchBarAction->setOn(true);
- if(promptExit ) nAdvanced->setOn( true );
+ if(promptExit) nAdvanced->setOn( true );
if(openDesktop) desktopAction->setOn( true );
@@ -486,3 +496,8 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
if(startWithNew) nStart->setOn( true );
-
+ if(featureAutoSave) nAutoSave->setOn(true);
+
+// {
+// doTimer(true);
+// }
+
bool wrap = cfg. readBoolEntry ( "Wrap", true );
@@ -491,2 +506,3 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
+/////////////////
if( qApp->argc() > 1) {
@@ -515,5 +531,26 @@ TextEdit::~TextEdit() {
void TextEdit::closeEvent(QCloseEvent *) {
- if( edited1 && promptExit)
- saveAs();
- qApp->quit();
+ if( edited1 && promptExit)
+ {
+ switch( savePrompt() )
+ {
+ case 1:
+ {
+ saveAs();
+ qApp->quit();
+ }
+ break;
+
+ case 2:
+ {
+ qApp->quit();
+ }
+ break;
+
+ case -1:
+ break;
+ };
+ }
+ else
+ qApp->quit();
+
}
@@ -816,2 +853,3 @@ void TextEdit::openFile( const DocLnk &f ) {
updateCaption();
+ setTimer();
}
@@ -836,3 +874,4 @@ bool TextEdit::save() {
}
- QString file = doc->file();
+
+ QString file = doc->file();
qDebug("saver file "+file);
@@ -888,2 +927,3 @@ bool TextEdit::save() {
bool TextEdit::saveAs() {
+
if(caption() == tr("Text Editor"))
@@ -946,7 +986,12 @@ bool TextEdit::saveAs() {
if(dire==".")
- dire = QPEApplication::documentDir();
- QString str = OFileDialog::getSaveFileName( 2,
- dire,
- filee, map);
-
+ dire = QPEApplication::documentDir();
+ QString str;
+ if( !featureAutoSave)
+ {
+ str = OFileDialog::getSaveFileName( 2,
+ dire,
+ filee, map);
+ }
+ else
+ str=currentFileName;
if(!str.isEmpty()) {
@@ -1142 +1187,79 @@ void TextEdit::editPasteTimeDate() {
}
+
+int TextEdit::savePrompt()
+{
+ switch( QMessageBox::information( 0, (tr("Textedit")),
+ (tr("Textedit detected\n"
+ "you have unsaved changes\n"
+ "Go ahead and save?\n")),
+ (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) )
+ {
+ case 0:
+ {
+ return 1;
+ }
+ break;
+
+ case 1:
+ {
+ return 2;
+ }
+ break;
+
+ case 2:
+ {
+ return -1;
+ }
+ break;
+ };
+
+ return 0;
+}
+
+void TextEdit::timerCrank()
+{
+ if(featureAutoSave)
+ {
+ if( edited1 )
+ {
+ if(currentFileName.isEmpty())
+ {
+ currentFileName = QDir::homeDirPath()+"/textedit.tmp";
+ saveAs();
+ }
+ else
+ {
+ qDebug("autosave");
+ save();
+ }
+ setTimer();
+ }
+ }
+}
+
+void TextEdit::doTimer(bool b)
+{
+ Config cfg("TextEdit");
+ cfg.setGroup ( "View" );
+ cfg.writeEntry ( "autosave", b);
+ featureAutoSave = b;
+ nAutoSave->setOn(b);
+ if(b)
+ {
+ qDebug("doTimer true");
+ setTimer();
+ }
+ else
+ qDebug("doTimer false");
+}
+
+void TextEdit::setTimer()
+{
+if(featureAutoSave)
+ {
+ qDebug("setting autosave");
+ QTimer *timer = new QTimer(this );
+ connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) );
+ timer->start( 30000/*0*/, true); //5 minutes
+ }
+}
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
@@ -49,2 +49,3 @@ class QpeEditor;
class QPopupMenu;
+class QTimer;
@@ -58,14 +59,19 @@ public:
+protected:
QPopupMenu *font;
- QAction *nStart, *nFileDlgOpt, *nAdvanced, *desktopAction, *filePermAction, *searchBarAction;
+ QAction *nStart, *nFileDlgOpt, *nAdvanced, *desktopAction, *filePermAction, *searchBarAction, *nAutoSave;
bool edited, edited1;
void openFile( const QString & );
- QCopChannel * channel;
-public slots:
- void editorChanged();
-void receive(const QCString&, const QByteArray&);
-protected:
+ QCopChannel * channel;
+
+ bool featureAutoSave;
void closeEvent( QCloseEvent *e );
void doSearchBar();
+ int savePrompt();
+ void setTimer();
private slots:
+ void editorChanged();
+ void receive(const QCString&, const QByteArray&);
+ void timerCrank();
+ void doTimer(bool);
void editPasteTimeDate();