summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-write/qcomplextext.cpp3
-rw-r--r--noncore/apps/opie-write/qrichtext.cpp15
-rw-r--r--noncore/apps/opie-write/qstylesheet.cpp2
-rw-r--r--noncore/apps/opie-write/qtextedit.cpp20
-rw-r--r--noncore/apps/oxygen/calcdlgui.cpp1
-rw-r--r--noncore/apps/oxygen/dataTable.cpp3
-rw-r--r--noncore/apps/oxygen/datawidgetui.cpp5
-rw-r--r--noncore/apps/oxygen/kmolcalc.cpp3
-rw-r--r--noncore/apps/oxygen/oxyframe.cpp2
-rw-r--r--noncore/apps/oxygen/oxygen.cpp2
-rw-r--r--noncore/apps/oxygen/psewidget.cpp2
-rwxr-xr-xnoncore/apps/qashmoney/account.cpp2
-rwxr-xr-xnoncore/apps/qashmoney/accountdisplay.cpp2
-rwxr-xr-xnoncore/apps/qashmoney/budgetdisplay.cpp3
-rwxr-xr-xnoncore/apps/qashmoney/newaccount.cpp3
-rwxr-xr-xnoncore/apps/qashmoney/newtransaction.cpp2
-rwxr-xr-xnoncore/apps/qashmoney/preferencedialogs.cpp1
-rwxr-xr-xnoncore/apps/qashmoney/transactiondisplay.cpp3
-rwxr-xr-xnoncore/apps/qashmoney/transferdialog.cpp2
-rw-r--r--noncore/apps/tableviewer/tableviewer.cpp1
20 files changed, 0 insertions, 77 deletions
diff --git a/noncore/apps/opie-write/qcomplextext.cpp b/noncore/apps/opie-write/qcomplextext.cpp
index e8b94da..473f184 100644
--- a/noncore/apps/opie-write/qcomplextext.cpp
+++ b/noncore/apps/opie-write/qcomplextext.cpp
@@ -1,149 +1,146 @@
1/**************************************************************************** 1/****************************************************************************
2** $Id$ 2** $Id$
3** 3**
4** Implementation of some internal classes 4** Implementation of some internal classes
5** 5**
6** Created : 6** Created :
7** 7**
8** Copyright (C) 2001 Trolltech AS. All rights reserved. 8** Copyright (C) 2001 Trolltech AS. All rights reserved.
9** 9**
10** This file is part of the kernel module of the Qt GUI Toolkit. 10** This file is part of the kernel module of the Qt GUI Toolkit.
11** 11**
12** This file may be distributed under the terms of the Q Public License 12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file 13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file. 14** LICENSE.QPL included in the packaging of this file.
15** 15**
16** This file may be distributed and/or modified under the terms of the 16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software 17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the 18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file. 19** packaging of this file.
20** 20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition 21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License 22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software. 23** Agreement provided with the Software.
24** 24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27** 27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for 28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements. 29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information. 30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information. 31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32** 32**
33** Contact info@trolltech.com if any conditions of this licensing are 33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you. 34** not clear to you.
35** 35**
36**********************************************************************/ 36**********************************************************************/
37 37
38#include "qcomplextext_p.h"
39 38
40#include "qrichtext_p.h" 39#include "qrichtext_p.h"
41#include "qfontmetrics.h"
42#include "qrect.h"
43 40
44#include <stdlib.h> 41#include <stdlib.h>
45 42
46using namespace Qt3; 43using namespace Qt3;
47 44
48// ----------------------------------------------------- 45// -----------------------------------------------------
49 46
50/* a small helper class used internally to resolve Bidi embedding levels. 47/* a small helper class used internally to resolve Bidi embedding levels.
51 Each line of text caches the embedding level at the start of the line for faster 48 Each line of text caches the embedding level at the start of the line for faster
52 relayouting 49 relayouting
53*/ 50*/
54QBidiContext::QBidiContext( uchar l, QChar::Direction e, QBidiContext *p, bool o ) 51QBidiContext::QBidiContext( uchar l, QChar::Direction e, QBidiContext *p, bool o )
55 : level(l) , override(o), dir(e) 52 : level(l) , override(o), dir(e)
56{ 53{
57 if ( p ) 54 if ( p )
58 p->ref(); 55 p->ref();
59 parent = p; 56 parent = p;
60 count = 0; 57 count = 0;
61} 58}
62 59
63QBidiContext::~QBidiContext() 60QBidiContext::~QBidiContext()
64{ 61{
65 if( parent && parent->deref() ) 62 if( parent && parent->deref() )
66 delete parent; 63 delete parent;
67} 64}
68 65
69/* 66/*
70 Arabic shaping obeys a number of rules according to the joining classes (see Unicode book, section on 67 Arabic shaping obeys a number of rules according to the joining classes (see Unicode book, section on
71 arabic). 68 arabic).
72 69
73 Each unicode char has a joining class (right, dual (left&right), center (joincausing) or transparent). 70 Each unicode char has a joining class (right, dual (left&right), center (joincausing) or transparent).
74 transparent joining is not encoded in QChar::joining(), but applies to all combining marks and format marks. 71 transparent joining is not encoded in QChar::joining(), but applies to all combining marks and format marks.
75 72
76 Right join-causing: dual + center 73 Right join-causing: dual + center
77 Left join-causing: dual + right + center 74 Left join-causing: dual + right + center
78 75
79 Rules are as follows (for a string already in visual order, as we have it here): 76 Rules are as follows (for a string already in visual order, as we have it here):
80 77
81 R1 Transparent characters do not affect joining behaviour. 78 R1 Transparent characters do not affect joining behaviour.
82 R2 A right joining character, that has a right join-causing char on the right will get form XRight 79 R2 A right joining character, that has a right join-causing char on the right will get form XRight
83 (R3 A left joining character, that has a left join-causing char on the left will get form XLeft) 80 (R3 A left joining character, that has a left join-causing char on the left will get form XLeft)
84 Note: the above rule is meaningless, as there are no pure left joining characters defined in Unicode 81 Note: the above rule is meaningless, as there are no pure left joining characters defined in Unicode
85 R4 A dual joining character, that has a left join-causing char on the left and a right join-causing char on 82 R4 A dual joining character, that has a left join-causing char on the left and a right join-causing char on
86 the right will get form XMedial 83 the right will get form XMedial
87 R5 A dual joining character, that has a right join causing char on the right, and no left join causing char on the left 84 R5 A dual joining character, that has a right join causing char on the right, and no left join causing char on the left
88 will get form XRight 85 will get form XRight
89 R6 A dual joining character, that has a left join causing char on the left, and no right join causing char on the right 86 R6 A dual joining character, that has a left join causing char on the left, and no right join causing char on the right
90 will get form XLeft 87 will get form XLeft
91 R7 Otherwise the character will get form XIsolated 88 R7 Otherwise the character will get form XIsolated
92 89
93 Additionally we have to do the minimal ligature support for lam-alef ligatures: 90 Additionally we have to do the minimal ligature support for lam-alef ligatures:
94 91
95 L1 Transparent characters do not affect ligature behaviour. 92 L1 Transparent characters do not affect ligature behaviour.
96 L2 Any sequence of Alef(XRight) + Lam(XMedial) will form the ligature Alef.Lam(XLeft) 93 L2 Any sequence of Alef(XRight) + Lam(XMedial) will form the ligature Alef.Lam(XLeft)
97 L3 Any sequence of Alef(XRight) + Lam(XLeft) will form the ligature Alef.Lam(XIsolated) 94 L3 Any sequence of Alef(XRight) + Lam(XLeft) will form the ligature Alef.Lam(XIsolated)
98 95
99 The two functions defined in this class do shaping in visual and logical order. For logical order just replace right with 96 The two functions defined in this class do shaping in visual and logical order. For logical order just replace right with
100 previous and left with next in the above rules ;-) 97 previous and left with next in the above rules ;-)
101*/ 98*/
102 99
103/* 100/*
104 Two small helper functions for arabic shaping. They get the next shape causing character on either 101 Two small helper functions for arabic shaping. They get the next shape causing character on either
105 side of the char in question. Implements rule R1. 102 side of the char in question. Implements rule R1.
106 103
107 leftChar() returns true if the char to the left is a left join-causing char 104 leftChar() returns true if the char to the left is a left join-causing char
108 rightChar() returns true if the char to the right is a right join-causing char 105 rightChar() returns true if the char to the right is a right join-causing char
109*/ 106*/
110static inline const QChar *prevChar( const QString &str, int pos ) 107static inline const QChar *prevChar( const QString &str, int pos )
111{ 108{
112 //qDebug("leftChar: pos=%d", pos); 109 //qDebug("leftChar: pos=%d", pos);
113 pos--; 110 pos--;
114 const QChar *ch = str.unicode() + pos; 111 const QChar *ch = str.unicode() + pos;
115 while( pos > -1 ) { 112 while( pos > -1 ) {
116 if( !ch->isMark() ) 113 if( !ch->isMark() )
117 return ch; 114 return ch;
118 pos--; 115 pos--;
119 ch--; 116 ch--;
120 } 117 }
121 return &QChar::replacement; 118 return &QChar::replacement;
122} 119}
123 120
124static inline const QChar *nextChar( const QString &str, int pos) 121static inline const QChar *nextChar( const QString &str, int pos)
125{ 122{
126 pos++; 123 pos++;
127 int len = str.length(); 124 int len = str.length();
128 const QChar *ch = str.unicode() + pos; 125 const QChar *ch = str.unicode() + pos;
129 while( pos < len ) { 126 while( pos < len ) {
130 //qDebug("rightChar: %d isLetter=%d, joining=%d", pos, ch.isLetter(), ch.joining()); 127 //qDebug("rightChar: %d isLetter=%d, joining=%d", pos, ch.isLetter(), ch.joining());
131 if( !ch->isMark() ) 128 if( !ch->isMark() )
132 return ch; 129 return ch;
133 // assume it's a transparent char, this might not be 100% correct 130 // assume it's a transparent char, this might not be 100% correct
134 pos++; 131 pos++;
135 ch++; 132 ch++;
136 } 133 }
137 return &QChar::replacement; 134 return &QChar::replacement;
138} 135}
139 136
140static inline bool prevVisualCharJoins( const QString &str, int pos) 137static inline bool prevVisualCharJoins( const QString &str, int pos)
141{ 138{
142 return ( prevChar( str, pos )->joining() != QChar::OtherJoining ); 139 return ( prevChar( str, pos )->joining() != QChar::OtherJoining );
143} 140}
144 141
145static inline bool nextVisualCharJoins( const QString &str, int pos) 142static inline bool nextVisualCharJoins( const QString &str, int pos)
146{ 143{
147 QChar::Joining join = nextChar( str, pos )->joining(); 144 QChar::Joining join = nextChar( str, pos )->joining();
148 return ( join == QChar::Dual || join == QChar::Center ); 145 return ( join == QChar::Dual || join == QChar::Center );
149} 146}
diff --git a/noncore/apps/opie-write/qrichtext.cpp b/noncore/apps/opie-write/qrichtext.cpp
index 3b044c3..b77a0fc 100644
--- a/noncore/apps/opie-write/qrichtext.cpp
+++ b/noncore/apps/opie-write/qrichtext.cpp
@@ -1,185 +1,170 @@
1/**************************************************************************** 1/****************************************************************************
2** $Id$ 2** $Id$
3** 3**
4** Implementation of the internal Qt classes dealing with rich text 4** Implementation of the internal Qt classes dealing with rich text
5** 5**
6** Created : 990101 6** Created : 990101
7** 7**
8** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. 8** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
9** 9**
10** This file is part of the kernel module of the Qt GUI Toolkit. 10** This file is part of the kernel module of the Qt GUI Toolkit.
11** 11**
12** This file may be distributed under the terms of the Q Public License 12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file 13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file. 14** LICENSE.QPL included in the packaging of this file.
15** 15**
16** This file may be distributed and/or modified under the terms of the 16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software 17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the 18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file. 19** packaging of this file.
20** 20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition 21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License 22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software. 23** Agreement provided with the Software.
24** 24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27** 27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for 28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements. 29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information. 30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information. 31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32** 32**
33** Contact info@trolltech.com if any conditions of this licensing are 33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you. 34** not clear to you.
35** 35**
36**********************************************************************/ 36**********************************************************************/
37 37
38#include "qrichtext_p.h" 38#include "qrichtext_p.h"
39 39
40#include "qstringlist.h"
41#include "qfont.h"
42#include "qtextstream.h"
43#include "qfile.h"
44#include "qapplication.h"
45#include "qmap.h"
46#include "qfileinfo.h"
47#include "qstylesheet.h"
48#include "qmime.h"
49#include "qimage.h"
50#include "qdragobject.h" 40#include "qdragobject.h"
51#include "qpaintdevicemetrics.h" 41#include "qpaintdevicemetrics.h"
52#include "qpainter.h"
53#include "qdrawutil.h" 42#include "qdrawutil.h"
54#include "qcursor.h"
55#include "qstack.h"
56#include "qstyle.h"
57#include "qcomplextext_p.h"
58#include "qcleanuphandler.h" 43#include "qcleanuphandler.h"
59 44
60#include <stdlib.h> 45#include <stdlib.h>
61 46
62using namespace Qt3; 47using namespace Qt3;
63 48
64static QTextCursor* richTextExportStart = 0; 49static QTextCursor* richTextExportStart = 0;
65static QTextCursor* richTextExportEnd = 0; 50static QTextCursor* richTextExportEnd = 0;
66 51
67static QTextFormatCollection *qFormatCollection = 0; 52static QTextFormatCollection *qFormatCollection = 0;
68 53
69const int border_tolerance = 2; 54const int border_tolerance = 2;
70 55
71#ifdef Q_WS_WIN 56#ifdef Q_WS_WIN
72#include "qt_windows.h" 57#include "qt_windows.h"
73#endif 58#endif
74 59
75#define QChar_linesep QChar(0x2028U) 60#define QChar_linesep QChar(0x2028U)
76 61
77static inline bool is_printer( QPainter *p ) 62static inline bool is_printer( QPainter *p )
78{ 63{
79 if ( !p || !p->device() ) 64 if ( !p || !p->device() )
80 return FALSE; 65 return FALSE;
81 return p->device()->devType() == QInternal::Printer; 66 return p->device()->devType() == QInternal::Printer;
82} 67}
83 68
84static inline int scale( int value, QPainter *painter ) 69static inline int scale( int value, QPainter *painter )
85{ 70{
86 if ( is_printer( painter ) ) { 71 if ( is_printer( painter ) ) {
87 QPaintDeviceMetrics metrics( painter->device() ); 72 QPaintDeviceMetrics metrics( painter->device() );
88#if defined(Q_WS_X11) 73#if defined(Q_WS_X11)
89 value = value * metrics.logicalDpiY() / QPaintDevice::x11AppDpiY(); 74 value = value * metrics.logicalDpiY() / QPaintDevice::x11AppDpiY();
90#elif defined (Q_WS_WIN) 75#elif defined (Q_WS_WIN)
91 HDC hdc = GetDC( 0 ); 76 HDC hdc = GetDC( 0 );
92 int gdc = GetDeviceCaps( hdc, LOGPIXELSY ); 77 int gdc = GetDeviceCaps( hdc, LOGPIXELSY );
93 if ( gdc ) 78 if ( gdc )
94 value = value * metrics.logicalDpiY() / gdc; 79 value = value * metrics.logicalDpiY() / gdc;
95 ReleaseDC( 0, hdc ); 80 ReleaseDC( 0, hdc );
96#elif defined (Q_WS_MAC) 81#elif defined (Q_WS_MAC)
97 value = value * metrics.logicalDpiY() / 75; // ##### FIXME 82 value = value * metrics.logicalDpiY() / 75; // ##### FIXME
98#elif defined (Q_WS_QWS) 83#elif defined (Q_WS_QWS)
99 value = value * metrics.logicalDpiY() / 75; 84 value = value * metrics.logicalDpiY() / 75;
100#endif 85#endif
101 } 86 }
102 return value; 87 return value;
103} 88}
104 89
105// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 90// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
106 91
107void QTextCommandHistory::addCommand( QTextCommand *cmd ) 92void QTextCommandHistory::addCommand( QTextCommand *cmd )
108{ 93{
109 if ( current < (int)history.count() - 1 ) { 94 if ( current < (int)history.count() - 1 ) {
110 QPtrList<QTextCommand> commands; 95 QPtrList<QTextCommand> commands;
111 commands.setAutoDelete( FALSE ); 96 commands.setAutoDelete( FALSE );
112 97
113 for( int i = 0; i <= current; ++i ) { 98 for( int i = 0; i <= current; ++i ) {
114 commands.insert( i, history.at( 0 ) ); 99 commands.insert( i, history.at( 0 ) );
115 history.take( 0 ); 100 history.take( 0 );
116 } 101 }
117 102
118 commands.append( cmd ); 103 commands.append( cmd );
119 history.clear(); 104 history.clear();
120 history = commands; 105 history = commands;
121 history.setAutoDelete( TRUE ); 106 history.setAutoDelete( TRUE );
122 } else { 107 } else {
123 history.append( cmd ); 108 history.append( cmd );
124 } 109 }
125 110
126 if ( (int)history.count() > steps ) 111 if ( (int)history.count() > steps )
127 history.removeFirst(); 112 history.removeFirst();
128 else 113 else
129 ++current; 114 ++current;
130} 115}
131 116
132QTextCursor *QTextCommandHistory::undo( QTextCursor *c ) 117QTextCursor *QTextCommandHistory::undo( QTextCursor *c )
133{ 118{
134 if ( current > -1 ) { 119 if ( current > -1 ) {
135 QTextCursor *c2 = history.at( current )->unexecute( c ); 120 QTextCursor *c2 = history.at( current )->unexecute( c );
136 --current; 121 --current;
137 return c2; 122 return c2;
138 } 123 }
139 return 0; 124 return 0;
140} 125}
141 126
142QTextCursor *QTextCommandHistory::redo( QTextCursor *c ) 127QTextCursor *QTextCommandHistory::redo( QTextCursor *c )
143{ 128{
144 if ( current > -1 ) { 129 if ( current > -1 ) {
145 if ( current < (int)history.count() - 1 ) { 130 if ( current < (int)history.count() - 1 ) {
146 ++current; 131 ++current;
147 return history.at( current )->execute( c ); 132 return history.at( current )->execute( c );
148 } 133 }
149 } else { 134 } else {
150 if ( history.count() > 0 ) { 135 if ( history.count() > 0 ) {
151 ++current; 136 ++current;
152 return history.at( current )->execute( c ); 137 return history.at( current )->execute( c );
153 } 138 }
154 } 139 }
155 return 0; 140 return 0;
156} 141}
157 142
158bool QTextCommandHistory::isUndoAvailable() 143bool QTextCommandHistory::isUndoAvailable()
159{ 144{
160 return current > -1; 145 return current > -1;
161} 146}
162 147
163bool QTextCommandHistory::isRedoAvailable() 148bool QTextCommandHistory::isRedoAvailable()
164{ 149{
165 return current > -1 && current < (int)history.count() - 1 || current == -1 && history.count() > 0; 150 return current > -1 && current < (int)history.count() - 1 || current == -1 && history.count() > 0;
166} 151}
167 152
168// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 153// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
169 154
170QTextDeleteCommand::QTextDeleteCommand( QTextDocument *d, int i, int idx, const QMemArray<QTextStringChar> &str, 155QTextDeleteCommand::QTextDeleteCommand( QTextDocument *d, int i, int idx, const QMemArray<QTextStringChar> &str,
171 const QByteArray& oldStyleInfo ) 156 const QByteArray& oldStyleInfo )
172 : QTextCommand( d ), id( i ), index( idx ), parag( 0 ), text( str ), styleInformation( oldStyleInfo ) 157 : QTextCommand( d ), id( i ), index( idx ), parag( 0 ), text( str ), styleInformation( oldStyleInfo )
173{ 158{
174 for ( int j = 0; j < (int)text.size(); ++j ) { 159 for ( int j = 0; j < (int)text.size(); ++j ) {
175 if ( text[ j ].format() ) 160 if ( text[ j ].format() )
176 text[ j ].format()->addRef(); 161 text[ j ].format()->addRef();
177 } 162 }
178} 163}
179 164
180QTextDeleteCommand::QTextDeleteCommand( QTextParagraph *p, int idx, const QMemArray<QTextStringChar> &str ) 165QTextDeleteCommand::QTextDeleteCommand( QTextParagraph *p, int idx, const QMemArray<QTextStringChar> &str )
181 : QTextCommand( 0 ), id( -1 ), index( idx ), parag( p ), text( str ) 166 : QTextCommand( 0 ), id( -1 ), index( idx ), parag( p ), text( str )
182{ 167{
183 for ( int i = 0; i < (int)text.size(); ++i ) { 168 for ( int i = 0; i < (int)text.size(); ++i ) {
184 if ( text[ i ].format() ) 169 if ( text[ i ].format() )
185 text[ i ].format()->addRef(); 170 text[ i ].format()->addRef();
diff --git a/noncore/apps/opie-write/qstylesheet.cpp b/noncore/apps/opie-write/qstylesheet.cpp
index 67cd828..ca634f7 100644
--- a/noncore/apps/opie-write/qstylesheet.cpp
+++ b/noncore/apps/opie-write/qstylesheet.cpp
@@ -1,170 +1,168 @@
1/**************************************************************************** 1/****************************************************************************
2** $Id$ 2** $Id$
3** 3**
4** Implementation of the QStyleSheet class 4** Implementation of the QStyleSheet class
5** 5**
6** Created : 990101 6** Created : 990101
7** 7**
8** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. 8** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
9** 9**
10** This file is part of the kernel module of the Qt GUI Toolkit. 10** This file is part of the kernel module of the Qt GUI Toolkit.
11** 11**
12** This file may be distributed under the terms of the Q Public License 12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file 13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file. 14** LICENSE.QPL included in the packaging of this file.
15** 15**
16** This file may be distributed and/or modified under the terms of the 16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software 17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the 18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file. 19** packaging of this file.
20** 20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition 21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License 22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software. 23** Agreement provided with the Software.
24** 24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27** 27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for 28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements. 29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information. 30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information. 31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32** 32**
33** Contact info@trolltech.com if any conditions of this licensing are 33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you. 34** not clear to you.
35** 35**
36**********************************************************************/ 36**********************************************************************/
37 37
38#include "qstylesheet.h" 38#include "qstylesheet.h"
39 39
40#include "qrichtext_p.h" 40#include "qrichtext_p.h"
41#include "qlayout.h"
42#include "qpainter.h"
43#include "qcleanuphandler.h" 41#include "qcleanuphandler.h"
44 42
45#include <stdio.h> 43#include <stdio.h>
46 44
47using namespace Qt3; 45using namespace Qt3;
48 46
49namespace Qt3 { 47namespace Qt3 {
50 48
51class QStyleSheetItemData 49class QStyleSheetItemData
52{ 50{
53public: 51public:
54 QStyleSheetItem::DisplayMode disp; 52 QStyleSheetItem::DisplayMode disp;
55 int fontitalic; 53 int fontitalic;
56 int fontunderline; 54 int fontunderline;
57 int fontstrikeout; 55 int fontstrikeout;
58 int fontweight; 56 int fontweight;
59 int fontsize; 57 int fontsize;
60 int fontsizelog; 58 int fontsizelog;
61 int fontsizestep; 59 int fontsizestep;
62 int lineSpacing; 60 int lineSpacing;
63 QString fontfamily; 61 QString fontfamily;
64 QStyleSheetItem *parentstyle; 62 QStyleSheetItem *parentstyle;
65 QString stylename; 63 QString stylename;
66 int ncolumns; 64 int ncolumns;
67 QColor col; 65 QColor col;
68 bool anchor; 66 bool anchor;
69 int align; 67 int align;
70 QStyleSheetItem::VerticalAlignment valign; 68 QStyleSheetItem::VerticalAlignment valign;
71 int margin[5]; 69 int margin[5];
72 QStyleSheetItem::ListStyle list; 70 QStyleSheetItem::ListStyle list;
73 QStyleSheetItem::WhiteSpaceMode whitespacemode; 71 QStyleSheetItem::WhiteSpaceMode whitespacemode;
74 QString contxt; 72 QString contxt;
75 bool selfnest; 73 bool selfnest;
76 QStyleSheet* sheet; 74 QStyleSheet* sheet;
77}; 75};
78 76
79} 77}
80 78
81/*! 79/*!
82 \class QStyleSheetItem qstylesheet.h 80 \class QStyleSheetItem qstylesheet.h
83 \brief The QStyleSheetItem class provides an encapsulation of a set of text styles. 81 \brief The QStyleSheetItem class provides an encapsulation of a set of text styles.
84 82
85 \ingroup text 83 \ingroup text
86 84
87 A style sheet item consists of a name and a set of attributes that 85 A style sheet item consists of a name and a set of attributes that
88 specifiy its font, color, etc. When used in a \link QStyleSheet 86 specifiy its font, color, etc. When used in a \link QStyleSheet
89 style sheet\endlink (see styleSheet()), items define the name() of 87 style sheet\endlink (see styleSheet()), items define the name() of
90 a rich text tag and the display property changes associated with 88 a rich text tag and the display property changes associated with
91 it. 89 it.
92 90
93 The \link QStyleSheetItem::DisplayMode display mode\endlink 91 The \link QStyleSheetItem::DisplayMode display mode\endlink
94 attribute indicates whether the item is a block, an inline element 92 attribute indicates whether the item is a block, an inline element
95 or a list element; see setDisplayMode(). The treatment of 93 or a list element; see setDisplayMode(). The treatment of
96 whitespace is controlled by the \link 94 whitespace is controlled by the \link
97 QStyleSheetItem::WhiteSpaceMode white space mode\endlink; see 95 QStyleSheetItem::WhiteSpaceMode white space mode\endlink; see
98 setWhiteSpaceMode(). An item's margins are set with setMargin(), 96 setWhiteSpaceMode(). An item's margins are set with setMargin(),
99 In the case of list items, the list style is set with 97 In the case of list items, the list style is set with
100 setListStyle(). An item may be a hypertext link anchor; see 98 setListStyle(). An item may be a hypertext link anchor; see
101 setAnchor(). Other attributes are set with setAlignment(), 99 setAnchor(). Other attributes are set with setAlignment(),
102 setVerticalAlignment(), setFontFamily(), setFontSize(), 100 setVerticalAlignment(), setFontFamily(), setFontSize(),
103 setFontWeight(), setFontItalic(), setFontUnderline(), 101 setFontWeight(), setFontItalic(), setFontUnderline(),
104 setFontStrikeOut and setColor(). 102 setFontStrikeOut and setColor().
105*/ 103*/
106 104
107/*! \enum QStyleSheetItem::AdditionalStyleValues 105/*! \enum QStyleSheetItem::AdditionalStyleValues
108 \internal 106 \internal
109*/ 107*/
110 108
111/*! 109/*!
112 \enum QStyleSheetItem::WhiteSpaceMode 110 \enum QStyleSheetItem::WhiteSpaceMode
113 111
114 This enum defines the ways in which QStyleSheet can treat 112 This enum defines the ways in which QStyleSheet can treat
115 whitespace. 113 whitespace.
116 114
117 \value WhiteSpaceNormal any sequence of whitespace (including 115 \value WhiteSpaceNormal any sequence of whitespace (including
118 line-breaks) is equivalent to a single space. 116 line-breaks) is equivalent to a single space.
119 117
120 \value WhiteSpacePre whitespace must be output exactly as given 118 \value WhiteSpacePre whitespace must be output exactly as given
121 in the input. 119 in the input.
122 120
123 \value WhiteSpaceNoWrap multiple spaces are collapsed as with 121 \value WhiteSpaceNoWrap multiple spaces are collapsed as with
124 WhiteSpaceNormal, but no automatic line-breaks occur. To break 122 WhiteSpaceNormal, but no automatic line-breaks occur. To break
125 lines manually, use the \c{<br>} tag. 123 lines manually, use the \c{<br>} tag.
126 124
127*/ 125*/
128 126
129/*! 127/*!
130 \enum QStyleSheetItem::Margin 128 \enum QStyleSheetItem::Margin
131 129
132 \value MarginLeft left margin 130 \value MarginLeft left margin
133 \value MarginRight right margin 131 \value MarginRight right margin
134 \value MarginTop top margin 132 \value MarginTop top margin
135 \value MarginBottom bottom margin 133 \value MarginBottom bottom margin
136 \value MarginAll all margins (left, right, top and bottom) 134 \value MarginAll all margins (left, right, top and bottom)
137 \value MarginVertical top and bottom margins 135 \value MarginVertical top and bottom margins
138 \value MarginHorizontal left and right margins 136 \value MarginHorizontal left and right margins
139 \value MarginFirstLine margin (indentation) of the first line of 137 \value MarginFirstLine margin (indentation) of the first line of
140 a paragarph (in addition to the MarginLeft of the paragraph) 138 a paragarph (in addition to the MarginLeft of the paragraph)
141*/ 139*/
142 140
143/*! 141/*!
144 Constructs a new style called \a name for the stylesheet \a 142 Constructs a new style called \a name for the stylesheet \a
145 parent. 143 parent.
146 144
147 All properties in QStyleSheetItem are initially in the "do not 145 All properties in QStyleSheetItem are initially in the "do not
148 change" state, except \link QStyleSheetItem::DisplayMode display 146 change" state, except \link QStyleSheetItem::DisplayMode display
149 mode\endlink, which defaults to \c DisplayInline. 147 mode\endlink, which defaults to \c DisplayInline.
150*/ 148*/
151QStyleSheetItem::QStyleSheetItem( QStyleSheet* parent, const QString& name ) 149QStyleSheetItem::QStyleSheetItem( QStyleSheet* parent, const QString& name )
152{ 150{
153 d = new QStyleSheetItemData; 151 d = new QStyleSheetItemData;
154 d->stylename = name.lower(); 152 d->stylename = name.lower();
155 d->sheet = parent; 153 d->sheet = parent;
156 init(); 154 init();
157 if (parent) 155 if (parent)
158 parent->insert( this ); 156 parent->insert( this );
159} 157}
160 158
161/*! 159/*!
162 Copy constructor. Constructs a copy of \a other that is not bound 160 Copy constructor. Constructs a copy of \a other that is not bound
163 to any style sheet. 161 to any style sheet.
164*/ 162*/
165QStyleSheetItem::QStyleSheetItem( const QStyleSheetItem & other ) 163QStyleSheetItem::QStyleSheetItem( const QStyleSheetItem & other )
166{ 164{
167 d = new QStyleSheetItemData; 165 d = new QStyleSheetItemData;
168 *d = *other.d; 166 *d = *other.d;
169} 167}
170 168
diff --git a/noncore/apps/opie-write/qtextedit.cpp b/noncore/apps/opie-write/qtextedit.cpp
index 82401c6..27dd515 100644
--- a/noncore/apps/opie-write/qtextedit.cpp
+++ b/noncore/apps/opie-write/qtextedit.cpp
@@ -1,190 +1,170 @@
1/**************************************************************************** 1/****************************************************************************
2** $Id$ 2** $Id$
3** 3**
4** Implementation of the QTextEdit class 4** Implementation of the QTextEdit class
5** 5**
6** Created : 990101 6** Created : 990101
7** 7**
8** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. 8** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
9** 9**
10** This file is part of the widgets module of the Qt GUI Toolkit. 10** This file is part of the widgets module of the Qt GUI Toolkit.
11** 11**
12** This file may be distributed under the terms of the Q Public License 12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file 13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file. 14** LICENSE.QPL included in the packaging of this file.
15** 15**
16** This file may be distributed and/or modified under the terms of the 16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software 17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the 18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file. 19** packaging of this file.
20** 20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition 21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License 22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software. 23** Agreement provided with the Software.
24** 24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27** 27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for 28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements. 29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information. 30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information. 31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32** 32**
33** Contact info@trolltech.com if any conditions of this licensing are 33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you. 34** not clear to you.
35** 35**
36**********************************************************************/ 36**********************************************************************/
37 37
38#include "qtextedit.h" 38#include "qtextedit.h"
39 39
40#include "qrichtext_p.h" 40#include "qrichtext_p.h"
41#include "qpainter.h"
42#include "qpen.h"
43#include "qbrush.h"
44#include "qpixmap.h"
45#include "qfont.h"
46#include "qcolor.h"
47#include "qstyle.h"
48#include "qsize.h"
49#include "qevent.h"
50#include "qtimer.h"
51#include "qapplication.h"
52#include "qlistbox.h" 41#include "qlistbox.h"
53#include "qvbox.h"
54#include "qapplication.h"
55#include "qclipboard.h" 42#include "qclipboard.h"
56#include "qcolordialog.h"
57#include "qfontdialog.h"
58#include "qstylesheet.h"
59#include "qdragobject.h"
60#include "qurl.h"
61#include "qcursor.h"
62#include "qregexp.h"
63#include "qpopupmenu.h" 43#include "qpopupmenu.h"
64 44
65#define ACCEL_KEY(k) "\t" + QString("Ctrl+" #k) 45#define ACCEL_KEY(k) "\t" + QString("Ctrl+" #k)
66 46
67using namespace Qt3; 47using namespace Qt3;
68 48
69static bool qt_enable_richtext_copy = FALSE; 49static bool qt_enable_richtext_copy = FALSE;
70 50
71struct QUndoRedoInfoPrivate 51struct QUndoRedoInfoPrivate
72{ 52{
73 QTextString text; 53 QTextString text;
74}; 54};
75 55
76namespace Qt3 { 56namespace Qt3 {
77 57
78class QTextEditPrivate 58class QTextEditPrivate
79{ 59{
80public: 60public:
81 QTextEditPrivate() 61 QTextEditPrivate()
82 :preeditStart(-1),preeditLength(-1),ensureCursorVisibleInShowEvent(FALSE) 62 :preeditStart(-1),preeditLength(-1),ensureCursorVisibleInShowEvent(FALSE)
83 { 63 {
84 for ( int i=0; i<7; i++ ) 64 for ( int i=0; i<7; i++ )
85 id[i] = 0; 65 id[i] = 0;
86 } 66 }
87 int id[ 7 ]; 67 int id[ 7 ];
88 int preeditStart; 68 int preeditStart;
89 int preeditLength; 69 int preeditLength;
90 bool ensureCursorVisibleInShowEvent; 70 bool ensureCursorVisibleInShowEvent;
91 QString scrollToAnchor; // used to deferr scrollToAnchor() until the show event when we are resized 71 QString scrollToAnchor; // used to deferr scrollToAnchor() until the show event when we are resized
92}; 72};
93 73
94} 74}
95 75
96static bool block_set_alignment = FALSE; 76static bool block_set_alignment = FALSE;
97 77
98/*! 78/*!
99 \class QTextEdit qtextedit.h 79 \class QTextEdit qtextedit.h
100 \brief The QTextEdit widget provides a powerful single-page rich text editor. 80 \brief The QTextEdit widget provides a powerful single-page rich text editor.
101 81
102 \ingroup basic 82 \ingroup basic
103 \ingroup text 83 \ingroup text
104 \mainclass 84 \mainclass
105 85
106 \tableofcontents 86 \tableofcontents
107 87
108 \section1 Introduction and Concepts 88 \section1 Introduction and Concepts
109 89
110 QTextEdit is an advanced WYSIWYG viewer/editor supporting rich 90 QTextEdit is an advanced WYSIWYG viewer/editor supporting rich
111 text formatting using HTML-style tags. It is optimized to handle 91 text formatting using HTML-style tags. It is optimized to handle
112 large documents and to respond quickly to user input. 92 large documents and to respond quickly to user input.
113 93
114 QTextEdit has three modes of operation: 94 QTextEdit has three modes of operation:
115 \table 95 \table
116 \header \i Mode \i Command \i Notes 96 \header \i Mode \i Command \i Notes
117 \row \i Plain Text Editor \i setTextFormat(PlainText) 97 \row \i Plain Text Editor \i setTextFormat(PlainText)
118 \i Set text with setText(); text() returns plain text. Text 98 \i Set text with setText(); text() returns plain text. Text
119 attributes (e.g. colors) can be set, but plain text is always 99 attributes (e.g. colors) can be set, but plain text is always
120 returned.<sup>1.</sup> 100 returned.<sup>1.</sup>
121 \row \i Rich Text Editor \i setTextFormat(RichText) 101 \row \i Rich Text Editor \i setTextFormat(RichText)
122 \i Set text with setText(); text() returns rich text. Rich 102 \i Set text with setText(); text() returns rich text. Rich
123 text editing is fairly limited. You can't set margins or 103 text editing is fairly limited. You can't set margins or
124 insert images for example (although you can read and 104 insert images for example (although you can read and
125 correctly display files that have margins set and that 105 correctly display files that have margins set and that
126 include images). This mode is mostly useful for editing small 106 include images). This mode is mostly useful for editing small
127 amounts of rich text. <sup>2.</sup> 107 amounts of rich text. <sup>2.</sup>
128 \row \i Text Viewer<sup>3.</sup> \i setReadOnly(TRUE) 108 \row \i Text Viewer<sup>3.</sup> \i setReadOnly(TRUE)
129 \i Set text with setText() or append() (which has no undo 109 \i Set text with setText() or append() (which has no undo
130 history so is faster and uses less memory); text() returns 110 history so is faster and uses less memory); text() returns
131 plain or rich text depending on the textFormat(). This mode 111 plain or rich text depending on the textFormat(). This mode
132 can correctly display a large subset of HTML tags. 112 can correctly display a large subset of HTML tags.
133 \endtable 113 \endtable
134 114
135 <sup>1.</sup><small>We do \e not recommend using QTextEdit to 115 <sup>1.</sup><small>We do \e not recommend using QTextEdit to
136 create syntax highlighting editors because the current API is 116 create syntax highlighting editors because the current API is
137 insufficient for this purpose. We hope to release a more complete 117 insufficient for this purpose. We hope to release a more complete
138 API that will support syntax highlighting in a later 118 API that will support syntax highlighting in a later
139 release.</small> 119 release.</small>
140 120
141 <sup>2.</sup><small>A more complete API that supports setting 121 <sup>2.</sup><small>A more complete API that supports setting
142 margins, images, etc., is planned for a later Qt release.</small> 122 margins, images, etc., is planned for a later Qt release.</small>
143 123
144 <sup>3.</sup><small>Qt 3.1 will provide a Log Viewer mode which is 124 <sup>3.</sup><small>Qt 3.1 will provide a Log Viewer mode which is
145 optimised for the fast and memory efficient display of large 125 optimised for the fast and memory efficient display of large
146 amounts of read only text.</small> 126 amounts of read only text.</small>
147 127
148 We recommend that you always call setTextFormat() to set the mode 128 We recommend that you always call setTextFormat() to set the mode
149 you want to use. If you use \c AutoText then setText() and 129 you want to use. If you use \c AutoText then setText() and
150 append() will try to determine whether the text they are given is 130 append() will try to determine whether the text they are given is
151 plain text or rich text. If you use \c RichText then setText() and 131 plain text or rich text. If you use \c RichText then setText() and
152 append() will assume that the text they are given is rich text. 132 append() will assume that the text they are given is rich text.
153 insert() simply inserts the text it is given. 133 insert() simply inserts the text it is given.
154 134
155 QTextEdit works on paragraphs and characters. A paragraph is a 135 QTextEdit works on paragraphs and characters. A paragraph is a
156 formatted string which is word-wrapped to fit into the width of 136 formatted string which is word-wrapped to fit into the width of
157 the widget. By default when reading plain text, two newlines 137 the widget. By default when reading plain text, two newlines
158 signify a paragraph. A document consists of zero or more 138 signify a paragraph. A document consists of zero or more
159 paragraphs, indexed from 0. Characters are indexed on a 139 paragraphs, indexed from 0. Characters are indexed on a
160 per-paragraph basis, also indexed from 0. The words in the 140 per-paragraph basis, also indexed from 0. The words in the
161 paragraph are aligned in accordance with the paragraph's 141 paragraph are aligned in accordance with the paragraph's
162 alignment(). Paragraphs are separated by hard line breaks. Each 142 alignment(). Paragraphs are separated by hard line breaks. Each
163 character within a paragraph has its own attributes, for example, 143 character within a paragraph has its own attributes, for example,
164 font and color. 144 font and color.
165 145
166 The text edit documentation uses the following concepts: 146 The text edit documentation uses the following concepts:
167 \list 147 \list
168 \i \e{current format} -- 148 \i \e{current format} --
169 this is the format at the current cursor position, \e and it 149 this is the format at the current cursor position, \e and it
170 is the format of the selected text if any. 150 is the format of the selected text if any.
171 \i \e{current paragraph} -- the paragraph which contains the 151 \i \e{current paragraph} -- the paragraph which contains the
172 cursor. 152 cursor.
173 \endlist 153 \endlist
174 154
175 QTextEdit can display images (using QMimeSourceFactory), lists and 155 QTextEdit can display images (using QMimeSourceFactory), lists and
176 tables. If the text is too large to view within the text edit's 156 tables. If the text is too large to view within the text edit's
177 viewport, scrollbars will appear. The text edit can load both 157 viewport, scrollbars will appear. The text edit can load both
178 plain text and HTML files (a subset of HTML 3.2 and 4). The 158 plain text and HTML files (a subset of HTML 3.2 and 4). The
179 rendering style and the set of valid tags are defined by a 159 rendering style and the set of valid tags are defined by a
180 styleSheet(). Custom tags can be created and placed in a custom 160 styleSheet(). Custom tags can be created and placed in a custom
181 style sheet. Change the style sheet with \l{setStyleSheet()}; see 161 style sheet. Change the style sheet with \l{setStyleSheet()}; see
182 QStyleSheet for details. The images identified by image tags are 162 QStyleSheet for details. The images identified by image tags are
183 displayed if they can be interpreted using the text edit's 163 displayed if they can be interpreted using the text edit's
184 \l{QMimeSourceFactory}; see setMimeSourceFactory(). 164 \l{QMimeSourceFactory}; see setMimeSourceFactory().
185 165
186 If you want a text browser with more navigation use QTextBrowser. 166 If you want a text browser with more navigation use QTextBrowser.
187 If you just need to display a small piece of rich text use QLabel 167 If you just need to display a small piece of rich text use QLabel
188 or QSimpleRichText. 168 or QSimpleRichText.
189 169
190 If you create a new QTextEdit, and want to allow the user to edit 170 If you create a new QTextEdit, and want to allow the user to edit
diff --git a/noncore/apps/oxygen/calcdlgui.cpp b/noncore/apps/oxygen/calcdlgui.cpp
index f8dfde5..2bb8337 100644
--- a/noncore/apps/oxygen/calcdlgui.cpp
+++ b/noncore/apps/oxygen/calcdlgui.cpp
@@ -1,64 +1,63 @@
1/*************************************************************************** 1/***************************************************************************
2 application: : Oxygen 2 application: : Oxygen
3 3
4 begin : September 2002 4 begin : September 2002
5 copyright : ( C ) 2002 by Carsten Niehaus 5 copyright : ( C ) 2002 by Carsten Niehaus
6 email : cniehaus@handhelds.org 6 email : cniehaus@handhelds.org
7 **************************************************************************/ 7 **************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * ( at your option ) any later version. * 14 * ( at your option ) any later version. *
15 * * 15 * *
16 **************************************************************************/ 16 **************************************************************************/
17#include "oxygen.h"
18 17
19#include "calcdlgui.h" 18#include "calcdlgui.h"
20#include "kmolcalc.h" 19#include "kmolcalc.h"
21#include <qlineedit.h> 20#include <qlineedit.h>
22#include <qmultilineedit.h> 21#include <qmultilineedit.h>
23#include <qpushbutton.h> 22#include <qpushbutton.h>
24 23
25calcDlgUI::calcDlgUI() : CalcDlg() 24calcDlgUI::calcDlgUI() : CalcDlg()
26{ 25{
27 kmolcalc = new KMolCalc; 26 kmolcalc = new KMolCalc;
28 connect( calculate, SIGNAL( clicked() ), this, SLOT( calc() ) ); 27 connect( calculate, SIGNAL( clicked() ), this, SLOT( calc() ) );
29 connect( clear_fields, SIGNAL( clicked() ), this, SLOT( clear() ) ); 28 connect( clear_fields, SIGNAL( clicked() ), this, SLOT( clear() ) );
30 result->setReadOnly( true ); 29 result->setReadOnly( true );
31} 30}
32 31
33void calcDlgUI::calc() 32void calcDlgUI::calc()
34{ 33{
35 QString compound( formula->text() ); 34 QString compound( formula->text() );
36 if ( compound.isEmpty() ) { 35 if ( compound.isEmpty() ) {
37 clear(); 36 clear();
38 return; 37 return;
39 } 38 }
40 QString errors( kmolcalc->readFormula( compound ) ); 39 QString errors( kmolcalc->readFormula( compound ) );
41 QString mw, ea; 40 QString mw, ea;
42 double weight = kmolcalc->getWeight(); 41 double weight = kmolcalc->getWeight();
43 if ( errors == "OK" ) { 42 if ( errors == "OK" ) {
44 mw.setNum( weight ); 43 mw.setNum( weight );
45 ea = kmolcalc->getEmpFormula() + " :\n" + kmolcalc->getEA(); 44 ea = kmolcalc->getEmpFormula() + " :\n" + kmolcalc->getEA();
46 } else { 45 } else {
47 mw = "???"; 46 mw = "???";
48 ea = tr( "ERROR: \n" ).arg( errors )+ "\n"; 47 ea = tr( "ERROR: \n" ).arg( errors )+ "\n";
49 } 48 }
50 result->setText( mw ); 49 result->setText( mw );
51 anal_display->setText( ea ); 50 anal_display->setText( ea );
52} 51}
53 52
54/** 53/**
55 * * Clear all text entry / result fields. 54 * * Clear all text entry / result fields.
56 * */ 55 * */
57void calcDlgUI::clear() 56void calcDlgUI::clear()
58{ 57{
59 formula->clear(); 58 formula->clear();
60 result->clear(); 59 result->clear();
61 anal_display->clear(); 60 anal_display->clear();
62} 61}
63 62
64 63
diff --git a/noncore/apps/oxygen/dataTable.cpp b/noncore/apps/oxygen/dataTable.cpp
index e3906be..48e2b20 100644
--- a/noncore/apps/oxygen/dataTable.cpp
+++ b/noncore/apps/oxygen/dataTable.cpp
@@ -1,152 +1,149 @@
1/*************************************************************************** 1/***************************************************************************
2 application: : Oxygen 2 application: : Oxygen
3 3
4 begin : September 2002 4 begin : September 2002
5 copyright : ( C ) 2002 by Carsten Niehaus 5 copyright : ( C ) 2002 by Carsten Niehaus
6 email : cniehaus@handhelds.org 6 email : cniehaus@handhelds.org
7 **************************************************************************/ 7 **************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * ( at your option ) any later version. * 14 * ( at your option ) any later version. *
15 * * 15 * *
16 **************************************************************************/ 16 **************************************************************************/
17 17
18#include <qpe/config.h> 18#include <qpe/config.h>
19 19
20#include "dataTable.h" 20#include "dataTable.h"
21#include <qwidget.h>
22#include <qhbox.h> 21#include <qhbox.h>
23#include <qlabel.h> 22#include <qlabel.h>
24#include <qfont.h>
25#include <qlayout.h> 23#include <qlayout.h>
26#include <qpe/qpeapplication.h> 24#include <qpe/qpeapplication.h>
27 25
28#include <qstringlist.h>
29 26
30OxydataWidget::OxydataWidget(QWidget *parent, const char *name, const QStringList &list ) : QWidget( parent,name ), names( list ) 27OxydataWidget::OxydataWidget(QWidget *parent, const char *name, const QStringList &list ) : QWidget( parent,name ), names( list )
31{ 28{
32 QGridLayout *qgrid = new QGridLayout( this, 2,1 ); 29 QGridLayout *qgrid = new QGridLayout( this, 2,1 );
33 30
34 QHBox *hbox = new QHBox( this ); 31 QHBox *hbox = new QHBox( this );
35 left = new QLabel( hbox ); 32 left = new QLabel( hbox );
36 middle = new QLabel( hbox ); 33 middle = new QLabel( hbox );
37 right = new QLabel( hbox ); 34 right = new QLabel( hbox );
38 35
39 right->setAlignment( AlignRight ); 36 right->setAlignment( AlignRight );
40 middle->setAlignment( AlignHCenter ); 37 middle->setAlignment( AlignHCenter );
41 38
42 QFont bf; 39 QFont bf;
43 bf.setBold( true ); 40 bf.setBold( true );
44 bf.setPointSize( bf.pointSize()+2 ); 41 bf.setPointSize( bf.pointSize()+2 );
45 middle->setFont( bf ); 42 middle->setFont( bf );
46 43
47 DataTable = new OxydataTable( 9,2, this ); 44 DataTable = new OxydataTable( 9,2, this );
48 setTable(); 45 setTable();
49 46
50 qgrid->addWidget( hbox,0,0 ); 47 qgrid->addWidget( hbox,0,0 );
51 qgrid->addWidget( DataTable,1,0 ); 48 qgrid->addWidget( DataTable,1,0 );
52} 49}
53 50
54void OxydataWidget::setElement( int el ) 51void OxydataWidget::setElement( int el )
55{ 52{
56 QStringList::ConstIterator it = names.at(el); 53 QStringList::ConstIterator it = names.at(el);
57 Config configobj( QPEApplication::qpeDir() +"share/oxygen/oxygendata", Config::File ); 54 Config configobj( QPEApplication::qpeDir() +"share/oxygen/oxygendata", Config::File );
58 55
59 configobj.setGroup( QString::number( el+1 )); 56 configobj.setGroup( QString::number( el+1 ));
60 57
61 left->setText( configobj.readEntry( "Symbol" ) ); 58 left->setText( configobj.readEntry( "Symbol" ) );
62 middle->setText( *it ); 59 middle->setText( *it );
63 right->setText( QString::number( el+1 ) ); 60 right->setText( QString::number( el+1 ) );
64 61
65 62
66 DataTable->setText( 0,1,tr( "%1 u" ).arg( configobj.readEntry( "Weight" ) ) ); 63 DataTable->setText( 0,1,tr( "%1 u" ).arg( configobj.readEntry( "Weight" ) ) );
67 DataTable->setText( 1,1,configobj.readEntry( "Block" ) ); 64 DataTable->setText( 1,1,configobj.readEntry( "Block" ) );
68 DataTable->setText( 2,1,configobj.readEntry( "Group" ) ); 65 DataTable->setText( 2,1,configobj.readEntry( "Group" ) );
69 DataTable->setText( 3,1,configobj.readEntry( "EN" ) ); 66 DataTable->setText( 3,1,configobj.readEntry( "EN" ) );
70 DataTable->setText( 4,1,tr( "%1 pm" ).arg( configobj.readEntry( "AR" ) ) ) ; 67 DataTable->setText( 4,1,tr( "%1 pm" ).arg( configobj.readEntry( "AR" ) ) ) ;
71 DataTable->setText( 5,1,tr( "%1 J" ).arg( configobj.readEntry( "IE" ) ) ); 68 DataTable->setText( 5,1,tr( "%1 J" ).arg( configobj.readEntry( "IE" ) ) );
72 DataTable->setText( 6,1,tr( "%1 g/cm^3" ).arg( configobj.readEntry( "Density" ) ) ); 69 DataTable->setText( 6,1,tr( "%1 g/cm^3" ).arg( configobj.readEntry( "Density" ) ) );
73 DataTable->setText( 7,1,tr( "%1 K" ).arg( configobj.readEntry( "BP" ) ) ); 70 DataTable->setText( 7,1,tr( "%1 K" ).arg( configobj.readEntry( "BP" ) ) );
74 DataTable->setText( 8,1,tr( "%1 K" ).arg( configobj.readEntry( "MP" ) ) ); 71 DataTable->setText( 8,1,tr( "%1 K" ).arg( configobj.readEntry( "MP" ) ) );
75} 72}
76 73
77void OxydataWidget::setTable() const 74void OxydataWidget::setTable() const
78{ 75{
79 DataTable->setText( 0,0, tr( "Weight" ) ); 76 DataTable->setText( 0,0, tr( "Weight" ) );
80 DataTable->setText( 1,0, tr( "Block" )) ; 77 DataTable->setText( 1,0, tr( "Block" )) ;
81 DataTable->setText( 2,0, tr( "Group" )) ; 78 DataTable->setText( 2,0, tr( "Group" )) ;
82 DataTable->setText( 3,0, tr( "Electronegativity" )) ; 79 DataTable->setText( 3,0, tr( "Electronegativity" )) ;
83 DataTable->setText( 4,0, tr( "Atomic radius" )) ; 80 DataTable->setText( 4,0, tr( "Atomic radius" )) ;
84 DataTable->setText( 5,0, tr( "Ionization Energy" )) ; 81 DataTable->setText( 5,0, tr( "Ionization Energy" )) ;
85 DataTable->setText( 6,0, tr( "Density" )) ; 82 DataTable->setText( 6,0, tr( "Density" )) ;
86 DataTable->setText( 7,0, tr( "Boiling point" ) ); 83 DataTable->setText( 7,0, tr( "Boiling point" ) );
87 DataTable->setText( 8,0, tr( "Melting point" ) ); 84 DataTable->setText( 8,0, tr( "Melting point" ) );
88} 85}
89 86
90void OxydataWidget::setLayout() 87void OxydataWidget::setLayout()
91{ 88{
92#warning this is not working and I have no idea why! 89#warning this is not working and I have no idea why!
93// DataTable->setColumnWidth ( 0 , this->width()/2 ); 90// DataTable->setColumnWidth ( 0 , this->width()/2 );
94// DataTable->setColumnWidth ( 1 , this->width()/2 ); 91// DataTable->setColumnWidth ( 1 , this->width()/2 );
95 92
96//X DataTable->setColumnWidth ( 0 , 110 ); 93//X DataTable->setColumnWidth ( 0 , 110 );
97//X DataTable->setColumnWidth ( 1 , 110 ); 94//X DataTable->setColumnWidth ( 1 , 110 );
98} 95}
99 96
100OxydataTable::OxydataTable(int numRows, int numCols, QWidget *parent, 97OxydataTable::OxydataTable(int numRows, int numCols, QWidget *parent,
101 const char *name) : QTable(numRows, numCols,parent, name) 98 const char *name) : QTable(numRows, numCols,parent, name)
102{ 99{
103 100
104 for (int zeile = 0; zeile < numRows; zeile++) 101 for (int zeile = 0; zeile < numRows; zeile++)
105 for ( int spalte = 0; spalte < numCols; spalte++ ) 102 for ( int spalte = 0; spalte < numCols; spalte++ )
106 { 103 {
107 OxydataQTI *testus = new OxydataQTI (this, OxydataQTI::Never, "hm" ); 104 OxydataQTI *testus = new OxydataQTI (this, OxydataQTI::Never, "hm" );
108 setItem(zeile, spalte, (QTableItem*)testus); 105 setItem(zeile, spalte, (QTableItem*)testus);
109 } 106 }
110 107
111 108
112 this->setShowGrid( false ); 109 this->setShowGrid( false );
113 this->setHScrollBarMode(QScrollView::AlwaysOff); 110 this->setHScrollBarMode(QScrollView::AlwaysOff);
114 this->horizontalHeader()->hide(); 111 this->horizontalHeader()->hide();
115 this->verticalHeader()->hide(); 112 this->verticalHeader()->hide();
116 this->setTopMargin( 0 ); 113 this->setTopMargin( 0 );
117 this->setLeftMargin( 0 ); 114 this->setLeftMargin( 0 );
118} 115}
119 116
120void OxydataTable::paintCell( QPainter *p, int row, int col, const QRect &cr, bool selected) 117void OxydataTable::paintCell( QPainter *p, int row, int col, const QRect &cr, bool selected)
121{ 118{
122 if ( cr.width() == 0 || cr.height() == 0 ) 119 if ( cr.width() == 0 || cr.height() == 0 )
123 return; 120 return;
124 selected = FALSE; 121 selected = FALSE;
125 122
126 QTableItem *itm = item( row, col ); 123 QTableItem *itm = item( row, col );
127 QColorGroup colgrp = colorGroup(); 124 QColorGroup colgrp = colorGroup();
128 if ( itm ) 125 if ( itm )
129 { 126 {
130 if ( row%2 ) 127 if ( row%2 )
131 colgrp.setColor( QColorGroup::Base, QColor( 180,200,210 ) ); 128 colgrp.setColor( QColorGroup::Base, QColor( 180,200,210 ) );
132 else 129 else
133 colgrp.setColor( QColorGroup::Base, QColor( 230,235,235 ) ); 130 colgrp.setColor( QColorGroup::Base, QColor( 230,235,235 ) );
134 p->save(); 131 p->save();
135 itm->paint( p, colgrp, cr, selected ); 132 itm->paint( p, colgrp, cr, selected );
136 p->restore(); 133 p->restore();
137 } 134 }
138} 135}
139 136
140OxydataQTI::OxydataQTI(QTable * table, EditType et, const QString & text ) 137OxydataQTI::OxydataQTI(QTable * table, EditType et, const QString & text )
141 : QTableItem ( table, et, text ) 138 : QTableItem ( table, et, text )
142{ 139{
143} 140}
144 141
145int OxydataQTI::alignment() const 142int OxydataQTI::alignment() const
146{ 143{
147 if ( col()%2 ) 144 if ( col()%2 )
148 { 145 {
149 return AlignRight | AlignVCenter; 146 return AlignRight | AlignVCenter;
150 }else return AlignLeft | AlignVCenter; 147 }else return AlignLeft | AlignVCenter;
151}; 148};
152 149
diff --git a/noncore/apps/oxygen/datawidgetui.cpp b/noncore/apps/oxygen/datawidgetui.cpp
index e1d6e41..dcb80e5 100644
--- a/noncore/apps/oxygen/datawidgetui.cpp
+++ b/noncore/apps/oxygen/datawidgetui.cpp
@@ -1,53 +1,48 @@
1/*************************************************************************** 1/***************************************************************************
2 application: : Oxygen 2 application: : Oxygen
3 3
4 begin : September 2002 4 begin : September 2002
5 copyright : ( C ) 2002 by Carsten Niehaus 5 copyright : ( C ) 2002 by Carsten Niehaus
6 email : cniehaus@handhelds.org 6 email : cniehaus@handhelds.org
7 **************************************************************************/ 7 **************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * ( at your option ) any later version. * 14 * ( at your option ) any later version. *
15 * * 15 * *
16 **************************************************************************/ 16 **************************************************************************/
17 17
18#include "datawidgetui.h" 18#include "datawidgetui.h"
19#include "dataTable.h" 19#include "dataTable.h"
20 20
21#include <qpe/config.h>
22#include <qstring.h>
23#include <qcombobox.h> 21#include <qcombobox.h>
24#include <qlayout.h> 22#include <qlayout.h>
25#include <qhbox.h>
26#include <qlabel.h>
27#include <qpe/qpeapplication.h>
28 23
29dataWidgetUI::dataWidgetUI(const QStringList &list) : QWidget() 24dataWidgetUI::dataWidgetUI(const QStringList &list) : QWidget()
30{ 25{
31 names = list; 26 names = list;
32 27
33 this->setCaption( tr( "Chemical Data" )); 28 this->setCaption( tr( "Chemical Data" ));
34 QGridLayout *qgrid = new QGridLayout( this, 2,1 ); 29 QGridLayout *qgrid = new QGridLayout( this, 2,1 );
35 30
36 dataCombo = new QComboBox( this ); 31 dataCombo = new QComboBox( this );
37 32
38 //read in all names of the 118 elements 33 //read in all names of the 118 elements
39 int i = 0; 34 int i = 0;
40 for ( QStringList::ConstIterator it = names.begin() ; it != names.end() ; ++it,i++) 35 for ( QStringList::ConstIterator it = names.begin() ; it != names.end() ; ++it,i++)
41 { 36 {
42 dataCombo->insertItem( QString::number( i+1 )+" - "+*it ); 37 dataCombo->insertItem( QString::number( i+1 )+" - "+*it );
43 } 38 }
44 OxydataWidget *oxyDW = new OxydataWidget(this, "OxydataWidget_oxyDW", names); 39 OxydataWidget *oxyDW = new OxydataWidget(this, "OxydataWidget_oxyDW", names);
45 connect ( dataCombo, SIGNAL( activated(int) ), oxyDW, SLOT( setElement(int) ) ); 40 connect ( dataCombo, SIGNAL( activated(int) ), oxyDW, SLOT( setElement(int) ) );
46 oxyDW->setElement( 0 ); 41 oxyDW->setElement( 0 );
47 oxyDW->setLayout(); 42 oxyDW->setLayout();
48 43
49 qgrid->addWidget( dataCombo, 0,0); 44 qgrid->addWidget( dataCombo, 0,0);
50 qgrid->addWidget( oxyDW , 1,0 ); 45 qgrid->addWidget( oxyDW , 1,0 );
51} 46}
52 47
53 48
diff --git a/noncore/apps/oxygen/kmolcalc.cpp b/noncore/apps/oxygen/kmolcalc.cpp
index 7a47942..b9f5209 100644
--- a/noncore/apps/oxygen/kmolcalc.cpp
+++ b/noncore/apps/oxygen/kmolcalc.cpp
@@ -1,145 +1,142 @@
1/* 1/*
2 * kmolcalc.cpp 2 * kmolcalc.cpp
3 * 3 *
4 * Copyright (C) 2000,2001 Tomislav Gountchev <tomi@idiom.com> 4 * Copyright (C) 2000,2001 Tomislav Gountchev <tomi@idiom.com>
5 * Copyright (C) 2002 Carsten Niehaus <cniehaus@handhelds.org> 5 * Copyright (C) 2002 Carsten Niehaus <cniehaus@handhelds.org>
6 */ 6 */
7 7
8/** 8/**
9 * KMOLCALC is the calculation engine. It knows about a hashtable of user defined atomic 9 * KMOLCALC is the calculation engine. It knows about a hashtable of user defined atomic
10 * weights and group definitions ELSTABLE, and the currently processed formula, stored 10 * weights and group definitions ELSTABLE, and the currently processed formula, stored
11 * as a list of elements and their coefficients, ELEMENTS. 11 * as a list of elements and their coefficients, ELEMENTS.
12 */ 12 */
13 13
14#include "kmolcalc.h" 14#include "kmolcalc.h"
15#include <qdict.h>
16#include <qdir.h>
17#include <qfile.h>
18#include <qpe/qpeapplication.h> 15#include <qpe/qpeapplication.h>
19 16
20 17
21/** 18/**
22 * Construct a new calculator object. 19 * Construct a new calculator object.
23 */ 20 */
24KMolCalc::KMolCalc() { 21KMolCalc::KMolCalc() {
25 elements = new ElementList; 22 elements = new ElementList;
26 elstable = NULL; 23 elstable = NULL;
27 readElstable(); 24 readElstable();
28} 25}
29 26
30KMolCalc::~KMolCalc() { 27KMolCalc::~KMolCalc() {
31 delete elements; 28 delete elements;
32} 29}
33 30
34void KMolCalc::readElstable() { 31void KMolCalc::readElstable() {
35 weight = -1; // not calculated yet 32 weight = -1; // not calculated yet
36 if (elstable) delete elstable; 33 if (elstable) delete elstable;
37 elstable = new QDict<SubUnit> (197, TRUE); 34 elstable = new QDict<SubUnit> (197, TRUE);
38 elstable->setAutoDelete(TRUE); 35 elstable->setAutoDelete(TRUE);
39 mwfile = QPEApplication::qpeDir() +"share/oxygen/kmolweights"; 36 mwfile = QPEApplication::qpeDir() +"share/oxygen/kmolweights";
40 QFile f(mwfile); 37 QFile f(mwfile);
41 if (f.exists()) readMwfile(f); 38 if (f.exists()) readMwfile(f);
42} 39}
43 40
44 41
45/** 42/**
46 * Parse a string S and construct the ElementList this->ELEMENTS, representing the 43 * Parse a string S and construct the ElementList this->ELEMENTS, representing the
47 * composition of S. Returns 0 if successful, or an error code (currently -1) if 44 * composition of S. Returns 0 if successful, or an error code (currently -1) if
48 * parsing failed. 45 * parsing failed.
49 * The elements is S must be valid element or group symbols, as stored in this->ELSTABLE. 46 * The elements is S must be valid element or group symbols, as stored in this->ELSTABLE.
50 * See help files for correct formula syntax. 47 * See help files for correct formula syntax.
51 */ 48 */
52QString KMolCalc::readFormula(const QString& s) { 49QString KMolCalc::readFormula(const QString& s) {
53 weight = -1; 50 weight = -1;
54 if (elements) delete elements; 51 if (elements) delete elements;
55 elements = new ElementList; 52 elements = new ElementList;
56 return KMolCalc::readGroup(s, elements); 53 return KMolCalc::readGroup(s, elements);
57} 54}
58 55
59// read a formula group recursively. Called by readFormula. 56// read a formula group recursively. Called by readFormula.
60QString KMolCalc::readGroup(const QString& s, ElementList* els) { 57QString KMolCalc::readGroup(const QString& s, ElementList* els) {
61 if (s.isEmpty()) return QString ("Enter a formula."); //ERROR 58 if (s.isEmpty()) return QString ("Enter a formula."); //ERROR
62 int sl = s.length(); 59 int sl = s.length();
63 int i = 0; 60 int i = 0;
64 QString errors ("OK"); 61 QString errors ("OK");
65 bool ok = TRUE; 62 bool ok = TRUE;
66 while (i < sl && ((s[i] <= '9' && s[i] >= '0') || s[i] == '.')) i++; 63 while (i < sl && ((s[i] <= '9' && s[i] >= '0') || s[i] == '.')) i++;
67 double prefix = (i == 0 ? 1 : s.left(i).toDouble(&ok)); 64 double prefix = (i == 0 ? 1 : s.left(i).toDouble(&ok));
68 if (! ok || i == sl || prefix == 0) return QString ("Bad formula."); // ERROR 65 if (! ok || i == sl || prefix == 0) return QString ("Bad formula."); // ERROR
69 ElementList* elstemp = new ElementList; 66 ElementList* elstemp = new ElementList;
70 while (i < sl) { 67 while (i < sl) {
71 int j = i; 68 int j = i;
72 if (s[i] == '(') { 69 if (s[i] == '(') {
73 ElementList* inner = new ElementList; 70 ElementList* inner = new ElementList;
74 int level = 1; // count levels of nested ( ). 71 int level = 1; // count levels of nested ( ).
75 while (1) { 72 while (1) {
76 if (i++ == sl) { 73 if (i++ == sl) {
77 delete inner; 74 delete inner;
78 delete elstemp; 75 delete elstemp;
79 return QString ("Bad formula."); //ERROR 76 return QString ("Bad formula."); //ERROR
80 } 77 }
81 if (s[i] == '(') level++; 78 if (s[i] == '(') level++;
82 if (s[i] == ')') level--; 79 if (s[i] == ')') level--;
83 if (level == 0) break; 80 if (level == 0) break;
84 } 81 }
85 errors = KMolCalc::readGroup(s.mid(j+1, i-j-1), inner); 82 errors = KMolCalc::readGroup(s.mid(j+1, i-j-1), inner);
86 j = ++i; 83 j = ++i;
87 while (i < sl && ((s[i] <= '9' && s[i] >= '0') || s[i] == '.')) i++; 84 while (i < sl && ((s[i] <= '9' && s[i] >= '0') || s[i] == '.')) i++;
88 double suffix = (i == j ? 1 : s.mid(j, i-j).toDouble(&ok)); 85 double suffix = (i == j ? 1 : s.mid(j, i-j).toDouble(&ok));
89 if (! ok || suffix == 0) { 86 if (! ok || suffix == 0) {
90 delete inner; 87 delete inner;
91 delete elstemp; 88 delete elstemp;
92 return QString ("Bad formula."); // ERROR 89 return QString ("Bad formula."); // ERROR
93 } 90 }
94 inner->addTo(*elstemp, suffix); 91 inner->addTo(*elstemp, suffix);
95 delete inner; 92 delete inner;
96 inner = NULL; 93 inner = NULL;
97 } else if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')) { 94 } else if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')) {
98 while (++i < sl && ((s[i] >= 'a' && s[i] <= 'z') || s[i] == '*' || 95 while (++i < sl && ((s[i] >= 'a' && s[i] <= 'z') || s[i] == '*' ||
99 s[i] == '\'')); 96 s[i] == '\''));
100 QString elname = s.mid(j, i-j); 97 QString elname = s.mid(j, i-j);
101 j = i; 98 j = i;
102 while (i < sl && ((s[i] <= '9' && s[i] >= '0') || s[i] == '.')) i++; 99 while (i < sl && ((s[i] <= '9' && s[i] >= '0') || s[i] == '.')) i++;
103 double suffix = (i == j ? 1 : s.mid(j, i-j).toDouble(&ok)); 100 double suffix = (i == j ? 1 : s.mid(j, i-j).toDouble(&ok));
104 if (! ok || suffix == 0) { 101 if (! ok || suffix == 0) {
105 delete elstemp; 102 delete elstemp;
106 return QString ("Bad formula."); // ERROR 103 return QString ("Bad formula."); // ERROR
107 } 104 }
108 SubUnit* group = elstable->find(elname); 105 SubUnit* group = elstable->find(elname);
109 if (group == 0) { 106 if (group == 0) {
110 delete elstemp; 107 delete elstemp;
111 return QString ("Undefined symbol: ") + elname; //ERROR 108 return QString ("Undefined symbol: ") + elname; //ERROR
112 } 109 }
113 group->addTo(*elstemp, suffix); 110 group->addTo(*elstemp, suffix);
114 } else if (s[i] == '+') { 111 } else if (s[i] == '+') {
115 if (elstemp->isEmpty()) { 112 if (elstemp->isEmpty()) {
116 delete elstemp; 113 delete elstemp;
117 return QString ("Bad formula."); //ERROR 114 return QString ("Bad formula."); //ERROR
118 } 115 }
119 elstemp->addTo(*els, prefix); 116 elstemp->addTo(*els, prefix);
120 delete elstemp; 117 delete elstemp;
121 errors = KMolCalc::readGroup(s.mid(i+1, sl-i-1), els); 118 errors = KMolCalc::readGroup(s.mid(i+1, sl-i-1), els);
122 return errors; 119 return errors;
123 } else { 120 } else {
124 delete elstemp; 121 delete elstemp;
125 return QString ("Bad formula."); //ERROR 122 return QString ("Bad formula."); //ERROR
126 } 123 }
127 } 124 }
128 elstemp->addTo(*els, prefix); 125 elstemp->addTo(*els, prefix);
129 delete elstemp; 126 delete elstemp;
130 return errors; 127 return errors;
131} 128}
132 129
133/** 130/**
134 * Calculate and return the molecular weight of the current chemical formula. 131 * Calculate and return the molecular weight of the current chemical formula.
135 */ 132 */
136double KMolCalc::getWeight() { 133double KMolCalc::getWeight() {
137 if (weight == -1) weight = elements->getWeight(elstable); 134 if (weight == -1) weight = elements->getWeight(elstable);
138 return weight; 135 return weight;
139} 136}
140 137
141/** 138/**
142 * Return the elemental composition of the current formula, as a string of tab-separated 139 * Return the elemental composition of the current formula, as a string of tab-separated
143 * element - percentage pairs, separated by newlines. 140 * element - percentage pairs, separated by newlines.
144 */ 141 */
145QString KMolCalc::getEA() { 142QString KMolCalc::getEA() {
diff --git a/noncore/apps/oxygen/oxyframe.cpp b/noncore/apps/oxygen/oxyframe.cpp
index 5a4dbbe..8cc520e 100644
--- a/noncore/apps/oxygen/oxyframe.cpp
+++ b/noncore/apps/oxygen/oxyframe.cpp
@@ -1,41 +1,39 @@
1/*************************************************************************** 1/***************************************************************************
2 application: : Oxygen 2 application: : Oxygen
3 3
4 begin : September 2002 4 begin : September 2002
5 copyright : ( C ) 2002 by Carsten Niehaus 5 copyright : ( C ) 2002 by Carsten Niehaus
6 email : cniehaus@handhelds.org 6 email : cniehaus@handhelds.org
7 **************************************************************************/ 7 **************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * ( at your option ) any later version. * 14 * ( at your option ) any later version. *
15 * * 15 * *
16 **************************************************************************/ 16 **************************************************************************/
17#include "oxygen.h"
18 17
19#include <qpe/config.h>
20#include "oxyframe.h" 18#include "oxyframe.h"
21 19
22OxyFrame::OxyFrame(QWidget *parent, const char *name, QString symbol ) 20OxyFrame::OxyFrame(QWidget *parent, const char *name, QString symbol )
23 : QLabel(parent,name) 21 : QLabel(parent,name)
24{ 22{
25 N = name; 23 N = name;
26 this->setFrameStyle( QFrame::Box ); 24 this->setFrameStyle( QFrame::Box );
27 this->setLineWidth( 0 ); 25 this->setLineWidth( 0 );
28 this->setMidLineWidth( 1 ); 26 this->setMidLineWidth( 1 );
29 this->setFrameShadow( QFrame::Sunken ); 27 this->setFrameShadow( QFrame::Sunken );
30 setMinimumSize(6,6); 28 setMinimumSize(6,6);
31 setScaledContents( true ); 29 setScaledContents( true );
32 QFont font; 30 QFont font;
33 font.setWeight(QFont::Light); 31 font.setWeight(QFont::Light);
34 font.setPixelSize(3); 32 font.setPixelSize(3);
35 setFont( font ); 33 setFont( font );
36 setText( symbol ); 34 setText( symbol );
37} 35}
38 36
39void OxyFrame::mousePressEvent ( QMouseEvent* /*e*/ ){ 37void OxyFrame::mousePressEvent ( QMouseEvent* /*e*/ ){
40 emit num( N ); 38 emit num( N );
41}; 39};
diff --git a/noncore/apps/oxygen/oxygen.cpp b/noncore/apps/oxygen/oxygen.cpp
index 5bdc2aa..5ea97bf 100644
--- a/noncore/apps/oxygen/oxygen.cpp
+++ b/noncore/apps/oxygen/oxygen.cpp
@@ -1,150 +1,148 @@
1/*************************************************************************** 1/***************************************************************************
2 application: : Oxygen 2 application: : Oxygen
3 3
4 begin : September 2002 4 begin : September 2002
5 copyright : ( C ) 2002 by Carsten Niehaus 5 copyright : ( C ) 2002 by Carsten Niehaus
6 email : cniehaus@handhelds.org 6 email : cniehaus@handhelds.org
7 **************************************************************************/ 7 **************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * ( at your option ) any later version. * 14 * ( at your option ) any later version. *
15 * * 15 * *
16 **************************************************************************/ 16 **************************************************************************/
17#include "oxygen.h" 17#include "oxygen.h"
18 18
19#include <qapplication.h>
20#include <qtabwidget.h> 19#include <qtabwidget.h>
21 20
22#include "calcdlg.h"
23#include "calcdlgui.h" 21#include "calcdlgui.h"
24#include "datawidgetui.h" 22#include "datawidgetui.h"
25#include "psewidget.h" 23#include "psewidget.h"
26 24
27 25
28Oxygen::Oxygen( QWidget *parent, const char *name, WFlags f) : QMainWindow( parent, name, f ) 26Oxygen::Oxygen( QWidget *parent, const char *name, WFlags f) : QMainWindow( parent, name, f )
29{ 27{
30 loadNames(); 28 loadNames();
31 calcDlgUI *CalcDlgUI = new calcDlgUI(); 29 calcDlgUI *CalcDlgUI = new calcDlgUI();
32 PSEWidget *pse = new PSEWidget(names); 30 PSEWidget *pse = new PSEWidget(names);
33 dataWidgetUI *DataWidgetUI = new dataWidgetUI(names); 31 dataWidgetUI *DataWidgetUI = new dataWidgetUI(names);
34 32
35 setCaption( tr( "Oxygen" ) ); 33 setCaption( tr( "Oxygen" ) );
36 34
37 QTabWidget *tabw = new QTabWidget( this , "qtab" ); 35 QTabWidget *tabw = new QTabWidget( this , "qtab" );
38 tabw->addTab( pse, tr( "PSE" )); 36 tabw->addTab( pse, tr( "PSE" ));
39 tabw->addTab( DataWidgetUI , tr( "Data" ) ); 37 tabw->addTab( DataWidgetUI , tr( "Data" ) );
40 tabw->addTab( CalcDlgUI, tr( "Calculations" ) ); 38 tabw->addTab( CalcDlgUI, tr( "Calculations" ) );
41 setCentralWidget( tabw ); 39 setCentralWidget( tabw );
42} 40}
43 41
44void Oxygen::loadNames() 42void Oxygen::loadNames()
45{ 43{
46 names.clear(); 44 names.clear();
47 names.append( tr("Hydrogen") ); 45 names.append( tr("Hydrogen") );
48 names.append( tr("Helium") ); 46 names.append( tr("Helium") );
49 names.append( tr("Lithium") ); 47 names.append( tr("Lithium") );
50 names.append( tr("Beryllium") ); 48 names.append( tr("Beryllium") );
51 names.append( tr("Boron") ); 49 names.append( tr("Boron") );
52 names.append( tr("Carbon") ); 50 names.append( tr("Carbon") );
53 names.append( tr("Nitrogen") ); 51 names.append( tr("Nitrogen") );
54 names.append( tr("Oxygen") ); 52 names.append( tr("Oxygen") );
55 names.append( tr("Fluorine") ); 53 names.append( tr("Fluorine") );
56 names.append( tr("Neon") ); 54 names.append( tr("Neon") );
57 names.append( tr("Sodium") ); 55 names.append( tr("Sodium") );
58 names.append( tr("Magnesium") ); 56 names.append( tr("Magnesium") );
59 names.append( tr("Aluminum") ); 57 names.append( tr("Aluminum") );
60 names.append( tr("Silicon") ); 58 names.append( tr("Silicon") );
61 names.append( tr("Phosphorus") ); 59 names.append( tr("Phosphorus") );
62 names.append( tr("Sulfur") ); 60 names.append( tr("Sulfur") );
63 names.append( tr("Chlorine") ); 61 names.append( tr("Chlorine") );
64 names.append( tr("Argon") ); 62 names.append( tr("Argon") );
65 names.append( tr("Potassium") ); 63 names.append( tr("Potassium") );
66 names.append( tr("Calcium") ); 64 names.append( tr("Calcium") );
67 names.append( tr("Scandium") ); 65 names.append( tr("Scandium") );
68 names.append( tr("Titanium") ); 66 names.append( tr("Titanium") );
69 names.append( tr("Vanadium") ); 67 names.append( tr("Vanadium") );
70 names.append( tr("Chromium") ); 68 names.append( tr("Chromium") );
71 names.append( tr("Manganese") ); 69 names.append( tr("Manganese") );
72 names.append( tr("Iron") ); 70 names.append( tr("Iron") );
73 names.append( tr("Cobalt") ); 71 names.append( tr("Cobalt") );
74 names.append( tr("Nickel") ); 72 names.append( tr("Nickel") );
75 names.append( tr("Copper") ); 73 names.append( tr("Copper") );
76 names.append( tr("Zinc") ); 74 names.append( tr("Zinc") );
77 names.append( tr("Gallium") ); 75 names.append( tr("Gallium") );
78 names.append( tr("Germanium") ); 76 names.append( tr("Germanium") );
79 names.append( tr("Arsenic") ); 77 names.append( tr("Arsenic") );
80 names.append( tr("Selenium") ); 78 names.append( tr("Selenium") );
81 names.append( tr("Bromine") ); 79 names.append( tr("Bromine") );
82 names.append( tr("Krypton") ); 80 names.append( tr("Krypton") );
83 names.append( tr("Rubidium") ); 81 names.append( tr("Rubidium") );
84 names.append( tr("Strontium") ); 82 names.append( tr("Strontium") );
85 names.append( tr("Yttrium") ); 83 names.append( tr("Yttrium") );
86 names.append( tr("Zirconium") ); 84 names.append( tr("Zirconium") );
87 names.append( tr("Niobium") ); 85 names.append( tr("Niobium") );
88 names.append( tr("Molybdenum") ); 86 names.append( tr("Molybdenum") );
89 names.append( tr("Technetium") ); 87 names.append( tr("Technetium") );
90 names.append( tr("Ruthenium") ); 88 names.append( tr("Ruthenium") );
91 names.append( tr("Rhodium") ); 89 names.append( tr("Rhodium") );
92 names.append( tr("Palladium") ); 90 names.append( tr("Palladium") );
93 names.append( tr("Silver") ); 91 names.append( tr("Silver") );
94 names.append( tr("Cadmium") ); 92 names.append( tr("Cadmium") );
95 names.append( tr("Indium") ); 93 names.append( tr("Indium") );
96 names.append( tr("Tin") ); 94 names.append( tr("Tin") );
97 names.append( tr("Antimony") ); 95 names.append( tr("Antimony") );
98 names.append( tr("Tellurium") ); 96 names.append( tr("Tellurium") );
99 names.append( tr("Iodine") ); 97 names.append( tr("Iodine") );
100 names.append( tr("Xenon") ); 98 names.append( tr("Xenon") );
101 names.append( tr("Cesium") ); 99 names.append( tr("Cesium") );
102 names.append( tr("Barium") ); 100 names.append( tr("Barium") );
103 names.append( tr("Lanthanum") ); 101 names.append( tr("Lanthanum") );
104 names.append( tr("Cerium") ); 102 names.append( tr("Cerium") );
105 names.append( tr("Praseodymium") ); 103 names.append( tr("Praseodymium") );
106 names.append( tr("Neodymium") ); 104 names.append( tr("Neodymium") );
107 names.append( tr("Promethium") ); 105 names.append( tr("Promethium") );
108 names.append( tr("Samarium") ); 106 names.append( tr("Samarium") );
109 names.append( tr("Europium") ); 107 names.append( tr("Europium") );
110 names.append( tr("Gadolinium") ); 108 names.append( tr("Gadolinium") );
111 names.append( tr("Terbium") ); 109 names.append( tr("Terbium") );
112 names.append( tr("Dysprosium") ); 110 names.append( tr("Dysprosium") );
113 names.append( tr("Holmium") ); 111 names.append( tr("Holmium") );
114 names.append( tr("Erbium") ); 112 names.append( tr("Erbium") );
115 names.append( tr("Thulium") ); 113 names.append( tr("Thulium") );
116 names.append( tr("Ytterbium") ); 114 names.append( tr("Ytterbium") );
117 names.append( tr("Lutetium") ); 115 names.append( tr("Lutetium") );
118 names.append( tr("Hafnium") ); 116 names.append( tr("Hafnium") );
119 names.append( tr("Tantalum") ); 117 names.append( tr("Tantalum") );
120 names.append( tr("Tungsten") ); 118 names.append( tr("Tungsten") );
121 names.append( tr("Rhenium") ); 119 names.append( tr("Rhenium") );
122 names.append( tr("Osmium") ); 120 names.append( tr("Osmium") );
123 names.append( tr("Iridium") ); 121 names.append( tr("Iridium") );
124 names.append( tr("Platinum") ); 122 names.append( tr("Platinum") );
125 names.append( tr("Gold") ); 123 names.append( tr("Gold") );
126 names.append( tr("Mercury") ); 124 names.append( tr("Mercury") );
127 names.append( tr("Thallium") ); 125 names.append( tr("Thallium") );
128 names.append( tr("Lead") ); 126 names.append( tr("Lead") );
129 names.append( tr("Bismuth") ); 127 names.append( tr("Bismuth") );
130 names.append( tr("Polonium") ); 128 names.append( tr("Polonium") );
131 names.append( tr("Astatine") ); 129 names.append( tr("Astatine") );
132 names.append( tr("Radon") ); 130 names.append( tr("Radon") );
133 names.append( tr("Francium") ); 131 names.append( tr("Francium") );
134 names.append( tr("Radium") ); 132 names.append( tr("Radium") );
135 names.append( tr("Actinium") ); 133 names.append( tr("Actinium") );
136 names.append( tr("Thorium") ); 134 names.append( tr("Thorium") );
137 names.append( tr("Protactinium") ); 135 names.append( tr("Protactinium") );
138 names.append( tr("Uranium") ); 136 names.append( tr("Uranium") );
139 names.append( tr("Neptunium") ); 137 names.append( tr("Neptunium") );
140 names.append( tr("Plutonium") ); 138 names.append( tr("Plutonium") );
141 names.append( tr("Americium") ); 139 names.append( tr("Americium") );
142 names.append( tr("Curium") ); 140 names.append( tr("Curium") );
143 names.append( tr("Berkelium") ); 141 names.append( tr("Berkelium") );
144 names.append( tr("Californium") ); 142 names.append( tr("Californium") );
145 names.append( tr("Einsteinium") ); 143 names.append( tr("Einsteinium") );
146 names.append( tr("Fermium") ); 144 names.append( tr("Fermium") );
147 names.append( tr("Mendelevium") ); 145 names.append( tr("Mendelevium") );
148 names.append( tr("Nobelium") ); 146 names.append( tr("Nobelium") );
149 names.append( tr("Lawrencium") ); 147 names.append( tr("Lawrencium") );
150 names.append( tr("Rutherfordium") ); 148 names.append( tr("Rutherfordium") );
diff --git a/noncore/apps/oxygen/psewidget.cpp b/noncore/apps/oxygen/psewidget.cpp
index be5185b..7f7ae0c 100644
--- a/noncore/apps/oxygen/psewidget.cpp
+++ b/noncore/apps/oxygen/psewidget.cpp
@@ -1,152 +1,150 @@
1/*************************************************************************** 1/***************************************************************************
2 application: : Oxygen 2 application: : Oxygen
3 3
4 begin : September 2002 4 begin : September 2002
5 copyright : ( C ) 2002, 2003 by Carsten Niehaus 5 copyright : ( C ) 2002, 2003 by Carsten Niehaus
6 email : cniehaus@handhelds.org 6 email : cniehaus@handhelds.org
7 **************************************************************************/ 7 **************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * ( at your option ) any later version. * 14 * ( at your option ) any later version. *
15 * * 15 * *
16 **************************************************************************/ 16 **************************************************************************/
17 17
18#include <qpe/config.h> 18#include <qpe/config.h>
19#include <qlayout.h> 19#include <qlayout.h>
20#include <qpe/qpeapplication.h> 20#include <qpe/qpeapplication.h>
21#include <qlist.h>
22#include "dataTable.h" 21#include "dataTable.h"
23#include "psewidget.h" 22#include "psewidget.h"
24#include "oxyframe.h"
25 23
26 24
27PSEWidget::PSEWidget(const QStringList &list) : QWidget() 25PSEWidget::PSEWidget(const QStringList &list) : QWidget()
28{ 26{
29 this->setCaption( tr( "Periodic System" ) ); 27 this->setCaption( tr( "Periodic System" ) );
30 28
31 lastElement=1; 29 lastElement=1;
32 names = list; 30 names = list;
33 31
34 QVBoxLayout *vlay = new QVBoxLayout( this ); 32 QVBoxLayout *vlay = new QVBoxLayout( this );
35 33
36 QGridLayout *grid = new QGridLayout( 18,10 ); 34 QGridLayout *grid = new QGridLayout( 18,10 );
37 int h=0, v=0; 35 int h=0, v=0;
38 36
39 Config configobj( QPEApplication::qpeDir() +"share/oxygen/oxygendata", Config::File ); 37 Config configobj( QPEApplication::qpeDir() +"share/oxygen/oxygendata", Config::File );
40 for( int n = 0 ; n < 109 ; n++ ) 38 for( int n = 0 ; n < 109 ; n++ )
41 { 39 {
42 configobj.setGroup( QString::number( n+1 )); 40 configobj.setGroup( QString::number( n+1 ));
43 41
44 position( n+1,h,v ); 42 position( n+1,h,v );
45 PSEframe.append( new OxyFrame( this , QString::number(n), configobj.readEntry( "Symbol" ) ) ); 43 PSEframe.append( new OxyFrame( this , QString::number(n), configobj.readEntry( "Symbol" ) ) );
46 grid->addWidget( PSEframe.current() , v/40+1 , h/40 ); 44 grid->addWidget( PSEframe.current() , v/40+1 , h/40 );
47 PSEframe.current()->setMinimumHeight( 11 ); 45 PSEframe.current()->setMinimumHeight( 11 );
48 PSEframe.current()->setPalette( QPalette( PSEColor( configobj.readEntry( "Block" ) ) ) ); 46 PSEframe.current()->setPalette( QPalette( PSEColor( configobj.readEntry( "Block" ) ) ) );
49 connect( PSEframe.current(), SIGNAL( num(QString) ), this, SLOT( slotShowElement(QString) )); 47 connect( PSEframe.current(), SIGNAL( num(QString) ), this, SLOT( slotShowElement(QString) ));
50 connect( PSEframe.current(), SIGNAL( num(QString) ), this, SLOT( inverseColor(QString) )); 48 connect( PSEframe.current(), SIGNAL( num(QString) ), this, SLOT( inverseColor(QString) ));
51 } 49 }
52 50
53 oxyDW = new OxydataWidget(this, "PSEWidget_oxyDW", names); 51 oxyDW = new OxydataWidget(this, "PSEWidget_oxyDW", names);
54 oxyDW->setElement( 0 ); 52 oxyDW->setElement( 0 );
55 oxyDW->setLayout(); 53 oxyDW->setLayout();
56 54
57 vlay->addLayout( grid ); 55 vlay->addLayout( grid );
58 vlay->addWidget( oxyDW ); 56 vlay->addWidget( oxyDW );
59} 57}
60 58
61QColor PSEWidget::PSEColor( QString block ) const 59QColor PSEWidget::PSEColor( QString block ) const
62{ 60{
63 QColor c; 61 QColor c;
64 if ( block == "s" ) c.setRgb( 213 , 233 , 231 ); 62 if ( block == "s" ) c.setRgb( 213 , 233 , 231 );
65 else if ( block == "d" ) c.setRgb( 200,230,160 ); 63 else if ( block == "d" ) c.setRgb( 200,230,160 );
66 else if ( block == "p" ) c.setRgb( 238,146,138 ); 64 else if ( block == "p" ) c.setRgb( 238,146,138 );
67 else if ( block == "f" ) c.setRgb( 190 , 190 , 190 ); 65 else if ( block == "f" ) c.setRgb( 190 , 190 , 190 );
68 return c; 66 return c;
69}; 67};
70 68
71void PSEWidget::inverseColor( QString number) 69void PSEWidget::inverseColor( QString number)
72{ 70{
73 Config configobj( QPEApplication::qpeDir() +"share/oxygen/oxygendata", Config::File ); 71 Config configobj( QPEApplication::qpeDir() +"share/oxygen/oxygendata", Config::File );
74 configobj.setGroup( number ); 72 configobj.setGroup( number );
75 QString block = configobj.readEntry( "Block" ); 73 QString block = configobj.readEntry( "Block" );
76 QColor c, d; 74 QColor c, d;
77 c = PSEColor( block ); 75 c = PSEColor( block );
78 d = c.dark(); 76 d = c.dark();
79 77
80 PSEframe.at( number.toUInt() )->setPalette( QPalette( d ) ); 78 PSEframe.at( number.toUInt() )->setPalette( QPalette( d ) );
81 79
82 configobj.setGroup( QString::number( lastElement+1 ) ); 80 configobj.setGroup( QString::number( lastElement+1 ) );
83 block = configobj.readEntry( "Block" ); 81 block = configobj.readEntry( "Block" );
84 c = PSEColor( block ); 82 c = PSEColor( block );
85 PSEframe.at( lastElement )->setPalette( QPalette( c ) ); 83 PSEframe.at( lastElement )->setPalette( QPalette( c ) );
86 84
87 lastElement=number.toInt(); 85 lastElement=number.toInt();
88} 86}
89 87
90void PSEWidget::slotShowElement(QString number) 88void PSEWidget::slotShowElement(QString number)
91{ 89{
92 oxyDW->setElement( number.toInt() ); 90 oxyDW->setElement( number.toInt() );
93}; 91};
94 92
95void PSEWidget::position(int n, int& h, int& v) 93void PSEWidget::position(int n, int& h, int& v)
96{ 94{
97 //Hydrogen 95 //Hydrogen
98 if (n == 1) 96 if (n == 1)
99 { 97 {
100 h=0; v=0; 98 h=0; v=0;
101 } 99 }
102 100
103 101
104 //Helium 102 //Helium
105 if (n == 2) 103 if (n == 2)
106 { 104 {
107 h=680; v=0; 105 h=680; v=0;
108 } 106 }
109 107
110 108
111 //Lithium 109 //Lithium
112 if (n == 3) 110 if (n == 3)
113 { 111 {
114 h=0; v=40; 112 h=0; v=40;
115 } 113 }
116 114
117 115
118 //Beryllium 116 //Beryllium
119 if (n == 4) 117 if (n == 4)
120 { 118 {
121 h=40; v=40; 119 h=40; v=40;
122 } 120 }
123 121
124 122
125 //Boron-->Neon or Aluminum --> Argon 123 //Boron-->Neon or Aluminum --> Argon
126 if ((n >= 5 && n <= 10) || (n >= 13 && n <= 18)) 124 if ((n >= 5 && n <= 10) || (n >= 13 && n <= 18))
127 for (int i = 1; i <= (6-(10-n)); i++) 125 for (int i = 1; i <= (6-(10-n)); i++)
128 { 126 {
129 h=((i*40)+440); 127 h=((i*40)+440);
130 v = 40; 128 v = 40;
131 if (n >= 13) 129 if (n >= 13)
132 { 130 {
133 v=80; 131 v=80;
134 h=(h-320); 132 h=(h-320);
135 } 133 }
136 } 134 }
137 135
138 136
139 //Sodium 137 //Sodium
140 if (n == 11) 138 if (n == 11)
141 { 139 {
142 h=0; v=80; 140 h=0; v=80;
143 } 141 }
144 142
145 143
146 //Magnesium 144 //Magnesium
147 if (n == 12) 145 if (n == 12)
148 { 146 {
149 h=40; v=80; 147 h=40; v=80;
150 } 148 }
151 149
152 150
diff --git a/noncore/apps/qashmoney/account.cpp b/noncore/apps/qashmoney/account.cpp
index 181be23..f21598e 100755
--- a/noncore/apps/qashmoney/account.cpp
+++ b/noncore/apps/qashmoney/account.cpp
@@ -1,131 +1,129 @@
1#include "account.h" 1#include "account.h"
2#include "transaction.h"
3#include "transfer.h"
4#include "preferences.h" 2#include "preferences.h"
5 3
6#include <qpixmap.h> 4#include <qpixmap.h>
7#include <stdlib.h> 5#include <stdlib.h>
8 6
9extern Preferences *preferences; 7extern Preferences *preferences;
10 8
11Account::Account () 9Account::Account ()
12 { 10 {
13 adb = sqlite_open ( "qmaccounts.db", 0, NULL ); 11 adb = sqlite_open ( "qmaccounts.db", 0, NULL );
14 } 12 }
15 13
16Account::~Account () 14Account::~Account ()
17 { 15 {
18 sqlite_close ( adb ); 16 sqlite_close ( adb );
19 } 17 }
20 18
21void Account::addAccount ( QString name, int parentid, float balance, int type, QString description, float creditlimit, 19void Account::addAccount ( QString name, int parentid, float balance, int type, QString description, float creditlimit,
22 int statementyear, int statementmonth, int statementday, float statementbalance, const char *currency ) 20 int statementyear, int statementmonth, int statementday, float statementbalance, const char *currency )
23 { 21 {
24 sqlite_exec_printf ( adb, "insert into accounts2 values ( '%q', %i, %.2f, %i, '%q', %.2f, %i, %i, %i, %.2f, '%q', 0, 0, 0, 0, 0, NULL );", 0, 0, 0, 22 sqlite_exec_printf ( adb, "insert into accounts2 values ( '%q', %i, %.2f, %i, '%q', %.2f, %i, %i, %i, %.2f, '%q', 0, 0, 0, 0, 0, NULL );", 0, 0, 0,
25 (const char *) name, parentid, balance, type, (const char *) description, creditlimit, statementyear, statementmonth, statementday, statementbalance, currency ); 23 (const char *) name, parentid, balance, type, (const char *) description, creditlimit, statementyear, statementmonth, statementday, statementbalance, currency );
26 } 24 }
27 25
28void Account::updateAccount ( QString name, QString description, QString currencycode, int accountid ) 26void Account::updateAccount ( QString name, QString description, QString currencycode, int accountid )
29 { 27 {
30 sqlite_exec_printf ( adb, "update accounts2 set name = '%q', description = '%q', currency = '%q' where accountid = %i;", 0, 0, 0, ( const char * ) name, ( const char * ) description, ( const char * ) currencycode, accountid ); 28 sqlite_exec_printf ( adb, "update accounts2 set name = '%q', description = '%q', currency = '%q' where accountid = %i;", 0, 0, 0, ( const char * ) name, ( const char * ) description, ( const char * ) currencycode, accountid );
31 } 29 }
32 30
33void Account::deleteAccount ( int accountid ) 31void Account::deleteAccount ( int accountid )
34 { 32 {
35 sqlite_exec_printf ( adb, "delete from accounts2 where accountid = %i;", 0, 0, 0, accountid ); 33 sqlite_exec_printf ( adb, "delete from accounts2 where accountid = %i;", 0, 0, 0, accountid );
36 } 34 }
37 35
38void Account::setAccountExpanded ( int expanded, int accountid ) 36void Account::setAccountExpanded ( int expanded, int accountid )
39 { 37 {
40 sqlite_exec_printf ( adb, "update accounts2 set r1 = %i where accountid = %i;", 0, 0, 0, expanded, accountid ); 38 sqlite_exec_printf ( adb, "update accounts2 set r1 = %i where accountid = %i;", 0, 0, 0, expanded, accountid );
41 } 39 }
42 40
43int Account::getAccountExpanded ( int id ) 41int Account::getAccountExpanded ( int id )
44 { 42 {
45 char **results; 43 char **results;
46 sqlite_get_table_printf ( adb, "select r1 from accounts2 where accountid = %i;", &results, 0, 0, 0, id ); 44 sqlite_get_table_printf ( adb, "select r1 from accounts2 where accountid = %i;", &results, 0, 0, 0, id );
47 if ( strlen ( results [1] ) == 0 ) 45 if ( strlen ( results [1] ) == 0 )
48 return 0; 46 return 0;
49 else 47 else
50 return atoi ( results [ 1 ] ); 48 return atoi ( results [ 1 ] );
51 } 49 }
52 50
53int Account::getNumberOfAccounts () 51int Account::getNumberOfAccounts ()
54 { 52 {
55 char **results; 53 char **results;
56 sqlite_get_table ( adb, "select count() from accounts2;", &results, NULL, NULL, NULL ); 54 sqlite_get_table ( adb, "select count() from accounts2;", &results, NULL, NULL, NULL );
57 return atoi ( results [ 1 ] ); 55 return atoi ( results [ 1 ] );
58 } 56 }
59 57
60int Account::getNumberOfChildAccounts ( int id ) 58int Account::getNumberOfChildAccounts ( int id )
61 { 59 {
62 char **results; 60 char **results;
63 sqlite_get_table_printf ( adb, "select count() from accounts2 where parent = %i;", &results, NULL, NULL, NULL, id ); 61 sqlite_get_table_printf ( adb, "select count() from accounts2 where parent = %i;", &results, NULL, NULL, NULL, id );
64 return atoi ( results [ 1 ] ); 62 return atoi ( results [ 1 ] );
65 } 63 }
66 64
67void Account::updateAccountBalance ( int accountid ) 65void Account::updateAccountBalance ( int accountid )
68 { 66 {
69 // Here, we'll get a balance for the transactions in an account 67 // Here, we'll get a balance for the transactions in an account
70 sqlite *tdb = sqlite_open ( "qmtransactions.db", 0, NULL ); 68 sqlite *tdb = sqlite_open ( "qmtransactions.db", 0, NULL );
71 int rows, columns; 69 int rows, columns;
72 char **results; 70 char **results;
73 sqlite_get_table_printf ( tdb, "select sum (amount) from transactions where accountid= %i;", &results, &rows, &columns, NULL, accountid ); 71 sqlite_get_table_printf ( tdb, "select sum (amount) from transactions where accountid= %i;", &results, &rows, &columns, NULL, accountid );
74 float transactionsbalance = strtod ( results [ 1 ], 0 ); 72 float transactionsbalance = strtod ( results [ 1 ], 0 );
75 sqlite_close ( tdb ); 73 sqlite_close ( tdb );
76 74
77 // next, we'll get a balance for all the transfers from the account 75 // next, we'll get a balance for all the transfers from the account
78 sqlite *trdb = sqlite_open ( "qmtransfers.db", 0, NULL ); 76 sqlite *trdb = sqlite_open ( "qmtransfers.db", 0, NULL );
79 rows = 0; 77 rows = 0;
80 columns = 0; 78 columns = 0;
81 char **results2; 79 char **results2;
82 sqlite_get_table_printf ( trdb, "select sum (amount) from transfers where fromaccount = %i;", &results2, &rows, &columns, NULL, accountid ); 80 sqlite_get_table_printf ( trdb, "select sum (amount) from transfers where fromaccount = %i;", &results2, &rows, &columns, NULL, accountid );
83 float fromtransfersbalance = ( strtod ( results2 [ 1 ], 0 ) * -1 ); 81 float fromtransfersbalance = ( strtod ( results2 [ 1 ], 0 ) * -1 );
84 82
85 // finally, we'll get a balance for all the transfers into the account 83 // finally, we'll get a balance for all the transfers into the account
86 rows = 0; 84 rows = 0;
87 columns= 0; 85 columns= 0;
88 char **results3; 86 char **results3;
89 sqlite_get_table_printf ( trdb, "select sum (amount) from transfers where toaccount = %i;", &results3, &rows, &columns, NULL, accountid ); 87 sqlite_get_table_printf ( trdb, "select sum (amount) from transfers where toaccount = %i;", &results3, &rows, &columns, NULL, accountid );
90 float totransfersbalance = strtod ( results3 [ 1 ], 0 ); 88 float totransfersbalance = strtod ( results3 [ 1 ], 0 );
91 89
92 sqlite_close ( trdb ); 90 sqlite_close ( trdb );
93 91
94 // calculate and update new balance 92 // calculate and update new balance
95 sqlite_exec_printf ( adb, "update accounts2 set balance = %.2f where accountid = %i;", 0, 0, 0, 93 sqlite_exec_printf ( adb, "update accounts2 set balance = %.2f where accountid = %i;", 0, 0, 0,
96 ( transactionsbalance + fromtransfersbalance + totransfersbalance + getStatementBalance ( accountid ) ), accountid ); 94 ( transactionsbalance + fromtransfersbalance + totransfersbalance + getStatementBalance ( accountid ) ), accountid );
97 } 95 }
98 96
99void Account::changeParentAccountBalance ( int parentid ) 97void Account::changeParentAccountBalance ( int parentid )
100 { 98 {
101 // select all child balances that share the parent of the current child account 99 // select all child balances that share the parent of the current child account
102 char **results; 100 char **results;
103 int rows; 101 int rows;
104 sqlite_get_table_printf ( adb, "select sum ( balance ) from accounts2 where parent = %i;", &results, &rows, NULL, NULL, parentid ); 102 sqlite_get_table_printf ( adb, "select sum ( balance ) from accounts2 where parent = %i;", &results, &rows, NULL, NULL, parentid );
105 sqlite_exec_printf ( adb, "update accounts2 set balance = %.2f where accountid = %i;", 0, 0, 0, strtod ( results[ 1 ], NULL ), parentid ); 103 sqlite_exec_printf ( adb, "update accounts2 set balance = %.2f where accountid = %i;", 0, 0, 0, strtod ( results[ 1 ], NULL ), parentid );
106 } 104 }
107 105
108int Account::getParentAccountID ( int id ) 106int Account::getParentAccountID ( int id )
109 { 107 {
110 char **results; 108 char **results;
111 sqlite_get_table_printf ( adb, "select parent from accounts2 where accountid = %i;", &results, NULL, NULL, NULL, id ); 109 sqlite_get_table_printf ( adb, "select parent from accounts2 where accountid = %i;", &results, NULL, NULL, NULL, id );
112 return atoi ( results [ 1 ] ); 110 return atoi ( results [ 1 ] );
113 } 111 }
114 112
115int Account::getParentAccountID ( QString accountname ) 113int Account::getParentAccountID ( QString accountname )
116 { 114 {
117 char **results; 115 char **results;
118 sqlite_get_table_printf ( adb, "select parent from accounts2 where name= '%q';", &results, NULL, NULL, NULL, ( const char * ) accountname ); 116 sqlite_get_table_printf ( adb, "select parent from accounts2 where name= '%q';", &results, NULL, NULL, NULL, ( const char * ) accountname );
119 return atoi ( results [ 1 ] ); 117 return atoi ( results [ 1 ] );
120 } 118 }
121 119
122void Account::displayAccounts ( QListView *listview ) 120void Account::displayAccounts ( QListView *listview )
123 { 121 {
124 char **results; 122 char **results;
125 int rows, columns; 123 int rows, columns;
126 sqlite_get_table ( adb, "select name, parent, balance, accountid, currency from accounts2;", &results, &rows, &columns, 0 ); 124 sqlite_get_table ( adb, "select name, parent, balance, accountid, currency from accounts2;", &results, &rows, &columns, 0 );
127 125
128 // determine if we are using currency support 126 // determine if we are using currency support
129 int currency = preferences->getPreference ( 4 ); 127 int currency = preferences->getPreference ( 4 );
130 128
131 // remove all columns from the account display 129 // remove all columns from the account display
diff --git a/noncore/apps/qashmoney/accountdisplay.cpp b/noncore/apps/qashmoney/accountdisplay.cpp
index d0ba82a..5ef5454 100755
--- a/noncore/apps/qashmoney/accountdisplay.cpp
+++ b/noncore/apps/qashmoney/accountdisplay.cpp
@@ -1,137 +1,135 @@
1#include <qdatetime.h>
2#include <qmessagebox.h> 1#include <qmessagebox.h>
3#include <qheader.h> 2#include <qheader.h>
4 3
5#include "accountdisplay.h" 4#include "accountdisplay.h"
6#include "newaccount.h" 5#include "newaccount.h"
7#include "transaction.h" 6#include "transaction.h"
8#include "transferdialog.h" 7#include "transferdialog.h"
9#include "preferences.h"
10#include "transfer.h" 8#include "transfer.h"
11 9
12extern Account *account; 10extern Account *account;
13extern Transaction *transaction; 11extern Transaction *transaction;
14extern Transfer *transfer; 12extern Transfer *transfer;
15extern Preferences *preferences; 13extern Preferences *preferences;
16 14
17AccountDisplay::AccountDisplay ( QWidget *parent ) : QWidget ( parent ) 15AccountDisplay::AccountDisplay ( QWidget *parent ) : QWidget ( parent )
18 { 16 {
19 cleared = 0; 17 cleared = 0;
20 18
21 firstline = new QHBox ( this ); 19 firstline = new QHBox ( this );
22 firstline->setSpacing ( 2 ); 20 firstline->setSpacing ( 2 );
23 21
24 newaccount = new QPushButton ( firstline ); 22 newaccount = new QPushButton ( firstline );
25 newaccount->setPixmap ( QPixmap ("/opt/QtPalmtop/pics/new.png") ); 23 newaccount->setPixmap ( QPixmap ("/opt/QtPalmtop/pics/new.png") );
26 connect ( newaccount, SIGNAL ( released () ), this, SLOT ( addAccount () ) ); 24 connect ( newaccount, SIGNAL ( released () ), this, SLOT ( addAccount () ) );
27 25
28 editaccount = new QPushButton ( firstline ); 26 editaccount = new QPushButton ( firstline );
29 editaccount->setPixmap ( QPixmap ("/opt/QtPalmtop/pics/edit.png") ); 27 editaccount->setPixmap ( QPixmap ("/opt/QtPalmtop/pics/edit.png") );
30 connect ( editaccount, SIGNAL ( released () ), this, SLOT ( editAccount () ) ); 28 connect ( editaccount, SIGNAL ( released () ), this, SLOT ( editAccount () ) );
31 29
32 deleteaccount = new QPushButton ( firstline ); 30 deleteaccount = new QPushButton ( firstline );
33 deleteaccount->setPixmap( QPixmap ( "/opt/QtPalmtop/pics/delete.png") ); 31 deleteaccount->setPixmap( QPixmap ( "/opt/QtPalmtop/pics/delete.png") );
34 connect ( deleteaccount, SIGNAL ( released () ), this, SLOT ( deleteAccount () ) ); 32 connect ( deleteaccount, SIGNAL ( released () ), this, SLOT ( deleteAccount () ) );
35 33
36 transferbutton = new QPushButton ( firstline ); 34 transferbutton = new QPushButton ( firstline );
37 transferbutton->setPixmap( QPixmap ( "/opt/QtPalmtop/pics/transfer.png") ); 35 transferbutton->setPixmap( QPixmap ( "/opt/QtPalmtop/pics/transfer.png") );
38 transferbutton->setToggleButton ( TRUE ); 36 transferbutton->setToggleButton ( TRUE );
39 connect ( transferbutton, SIGNAL ( toggled ( bool ) ), this, SLOT ( accountTransfer ( bool ) ) ); 37 connect ( transferbutton, SIGNAL ( toggled ( bool ) ), this, SLOT ( accountTransfer ( bool ) ) );
40 38
41 listview = new QListView ( this ); 39 listview = new QListView ( this );
42 listview->setAllColumnsShowFocus ( TRUE ); 40 listview->setAllColumnsShowFocus ( TRUE );
43 listview->setShowSortIndicator ( TRUE ); 41 listview->setShowSortIndicator ( TRUE );
44 listview->setRootIsDecorated ( TRUE ); 42 listview->setRootIsDecorated ( TRUE );
45 listview->setMultiSelection ( FALSE ); 43 listview->setMultiSelection ( FALSE );
46 connect ( listview, SIGNAL ( expanded ( QListViewItem * ) ), this, SLOT ( setAccountExpanded ( QListViewItem * ) ) ); 44 connect ( listview, SIGNAL ( expanded ( QListViewItem * ) ), this, SLOT ( setAccountExpanded ( QListViewItem * ) ) );
47 connect ( listview, SIGNAL ( collapsed ( QListViewItem * ) ), this, SLOT ( setAccountCollapsed ( QListViewItem * ) ) ); 45 connect ( listview, SIGNAL ( collapsed ( QListViewItem * ) ), this, SLOT ( setAccountCollapsed ( QListViewItem * ) ) );
48 46
49 listview->header()->setTracking ( FALSE ); 47 listview->header()->setTracking ( FALSE );
50 connect ( listview->header(), SIGNAL ( sizeChange ( int, int, int ) ), this, SLOT ( saveColumnSize ( int, int, int ) ) ); 48 connect ( listview->header(), SIGNAL ( sizeChange ( int, int, int ) ), this, SLOT ( saveColumnSize ( int, int, int ) ) );
51 connect ( listview->header(), SIGNAL ( clicked ( int ) ), this, SLOT ( saveSortingPreference ( int ) ) ); 49 connect ( listview->header(), SIGNAL ( clicked ( int ) ), this, SLOT ( saveSortingPreference ( int ) ) );
52 50
53 layout = new QVBoxLayout ( this, 2, 5 ); 51 layout = new QVBoxLayout ( this, 2, 5 );
54 layout->addWidget ( firstline ); 52 layout->addWidget ( firstline );
55 layout->addWidget ( listview ); 53 layout->addWidget ( listview );
56 } 54 }
57 55
58void AccountDisplay::setTabs ( QWidget *newtab2, QTabWidget *newtabs ) 56void AccountDisplay::setTabs ( QWidget *newtab2, QTabWidget *newtabs )
59 { 57 {
60 tab2 = newtab2; 58 tab2 = newtab2;
61 maintabs = newtabs; 59 maintabs = newtabs;
62 } 60 }
63 61
64void AccountDisplay::addAccount () 62void AccountDisplay::addAccount ()
65 { 63 {
66 // initialize local variables 64 // initialize local variables
67 int parentid = 0; 65 int parentid = 0;
68 type = 0; 66 type = 0;
69 QString parentlist [ listview->childCount() + 1 ] [ 3 ] ; 67 QString parentlist [ listview->childCount() + 1 ] [ 3 ] ;
70 68
71 // create new account window for entering data 69 // create new account window for entering data
72 NewAccount *newaccount = new NewAccount ( this ); 70 NewAccount *newaccount = new NewAccount ( this );
73 int width = this->width(); 71 int width = this->width();
74 newaccount->accountbox->setMaximumWidth ( ( int ) ( width * 0.5 ) ); 72 newaccount->accountbox->setMaximumWidth ( ( int ) ( width * 0.5 ) );
75 newaccount->datebox->setMaximumWidth ( ( int ) ( width * 0.4 ) ); 73 newaccount->datebox->setMaximumWidth ( ( int ) ( width * 0.4 ) );
76 newaccount->childbox->setMaximumWidth ( ( int ) ( width * 0.5 ) ); 74 newaccount->childbox->setMaximumWidth ( ( int ) ( width * 0.5 ) );
77 newaccount->balancebox->setMaximumWidth ( ( int ) ( width * 0.4 ) ); 75 newaccount->balancebox->setMaximumWidth ( ( int ) ( width * 0.4 ) );
78 newaccount->creditlimitbox->setMaximumWidth ( ( int ) ( width * 0.4 ) ); 76 newaccount->creditlimitbox->setMaximumWidth ( ( int ) ( width * 0.4 ) );
79 77
80 // if there are no accounts, disable the child check box 78 // if there are no accounts, disable the child check box
81 if ( account->getNumberOfAccounts () == 0 ) 79 if ( account->getNumberOfAccounts () == 0 )
82 newaccount->childcheckbox->setEnabled ( FALSE ); 80 newaccount->childcheckbox->setEnabled ( FALSE );
83 81
84 // if there are accounts, fill up the pulldown menu for 82 // if there are accounts, fill up the pulldown menu for
85 // selecting a parent account. We should only add those parents without transactions 83 // selecting a parent account. We should only add those parents without transactions
86 else 84 else
87 { 85 {
88 int c = 0; 86 int c = 0;
89 QListViewItemIterator it ( listview ); 87 QListViewItemIterator it ( listview );
90 for ( ; it.current(); ++it ) 88 for ( ; it.current(); ++it )
91 { 89 {
92 int id = it.current()->text ( getIDColumn() ).toInt(); 90 int id = it.current()->text ( getIDColumn() ).toInt();
93 // iterate through accountdisplay listview and add parents with no transactions 91 // iterate through accountdisplay listview and add parents with no transactions
94 // add this item to the list box only if it is a parent and has no transactions 92 // add this item to the list box only if it is a parent and has no transactions
95 if ( transfer->getNumberOfTransfers ( id ) == 0 && transaction->getNumberOfTransactions ( id ) == 0 && it.current()->parent() == 0 ) 93 if ( transfer->getNumberOfTransfers ( id ) == 0 && transaction->getNumberOfTransactions ( id ) == 0 && it.current()->parent() == 0 )
96 { 94 {
97 newaccount->childbox->insertItem ( it.current()->text ( 0 ) ); 95 newaccount->childbox->insertItem ( it.current()->text ( 0 ) );
98 parentlist [ c ] [ 0 ] = it.current()->text ( 0 ); 96 parentlist [ c ] [ 0 ] = it.current()->text ( 0 );
99 parentlist [ c ] [ 1 ] = it.current()->text ( getIDColumn() ); 97 parentlist [ c ] [ 1 ] = it.current()->text ( getIDColumn() );
100 parentlist [ c ] [ 2 ] = QString::number ( c ); 98 parentlist [ c ] [ 2 ] = QString::number ( c );
101 c++; 99 c++;
102 } 100 }
103 } 101 }
104 } 102 }
105 103
106 if ( preferences->getPreference ( 4 ) == 0 ) 104 if ( preferences->getPreference ( 4 ) == 0 )
107 newaccount->currencybox->setEnabled ( FALSE ); 105 newaccount->currencybox->setEnabled ( FALSE );
108 106
109 // enter today's date in the date box as default 107 // enter today's date in the date box as default
110 QDate today = QDate::currentDate (); 108 QDate today = QDate::currentDate ();
111 int defaultday = today.day(); 109 int defaultday = today.day();
112 int defaultmonth = today.month(); 110 int defaultmonth = today.month();
113 int defaultyear = today.year(); 111 int defaultyear = today.year();
114 newaccount->startdate->setText ( preferences->getDate ( defaultyear, defaultmonth, defaultday ) ); 112 newaccount->startdate->setText ( preferences->getDate ( defaultyear, defaultmonth, defaultday ) );
115 113
116 //add account information if user pushes OK button 114 //add account information if user pushes OK button
117 if ( newaccount->exec() == QDialog::Accepted ) 115 if ( newaccount->exec() == QDialog::Accepted )
118 { 116 {
119 if ( newaccount->childcheckbox->isChecked () == TRUE ) // set a parent id and type for a child account 117 if ( newaccount->childcheckbox->isChecked () == TRUE ) // set a parent id and type for a child account
120 { 118 {
121 // go through the parentlist we created and determine the parent accountid 119 // go through the parentlist we created and determine the parent accountid
122 // we can't use the name of the account because there may be two accounts 120 // we can't use the name of the account because there may be two accounts
123 // with the same name. This function does it all by accountid 121 // with the same name. This function does it all by accountid
124 int counter; 122 int counter;
125 for ( counter = 0; counter < listview->childCount() + 1; counter++ ) 123 for ( counter = 0; counter < listview->childCount() + 1; counter++ )
126 if ( ( parentlist [ counter ] [ 2 ].toInt() ) == newaccount->childbox->currentItem() ) 124 if ( ( parentlist [ counter ] [ 2 ].toInt() ) == newaccount->childbox->currentItem() )
127 { 125 {
128 parentid = parentlist [ counter ] [ 1 ].toInt(); 126 parentid = parentlist [ counter ] [ 1 ].toInt();
129 break; 127 break;
130 } 128 }
131 type = ( newaccount->accounttype->currentItem() ) + 6; // sets account ids for child accounts. See accountdisplay.h for types 129 type = ( newaccount->accounttype->currentItem() ) + 6; // sets account ids for child accounts. See accountdisplay.h for types
132 } 130 }
133 else 131 else
134 { 132 {
135 parentid = -1; 133 parentid = -1;
136 type = newaccount->accounttype->currentItem(); // sets account ids for parent accounts 134 type = newaccount->accounttype->currentItem(); // sets account ids for parent accounts
137 } 135 }
diff --git a/noncore/apps/qashmoney/budgetdisplay.cpp b/noncore/apps/qashmoney/budgetdisplay.cpp
index 492595a..d4047bf 100755
--- a/noncore/apps/qashmoney/budgetdisplay.cpp
+++ b/noncore/apps/qashmoney/budgetdisplay.cpp
@@ -1,138 +1,135 @@
1#include <qmessagebox.h> 1#include <qmessagebox.h>
2#include <qheader.h> 2#include <qheader.h>
3#include <qfont.h>
4#include <sqlite.h> 3#include <sqlite.h>
5 4
6#include "budgetdisplay.h" 5#include "budgetdisplay.h"
7#include "budget.h" 6#include "budget.h"
8#include "newaccount.h"
9#include "datepicker.h" 7#include "datepicker.h"
10#include "preferences.h"
11#include "transaction.h" 8#include "transaction.h"
12 9
13extern Preferences *preferences; 10extern Preferences *preferences;
14extern Budget *budget; 11extern Budget *budget;
15extern Transaction *transaction; 12extern Transaction *transaction;
16 13
17BudgetDisplay::BudgetDisplay ( QWidget *parent ) : QWidget ( parent ) 14BudgetDisplay::BudgetDisplay ( QWidget *parent ) : QWidget ( parent )
18 { 15 {
19 QFont font = this->font(); 16 QFont font = this->font();
20 font.setWeight ( QFont::Bold ); 17 font.setWeight ( QFont::Bold );
21 18
22 //set the default date to today 19 //set the default date to today
23 newDate = QDate::currentDate (); 20 newDate = QDate::currentDate ();
24 year = newDate.year(); 21 year = newDate.year();
25 month = newDate.month(); 22 month = newDate.month();
26 day = newDate.day(); 23 day = newDate.day();
27 datelabel = preferences->getDate ( year, month ); 24 datelabel = preferences->getDate ( year, month );
28 25
29 setCaption ( "Budget" ); 26 setCaption ( "Budget" );
30 27
31 firstline = new QHBox ( this ); 28 firstline = new QHBox ( this );
32 firstline->setSpacing ( 2 ); 29 firstline->setSpacing ( 2 );
33 secondline = new QHBox ( this ); 30 secondline = new QHBox ( this );
34 secondline->setSpacing ( 10 ); 31 secondline->setSpacing ( 10 );
35 32
36 menu = new QMenuBar ( this ); 33 menu = new QMenuBar ( this );
37 menu->setFrameStyle ( QFrame::Box | QFrame::Sunken ); 34 menu->setFrameStyle ( QFrame::Box | QFrame::Sunken );
38 budgetmenu = new QPopupMenu ( this ); 35 budgetmenu = new QPopupMenu ( this );
39 lineitemsmenu = new QPopupMenu ( this ); 36 lineitemsmenu = new QPopupMenu ( this );
40 datemenu = new QPopupMenu ( this ); 37 datemenu = new QPopupMenu ( this );
41 menu->insertItem ( "Budget", budgetmenu ); 38 menu->insertItem ( "Budget", budgetmenu );
42 menu->insertItem ( "Line Item", lineitemsmenu ); 39 menu->insertItem ( "Line Item", lineitemsmenu );
43 menu->insertItem ( "Date", datemenu ); 40 menu->insertItem ( "Date", datemenu );
44 budgetmenu->insertItem ( "New", this, SLOT ( newBudget () ), 0, 1 ); 41 budgetmenu->insertItem ( "New", this, SLOT ( newBudget () ), 0, 1 );
45 budgetmenu->insertItem ( "Edit", this, SLOT ( editBudget () ), 0, 2 ); 42 budgetmenu->insertItem ( "Edit", this, SLOT ( editBudget () ), 0, 2 );
46 budgetmenu->insertItem ( "Delete", this, SLOT ( deleteBudget () ), 0, 3 ); 43 budgetmenu->insertItem ( "Delete", this, SLOT ( deleteBudget () ), 0, 3 );
47 lineitemsmenu->insertItem ( "New", this, SLOT ( newLineItem () ), 0, 1 ); 44 lineitemsmenu->insertItem ( "New", this, SLOT ( newLineItem () ), 0, 1 );
48 lineitemsmenu->insertItem ( "Edit", this, SLOT ( editLineItem () ), 0, 2 ); 45 lineitemsmenu->insertItem ( "Edit", this, SLOT ( editLineItem () ), 0, 2 );
49 lineitemsmenu->insertItem ( "Delete", this, SLOT ( deleteLineItem () ), 0, 3 ); 46 lineitemsmenu->insertItem ( "Delete", this, SLOT ( deleteLineItem () ), 0, 3 );
50 datemenu->insertItem ( "Change", this, SLOT ( showCalendar() ) ); 47 datemenu->insertItem ( "Change", this, SLOT ( showCalendar() ) );
51 48
52 budgetbox = new QComboBox ( firstline ); 49 budgetbox = new QComboBox ( firstline );
53 connect ( budgetbox, SIGNAL ( activated ( int ) ), this, SLOT ( setCurrentBudget ( int ) ) ); 50 connect ( budgetbox, SIGNAL ( activated ( int ) ), this, SLOT ( setCurrentBudget ( int ) ) );
54 51
55 budgetview = new QComboBox ( firstline ); 52 budgetview = new QComboBox ( firstline );
56 budgetview->insertItem ( "Month" ); 53 budgetview->insertItem ( "Month" );
57 budgetview->insertItem ( "Year" ); 54 budgetview->insertItem ( "Year" );
58 connect ( budgetview, SIGNAL ( activated ( int ) ), this, SLOT ( setCurrentView ( int ) ) ); 55 connect ( budgetview, SIGNAL ( activated ( int ) ), this, SLOT ( setCurrentView ( int ) ) );
59 56
60 budgeted = new QLabel ( secondline ); 57 budgeted = new QLabel ( secondline );
61 budgeted->setFont ( font ); 58 budgeted->setFont ( font );
62 actual = new QLabel ( secondline ); 59 actual = new QLabel ( secondline );
63 actual->setFont ( font ); 60 actual->setFont ( font );
64 date = new QLabel ( secondline ); 61 date = new QLabel ( secondline );
65 date->setFont ( font ); 62 date->setFont ( font );
66 63
67 listview = new QListView ( this ); 64 listview = new QListView ( this );
68 listview->setAllColumnsShowFocus ( TRUE ); 65 listview->setAllColumnsShowFocus ( TRUE );
69 listview->setShowSortIndicator ( TRUE ); 66 listview->setShowSortIndicator ( TRUE );
70 listview->setRootIsDecorated ( TRUE ); 67 listview->setRootIsDecorated ( TRUE );
71 listview->setMultiSelection ( FALSE ); 68 listview->setMultiSelection ( FALSE );
72 listview->addColumn ( "Line Item", preferences->getColumnPreference ( 13 ) ); // column id 13 69 listview->addColumn ( "Line Item", preferences->getColumnPreference ( 13 ) ); // column id 13
73 listview->addColumn ( "Budget", preferences->getColumnPreference ( 14 ) ); // column id 14 70 listview->addColumn ( "Budget", preferences->getColumnPreference ( 14 ) ); // column id 14
74 listview->addColumn ( "Actual", preferences->getColumnPreference ( 15 ) ); // column id 15 71 listview->addColumn ( "Actual", preferences->getColumnPreference ( 15 ) ); // column id 15
75 listview->addColumn ( "", 0 ); // line item ids 72 listview->addColumn ( "", 0 ); // line item ids
76 listview->setColumnWidthMode ( 0, QListView::Manual ); 73 listview->setColumnWidthMode ( 0, QListView::Manual );
77 listview->setColumnWidthMode ( 1, QListView::Manual ); 74 listview->setColumnWidthMode ( 1, QListView::Manual );
78 listview->setColumnWidthMode ( 2, QListView::Manual ); 75 listview->setColumnWidthMode ( 2, QListView::Manual );
79 listview->setColumnAlignment ( 1, Qt::AlignRight ); 76 listview->setColumnAlignment ( 1, Qt::AlignRight );
80 listview->setColumnAlignment ( 2, Qt::AlignRight ); 77 listview->setColumnAlignment ( 2, Qt::AlignRight );
81 listview->setColumnWidthMode ( 3, QListView::Manual ); 78 listview->setColumnWidthMode ( 3, QListView::Manual );
82 79
83 listview->header()->setTracking ( FALSE ); 80 listview->header()->setTracking ( FALSE );
84 connect ( listview->header(), SIGNAL ( sizeChange ( int, int, int ) ), this, SLOT ( saveColumnSize ( int, int, int ) ) ); 81 connect ( listview->header(), SIGNAL ( sizeChange ( int, int, int ) ), this, SLOT ( saveColumnSize ( int, int, int ) ) );
85 connect ( listview->header(), SIGNAL ( clicked ( int ) ), this, SLOT ( saveSortingPreference ( int ) ) ); 82 connect ( listview->header(), SIGNAL ( clicked ( int ) ), this, SLOT ( saveSortingPreference ( int ) ) );
86 83
87 // pull the column sorting preference from the preferences table, and configure the listview accordingly 84 // pull the column sorting preference from the preferences table, and configure the listview accordingly
88 int column = 0; 85 int column = 0;
89 int direction = 0; 86 int direction = 0;
90 preferences->getSortingPreference ( 3, &column, &direction ); 87 preferences->getSortingPreference ( 3, &column, &direction );
91 listview->setSorting ( column, direction ); 88 listview->setSorting ( column, direction );
92 89
93 displayBudgetNames(); 90 displayBudgetNames();
94 91
95 layout = new QVBoxLayout ( this, 2, 2 ); 92 layout = new QVBoxLayout ( this, 2, 2 );
96 layout->setMenuBar ( menu ); 93 layout->setMenuBar ( menu );
97 layout->addWidget ( firstline ); 94 layout->addWidget ( firstline );
98 layout->addWidget ( secondline ); 95 layout->addWidget ( secondline );
99 layout->addWidget ( listview ); 96 layout->addWidget ( listview );
100 } 97 }
101 98
102void BudgetDisplay::deleteBudget () 99void BudgetDisplay::deleteBudget ()
103 { 100 {
104 listview->clear(); 101 listview->clear();
105 transaction->clearBudgetIDs ( currentbudget ); 102 transaction->clearBudgetIDs ( currentbudget );
106 budget->deleteBudget ( currentbudget ); 103 budget->deleteBudget ( currentbudget );
107 if ( budgetbox->count() != 0 ) 104 if ( budgetbox->count() != 0 )
108 displayBudgetNames(); 105 displayBudgetNames();
109 checkBudgets(); 106 checkBudgets();
110 } 107 }
111 108
112void BudgetDisplay::saveColumnSize ( int column, int oldsize, int newsize ) 109void BudgetDisplay::saveColumnSize ( int column, int oldsize, int newsize )
113 { 110 {
114 switch ( column ) 111 switch ( column )
115 { 112 {
116 case 0: 113 case 0:
117 preferences->changeColumnPreference ( 13, newsize ); 114 preferences->changeColumnPreference ( 13, newsize );
118 break; 115 break;
119 case 1: 116 case 1:
120 preferences->changeColumnPreference ( 14, newsize ); 117 preferences->changeColumnPreference ( 14, newsize );
121 break; 118 break;
122 case 2: 119 case 2:
123 preferences->changeColumnPreference ( 15, newsize ); 120 preferences->changeColumnPreference ( 15, newsize );
124 break; 121 break;
125 } 122 }
126 } 123 }
127 124
128void BudgetDisplay::saveSortingPreference ( int column ) 125void BudgetDisplay::saveSortingPreference ( int column )
129 { 126 {
130 preferences->changeSortingPreference ( 3, column ); 127 preferences->changeSortingPreference ( 3, column );
131 } 128 }
132 129
133int BudgetDisplay::getIDColumn () 130int BudgetDisplay::getIDColumn ()
134 { 131 {
135 int counter; 132 int counter;
136 int columns = listview->columns(); 133 int columns = listview->columns();
137 for ( counter = 0; counter <= columns; counter++ ) 134 for ( counter = 0; counter <= columns; counter++ )
138 if ( listview->header()->label ( counter ).length() == 0 ) 135 if ( listview->header()->label ( counter ).length() == 0 )
diff --git a/noncore/apps/qashmoney/newaccount.cpp b/noncore/apps/qashmoney/newaccount.cpp
index 2ad8f60..7e57a18 100755
--- a/noncore/apps/qashmoney/newaccount.cpp
+++ b/noncore/apps/qashmoney/newaccount.cpp
@@ -1,134 +1,131 @@
1#include "newaccount.h" 1#include "newaccount.h"
2#include "calculator.h" 2#include "calculator.h"
3#include "datepicker.h" 3#include "datepicker.h"
4#include "transaction.h"
5#include "preferences.h"
6#include <qdatetime.h>
7#include <qmultilineedit.h> 4#include <qmultilineedit.h>
8 5
9extern Preferences *preferences; 6extern Preferences *preferences;
10 7
11NewAccount::NewAccount ( QWidget *parent, const char *name, bool modal ) : QDialog ( parent, name, modal ) 8NewAccount::NewAccount ( QWidget *parent, const char *name, bool modal ) : QDialog ( parent, name, modal )
12 { 9 {
13 accountdescription = ""; 10 accountdescription = "";
14 dateedited = FALSE; 11 dateedited = FALSE;
15 setCaption( tr( "Account" ) ); 12 setCaption( tr( "Account" ) );
16 13
17 namelabel = new QLabel ( "Account Name", this ); 14 namelabel = new QLabel ( "Account Name", this );
18 15
19 accountbox = new QHBox ( this ); 16 accountbox = new QHBox ( this );
20 accountname = new QLineEdit ( accountbox ); 17 accountname = new QLineEdit ( accountbox );
21 descriptionbutton = new QPushButton ( accountbox ); 18 descriptionbutton = new QPushButton ( accountbox );
22 descriptionbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/info.png" ) ); 19 descriptionbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/info.png" ) );
23 20
24 datelabel = new QLabel ( "Date", this ); 21 datelabel = new QLabel ( "Date", this );
25 22
26 datebox = new QHBox ( this ); 23 datebox = new QHBox ( this );
27 startdate = new QLineEdit ( datebox ); 24 startdate = new QLineEdit ( datebox );
28 startdate->setDisabled ( TRUE ); 25 startdate->setDisabled ( TRUE );
29 datebutton = new QPushButton ( datebox ); 26 datebutton = new QPushButton ( datebox );
30 datebutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/date.png" ) ); 27 datebutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/date.png" ) );
31 28
32 childcheckbox = new QCheckBox ( this ); 29 childcheckbox = new QCheckBox ( this );
33 childcheckbox->setText( tr ( "Child Account" ) ); 30 childcheckbox->setText( tr ( "Child Account" ) );
34 31
35 childlabel = new QLabel ( "Child of", this ); 32 childlabel = new QLabel ( "Child of", this );
36 childbox = new QComboBox ( FALSE, this ); 33 childbox = new QComboBox ( FALSE, this );
37 hideChildPulldownMenu (); 34 hideChildPulldownMenu ();
38 35
39 balancelabel = new QLabel ( "Balance", this ); 36 balancelabel = new QLabel ( "Balance", this );
40 37
41 balancebox = new QHBox ( this ); 38 balancebox = new QHBox ( this );
42 accountbalance = new QLineEdit ( balancebox ); 39 accountbalance = new QLineEdit ( balancebox );
43 accountbalance->setText ( "0.00" ); 40 accountbalance->setText ( "0.00" );
44 balancecalculator = new QPushButton( balancebox ); 41 balancecalculator = new QPushButton( balancebox );
45 balancecalculator->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) ); 42 balancecalculator->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) );
46 43
47 creditlimitlabel = new QLabel ( "Credit Limit", this ); 44 creditlimitlabel = new QLabel ( "Credit Limit", this );
48 45
49 creditlimitbox = new QHBox ( this ); 46 creditlimitbox = new QHBox ( this );
50 creditlimit = new QLineEdit ( creditlimitbox ); 47 creditlimit = new QLineEdit ( creditlimitbox );
51 creditlimitbox->setEnabled ( FALSE ); 48 creditlimitbox->setEnabled ( FALSE );
52 creditlimitcalculator = new QPushButton( creditlimitbox ); 49 creditlimitcalculator = new QPushButton( creditlimitbox );
53 creditlimitcalculator->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) ); 50 creditlimitcalculator->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) );
54 51
55 currencybox = new Currency ( this ); 52 currencybox = new Currency ( this );
56 53
57 typelabel = new QLabel ( "Type", this ); 54 typelabel = new QLabel ( "Type", this );
58 accounttype = new QComboBox ( FALSE, this ); 55 accounttype = new QComboBox ( FALSE, this );
59 accounttype->insertItem( tr( "Bank" ) ); 56 accounttype->insertItem( tr( "Bank" ) );
60 accounttype->insertItem( tr( "Cash" ) ); 57 accounttype->insertItem( tr( "Cash" ) );
61 accounttype->insertItem( tr( "Credit Card" ) ); 58 accounttype->insertItem( tr( "Credit Card" ) );
62 accounttype->insertItem( tr( "Equity" ) ); 59 accounttype->insertItem( tr( "Equity" ) );
63 accounttype->insertItem( tr( "Asset" ) ); 60 accounttype->insertItem( tr( "Asset" ) );
64 accounttype->insertItem( tr( "Liability" ) ); 61 accounttype->insertItem( tr( "Liability" ) );
65 62
66 layout = new QGridLayout ( this, 7, 2, 4, 2 ); 63 layout = new QGridLayout ( this, 7, 2, 4, 2 );
67 layout->addWidget ( namelabel , 0, 0, Qt::AlignLeft ); 64 layout->addWidget ( namelabel , 0, 0, Qt::AlignLeft );
68 layout->addWidget ( accountbox, 1, 0, Qt::AlignLeft ); 65 layout->addWidget ( accountbox, 1, 0, Qt::AlignLeft );
69 layout->addWidget ( datelabel, 2, 0, Qt::AlignLeft ); 66 layout->addWidget ( datelabel, 2, 0, Qt::AlignLeft );
70 layout->addWidget ( datebox, 3, 0, Qt::AlignLeft ); 67 layout->addWidget ( datebox, 3, 0, Qt::AlignLeft );
71 layout->addWidget ( childcheckbox, 4, 0, Qt::AlignLeft ); 68 layout->addWidget ( childcheckbox, 4, 0, Qt::AlignLeft );
72 layout->addWidget ( childlabel, 5, 0, Qt::AlignLeft ); 69 layout->addWidget ( childlabel, 5, 0, Qt::AlignLeft );
73 layout->addWidget ( childbox, 6, 0, Qt::AlignLeft ); 70 layout->addWidget ( childbox, 6, 0, Qt::AlignLeft );
74 layout->addWidget ( balancelabel, 0, 1, Qt::AlignLeft ); 71 layout->addWidget ( balancelabel, 0, 1, Qt::AlignLeft );
75 layout->addWidget ( balancebox, 1, 1, Qt::AlignLeft ); 72 layout->addWidget ( balancebox, 1, 1, Qt::AlignLeft );
76 layout->addWidget ( creditlimitlabel, 2, 1, Qt::AlignLeft ); 73 layout->addWidget ( creditlimitlabel, 2, 1, Qt::AlignLeft );
77 layout->addWidget ( creditlimitbox, 3, 1, Qt::AlignLeft ); 74 layout->addWidget ( creditlimitbox, 3, 1, Qt::AlignLeft );
78 layout->addWidget ( currencybox, 4, 1, Qt::AlignLeft ); 75 layout->addWidget ( currencybox, 4, 1, Qt::AlignLeft );
79 layout->addWidget ( typelabel, 5, 1, Qt::AlignLeft ); 76 layout->addWidget ( typelabel, 5, 1, Qt::AlignLeft );
80 layout->addWidget ( accounttype, 6, 1, Qt::AlignLeft ); 77 layout->addWidget ( accounttype, 6, 1, Qt::AlignLeft );
81 78
82 connect ( childcheckbox, SIGNAL ( clicked () ), this, SLOT ( showChildPulldownMenu() ) ); 79 connect ( childcheckbox, SIGNAL ( clicked () ), this, SLOT ( showChildPulldownMenu() ) );
83 connect ( balancecalculator, SIGNAL ( released() ), this, SLOT ( showCalculator() ) ); 80 connect ( balancecalculator, SIGNAL ( released() ), this, SLOT ( showCalculator() ) );
84 connect ( creditlimitcalculator, SIGNAL ( released() ), this, SLOT ( showCreditLimitCalculator() ) ); 81 connect ( creditlimitcalculator, SIGNAL ( released() ), this, SLOT ( showCreditLimitCalculator() ) );
85 connect ( accounttype, SIGNAL ( activated ( int ) ), this, SLOT ( activateCreditLimit ( int ) ) ); 82 connect ( accounttype, SIGNAL ( activated ( int ) ), this, SLOT ( activateCreditLimit ( int ) ) );
86 connect ( datebutton, SIGNAL ( released () ), this, SLOT ( showCalendar () ) ); 83 connect ( datebutton, SIGNAL ( released () ), this, SLOT ( showCalendar () ) );
87 connect ( descriptionbutton, SIGNAL ( released () ), this, SLOT ( addAccountDescription() ) ); 84 connect ( descriptionbutton, SIGNAL ( released () ), this, SLOT ( addAccountDescription() ) );
88} 85}
89 86
90NewAccount::~NewAccount () 87NewAccount::~NewAccount ()
91 { 88 {
92 } 89 }
93 90
94void NewAccount::showChildPulldownMenu () 91void NewAccount::showChildPulldownMenu ()
95 { 92 {
96 if ( childcheckbox->isChecked() == TRUE ) 93 if ( childcheckbox->isChecked() == TRUE )
97 { 94 {
98 childlabel->setEnabled ( TRUE ); 95 childlabel->setEnabled ( TRUE );
99 childbox->setEnabled ( TRUE ); 96 childbox->setEnabled ( TRUE );
100 } 97 }
101 else 98 else
102 hideChildPulldownMenu(); 99 hideChildPulldownMenu();
103 } 100 }
104 101
105void NewAccount::hideChildPulldownMenu () 102void NewAccount::hideChildPulldownMenu ()
106 { 103 {
107 childlabel->setEnabled ( FALSE ); 104 childlabel->setEnabled ( FALSE );
108 childbox->setEnabled ( FALSE ); 105 childbox->setEnabled ( FALSE );
109 } 106 }
110 107
111void NewAccount::showCalculator () 108void NewAccount::showCalculator ()
112 { 109 {
113 Calculator *calculator = new Calculator ( this ); 110 Calculator *calculator = new Calculator ( this );
114 calculator->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) ); 111 calculator->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) );
115 if ( calculator->exec () == QDialog::Accepted ) 112 if ( calculator->exec () == QDialog::Accepted )
116 accountbalance->setText ( calculator->display->text() ); 113 accountbalance->setText ( calculator->display->text() );
117 } 114 }
118 115
119void NewAccount::showCreditLimitCalculator () 116void NewAccount::showCreditLimitCalculator ()
120 { 117 {
121 Calculator *calculator = new Calculator ( this ); 118 Calculator *calculator = new Calculator ( this );
122 calculator->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) ); 119 calculator->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) );
123 if ( calculator->exec () == QDialog::Accepted ) 120 if ( calculator->exec () == QDialog::Accepted )
124 creditlimit->setText ( calculator->display->text() ); 121 creditlimit->setText ( calculator->display->text() );
125 } 122 }
126 123
127void NewAccount::activateCreditLimit ( int index ) 124void NewAccount::activateCreditLimit ( int index )
128 { 125 {
129 if ( index == 2 || index == 5 ) 126 if ( index == 2 || index == 5 )
130 creditlimitbox->setEnabled ( TRUE ); 127 creditlimitbox->setEnabled ( TRUE );
131 else 128 else
132 { 129 {
133 creditlimit->clear (); 130 creditlimit->clear ();
134 creditlimitbox->setEnabled ( FALSE ); 131 creditlimitbox->setEnabled ( FALSE );
diff --git a/noncore/apps/qashmoney/newtransaction.cpp b/noncore/apps/qashmoney/newtransaction.cpp
index 630a8b8..5c78139 100755
--- a/noncore/apps/qashmoney/newtransaction.cpp
+++ b/noncore/apps/qashmoney/newtransaction.cpp
@@ -1,135 +1,133 @@
1#include "newtransaction.h" 1#include "newtransaction.h"
2#include "calculator.h" 2#include "calculator.h"
3#include "datepicker.h" 3#include "datepicker.h"
4#include "memory.h"
5#include "budget.h" 4#include "budget.h"
6 5
7#include <qdatetime.h>
8#include <qmultilineedit.h> 6#include <qmultilineedit.h>
9 7
10extern Budget *budget; 8extern Budget *budget;
11extern Preferences *preferences; 9extern Preferences *preferences;
12 10
13NewTransaction::NewTransaction ( QWidget* parent ) : QDialog ( parent, 0, TRUE ) 11NewTransaction::NewTransaction ( QWidget* parent ) : QDialog ( parent, 0, TRUE )
14 { 12 {
15 transactiondescription = ""; 13 transactiondescription = "";
16 currentlineitem = -1; 14 currentlineitem = -1;
17 currentbudget = -1; 15 currentbudget = -1;
18 dateedited = FALSE; 16 dateedited = FALSE;
19 setCaption( tr( "Transaction" ) ); 17 setCaption( tr( "Transaction" ) );
20 18
21 // START FIRST COLUMN 19 // START FIRST COLUMN
22 20
23 namelabel = new QLabel ( "Transaction", this ); 21 namelabel = new QLabel ( "Transaction", this );
24 22
25 transactionnamebox = new QHBox ( this ); 23 transactionnamebox = new QHBox ( this );
26 transactionname = new QComboBox ( transactionnamebox ); 24 transactionname = new QComboBox ( transactionnamebox );
27 transactionname->setEditable ( TRUE ); 25 transactionname->setEditable ( TRUE );
28 descriptionbutton = new QPushButton ( transactionnamebox ); 26 descriptionbutton = new QPushButton ( transactionnamebox );
29 descriptionbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/info.png" ) ); 27 descriptionbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/info.png" ) );
30 connect ( descriptionbutton, SIGNAL ( released () ), this, SLOT ( addTransactionDescription() ) ); 28 connect ( descriptionbutton, SIGNAL ( released () ), this, SLOT ( addTransactionDescription() ) );
31 29
32 amountlabel = new QLabel ( "Amount", this ); 30 amountlabel = new QLabel ( "Amount", this );
33 31
34 transactionamountbox = new QHBox ( this ); 32 transactionamountbox = new QHBox ( this );
35 transactionamount = new QLineEdit ( transactionamountbox ); 33 transactionamount = new QLineEdit ( transactionamountbox );
36 transactionamount->setAlignment ( Qt::AlignRight ); 34 transactionamount->setAlignment ( Qt::AlignRight );
37 transactionamount->setText ( "0.00" ); 35 transactionamount->setText ( "0.00" );
38 calculatorbutton = new QPushButton( transactionamountbox ); 36 calculatorbutton = new QPushButton( transactionamountbox );
39 calculatorbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) ); 37 calculatorbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) );
40 connect ( calculatorbutton, SIGNAL ( released() ), this, SLOT ( showCalculator() ) ); 38 connect ( calculatorbutton, SIGNAL ( released() ), this, SLOT ( showCalculator() ) );
41 39
42 datelabel = new QLabel ( "Date", this ); 40 datelabel = new QLabel ( "Date", this );
43 41
44 transactiondatebox = new QHBox ( this ); 42 transactiondatebox = new QHBox ( this );
45 transactiondate = new QLineEdit ( transactiondatebox ); 43 transactiondate = new QLineEdit ( transactiondatebox );
46 transactiondate->setAlignment ( Qt::AlignRight ); 44 transactiondate->setAlignment ( Qt::AlignRight );
47 transactiondate->setDisabled ( TRUE ); 45 transactiondate->setDisabled ( TRUE );
48 datebutton = new QPushButton( transactiondatebox ); 46 datebutton = new QPushButton( transactiondatebox );
49 datebutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/date.png" ) ); 47 datebutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/date.png" ) );
50 connect ( datebutton, SIGNAL ( released () ), this, SLOT ( showCalendar () ) ); 48 connect ( datebutton, SIGNAL ( released () ), this, SLOT ( showCalendar () ) );
51 49
52 clearedcheckbox = new QCheckBox ( "Cleared", this ); 50 clearedcheckbox = new QCheckBox ( "Cleared", this );
53 depositbox = new QCheckBox ( "Credit", this ); 51 depositbox = new QCheckBox ( "Credit", this );
54 52
55 // START SECOND COLUMN 53 // START SECOND COLUMN
56 54
57 numberlabel = new QLabel ( "Number", this ); 55 numberlabel = new QLabel ( "Number", this );
58 transactionnumber = new QLineEdit ( this ); 56 transactionnumber = new QLineEdit ( this );
59 57
60 budgetlabel = new QLabel ( "Budget", this ); 58 budgetlabel = new QLabel ( "Budget", this );
61 budgetbox = new QComboBox ( FALSE, this ); 59 budgetbox = new QComboBox ( FALSE, this );
62 60
63 lineitemlabel = new QLabel ( "LineItem", this ); 61 lineitemlabel = new QLabel ( "LineItem", this );
64 lineitembox = new QComboBox ( FALSE, this ); 62 lineitembox = new QComboBox ( FALSE, this );
65 63
66 layout = new QGridLayout ( this, 7, 2, 2, 2 ); 64 layout = new QGridLayout ( this, 7, 2, 2, 2 );
67 layout->addWidget ( namelabel, 0, 0, Qt::AlignLeft ); 65 layout->addWidget ( namelabel, 0, 0, Qt::AlignLeft );
68 layout->addWidget ( transactionnamebox, 1, 0, Qt::AlignLeft ); 66 layout->addWidget ( transactionnamebox, 1, 0, Qt::AlignLeft );
69 layout->addWidget ( amountlabel, 2, 0, Qt::AlignLeft ); 67 layout->addWidget ( amountlabel, 2, 0, Qt::AlignLeft );
70 layout->addWidget ( transactionamountbox, 3, 0, Qt::AlignLeft ); 68 layout->addWidget ( transactionamountbox, 3, 0, Qt::AlignLeft );
71 layout->addWidget ( datelabel, 4, 0, Qt::AlignLeft ); 69 layout->addWidget ( datelabel, 4, 0, Qt::AlignLeft );
72 layout->addWidget ( transactiondatebox, 5, 0, Qt::AlignLeft ); 70 layout->addWidget ( transactiondatebox, 5, 0, Qt::AlignLeft );
73 layout->addWidget ( clearedcheckbox, 6, 0, Qt::AlignLeft ); 71 layout->addWidget ( clearedcheckbox, 6, 0, Qt::AlignLeft );
74 layout->addWidget ( numberlabel, 0, 1, Qt::AlignLeft ); 72 layout->addWidget ( numberlabel, 0, 1, Qt::AlignLeft );
75 layout->addWidget ( transactionnumber, 1, 1, Qt::AlignLeft ); 73 layout->addWidget ( transactionnumber, 1, 1, Qt::AlignLeft );
76 layout->addWidget ( budgetlabel, 2, 1, Qt::AlignLeft ); 74 layout->addWidget ( budgetlabel, 2, 1, Qt::AlignLeft );
77 layout->addWidget ( budgetbox, 3, 1, Qt::AlignLeft ); 75 layout->addWidget ( budgetbox, 3, 1, Qt::AlignLeft );
78 layout->addWidget ( lineitemlabel, 4, 1, Qt::AlignLeft ); 76 layout->addWidget ( lineitemlabel, 4, 1, Qt::AlignLeft );
79 layout->addWidget ( lineitembox, 5, 1, Qt::AlignLeft ); 77 layout->addWidget ( lineitembox, 5, 1, Qt::AlignLeft );
80 layout->addWidget ( depositbox, 6, 1, Qt::AlignLeft ); 78 layout->addWidget ( depositbox, 6, 1, Qt::AlignLeft );
81 79
82 if ( budget->getNumberOfBudgets() != 0 ) 80 if ( budget->getNumberOfBudgets() != 0 )
83 { 81 {
84 budgetnameslist = budget->getBudgetNames(); 82 budgetnameslist = budget->getBudgetNames();
85 budgetidslist = budget->getBudgetIDs(); 83 budgetidslist = budget->getBudgetIDs();
86 budgetbox->insertStringList ( *budgetnameslist ); 84 budgetbox->insertStringList ( *budgetnameslist );
87 lineitemlabel->setEnabled ( FALSE ); 85 lineitemlabel->setEnabled ( FALSE );
88 lineitembox->setEnabled ( FALSE ); 86 lineitembox->setEnabled ( FALSE );
89 connect ( budgetbox, SIGNAL ( activated ( int ) ), this, SLOT ( setCurrentBudget ( int ) ) ); 87 connect ( budgetbox, SIGNAL ( activated ( int ) ), this, SLOT ( setCurrentBudget ( int ) ) );
90 connect ( lineitembox, SIGNAL ( activated ( int ) ), this, SLOT ( setCurrentLineItem ( int ) ) ); 88 connect ( lineitembox, SIGNAL ( activated ( int ) ), this, SLOT ( setCurrentLineItem ( int ) ) );
91 } 89 }
92 else 90 else
93 { 91 {
94 budgetlabel->setEnabled ( FALSE ); 92 budgetlabel->setEnabled ( FALSE );
95 budgetbox->setEnabled ( FALSE ); 93 budgetbox->setEnabled ( FALSE );
96 lineitemlabel->setEnabled ( FALSE ); 94 lineitemlabel->setEnabled ( FALSE );
97 lineitembox->setEnabled ( FALSE ); 95 lineitembox->setEnabled ( FALSE );
98 } 96 }
99 97
100} 98}
101 99
102NewTransaction::~NewTransaction () 100NewTransaction::~NewTransaction ()
103 { 101 {
104 } 102 }
105 103
106void NewTransaction::showCalculator () 104void NewTransaction::showCalculator ()
107{ 105{
108 Calculator *calculator = new Calculator ( this ); 106 Calculator *calculator = new Calculator ( this );
109 calculator->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) ); 107 calculator->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) );
110 if ( calculator->exec () == QDialog::Accepted ) 108 if ( calculator->exec () == QDialog::Accepted )
111 transactionamount->setText ( calculator->display->text() ); 109 transactionamount->setText ( calculator->display->text() );
112} 110}
113 111
114void NewTransaction::showCalendar () 112void NewTransaction::showCalendar ()
115 { 113 {
116 QDate newDate = QDate::currentDate (); 114 QDate newDate = QDate::currentDate ();
117 DatePicker *dp = new DatePicker ( newDate ); 115 DatePicker *dp = new DatePicker ( newDate );
118 dp->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) ); 116 dp->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) );
119 117
120 int response = dp->exec(); 118 int response = dp->exec();
121 if ( response == QDialog::Accepted ) 119 if ( response == QDialog::Accepted )
122 { 120 {
123 // Set date integers 121 // Set date integers
124 year = dp->getYear(); 122 year = dp->getYear();
125 month = dp->getMonth(); 123 month = dp->getMonth();
126 day = dp->getDay(); 124 day = dp->getDay();
127 125
128 // Set dateedited to TRUE 126 // Set dateedited to TRUE
129 // This tells the transactiondisplay object that the user edited an transaction 127 // This tells the transactiondisplay object that the user edited an transaction
130 // and did change the date3 128 // and did change the date3
131 dateedited = TRUE; 129 dateedited = TRUE;
132 130
133 // Display date with our selected format 131 // Display date with our selected format
134 transactiondate->setText ( preferences->getDate ( year, month, day ) ); 132 transactiondate->setText ( preferences->getDate ( year, month, day ) );
135 } 133 }
diff --git a/noncore/apps/qashmoney/preferencedialogs.cpp b/noncore/apps/qashmoney/preferencedialogs.cpp
index d7c66d3..5408a5b 100755
--- a/noncore/apps/qashmoney/preferencedialogs.cpp
+++ b/noncore/apps/qashmoney/preferencedialogs.cpp
@@ -1,131 +1,130 @@
1#include "preferencedialogs.h" 1#include "preferencedialogs.h"
2#include "preferences.h" 2#include "preferences.h"
3#include <qlabel.h>
4 3
5extern Preferences *preferences; 4extern Preferences *preferences;
6 5
7DatePreferences::DatePreferences ( QWidget* parent ) : QDialog ( parent, 0, TRUE ) 6DatePreferences::DatePreferences ( QWidget* parent ) : QDialog ( parent, 0, TRUE )
8 { 7 {
9 setCaption( tr( "Date" ) ); 8 setCaption( tr( "Date" ) );
10 9
11 QLabel *datelabel = new QLabel ( "Format", this ); 10 QLabel *datelabel = new QLabel ( "Format", this );
12 dateformat = new QComboBox ( this ); 11 dateformat = new QComboBox ( this );
13 dateformat->setEditable ( FALSE ); 12 dateformat->setEditable ( FALSE );
14 dateformat->insertItem ( "yyyymmdd" ); 13 dateformat->insertItem ( "yyyymmdd" );
15 dateformat->insertItem ( "yymmdd" ); 14 dateformat->insertItem ( "yymmdd" );
16 dateformat->insertItem ( "mmddyyyy" ); 15 dateformat->insertItem ( "mmddyyyy" );
17 dateformat->insertItem ( "mmddyy" ); 16 dateformat->insertItem ( "mmddyy" );
18 dateformat->insertItem ( "yyyyddmm" ); 17 dateformat->insertItem ( "yyyyddmm" );
19 dateformat->insertItem ( "yyddmm" ); 18 dateformat->insertItem ( "yyddmm" );
20 dateformat->insertItem ( "ddmmyyyy" ); 19 dateformat->insertItem ( "ddmmyyyy" );
21 dateformat->insertItem ( "ddmmyy" ); 20 dateformat->insertItem ( "ddmmyy" );
22 connect ( dateformat, SIGNAL ( activated ( int ) ), this, SLOT ( changeDateFormat ( int ) ) ); 21 connect ( dateformat, SIGNAL ( activated ( int ) ), this, SLOT ( changeDateFormat ( int ) ) );
23 22
24 QLabel *dateseparatorlabel = new QLabel ( "Separator", this ); 23 QLabel *dateseparatorlabel = new QLabel ( "Separator", this );
25 dateseparator = new QComboBox ( this ); 24 dateseparator = new QComboBox ( this );
26 dateseparator->insertItem ( "/" ); 25 dateseparator->insertItem ( "/" );
27 dateseparator->insertItem ( "-" ); 26 dateseparator->insertItem ( "-" );
28 dateseparator->insertItem ( "." ); 27 dateseparator->insertItem ( "." );
29 connect ( dateseparator, SIGNAL ( activated ( int ) ), this, SLOT ( changeDateSeparator ( int ) ) ); 28 connect ( dateseparator, SIGNAL ( activated ( int ) ), this, SLOT ( changeDateSeparator ( int ) ) );
30 29
31 defaults = new QPushButton ( QPixmap ( "/opt/QtPalmtop/pics/defaults.png" ), "Defaults", this ); 30 defaults = new QPushButton ( QPixmap ( "/opt/QtPalmtop/pics/defaults.png" ), "Defaults", this );
32 connect ( defaults, SIGNAL ( released () ), this, SLOT ( setDefaultDatePreferences () ) ); 31 connect ( defaults, SIGNAL ( released () ), this, SLOT ( setDefaultDatePreferences () ) );
33 32
34 dateformat->setCurrentItem ( ( preferences->getPreference ( 1 ) ) - 1 ); 33 dateformat->setCurrentItem ( ( preferences->getPreference ( 1 ) ) - 1 );
35 dateseparator->setCurrentItem ( ( preferences->getPreference ( 2 ) ) - 1 ); 34 dateseparator->setCurrentItem ( ( preferences->getPreference ( 2 ) ) - 1 );
36 35
37 layout = new QVBoxLayout ( this, 2, 2 ); 36 layout = new QVBoxLayout ( this, 2, 2 );
38 layout->addWidget ( datelabel ); 37 layout->addWidget ( datelabel );
39 layout->addWidget ( dateformat ); 38 layout->addWidget ( dateformat );
40 layout->addWidget ( dateseparatorlabel ); 39 layout->addWidget ( dateseparatorlabel );
41 layout->addWidget ( dateseparator ); 40 layout->addWidget ( dateseparator );
42 layout->insertSpacing ( 4, 5 ); 41 layout->insertSpacing ( 4, 5 );
43 layout->addWidget ( defaults ); 42 layout->addWidget ( defaults );
44 43
45 } 44 }
46 45
47DatePreferences::~DatePreferences () 46DatePreferences::~DatePreferences ()
48 { 47 {
49 } 48 }
50 49
51void DatePreferences::changeDateFormat ( int index ) 50void DatePreferences::changeDateFormat ( int index )
52 { 51 {
53 index ++; 52 index ++;
54 preferences->changePreference ( 1, index ); 53 preferences->changePreference ( 1, index );
55 } 54 }
56 55
57void DatePreferences::changeDateSeparator ( int index ) 56void DatePreferences::changeDateSeparator ( int index )
58 { 57 {
59 index ++; 58 index ++;
60 preferences->changePreference ( 2, index ); 59 preferences->changePreference ( 2, index );
61 } 60 }
62 61
63void DatePreferences::setDefaultDatePreferences () 62void DatePreferences::setDefaultDatePreferences ()
64 { 63 {
65 preferences->setDefaultDatePreferences (); 64 preferences->setDefaultDatePreferences ();
66 dateformat->setCurrentItem ( ( preferences->getPreference ( 1 ) ) - 1 ); 65 dateformat->setCurrentItem ( ( preferences->getPreference ( 1 ) ) - 1 );
67 dateseparator->setCurrentItem ( ( preferences->getPreference ( 2 ) ) - 1 ); 66 dateseparator->setCurrentItem ( ( preferences->getPreference ( 2 ) ) - 1 );
68 } 67 }
69 68
70// START TRANSACTION PREFERENCES 69// START TRANSACTION PREFERENCES
71 70
72TransactionPreferences::TransactionPreferences ( QWidget* parent ) : QDialog ( parent, 0, TRUE ) 71TransactionPreferences::TransactionPreferences ( QWidget* parent ) : QDialog ( parent, 0, TRUE )
73{ 72{
74 setCaption( tr ( "Transaction" ) ); 73 setCaption( tr ( "Transaction" ) );
75 74
76 showclearedtransactions = new QCheckBox ( this ); 75 showclearedtransactions = new QCheckBox ( this );
77 showclearedtransactions->setText ( "Show Cleared Transactions" ); 76 showclearedtransactions->setText ( "Show Cleared Transactions" );
78 77
79 limittransactionsbox = new QHBox ( this ); 78 limittransactionsbox = new QHBox ( this );
80 limittransactionsbox->setSpacing ( 2 ); 79 limittransactionsbox->setSpacing ( 2 );
81 limittransactionslabel = new QLabel ( "Show ", limittransactionsbox ); 80 limittransactionslabel = new QLabel ( "Show ", limittransactionsbox );
82 limittransactions = new QComboBox ( limittransactionsbox ); 81 limittransactions = new QComboBox ( limittransactionsbox );
83 QLabel *limittransactionslabel2 = new QLabel ( "of cleared transactions. ", limittransactionsbox ); 82 QLabel *limittransactionslabel2 = new QLabel ( "of cleared transactions. ", limittransactionsbox );
84 limittransactions->insertItem ( "14 days" ); 83 limittransactions->insertItem ( "14 days" );
85 limittransactions->insertItem ( "30 days" ); 84 limittransactions->insertItem ( "30 days" );
86 limittransactions->insertItem ( "90 days" ); 85 limittransactions->insertItem ( "90 days" );
87 limittransactions->insertItem ( "180 days" ); 86 limittransactions->insertItem ( "180 days" );
88 limittransactions->insertItem ( "365 days" ); 87 limittransactions->insertItem ( "365 days" );
89 limittransactions->insertItem ( "All" ); 88 limittransactions->insertItem ( "All" );
90 limittransactions->setCurrentItem ( preferences->getPreference ( 7 ) ); 89 limittransactions->setCurrentItem ( preferences->getPreference ( 7 ) );
91 90
92 excludetransfers = new QCheckBox ( this ); 91 excludetransfers = new QCheckBox ( this );
93 excludetransfers->setText ( "Include Transfers In Limit View" ); 92 excludetransfers->setText ( "Include Transfers In Limit View" );
94 93
95 if ( preferences->getPreference ( 3 ) == 1 ) 94 if ( preferences->getPreference ( 3 ) == 1 )
96 showclearedtransactions->setChecked ( TRUE ); 95 showclearedtransactions->setChecked ( TRUE );
97 else 96 else
98 showclearedtransactions->setChecked ( FALSE ); 97 showclearedtransactions->setChecked ( FALSE );
99 98
100 if ( preferences->getPreference ( 6 ) == 1 ) 99 if ( preferences->getPreference ( 6 ) == 1 )
101 excludetransfers->setChecked ( TRUE ); 100 excludetransfers->setChecked ( TRUE );
102 else 101 else
103 excludetransfers->setChecked ( FALSE ); 102 excludetransfers->setChecked ( FALSE );
104 103
105 defaults = new QPushButton ( QPixmap ( "/opt/QtPalmtop/pics/defaults.png" ), "Defaults", this ); 104 defaults = new QPushButton ( QPixmap ( "/opt/QtPalmtop/pics/defaults.png" ), "Defaults", this );
106 connect ( defaults, SIGNAL ( released () ), this, SLOT ( setDefaultTransactionPreferences () ) ); 105 connect ( defaults, SIGNAL ( released () ), this, SLOT ( setDefaultTransactionPreferences () ) );
107 106
108 layout = new QVBoxLayout ( this, 2, 2 ); 107 layout = new QVBoxLayout ( this, 2, 2 );
109 layout->addWidget ( showclearedtransactions ); 108 layout->addWidget ( showclearedtransactions );
110 layout->addWidget ( limittransactionsbox ); 109 layout->addWidget ( limittransactionsbox );
111 layout->addWidget ( excludetransfers ); 110 layout->addWidget ( excludetransfers );
112 layout->insertSpacing ( 3, 5 ); 111 layout->insertSpacing ( 3, 5 );
113 layout->addWidget ( defaults ); 112 layout->addWidget ( defaults );
114 113
115 connect ( showclearedtransactions, SIGNAL ( toggled ( bool ) ), this, SLOT ( changeShowClearedPreference ( bool ) ) ); 114 connect ( showclearedtransactions, SIGNAL ( toggled ( bool ) ), this, SLOT ( changeShowClearedPreference ( bool ) ) );
116 connect ( excludetransfers, SIGNAL ( toggled ( bool ) ), this, SLOT ( changeExcludeTranfersPreference ( bool ) ) ); 115 connect ( excludetransfers, SIGNAL ( toggled ( bool ) ), this, SLOT ( changeExcludeTranfersPreference ( bool ) ) );
117 connect ( limittransactions, SIGNAL ( activated ( int ) ), this, SLOT ( changeLimitTransactionsPreference ( int ) ) ); 116 connect ( limittransactions, SIGNAL ( activated ( int ) ), this, SLOT ( changeLimitTransactionsPreference ( int ) ) );
118} 117}
119 118
120TransactionPreferences::~TransactionPreferences () 119TransactionPreferences::~TransactionPreferences ()
121 { 120 {
122 } 121 }
123 122
124void TransactionPreferences::changeLimitTransactionsPreference ( int pref ) 123void TransactionPreferences::changeLimitTransactionsPreference ( int pref )
125 { 124 {
126 preferences->changePreference ( 7, pref ); 125 preferences->changePreference ( 7, pref );
127 } 126 }
128 127
129void TransactionPreferences::changeShowClearedPreference ( bool state ) 128void TransactionPreferences::changeShowClearedPreference ( bool state )
130 { 129 {
131 if ( state == TRUE ) 130 if ( state == TRUE )
diff --git a/noncore/apps/qashmoney/transactiondisplay.cpp b/noncore/apps/qashmoney/transactiondisplay.cpp
index 78b8a00..474f11e 100755
--- a/noncore/apps/qashmoney/transactiondisplay.cpp
+++ b/noncore/apps/qashmoney/transactiondisplay.cpp
@@ -1,143 +1,140 @@
1#include "transactiondisplay.h" 1#include "transactiondisplay.h"
2#include "newtransaction.h" 2#include "newtransaction.h"
3#include "account.h" 3#include "account.h"
4#include "budget.h" 4#include "budget.h"
5#include "memory.h" 5#include "memory.h"
6#include "transfer.h" 6#include "transfer.h"
7#include "preferences.h"
8#include "calculator.h" 7#include "calculator.h"
9#include "datepicker.h" 8#include "datepicker.h"
10 9
11#include <qdatetime.h>
12#include <qmessagebox.h> 10#include <qmessagebox.h>
13#include <qheader.h> 11#include <qheader.h>
14#include <qmultilineedit.h> 12#include <qmultilineedit.h>
15#include <qdatetime.h>
16 13
17extern Transaction *transaction; 14extern Transaction *transaction;
18extern Budget *budget; 15extern Budget *budget;
19extern Account *account; 16extern Account *account;
20extern Preferences *preferences; 17extern Preferences *preferences;
21extern Memory *memory; 18extern Memory *memory;
22extern Transfer *transfer; 19extern Transfer *transfer;
23 20
24TransactionDisplay::TransactionDisplay ( QWidget* parent ) : QWidget ( parent ) 21TransactionDisplay::TransactionDisplay ( QWidget* parent ) : QWidget ( parent )
25 { 22 {
26 // set transactiondisplay variables; 23 // set transactiondisplay variables;
27 accountid = 0; 24 accountid = 0;
28 children = TRUE; 25 children = TRUE;
29 26
30 firstline = new QHBox ( this ); 27 firstline = new QHBox ( this );
31 firstline->setSpacing ( 2 ); 28 firstline->setSpacing ( 2 );
32 29
33 newtransaction = new QPushButton ( firstline ); 30 newtransaction = new QPushButton ( firstline );
34 newtransaction->setPixmap ( QPixmap ("/opt/QtPalmtop/pics/new.png") ); 31 newtransaction->setPixmap ( QPixmap ("/opt/QtPalmtop/pics/new.png") );
35 connect ( newtransaction, SIGNAL ( released () ), this, SLOT ( addTransaction () ) ); 32 connect ( newtransaction, SIGNAL ( released () ), this, SLOT ( addTransaction () ) );
36 33
37 edittransaction = new QPushButton ( firstline ); 34 edittransaction = new QPushButton ( firstline );
38 edittransaction->setPixmap( QPixmap ("/opt/QtPalmtop/pics/edit.png") ); 35 edittransaction->setPixmap( QPixmap ("/opt/QtPalmtop/pics/edit.png") );
39 connect ( edittransaction, SIGNAL ( released () ), this, SLOT ( checkListViewEdit () ) ); 36 connect ( edittransaction, SIGNAL ( released () ), this, SLOT ( checkListViewEdit () ) );
40 37
41 deletetransaction = new QPushButton ( firstline ); 38 deletetransaction = new QPushButton ( firstline );
42 deletetransaction->setPixmap( QPixmap ( "/opt/QtPalmtop/pics/delete.png") ); 39 deletetransaction->setPixmap( QPixmap ( "/opt/QtPalmtop/pics/delete.png") );
43 connect ( deletetransaction, SIGNAL ( released () ), this, SLOT ( checkListViewDelete () ) ); 40 connect ( deletetransaction, SIGNAL ( released () ), this, SLOT ( checkListViewDelete () ) );
44 41
45 toggletransaction = new QPushButton ( firstline ); 42 toggletransaction = new QPushButton ( firstline );
46 toggletransaction->setPixmap( QPixmap ( "/opt/QtPalmtop/pics/redo.png") ); 43 toggletransaction->setPixmap( QPixmap ( "/opt/QtPalmtop/pics/redo.png") );
47 connect ( toggletransaction, SIGNAL ( released () ), this, SLOT ( checkListViewToggle () ) ); 44 connect ( toggletransaction, SIGNAL ( released () ), this, SLOT ( checkListViewToggle () ) );
48 45
49 viewtransactionnotes = new QPushButton ( firstline ); 46 viewtransactionnotes = new QPushButton ( firstline );
50 viewtransactionnotes->setPixmap( QPixmap ( "/opt/QtPalmtop/pics/info.png") ); 47 viewtransactionnotes->setPixmap( QPixmap ( "/opt/QtPalmtop/pics/info.png") );
51 connect ( viewtransactionnotes, SIGNAL ( released () ), this, SLOT ( showTransactionNotes () ) ); 48 connect ( viewtransactionnotes, SIGNAL ( released () ), this, SLOT ( showTransactionNotes () ) );
52 49
53 secondline = new QHBox ( this ); 50 secondline = new QHBox ( this );
54 secondline->setSpacing ( 5 ); 51 secondline->setSpacing ( 5 );
55 52
56 name = new QLabel ( secondline ); 53 name = new QLabel ( secondline );
57 balance = new QLabel ( secondline ); 54 balance = new QLabel ( secondline );
58 55
59 QLabel *limit = new QLabel ( "Limit", secondline ); 56 QLabel *limit = new QLabel ( "Limit", secondline );
60 limitbox = new QLineEdit ( secondline ); 57 limitbox = new QLineEdit ( secondline );
61 limitbox->setMinimumWidth ( ( int ) ( this->width() / 6 ) ); 58 limitbox->setMinimumWidth ( ( int ) ( this->width() / 6 ) );
62 connect ( limitbox, SIGNAL ( textChanged ( const QString & ) ), this, SLOT ( limitDisplay ( const QString & ) ) ); 59 connect ( limitbox, SIGNAL ( textChanged ( const QString & ) ), this, SLOT ( limitDisplay ( const QString & ) ) );
63 60
64 listview = new QListView ( this ); 61 listview = new QListView ( this );
65 listview->setAllColumnsShowFocus ( TRUE ); 62 listview->setAllColumnsShowFocus ( TRUE );
66 listview->setShowSortIndicator ( TRUE ); 63 listview->setShowSortIndicator ( TRUE );
67 listview->header()->setTracking ( FALSE ); 64 listview->header()->setTracking ( FALSE );
68 connect ( listview->header(), SIGNAL ( sizeChange ( int, int, int ) ), this, SLOT ( saveColumnSize ( int, int, int ) ) ); 65 connect ( listview->header(), SIGNAL ( sizeChange ( int, int, int ) ), this, SLOT ( saveColumnSize ( int, int, int ) ) );
69 connect ( listview->header(), SIGNAL ( clicked ( int ) ), this, SLOT ( saveSortingPreference ( int ) ) ); 66 connect ( listview->header(), SIGNAL ( clicked ( int ) ), this, SLOT ( saveSortingPreference ( int ) ) );
70 67
71 layout = new QVBoxLayout ( this, 2, 2 ); 68 layout = new QVBoxLayout ( this, 2, 2 );
72 layout->addWidget ( firstline ); 69 layout->addWidget ( firstline );
73 layout->addWidget ( secondline ); 70 layout->addWidget ( secondline );
74 layout->addWidget ( listview ); 71 layout->addWidget ( listview );
75 } 72 }
76 73
77void TransactionDisplay::addTransaction () 74void TransactionDisplay::addTransaction ()
78 { 75 {
79 // create local variables 76 // create local variables
80 int cleared = -1; 77 int cleared = -1;
81 78
82 // create new transaction window 79 // create new transaction window
83 NewTransaction *newtransaction = new NewTransaction ( this ); 80 NewTransaction *newtransaction = new NewTransaction ( this );
84 int width = this->size().width(); 81 int width = this->size().width();
85 newtransaction->transactionname->setMaximumWidth ( ( int ) ( width * 0.45 ) ); 82 newtransaction->transactionname->setMaximumWidth ( ( int ) ( width * 0.45 ) );
86 newtransaction->transactionname->setMinimumWidth ( ( int ) ( width * 0.35 ) ); 83 newtransaction->transactionname->setMinimumWidth ( ( int ) ( width * 0.35 ) );
87 newtransaction->lineitembox->setMaximumWidth ( ( int ) ( width * 0.45 ) ); 84 newtransaction->lineitembox->setMaximumWidth ( ( int ) ( width * 0.45 ) );
88 newtransaction->transactiondatebox->setMaximumWidth ( ( int ) ( width * 0.4 ) ); 85 newtransaction->transactiondatebox->setMaximumWidth ( ( int ) ( width * 0.4 ) );
89 newtransaction->transactionamountbox->setMaximumWidth ( ( int ) ( width * 0.4 ) ); 86 newtransaction->transactionamountbox->setMaximumWidth ( ( int ) ( width * 0.4 ) );
90 newtransaction->transactionnumber->setMaximumWidth ( ( int ) ( width * 0.25 ) ); 87 newtransaction->transactionnumber->setMaximumWidth ( ( int ) ( width * 0.25 ) );
91 88
92 // enter today's date in the date box as defaul 89 // enter today's date in the date box as defaul
93 QDate today = QDate::currentDate (); 90 QDate today = QDate::currentDate ();
94 int defaultday = today.day(); 91 int defaultday = today.day();
95 int defaultmonth = today.month(); 92 int defaultmonth = today.month();
96 int defaultyear = today.year(); 93 int defaultyear = today.year();
97 newtransaction->transactiondate->setText ( preferences->getDate ( defaultyear, defaultmonth, defaultday ) ); 94 newtransaction->transactiondate->setText ( preferences->getDate ( defaultyear, defaultmonth, defaultday ) );
98 95
99 // add memory items to the transactionname combobox 96 // add memory items to the transactionname combobox
100 memory->displayMemoryItems ( newtransaction->transactionname ); 97 memory->displayMemoryItems ( newtransaction->transactionname );
101 newtransaction->transactionname->insertItem ( "", 0 ); 98 newtransaction->transactionname->insertItem ( "", 0 );
102 99
103 if ( newtransaction->exec () == QDialog::Accepted ) 100 if ( newtransaction->exec () == QDialog::Accepted )
104 { 101 {
105 if ( newtransaction->clearedcheckbox->isChecked () == TRUE ) // set a parent id and type for a child transaction 102 if ( newtransaction->clearedcheckbox->isChecked () == TRUE ) // set a parent id and type for a child transaction
106 cleared = 1; 103 cleared = 1;
107 else 104 else
108 cleared = 0; 105 cleared = 0;
109 106
110 float amount = newtransaction->transactionamount->text().toFloat(); 107 float amount = newtransaction->transactionamount->text().toFloat();
111 if ( newtransaction->depositbox->isChecked() == FALSE ) 108 if ( newtransaction->depositbox->isChecked() == FALSE )
112 amount = amount * -1; 109 amount = amount * -1;
113 110
114 // add the transaction name to the memory items 111 // add the transaction name to the memory items
115 memory->addMemoryItem ( newtransaction->transactionname->currentText() ); 112 memory->addMemoryItem ( newtransaction->transactionname->currentText() );
116 113
117 // add the transaction 114 // add the transaction
118 if ( newtransaction->getDateEdited () == TRUE ) 115 if ( newtransaction->getDateEdited () == TRUE )
119 transaction->addTransaction ( newtransaction->getDescription(), newtransaction->transactionname->currentText(), accountid, account->getParentAccountID ( accountid ), 116 transaction->addTransaction ( newtransaction->getDescription(), newtransaction->transactionname->currentText(), accountid, account->getParentAccountID ( accountid ),
120 newtransaction->transactionnumber->text().toInt(), newtransaction->getDay(), newtransaction->getMonth(), newtransaction->getYear(), amount, cleared, newtransaction->getCurrentBudget(), 117 newtransaction->transactionnumber->text().toInt(), newtransaction->getDay(), newtransaction->getMonth(), newtransaction->getYear(), amount, cleared, newtransaction->getCurrentBudget(),
121 newtransaction->getCurrentLineItem() ); 118 newtransaction->getCurrentLineItem() );
122 else 119 else
123 transaction->addTransaction ( newtransaction->getDescription(), newtransaction->transactionname->currentText(), accountid, account->getParentAccountID ( accountid ), 120 transaction->addTransaction ( newtransaction->getDescription(), newtransaction->transactionname->currentText(), accountid, account->getParentAccountID ( accountid ),
124 newtransaction->transactionnumber->text().toInt(), defaultday, defaultmonth, defaultyear, amount, cleared, newtransaction->getCurrentBudget(), newtransaction->getCurrentLineItem() ); 121 newtransaction->transactionnumber->text().toInt(), defaultday, defaultmonth, defaultyear, amount, cleared, newtransaction->getCurrentBudget(), newtransaction->getCurrentLineItem() );
125 122
126 // redisplay transactions 123 // redisplay transactions
127 listview->clear(); 124 listview->clear();
128 QString displaytext = "%"; 125 QString displaytext = "%";
129 displaytext.prepend ( limitbox->text() ); 126 displaytext.prepend ( limitbox->text() );
130 setTransactionDisplayDate (); 127 setTransactionDisplayDate ();
131 if ( transaction->getNumberOfTransactions() > 0 ) 128 if ( transaction->getNumberOfTransactions() > 0 )
132 transaction->displayTransactions ( listview, accountid, children, displaytext, displaydate ); 129 transaction->displayTransactions ( listview, accountid, children, displaytext, displaydate );
133 130
134 // redisplay transfers 131 // redisplay transfers
135 if ( transfer->getNumberOfTransfers() > 0 ) 132 if ( transfer->getNumberOfTransfers() > 0 )
136 transfer->displayTransfers ( listview, accountid, children, displaydate ); 133 transfer->displayTransfers ( listview, accountid, children, displaydate );
137 134
138 // add the transaction amount to the account it's associated with 135 // add the transaction amount to the account it's associated with
139 // and update its parent account balance if necessary 136 // and update its parent account balance if necessary
140 account->updateAccountBalance ( accountid ); 137 account->updateAccountBalance ( accountid );
141 if ( account->getParentAccountID ( accountid ) != -1 ) 138 if ( account->getParentAccountID ( accountid ) != -1 )
142 account->changeParentAccountBalance ( account->getParentAccountID ( accountid ) ); 139 account->changeParentAccountBalance ( account->getParentAccountID ( accountid ) );
143 140
diff --git a/noncore/apps/qashmoney/transferdialog.cpp b/noncore/apps/qashmoney/transferdialog.cpp
index f85c740..558abec 100755
--- a/noncore/apps/qashmoney/transferdialog.cpp
+++ b/noncore/apps/qashmoney/transferdialog.cpp
@@ -1,114 +1,112 @@
1#include "transferdialog.h" 1#include "transferdialog.h"
2#include "datepicker.h" 2#include "datepicker.h"
3#include "calculator.h" 3#include "calculator.h"
4 4
5#include <qdatetime.h>
6#include <qfont.h>
7 5
8extern Preferences *preferences; 6extern Preferences *preferences;
9extern Account *account; 7extern Account *account;
10 8
11TransferDialog::TransferDialog ( QWidget *parent, int fromaccountid, int toaccountid ) : QDialog ( parent, 0, TRUE ) 9TransferDialog::TransferDialog ( QWidget *parent, int fromaccountid, int toaccountid ) : QDialog ( parent, 0, TRUE )
12 { 10 {
13 dateedited = FALSE; 11 dateedited = FALSE;
14 setCaption ( "Transfer" ); 12 setCaption ( "Transfer" );
15 13
16 fromaccountlabel = new QLabel ( "From account:", this ); 14 fromaccountlabel = new QLabel ( "From account:", this );
17 QFont f = this->font(); 15 QFont f = this->font();
18 f.setWeight ( QFont::Bold ); 16 f.setWeight ( QFont::Bold );
19 fromaccountlabel->setFont ( f ); 17 fromaccountlabel->setFont ( f );
20 fromaccount = new QLabel ( account->getAccountName ( fromaccountid ), this ); 18 fromaccount = new QLabel ( account->getAccountName ( fromaccountid ), this );
21 19
22 toaccountlabel = new QLabel ( "To Account:", this ); 20 toaccountlabel = new QLabel ( "To Account:", this );
23 toaccountlabel->setFont ( f ); 21 toaccountlabel->setFont ( f );
24 toaccount = new QLabel ( account->getAccountName ( toaccountid ), this ); 22 toaccount = new QLabel ( account->getAccountName ( toaccountid ), this );
25 23
26 datelabel = new QLabel ( "Date", this ); 24 datelabel = new QLabel ( "Date", this );
27 25
28 datebox = new QHBox ( this ); 26 datebox = new QHBox ( this );
29 datebox->setSpacing ( 2 ); 27 datebox->setSpacing ( 2 );
30 date = new QLineEdit ( datebox ); 28 date = new QLineEdit ( datebox );
31 date->setAlignment ( Qt::AlignRight ); 29 date->setAlignment ( Qt::AlignRight );
32 date->setDisabled ( TRUE ); 30 date->setDisabled ( TRUE );
33 datebutton = new QPushButton ( datebox ); 31 datebutton = new QPushButton ( datebox );
34 datebutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/date.png" ) ); 32 datebutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/date.png" ) );
35 connect ( datebutton, SIGNAL ( released () ), this, SLOT ( showCalendar () ) ); 33 connect ( datebutton, SIGNAL ( released () ), this, SLOT ( showCalendar () ) );
36 34
37 amounttlabel = new QLabel ( "Amount", this ); 35 amounttlabel = new QLabel ( "Amount", this );
38 36
39 amountbox = new QHBox ( this ); 37 amountbox = new QHBox ( this );
40 amountbox->setSpacing ( 2 ); 38 amountbox->setSpacing ( 2 );
41 amount = new QLineEdit ( amountbox ); 39 amount = new QLineEdit ( amountbox );
42 amount->setAlignment ( Qt::AlignRight ); 40 amount->setAlignment ( Qt::AlignRight );
43 calculatorbutton = new QPushButton( amountbox ); 41 calculatorbutton = new QPushButton( amountbox );
44 calculatorbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) ); 42 calculatorbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) );
45 connect ( calculatorbutton, SIGNAL ( released() ), this, SLOT ( showCalculator() ) ); 43 connect ( calculatorbutton, SIGNAL ( released() ), this, SLOT ( showCalculator() ) );
46 44
47 clearedcheckbox = new QCheckBox ( "Cleared", this ); 45 clearedcheckbox = new QCheckBox ( "Cleared", this );
48 46
49 layout = new QVBoxLayout ( this, 4, 2 ); 47 layout = new QVBoxLayout ( this, 4, 2 );
50 layout->addWidget ( fromaccountlabel, Qt::AlignLeft ); 48 layout->addWidget ( fromaccountlabel, Qt::AlignLeft );
51 layout->addWidget ( fromaccount, Qt::AlignLeft ); 49 layout->addWidget ( fromaccount, Qt::AlignLeft );
52 layout->addWidget ( toaccountlabel, Qt::AlignLeft ); 50 layout->addWidget ( toaccountlabel, Qt::AlignLeft );
53 layout->addWidget ( toaccount, Qt::AlignLeft ); 51 layout->addWidget ( toaccount, Qt::AlignLeft );
54 layout->addSpacing ( 5 ); 52 layout->addSpacing ( 5 );
55 layout->addWidget ( datelabel, Qt::AlignLeft ); 53 layout->addWidget ( datelabel, Qt::AlignLeft );
56 layout->addWidget ( datebox, Qt::AlignLeft ); 54 layout->addWidget ( datebox, Qt::AlignLeft );
57 layout->addWidget ( amounttlabel, Qt::AlignLeft ); 55 layout->addWidget ( amounttlabel, Qt::AlignLeft );
58 layout->addWidget ( amountbox, Qt::AlignLeft ); 56 layout->addWidget ( amountbox, Qt::AlignLeft );
59 layout->addWidget ( clearedcheckbox, Qt::AlignLeft ); 57 layout->addWidget ( clearedcheckbox, Qt::AlignLeft );
60 } 58 }
61 59
62bool TransferDialog::getDateEdited () 60bool TransferDialog::getDateEdited ()
63 { 61 {
64 return dateedited; 62 return dateedited;
65 } 63 }
66 64
67void TransferDialog::showCalendar () 65void TransferDialog::showCalendar ()
68 { 66 {
69 QDate newDate = QDate::currentDate (); 67 QDate newDate = QDate::currentDate ();
70 DatePicker *dp = new DatePicker ( newDate ); 68 DatePicker *dp = new DatePicker ( newDate );
71 if ( dp->exec () == QDialog::Accepted ) 69 if ( dp->exec () == QDialog::Accepted )
72 { 70 {
73 // Set date integers 71 // Set date integers
74 year = dp->getYear(); 72 year = dp->getYear();
75 month = dp->getMonth(); 73 month = dp->getMonth();
76 day = dp->getDay(); 74 day = dp->getDay();
77 75
78 // Set dateedited to TRUE 76 // Set dateedited to TRUE
79 // This tells the accountdisplay object that the user edited an account 77 // This tells the accountdisplay object that the user edited an account
80 // and did change the date 78 // and did change the date
81 dateedited = TRUE; 79 dateedited = TRUE;
82 80
83 // Display date with our selected format 81 // Display date with our selected format
84 date->setText ( preferences->getDate ( year, month, day ) ); 82 date->setText ( preferences->getDate ( year, month, day ) );
85 } 83 }
86 } 84 }
87 85
88int TransferDialog::getDay () 86int TransferDialog::getDay ()
89 { 87 {
90 return day; 88 return day;
91 } 89 }
92 90
93int TransferDialog::getMonth () 91int TransferDialog::getMonth ()
94 { 92 {
95 return month; 93 return month;
96 } 94 }
97 95
98int TransferDialog::getYear () 96int TransferDialog::getYear ()
99 { 97 {
100 return year; 98 return year;
101 } 99 }
102 100
103void TransferDialog::showCalculator () 101void TransferDialog::showCalculator ()
104 { 102 {
105 Calculator *calculator = new Calculator ( this ); 103 Calculator *calculator = new Calculator ( this );
106 if ( calculator->exec () == QDialog::Accepted ) 104 if ( calculator->exec () == QDialog::Accepted )
107 amount->setText ( calculator->display->text() ); 105 amount->setText ( calculator->display->text() );
108 } 106 }
109 107
110 108
111 109
112 110
113 111
114 112
diff --git a/noncore/apps/tableviewer/tableviewer.cpp b/noncore/apps/tableviewer/tableviewer.cpp
index 207172d..f35dfcd 100644
--- a/noncore/apps/tableviewer/tableviewer.cpp
+++ b/noncore/apps/tableviewer/tableviewer.cpp
@@ -1,165 +1,164 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21/* local includes */ 21/* local includes */
22#include "tableviewer.h" 22#include "tableviewer.h"
23#include "ui/tvbrowseview.h" 23#include "ui/tvbrowseview.h"
24#include "ui/tvfilterview.h" 24#include "ui/tvfilterview.h"
25#include "ui/tvlistview.h" 25#include "ui/tvlistview.h"
26#include "ui/tveditview.h" 26#include "ui/tveditview.h"
27#include "ui/tvkeyedit.h" 27#include "ui/tvkeyedit.h"
28#include "db/datacache.h" 28#include "db/datacache.h"
29 29
30/* QPE includes */ 30/* QPE includes */
31#include <qpe/fileselector.h> 31#include <qpe/fileselector.h>
32#include <qpe/resource.h> 32#include <qpe/resource.h>
33#include <qpe/qpetoolbar.h> 33#include <qpe/qpetoolbar.h>
34 34
35/* QTE includes */ 35/* QTE includes */
36#include <qmenubar.h> 36#include <qmenubar.h>
37#include <qpe/qpetoolbar.h>
38#include <qpopupmenu.h> 37#include <qpopupmenu.h>
39#include <qapplication.h> 38#include <qapplication.h>
40#include <qwidgetstack.h> 39#include <qwidgetstack.h>
41#include <qlayout.h> 40#include <qlayout.h>
42#include <qbuffer.h> 41#include <qbuffer.h>
43/*! 42/*!
44 \class TableViewerWindow 43 \class TableViewerWindow
45 \brief The main window widget of the application 44 \brief The main window widget of the application
46 45
47 This is the main widget of the table viewer application. 46 This is the main widget of the table viewer application.
48 It is the co-ordination point. 47 It is the co-ordination point.
49*/ 48*/
50 49
51/*! 50/*!
52 Constructs a new TableViewerWindow 51 Constructs a new TableViewerWindow
53*/ 52*/
54TableViewerWindow::TableViewerWindow(QWidget *parent, const char *name, WFlags f) 53TableViewerWindow::TableViewerWindow(QWidget *parent, const char *name, WFlags f)
55 : QMainWindow(parent, name, f) 54 : QMainWindow(parent, name, f)
56{ 55{
57 setCaption(tr("Table Viewer")); 56 setCaption(tr("Table Viewer"));
58 57
59/* Build data */ 58/* Build data */
60 ds = new DBStore(); 59 ds = new DBStore();
61 doc.setType("text/x-xml-tableviewer"); 60 doc.setType("text/x-xml-tableviewer");
62 doc.setName("table"); 61 doc.setName("table");
63 62
64 dirty = FALSE; 63 dirty = FALSE;
65 ts.current_column = 0; 64 ts.current_column = 0;
66 ts.kRep = ds->getKeys(); 65 ts.kRep = ds->getKeys();
67 66
68/* build menus */ 67/* build menus */
69 menu = new QMenuBar(this, 0); 68 menu = new QMenuBar(this, 0);
70 69
71 QPopupMenu *file_menu = new QPopupMenu; 70 QPopupMenu *file_menu = new QPopupMenu;
72 file_menu->insertItem("New", this, SLOT(newDocument())); 71 file_menu->insertItem("New", this, SLOT(newDocument()));
73 72
74 file_menu->insertItem("Open", this, SLOT(selectDocument())); 73 file_menu->insertItem("Open", this, SLOT(selectDocument()));
75 file_menu->insertSeparator(); 74 file_menu->insertSeparator();
76 file_menu->insertItem("Properties"); 75 file_menu->insertItem("Properties");
77 76
78 /* later will want to set this up to clean up first via this, SLOT(quit) */ 77 /* later will want to set this up to clean up first via this, SLOT(quit) */
79 menu->insertItem("Document", file_menu); 78 menu->insertItem("Document", file_menu);
80 79
81 QPopupMenu *edit_menu = new QPopupMenu; 80 QPopupMenu *edit_menu = new QPopupMenu;
82 edit_menu->insertItem("Edit Item", this, SLOT(editItemSlot())); 81 edit_menu->insertItem("Edit Item", this, SLOT(editItemSlot()));
83 edit_menu->insertItem("Edit Keys", this, SLOT(editKeysSlot())); 82 edit_menu->insertItem("Edit Keys", this, SLOT(editKeysSlot()));
84 edit_menu->insertItem("Edit filters", this, SLOT(filterViewSlot())); 83 edit_menu->insertItem("Edit filters", this, SLOT(filterViewSlot()));
85 menu->insertItem("Edit", edit_menu); 84 menu->insertItem("Edit", edit_menu);
86 85
87 QPopupMenu *view_menu = new QPopupMenu; 86 QPopupMenu *view_menu = new QPopupMenu;
88 view_menu->insertItem("Browse View", this, SLOT(browseViewSlot())); 87 view_menu->insertItem("Browse View", this, SLOT(browseViewSlot()));
89 view_menu->insertItem("List View", this, SLOT(listViewSlot())); 88 view_menu->insertItem("List View", this, SLOT(listViewSlot()));
90 menu->insertItem("View", view_menu); 89 menu->insertItem("View", view_menu);
91 90
92 QVBoxLayout *main_layout = new QVBoxLayout; 91 QVBoxLayout *main_layout = new QVBoxLayout;
93 92
94 /* Build tool bar */ 93 /* Build tool bar */
95 navigation = new QToolBar(this, "navigation"); 94 navigation = new QToolBar(this, "navigation");
96 QToolButton *newItemButton = new QToolButton( 95 QToolButton *newItemButton = new QToolButton(
97 QIconSet(Resource::loadPixmap("new")), "New Item", QString::null, 96 QIconSet(Resource::loadPixmap("new")), "New Item", QString::null,
98 this, SLOT(newItemSlot()), navigation, "New Item"); 97 this, SLOT(newItemSlot()), navigation, "New Item");
99 QToolButton *editItemButton = new QToolButton( 98 QToolButton *editItemButton = new QToolButton(
100 QIconSet(Resource::loadPixmap("edit")), "Edit Item", QString::null, 99 QIconSet(Resource::loadPixmap("edit")), "Edit Item", QString::null,
101 this, SLOT(editItemSlot()), navigation, "Edit Item"); 100 this, SLOT(editItemSlot()), navigation, "Edit Item");
102 QToolButton *deleteItemButton = new QToolButton( 101 QToolButton *deleteItemButton = new QToolButton(
103 QIconSet(Resource::loadPixmap("trash")), "Delete Item", 102 QIconSet(Resource::loadPixmap("trash")), "Delete Item",
104 QString::null, this, 103 QString::null, this,
105 SLOT(deleteItemSlot()), navigation, "Delete Item"); 104 SLOT(deleteItemSlot()), navigation, "Delete Item");
106 105
107 navigation->addSeparator(); 106 navigation->addSeparator();
108 107
109 QToolButton *firstItemButton = new QToolButton( 108 QToolButton *firstItemButton = new QToolButton(
110 QIconSet(Resource::loadPixmap("fastback")), "First Item", 109 QIconSet(Resource::loadPixmap("fastback")), "First Item",
111 QString::null, this, 110 QString::null, this,
112 SLOT(firstItem()), navigation, "First Item"); 111 SLOT(firstItem()), navigation, "First Item");
113 QToolButton *previousItemButton = new QToolButton( 112 QToolButton *previousItemButton = new QToolButton(
114 QIconSet(Resource::loadPixmap("back")), "Previous Item", 113 QIconSet(Resource::loadPixmap("back")), "Previous Item",
115 QString::null, this, 114 QString::null, this,
116 SLOT(previousItem()), navigation, "Previous Item"); 115 SLOT(previousItem()), navigation, "Previous Item");
117 QToolButton *nextItemButton = new QToolButton( 116 QToolButton *nextItemButton = new QToolButton(
118 QIconSet(Resource::loadPixmap("forward")), "Next Item", 117 QIconSet(Resource::loadPixmap("forward")), "Next Item",
119 QString::null, this, 118 QString::null, this,
120 SLOT(nextItem()), navigation, "Next Item"); 119 SLOT(nextItem()), navigation, "Next Item");
121 QToolButton *lastItemButton = new QToolButton( 120 QToolButton *lastItemButton = new QToolButton(
122 QIconSet(Resource::loadPixmap("fastforward")), "Last Item", 121 QIconSet(Resource::loadPixmap("fastforward")), "Last Item",
123 QString::null, this, 122 QString::null, this,
124 SLOT(lastItem()), navigation, "Last Item"); 123 SLOT(lastItem()), navigation, "Last Item");
125 124
126 navigation->addSeparator(); 125 navigation->addSeparator();
127 QToolButton *browseButton = new QToolButton( 126 QToolButton *browseButton = new QToolButton(
128 QIconSet(Resource::loadPixmap("day")), "View Single Item", 127 QIconSet(Resource::loadPixmap("day")), "View Single Item",
129 QString::null, this, 128 QString::null, this,
130 SLOT(browseViewSlot()), navigation, "View Single Item"); 129 SLOT(browseViewSlot()), navigation, "View Single Item");
131 QToolButton *listButton = new QToolButton( 130 QToolButton *listButton = new QToolButton(
132 QIconSet(Resource::loadPixmap("month")), "View Multiple Items", 131 QIconSet(Resource::loadPixmap("month")), "View Multiple Items",
133 QString::null, this, 132 QString::null, this,
134 SLOT(listViewSlot()), navigation, "View Multiple Items"); 133 SLOT(listViewSlot()), navigation, "View Multiple Items");
135 134
136 setToolBarsMovable(FALSE); 135 setToolBarsMovable(FALSE);
137 setToolBarsMovable(FALSE); 136 setToolBarsMovable(FALSE);
138 setToolBarsMovable(FALSE); 137 setToolBarsMovable(FALSE);
139 138
140/* Build widgets */ 139/* Build widgets */
141 browseView = new TVBrowseView(&ts, this, 0); 140 browseView = new TVBrowseView(&ts, this, 0);
142 listView = new TVListView(&ts, this, 0); 141 listView = new TVListView(&ts, this, 0);
143 filterView = new TVFilterView(&ts, this, 0); 142 filterView = new TVFilterView(&ts, this, 0);
144 fileSelector = new FileSelector("text/csv;text/x-xml-tableviewer", 143 fileSelector = new FileSelector("text/csv;text/x-xml-tableviewer",
145 this, "fileselector"); 144 this, "fileselector");
146 fileSelector->setNewVisible(FALSE); 145 fileSelector->setNewVisible(FALSE);
147 fileSelector->setCloseVisible(FALSE); 146 fileSelector->setCloseVisible(FALSE);
148 147
149 cw = new QWidgetStack(this, 0); 148 cw = new QWidgetStack(this, 0);
150 cw->addWidget(listView, ListState); 149 cw->addWidget(listView, ListState);
151 cw->addWidget(browseView, BrowseState); 150 cw->addWidget(browseView, BrowseState);
152 cw->addWidget(filterView, FilterState); 151 cw->addWidget(filterView, FilterState);
153 cw->addWidget(fileSelector, FileState); 152 cw->addWidget(fileSelector, FileState);
154 153
155 current_view = FileState; 154 current_view = FileState;
156 cw->raiseWidget(current_view); 155 cw->raiseWidget(current_view);
157 fileSelector->reread(); 156 fileSelector->reread();
158 157
159 connect(browseView, SIGNAL(searchOnKey(int, TVVariant)), 158 connect(browseView, SIGNAL(searchOnKey(int, TVVariant)),
160 this, SLOT(searchOnKey(int, TVVariant))); 159 this, SLOT(searchOnKey(int, TVVariant)));
161 connect(browseView, SIGNAL(sortChanged(int)), 160 connect(browseView, SIGNAL(sortChanged(int)),
162 this, SLOT(setPrimaryKey(int))); 161 this, SLOT(setPrimaryKey(int)));
163 162
164 connect(fileSelector, SIGNAL(closeMe()), this, SLOT(browseViewSlot())); 163 connect(fileSelector, SIGNAL(closeMe()), this, SLOT(browseViewSlot()));
165 connect(fileSelector, SIGNAL(fileSelected(const DocLnk &)), 164 connect(fileSelector, SIGNAL(fileSelected(const DocLnk &)),