summaryrefslogtreecommitdiff
path: root/cui/source/tabpages/numfmt.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/tabpages/numfmt.cxx')
-rw-r--r--cui/source/tabpages/numfmt.cxx1849
1 files changed, 0 insertions, 1849 deletions
diff --git a/cui/source/tabpages/numfmt.cxx b/cui/source/tabpages/numfmt.cxx
deleted file mode 100644
index b92831e41..000000000
--- a/cui/source/tabpages/numfmt.cxx
+++ /dev/null
@@ -1,1849 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// include ---------------------------------------------------------------
-#include <svl/eitem.hxx>
-#include <svl/intitem.hxx>
-#include <sfx2/objsh.hxx>
-#include <vcl/svapp.hxx>
-#include <unotools/localedatawrapper.hxx>
-#include <i18npool/lang.h>
-#include <svx/dialogs.hrc>
-#define _SVSTDARR_STRINGS
-#define _SVSTDARR_STRINGSDTOR
-#include <svl/svstdarr.hxx>
-#include <svtools/colorcfg.hxx>
-
-#define _SVX_NUMFMT_CXX
-
-#include <cuires.hrc>
-#include "numfmt.hrc"
-
-#include <svx/numinf.hxx>
-
-#include "numfmt.hxx"
-#include <svx/numfmtsh.hxx>
-#include <dialmgr.hxx>
-#include <sfx2/request.hxx>
-#include <sfx2/app.hxx>
-#include <sfx2/basedlgs.hxx>
-#include "svx/flagsdef.hxx"
-
-#define NUMKEY_UNDEFINED SAL_MAX_UINT32
-
-// static ----------------------------------------------------------------
-
-static sal_uInt16 pRanges[] =
-{
- SID_ATTR_NUMBERFORMAT_VALUE,
- SID_ATTR_NUMBERFORMAT_INFO,
- SID_ATTR_NUMBERFORMAT_NOLANGUAGE,
- SID_ATTR_NUMBERFORMAT_NOLANGUAGE,
- SID_ATTR_NUMBERFORMAT_ONE_AREA,
- SID_ATTR_NUMBERFORMAT_ONE_AREA,
- SID_ATTR_NUMBERFORMAT_SOURCE,
- SID_ATTR_NUMBERFORMAT_SOURCE,
- 0
-};
-
-/*************************************************************************
-#* Methode: SvxNumberPreviewImpl
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberPreview
-#* Funktion: Konstruktor der Klasse SvxNumberPreviewImpl
-#* Input: Fenster, Resource-ID
-#* Output: ---
-#*
-#************************************************************************/
-
-SvxNumberPreviewImpl::SvxNumberPreviewImpl( Window* pParent, const ResId& rResId ) :
-
- Window( pParent, rResId )
-
-{
- Font aFont( GetFont() );
- aFont.SetTransparent( sal_True );
- aFont.SetColor( Application::GetSettings().GetStyleSettings().GetFieldColor() );
- SetFont( aFont );
- InitSettings( sal_True, sal_True );
- SetBorderStyle( WINDOW_BORDER_MONO );
-}
-
-/*************************************************************************
-#* Methode: SvxNumberPreviewImpl
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberPreview
-#* Funktion: Destruktor der Klasse SvxNumberPreviewImpl
-#* Input: ---
-#* Output: ---
-#*
-#************************************************************************/
-
-SvxNumberPreviewImpl::~SvxNumberPreviewImpl()
-{
-}
-
-/*************************************************************************
-#* Methode: NotifyChange
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberPreviewImpl
-#* Funktion: Funktion fuer das Aendern des Preview- Strings
-#* Input: String, Farbe
-#* Output: ---
-#*
-#************************************************************************/
-
-void SvxNumberPreviewImpl::NotifyChange( const String& rPrevStr,
- const Color* pColor )
-{
- aPrevStr = rPrevStr;
- svtools::ColorConfig aColorConfig;
- Color aWindowTextColor( aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor );
- aPrevCol = pColor ? *pColor : aWindowTextColor;
- Invalidate();
- Update();
-}
-
-/*************************************************************************
-#* Methode: Paint
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberPreviewImpl
-#* Funktion: Funktion fuer das neu zeichnen des Fensters.
-#* Input: ---
-#* Output: ---
-#*
-#************************************************************************/
-
-void SvxNumberPreviewImpl::Paint( const Rectangle& )
-{
- Font aDrawFont = GetFont();
- Size aSzWnd = GetOutputSizePixel();
- Point aPosText = Point( (aSzWnd.Width() - GetTextWidth( aPrevStr )) /2,
- (aSzWnd.Height() - GetTextHeight())/2 );
-
- aDrawFont.SetColor( aPrevCol );
- SetFont( aDrawFont );
- DrawText( aPosText, aPrevStr );
-}
-
-// -----------------------------------------------------------------------
-
-void SvxNumberPreviewImpl::InitSettings( sal_Bool bForeground, sal_Bool bBackground )
-{
- const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
-
- if ( bForeground )
- {
- svtools::ColorConfig aColorConfig;
- Color aTextColor( aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor );
-
- if ( IsControlForeground() )
- aTextColor = GetControlForeground();
- SetTextColor( aTextColor );
- }
-
- if ( bBackground )
- {
- if ( IsControlBackground() )
- SetBackground( GetControlBackground() );
- else
- SetBackground( rStyleSettings.GetWindowColor() );
- }
- Invalidate();
-}
-
-// -----------------------------------------------------------------------
-
-void SvxNumberPreviewImpl::StateChanged( StateChangedType nType )
-{
- if ( nType == STATE_CHANGE_CONTROLFOREGROUND )
- InitSettings( sal_True, sal_False );
- else if ( nType == STATE_CHANGE_CONTROLBACKGROUND )
- InitSettings( sal_False, sal_True );
-
- Window::StateChanged( nType );
-}
-
-// -----------------------------------------------------------------------
-
-void SvxNumberPreviewImpl::DataChanged( const DataChangedEvent& rDCEvt )
-{
- Window::DataChanged( rDCEvt );
-
- if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
- InitSettings( sal_True, sal_True );
-}
-
-// class SvxNumberFormatTabPage ------------------------------------------
-
-#define REMOVE_DONTKNOW() \
- if ( !aFtLanguage.IsEnabled() ) \
- { \
- aFtLanguage .Enable(); \
- aLbLanguage .Enable(); \
- aLbLanguage .SelectLanguage( pNumFmtShell->GetCurLanguage() ); \
- }
-
-#define HDL(hdl) LINK( this, SvxNumberFormatTabPage, hdl )
-
-#include <layout/layout-pre.hxx>
-
-#if ENABLE_LAYOUT
-#undef CUI_RES
-#define CUI_RES(x) #x
-#define CUI_RES_PLAIN(x) ResId (x, CUI_MGR ())
-#define THIS_CUI_RES(x) this, #x
-#undef SfxTabPage
-#define SfxTabPage( parent, id, args ) SfxTabPage( parent, "number-format.xml", id, &args )
-#else /* !ENABLE_LAYOUT */
-#define CUI_RES_PLAIN CUI_RES
-#define THIS_CUI_RES CUI_RES
-#endif /* !ENABLE_LAYOUT */
-
-SvxNumberFormatTabPage::SvxNumberFormatTabPage( Window* pParent,
- const SfxItemSet& rCoreAttrs )
-
- : SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_NUMBERFORMAT ), rCoreAttrs ),
-
- aFtCategory ( this, CUI_RES( FT_CATEGORY ) ),
- aLbCategory ( this, CUI_RES( LB_CATEGORY ) ),
- aFtFormat ( this, CUI_RES( FT_FORMAT ) ),
- aLbCurrency ( this, CUI_RES( LB_CURRENCY) ),
- aLbFormat ( this, CUI_RES( LB_FORMAT ) ),
- aFtLanguage ( this, CUI_RES( FT_LANGUAGE ) ),
- aLbLanguage ( this, CUI_RES( LB_LANGUAGE ), sal_False ),
- aCbSourceFormat ( this, CUI_RES( CB_SOURCEFORMAT ) ),
-#if ENABLE_LAYOUT
- aWndPreview ( LAYOUT_THIS_WINDOW(this), CUI_RES_PLAIN( WND_NUMBER_PREVIEW ) ),
-#else
- aWndPreview ( this, CUI_RES_PLAIN( WND_NUMBER_PREVIEW ) ),
-#endif
- aFlOptions ( this, CUI_RES( FL_OPTIONS ) ),
- aFtDecimals ( this, CUI_RES( FT_DECIMALS ) ),
- aEdDecimals ( this, CUI_RES( ED_DECIMALS ) ),
- aBtnNegRed ( this, CUI_RES( BTN_NEGRED ) ),
- aFtLeadZeroes ( this, CUI_RES( FT_LEADZEROES ) ),
- aEdLeadZeroes ( this, CUI_RES( ED_LEADZEROES ) ),
- aBtnThousand ( this, CUI_RES( BTN_THOUSAND ) ),
-
- aFtEdFormat ( this, CUI_RES( FT_EDFORMAT ) ),
- aEdFormat ( this, CUI_RES( ED_FORMAT ) ),
- aIbAdd ( this, CUI_RES( IB_ADD ) ),
- aIbInfo ( this, CUI_RES( IB_INFO ) ),
- aIbRemove ( this, CUI_RES( IB_REMOVE ) ),
- aFtComment ( this, CUI_RES( FT_COMMENT ) ),
- aEdComment ( this, CUI_RES( ED_COMMENT ) ),
-
- pNumItem ( NULL ),
- pNumFmtShell ( NULL ),
- nInitFormat ( ULONG_MAX ),
-
- sAutomaticEntry ( THIS_CUI_RES( STR_AUTO_ENTRY)),
- pLastActivWindow( NULL )
-{
-#if ENABLE_LAYOUT
- aLbFormat.Clear ();
-#endif /* ENABLE_LAYOUT */
-
- Init_Impl();
- SetExchangeSupport(); // diese Page braucht ExchangeSupport
- FreeResource();
- nFixedCategory=-1;
-}
-
-SvxNumberFormatTabPage::~SvxNumberFormatTabPage()
-{
- delete pNumFmtShell;
- delete pNumItem;
-}
-
-void SvxNumberFormatTabPage::Init_Impl()
-{
- ImageList aIconList( CUI_RES_PLAIN ( IL_ICON ) );
-
- bNumItemFlag=sal_True;
- bOneAreaFlag=sal_False;
-
- nCatHeight=aLbCategory.GetSizePixel().Height();
-
- nCurFormatY =aLbFormat.GetPosPixel().Y();
- nCurFormatHeight=aLbFormat.GetSizePixel().Height();
- nStdFormatY =aLbCurrency.GetPosPixel().Y();
- nStdFormatHeight=nCurFormatY-nStdFormatY+nCurFormatHeight;
-
- aIbAdd. SetModeImage( aIconList.GetImage( IID_ADD ) );
- aIbRemove. SetModeImage( aIconList.GetImage( IID_REMOVE ) );
- aIbInfo. SetModeImage( aIconList.GetImage( IID_INFO ) );
-
- aIbAdd.Enable(sal_False );
- aIbRemove.Enable(sal_False );
- aIbInfo.Enable(sal_False );
-
- aEdComment.SetText(aLbCategory.GetEntry(1)); //String fuer Benutzerdefiniert
- //holen
- aEdComment.Hide();
-
- aCbSourceFormat.Check( sal_False );
- aCbSourceFormat.Disable();
- aCbSourceFormat.Hide();
-
-// Handler verbinden
- Link aLink = LINK( this, SvxNumberFormatTabPage, SelFormatHdl_Impl );
-
- aLbCategory .SetSelectHdl( aLink );
- aLbFormat .SetSelectHdl( aLink );
- aLbLanguage .SetSelectHdl( aLink );
- aLbCurrency .SetSelectHdl( aLink );
- aCbSourceFormat .SetClickHdl( aLink );
-
- aLink = LINK( this, SvxNumberFormatTabPage, OptHdl_Impl );
-
- aEdDecimals .SetModifyHdl( aLink );
- aEdLeadZeroes .SetModifyHdl( aLink );
- aBtnNegRed .SetClickHdl( aLink );
- aBtnThousand .SetClickHdl( aLink );
- aLbFormat .SetDoubleClickHdl( HDL( DoubleClickHdl_Impl ) );
- aEdFormat .SetModifyHdl( HDL( EditHdl_Impl ) );
- aIbAdd.SetClickHdl( HDL( ClickHdl_Impl ) );
- aIbRemove.SetClickHdl( HDL( ClickHdl_Impl ) );
- aIbInfo.SetClickHdl( HDL( ClickHdl_Impl ) );
-
- aLink = LINK( this, SvxNumberFormatTabPage, LostFocusHdl_Impl);
-
- aEdComment .SetLoseFocusHdl( aLink);
- aResetWinTimer .SetTimeoutHdl(LINK( this, SvxNumberFormatTabPage, TimeHdl_Impl));
- aResetWinTimer .SetTimeout( 10);
-
- // Sprachen-ListBox initialisieren
-
- aLbLanguage.InsertLanguage( LANGUAGE_SYSTEM );
- // Don't list ambiguous locales where we won't be able to convert the
- // LanguageType back to an identical Language_Country name and therefore
- // couldn't load the i18n LocaleData. Show DebugMsg in non-PRODUCT version.
- ::com::sun::star::uno::Sequence< sal_uInt16 > xLang =
- LocaleDataWrapper::getInstalledLanguageTypes();
- sal_Int32 nCount = xLang.getLength();
- for ( sal_Int32 i=0; i<nCount; i++ )
- {
- aLbLanguage.InsertLanguage( xLang[i] );
- }
-
- aIbAdd.SetAccessibleRelationLabeledBy( &aFtEdFormat );
- aIbInfo.SetAccessibleRelationLabeledBy( &aFtEdFormat );
- aIbRemove.SetAccessibleRelationLabeledBy( &aFtEdFormat );
- aIbAdd.SetAccessibleRelationMemberOf( &aIbAdd );
- aIbInfo.SetAccessibleRelationMemberOf( &aIbInfo );
- aIbRemove.SetAccessibleRelationMemberOf( &aIbRemove );
-}
-
-/*************************************************************************
-#* Methode: GetRanges
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Liefert Bereichsangaben zurueck.
-#* Input: ---
-#* Output: Bereich
-#*
-#************************************************************************/
-
-sal_uInt16* SvxNumberFormatTabPage::GetRanges()
-{
- return pRanges;
-}
-
-
-/*************************************************************************
-#* Methode: Create
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Erzeugt eine neue Zahlenformat- Seite.
-#* Input: Fenster, SfxItemSet
-#* Output: neue TabPage
-#*
-#************************************************************************/
-
-SfxTabPage* SvxNumberFormatTabPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet )
-{
- return ( new SvxNumberFormatTabPage( pParent, rAttrSet ) );
-}
-
-
-/*************************************************************************
-#* Methode: Reset
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Die Attribute des Dialogs werden mit Hilfe
-#* des Itemsets neu eingestellt.
-#* Input: SfxItemSet
-#* Output: ---
-#*
-#************************************************************************/
-
-void SvxNumberFormatTabPage::Reset( const SfxItemSet& rSet )
-{
- const SfxUInt32Item* pValFmtAttr = NULL;
- const SfxPoolItem* pItem = NULL;
- const SfxBoolItem* pAutoEntryAttr = NULL;
-
- sal_uInt16 nCatLbSelPos = 0;
- sal_uInt16 nFmtLbSelPos = 0;
- LanguageType eLangType = LANGUAGE_DONTKNOW;
- SvxDelStrgs aFmtEntryList;
- SvxNumberValueType eValType = SVX_VALUE_TYPE_UNDEFINED;
- double nValDouble = 0;
- String aValString;
- SfxItemState eState = SFX_ITEM_DONTCARE;
-
-
- eState = rSet.GetItemState( GetWhich( SID_ATTR_NUMBERFORMAT_NOLANGUAGE ),sal_True,&pItem);
-
- if(eState==SFX_ITEM_SET)
- {
- const SfxBoolItem* pBoolLangItem = (const SfxBoolItem*)
- GetItem( rSet, SID_ATTR_NUMBERFORMAT_NOLANGUAGE);
-
- if(pBoolLangItem!=NULL && pBoolLangItem->GetValue())
- {
- HideLanguage();
- }
- else
- {
- HideLanguage(sal_False);
- }
-
- }
-
- eState = rSet.GetItemState( GetWhich( SID_ATTR_NUMBERFORMAT_INFO ),sal_True,&pItem);
-
- if(eState==SFX_ITEM_SET)
- {
- if(pNumItem==NULL)
- {
- bNumItemFlag=sal_True;
- pNumItem= (SvxNumberInfoItem *) pItem->Clone();
- }
- else
- {
- bNumItemFlag=sal_False;
- }
- }
- else
- {
- bNumItemFlag=sal_False;
- }
-
-
- eState = rSet.GetItemState( GetWhich( SID_ATTR_NUMBERFORMAT_ONE_AREA ));
-
- if(eState==SFX_ITEM_SET)
- {
- const SfxBoolItem* pBoolItem = (const SfxBoolItem*)
- GetItem( rSet, SID_ATTR_NUMBERFORMAT_ONE_AREA);
-
- if(pBoolItem!=NULL)
- {
- bOneAreaFlag= pBoolItem->GetValue();
- }
- }
-
- eState = rSet.GetItemState( GetWhich( SID_ATTR_NUMBERFORMAT_SOURCE ) );
-
- if ( eState == SFX_ITEM_SET )
- {
- const SfxBoolItem* pBoolItem = (const SfxBoolItem*)
- GetItem( rSet, SID_ATTR_NUMBERFORMAT_SOURCE );
- if ( pBoolItem )
- aCbSourceFormat.Check( pBoolItem->GetValue() );
- else
- aCbSourceFormat.Check( sal_False );
- aCbSourceFormat.Enable();
- aCbSourceFormat.Show();
- }
- else
- {
- sal_Bool bInit = sal_False; // set to sal_True for debug test
- aCbSourceFormat.Check( bInit );
- aCbSourceFormat.Enable( bInit );
- aCbSourceFormat.Show( bInit );
- }
-
- // pNumItem muss von aussen gesetzt worden sein!
- DBG_ASSERT( pNumItem, "No NumberInfo, no NumberFormatter, good bye.CRASH. :-(" );
-
- // aktuellen Zahlenformat-Tabellenindex holen
- eState = rSet.GetItemState( GetWhich( SID_ATTR_NUMBERFORMAT_VALUE ) );
-
- if ( SFX_ITEM_DONTCARE != eState )
- pValFmtAttr = (const SfxUInt32Item*)
- GetItem( rSet, SID_ATTR_NUMBERFORMAT_VALUE );
-
- eValType = pNumItem->GetValueType();
-
- switch ( eValType )
- {
- case SVX_VALUE_TYPE_STRING:
- aValString = pNumItem->GetValueString();
- break;
- case SVX_VALUE_TYPE_NUMBER:
- // #50441# string may be set in addition to the value
- aValString = pNumItem->GetValueString();
- nValDouble = pNumItem->GetValueDouble();
- break;
- case SVX_VALUE_TYPE_UNDEFINED:
- default:
- break;
- }
-
- // nun sind alle Informationen fuer die Formatierer-Shell beisammen:
-
- if ( pNumFmtShell )
- delete pNumFmtShell; // ggF. alte Shell loeschen (==Reset)
-
- nInitFormat = ( pValFmtAttr ) // Init-Key merken
- ? pValFmtAttr->GetValue() // (fuer FillItemSet())
- : ULONG_MAX; // == DONT_KNOW
-
-
- if ( eValType == SVX_VALUE_TYPE_STRING )
- pNumFmtShell =SvxNumberFormatShell::Create(
- pNumItem->GetNumberFormatter(),
- (pValFmtAttr) ? nInitFormat : 0L,
- eValType,
- aValString );
- else
- pNumFmtShell =SvxNumberFormatShell::Create(
- pNumItem->GetNumberFormatter(),
- (pValFmtAttr) ? nInitFormat : 0L,
- eValType,
- nValDouble,
- &aValString );
-
- FillCurrencyBox();
-
- String aPrevString;
- Color* pDummy = NULL;
- pNumFmtShell->GetInitSettings( nCatLbSelPos, eLangType, nFmtLbSelPos,
- aFmtEntryList, aPrevString, pDummy );
-
- aLbCurrency.SelectEntryPos((sal_uInt16)pNumFmtShell->GetCurrencySymbol());
-
- nFixedCategory=nCatLbSelPos;
- if(bOneAreaFlag)
- {
- String sFixedCategory=aLbCategory.GetEntry(nFixedCategory);
- aLbCategory.Clear();
- aLbCategory.InsertEntry(sFixedCategory);
- SetCategory(0);
- }
- else
- {
- SetCategory(nCatLbSelPos );
- }
- eState = rSet.GetItemState( GetWhich( SID_ATTR_NUMBERFORMAT_ADD_AUTO ) );
- if(SFX_ITEM_SET == eState)
- pAutoEntryAttr = (const SfxBoolItem*)
- GetItem( rSet, SID_ATTR_NUMBERFORMAT_ADD_AUTO );
- // no_NO is an alias for nb_NO and normally isn't listed, we need it for
- // backwards compatibility, but only if the format passed is of
- // LanguageType no_NO.
- if ( eLangType == LANGUAGE_NORWEGIAN )
- {
- aLbLanguage.RemoveLanguage( eLangType ); // in case we're already called
- aLbLanguage.InsertLanguage( eLangType );
- }
- aLbLanguage.SelectLanguage( eLangType );
- if(pAutoEntryAttr)
- AddAutomaticLanguage_Impl(eLangType, pAutoEntryAttr->GetValue());
- UpdateFormatListBox_Impl(sal_False,sal_True);
-
-//! This spoils everything because it rematches currency formats based on
-//! the selected aLbCurrency entry instead of the current format.
-//! Besides that everything seems to be initialized by now, so why call it?
-// SelFormatHdl_Impl( &aLbCategory );
-
- if ( pValFmtAttr )
- {
- EditHdl_Impl( &aEdFormat ); // UpdateOptions_Impl() als Seiteneffekt
- }
- else // DONT_KNOW
- {
- // Kategoriewechsel und direkte Eingabe sind moeglich, sonst nix:
- Obstructing();
- }
-
- if ( aCbSourceFormat.IsChecked() )
- {
- // everything disabled except SourceFormat checkbox
- EnableBySourceFormat_Impl();
- }
-
- DeleteEntryList_Impl(aFmtEntryList);
-}
-
-/*************************************************************************
-#* Methode: Obstructing
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Sperren der Controls mit Ausnahme von Kategoriewechsel
-#* und direkter Eingabe.
-#* Input: ---
-#* Output: ---
-#*
-#************************************************************************/
-void SvxNumberFormatTabPage::Obstructing()
-{
- aLbFormat .SetNoSelection();
- aLbLanguage .SetNoSelection();
- aFtLanguage .Disable();
- aLbLanguage .Disable();
-
- aIbAdd.Enable(sal_False );
- aIbRemove.Enable(sal_False );
- aIbInfo.Enable(sal_False );
-
- aBtnNegRed .Disable();
- aBtnThousand .Disable();
- aFtLeadZeroes .Disable();
- aFtDecimals .Disable();
- aEdLeadZeroes .Disable();
- aEdDecimals .Disable();
- aFlOptions .Disable();
- aEdDecimals .SetText( String() );
- aEdLeadZeroes .SetText( String() );
- aBtnNegRed .Check( sal_False );
- aBtnThousand .Check( sal_False );
- aWndPreview .NotifyChange( String() );
-
- aLbCategory .SelectEntryPos( 0 );
- aEdFormat .SetText( String() );
- aFtComment .SetText( String() );
- aEdComment .SetText(aLbCategory.GetEntry(1)); //String fuer Benutzerdefiniert
- //holen
-
- aEdFormat .GrabFocus();
-}
-
-
-/*************************************************************************
-#* Enable/Disable dialog parts depending on the value of the SourceFormat
-#* checkbox.
-#************************************************************************/
-void SvxNumberFormatTabPage::EnableBySourceFormat_Impl()
-{
- sal_Bool bEnable = !aCbSourceFormat.IsChecked();
- if ( !bEnable )
- aCbSourceFormat.GrabFocus();
- aFtCategory .Enable( bEnable );
- aLbCategory .Enable( bEnable );
- aFtFormat .Enable( bEnable );
- aLbCurrency .Enable( bEnable );
- aLbFormat .Enable( bEnable );
- aFtLanguage .Enable( bEnable );
- aLbLanguage .Enable( bEnable );
- aFtDecimals .Enable( bEnable );
- aEdDecimals .Enable( bEnable );
- aFtLeadZeroes .Enable( bEnable );
- aEdLeadZeroes .Enable( bEnable );
- aBtnNegRed .Enable( bEnable );
- aBtnThousand .Enable( bEnable );
- aFlOptions .Enable( bEnable );
- aFtEdFormat .Enable( bEnable );
- aEdFormat .Enable( bEnable );
- aIbAdd .Enable( bEnable );
- aIbRemove .Enable( bEnable );
- aIbInfo .Enable( bEnable );
- aFtComment .Enable( bEnable );
- aEdComment .Enable( bEnable );
- aLbFormat.Invalidate(); // #i43322#
-}
-
-
-/*************************************************************************
-#* Methode: HideLanguage
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Versteckt die Spracheinstellung:
-#* Input: sal_Bool nFlag
-#* Output: ---
-#*
-#************************************************************************/
-
-void SvxNumberFormatTabPage::HideLanguage(sal_Bool nFlag)
-{
- Size aSize=aLbCategory.GetSizePixel();
-
- if(nFlag)
- {
- aSize.Height()=aLbFormat.GetSizePixel().Height();
- }
- else
- {
- aSize.Height()=nCatHeight;
- }
-
- aLbCategory.SetSizePixel(aSize);
-
- aFtLanguage.Show(!nFlag);
- aLbLanguage.Show(!nFlag);
-}
-
-/*************************************************************************
-#* Methode: FillItemSet
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Stellt die Attribute im ItemSet ein,
-#* sowie in der DocShell den numItem, wenn
-#* bNumItemFlag nicht gesetzt ist.
-#* Input: SfxItemSet
-#* Output: ---
-#*
-#************************************************************************/
-
-sal_Bool SvxNumberFormatTabPage::FillItemSet( SfxItemSet& rCoreAttrs )
-{
- sal_Bool bDataChanged = aFtLanguage.IsEnabled() || aCbSourceFormat.IsEnabled();
- if ( bDataChanged )
- {
- const SfxItemSet& rMyItemSet = GetItemSet();
- sal_uInt16 nWhich = GetWhich( SID_ATTR_NUMBERFORMAT_VALUE );
- SfxItemState eItemState = rMyItemSet.GetItemState( nWhich, sal_False );
-
- // OK chosen - Is format code input entered already taken over?
- // If not, simulate Add. Upon syntax error ignore input and prevent Put.
- String aFormat = aEdFormat.GetText();
- sal_uInt32 nCurKey = pNumFmtShell->GetCurNumFmtKey();
-
- if ( aIbAdd.IsEnabled() || pNumFmtShell->IsTmpCurrencyFormat(aFormat) )
- { // #79599# It is not sufficient to just add the format code (or
- // delete it in case of bOneAreaFlag and resulting category change).
- // Upon switching tab pages we need all settings to be consistent
- // in case this page will be redisplayed later.
- bDataChanged = (ClickHdl_Impl( &aIbAdd ) != 0);
- nCurKey = pNumFmtShell->GetCurNumFmtKey();
- }
- else if(nCurKey == NUMKEY_UNDEFINED)
- { // something went wrong, e.g. in Writer #70281#
- pNumFmtShell->FindEntry(aFormat, &nCurKey);
- }
-
- //---------------------------------------------------------------
- // Chosen format:
- // --------------
- if ( bDataChanged )
- {
- bDataChanged = ( nInitFormat != nCurKey );
-
- if (bDataChanged)
- {
- rCoreAttrs.Put( SfxUInt32Item( nWhich, nCurKey ) );
- }
- else if(SFX_ITEM_DEFAULT == eItemState)
- {
- rCoreAttrs.ClearItem( nWhich );
- }
- }
-
- // --------------------------------------------------------------
- // List of changed user defined formats:
- // -------------------------------------
- const sal_uInt32 nDelCount = pNumFmtShell->GetUpdateDataCount();
-
- if ( nDelCount > 0 )
- {
- sal_uInt32* pDelArr = new sal_uInt32[nDelCount];
-
- pNumFmtShell->GetUpdateData( pDelArr, nDelCount );
- pNumItem->SetDelFormatArray( pDelArr, nDelCount );
-
- if(bNumItemFlag==sal_True)
- {
- rCoreAttrs.Put( *pNumItem );
- }
- else
- {
- SfxObjectShell* pDocSh = SfxObjectShell::Current();
-
- DBG_ASSERT( pDocSh, "DocShell not found!" );
-
-
- if ( pDocSh )
- pDocSh->PutItem( *pNumItem );
- }
- delete [] pDelArr;
- }
-
- //---------------------------------------------------------------
- // Whether source format is to be taken or not:
- // --------------------------------------------
- if ( aCbSourceFormat.IsEnabled() )
- {
- sal_uInt16 _nWhich = GetWhich( SID_ATTR_NUMBERFORMAT_SOURCE );
- SfxItemState _eItemState = rMyItemSet.GetItemState( _nWhich, sal_False );
- const SfxBoolItem* pBoolItem = (const SfxBoolItem*)
- GetItem( rMyItemSet, SID_ATTR_NUMBERFORMAT_SOURCE );
- sal_Bool bOld = (pBoolItem ? pBoolItem->GetValue() : sal_False);
- rCoreAttrs.Put( SfxBoolItem( _nWhich, aCbSourceFormat.IsChecked() ) );
- if ( !bDataChanged )
- bDataChanged = (bOld != (sal_Bool) aCbSourceFormat.IsChecked() ||
- _eItemState != SFX_ITEM_SET);
- }
-
- // FillItemSet is only called on OK, here we can notify the
- // NumberFormatShell that all new user defined formats are valid.
- pNumFmtShell->ValidateNewEntries();
- if(aLbLanguage.IsVisible() &&
- LISTBOX_ENTRY_NOTFOUND != aLbLanguage.GetEntryPos(sAutomaticEntry))
- rCoreAttrs.Put(SfxBoolItem(SID_ATTR_NUMBERFORMAT_ADD_AUTO,
- aLbLanguage.GetSelectEntry() == sAutomaticEntry));
- }
-
- return bDataChanged;
-}
-
-
-int SvxNumberFormatTabPage::DeactivatePage( SfxItemSet* _pSet )
-{
- if ( _pSet )
- FillItemSet( *_pSet );
- return LEAVE_PAGE;
-}
-
-void SvxNumberFormatTabPage::SetInfoItem( const SvxNumberInfoItem& rItem )
-{
- if(pNumItem==NULL)
- {
- pNumItem = (SvxNumberInfoItem*)rItem.Clone();
- }
-}
-
-void SvxNumberFormatTabPage::FillFormatListBox_Impl( SvxDelStrgs& rEntries )
-{
- String* pEntry;
- String aTmpString;
- String aTmpCatString;
- Font aFont=aLbCategory.GetFont();
- sal_uInt16 i = 0;
- short nTmpCatPos;
- short aPrivCat;
-
- aLbFormat.Clear();
- aLbFormat.SetUpdateMode( sal_False );
-
- sal_uInt16 nCount = rEntries.Count();
-
- if(nCount<1) return;
-
- if(bOneAreaFlag)
- {
- nTmpCatPos=nFixedCategory;
- }
- else
- {
- nTmpCatPos=aLbCategory.GetSelectEntryPos();
- }
-
- switch (nTmpCatPos)
- {
- case CAT_ALL:
- case CAT_TEXT:
- case CAT_NUMBER: i=1;
- pEntry=rEntries[0];
- if(pEntry!=NULL)
- {
- if (nTmpCatPos == CAT_TEXT)
- aTmpString=*pEntry;
- else
- aTmpString = pNumFmtShell->GetStandardName();
- aPrivCat=pNumFmtShell->GetCategory4Entry(0);
- aLbFormat.InsertFontEntry( aTmpString, aFont );
- }
- break;
-
- default: break;
- }
-
- if(pNumFmtShell!=NULL)
- {
- for ( ; i < nCount; ++i )
- {
- pEntry = rEntries[i];
- aPrivCat=pNumFmtShell->GetCategory4Entry(i);
- if(aPrivCat!=CAT_TEXT)
- {
- Color* pPreviewColor = NULL;
- String aPreviewString( GetExpColorString( pPreviewColor, *pEntry, aPrivCat ) );
- Font aEntryFont( aLbFormat.GetFont() );
- aLbFormat.InsertFontEntry( aPreviewString, aEntryFont, pPreviewColor );
- }
- else
- {
- aLbFormat.InsertFontEntry(*pEntry,aFont);
- }
- }
- }
- aLbFormat.SetUpdateMode( sal_True );
- DeleteEntryList_Impl(rEntries);
-}
-
-
-/*************************************************************************
-#* Methode: DeleteEntryList_Impl
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Loescht eine SvStrings- Liste
-#* Input: String-liste
-#* Output: ---
-#*
-#************************************************************************/
-
-void SvxNumberFormatTabPage::DeleteEntryList_Impl( SvxDelStrgs& rEntries )
-{
- sal_uInt16 nCount = rEntries.Count();
- rEntries.DeleteAndDestroy(0,nCount);
-}
-
-
-/*************************************************************************
-#* Methode: UpdateOptions_Impl
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Stellt je nach eingestelltem Format die Options-
-#* attribute neu ein.
-#* Input: Flag, ob sich die Kategorie geaendert hat.
-#* Output: ---
-#*
-#************************************************************************/
-
-void SvxNumberFormatTabPage::UpdateOptions_Impl( sal_Bool bCheckCatChange /*= sal_False*/ )
-{
- SvxDelStrgs aEntryList;
- String theFormat = aEdFormat.GetText();
- sal_uInt16 nCurCategory = aLbCategory.GetSelectEntryPos();
- sal_uInt16 nCategory = nCurCategory;
- sal_uInt16 nDecimals = 0;
- sal_uInt16 nZeroes = 0;
- sal_Bool bNegRed = sal_False;
- sal_Bool bThousand = sal_False;
- sal_uInt16 nCurrencyPos =aLbCurrency.GetSelectEntryPos();
-
- if(bOneAreaFlag)
- nCurCategory=nFixedCategory;
-
-
- pNumFmtShell->GetOptions( theFormat,
- bThousand, bNegRed,
- nDecimals, nZeroes,
- nCategory );
- sal_Bool bDoIt=sal_False;
- if(nCategory==CAT_CURRENCY)
- {
- sal_uInt16 nTstPos=pNumFmtShell->FindCurrencyFormat(theFormat);
- if(nCurrencyPos!=nTstPos && nTstPos!=(sal_uInt16)-1)
- {
- aLbCurrency.SelectEntryPos(nTstPos);
- pNumFmtShell->SetCurrencySymbol(nTstPos);
- bDoIt=sal_True;
- }
- }
-
-
-
- if ( nCategory != nCurCategory || bDoIt)
- {
- if ( bCheckCatChange )
- {
- if(bOneAreaFlag)
- SetCategory(0);
- else
- SetCategory(nCategory );
-
- UpdateFormatListBox_Impl( sal_True, sal_False );
- }
- }
- else if ( aLbFormat.GetEntryCount() > 0 )
- {
- sal_uInt32 nCurEntryKey=NUMKEY_UNDEFINED;
- if(!pNumFmtShell->FindEntry( aEdFormat.GetText(),&nCurEntryKey))
- {
- aLbFormat.SetNoSelection();
- }
- }
- if(bOneAreaFlag)
- {
- nCategory=nFixedCategory;
- }
-
- switch ( nCategory )
- {
- case CAT_NUMBER:
- case CAT_PERCENT:
- case CAT_CURRENCY:
- aFlOptions.Enable();
- aFtDecimals.Enable();
- aEdDecimals.Enable();
- aFtLeadZeroes.Enable();
- aEdLeadZeroes.Enable();
- aBtnNegRed.Enable();
- aBtnThousand.Enable();
- aEdDecimals .SetText( UniString::CreateFromInt32( nDecimals ) );
- aEdLeadZeroes.SetText( UniString::CreateFromInt32( nZeroes ) );
- aBtnNegRed .Check( bNegRed );
- aBtnThousand .Check( bThousand );
- break;
-
- case CAT_ALL:
- case CAT_USERDEFINED:
- case CAT_TEXT:
- case CAT_DATE:
- case CAT_TIME:
- case CAT_BOOLEAN:
- case CAT_SCIENTIFIC:
- case CAT_FRACTION:
- default:
- aFlOptions .Disable();
- aFtDecimals .Disable();
- aEdDecimals .Disable();
- aFtLeadZeroes .Disable();
- aEdLeadZeroes .Disable();
- aBtnNegRed .Disable();
- aBtnThousand .Disable();
- aEdDecimals .SetText( UniString::CreateFromInt32( 0 ) );
- aEdLeadZeroes .SetText( UniString::CreateFromInt32( 0 ) );
- aBtnNegRed .Check( sal_False );
- aBtnThousand .Check( sal_False );
- }
-}
-
-
-/*************************************************************************
-#* Methode: UpdateFormatListBox_Impl
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Aktualisiert die Format- Listbox und zusaetzlich
-#* wird abhaengig vom bUpdateEdit- Flag der String
-#* in der Editbox geaendert.
-#* Input: Flags fuer Kategorie und Editbox
-#* Output: ---
-#*
-#************************************************************************/
-
-void SvxNumberFormatTabPage::UpdateFormatListBox_Impl
- (
- sal_uInt16 bCat, // Category oder Land/Sprache ListBox?
- sal_Bool bUpdateEdit // Format-Edit aktualisieren?
- )
-{
- SvxDelStrgs aEntryList;
- short nFmtLbSelPos = 0;
- short nTmpCatPos;
-
- if(bOneAreaFlag)
- {
- nTmpCatPos=nFixedCategory;
- }
- else
- {
- nTmpCatPos=aLbCategory.GetSelectEntryPos();
- }
-
-
- if ( bCat )
- {
- Point aPos=aLbFormat.GetPosPixel();
- Size aSize=aLbFormat.GetSizePixel();
-
- if(nTmpCatPos!=CAT_CURRENCY)
- {
- aPos.Y()=nStdFormatY;
- aSize.Height()=nStdFormatHeight;
- aLbFormat.SetPosSizePixel(aPos,aSize);
-#if ENABLE_LAYOUT
- aLbCurrency.Disable();
-#else /* !ENABLE_LAYOUT */
- aLbCurrency.Hide();
-#endif /* !ENABLE_LAYOUT */
- }
- else
- {
- aPos.Y()=nCurFormatY;
- aSize.Height()=nCurFormatHeight;
- aLbFormat.SetPosSizePixel(aPos,aSize);
-#if ENABLE_LAYOUT
- aLbCurrency.Enable();
-#else /* !ENABLE_LAYOUT */
- aLbCurrency.Show();
-#endif /* !ENABLE_LAYOUT */
- }
-
- pNumFmtShell->CategoryChanged( nTmpCatPos,nFmtLbSelPos, aEntryList );
- }
- else
- pNumFmtShell->LanguageChanged( aLbLanguage.GetSelectLanguage(),
- nFmtLbSelPos,aEntryList );
-
- REMOVE_DONTKNOW() // ggF. UI-Enable
-
-
- if ( (aEntryList.Count() > 0) && (nFmtLbSelPos != SELPOS_NONE) )
- {
- if(bUpdateEdit)
- {
- String aFormat=*aEntryList[nFmtLbSelPos];
- aEdFormat.SetText(aFormat);
- aFtComment.SetText(pNumFmtShell->GetComment4Entry(nFmtLbSelPos));
- }
-
- if(!bOneAreaFlag || !bCat)
- {
- FillFormatListBox_Impl( aEntryList );
- aLbFormat.SelectEntryPos( nFmtLbSelPos );
-
- aFtComment.SetText(pNumFmtShell->GetComment4Entry(nFmtLbSelPos));
- if(pNumFmtShell->GetUserDefined4Entry(nFmtLbSelPos))
- {
- if(pNumFmtShell->GetComment4Entry(nFmtLbSelPos).Len()==0)
- {
- aFtComment.SetText(aLbCategory.GetEntry(1));
- }
- }
- ChangePreviewText( (sal_uInt16)nFmtLbSelPos );
- }
-
- }
- else
- {
- FillFormatListBox_Impl( aEntryList );
- if(nFmtLbSelPos != SELPOS_NONE)
- {
- aLbFormat.SelectEntryPos( (sal_uInt16)nFmtLbSelPos );
-
- aFtComment.SetText(pNumFmtShell->GetComment4Entry(nFmtLbSelPos));
- if(pNumFmtShell->GetUserDefined4Entry(nFmtLbSelPos))
- {
- if(pNumFmtShell->GetComment4Entry(nFmtLbSelPos).Len()==0)
- {
- aFtComment.SetText(aLbCategory.GetEntry(1));
- }
- }
- }
- else
- {
- aLbFormat.SetNoSelection();
- }
-
- if ( bUpdateEdit )
- {
- aEdFormat.SetText( String() );
- aWndPreview.NotifyChange( String() );
- }
- }
-}
-
-
-/*************************************************************************
-#* Handle: DoubleClickHdl_Impl
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Bei einem Doppelklick in die Format- Listbox
-#* wird der Wert uebernommen und der OK-Button
-#* ausgeloest
-#* Input: Pointer auf Listbox
-#* Output: ---
-#*
-#************************************************************************/
-
-IMPL_LINK( SvxNumberFormatTabPage, DoubleClickHdl_Impl, SvxFontListBox*, pLb )
-{
- if ( pLb == &aLbFormat )
- {
- SelFormatHdl_Impl( pLb );
-
- if ( fnOkHdl.IsSet() )
- { // Uebergangsloesung, sollte von SfxTabPage angeboten werden
- fnOkHdl.Call( NULL );
- }
- else
- {
- SfxSingleTabDialog* pParent = dynamic_cast< SfxSingleTabDialog* >( GetParent() );
- OKButton* pOKButton = pParent ? pParent->GetOKButton() : NULL;
- if ( pOKButton )
- pOKButton->Click();
- }
- }
- return 0;
-}
-
-
-/*************************************************************************
-#* Methode: SelFormatHdl_Impl
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Wird aufgerufen, wenn sich die Sprache, die Kategorie
-#* oder das Format aendert. Dem entsprechend werden die
-#* Einstellungen geaendert.
-#* Input: Pointer auf Listbox
-#* Output: ---
-#*
-#************************************************************************/
-
-IMPL_LINK( SvxNumberFormatTabPage, SelFormatHdl_Impl, void *, pLb )
-{
- if ( (CheckBox*)pLb == &aCbSourceFormat )
- {
- EnableBySourceFormat_Impl(); // enable/disable everything else
- if ( aCbSourceFormat.IsChecked() )
- return 0; // just disabled everything else
-
- // Reinit options enable/disable for current selection.
-
-#if ENABLE_LAYOUT
- if (aLbFormat.GetSelectEntryPos () == LISTBOX_ENTRY_NOTFOUND)
-#else /* !ENABLE_LAYOUT */
- // Current category may be UserDefined with no format entries defined.
- // And yes, aLbFormat is a SvxFontListBox with sal_uLong list positions,
- // implementation returns a LIST_APPEND if empty, comparison with
- // sal_uInt16 LISTBOX_ENTRY_NOTFOUND wouldn't match.
- if ( aLbFormat.GetSelectEntryPos() == LIST_APPEND )
-#endif /* !ENABLE_LAYOUT */
- pLb = &aLbCategory; // continue with the current category selected
- else
- pLb = &aLbFormat; // continue with the current format selected
- }
-
- short nTmpCatPos;
-
- if(bOneAreaFlag)
- {
- nTmpCatPos=nFixedCategory;
- }
- else
- {
- nTmpCatPos=aLbCategory.GetSelectEntryPos();
- }
-
- sal_uInt16 nCurrencyPos=LISTBOX_ENTRY_NOTFOUND ;
-
- if(nTmpCatPos==CAT_CURRENCY && (ListBox *)pLb == &aLbCurrency )
- {
- nCurrencyPos=aLbCurrency.GetSelectEntryPos();
- pNumFmtShell->SetCurrencySymbol(nCurrencyPos);
- }
-
- //--------------------------------------------------------------------
- // Format-ListBox ----------------------------------------------------
- if ( (SvxFontListBox *)pLb == &aLbFormat )
- {
- sal_uInt16 nSelPos = (sal_uInt16) aLbFormat.GetSelectEntryPos();
- String aFormat = aLbFormat.GetSelectEntry();
- String aComment;
- SvxDelStrgs aEntryList;
-
- short nFmtLbSelPos = nSelPos;
-
- aFormat=pNumFmtShell->GetFormat4Entry(nSelPos);
- aComment=pNumFmtShell->GetComment4Entry(nSelPos);
- if(pNumFmtShell->GetUserDefined4Entry(nFmtLbSelPos))
- {
- if(pNumFmtShell->GetComment4Entry(nFmtLbSelPos).Len()==0)
- {
- aComment=aLbCategory.GetEntry(1);
- }
- }
-
- if ( aFormat.Len() > 0 )
- {
- if(!aEdFormat.HasFocus()) aEdFormat.SetText( aFormat );
- aFtComment.SetText(aComment);
- ChangePreviewText( nSelPos );
- }
-
- REMOVE_DONTKNOW() // ggF. UI-Enable
-
- if ( pNumFmtShell->FindEntry( aFormat) )
- {
- aIbAdd.Enable(sal_False );
- sal_Bool bIsUserDef=pNumFmtShell->IsUserDefined( aFormat );
- aIbRemove.Enable(bIsUserDef);
- aIbInfo.Enable(bIsUserDef);
-
- }
- else
- {
- aIbAdd.Enable(sal_True );
- aIbInfo.Enable(sal_True );
- aIbRemove.Enable(sal_False );
- aFtComment.SetText(aEdComment.GetText());
-
- }
- UpdateOptions_Impl( sal_False );
-
- return 0;
- }
-
- //--------------------------------------------------------------------
- // Kategorie-ListBox -------------------------------------------------
- if ( pLb == &aLbCategory || pLb == &aLbCurrency)
- {
- UpdateFormatListBox_Impl( sal_True, sal_True );
- EditHdl_Impl( NULL );
- UpdateOptions_Impl( sal_False );
-
- return 0;
- }
-
- //--------------------------------------------------------------------
- // Sprache/Land-ListBox ----------------------------------------------
- if ( pLb == &aLbLanguage )
- {
- UpdateFormatListBox_Impl( sal_False, sal_True );
- EditHdl_Impl( &aEdFormat );
-
- return 0;
- }
- return 0;
-}
-
-
-/*************************************************************************
-#* Methode: ClickHdl_Impl, ImageButton* pIB
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Wenn, der Hinzufuegen- oder Entfernen- Button
-#* wird diese Funktion aufgerufen und die Zahlenformat-
-#* Liste den entsprechend geaendert.
-#* Input: Toolbox- Button
-#* Output: ---
-#*
-#************************************************************************/
-
-IMPL_LINK( SvxNumberFormatTabPage, ClickHdl_Impl, ImageButton*, pIB)
-{
- sal_Bool bAdded = sal_False;
- sal_Bool bDeleted = sal_False;
- sal_uLong nReturn = 0;
- const sal_uLong nReturnChanged = 0x1; // THE boolean return value
- const sal_uLong nReturnAdded = 0x2; // temp: format added
- const sal_uLong nReturnOneArea = 0x4; // temp: one area but category changed => ignored
-
- if(pIB==&aIbAdd)
- { // Also called from FillItemSet() if a temporary currency format has
- // to be added, not only if the Add button is enabled.
- String aFormat = aEdFormat.GetText();
- SvxDelStrgs aEntryList;
- SvxDelStrgs a2EntryList;
- sal_uInt16 nCatLbSelPos = 0;
- short nFmtLbSelPos = SELPOS_NONE;
- xub_StrLen nErrPos=0;
-
- pNumFmtShell->SetCurCurrencyEntry(NULL);
- bAdded = pNumFmtShell->AddFormat( aFormat, nErrPos,
- nCatLbSelPos, nFmtLbSelPos,
- aEntryList);
- if ( bAdded )
- nReturn |= nReturnChanged | nReturnAdded;
-
- if(pLastActivWindow== (Window *) &aEdComment)
- {
- aEdFormat.GrabFocus();
- aEdComment.Hide();
- aFtComment.Show();
- aFtComment.SetText(aEdComment.GetText());
- }
-
- if ( !nErrPos ) // Syntax ok?
- {
- // May be sorted under a different locale if LCID was parsed.
- if (bAdded)
- aLbLanguage.SelectLanguage( pNumFmtShell->GetCurLanguage() );
-
- if(nCatLbSelPos==CAT_CURRENCY)
- {
- aLbCurrency.SelectEntryPos((sal_uInt16)pNumFmtShell->GetCurrencySymbol());
- }
-
- if(bOneAreaFlag && (nFixedCategory!=nCatLbSelPos))
- {
- if(bAdded) DeleteEntryList_Impl(aEntryList);
- bDeleted = pNumFmtShell->RemoveFormat( aFormat,
- nCatLbSelPos,
- nFmtLbSelPos,
- a2EntryList);
- if(bDeleted) DeleteEntryList_Impl(a2EntryList);
- aEdFormat.GrabFocus();
- aEdFormat.SetSelection( Selection( (short)nErrPos, SELECTION_MAX ) );
- nReturn |= nReturnOneArea;
- }
- else
- {
- if ( bAdded && (nFmtLbSelPos != SELPOS_NONE) )
- {
- // Alles klar
- if(bOneAreaFlag) //@@ ???
- SetCategory(0);
- else
- SetCategory(nCatLbSelPos );
-
- FillFormatListBox_Impl( aEntryList );
- if(aEdComment.GetText()!=aLbCategory.GetEntry(1))
- {
- pNumFmtShell->SetComment4Entry(nFmtLbSelPos,
- aEdComment.GetText());
- }
- else
- {
- pNumFmtShell->SetComment4Entry(nFmtLbSelPos,
- String());
- }
- aLbFormat.SelectEntryPos( (sal_uInt16)nFmtLbSelPos );
- aEdFormat.SetText( aFormat );
-
- aEdComment.SetText(aLbCategory.GetEntry(1)); //String fuer Benutzerdefiniert
- //holen
- ChangePreviewText( (sal_uInt16)nFmtLbSelPos );
- }
- }
- }
- else // Syntaxfehler
- {
- aEdFormat.GrabFocus();
- aEdFormat.SetSelection( Selection( (short)nErrPos, SELECTION_MAX ) );
- }
- EditHdl_Impl( &aEdFormat );
- nReturn = ((nReturn & nReturnOneArea) ? 0 : (nReturn & nReturnChanged));
- }
- else if(pIB==&aIbRemove)
- {
- String aFormat = aEdFormat.GetText();
- SvxDelStrgs aEntryList;
- sal_uInt16 nCatLbSelPos = 0;
- short nFmtLbSelPos = SELPOS_NONE;
-
- bDeleted = pNumFmtShell->RemoveFormat( aFormat,
- nCatLbSelPos,
- nFmtLbSelPos,
- aEntryList );
-
- aEdComment.SetText(aLbCategory.GetEntry(1));
- if ( bDeleted )
- {
- if(nFmtLbSelPos>=0 && nFmtLbSelPos<aEntryList.Count())
- {
- aFormat = *aEntryList[nFmtLbSelPos];
- }
-
- FillFormatListBox_Impl( aEntryList );
-
- if ( nFmtLbSelPos != SELPOS_NONE )
- {
- if(bOneAreaFlag) //@@ ???
- SetCategory(0);
- else
- SetCategory(nCatLbSelPos );
-
- aLbFormat.SelectEntryPos( (sal_uInt16)nFmtLbSelPos );
- aEdFormat.SetText( aFormat );
- ChangePreviewText( (sal_uInt16)nFmtLbSelPos );
- }
- else
- {
- // auf "Alle/Standard" setzen
- SetCategory(0 );
- SelFormatHdl_Impl( &aLbCategory );
- }
- }
- EditHdl_Impl( &aEdFormat );
- }
- else if(pIB==&aIbInfo)
- {
- if(!(pLastActivWindow== (Window *) &aEdComment))
- {
- aEdComment.SetText(aFtComment.GetText());
- aEdComment.Show();
- aFtComment.Hide();
- aEdComment.GrabFocus();
- }
- else
- {
- aEdFormat.GrabFocus();
- aEdComment.Hide();
- aFtComment.Show();
- }
- }
-
- return nReturn;
-}
-
-
-/*************************************************************************
-#* Methode: EditHdl_Impl
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Wenn der Eintrag im Eingabefeld geaendert wird,
-#* so wird die Vorschau aktualisiert und
-#* Input: Pointer auf Editbox
-#* Output: ---
-#*
-#************************************************************************/
-
-IMPL_LINK( SvxNumberFormatTabPage, EditHdl_Impl, Edit*, pEdFormat )
-{
- sal_uInt32 nCurKey = NUMKEY_UNDEFINED;
-
- if ( aEdFormat.GetText().Len() == 0 )
- {
- aIbAdd.Enable(sal_False );
- aIbRemove.Enable(sal_False );
- aIbInfo.Enable(sal_False );
- aFtComment.SetText(String());
- }
- else
- {
- String aFormat = aEdFormat.GetText();
- MakePreviewText( aFormat );
-
- if ( pNumFmtShell->FindEntry( aFormat, &nCurKey ) )
- {
- aIbAdd.Enable(sal_False );
- sal_Bool bUserDef=pNumFmtShell->IsUserDefined( aFormat );
-
- aIbRemove.Enable(bUserDef);
- aIbInfo.Enable(bUserDef);
-
- if(bUserDef)
- {
- sal_uInt16 nTmpCurPos=pNumFmtShell->FindCurrencyFormat(aFormat );
-
- if(nTmpCurPos!=(sal_uInt16)-1)
- aLbCurrency.SelectEntryPos(nTmpCurPos);
- }
- short nPosi=pNumFmtShell->GetListPos4Entry(aFormat);
- if(nPosi>=0)
- aLbFormat.SelectEntryPos( (sal_uInt16)nPosi);
-
- }
- else
- {
-
- aIbAdd.Enable(sal_True );
- aIbInfo.Enable(sal_True);
- aIbRemove.Enable(sal_False );
-
- aFtComment.SetText(aEdComment.GetText());
-
- }
- }
-
- if ( pEdFormat )
- {
- pNumFmtShell->SetCurNumFmtKey( nCurKey );
- UpdateOptions_Impl( sal_True );
- }
-
- return 0;
-}
-
-
-/*************************************************************************
-#* Methode: NotifyChange
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Fuehrt Aenderungen in den Zahlen- Attributen durch.
-#* Input: Options- Controls
-#* Output: ---
-#*
-#************************************************************************/
-
-IMPL_LINK( SvxNumberFormatTabPage, OptHdl_Impl, void *, pOptCtrl )
-{
- if ( ((NumericField*)pOptCtrl == &aEdLeadZeroes)
- || ((NumericField*)pOptCtrl == &aEdDecimals)
- || ((CheckBox*) pOptCtrl == &aBtnNegRed)
- || ((CheckBox*) pOptCtrl == &aBtnThousand) )
- {
- String aFormat;
- sal_Bool bThousand = aBtnThousand.IsEnabled()
- && aBtnThousand.IsChecked();
- sal_Bool bNegRed = aBtnNegRed.IsEnabled()
- && aBtnNegRed.IsChecked();
- sal_uInt16 nPrecision = (aEdDecimals.IsEnabled())
- ? (sal_uInt16)aEdDecimals.GetValue()
- : (sal_uInt16)0;
- sal_uInt16 nLeadZeroes = (aEdLeadZeroes.IsEnabled())
- ? (sal_uInt16)aEdLeadZeroes.GetValue()
- : (sal_uInt16)0;
-
- pNumFmtShell->MakeFormat( aFormat,
- bThousand, bNegRed,
- nPrecision, nLeadZeroes,
- (sal_uInt16)aLbFormat.GetSelectEntryPos() );
-
- aEdFormat.SetText( aFormat );
- MakePreviewText( aFormat );
-
- if ( pNumFmtShell->FindEntry( aFormat ) )
- {
- aIbAdd.Enable(sal_False );
- sal_Bool bUserDef=pNumFmtShell->IsUserDefined( aFormat );
- aIbRemove.Enable(bUserDef);
- aIbInfo.Enable(bUserDef);
- EditHdl_Impl( &aEdFormat);
-
- }
- else
- {
- EditHdl_Impl( NULL );
- aLbFormat.SetNoSelection();
- }
- }
- return 0;
-}
-
-IMPL_LINK( SvxNumberFormatTabPage, TimeHdl_Impl, Timer*, EMPTYARG)
-{
- pLastActivWindow=NULL;
- return 0;
-}
-
-
-/*************************************************************************
-#* Methode: LostFocusHdl_Impl
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Fuehrt Aenderungen in den Zahlen- Attributen durch.
-#* Input: Options- Controls
-#* Output: ---
-#*
-#************************************************************************/
-
-IMPL_LINK( SvxNumberFormatTabPage, LostFocusHdl_Impl, Edit *, pEd)
-{
- if (pEd==&aEdComment)
- {
- aResetWinTimer.Start();
- aFtComment.SetText(aEdComment.GetText());
- aEdComment.Hide();
- aFtComment.Show();
- if(!aIbAdd.IsEnabled())
- {
- sal_uInt16 nSelPos = (sal_uInt16) aLbFormat.GetSelectEntryPos();
- pNumFmtShell->SetComment4Entry(nSelPos,
- aEdComment.GetText());
- aEdComment.SetText(aLbCategory.GetEntry(1)); //String fuer Benutzerdefiniert
- //holen
- }
- }
- return 0;
-}
-
-/*************************************************************************
-#* Methode: NotifyChange
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Fuehrt Aenderungen in den Zahlen- Attributen durch.
-#* Input: Options- Controls
-#* Output: ---
-#*
-#************************************************************************/
-
-String SvxNumberFormatTabPage::GetExpColorString(
- Color*& rpPreviewColor, const String& rFormatStr, short nTmpCatPos)
-{
- double nVal = 0;
- switch (nTmpCatPos)
- {
- case CAT_CURRENCY: nVal=SVX_NUMVAL_CURRENCY; break;
-
- case CAT_SCIENTIFIC:
- case CAT_FRACTION:
- case CAT_NUMBER: nVal=SVX_NUMVAL_STANDARD; break;
-
- case CAT_PERCENT: nVal=SVX_NUMVAL_PERCENT; break;
-
- case CAT_ALL: nVal=SVX_NUMVAL_STANDARD; break;
-
- case CAT_TIME: nVal=SVX_NUMVAL_TIME; break;
- case CAT_DATE: nVal=SVX_NUMVAL_DATE; break;
-
- case CAT_BOOLEAN: nVal=SVX_NUMVAL_BOOLEAN; break;
-
- case CAT_USERDEFINED:
- case CAT_TEXT:
- default: nVal=0;break;
- }
-
- String aPreviewString;
- pNumFmtShell->MakePrevStringFromVal( rFormatStr, aPreviewString, rpPreviewColor, nVal );
- return aPreviewString;
-}
-
-void SvxNumberFormatTabPage::MakePreviewText( const String& rFormat )
-{
- String aPreviewString;
- Color* pPreviewColor = NULL;
- pNumFmtShell->MakePreviewString( rFormat, aPreviewString, pPreviewColor );
- aWndPreview.NotifyChange( aPreviewString, pPreviewColor );
-}
-
-void SvxNumberFormatTabPage::ChangePreviewText( sal_uInt16 nPos )
-{
- String aPreviewString;
- Color* pPreviewColor = NULL;
- pNumFmtShell->FormatChanged( nPos, aPreviewString, pPreviewColor );
- aWndPreview.NotifyChange( aPreviewString, pPreviewColor );
-}
-
-long SvxNumberFormatTabPage::PreNotify( NotifyEvent& rNEvt )
-{
- if(rNEvt.GetType()==EVENT_LOSEFOCUS)
- {
- if ( rNEvt.GetWindow() == dynamic_cast< Window* >( &aEdComment ) && !aEdComment.IsVisible() )
- {
- pLastActivWindow = NULL;
- }
- else
- {
- pLastActivWindow = rNEvt.GetWindow();
- }
- }
-
- return SfxTabPage::PreNotify( rNEvt );
-}
-/*************************************************************************
-#* Methode: SetOkHdl
-#*------------------------------------------------------------------------
-#*
-#* Klasse: SvxNumberFormatTabPage
-#* Funktion: Setzt den OkHandler neu.
-#* Input: Neuer OkHandler
-#* Output: ---
-#*
-#************************************************************************/
-
-void SvxNumberFormatTabPage::SetOkHdl( const Link& rOkHandler )
-{
- fnOkHdl = rOkHandler;
-}
-
-void SvxNumberFormatTabPage::FillCurrencyBox()
-{
- SvStringsDtor aList;
- NfShCurrencyEntries rEntries;
- XubString* pEntry = NULL;
- sal_uInt16 nSelPos=0;
-
- pNumFmtShell->GetCurrencySymbols( aList, &nSelPos);
-
- for(sal_uInt16 i=1;i<aList.Count();i++)
- {
- pEntry=aList[i];
- aLbCurrency.InsertEntry( *pEntry);
- }
- aLbCurrency.SelectEntryPos(nSelPos);
-}
-
-void SvxNumberFormatTabPage::SetCategory(sal_uInt16 nPos)
-{
- sal_uInt16 nCurCategory = aLbCategory.GetSelectEntryPos();
- Point aPos=aLbFormat.GetPosPixel();
- Size aSize=aLbFormat.GetSizePixel();
- sal_uInt16 nTmpCatPos;
-
- if(bOneAreaFlag)
- {
- nTmpCatPos=nFixedCategory;
- }
- else
- {
- nTmpCatPos=nPos;
- }
-
- if(aLbCategory.GetEntryCount()==1 || nCurCategory!=nPos)
- {
- if(nTmpCatPos!=CAT_CURRENCY)
- {
- aPos.Y()=nStdFormatY;
- aSize.Height()=nStdFormatHeight;
- aLbFormat.SetPosSizePixel(aPos,aSize);
- aLbCurrency.Hide();
- }
- else
- {
- aPos.Y()=nCurFormatY;
- aSize.Height()=nCurFormatHeight;
- aLbFormat.SetPosSizePixel(aPos,aSize);
- aLbCurrency.Show();
- }
- }
- aLbCategory.SelectEntryPos(nPos);
-}
-/* to support Writer text field language handling an
- additional entry needs to be inserted into the ListBox
- which marks a certain language as automatically detected
- Additionally the "Default" language is removed
-*/
-void SvxNumberFormatTabPage::AddAutomaticLanguage_Impl(LanguageType eAutoLang, sal_Bool bSelect)
-{
- aLbLanguage.RemoveLanguage(LANGUAGE_SYSTEM);
- sal_uInt16 nPos = aLbLanguage.InsertEntry(sAutomaticEntry);
- aLbLanguage.SetEntryData(nPos, (void*)(sal_uLong)eAutoLang);
- if(bSelect)
- aLbLanguage.SelectEntryPos(nPos);
-}
-
-void SvxNumberFormatTabPage::PageCreated (SfxAllItemSet aSet)
-{
- SFX_ITEMSET_ARG (&aSet,pNumberInfoItem,SvxNumberInfoItem,SID_ATTR_NUMBERFORMAT_INFO,sal_False);
- SFX_ITEMSET_ARG (&aSet,pLinkItem,SfxLinkItem,SID_LINK_TYPE,sal_False);
- if (pNumberInfoItem)
- SetNumberFormatList(*pNumberInfoItem);
- if (pLinkItem)
- SetOkHdl(pLinkItem->GetValue());
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */