|
|
|
/***************************************************************************
|
|
|
|
kmymoneycombo.h - description
|
|
|
|
-------------------
|
|
|
|
begin : Mon Mar 12 2007
|
|
|
|
copyright : (C) 2007 by 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. *
|
|
|
|
* *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#ifndef KMYMONEYCOMBO_H
|
|
|
|
#define KMYMONEYCOMBO_H
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// QT Includes
|
|
|
|
|
|
|
|
#include <tqtimer.h>
|
|
|
|
#include <tqmutex.h>
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// KDE Includes
|
|
|
|
|
|
|
|
#include <kcombobox.h>
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// Project Includes
|
|
|
|
|
|
|
|
#include <kmymoney/mymoneyutils.h>
|
|
|
|
#include <kmymoney/mymoneysplit.h>
|
|
|
|
#include <kmymoney/register.h>
|
|
|
|
#include <kmymoney/mymoneyaccount.h>
|
|
|
|
#include <kmymoney/transaction.h>
|
|
|
|
#include <kmymoney/mymoneypayee.h>
|
|
|
|
#include <kmymoney/mymoneytransactionfilter.h>
|
|
|
|
#include <kmymoney/mymoneyscheduled.h>
|
|
|
|
|
|
|
|
class kMyMoneyCompletion;
|
|
|
|
class KMyMoneySelector;
|
|
|
|
class kMyMoneyLineEdit;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Thomas Baumgart
|
|
|
|
*/
|
|
|
|
class KMyMoneyCombo : public KComboBox
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMyMoneyCombo(TQWidget *w = 0, const char *name=0);
|
|
|
|
KMyMoneyCombo(bool rw, TQWidget *w = 0, const char *name=0);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method is used to turn on/off the hint display and to setup the appropriate text.
|
|
|
|
* The hint text is shown in a lighter color if the field is otherwise empty and does
|
|
|
|
* not have the keyboard focus.
|
|
|
|
*
|
|
|
|
* @param hint reference to text. If @a hint is empty, no hint will be shown.
|
|
|
|
*/
|
|
|
|
void setHint(const TQString& hint) const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* overridden for internal reasons.
|
|
|
|
*
|
|
|
|
* @param editable make combo box editable (@a true) or selectable only (@a false).
|
|
|
|
*/
|
|
|
|
void setEditable(bool editable);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method returns a pointer to the completion object of the combo box.
|
|
|
|
*
|
|
|
|
* @return pointer to kMyMoneyCompletion or derivative.
|
|
|
|
*/
|
|
|
|
kMyMoneyCompletion* completion(void) const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method returns a pointer to the completion object's selector.
|
|
|
|
*
|
|
|
|
* @return pointer to KMyMoneySelector or derivative.
|
|
|
|
*/
|
|
|
|
KMyMoneySelector* selector(void) const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method returns the ids of the currently selected items
|
|
|
|
*/
|
|
|
|
void selectedItems(TQStringList& list) const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method returns the id of the first selected item.
|
|
|
|
* Usage makes usually only sense when the selection mode
|
|
|
|
* of the associated KMyMoneySelector is TQListView::Single.
|
|
|
|
*
|
|
|
|
* @sa KMyMoneySelector::setSelectionMode()
|
|
|
|
*
|
|
|
|
* @param id reference to TQString containing the id. If no item
|
|
|
|
* is selected id will be empty.
|
|
|
|
*/
|
|
|
|
void selectedItem(TQString& id) const KDE_DEPRECATED;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method returns the id of the first selected item.
|
|
|
|
* Usage makes usually only sense when the selection mode
|
|
|
|
* of the associated KMyMoneySelector is TQListView::Single.
|
|
|
|
*
|
|
|
|
* @sa KMyMoneySelector::setSelectionMode()
|
|
|
|
*
|
|
|
|
* @return reference to TQString containing the id. If no item
|
|
|
|
* is selected the TQString will be empty.
|
|
|
|
*/
|
|
|
|
const TQString& selectedItem(void) const { return m_id; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method selects the item with the respective @a id.
|
|
|
|
*
|
|
|
|
* @param id reference to TQString containing the id
|
|
|
|
*/
|
|
|
|
void setSelectedItem(const TQString& id);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method checks if the position @a pos is part of the
|
|
|
|
* area of the drop down arrow.
|
|
|
|
*/
|
|
|
|
bool isInArrowArea(const TQPoint& pos) const;
|
|
|
|
|
|
|
|
void setSuppressObjectCreation(bool suppress) { m_canCreateObjects = !suppress; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* overridden for internal reasons, no API change
|
|
|
|
*/
|
|
|
|
void setCurrentText(const TQString& txt = TQString()) { KComboBox::setCurrentText(txt); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* overridden to set the background color of the lineedit as well
|
|
|
|
*/
|
|
|
|
void setPaletteBackgroundColor(const TQColor& color);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Overridden to support our own completion box
|
|
|
|
*/
|
|
|
|
TQSize sizeHint() const;
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
virtual void slotItemSelected(const TQString& id);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/**
|
|
|
|
* reimplemented to support our own popup widget
|
|
|
|
*/
|
|
|
|
void mousePressEvent(TQMouseEvent *e);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* reimplemented to support our own popup widget
|
|
|
|
*/
|
|
|
|
void keyPressEvent(TQKeyEvent *e);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* reimplemented to support our own popup widget
|
|
|
|
*/
|
|
|
|
void paintEvent(TQPaintEvent *);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* reimplemented to support detection of new items
|
|
|
|
*/
|
|
|
|
void focusOutEvent(TQFocusEvent* );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* set the widgets text area based on the item with the given @a id.
|
|
|
|
*/
|
|
|
|
virtual void setCurrentTextById(const TQString& id);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Overridden for internal reasons, no API change
|
|
|
|
*/
|
|
|
|
void connectNotify(const char* signal);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Overridden for internal reasons, no API change
|
|
|
|
*/
|
|
|
|
void disconnectNotify(const char* signal);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/**
|
|
|
|
* This member keeps a pointer to the object's completion object
|
|
|
|
*/
|
|
|
|
kMyMoneyCompletion* m_completion;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Use our own line edit to provide hint functionality
|
|
|
|
*/
|
|
|
|
kMyMoneyLineEdit* m_edit;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The currently selected item
|
|
|
|
*/
|
|
|
|
TQString m_id;
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void itemSelected(const TQString& id);
|
|
|
|
void objectCreation(bool);
|
|
|
|
void createItem(const TQString&, TQString&);
|
|
|
|
|
|
|
|
private:
|
|
|
|
TQTimer m_timer;
|
|
|
|
TQMutex m_focusMutex;
|
|
|
|
/**
|
|
|
|
* Flag to control object creation. Use setSuppressObjectCreation()
|
|
|
|
* to modify it's setting. Defaults to @a false.
|
|
|
|
*/
|
|
|
|
bool m_canCreateObjects;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Flag to check whether a focusOutEvent processing is underway or not
|
|
|
|
*/
|
|
|
|
bool m_inFocusOutEvent;
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Thomas Baumgart
|
|
|
|
* This class implements a combo box with the possible states for
|
|
|
|
* reconciliation.
|
|
|
|
*/
|
|
|
|
class KMyMoneyReconcileCombo : public KMyMoneyCombo
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMyMoneyReconcileCombo(TQWidget *w = 0, const char *name=0);
|
|
|
|
|
|
|
|
void setState(MyMoneySplit::reconcileFlagE state);
|
|
|
|
MyMoneySplit::reconcileFlagE state(void) const;
|
|
|
|
void removeDontCare(void);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void slotSetState(const TQString&);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Thomas Baumgart
|
|
|
|
* This class implements a combo box with the possible states for
|
|
|
|
* actions (Deposit, Withdrawal, etc.).
|
|
|
|
*
|
|
|
|
* @deprecated
|
|
|
|
*/
|
|
|
|
class KMyMoneyComboAction : public KMyMoneyCombo
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMyMoneyComboAction(TQWidget *w = 0, const char *name=0);
|
|
|
|
|
|
|
|
void setAction(int state);
|
|
|
|
int action(void) const;
|
|
|
|
void protectItem(int id, bool protect);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void slotSetAction(const TQString&);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void actionSelected(int);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Thomas Baumgart
|
|
|
|
* This class implements a combo box with the possible states for
|
|
|
|
* actions (Deposit, Withdrawal, etc.).
|
|
|
|
*/
|
|
|
|
class KMyMoneyCashFlowCombo : public KMyMoneyCombo
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Create a combo box that contains the entries "Pay to", "From" and
|
|
|
|
* " " for don't care.
|
|
|
|
*/
|
|
|
|
KMyMoneyCashFlowCombo(TQWidget *w = 0, const char *name=0, MyMoneyAccount::accountTypeE type = MyMoneyAccount::Asset);
|
|
|
|
|
|
|
|
void setDirection(KMyMoneyRegister::CashFlowDirection dir);
|
|
|
|
KMyMoneyRegister::CashFlowDirection direction(void) const { return m_dir; }
|
|
|
|
void removeDontCare(void);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void slotSetDirection(const TQString& id);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void directionSelected(KMyMoneyRegister::CashFlowDirection);
|
|
|
|
|
|
|
|
private:
|
|
|
|
KMyMoneyRegister::CashFlowDirection m_dir;
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Thomas Baumgart
|
|
|
|
* This class implements a combo box with the possible activities
|
|
|
|
* for investment transactions (buy, sell, dividend, etc.)
|
|
|
|
*/
|
|
|
|
class KMyMoneyActivityCombo : public KMyMoneyCombo
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Create a combo box that contains the entries "Buy", "Sell" etc.
|
|
|
|
*/
|
|
|
|
KMyMoneyActivityCombo(TQWidget *w = 0, const char *name=0);
|
|
|
|
|
|
|
|
void setActivity(MyMoneySplit::investTransactionTypeE activity);
|
|
|
|
MyMoneySplit::investTransactionTypeE activity(void) const { return m_activity; }
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void slotSetActivity(const TQString& id);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void activitySelected(MyMoneySplit::investTransactionTypeE);
|
|
|
|
|
|
|
|
private:
|
|
|
|
MyMoneySplit::investTransactionTypeE m_activity;
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This class implements a text based payee selector.
|
|
|
|
* When initially used, the widget has the functionality of a KComboBox object.
|
|
|
|
* Whenever a key is pressed, the set of loaded payees is searched for
|
|
|
|
* payees names which match the currently entered text.
|
|
|
|
*
|
|
|
|
* If any match is found a list selection box is opened and the user can use
|
|
|
|
* the up/down, page-up/page-down keys or the mouse to navigate in the list. If
|
|
|
|
* a payee is selected, the selection box is closed. Other key-strokes are
|
|
|
|
* directed to the parent object to manipulate the text. The visible contents of
|
|
|
|
* the selection box is updated with every key-stroke.
|
|
|
|
*
|
|
|
|
* This object is a replacement of the kMyMoneyPayee object and should be used
|
|
|
|
* for new code.
|
|
|
|
*
|
|
|
|
* @author Thomas Baumgart
|
|
|
|
*/
|
|
|
|
class KMyMoneyPayeeCombo : public KMyMoneyCombo
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMyMoneyPayeeCombo(TQWidget* parent = 0, const char* name = 0);
|
|
|
|
|
|
|
|
void loadPayees(const TQValueList<MyMoneyPayee>& list);
|
|
|
|
};
|
|
|
|
|
|
|
|
class KMyMoneyGeneralCombo : public KComboBox
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMyMoneyGeneralCombo(TQWidget* parent = 0, const char* name = 0);
|
|
|
|
virtual ~KMyMoneyGeneralCombo();
|
|
|
|
|
|
|
|
void insertItem(const TQString& txt, int id, int idx = -1);
|
|
|
|
|
|
|
|
void setItem(int id) KDE_DEPRECATED; // replace with setCurrentItem(id)
|
|
|
|
int item(void) const KDE_DEPRECATED; // replace with currentItem()
|
|
|
|
|
|
|
|
void setCurrentItem(int id);
|
|
|
|
int currentItem(void) const;
|
|
|
|
|
|
|
|
void removeItem(int id);
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
void clear(void);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void itemSelected(int id);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
// prevent the caller to use the standard KComboBox insertItem function with a default idx
|
|
|
|
void insertItem(const TQString&);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void slotChangeItem(int idx);
|
|
|
|
|
|
|
|
private:
|
|
|
|
/// \internal d-pointer class.
|
|
|
|
class Private;
|
|
|
|
/// \internal d-pointer instance.
|
|
|
|
Private* const d;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This class implements a time period selector
|
|
|
|
* @author Thomas Baumgart
|
|
|
|
*/
|
|
|
|
class KMyMoneyPeriodCombo : public KMyMoneyGeneralCombo
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMyMoneyPeriodCombo(TQWidget* parent = 0, const char* name = 0);
|
|
|
|
|
|
|
|
MyMoneyTransactionFilter::dateOptionE currentItem(void) const;
|
|
|
|
void setCurrentItem(MyMoneyTransactionFilter::dateOptionE id);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This function returns the actual start date for the given
|
|
|
|
* period definition given by @p id. For user defined periods
|
|
|
|
* the returned value is TQDate()
|
|
|
|
*/
|
|
|
|
static TQDate start(MyMoneyTransactionFilter::dateOptionE id);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This function returns the actual end date for the given
|
|
|
|
* period definition given by @p id. For user defined periods
|
|
|
|
* the returned value is TQDate()
|
|
|
|
*/
|
|
|
|
static TQDate end(MyMoneyTransactionFilter::dateOptionE id);
|
|
|
|
|
|
|
|
// static void dates(TQDate& start, TQDate& end, MyMoneyTransactionFilter::dateOptionE id);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This class implements an occurence selector
|
|
|
|
* as a parent class for both OccurencePeriod and Frequency combos
|
|
|
|
*
|
|
|
|
* @author Colin Wright
|
|
|
|
*/
|
|
|
|
class KMyMoneyOccurenceCombo : public KMyMoneyGeneralCombo
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMyMoneyOccurenceCombo(TQWidget* parent = 0, const char* name = 0);
|
|
|
|
|
|
|
|
MyMoneySchedule::occurenceE currentItem(void) const;
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This class implements an occurence period selector
|
|
|
|
*
|
|
|
|
* @author Colin Wright
|
|
|
|
*/
|
|
|
|
class KMyMoneyOccurencePeriodCombo : public KMyMoneyOccurenceCombo
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMyMoneyOccurencePeriodCombo(TQWidget* parent = 0, const char* name = 0);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This class implements a payment frequency selector
|
|
|
|
* @author Thomas Baumgart
|
|
|
|
*/
|
|
|
|
class KMyMoneyFrequencyCombo : public KMyMoneyOccurenceCombo
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMyMoneyFrequencyCombo(TQWidget* parent = 0, const char* name = 0);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method returns the number of events for the selected payment
|
|
|
|
* frequency (eg for yearly the return value is 1 and for monthly it
|
|
|
|
* is 12). In case, the frequency cannot be converted (once, every other year, etc.)
|
|
|
|
* the method returns 0.
|
|
|
|
*/
|
|
|
|
int eventsPerYear(void) const;
|
|
|
|
/**
|
|
|
|
* This method returns the number of days between two events of
|
|
|
|
* the selected frequency. The return value for months is based
|
|
|
|
* on 30 days and the year is 360 days long.
|
|
|
|
*/
|
|
|
|
int daysBetweenEvents(void) const;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|