1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26
27
28 #include <unotools/localedatawrapper.hxx>
29 #include <viewsh.hxx>
30 #include <initui.hxx>
31 #include <edtwin.hxx>
32 #include <shellres.hxx>
33 #include <fldbas.hxx>
34 #include <glosdoc.hxx>
35 #include <gloslst.hxx>
36
37 #ifndef _UTLUI_HRC
38 #include <utlui.hrc>
39 #endif
40 #ifndef _INITUI_HRC
41 #include <initui.hrc>
42 #endif
43 #ifndef _COMCORE_HRC
44 #include <comcore.hrc>
45 #endif
46 #include <authfld.hxx>
47 #ifndef _DBMGR_HXX
48 #include <dbmgr.hxx>
49 #endif
50 #include <unotools/syslocale.hxx>
51
52 #include <unomid.h>
53
54 /*--------------------------------------------------------------------
55 Beschreibung: globale Pointer
56 --------------------------------------------------------------------*/
57
58 SwGlossaries* pGlossaries = 0;
59
60 // Liefert alle benoetigten Pfade. Wird durch UI initialisiert
61 SwGlossaryList* pGlossaryList = 0;
62
63 String* pOldGrfCat = 0;
64 String* pOldTabCat = 0;
65 String* pOldFrmCat = 0;
66 String* pOldDrwCat = 0;
67 String* pCurrGlosGroup = 0;
68
GetOldGrfCat()69 String* GetOldGrfCat()
70 {
71 return pOldGrfCat;
72 }
GetOldTabCat()73 String* GetOldTabCat()
74 {
75 return pOldTabCat;
76 }
GetOldFrmCat()77 String* GetOldFrmCat()
78 {
79 return pOldFrmCat;
80 }
GetOldDrwCat()81 String* GetOldDrwCat()
82 {
83 return pOldDrwCat;
84 }
GetCurrGlosGroup()85 String* GetCurrGlosGroup()
86 {
87 return pCurrGlosGroup;
88 }
SetCurrGlosGroup(String * pStr)89 void SetCurrGlosGroup(String* pStr)
90 {
91 pCurrGlosGroup = pStr;
92 }
93
94 SvStringsDtor* pDBNameList = 0;
95
96 SvStringsDtor* pAuthFieldNameList = 0;
97 SvStringsDtor* pAuthFieldTypeList = 0;
98
99 /*--------------------------------------------------------------------
100 Beschreibung: UI beenden
101 --------------------------------------------------------------------*/
102
_FinitUI()103 void _FinitUI()
104 {
105 SwNewDBMgr::RemoveDbtoolsClient();
106 delete ViewShell::GetShellRes();
107 ViewShell::SetShellRes( 0 );
108
109 SwEditWin::_FinitStaticData();
110
111 DELETEZ(pGlossaries);
112
113 delete SwFieldType::pFldNames;
114
115 delete pOldGrfCat;
116 delete pOldTabCat;
117 delete pOldFrmCat;
118 delete pOldDrwCat;
119 delete pCurrGlosGroup;
120 delete pDBNameList;
121 delete pGlossaryList;
122 delete pAuthFieldNameList;
123 delete pAuthFieldTypeList;
124
125
126 }
127 /*--------------------------------------------------------------------
128 Beschreibung: Initialisierung
129 --------------------------------------------------------------------*/
130
131
_InitUI()132 void _InitUI()
133 {
134 // ShellResource gibt der CORE die Moeglichkeit mit Resourcen zu arbeiten
135 ViewShell::SetShellRes( new ShellResource );
136 pDBNameList = new SvStringsDtor( 5, 5 );
137 SwEditWin::_InitStaticData();
138 }
139
140
ShellResource()141 ShellResource::ShellResource()
142 : Resource( SW_RES(RID_SW_SHELLRES) ),
143 aPostItAuthor( SW_RES( STR_POSTIT_AUTHOR ) ),
144 aPostItPage( SW_RES( STR_POSTIT_PAGE ) ),
145 aPostItLine( SW_RES( STR_POSTIT_LINE ) ),
146
147 aCalc_Syntax( SW_RES( STR_CALC_SYNTAX ) ),
148 aCalc_ZeroDiv( SW_RES( STR_CALC_ZERODIV ) ),
149 aCalc_Brack( SW_RES( STR_CALC_BRACK ) ),
150 aCalc_Pow( SW_RES( STR_CALC_POW ) ),
151 aCalc_VarNFnd( SW_RES( STR_CALC_VARNFND ) ),
152 aCalc_Overflow( SW_RES( STR_CALC_OVERFLOW ) ),
153 aCalc_WrongTime( SW_RES( STR_CALC_WRONGTIME ) ),
154 aCalc_Default( SW_RES( STR_CALC_DEFAULT ) ),
155 aCalc_Error( SW_RES( STR_CALC_ERROR ) ),
156
157 aGetRefFld_Up( SW_RES( STR_GETREFFLD_UP ) ),
158 aGetRefFld_Down( SW_RES( STR_GETREFFLD_DOWN ) ),
159 // --> OD 2007-09-13 #i81002#
160 aGetRefFld_RefItemNotFound( SW_RES( STR_GETREFFLD_REFITEMNOTFOUND ) ),
161 // <--
162 aStrAllPageHeadFoot( SW_RES( STR_ALLPAGE_HEADFOOT ) ),
163 aStrNone( SW_RES( STR_TEMPLATE_NONE )),
164 aFixedStr( SW_RES( STR_FIELD_FIXED )),
165 sDurationFormat( SW_RES( STR_DURATION_FORMAT )),
166
167 aTOXIndexName( SW_RES(STR_TOI)),
168 aTOXUserName( SW_RES(STR_TOU)),
169 aTOXContentName( SW_RES(STR_TOC)),
170 aTOXIllustrationsName( SW_RES(STR_TOX_ILL)),
171 aTOXObjectsName( SW_RES(STR_TOX_OBJ)),
172 aTOXTablesName( SW_RES(STR_TOX_TBL)),
173 aTOXAuthoritiesName( SW_RES(STR_TOX_AUTH)),
174 aHyperlinkClick( SW_RES( STR_HYPERLINK_CLICK)),
175 pAutoFmtNameLst(0),
176 sPageDescFirstName( SW_RES(STR_PAGEDESC_FIRSTNAME)),
177 sPageDescFollowName( SW_RES(STR_PAGEDESC_FOLLOWNAME)),
178 sPageDescName( SW_RES(STR_PAGEDESC_NAME))
179 {
180 const sal_uInt16 nCount = FLD_DOCINFO_END - FLD_DOCINFO_BEGIN;
181
182 KeyCode aCode( KEY_SPACE );
183 KeyCode aModifiedCode( KEY_SPACE, KEY_MOD1 );
184 String aModStr( aModifiedCode.GetName() );
185 aModStr.SearchAndReplace( aCode.GetName(), String() );
186 aModStr.SearchAndReplaceAllAscii( "+", String() );
187 aHyperlinkClick.SearchAndReplaceAllAscii( "%s", aModStr );
188
189 for(sal_uInt16 i = 0; i < nCount; ++i)
190 {
191 String* pNew = new SW_RESSTR(FLD_DOCINFO_BEGIN + i);
192 aDocInfoLst.Insert(pNew, aDocInfoLst.Count());
193 }
194
195 FreeResource();
196 }
197
~ShellResource()198 ShellResource::~ShellResource()
199 {
200 if( pAutoFmtNameLst )
201 delete pAutoFmtNameLst, pAutoFmtNameLst = 0;
202 }
203
GetPageDescName(sal_uInt16 nNo,sal_Bool bIsFirst,sal_Bool bFollow)204 String ShellResource::GetPageDescName( sal_uInt16 nNo, sal_Bool bIsFirst, sal_Bool bFollow )
205 {
206 String sRet( bIsFirst ? sPageDescFirstName
207 : bFollow ? sPageDescFollowName
208 : sPageDescName );
209 sRet.SearchAndReplaceAscii( "$(ARG1)", String::CreateFromInt32( nNo ));
210 return sRet;
211 }
212
213
GetGlossaries()214 SwGlossaries* GetGlossaries()
215 {
216 if (!pGlossaries)
217 pGlossaries = new SwGlossaries;
218 return (pGlossaries);
219 }
220
HasGlossaryList()221 sal_Bool HasGlossaryList()
222 {
223 return pGlossaryList != 0;
224 }
225
GetGlossaryList()226 SwGlossaryList* GetGlossaryList()
227 {
228 if(!pGlossaryList)
229 pGlossaryList = new SwGlossaryList();
230
231 return pGlossaryList;
232 }
233
234 struct ImpAutoFmtNameListLoader : public Resource
235 {
236 ImpAutoFmtNameListLoader( SvStringsDtor& rLst );
237 };
238
_GetAutoFmtNameLst() const239 void ShellResource::_GetAutoFmtNameLst() const
240 {
241 SvStringsDtor** ppLst = (SvStringsDtor**)&pAutoFmtNameLst;
242 *ppLst = new SvStringsDtor( STR_AUTOFMTREDL_END );
243 ImpAutoFmtNameListLoader aTmp( **ppLst );
244 }
245
ImpAutoFmtNameListLoader(SvStringsDtor & rLst)246 ImpAutoFmtNameListLoader::ImpAutoFmtNameListLoader( SvStringsDtor& rLst )
247 : Resource( ResId(RID_SHELLRES_AUTOFMTSTRS, *pSwResMgr) )
248 {
249 for( sal_uInt16 n = 0; n < STR_AUTOFMTREDL_END; ++n )
250 {
251 String* p = new String( ResId( n + 1, *pSwResMgr) );
252 if(STR_AUTOFMTREDL_TYPO == n)
253 {
254 #ifdef WNT
255 //fuer Windows Sonderbehandlung, da MS hier ein paar Zeichen im Dialogfont vergessen hat
256 p->SearchAndReplace(C2S("%1"), C2S(",,"));
257 p->SearchAndReplace(C2S("%2"), C2S("''"));
258 #else
259 const SvtSysLocale aSysLocale;
260 const LocaleDataWrapper& rLclD = aSysLocale.GetLocaleData();
261 //unter richtigen Betriebssystemen funktioniert es auch so
262 p->SearchAndReplace(C2S("%1"), rLclD.getDoubleQuotationMarkStart());
263 p->SearchAndReplace(C2S("%2"), rLclD.getDoubleQuotationMarkEnd());
264 #endif
265 }
266 rLst.Insert( p, n );
267 }
268 FreeResource();
269 }
270 /* -----------------16.09.99 12:28-------------------
271
272 --------------------------------------------------*/
GetAuthFieldName(ToxAuthorityField eType)273 const String& SwAuthorityFieldType::GetAuthFieldName(ToxAuthorityField eType)
274 {
275 if(!pAuthFieldNameList)
276 {
277 pAuthFieldNameList = new SvStringsDtor(AUTH_FIELD_END, 1);
278 for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
279 {
280 String* pTmp = new String(SW_RES(STR_AUTH_FIELD_START + i));
281 pAuthFieldNameList->Insert(pTmp, pAuthFieldNameList->Count());
282 }
283 }
284 return *pAuthFieldNameList->GetObject( static_cast< sal_uInt16 >(eType) );
285 }
286 /* -----------------16.09.99 12:29-------------------
287
288 --------------------------------------------------*/
GetAuthTypeName(ToxAuthorityType eType)289 const String& SwAuthorityFieldType::GetAuthTypeName(ToxAuthorityType eType)
290 {
291 if(!pAuthFieldTypeList)
292 {
293 pAuthFieldTypeList = new SvStringsDtor(AUTH_TYPE_END, 1);
294 for(sal_uInt16 i = 0; i < AUTH_TYPE_END; i++)
295 pAuthFieldTypeList->Insert(
296 new String(SW_RES(STR_AUTH_TYPE_START + i)),
297 pAuthFieldTypeList->Count());
298 }
299 return *pAuthFieldTypeList->GetObject( static_cast< sal_uInt16 >(eType) );
300 }
301
302
303
304