/*************************************************************************** kcategoryreassigndlg.cpp ------------------- copyright : (C) 2007 by Thomas Baumgart author : Thomas Baumgart email : ipwizard@users.sourceforge.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. * * * ***************************************************************************/ // ---------------------------------------------------------------------------- // QT Includes // ---------------------------------------------------------------------------- // KDE Includes #include <kdialog.h> #include <tdelocale.h> #include <kstdguiitem.h> #include <kpushbutton.h> #include <tdemessagebox.h> // ---------------------------------------------------------------------------- // Project Includes #include "kcategoryreassigndlg.h" #include <kmymoney/mymoneyfile.h> #include <kmymoney/kmymoneycategory.h> #include <kmymoney/kmymoneyaccountselector.h> #include <kmymoney/kguiutils.h> KCategoryReassignDlg::KCategoryReassignDlg( TQWidget* parent, const char* name) : KCategoryReassignDlgDecl( parent, name) { buttonOk->setGuiItem(KStdGuiItem::ok()); buttonCancel->setGuiItem(KStdGuiItem::cancel()); kMandatoryFieldGroup* mandatory = new kMandatoryFieldGroup(TQT_TQOBJECT(this)); mandatory->add(m_category); mandatory->setOkButton(buttonOk); } KCategoryReassignDlg::~KCategoryReassignDlg() { } TQString KCategoryReassignDlg::show(const MyMoneyAccount& category) { if (category.id().isEmpty()) return TQString::null; // no payee available? nothing can be selected... AccountSet set; set.addAccountGroup(MyMoneyAccount::Income); set.addAccountGroup(MyMoneyAccount::Expense); set.load(m_category->selector()); // remove the category we are about to delete m_category->selector()->removeItem(category.id()); // make sure the available categories have the same currency TQStringList list; TQStringList::const_iterator it_a; m_category->selector()->itemList(list); for(it_a = list.begin(); it_a != list.end(); ++it_a) { MyMoneyAccount acc = MyMoneyFile::instance()->account(*it_a); if(acc.currencyId() != category.currencyId()) m_category->selector()->removeItem(*it_a); } // reload the list m_category->selector()->itemList(list); // if there is no category for reassignment left, we bail out if(list.isEmpty()) { KMessageBox::sorry(this, TQString("<qt>")+i18n("At least one transaction/schedule still references the category <b>%1</b>. However, at least one category with the same currency must exist so that the transactions/schedules can be reassigned.").arg(category.name())+TQString("</qt>")); return TQString::null; } // execute dialog and if aborted, return empty string if (this->exec() == TQDialog::Rejected) return TQString::null; // otherwise return index of selected payee return m_category->selectedItem(); } void KCategoryReassignDlg::accept(void) { // force update of payeeCombo buttonOk->setFocus(); if(m_category->selectedItem().isEmpty()) { KMessageBox::information(this, i18n("This dialog does not allow to create new categories. Please pick a category from the list."), i18n("Category creation")); } else { KCategoryReassignDlgDecl::accept(); } } #include "kcategoryreassigndlg.moc"