author | llornkcor <llornkcor> | 2003-02-18 19:09:14 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2003-02-18 19:09:14 (UTC) |
commit | 4dd3080c36c96c58564a29f1b3d2cf21bfb1eae2 (patch) (side-by-side diff) | |
tree | fbc89396011e0e9a0dc04fcd1454ee670d6fcae3 | |
parent | 50f0a50a14f87960cf9492d01aeed5a56a6dca06 (diff) | |
download | opie-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
-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 @@ -46,12 +46,14 @@ #include <qtoolbutton.h> #include <qwidgetstack.h> #include <qcheckbox.h> #include <qcombo.h> #include <qlayout.h> #include <qapplication.h> +#include <qtimer.h> +#include <qdir.h> #include <unistd.h> #include <sys/stat.h> #include <stdlib.h> //getenv /* XPM */ @@ -407,12 +409,19 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) QString::null, 0, this, 0 ); connect( searchBarAction, SIGNAL( toggled(bool) ), this, SLOT( setSearchBar(bool) ) ); searchBarAction->setToggleAction(true); searchBarAction->addTo( advancedMenu); + 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); + font->insertSeparator(); font->insertItem(tr("About"), this, SLOT( doAbout()) ); mb->insertItem( tr( "File" ), file ); @@ -475,23 +484,30 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) promptExit = cfg.readBoolEntry ( "PromptExit", false ); openDesktop = cfg.readBoolEntry ( "OpenDesktop", true ); filePerms = cfg.readBoolEntry ( "FilePermissions", false ); useSearchBar = cfg.readBoolEntry ( "SearchBar", false ); 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 ); if(filePerms) filePermAction->setOn( true ); if(startWithNew) nStart->setOn( true ); - + if(featureAutoSave) nAutoSave->setOn(true); + +// { +// doTimer(true); +// } + bool wrap = cfg. readBoolEntry ( "Wrap", true ); wa-> setOn ( wrap ); setWordWrap ( wrap ); +///////////////// if( qApp->argc() > 1) { currentFileName=qApp->argv()[1]; QFileInfo fi(currentFileName); if(fi.baseName().left(1) == "") { @@ -510,15 +526,36 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) TextEdit::~TextEdit() { qWarning("textedit d'tor"); delete editor; } 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(); + } void TextEdit::cleanUp() { Config cfg ( "TextEdit" ); cfg. setGroup ( "Font" ); @@ -811,12 +848,13 @@ void TextEdit::openFile( const DocLnk &f ) { editor->setEdited( false); edited1=false; edited=false; doc->setName(currentFileName); updateCaption(); + setTimer(); } void TextEdit::showEditTools() { menu->show(); editBar->show(); if(!useSearchBar) @@ -831,13 +869,14 @@ void TextEdit::showEditTools() { bool TextEdit::save() { qDebug("saveAsFile " + currentFileName); if(currentFileName.isEmpty()) { saveAs(); return false; } - QString file = doc->file(); + + QString file = doc->file(); qDebug("saver file "+file); QString name= doc->name(); qDebug("File named "+name); QString rt = editor->text(); if( !rt.isEmpty() ) { if(name.isEmpty()) { @@ -883,12 +922,13 @@ bool TextEdit::save() { return false; } /*! prompted save */ bool TextEdit::saveAs() { + if(caption() == tr("Text Editor")) return false; qDebug("saveAsFile " + currentFileName); // case of nothing to save... // if ( !doc && !currentFileName.isEmpty()) { // //|| !bFromDocView) @@ -941,17 +981,22 @@ bool TextEdit::saveAs() { map.insert(tr("All"), text ); QFileInfo cuFi( currentFileName); QString filee = cuFi.fileName(); QString dire = cuFi.dirPath(); 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()) { QString fileNm=str; qDebug("saving filename "+fileNm); QFileInfo fi(fileNm); currentFileName=fi.fileName(); @@ -1137,6 +1182,84 @@ void TextEdit::editPasteTimeDate() { QClipboard *cb = QApplication::clipboard(); QDateTime dt = QDateTime::currentDateTime(); cb->setText( dt.toString()); editor->paste(); #endif } + +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 @@ -44,33 +44,39 @@ class QPopupMenu; class QToolBar; class QLineEdit; class QAction; class FileSelector; class QpeEditor; class QPopupMenu; +class QTimer; class TextEdit : public QMainWindow { Q_OBJECT public: TextEdit( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); ~TextEdit(); +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(); void doPrompt(bool); void doDesktop(bool); void doFilePerms(bool); void doAbout(); void setDocument(const QString&); |