author | chicken <chicken> | 2004-03-01 19:44:43 (UTC) |
---|---|---|
committer | chicken <chicken> | 2004-03-01 19:44:43 (UTC) |
commit | 18ea562480a63f504f4dc8e3f46c1db9d2cd6276 (patch) (unidiff) | |
tree | de22b70f1da5adeb072f0c30517bd92e9c7a839b | |
parent | 8ac7ec5e055dacd8c92d5a28336257cfe3e716e5 (diff) | |
download | opie-18ea562480a63f504f4dc8e3f46c1db9d2cd6276.zip opie-18ea562480a63f504f4dc8e3f46c1db9d2cd6276.tar.gz opie-18ea562480a63f504f4dc8e3f46c1db9d2cd6276.tar.bz2 |
fix includes
-rw-r--r-- | noncore/apps/opie-write/qcomplextext.cpp | 3 | ||||
-rw-r--r-- | noncore/apps/opie-write/qrichtext.cpp | 15 | ||||
-rw-r--r-- | noncore/apps/opie-write/qstylesheet.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/opie-write/qtextedit.cpp | 20 | ||||
-rw-r--r-- | noncore/apps/oxygen/calcdlgui.cpp | 1 | ||||
-rw-r--r-- | noncore/apps/oxygen/dataTable.cpp | 3 | ||||
-rw-r--r-- | noncore/apps/oxygen/datawidgetui.cpp | 5 | ||||
-rw-r--r-- | noncore/apps/oxygen/kmolcalc.cpp | 3 | ||||
-rw-r--r-- | noncore/apps/oxygen/oxyframe.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/oxygen/oxygen.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/oxygen/psewidget.cpp | 2 | ||||
-rwxr-xr-x | noncore/apps/qashmoney/account.cpp | 2 | ||||
-rwxr-xr-x | noncore/apps/qashmoney/accountdisplay.cpp | 2 | ||||
-rwxr-xr-x | noncore/apps/qashmoney/budgetdisplay.cpp | 3 | ||||
-rwxr-xr-x | noncore/apps/qashmoney/newaccount.cpp | 3 | ||||
-rwxr-xr-x | noncore/apps/qashmoney/newtransaction.cpp | 2 | ||||
-rwxr-xr-x | noncore/apps/qashmoney/preferencedialogs.cpp | 1 | ||||
-rwxr-xr-x | noncore/apps/qashmoney/transactiondisplay.cpp | 3 | ||||
-rwxr-xr-x | noncore/apps/qashmoney/transferdialog.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/tableviewer/tableviewer.cpp | 1 |
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 | ||
46 | using namespace Qt3; | 43 | using 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 | */ |
54 | QBidiContext::QBidiContext( uchar l, QChar::Direction e, QBidiContext *p, bool o ) | 51 | QBidiContext::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 | ||
63 | QBidiContext::~QBidiContext() | 60 | QBidiContext::~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 | */ |
110 | static inline const QChar *prevChar( const QString &str, int pos ) | 107 | static 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 | ||
124 | static inline const QChar *nextChar( const QString &str, int pos) | 121 | static 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 | ||
140 | static inline bool prevVisualCharJoins( const QString &str, int pos) | 137 | static 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 | ||
145 | static inline bool nextVisualCharJoins( const QString &str, int pos) | 142 | static 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,313 +1,298 @@ | |||
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 | ||
62 | using namespace Qt3; | 47 | using namespace Qt3; |
63 | 48 | ||
64 | static QTextCursor* richTextExportStart = 0; | 49 | static QTextCursor* richTextExportStart = 0; |
65 | static QTextCursor* richTextExportEnd = 0; | 50 | static QTextCursor* richTextExportEnd = 0; |
66 | 51 | ||
67 | static QTextFormatCollection *qFormatCollection = 0; | 52 | static QTextFormatCollection *qFormatCollection = 0; |
68 | 53 | ||
69 | const int border_tolerance = 2; | 54 | const 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 | ||
77 | static inline bool is_printer( QPainter *p ) | 62 | static 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 | ||
84 | static inline int scale( int value, QPainter *painter ) | 69 | static 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 | ||
107 | void QTextCommandHistory::addCommand( QTextCommand *cmd ) | 92 | void 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 | ||
132 | QTextCursor *QTextCommandHistory::undo( QTextCursor *c ) | 117 | QTextCursor *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 | ||
142 | QTextCursor *QTextCommandHistory::redo( QTextCursor *c ) | 127 | QTextCursor *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 | ||
158 | bool QTextCommandHistory::isUndoAvailable() | 143 | bool QTextCommandHistory::isUndoAvailable() |
159 | { | 144 | { |
160 | return current > -1; | 145 | return current > -1; |
161 | } | 146 | } |
162 | 147 | ||
163 | bool QTextCommandHistory::isRedoAvailable() | 148 | bool 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 | ||
170 | QTextDeleteCommand::QTextDeleteCommand( QTextDocument *d, int i, int idx, const QMemArray<QTextStringChar> &str, | 155 | QTextDeleteCommand::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 | ||
180 | QTextDeleteCommand::QTextDeleteCommand( QTextParagraph *p, int idx, const QMemArray<QTextStringChar> &str ) | 165 | QTextDeleteCommand::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(); |
186 | } | 171 | } |
187 | } | 172 | } |
188 | 173 | ||
189 | QTextDeleteCommand::~QTextDeleteCommand() | 174 | QTextDeleteCommand::~QTextDeleteCommand() |
190 | { | 175 | { |
191 | for ( int i = 0; i < (int)text.size(); ++i ) { | 176 | for ( int i = 0; i < (int)text.size(); ++i ) { |
192 | if ( text[ i ].format() ) | 177 | if ( text[ i ].format() ) |
193 | text[ i ].format()->removeRef(); | 178 | text[ i ].format()->removeRef(); |
194 | } | 179 | } |
195 | text.resize( 0 ); | 180 | text.resize( 0 ); |
196 | } | 181 | } |
197 | 182 | ||
198 | QTextCursor *QTextDeleteCommand::execute( QTextCursor *c ) | 183 | QTextCursor *QTextDeleteCommand::execute( QTextCursor *c ) |
199 | { | 184 | { |
200 | QTextParagraph *s = doc ? doc->paragAt( id ) : parag; | 185 | QTextParagraph *s = doc ? doc->paragAt( id ) : parag; |
201 | if ( !s ) { | 186 | if ( !s ) { |
202 | qWarning( "can't locate parag at %d, last parag: %d", id, doc->lastParagraph()->paragId() ); | 187 | qWarning( "can't locate parag at %d, last parag: %d", id, doc->lastParagraph()->paragId() ); |
203 | return 0; | 188 | return 0; |
204 | } | 189 | } |
205 | 190 | ||
206 | cursor.setParagraph( s ); | 191 | cursor.setParagraph( s ); |
207 | cursor.setIndex( index ); | 192 | cursor.setIndex( index ); |
208 | int len = text.size(); | 193 | int len = text.size(); |
209 | if ( c ) | 194 | if ( c ) |
210 | *c = cursor; | 195 | *c = cursor; |
211 | if ( doc ) { | 196 | if ( doc ) { |
212 | doc->setSelectionStart( QTextDocument::Temp, cursor ); | 197 | doc->setSelectionStart( QTextDocument::Temp, cursor ); |
213 | for ( int i = 0; i < len; ++i ) | 198 | for ( int i = 0; i < len; ++i ) |
214 | cursor.gotoNextLetter(); | 199 | cursor.gotoNextLetter(); |
215 | doc->setSelectionEnd( QTextDocument::Temp, cursor ); | 200 | doc->setSelectionEnd( QTextDocument::Temp, cursor ); |
216 | doc->removeSelectedText( QTextDocument::Temp, &cursor ); | 201 | doc->removeSelectedText( QTextDocument::Temp, &cursor ); |
217 | if ( c ) | 202 | if ( c ) |
218 | *c = cursor; | 203 | *c = cursor; |
219 | } else { | 204 | } else { |
220 | s->remove( index, len ); | 205 | s->remove( index, len ); |
221 | } | 206 | } |
222 | 207 | ||
223 | return c; | 208 | return c; |
224 | } | 209 | } |
225 | 210 | ||
226 | QTextCursor *QTextDeleteCommand::unexecute( QTextCursor *c ) | 211 | QTextCursor *QTextDeleteCommand::unexecute( QTextCursor *c ) |
227 | { | 212 | { |
228 | QTextParagraph *s = doc ? doc->paragAt( id ) : parag; | 213 | QTextParagraph *s = doc ? doc->paragAt( id ) : parag; |
229 | if ( !s ) { | 214 | if ( !s ) { |
230 | qWarning( "can't locate parag at %d, last parag: %d", id, doc->lastParagraph()->paragId() ); | 215 | qWarning( "can't locate parag at %d, last parag: %d", id, doc->lastParagraph()->paragId() ); |
231 | return 0; | 216 | return 0; |
232 | } | 217 | } |
233 | 218 | ||
234 | cursor.setParagraph( s ); | 219 | cursor.setParagraph( s ); |
235 | cursor.setIndex( index ); | 220 | cursor.setIndex( index ); |
236 | QString str = QTextString::toString( text ); | 221 | QString str = QTextString::toString( text ); |
237 | cursor.insert( str, TRUE, &text ); | 222 | cursor.insert( str, TRUE, &text ); |
238 | cursor.setParagraph( s ); | 223 | cursor.setParagraph( s ); |
239 | cursor.setIndex( index ); | 224 | cursor.setIndex( index ); |
240 | if ( c ) { | 225 | if ( c ) { |
241 | c->setParagraph( s ); | 226 | c->setParagraph( s ); |
242 | c->setIndex( index ); | 227 | c->setIndex( index ); |
243 | for ( int i = 0; i < (int)text.size(); ++i ) | 228 | for ( int i = 0; i < (int)text.size(); ++i ) |
244 | c->gotoNextLetter(); | 229 | c->gotoNextLetter(); |
245 | } | 230 | } |
246 | 231 | ||
247 | if ( !styleInformation.isEmpty() ) { | 232 | if ( !styleInformation.isEmpty() ) { |
248 | QDataStream styleStream( styleInformation, IO_ReadOnly ); | 233 | QDataStream styleStream( styleInformation, IO_ReadOnly ); |
249 | int num; | 234 | int num; |
250 | styleStream >> num; | 235 | styleStream >> num; |
251 | QTextParagraph *p = s; | 236 | QTextParagraph *p = s; |
252 | while ( num-- && p ) { | 237 | while ( num-- && p ) { |
253 | p->readStyleInformation( styleStream ); | 238 | p->readStyleInformation( styleStream ); |
254 | p = p->next(); | 239 | p = p->next(); |
255 | } | 240 | } |
256 | } | 241 | } |
257 | s = cursor.paragraph(); | 242 | s = cursor.paragraph(); |
258 | while ( s ) { | 243 | while ( s ) { |
259 | s->format(); | 244 | s->format(); |
260 | s->setChanged( TRUE ); | 245 | s->setChanged( TRUE ); |
261 | if ( s == c->paragraph() ) | 246 | if ( s == c->paragraph() ) |
262 | break; | 247 | break; |
263 | s = s->next(); | 248 | s = s->next(); |
264 | } | 249 | } |
265 | 250 | ||
266 | return &cursor; | 251 | return &cursor; |
267 | } | 252 | } |
268 | 253 | ||
269 | QTextFormatCommand::QTextFormatCommand( QTextDocument *d, int sid, int sidx, int eid, int eidx, | 254 | QTextFormatCommand::QTextFormatCommand( QTextDocument *d, int sid, int sidx, int eid, int eidx, |
270 | const QMemArray<QTextStringChar> &old, QTextFormat *f, int fl ) | 255 | const QMemArray<QTextStringChar> &old, QTextFormat *f, int fl ) |
271 | : QTextCommand( d ), startId( sid ), startIndex( sidx ), endId( eid ), endIndex( eidx ), format( f ), oldFormats( old ), flags( fl ) | 256 | : QTextCommand( d ), startId( sid ), startIndex( sidx ), endId( eid ), endIndex( eidx ), format( f ), oldFormats( old ), flags( fl ) |
272 | { | 257 | { |
273 | format = d->formatCollection()->format( f ); | 258 | format = d->formatCollection()->format( f ); |
274 | for ( int j = 0; j < (int)oldFormats.size(); ++j ) { | 259 | for ( int j = 0; j < (int)oldFormats.size(); ++j ) { |
275 | if ( oldFormats[ j ].format() ) | 260 | if ( oldFormats[ j ].format() ) |
276 | oldFormats[ j ].format()->addRef(); | 261 | oldFormats[ j ].format()->addRef(); |
277 | } | 262 | } |
278 | } | 263 | } |
279 | 264 | ||
280 | QTextFormatCommand::~QTextFormatCommand() | 265 | QTextFormatCommand::~QTextFormatCommand() |
281 | { | 266 | { |
282 | format->removeRef(); | 267 | format->removeRef(); |
283 | for ( int j = 0; j < (int)oldFormats.size(); ++j ) { | 268 | for ( int j = 0; j < (int)oldFormats.size(); ++j ) { |
284 | if ( oldFormats[ j ].format() ) | 269 | if ( oldFormats[ j ].format() ) |
285 | oldFormats[ j ].format()->removeRef(); | 270 | oldFormats[ j ].format()->removeRef(); |
286 | } | 271 | } |
287 | } | 272 | } |
288 | 273 | ||
289 | QTextCursor *QTextFormatCommand::execute( QTextCursor *c ) | 274 | QTextCursor *QTextFormatCommand::execute( QTextCursor *c ) |
290 | { | 275 | { |
291 | QTextParagraph *sp = doc->paragAt( startId ); | 276 | QTextParagraph *sp = doc->paragAt( startId ); |
292 | QTextParagraph *ep = doc->paragAt( endId ); | 277 | QTextParagraph *ep = doc->paragAt( endId ); |
293 | if ( !sp || !ep ) | 278 | if ( !sp || !ep ) |
294 | return c; | 279 | return c; |
295 | 280 | ||
296 | QTextCursor start( doc ); | 281 | QTextCursor start( doc ); |
297 | start.setParagraph( sp ); | 282 | start.setParagraph( sp ); |
298 | start.setIndex( startIndex ); | 283 | start.setIndex( startIndex ); |
299 | QTextCursor end( doc ); | 284 | QTextCursor end( doc ); |
300 | end.setParagraph( ep ); | 285 | end.setParagraph( ep ); |
301 | end.setIndex( endIndex ); | 286 | end.setIndex( endIndex ); |
302 | 287 | ||
303 | doc->setSelectionStart( QTextDocument::Temp, start ); | 288 | doc->setSelectionStart( QTextDocument::Temp, start ); |
304 | doc->setSelectionEnd( QTextDocument::Temp, end ); | 289 | doc->setSelectionEnd( QTextDocument::Temp, end ); |
305 | doc->setFormat( QTextDocument::Temp, format, flags ); | 290 | doc->setFormat( QTextDocument::Temp, format, flags ); |
306 | doc->removeSelection( QTextDocument::Temp ); | 291 | doc->removeSelection( QTextDocument::Temp ); |
307 | if ( endIndex == ep->length() ) | 292 | if ( endIndex == ep->length() ) |
308 | end.gotoLeft(); | 293 | end.gotoLeft(); |
309 | *c = end; | 294 | *c = end; |
310 | return c; | 295 | return c; |
311 | } | 296 | } |
312 | 297 | ||
313 | QTextCursor *QTextFormatCommand::unexecute( QTextCursor *c ) | 298 | QTextCursor *QTextFormatCommand::unexecute( QTextCursor *c ) |
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,298 +1,296 @@ | |||
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 | ||
47 | using namespace Qt3; | 45 | using namespace Qt3; |
48 | 46 | ||
49 | namespace Qt3 { | 47 | namespace Qt3 { |
50 | 48 | ||
51 | class QStyleSheetItemData | 49 | class QStyleSheetItemData |
52 | { | 50 | { |
53 | public: | 51 | public: |
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 | */ |
151 | QStyleSheetItem::QStyleSheetItem( QStyleSheet* parent, const QString& name ) | 149 | QStyleSheetItem::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 | */ |
165 | QStyleSheetItem::QStyleSheetItem( const QStyleSheetItem & other ) | 163 | QStyleSheetItem::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 | ||
171 | 169 | ||
172 | /*! | 170 | /*! |
173 | Destroys the style. Note that QStyleSheetItem objects become | 171 | Destroys the style. Note that QStyleSheetItem objects become |
174 | owned by QStyleSheet when they are created. | 172 | owned by QStyleSheet when they are created. |
175 | */ | 173 | */ |
176 | QStyleSheetItem::~QStyleSheetItem() | 174 | QStyleSheetItem::~QStyleSheetItem() |
177 | { | 175 | { |
178 | delete d; | 176 | delete d; |
179 | } | 177 | } |
180 | 178 | ||
181 | 179 | ||
182 | 180 | ||
183 | /*! | 181 | /*! |
184 | Returns the style sheet this item is in. | 182 | Returns the style sheet this item is in. |
185 | */ | 183 | */ |
186 | QStyleSheet* QStyleSheetItem::styleSheet() | 184 | QStyleSheet* QStyleSheetItem::styleSheet() |
187 | { | 185 | { |
188 | return d->sheet; | 186 | return d->sheet; |
189 | } | 187 | } |
190 | 188 | ||
191 | /*! | 189 | /*! |
192 | \overload | 190 | \overload |
193 | 191 | ||
194 | Returns the style sheet this item is in. | 192 | Returns the style sheet this item is in. |
195 | */ | 193 | */ |
196 | const QStyleSheet* QStyleSheetItem::styleSheet() const | 194 | const QStyleSheet* QStyleSheetItem::styleSheet() const |
197 | { | 195 | { |
198 | return d->sheet; | 196 | return d->sheet; |
199 | } | 197 | } |
200 | 198 | ||
201 | /*! | 199 | /*! |
202 | \internal | 200 | \internal |
203 | Internal initialization | 201 | Internal initialization |
204 | */ | 202 | */ |
205 | void QStyleSheetItem::init() | 203 | void QStyleSheetItem::init() |
206 | { | 204 | { |
207 | d->disp = DisplayInline; | 205 | d->disp = DisplayInline; |
208 | 206 | ||
209 | d->fontitalic = Undefined; | 207 | d->fontitalic = Undefined; |
210 | d->fontunderline = Undefined; | 208 | d->fontunderline = Undefined; |
211 | d->fontstrikeout = Undefined; | 209 | d->fontstrikeout = Undefined; |
212 | d->fontweight = Undefined; | 210 | d->fontweight = Undefined; |
213 | d->fontsize = Undefined; | 211 | d->fontsize = Undefined; |
214 | d->fontsizelog = Undefined; | 212 | d->fontsizelog = Undefined; |
215 | d->fontsizestep = 0; | 213 | d->fontsizestep = 0; |
216 | d->ncolumns = Undefined; | 214 | d->ncolumns = Undefined; |
217 | d->col = QColor(); // !isValid() | 215 | d->col = QColor(); // !isValid() |
218 | d->anchor = FALSE; | 216 | d->anchor = FALSE; |
219 | d->align = Undefined; | 217 | d->align = Undefined; |
220 | d->valign = VAlignBaseline; | 218 | d->valign = VAlignBaseline; |
221 | d->margin[0] = Undefined; | 219 | d->margin[0] = Undefined; |
222 | d->margin[1] = Undefined; | 220 | d->margin[1] = Undefined; |
223 | d->margin[2] = Undefined; | 221 | d->margin[2] = Undefined; |
224 | d->margin[3] = Undefined; | 222 | d->margin[3] = Undefined; |
225 | d->margin[4] = Undefined; | 223 | d->margin[4] = Undefined; |
226 | d->list = (ListStyle) Undefined; | 224 | d->list = (ListStyle) Undefined; |
227 | d->whitespacemode = (WhiteSpaceMode) Undefined; | 225 | d->whitespacemode = (WhiteSpaceMode) Undefined; |
228 | d->selfnest = TRUE; | 226 | d->selfnest = TRUE; |
229 | d->lineSpacing = Undefined; | 227 | d->lineSpacing = Undefined; |
230 | } | 228 | } |
231 | 229 | ||
232 | /*! | 230 | /*! |
233 | Returns the name of the style item. | 231 | Returns the name of the style item. |
234 | */ | 232 | */ |
235 | QString QStyleSheetItem::name() const | 233 | QString QStyleSheetItem::name() const |
236 | { | 234 | { |
237 | return d->stylename; | 235 | return d->stylename; |
238 | } | 236 | } |
239 | 237 | ||
240 | /*! | 238 | /*! |
241 | Returns the \link QStyleSheetItem::DisplayMode display | 239 | Returns the \link QStyleSheetItem::DisplayMode display |
242 | mode\endlink of the style. | 240 | mode\endlink of the style. |
243 | 241 | ||
244 | \sa setDisplayMode() | 242 | \sa setDisplayMode() |
245 | */ | 243 | */ |
246 | QStyleSheetItem::DisplayMode QStyleSheetItem::displayMode() const | 244 | QStyleSheetItem::DisplayMode QStyleSheetItem::displayMode() const |
247 | { | 245 | { |
248 | return d->disp; | 246 | return d->disp; |
249 | } | 247 | } |
250 | 248 | ||
251 | /*! | 249 | /*! |
252 | \enum QStyleSheetItem::DisplayMode | 250 | \enum QStyleSheetItem::DisplayMode |
253 | 251 | ||
254 | This enum type defines the way adjacent elements are displayed. | 252 | This enum type defines the way adjacent elements are displayed. |
255 | 253 | ||
256 | \value DisplayBlock elements are displayed as a rectangular block | 254 | \value DisplayBlock elements are displayed as a rectangular block |
257 | (e.g. \c{<p>...</p>}). | 255 | (e.g. \c{<p>...</p>}). |
258 | 256 | ||
259 | \value DisplayInline elements are displayed in a horizontally | 257 | \value DisplayInline elements are displayed in a horizontally |
260 | flowing sequence (e.g. \c{<em>...</em>}). | 258 | flowing sequence (e.g. \c{<em>...</em>}). |
261 | 259 | ||
262 | \value DisplayListItem elements are displayed in a vertical | 260 | \value DisplayListItem elements are displayed in a vertical |
263 | sequence (e.g. \c{<li>...</li>}). | 261 | sequence (e.g. \c{<li>...</li>}). |
264 | 262 | ||
265 | \value DisplayNone elements are not displayed at all. | 263 | \value DisplayNone elements are not displayed at all. |
266 | */ | 264 | */ |
267 | 265 | ||
268 | /*! | 266 | /*! |
269 | Sets the display mode of the style to \a m. | 267 | Sets the display mode of the style to \a m. |
270 | 268 | ||
271 | \sa displayMode() | 269 | \sa displayMode() |
272 | */ | 270 | */ |
273 | void QStyleSheetItem::setDisplayMode(DisplayMode m) | 271 | void QStyleSheetItem::setDisplayMode(DisplayMode m) |
274 | { | 272 | { |
275 | d->disp=m; | 273 | d->disp=m; |
276 | } | 274 | } |
277 | 275 | ||
278 | 276 | ||
279 | /*! | 277 | /*! |
280 | Returns the alignment of this style. Possible values are \c | 278 | Returns the alignment of this style. Possible values are \c |
281 | AlignAuto, \c AlignLeft, \c AlignRight, \c AlignCenter or \c | 279 | AlignAuto, \c AlignLeft, \c AlignRight, \c AlignCenter or \c |
282 | AlignJustify. | 280 | AlignJustify. |
283 | 281 | ||
284 | \sa setAlignment(), Qt::AlignmentFlags | 282 | \sa setAlignment(), Qt::AlignmentFlags |
285 | */ | 283 | */ |
286 | int QStyleSheetItem::alignment() const | 284 | int QStyleSheetItem::alignment() const |
287 | { | 285 | { |
288 | return d->align; | 286 | return d->align; |
289 | } | 287 | } |
290 | 288 | ||
291 | /*! | 289 | /*! |
292 | Sets the alignment to \a f. This only makes sense for styles with | 290 | Sets the alignment to \a f. This only makes sense for styles with |
293 | a \link QStyleSheetItem::DisplayMode display mode\endlink of | 291 | a \link QStyleSheetItem::DisplayMode display mode\endlink of |
294 | DisplayBlock. Possible values are \c AlignAuto, \c AlignLeft, | 292 | DisplayBlock. Possible values are \c AlignAuto, \c AlignLeft, |
295 | \c AlignRight, \c AlignCenter or \c AlignJustify. | 293 | \c AlignRight, \c AlignCenter or \c AlignJustify. |
296 | 294 | ||
297 | \sa alignment(), displayMode(), Qt::AlignmentFlags | 295 | \sa alignment(), displayMode(), Qt::AlignmentFlags |
298 | */ | 296 | */ |
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,318 +1,298 @@ | |||
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 | ||
67 | using namespace Qt3; | 47 | using namespace Qt3; |
68 | 48 | ||
69 | static bool qt_enable_richtext_copy = FALSE; | 49 | static bool qt_enable_richtext_copy = FALSE; |
70 | 50 | ||
71 | struct QUndoRedoInfoPrivate | 51 | struct QUndoRedoInfoPrivate |
72 | { | 52 | { |
73 | QTextString text; | 53 | QTextString text; |
74 | }; | 54 | }; |
75 | 55 | ||
76 | namespace Qt3 { | 56 | namespace Qt3 { |
77 | 57 | ||
78 | class QTextEditPrivate | 58 | class QTextEditPrivate |
79 | { | 59 | { |
80 | public: | 60 | public: |
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 | ||
96 | static bool block_set_alignment = FALSE; | 76 | static 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 |
191 | rich text, call setTextFormat(Qt::RichText) to ensure that the | 171 | rich text, call setTextFormat(Qt::RichText) to ensure that the |
192 | text is treated as rich text. (Rich text uses HTML tags to set | 172 | text is treated as rich text. (Rich text uses HTML tags to set |
193 | text formatting attributes. See QStyleSheet for information on the | 173 | text formatting attributes. See QStyleSheet for information on the |
194 | HTML tags that are supported.). If you don't call setTextFormat() | 174 | HTML tags that are supported.). If you don't call setTextFormat() |
195 | explicitly the text edit will guess from the text itself whether | 175 | explicitly the text edit will guess from the text itself whether |
196 | it is rich text or plain text. This means that if the text looks | 176 | it is rich text or plain text. This means that if the text looks |
197 | like HTML or XML it will probably be interpreted as rich text, so | 177 | like HTML or XML it will probably be interpreted as rich text, so |
198 | you should call setTextFormat(Qt::PlainText) to preserve such | 178 | you should call setTextFormat(Qt::PlainText) to preserve such |
199 | text. | 179 | text. |
200 | 180 | ||
201 | Note that we do not intend to add a full-featured web browser | 181 | Note that we do not intend to add a full-featured web browser |
202 | widget to Qt (because that would easily double Qt's size and only | 182 | widget to Qt (because that would easily double Qt's size and only |
203 | a few applications would benefit from it). The rich | 183 | a few applications would benefit from it). The rich |
204 | text support in Qt is designed to provide a fast, portable and | 184 | text support in Qt is designed to provide a fast, portable and |
205 | efficient way to add reasonable online help facilities to | 185 | efficient way to add reasonable online help facilities to |
206 | applications, and to provide a basis for rich text editors. | 186 | applications, and to provide a basis for rich text editors. |
207 | \section1 Using QTextEdit as a Display Widget | 187 | \section1 Using QTextEdit as a Display Widget |
208 | 188 | ||
209 | QTextEdit can display a large HTML subset, including tables and | 189 | QTextEdit can display a large HTML subset, including tables and |
210 | images. | 190 | images. |
211 | 191 | ||
212 | The text is set or replaced using setText() which deletes any | 192 | The text is set or replaced using setText() which deletes any |
213 | existing text and replaces it with the text passed in the | 193 | existing text and replaces it with the text passed in the |
214 | setText() call. If you call setText() with legacy HTML (with | 194 | setText() call. If you call setText() with legacy HTML (with |
215 | setTextFormat(RichText) in force), and then call text(), the text | 195 | setTextFormat(RichText) in force), and then call text(), the text |
216 | that is returned may have different markup, but will render the | 196 | that is returned may have different markup, but will render the |
217 | same. Text can be inserted with insert(), paste(), pasteSubType() | 197 | same. Text can be inserted with insert(), paste(), pasteSubType() |
218 | and append(). Text that is appended does not go into the undo | 198 | and append(). Text that is appended does not go into the undo |
219 | history; this makes append() faster and consumes less memory. Text | 199 | history; this makes append() faster and consumes less memory. Text |
220 | can also be cut(). The entire text is deleted with clear() and the | 200 | can also be cut(). The entire text is deleted with clear() and the |
221 | selected text is deleted with removeSelectedText(). Selected | 201 | selected text is deleted with removeSelectedText(). Selected |
222 | (marked) text can also be deleted with del() (which will delete | 202 | (marked) text can also be deleted with del() (which will delete |
223 | the character to the right of the cursor if no text is selected). | 203 | the character to the right of the cursor if no text is selected). |
224 | 204 | ||
225 | Loading and saving text is achieved using setText() and text(), | 205 | Loading and saving text is achieved using setText() and text(), |
226 | for example: | 206 | for example: |
227 | \code | 207 | \code |
228 | QFile file( fileName ); // Read the text from a file | 208 | QFile file( fileName ); // Read the text from a file |
229 | if ( file.open( IO_ReadOnly ) ) { | 209 | if ( file.open( IO_ReadOnly ) ) { |
230 | QTextStream ts( &file ); | 210 | QTextStream ts( &file ); |
231 | textEdit->setText( ts.read() ); | 211 | textEdit->setText( ts.read() ); |
232 | } | 212 | } |
233 | \endcode | 213 | \endcode |
234 | \code | 214 | \code |
235 | QFile file( fileName ); // Write the text to a file | 215 | QFile file( fileName ); // Write the text to a file |
236 | if ( file.open( IO_WriteOnly ) ) { | 216 | if ( file.open( IO_WriteOnly ) ) { |
237 | QTextStream ts( &file ); | 217 | QTextStream ts( &file ); |
238 | ts << textEdit->text(); | 218 | ts << textEdit->text(); |
239 | textEdit->setModified( FALSE ); | 219 | textEdit->setModified( FALSE ); |
240 | } | 220 | } |
241 | \endcode | 221 | \endcode |
242 | 222 | ||
243 | By default the text edit wraps words at whitespace to fit within | 223 | By default the text edit wraps words at whitespace to fit within |
244 | the text edit widget. The setWordWrap() function is used to | 224 | the text edit widget. The setWordWrap() function is used to |
245 | specify the kind of word wrap you want, or \c NoWrap if you don't | 225 | specify the kind of word wrap you want, or \c NoWrap if you don't |
246 | want any wrapping. Call setWordWrap() to set a fixed pixel width | 226 | want any wrapping. Call setWordWrap() to set a fixed pixel width |
247 | \c FixedPixelWidth, or character column (e.g. 80 column) \c | 227 | \c FixedPixelWidth, or character column (e.g. 80 column) \c |
248 | FixedColumnWidth with the pixels or columns specified with | 228 | FixedColumnWidth with the pixels or columns specified with |
249 | setWrapColumnOrWidth(). If you use word wrap to the widget's width | 229 | setWrapColumnOrWidth(). If you use word wrap to the widget's width |
250 | \c WidgetWidth, you can specify whether to break on whitespace or | 230 | \c WidgetWidth, you can specify whether to break on whitespace or |
251 | anywhere with setWrapPolicy(). | 231 | anywhere with setWrapPolicy(). |
252 | 232 | ||
253 | The background color is set differently than other widgets, using | 233 | The background color is set differently than other widgets, using |
254 | setPaper(). You specify a brush style which could be a plain color | 234 | setPaper(). You specify a brush style which could be a plain color |
255 | or a complex pixmap. | 235 | or a complex pixmap. |
256 | 236 | ||
257 | Hypertext links are automatically underlined; this can be changed | 237 | Hypertext links are automatically underlined; this can be changed |
258 | with setLinkUnderline(). The tab stop width is set with | 238 | with setLinkUnderline(). The tab stop width is set with |
259 | setTabStopWidth(). | 239 | setTabStopWidth(). |
260 | 240 | ||
261 | The zoomIn() and zoomOut() functions can be used to resize the | 241 | The zoomIn() and zoomOut() functions can be used to resize the |
262 | text by increasing (decreasing for zoomOut()) the point size used. | 242 | text by increasing (decreasing for zoomOut()) the point size used. |
263 | Images are not affected by the zoom functions. | 243 | Images are not affected by the zoom functions. |
264 | 244 | ||
265 | The lines() function returns the number of lines in the text and | 245 | The lines() function returns the number of lines in the text and |
266 | paragraphs() returns the number of paragraphs. The number of lines | 246 | paragraphs() returns the number of paragraphs. The number of lines |
267 | within a particular paragraph is returned by linesOfParagraph(). | 247 | within a particular paragraph is returned by linesOfParagraph(). |
268 | The length of the entire text in characters is returned by | 248 | The length of the entire text in characters is returned by |
269 | length(). | 249 | length(). |
270 | 250 | ||
271 | You can scroll to an anchor in the text, e.g. \c{<a | 251 | You can scroll to an anchor in the text, e.g. \c{<a |
272 | name="anchor">} with scrollToAnchor(). The find() function can be | 252 | name="anchor">} with scrollToAnchor(). The find() function can be |
273 | used to find and select a given string within the text. | 253 | used to find and select a given string within the text. |
274 | 254 | ||
275 | A read-only QTextEdit provides the same functionality as the | 255 | A read-only QTextEdit provides the same functionality as the |
276 | (obsolete) QTextView. (QTextView is still supplied for | 256 | (obsolete) QTextView. (QTextView is still supplied for |
277 | compatibility with old code.) | 257 | compatibility with old code.) |
278 | 258 | ||
279 | \section2 Read-only key bindings | 259 | \section2 Read-only key bindings |
280 | 260 | ||
281 | When QTextEdit is used read-only the key-bindings are limited to | 261 | When QTextEdit is used read-only the key-bindings are limited to |
282 | navigation, and text may only be selected with the mouse: | 262 | navigation, and text may only be selected with the mouse: |
283 | \table | 263 | \table |
284 | \header \i Keypresses \i Action | 264 | \header \i Keypresses \i Action |
285 | \row \i \e{UpArrow} \i Move one line up | 265 | \row \i \e{UpArrow} \i Move one line up |
286 | \row \i \e{DownArrow} \i Move one line down | 266 | \row \i \e{DownArrow} \i Move one line down |
287 | \row \i \e{LeftArrow} \i Move one character left | 267 | \row \i \e{LeftArrow} \i Move one character left |
288 | \row \i \e{RightArrow} \i Move one character right | 268 | \row \i \e{RightArrow} \i Move one character right |
289 | \row \i \e{PageUp} \i Move one (viewport) page up | 269 | \row \i \e{PageUp} \i Move one (viewport) page up |
290 | \row \i \e{PageDown} \i Move one (viewport) page down | 270 | \row \i \e{PageDown} \i Move one (viewport) page down |
291 | \row \i \e{Home} \i Move to the beginning of the text | 271 | \row \i \e{Home} \i Move to the beginning of the text |
292 | \row \i \e{End} \i Move to the end of the text | 272 | \row \i \e{End} \i Move to the end of the text |
293 | \row \i \e{Shift+Wheel} \i Scroll the page horizontally (the Wheel is the mouse wheel) | 273 | \row \i \e{Shift+Wheel} \i Scroll the page horizontally (the Wheel is the mouse wheel) |
294 | \row \i \e{Ctrl+Wheel} \i Zoom the text | 274 | \row \i \e{Ctrl+Wheel} \i Zoom the text |
295 | \endtable | 275 | \endtable |
296 | 276 | ||
297 | The text edit may be able to provide some meta-information. For | 277 | The text edit may be able to provide some meta-information. For |
298 | example, the documentTitle() function will return the text from | 278 | example, the documentTitle() function will return the text from |
299 | within HTML \c{<title>} tags. | 279 | within HTML \c{<title>} tags. |
300 | 280 | ||
301 | The text displayed in a text edit has a \e context. The context is | 281 | The text displayed in a text edit has a \e context. The context is |
302 | a path which the text edit's QMimeSourceFactory uses to resolve | 282 | a path which the text edit's QMimeSourceFactory uses to resolve |
303 | the locations of files and images. It is passed to the | 283 | the locations of files and images. It is passed to the |
304 | mimeSourceFactory() when quering data. (See QTextEdit() and | 284 | mimeSourceFactory() when quering data. (See QTextEdit() and |
305 | \l{context()}.) | 285 | \l{context()}.) |
306 | 286 | ||
307 | \section1 Using QTextEdit as an Editor | 287 | \section1 Using QTextEdit as an Editor |
308 | 288 | ||
309 | All the information about using QTextEdit as a display widget also | 289 | All the information about using QTextEdit as a display widget also |
310 | applies here. | 290 | applies here. |
311 | 291 | ||
312 | The current format's attributes are set with setItalic(), | 292 | The current format's attributes are set with setItalic(), |
313 | setBold(), setUnderline(), setFamily() (font family), | 293 | setBold(), setUnderline(), setFamily() (font family), |
314 | setPointSize(), setColor() and setCurrentFont(). The current | 294 | setPointSize(), setColor() and setCurrentFont(). The current |
315 | paragraph's alignment is set with setAlignment(). | 295 | paragraph's alignment is set with setAlignment(). |
316 | 296 | ||
317 | Use setSelection() to select text. The setSelectionAttributes() | 297 | Use setSelection() to select text. The setSelectionAttributes() |
318 | function is used to indicate how selected text should be | 298 | function is used to indicate how selected text should be |
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 | ||
25 | calcDlgUI::calcDlgUI() : CalcDlg() | 24 | calcDlgUI::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 | ||
33 | void calcDlgUI::calc() | 32 | void 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 | * */ |
57 | void calcDlgUI::clear() | 56 | void 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 | ||
30 | OxydataWidget::OxydataWidget(QWidget *parent, const char *name, const QStringList &list ) : QWidget( parent,name ), names( list ) | 27 | OxydataWidget::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 | ||
54 | void OxydataWidget::setElement( int el ) | 51 | void 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 | ||
77 | void OxydataWidget::setTable() const | 74 | void 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 | ||
90 | void OxydataWidget::setLayout() | 87 | void 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 | ||
100 | OxydataTable::OxydataTable(int numRows, int numCols, QWidget *parent, | 97 | OxydataTable::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 | ||
120 | void OxydataTable::paintCell( QPainter *p, int row, int col, const QRect &cr, bool selected) | 117 | void 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 | ||
140 | OxydataQTI::OxydataQTI(QTable * table, EditType et, const QString & text ) | 137 | OxydataQTI::OxydataQTI(QTable * table, EditType et, const QString & text ) |
141 | : QTableItem ( table, et, text ) | 138 | : QTableItem ( table, et, text ) |
142 | { | 139 | { |
143 | } | 140 | } |
144 | 141 | ||
145 | int OxydataQTI::alignment() const | 142 | int 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 | ||
29 | dataWidgetUI::dataWidgetUI(const QStringList &list) : QWidget() | 24 | dataWidgetUI::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,199 +1,196 @@ | |||
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 | */ |
24 | KMolCalc::KMolCalc() { | 21 | KMolCalc::KMolCalc() { |
25 | elements = new ElementList; | 22 | elements = new ElementList; |
26 | elstable = NULL; | 23 | elstable = NULL; |
27 | readElstable(); | 24 | readElstable(); |
28 | } | 25 | } |
29 | 26 | ||
30 | KMolCalc::~KMolCalc() { | 27 | KMolCalc::~KMolCalc() { |
31 | delete elements; | 28 | delete elements; |
32 | } | 29 | } |
33 | 30 | ||
34 | void KMolCalc::readElstable() { | 31 | void 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 | */ |
52 | QString KMolCalc::readFormula(const QString& s) { | 49 | QString 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. |
60 | QString KMolCalc::readGroup(const QString& s, ElementList* els) { | 57 | QString 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 | */ |
136 | double KMolCalc::getWeight() { | 133 | double 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 | */ |
145 | QString KMolCalc::getEA() { | 142 | QString KMolCalc::getEA() { |
146 | if (weight == -1) weight = elements->getWeight(elstable); | 143 | if (weight == -1) weight = elements->getWeight(elstable); |
147 | if (weight == -1) return QString("ERROR: Couldn't get Mw..."); // ERROR | 144 | if (weight == -1) return QString("ERROR: Couldn't get Mw..."); // ERROR |
148 | return elements->getEA(elstable, weight); | 145 | return elements->getEA(elstable, weight); |
149 | } | 146 | } |
150 | 147 | ||
151 | /** | 148 | /** |
152 | * Return the empirical formula of the current compound as a QString. | 149 | * Return the empirical formula of the current compound as a QString. |
153 | */ | 150 | */ |
154 | QString KMolCalc::getEmpFormula() { | 151 | QString KMolCalc::getEmpFormula() { |
155 | return elements->getEmpFormula(); | 152 | return elements->getEmpFormula(); |
156 | } | 153 | } |
157 | 154 | ||
158 | // Read the element definition file. | 155 | // Read the element definition file. |
159 | void KMolCalc::readMwfile(QFile& f) { | 156 | void KMolCalc::readMwfile(QFile& f) { |
160 | if (! f.open(IO_ReadOnly)) return; //ERROR | 157 | if (! f.open(IO_ReadOnly)) return; //ERROR |
161 | QTextStream fs (&f); | 158 | QTextStream fs (&f); |
162 | QString line; | 159 | QString line; |
163 | while (! fs.eof()) { | 160 | while (! fs.eof()) { |
164 | line = fs.readLine(); | 161 | line = fs.readLine(); |
165 | SubUnit* s = SubUnit::makeSubUnit(line); | 162 | SubUnit* s = SubUnit::makeSubUnit(line); |
166 | elstable->replace(s->getName(), s); | 163 | elstable->replace(s->getName(), s); |
167 | } | 164 | } |
168 | f.close(); | 165 | f.close(); |
169 | } | 166 | } |
170 | 167 | ||
171 | /** | 168 | /** |
172 | * Remove a group or element definition from ELSTABLE. | 169 | * Remove a group or element definition from ELSTABLE. |
173 | */ | 170 | */ |
174 | void KMolCalc::undefineGroup (const QString& name) { | 171 | void KMolCalc::undefineGroup (const QString& name) { |
175 | elstable->remove (name); | 172 | elstable->remove (name); |
176 | } | 173 | } |
177 | 174 | ||
178 | /** | 175 | /** |
179 | * Add a new element name - atomic weight record to the ELSTABLE hashtable. Assumes | 176 | * Add a new element name - atomic weight record to the ELSTABLE hashtable. Assumes |
180 | * NAME has valid syntax. | 177 | * NAME has valid syntax. |
181 | 178 | ||
182 | */ | 179 | */ |
183 | void KMolCalc::defineElement (const QString& name, double weight) { | 180 | void KMolCalc::defineElement (const QString& name, double weight) { |
184 | Element* el = new Element(name, weight); | 181 | Element* el = new Element(name, weight); |
185 | elstable->replace(name, el); | 182 | elstable->replace(name, el); |
186 | } | 183 | } |
187 | 184 | ||
188 | /** | 185 | /** |
189 | * Add a new group definition to the ELSTABLE. Returns 0 if OK, -1 if parsing FORMULA | 186 | * Add a new group definition to the ELSTABLE. Returns 0 if OK, -1 if parsing FORMULA |
190 | * fails. Assumes the syntax of grpname is correct. | 187 | * fails. Assumes the syntax of grpname is correct. |
191 | */ | 188 | */ |
192 | QString KMolCalc::defineGroup (const QString& grpname, const QString& formula) { | 189 | QString KMolCalc::defineGroup (const QString& grpname, const QString& formula) { |
193 | ElementList* els = new ElementList(grpname); | 190 | ElementList* els = new ElementList(grpname); |
194 | QString error = readGroup(formula, els); | 191 | QString error = readGroup(formula, els); |
195 | if (error != "OK") return error; | 192 | if (error != "OK") return error; |
196 | if (els->contains(grpname)) return QString("Can't define a group recursively!\n"); | 193 | if (els->contains(grpname)) return QString("Can't define a group recursively!\n"); |
197 | elstable->replace(grpname, els); | 194 | elstable->replace(grpname, els); |
198 | return QString("OK"); | 195 | return QString("OK"); |
199 | } | 196 | } |
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 | ||
22 | OxyFrame::OxyFrame(QWidget *parent, const char *name, QString symbol ) | 20 | OxyFrame::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 | ||
39 | void OxyFrame::mousePressEvent ( QMouseEvent* /*e*/ ){ | 37 | void 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,157 +1,155 @@ | |||
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 | ||
28 | Oxygen::Oxygen( QWidget *parent, const char *name, WFlags f) : QMainWindow( parent, name, f ) | 26 | Oxygen::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 | ||
44 | void Oxygen::loadNames() | 42 | void 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") ); |
151 | names.append( tr("Dubnium") ); | 149 | names.append( tr("Dubnium") ); |
152 | names.append( tr("Seaborgium") ); | 150 | names.append( tr("Seaborgium") ); |
153 | names.append( tr("Bohrium") ); | 151 | names.append( tr("Bohrium") ); |
154 | names.append( tr("Hassium") ); | 152 | names.append( tr("Hassium") ); |
155 | names.append( tr("Meitnerium") ); | 153 | names.append( tr("Meitnerium") ); |
156 | } | 154 | } |
157 | 155 | ||
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,198 +1,196 @@ | |||
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 | ||
27 | PSEWidget::PSEWidget(const QStringList &list) : QWidget() | 25 | PSEWidget::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 | ||
61 | QColor PSEWidget::PSEColor( QString block ) const | 59 | QColor 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 | ||
71 | void PSEWidget::inverseColor( QString number) | 69 | void 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 | ||
90 | void PSEWidget::slotShowElement(QString number) | 88 | void PSEWidget::slotShowElement(QString number) |
91 | { | 89 | { |
92 | oxyDW->setElement( number.toInt() ); | 90 | oxyDW->setElement( number.toInt() ); |
93 | }; | 91 | }; |
94 | 92 | ||
95 | void PSEWidget::position(int n, int& h, int& v) | 93 | void 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 | ||
153 | //Potassium --> Uuo without La and Ac | 151 | //Potassium --> Uuo without La and Ac |
154 | if ((n >= 19 && n <= 57) || (n >= 72 && n <= 89) || n >= 104) | 152 | if ((n >= 19 && n <= 57) || (n >= 72 && n <= 89) || n >= 104) |
155 | for (int i = 1; i <= 18; i++) | 153 | for (int i = 1; i <= 18; i++) |
156 | { | 154 | { |
157 | int f = n; | 155 | int f = n; |
158 | if (n > 18) | 156 | if (n > 18) |
159 | f = n-18; | 157 | f = n-18; |
160 | if (n > 36) | 158 | if (n > 36) |
161 | f = n-36; | 159 | f = n-36; |
162 | if (n > 54) | 160 | if (n > 54) |
163 | f = n-54; | 161 | f = n-54; |
164 | if (n > 71) | 162 | if (n > 71) |
165 | f = n-68; | 163 | f = n-68; |
166 | if (n > 86) | 164 | if (n > 86) |
167 | f = n-86; | 165 | f = n-86; |
168 | if (n > 103) | 166 | if (n > 103) |
169 | f = n-100; | 167 | f = n-100; |
170 | 168 | ||
171 | h=((f*40)-40); | 169 | h=((f*40)-40); |
172 | 170 | ||
173 | v = 120; | 171 | v = 120; |
174 | if (n >= 37) | 172 | if (n >= 37) |
175 | v=160; | 173 | v=160; |
176 | if (n >= 55) | 174 | if (n >= 55) |
177 | v=200; | 175 | v=200; |
178 | if (n >= 87) | 176 | if (n >= 87) |
179 | v=240; | 177 | v=240; |
180 | } | 178 | } |
181 | 179 | ||
182 | 180 | ||
183 | //Lanthanum --> Lutetium and Actinum --> Lawrencium | 181 | //Lanthanum --> Lutetium and Actinum --> Lawrencium |
184 | if ((n >= 58 && n <= 71) || (n >= 90 && n <= 103)) | 182 | if ((n >= 58 && n <= 71) || (n >= 90 && n <= 103)) |
185 | for (int i = 1; i <= 14; i++) | 183 | for (int i = 1; i <= 14; i++) |
186 | { | 184 | { |
187 | int f = n; | 185 | int f = n; |
188 | if (n > 57) | 186 | if (n > 57) |
189 | f = n-55; | 187 | f = n-55; |
190 | if (n > 88) | 188 | if (n > 88) |
191 | f = n-87; | 189 | f = n-87; |
192 | h=(f*40); | 190 | h=(f*40); |
193 | v = 290; | 191 | v = 290; |
194 | if (n >= 90) | 192 | if (n >= 90) |
195 | v=330; | 193 | v=330; |
196 | } | 194 | } |
197 | v += 10; | 195 | v += 10; |
198 | } | 196 | } |
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,259 +1,257 @@ | |||
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 | ||
9 | extern Preferences *preferences; | 7 | extern Preferences *preferences; |
10 | 8 | ||
11 | Account::Account () | 9 | Account::Account () |
12 | { | 10 | { |
13 | adb = sqlite_open ( "qmaccounts.db", 0, NULL ); | 11 | adb = sqlite_open ( "qmaccounts.db", 0, NULL ); |
14 | } | 12 | } |
15 | 13 | ||
16 | Account::~Account () | 14 | Account::~Account () |
17 | { | 15 | { |
18 | sqlite_close ( adb ); | 16 | sqlite_close ( adb ); |
19 | } | 17 | } |
20 | 18 | ||
21 | void Account::addAccount ( QString name, int parentid, float balance, int type, QString description, float creditlimit, | 19 | void 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 | ||
28 | void Account::updateAccount ( QString name, QString description, QString currencycode, int accountid ) | 26 | void 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 | ||
33 | void Account::deleteAccount ( int accountid ) | 31 | void 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 | ||
38 | void Account::setAccountExpanded ( int expanded, int accountid ) | 36 | void 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 | ||
43 | int Account::getAccountExpanded ( int id ) | 41 | int 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 | ||
53 | int Account::getNumberOfAccounts () | 51 | int 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 | ||
60 | int Account::getNumberOfChildAccounts ( int id ) | 58 | int 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 | ||
67 | void Account::updateAccountBalance ( int accountid ) | 65 | void 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 | ||
99 | void Account::changeParentAccountBalance ( int parentid ) | 97 | void 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 | ||
108 | int Account::getParentAccountID ( int id ) | 106 | int 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 | ||
115 | int Account::getParentAccountID ( QString accountname ) | 113 | int 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 | ||
122 | void Account::displayAccounts ( QListView *listview ) | 120 | void 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 |
132 | int counter; | 130 | int counter; |
133 | for ( counter = 0; counter <= columns; counter++ ) | 131 | for ( counter = 0; counter <= columns; counter++ ) |
134 | listview->removeColumn ( 0 ); | 132 | listview->removeColumn ( 0 ); |
135 | 133 | ||
136 | // add columns to the account display | 134 | // add columns to the account display |
137 | listview->addColumn ( "Account", 0 ); | 135 | listview->addColumn ( "Account", 0 ); |
138 | int columntoalign = 1; | 136 | int columntoalign = 1; |
139 | if ( preferences->getPreference ( 4 ) == 1 ) // add the currency column if the user wants it | 137 | if ( preferences->getPreference ( 4 ) == 1 ) // add the currency column if the user wants it |
140 | { | 138 | { |
141 | listview->addColumn ( "C", 0 ); | 139 | listview->addColumn ( "C", 0 ); |
142 | columntoalign = 2; | 140 | columntoalign = 2; |
143 | } | 141 | } |
144 | listview->addColumn ( "Balance", 0 ); | 142 | listview->addColumn ( "Balance", 0 ); |
145 | listview->addColumn ( "", 0 ); | 143 | listview->addColumn ( "", 0 ); |
146 | listview->setColumnAlignment ( columntoalign, Qt::AlignRight ); | 144 | listview->setColumnAlignment ( columntoalign, Qt::AlignRight ); |
147 | counter = 5; | 145 | counter = 5; |
148 | int total = ( rows + 1 ) * columns; | 146 | int total = ( rows + 1 ) * columns; |
149 | while ( counter < total ) | 147 | while ( counter < total ) |
150 | { | 148 | { |
151 | int accountid = atoi ( results [ counter + 3 ] ); | 149 | int accountid = atoi ( results [ counter + 3 ] ); |
152 | if ( atoi ( results [ counter + 1 ] ) == -1 ) | 150 | if ( atoi ( results [ counter + 1 ] ) == -1 ) |
153 | { | 151 | { |
154 | QListViewItem *parent = new QListViewItem ( listview ); | 152 | QListViewItem *parent = new QListViewItem ( listview ); |
155 | parent->setText ( 0, results [ counter ] ); | 153 | parent->setText ( 0, results [ counter ] ); |
156 | if ( currency == 0 ) | 154 | if ( currency == 0 ) |
157 | { | 155 | { |
158 | parent->setText ( 1, results [ counter + 2 ] ); | 156 | parent->setText ( 1, results [ counter + 2 ] ); |
159 | parent->setText ( 2, results [ counter + 3 ] ); | 157 | parent->setText ( 2, results [ counter + 3 ] ); |
160 | } | 158 | } |
161 | else | 159 | else |
162 | { | 160 | { |
163 | if ( getNumberOfChildAccounts ( accountid ) == 0 ) // add the currency flag if this is a parent with no children | 161 | if ( getNumberOfChildAccounts ( accountid ) == 0 ) // add the currency flag if this is a parent with no children |
164 | { | 162 | { |
165 | // create the string we'll use to set the currency pixmap | 163 | // create the string we'll use to set the currency pixmap |
166 | QString filename = "/opt/QtPalmtop/pics/flags/"; | 164 | QString filename = "/opt/QtPalmtop/pics/flags/"; |
167 | QString flag = results [ counter + 4 ]; | 165 | QString flag = results [ counter + 4 ]; |
168 | filename.append ( flag ); | 166 | filename.append ( flag ); |
169 | filename.append ( ".png" ); | 167 | filename.append ( ".png" ); |
170 | parent->setPixmap ( 1, QPixmap ( filename ) ); | 168 | parent->setPixmap ( 1, QPixmap ( filename ) ); |
171 | parent->setText ( 1, flag ); | 169 | parent->setText ( 1, flag ); |
172 | } | 170 | } |
173 | parent->setText ( 2, results [ counter + 2 ] ); | 171 | parent->setText ( 2, results [ counter + 2 ] ); |
174 | parent->setText ( 3, results [ counter + 3 ] ); | 172 | parent->setText ( 3, results [ counter + 3 ] ); |
175 | } | 173 | } |
176 | 174 | ||
177 | if ( getAccountExpanded ( accountid ) == 1 ) | 175 | if ( getAccountExpanded ( accountid ) == 1 ) |
178 | parent->setOpen ( TRUE ); | 176 | parent->setOpen ( TRUE ); |
179 | 177 | ||
180 | //Start display child accounts for this parent | 178 | //Start display child accounts for this parent |
181 | int childcounter = 5; | 179 | int childcounter = 5; |
182 | while ( childcounter < total ) | 180 | while ( childcounter < total ) |
183 | { | 181 | { |
184 | if ( atoi ( results [ childcounter + 1 ] ) == accountid ) | 182 | if ( atoi ( results [ childcounter + 1 ] ) == accountid ) |
185 | { | 183 | { |
186 | if ( currency == 0 ) | 184 | if ( currency == 0 ) |
187 | QListViewItem *child = new QListViewItem ( parent, results [ childcounter ], results [ childcounter + 2 ], results [ childcounter + 3 ] ); | 185 | QListViewItem *child = new QListViewItem ( parent, results [ childcounter ], results [ childcounter + 2 ], results [ childcounter + 3 ] ); |
188 | else | 186 | else |
189 | { | 187 | { |
190 | // create the string we'll use to set the currency pixmap | 188 | // create the string we'll use to set the currency pixmap |
191 | QString filename = "/opt/QtPalmtop/pics/flags/"; | 189 | QString filename = "/opt/QtPalmtop/pics/flags/"; |
192 | QString flag = results [ childcounter + 4 ]; | 190 | QString flag = results [ childcounter + 4 ]; |
193 | filename.append ( flag ); | 191 | filename.append ( flag ); |
194 | filename.append ( ".png" ); | 192 | filename.append ( ".png" ); |
195 | QListViewItem *child = new QListViewItem ( parent, results [ childcounter ], "", results [ childcounter + 2 ], results [ childcounter + 3 ] ); | 193 | QListViewItem *child = new QListViewItem ( parent, results [ childcounter ], "", results [ childcounter + 2 ], results [ childcounter + 3 ] ); |
196 | child->setPixmap ( 1, QPixmap ( filename ) ); | 194 | child->setPixmap ( 1, QPixmap ( filename ) ); |
197 | child->setText ( 1, flag ); | 195 | child->setText ( 1, flag ); |
198 | } | 196 | } |
199 | } | 197 | } |
200 | childcounter = childcounter + 5; | 198 | childcounter = childcounter + 5; |
201 | } | 199 | } |
202 | //End display child accounts | 200 | //End display child accounts |
203 | } | 201 | } |
204 | counter = counter + 5; | 202 | counter = counter + 5; |
205 | } | 203 | } |
206 | 204 | ||
207 | // resize all columns appropriately | 205 | // resize all columns appropriately |
208 | if ( preferences->getPreference ( 4 ) == 0 ) | 206 | if ( preferences->getPreference ( 4 ) == 0 ) |
209 | { | 207 | { |
210 | listview->setColumnWidth ( 0, preferences->getColumnPreference ( 1 ) ); | 208 | listview->setColumnWidth ( 0, preferences->getColumnPreference ( 1 ) ); |
211 | listview->setColumnWidthMode ( 0, QListView::Manual ); | 209 | listview->setColumnWidthMode ( 0, QListView::Manual ); |
212 | listview->setColumnWidth ( 1, preferences->getColumnPreference ( 2 ) ); | 210 | listview->setColumnWidth ( 1, preferences->getColumnPreference ( 2 ) ); |
213 | listview->setColumnWidthMode ( 1, QListView::Manual ); | 211 | listview->setColumnWidthMode ( 1, QListView::Manual ); |
214 | listview->setColumnWidthMode ( 2, QListView::Manual ); | 212 | listview->setColumnWidthMode ( 2, QListView::Manual ); |
215 | } | 213 | } |
216 | else | 214 | else |
217 | { | 215 | { |
218 | listview->setColumnWidth ( 0, preferences->getColumnPreference ( 10 ) ); | 216 | listview->setColumnWidth ( 0, preferences->getColumnPreference ( 10 ) ); |
219 | listview->setColumnWidthMode ( 0, QListView::Manual ); | 217 | listview->setColumnWidthMode ( 0, QListView::Manual ); |
220 | listview->setColumnWidth ( 1, preferences->getColumnPreference ( 11 ) ); | 218 | listview->setColumnWidth ( 1, preferences->getColumnPreference ( 11 ) ); |
221 | listview->setColumnWidthMode ( 1, QListView::Manual ); | 219 | listview->setColumnWidthMode ( 1, QListView::Manual ); |
222 | listview->setColumnWidth ( 2, preferences->getColumnPreference ( 12 ) ); | 220 | listview->setColumnWidth ( 2, preferences->getColumnPreference ( 12 ) ); |
223 | listview->setColumnWidthMode ( 2, QListView::Manual ); | 221 | listview->setColumnWidthMode ( 2, QListView::Manual ); |
224 | listview->setColumnWidthMode ( 3, QListView::Manual ); | 222 | listview->setColumnWidthMode ( 3, QListView::Manual ); |
225 | } | 223 | } |
226 | 224 | ||
227 | // Now reset the column sorting to user preference | 225 | // Now reset the column sorting to user preference |
228 | int column = 0; | 226 | int column = 0; |
229 | int direction = 0; | 227 | int direction = 0; |
230 | preferences->getSortingPreference ( 1, &column, &direction ); | 228 | preferences->getSortingPreference ( 1, &column, &direction ); |
231 | listview->setSorting ( column, direction ); | 229 | listview->setSorting ( column, direction ); |
232 | } | 230 | } |
233 | 231 | ||
234 | int Account::displayParentAccountNames ( QComboBox *combobox, QString indexstring ) | 232 | int Account::displayParentAccountNames ( QComboBox *combobox, QString indexstring ) |
235 | { | 233 | { |
236 | char **results; | 234 | char **results; |
237 | int rows, columns, index; | 235 | int rows, columns, index; |
238 | index = 0; | 236 | index = 0; |
239 | sqlite_get_table ( adb, "select name from accounts2 order by name asc;", &results, &rows, &columns, NULL ); | 237 | sqlite_get_table ( adb, "select name from accounts2 order by name asc;", &results, &rows, &columns, NULL ); |
240 | int counter = 1; | 238 | int counter = 1; |
241 | int indexcounter = 1; | 239 | int indexcounter = 1; |
242 | int total = ( rows + 1 ) * columns; | 240 | int total = ( rows + 1 ) * columns; |
243 | while ( counter < total ) | 241 | while ( counter < total ) |
244 | { | 242 | { |
245 | if ( getParentAccountID ( results [ counter ] ) == -1 ) | 243 | if ( getParentAccountID ( results [ counter ] ) == -1 ) |
246 | { | 244 | { |
247 | combobox->insertItem ( results [ counter ], -1 ); | 245 | combobox->insertItem ( results [ counter ], -1 ); |
248 | if ( strcmp ( results [ counter ], indexstring ) == 0 ) | 246 | if ( strcmp ( results [ counter ], indexstring ) == 0 ) |
249 | index = indexcounter; | 247 | index = indexcounter; |
250 | indexcounter++; | 248 | indexcounter++; |
251 | } | 249 | } |
252 | counter ++; | 250 | counter ++; |
253 | } | 251 | } |
254 | return index; | 252 | return index; |
255 | } | 253 | } |
256 | 254 | ||
257 | int Account::getAccountType ( int accountid ) | 255 | int Account::getAccountType ( int accountid ) |
258 | { | 256 | { |
259 | char **results; | 257 | char **results; |
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,265 +1,263 @@ | |||
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 | ||
12 | extern Account *account; | 10 | extern Account *account; |
13 | extern Transaction *transaction; | 11 | extern Transaction *transaction; |
14 | extern Transfer *transfer; | 12 | extern Transfer *transfer; |
15 | extern Preferences *preferences; | 13 | extern Preferences *preferences; |
16 | 14 | ||
17 | AccountDisplay::AccountDisplay ( QWidget *parent ) : QWidget ( parent ) | 15 | AccountDisplay::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 | ||
58 | void AccountDisplay::setTabs ( QWidget *newtab2, QTabWidget *newtabs ) | 56 | void AccountDisplay::setTabs ( QWidget *newtab2, QTabWidget *newtabs ) |
59 | { | 57 | { |
60 | tab2 = newtab2; | 58 | tab2 = newtab2; |
61 | maintabs = newtabs; | 59 | maintabs = newtabs; |
62 | } | 60 | } |
63 | 61 | ||
64 | void AccountDisplay::addAccount () | 62 | void 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 | } |
138 | 136 | ||
139 | // add the new account | 137 | // add the new account |
140 | if ( newaccount->getDateEdited () == TRUE ) | 138 | if ( newaccount->getDateEdited () == TRUE ) |
141 | account->addAccount ( newaccount->accountname->text(), parentid, newaccount->accountbalance->text().toFloat(), type, | 139 | account->addAccount ( newaccount->accountname->text(), parentid, newaccount->accountbalance->text().toFloat(), type, |
142 | newaccount->getDescription(), newaccount->creditlimit->text().toFloat(), newaccount->getYear(), | 140 | newaccount->getDescription(), newaccount->creditlimit->text().toFloat(), newaccount->getYear(), |
143 | newaccount->getMonth(), newaccount->getDay(), newaccount->accountbalance->text().toFloat(), newaccount->currencybox->currencybox->currentText() ); | 141 | newaccount->getMonth(), newaccount->getDay(), newaccount->accountbalance->text().toFloat(), newaccount->currencybox->currencybox->currentText() ); |
144 | else | 142 | else |
145 | account->addAccount ( newaccount->accountname->text (), parentid, newaccount->accountbalance->text().toFloat(), type, | 143 | account->addAccount ( newaccount->accountname->text (), parentid, newaccount->accountbalance->text().toFloat(), type, |
146 | newaccount->getDescription(), newaccount->creditlimit->text().toFloat(), defaultyear, | 144 | newaccount->getDescription(), newaccount->creditlimit->text().toFloat(), defaultyear, |
147 | defaultmonth, defaultday, newaccount->accountbalance->text().toFloat(), newaccount->currencybox->currencybox->currentText() ); | 145 | defaultmonth, defaultday, newaccount->accountbalance->text().toFloat(), newaccount->currencybox->currencybox->currentText() ); |
148 | 146 | ||
149 | if ( parentid != -1 ) | 147 | if ( parentid != -1 ) |
150 | account->changeParentAccountBalance ( parentid ); | 148 | account->changeParentAccountBalance ( parentid ); |
151 | 149 | ||
152 | // redisplay accounts | 150 | // redisplay accounts |
153 | // this function clears the account display first | 151 | // this function clears the account display first |
154 | account->displayAccounts ( listview ); | 152 | account->displayAccounts ( listview ); |
155 | setToggleButton(); | 153 | setToggleButton(); |
156 | } | 154 | } |
157 | maintabs->setTabEnabled ( tab2, FALSE ); | 155 | maintabs->setTabEnabled ( tab2, FALSE ); |
158 | } | 156 | } |
159 | 157 | ||
160 | void AccountDisplay::deleteAccount () | 158 | void AccountDisplay::deleteAccount () |
161 | { | 159 | { |
162 | if ( listview->selectedItem() == 0 ) | 160 | if ( listview->selectedItem() == 0 ) |
163 | QMessageBox::warning ( this, "QashMoney", "Please select an account\nto delete."); | 161 | QMessageBox::warning ( this, "QashMoney", "Please select an account\nto delete."); |
164 | else if ( listview->selectedItem()->parent() == 0 && listview->selectedItem()->childCount() != 0 ) | 162 | else if ( listview->selectedItem()->parent() == 0 && listview->selectedItem()->childCount() != 0 ) |
165 | QMessageBox::warning ( this, "QashMoney", "Can't delete parent accounts\nwith children"); | 163 | QMessageBox::warning ( this, "QashMoney", "Can't delete parent accounts\nwith children"); |
166 | else | 164 | else |
167 | { | 165 | { |
168 | QMessageBox mb ( "Delete Account", "This will delete all transactions\nand transfers for this account.", QMessageBox::Information, QMessageBox::Ok, QMessageBox::Cancel, QMessageBox::NoButton ); | 166 | QMessageBox mb ( "Delete Account", "This will delete all transactions\nand transfers for this account.", QMessageBox::Information, QMessageBox::Ok, QMessageBox::Cancel, QMessageBox::NoButton ); |
169 | if ( mb.exec() == QMessageBox::Ok ) | 167 | if ( mb.exec() == QMessageBox::Ok ) |
170 | { | 168 | { |
171 | int accountid = listview->selectedItem()->text ( getIDColumn() ).toInt (); | 169 | int accountid = listview->selectedItem()->text ( getIDColumn() ).toInt (); |
172 | int parentid = account->getParentAccountID ( accountid ); | 170 | int parentid = account->getParentAccountID ( accountid ); |
173 | 171 | ||
174 | // delete all the transactions and transfers for the account | 172 | // delete all the transactions and transfers for the account |
175 | transaction->deleteAllTransactions ( accountid ); | 173 | transaction->deleteAllTransactions ( accountid ); |
176 | transfer->deleteAllTransfers ( accountid ); | 174 | transfer->deleteAllTransfers ( accountid ); |
177 | 175 | ||
178 | // delete the account | 176 | // delete the account |
179 | account->deleteAccount ( accountid ); | 177 | account->deleteAccount ( accountid ); |
180 | 178 | ||
181 | // update account balances | 179 | // update account balances |
182 | if ( parentid != -1 ) | 180 | if ( parentid != -1 ) |
183 | account->changeParentAccountBalance ( parentid ); | 181 | account->changeParentAccountBalance ( parentid ); |
184 | 182 | ||
185 | //redisplay accounts | 183 | //redisplay accounts |
186 | account->displayAccounts ( listview ); | 184 | account->displayAccounts ( listview ); |
187 | 185 | ||
188 | //remove all the columns from the accountdisplay if there are not any accounts | 186 | //remove all the columns from the accountdisplay if there are not any accounts |
189 | if ( account->getNumberOfAccounts() == 0 ) | 187 | if ( account->getNumberOfAccounts() == 0 ) |
190 | { | 188 | { |
191 | int columns = listview->columns(); | 189 | int columns = listview->columns(); |
192 | int counter; | 190 | int counter; |
193 | for ( counter = 0; counter <= columns; counter++ ) | 191 | for ( counter = 0; counter <= columns; counter++ ) |
194 | listview->removeColumn ( 0 ); | 192 | listview->removeColumn ( 0 ); |
195 | } | 193 | } |
196 | 194 | ||
197 | setToggleButton(); | 195 | setToggleButton(); |
198 | } | 196 | } |
199 | } | 197 | } |
200 | maintabs->setTabEnabled ( tab2, FALSE ); | 198 | maintabs->setTabEnabled ( tab2, FALSE ); |
201 | } | 199 | } |
202 | 200 | ||
203 | void AccountDisplay::setToggleButton () | 201 | void AccountDisplay::setToggleButton () |
204 | { | 202 | { |
205 | // iterate through account display and determine how many "transferable" accounts we have | 203 | // iterate through account display and determine how many "transferable" accounts we have |
206 | // if there are less than two, disable the transfer button | 204 | // if there are less than two, disable the transfer button |
207 | QListViewItemIterator it ( listview ); | 205 | QListViewItemIterator it ( listview ); |
208 | int counter = 0; | 206 | int counter = 0; |
209 | for ( ; it.current(); ++it ) | 207 | for ( ; it.current(); ++it ) |
210 | { | 208 | { |
211 | // add one to counter if we find a transferable account | 209 | // add one to counter if we find a transferable account |
212 | if ( it.current()->parent() != 0 || ( it.current()->childCount() ) == 0 ) | 210 | if ( it.current()->parent() != 0 || ( it.current()->childCount() ) == 0 ) |
213 | counter++; | 211 | counter++; |
214 | } | 212 | } |
215 | if ( counter > 1 ) | 213 | if ( counter > 1 ) |
216 | transferbutton->show(); | 214 | transferbutton->show(); |
217 | else | 215 | else |
218 | transferbutton->hide(); | 216 | transferbutton->hide(); |
219 | } | 217 | } |
220 | 218 | ||
221 | void AccountDisplay::accountTransfer ( bool state ) | 219 | void AccountDisplay::accountTransfer ( bool state ) |
222 | { | 220 | { |
223 | if ( state == TRUE ) | 221 | if ( state == TRUE ) |
224 | { | 222 | { |
225 | firstaccountid = -1; | 223 | firstaccountid = -1; |
226 | secondaccountid = -1; | 224 | secondaccountid = -1; |
227 | listview->clearSelection (); | 225 | listview->clearSelection (); |
228 | listview->setMultiSelection ( TRUE ); | 226 | listview->setMultiSelection ( TRUE ); |
229 | disableParentsWithChildren (); | 227 | disableParentsWithChildren (); |
230 | connect ( listview, SIGNAL ( clicked ( QListViewItem * ) ), this, SLOT ( getTransferAccounts ( QListViewItem * ) ) ); | 228 | connect ( listview, SIGNAL ( clicked ( QListViewItem * ) ), this, SLOT ( getTransferAccounts ( QListViewItem * ) ) ); |
231 | } | 229 | } |
232 | else | 230 | else |
233 | { | 231 | { |
234 | firstaccountid = -1; | 232 | firstaccountid = -1; |
235 | secondaccountid = -1; | 233 | secondaccountid = -1; |
236 | listview->clearSelection (); | 234 | listview->clearSelection (); |
237 | listview->setMultiSelection ( FALSE ); | 235 | listview->setMultiSelection ( FALSE ); |
238 | enableAccounts (); | 236 | enableAccounts (); |
239 | disconnect ( listview, SIGNAL ( clicked ( QListViewItem * ) ), this, SLOT ( getTransferAccounts ( QListViewItem * ) ) ); | 237 | disconnect ( listview, SIGNAL ( clicked ( QListViewItem * ) ), this, SLOT ( getTransferAccounts ( QListViewItem * ) ) ); |
240 | } | 238 | } |
241 | } | 239 | } |
242 | 240 | ||
243 | void AccountDisplay::getTransferAccounts ( QListViewItem * item ) | 241 | void AccountDisplay::getTransferAccounts ( QListViewItem * item ) |
244 | { | 242 | { |
245 | if ( item->parent() != 0 || item->childCount() == 0 ) // only set an account for transfer if its a child or parent with no children | 243 | if ( item->parent() != 0 || item->childCount() == 0 ) // only set an account for transfer if its a child or parent with no children |
246 | { | 244 | { |
247 | if ( firstaccountid == -1 ) | 245 | if ( firstaccountid == -1 ) |
248 | firstaccountid = item->text ( getIDColumn() ).toInt(); // set first account if we've selected a valid account | 246 | firstaccountid = item->text ( getIDColumn() ).toInt(); // set first account if we've selected a valid account |
249 | else | 247 | else |
250 | if ( item->text ( getIDColumn() ).toInt() != firstaccountid ) // set the second account if its not equal to the first | 248 | if ( item->text ( getIDColumn() ).toInt() != firstaccountid ) // set the second account if its not equal to the first |
251 | secondaccountid = item->text ( getIDColumn() ).toInt(); | 249 | secondaccountid = item->text ( getIDColumn() ).toInt(); |
252 | } | 250 | } |
253 | 251 | ||
254 | // open transfer window if both accounts are set | 252 | // open transfer window if both accounts are set |
255 | if ( firstaccountid != -1 && secondaccountid != -1 ) | 253 | if ( firstaccountid != -1 && secondaccountid != -1 ) |
256 | { | 254 | { |
257 | // construct the transferdialog window | 255 | // construct the transferdialog window |
258 | TransferDialog *td = new TransferDialog ( this, firstaccountid, secondaccountid ); | 256 | TransferDialog *td = new TransferDialog ( this, firstaccountid, secondaccountid ); |
259 | 257 | ||
260 | // enter today's date in the date box as default | 258 | // enter today's date in the date box as default |
261 | QDate today = QDate::currentDate (); | 259 | QDate today = QDate::currentDate (); |
262 | int defaultday = today.day(); | 260 | int defaultday = today.day(); |
263 | int defaultmonth = today.month(); | 261 | int defaultmonth = today.month(); |
264 | int defaultyear = today.year(); | 262 | int defaultyear = today.year(); |
265 | td->date->setText ( preferences->getDate ( defaultyear, defaultmonth, defaultday ) ); | 263 | td->date->setText ( preferences->getDate ( defaultyear, defaultmonth, defaultday ) ); |
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,266 +1,263 @@ | |||
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 | ||
13 | extern Preferences *preferences; | 10 | extern Preferences *preferences; |
14 | extern Budget *budget; | 11 | extern Budget *budget; |
15 | extern Transaction *transaction; | 12 | extern Transaction *transaction; |
16 | 13 | ||
17 | BudgetDisplay::BudgetDisplay ( QWidget *parent ) : QWidget ( parent ) | 14 | BudgetDisplay::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 | ||
102 | void BudgetDisplay::deleteBudget () | 99 | void 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 | ||
112 | void BudgetDisplay::saveColumnSize ( int column, int oldsize, int newsize ) | 109 | void 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 | ||
128 | void BudgetDisplay::saveSortingPreference ( int column ) | 125 | void BudgetDisplay::saveSortingPreference ( int column ) |
129 | { | 126 | { |
130 | preferences->changeSortingPreference ( 3, column ); | 127 | preferences->changeSortingPreference ( 3, column ); |
131 | } | 128 | } |
132 | 129 | ||
133 | int BudgetDisplay::getIDColumn () | 130 | int 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 ) |
139 | return counter; | 136 | return counter; |
140 | } | 137 | } |
141 | 138 | ||
142 | void BudgetDisplay::newBudget () | 139 | void BudgetDisplay::newBudget () |
143 | { | 140 | { |
144 | constructBudgetWindow(); | 141 | constructBudgetWindow(); |
145 | int response = nb->exec(); | 142 | int response = nb->exec(); |
146 | if ( response == 1 ) | 143 | if ( response == 1 ) |
147 | { | 144 | { |
148 | // open a new budget object | 145 | // open a new budget object |
149 | int addedbudget = budget->addBudget ( budgetname->text(), 0, description->text(), currencybox->currencybox->currentText(), day, month, year, day, month, year, 0 ); | 146 | int addedbudget = budget->addBudget ( budgetname->text(), 0, description->text(), currencybox->currencybox->currentText(), day, month, year, day, month, year, 0 ); |
150 | transaction->clearBudgetIDs ( addedbudget ); | 147 | transaction->clearBudgetIDs ( addedbudget ); |
151 | displayBudgetNames(); | 148 | displayBudgetNames(); |
152 | } | 149 | } |
153 | checkBudgets(); | 150 | checkBudgets(); |
154 | } | 151 | } |
155 | 152 | ||
156 | void BudgetDisplay::constructBudgetWindow () | 153 | void BudgetDisplay::constructBudgetWindow () |
157 | { | 154 | { |
158 | //construct and format the new budget window | 155 | //construct and format the new budget window |
159 | nb = new QDialog ( this, 0, TRUE ); | 156 | nb = new QDialog ( this, 0, TRUE ); |
160 | nb->setCaption ( "Budget" ); | 157 | nb->setCaption ( "Budget" ); |
161 | QLabel *namelabel = new QLabel ( "Budget Name", nb ); | 158 | QLabel *namelabel = new QLabel ( "Budget Name", nb ); |
162 | budgetname = new QLineEdit ( nb ); | 159 | budgetname = new QLineEdit ( nb ); |
163 | QLabel *descriptionlabel = new QLabel ( "Description", nb ); | 160 | QLabel *descriptionlabel = new QLabel ( "Description", nb ); |
164 | description = new QLineEdit ( nb ); | 161 | description = new QLineEdit ( nb ); |
165 | currencybox = new Currency ( nb ); | 162 | currencybox = new Currency ( nb ); |
166 | QBoxLayout *layout = new QVBoxLayout ( nb, 2, 2 ); | 163 | QBoxLayout *layout = new QVBoxLayout ( nb, 2, 2 ); |
167 | layout->addWidget ( namelabel ); | 164 | layout->addWidget ( namelabel ); |
168 | layout->addWidget ( budgetname ); | 165 | layout->addWidget ( budgetname ); |
169 | layout->addWidget ( descriptionlabel ); | 166 | layout->addWidget ( descriptionlabel ); |
170 | layout->addWidget ( description ); | 167 | layout->addWidget ( description ); |
171 | layout->addWidget ( currencybox ); | 168 | layout->addWidget ( currencybox ); |
172 | } | 169 | } |
173 | 170 | ||
174 | void BudgetDisplay::displayBudgetNames () | 171 | void BudgetDisplay::displayBudgetNames () |
175 | { | 172 | { |
176 | budgetbox->clear(); | 173 | budgetbox->clear(); |
177 | if ( budget->getNumberOfBudgets() != 0 ) | 174 | if ( budget->getNumberOfBudgets() != 0 ) |
178 | { | 175 | { |
179 | ids = budget->getBudgetIDs(); | 176 | ids = budget->getBudgetIDs(); |
180 | for ( QStringList::Iterator it = ids->begin(); it != ids->end(); ++it ) | 177 | for ( QStringList::Iterator it = ids->begin(); it != ids->end(); ++it ) |
181 | { | 178 | { |
182 | QString flag = "/opt/QtPalmtop/pics/flags/"; | 179 | QString flag = "/opt/QtPalmtop/pics/flags/"; |
183 | flag.append ( budget->getCurrency ( (*it).toInt() ) ); | 180 | flag.append ( budget->getCurrency ( (*it).toInt() ) ); |
184 | flag.append ( ".png" ); | 181 | flag.append ( ".png" ); |
185 | budgetbox->insertItem ( QPixmap ( flag ), budget->getBudgetName ( (*it).toInt() ) ); | 182 | budgetbox->insertItem ( QPixmap ( flag ), budget->getBudgetName ( (*it).toInt() ) ); |
186 | } | 183 | } |
187 | setCurrentBudget ( 0 ); | 184 | setCurrentBudget ( 0 ); |
188 | } | 185 | } |
189 | else | 186 | else |
190 | checkBudgets(); | 187 | checkBudgets(); |
191 | } | 188 | } |
192 | 189 | ||
193 | void BudgetDisplay::setCurrentBudget ( int index ) | 190 | void BudgetDisplay::setCurrentBudget ( int index ) |
194 | { | 191 | { |
195 | currentbudget = ( ids->operator[] ( index ).toInt() ); | 192 | currentbudget = ( ids->operator[] ( index ).toInt() ); |
196 | displayLineItems(); | 193 | displayLineItems(); |
197 | } | 194 | } |
198 | 195 | ||
199 | void BudgetDisplay::setCurrentView ( int index ) | 196 | void BudgetDisplay::setCurrentView ( int index ) |
200 | { | 197 | { |
201 | displayLineItems(); | 198 | displayLineItems(); |
202 | } | 199 | } |
203 | 200 | ||
204 | void BudgetDisplay::showCalendar () | 201 | void BudgetDisplay::showCalendar () |
205 | { | 202 | { |
206 | // create new calendar object and show it | 203 | // create new calendar object and show it |
207 | DatePicker *dp = new DatePicker ( QDate ( year, month, day ) ); | 204 | DatePicker *dp = new DatePicker ( QDate ( year, month, day ) ); |
208 | dp->daylabel->hide(); | 205 | dp->daylabel->hide(); |
209 | dp->daybox->hide(); | 206 | dp->daybox->hide(); |
210 | if ( budgetview->currentItem() == 1 ) | 207 | if ( budgetview->currentItem() == 1 ) |
211 | { | 208 | { |
212 | dp->monthlabel->hide(); | 209 | dp->monthlabel->hide(); |
213 | dp->monthbox->hide(); | 210 | dp->monthbox->hide(); |
214 | } | 211 | } |
215 | dp->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) ); | 212 | dp->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) ); |
216 | 213 | ||
217 | int response = dp->exec(); | 214 | int response = dp->exec(); |
218 | if ( response == 1 ) | 215 | if ( response == 1 ) |
219 | { | 216 | { |
220 | // Set date integers | 217 | // Set date integers |
221 | year = dp->getYear(); | 218 | year = dp->getYear(); |
222 | if ( budgetview->currentItem() == 0 ) | 219 | if ( budgetview->currentItem() == 0 ) |
223 | month = dp->getMonth(); | 220 | month = dp->getMonth(); |
224 | else | 221 | else |
225 | month = newDate.month(); | 222 | month = newDate.month(); |
226 | datelabel = preferences->getDate ( year, month ); | 223 | datelabel = preferences->getDate ( year, month ); |
227 | displayLineItems(); | 224 | displayLineItems(); |
228 | } | 225 | } |
229 | } | 226 | } |
230 | 227 | ||
231 | void BudgetDisplay::newLineItem () | 228 | void BudgetDisplay::newLineItem () |
232 | { | 229 | { |
233 | //construct and format the new line item window | 230 | //construct and format the new line item window |
234 | constructLineItemWindow (); | 231 | constructLineItemWindow (); |
235 | 232 | ||
236 | int response = newlineitem->exec(); | 233 | int response = newlineitem->exec(); |
237 | if ( response == 1 ) | 234 | if ( response == 1 ) |
238 | { | 235 | { |
239 | float amount; | 236 | float amount; |
240 | if ( lineitemtime->currentItem() == 0 ) | 237 | if ( lineitemtime->currentItem() == 0 ) |
241 | amount = lineitemamount->text().toFloat(); | 238 | amount = lineitemamount->text().toFloat(); |
242 | else if ( lineitemtime->currentItem() == 1 ) | 239 | else if ( lineitemtime->currentItem() == 1 ) |
243 | amount = lineitemamount->text().toFloat() * 12; | 240 | amount = lineitemamount->text().toFloat() * 12; |
244 | else | 241 | else |
245 | amount = lineitemamount->text().toFloat() * 52; | 242 | amount = lineitemamount->text().toFloat() * 52; |
246 | int lineitemadded = budget->addLineItem ( currentbudget, lineitemname->text(), amount, lineitemtime->currentItem() ); | 243 | int lineitemadded = budget->addLineItem ( currentbudget, lineitemname->text(), amount, lineitemtime->currentItem() ); |
247 | transaction->clearBudgetIDs ( currentbudget, lineitemadded ); | 244 | transaction->clearBudgetIDs ( currentbudget, lineitemadded ); |
248 | displayLineItems(); | 245 | displayLineItems(); |
249 | } | 246 | } |
250 | checkBudgets(); | 247 | checkBudgets(); |
251 | } | 248 | } |
252 | 249 | ||
253 | void BudgetDisplay::constructLineItemWindow () | 250 | void BudgetDisplay::constructLineItemWindow () |
254 | { | 251 | { |
255 | //construct and format the new budget window | 252 | //construct and format the new budget window |
256 | newlineitem = new QDialog ( this, 0, TRUE ); | 253 | newlineitem = new QDialog ( this, 0, TRUE ); |
257 | newlineitem->setCaption ( "Line Item" ); | 254 | newlineitem->setCaption ( "Line Item" ); |
258 | QLabel *namelabel = new QLabel ( "Line Item Name", newlineitem ); | 255 | QLabel *namelabel = new QLabel ( "Line Item Name", newlineitem ); |
259 | lineitemname = new QLineEdit ( newlineitem ); | 256 | lineitemname = new QLineEdit ( newlineitem ); |
260 | QLabel *budgetamountlabel = new QLabel ( "Budget Amount", newlineitem ); | 257 | QLabel *budgetamountlabel = new QLabel ( "Budget Amount", newlineitem ); |
261 | lineitemamount = new QLineEdit ( newlineitem ); | 258 | lineitemamount = new QLineEdit ( newlineitem ); |
262 | QLabel *lineitemtimelabel = new QLabel ( "Per:", newlineitem ); | 259 | QLabel *lineitemtimelabel = new QLabel ( "Per:", newlineitem ); |
263 | lineitemtime = new QComboBox ( newlineitem ); | 260 | lineitemtime = new QComboBox ( newlineitem ); |
264 | lineitemtime->insertItem ( "Year" ); // type 0 | 261 | lineitemtime->insertItem ( "Year" ); // type 0 |
265 | lineitemtime->insertItem ( "Month" ); // type 1 | 262 | lineitemtime->insertItem ( "Month" ); // type 1 |
266 | lineitemtime->insertItem ( "Week" ); // type 2 | 263 | lineitemtime->insertItem ( "Week" ); // type 2 |
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,209 +1,206 @@ | |||
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 | ||
9 | extern Preferences *preferences; | 6 | extern Preferences *preferences; |
10 | 7 | ||
11 | NewAccount::NewAccount ( QWidget *parent, const char *name, bool modal ) : QDialog ( parent, name, modal ) | 8 | NewAccount::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 | ||
90 | NewAccount::~NewAccount () | 87 | NewAccount::~NewAccount () |
91 | { | 88 | { |
92 | } | 89 | } |
93 | 90 | ||
94 | void NewAccount::showChildPulldownMenu () | 91 | void 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 | ||
105 | void NewAccount::hideChildPulldownMenu () | 102 | void NewAccount::hideChildPulldownMenu () |
106 | { | 103 | { |
107 | childlabel->setEnabled ( FALSE ); | 104 | childlabel->setEnabled ( FALSE ); |
108 | childbox->setEnabled ( FALSE ); | 105 | childbox->setEnabled ( FALSE ); |
109 | } | 106 | } |
110 | 107 | ||
111 | void NewAccount::showCalculator () | 108 | void 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 | ||
119 | void NewAccount::showCreditLimitCalculator () | 116 | void 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 | ||
127 | void NewAccount::activateCreditLimit ( int index ) | 124 | void 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 ); |
135 | } | 132 | } |
136 | } | 133 | } |
137 | 134 | ||
138 | void NewAccount::showCalendar () | 135 | void NewAccount::showCalendar () |
139 | { | 136 | { |
140 | QDate newDate = QDate::currentDate (); | 137 | QDate newDate = QDate::currentDate (); |
141 | DatePicker *dp = new DatePicker ( newDate ); | 138 | DatePicker *dp = new DatePicker ( newDate ); |
142 | dp->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) ); | 139 | dp->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) ); |
143 | 140 | ||
144 | int response = dp->exec(); | 141 | int response = dp->exec(); |
145 | if ( response == QDialog::Accepted ) | 142 | if ( response == QDialog::Accepted ) |
146 | { | 143 | { |
147 | // Set date integers | 144 | // Set date integers |
148 | year = dp->getYear(); | 145 | year = dp->getYear(); |
149 | month = dp->getMonth(); | 146 | month = dp->getMonth(); |
150 | day = dp->getDay(); | 147 | day = dp->getDay(); |
151 | 148 | ||
152 | // Set dateedited to TRUE | 149 | // Set dateedited to TRUE |
153 | // This tells the accountdisplay object that the user edited an account | 150 | // This tells the accountdisplay object that the user edited an account |
154 | // and did change the date | 151 | // and did change the date |
155 | dateedited = TRUE; | 152 | dateedited = TRUE; |
156 | 153 | ||
157 | // Display date with our selected format | 154 | // Display date with our selected format |
158 | startdate->setText ( preferences->getDate ( year, month, day ) ); | 155 | startdate->setText ( preferences->getDate ( year, month, day ) ); |
159 | } | 156 | } |
160 | } | 157 | } |
161 | 158 | ||
162 | bool NewAccount::getDateEdited () | 159 | bool NewAccount::getDateEdited () |
163 | { | 160 | { |
164 | return dateedited; | 161 | return dateedited; |
165 | } | 162 | } |
166 | 163 | ||
167 | int NewAccount::getDay () | 164 | int NewAccount::getDay () |
168 | { | 165 | { |
169 | return day; | 166 | return day; |
170 | } | 167 | } |
171 | 168 | ||
172 | int NewAccount::getMonth () | 169 | int NewAccount::getMonth () |
173 | { | 170 | { |
174 | return month; | 171 | return month; |
175 | } | 172 | } |
176 | 173 | ||
177 | int NewAccount::getYear () | 174 | int NewAccount::getYear () |
178 | { | 175 | { |
179 | return year; | 176 | return year; |
180 | } | 177 | } |
181 | 178 | ||
182 | QString NewAccount::getDescription () | 179 | QString NewAccount::getDescription () |
183 | { | 180 | { |
184 | return accountdescription; | 181 | return accountdescription; |
185 | } | 182 | } |
186 | 183 | ||
187 | void NewAccount::setDescription ( QString description ) | 184 | void NewAccount::setDescription ( QString description ) |
188 | { | 185 | { |
189 | accountdescription = description; | 186 | accountdescription = description; |
190 | } | 187 | } |
191 | 188 | ||
192 | void NewAccount::addAccountDescription () | 189 | void NewAccount::addAccountDescription () |
193 | { | 190 | { |
194 | // Function for adding or editing an account description. | 191 | // Function for adding or editing an account description. |
195 | QDialog *description = new QDialog ( this, "description", TRUE ); | 192 | QDialog *description = new QDialog ( this, "description", TRUE ); |
196 | description->setCaption ( "Notes" ); | 193 | description->setCaption ( "Notes" ); |
197 | QMultiLineEdit *enter = new QMultiLineEdit ( description ); | 194 | QMultiLineEdit *enter = new QMultiLineEdit ( description ); |
198 | enter->setFixedSize ( ( int ) (this->width() * 0.75 ), ( int ) ( this->height() * 0.5 ) ); | 195 | enter->setFixedSize ( ( int ) (this->width() * 0.75 ), ( int ) ( this->height() * 0.5 ) ); |
199 | enter->setWrapColumnOrWidth ( ( int ) (this->width() * 0.75 ) ); | 196 | enter->setWrapColumnOrWidth ( ( int ) (this->width() * 0.75 ) ); |
200 | enter->setWordWrap ( QMultiLineEdit::WidgetWidth ); | 197 | enter->setWordWrap ( QMultiLineEdit::WidgetWidth ); |
201 | if ( accountdescription != "(NULL)" ) | 198 | if ( accountdescription != "(NULL)" ) |
202 | enter->setText ( accountdescription ); | 199 | enter->setText ( accountdescription ); |
203 | if ( description->exec () == QDialog::Accepted ) | 200 | if ( description->exec () == QDialog::Accepted ) |
204 | accountdescription = enter->text (); | 201 | accountdescription = enter->text (); |
205 | } | 202 | } |
206 | 203 | ||
207 | 204 | ||
208 | 205 | ||
209 | 206 | ||
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,263 +1,261 @@ | |||
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 | ||
10 | extern Budget *budget; | 8 | extern Budget *budget; |
11 | extern Preferences *preferences; | 9 | extern Preferences *preferences; |
12 | 10 | ||
13 | NewTransaction::NewTransaction ( QWidget* parent ) : QDialog ( parent, 0, TRUE ) | 11 | NewTransaction::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 | ||
102 | NewTransaction::~NewTransaction () | 100 | NewTransaction::~NewTransaction () |
103 | { | 101 | { |
104 | } | 102 | } |
105 | 103 | ||
106 | void NewTransaction::showCalculator () | 104 | void 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 | ||
114 | void NewTransaction::showCalendar () | 112 | void 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 | } |
136 | } | 134 | } |
137 | 135 | ||
138 | bool NewTransaction::getDateEdited () | 136 | bool NewTransaction::getDateEdited () |
139 | { | 137 | { |
140 | return dateedited; | 138 | return dateedited; |
141 | } | 139 | } |
142 | 140 | ||
143 | int NewTransaction::getDay () | 141 | int NewTransaction::getDay () |
144 | { | 142 | { |
145 | return day; | 143 | return day; |
146 | } | 144 | } |
147 | 145 | ||
148 | int NewTransaction::getMonth () | 146 | int NewTransaction::getMonth () |
149 | { | 147 | { |
150 | return month; | 148 | return month; |
151 | } | 149 | } |
152 | 150 | ||
153 | int NewTransaction::getYear () | 151 | int NewTransaction::getYear () |
154 | { | 152 | { |
155 | return year; | 153 | return year; |
156 | } | 154 | } |
157 | 155 | ||
158 | QString NewTransaction::getDescription () | 156 | QString NewTransaction::getDescription () |
159 | { | 157 | { |
160 | return transactiondescription; | 158 | return transactiondescription; |
161 | } | 159 | } |
162 | 160 | ||
163 | void NewTransaction::setDescription ( QString description ) | 161 | void NewTransaction::setDescription ( QString description ) |
164 | { | 162 | { |
165 | transactiondescription = description; | 163 | transactiondescription = description; |
166 | } | 164 | } |
167 | 165 | ||
168 | void NewTransaction::addTransactionDescription () | 166 | void NewTransaction::addTransactionDescription () |
169 | { | 167 | { |
170 | // Function for adding or editing an transaction description. | 168 | // Function for adding or editing an transaction description. |
171 | QDialog *description = new QDialog ( this, "description", TRUE ); | 169 | QDialog *description = new QDialog ( this, "description", TRUE ); |
172 | description->setCaption ( "Notes" ); | 170 | description->setCaption ( "Notes" ); |
173 | QMultiLineEdit *enter = new QMultiLineEdit ( description ); | 171 | QMultiLineEdit *enter = new QMultiLineEdit ( description ); |
174 | enter->setFixedSize ( ( int ) (this->width() * 0.75 ), ( int ) ( this->height() * 0.5 ) ); | 172 | enter->setFixedSize ( ( int ) (this->width() * 0.75 ), ( int ) ( this->height() * 0.5 ) ); |
175 | enter->setWrapColumnOrWidth ( ( int ) (this->width() * 0.75 ) ); | 173 | enter->setWrapColumnOrWidth ( ( int ) (this->width() * 0.75 ) ); |
176 | enter->setWordWrap ( QMultiLineEdit::WidgetWidth ); | 174 | enter->setWordWrap ( QMultiLineEdit::WidgetWidth ); |
177 | if ( transactiondescription != "(NULL)" ) | 175 | if ( transactiondescription != "(NULL)" ) |
178 | enter->setText ( transactiondescription ); | 176 | enter->setText ( transactiondescription ); |
179 | if ( description->exec () == QDialog::Accepted ) | 177 | if ( description->exec () == QDialog::Accepted ) |
180 | transactiondescription = enter->text (); | 178 | transactiondescription = enter->text (); |
181 | } | 179 | } |
182 | 180 | ||
183 | int NewTransaction::getNameIndex ( QString name ) | 181 | int NewTransaction::getNameIndex ( QString name ) |
184 | { | 182 | { |
185 | int counter; | 183 | int counter; |
186 | int items = transactionname->count(); | 184 | int items = transactionname->count(); |
187 | for ( counter = 0; ( items - 1 ); counter++ ) | 185 | for ( counter = 0; ( items - 1 ); counter++ ) |
188 | { | 186 | { |
189 | if ( name == transactionname->text ( counter ) ) | 187 | if ( name == transactionname->text ( counter ) ) |
190 | { | 188 | { |
191 | return counter; | 189 | return counter; |
192 | break; | 190 | break; |
193 | } | 191 | } |
194 | } | 192 | } |
195 | return 0; | 193 | return 0; |
196 | } | 194 | } |
197 | 195 | ||
198 | void NewTransaction::setCurrentBudget ( int index ) | 196 | void NewTransaction::setCurrentBudget ( int index ) |
199 | { | 197 | { |
200 | if ( index != 0 ) | 198 | if ( index != 0 ) |
201 | { | 199 | { |
202 | currentbudget = budgetidslist->operator[] ( index - 1 ).toInt(); | 200 | currentbudget = budgetidslist->operator[] ( index - 1 ).toInt(); |
203 | lineitemslist = budget->getLineItems ( currentbudget ); | 201 | lineitemslist = budget->getLineItems ( currentbudget ); |
204 | lineitemidslist = budget->getLineItemIDs ( currentbudget ); | 202 | lineitemidslist = budget->getLineItemIDs ( currentbudget ); |
205 | lineitemlabel->setEnabled ( TRUE ); | 203 | lineitemlabel->setEnabled ( TRUE ); |
206 | lineitembox->setEnabled ( TRUE ); | 204 | lineitembox->setEnabled ( TRUE ); |
207 | lineitembox->clear(); | 205 | lineitembox->clear(); |
208 | lineitembox->insertStringList ( lineitemslist ); | 206 | lineitembox->insertStringList ( lineitemslist ); |
209 | setCurrentLineItem ( 0 ); | 207 | setCurrentLineItem ( 0 ); |
210 | } | 208 | } |
211 | else | 209 | else |
212 | { | 210 | { |
213 | lineitembox->clear(); | 211 | lineitembox->clear(); |
214 | lineitemlabel->setEnabled ( FALSE ); | 212 | lineitemlabel->setEnabled ( FALSE ); |
215 | lineitembox->setEnabled ( FALSE ); | 213 | lineitembox->setEnabled ( FALSE ); |
216 | currentlineitem = -1; | 214 | currentlineitem = -1; |
217 | currentbudget = -1; | 215 | currentbudget = -1; |
218 | } | 216 | } |
219 | } | 217 | } |
220 | 218 | ||
221 | void NewTransaction::setCurrentLineItem ( int index ) | 219 | void NewTransaction::setCurrentLineItem ( int index ) |
222 | { | 220 | { |
223 | currentlineitem = ( lineitemidslist.operator[] ( index ).toInt() ); | 221 | currentlineitem = ( lineitemidslist.operator[] ( index ).toInt() ); |
224 | } | 222 | } |
225 | 223 | ||
226 | int NewTransaction::getCurrentBudget () | 224 | int NewTransaction::getCurrentBudget () |
227 | { | 225 | { |
228 | return currentbudget; | 226 | return currentbudget; |
229 | } | 227 | } |
230 | 228 | ||
231 | int NewTransaction::getBudgetIndex ( int budgetid ) | 229 | int NewTransaction::getBudgetIndex ( int budgetid ) |
232 | { | 230 | { |
233 | currentbudget = budgetid; | 231 | currentbudget = budgetid; |
234 | const QString budget = QString::number ( budgetid ); | 232 | const QString budget = QString::number ( budgetid ); |
235 | return budgetidslist->findIndex ( budget ); | 233 | return budgetidslist->findIndex ( budget ); |
236 | } | 234 | } |
237 | 235 | ||
238 | int NewTransaction::getLineItemIndex ( int lineitemid ) | 236 | int NewTransaction::getLineItemIndex ( int lineitemid ) |
239 | { | 237 | { |
240 | currentlineitem = lineitemid; | 238 | currentlineitem = lineitemid; |
241 | const QString lineitem = QString::number ( lineitemid ); | 239 | const QString lineitem = QString::number ( lineitemid ); |
242 | return lineitemidslist.findIndex ( lineitem ); | 240 | return lineitemidslist.findIndex ( lineitem ); |
243 | } | 241 | } |
244 | 242 | ||
245 | void NewTransaction::setLineItems () | 243 | void NewTransaction::setLineItems () |
246 | { | 244 | { |
247 | lineitemslist = budget->getLineItems ( currentbudget ); | 245 | lineitemslist = budget->getLineItems ( currentbudget ); |
248 | lineitemidslist = budget->getLineItemIDs ( currentbudget ); | 246 | lineitemidslist = budget->getLineItemIDs ( currentbudget ); |
249 | lineitemlabel->setEnabled ( TRUE ); | 247 | lineitemlabel->setEnabled ( TRUE ); |
250 | lineitembox->setEnabled ( TRUE ); | 248 | lineitembox->setEnabled ( TRUE ); |
251 | lineitembox->clear(); | 249 | lineitembox->clear(); |
252 | lineitembox->insertStringList ( lineitemslist ); | 250 | lineitembox->insertStringList ( lineitemslist ); |
253 | } | 251 | } |
254 | 252 | ||
255 | int NewTransaction::getCurrentLineItem () | 253 | int NewTransaction::getCurrentLineItem () |
256 | { | 254 | { |
257 | return currentlineitem; | 255 | return currentlineitem; |
258 | } | 256 | } |
259 | 257 | ||
260 | void NewTransaction::setComboBoxes ( int budgetid, int lineitemid ) | 258 | void NewTransaction::setComboBoxes ( int budgetid, int lineitemid ) |
261 | { | 259 | { |
262 | const QString budgetname = QString::number ( budgetid ); | 260 | const QString budgetname = QString::number ( budgetid ); |
263 | budgetbox->setCurrentItem ( ( budgetidslist->findIndex ( budgetname ) ) ); | 261 | budgetbox->setCurrentItem ( ( budgetidslist->findIndex ( budgetname ) ) ); |
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,217 +1,216 @@ | |||
1 | #include "preferencedialogs.h" | 1 | #include "preferencedialogs.h" |
2 | #include "preferences.h" | 2 | #include "preferences.h" |
3 | #include <qlabel.h> | ||
4 | 3 | ||
5 | extern Preferences *preferences; | 4 | extern Preferences *preferences; |
6 | 5 | ||
7 | DatePreferences::DatePreferences ( QWidget* parent ) : QDialog ( parent, 0, TRUE ) | 6 | DatePreferences::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 | ||
47 | DatePreferences::~DatePreferences () | 46 | DatePreferences::~DatePreferences () |
48 | { | 47 | { |
49 | } | 48 | } |
50 | 49 | ||
51 | void DatePreferences::changeDateFormat ( int index ) | 50 | void DatePreferences::changeDateFormat ( int index ) |
52 | { | 51 | { |
53 | index ++; | 52 | index ++; |
54 | preferences->changePreference ( 1, index ); | 53 | preferences->changePreference ( 1, index ); |
55 | } | 54 | } |
56 | 55 | ||
57 | void DatePreferences::changeDateSeparator ( int index ) | 56 | void DatePreferences::changeDateSeparator ( int index ) |
58 | { | 57 | { |
59 | index ++; | 58 | index ++; |
60 | preferences->changePreference ( 2, index ); | 59 | preferences->changePreference ( 2, index ); |
61 | } | 60 | } |
62 | 61 | ||
63 | void DatePreferences::setDefaultDatePreferences () | 62 | void 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 | ||
72 | TransactionPreferences::TransactionPreferences ( QWidget* parent ) : QDialog ( parent, 0, TRUE ) | 71 | TransactionPreferences::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 | ||
120 | TransactionPreferences::~TransactionPreferences () | 119 | TransactionPreferences::~TransactionPreferences () |
121 | { | 120 | { |
122 | } | 121 | } |
123 | 122 | ||
124 | void TransactionPreferences::changeLimitTransactionsPreference ( int pref ) | 123 | void TransactionPreferences::changeLimitTransactionsPreference ( int pref ) |
125 | { | 124 | { |
126 | preferences->changePreference ( 7, pref ); | 125 | preferences->changePreference ( 7, pref ); |
127 | } | 126 | } |
128 | 127 | ||
129 | void TransactionPreferences::changeShowClearedPreference ( bool state ) | 128 | void TransactionPreferences::changeShowClearedPreference ( bool state ) |
130 | { | 129 | { |
131 | if ( state == TRUE ) | 130 | if ( state == TRUE ) |
132 | preferences->changePreference ( 3, 1 ); | 131 | preferences->changePreference ( 3, 1 ); |
133 | else | 132 | else |
134 | preferences->changePreference ( 3, 0 ); | 133 | preferences->changePreference ( 3, 0 ); |
135 | } | 134 | } |
136 | 135 | ||
137 | void TransactionPreferences::changeExcludeTranfersPreference ( bool state ) | 136 | void TransactionPreferences::changeExcludeTranfersPreference ( bool state ) |
138 | { | 137 | { |
139 | if ( state == TRUE ) | 138 | if ( state == TRUE ) |
140 | preferences->changePreference ( 6, 1 ); | 139 | preferences->changePreference ( 6, 1 ); |
141 | else | 140 | else |
142 | preferences->changePreference ( 6, 0 ); | 141 | preferences->changePreference ( 6, 0 ); |
143 | } | 142 | } |
144 | 143 | ||
145 | void TransactionPreferences::setDefaultTransactionPreferences () | 144 | void TransactionPreferences::setDefaultTransactionPreferences () |
146 | { | 145 | { |
147 | preferences->changePreference ( 3, 0 ); | 146 | preferences->changePreference ( 3, 0 ); |
148 | preferences->changePreference ( 6, 0 ); | 147 | preferences->changePreference ( 6, 0 ); |
149 | preferences->changePreference ( 7, 0 ); | 148 | preferences->changePreference ( 7, 0 ); |
150 | showclearedtransactions->setChecked ( FALSE ); | 149 | showclearedtransactions->setChecked ( FALSE ); |
151 | limittransactions->setCurrentItem ( 0 ); | 150 | limittransactions->setCurrentItem ( 0 ); |
152 | } | 151 | } |
153 | 152 | ||
154 | // START ACCOUNT PREFERNCES | 153 | // START ACCOUNT PREFERNCES |
155 | 154 | ||
156 | AccountPreferences::AccountPreferences ( QWidget* parent ) : QDialog ( parent, 0, TRUE ) | 155 | AccountPreferences::AccountPreferences ( QWidget* parent ) : QDialog ( parent, 0, TRUE ) |
157 | { | 156 | { |
158 | 157 | ||
159 | setCaption( tr ( "Account" ) ); | 158 | setCaption( tr ( "Account" ) ); |
160 | 159 | ||
161 | currencysupport = new QCheckBox ( this ); | 160 | currencysupport = new QCheckBox ( this ); |
162 | currencysupport->setText ( "Enable Currency Support" ); | 161 | currencysupport->setText ( "Enable Currency Support" ); |
163 | 162 | ||
164 | onetouch = new QCheckBox ( this ); | 163 | onetouch = new QCheckBox ( this ); |
165 | onetouch->setText ( "One Touch Account Viewing" ); | 164 | onetouch->setText ( "One Touch Account Viewing" ); |
166 | 165 | ||
167 | if ( preferences->getPreference ( 4 ) == 1 ) | 166 | if ( preferences->getPreference ( 4 ) == 1 ) |
168 | currencysupport->setChecked ( TRUE ); | 167 | currencysupport->setChecked ( TRUE ); |
169 | else | 168 | else |
170 | currencysupport->setChecked ( FALSE ); | 169 | currencysupport->setChecked ( FALSE ); |
171 | 170 | ||
172 | if ( preferences->getPreference ( 5 ) == 1 ) | 171 | if ( preferences->getPreference ( 5 ) == 1 ) |
173 | onetouch->setChecked ( TRUE ); | 172 | onetouch->setChecked ( TRUE ); |
174 | else | 173 | else |
175 | onetouch->setChecked ( FALSE ); | 174 | onetouch->setChecked ( FALSE ); |
176 | 175 | ||
177 | defaults = new QPushButton ( QPixmap ( "/opt/QtPalmtop/pics/defaults.png" ), "Defaults", this ); | 176 | defaults = new QPushButton ( QPixmap ( "/opt/QtPalmtop/pics/defaults.png" ), "Defaults", this ); |
178 | connect ( defaults, SIGNAL ( released () ), this, SLOT ( setDefaultAccountPreferences () ) ); | 177 | connect ( defaults, SIGNAL ( released () ), this, SLOT ( setDefaultAccountPreferences () ) ); |
179 | 178 | ||
180 | layout = new QVBoxLayout ( this, 2, 2 ); | 179 | layout = new QVBoxLayout ( this, 2, 2 ); |
181 | layout->addWidget ( currencysupport ); | 180 | layout->addWidget ( currencysupport ); |
182 | layout->addWidget ( onetouch ); | 181 | layout->addWidget ( onetouch ); |
183 | layout->insertSpacing ( 2, 5 ); | 182 | layout->insertSpacing ( 2, 5 ); |
184 | layout->addWidget ( defaults ); | 183 | layout->addWidget ( defaults ); |
185 | 184 | ||
186 | connect ( currencysupport, SIGNAL ( toggled ( bool ) ), this, SLOT ( changeCurrencySupport ( bool ) ) ); | 185 | connect ( currencysupport, SIGNAL ( toggled ( bool ) ), this, SLOT ( changeCurrencySupport ( bool ) ) ); |
187 | connect ( onetouch, SIGNAL ( toggled ( bool ) ), this, SLOT ( changeOneTouchViewing ( bool ) ) ); | 186 | connect ( onetouch, SIGNAL ( toggled ( bool ) ), this, SLOT ( changeOneTouchViewing ( bool ) ) ); |
188 | } | 187 | } |
189 | 188 | ||
190 | AccountPreferences::~AccountPreferences () | 189 | AccountPreferences::~AccountPreferences () |
191 | { | 190 | { |
192 | } | 191 | } |
193 | 192 | ||
194 | void AccountPreferences::changeCurrencySupport ( bool state ) | 193 | void AccountPreferences::changeCurrencySupport ( bool state ) |
195 | { | 194 | { |
196 | if ( state == TRUE ) | 195 | if ( state == TRUE ) |
197 | preferences->changePreference ( 4, 1 ); | 196 | preferences->changePreference ( 4, 1 ); |
198 | else | 197 | else |
199 | preferences->changePreference ( 4, 0 ); | 198 | preferences->changePreference ( 4, 0 ); |
200 | } | 199 | } |
201 | 200 | ||
202 | void AccountPreferences::changeOneTouchViewing ( bool state ) | 201 | void AccountPreferences::changeOneTouchViewing ( bool state ) |
203 | { | 202 | { |
204 | if ( state == TRUE ) | 203 | if ( state == TRUE ) |
205 | preferences->changePreference ( 5, 1 ); | 204 | preferences->changePreference ( 5, 1 ); |
206 | else | 205 | else |
207 | preferences->changePreference ( 5, 0 ); | 206 | preferences->changePreference ( 5, 0 ); |
208 | } | 207 | } |
209 | 208 | ||
210 | void AccountPreferences::setDefaultAccountPreferences () | 209 | void AccountPreferences::setDefaultAccountPreferences () |
211 | { | 210 | { |
212 | preferences->changePreference ( 4, 0 ); | 211 | preferences->changePreference ( 4, 0 ); |
213 | preferences->changePreference ( 5, 0 ); | 212 | preferences->changePreference ( 5, 0 ); |
214 | currencysupport->setChecked ( FALSE ); | 213 | currencysupport->setChecked ( FALSE ); |
215 | onetouch->setChecked ( FALSE ); | 214 | onetouch->setChecked ( FALSE ); |
216 | } | 215 | } |
217 | 216 | ||
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,271 +1,268 @@ | |||
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 | ||
17 | extern Transaction *transaction; | 14 | extern Transaction *transaction; |
18 | extern Budget *budget; | 15 | extern Budget *budget; |
19 | extern Account *account; | 16 | extern Account *account; |
20 | extern Preferences *preferences; | 17 | extern Preferences *preferences; |
21 | extern Memory *memory; | 18 | extern Memory *memory; |
22 | extern Transfer *transfer; | 19 | extern Transfer *transfer; |
23 | 20 | ||
24 | TransactionDisplay::TransactionDisplay ( QWidget* parent ) : QWidget ( parent ) | 21 | TransactionDisplay::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 | ||
77 | void TransactionDisplay::addTransaction () | 74 | void 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 | ||
144 | // format then reset the account balance | 141 | // format then reset the account balance |
145 | redisplayAccountBalance (); | 142 | redisplayAccountBalance (); |
146 | } | 143 | } |
147 | } | 144 | } |
148 | 145 | ||
149 | void TransactionDisplay::checkListViewEdit () | 146 | void TransactionDisplay::checkListViewEdit () |
150 | { | 147 | { |
151 | if ( listview->selectedItem() == 0 ) | 148 | if ( listview->selectedItem() == 0 ) |
152 | QMessageBox::warning ( this, "QashMoney", "Please select a transaction\nto edit."); | 149 | QMessageBox::warning ( this, "QashMoney", "Please select a transaction\nto edit."); |
153 | else if ( listview->currentItem()->text ( getIDColumn() ).toInt() < 0 ) | 150 | else if ( listview->currentItem()->text ( getIDColumn() ).toInt() < 0 ) |
154 | editTransfer (); | 151 | editTransfer (); |
155 | else | 152 | else |
156 | editTransaction(); | 153 | editTransaction(); |
157 | } | 154 | } |
158 | 155 | ||
159 | void TransactionDisplay::showCalculator () | 156 | void TransactionDisplay::showCalculator () |
160 | { | 157 | { |
161 | Calculator *calculator = new Calculator ( this ); | 158 | Calculator *calculator = new Calculator ( this ); |
162 | if ( calculator->exec () == QDialog::Accepted ) | 159 | if ( calculator->exec () == QDialog::Accepted ) |
163 | amount->setText ( calculator->display->text() ); | 160 | amount->setText ( calculator->display->text() ); |
164 | } | 161 | } |
165 | 162 | ||
166 | void TransactionDisplay::showCalendar () | 163 | void TransactionDisplay::showCalendar () |
167 | { | 164 | { |
168 | QDate newDate = QDate::currentDate (); | 165 | QDate newDate = QDate::currentDate (); |
169 | DatePicker *dp = new DatePicker ( newDate ); | 166 | DatePicker *dp = new DatePicker ( newDate ); |
170 | if ( dp->exec () == QDialog::Accepted ) | 167 | if ( dp->exec () == QDialog::Accepted ) |
171 | { | 168 | { |
172 | year = dp->getYear(); | 169 | year = dp->getYear(); |
173 | month = dp->getMonth(); | 170 | month = dp->getMonth(); |
174 | day = dp->getDay(); | 171 | day = dp->getDay(); |
175 | date->setText ( preferences->getDate ( year, month, day ) ); | 172 | date->setText ( preferences->getDate ( year, month, day ) ); |
176 | } | 173 | } |
177 | } | 174 | } |
178 | 175 | ||
179 | void TransactionDisplay::editTransfer () | 176 | void TransactionDisplay::editTransfer () |
180 | { | 177 | { |
181 | transferid = listview->currentItem()->text ( getIDColumn() ).toInt(); | 178 | transferid = listview->currentItem()->text ( getIDColumn() ).toInt(); |
182 | fromaccount = transfer->getFromAccountID ( transferid ); | 179 | fromaccount = transfer->getFromAccountID ( transferid ); |
183 | toaccount = transfer->getToAccountID ( transferid ); | 180 | toaccount = transfer->getToAccountID ( transferid ); |
184 | year = transfer->getYear ( transferid ); | 181 | year = transfer->getYear ( transferid ); |
185 | month = transfer->getMonth ( transferid ); | 182 | month = transfer->getMonth ( transferid ); |
186 | day = transfer->getDay ( transferid ); | 183 | day = transfer->getDay ( transferid ); |
187 | 184 | ||
188 | QDialog *editransfer = new QDialog ( this, "edittransfer", TRUE ); | 185 | QDialog *editransfer = new QDialog ( this, "edittransfer", TRUE ); |
189 | editransfer->setCaption ( "Transfer" ); | 186 | editransfer->setCaption ( "Transfer" ); |
190 | 187 | ||
191 | QStringList accountnames = account->getAccountNames(); | 188 | QStringList accountnames = account->getAccountNames(); |
192 | QStringList accountids = account->getAccountIDs(); | 189 | QStringList accountids = account->getAccountIDs(); |
193 | 190 | ||
194 | QLabel *fromaccountlabel = new QLabel ( "From Account:", editransfer ); | 191 | QLabel *fromaccountlabel = new QLabel ( "From Account:", editransfer ); |
195 | QFont f = this->font(); | 192 | QFont f = this->font(); |
196 | f.setWeight ( QFont::Bold ); | 193 | f.setWeight ( QFont::Bold ); |
197 | fromaccountlabel->setFont ( f ); | 194 | fromaccountlabel->setFont ( f ); |
198 | 195 | ||
199 | QComboBox *fromaccountbox = new QComboBox ( editransfer ); | 196 | QComboBox *fromaccountbox = new QComboBox ( editransfer ); |
200 | fromaccountbox->insertStringList ( accountnames ); | 197 | fromaccountbox->insertStringList ( accountnames ); |
201 | fromaccountbox->setCurrentItem ( accountids.findIndex ( QString::number ( fromaccount ) ) ); | 198 | fromaccountbox->setCurrentItem ( accountids.findIndex ( QString::number ( fromaccount ) ) ); |
202 | 199 | ||
203 | QLabel *toaccountlabel = new QLabel ( "To Account:", editransfer ); | 200 | QLabel *toaccountlabel = new QLabel ( "To Account:", editransfer ); |
204 | toaccountlabel->setFont ( f ); | 201 | toaccountlabel->setFont ( f ); |
205 | 202 | ||
206 | QComboBox *toaccountbox = new QComboBox ( editransfer ); | 203 | QComboBox *toaccountbox = new QComboBox ( editransfer ); |
207 | toaccountbox->insertStringList ( accountnames ); | 204 | toaccountbox->insertStringList ( accountnames ); |
208 | toaccountbox->setCurrentItem ( accountids.findIndex ( QString::number ( toaccount ) ) ); | 205 | toaccountbox->setCurrentItem ( accountids.findIndex ( QString::number ( toaccount ) ) ); |
209 | 206 | ||
210 | QLabel *datelabel = new QLabel ( "Date", editransfer ); | 207 | QLabel *datelabel = new QLabel ( "Date", editransfer ); |
211 | QHBox *datebox = new QHBox ( editransfer ); | 208 | QHBox *datebox = new QHBox ( editransfer ); |
212 | datebox->setSpacing ( 2 ); | 209 | datebox->setSpacing ( 2 ); |
213 | date = new QLineEdit ( datebox ); | 210 | date = new QLineEdit ( datebox ); |
214 | date->setAlignment ( Qt::AlignRight ); | 211 | date->setAlignment ( Qt::AlignRight ); |
215 | date->setDisabled ( TRUE ); | 212 | date->setDisabled ( TRUE ); |
216 | date->setText ( preferences->getDate ( year, month, day ) ); | 213 | date->setText ( preferences->getDate ( year, month, day ) ); |
217 | QPushButton *datebutton = new QPushButton ( datebox ); | 214 | QPushButton *datebutton = new QPushButton ( datebox ); |
218 | datebutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/date.png" ) ); | 215 | datebutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/date.png" ) ); |
219 | connect ( datebutton, SIGNAL ( released () ), this, SLOT ( showCalendar () ) ); | 216 | connect ( datebutton, SIGNAL ( released () ), this, SLOT ( showCalendar () ) ); |
220 | 217 | ||
221 | QLabel *amounttlabel = new QLabel ( "Amount", editransfer ); | 218 | QLabel *amounttlabel = new QLabel ( "Amount", editransfer ); |
222 | 219 | ||
223 | QHBox *amountbox = new QHBox ( editransfer ); | 220 | QHBox *amountbox = new QHBox ( editransfer ); |
224 | amountbox->setSpacing ( 2 ); | 221 | amountbox->setSpacing ( 2 ); |
225 | amount = new QLineEdit ( amountbox ); | 222 | amount = new QLineEdit ( amountbox ); |
226 | amount->setAlignment ( Qt::AlignRight ); | 223 | amount->setAlignment ( Qt::AlignRight ); |
227 | amount->setText ( transfer->getAmount ( transferid ) ); | 224 | amount->setText ( transfer->getAmount ( transferid ) ); |
228 | QPushButton *calculatorbutton = new QPushButton( amountbox ); | 225 | QPushButton *calculatorbutton = new QPushButton( amountbox ); |
229 | calculatorbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) ); | 226 | calculatorbutton->setPixmap ( QPixmap ( "/opt/QtPalmtop/pics/kcalc.png" ) ); |
230 | connect ( calculatorbutton, SIGNAL ( released() ), this, SLOT ( showCalculator() ) ); | 227 | connect ( calculatorbutton, SIGNAL ( released() ), this, SLOT ( showCalculator() ) ); |
231 | 228 | ||
232 | QCheckBox *clearedcheckbox = new QCheckBox ( "Cleared", editransfer ); | 229 | QCheckBox *clearedcheckbox = new QCheckBox ( "Cleared", editransfer ); |
233 | 230 | ||
234 | QBoxLayout *layout = new QVBoxLayout ( editransfer, 4, 2 ); | 231 | QBoxLayout *layout = new QVBoxLayout ( editransfer, 4, 2 ); |
235 | layout->addWidget ( fromaccountlabel, Qt::AlignLeft ); | 232 | layout->addWidget ( fromaccountlabel, Qt::AlignLeft ); |
236 | layout->addWidget ( fromaccountbox, Qt::AlignLeft ); | 233 | layout->addWidget ( fromaccountbox, Qt::AlignLeft ); |
237 | layout->addWidget ( toaccountlabel, Qt::AlignLeft ); | 234 | layout->addWidget ( toaccountlabel, Qt::AlignLeft ); |
238 | layout->addWidget ( toaccountbox, Qt::AlignLeft ); | 235 | layout->addWidget ( toaccountbox, Qt::AlignLeft ); |
239 | layout->addSpacing ( 5 ); | 236 | layout->addSpacing ( 5 ); |
240 | layout->addWidget ( datelabel, Qt::AlignLeft ); | 237 | layout->addWidget ( datelabel, Qt::AlignLeft ); |
241 | layout->addWidget ( datebox, Qt::AlignLeft ); | 238 | layout->addWidget ( datebox, Qt::AlignLeft ); |
242 | layout->addWidget ( amounttlabel, Qt::AlignLeft ); | 239 | layout->addWidget ( amounttlabel, Qt::AlignLeft ); |
243 | layout->addWidget ( amountbox, Qt::AlignLeft ); | 240 | layout->addWidget ( amountbox, Qt::AlignLeft ); |
244 | layout->addWidget ( clearedcheckbox, Qt::AlignLeft ); | 241 | layout->addWidget ( clearedcheckbox, Qt::AlignLeft ); |
245 | 242 | ||
246 | if ( editransfer->exec() == QDialog::Accepted ) | 243 | if ( editransfer->exec() == QDialog::Accepted ) |
247 | { | 244 | { |
248 | //get fromaccount | 245 | //get fromaccount |
249 | fromaccount = ( accountids.operator[] ( fromaccountbox->currentItem() ) ).toInt(); | 246 | fromaccount = ( accountids.operator[] ( fromaccountbox->currentItem() ) ).toInt(); |
250 | 247 | ||
251 | //get to account | 248 | //get to account |
252 | toaccount = ( accountids.operator[] ( toaccountbox->currentItem() ) ).toInt(); | 249 | toaccount = ( accountids.operator[] ( toaccountbox->currentItem() ) ).toInt(); |
253 | 250 | ||
254 | //set cleared flag | 251 | //set cleared flag |
255 | int cleared = 0; | 252 | int cleared = 0; |
256 | if ( clearedcheckbox->isChecked() == TRUE ) | 253 | if ( clearedcheckbox->isChecked() == TRUE ) |
257 | cleared = 1; | 254 | cleared = 1; |
258 | 255 | ||
259 | //update transfer | 256 | //update transfer |
260 | transfer->updateTransfer ( fromaccount, account->getParentAccountID ( fromaccount ), toaccount, account->getParentAccountID ( toaccount ), | 257 | transfer->updateTransfer ( fromaccount, account->getParentAccountID ( fromaccount ), toaccount, account->getParentAccountID ( toaccount ), |
261 | day, month, year, amount->text().toFloat(), cleared, transferid ); | 258 | day, month, year, amount->text().toFloat(), cleared, transferid ); |
262 | 259 | ||
263 | account->updateAccountBalance ( fromaccount ); | 260 | account->updateAccountBalance ( fromaccount ); |
264 | if ( account->getParentAccountID ( fromaccount ) != -1 ) | 261 | if ( account->getParentAccountID ( fromaccount ) != -1 ) |
265 | account->changeParentAccountBalance ( account->getParentAccountID ( fromaccount ) ); | 262 | account->changeParentAccountBalance ( account->getParentAccountID ( fromaccount ) ); |
266 | 263 | ||
267 | updateAndDisplay ( toaccount ); | 264 | updateAndDisplay ( toaccount ); |
268 | } | 265 | } |
269 | } | 266 | } |
270 | 267 | ||
271 | void TransactionDisplay::editTransaction () | 268 | void TransactionDisplay::editTransaction () |
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 | ||
8 | extern Preferences *preferences; | 6 | extern Preferences *preferences; |
9 | extern Account *account; | 7 | extern Account *account; |
10 | 8 | ||
11 | TransferDialog::TransferDialog ( QWidget *parent, int fromaccountid, int toaccountid ) : QDialog ( parent, 0, TRUE ) | 9 | TransferDialog::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 | ||
62 | bool TransferDialog::getDateEdited () | 60 | bool TransferDialog::getDateEdited () |
63 | { | 61 | { |
64 | return dateedited; | 62 | return dateedited; |
65 | } | 63 | } |
66 | 64 | ||
67 | void TransferDialog::showCalendar () | 65 | void 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 | ||
88 | int TransferDialog::getDay () | 86 | int TransferDialog::getDay () |
89 | { | 87 | { |
90 | return day; | 88 | return day; |
91 | } | 89 | } |
92 | 90 | ||
93 | int TransferDialog::getMonth () | 91 | int TransferDialog::getMonth () |
94 | { | 92 | { |
95 | return month; | 93 | return month; |
96 | } | 94 | } |
97 | 95 | ||
98 | int TransferDialog::getYear () | 96 | int TransferDialog::getYear () |
99 | { | 97 | { |
100 | return year; | 98 | return year; |
101 | } | 99 | } |
102 | 100 | ||
103 | void TransferDialog::showCalculator () | 101 | void 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,293 +1,292 @@ | |||
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 | */ |
54 | TableViewerWindow::TableViewerWindow(QWidget *parent, const char *name, WFlags f) | 53 | TableViewerWindow::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 &)), |
166 | this, SLOT(openDocument(const DocLnk &))); | 165 | this, SLOT(openDocument(const DocLnk &))); |
167 | 166 | ||
168 | main_layout->addWidget(menu); | 167 | main_layout->addWidget(menu); |
169 | main_layout->addWidget(cw); | 168 | main_layout->addWidget(cw); |
170 | 169 | ||
171 | setCentralWidget(cw); | 170 | setCentralWidget(cw); |
172 | 171 | ||
173 | } | 172 | } |
174 | 173 | ||
175 | /*! | 174 | /*! |
176 | Destroys the TableViewerWindow | 175 | Destroys the TableViewerWindow |
177 | */ | 176 | */ |
178 | TableViewerWindow::~TableViewerWindow() | 177 | TableViewerWindow::~TableViewerWindow() |
179 | { | 178 | { |
180 | if(dirty) | 179 | if(dirty) |
181 | saveDocument(); | 180 | saveDocument(); |
182 | } | 181 | } |
183 | 182 | ||
184 | /*! | 183 | /*! |
185 | Opens a file dialog and loads the file specified by the dialog | 184 | Opens a file dialog and loads the file specified by the dialog |
186 | */ | 185 | */ |
187 | void TableViewerWindow::selectDocument() | 186 | void TableViewerWindow::selectDocument() |
188 | { | 187 | { |
189 | if(dirty) | 188 | if(dirty) |
190 | saveDocument(); | 189 | saveDocument(); |
191 | current_view = FileState; | 190 | current_view = FileState; |
192 | cw->raiseWidget(current_view); | 191 | cw->raiseWidget(current_view); |
193 | fileSelector->reread(); | 192 | fileSelector->reread(); |
194 | } | 193 | } |
195 | 194 | ||
196 | void TableViewerWindow::saveDocument() | 195 | void TableViewerWindow::saveDocument() |
197 | { | 196 | { |
198 | if(!dirty) | 197 | if(!dirty) |
199 | return; | 198 | return; |
200 | 199 | ||
201 | FileManager fm; | 200 | FileManager fm; |
202 | QIODevice *dev = fm.saveFile(doc); | 201 | QIODevice *dev = fm.saveFile(doc); |
203 | 202 | ||
204 | if(!ds->saveSource(dev, doc.type())){ | 203 | if(!ds->saveSource(dev, doc.type())){ |
205 | qWarning("Save unsuccessful"); | 204 | qWarning("Save unsuccessful"); |
206 | return; | 205 | return; |
207 | } | 206 | } |
208 | dev->close(); | 207 | dev->close(); |
209 | dirty = FALSE; | 208 | dirty = FALSE; |
210 | } | 209 | } |
211 | 210 | ||
212 | void TableViewerWindow::newDocument() | 211 | void TableViewerWindow::newDocument() |
213 | { | 212 | { |
214 | DocLnk nf; | 213 | DocLnk nf; |
215 | nf.setType("text/x-xml-tableviewer"); | 214 | nf.setType("text/x-xml-tableviewer"); |
216 | nf.setName("table"); | 215 | nf.setName("table"); |
217 | 216 | ||
218 | delete ds; | 217 | delete ds; |
219 | ds = new DBStore(); | 218 | ds = new DBStore(); |
220 | 219 | ||
221 | ts.current_column = 0; | 220 | ts.current_column = 0; |
222 | ts.kRep = ds->getKeys(); | 221 | ts.kRep = ds->getKeys(); |
223 | browseView->reset(); | 222 | browseView->reset(); |
224 | listView->reset(); | 223 | listView->reset(); |
225 | filterView->reset(); | 224 | filterView->reset(); |
226 | 225 | ||
227 | doc = nf; | 226 | doc = nf; |
228 | dirty = FALSE; | 227 | dirty = FALSE; |
229 | 228 | ||
230 | current_view = BrowseState; | 229 | current_view = BrowseState; |
231 | cw->raiseWidget(current_view); | 230 | cw->raiseWidget(current_view); |
232 | 231 | ||
233 | /* now set up for editing the keys */ | 232 | /* now set up for editing the keys */ |
234 | ts.kRep->addKey("key", TVVariant::String); | 233 | ts.kRep->addKey("key", TVVariant::String); |
235 | editKeysSlot(); | 234 | editKeysSlot(); |
236 | } | 235 | } |
237 | 236 | ||
238 | void TableViewerWindow::setDocument(const QString &f) | 237 | void TableViewerWindow::setDocument(const QString &f) |
239 | { | 238 | { |
240 | openDocument(DocLnk(f, TRUE)); | 239 | openDocument(DocLnk(f, TRUE)); |
241 | } | 240 | } |
242 | 241 | ||
243 | void TableViewerWindow::openDocument(const DocLnk &f) | 242 | void TableViewerWindow::openDocument(const DocLnk &f) |
244 | { | 243 | { |
245 | 244 | ||
246 | if (!f.isValid()) | 245 | if (!f.isValid()) |
247 | return; | 246 | return; |
248 | 247 | ||
249 | FileManager fm; | 248 | FileManager fm; |
250 | QIODevice *dev = fm.openFile(f); | 249 | QIODevice *dev = fm.openFile(f); |
251 | doc = f; | 250 | doc = f; |
252 | 251 | ||
253 | if(ds->openSource(dev, doc.type())) { | 252 | if(ds->openSource(dev, doc.type())) { |
254 | DataElem *d; | 253 | DataElem *d; |
255 | 254 | ||
256 | browseView->reset(); | 255 | browseView->reset(); |
257 | listView->reset(); | 256 | listView->reset(); |
258 | filterView->reset(); | 257 | filterView->reset(); |
259 | 258 | ||
260 | current_view = BrowseState; | 259 | current_view = BrowseState; |
261 | cw->raiseWidget(current_view); | 260 | cw->raiseWidget(current_view); |
262 | 261 | ||
263 | /* set up new table state and ensure sub widgets have a reference */ | 262 | /* set up new table state and ensure sub widgets have a reference */ |
264 | ts.current_column = 0; | 263 | ts.current_column = 0; |
265 | ts.kRep = ds->getKeys(); | 264 | ts.kRep = ds->getKeys(); |
266 | browseView->rebuildKeys(); | 265 | browseView->rebuildKeys(); |
267 | listView->rebuildKeys(); | 266 | listView->rebuildKeys(); |
268 | filterView->rebuildKeys(); | 267 | filterView->rebuildKeys(); |
269 | 268 | ||
270 | ds->first(); | 269 | ds->first(); |
271 | /* set up the list view */ | 270 | /* set up the list view */ |
272 | listView->clearItems(); | 271 | listView->clearItems(); |
273 | do { | 272 | do { |
274 | d = ds->getCurrentData(); | 273 | d = ds->getCurrentData(); |
275 | if(d) | 274 | if(d) |
276 | listView->addItem(d); | 275 | listView->addItem(d); |
277 | } while(ds->next()); | 276 | } while(ds->next()); |
278 | 277 | ||
279 | /* Set up browse view, Will be based of structure of listView */ | 278 | /* Set up browse view, Will be based of structure of listView */ |
280 | listView->first(); | 279 | listView->first(); |
281 | ts.current_elem = listView->getCurrentData(); | 280 | ts.current_elem = listView->getCurrentData(); |
282 | browseView->rebuildData(); | 281 | browseView->rebuildData(); |
283 | listView->rebuildData(); | 282 | listView->rebuildData(); |
284 | 283 | ||
285 | QString scratch = "Table Viewer";/* later take from constant */ | 284 | QString scratch = "Table Viewer";/* later take from constant */ |
286 | scratch += " - "; | 285 | scratch += " - "; |
287 | scratch += ds->getName(); | 286 | scratch += ds->getName(); |
288 | setCaption(tr(scratch)); | 287 | setCaption(tr(scratch)); |
289 | 288 | ||
290 | dirty = FALSE; | 289 | dirty = FALSE; |
291 | } else { | 290 | } else { |
292 | qWarning(tr("could not load Document")); | 291 | qWarning(tr("could not load Document")); |
293 | } | 292 | } |