LCOV - code coverage report
Current view: top level - cui/source/options - optinet2.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 0 527 0.0 %
Date: 2015-06-13 12:38:46 Functions: 0 60 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <sal/config.h>
      21             : 
      22             : #include <officecfg/Office/Common.hxx>
      23             : #include <officecfg/Office/Security.hxx>
      24             : #include <tools/config.hxx>
      25             : #include <vcl/msgbox.hxx>
      26             : #include <svl/intitem.hxx>
      27             : #include <svl/stritem.hxx>
      28             : #include <svl/eitem.hxx>
      29             : #include <svl/slstitm.hxx>
      30             : #include <sfx2/fcontnr.hxx>
      31             : #include <sfx2/dispatch.hxx>
      32             : #include <sfx2/docfilt.hxx>
      33             : #include <sfx2/viewsh.hxx>
      34             : #include <sfx2/sfxsids.hrc>
      35             : #include <sfx2/filedlghelper.hxx>
      36             : #include <svl/urihelper.hxx>
      37             : #include <sfx2/app.hxx>
      38             : #include <sfx2/objsh.hxx>
      39             : #include <unotools/bootstrap.hxx>
      40             : #include <vcl/help.hxx>
      41             : #include <vcl/layout.hxx>
      42             : #include <vcl/builderfactory.hxx>
      43             : #include <sfx2/viewfrm.hxx>
      44             : #include <unotools/pathoptions.hxx>
      45             : #include <unotools/securityoptions.hxx>
      46             : #include <unotools/localfilehelper.hxx>
      47             : #include <unotools/extendedsecurityoptions.hxx>
      48             : #include <com/sun/star/uno/Sequence.hxx>
      49             : 
      50             : #include <dialmgr.hxx>
      51             : #include "optinet2.hxx"
      52             : #include <svx/svxdlg.hxx>
      53             : #include <cuires.hrc>
      54             : #include "helpid.hrc"
      55             : #include <svx/ofaitem.hxx>
      56             : #include <sfx2/htmlmode.hxx>
      57             : #include <svx/svxids.hrc>
      58             : 
      59             : #include <com/sun/star/security/DocumentDigitalSignatures.hpp>
      60             : 
      61             : #ifdef UNX
      62             : #include <sys/stat.h>
      63             : #include <unistd.h>
      64             : #include <fcntl.h>
      65             : #include <pwd.h>
      66             : #include <sys/types.h>
      67             : #include <string.h>
      68             : #include <rtl/textenc.h>
      69             : #include <rtl/locale.h>
      70             : #include <osl/nlsupport.h>
      71             : #endif
      72             : #include <sal/types.h>
      73             : #include <sal/macros.h>
      74             : #include <rtl/ustring.hxx>
      75             : #include <osl/file.hxx>
      76             : #include <osl/process.h>
      77             : #include <com/sun/star/configuration/theDefaultProvider.hpp>
      78             : #include <com/sun/star/container/XNameReplace.hpp>
      79             : #include <com/sun/star/container/XNameAccess.hpp>
      80             : #include <com/sun/star/beans/NamedValue.hpp>
      81             : #include <com/sun/star/beans/XPropertySet.hpp>
      82             : #include <com/sun/star/beans/XPropertyState.hpp>
      83             : #include <com/sun/star/util/XChangesBatch.hpp>
      84             : #include <comphelper/processfactory.hxx>
      85             : #include <comphelper/string.hxx>
      86             : 
      87             : #include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
      88             : #include "com/sun/star/task/PasswordContainer.hpp"
      89             : #include "com/sun/star/task/XPasswordContainer2.hpp"
      90             : #include "securityoptions.hxx"
      91             : #include "webconninfo.hxx"
      92             : #include "certpath.hxx"
      93             : #include "tsaurls.hxx"
      94             : 
      95             : using namespace ::com::sun::star;
      96             : using namespace ::com::sun::star::uno;
      97             : using namespace ::sfx2;
      98             : 
      99             : // static ----------------------------------------------------------------
     100             : 
     101             : #include <sal/config.h>
     102             : 
     103           0 : VCL_BUILDER_FACTORY_ARGS(SvxNoSpaceEdit, WB_LEFT|WB_VCENTER|WB_BORDER|WB_3DLOOK)
     104             : 
     105           0 : void SvxNoSpaceEdit::KeyInput( const KeyEvent& rKEvent )
     106             : {
     107           0 :     bool bValid = rKEvent.GetKeyCode().GetCode() != KEY_SPACE;
     108           0 :     if (bValid && bOnlyNumeric)
     109             :     {
     110           0 :         const vcl::KeyCode& rKeyCode = rKEvent.GetKeyCode();
     111           0 :         sal_uInt16 nGroup = rKeyCode.GetGroup();
     112           0 :         sal_uInt16 nKey = rKeyCode.GetCode();
     113           0 :         bValid = ( KEYGROUP_NUM == nGroup || KEYGROUP_CURSOR == nGroup ||
     114           0 :                  ( KEYGROUP_MISC == nGroup && ( nKey < KEY_ADD || nKey > KEY_EQUAL ) ) );
     115           0 :         if ( !bValid && ( rKeyCode.IsMod1() && (
     116           0 :              KEY_A == nKey || KEY_C == nKey || KEY_V == nKey || KEY_X == nKey || KEY_Z == nKey ) ) )
     117             :             // Erase, Copy, Paste, Select All und Undo soll funktionieren
     118           0 :             bValid = true;
     119             :     }
     120           0 :     if (bValid)
     121           0 :         Edit::KeyInput(rKEvent);
     122           0 : }
     123             : 
     124             : 
     125             : 
     126           0 : void SvxNoSpaceEdit::Modify()
     127             : {
     128           0 :     Edit::Modify();
     129             : 
     130           0 :     if ( bOnlyNumeric )
     131             :     {
     132           0 :         OUString aValue = GetText();
     133             : 
     134           0 :         if ( !comphelper::string::isdigitAsciiString(aValue) || (long)aValue.toInt32() > USHRT_MAX )
     135             :             // the maximum value of a port number is USHRT_MAX
     136           0 :             ScopedVclPtrInstance<MessageDialog>::Create( this, CUI_RES( RID_SVXSTR_OPT_PROXYPORTS ) )->Execute();
     137             :     }
     138           0 : }
     139             : 
     140           0 : bool SvxNoSpaceEdit::set_property(const OString &rKey, const OString &rValue)
     141             : {
     142           0 :     if (rKey == "only-numeric")
     143           0 :         bOnlyNumeric = toBool(rValue);
     144             :     else
     145           0 :         return Edit::set_property(rKey, rValue);
     146           0 :     return true;
     147             : }
     148             : 
     149             : 
     150             : /********************************************************************/
     151             : /*                                                                  */
     152             : /*  SvxProxyTabPage                                                 */
     153             : /*                                                                  */
     154             : /********************************************************************/
     155             : 
     156           0 : SvxProxyTabPage::SvxProxyTabPage(vcl::Window* pParent, const SfxItemSet& rSet)
     157             :     : SfxTabPage(pParent, "OptProxyPage","cui/ui/optproxypage.ui", &rSet)
     158             :     , aProxyModePN("ooInetProxyType")
     159             :     , aHttpProxyPN("ooInetHTTPProxyName")
     160             :     , aHttpPortPN("ooInetHTTPProxyPort")
     161             :     , aHttpsProxyPN("ooInetHTTPSProxyName")
     162             :     , aHttpsPortPN("ooInetHTTPSProxyPort")
     163             :     , aFtpProxyPN("ooInetFTPProxyName")
     164             :     , aFtpPortPN("ooInetFTPProxyPort")
     165           0 :     , aNoProxyDescPN("ooInetNoProxy")
     166             : {
     167           0 :     get(m_pProxyModeLB, "proxymode");
     168             : 
     169           0 :     get(m_pHttpProxyFT, "httpft");
     170           0 :     get(m_pHttpProxyED, "http");
     171           0 :     get(m_pHttpPortFT, "httpportft");
     172           0 :     get(m_pHttpPortED, "httpport");
     173             : 
     174           0 :     get(m_pHttpsProxyFT, "httpsft");
     175           0 :     get(m_pHttpsProxyED, "https");
     176           0 :     get(m_pHttpsPortFT, "httpsportft");
     177           0 :     get(m_pHttpsPortED, "httpsport");
     178             : 
     179           0 :     get(m_pFtpProxyFT, "ftpft");
     180           0 :     get(m_pFtpProxyED, "ftp");
     181           0 :     get(m_pFtpPortFT, "ftpportft");
     182           0 :     get(m_pFtpPortED, "ftpport");
     183             : 
     184           0 :     get(m_pNoProxyForFT, "noproxyft");
     185           0 :     get(m_pNoProxyForED, "noproxy");
     186           0 :     get(m_pNoProxyDescFT, "noproxydesc");
     187             : 
     188           0 :     Link<> aLink = LINK( this, SvxProxyTabPage, LoseFocusHdl_Impl );
     189           0 :     m_pHttpPortED->SetLoseFocusHdl( aLink );
     190           0 :     m_pHttpsPortED->SetLoseFocusHdl( aLink );
     191           0 :     m_pFtpPortED->SetLoseFocusHdl( aLink );
     192             : 
     193           0 :     m_pProxyModeLB->SetSelectHdl(LINK( this, SvxProxyTabPage, ProxyHdl_Impl ));
     194             : 
     195             :     Reference< com::sun::star::lang::XMultiServiceFactory >
     196             :         xConfigurationProvider(
     197             :             configuration::theDefaultProvider::get(
     198           0 :                 comphelper::getProcessComponentContext() ) );
     199             : 
     200           0 :     OUString aConfigRoot( "org.openoffice.Inet/Settings" );
     201             : 
     202           0 :     beans::NamedValue aProperty;
     203           0 :     aProperty.Name  = "nodepath";
     204           0 :     aProperty.Value = makeAny( aConfigRoot );
     205             : 
     206           0 :     Sequence< Any > aArgumentList( 1 );
     207           0 :     aArgumentList[0] = makeAny( aProperty );
     208             : 
     209           0 :     m_xConfigurationUpdateAccess = xConfigurationProvider->createInstanceWithArguments(
     210             :         OUString( "com.sun.star.configuration.ConfigurationUpdateAccess" ),
     211           0 :         aArgumentList );
     212           0 : }
     213             : 
     214           0 : SvxProxyTabPage::~SvxProxyTabPage()
     215             : {
     216           0 :     disposeOnce();
     217           0 : }
     218             : 
     219           0 : void SvxProxyTabPage::dispose()
     220             : {
     221           0 :     m_pProxyModeLB.clear();
     222           0 :     m_pHttpProxyFT.clear();
     223           0 :     m_pHttpProxyED.clear();
     224           0 :     m_pHttpPortFT.clear();
     225           0 :     m_pHttpPortED.clear();
     226           0 :     m_pHttpsProxyFT.clear();
     227           0 :     m_pHttpsProxyED.clear();
     228           0 :     m_pHttpsPortFT.clear();
     229           0 :     m_pHttpsPortED.clear();
     230           0 :     m_pFtpProxyFT.clear();
     231           0 :     m_pFtpProxyED.clear();
     232           0 :     m_pFtpPortFT.clear();
     233           0 :     m_pFtpPortED.clear();
     234           0 :     m_pNoProxyForFT.clear();
     235           0 :     m_pNoProxyForED.clear();
     236           0 :     m_pNoProxyDescFT.clear();
     237           0 :     SfxTabPage::dispose();
     238           0 : }
     239             : 
     240           0 : VclPtr<SfxTabPage> SvxProxyTabPage::Create(vcl::Window* pParent, const SfxItemSet* rAttrSet )
     241             : {
     242           0 :     return VclPtr<SvxProxyTabPage>::Create(pParent, *rAttrSet);
     243             : }
     244             : 
     245           0 : void SvxProxyTabPage::ReadConfigData_Impl()
     246             : {
     247             :     try {
     248           0 :         Reference< container::XNameAccess > xNameAccess(m_xConfigurationUpdateAccess, UNO_QUERY_THROW);
     249             : 
     250           0 :         sal_Int32 nIntValue = 0;
     251           0 :         OUString  aStringValue;
     252             : 
     253           0 :         if( xNameAccess->getByName(aProxyModePN) >>= nIntValue )
     254             :         {
     255           0 :             m_pProxyModeLB->SelectEntryPos( nIntValue );
     256             :         }
     257             : 
     258           0 :         if( xNameAccess->getByName(aHttpProxyPN) >>= aStringValue )
     259             :         {
     260           0 :             m_pHttpProxyED->SetText( aStringValue );
     261             :         }
     262             : 
     263           0 :         if( xNameAccess->getByName(aHttpPortPN) >>= nIntValue )
     264             :         {
     265           0 :             m_pHttpPortED->SetText( OUString::number( nIntValue ));
     266             :         }
     267             : 
     268           0 :         if( xNameAccess->getByName(aHttpsProxyPN) >>= aStringValue )
     269             :         {
     270           0 :             m_pHttpsProxyED->SetText( aStringValue );
     271             :         }
     272             : 
     273           0 :         if( xNameAccess->getByName(aHttpsPortPN) >>= nIntValue )
     274             :         {
     275           0 :             m_pHttpsPortED->SetText( OUString::number( nIntValue ));
     276             :         }
     277             : 
     278           0 :         if( xNameAccess->getByName(aFtpProxyPN) >>= aStringValue )
     279             :         {
     280           0 :             m_pFtpProxyED->SetText( aStringValue );
     281             :         }
     282             : 
     283           0 :         if( xNameAccess->getByName(aFtpPortPN) >>= nIntValue )
     284             :         {
     285           0 :             m_pFtpPortED->SetText( OUString::number( nIntValue ));
     286             :         }
     287             : 
     288           0 :         if( xNameAccess->getByName(aNoProxyDescPN) >>= aStringValue )
     289             :         {
     290           0 :             m_pNoProxyForED->SetText( aStringValue );
     291           0 :         }
     292             :     }
     293             : 
     294           0 :     catch (const container::NoSuchElementException&) {
     295             :         OSL_TRACE( "SvxProxyTabPage::ReadConfigData_Impl: NoSuchElementException caught" );
     296             :     }
     297             : 
     298           0 :     catch (const com::sun::star::lang::WrappedTargetException &) {
     299             :         OSL_TRACE( "SvxProxyTabPage::ReadConfigData_Impl: WrappedTargetException caught" );
     300             :     }
     301             : 
     302           0 :     catch (const RuntimeException &) {
     303             :         OSL_TRACE( "SvxProxyTabPage::ReadConfigData_Impl: RuntimeException caught" );
     304             :     }
     305             : 
     306           0 : }
     307             : 
     308           0 : void SvxProxyTabPage::ReadConfigDefaults_Impl()
     309             : {
     310             :     try
     311             :     {
     312           0 :         Reference< beans::XPropertyState > xPropertyState(m_xConfigurationUpdateAccess, UNO_QUERY_THROW);
     313             : 
     314           0 :         sal_Int32 nIntValue = 0;
     315           0 :         OUString  aStringValue;
     316             : 
     317           0 :         if( xPropertyState->getPropertyDefault(aHttpProxyPN) >>= aStringValue )
     318             :         {
     319           0 :             m_pHttpProxyED->SetText( aStringValue );
     320             :         }
     321             : 
     322           0 :         if( xPropertyState->getPropertyDefault(aHttpPortPN) >>= nIntValue )
     323             :         {
     324           0 :             m_pHttpPortED->SetText( OUString::number( nIntValue ));
     325             :         }
     326             : 
     327           0 :         if( xPropertyState->getPropertyDefault(aHttpsProxyPN) >>= aStringValue )
     328             :         {
     329           0 :             m_pHttpsProxyED->SetText( aStringValue );
     330             :         }
     331             : 
     332           0 :         if( xPropertyState->getPropertyDefault(aHttpsPortPN) >>= nIntValue )
     333             :         {
     334           0 :             m_pHttpsPortED->SetText( OUString::number( nIntValue ));
     335             :         }
     336             : 
     337           0 :         if( xPropertyState->getPropertyDefault(aFtpProxyPN) >>= aStringValue )
     338             :         {
     339           0 :             m_pFtpProxyED->SetText( aStringValue );
     340             :         }
     341             : 
     342           0 :         if( xPropertyState->getPropertyDefault(aFtpPortPN) >>= nIntValue )
     343             :         {
     344           0 :             m_pFtpPortED->SetText( OUString::number( nIntValue ));
     345             :         }
     346             : 
     347           0 :         if( xPropertyState->getPropertyDefault(aNoProxyDescPN) >>= aStringValue )
     348             :         {
     349           0 :             m_pNoProxyForED->SetText( aStringValue );
     350           0 :         }
     351             :     }
     352           0 :     catch (const beans::UnknownPropertyException &)
     353             :     {
     354             :         OSL_TRACE( "SvxProxyTabPage::RestoreConfigDefaults_Impl: UnknownPropertyException caught" );
     355             :     }
     356             : 
     357           0 :     catch (const com::sun::star::lang::WrappedTargetException &) {
     358             :         OSL_TRACE( "SvxProxyTabPage::RestoreConfigDefaults_Impl: WrappedTargetException caught" );
     359             :     }
     360             : 
     361           0 :     catch (const RuntimeException &)
     362             :     {
     363             :         OSL_TRACE( "SvxProxyTabPage::RestoreConfigDefaults_Impl: RuntimeException caught" );
     364             :     }
     365           0 : }
     366             : 
     367           0 : void SvxProxyTabPage::RestoreConfigDefaults_Impl()
     368             : {
     369             :     try
     370             :     {
     371           0 :         Reference< beans::XPropertyState > xPropertyState(m_xConfigurationUpdateAccess, UNO_QUERY_THROW);
     372             : 
     373           0 :         xPropertyState->setPropertyToDefault(aProxyModePN);
     374           0 :         xPropertyState->setPropertyToDefault(aHttpProxyPN);
     375           0 :         xPropertyState->setPropertyToDefault(aHttpPortPN);
     376           0 :         xPropertyState->setPropertyToDefault(aHttpsProxyPN);
     377           0 :         xPropertyState->setPropertyToDefault(aHttpsPortPN);
     378           0 :         xPropertyState->setPropertyToDefault(aFtpProxyPN);
     379           0 :         xPropertyState->setPropertyToDefault(aFtpPortPN);
     380           0 :         xPropertyState->setPropertyToDefault(aNoProxyDescPN);
     381             : 
     382           0 :         Reference< util::XChangesBatch > xChangesBatch(m_xConfigurationUpdateAccess, UNO_QUERY_THROW);
     383           0 :         xChangesBatch->commitChanges();
     384             :     }
     385             : 
     386           0 :     catch (const beans::UnknownPropertyException &)
     387             :     {
     388             :         OSL_TRACE( "SvxProxyTabPage::RestoreConfigDefaults_Impl: UnknownPropertyException caught" );
     389             :     }
     390             : 
     391           0 :     catch (const com::sun::star::lang::WrappedTargetException &) {
     392             :         OSL_TRACE( "SvxProxyTabPage::RestoreConfigDefaults_Impl: WrappedTargetException caught" );
     393             :     }
     394             : 
     395           0 :     catch (const RuntimeException &)
     396             :     {
     397             :         OSL_TRACE( "SvxProxyTabPage::RestoreConfigDefaults_Impl: RuntimeException caught" );
     398             :     }
     399           0 : }
     400             : 
     401           0 : void SvxProxyTabPage::Reset(const SfxItemSet*)
     402             : {
     403           0 :     ReadConfigData_Impl();
     404             : 
     405           0 :     m_pProxyModeLB->SaveValue();
     406           0 :     m_pHttpProxyED->SaveValue();
     407           0 :     m_pHttpPortED->SaveValue();
     408           0 :     m_pHttpsProxyED->SaveValue();
     409           0 :     m_pHttpsPortED->SaveValue();
     410           0 :     m_pFtpProxyED->SaveValue();
     411           0 :     m_pFtpPortED->SaveValue();
     412           0 :     m_pNoProxyForED->SaveValue();
     413             : 
     414           0 :     EnableControls_Impl( m_pProxyModeLB->GetSelectEntryPos() == 2 );
     415           0 : }
     416             : 
     417           0 : bool SvxProxyTabPage::FillItemSet(SfxItemSet* )
     418             : {
     419           0 :     bool bModified = false;
     420             : 
     421             :     try {
     422           0 :         Reference< beans::XPropertySet > xPropertySet(m_xConfigurationUpdateAccess, UNO_QUERY_THROW );
     423             : 
     424           0 :         sal_Int32 nSelPos = m_pProxyModeLB->GetSelectEntryPos();
     425           0 :         if(m_pProxyModeLB->IsValueChangedFromSaved())
     426             :         {
     427           0 :             if( nSelPos == 1 )
     428             :             {
     429           0 :                 RestoreConfigDefaults_Impl();
     430           0 :                 return true;
     431             :             }
     432             : 
     433           0 :             xPropertySet->setPropertyValue(aProxyModePN,
     434           0 :                 makeAny((sal_Int32) nSelPos));
     435           0 :             bModified = true;
     436             :         }
     437             : 
     438           0 :         if(m_pHttpProxyED->IsValueChangedFromSaved())
     439             :         {
     440           0 :             xPropertySet->setPropertyValue( aHttpProxyPN, makeAny(m_pHttpProxyED->GetText()));
     441           0 :             bModified = true;
     442             :         }
     443             : 
     444           0 :         if ( m_pHttpPortED->IsValueChangedFromSaved())
     445             :         {
     446           0 :             xPropertySet->setPropertyValue( aHttpPortPN, makeAny(m_pHttpPortED->GetText().toInt32()));
     447           0 :             bModified = true;
     448             :         }
     449             : 
     450           0 :         if( m_pHttpsProxyED->IsValueChangedFromSaved() )
     451             :         {
     452           0 :             xPropertySet->setPropertyValue( aHttpsProxyPN, makeAny(m_pHttpsProxyED->GetText()) );
     453           0 :             bModified = true;
     454             :         }
     455             : 
     456           0 :         if ( m_pHttpsPortED->IsValueChangedFromSaved() )
     457             :         {
     458           0 :             xPropertySet->setPropertyValue( aHttpsPortPN, makeAny(m_pHttpsPortED->GetText().toInt32()) );
     459           0 :             bModified = true;
     460             :         }
     461             : 
     462           0 :         if( m_pFtpProxyED->IsValueChangedFromSaved())
     463             :         {
     464           0 :             xPropertySet->setPropertyValue( aFtpProxyPN, makeAny(m_pFtpProxyED->GetText()) );
     465           0 :             bModified = true;
     466             :         }
     467             : 
     468           0 :         if ( m_pFtpPortED->IsValueChangedFromSaved() )
     469             :         {
     470           0 :             xPropertySet->setPropertyValue( aFtpPortPN, makeAny(m_pFtpPortED->GetText().toInt32()));
     471           0 :             bModified = true;
     472             :         }
     473             : 
     474           0 :         if ( m_pNoProxyForED->IsValueChangedFromSaved() )
     475             :         {
     476           0 :             xPropertySet->setPropertyValue( aNoProxyDescPN, makeAny( m_pNoProxyForED->GetText()));
     477           0 :             bModified = true;
     478             :         }
     479             : 
     480           0 :         Reference< util::XChangesBatch > xChangesBatch(m_xConfigurationUpdateAccess, UNO_QUERY_THROW);
     481           0 :         xChangesBatch->commitChanges();
     482             :     }
     483             : 
     484           0 :     catch (const com::sun::star::lang::IllegalArgumentException &) {
     485             :         OSL_TRACE( "SvxProxyTabPage::FillItemSet: IllegalArgumentException caught" );
     486             :     }
     487             : 
     488           0 :     catch (const beans::UnknownPropertyException &) {
     489             :         OSL_TRACE( "SvxProxyTabPage::FillItemSet: UnknownPropertyException caught" );
     490             :     }
     491             : 
     492           0 :     catch (const beans::PropertyVetoException &) {
     493             :         OSL_TRACE( "SvxProxyTabPage::FillItemSet: PropertyVetoException caught" );
     494             :     }
     495             : 
     496           0 :     catch (const com::sun::star::lang::WrappedTargetException &) {
     497             :         OSL_TRACE( "SvxProxyTabPage::FillItemSet: WrappedTargetException caught" );
     498             :     }
     499             : 
     500           0 :     catch (const RuntimeException &) {
     501             :         OSL_TRACE( "SvxProxyTabPage::FillItemSet: RuntimeException caught" );
     502             :     }
     503             : 
     504           0 :     return bModified;
     505             : }
     506             : 
     507           0 : void SvxProxyTabPage::EnableControls_Impl(bool bEnable)
     508             : {
     509           0 :     m_pHttpProxyFT->Enable(bEnable);
     510           0 :     m_pHttpProxyED->Enable(bEnable);
     511           0 :     m_pHttpPortFT->Enable(bEnable);
     512           0 :     m_pHttpPortED->Enable(bEnable);
     513             : 
     514           0 :     m_pHttpsProxyFT->Enable(bEnable);
     515           0 :     m_pHttpsProxyED->Enable(bEnable);
     516           0 :     m_pHttpsPortFT->Enable(bEnable);
     517           0 :     m_pHttpsPortED->Enable(bEnable);
     518             : 
     519           0 :     m_pFtpProxyFT->Enable(bEnable);
     520           0 :     m_pFtpProxyED->Enable(bEnable);
     521           0 :     m_pFtpPortFT->Enable(bEnable);
     522           0 :     m_pFtpPortED->Enable(bEnable);
     523             : 
     524           0 :     m_pNoProxyForFT->Enable(bEnable);
     525           0 :     m_pNoProxyForED->Enable(bEnable);
     526           0 :     m_pNoProxyDescFT->Enable(bEnable);
     527           0 : }
     528             : 
     529             : 
     530             : 
     531           0 : IMPL_LINK( SvxProxyTabPage, ProxyHdl_Impl, ListBox *, pBox )
     532             : {
     533           0 :     sal_Int32 nPos = pBox->GetSelectEntryPos();
     534             : 
     535             :     // Restore original system values
     536           0 :     if( nPos == 1 )
     537             :     {
     538           0 :         ReadConfigDefaults_Impl();
     539             :     }
     540             : 
     541           0 :     EnableControls_Impl(nPos == 2);
     542           0 :     return 0;
     543             : }
     544             : 
     545             : 
     546             : 
     547           0 : IMPL_STATIC_LINK( SvxProxyTabPage, LoseFocusHdl_Impl, Edit *, pEdit )
     548             : {
     549           0 :     OUString aValue = pEdit->GetText();
     550             : 
     551           0 :     if ( !comphelper::string::isdigitAsciiString(aValue) || (long)aValue.toInt32() > USHRT_MAX )
     552           0 :         pEdit->SetText( OUString('0') );
     553           0 :     return 0;
     554             : }
     555             : 
     556             : 
     557             : 
     558             : //#98647#----------------------------------------------
     559           0 : void SvxScriptExecListBox::RequestHelp( const HelpEvent& rHEvt )
     560             : {   // try to show tips just like as on toolbars
     561           0 :     sal_Int32 nPos=LISTBOX_ENTRY_NOTFOUND;
     562           0 :     sal_Int32 nTop = GetTopEntry();
     563           0 :     sal_uInt16 nCount = GetDisplayLineCount(); // Attention: Not GetLineCount()
     564           0 :     Point aPt = ScreenToOutputPixel( rHEvt.GetMousePosPixel() );
     565           0 :     Rectangle aItemRect;
     566           0 :     if( nCount > 0 ) // if there're some entries, find it.
     567           0 :          for( nPos = nTop ; nPos <= nTop+nCount-1 ; nPos++ ) {
     568           0 :             aItemRect = GetBoundingRectangle(nPos);
     569           0 :             if( aPt.Y() < aItemRect.Top() || aPt.Y() > aItemRect.Bottom() )
     570           0 :                 continue;
     571             :             else
     572           0 :                 break;
     573             :         }
     574             :      else // if not, nothing happens.
     575           0 :          return;
     576           0 :      OUString aHelpText;
     577           0 :      if( nPos <= nTop+nCount-1 ) // if find the matching entry, get its content.
     578           0 :          aHelpText = GetEntry(nPos);
     579           0 :     if( aHelpText.getLength() && GetTextWidth(aHelpText)<GetOutputSizePixel().Width() )
     580           0 :         aHelpText.clear(); // if the entry is quite short, clear the helping tip content.
     581           0 :     aItemRect = Rectangle(Point(0,0),GetSizePixel());
     582           0 :     aPt = Point(OutputToScreenPixel( aItemRect.TopLeft() ));
     583           0 :     aItemRect.Left()   = aPt.X();
     584           0 :     aItemRect.Top()    = aPt.Y();
     585           0 :     aPt = OutputToScreenPixel( aItemRect.BottomRight() );
     586           0 :     aItemRect.Right()  = aPt.X();
     587           0 :     aItemRect.Bottom() = aPt.Y();
     588           0 :     if( rHEvt.GetMode() == HelpEventMode::BALLOON )
     589           0 :         Help::ShowBalloon( this, aItemRect.Center(), aItemRect, aHelpText);
     590             :     else
     591           0 :         Help::ShowQuickHelp( this, aItemRect, aHelpText );
     592             : }
     593             : 
     594             : /********************************************************************/
     595             : /*                                                                  */
     596             : /*  SvxSecurityTabPage                                             */
     597             : /*                                                                  */
     598             : /********************************************************************/
     599             : 
     600           0 : SvxSecurityTabPage::SvxSecurityTabPage(vcl::Window* pParent, const SfxItemSet& rSet)
     601             :     : SfxTabPage(pParent, "OptSecurityPage", "cui/ui/optsecuritypage.ui", &rSet)
     602           0 :     , mpSecOptions(new SvtSecurityOptions)
     603             :     , mpSecOptDlg(NULL)
     604           0 :     , mpCertPathDlg(NULL)
     605             : {
     606           0 :     get(m_pSecurityOptionsPB, "options");
     607           0 :     get(m_pSavePasswordsCB, "savepassword");
     608             : 
     609             :     //fdo#65595, we need height-for-width support here, but for now we can
     610             :     //bodge it
     611           0 :     Size aPrefSize(m_pSavePasswordsCB->get_preferred_size());
     612           0 :     Size aSize(m_pSavePasswordsCB->CalcMinimumSize(56*approximate_char_width()));
     613           0 :     if (aPrefSize.Width() > aSize.Width())
     614             :     {
     615           0 :         m_pSavePasswordsCB->set_width_request(aSize.Width());
     616           0 :         m_pSavePasswordsCB->set_height_request(aSize.Height());
     617             :     }
     618             : 
     619           0 :     get(m_pShowConnectionsPB, "connections");
     620           0 :     get(m_pMasterPasswordCB, "usemasterpassword");
     621           0 :     get(m_pMasterPasswordFT, "masterpasswordtext");
     622           0 :     get(m_pMasterPasswordPB, "masterpassword");
     623           0 :     get(m_pMacroSecFrame, "macrosecurity");
     624           0 :     get(m_pMacroSecPB, "macro");
     625           0 :     get(m_pCertFrame, "certificatepath");
     626           0 :     get(m_pCertPathPB, "cert");
     627           0 :     get(m_pTSAURLsFrame, "tsaurls");
     628           0 :     get(m_pTSAURLsPB, "tsas");
     629           0 :     m_sPasswordStoringDeactivateStr = get<FixedText>("nopasswordsave")->GetText();
     630             : 
     631           0 :     InitControls();
     632             : 
     633           0 :     m_pSecurityOptionsPB->SetClickHdl( LINK( this, SvxSecurityTabPage, SecurityOptionsHdl ) );
     634           0 :     m_pSavePasswordsCB->SetClickHdl( LINK( this, SvxSecurityTabPage, SavePasswordHdl ) );
     635           0 :     m_pMasterPasswordPB->SetClickHdl( LINK( this, SvxSecurityTabPage, MasterPasswordHdl ) );
     636           0 :     m_pMasterPasswordCB->SetClickHdl( LINK( this, SvxSecurityTabPage, MasterPasswordCBHdl ) );
     637           0 :     m_pShowConnectionsPB->SetClickHdl( LINK( this, SvxSecurityTabPage, ShowPasswordsHdl ) );
     638           0 :     m_pMacroSecPB->SetClickHdl( LINK( this, SvxSecurityTabPage, MacroSecPBHdl ) );
     639           0 :     m_pCertPathPB->SetClickHdl( LINK( this, SvxSecurityTabPage, CertPathPBHdl ) );
     640           0 :     m_pTSAURLsPB->SetClickHdl( LINK( this, SvxSecurityTabPage, TSAURLsPBHdl ) );
     641             : 
     642           0 :     ActivatePage( rSet );
     643           0 : }
     644             : 
     645           0 : SvxSecurityTabPage::~SvxSecurityTabPage()
     646             : {
     647           0 :     disposeOnce();
     648           0 : }
     649             : 
     650           0 : void SvxSecurityTabPage::dispose()
     651             : {
     652           0 :     delete mpSecOptions;
     653           0 :     mpSecOptions = NULL;
     654           0 :     mpCertPathDlg.disposeAndClear();
     655           0 :     mpSecOptDlg.clear();
     656           0 :     m_pSecurityOptionsPB.clear();
     657           0 :     m_pSavePasswordsCB.clear();
     658           0 :     m_pShowConnectionsPB.clear();
     659           0 :     m_pMasterPasswordCB.clear();
     660           0 :     m_pMasterPasswordFT.clear();
     661           0 :     m_pMasterPasswordPB.clear();
     662           0 :     m_pMacroSecFrame.clear();
     663           0 :     m_pMacroSecPB.clear();
     664           0 :     m_pCertFrame.clear();
     665           0 :     m_pCertPathPB.clear();
     666           0 :     m_pTSAURLsFrame.clear();
     667           0 :     m_pTSAURLsPB.clear();
     668             : 
     669           0 :     SfxTabPage::dispose();
     670           0 : }
     671             : 
     672           0 : IMPL_LINK_NOARG(SvxSecurityTabPage, SecurityOptionsHdl)
     673             : {
     674           0 :     if ( !mpSecOptDlg )
     675           0 :         mpSecOptDlg = VclPtr<svx::SecurityOptionsDialog>::Create( this, mpSecOptions );
     676           0 :     mpSecOptDlg->Execute();
     677           0 :     return 0;
     678             : }
     679             : 
     680           0 : IMPL_LINK_NOARG(SvxSecurityTabPage, SavePasswordHdl)
     681             : {
     682             :     try
     683             :     {
     684             :         Reference< task::XPasswordContainer2 > xMasterPasswd(
     685           0 :             task::PasswordContainer::create(comphelper::getProcessComponentContext()));
     686             : 
     687           0 :         if ( m_pSavePasswordsCB->IsChecked() )
     688             :         {
     689           0 :             bool bOldValue = xMasterPasswd->allowPersistentStoring( sal_True );
     690           0 :             xMasterPasswd->removeMasterPassword();
     691           0 :             if ( xMasterPasswd->changeMasterPassword( Reference< task::XInteractionHandler >() ) )
     692             :             {
     693           0 :                 m_pMasterPasswordPB->Enable( true );
     694           0 :                 m_pMasterPasswordCB->Check( true );
     695           0 :                 m_pMasterPasswordCB->Enable( true );
     696           0 :                 m_pMasterPasswordFT->Enable( true );
     697           0 :                 m_pShowConnectionsPB->Enable( true );
     698             :             }
     699             :             else
     700             :             {
     701           0 :                 xMasterPasswd->allowPersistentStoring( bOldValue );
     702           0 :                 m_pSavePasswordsCB->Check( false );
     703             :             }
     704             :         }
     705             :         else
     706             :         {
     707           0 :             ScopedVclPtrInstance< QueryBox > aQuery( this, WB_YES_NO|WB_DEF_NO, m_sPasswordStoringDeactivateStr );
     708           0 :             sal_uInt16 nRet = aQuery->Execute();
     709             : 
     710           0 :             if( RET_YES == nRet )
     711             :             {
     712           0 :                 xMasterPasswd->allowPersistentStoring( sal_False );
     713           0 :                 m_pMasterPasswordCB->Check( true );
     714           0 :                 m_pMasterPasswordPB->Enable( false );
     715           0 :                 m_pMasterPasswordCB->Enable( false );
     716           0 :                 m_pMasterPasswordFT->Enable( false );
     717           0 :                 m_pShowConnectionsPB->Enable( false );
     718             :             }
     719             :             else
     720             :             {
     721           0 :                 m_pSavePasswordsCB->Check( true );
     722           0 :                 m_pMasterPasswordPB->Enable( true );
     723           0 :                 m_pShowConnectionsPB->Enable( true );
     724           0 :             }
     725           0 :         }
     726             :     }
     727           0 :     catch (const Exception&)
     728             :     {
     729           0 :         m_pSavePasswordsCB->Check( !m_pSavePasswordsCB->IsChecked() );
     730             :     }
     731             : 
     732           0 :     return 0;
     733             : }
     734             : 
     735           0 : IMPL_STATIC_LINK_NOARG(SvxSecurityTabPage, MasterPasswordHdl)
     736             : {
     737             :     try
     738             :     {
     739             :         Reference< task::XPasswordContainer2 > xMasterPasswd(
     740           0 :             task::PasswordContainer::create(comphelper::getProcessComponentContext()));
     741             : 
     742           0 :         if ( xMasterPasswd->isPersistentStoringAllowed() )
     743           0 :             xMasterPasswd->changeMasterPassword( Reference< task::XInteractionHandler >() );
     744             :     }
     745           0 :     catch (const Exception&)
     746             :     {}
     747             : 
     748           0 :     return 0;
     749             : }
     750             : 
     751           0 : IMPL_LINK_NOARG(SvxSecurityTabPage, MasterPasswordCBHdl)
     752             : {
     753             :     try
     754             :     {
     755             :         Reference< task::XPasswordContainer2 > xMasterPasswd(
     756           0 :             task::PasswordContainer::create(comphelper::getProcessComponentContext()));
     757             : 
     758           0 :         if ( m_pMasterPasswordCB->IsChecked() )
     759             :         {
     760           0 :             if ( xMasterPasswd->isPersistentStoringAllowed() && xMasterPasswd->changeMasterPassword( Reference< task::XInteractionHandler >() ) )
     761             :             {
     762           0 :                 m_pMasterPasswordPB->Enable( true );
     763           0 :                 m_pMasterPasswordFT->Enable( true );
     764             :             }
     765             :             else
     766             :             {
     767           0 :                 m_pMasterPasswordCB->Check( false );
     768           0 :                 m_pMasterPasswordPB->Enable( true );
     769           0 :                 m_pMasterPasswordFT->Enable( true );
     770             :             }
     771             :         }
     772             :         else
     773             :         {
     774           0 :             if ( xMasterPasswd->isPersistentStoringAllowed() && xMasterPasswd->useDefaultMasterPassword( Reference< task::XInteractionHandler >() ) )
     775             :             {
     776           0 :                 m_pMasterPasswordPB->Enable( false );
     777           0 :                 m_pMasterPasswordFT->Enable( false );
     778             :             }
     779             :             else
     780             :             {
     781           0 :                 m_pMasterPasswordCB->Check( true );
     782           0 :                 m_pMasterPasswordPB->Enable( true );
     783           0 :                 m_pShowConnectionsPB->Enable( true );
     784             :             }
     785           0 :         }
     786             :     }
     787           0 :     catch (const Exception&)
     788             :     {
     789           0 :         m_pSavePasswordsCB->Check( !m_pSavePasswordsCB->IsChecked() );
     790             :     }
     791             : 
     792           0 :     return 0;
     793             : }
     794             : 
     795           0 : IMPL_LINK_NOARG(SvxSecurityTabPage, ShowPasswordsHdl)
     796             : {
     797             :     try
     798             :     {
     799             :         Reference< task::XPasswordContainer2 > xMasterPasswd(
     800           0 :             task::PasswordContainer::create(comphelper::getProcessComponentContext()));
     801             : 
     802           0 :         if ( xMasterPasswd->isPersistentStoringAllowed() && xMasterPasswd->authorizateWithMasterPassword( Reference< task::XInteractionHandler>() ) )
     803             :         {
     804           0 :             ScopedVclPtrInstance< svx::WebConnectionInfoDialog > aDlg(this);
     805           0 :             aDlg->Execute();
     806           0 :         }
     807             :     }
     808           0 :     catch (const Exception&)
     809             :     {}
     810           0 :     return 0;
     811             : }
     812             : 
     813           0 : IMPL_LINK_NOARG(SvxSecurityTabPage, CertPathPBHdl)
     814             : {
     815           0 :     if (!mpCertPathDlg)
     816           0 :         mpCertPathDlg = VclPtr<CertPathDialog>::Create(this);
     817             : 
     818           0 :     OUString sOrig = mpCertPathDlg->getDirectory();
     819           0 :     short nRet = mpCertPathDlg->Execute();
     820             : 
     821           0 :     if (nRet == RET_OK && sOrig != mpCertPathDlg->getDirectory())
     822             :     {
     823           0 :         ScopedVclPtrInstance< MessageDialog > aWarnBox(this, CUI_RES(RID_SVXSTR_OPTIONS_RESTART), VCL_MESSAGE_INFO);
     824           0 :         aWarnBox->Execute();
     825             :     }
     826             : 
     827           0 :     return 0;
     828             : }
     829             : 
     830           0 : IMPL_LINK_NOARG(SvxSecurityTabPage, TSAURLsPBHdl)
     831             : {
     832             :     // Unlike the mpCertPathDlg, we *don't* keep the same dialog object around between
     833             :     // invocations. Seems clearer to my little brain that way.
     834             : 
     835           0 :     ScopedVclPtrInstance<TSAURLsDialog> pTSAURLsDlg(this);
     836             : 
     837           0 :     pTSAURLsDlg->Execute();
     838             : 
     839           0 :     return 0;
     840             : }
     841             : 
     842           0 : IMPL_STATIC_LINK_NOARG(SvxSecurityTabPage, MacroSecPBHdl)
     843             : {
     844             :     try
     845             :     {
     846             :         Reference< security::XDocumentDigitalSignatures > xD(
     847           0 :             security::DocumentDigitalSignatures::createDefault(comphelper::getProcessComponentContext() ) );
     848           0 :         xD->manageTrustedSources();
     849             :     }
     850           0 :     catch (const Exception& e)
     851             :     {
     852             :         OSL_FAIL(OUStringToOString(e.Message, osl_getThreadTextEncoding()).getStr());
     853             :         (void)e;
     854             :     }
     855           0 :     return 0;
     856             : }
     857             : 
     858             : 
     859           0 : void SvxSecurityTabPage::InitControls()
     860             : {
     861             :     // Hide all controls which belong to the macro security button in case the macro
     862             :     // security settings managed by the macro security dialog opened via the button
     863             :     // are all readonly or if the macros are disabled in general.
     864             :     // @@@ Better would be to query the dialog whether it is 'useful' or not. Exposing
     865             :     //     macro security dialog implementations here, which is bad.
     866           0 :     if (    mpSecOptions->IsMacroDisabled()
     867           0 :          || (    mpSecOptions->IsReadOnly( SvtSecurityOptions::E_MACRO_SECLEVEL )
     868           0 :               && mpSecOptions->IsReadOnly( SvtSecurityOptions::E_MACRO_TRUSTEDAUTHORS )
     869           0 :               && mpSecOptions->IsReadOnly( SvtSecurityOptions::E_SECUREURLS ) ) )
     870             :     {
     871             :         //Hide these
     872           0 :         m_pMacroSecFrame->Hide();
     873             :     }
     874             : 
     875             : #ifndef UNX
     876             :     m_pCertFrame->Hide();
     877             : #endif
     878             : 
     879           0 :     m_pMasterPasswordPB->Enable( false );
     880           0 :     m_pMasterPasswordCB->Enable( false );
     881           0 :     m_pMasterPasswordCB->Check( true );
     882           0 :     m_pMasterPasswordFT->Enable( false );
     883           0 :     m_pShowConnectionsPB->Enable( false );
     884             : 
     885             :     // initialize the password saving checkbox
     886             :     try
     887             :     {
     888             :         Reference< task::XPasswordContainer2 > xMasterPasswd(
     889           0 :             task::PasswordContainer::create(comphelper::getProcessComponentContext()));
     890             : 
     891           0 :         if ( xMasterPasswd->isPersistentStoringAllowed() )
     892             :         {
     893           0 :             m_pMasterPasswordCB->Enable( true );
     894           0 :             m_pShowConnectionsPB->Enable( true );
     895           0 :             m_pSavePasswordsCB->Check( true );
     896             : 
     897           0 :             if ( xMasterPasswd->isDefaultMasterPasswordUsed() )
     898           0 :                 m_pMasterPasswordCB->Check( false );
     899             :             else
     900             :             {
     901           0 :                 m_pMasterPasswordPB->Enable( true );
     902           0 :                 m_pMasterPasswordCB->Check( true );
     903           0 :                 m_pMasterPasswordFT->Enable( true );
     904             :             }
     905           0 :         }
     906             :     }
     907           0 :     catch (const Exception&)
     908             :     {
     909           0 :         m_pSavePasswordsCB->Enable( false );
     910             :     }
     911           0 : }
     912             : 
     913           0 : VclPtr<SfxTabPage> SvxSecurityTabPage::Create(vcl::Window* pParent, const SfxItemSet* rAttrSet )
     914             : {
     915           0 :     return VclPtr<SvxSecurityTabPage>::Create(pParent, *rAttrSet);
     916             : }
     917             : 
     918           0 : void SvxSecurityTabPage::ActivatePage( const SfxItemSet& )
     919             : {
     920           0 : }
     921             : 
     922           0 : SfxTabPage::sfxpg SvxSecurityTabPage::DeactivatePage( SfxItemSet* _pSet )
     923             : {
     924           0 :     if( _pSet )
     925           0 :         FillItemSet( _pSet );
     926           0 :     return LEAVE_PAGE;
     927             : }
     928             : 
     929             : namespace
     930             : {
     931           0 :     bool CheckAndSave( SvtSecurityOptions& _rOpt, SvtSecurityOptions::EOption _eOpt, const bool _bIsChecked, bool& _rModfied )
     932             :     {
     933           0 :         bool bModified = false;
     934           0 :         if ( _rOpt.IsOptionEnabled( _eOpt ) )
     935             :         {
     936           0 :             bModified = _rOpt.IsOptionSet( _eOpt ) != _bIsChecked;
     937           0 :             if ( bModified )
     938             :             {
     939           0 :                 _rOpt.SetOption( _eOpt, _bIsChecked );
     940           0 :                 _rModfied = true;
     941             :             }
     942             :         }
     943             : 
     944           0 :         return bModified;
     945             :     }
     946             : }
     947             : 
     948           0 : bool SvxSecurityTabPage::FillItemSet( SfxItemSet* )
     949             : {
     950           0 :     bool bModified = false;
     951             : 
     952           0 :     if ( mpSecOptDlg )
     953             :     {
     954           0 :         CheckAndSave( *mpSecOptions, SvtSecurityOptions::E_DOCWARN_SAVEORSEND, mpSecOptDlg->IsSaveOrSendDocsChecked(), bModified );
     955           0 :         CheckAndSave( *mpSecOptions, SvtSecurityOptions::E_DOCWARN_SIGNING, mpSecOptDlg->IsSignDocsChecked(), bModified );
     956           0 :         CheckAndSave( *mpSecOptions, SvtSecurityOptions::E_DOCWARN_PRINT, mpSecOptDlg->IsPrintDocsChecked(), bModified );
     957           0 :         CheckAndSave( *mpSecOptions, SvtSecurityOptions::E_DOCWARN_CREATEPDF, mpSecOptDlg->IsCreatePdfChecked(), bModified );
     958           0 :         CheckAndSave( *mpSecOptions, SvtSecurityOptions::E_DOCWARN_REMOVEPERSONALINFO, mpSecOptDlg->IsRemovePersInfoChecked(), bModified );
     959           0 :         CheckAndSave( *mpSecOptions, SvtSecurityOptions::E_DOCWARN_RECOMMENDPASSWORD, mpSecOptDlg->IsRecommPasswdChecked(), bModified );
     960           0 :         CheckAndSave( *mpSecOptions, SvtSecurityOptions::E_CTRLCLICK_HYPERLINK, mpSecOptDlg->IsCtrlHyperlinkChecked(), bModified );
     961           0 :         CheckAndSave( *mpSecOptions, SvtSecurityOptions::E_BLOCKUNTRUSTEDREFERERLINKS, mpSecOptDlg->IsBlockUntrustedRefererLinksChecked(), bModified );
     962             :     }
     963             : 
     964           0 :     return bModified;
     965             : }
     966             : 
     967             : /*--------------------------------------------------------------------*/
     968             : 
     969           0 : void SvxSecurityTabPage::Reset( const SfxItemSet* )
     970             : {
     971           0 : }
     972             : 
     973           0 : struct SvxEMailTabPage_Impl
     974             : {
     975           0 :     SvxEMailTabPage_Impl():
     976             :         sProgram(officecfg::Office::Common::ExternalMailer::Program::get()),
     977             :         bROProgram(
     978           0 :             officecfg::Office::Common::ExternalMailer::Program::isReadOnly()),
     979             :         bHideContent(
     980           0 :             officecfg::Office::Security::HiddenContent::RemoveHiddenContent::get()),
     981             :         bROHideContent(
     982           0 :             officecfg::Office::Security::HiddenContent::RemoveHiddenContent::isReadOnly())
     983           0 :     {}
     984             : 
     985             :     OUString sProgram;
     986             :     bool bROProgram;
     987             :     bool bHideContent;
     988             :     bool bROHideContent;
     989             : };
     990             : 
     991           0 : SvxEMailTabPage::SvxEMailTabPage(vcl::Window* pParent, const SfxItemSet& rSet)
     992             :     : SfxTabPage( pParent, "OptEmailPage", "cui/ui/optemailpage.ui", &rSet)
     993           0 :     , pImpl(new SvxEMailTabPage_Impl)
     994             : {
     995           0 :     get(m_pMailContainer, "program");
     996           0 :     get(m_pMailerURLFI, "lockemail");
     997           0 :     get(m_pMailerURLED, "url");
     998           0 :     get(m_pMailerURLPB, "browse");
     999           0 :     get(m_pSuppressHiddenContainer, "suppressHiddenCont");
    1000           0 :     get(m_pSuppressHiddenFI, "lockSuppressHidden");
    1001           0 :     get(m_pSuppressHidden, "suppressHidden");
    1002           0 :     m_sDefaultFilterName = get<FixedText>("browsetitle")->GetText();
    1003           0 :     m_pMailerURLPB->SetClickHdl( LINK( this, SvxEMailTabPage, FileDialogHdl_Impl ) );
    1004           0 : }
    1005             : 
    1006             : /* -------------------------------------------------------------------------*/
    1007             : 
    1008           0 : SvxEMailTabPage::~SvxEMailTabPage()
    1009             : {
    1010           0 :     disposeOnce();
    1011           0 : }
    1012             : 
    1013           0 : void SvxEMailTabPage::dispose()
    1014             : {
    1015           0 :     delete pImpl;
    1016           0 :     pImpl = NULL;
    1017           0 :     m_pMailContainer.clear();
    1018           0 :     m_pMailerURLFI.clear();
    1019           0 :     m_pMailerURLED.clear();
    1020           0 :     m_pMailerURLPB.clear();
    1021           0 :     m_pSuppressHiddenContainer.clear();
    1022           0 :     m_pSuppressHiddenFI.clear();
    1023           0 :     m_pSuppressHidden.clear();
    1024           0 :     SfxTabPage::dispose();
    1025           0 : }
    1026             : 
    1027             : /* -------------------------------------------------------------------------*/
    1028             : 
    1029           0 : VclPtr<SfxTabPage>  SvxEMailTabPage::Create( vcl::Window* pParent, const SfxItemSet* rAttrSet )
    1030             : {
    1031           0 :     return VclPtr<SvxEMailTabPage>::Create(pParent, *rAttrSet);
    1032             : }
    1033             : 
    1034             : /* -------------------------------------------------------------------------*/
    1035             : 
    1036           0 : bool SvxEMailTabPage::FillItemSet( SfxItemSet* )
    1037             : {
    1038             :     std::shared_ptr<comphelper::ConfigurationChanges> batch(
    1039           0 :         comphelper::ConfigurationChanges::create());
    1040           0 :     if (!pImpl->bROProgram && m_pMailerURLED->IsValueChangedFromSaved())
    1041             :     {
    1042           0 :         pImpl->sProgram = m_pMailerURLED->GetText();
    1043             :         officecfg::Office::Common::ExternalMailer::Program::set(
    1044           0 :             pImpl->sProgram, batch);
    1045             :     }
    1046           0 :     if (!pImpl->bROHideContent
    1047           0 :         && pImpl->bHideContent != m_pSuppressHidden->IsChecked())
    1048             :     {
    1049           0 :         pImpl->bHideContent = m_pSuppressHidden->IsChecked();
    1050             :         officecfg::Office::Security::HiddenContent::RemoveHiddenContent::set(
    1051           0 :             pImpl->bHideContent, batch);
    1052             :     }
    1053           0 :     batch->commit();
    1054           0 :     return false;
    1055             : }
    1056             : 
    1057             : /* -------------------------------------------------------------------------*/
    1058             : 
    1059           0 : void SvxEMailTabPage::Reset( const SfxItemSet* )
    1060             : {
    1061           0 :     m_pMailerURLED->Enable(true );
    1062           0 :     m_pMailerURLPB->Enable(true );
    1063             : 
    1064           0 :     if (pImpl->bROProgram)
    1065           0 :         m_pMailerURLFI->Show();
    1066             : 
    1067           0 :     m_pMailerURLED->SetText(pImpl->sProgram);
    1068           0 :     m_pMailerURLED->SaveValue();
    1069             : 
    1070           0 :     m_pMailContainer->Enable(!pImpl->bROProgram);
    1071             : 
    1072           0 :     if (pImpl->bROHideContent)
    1073           0 :         m_pSuppressHiddenFI->Show();
    1074             : 
    1075           0 :     m_pSuppressHidden->Check(pImpl->bHideContent);
    1076             : 
    1077           0 :     m_pSuppressHiddenContainer->Enable(!pImpl->bROHideContent);
    1078           0 : }
    1079             : 
    1080             : /* -------------------------------------------------------------------------*/
    1081             : 
    1082           0 : IMPL_LINK(  SvxEMailTabPage, FileDialogHdl_Impl, PushButton*, pButton )
    1083             : {
    1084           0 :     if (m_pMailerURLPB == pButton && !pImpl->bROProgram)
    1085             :     {
    1086             :         FileDialogHelper aHelper(
    1087             :             com::sun::star::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE,
    1088           0 :             0 );
    1089           0 :         OUString sPath = m_pMailerURLED->GetText();
    1090           0 :         if ( sPath.isEmpty() )
    1091           0 :             sPath = "/usr/bin";
    1092             : 
    1093           0 :         OUString sUrl;
    1094           0 :         ::utl::LocalFileHelper::ConvertPhysicalNameToURL(sPath, sUrl);
    1095           0 :         aHelper.SetDisplayDirectory(sUrl);
    1096           0 :         aHelper.AddFilter( m_sDefaultFilterName, OUString("*"));
    1097             : 
    1098           0 :         if ( ERRCODE_NONE == aHelper.Execute() )
    1099             :         {
    1100           0 :             sUrl = aHelper.GetPath();
    1101           0 :             ::utl::LocalFileHelper::ConvertURLToPhysicalName(sUrl, sPath);
    1102           0 :             m_pMailerURLED->SetText(sPath);
    1103           0 :         }
    1104             :     }
    1105           0 :     return 0;
    1106           0 : }
    1107             : 
    1108             : 
    1109             : 
    1110             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11