diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-07-04 22:38:03 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-07-04 22:38:03 +0000 |
commit | dadc34655c3ab961b0b0b94a10eaaba710f0b5e8 (patch) | |
tree | 99e72842fe687baea16376a147619b6048d7e441 /kmymoney2/dialogs/kcsvprogressdlg.cpp | |
download | kmymoney-dadc34655c3ab961b0b0b94a10eaaba710f0b5e8.tar.gz kmymoney-dadc34655c3ab961b0b0b94a10eaaba710f0b5e8.zip |
Added kmymoney
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kmymoney@1239792 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kmymoney2/dialogs/kcsvprogressdlg.cpp')
-rw-r--r-- | kmymoney2/dialogs/kcsvprogressdlg.cpp | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/kmymoney2/dialogs/kcsvprogressdlg.cpp b/kmymoney2/dialogs/kcsvprogressdlg.cpp new file mode 100644 index 0000000..d8f85ed --- /dev/null +++ b/kmymoney2/dialogs/kcsvprogressdlg.cpp @@ -0,0 +1,252 @@ +/*************************************************************************** + kcsvprogressdlg.cpp - description + ------------------- + begin : Sun Jul 29 2001 + copyright : (C) 2000-2001 by Michael Edwardes + email : [email protected] + Javier Campos Morales <[email protected]> + Felix Rodriguez <[email protected]> + John C <[email protected]> + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ +#include <kglobal.h> +#include <klocale.h> +#if QT_VERSION > 300 +#include <kstandarddirs.h> +#else +#include <kstddirs.h> +#endif + +#include <qpixmap.h> +// ---------------------------------------------------------------------------- +// QT Includes +#include <qfile.h> +#include <qtextstream.h> +#include <qlabel.h> +#include <qpushbutton.h> +#include <qprogressbar.h> +#include <qlineedit.h> +#include <qgroupbox.h> + +// ---------------------------------------------------------------------------- +// KDE Includes +#include <kfiledialog.h> +#include <kglobal.h> +#include <klocale.h> +#include <kmessagebox.h> +#include <kconfig.h> + +// ---------------------------------------------------------------------------- +// Project Includes +#include "kcsvprogressdlg.h" +#include "../widgets/kmymoneydateinput.h" +#include "../kmymoneyutils.h" + +/** Simple constructor */ +KCsvProgressDlg::KCsvProgressDlg(int type, MyMoneyAccount *account, QWidget *parent, const char *name ) + : KCsvProgressDlgDecl(parent,name, true) +{ + m_nType = type; + if (m_nType==0) + { + m_kmymoneydateEnd->setEnabled(false); + m_kmymoneydateStart->setEnabled(false); + m_qbuttonRun->setText(i18n("&Import")); + } + else + m_qbuttonRun->setText(i18n("&Export")); + + m_mymoneyaccount = account; + + m_qbuttonOk->setText(i18n("C&lose")); + + readConfig(); + + connect(m_qbuttonBrowse, SIGNAL(clicked()), this, SLOT(slotBrowseClicked())); + connect(m_qbuttonRun, SIGNAL(clicked()), this, SLOT(slotRunClicked())); + connect(m_qlineeditFile, SIGNAL(textChanged(const QString&)), this, + SLOT(slotFileTextChanged(const QString&))); + connect(m_qbuttonOk, SIGNAL(clicked()), this, SLOT(accept())); +} + +/** Simple destructor */ +KCsvProgressDlg::~KCsvProgressDlg() +{ + writeConfig(); +} + +/** Perform the export process */ +void KCsvProgressDlg::performExport(void) +{ +/* + // Do some validation on the inputs. + if (m_qlineeditFile->text().isEmpty()) { + KMessageBox::information(this, i18n("Please enter the path to the CSV file"), i18n("Export CSV")); + m_qlineeditFile->setFocus(); + return; + } + + QString strFile = m_qlineeditFile->text(); + if(KMyMoneyUtils::appendCorrectFileExt(strFile, QString("csv"))) + m_qlineeditFile->setText(strFile); + + if (m_kmymoneydateEnd->getQDate() < m_kmymoneydateStart->getQDate()) { + KMessageBox::information(this, i18n("Please enter a start date lower than the end date.")); + return; + } + + QFile qfile(m_qlineeditFile->text()); + if (!qfile.open(IO_WriteOnly)) { + KMessageBox::error(this, i18n("Unable to open export file for writing.")); + return; + } + qfile.close(); + + m_qlabelAccount->setText(m_mymoneyaccount->name()); + m_qlabelTransaction->setText(QString("0") + i18n(" of ") + QString::number(m_mymoneyaccount->transactionCount())); + m_qprogressbar->setTotalSteps(m_mymoneyaccount->transactionCount()); + + // Make sure we have an account to operate on + if (m_mymoneyaccount) { + // Connect to the provided signals in MyMoneyAccount + // These signals will be emitted at appropriate times. + connect(m_mymoneyaccount, SIGNAL(signalProgressCount(int)), m_qprogressbar, SLOT(setTotalSteps(int))); + connect(m_mymoneyaccount, SIGNAL(signalProgress(int)), this, SLOT(slotSetProgress(int))); + + int nTransCount = 0; + + // Do the actual write + if (!m_mymoneyaccount->writeCSVFile(m_qlineeditFile->text(), m_kmymoneydateStart->getQDate(), + m_kmymoneydateEnd->getQDate(), nTransCount)) { + KMessageBox::error(this, i18n("Error occurred whilst exporting to csv file."), i18n("Export CSV")); + } + else { + QString qstringPrompt = i18n("Export finished successfully.\n\n"); + qstringPrompt += i18n("Number of transactions exported "); + qstringPrompt += QString::number(nTransCount); + qstringPrompt += "."; + KMessageBox::information(this, qstringPrompt, i18n("Export CSV")); + } + } +*/ +} + +/** perform the import process */ +void KCsvProgressDlg::performImport(void) +{ +/* + // Do some validation on the inputs. + if (m_qlineeditFile->text().isEmpty()) { + KMessageBox::information(this, i18n("Please enter the path to the CSV file"), i18n("Import CSV")); + m_qlineeditFile->setFocus(); + return; + } + + QFile qfile(m_qlineeditFile->text()); + if (!qfile.open(IO_ReadOnly)) { + KMessageBox::error(this, i18n("Unable to open import file for reading.")); + return; + } + qfile.close(); + + m_qlabelAccount->setText(m_mymoneyaccount->name()); + + // Make sure we have an account to operate on + if (m_mymoneyaccount) { + // Connect to the provided signals in MyMoneyAccount + // These signals will be emitted at appropriate times. + connect(m_mymoneyaccount, SIGNAL(signalProgressCount(int)), m_qprogressbar, SLOT(setTotalSteps(int))); + connect(m_mymoneyaccount, SIGNAL(signalProgress(int)), this, SLOT(slotSetProgress(int))); + + int nTransCount = 0; + + // Do the actual write + if (!m_mymoneyaccount->readCSVFile(m_qlineeditFile->text(), nTransCount)) { + KMessageBox::error(this, i18n("Error occurred whilst importing csv file."), i18n("Import CSV")); + } + else { + QString qstringPrompt = i18n("Import finished successfully.\n\n"); + qstringPrompt += i18n("Number of transactions imported "); + qstringPrompt += QString::number(nTransCount); + qstringPrompt += "."; + KMessageBox::information(this, qstringPrompt, i18n("Import CSV")); + } + } +*/ +} + +/** Called when the user clicks on the Browser button */ +void KCsvProgressDlg::slotBrowseClicked() +{ + QString newName = KFileDialog::getSaveFileName(QString::null,"*.CSV"); + if (!newName.isEmpty()) + { + m_qlineeditFile->setText(newName); + m_qbuttonRun->setEnabled(true); + } + else + m_qbuttonRun->setEnabled(false); +} + +/** Called when user clicks on the Run button */ +void KCsvProgressDlg::slotRunClicked() +{ + m_qgroupbox->setEnabled(true); + if (m_nType==0) + performImport(); + else + performExport(); +} + +/** Make sure the text input is ok */ +void KCsvProgressDlg::slotFileTextChanged(const QString& text) +{ + if (!text.isEmpty()) { + m_qlineeditFile->setText(text); + m_qbuttonRun->setEnabled(true); + } else + m_qbuttonRun->setEnabled(false); +} + +void KCsvProgressDlg::readConfig(void) +{ + KConfig *kconfig = KGlobal::config(); + kconfig->setGroup("Last Use Settings"); + m_kmymoneydateStart->setDate(kconfig->readDateTimeEntry("KCsvProgressDlg_StartDate").date()); + m_kmymoneydateEnd->setDate(kconfig->readDateTimeEntry("KCsvProgressDlg_EndDate").date()); + m_qlineeditFile->setText(kconfig->readEntry("KCsvProgressDlg_LastFile", "")); + if (m_qlineeditFile->text().length()>=1) + m_qbuttonRun->setEnabled(true); + else + m_qbuttonRun->setEnabled(false); +} + +void KCsvProgressDlg::writeConfig(void) +{ + KConfig *kconfig = KGlobal::config(); + kconfig->setGroup("Last Use Settings"); + kconfig->writeEntry("KCsvProgressDlg_LastFile", m_qlineeditFile->text()); + kconfig->writeEntry("KCsvProgressDlg_StartDate", QDateTime(m_kmymoneydateStart->date())); + kconfig->writeEntry("KCsvProgressDlg_EndDate", QDateTime(m_kmymoneydateEnd->date())); + kconfig->sync(); +} + +/** Update the progress bar, and update the transaction count indicator. */ +void KCsvProgressDlg::slotSetProgress(int progress) +{ + m_qprogressbar->setProgress(progress); + QString qstring = QString::number(progress); + qstring += i18n(" of "); + qstring += QString::number(m_qprogressbar->totalSteps()); + m_qlabelTransaction->setText(qstring); +} + +#include "kcsvprogressdlg.moc" |