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 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove 25*b1cdbd2cSJim Jagielski #include "precompiled_extensions.hxx" 26*b1cdbd2cSJim Jagielski #include <sfx2/sfxsids.hrc> 27*b1cdbd2cSJim Jagielski #include "fontdialog.hxx" 28*b1cdbd2cSJim Jagielski #ifndef EXTENSIONS_PROPRESID_HRC 29*b1cdbd2cSJim Jagielski #include "formresid.hrc" 30*b1cdbd2cSJim Jagielski #endif 31*b1cdbd2cSJim Jagielski #ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ 32*b1cdbd2cSJim Jagielski #include "modulepcr.hxx" 33*b1cdbd2cSJim Jagielski #endif 34*b1cdbd2cSJim Jagielski #ifndef _EXTENSIONS_PROPCTRLR_FORMLOCALID_HRC_ 35*b1cdbd2cSJim Jagielski #include "formlocalid.hrc" 36*b1cdbd2cSJim Jagielski #endif 37*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx> 38*b1cdbd2cSJim Jagielski #ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_ 39*b1cdbd2cSJim Jagielski #include <toolkit/unohlp.hxx> 40*b1cdbd2cSJim Jagielski #endif 41*b1cdbd2cSJim Jagielski #include <comphelper/types.hxx> 42*b1cdbd2cSJim Jagielski #include <comphelper/extract.hxx> 43*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontDescriptor.hpp> 44*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontWeight.hpp> 45*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontSlant.hpp> 46*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontUnderline.hpp> 47*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontStrikeout.hpp> 48*b1cdbd2cSJim Jagielski #include "formstrings.hxx" 49*b1cdbd2cSJim Jagielski #include "fontitemids.hxx" 50*b1cdbd2cSJim Jagielski #include <editeng/charreliefitem.hxx> 51*b1cdbd2cSJim Jagielski #ifndef _SVX_EMPHITEM_HXX 52*b1cdbd2cSJim Jagielski #include <editeng/emphitem.hxx> 53*b1cdbd2cSJim Jagielski #endif 54*b1cdbd2cSJim Jagielski #include <editeng/fontitem.hxx> 55*b1cdbd2cSJim Jagielski #include <editeng/fhgtitem.hxx> 56*b1cdbd2cSJim Jagielski #include <editeng/postitem.hxx> 57*b1cdbd2cSJim Jagielski #include <editeng/wghtitem.hxx> 58*b1cdbd2cSJim Jagielski #include <editeng/udlnitem.hxx> 59*b1cdbd2cSJim Jagielski #include <editeng/crsditem.hxx> 60*b1cdbd2cSJim Jagielski #include <editeng/colritem.hxx> 61*b1cdbd2cSJim Jagielski #include <editeng/flstitem.hxx> 62*b1cdbd2cSJim Jagielski #include <editeng/langitem.hxx> 63*b1cdbd2cSJim Jagielski #include <editeng/wrlmitem.hxx> 64*b1cdbd2cSJim Jagielski #include <editeng/cmapitem.hxx> 65*b1cdbd2cSJim Jagielski #include <editeng/cntritem.hxx> 66*b1cdbd2cSJim Jagielski #include <editeng/shdditem.hxx> 67*b1cdbd2cSJim Jagielski #include <editeng/flstitem.hxx> 68*b1cdbd2cSJim Jagielski #include <svtools/ctrltool.hxx> 69*b1cdbd2cSJim Jagielski #include <tools/diagnose_ex.h> 70*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertyState.hpp> 71*b1cdbd2cSJim Jagielski #ifndef _SVX_SVXIDS_HRC 72*b1cdbd2cSJim Jagielski #include <svx/svxids.hrc> //CHINA001 73*b1cdbd2cSJim Jagielski #endif 74*b1cdbd2cSJim Jagielski #include <svx/svxdlg.hxx> //CHINA001 75*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc> //CHINA001 76*b1cdbd2cSJim Jagielski #include <svx/flagsdef.hxx> 77*b1cdbd2cSJim Jagielski //............................................................................ 78*b1cdbd2cSJim Jagielski namespace pcr 79*b1cdbd2cSJim Jagielski { 80*b1cdbd2cSJim Jagielski //............................................................................ 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno; 83*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans; 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski //======================================================================== 86*b1cdbd2cSJim Jagielski //= OFontPropertyExtractor 87*b1cdbd2cSJim Jagielski //======================================================================== 88*b1cdbd2cSJim Jagielski class OFontPropertyExtractor 89*b1cdbd2cSJim Jagielski { 90*b1cdbd2cSJim Jagielski protected: 91*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > 92*b1cdbd2cSJim Jagielski m_xPropValueAccess; 93*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyState > 94*b1cdbd2cSJim Jagielski m_xPropStateAccess; 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski public: 97*b1cdbd2cSJim Jagielski OFontPropertyExtractor( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& 98*b1cdbd2cSJim Jagielski _rxProps ); 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski public: 101*b1cdbd2cSJim Jagielski sal_Bool getCheckFontProperty(const ::rtl::OUString& _rPropName, ::com::sun::star::uno::Any& _rValue); 102*b1cdbd2cSJim Jagielski ::rtl::OUString getStringFontProperty(const ::rtl::OUString& _rPropName, const ::rtl::OUString& _rDefault); 103*b1cdbd2cSJim Jagielski sal_Int16 getInt16FontProperty(const ::rtl::OUString& _rPropName, const sal_Int16 _nDefault); 104*b1cdbd2cSJim Jagielski sal_Int32 getInt32FontProperty(const ::rtl::OUString& _rPropName, const sal_Int32 _nDefault); 105*b1cdbd2cSJim Jagielski float getFloatFontProperty(const ::rtl::OUString& _rPropName, const float _nDefault); 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski void invalidateItem( 108*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rPropName, 109*b1cdbd2cSJim Jagielski sal_uInt16 _nItemId, 110*b1cdbd2cSJim Jagielski SfxItemSet& _rSet, 111*b1cdbd2cSJim Jagielski sal_Bool _bForceInvalidation = sal_False); 112*b1cdbd2cSJim Jagielski }; 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ OFontPropertyExtractor(const Reference<XPropertySet> & _rxProps)115*b1cdbd2cSJim Jagielski OFontPropertyExtractor::OFontPropertyExtractor(const Reference< XPropertySet >& _rxProps) 116*b1cdbd2cSJim Jagielski :m_xPropValueAccess(_rxProps) 117*b1cdbd2cSJim Jagielski ,m_xPropStateAccess(_rxProps, UNO_QUERY) 118*b1cdbd2cSJim Jagielski { 119*b1cdbd2cSJim Jagielski OSL_ENSURE(m_xPropValueAccess.is(), "OFontPropertyExtractor::OFontPropertyExtractor: invalid property set!"); 120*b1cdbd2cSJim Jagielski } 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ getCheckFontProperty(const::rtl::OUString & _rPropName,Any & _rValue)123*b1cdbd2cSJim Jagielski sal_Bool OFontPropertyExtractor::getCheckFontProperty(const ::rtl::OUString& _rPropName, Any& _rValue) 124*b1cdbd2cSJim Jagielski { 125*b1cdbd2cSJim Jagielski _rValue = m_xPropValueAccess->getPropertyValue(_rPropName); 126*b1cdbd2cSJim Jagielski if (m_xPropStateAccess.is()) 127*b1cdbd2cSJim Jagielski return PropertyState_DEFAULT_VALUE == m_xPropStateAccess->getPropertyState(_rPropName); 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski return sal_False; 130*b1cdbd2cSJim Jagielski } 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ getStringFontProperty(const::rtl::OUString & _rPropName,const::rtl::OUString & _rDefault)133*b1cdbd2cSJim Jagielski ::rtl::OUString OFontPropertyExtractor::getStringFontProperty(const ::rtl::OUString& _rPropName, const ::rtl::OUString& _rDefault) 134*b1cdbd2cSJim Jagielski { 135*b1cdbd2cSJim Jagielski Any aValue; 136*b1cdbd2cSJim Jagielski if (getCheckFontProperty(_rPropName, aValue)) 137*b1cdbd2cSJim Jagielski return _rDefault; 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski return ::comphelper::getString(aValue); 140*b1cdbd2cSJim Jagielski } 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ getInt16FontProperty(const::rtl::OUString & _rPropName,const sal_Int16 _nDefault)143*b1cdbd2cSJim Jagielski sal_Int16 OFontPropertyExtractor::getInt16FontProperty(const ::rtl::OUString& _rPropName, const sal_Int16 _nDefault) 144*b1cdbd2cSJim Jagielski { 145*b1cdbd2cSJim Jagielski Any aValue; 146*b1cdbd2cSJim Jagielski if (getCheckFontProperty(_rPropName, aValue)) 147*b1cdbd2cSJim Jagielski return _nDefault; 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski sal_Int32 nValue(_nDefault); 150*b1cdbd2cSJim Jagielski ::cppu::enum2int(nValue, aValue); 151*b1cdbd2cSJim Jagielski return (sal_Int16)nValue; 152*b1cdbd2cSJim Jagielski } 153*b1cdbd2cSJim Jagielski 154*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ getInt32FontProperty(const::rtl::OUString & _rPropName,const sal_Int32 _nDefault)155*b1cdbd2cSJim Jagielski sal_Int32 OFontPropertyExtractor::getInt32FontProperty(const ::rtl::OUString& _rPropName, const sal_Int32 _nDefault) 156*b1cdbd2cSJim Jagielski { 157*b1cdbd2cSJim Jagielski Any aValue; 158*b1cdbd2cSJim Jagielski if (getCheckFontProperty(_rPropName, aValue)) 159*b1cdbd2cSJim Jagielski return _nDefault; 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski sal_Int32 nValue(_nDefault); 162*b1cdbd2cSJim Jagielski ::cppu::enum2int(nValue, aValue); 163*b1cdbd2cSJim Jagielski return nValue; 164*b1cdbd2cSJim Jagielski } 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ getFloatFontProperty(const::rtl::OUString & _rPropName,const float _nDefault)167*b1cdbd2cSJim Jagielski float OFontPropertyExtractor::getFloatFontProperty(const ::rtl::OUString& _rPropName, const float _nDefault) 168*b1cdbd2cSJim Jagielski { 169*b1cdbd2cSJim Jagielski Any aValue; 170*b1cdbd2cSJim Jagielski if (getCheckFontProperty(_rPropName, aValue)) 171*b1cdbd2cSJim Jagielski return _nDefault; 172*b1cdbd2cSJim Jagielski 173*b1cdbd2cSJim Jagielski return ::comphelper::getFloat(aValue); 174*b1cdbd2cSJim Jagielski } 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ invalidateItem(const::rtl::OUString & _rPropName,sal_uInt16 _nItemId,SfxItemSet & _rSet,sal_Bool _bForceInvalidation)177*b1cdbd2cSJim Jagielski void OFontPropertyExtractor::invalidateItem(const ::rtl::OUString& _rPropName, sal_uInt16 _nItemId, SfxItemSet& _rSet, sal_Bool _bForceInvalidation) 178*b1cdbd2cSJim Jagielski { 179*b1cdbd2cSJim Jagielski if ( _bForceInvalidation 180*b1cdbd2cSJim Jagielski || ( m_xPropStateAccess.is() 181*b1cdbd2cSJim Jagielski && (PropertyState_AMBIGUOUS_VALUE == m_xPropStateAccess->getPropertyState(_rPropName)) 182*b1cdbd2cSJim Jagielski ) 183*b1cdbd2cSJim Jagielski ) 184*b1cdbd2cSJim Jagielski _rSet.InvalidateItem(_nItemId); 185*b1cdbd2cSJim Jagielski } 186*b1cdbd2cSJim Jagielski 187*b1cdbd2cSJim Jagielski //======================================================================== 188*b1cdbd2cSJim Jagielski //= ControlCharacterDialog 189*b1cdbd2cSJim Jagielski //======================================================================== 190*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ ControlCharacterDialog(Window * _pParent,const SfxItemSet & _rCoreSet)191*b1cdbd2cSJim Jagielski ControlCharacterDialog::ControlCharacterDialog(Window* _pParent, const SfxItemSet& _rCoreSet) 192*b1cdbd2cSJim Jagielski :SfxTabDialog(_pParent, PcrRes(RID_TABDLG_FONTDIALOG), &_rCoreSet) 193*b1cdbd2cSJim Jagielski { 194*b1cdbd2cSJim Jagielski FreeResource(); 195*b1cdbd2cSJim Jagielski SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); 196*b1cdbd2cSJim Jagielski DBG_ASSERT(pFact, "CreateFactory fail!"); 197*b1cdbd2cSJim Jagielski AddTabPage(TABPAGE_CHARACTERS, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_CHAR_NAME), 0 ); 198*b1cdbd2cSJim Jagielski AddTabPage(TABPAGE_CHARACTERS_EXT, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_CHAR_EFFECTS), 0 ); 199*b1cdbd2cSJim Jagielski } 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ ~ControlCharacterDialog()202*b1cdbd2cSJim Jagielski ControlCharacterDialog::~ControlCharacterDialog() 203*b1cdbd2cSJim Jagielski { 204*b1cdbd2cSJim Jagielski } 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ translatePropertiesToItems(const Reference<XPropertySet> & _rxModel,SfxItemSet * _pSet)207*b1cdbd2cSJim Jagielski void ControlCharacterDialog::translatePropertiesToItems(const Reference< XPropertySet >& _rxModel, SfxItemSet* _pSet) 208*b1cdbd2cSJim Jagielski { 209*b1cdbd2cSJim Jagielski OSL_ENSURE(_pSet && _rxModel.is(), "ControlCharacterDialog::translatePropertiesToItems: invalid arguments!"); 210*b1cdbd2cSJim Jagielski if (!_pSet || !_rxModel.is()) 211*b1cdbd2cSJim Jagielski return; 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski try 214*b1cdbd2cSJim Jagielski { 215*b1cdbd2cSJim Jagielski OFontPropertyExtractor aPropExtractor(_rxModel); 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski // some items, which may be in default state, have to be filled with non-void information 218*b1cdbd2cSJim Jagielski Font aDefaultVCLFont = Application::GetDefaultDevice()->GetSettings().GetStyleSettings().GetAppFont(); 219*b1cdbd2cSJim Jagielski ::com::sun::star::awt::FontDescriptor aDefaultFont = VCLUnoHelper::CreateFontDescriptor(aDefaultVCLFont); 220*b1cdbd2cSJim Jagielski 221*b1cdbd2cSJim Jagielski // get the current properties 222*b1cdbd2cSJim Jagielski ::rtl::OUString aFontName = aPropExtractor.getStringFontProperty(PROPERTY_FONT_NAME, aDefaultFont.Name); 223*b1cdbd2cSJim Jagielski ::rtl::OUString aFontStyleName = aPropExtractor.getStringFontProperty(PROPERTY_FONT_STYLENAME, aDefaultFont.StyleName); 224*b1cdbd2cSJim Jagielski sal_Int16 nFontFamily = aPropExtractor.getInt16FontProperty(PROPERTY_FONT_FAMILY, aDefaultFont.Family); 225*b1cdbd2cSJim Jagielski sal_Int16 nFontCharset = aPropExtractor.getInt16FontProperty(PROPERTY_FONT_CHARSET, aDefaultFont.CharSet); 226*b1cdbd2cSJim Jagielski float nFontHeight = aPropExtractor.getFloatFontProperty(PROPERTY_FONT_HEIGHT, (float)aDefaultFont.Height); 227*b1cdbd2cSJim Jagielski float nFontWeight = aPropExtractor.getFloatFontProperty(PROPERTY_FONT_WEIGHT, aDefaultFont.Weight); 228*b1cdbd2cSJim Jagielski sal_Int16 nFontSlant = aPropExtractor.getInt16FontProperty(PROPERTY_FONT_SLANT, (sal_Int16)aDefaultFont.Slant); 229*b1cdbd2cSJim Jagielski sal_Int16 nFontUnderline = aPropExtractor.getInt16FontProperty(PROPERTY_FONT_UNDERLINE, aDefaultFont.Underline); 230*b1cdbd2cSJim Jagielski sal_Int16 nFontStrikeout = aPropExtractor.getInt16FontProperty(PROPERTY_FONT_STRIKEOUT, aDefaultFont.Strikeout); 231*b1cdbd2cSJim Jagielski 232*b1cdbd2cSJim Jagielski sal_Int32 nTextLineColor = aPropExtractor.getInt32FontProperty(PROPERTY_TEXTLINECOLOR, COL_AUTO); 233*b1cdbd2cSJim Jagielski sal_Int16 nFontRelief = aPropExtractor.getInt16FontProperty(PROPERTY_FONT_RELIEF, (sal_Int16)aDefaultVCLFont.GetRelief()); 234*b1cdbd2cSJim Jagielski sal_Int16 nFontEmphasisMark = aPropExtractor.getInt16FontProperty(PROPERTY_FONT_EMPHASIS_MARK, aDefaultVCLFont.GetEmphasisMark()); 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim Jagielski Any aValue; 237*b1cdbd2cSJim Jagielski sal_Bool bWordLineMode = aPropExtractor.getCheckFontProperty(PROPERTY_WORDLINEMODE, aValue) ? aDefaultFont.WordLineMode : ::cppu::any2bool(aValue); 238*b1cdbd2cSJim Jagielski sal_Int32 nColor32 = aPropExtractor.getInt32FontProperty(PROPERTY_TEXTCOLOR, 0); 239*b1cdbd2cSJim Jagielski 240*b1cdbd2cSJim Jagielski // build SfxItems with the values 241*b1cdbd2cSJim Jagielski SvxFontItem aFontItem((FontFamily)nFontFamily, aFontName, aFontStyleName, PITCH_DONTKNOW, nFontCharset, CFID_FONT); 242*b1cdbd2cSJim Jagielski 243*b1cdbd2cSJim Jagielski nFontHeight = (float)OutputDevice::LogicToLogic(Size(0, (sal_Int32)nFontHeight), MAP_POINT, MAP_TWIP).Height(); 244*b1cdbd2cSJim Jagielski SvxFontHeightItem aSvxFontHeightItem((sal_uInt32)nFontHeight,100,CFID_HEIGHT); 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski FontWeight eWeight=VCLUnoHelper::ConvertFontWeight(nFontWeight); 247*b1cdbd2cSJim Jagielski FontItalic eItalic=(FontItalic)nFontSlant; 248*b1cdbd2cSJim Jagielski FontUnderline eUnderline=(FontUnderline)nFontUnderline; 249*b1cdbd2cSJim Jagielski FontStrikeout eStrikeout=(FontStrikeout)nFontStrikeout; 250*b1cdbd2cSJim Jagielski 251*b1cdbd2cSJim Jagielski SvxWeightItem aWeightItem(eWeight,CFID_WEIGHT); 252*b1cdbd2cSJim Jagielski SvxPostureItem aPostureItem(eItalic,CFID_POSTURE); 253*b1cdbd2cSJim Jagielski 254*b1cdbd2cSJim Jagielski SvxCrossedOutItem aCrossedOutItem(eStrikeout,CFID_STRIKEOUT); 255*b1cdbd2cSJim Jagielski SvxWordLineModeItem aWordLineModeItem(bWordLineMode, CFID_WORDLINEMODE); 256*b1cdbd2cSJim Jagielski 257*b1cdbd2cSJim Jagielski SvxUnderlineItem aUnderlineItem(eUnderline,CFID_UNDERLINE); 258*b1cdbd2cSJim Jagielski aUnderlineItem.SetColor(Color(nTextLineColor)); 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski SvxColorItem aSvxColorItem(nColor32,CFID_CHARCOLOR); 261*b1cdbd2cSJim Jagielski SvxLanguageItem aLanguageItem(Application::GetSettings().GetUILanguage(), CFID_LANGUAGE); 262*b1cdbd2cSJim Jagielski 263*b1cdbd2cSJim Jagielski // the 2 CJK props 264*b1cdbd2cSJim Jagielski SvxCharReliefItem aFontReliefItem((FontRelief)nFontRelief, CFID_RELIEF); 265*b1cdbd2cSJim Jagielski SvxEmphasisMarkItem aEmphasisMarkitem((FontEmphasisMark)nFontEmphasisMark, CFID_EMPHASIS); 266*b1cdbd2cSJim Jagielski 267*b1cdbd2cSJim Jagielski _pSet->Put(aFontItem, CFID_FONT); 268*b1cdbd2cSJim Jagielski _pSet->Put(aSvxFontHeightItem,CFID_HEIGHT); 269*b1cdbd2cSJim Jagielski _pSet->Put(aWeightItem, CFID_WEIGHT); 270*b1cdbd2cSJim Jagielski _pSet->Put(aPostureItem, CFID_POSTURE); 271*b1cdbd2cSJim Jagielski _pSet->Put(aLanguageItem, CFID_LANGUAGE); 272*b1cdbd2cSJim Jagielski _pSet->Put(aUnderlineItem,CFID_UNDERLINE); 273*b1cdbd2cSJim Jagielski _pSet->Put(aCrossedOutItem,CFID_STRIKEOUT); 274*b1cdbd2cSJim Jagielski _pSet->Put(aWordLineModeItem, CFID_WORDLINEMODE); 275*b1cdbd2cSJim Jagielski _pSet->Put(aSvxColorItem, CFID_CHARCOLOR); 276*b1cdbd2cSJim Jagielski _pSet->Put(aFontReliefItem, CFID_RELIEF); 277*b1cdbd2cSJim Jagielski _pSet->Put(aEmphasisMarkitem, CFID_EMPHASIS); 278*b1cdbd2cSJim Jagielski 279*b1cdbd2cSJim Jagielski aPropExtractor.invalidateItem(PROPERTY_FONT_NAME, CFID_FONT, *_pSet); 280*b1cdbd2cSJim Jagielski aPropExtractor.invalidateItem(PROPERTY_FONT_HEIGHT, CFID_HEIGHT, *_pSet); 281*b1cdbd2cSJim Jagielski aPropExtractor.invalidateItem(PROPERTY_FONT_WEIGHT, CFID_WEIGHT, *_pSet, ::com::sun::star::awt::FontWeight::DONTKNOW == nFontWeight); 282*b1cdbd2cSJim Jagielski aPropExtractor.invalidateItem(PROPERTY_FONT_SLANT, CFID_POSTURE, *_pSet, ::com::sun::star::awt::FontSlant_DONTKNOW == nFontSlant); 283*b1cdbd2cSJim Jagielski aPropExtractor.invalidateItem(PROPERTY_FONT_UNDERLINE, CFID_UNDERLINE, *_pSet, ::com::sun::star::awt::FontUnderline::DONTKNOW == nFontUnderline); 284*b1cdbd2cSJim Jagielski aPropExtractor.invalidateItem(PROPERTY_FONT_STRIKEOUT, CFID_STRIKEOUT, *_pSet, ::com::sun::star::awt::FontStrikeout::DONTKNOW == nFontStrikeout); 285*b1cdbd2cSJim Jagielski aPropExtractor.invalidateItem(PROPERTY_WORDLINEMODE, CFID_WORDLINEMODE, *_pSet); 286*b1cdbd2cSJim Jagielski aPropExtractor.invalidateItem(PROPERTY_TEXTCOLOR, CFID_CHARCOLOR, *_pSet); 287*b1cdbd2cSJim Jagielski aPropExtractor.invalidateItem(PROPERTY_FONT_RELIEF, CFID_RELIEF, *_pSet); 288*b1cdbd2cSJim Jagielski aPropExtractor.invalidateItem(PROPERTY_FONT_EMPHASIS_MARK, CFID_EMPHASIS, *_pSet); 289*b1cdbd2cSJim Jagielski } 290*b1cdbd2cSJim Jagielski catch (Exception&) 291*b1cdbd2cSJim Jagielski { 292*b1cdbd2cSJim Jagielski DBG_ERROR("ControlCharacterDialog::translatePropertiesToItems: caught an exception!"); 293*b1cdbd2cSJim Jagielski } 294*b1cdbd2cSJim Jagielski 295*b1cdbd2cSJim Jagielski _pSet->DisableItem(SID_ATTR_CHAR_CJK_FONT); 296*b1cdbd2cSJim Jagielski _pSet->DisableItem(SID_ATTR_CHAR_CJK_FONTHEIGHT); 297*b1cdbd2cSJim Jagielski _pSet->DisableItem(SID_ATTR_CHAR_CJK_LANGUAGE); 298*b1cdbd2cSJim Jagielski _pSet->DisableItem(SID_ATTR_CHAR_CJK_POSTURE); 299*b1cdbd2cSJim Jagielski _pSet->DisableItem(SID_ATTR_CHAR_CJK_WEIGHT); 300*b1cdbd2cSJim Jagielski 301*b1cdbd2cSJim Jagielski _pSet->DisableItem(SID_ATTR_CHAR_CASEMAP); 302*b1cdbd2cSJim Jagielski _pSet->DisableItem(SID_ATTR_CHAR_CONTOUR); 303*b1cdbd2cSJim Jagielski _pSet->DisableItem(SID_ATTR_CHAR_SHADOWED); 304*b1cdbd2cSJim Jagielski 305*b1cdbd2cSJim Jagielski } 306*b1cdbd2cSJim Jagielski 307*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ 308*b1cdbd2cSJim Jagielski namespace 309*b1cdbd2cSJim Jagielski { lcl_pushBackPropertyValue(Sequence<NamedValue> & _out_properties,const::rtl::OUString & _name,const Any & _value)310*b1cdbd2cSJim Jagielski void lcl_pushBackPropertyValue( Sequence< NamedValue >& _out_properties, const ::rtl::OUString& _name, const Any& _value ) 311*b1cdbd2cSJim Jagielski { 312*b1cdbd2cSJim Jagielski _out_properties.realloc( _out_properties.getLength() + 1 ); 313*b1cdbd2cSJim Jagielski _out_properties[ _out_properties.getLength() - 1 ] = NamedValue( _name, _value ); 314*b1cdbd2cSJim Jagielski } 315*b1cdbd2cSJim Jagielski } 316*b1cdbd2cSJim Jagielski 317*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ translateItemsToProperties(const SfxItemSet & _rSet,Sequence<NamedValue> & _out_properties)318*b1cdbd2cSJim Jagielski void ControlCharacterDialog::translateItemsToProperties( const SfxItemSet& _rSet, Sequence< NamedValue >& _out_properties ) 319*b1cdbd2cSJim Jagielski { 320*b1cdbd2cSJim Jagielski _out_properties.realloc( 0 ); 321*b1cdbd2cSJim Jagielski 322*b1cdbd2cSJim Jagielski try 323*b1cdbd2cSJim Jagielski { 324*b1cdbd2cSJim Jagielski // -------------------------- 325*b1cdbd2cSJim Jagielski // font name 326*b1cdbd2cSJim Jagielski SfxItemState eState = _rSet.GetItemState(CFID_FONT); 327*b1cdbd2cSJim Jagielski 328*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_SET ) 329*b1cdbd2cSJim Jagielski { 330*b1cdbd2cSJim Jagielski const SvxFontItem& rFontItem = 331*b1cdbd2cSJim Jagielski static_cast<const SvxFontItem&>(_rSet.Get(CFID_FONT)); 332*b1cdbd2cSJim Jagielski 333*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_NAME , makeAny(::rtl::OUString(rFontItem.GetFamilyName()))); 334*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_STYLENAME, makeAny(::rtl::OUString(rFontItem.GetStyleName()))); 335*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_FAMILY , makeAny((sal_Int16)rFontItem.GetFamily())); 336*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_CHARSET , makeAny((sal_Int16)rFontItem.GetCharSet())); 337*b1cdbd2cSJim Jagielski } 338*b1cdbd2cSJim Jagielski 339*b1cdbd2cSJim Jagielski // -------------------------- 340*b1cdbd2cSJim Jagielski // font height 341*b1cdbd2cSJim Jagielski eState = _rSet.GetItemState(CFID_HEIGHT); 342*b1cdbd2cSJim Jagielski 343*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_SET ) 344*b1cdbd2cSJim Jagielski { 345*b1cdbd2cSJim Jagielski const SvxFontHeightItem& rSvxFontHeightItem = 346*b1cdbd2cSJim Jagielski static_cast<const SvxFontHeightItem&>(_rSet.Get(CFID_HEIGHT)); 347*b1cdbd2cSJim Jagielski 348*b1cdbd2cSJim Jagielski float nHeight = (float)OutputDevice::LogicToLogic(Size(0, rSvxFontHeightItem.GetHeight()), MAP_TWIP, MAP_POINT).Height(); 349*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_HEIGHT,makeAny(nHeight)); 350*b1cdbd2cSJim Jagielski 351*b1cdbd2cSJim Jagielski } 352*b1cdbd2cSJim Jagielski 353*b1cdbd2cSJim Jagielski // -------------------------- 354*b1cdbd2cSJim Jagielski // font weight 355*b1cdbd2cSJim Jagielski eState = _rSet.GetItemState(CFID_WEIGHT); 356*b1cdbd2cSJim Jagielski 357*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_SET ) 358*b1cdbd2cSJim Jagielski { 359*b1cdbd2cSJim Jagielski const SvxWeightItem& rWeightItem = 360*b1cdbd2cSJim Jagielski static_cast<const SvxWeightItem&>(_rSet.Get(CFID_WEIGHT)); 361*b1cdbd2cSJim Jagielski 362*b1cdbd2cSJim Jagielski float nWeight = VCLUnoHelper::ConvertFontWeight( rWeightItem.GetWeight()); 363*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_WEIGHT,makeAny(nWeight)); 364*b1cdbd2cSJim Jagielski } 365*b1cdbd2cSJim Jagielski 366*b1cdbd2cSJim Jagielski // -------------------------- 367*b1cdbd2cSJim Jagielski // font slant 368*b1cdbd2cSJim Jagielski eState = _rSet.GetItemState(CFID_POSTURE); 369*b1cdbd2cSJim Jagielski 370*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_SET ) 371*b1cdbd2cSJim Jagielski { 372*b1cdbd2cSJim Jagielski const SvxPostureItem& rPostureItem = 373*b1cdbd2cSJim Jagielski static_cast<const SvxPostureItem&>(_rSet.Get(CFID_POSTURE)); 374*b1cdbd2cSJim Jagielski 375*b1cdbd2cSJim Jagielski ::com::sun::star::awt::FontSlant eSlant = (::com::sun::star::awt::FontSlant)rPostureItem.GetPosture(); 376*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_SLANT, makeAny((sal_Int16)eSlant)); 377*b1cdbd2cSJim Jagielski } 378*b1cdbd2cSJim Jagielski 379*b1cdbd2cSJim Jagielski // -------------------------- 380*b1cdbd2cSJim Jagielski // font underline 381*b1cdbd2cSJim Jagielski eState = _rSet.GetItemState(CFID_UNDERLINE); 382*b1cdbd2cSJim Jagielski 383*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_SET ) 384*b1cdbd2cSJim Jagielski { 385*b1cdbd2cSJim Jagielski const SvxUnderlineItem& rUnderlineItem = 386*b1cdbd2cSJim Jagielski static_cast<const SvxUnderlineItem&>(_rSet.Get(CFID_UNDERLINE)); 387*b1cdbd2cSJim Jagielski 388*b1cdbd2cSJim Jagielski sal_Int16 nUnderline = (sal_Int16)rUnderlineItem.GetLineStyle(); 389*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_UNDERLINE,makeAny(nUnderline)); 390*b1cdbd2cSJim Jagielski 391*b1cdbd2cSJim Jagielski // the text line color is transported in this item, too 392*b1cdbd2cSJim Jagielski sal_Int32 nColor = rUnderlineItem.GetColor().GetColor(); 393*b1cdbd2cSJim Jagielski 394*b1cdbd2cSJim Jagielski Any aUnoColor; 395*b1cdbd2cSJim Jagielski if (COL_AUTO != (sal_uInt32)nColor) 396*b1cdbd2cSJim Jagielski aUnoColor <<= nColor; 397*b1cdbd2cSJim Jagielski 398*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_TEXTLINECOLOR, aUnoColor ); 399*b1cdbd2cSJim Jagielski } 400*b1cdbd2cSJim Jagielski 401*b1cdbd2cSJim Jagielski // -------------------------- 402*b1cdbd2cSJim Jagielski // font strikeout 403*b1cdbd2cSJim Jagielski eState = _rSet.GetItemState(CFID_STRIKEOUT); 404*b1cdbd2cSJim Jagielski 405*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_SET ) 406*b1cdbd2cSJim Jagielski { 407*b1cdbd2cSJim Jagielski const SvxCrossedOutItem& rCrossedOutItem = 408*b1cdbd2cSJim Jagielski static_cast<const SvxCrossedOutItem&>(_rSet.Get(CFID_STRIKEOUT)); 409*b1cdbd2cSJim Jagielski 410*b1cdbd2cSJim Jagielski sal_Int16 nStrikeout = (sal_Int16)rCrossedOutItem.GetStrikeout(); 411*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_STRIKEOUT,makeAny(nStrikeout)); 412*b1cdbd2cSJim Jagielski } 413*b1cdbd2cSJim Jagielski 414*b1cdbd2cSJim Jagielski 415*b1cdbd2cSJim Jagielski // -------------------------- 416*b1cdbd2cSJim Jagielski // font wordline mode 417*b1cdbd2cSJim Jagielski eState = _rSet.GetItemState(CFID_WORDLINEMODE); 418*b1cdbd2cSJim Jagielski 419*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_SET ) 420*b1cdbd2cSJim Jagielski { 421*b1cdbd2cSJim Jagielski const SvxWordLineModeItem& rWordLineModeItem = 422*b1cdbd2cSJim Jagielski static_cast<const SvxWordLineModeItem&>(_rSet.Get(CFID_WORDLINEMODE)); 423*b1cdbd2cSJim Jagielski 424*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_WORDLINEMODE, ::cppu::bool2any(rWordLineModeItem.GetValue())); 425*b1cdbd2cSJim Jagielski } 426*b1cdbd2cSJim Jagielski 427*b1cdbd2cSJim Jagielski 428*b1cdbd2cSJim Jagielski // -------------------------- 429*b1cdbd2cSJim Jagielski // text color 430*b1cdbd2cSJim Jagielski eState = _rSet.GetItemState(CFID_CHARCOLOR); 431*b1cdbd2cSJim Jagielski 432*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_SET ) 433*b1cdbd2cSJim Jagielski { 434*b1cdbd2cSJim Jagielski const SvxColorItem& rColorItem = 435*b1cdbd2cSJim Jagielski static_cast<const SvxColorItem&>(_rSet.Get(CFID_CHARCOLOR)); 436*b1cdbd2cSJim Jagielski 437*b1cdbd2cSJim Jagielski sal_Int32 nColor = rColorItem.GetValue().GetColor(); 438*b1cdbd2cSJim Jagielski 439*b1cdbd2cSJim Jagielski Any aUnoColor; 440*b1cdbd2cSJim Jagielski if (COL_AUTO != (sal_uInt32)nColor) 441*b1cdbd2cSJim Jagielski aUnoColor <<= nColor; 442*b1cdbd2cSJim Jagielski 443*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_TEXTCOLOR, aUnoColor ); 444*b1cdbd2cSJim Jagielski } 445*b1cdbd2cSJim Jagielski 446*b1cdbd2cSJim Jagielski // -------------------------- 447*b1cdbd2cSJim Jagielski // font relief 448*b1cdbd2cSJim Jagielski eState = _rSet.GetItemState(CFID_RELIEF); 449*b1cdbd2cSJim Jagielski 450*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_SET ) 451*b1cdbd2cSJim Jagielski { 452*b1cdbd2cSJim Jagielski const SvxCharReliefItem& rReliefItem = 453*b1cdbd2cSJim Jagielski static_cast<const SvxCharReliefItem&>(_rSet.Get(CFID_RELIEF)); 454*b1cdbd2cSJim Jagielski 455*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_RELIEF, makeAny((sal_Int16)rReliefItem.GetValue()) ); 456*b1cdbd2cSJim Jagielski } 457*b1cdbd2cSJim Jagielski 458*b1cdbd2cSJim Jagielski // -------------------------- 459*b1cdbd2cSJim Jagielski // font emphasis mark 460*b1cdbd2cSJim Jagielski eState = _rSet.GetItemState(CFID_EMPHASIS); 461*b1cdbd2cSJim Jagielski 462*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_SET ) 463*b1cdbd2cSJim Jagielski { 464*b1cdbd2cSJim Jagielski const SvxEmphasisMarkItem& rEmphMarkItem = 465*b1cdbd2cSJim Jagielski static_cast<const SvxEmphasisMarkItem&>(_rSet.Get(CFID_EMPHASIS)); 466*b1cdbd2cSJim Jagielski 467*b1cdbd2cSJim Jagielski lcl_pushBackPropertyValue( _out_properties, PROPERTY_FONT_EMPHASIS_MARK, makeAny((sal_Int16)rEmphMarkItem.GetEmphasisMark()) ); 468*b1cdbd2cSJim Jagielski } 469*b1cdbd2cSJim Jagielski } 470*b1cdbd2cSJim Jagielski catch (const Exception& ) 471*b1cdbd2cSJim Jagielski { 472*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION(); 473*b1cdbd2cSJim Jagielski } 474*b1cdbd2cSJim Jagielski } 475*b1cdbd2cSJim Jagielski 476*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ translateItemsToProperties(const SfxItemSet & _rSet,const Reference<XPropertySet> & _rxModel)477*b1cdbd2cSJim Jagielski void ControlCharacterDialog::translateItemsToProperties( const SfxItemSet& _rSet, const Reference< XPropertySet >& _rxModel) 478*b1cdbd2cSJim Jagielski { 479*b1cdbd2cSJim Jagielski OSL_ENSURE( _rxModel.is(), "ControlCharacterDialog::translateItemsToProperties: invalid arguments!" ); 480*b1cdbd2cSJim Jagielski if ( !_rxModel.is()) 481*b1cdbd2cSJim Jagielski return; 482*b1cdbd2cSJim Jagielski 483*b1cdbd2cSJim Jagielski Sequence< NamedValue > aPropertyValues; 484*b1cdbd2cSJim Jagielski translateItemsToProperties( _rSet, aPropertyValues ); 485*b1cdbd2cSJim Jagielski try 486*b1cdbd2cSJim Jagielski { 487*b1cdbd2cSJim Jagielski const NamedValue* propertyValue = aPropertyValues.getConstArray(); 488*b1cdbd2cSJim Jagielski const NamedValue* propertyValueEnd = propertyValue + aPropertyValues.getLength(); 489*b1cdbd2cSJim Jagielski for ( ; propertyValue != propertyValueEnd; ++propertyValue ) 490*b1cdbd2cSJim Jagielski _rxModel->setPropertyValue( propertyValue->Name, propertyValue->Value ); 491*b1cdbd2cSJim Jagielski } 492*b1cdbd2cSJim Jagielski catch( const Exception& ) 493*b1cdbd2cSJim Jagielski { 494*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION(); 495*b1cdbd2cSJim Jagielski } 496*b1cdbd2cSJim Jagielski } 497*b1cdbd2cSJim Jagielski 498*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ createItemSet(SfxItemSet * & _rpSet,SfxItemPool * & _rpPool,SfxPoolItem ** & _rppDefaults)499*b1cdbd2cSJim Jagielski SfxItemSet* ControlCharacterDialog::createItemSet(SfxItemSet*& _rpSet, SfxItemPool*& _rpPool, SfxPoolItem**& _rppDefaults) 500*b1cdbd2cSJim Jagielski { 501*b1cdbd2cSJim Jagielski // just to be sure .... 502*b1cdbd2cSJim Jagielski _rpSet = NULL; 503*b1cdbd2cSJim Jagielski _rpPool = NULL; 504*b1cdbd2cSJim Jagielski _rppDefaults = NULL; 505*b1cdbd2cSJim Jagielski 506*b1cdbd2cSJim Jagielski // create and initialize the defaults 507*b1cdbd2cSJim Jagielski _rppDefaults = new SfxPoolItem*[CFID_LAST_ITEM_ID - CFID_FIRST_ITEM_ID + 1]; 508*b1cdbd2cSJim Jagielski 509*b1cdbd2cSJim Jagielski Font aDefaultVCLFont = Application::GetDefaultDevice()->GetSettings().GetStyleSettings().GetAppFont(); 510*b1cdbd2cSJim Jagielski 511*b1cdbd2cSJim Jagielski SfxPoolItem** pCounter = _rppDefaults; // want to modify this without affecting the out param _rppDefaults 512*b1cdbd2cSJim Jagielski *pCounter++ = new SvxFontItem(aDefaultVCLFont.GetFamily(), aDefaultVCLFont.GetName(), aDefaultVCLFont.GetStyleName(), aDefaultVCLFont.GetPitch(), aDefaultVCLFont.GetCharSet(), CFID_FONT); 513*b1cdbd2cSJim Jagielski *pCounter++ = new SvxFontHeightItem(aDefaultVCLFont.GetHeight(), 100, CFID_HEIGHT); 514*b1cdbd2cSJim Jagielski *pCounter++ = new SvxWeightItem(aDefaultVCLFont.GetWeight(), CFID_WEIGHT); 515*b1cdbd2cSJim Jagielski *pCounter++ = new SvxPostureItem(aDefaultVCLFont.GetItalic(), CFID_POSTURE); 516*b1cdbd2cSJim Jagielski *pCounter++ = new SvxLanguageItem(Application::GetSettings().GetUILanguage(), CFID_LANGUAGE); 517*b1cdbd2cSJim Jagielski *pCounter++ = new SvxUnderlineItem(aDefaultVCLFont.GetUnderline(), CFID_UNDERLINE); 518*b1cdbd2cSJim Jagielski *pCounter++ = new SvxCrossedOutItem(aDefaultVCLFont.GetStrikeout(), CFID_STRIKEOUT); 519*b1cdbd2cSJim Jagielski *pCounter++ = new SvxWordLineModeItem(aDefaultVCLFont.IsWordLineMode(), CFID_WORDLINEMODE); 520*b1cdbd2cSJim Jagielski *pCounter++ = new SvxColorItem(aDefaultVCLFont.GetColor(), CFID_CHARCOLOR); 521*b1cdbd2cSJim Jagielski *pCounter++ = new SvxCharReliefItem(aDefaultVCLFont.GetRelief(), CFID_RELIEF); 522*b1cdbd2cSJim Jagielski *pCounter++ = new SvxEmphasisMarkItem(aDefaultVCLFont.GetEmphasisMark(), CFID_EMPHASIS); 523*b1cdbd2cSJim Jagielski 524*b1cdbd2cSJim Jagielski *pCounter++ = new SvxFontItem(aDefaultVCLFont.GetFamily(), aDefaultVCLFont.GetName(), aDefaultVCLFont.GetStyleName(), aDefaultVCLFont.GetPitch(), aDefaultVCLFont.GetCharSet(), CFID_CJK_FONT); 525*b1cdbd2cSJim Jagielski *pCounter++ = new SvxFontHeightItem(aDefaultVCLFont.GetHeight(), 100, CFID_CJK_HEIGHT); 526*b1cdbd2cSJim Jagielski *pCounter++ = new SvxWeightItem(aDefaultVCLFont.GetWeight(), CFID_CJK_WEIGHT); 527*b1cdbd2cSJim Jagielski *pCounter++ = new SvxPostureItem(aDefaultVCLFont.GetItalic(), CFID_CJK_POSTURE); 528*b1cdbd2cSJim Jagielski *pCounter++ = new SvxLanguageItem(Application::GetSettings().GetUILanguage(), CFID_CJK_LANGUAGE); 529*b1cdbd2cSJim Jagielski 530*b1cdbd2cSJim Jagielski *pCounter++ = new SvxCaseMapItem(SVX_CASEMAP_NOT_MAPPED, CFID_CASEMAP); 531*b1cdbd2cSJim Jagielski *pCounter++ = new SvxContourItem(sal_False, CFID_CONTOUR); 532*b1cdbd2cSJim Jagielski *pCounter++ = new SvxShadowedItem(sal_False, CFID_SHADOWED); 533*b1cdbd2cSJim Jagielski 534*b1cdbd2cSJim Jagielski *pCounter++ = new SvxFontListItem (new FontList(Application::GetDefaultDevice()), CFID_FONTLIST); 535*b1cdbd2cSJim Jagielski 536*b1cdbd2cSJim Jagielski // create the pool 537*b1cdbd2cSJim Jagielski static SfxItemInfo __READONLY_DATA aItemInfos[CFID_LAST_ITEM_ID - CFID_FIRST_ITEM_ID + 1] = 538*b1cdbd2cSJim Jagielski { 539*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_FONT, 0 }, 540*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_FONTHEIGHT, 0 }, 541*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_WEIGHT, 0 }, 542*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_POSTURE, 0 }, 543*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_LANGUAGE, 0 }, 544*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_UNDERLINE, 0 }, 545*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_STRIKEOUT, 0 }, 546*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_WORDLINEMODE, 0 }, 547*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_COLOR, 0 }, 548*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_RELIEF, 0 }, 549*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_EMPHASISMARK, 0 }, 550*b1cdbd2cSJim Jagielski { 0, 0 }, 551*b1cdbd2cSJim Jagielski { 0, 0 }, 552*b1cdbd2cSJim Jagielski { 0, 0 }, 553*b1cdbd2cSJim Jagielski { 0, 0 }, 554*b1cdbd2cSJim Jagielski { 0, 0 }, 555*b1cdbd2cSJim Jagielski { 0, 0 }, 556*b1cdbd2cSJim Jagielski { 0, 0 }, 557*b1cdbd2cSJim Jagielski { 0, 0 }, 558*b1cdbd2cSJim Jagielski { SID_ATTR_CHAR_FONTLIST, 0 } 559*b1cdbd2cSJim Jagielski }; 560*b1cdbd2cSJim Jagielski 561*b1cdbd2cSJim Jagielski _rpPool = new SfxItemPool(String::CreateFromAscii("PCRControlFontItemPool"), CFID_FIRST_ITEM_ID, CFID_LAST_ITEM_ID, 562*b1cdbd2cSJim Jagielski aItemInfos, _rppDefaults); 563*b1cdbd2cSJim Jagielski _rpPool->FreezeIdRanges(); 564*b1cdbd2cSJim Jagielski 565*b1cdbd2cSJim Jagielski // and, finally, the set 566*b1cdbd2cSJim Jagielski _rpSet = new SfxItemSet(*_rpPool, sal_True); 567*b1cdbd2cSJim Jagielski 568*b1cdbd2cSJim Jagielski return _rpSet; 569*b1cdbd2cSJim Jagielski } 570*b1cdbd2cSJim Jagielski 571*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- destroyItemSet(SfxItemSet * & _rpSet,SfxItemPool * & _rpPool,SfxPoolItem ** & _rppDefaults)572*b1cdbd2cSJim Jagielski void ControlCharacterDialog::destroyItemSet(SfxItemSet*& _rpSet, SfxItemPool*& _rpPool, SfxPoolItem**& _rppDefaults) 573*b1cdbd2cSJim Jagielski { 574*b1cdbd2cSJim Jagielski // from the pool, get and remember the font list (needs to be deleted) 575*b1cdbd2cSJim Jagielski const SvxFontListItem& rFontListItem = static_cast<const SvxFontListItem&>(_rpPool->GetDefaultItem(CFID_FONTLIST)); 576*b1cdbd2cSJim Jagielski const FontList* pFontList = rFontListItem.GetFontList(); 577*b1cdbd2cSJim Jagielski 578*b1cdbd2cSJim Jagielski // _first_ delete the set (refering the pool) 579*b1cdbd2cSJim Jagielski if (_rpSet) 580*b1cdbd2cSJim Jagielski { 581*b1cdbd2cSJim Jagielski delete _rpSet; 582*b1cdbd2cSJim Jagielski _rpSet = NULL; 583*b1cdbd2cSJim Jagielski } 584*b1cdbd2cSJim Jagielski 585*b1cdbd2cSJim Jagielski // delete the pool 586*b1cdbd2cSJim Jagielski if (_rpPool) 587*b1cdbd2cSJim Jagielski { 588*b1cdbd2cSJim Jagielski _rpPool->ReleaseDefaults(sal_True); 589*b1cdbd2cSJim Jagielski // the "true" means delete the items, too 590*b1cdbd2cSJim Jagielski SfxItemPool::Free(_rpPool); 591*b1cdbd2cSJim Jagielski _rpPool = NULL; 592*b1cdbd2cSJim Jagielski } 593*b1cdbd2cSJim Jagielski 594*b1cdbd2cSJim Jagielski // reset the defaults ptr 595*b1cdbd2cSJim Jagielski _rppDefaults = NULL; 596*b1cdbd2cSJim Jagielski // no need to explicitly delete the defaults, this has been done by the ReleaseDefaults 597*b1cdbd2cSJim Jagielski 598*b1cdbd2cSJim Jagielski delete pFontList; 599*b1cdbd2cSJim Jagielski } 600*b1cdbd2cSJim Jagielski 601*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------ PageCreated(sal_uInt16 _nId,SfxTabPage & _rPage)602*b1cdbd2cSJim Jagielski void ControlCharacterDialog::PageCreated( sal_uInt16 _nId, SfxTabPage& _rPage ) 603*b1cdbd2cSJim Jagielski { 604*b1cdbd2cSJim Jagielski SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool())); 605*b1cdbd2cSJim Jagielski switch ( _nId ) 606*b1cdbd2cSJim Jagielski { 607*b1cdbd2cSJim Jagielski case TABPAGE_CHARACTERS: 608*b1cdbd2cSJim Jagielski //CHINA001 static_cast<SvxCharNamePage&>(_rPage).SetFontList( 609*b1cdbd2cSJim Jagielski //CHINA001 static_cast<const SvxFontListItem&>(GetInputSetImpl()->Get(CFID_FONTLIST)) 610*b1cdbd2cSJim Jagielski //CHINA001 ); 611*b1cdbd2cSJim Jagielski //CHINA001 static_cast<SvxCharNamePage&>(_rPage).DisableControls( DISABLE_HIDE_LANGUAGE ); 612*b1cdbd2cSJim Jagielski 613*b1cdbd2cSJim Jagielski //CHINA001 SvxFontListItem aFontListItem( static_cast<const SvxFontListItem&>(GetInputSetImpl()->Get(CFID_FONTLIST) )); 614*b1cdbd2cSJim Jagielski //CHINA001 aSet.Put ( SvxFontListItem( aFontListItem.GetFontList(), SID_ATTR_CHAR_FONTLIST)); 615*b1cdbd2cSJim Jagielski 616*b1cdbd2cSJim Jagielski // aSet.Put (SfxUInt16Item(SID_CFID_FONTLIST,CFID_FONTLIST)); 617*b1cdbd2cSJim Jagielski aSet.Put (SvxFontListItem(static_cast<const SvxFontListItem&>(GetInputSetImpl()->Get(CFID_FONTLIST)))); 618*b1cdbd2cSJim Jagielski aSet.Put (SfxUInt16Item(SID_DISABLE_CTL,DISABLE_HIDE_LANGUAGE)); 619*b1cdbd2cSJim Jagielski _rPage.PageCreated(aSet); 620*b1cdbd2cSJim Jagielski break; 621*b1cdbd2cSJim Jagielski } 622*b1cdbd2cSJim Jagielski } 623*b1cdbd2cSJim Jagielski 624*b1cdbd2cSJim Jagielski //............................................................................ 625*b1cdbd2cSJim Jagielski } // namespace pcr 626*b1cdbd2cSJim Jagielski //............................................................................ 627*b1cdbd2cSJim Jagielski 628