summaryrefslogtreecommitdiffstats
path: root/kftpgrabber/src/widgets/verifier.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kftpgrabber/src/widgets/verifier.cpp')
-rw-r--r--kftpgrabber/src/widgets/verifier.cpp148
1 files changed, 148 insertions, 0 deletions
diff --git a/kftpgrabber/src/widgets/verifier.cpp b/kftpgrabber/src/widgets/verifier.cpp
new file mode 100644
index 0000000..1f6c9d9
--- /dev/null
+++ b/kftpgrabber/src/widgets/verifier.cpp
@@ -0,0 +1,148 @@
+/*
+ * This file is part of the KFTPGrabber project
+ *
+ * Copyright (C) 2003-2005 by the KFTPGrabber developers
+ * Copyright (C) 2003-2005 Jernej Kos <kostko@jweb-network.net>
+ *
+ * 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
+ * is provided AS IS, WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, and
+ * NON-INFRINGEMENT. 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 Steet, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * In addition, as a special exception, the copyright holders give
+ * permission to link the code of portions of this program with the
+ * OpenSSL library under certain conditions as described in each
+ * individual source file, and distribute linked combinations
+ * including the two.
+ *
+ * You must obey the GNU General Public License in all respects
+ * for all of the code used other than OpenSSL. If you modify
+ * file(s) with this exception, you may extend this exception to your
+ * version of the file(s), but you are not obligated to do so. If you
+ * do not wish to do so, delete this exception statement from your
+ * version. If you delete this exception statement from all source
+ * files in the program, then also delete it here.
+ */
+
+#include "verifier.h"
+#include "misc.h"
+#include "listviewitem.h"
+
+#include <klocale.h>
+#include <klistview.h>
+#include <kmessagebox.h>
+#include <kprogress.h>
+#include <kurl.h>
+
+#include <qheader.h>
+#include <qlabel.h>
+
+// UI layouts
+#include "ui/checksum_verifier.h"
+
+using namespace KFTPGrabberBase;
+
+namespace KFTPWidgets {
+
+Verifier::Verifier(QWidget *parent, const char *name)
+ : KDialogBase(parent, name, true, i18n("Checksum verifier"), Cancel, Cancel, true),
+ m_verifier(0)
+{
+ m_layout = new VerifierLayout(this);
+ setMainWidget(m_layout);
+
+ // Create columns
+ m_layout->fileList->addColumn(i18n("Filename"));
+ m_layout->fileList->addColumn(i18n("Checksum"), 100);
+
+ m_layout->fileList->setAllColumnsShowFocus(true);
+ m_layout->fileList->header()->setStretchEnabled(true, 0);
+}
+
+Verifier::~Verifier()
+{
+ if (m_verifier)
+ delete m_verifier;
+}
+
+void Verifier::setFile(const QString &filename)
+{
+ // Create the verifier
+ m_verifier = new KFTPCore::ChecksumVerifier(filename);
+ m_layout->currentFile->setText(KURL(filename).fileName());
+
+ connect(m_verifier, SIGNAL(fileList(QValueList<QPair<QString, QString> >)), this, SLOT(slotHaveFileList(QValueList<QPair<QString, QString> >)));
+ connect(m_verifier, SIGNAL(fileDone(const QString&, KFTPCore::ChecksumVerifier::Result)), this, SLOT(slotFileDone(const QString&, KFTPCore::ChecksumVerifier::Result)));
+ connect(m_verifier, SIGNAL(progress(int)), this, SLOT(slotProgress(int)));
+ connect(m_verifier, SIGNAL(error()), this, SLOT(slotError()));
+
+ // Start the verification
+ m_verifier->verify();
+}
+
+void Verifier::slotHaveFileList(QValueList<QPair<QString, QString> > list)
+{
+ for (QValueList<QPair<QString, QString> >::iterator i = list.begin(); i != list.end(); ++i) {
+ KFTPWidgets::ListViewItem *item = new KFTPWidgets::ListViewItem(m_layout->fileList);
+ item->setText(0, (*i).first);
+ item->setText(1, (*i).second);
+ }
+}
+
+void Verifier::slotFileDone(const QString &filename, KFTPCore::ChecksumVerifier::Result result)
+{
+ KFTPWidgets::ListViewItem *item = static_cast<KFTPWidgets::ListViewItem*>(m_layout->fileList->findItem(filename, 0));
+
+ if (item) {
+ switch (result) {
+ case KFTPCore::ChecksumVerifier::Ok: {
+ item->setPixmap(0, loadSmallPixmap("ok"));
+ item->setTextColor(0, QColor(0, 200, 0));
+ item->setTextColor(1, QColor(0, 200, 0));
+ break;
+ }
+ case KFTPCore::ChecksumVerifier::NotFound: {
+ item->setPixmap(0, loadSmallPixmap("error"));
+ item->setTextColor(0, QColor(128, 128, 128));
+ item->setTextColor(1, QColor(128, 128, 128));
+ break;
+ }
+ case KFTPCore::ChecksumVerifier::Error: {
+ item->setPixmap(0, loadSmallPixmap("error"));
+ item->setTextColor(0, QColor(255, 0, 0));
+ item->setTextColor(1, QColor(255, 0, 0));
+ break;
+ }
+ }
+
+ m_layout->fileList->ensureItemVisible(item);
+ }
+}
+
+void Verifier::slotProgress(int percent)
+{
+ m_layout->checkProgress->setProgress(percent);
+
+ if (percent == 100) {
+ KMessageBox::information(0, i18n("Verification complete!"));
+ }
+}
+
+void Verifier::slotError()
+{
+ KMessageBox::error(0, i18n("Unable to open checksum file or file has an incorrect format!"));
+ close();
+}
+
+}
+#include "verifier.moc"