Listing 2. editor.cpp

  1 #include "editor.h"
  2
  3 #include <qtextedit.h>
  4 #include <qmessagebox.h>
  5 #include <qfiledialog.h>
  6 #include <qfile.h>
  7 #include <qstatusbar.h>
  8 #include <qstylesheet.h>
  9 #include <qapplication.h>
 10
 11 /*
 12  *  Constructs an Editor which is a child of
 13  *  "parent", with the name "name" and widget
 14  *  flags set to "f".
 15  */
 16 Editor::Editor( QWidget* parent,
 17                 const char* name, WFlags fl )
 18     : ljeditor( parent, name, fl )
 19 {
 20     editField = ljeditor::TextEdit;
 21     fileName = "";
 22 }
 23
 24 /*
 25  * Destroys the object and frees any allocated
 26  * resources.
 27  */
 28 Editor::~Editor()
 29 {
 30     // no need to delete child widgets,
 31     // Qt does it all for us
 32 }
 33
 34 /*
 35  * Opens a new editor window.
 36  */
 37 void Editor::fileNew()
 38 {
 39     Editor * editor = new Editor;
 40     editor->show();
 41 }
 42

...

154 /*
155  * A window close event occurs
156  */
157 void Editor::closeEvent( QCloseEvent * close )
158 {
159     if ( saveAndContinue(
160         tr( "Closing aborted" ) ) )
161         close->accept();
162     else
163         close->ignore();
164 }


166 /*
167  * Ask user to save the old file or to cancel
168  * the operation.
169  */
170 bool Editor::saveAndContinue(
171     QString abortMessage )
172 {
173     if ( ! fileName.isEmpty() ||
174         ! editField->text().isEmpty() ){
175   switch( QMessageBox::information( this,
176             fileName,
177             QString( tr( "Save %1?" ) ).arg(
178                 fileName ),
179             tr( "Yes" ), tr( "No" ),
180             tr( "Cancel" ) ) ){
181         case 0: if ( ! fileName.isEmpty() )
182                     fileSave();
183                 else
184                     fileSaveAs();
185                 return TRUE;
186                 break;
187         case 1: statusBar()->message(
188                     QString(
189                         tr( "%1 not saved" )
190                            ).arg(fileName),
191                     2000 );
192                 return TRUE;
193                 break;
194         case 2: statusBar()->message(
195                     abortMessage, 2000 );
196                 return FALSE;
197                 break;
198         default: return FALSE;
199         }
200     } else {
201   return TRUE;
202     }
203 }