/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Global Pointer SwGlossaries* pGlossaries = 0; // Provides all needed paths. Is initialized by UI. SwGlossaryList* pGlossaryList = 0; namespace { enum CachedStringID { OldGrfCat, OldTabCat, OldFrmCat, OldDrwCat, CurrGlosGroup, CachedStrings }; OUString *StringCache[CachedStrings] = {0}; inline OUString GetCachedString(CachedStringID id) { return StringCache[id] ? *StringCache[id] : OUString(); } inline void SetCachedString(CachedStringID id, const OUString& sStr) { if (StringCache[id]) { *StringCache[id] = sStr; } else { StringCache[id] = new OUString(sStr); } } void ClearStringCache() { for (int i=0; i* pAuthFieldNameList = 0; std::vector* pAuthFieldTypeList = 0; } // Finish UI void _FinitUI() { #if HAVE_FEATURE_DBCONNECTIVITY SwDBManager::RemoveDbtoolsClient(); #endif delete SwViewShell::GetShellRes(); SwViewShell::SetShellRes( 0 ); SwEditWin::_FinitStaticData(); DELETEZ(pGlossaries); delete SwFieldType::pFldNames; ClearStringCache(); delete pGlossaryList; delete pAuthFieldNameList; delete pAuthFieldTypeList; } // Initialise void _InitUI() { // ShellResource gives the CORE the possibility to work with resources. SwViewShell::SetShellRes( new ShellResource ); SwEditWin::_InitStaticData(); } ShellResource::ShellResource() : Resource( SW_RES(RID_SW_SHELLRES) ), aPostItAuthor( SW_RES( STR_POSTIT_AUTHOR ) ), aPostItPage( SW_RES( STR_POSTIT_PAGE ) ), aPostItLine( SW_RES( STR_POSTIT_LINE ) ), aCalc_Syntax( SW_RES( STR_CALC_SYNTAX ) ), aCalc_ZeroDiv( SW_RES( STR_CALC_ZERODIV ) ), aCalc_Brack( SW_RES( STR_CALC_BRACK ) ), aCalc_Pow( SW_RES( STR_CALC_POW ) ), aCalc_VarNFnd( SW_RES( STR_CALC_VARNFND ) ), aCalc_Overflow( SW_RES( STR_CALC_OVERFLOW ) ), aCalc_WrongTime( SW_RES( STR_CALC_WRONGTIME ) ), aCalc_Default( SW_RES( STR_CALC_DEFAULT ) ), aCalc_Error( SW_RES( STR_CALC_ERROR ) ), aGetRefFld_Up( SW_RES( STR_GETREFFLD_UP ) ), aGetRefFld_Down( SW_RES( STR_GETREFFLD_DOWN ) ), // #i81002# aGetRefFld_RefItemNotFound( SW_RES( STR_GETREFFLD_REFITEMNOTFOUND ) ), aStrAllPageHeadFoot( SW_RES( STR_ALLPAGE_HEADFOOT ) ), aStrNone( SW_RES( STR_TEMPLATE_NONE )), aFixedStr( SW_RES( STR_FIELD_FIXED )), sDurationFormat( SW_RES( STR_DURATION_FORMAT )), aTOXIndexName( SW_RES(STR_TOI)), aTOXUserName( SW_RES(STR_TOU)), aTOXContentName( SW_RES(STR_TOC)), aTOXIllustrationsName( SW_RES(STR_TOX_ILL)), aTOXObjectsName( SW_RES(STR_TOX_OBJ)), aTOXTablesName( SW_RES(STR_TOX_TBL)), aTOXAuthoritiesName( SW_RES(STR_TOX_AUTH)), aTOXCitationName( SW_RES(STR_TOX_CITATION)), aLinkCtrlClick(SW_RESSTR(STR_LINK_CTRL_CLICK)), aLinkClick(SW_RESSTR(STR_LINK_CLICK)), pAutoFmtNameLst(0), sPageDescFirstName( SW_RES(STR_PAGEDESC_FIRSTNAME)), sPageDescFollowName( SW_RES(STR_PAGEDESC_FOLLOWNAME)), sPageDescName( SW_RES(STR_PAGEDESC_NAME)) { const sal_uInt16 nCount = FLD_DOCINFO_END - FLD_DOCINFO_BEGIN; KeyCode aCode( KEY_SPACE ); KeyCode aModifiedCode( KEY_SPACE, KEY_MOD1 ); OUString aModStr( aModifiedCode.GetName() ); aModStr = aModStr.replaceFirst(aCode.GetName(), OUString()); aModStr = aModStr.replaceAll("+", OUString()); aLinkCtrlClick = aLinkCtrlClick.replaceAll("%s", aModStr); for(sal_uInt16 i = 0; i < nCount; ++i) aDocInfoLst.push_back(OUString(SW_RESSTR(FLD_DOCINFO_BEGIN + i))); FreeResource(); } ShellResource::~ShellResource() { delete pAutoFmtNameLst; } OUString ShellResource::GetPageDescName(sal_uInt16 nNo, PageNameMode eMode) { OUString sRet; switch (eMode) { case NORMAL_PAGE: sRet = sPageDescName; break; case FIRST_PAGE: sRet = sPageDescFirstName; break; case FOLLOW_PAGE: sRet = sPageDescFollowName; break; } return sRet.replaceFirst( "$(ARG1)", OUString::number( nNo )); } SwGlossaries* GetGlossaries() { if (!pGlossaries) pGlossaries = new SwGlossaries; return (pGlossaries); } bool HasGlossaryList() { return pGlossaryList != 0; } SwGlossaryList* GetGlossaryList() { if(!pGlossaryList) pGlossaryList = new SwGlossaryList(); return pGlossaryList; } struct ImpAutoFmtNameListLoader : public Resource { ImpAutoFmtNameListLoader( std::vector& rLst ); }; void ShellResource::_GetAutoFmtNameLst() const { assert(!pAutoFmtNameLst); pAutoFmtNameLst = new std::vector; pAutoFmtNameLst->reserve(STR_AUTOFMTREDL_END); ImpAutoFmtNameListLoader aTmp(*pAutoFmtNameLst); } ImpAutoFmtNameListLoader::ImpAutoFmtNameListLoader( std::vector& rLst ) : Resource( ResId(RID_SHELLRES_AUTOFMTSTRS, *pSwResMgr) ) { for( sal_uInt16 n = 0; n < STR_AUTOFMTREDL_END; ++n ) { OUString p(ResId(n + 1, *pSwResMgr)); if(STR_AUTOFMTREDL_TYPO == n) { #ifdef WNT // For Windows, a special treatment is necessary because MS has // forgotten some characters in the dialog font here. p = p.replaceFirst("%1", ",,"); p = p.replaceFirst("%2", "''"); #else const SvtSysLocale aSysLocale; const LocaleDataWrapper& rLclD = aSysLocale.GetLocaleData(); // With real operating systems it also works without special handling. p = p.replaceFirst("%1", rLclD.getDoubleQuotationMarkStart()); p = p.replaceFirst("%2", rLclD.getDoubleQuotationMarkEnd()); #endif } rLst.insert(rLst.begin() + n, p); } FreeResource(); } OUString SwAuthorityFieldType::GetAuthFieldName(ToxAuthorityField eType) { if(!pAuthFieldNameList) { pAuthFieldNameList = new std::vector; pAuthFieldNameList->reserve(AUTH_FIELD_END); for(sal_uInt16 i = 0; i < AUTH_FIELD_END; ++i) pAuthFieldNameList->push_back(SW_RES(STR_AUTH_FIELD_START + i)); } return (*pAuthFieldNameList)[static_cast< sal_uInt16 >(eType)]; } OUString SwAuthorityFieldType::GetAuthTypeName(ToxAuthorityType eType) { if(!pAuthFieldTypeList) { pAuthFieldTypeList = new std::vector; pAuthFieldTypeList->reserve(AUTH_TYPE_END); for(sal_uInt16 i = 0; i < AUTH_TYPE_END; ++i) pAuthFieldTypeList->push_back(SW_RES(STR_AUTH_TYPE_START + i)); } return (*pAuthFieldTypeList)[static_cast< sal_uInt16 >(eType)]; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */