| # ************************************************************* |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| # ************************************************************* |
| |
| ** MetricField: |
| + in vcl: |
| class VCL_DLLPUBLIC CurrencyField : public SpinField, public CurrencyFormatter |
| class VCL_DLLPUBLIC CurrencyFormatter : public NumericFormatter |
| class VCL_DLLPUBLIC MetricFormatter : public NumericFormatter |
| class VCL_DLLPUBLIC NumericFormatter : public FormatterBase |
| |
| MetricFormatter - very simple sal_Int64 wrapping ... |
| + no doubles ... |
| + *Could* replicate this with the same interface: |
| + prolly easier / better to add an XMetricField interface. |
| |
| vcl's MetricField - itself does a load of (double) casting ... |
| + to get the value it wants :-) |
| + Urgh ! ... |
| |
| ** Can we just twist VCLXCurrencyField to this purpose ? |
| + what differences would we want ? |
| + LongCurrencyFormatter -> 'MetricFormatter' ... |
| |
| ** Interesting ! |
| + VCLXCurrencyField is based on 'LongCurrencyField' not CurrencyField ... |
| + this is really based on 'BigInt' [ curious ] - so even more precision loss. |
| |
| + So ... cut/paste VCLXCurencyField -> VCLXMetricField |
| |
| + Look at 'VCLXNumericField' interface ... |
| + Use 'XNumericField' instead (?) |
| + why does this just not "just work" ? |
| |
| + The 'MetricField' (is also a MetricFormatter) |
| + MetricFormatter [ unusually ] has 'Unit' support |
| + API grep shows: |
| + a) requires 'fieldunit' |
| + b) has "UserValue" |
| + c) => new IDL interface required ... |
| + sub-set / expand NumericField ? |
| |
| + add 'CustomConvert' ? |
| + add '[SG]etFirst'/Last |
| + Properties: |
| + 'Unit' |
| + 'CustomUnitText' |
| + 'spin-size' -> 'value-step' |
| + 'BaseValue' ... |
| + sal_Int64 ... [!?] ... |
| + CorrectedValue |
| + Want properties for the UI designer (?) |
| + move that stuff out into there ? |
| + FIXME: |
| + rationalise the 'Modify' event crud ... |
| + share the code in a base-class ... |
| |
| + Wrapper: |
| + need to have static methods 'ConvertDoubleValue' etc. |
| + also 'ConvertValue' etc. |
| + GetCorrectedValue - never used ... |