1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_sc.hxx" 30 31 #undef SC_DLLIMPLEMENTATION 32 33 34 35 //------------------------------------------------------------------ 36 37 #include "scitems.hxx" 38 //CHINA001 #include <svx/align.hxx> 39 //CHINA001 #include <svx/backgrnd.hxx> 40 //CHINA001 #include <svx/border.hxx> 41 //CHINA001 #include <svx/chardlg.hxx> 42 //CHINA001 #include <svx/numfmt.hxx> 43 #include <svx/numinf.hxx> //CHINA001 44 //CHINA001 #include <svx/page.hxx> 45 //CHINA001 #include <svx/paragrph.hxx> 46 #include <sfx2/objsh.hxx> 47 #include <svl/style.hxx> 48 #include <svl/cjkoptions.hxx> 49 50 #include "styledlg.hxx" 51 #include "tabpages.hxx" // Zellvorlagen 52 #include "tphf.hxx" // Seitenvorlage: Kopf-/Fusszeilen 53 #include "tptable.hxx" // Seitenvorlage: Tabelle 54 #include "scresid.hxx" 55 #include "sc.hrc" 56 #include "styledlg.hrc" 57 #include <svx/svxdlg.hxx> //CHINA001 58 #include <svx/svxids.hrc> //CHINA001 59 #include <svx/dialogs.hrc> //CHINA001 60 #include <svl/intitem.hxx> //CHINA001 61 #include <editeng/flstitem.hxx> //CHINA001 62 #include <svl/aeitem.hxx> //CHINA001 63 #include <svx/flagsdef.hxx> //CHINA001 64 //================================================================== 65 66 ScStyleDlg::ScStyleDlg( Window* pParent, 67 SfxStyleSheetBase& rStyleBase, 68 sal_uInt16 nRscId ) 69 70 : SfxStyleDialog ( pParent, 71 ScResId( nRscId ), 72 rStyleBase, 73 sal_False ), 74 nDlgRsc ( nRscId ) 75 { 76 SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); //CHINA001 77 DBG_ASSERT(pFact, "Dialogdiet fail!");//CHINA001 78 switch ( nRscId ) 79 { 80 case RID_SCDLG_STYLES_PAR: // Zellformatvorlagen 81 { 82 SvtCJKOptions aCJKOptions; 83 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_NUMBERFORMAT ), "GetTabPageCreatorFunc fail!");//CHINA001 84 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_NUMBERFORMAT ), "GetTabPageRangesFunc fail!");//CHINA001 85 AddTabPage( TP_NUMBER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_NUMBERFORMAT ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_NUMBERFORMAT ) ); //CHINA001 AddTabPage( TP_NUMBER, &SvxNumberFormatTabPage::Create, &SvxNumberFormatTabPage::GetRanges ); 86 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageCreatorFunc fail!");//CHINA001 87 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageRangesFunc fail!");//CHINA001 88 AddTabPage( TP_FONT, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ) ); //CHINA001 AddTabPage( TP_FONT, &SvxCharNamePage::Create, &SvxCharNamePage::GetRanges ); 89 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageCreatorFunc fail!");//CHINA001 90 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageRangesFunc fail!");//CHINA001 91 AddTabPage( TP_FONTEFF, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ) ); //CHINA001 AddTabPage( TP_FONTEFF, &SvxCharEffectsPage::Create, &SvxCharEffectsPage::GetRanges ); 92 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_ALIGNMENT ), "GetTabPageCreatorFunc fail!");//CHINA001 93 DBG_ASSERT( pFact->GetTabPageRangesFunc( RID_SVXPAGE_ALIGNMENT ), "GetTabPageRangesFunc fail!");//CHINA001 94 AddTabPage( TP_ALIGNMENT, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_ALIGNMENT ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_ALIGNMENT ) ); //CHINA001 AddTabPage( TP_ALIGNMENT, &SvxAlignmentTabPage::Create, &SvxAlignmentTabPage::GetRanges ); 95 if ( aCJKOptions.IsAsianTypographyEnabled() ) 96 { 97 //CHINA001 AddTabPage( TP_ASIAN, &SvxAsianTabPage::Create, &SvxAsianTabPage::GetRanges ); 98 99 DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_PARA_ASIAN), "GetTabPageCreatorFunc fail!");//CHINA001 100 DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_PARA_ASIAN), "GetTabPageRangesFunc fail!");//CHINA001 101 AddTabPage( TP_ASIAN, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_PARA_ASIAN), pFact->GetTabPageRangesFunc(RID_SVXPAGE_PARA_ASIAN) ); 102 } 103 else 104 RemoveTabPage( TP_ASIAN ); 105 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");//CHINA001 106 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");//CHINA001 107 AddTabPage( TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) ); //CHINA001 AddTabPage( TP_BORDER, &SvxBorderTabPage::Create, &SvxBorderTabPage::GetRanges ); 108 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");//CHINA001 109 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");//CHINA001 110 AddTabPage( TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) ); //CHINA001 AddTabPage( TP_BACKGROUND, &SvxBackgroundTabPage::Create, &SvxBackgroundTabPage::GetRanges ); 111 AddTabPage( TP_PROTECTION, &ScTabPageProtection::Create, &ScTabPageProtection::GetRanges ); 112 } 113 break; 114 115 case RID_SCDLG_STYLES_PAGE: // Seitenvorlagen 116 { 117 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ), "GetTabPageCreatorFunc fail!");//CHINA001 118 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_PAGE ), "GetTabPageRangesFunc fail!");//CHINA001 119 AddTabPage( TP_PAGE_STD, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_PAGE ) ); //CHINA001 AddTabPage( TP_PAGE_STD, &SvxPageDescPage::Create, &SvxPageDescPage::GetRanges ); 120 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");//CHINA001 121 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");//CHINA001 122 AddTabPage( TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) ); //CHINA001 AddTabPage( TP_BORDER, &SvxBorderTabPage::Create, &SvxBorderTabPage::GetRanges ); 123 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");//CHINA001 124 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");//CHINA001 125 AddTabPage( TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) ); //CHINA001 AddTabPage( TP_BACKGROUND, &SvxBackgroundTabPage::Create, &SvxBackgroundTabPage::GetRanges ); 126 AddTabPage( TP_PAGE_HEADER, &ScHeaderPage::Create, &ScHeaderPage::GetRanges ); 127 AddTabPage( TP_PAGE_FOOTER, &ScFooterPage::Create, &ScFooterPage::GetRanges ); 128 AddTabPage( TP_TABLE, &ScTablePage::Create, &ScTablePage::GetRanges ); 129 } 130 break; 131 132 default: 133 DBG_ERROR( "Family not supported" ); 134 } 135 136 //-------------------------------------------------------------------- 137 FreeResource(); 138 } 139 140 // ----------------------------------------------------------------------- 141 142 __EXPORT ScStyleDlg::~ScStyleDlg() 143 { 144 } 145 146 // ----------------------------------------------------------------------- 147 148 void __EXPORT ScStyleDlg::PageCreated( sal_uInt16 nPageId, SfxTabPage& rTabPage ) 149 { 150 if ( nDlgRsc == RID_SCDLG_STYLES_PAR ) 151 { 152 SfxObjectShell* pDocSh = SfxObjectShell::Current(); 153 SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool())); //CHINA001 154 switch ( nPageId ) 155 { 156 case TP_NUMBER: 157 { 158 const SfxPoolItem* pInfoItem 159 = pDocSh->GetItem( SID_ATTR_NUMBERFORMAT_INFO ); 160 161 DBG_ASSERT( pInfoItem, "NumberInfoItem nicht gefunden!" ); 162 163 //CHINA001 ((SvxNumberFormatTabPage&)rTabPage). 164 //CHINA001 SetNumberFormatList( 165 //CHINA001 (const SvxNumberInfoItem&)*pInfoItem ) ; 166 aSet.Put (SvxNumberInfoItem( (const SvxNumberInfoItem&)*pInfoItem ) ); 167 rTabPage.PageCreated(aSet); 168 } 169 break; 170 171 case TP_FONT: 172 { 173 const SfxPoolItem* pInfoItem 174 = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST ); 175 176 DBG_ASSERT( pInfoItem, "FontListItem nicht gefunden!" ); 177 178 //CHINA001 ((SvxCharNamePage&)rTabPage). 179 //CHINA001 SetFontList( 180 //CHINA001 (const SvxFontListItem&)*pInfoItem ); 181 aSet.Put (SvxFontListItem(((const SvxFontListItem&)*pInfoItem).GetFontList(), SID_ATTR_CHAR_FONTLIST)); 182 rTabPage.PageCreated(aSet); 183 } 184 break; 185 186 default: 187 break; 188 } 189 } 190 else if ( nDlgRsc == RID_SCDLG_STYLES_PAGE ) 191 { 192 SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));//CHINA001 193 switch ( nPageId ) 194 { 195 case TP_PAGE_STD: 196 //CHINA001 ((SvxPageDescPage&)rTabPage).SetMode( SVX_PAGE_MODE_CENTER ); 197 aSet.Put (SfxAllEnumItem((const sal_uInt16)SID_ENUM_PAGE_MODE, SVX_PAGE_MODE_CENTER)); //CHINA001 198 rTabPage.PageCreated(aSet); //CHINA001 199 break; 200 201 case TP_PAGE_HEADER: 202 case TP_PAGE_FOOTER: 203 ((ScHFPage&)rTabPage).SetStyleDlg( this ); 204 ((ScHFPage&)rTabPage).SetPageStyle( GetStyleSheet().GetName() ); 205 ((ScHFPage&)rTabPage).DisableDeleteQueryBox(); 206 break; 207 case TP_BACKGROUND: 208 if( nDlgRsc == RID_SCDLG_STYLES_PAGE) 209 //CHINA001 ((SvxBackgroundTabPage&)rTabPage).ShowSelector(); 210 { //add CHINA001 211 aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, SVX_SHOW_SELECTOR)); 212 rTabPage.PageCreated(aSet); 213 } 214 break; 215 216 default: 217 break; 218 } 219 } 220 } 221 222 223 // ----------------------------------------------------------------------- 224 225 const SfxItemSet* __EXPORT ScStyleDlg::GetRefreshedSet() 226 { 227 SfxItemSet* pItemSet = GetInputSetImpl(); 228 pItemSet->ClearItem(); 229 pItemSet->SetParent( GetStyleSheet().GetItemSet().GetParent() ); 230 return pItemSet; 231 } 232 233 234 235