summaryrefslogtreecommitdiffstats
path: root/kig/misc/kigfiledialog.cc
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitce599e4f9f94b4eb00c1b5edb85bce5431ab3df2 (patch)
treed3bb9f5d25a2dc09ca81adecf39621d871534297 /kig/misc/kigfiledialog.cc
downloadtdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.tar.gz
tdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeedu@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kig/misc/kigfiledialog.cc')
-rw-r--r--kig/misc/kigfiledialog.cc81
1 files changed, 81 insertions, 0 deletions
diff --git a/kig/misc/kigfiledialog.cc b/kig/misc/kigfiledialog.cc
new file mode 100644
index 00000000..6b8d8cb4
--- /dev/null
+++ b/kig/misc/kigfiledialog.cc
@@ -0,0 +1,81 @@
+// Copyright (C) 2005 Pino Toscano <toscano.pino@tiscali.it>
+
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+// USA
+
+#include "kigfiledialog.h"
+#include "kigfiledialog.moc"
+
+#include <qfile.h>
+#include <qpoint.h>
+
+#include <klocale.h>
+#include <kmessagebox.h>
+
+KigFileDialog::KigFileDialog( const QString& startDir, const QString& filter,
+ const QString& caption, QWidget* parent )
+ : KFileDialog( startDir, filter, parent, "kigfiledialog", true ),
+ mow( 0L )
+{
+ setCaption( caption );
+ setOperationMode( Saving );
+ setMode( KFile::File | KFile::LocalOnly );
+ moptcaption = i18n( "Options" );
+}
+
+void KigFileDialog::setOptionsWidget( QWidget* w )
+{
+ mow = w;
+}
+
+void KigFileDialog::accept()
+{
+ // i know this is an ugly hack, but i hadn't found other ways to get
+ // the selected file name _before_ the dialog is accept()'ed or
+ // reject()'ed... in every case, below we make sure to accept() or
+ // reject()...
+ setResult( QDialog::Accepted );
+
+ QString sFile = selectedFile();
+ if ( QFile::exists( sFile ) )
+ {
+ int ret = KMessageBox::warningContinueCancel( this,
+ i18n( "The file \"%1\" already exists. Do you wish to overwrite it?" )
+ .arg( sFile ), i18n( "Overwrite File?" ), i18n("Overwrite") );
+ if ( ret != KMessageBox::Continue )
+ {
+ KFileDialog::reject();
+ return;
+ }
+ }
+ if ( mow )
+ {
+ KDialogBase* optdlg = new KDialogBase(
+ this, "optdlg", true, moptcaption, Cancel|Ok, Cancel, true );
+ mow->reparent( optdlg, QPoint() );
+ optdlg->setMainWidget( mow );
+ optdlg->exec() == QDialog::Accepted ? KFileDialog::accept() : KFileDialog::reject();
+ }
+ else
+ KFileDialog::accept();
+}
+
+void KigFileDialog::setOptionCaption( const QString& caption )
+{
+ if ( caption.isEmpty() )
+ return;
+
+ moptcaption = caption;
+}