author | paule <paule> | 2007-01-13 07:34:07 (UTC) |
---|---|---|
committer | paule <paule> | 2007-01-13 07:34:07 (UTC) |
commit | b1075202780c1d807c9d9f5286a2ffa7714bae51 (patch) (side-by-side diff) | |
tree | 6d37dc6d7f7b45d39f7f379c8654fd085d63e895 | |
parent | ee43ea083b2abea078507677ee30c7af88d248c4 (diff) | |
download | opie-b1075202780c1d807c9d9f5286a2ffa7714bae51.zip opie-b1075202780c1d807c9d9f5286a2ffa7714bae51.tar.gz opie-b1075202780c1d807c9d9f5286a2ffa7714bae51.tar.bz2 |
Prompt user to save on closing a modified file; prompt user on Save As if specified file already exists; change tab to show filename when saving a new file
-rw-r--r-- | noncore/apps/tinykate/mainwindow/tinykate.cpp | 136 | ||||
-rw-r--r-- | noncore/apps/tinykate/mainwindow/tinykate.h | 5 |
2 files changed, 116 insertions, 25 deletions
diff --git a/noncore/apps/tinykate/mainwindow/tinykate.cpp b/noncore/apps/tinykate/mainwindow/tinykate.cpp index b1b88e9..e87464e 100644 --- a/noncore/apps/tinykate/mainwindow/tinykate.cpp +++ b/noncore/apps/tinykate/mainwindow/tinykate.cpp @@ -185,8 +185,2 @@ TinyKate::~TinyKate( ) - shutDown=true; - while (currentView!=0) - { - slotClose(); - } - if( KGlobal::config() != 0 ) @@ -287,5 +281,8 @@ void TinyKate::slotNew( ) KTextEditor::View *kv; + + kd->setDocName(tr("Unnamed %1").arg(nextUnnamed++)); + kd->setNewDoc(true); tabwidget->addTab(kv=kd->createView(tabwidget,"BLAH"), "tinykate/tinykate", - tr("Unnamed %1").arg(nextUnnamed++)); + kd->docName()); viewCount++; @@ -293,17 +290,63 @@ void TinyKate::slotNew( ) -void TinyKate::slotClose( ) +bool TinyKate::checkSave() { + if (currentView==0) return true; + + KateView *kv = (KateView*) currentView; + if(kv->isModified()) { + KateDocument *kd = (KateDocument*) kv->document(); + switch( QMessageBox::information( 0, (tr("TinyKATE")), + (tr("Do you want to save\n" + "changes to the document\n" + "%1?\n").arg(kd->docName())), + (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) ) + { + case 0: + { + return saveDocument(); + } + break; + + case 1: + { + return true; + } + break; + + default: + { + return false; + } + break; + }; + } + else { + return true; + } +} + +bool TinyKate::closeDocument() { - if (currentView==0) return; + if (currentView==0) return true; KTextEditor::View *dv=currentView; - currentView=0; - tabwidget->removePage(dv); - delete dv->document(); - viewCount--; - if ((!viewCount) && (!shutDown)) slotNew(); + if(checkSave()) { + currentView=0; + tabwidget->removePage(dv); + delete dv->document(); + viewCount--; + if ((!viewCount) && (!shutDown)) slotNew(); + return true; + } + else + return false; } -void TinyKate::slotSave() +void TinyKate::slotClose( ) +{ + closeDocument(); +} + +bool TinyKate::saveDocument() { // feel free to make this how you want - if (currentView==0) return; + if (currentView==0) return false; @@ -312,6 +355,8 @@ void TinyKate::slotSave() // odebug << "saving file "+kd->docName() << oendl; - if( kd->docName().isEmpty()) - slotSaveAs(); + if( kd->isNewDoc()) { + return saveDocumentAs(); + } else - kd->saveFile(); + return kd->saveFile(); + // FIXME check result of saveFile and show message if failed? // kv->save(); @@ -320,5 +365,7 @@ void TinyKate::slotSave() -void TinyKate::slotSaveAs() +bool TinyKate::saveDocumentAs() { - if (currentView==0) return; + if (currentView==0) return false; + + bool result = false; KateDocument *kd = (KateDocument*) currentView->document(); @@ -331,2 +378,13 @@ void TinyKate::slotSaveAs() QFileInfo fi(filename); + if(fi.exists()) { + if ( QMessageBox::warning(this,tr("TinyKATE"), + tr("The file %1\n" + "already exists.\n\n" + "Are you sure you want to\n" + "overwrite it?") + .arg(fi.fileName()), + tr("Yes"),tr("No"),0,0,1) != 0) { + return false; + } + } QString filenamed = fi.fileName(); @@ -334,8 +392,36 @@ void TinyKate::slotSaveAs() kd->setDocName( filenamed); - kd->saveFile(); - // KTextEditor::View *dv = currentView; - // tabwidget->changeTab( dv, filenamed); - // need to change tab label here + kd->setNewDoc(false); + result = kd->saveFile(); + // FIXME check result of saveFile and show message if failed? + tabwidget->changeTab( tabwidget->currentWidget(), "tinykate/tinykate", filenamed ); + } + return result; +} + +void TinyKate::slotSave() +{ + saveDocument(); +} + +void TinyKate::slotSaveAs() +{ + saveDocumentAs(); +} + +void TinyKate::closeEvent(QCloseEvent *e) { + // Close all documents + shutDown = true; + while (currentView!=0) + { + if(!closeDocument()) { + // User cancelled + shutDown=false; + break; + } } + if(shutDown) + e->accept(); + else + e->ignore(); } diff --git a/noncore/apps/tinykate/mainwindow/tinykate.h b/noncore/apps/tinykate/mainwindow/tinykate.h index 6e95d87..7d0c588 100644 --- a/noncore/apps/tinykate/mainwindow/tinykate.h +++ b/noncore/apps/tinykate/mainwindow/tinykate.h @@ -50,2 +50,7 @@ protected: void open(const QString&); + bool closeDocument(); + bool checkSave(); + bool saveDocument(); + bool saveDocumentAs(); + void closeEvent(QCloseEvent *e); private: |