summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/tinykate/mainwindow/tinykate.cpp126
-rw-r--r--noncore/apps/tinykate/mainwindow/tinykate.h5
2 files changed, 111 insertions, 20 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,6 +290,43 @@ 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 ) )
{
- if (currentView==0) return;
+ case 0:
+ {
+ return saveDocument();
+ }
+ break;
+
+ case 1:
+ {
+ return true;
+ }
+ break;
+
+ default:
+ {
+ return false;
+ }
+ break;
+ };
+ }
+ else {
+ return true;
+ }
+}
+
+bool TinyKate::closeDocument()
+{
+ if (currentView==0) return true;
KTextEditor::View *dv=currentView;
+ if(checkSave()) {
currentView=0;
@@ -302,8 +336,17 @@ void TinyKate::slotClose( )
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: