xref: /trunk/main/sc/source/ui/styleui/styledlg.cxx (revision cdf0e10c)
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