blob: c9ec1b6a834ba26da5a866358a923167db79d053 [file] [log] [blame]
/**************************************************************
*
* 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.
*
*************************************************************/
#ifndef _SV_FIELD_HXX
#define _SV_FIELD_HXX
#include <vcl/dllapi.h>
#include <tools/link.hxx>
#include <tools/date.hxx>
#include <tools/time.hxx>
#include <vcl/spinfld.hxx>
#include <vcl/combobox.hxx>
#include <tools/fldunit.hxx>
namespace com { namespace sun { namespace star { namespace lang { struct Locale; } } } }
class CalendarWrapper;
class LocaleDataWrapper;
// -----------------
// - FormatterBase -
// -----------------
class VCL_DLLPUBLIC FormatterBase
{
private:
Edit* mpField;
LocaleDataWrapper* mpLocaleDataWrapper;
Link maErrorLink;
sal_Bool mbReformat;
sal_Bool mbStrictFormat;
sal_Bool mbEmptyFieldValue;
sal_Bool mbEmptyFieldValueEnabled;
sal_Bool mbDefaultLocale;
protected:
SAL_DLLPRIVATE void ImplSetText( const XubString& rText, Selection* pNewSel = NULL );
SAL_DLLPRIVATE sal_Bool ImplGetEmptyFieldValue() const { return mbEmptyFieldValue; }
void SetFieldText( const XubString& rText, sal_Bool bKeepSelection );
void SetEmptyFieldValueData( sal_Bool bValue ) { mbEmptyFieldValue = bValue; }
SAL_DLLPRIVATE LocaleDataWrapper& ImplGetLocaleDataWrapper() const;
sal_Bool IsDefaultLocale() const { return mbDefaultLocale; }
public:
explicit FormatterBase( Edit* pField = NULL );
virtual ~FormatterBase();
const LocaleDataWrapper& GetLocaleDataWrapper() const;
void SetField( Edit* pField ) { mpField = pField; }
Edit* GetField() const { return mpField; }
sal_Bool MustBeReformatted() const { return mbReformat; }
void MarkToBeReformatted( sal_Bool b ) { mbReformat = b; }
void SetStrictFormat( sal_Bool bStrict );
sal_Bool IsStrictFormat() const { return mbStrictFormat; }
virtual void Reformat();
virtual void ReformatAll();
virtual void SetLocale( const ::com::sun::star::lang::Locale& rLocale );
const ::com::sun::star::lang::Locale& GetLocale() const;
const AllSettings& GetFieldSettings() const;
void SetErrorHdl( const Link& rLink ) { maErrorLink = rLink; }
const Link& GetErrorHdl() const { return maErrorLink; }
void SetEmptyFieldValue();
sal_Bool IsEmptyFieldValue() const;
void EnableEmptyFieldValue( sal_Bool bEnable ) { mbEmptyFieldValueEnabled = bEnable; }
sal_Bool IsEmptyFieldValueEnabled() const { return mbEmptyFieldValueEnabled; }
};
// --------------------
// - PatternFormatter -
// --------------------
#define PATTERN_FORMAT_EMPTYLITERALS ((sal_uInt16)0x0001)
class VCL_DLLPUBLIC PatternFormatter : public FormatterBase
{
private:
ByteString maEditMask;
XubString maFieldString;
XubString maLiteralMask;
sal_uInt16 mnFormatFlags;
sal_Bool mbSameMask;
sal_Bool mbInPattKeyInput;
protected:
PatternFormatter();
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
SAL_DLLPRIVATE void ImplSetMask( const ByteString& rEditMask, const XubString& rLiteralMask );
SAL_DLLPRIVATE sal_Bool ImplIsSameMask() const { return mbSameMask; }
SAL_DLLPRIVATE sal_Bool& ImplGetInPattKeyInput() { return mbInPattKeyInput; }
public:
~PatternFormatter();
virtual void Reformat();
void SetMask( const ByteString& rEditMask,
const XubString& rLiteralMask );
const ByteString& GetEditMask() const { return maEditMask; }
const XubString& GetLiteralMask() const { return maLiteralMask; }
void SetFormatFlags( sal_uInt16 nFlags ) { mnFormatFlags = nFlags; }
sal_uInt16 GetFormatFlags() const { return mnFormatFlags; }
void SetString( const XubString& rStr );
XubString GetString() const;
sal_Bool IsStringModified() const { return !(GetString().Equals( maFieldString )); }
void SelectFixedFont();
};
// --------------------
// - NumericFormatter -
// --------------------
class VCL_DLLPUBLIC NumericFormatter : public FormatterBase
{
private:
SAL_DLLPRIVATE void ImplInit();
protected:
sal_Int64 mnFieldValue;
sal_Int64 mnLastValue;
sal_Int64 mnMin;
sal_Int64 mnMax;
sal_Int64 mnCorrectedValue;
sal_uInt16 mnType;
sal_uInt16 mnDecimalDigits;
sal_Bool mbThousandSep;
sal_Bool mbShowTrailingZeros;
// the members below are used in all derivatives of NumericFormatter
// not in NumericFormatter itself.
sal_Int64 mnSpinSize;
sal_Int64 mnFirst;
sal_Int64 mnLast;
protected:
NumericFormatter();
virtual XubString CreateFieldText( sal_Int64 nValue ) const;
void FieldUp();
void FieldDown();
void FieldFirst();
void FieldLast();
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
SAL_DLLPRIVATE sal_Bool ImplNumericReformat( const XubString& rStr, double& rValue, XubString& rOutStr );
SAL_DLLPRIVATE void ImplNewFieldValue( sal_Int64 nNewValue );
SAL_DLLPRIVATE void ImplSetUserValue( sal_Int64 nNewValue, Selection* pNewSelection = NULL );
public:
~NumericFormatter();
virtual void Reformat();
void SetMin( sal_Int64 nNewMin );
sal_Int64 GetMin() const { return mnMin; }
void SetMax( sal_Int64 nNewMax );
sal_Int64 GetMax() const { return mnMax; }
void SetFirst( sal_Int64 nNewFirst ) { mnFirst = nNewFirst; }
sal_Int64 GetFirst() const { return mnFirst; }
void SetLast( sal_Int64 nNewLast ) { mnLast = nNewLast; }
sal_Int64 GetLast() const { return mnLast; }
void SetSpinSize( sal_Int64 nNewSize ) { mnSpinSize = nNewSize; }
sal_Int64 GetSpinSize() const { return mnSpinSize; }
void SetDecimalDigits( sal_uInt16 nDigits );
sal_uInt16 GetDecimalDigits() const;
void SetUseThousandSep( sal_Bool b );
sal_Bool IsUseThousandSep() const { return mbThousandSep; }
void SetShowTrailingZeros( sal_Bool bShowTrailingZeros );
sal_Bool IsShowTrailingZeros() const { return mbShowTrailingZeros; }
void SetUserValue( sal_Int64 nNewValue );
virtual void SetValue( sal_Int64 nNewValue );
virtual sal_Int64 GetValue() const;
sal_Bool IsValueModified() const;
sal_Int64 GetCorrectedValue() const { return mnCorrectedValue; }
Fraction ConvertToFraction( sal_Int64 nValue );
sal_Int64 ConvertToLong( const Fraction& rValue );
sal_Int64 Normalize( sal_Int64 nValue ) const;
sal_Int64 Denormalize( sal_Int64 nValue ) const;
};
// -------------------
// - MetricFormatter -
// -------------------
class VCL_DLLPUBLIC MetricFormatter : public NumericFormatter
{
private:
SAL_DLLPRIVATE void ImplInit();
protected:
XubString maCustomUnitText;
XubString maCurUnitText;
sal_Int64 mnBaseValue;
FieldUnit meUnit;
Link maCustomConvertLink;
protected:
MetricFormatter();
virtual XubString CreateFieldText( sal_Int64 nValue ) const;
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
SAL_DLLPRIVATE sal_Bool ImplMetricReformat( const XubString& rStr, double& rValue, XubString& rOutStr );
public:
~MetricFormatter();
virtual void CustomConvert() = 0;
virtual void Reformat();
void SetUnit( FieldUnit meUnit );
FieldUnit GetUnit() const { return meUnit; }
void SetCustomUnitText( const XubString& rStr );
const XubString& GetCustomUnitText() const { return maCustomUnitText; }
const XubString& GetCurUnitText() const { return maCurUnitText; }
using NumericFormatter::SetMax;
void SetMax( sal_Int64 nNewMax, FieldUnit eInUnit );
using NumericFormatter::GetMax;
sal_Int64 GetMax( FieldUnit eOutUnit ) const;
using NumericFormatter::SetMin;
void SetMin( sal_Int64 nNewMin, FieldUnit eInUnit );
using NumericFormatter::GetMin;
sal_Int64 GetMin( FieldUnit eOutUnit ) const;
void SetBaseValue( sal_Int64 nNewBase, FieldUnit eInUnit = FUNIT_NONE );
sal_Int64 GetBaseValue( FieldUnit eOutUnit = FUNIT_NONE ) const;
virtual void SetValue( sal_Int64 nNewValue, FieldUnit eInUnit );
virtual void SetValue( sal_Int64 nValue );
using NumericFormatter::SetUserValue;
void SetUserValue( sal_Int64 nNewValue, FieldUnit eInUnit );
virtual sal_Int64 GetValue( FieldUnit eOutUnit ) const;
virtual sal_Int64 GetValue() const;
using NumericFormatter::GetCorrectedValue;
sal_Int64 GetCorrectedValue( FieldUnit eOutUnit ) const;
void SetCustomConvertHdl( const Link& rLink ) { maCustomConvertLink = rLink; }
const Link& GetCustomConvertHdl() const { return maCustomConvertLink; }
};
// ---------------------
// - CurrencyFormatter -
// ---------------------
class VCL_DLLPUBLIC CurrencyFormatter : public NumericFormatter
{
private:
String maCurrencySymbol;
SAL_DLLPRIVATE void ImplInit();
protected:
CurrencyFormatter();
virtual XubString CreateFieldText( sal_Int64 nValue ) const;
SAL_DLLPRIVATE sal_Bool ImplCurrencyReformat( const XubString& rStr, XubString& rOutStr );
public:
~CurrencyFormatter();
virtual void Reformat();
void SetCurrencySymbol( const String& rStr );
String GetCurrencySymbol() const;
virtual void SetValue( sal_Int64 nNewValue );
virtual sal_Int64 GetValue() const;
};
// -----------------
// - DateFormatter -
// -----------------
class VCL_DLLPUBLIC DateFormatter : public FormatterBase
{
private:
CalendarWrapper* mpCalendarWrapper;
Date maFieldDate;
Date maLastDate;
Date maMin;
Date maMax;
Date maCorrectedDate;
sal_Bool mbLongFormat;
sal_Bool mbEmptyDate;
sal_Bool mbShowDateCentury;
sal_uInt16 mnDateFormat;
sal_uLong mnExtDateFormat;
sal_Bool mbEnforceValidValue;
SAL_DLLPRIVATE void ImplInit();
protected:
DateFormatter();
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
SAL_DLLPRIVATE const Date& ImplGetFieldDate() const { return maFieldDate; }
SAL_DLLPRIVATE sal_Bool ImplDateReformat( const XubString& rStr, XubString& rOutStr,
const AllSettings& rSettings );
SAL_DLLPRIVATE void ImplSetUserDate( const Date& rNewDate,
Selection* pNewSelection = NULL );
SAL_DLLPRIVATE XubString ImplGetDateAsText( const Date& rDate,
const AllSettings& rSettings ) const;
SAL_DLLPRIVATE void ImplNewFieldValue( const Date& rDate );
CalendarWrapper& GetCalendarWrapper() const;
SAL_DLLPRIVATE sal_Bool ImplAllowMalformedInput() const;
public:
~DateFormatter();
virtual void Reformat();
virtual void ReformatAll();
virtual void SetLocale( const ::com::sun::star::lang::Locale& rLocale );
void SetExtDateFormat( ExtDateFieldFormat eFormat );
ExtDateFieldFormat GetExtDateFormat( sal_Bool bResolveSystemFormat = sal_False ) const;
void SetMin( const Date& rNewMin );
const Date& GetMin() const { return maMin; }
void SetMax( const Date& rNewMax );
const Date& GetMax() const { return maMax; }
// --------------------------------------------------------------
// MT: Remove these methods too, ExtDateFormat should be enough!
// What should happen if using DDMMYYYY, but ShowCentury=sal_False?
// --------------------------------------------------------------
void SetLongFormat( sal_Bool bLong );
sal_Bool IsLongFormat() const { return mbLongFormat; }
void SetShowDateCentury( sal_Bool bShowCentury );
sal_Bool IsShowDateCentury() const { return mbShowDateCentury; }
// --------------------------------------------------------------
void SetDate( const Date& rNewDate );
void SetUserDate( const Date& rNewDate );
Date GetDate() const;
Date GetRealDate() const;
sal_Bool IsDateModified() const;
void SetEmptyDate();
sal_Bool IsEmptyDate() const;
Date GetCorrectedDate() const { return maCorrectedDate; }
void ResetLastDate() { maLastDate = Date( 0, 0, 0 ); }
static void ExpandCentury( Date& rDate );
static void ExpandCentury( Date& rDate, sal_uInt16 nTwoDigitYearStart );
static Date GetInvalidDate() { return Date( 0, 0, 0 ); }
/** enables or disables the enforcement of valid values
If this is set to <TRUE/> (which is the default), then GetDate will always return a valid
date, no matter whether the current text can really be interpreted as date. (Note: this
is the compatible bahavior).
If this is set to <FALSE/>, the GetDate will return GetInvalidDate, in case the current text
cannot be interpreted as date.
In addition, if this is set to <FALSE/>, the text in the field will <em>not</em> be corrected
when the control loses the focus - instead, the invalid input will be preserved.
*/
void EnforceValidValue( sal_Bool _bEnforce ) { mbEnforceValidValue = _bEnforce; }
inline sal_Bool IsEnforceValidValue( ) const { return mbEnforceValidValue; }
};
// -----------------
// - TimeFormatter -
// -----------------
class VCL_DLLPUBLIC TimeFormatter : public FormatterBase
{
private:
Time maLastTime;
Time maMin;
Time maMax;
Time maCorrectedTime;
TimeFieldFormat meFormat;
sal_uInt16 mnTimeFormat;
sal_Bool mbDuration;
sal_Bool mbEmptyTime;
sal_Bool mbEnforceValidValue;
SAL_DLLPRIVATE void ImplInit();
protected:
Time maFieldTime;
TimeFormatter();
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
SAL_DLLPRIVATE sal_Bool ImplTimeReformat( const XubString& rStr, XubString& rOutStr );
SAL_DLLPRIVATE void ImplNewFieldValue( const Time& rTime );
SAL_DLLPRIVATE void ImplSetUserTime( const Time& rNewTime, Selection* pNewSelection = NULL );
SAL_DLLPRIVATE sal_Bool ImplAllowMalformedInput() const;
public:
enum TimeFormat {
HOUR_12,
HOUR_24
};
~TimeFormatter();
virtual void Reformat();
virtual void ReformatAll();
void SetMin( const Time& rNewMin );
const Time& GetMin() const { return maMin; }
void SetMax( const Time& rNewMax );
const Time& GetMax() const { return maMax; }
void SetTimeFormat( TimeFormat eNewFormat );
TimeFormat GetTimeFormat() const;
void SetFormat( TimeFieldFormat eNewFormat );
TimeFieldFormat GetFormat() const { return meFormat; }
void SetDuration( sal_Bool mbDuration );
sal_Bool IsDuration() const { return mbDuration; }
void SetTime( const Time& rNewTime );
void SetUserTime( const Time& rNewTime );
Time GetTime() const;
Time GetRealTime() const;
sal_Bool IsTimeModified() const;
void SetEmptyTime() { FormatterBase::SetEmptyFieldValue(); }
sal_Bool IsEmptyTime() const { return FormatterBase::IsEmptyFieldValue(); }
Time GetCorrectedTime() const { return maCorrectedTime; }
static Time GetInvalidTime() { return Time( 99, 99, 99 ); }
/** enables or disables the enforcement of valid values
If this is set to <TRUE/> (which is the default), then GetTime will always return a valid
time, no matter whether the current text can really be interpreted as time. (Note: this
is the compatible bahavior).
If this is set to <FALSE/>, the GetTime will return GetInvalidTime, in case the current text
cannot be interpreted as time.
In addition, if this is set to <FALSE/>, the text in the field will <em>not</em> be corrected
when the control loses the focus - instead, the invalid input will be preserved.
*/
void EnforceValidValue( sal_Bool _bEnforce ) { mbEnforceValidValue = _bEnforce; }
inline sal_Bool IsEnforceValidValue( ) const { return mbEnforceValidValue; }
};
// ----------------
// - PatternField -
// ----------------
class VCL_DLLPUBLIC PatternField : public SpinField, public PatternFormatter
{
public:
explicit PatternField( Window* pParent, WinBits nWinStyle );
explicit PatternField( Window* pParent, const ResId& );
virtual ~PatternField();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void Modify();
};
// ----------------
// - NumericField -
// ----------------
class VCL_DLLPUBLIC NumericField : public SpinField, public NumericFormatter
{
protected:
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
public:
explicit NumericField( Window* pParent, WinBits nWinStyle );
explicit NumericField( Window* pParent, const ResId& );
virtual ~NumericField();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void Modify();
virtual void Up();
virtual void Down();
virtual void First();
virtual void Last();
};
// ----------------
// - MetricField -
// ----------------
class VCL_DLLPUBLIC MetricField : public SpinField, public MetricFormatter
{
protected:
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
public:
explicit MetricField( Window* pParent, WinBits nWinStyle );
explicit MetricField( Window* pParent, const ResId& );
virtual ~MetricField();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void Modify();
virtual void Up();
virtual void Down();
virtual void First();
virtual void Last();
virtual void CustomConvert();
void SetFirst( sal_Int64 nNewFirst, FieldUnit eInUnit );
inline void SetFirst(sal_Int64 first) { SetFirst(first, FUNIT_NONE); }
sal_Int64 GetFirst( FieldUnit eOutUnit ) const;
inline sal_Int64 GetFirst() const { return GetFirst(FUNIT_NONE); }
void SetLast( sal_Int64 nNewLast, FieldUnit eInUnit );
inline void SetLast(sal_Int64 last) { SetLast(last, FUNIT_NONE); }
sal_Int64 GetLast( FieldUnit eOutUnit ) const;
inline sal_Int64 GetLast() const { return GetLast(FUNIT_NONE); }
static void SetDefaultUnit( FieldUnit eDefaultUnit );
static FieldUnit GetDefaultUnit();
static sal_Int64 ConvertValue( sal_Int64 nValue, sal_Int64 mnBaseValue, sal_uInt16 nDecDigits,
FieldUnit eInUnit, FieldUnit eOutUnit );
static sal_Int64 ConvertValue( sal_Int64 nValue, sal_uInt16 nDecDigits,
FieldUnit eInUnit, MapUnit eOutUnit );
static sal_Int64 ConvertValue( sal_Int64 nValue, sal_uInt16 nDecDigits,
MapUnit eInUnit, FieldUnit eOutUnit );
// for backwards compatibility
// caution: conversion to double loses precision
static double ConvertDoubleValue( double nValue, sal_Int64 mnBaseValue, sal_uInt16 nDecDigits,
FieldUnit eInUnit, FieldUnit eOutUnit );
static double ConvertDoubleValue( double nValue, sal_uInt16 nDecDigits,
FieldUnit eInUnit, MapUnit eOutUnit );
static double ConvertDoubleValue( double nValue, sal_uInt16 nDecDigits,
MapUnit eInUnit, FieldUnit eOutUnit );
// for backwards compatibility
// caution: conversion to double loses precision
static double ConvertDoubleValue( sal_Int64 nValue, sal_Int64 nBaseValue, sal_uInt16 nDecDigits,
FieldUnit eInUnit, FieldUnit eOutUnit )
{ return ConvertDoubleValue( static_cast<double>(nValue), nBaseValue, nDecDigits, eInUnit, eOutUnit ); }
static double ConvertDoubleValue( sal_Int64 nValue, sal_uInt16 nDecDigits,
FieldUnit eInUnit, MapUnit eOutUnit )
{ return ConvertDoubleValue( static_cast<double>(nValue), nDecDigits, eInUnit, eOutUnit ); }
static double ConvertDoubleValue( sal_Int64 nValue, sal_uInt16 nDecDigits,
MapUnit eInUnit, FieldUnit eOutUnit )
{ return ConvertDoubleValue( static_cast<double>(nValue), nDecDigits, eInUnit, eOutUnit ); }
};
// -----------------
// - CurrencyField -
// -----------------
class VCL_DLLPUBLIC CurrencyField : public SpinField, public CurrencyFormatter
{
protected:
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
public:
explicit CurrencyField( Window* pParent, WinBits nWinStyle );
explicit CurrencyField( Window* pParent, const ResId& );
virtual ~CurrencyField();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void Modify();
virtual void Up();
virtual void Down();
virtual void First();
virtual void Last();
};
// -------------
// - DateField -
// -------------
class VCL_DLLPUBLIC DateField : public SpinField, public DateFormatter
{
private:
Date maFirst;
Date maLast;
protected:
SAL_DLLPRIVATE void ImplDateSpinArea( sal_Bool bUp );
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
public:
explicit DateField( Window* pParent, WinBits nWinStyle );
explicit DateField( Window* pParent, const ResId& );
virtual ~DateField();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void Modify();
virtual void Up();
virtual void Down();
virtual void First();
virtual void Last();
void SetFirst( const Date& rNewFirst ) { maFirst = rNewFirst; }
Date GetFirst() const { return maFirst; }
void SetLast( const Date& rNewLast ) { maLast = rNewLast; }
Date GetLast() const { return maLast; }
};
// -------------
// - TimeField -
// -------------
class VCL_DLLPUBLIC TimeField : public SpinField, public TimeFormatter
{
private:
Time maFirst;
Time maLast;
protected:
SAL_DLLPRIVATE void ImplTimeSpinArea( sal_Bool bUp );
SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
public:
explicit TimeField( Window* pParent, WinBits nWinStyle );
explicit TimeField( Window* pParent, const ResId& );
virtual ~TimeField();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void Modify();
virtual void Up();
virtual void Down();
virtual void First();
virtual void Last();
void SetFirst( const Time& rNewFirst ) { maFirst = rNewFirst; }
Time GetFirst() const { return maFirst; }
void SetLast( const Time& rNewLast ) { maLast = rNewLast; }
Time GetLast() const { return maLast; }
void SetExtFormat( ExtTimeFieldFormat eFormat );
};
// --------------
// - PatternBox -
// --------------
class VCL_DLLPUBLIC PatternBox : public ComboBox, public PatternFormatter
{
public:
explicit PatternBox( Window* pParent, WinBits nWinStyle );
explicit PatternBox( Window* pParent, const ResId& );
virtual ~PatternBox();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void Modify();
virtual void ReformatAll();
void InsertString( const XubString& rStr,
sal_uInt16 nPos = COMBOBOX_APPEND );
void RemoveString( const XubString& rStr );
using PatternFormatter::GetString;
XubString GetString( sal_uInt16 nPos ) const;
sal_uInt16 GetStringPos( const XubString& rStr ) const;
};
// --------------
// - NumericBox -
// --------------
class VCL_DLLPUBLIC NumericBox : public ComboBox, public NumericFormatter
{
public:
explicit NumericBox( Window* pParent, WinBits nWinStyle );
explicit NumericBox( Window* pParent, const ResId& );
virtual ~NumericBox();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void Modify();
virtual void ReformatAll();
void InsertValue( sal_Int64 nValue, sal_uInt16 nPos = COMBOBOX_APPEND );
void RemoveValue( sal_Int64 nValue );
using NumericFormatter::GetValue;
sal_Int64 GetValue( sal_uInt16 nPos ) const;
sal_uInt16 GetValuePos( sal_Int64 nPos ) const;
};
// -------------
// - MetricBox -
// -------------
class VCL_DLLPUBLIC MetricBox : public ComboBox, public MetricFormatter
{
public:
explicit MetricBox( Window* pParent, WinBits nWinStyle );
explicit MetricBox( Window* pParent, const ResId& );
virtual ~MetricBox();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void Modify();
virtual void CustomConvert();
virtual void ReformatAll();
void InsertValue( sal_Int64 nValue, FieldUnit eInUnit = FUNIT_NONE,
sal_uInt16 nPos = COMBOBOX_APPEND );
void RemoveValue( sal_Int64 nValue, FieldUnit eInUnit = FUNIT_NONE );
sal_Int64 GetValue( sal_uInt16 nPos, FieldUnit eOutUnit = FUNIT_NONE ) const;
sal_uInt16 GetValuePos( sal_Int64 nValue,
FieldUnit eInUnit = FUNIT_NONE ) const;
// Needed, because GetValue() with nPos hide these functions
virtual sal_Int64 GetValue( FieldUnit eOutUnit ) const;
virtual sal_Int64 GetValue() const;
};
// ---------------
// - CurrencyBox -
// ---------------
class VCL_DLLPUBLIC CurrencyBox : public ComboBox, public CurrencyFormatter
{
public:
explicit CurrencyBox( Window* pParent, WinBits nWinStyle );
explicit CurrencyBox( Window* pParent, const ResId& );
virtual ~CurrencyBox();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void Modify();
virtual void ReformatAll();
void InsertValue( sal_Int64 nValue, sal_uInt16 nPos = COMBOBOX_APPEND );
void RemoveValue( sal_Int64 nValue );
sal_Int64 GetValue( sal_uInt16 nPos ) const;
sal_uInt16 GetValuePos( sal_Int64 nValue ) const;
// Needed, because GetValue() with nPos hide this function
virtual sal_Int64 GetValue() const;
};
// -----------
// - DateBox -
// -----------
class VCL_DLLPUBLIC DateBox : public ComboBox, public DateFormatter
{
public:
explicit DateBox( Window* pParent, WinBits nWinStyle );
explicit DateBox( Window* pParent, const ResId& );
virtual ~DateBox();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void Modify();
virtual void ReformatAll();
void InsertDate( const Date& rDate, sal_uInt16 nPos = COMBOBOX_APPEND );
void RemoveDate( const Date& rDate );
using DateFormatter::GetDate;
Date GetDate( sal_uInt16 nPos ) const;
sal_uInt16 GetDatePos( const Date& rDate ) const;
};
// -----------
// - TimeBox -
// -----------
class VCL_DLLPUBLIC TimeBox : public ComboBox, public TimeFormatter
{
public:
explicit TimeBox( Window* pParent, WinBits nWinStyle );
explicit TimeBox( Window* pParent, const ResId& );
virtual ~TimeBox();
virtual long PreNotify( NotifyEvent& rNEvt );
virtual long Notify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
virtual void Modify();
virtual void ReformatAll();
void InsertTime( const Time& rTime, sal_uInt16 nPos = COMBOBOX_APPEND );
void RemoveTime( const Time& rTime );
using TimeFormatter::GetTime;
Time GetTime( sal_uInt16 nPos ) const;
sal_uInt16 GetTimePos( const Time& rTime ) const;
};
#endif // _SV_FIELD_HXX