1*b1cdbd2cSJim Jagielski# ************************************************************* 2*b1cdbd2cSJim Jagielski# 3*b1cdbd2cSJim Jagielski# Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski# or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski# distributed with this work for additional information 6*b1cdbd2cSJim Jagielski# regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski# to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski# "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski# with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski# 11*b1cdbd2cSJim Jagielski# http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski# 13*b1cdbd2cSJim Jagielski# Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski# software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski# KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski# specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski# under the License. 19*b1cdbd2cSJim Jagielski# 20*b1cdbd2cSJim Jagielski# ************************************************************* 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski** MetricField: 23*b1cdbd2cSJim Jagielski + in vcl: 24*b1cdbd2cSJim Jagielskiclass VCL_DLLPUBLIC CurrencyField : public SpinField, public CurrencyFormatter 25*b1cdbd2cSJim Jagielskiclass VCL_DLLPUBLIC CurrencyFormatter : public NumericFormatter 26*b1cdbd2cSJim Jagielskiclass VCL_DLLPUBLIC MetricFormatter : public NumericFormatter 27*b1cdbd2cSJim Jagielskiclass VCL_DLLPUBLIC NumericFormatter : public FormatterBase 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim JagielskiMetricFormatter - very simple sal_Int64 wrapping ... 30*b1cdbd2cSJim Jagielski + no doubles ... 31*b1cdbd2cSJim Jagielski + *Could* replicate this with the same interface: 32*b1cdbd2cSJim Jagielski + prolly easier / better to add an XMetricField interface. 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielskivcl's MetricField - itself does a load of (double) casting ... 35*b1cdbd2cSJim Jagielski + to get the value it wants :-) 36*b1cdbd2cSJim Jagielski + Urgh ! ... 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski** Can we just twist VCLXCurrencyField to this purpose ? 39*b1cdbd2cSJim Jagielski + what differences would we want ? 40*b1cdbd2cSJim Jagielski + LongCurrencyFormatter -> 'MetricFormatter' ... 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski** Interesting ! 43*b1cdbd2cSJim Jagielski + VCLXCurrencyField is based on 'LongCurrencyField' not CurrencyField ... 44*b1cdbd2cSJim Jagielski + this is really based on 'BigInt' [ curious ] - so even more precision loss. 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski + So ... cut/paste VCLXCurencyField -> VCLXMetricField 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski + Look at 'VCLXNumericField' interface ... 49*b1cdbd2cSJim Jagielski + Use 'XNumericField' instead (?) 50*b1cdbd2cSJim Jagielski + why does this just not "just work" ? 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski + The 'MetricField' (is also a MetricFormatter) 53*b1cdbd2cSJim Jagielski + MetricFormatter [ unusually ] has 'Unit' support 54*b1cdbd2cSJim Jagielski + API grep shows: 55*b1cdbd2cSJim Jagielski + a) requires 'fieldunit' 56*b1cdbd2cSJim Jagielski + b) has "UserValue" 57*b1cdbd2cSJim Jagielski + c) => new IDL interface required ... 58*b1cdbd2cSJim Jagielski + sub-set / expand NumericField ? 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski + add 'CustomConvert' ? 61*b1cdbd2cSJim Jagielski + add '[SG]etFirst'/Last 62*b1cdbd2cSJim Jagielski + Properties: 63*b1cdbd2cSJim Jagielski + 'Unit' 64*b1cdbd2cSJim Jagielski + 'CustomUnitText' 65*b1cdbd2cSJim Jagielski + 'spin-size' -> 'value-step' 66*b1cdbd2cSJim Jagielski + 'BaseValue' ... 67*b1cdbd2cSJim Jagielski + sal_Int64 ... [!?] ... 68*b1cdbd2cSJim Jagielski + CorrectedValue 69*b1cdbd2cSJim Jagielski + Want properties for the UI designer (?) 70*b1cdbd2cSJim Jagielski + move that stuff out into there ? 71*b1cdbd2cSJim Jagielski + FIXME: 72*b1cdbd2cSJim Jagielski + rationalise the 'Modify' event crud ... 73*b1cdbd2cSJim Jagielski + share the code in a base-class ... 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski + Wrapper: 76*b1cdbd2cSJim Jagielski + need to have static methods 'ConvertDoubleValue' etc. 77*b1cdbd2cSJim Jagielski + also 'ConvertValue' etc. 78*b1cdbd2cSJim Jagielski + GetCorrectedValue - never used ... 79