You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kmymoney/kmymoney2/widgets/kmymoneyaccountcompletion.cpp

111 lines
3.9 KiB

/***************************************************************************
kmymoneyaccountcompletion.cpp - description
-------------------
begin : Mon Apr 26 2004
copyright : (C) 2000-2004 by Michael Edwardes
email : mte@users.sourceforge.net
Javier Campos Morales <javi_c@users.sourceforge.net>
Felix Rodriguez <frodriguez@users.sourceforge.net>
John C <thetacoturtle@users.sourceforge.net>
Thomas Baumgart <ipwizard@users.sourceforge.net>
Kevin Tambascio <ktambascio@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. *
* *
***************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
// ----------------------------------------------------------------------------
// TQt Includes
#include <tqapplication.h>
#include <tqregexp.h>
// ----------------------------------------------------------------------------
// TDE Includes
#include <tdelistview.h>
// ----------------------------------------------------------------------------
// Project Includes
#include "kmymoneyaccountcompletion.h"
#include <kmymoney/mymoneyfile.h>
kMyMoneyAccountCompletion::kMyMoneyAccountCompletion(TQWidget *parent, const char *name ) :
kMyMoneyCompletion(parent, name)
{
delete m_selector;
m_selector = new kMyMoneyAccountSelector(this, 0, 0, false);
m_selector->listView()->setFocusProxy(this);
#ifndef KMM_DESIGNER
// Default is to show all accounts
// FIXME We should leave this also to the caller
AccountSet set;
set.addAccountGroup(MyMoneyAccount::Asset);
set.addAccountGroup(MyMoneyAccount::Liability);
set.addAccountGroup(MyMoneyAccount::Income);
set.addAccountGroup(MyMoneyAccount::Expense);
set.load(selector());
#endif
connectSignals(m_selector, m_selector->listView());
}
kMyMoneyAccountCompletion::~kMyMoneyAccountCompletion()
{
}
void kMyMoneyAccountCompletion::slotMakeCompletion(const TQString& txt)
{
// if(txt.isEmpty() || txt.length() == 0)
// return;
int cnt = 0;
if(txt.contains(MyMoneyFile::AccountSeperator) == 0) {
m_lastCompletion = TQRegExp(TQRegExp::escape(txt.stripWhiteSpace()), false);
cnt = selector()->slotMakeCompletion(m_lastCompletion);
} else {
TQStringList parts = TQStringList::split(MyMoneyFile::AccountSeperator, txt);
TQString pattern("^");
TQStringList::iterator it;
for(it = parts.begin(); it != parts.end(); ++it) {
if(pattern.length() > 1)
pattern += MyMoneyFile::AccountSeperator;
pattern += TQRegExp::escape(TQString(*it).stripWhiteSpace()) + ".*";
}
pattern += "$";
m_lastCompletion = TQRegExp(pattern, false);
cnt = selector()->slotMakeCompletion(m_lastCompletion);
// if we don't have a match, we try it again, but this time
// we add a wildcard for the top level
if(cnt == 0) {
pattern = pattern.insert(1, TQString(".*")+MyMoneyFile::AccountSeperator);
m_lastCompletion = TQRegExp(pattern, false);
cnt = selector()->slotMakeCompletion(m_lastCompletion);
}
}
if(m_parent && m_parent->isVisible() && !isVisible() && cnt)
show(false);
else {
if(cnt != 0) {
adjustSize();
} else {
hide();
}
}
}
#include "kmymoneyaccountcompletion.moc"