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