summaryrefslogtreecommitdiffstats
path: root/src/gui/sendfileform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/sendfileform.cpp')
-rw-r--r--src/gui/sendfileform.cpp133
1 files changed, 133 insertions, 0 deletions
diff --git a/src/gui/sendfileform.cpp b/src/gui/sendfileform.cpp
new file mode 100644
index 0000000..e212579
--- /dev/null
+++ b/src/gui/sendfileform.cpp
@@ -0,0 +1,133 @@
+/*
+ Copyright (C) 2005-2009 Michel de Boer <michel@twinklephone.com>
+
+ 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#ifdef HAVE_KDE
+#include <kfiledialog.h>
+#endif
+
+#include "audits/memman.h"
+#include "gui.h"
+#include <QFile>
+#include <Q3FileDialog>
+#include "sendfileform.h"
+/*
+ * Constructs a SendFileForm as a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'.
+ *
+ * The dialog will by default be modeless, unless you set 'modal' to
+ * true to construct a modal dialog.
+ */
+SendFileForm::SendFileForm(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl)
+ : QDialog(parent, name, modal, fl)
+{
+ setupUi(this);
+
+ init();
+}
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+SendFileForm::~SendFileForm()
+{
+ destroy();
+ // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ * Sets the strings of the subwidgets using the current
+ * language.
+ */
+void SendFileForm::languageChange()
+{
+ retranslateUi(this);
+}
+
+
+void SendFileForm::init()
+{
+ setWindowFlags(windowFlags() | Qt::WDestructiveClose);
+ _chooseFileDialog = NULL;
+}
+
+void SendFileForm::destroy()
+{
+ // Auto destruct window
+ MEMMAN_DELETE(this);
+
+ if (_chooseFileDialog) {
+ MEMMAN_DELETE(_chooseFileDialog);
+ delete _chooseFileDialog;
+ }
+}
+
+/** Signal the selected information to an observer. */
+void SendFileForm::signalSelectedInfo()
+{
+ if (!QFile::exists(fileLineEdit->text())) {
+ ((t_gui *)ui)->cb_show_msg(this, tr("File does not exist.").ascii(), MSG_WARNING);
+ return;
+ }
+
+ emit selected(fileLineEdit->text(), subjectLineEdit->text());
+ accept();
+}
+
+/** Choose a file from a file dialog. */
+void SendFileForm::chooseFile()
+{
+#ifdef HAVE_KDE
+ KFileDialog *d = new KFileDialog(QString::null, QString::null, this, 0, true);
+ MEMMAN_NEW(d);
+
+ d->setOperationMode(KFileDialog::Other);
+ connect(d, SIGNAL(okClicked()), this, SLOT(setFilename()));
+#else
+ Q3FileDialog *d = new Q3FileDialog(QString::null, QString::null, this, 0, true);
+ MEMMAN_NEW(d);
+
+ connect(d, SIGNAL(fileSelected(const QString &)), this, SLOT(setFilename()));
+#endif
+ d->setCaption(tr("Send file..."));
+
+ if (_chooseFileDialog) {
+ MEMMAN_DELETE(_chooseFileDialog);
+ delete _chooseFileDialog;
+ }
+ _chooseFileDialog = d;
+
+ d->show();
+}
+
+/**
+ * Set the filename value.
+ * @param filename [in] The value to set.
+ */
+void SendFileForm::setFilename()
+{
+ QString filename;
+#ifdef HAVE_KDE
+ KFileDialog *d = dynamic_cast<KFileDialog *>(_chooseFileDialog);
+ filename = d->selectedFile();
+#else
+ Q3FileDialog *d = dynamic_cast<Q3FileDialog *>(_chooseFileDialog);
+ filename = d->selectedFile();
+#endif
+
+ fileLineEdit->setText(filename);
+}