summaryrefslogtreecommitdiffstats
path: root/krecipes/src/widgets/conversiontable.h
blob: 0c5191cca22635968e06426ad251e56f4cb727ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/***************************************************************************
*   Copyright (C) 2003-2004 by                                            *
*   Unai Garro (ugarro@users.sourceforge.net)                             *
*   Jason Kivlighn (jkivlighn@gmail.com)                                  *
*                                                                         *
*   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 CONVERSIONTABLE_H
#define CONVERSIONTABLE_H
#include <ntqstring.h>
#include <ntqtable.h>
#include <ntqobject.h>

#include "datablocks/unitratio.h"
#include "datablocks/elementlist.h"
#include "datablocks/unit.h"

/**
@author Unai Garro
*/


class ConversionTable: public TQTable
{
	Q_OBJECT
public:

	ConversionTable( TQWidget* parent, int maxrows, int maxcols );
	~ConversionTable();
	void createNewItem( int r, int c, double amount );
	void setUnitIDs( const IDList &idList );
	void setRatio( int ingID1, int ingID2, double ratio );
	void setRatio( const UnitRatio &r )
	{
		setRatio( r.uID1, r.uID2, r.ratio );
	}
	int getUnitID( int rc );
	TQString text( int r, int c ) const; //Reimplement, otherwise it won't work this way
	void resize( int r, int c );
	void clear( void );
private:

	//Internal Variables
	double editBoxValue;
	TQIntDict<TQTableItem> items;
	TQIntDict<TQWidget> widgets;
	IDList unitIDs; // unit ID list to know the units by ID, not name
	//Internal Methods
	void resizeData( int )
	{}
	;
	TQTableItem *item( int r, int c ) const;
	void setItem( int r, int c, TQTableItem *i );
	void clearCell( int r, int c );
	void takeItem( TQTableItem *item );
	void insertWidget( int r, int c, TQWidget *w );
	TQWidget *cellWidget( int r, int c ) const;
	void clearCellWidget( int r, int c );
	void initTable();
	void swapRows( int, int, bool );
	void swapColumns( int, int, bool );
	void swapCells( int, int, int, int );
protected:
	TQWidget* beginEdit ( int row, int col, bool replace );

private slots:
	void repaintCell( int r, int c );

	void unitRemoved( int );
	void unitCreated( const Unit& );
signals:
	void ratioChanged( int row, int col, double value );
	void ratioRemoved( int row, int col );
};

class ConversionTableItem: public TQObject, public TQTableItem
{
	Q_OBJECT
public:
	ConversionTableItem( TQTable *t, EditType et );
	TQWidget *createEditor() const;
	void setContentFromEditor( TQWidget *w );
	void setText( const TQString &s );
	void paint( TQPainter *p, const TQColorGroup &cg, const TQRect &cr, bool selected );
	void setTextAndSave( const TQString &s );
	int alignment() const
	{
		return TQt::AlignRight;
	}
signals:
	void ratioChanged( int row, int col, double value );
	void ratioRemoved( int row, int col );
	void signalRepaintCell( int r, int c );

};


#endif