Hello Andreas,
I have added some more tests about the config items of historyoptions.
The nSize has been set in the test. And the test results could be logged
into files. In <office>/program/,the log files(e.g.:test_***.txt) could
be found after testing.At present the config item hasnt implement a
deque in XML.So if we open an exist t1.odt, the next time we open a new
test.odt, the t1.odt maybe have been removed.
I'm looking forward to your advice.:)
Best Regards,
Yan Wu
/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: historyoptions.cxx,v $
*
* $Revision: 1.19.6.3 $
*
* last change: $Author: as $ $Date: 2007/06/15 06:00:34 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_svtools.hxx"
#ifndef GCC
#endif
//_________________________________________________________________________________________________________________
// includes
//_________________________________________________________________________________________________________________
#include <svtools/historyoptions.hxx>
#include "configitems/historyoptions_const.hxx"
#ifndef _UTL_CONFIGMGR_HXX_
#include <unotools/configmgr.hxx>
#endif
#ifndef _UTL_CONFIGITEM_HXX_
#include <unotools/configitem.hxx>
#endif
#ifndef _TOOLS_DEBUG_HXX
#include <tools/debug.hxx>
#endif
#ifndef _COM_SUN_STAR_UNO_ANY_HXX_
#include <com/sun/star/uno/Any.hxx>
#endif
#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
#include <com/sun/star/uno/Sequence.hxx>
#endif
#ifndef __SGI_STL_DEQUE
#include <deque>
#endif
#ifndef __SGI_STL_ALGORITHM
#include <algorithm>
#endif
#include <rtl/logfile.hxx>
#include "itemholder1.hxx"
#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
#include <com/sun/star/beans/XPropertySet.hpp>
#endif
#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
#include <com/sun/star/container/XNameAccess.hpp>
#endif
#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
#include <com/sun/star/container/XNameContainer.hpp>
#endif
#ifndef _COM_SUN_STAR_LANG_XSINGLESERVICEFACTORY_HPP_
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
#endif
#ifndef _COMPHELPER_CONFIGURATIONHELPER_HXX_
#include <comphelper/configurationhelper.hxx>
#endif
#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
#include <unotools/processfactory.hxx>
#endif
#ifndef _SVT_LOGHELPER_HXX
#include <loghelper.hxx>
#endif
//_________________________________________________________________________________________________________________
// namespaces
//_________________________________________________________________________________________________________________
using namespace ::std ;
using namespace ::utl ;
using namespace ::rtl ;
using namespace ::osl ;
using namespace ::com::sun::star::uno ;
using namespace ::com::sun::star::beans ;
namespace css = ::com::sun::star;
//_________________________________________________________________________________________________________________
// const
//_________________________________________________________________________________________________________________
namespace {
static const ::sal_Int32 s_nOffsetURL = 0;
static const ::sal_Int32 s_nOffsetFilter = 1;
static const ::sal_Int32 s_nOffsetTitle = 2;
static const ::sal_Int32 s_nOffsetPassword = 3;
}
//_________________________________________________________________________________________________________________
// private declarations!
//_________________________________________________________________________________________________________________
struct IMPL_THistoryItem
{
IMPL_THistoryItem()
{
}
IMPL_THistoryItem( const OUString& sNewURL
,
const OUString& sNewFilter ,
const OUString& sNewTitle ,
const OUString& sNewPassword )
{
sURL = sNewURL ;
sFilter = sNewFilter ;
sTitle = sNewTitle ;
sPassword = sNewPassword ;
}
sal_Bool operator==( const OUString& sSearchedURL )
{
return( sURL == sSearchedURL );
}
OUString sURL ;
OUString sFilter ;
OUString sTitle ;
OUString sPassword ;
};
class SvtHistoryOptions_Impl
{
public:
SvtHistoryOptions_Impl();
~SvtHistoryOptions_Impl();
sal_uInt32 GetSize( EHistoryType eHistory );
void SetSize( EHistoryType eHistory, sal_uInt32 nSize );
void Clear( EHistoryType eHistory );
Sequence< Sequence< PropertyValue > > GetList( EHistoryType eHistory );
void AppendItem( EHistoryType
eHistory ,
const OUString& sURL ,
const OUString& sFilter ,
const OUString& sTitle ,
const OUString& sPassword );
private:
css::uno::Reference< css::container::XNameAccess > m_xCfg;
css::uno::Reference< css::container::XNameAccess > m_xCommonXCU;
};
SvtHistoryOptions_Impl::SvtHistoryOptions_Impl()
{
try
{
m_xCfg = Reference< css::container::XNameAccess > (
::comphelper::ConfigurationHelper::openConfig(
utl::getProcessServiceFactory(),
s_sHistories,
::comphelper::ConfigurationHelper::E_STANDARD),
css::uno::UNO_QUERY );
m_xCommonXCU = Reference< css::container::XNameAccess > (
::comphelper::ConfigurationHelper::openConfig(
utl::getProcessServiceFactory(),
s_sCommonHistory,
::comphelper::ConfigurationHelper::E_STANDARD),
css::uno::UNO_QUERY );
}
catch(const css::uno::Exception& ex)
{
m_xCfg.clear();
m_xCommonXCU.clear();
LogHelper::logIt(ex);
}
}
SvtHistoryOptions_Impl::~SvtHistoryOptions_Impl()
{
try
{
//if(m_xCfg.is())
// ::comphelper::ConfigurationHelper::flush(m_xCfg);
//if(m_xCommonXCU.is())
// ::comphelper::ConfigurationHelper::flush(m_xCommonXCU);
}
catch(const css::uno::Exception& ex)
{
LogHelper::logIt(ex);
}
m_xCfg.clear();
m_xCommonXCU.clear();
}
sal_uInt32 SvtHistoryOptions_Impl::GetSize( EHistoryType eHistory )
{
sal_uInt32 nSize = 0 ;
css::uno::Reference< css::beans::XPropertySet >
xListAccess(m_xCommonXCU, css::uno::UNO_QUERY);
try
{
switch( eHistory )
{
case ePICKLIST:
xListAccess->getPropertyValue(s_sPickListSize) >>=
nSize;
break;
case eHISTORY:
xListAccess->getPropertyValue(s_sURLHistorySize) >>=
nSize;
break;
case eHELPBOOKMARKS:
xListAccess->getPropertyValue(s_sHelpBookmarksSize) >>=
nSize;
break;
default:
break;
}
}
catch(const css::uno::Exception& ex)
{
LogHelper::logIt(ex);
}
return nSize;
}
void SvtHistoryOptions_Impl::SetSize( EHistoryType eHistory, sal_uInt32 nSize )
{
css::uno::Reference< css::beans::XPropertySet >
xListAccess(m_xCommonXCU, css::uno::UNO_QUERY);
try
{
switch( eHistory )
{
case ePICKLIST:
if(xListAccess.is() && nSize!=GetSize(eHistory))
{
xListAccess->setPropertyValue(s_sPickListSize,
css::uno::makeAny(nSize));
::comphelper::ConfigurationHelper::flush(m_xCommonXCU);
}
break;
case eHISTORY:
if(xListAccess.is() && nSize!=GetSize(eHistory))
{
xListAccess->setPropertyValue(s_sURLHistorySize, css::uno::makeAny(nSize));
::comphelper::ConfigurationHelper::flush(m_xCommonXCU);
}
break;
case eHELPBOOKMARKS:
if(xListAccess.is() && nSize!=GetSize(eHistory))
{
xListAccess->setPropertyValue(s_sHelpBookmarksSize, css::uno::makeAny(nSize));
::comphelper::ConfigurationHelper::flush(m_xCommonXCU);
}
break;
default:
break;
}
}
catch(const css::uno::Exception& ex)
{
LogHelper::logIt(ex);
}
}
void SvtHistoryOptions_Impl::Clear( EHistoryType eHistory )
{
css::uno::Reference< css::container::XNameAccess > xListAccess;
css::uno::Reference< css::container::XNameContainer > xItemOrder;
css::uno::Reference< css::beans::XPropertySet > xFirstItem;
Sequence< rtl::OUString >
sFileList;
try
{
switch( eHistory )
{
case ePICKLIST:
{
m_xCfg->getByName(s_sPickList) >>= xListAccess;
xListAccess->getByName(s_sItemList) >>=
xItemOrder ;
sFileList = xItemOrder->getElementNames();
for(sal_Int32 i=0; i<sFileList.getLength(); ++i)
xItemOrder->removeByName(sFileList[i]);
xListAccess->getByName(s_sOrderList) >>=
xItemOrder ;
sFileList = xItemOrder->getElementNames();
for(sal_Int32 j=0; j<sFileList.getLength(); ++j)
xItemOrder->removeByName(sFileList[j]);
xFirstItem = css::uno::Reference<
css::beans::XPropertySet >(xListAccess, css::uno::UNO_QUERY);
xFirstItem->setPropertyValue( s_sFirstItem,
css::uno::makeAny((sal_Int32)0) );
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
break;
case eHISTORY:
{
m_xCfg->getByName(s_sURLHistory) >>=
xListAccess;
xListAccess->getByName(s_sItemList) >>=
xItemOrder ;
sFileList = xItemOrder->getElementNames();
for(sal_Int32 i=0; i<sFileList.getLength(); ++i)
xItemOrder->removeByName(sFileList[i]);
xListAccess->getByName(s_sOrderList) >>=
xItemOrder ;
sFileList = xItemOrder->getElementNames();
for(sal_Int32 j=0; j<sFileList.getLength(); ++j)
xItemOrder->removeByName(sFileList[j]);
xFirstItem = css::uno::Reference<
css::beans::XPropertySet >(xListAccess, css::uno::UNO_QUERY);
xFirstItem->setPropertyValue( s_sFirstItem,
css::uno::makeAny((sal_Int32)0) );
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
break;
case eHELPBOOKMARKS:
{
m_xCfg->getByName(s_sHelpBookmarks) >>=
xListAccess;
xListAccess->getByName(s_sItemList) >>=
xItemOrder ;
sFileList = xItemOrder->getElementNames();
for(sal_Int32 i=0; i<sFileList.getLength(); ++i)
xItemOrder->removeByName(sFileList[i]);
xListAccess->getByName(s_sOrderList) >>=
xItemOrder ;
sFileList = xItemOrder->getElementNames();
for(sal_Int32 j=0; j<sFileList.getLength(); ++j)
xItemOrder->removeByName(sFileList[j]);
xFirstItem = css::uno::Reference<
css::beans::XPropertySet >(xListAccess, css::uno::UNO_QUERY);
xFirstItem->setPropertyValue( s_sFirstItem,
css::uno::makeAny((sal_Int32)0) );
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
break;
default:
break;
}
}
catch(const css::uno::Exception& ex)
{
LogHelper::logIt(ex);
}
}
Sequence< Sequence< PropertyValue > > SvtHistoryOptions_Impl::GetList(
EHistoryType eHistory )
{
Sequence< Sequence< PropertyValue > > pReturn;
Sequence< PropertyValue > seqProperties( 4 );
Sequence< ::rtl::OUString > sFileList;
css::uno::Reference< css::container::XNameAccess > xListAccess;
css::uno::Reference< css::container::XNameAccess > xItemList;
css::uno::Reference< css::container::XNameAccess > xOrderList;
css::uno::Reference< css::container::XNameAccess > xItemOrder;
css::uno::Reference< css::beans::XPropertySet > xNode;
seqProperties[s_nOffsetURL ].Name = HISTORY_PROPERTYNAME_URL;
seqProperties[s_nOffsetFilter ].Name = HISTORY_PROPERTYNAME_FILTER;
seqProperties[s_nOffsetTitle ].Name = HISTORY_PROPERTYNAME_TITLE;
seqProperties[s_nOffsetPassword ].Name = HISTORY_PROPERTYNAME_PASSWORD;
try
{
switch( eHistory )
{
case ePICKLIST:
{
m_xCfg->getByName(s_sPickList) >>= xListAccess;
xListAccess->getByName(s_sItemList) >>=
xItemList;
xListAccess->getByName(s_sOrderList) >>=
xOrderList;
sFileList = xOrderList->getElementNames();
sal_Int32 nLength = sFileList.getLength();
sal_Int32 nMaxSize = GetSize(ePICKLIST);
Sequence< Sequence< PropertyValue > >
seqReturn( (nMaxSize>nLength ? nLength:nMaxSize) );
sal_Int32 nItem = 0;
for(sal_Int32 i=nLength-1;
i>=0&&i>=nLength-nMaxSize; --i)
{
rtl::OUString sUrl;
xOrderList->getByName(sFileList[i]) >>=
xNode;
xNode->getPropertyValue(s_sHistoryItemRef) >>= sUrl;
xItemList->getByName(sUrl) >>= xNode;
seqProperties[s_nOffsetURL ].Value
<<= sUrl;
xNode->getPropertyValue(s_sFilter)
>>= seqProperties[s_nOffsetFilter ].Value;
xNode->getPropertyValue(s_sTitle)
>>= seqProperties[s_nOffsetTitle ].Value;
xNode->getPropertyValue(s_sPassword)
>>= seqProperties[s_nOffsetPassword ].Value;
seqReturn[nItem++] = seqProperties;
}
pReturn = seqReturn;
}
break;
case eHISTORY:
{
m_xCfg->getByName(s_sURLHistory) >>=
xListAccess;
xListAccess->getByName(s_sItemList) >>=
xItemList;
xListAccess->getByName(s_sOrderList) >>=
xOrderList;
sFileList = xOrderList->getElementNames();
sal_Int32 nLength = sFileList.getLength();
sal_Int32 nMaxSize = GetSize(eHISTORY);
Sequence< Sequence< PropertyValue > >
seqReturn( (nMaxSize>nLength ? nLength:nMaxSize) );
sal_Int32 nItem = 0;
for(sal_Int32 i=nLength-1;
i>=0&&i>=nLength-nMaxSize; --i)
{
rtl::OUString sUrl;
xOrderList->getByName(sFileList[i]) >>=
xNode;
xNode->getPropertyValue(s_sHistoryItemRef) >>= sUrl;
xItemList->getByName(sUrl) >>= xNode;
seqProperties[s_nOffsetURL ].Value
<<= sUrl;
xNode->getPropertyValue(s_sFilter)
>>= seqProperties[s_nOffsetFilter ].Value;
xNode->getPropertyValue(s_sTitle)
>>= seqProperties[s_nOffsetTitle ].Value;
xNode->getPropertyValue(s_sPassword)
>>= seqProperties[s_nOffsetPassword ].Value;
seqReturn[nItem++] = seqProperties;
}
pReturn = seqReturn;
}
break;
case eHELPBOOKMARKS:
{
m_xCfg->getByName(s_sHelpBookmarks) >>=
xListAccess;
xListAccess->getByName(s_sItemList) >>=
xItemList;
xListAccess->getByName(s_sOrderList) >>=
xOrderList;
sFileList = xOrderList->getElementNames();
sal_Int32 nLength = sFileList.getLength();
sal_Int32 nMaxSize = GetSize(eHELPBOOKMARKS);
Sequence< Sequence< PropertyValue > >
seqReturn( (nMaxSize>nLength ? nLength:nMaxSize) );
sal_Int32 nItem = 0;
for(sal_Int32 i=nLength-1;
i>=0&&i>=nLength-nMaxSize; --i)
{
rtl::OUString sUrl;
xOrderList->getByName(sFileList[i]) >>=
xNode;
xNode->getPropertyValue(s_sHistoryItemRef) >>= sUrl;
xItemList->getByName(sUrl) >>= xNode;
seqProperties[s_nOffsetURL ].Value
<<= sUrl;
xNode->getPropertyValue(s_sFilter)
>>= seqProperties[s_nOffsetFilter ].Value;
xNode->getPropertyValue(s_sTitle)
>>= seqProperties[s_nOffsetTitle ].Value;
xNode->getPropertyValue(s_sPassword)
>>= seqProperties[s_nOffsetPassword ].Value;
seqReturn[nItem++] = seqProperties;
}
pReturn = seqReturn;
}
break;
default:
break;
}
}
catch(const css::uno::Exception& ex)
{
LogHelper::logIt(ex);
}
return pReturn;
}
void SvtHistoryOptions_Impl::AppendItem( EHistoryType eHistory ,
const OUString& sURL ,
const OUString& sFilter ,
const OUString& sTitle ,
const OUString& sPassword )
{
css::uno::Reference< css::container::XNameAccess > xListAccess;
sal_Int32
nMaxSize = 0;
switch(eHistory)
{
case ePICKLIST:
{
m_xCfg->getByName(s_sPickList) >>= xListAccess;
nMaxSize = GetSize(ePICKLIST);
}
break;
case eHISTORY:
{
m_xCfg->getByName(s_sURLHistory) >>= xListAccess;
nMaxSize = GetSize(eHISTORY);
}
break;
case eHELPBOOKMARKS:
{
m_xCfg->getByName(s_sHelpBookmarks) >>= xListAccess;
nMaxSize = GetSize(eHELPBOOKMARKS);
}
break;
default:
break;
}
css::uno::Reference< css::container::XNameContainer > xItemList;
css::uno::Reference< css::container::XNameContainer > xOrderList;
css::uno::Reference< css::container::XNameContainer > xOrderItem;
css::uno::Reference< css::beans::XPropertySet > xFirstItem;
css::uno::Reference< css::beans::XPropertySet > xNode;
try
{
xListAccess->getByName(s_sItemList) >>= xItemList;
xListAccess->getByName(s_sOrderList) >>= xOrderList;
if(xItemList->hasByName(sURL))
{
xItemList->getByName(sURL) >>= xNode;
xNode->setPropertyValue(s_sTitle,
css::uno::makeAny(sTitle));
}
else
{
sal_Int32 nFirstOrder = 0;
rtl::OUString sFirstOrder;
rtl::OUString sNewOrder;
Sequence< ::rtl::OUString > lOrders =
xOrderList->getElementNames();
sal_Int32 nCurrentSize = lOrders.getLength();
sal_Bool bFull = ( nCurrentSize>=nMaxSize );
css::uno::Reference< css::lang::XSingleServiceFactory >
xFac;
css::uno::Reference< css::uno::XInterface >
xInst;
xFirstItem = css::uno::Reference<
css::beans::XPropertySet >(xListAccess, css::uno::UNO_QUERY);
if(bFull)
{
xFirstItem->getPropertyValue(s_sFirstItem) >>=
nFirstOrder;
sFirstOrder =
rtl::OUString::valueOf(nFirstOrder);
xOrderList->getByName(sFirstOrder) >>= xNode;
rtl::OUString sUrl;
xNode->getPropertyValue(s_sHistoryItemRef) >>=
sUrl;
xItemList->removeByName(sUrl);
xOrderList->removeByName(sFirstOrder);
sNewOrder =
rtl::OUString::valueOf(nFirstOrder+nCurrentSize);
nFirstOrder += 1;
xFirstItem->setPropertyValue(s_sFirstItem,
css::uno::makeAny((sal_Int32)nFirstOrder));
}
else if(!bFull)
{
xFirstItem->getPropertyValue(s_sFirstItem) >>=
nFirstOrder;
sNewOrder =
rtl::OUString::valueOf(nFirstOrder+nCurrentSize);
}
xFac = css::uno::Reference<
css::lang::XSingleServiceFactory >(xOrderList, css::uno::UNO_QUERY);
xInst = xFac->createInstance();
xOrderList->insertByName(sNewOrder,
css::uno::makeAny(xInst));
xNode = css::uno::Reference< css::beans::XPropertySet
>(xInst, css::uno::UNO_QUERY);
xNode->setPropertyValue(s_sHistoryItemRef,
css::uno::makeAny(sURL));
xFac = css::uno::Reference<
css::lang::XSingleServiceFactory >(xItemList, css::uno::UNO_QUERY);
xInst = xFac->createInstance();
xItemList->insertByName(sURL, css::uno::makeAny(xInst));
xNode = css::uno::Reference< css::beans::XPropertySet
>(xInst, css::uno::UNO_QUERY);
xNode->setPropertyValue(s_sFilter,
css::uno::makeAny(sFilter));
xNode->setPropertyValue(s_sTitle,
css::uno::makeAny(sTitle));
xNode->setPropertyValue(s_sPassword,
css::uno::makeAny(sPassword));
}
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch(const css::uno::Exception& ex)
{
LogHelper::logIt(ex);
}
}
//*****************************************************************************************************************
// initialize static member
// DON'T DO IT IN YOUR HEADER!
// see definition for further informations
//*****************************************************************************************************************
SvtHistoryOptions_Impl* SvtHistoryOptions::m_pDataContainer = NULL
;
sal_Int32 SvtHistoryOptions::m_nRefCount
= 0 ;
//*****************************************************************************************************************
// constructor
//*****************************************************************************************************************
SvtHistoryOptions::SvtHistoryOptions()
{
// Global access, must be guarded (multithreading!).
MutexGuard aGuard( GetOwnStaticMutex() );
// Increase ouer refcount ...
++m_nRefCount;
// ... and initialize ouer data container only if it not already exist!
if( m_pDataContainer == NULL )
{
RTL_LOGFILE_CONTEXT(aLog, "svtools ( ??? )
::SvtHistoryOptions_Impl::ctor()");
m_pDataContainer = new SvtHistoryOptions_Impl;
ItemHolder1::holdConfigItem(E_HISTORYOPTIONS);
}
}
//*****************************************************************************************************************
// destructor
//*****************************************************************************************************************
SvtHistoryOptions::~SvtHistoryOptions()
{
// Global access, must be guarded (multithreading!)
MutexGuard aGuard( GetOwnStaticMutex() );
// Decrease ouer refcount.
--m_nRefCount;
// If last instance was deleted ...
// we must destroy ouer static data container!
if( m_nRefCount <= 0 )
{
delete m_pDataContainer;
m_pDataContainer = NULL;
}
}
//*****************************************************************************************************************
// public method
//*****************************************************************************************************************
sal_uInt32 SvtHistoryOptions::GetSize( EHistoryType eHistory ) const
{
MutexGuard aGuard( GetOwnStaticMutex() );
return m_pDataContainer->GetSize( eHistory );
}
//*****************************************************************************************************************
// public method
//*****************************************************************************************************************
void SvtHistoryOptions::SetSize( EHistoryType eHistory, sal_uInt32 nSize )
{
MutexGuard aGuard( GetOwnStaticMutex() );
m_pDataContainer->SetSize( eHistory, nSize );
}
//*****************************************************************************************************************
// public method
//*****************************************************************************************************************
void SvtHistoryOptions::Clear( EHistoryType eHistory )
{
MutexGuard aGuard( GetOwnStaticMutex() );
m_pDataContainer->Clear( eHistory );
}
//*****************************************************************************************************************
// public method
//*****************************************************************************************************************
Sequence< Sequence< PropertyValue > > SvtHistoryOptions::GetList( EHistoryType
eHistory ) const
{
MutexGuard aGuard( GetOwnStaticMutex() );
return m_pDataContainer->GetList( eHistory );
}
//*****************************************************************************************************************
// public method
//*****************************************************************************************************************
void SvtHistoryOptions::AppendItem( EHistoryType
eHistory ,
const
OUString& sURL ,
const
OUString& sFilter ,
const
OUString& sTitle ,
const
OUString& sPassword )
{
MutexGuard aGuard( GetOwnStaticMutex() );
m_pDataContainer->AppendItem( eHistory, sURL, sFilter, sTitle,
sPassword );
}
//*****************************************************************************************************************
// private method
//*****************************************************************************************************************
Mutex& SvtHistoryOptions::GetOwnStaticMutex()
{
// Initialize static mutex only for one time!
static Mutex* pMutex = NULL;
// If these method first called (Mutex not already exist!) ...
if( pMutex == NULL )
{
// ... we must create a new one. Protect follow code with the
global mutex -
// It must be - we create a static variable!
MutexGuard aGuard( Mutex::getGlobalMutex() );
// We must check our pointer again - because it can be that
another instance of ouer class will be fastr then these!
if( pMutex == NULL )
{
// Create the new mutex and set it for return on static
variable.
static Mutex aMutex;
pMutex = &aMutex;
}
}
// Return new created or already existing mutex object.
return *pMutex;
}
/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: HistoryOptTest.hxx,v $
*
* $Revision: 1.1.2.3 $
*
* last change: $Author: as $ $Date: 2007/06/15 05:57:22 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
************************************************************************/
#ifndef SVTOOLS_HISTORYOPTTEST_HXX
#define SVTOOLS_HISTORYOPTTEST_HXX
#include <com/sun/star/container/XNameAccess.hpp>
#include <svtools/historyoptions.hxx>
#include <rtl/ustrbuf.hxx>
namespace css = ::com::sun::star;
class HistoryOptTest
{
public:
HistoryOptTest();
~HistoryOptTest();
void impl_checkPicklist();
void impl_checkURLHistory();
void impl_checkHelpBookmarks();
private:
void impl_checkGetSize(const ::rtl::OUString& sList);
void impl_checkSetSize(const ::rtl::OUString& sList);
void impl_checkClear(const ::rtl::OUString& sList);
void impl_checkGetList(const ::rtl::OUString& sList);
void impl_checkAppendItem(const ::rtl::OUString& sList);
void impl_clearList(const ::rtl::OUString& sList);
sal_Bool impl_isListEmpty(const ::rtl::OUString& sList);
void impl_appendItem(const ::rtl::OUString& sList,
::rtl::OUStringBuffer& sMsg);
private:
css::uno::Reference< css::container::XNameAccess > m_xCfg;
css::uno::Reference< css::container::XNameAccess > m_xCommonXCU;
SvtHistoryOptions aHistoryOpt;
};
#endif // #ifndef SVTOOLS_HISTORYOPTTEST_HXX
/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: HistoryOptTest.cxx,v $
*
* $Revision: 1.1.2.5 $
*
* last change: $Author: as $ $Date: 2007/06/15 05:57:22 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
************************************************************************/
#include "HistoryOptTest.hxx"
#include "configitems/historyoptions_const.hxx"
#include <com/sun/star/uno/Sequence.hxx>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
#include <comphelper/configurationhelper.hxx>
#include <unotools/processfactory.hxx>
#include <stdio.h>
namespace css = ::com::sun::star;
#define LOG_APPENDITEM_PICKLIST(SMSG) \
{ \
FILE* pFile = fopen("test_picklist.txt", "w"); \
fprintf(pFile, "%s",SMSG); \
fclose(pFile); \
}
#define LOG_APPENDITEM_URLHISTORY(SMSG) \
{ \
FILE* pFile = fopen("test_urlhistory.txt", "w"); \
fprintf(pFile, "%s",SMSG); \
fclose(pFile); \
}
#define LOG_APPENDITEM_HELPBOOKMARKS(SMSG) \
{ \
FILE* pFile = fopen("test_helpbookmarks.txt", "w"); \
fprintf(pFile, "%s",SMSG); \
fclose(pFile); \
}
HistoryOptTest::HistoryOptTest()
{
m_xCfg = css::uno::Reference< css::container::XNameAccess >(
::comphelper::ConfigurationHelper::openConfig(
::utl::getProcessServiceFactory(),
s_sHistories,
::comphelper::ConfigurationHelper::E_STANDARD),
css::uno::UNO_QUERY);
m_xCommonXCU = css::uno::Reference< css::container::XNameAccess > (
::comphelper::ConfigurationHelper::openConfig(
::utl::getProcessServiceFactory(),
s_sCommonHistory,
::comphelper::ConfigurationHelper::E_STANDARD),
css::uno::UNO_QUERY );
}
HistoryOptTest::~HistoryOptTest()
{
if (m_xCfg.is())
m_xCfg.clear();
if (m_xCommonXCU.is())
m_xCommonXCU.clear();
}
//=============================================================================
// clear the list in XML directly when using the new Histories.xcs
void HistoryOptTest::impl_clearList(const ::rtl::OUString& sList)
{
css::uno::Reference< css::container::XNameAccess > xListAccess;
css::uno::Reference< css::container::XNameContainer > xItemOrder;
css::uno::Reference< css::beans::XPropertySet > xFirstItem;
css::uno::Sequence< ::rtl::OUString > sFileList;
if (sList.equalsAscii("PickList"))
m_xCfg->getByName(s_sPickList) >>= xListAccess;
else if (sList.equalsAscii("URLHistory"))
m_xCfg->getByName(s_sURLHistory) >>= xListAccess;
else if (sList.equalsAscii("HelpBookmarks"))
m_xCfg->getByName(s_sHelpBookmarks) >>= xListAccess;
if (xListAccess.is())
{
xListAccess->getByName(s_sItemList) >>= xItemOrder ;
sFileList = xItemOrder->getElementNames();
for(sal_Int32 i=0; i<sFileList.getLength(); ++i)
xItemOrder->removeByName(sFileList[i]);
xListAccess->getByName(s_sOrderList) >>= xItemOrder ;
sFileList = xItemOrder->getElementNames();
for(sal_Int32 j=0; j<sFileList.getLength(); ++j)
xItemOrder->removeByName(sFileList[j]);
xFirstItem = css::uno::Reference< css::beans::XPropertySet
>(xListAccess, css::uno::UNO_QUERY);
xFirstItem->setPropertyValue( s_sFirstItem,
css::uno::makeAny((sal_Int32)0) );
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
}
//=============================================================================
// use configuration API (not ConfigItem!) to verify the results within XML !
sal_Bool HistoryOptTest::impl_isListEmpty(const ::rtl::OUString& sList)
{
css::uno::Reference< css::container::XNameAccess > xListAccess;
css::uno::Reference< css::container::XNameAccess > xItemList;
css::uno::Reference< css::container::XNameAccess > xOrderList;
sal_Bool bRet = sal_True;
if (sList.equalsAscii("PickList"))
m_xCfg->getByName(s_sPickList) >>= xListAccess;
else if (sList.equalsAscii("URLHistory"))
m_xCfg->getByName(s_sURLHistory) >>= xListAccess;
else if (sList.equalsAscii("HelpBookmarks"))
m_xCfg->getByName(s_sHelpBookmarks) >>= xListAccess;
if (xListAccess.is())
{
xListAccess->getByName(s_sItemList) >>= xItemList;
xListAccess->getByName(s_sOrderList) >>= xOrderList;
css::uno::Sequence< ::rtl::OUString > sItemList =
xItemList->getElementNames();
css::uno::Sequence< ::rtl::OUString > sOrderList =
xOrderList->getElementNames();
if (sItemList.getLength()!=0 || sOrderList.getLength()!=0)
bRet = sal_False;
}
return bRet;
}
//=============================================================================
// append a item: use configuration API (not ConfigItem!) to verify the results
within XML !
void HistoryOptTest::impl_appendItem(const ::rtl::OUString& sList,
::rtl::OUStringBuffer& sMsg)
{
if (sList.equalsAscii("PickList"))
{
css::uno::Sequence< css::uno::Sequence<
css::beans::PropertyValue > > aPickList = aHistoryOpt.GetList( ePICKLIST );
sal_Int32 nLength = aPickList.getLength();
for (sal_Int32 i=0; i<nLength; ++i)
{
css::uno::Sequence< css::beans::PropertyValue >
aPickListEntry = aPickList[i];
::rtl::OUString sTemp;
aPickListEntry[(sal_Int32)0].Value >>= sTemp;
sMsg.append(sTemp);
sMsg.appendAscii("\n");
}
}
else if (sList.equalsAscii("URLHistory"))
{
css::uno::Sequence< css::uno::Sequence<
css::beans::PropertyValue > > aHistory = aHistoryOpt.GetList( eHISTORY );
sal_Int32 nLength = aHistory.getLength();
for (sal_Int32 i=0; i<nLength; ++i)
{
css::uno::Sequence< css::beans::PropertyValue >
aHistoryEntry = aHistory[i];
::rtl::OUString sTemp;
aHistoryEntry[(sal_Int32)0].Value >>= sTemp;
sMsg.append(sTemp);
sMsg.appendAscii("\n");
}
}
else if (sList.equalsAscii("HelpBookmarks"))
{
css::uno::Sequence< css::uno::Sequence<
css::beans::PropertyValue > > aHelpBookmarks = aHistoryOpt.GetList(
eHELPBOOKMARKS );
sal_Int32 nLength = aHelpBookmarks.getLength();
for (sal_Int32 i=0; i<nLength; ++i)
{
css::uno::Sequence< css::beans::PropertyValue >
aHelpBookmarksEntry = aHelpBookmarks[i];
::rtl::OUString sTemp;
aHelpBookmarksEntry[(sal_Int32)0].Value >>= sTemp;
sMsg.append(sTemp);
sMsg.appendAscii("\n");
}
}
}
//=============================================================================
// test SvtHistoryOptions::GetSize()
void HistoryOptTest::impl_checkGetSize(const ::rtl::OUString& sList)
{
css::uno::Reference< css::beans::XPropertySet > xSet(m_xCommonXCU,
css::uno::UNO_QUERY);
sal_uInt32 nSize = 0;
sal_uInt32 nSize_ = 0;
if (sList.equalsAscii("PickList"))
{
nSize = aHistoryOpt.GetSize(ePICKLIST);
xSet->setPropertyValue(s_sPickListSize,
css::uno::makeAny(nSize+1));
::comphelper::ConfigurationHelper::flush(m_xCommonXCU);
nSize_ = aHistoryOpt.GetSize(ePICKLIST);
if (nSize_ == nSize)
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetSize(ePICKLIST) error!")), 0);
}
else if (sList.equalsAscii("URLHistory"))
{
nSize = aHistoryOpt.GetSize(eHISTORY);
xSet->setPropertyValue(s_sURLHistorySize,
css::uno::makeAny(nSize+1));
::comphelper::ConfigurationHelper::flush(m_xCommonXCU);
nSize_ = aHistoryOpt.GetSize(eHISTORY);
if (nSize_ == nSize)
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetSize(eHISTORY) error!")), 0);
}
else if (sList.equalsAscii("HelpBookmarks"))
{
nSize = aHistoryOpt.GetSize(eHELPBOOKMARKS);
xSet->setPropertyValue(s_sHelpBookmarksSize,
css::uno::makeAny(nSize+1));
::comphelper::ConfigurationHelper::flush(m_xCommonXCU);
nSize_ = aHistoryOpt.GetSize(eHELPBOOKMARKS);
if (nSize_ == nSize)
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetSize(eHELPBOOKMARKS) error!")),
0);
}
}
//=============================================================================
// test SvtHistoryOptions::SetSize()
void HistoryOptTest::impl_checkSetSize(const ::rtl::OUString& sList)
{
css::uno::Reference< css::beans::XPropertySet > xSet(m_xCommonXCU,
css::uno::UNO_QUERY);
sal_uInt32 nSize = 0;
sal_uInt32 nSize_ = 0;
if (sList.equalsAscii("PickList"))
{
xSet->getPropertyValue(s_sPickListSize) >>= nSize;
aHistoryOpt.SetSize(ePICKLIST, (nSize+1));
xSet->getPropertyValue(s_sPickListSize) >>= nSize_;
if (nSize_ == nSize) //old config item will throw error
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SetSize(ePICKLIST) error!")), 0);
}
else if (sList.equalsAscii("URLHistory"))
{
xSet->getPropertyValue(s_sURLHistorySize) >>= nSize;
aHistoryOpt.SetSize(eHISTORY, (nSize+1));
xSet->getPropertyValue(s_sURLHistorySize) >>= nSize_;
if (nSize_ == nSize) //old config item will throw error
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SetSize(eHISTORY) error!")), 0);
}
else if (sList.equalsAscii("HelpBookmarks"))
{
xSet->getPropertyValue(s_sHelpBookmarksSize) >>= nSize;
aHistoryOpt.SetSize(eHELPBOOKMARKS, (nSize+1));
xSet->getPropertyValue(s_sHelpBookmarksSize) >>= nSize_;
if (nSize_ == nSize) //old config item will throw error
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SetSize(eHELPBOOKMARKS) error!")),
0);
}
}
//=============================================================================
// test SvtHistoryOptions::Clear()
void HistoryOptTest::impl_checkClear(const ::rtl::OUString& sList)
{
if (sList.equalsAscii("PickList"))
{
aHistoryOpt.Clear(ePICKLIST);
if ( !impl_isListEmpty(s_sPickList) )
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Clear(ePICKLIST) error!")), 0);
}
else if (sList.equalsAscii("URLHistory"))
{
aHistoryOpt.Clear(eHISTORY);
if ( !impl_isListEmpty(s_sURLHistory) )
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Clear(eHISTORY) error!")), 0);
}
else if (sList.equalsAscii("HelpBookmarks"))
{
aHistoryOpt.Clear(eHELPBOOKMARKS);
if ( !impl_isListEmpty(s_sHelpBookmarks) )
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Clear(eHELPBOOKMARKS) error!")),
0);
}
}
//=============================================================================
// test SvtHistoryOptions::GetList()
void HistoryOptTest::impl_checkGetList(const ::rtl::OUString& sList)
{
if (sList.equalsAscii("PickList"))
{
impl_clearList(s_sPickList);
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::createFromAscii("file:///c/test1"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
css::uno::Sequence< css::uno::Sequence<
css::beans::PropertyValue > > aHistoryList = aHistoryOpt.GetList( ePICKLIST );
if ( aHistoryList.getLength()==0 )
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetList(ePICKLIST) error!")), 0);
}
else if (sList.equalsAscii("URLHistory"))
{
impl_clearList(s_sURLHistory);
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::createFromAscii("file:///c/test1"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
css::uno::Sequence< css::uno::Sequence<
css::beans::PropertyValue > > aHistoryList = aHistoryOpt.GetList( eHISTORY );
if ( aHistoryList.getLength()==0 )
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetList(eHISTORY) error!")), 0);
}
else if (sList.equalsAscii("HelpBookmarks"))
{
impl_clearList(s_sHelpBookmarks);
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::createFromAscii("file:///c/test1"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
css::uno::Sequence< css::uno::Sequence<
css::beans::PropertyValue > > aHistoryList = aHistoryOpt.GetList(
eHELPBOOKMARKS );
if ( aHistoryList.getLength()==0 )
throw css::uno::RuntimeException(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetList(eHELPBOOKMARKS) error!")),
0);
}
}
//=============================================================================
// test SvtHistoryOptions::AppendItem()
void HistoryOptTest::impl_checkAppendItem(const ::rtl::OUString& sList)
{
if (sList.equalsAscii("PickList"))
{
impl_clearList(s_sPickList);
aHistoryOpt.SetSize(ePICKLIST, (sal_uInt32)4); // nSize = 4
sal_Int32 nListSize = aHistoryOpt.GetSize(ePICKLIST);
::rtl::OUStringBuffer sMsg(256);
sMsg.appendAscii("nSize = ");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(", the list order:\n");
for (sal_Int32 i=0; i<nListSize; ++i)
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::valueOf(i),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::valueOf(nListSize),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append:");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(",the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::createFromAscii("t1.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append t1.odt,the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::valueOf((sal_Int32)2),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append:2,the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::valueOf((sal_Int32)1),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append:1,the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::createFromAscii("t2.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append t2.odt,the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.SetSize(ePICKLIST, (sal_uInt32)6); // nSize = 6
nListSize = aHistoryOpt.GetSize(ePICKLIST);
sMsg.appendAscii("nSize = ");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(",the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::createFromAscii("t3.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append t3.odt,the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::createFromAscii("t4.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append t4.odt,the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.SetSize(ePICKLIST, (sal_uInt32)4); // nSize = 4
nListSize = aHistoryOpt.GetSize(ePICKLIST);
sMsg.appendAscii("nSize = ");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(",the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::createFromAscii("t5.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append t5.odt,the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::createFromAscii("t6.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append t6.odt,the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( ePICKLIST ,
::rtl::OUString::createFromAscii("t7.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append t7.odt,the list order:\n");
impl_appendItem(s_sPickList, sMsg);
sMsg.appendAscii("\n");
LOG_APPENDITEM_PICKLIST(::rtl::OUStringToOString(sMsg.makeStringAndClear(),
RTL_TEXTENCODING_UTF8).getStr())
}
else if (sList.equalsAscii("URLHistory"))
{
impl_clearList(s_sURLHistory);
aHistoryOpt.SetSize(eHISTORY, (sal_uInt32)4);
sal_Int32 nListSize = aHistoryOpt.GetSize(eHISTORY);
::rtl::OUStringBuffer sMsg(256);
sMsg.appendAscii("nSize = ");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(", the list order:\n");
for (sal_Int32 i=0; i<nListSize; ++i)
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::valueOf(i),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::valueOf(nListSize),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append:");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(",the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::createFromAscii("h1.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append h1.odt,the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::valueOf((sal_Int32)2),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append:2,the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::valueOf((sal_Int32)1),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append:1,the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::createFromAscii("h2.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append h2.odt,the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.SetSize(eHISTORY, (sal_uInt32)6); // nSize = 6
nListSize = aHistoryOpt.GetSize(eHISTORY);
sMsg.appendAscii("nSize = ");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(",the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::createFromAscii("h3.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append h3.odt,the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::createFromAscii("h4.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append h4.odt,the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.SetSize(eHISTORY, (sal_uInt32)4); // nSize = 4
nListSize = aHistoryOpt.GetSize(eHISTORY);
sMsg.appendAscii("nSize = ");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(",the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::createFromAscii("h5.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append h5.odt,the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::createFromAscii("h6.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append h6.odt,the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHISTORY ,
::rtl::OUString::createFromAscii("h7.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append h7.odt,the list order:\n");
impl_appendItem(s_sURLHistory, sMsg);
sMsg.appendAscii("\n");
LOG_APPENDITEM_URLHISTORY(::rtl::OUStringToOString(sMsg.makeStringAndClear(),
RTL_TEXTENCODING_UTF8).getStr())
}
else if (sList.equalsAscii("HelpBookmarks"))
{
impl_clearList(s_sHelpBookmarks);
aHistoryOpt.SetSize(eHELPBOOKMARKS, (sal_uInt32)10);
sal_Int32 nListSize = aHistoryOpt.GetSize(eHELPBOOKMARKS);
::rtl::OUStringBuffer sMsg(256);
sMsg.appendAscii("nSize = ");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(", the list order:\n");
for (sal_Int32 i=0; i<nListSize; ++i)
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::valueOf(i),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::valueOf(nListSize),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append:");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(",the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::createFromAscii("b1.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append b1.odt,the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::valueOf((sal_Int32)2),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append:2,the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::valueOf((sal_Int32)1),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append:1,the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::createFromAscii("b2.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append b2.odt,the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.SetSize(eHELPBOOKMARKS, (sal_uInt32)20); // nSize =
20
nListSize = aHistoryOpt.GetSize(eHELPBOOKMARKS);
sMsg.appendAscii("nSize = ");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(",the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::createFromAscii("b3.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append b3.odt,the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::createFromAscii("b4.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append b4.odt,the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.SetSize(eHELPBOOKMARKS, (sal_uInt32)15); // nSize =
15
nListSize = aHistoryOpt.GetSize(eHELPBOOKMARKS);
sMsg.appendAscii("nSize = ");
sMsg.append(::rtl::OUString::valueOf(nListSize));
sMsg.appendAscii(",the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::createFromAscii("b5.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append b5.odt,the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::createFromAscii("b6.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append b6.odt,the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
aHistoryOpt.AppendItem( eHELPBOOKMARKS ,
::rtl::OUString::createFromAscii("b7.odt"),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii(""),
::rtl::OUString::createFromAscii("") );
sMsg.appendAscii("append b7.odt,the list order:\n");
impl_appendItem(s_sHelpBookmarks, sMsg);
sMsg.appendAscii("\n");
LOG_APPENDITEM_HELPBOOKMARKS(::rtl::OUStringToOString(sMsg.makeStringAndClear(),
RTL_TEXTENCODING_UTF8).getStr())
}
}
//=============================================================================
void HistoryOptTest::impl_checkPicklist()
{
impl_checkGetSize(s_sPickList);
impl_checkSetSize(s_sPickList);
impl_checkClear(s_sPickList);
impl_checkGetList(s_sPickList);
impl_checkAppendItem(s_sPickList);
}
//=============================================================================
void HistoryOptTest::impl_checkURLHistory()
{
impl_checkGetSize(s_sURLHistory);
impl_checkSetSize(s_sURLHistory);
impl_checkClear(s_sURLHistory);
impl_checkGetList(s_sURLHistory);
impl_checkAppendItem(s_sURLHistory);
}
//=============================================================================
void HistoryOptTest::impl_checkHelpBookmarks()
{
impl_checkGetSize(s_sHelpBookmarks);
impl_checkSetSize(s_sHelpBookmarks);
impl_checkClear(s_sHelpBookmarks);
impl_checkGetList(s_sHelpBookmarks);
impl_checkAppendItem(s_sHelpBookmarks);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]