xref: /trunk/main/vcl/inc/vcl/longcurr.hxx (revision b5da552ccefc4034e06a43bfae43fb8a8b64a7ad)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _LONGCURR_HXX
25 #define _LONGCURR_HXX
26 
27 #include <vcl/dllapi.h>
28 #include <tools/bigint.hxx>
29 #ifndef _FIELD_HXX
30 #include <vcl/field.hxx>
31 #endif
32 
33 class LocaleDataWrapper;
34 
35 // -------------------------
36 // - LongCurrencyFormatter -
37 // -------------------------
38 
39 class VCL_DLLPUBLIC LongCurrencyFormatter : public FormatterBase
40 {
41 private:
42     SAL_DLLPRIVATE friend sal_Bool ImplLongCurrencyReformat( const XubString&, BigInt, BigInt, sal_uInt16, const LocaleDataWrapper&, XubString&, LongCurrencyFormatter& );
43     SAL_DLLPRIVATE void        ImpInit();
44 
45 protected:
46     BigInt                  mnFieldValue;
47     BigInt                  mnLastValue;
48     BigInt                  mnMin;
49     BigInt                  mnMax;
50     BigInt                  mnCorrectedValue;
51     String                  maCurrencySymbol;
52     sal_uInt16                  mnType;
53     sal_uInt16                  mnDecimalDigits;
54     sal_Bool                    mbThousandSep;
55 
56                             LongCurrencyFormatter();
57     SAL_DLLPRIVATE void     ImplLoadRes( const ResId& rResId );
58 
59 public:
60                             ~LongCurrencyFormatter();
61 
62     virtual void            Reformat();
63     virtual void            ReformatAll();
64 
65     void                    SetUseThousandSep( sal_Bool b );
66     sal_Bool                    IsUseThousandSep() const { return mbThousandSep; }
67 
68     void                    SetCurrencySymbol( const String& rStr );
69     String                  GetCurrencySymbol() const;
70 
71     void                    SetMin( BigInt nNewMin );
72     BigInt                  GetMin() const { return mnMin; }
73     void                    SetMax( BigInt nNewMax );
74     BigInt                  GetMax() const { return mnMax; }
75 
76     void                    SetDecimalDigits( sal_uInt16 nDigits );
77     sal_uInt16                  GetDecimalDigits() const;
78     void                    SetValue( BigInt nNewValue );
79     void                    SetUserValue( BigInt nNewValue );
80     BigInt                  GetValue() const;
81     sal_Bool                    IsValueModified() const;
82 
83     void                    SetEmptyValue();
84     sal_Bool                    IsEmptyValue() const { return !GetField()->GetText().Len(); }
85 
86     BigInt                  GetCorrectedValue() const { return mnCorrectedValue; }
87 
88     BigInt                  Normalize( BigInt nValue ) const;
89     BigInt                  Denormalize( BigInt nValue ) const;
90 };
91 
92 // ---------------------
93 // - LongCurrencyField -
94 // ---------------------
95 
96 class VCL_DLLPUBLIC LongCurrencyField : public SpinField, public LongCurrencyFormatter
97 {
98 //#if 0 // _SOLAR__PRIVATE
99     friend void ImplNewLongCurrencyFieldValue( LongCurrencyField*, BigInt );
100 //#endif
101 
102 private:
103     BigInt          mnSpinSize;
104     BigInt          mnFirst;
105     BigInt          mnLast;
106 
107 protected:
108     SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
109 
110 public:
111                     LongCurrencyField( Window* pParent, WinBits nWinStyle );
112                     LongCurrencyField( Window* pParent, const ResId& rResId );
113                     ~LongCurrencyField();
114 
115     long            PreNotify( NotifyEvent& rNEvt );
116     long            Notify( NotifyEvent& rNEvt );
117 
118     void            Modify();
119     void            Up();
120     void            Down();
121     void            First();
122     void            Last();
123 
124     void            SetFirst( BigInt nNewFirst ) { mnFirst = nNewFirst; }
125     BigInt          GetFirst() const { return mnFirst; }
126     void            SetLast( BigInt nNewLast ) { mnLast = nNewLast; }
127     BigInt          GetLast() const { return mnLast; }
128     void            SetSpinSize( BigInt nNewSize ) { mnSpinSize = nNewSize; }
129     BigInt          GetSpinSize() const { return mnSpinSize; }
130 };
131 
132 // -------------------
133 // - LongCurrencyBox -
134 // -------------------
135 
136 class VCL_DLLPUBLIC LongCurrencyBox : public ComboBox, public LongCurrencyFormatter
137 {
138 public:
139                     LongCurrencyBox( Window* pParent, WinBits nWinStyle );
140                     LongCurrencyBox( Window* pParent, const ResId& rResId );
141                     ~LongCurrencyBox();
142 
143     long            PreNotify( NotifyEvent& rNEvt );
144     long            Notify( NotifyEvent& rNEvt );
145 
146     void            Modify();
147     void            ReformatAll();
148 
149     void            InsertValue( BigInt nValue,
150                                  sal_uInt16 nPos = COMBOBOX_APPEND );
151     void            RemoveValue( BigInt nValue );
152     BigInt          GetValue() const
153                         { return LongCurrencyFormatter::GetValue(); }
154     BigInt          GetValue( sal_uInt16 nPos ) const;
155     sal_uInt16          GetValuePos( BigInt nValue ) const;
156 };
157 
158 #endif // _LONGCURR_HXX
159