blob: e090bfb4fc2231cbcd8440d16d1890aa0817612a [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
#include <unotools/localedatawrapper.hxx>
#include <viewsh.hxx>
#include <initui.hxx>
#include <edtwin.hxx>
#include <shellres.hxx>
#include <fldbas.hxx>
#include <glosdoc.hxx>
#include <gloslst.hxx>
#ifndef _UTLUI_HRC
#include <utlui.hrc>
#endif
#ifndef _INITUI_HRC
#include <initui.hrc>
#endif
#ifndef _COMCORE_HRC
#include <comcore.hrc>
#endif
#include <authfld.hxx>
#ifndef _DBMGR_HXX
#include <dbmgr.hxx>
#endif
#include <unotools/syslocale.hxx>
#include <unomid.h>
/*--------------------------------------------------------------------
Beschreibung: globale Pointer
--------------------------------------------------------------------*/
SwGlossaries* pGlossaries = 0;
// Liefert alle benoetigten Pfade. Wird durch UI initialisiert
SwGlossaryList* pGlossaryList = 0;
String* pOldGrfCat = 0;
String* pOldTabCat = 0;
String* pOldFrmCat = 0;
String* pOldDrwCat = 0;
String* pCurrGlosGroup = 0;
String* GetOldGrfCat()
{
return pOldGrfCat;
}
String* GetOldTabCat()
{
return pOldTabCat;
}
String* GetOldFrmCat()
{
return pOldFrmCat;
}
String* GetOldDrwCat()
{
return pOldDrwCat;
}
String* GetCurrGlosGroup()
{
return pCurrGlosGroup;
}
void SetCurrGlosGroup(String* pStr)
{
pCurrGlosGroup = pStr;
}
SvStringsDtor* pDBNameList = 0;
SvStringsDtor* pAuthFieldNameList = 0;
SvStringsDtor* pAuthFieldTypeList = 0;
/*--------------------------------------------------------------------
Beschreibung: UI beenden
--------------------------------------------------------------------*/
void _FinitUI()
{
SwNewDBMgr::RemoveDbtoolsClient();
delete ViewShell::GetShellRes();
ViewShell::SetShellRes( 0 );
SwEditWin::_FinitStaticData();
DELETEZ(pGlossaries);
delete SwFieldType::pFldNames;
delete pOldGrfCat;
delete pOldTabCat;
delete pOldFrmCat;
delete pOldDrwCat;
delete pCurrGlosGroup;
delete pDBNameList;
delete pGlossaryList;
delete pAuthFieldNameList;
delete pAuthFieldTypeList;
}
/*--------------------------------------------------------------------
Beschreibung: Initialisierung
--------------------------------------------------------------------*/
void _InitUI()
{
// ShellResource gibt der CORE die Moeglichkeit mit Resourcen zu arbeiten
ViewShell::SetShellRes( new ShellResource );
pDBNameList = new SvStringsDtor( 5, 5 );
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 ) ),
// --> OD 2007-09-13 #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)),
aHyperlinkClick( SW_RES( STR_HYPERLINK_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 );
String aModStr( aModifiedCode.GetName() );
aModStr.SearchAndReplace( aCode.GetName(), String() );
aModStr.SearchAndReplaceAllAscii( "+", String() );
aHyperlinkClick.SearchAndReplaceAllAscii( "%s", aModStr );
for(sal_uInt16 i = 0; i < nCount; ++i)
{
String* pNew = new SW_RESSTR(FLD_DOCINFO_BEGIN + i);
aDocInfoLst.Insert(pNew, aDocInfoLst.Count());
}
FreeResource();
}
ShellResource::~ShellResource()
{
if( pAutoFmtNameLst )
delete pAutoFmtNameLst, pAutoFmtNameLst = 0;
}
String ShellResource::GetPageDescName( sal_uInt16 nNo, sal_Bool bIsFirst, sal_Bool bFollow )
{
String sRet( bIsFirst ? sPageDescFirstName
: bFollow ? sPageDescFollowName
: sPageDescName );
sRet.SearchAndReplaceAscii( "$(ARG1)", String::CreateFromInt32( nNo ));
return sRet;
}
SwGlossaries* GetGlossaries()
{
if (!pGlossaries)
pGlossaries = new SwGlossaries;
return (pGlossaries);
}
sal_Bool HasGlossaryList()
{
return pGlossaryList != 0;
}
SwGlossaryList* GetGlossaryList()
{
if(!pGlossaryList)
pGlossaryList = new SwGlossaryList();
return pGlossaryList;
}
struct ImpAutoFmtNameListLoader : public Resource
{
ImpAutoFmtNameListLoader( SvStringsDtor& rLst );
};
void ShellResource::_GetAutoFmtNameLst() const
{
SvStringsDtor** ppLst = (SvStringsDtor**)&pAutoFmtNameLst;
*ppLst = new SvStringsDtor( STR_AUTOFMTREDL_END );
ImpAutoFmtNameListLoader aTmp( **ppLst );
}
ImpAutoFmtNameListLoader::ImpAutoFmtNameListLoader( SvStringsDtor& rLst )
: Resource( ResId(RID_SHELLRES_AUTOFMTSTRS, *pSwResMgr) )
{
for( sal_uInt16 n = 0; n < STR_AUTOFMTREDL_END; ++n )
{
String* p = new String( ResId( n + 1, *pSwResMgr) );
if(STR_AUTOFMTREDL_TYPO == n)
{
#ifdef WNT
//fuer Windows Sonderbehandlung, da MS hier ein paar Zeichen im Dialogfont vergessen hat
p->SearchAndReplace(C2S("%1"), C2S(",,"));
p->SearchAndReplace(C2S("%2"), C2S("''"));
#else
const SvtSysLocale aSysLocale;
const LocaleDataWrapper& rLclD = aSysLocale.GetLocaleData();
//unter richtigen Betriebssystemen funktioniert es auch so
p->SearchAndReplace(C2S("%1"), rLclD.getDoubleQuotationMarkStart());
p->SearchAndReplace(C2S("%2"), rLclD.getDoubleQuotationMarkEnd());
#endif
}
rLst.Insert( p, n );
}
FreeResource();
}
/* -----------------16.09.99 12:28-------------------
--------------------------------------------------*/
const String& SwAuthorityFieldType::GetAuthFieldName(ToxAuthorityField eType)
{
if(!pAuthFieldNameList)
{
pAuthFieldNameList = new SvStringsDtor(AUTH_FIELD_END, 1);
for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
{
String* pTmp = new String(SW_RES(STR_AUTH_FIELD_START + i));
pAuthFieldNameList->Insert(pTmp, pAuthFieldNameList->Count());
}
}
return *pAuthFieldNameList->GetObject( static_cast< sal_uInt16 >(eType) );
}
/* -----------------16.09.99 12:29-------------------
--------------------------------------------------*/
const String& SwAuthorityFieldType::GetAuthTypeName(ToxAuthorityType eType)
{
if(!pAuthFieldTypeList)
{
pAuthFieldTypeList = new SvStringsDtor(AUTH_TYPE_END, 1);
for(sal_uInt16 i = 0; i < AUTH_TYPE_END; i++)
pAuthFieldTypeList->Insert(
new String(SW_RES(STR_AUTH_TYPE_START + i)),
pAuthFieldTypeList->Count());
}
return *pAuthFieldTypeList->GetObject( static_cast< sal_uInt16 >(eType) );
}