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/transactionform.h

226 lines
5.8 KiB

/***************************************************************************
transactionform.h
----------
begin : Sun May 14 2006
copyright : (C) 2006 by Thomas Baumgart
email : Thomas Baumgart <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 TRANSACTIONFORM_H
#define TRANSACTIONFORM_H
// ----------------------------------------------------------------------------
// QT Includes
#include <tqtable.h>
#include <tqvaluelist.h>
#include <tqvaluevector.h>
#include <tqpalette.h>
#include <tqwidgetlist.h>
#include <tqtabbar.h>
// ----------------------------------------------------------------------------
// KDE Includes
// ----------------------------------------------------------------------------
// Project Includes
#include <kmymoney/mymoneyaccount.h>
#include <kmymoney/mymoneyobject.h>
#include <kmymoney/register.h>
#include "../kmymoneysettings.h"
class MyMoneyObjectContainer;
namespace KMyMoneyTransactionForm {
/**
* @author Thomas Baumgart
*/
class TabBar : public TQTabBar
{
Q_OBJECT
public:
typedef enum {
SignalNormal = 0, // standard signal behaviour
SignalNever, // don't signal selection of a tab at all
SignalAlways // always signal selection of a tab
} SignalEmissionE;
TabBar(TQWidget* parent = 0, const char* name = 0);
virtual ~TabBar() {}
SignalEmissionE setSignalEmission(SignalEmissionE type);
void copyTabs(const TabBar* otabbar);
void addTab(TQTab* tab, int id);
void setIdentifier(TQTab* tab, int newId);
TQTab* tab(int id) const;
int currentTab(void) const;
public slots:
/**
* overridden for internal reasons, API not changed
*/
virtual void setCurrentTab( int );
/**
* overridden for internal reasons, API not changed
*/
virtual void setCurrentTab( TQTab * );
/**
* overridden for internal reasons, API not changed
*/
virtual void show(void);
protected slots:
void slotTabSelected(int id);
signals:
void tabSelected(int id);
private:
SignalEmissionE m_signalType;
/**
* maps our internal action ids to those used by
* qt3. Since it does not seem possible to tell
* qt3 to use our ids everywhere (in TQAccel) we
* need to know which is which
*/
TQMap<int, int> m_idMap;
};
typedef enum {
LabelColumn1 = 0,
ValueColumn1,
LabelColumn2,
ValueColumn2,
// insert new values above this line
MaxColumns
} Column;
/**
* @author Thomas Baumgart
*/
class TransactionForm : public TransactionEditorContainer
{
Q_OBJECT
public:
TransactionForm(TQWidget *parent = 0, const char *name = 0);
virtual ~TransactionForm() {}
/**
* Override the TQTable member function to avoid display of focus
*/
void paintFocus(TQPainter* /*p*/, const TQRect& /*cr*/ ) {}
TQSize tableSize(void) const;
TQSize sizeHint(void) const;
void adjustColumn(Column col);
void clear(void);
void paintCell(TQPainter* painter, int row, int col, const TQRect& r, bool selected, const TQColorGroup& cg);
void resize(int col);
void arrangeEditWidgets(TQMap<TQString, TQWidget*>& editWidgets, KMyMoneyRegister::Transaction* t);
void removeEditWidgets(TQMap<TQString, TQWidget*>& editWidgets);
void tabOrder(TQWidgetList& tabOrderWidgets, KMyMoneyRegister::Transaction* t) const;
/**
* reimplemented to prevent normal cell selection behavior
*/
void setCurrentCell(int, int) {}
TabBar* tabBar(TQWidget* parent = 0);
void setupForm(const MyMoneyAccount& acc);
void enableTabBar(bool b);
protected:
/**
* reimplemented to support TQWidget::WState_BlockUpdates
*/
void drawContents(TQPainter *p, int cx, int cy, int cw, int ch);
/**
* reimplemented to prevent normal mouse press behavior
*/
void contentsMousePressEvent(TQMouseEvent* ev) { ev->ignore(); }
/**
* reimplemented to prevent normal mouse move behavior
*/
void contentsMouseMoveEvent(TQMouseEvent* ev) { ev->ignore(); }
/**
* reimplemented to prevent normal mouse release behavior
*/
void contentsMouseReleaseEvent(TQMouseEvent* ev) { ev->ignore(); }
/**
* reimplemented to prevent normal mouse double click behavior
*/
void contentsMouseDoubleClickEvent(TQMouseEvent* ev) { ev->ignore(); }
/**
* reimplemented to prevent normal keyboard behavior
*/
void keyPressEvent(TQKeyEvent* ev) { ev->ignore(); }
/**
* Override logic and use standard TQFrame behaviour
*/
bool focusNextPrevChild(bool next);
public slots:
void slotSetTransaction(KMyMoneyRegister::Transaction* item);
protected slots:
void resize(void);
/**
* Helper method to convert @a int into @a KMyMoneyRegister::Action
*/
void slotActionSelected(int);
signals:
/**
* This signal is emitted when a user selects a tab. @a id
* contains the tab's id (e.g. KMyMoneyRegister::ActionDeposit)
*/
void newTransaction(KMyMoneyRegister::Action id);
protected:
KMyMoneyRegister::Transaction* m_transaction;
TQColorGroup m_cellColorGroup;
TabBar* m_tabBar;
};
} // namespace
#endif
// vim:cin:si:ai:et:ts=2:sw=2: