xref: /aoo41x/main/uui/source/secmacrowarnings.cxx (revision 859212d1)
1*859212d1SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*859212d1SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*859212d1SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*859212d1SAndrew Rist  * distributed with this work for additional information
6*859212d1SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*859212d1SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*859212d1SAndrew Rist  * "License"); you may not use this file except in compliance
9*859212d1SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*859212d1SAndrew Rist  *
11*859212d1SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*859212d1SAndrew Rist  *
13*859212d1SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*859212d1SAndrew Rist  * software distributed under the License is distributed on an
15*859212d1SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*859212d1SAndrew Rist  * KIND, either express or implied.  See the License for the
17*859212d1SAndrew Rist  * specific language governing permissions and limitations
18*859212d1SAndrew Rist  * under the License.
19*859212d1SAndrew Rist  *
20*859212d1SAndrew Rist  *************************************************************/
21*859212d1SAndrew Rist 
22*859212d1SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #include <com/sun/star/xml/crypto/XSecurityEnvironment.hpp>
25cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
26cdf0e10cSrcweir #include <com/sun/star/security/XDocumentDigitalSignatures.hpp>
27cdf0e10cSrcweir #include <comphelper/sequence.hxx>
28cdf0e10cSrcweir #include "comphelper/documentconstants.hxx"
29cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include <vcl/msgbox.hxx>
32cdf0e10cSrcweir #include <com/sun/star/security/NoPasswordException.hpp>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir using namespace ::com::sun::star::security;
35cdf0e10cSrcweir 
36cdf0e10cSrcweir #include "ids.hrc"
37cdf0e10cSrcweir #include "secmacrowarnings.hxx"
38cdf0e10cSrcweir #include "secmacrowarnings.hrc"
39cdf0e10cSrcweir 
40cdf0e10cSrcweir #ifdef _MSC_VER
41cdf0e10cSrcweir #pragma warning (disable : 4355)	// 4355: this used in initializer-list
42cdf0e10cSrcweir #endif
43cdf0e10cSrcweir 
44cdf0e10cSrcweir using namespace ::com::sun::star;
45cdf0e10cSrcweir using namespace ::com::sun::star;
46cdf0e10cSrcweir 
47cdf0e10cSrcweir 
48cdf0e10cSrcweir // HACK!!! copied from xmlsecurity/source/dialog/resourcemanager.cxx
49cdf0e10cSrcweir 
50cdf0e10cSrcweir namespace
51cdf0e10cSrcweir {
GetContentPart(const String & _rRawString,const String & _rPartId)52cdf0e10cSrcweir 	String GetContentPart( const String& _rRawString, const String& _rPartId )
53cdf0e10cSrcweir 	{
54cdf0e10cSrcweir 		String		s;
55cdf0e10cSrcweir 
56cdf0e10cSrcweir 		xub_StrLen	nContStart = _rRawString.Search( _rPartId );
57cdf0e10cSrcweir 		if( nContStart != STRING_NOTFOUND )
58cdf0e10cSrcweir 		{
59cdf0e10cSrcweir 			nContStart = nContStart + _rPartId.Len();
60cdf0e10cSrcweir 			++nContStart;					// now it's start of content, directly after Id
61cdf0e10cSrcweir 
62cdf0e10cSrcweir 			xub_StrLen	nContEnd = _rRawString.Search( sal_Unicode( ',' ), nContStart );
63cdf0e10cSrcweir 
64cdf0e10cSrcweir 			s = String( _rRawString, nContStart, nContEnd - nContStart );
65cdf0e10cSrcweir 		}
66cdf0e10cSrcweir 
67cdf0e10cSrcweir 		return s;
68cdf0e10cSrcweir 	}
69cdf0e10cSrcweir }
70cdf0e10cSrcweir 
71cdf0e10cSrcweir 
MacroWarning(Window * _pParent,bool _bWithSignatures,ResMgr & rResMgr)72cdf0e10cSrcweir MacroWarning::MacroWarning( Window* _pParent, bool _bWithSignatures, ResMgr& rResMgr )
73cdf0e10cSrcweir 	:ModalDialog			( _pParent, ResId( RID_XMLSECDLG_MACROWARN, rResMgr ) )
74cdf0e10cSrcweir 	,mpInfos				( NULL )
75cdf0e10cSrcweir 	,maSymbolImg			( this, ResId( IMG_SYMBOL, rResMgr ) )
76cdf0e10cSrcweir 	,maDocNameFI			( this, ResId( FI_DOCNAME, rResMgr ) )
77cdf0e10cSrcweir 	,maDescr1aFI			( this, ResId( FI_DESCR1A, rResMgr ) )
78cdf0e10cSrcweir 	,maDescr1bFI			( this, ResId( FI_DESCR1B, rResMgr ) )
79cdf0e10cSrcweir 	,maSignsFI				( this, ResId( FI_SIGNS, rResMgr ) )
80cdf0e10cSrcweir 	,maViewSignsBtn			( this, ResId( PB_VIEWSIGNS, rResMgr ) )
81cdf0e10cSrcweir 	,maDescr2FI				( this, ResId( FI_DESCR2, rResMgr ) )
82cdf0e10cSrcweir 	,maAlwaysTrustCB		( this, ResId( CB_ALWAYSTRUST, rResMgr ) )
83cdf0e10cSrcweir 	,maBottomSepFL			( this, ResId( FL_BOTTOM_SEP, rResMgr ) )
84cdf0e10cSrcweir 	,maEnableBtn			( this, ResId( PB_ENABLE, rResMgr ) )
85cdf0e10cSrcweir 	,maDisableBtn			( this, ResId( PB_DISABLE, rResMgr ) )
86cdf0e10cSrcweir 	,maHelpBtn				( this, ResId( BTN_HELP, rResMgr ) )
87cdf0e10cSrcweir 	,mbSignedMode			( true )
88cdf0e10cSrcweir     ,mbShowSignatures       ( _bWithSignatures )
89cdf0e10cSrcweir 	,mnActSecLevel			( 0 )
90cdf0e10cSrcweir {
91cdf0e10cSrcweir 	FreeResource();
92cdf0e10cSrcweir 
93cdf0e10cSrcweir     InitControls();
94cdf0e10cSrcweir 
95cdf0e10cSrcweir     maDisableBtn.SetClickHdl( LINK( this, MacroWarning, DisableBtnHdl ) );
96cdf0e10cSrcweir 	maEnableBtn.SetClickHdl( LINK( this, MacroWarning, EnableBtnHdl ) );
97cdf0e10cSrcweir     maDisableBtn.GrabFocus(); // Default button, but focus is on view button
98cdf0e10cSrcweir }
99cdf0e10cSrcweir 
~MacroWarning()100cdf0e10cSrcweir MacroWarning::~MacroWarning()
101cdf0e10cSrcweir {
102cdf0e10cSrcweir }
103cdf0e10cSrcweir 
Execute()104cdf0e10cSrcweir short MacroWarning::Execute()
105cdf0e10cSrcweir {
106cdf0e10cSrcweir     FitControls();
107cdf0e10cSrcweir     return ModalDialog::Execute();
108cdf0e10cSrcweir }
109cdf0e10cSrcweir 
SetDocumentURL(const String & rDocURL)110cdf0e10cSrcweir void MacroWarning::SetDocumentURL( const String& rDocURL )
111cdf0e10cSrcweir {
112cdf0e10cSrcweir     maDocNameFI.SetText( rDocURL );
113cdf0e10cSrcweir }
114cdf0e10cSrcweir 
IMPL_LINK(MacroWarning,ViewSignsBtnHdl,void *,EMPTYARG)115cdf0e10cSrcweir IMPL_LINK( MacroWarning, ViewSignsBtnHdl, void*, EMPTYARG )
116cdf0e10cSrcweir {
117cdf0e10cSrcweir 	DBG_ASSERT( mxCert.is(), "*MacroWarning::ViewSignsBtnHdl(): no certificate set!" );
118cdf0e10cSrcweir 
119cdf0e10cSrcweir     uno::Sequence< uno::Any > aArgs( 1 );
120cdf0e10cSrcweir     aArgs[0] = uno::makeAny( maODFVersion );
121cdf0e10cSrcweir 	uno::Reference< security::XDocumentDigitalSignatures > xD(
122cdf0e10cSrcweir 		comphelper::getProcessServiceFactory()->createInstanceWithArguments( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.security.DocumentDigitalSignatures" ) ), aArgs ), uno::UNO_QUERY );
123cdf0e10cSrcweir 	if( xD.is() )
124cdf0e10cSrcweir 	{
125cdf0e10cSrcweir 		if( mxCert.is() )
126cdf0e10cSrcweir 			xD->showCertificate( mxCert );
127cdf0e10cSrcweir 		else if( mxStore.is() )
128cdf0e10cSrcweir 			xD->showScriptingContentSignatures( mxStore, uno::Reference< io::XInputStream >() );
129cdf0e10cSrcweir 	}
130cdf0e10cSrcweir 
131cdf0e10cSrcweir     return 0;
132cdf0e10cSrcweir }
133cdf0e10cSrcweir 
IMPL_LINK(MacroWarning,EnableBtnHdl,void *,EMPTYARG)134cdf0e10cSrcweir IMPL_LINK( MacroWarning, EnableBtnHdl, void*, EMPTYARG )
135cdf0e10cSrcweir {
136cdf0e10cSrcweir 	if( mbSignedMode && maAlwaysTrustCB.IsChecked() )
137cdf0e10cSrcweir 	{	// insert path into trusted path list
138cdf0e10cSrcweir         uno::Sequence< uno::Any > aArgs( 1 );
139cdf0e10cSrcweir         aArgs[0] = uno::makeAny( maODFVersion );
140cdf0e10cSrcweir         uno::Reference< security::XDocumentDigitalSignatures > xD(
141cdf0e10cSrcweir             comphelper::getProcessServiceFactory()->createInstanceWithArguments( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.security.DocumentDigitalSignatures" ) ), aArgs ), uno::UNO_QUERY );
142cdf0e10cSrcweir 		if( xD.is() )
143cdf0e10cSrcweir 		{
144cdf0e10cSrcweir 			if( mxCert.is() )
145cdf0e10cSrcweir 				xD->addAuthorToTrustedSources( mxCert );
146cdf0e10cSrcweir 			else if( mxStore.is() )
147cdf0e10cSrcweir 			{
148cdf0e10cSrcweir 				DBG_ASSERT( mpInfos, "-MacroWarning::EnableBtnHdl(): no infos, search in nirvana..." );
149cdf0e10cSrcweir 
150cdf0e10cSrcweir 				sal_Int32	nCnt = mpInfos->getLength();
151cdf0e10cSrcweir 				for( sal_Int32 i = 0 ; i < nCnt ; ++i )
152cdf0e10cSrcweir 					xD->addAuthorToTrustedSources( (*mpInfos)[ i ].Signer );
153cdf0e10cSrcweir 			}
154cdf0e10cSrcweir 		}
155cdf0e10cSrcweir 	}
156cdf0e10cSrcweir 
157cdf0e10cSrcweir 	EndDialog( RET_OK );
158cdf0e10cSrcweir     return 0;
159cdf0e10cSrcweir }
160cdf0e10cSrcweir 
IMPL_LINK(MacroWarning,DisableBtnHdl,void *,EMPTYARG)161cdf0e10cSrcweir IMPL_LINK( MacroWarning, DisableBtnHdl, void*, EMPTYARG )
162cdf0e10cSrcweir {
163cdf0e10cSrcweir 	EndDialog( RET_CANCEL );
164cdf0e10cSrcweir     return 0;
165cdf0e10cSrcweir }
166cdf0e10cSrcweir 
IMPL_LINK(MacroWarning,AlwaysTrustCheckHdl,void *,EMPTYARG)167cdf0e10cSrcweir IMPL_LINK( MacroWarning, AlwaysTrustCheckHdl, void*, EMPTYARG )
168cdf0e10cSrcweir {
169cdf0e10cSrcweir 	bool bEnable = ( mnActSecLevel < 2 || maAlwaysTrustCB.IsChecked() );
170cdf0e10cSrcweir 	maEnableBtn.Enable( bEnable );
171cdf0e10cSrcweir 	maDisableBtn.Enable( !maAlwaysTrustCB.IsChecked() );
172cdf0e10cSrcweir 
173cdf0e10cSrcweir 	return 0;
174cdf0e10cSrcweir }
175cdf0e10cSrcweir 
InitControls()176cdf0e10cSrcweir void MacroWarning::InitControls()
177cdf0e10cSrcweir {
178cdf0e10cSrcweir     // set warning image
179cdf0e10cSrcweir     Image aImg( WarningBox::GetStandardImage() );
180cdf0e10cSrcweir     maSymbolImg.SetImage( aImg );
181cdf0e10cSrcweir     maSymbolImg.SetSizePixel( aImg.GetSizePixel() );
182cdf0e10cSrcweir     // set bold font and path ellipsis for docname fixedtext
183cdf0e10cSrcweir     Font aTmpFont = maDocNameFI.GetControlFont();
184cdf0e10cSrcweir     aTmpFont.SetWeight( WEIGHT_BOLD );
185cdf0e10cSrcweir     maDocNameFI.SetControlFont( aTmpFont );
186cdf0e10cSrcweir     WinBits nStyle = maDocNameFI.GetStyle();
187cdf0e10cSrcweir     nStyle |= WB_PATHELLIPSIS;
188cdf0e10cSrcweir     maDocNameFI.SetStyle( nStyle );
189cdf0e10cSrcweir     // show signature controls?
190cdf0e10cSrcweir     if( mbShowSignatures )
191cdf0e10cSrcweir     {
192cdf0e10cSrcweir         maDescr1bFI.Hide();
193cdf0e10cSrcweir         maViewSignsBtn.SetClickHdl( LINK( this, MacroWarning, ViewSignsBtnHdl ) );
194cdf0e10cSrcweir         maViewSignsBtn.Disable();   // default
195cdf0e10cSrcweir         maAlwaysTrustCB.SetClickHdl( LINK( this, MacroWarning, AlwaysTrustCheckHdl ) );
196cdf0e10cSrcweir 
197cdf0e10cSrcweir         mnActSecLevel = SvtSecurityOptions().GetMacroSecurityLevel();
198cdf0e10cSrcweir         if ( mnActSecLevel >= 2 )
199cdf0e10cSrcweir             maEnableBtn.Disable();
200cdf0e10cSrcweir     }
201cdf0e10cSrcweir     else
202cdf0e10cSrcweir     {
203cdf0e10cSrcweir         maDescr1aFI.Hide();
204cdf0e10cSrcweir         maSignsFI.Hide();
205cdf0e10cSrcweir         maViewSignsBtn.Hide();
206cdf0e10cSrcweir         maAlwaysTrustCB.Hide();
207cdf0e10cSrcweir 
208cdf0e10cSrcweir         // move hint up to position of signer list
209cdf0e10cSrcweir         maDescr2FI.SetPosPixel( maSignsFI.GetPosPixel() );
210cdf0e10cSrcweir     }
211cdf0e10cSrcweir     // without signature controls could be smaller
212cdf0e10cSrcweir     if ( !mbShowSignatures )
213cdf0e10cSrcweir     {
214cdf0e10cSrcweir         Point aPos = maDescr2FI.GetPosPixel();
215cdf0e10cSrcweir         aPos.Y() += maDescr2FI.GetSizePixel().Height();
216cdf0e10cSrcweir         aPos.Y() += LogicToPixel( Size( 3, 3 ) ).Height();
217cdf0e10cSrcweir         long nDelta = maBottomSepFL.GetPosPixel().Y() - aPos.Y();
218cdf0e10cSrcweir         Window* pWins[] =
219cdf0e10cSrcweir         {
220cdf0e10cSrcweir             &maBottomSepFL, &maEnableBtn, &maDisableBtn, &maHelpBtn
221cdf0e10cSrcweir         };
222cdf0e10cSrcweir         Window** pCurrent = pWins;
223cdf0e10cSrcweir         for ( sal_uInt32 i = 0; i < sizeof( pWins ) / sizeof( pWins[ 0 ] ); ++i, ++pCurrent )
224cdf0e10cSrcweir         {
225cdf0e10cSrcweir             Point aNewPos = (*pCurrent)->GetPosPixel();
226cdf0e10cSrcweir             aNewPos.Y() -= nDelta;
227cdf0e10cSrcweir             (*pCurrent)->SetPosPixel( aNewPos );
228cdf0e10cSrcweir         }
229cdf0e10cSrcweir 
230cdf0e10cSrcweir         Size aDlgSz = GetSizePixel();
231cdf0e10cSrcweir         aDlgSz.Height() -= nDelta;
232cdf0e10cSrcweir         SetSizePixel( aDlgSz );
233cdf0e10cSrcweir     }
234cdf0e10cSrcweir 
235cdf0e10cSrcweir     // check if some buttontexts are to wide
236cdf0e10cSrcweir     String sText = maViewSignsBtn.GetText();
237cdf0e10cSrcweir     long nTxtW = maViewSignsBtn.GetTextWidth( sText );
238cdf0e10cSrcweir     const long nOffset = 12;
239cdf0e10cSrcweir     if ( sText.Search( '~' ) == STRING_NOTFOUND )
240cdf0e10cSrcweir         nTxtW += nOffset;
241cdf0e10cSrcweir     long nBtnW = maViewSignsBtn.GetSizePixel().Width();
242cdf0e10cSrcweir     if ( nTxtW >= nBtnW )
243cdf0e10cSrcweir     {
244cdf0e10cSrcweir         // broaden the button
245cdf0e10cSrcweir         long nDelta = Max( nTxtW - nBtnW, nOffset/3 );
246cdf0e10cSrcweir         Size aNewSize = maViewSignsBtn.GetSizePixel();
247cdf0e10cSrcweir         aNewSize.Width() += nDelta;
248cdf0e10cSrcweir         maViewSignsBtn.SetSizePixel( aNewSize );
249cdf0e10cSrcweir         // and give it a new position
250cdf0e10cSrcweir         Point aNewPos = maViewSignsBtn.GetPosPixel();
251cdf0e10cSrcweir         aNewPos.X() -= nDelta;
252cdf0e10cSrcweir         maViewSignsBtn.SetPosPixel( aNewPos );
253cdf0e10cSrcweir         // the the left fixedtext must be smaller
254cdf0e10cSrcweir         aNewSize = maSignsFI.GetSizePixel();
255cdf0e10cSrcweir         aNewSize.Width() -= nDelta;
256cdf0e10cSrcweir         maSignsFI.SetSizePixel( aNewSize );
257cdf0e10cSrcweir     }
258cdf0e10cSrcweir     // if the button text (we compare with the longest of both) is too wide, then broaden the buttons
259cdf0e10cSrcweir     String sText1 = maEnableBtn.GetText();
260cdf0e10cSrcweir     long nTxtW1 = maEnableBtn.GetTextWidth( sText1 );
261cdf0e10cSrcweir     if ( sText1.Search( '~' ) == STRING_NOTFOUND )
262cdf0e10cSrcweir         nTxtW1 += nOffset;
263cdf0e10cSrcweir     String sText2 = maDisableBtn.GetText();
264cdf0e10cSrcweir     long nTxtW2 = maDisableBtn.GetTextWidth( sText2 );
265cdf0e10cSrcweir     if ( sText2.Search( '~' ) == STRING_NOTFOUND )
266cdf0e10cSrcweir         nTxtW2 += nOffset;
267cdf0e10cSrcweir     nTxtW = Max( nTxtW1, nTxtW2 );
268cdf0e10cSrcweir     nBtnW = maEnableBtn.GetSizePixel().Width();
269cdf0e10cSrcweir     if ( nTxtW > nBtnW )
270cdf0e10cSrcweir     {
271cdf0e10cSrcweir         // broaden both buttons
272cdf0e10cSrcweir         long nDelta = nTxtW - nBtnW;
273cdf0e10cSrcweir         Size aNewSize = maEnableBtn.GetSizePixel();
274cdf0e10cSrcweir         aNewSize.Width() += nDelta;
275cdf0e10cSrcweir         maEnableBtn.SetSizePixel( aNewSize );
276cdf0e10cSrcweir         maDisableBtn.SetSizePixel( aNewSize );
277cdf0e10cSrcweir         // and give them a new position
278cdf0e10cSrcweir         Point aNewPos = maEnableBtn.GetPosPixel();
279cdf0e10cSrcweir         aNewPos.X() -= (2*nDelta);
280cdf0e10cSrcweir         maEnableBtn.SetPosPixel( aNewPos );
281cdf0e10cSrcweir         aNewPos = maDisableBtn.GetPosPixel();
282cdf0e10cSrcweir         aNewPos.X() -= nDelta;
283cdf0e10cSrcweir         maDisableBtn.SetPosPixel( aNewPos );
284cdf0e10cSrcweir     }
285cdf0e10cSrcweir }
286cdf0e10cSrcweir 
FitControls()287cdf0e10cSrcweir void MacroWarning::FitControls()
288cdf0e10cSrcweir {
289cdf0e10cSrcweir     Size a3Size = LogicToPixel( Size( 3, 3 ), MAP_APPFONT );
290cdf0e10cSrcweir     Size aNewSize, aMinSize;
291cdf0e10cSrcweir     long nTxtH = 0;
292cdf0e10cSrcweir     long nCtrlH = 0;
293cdf0e10cSrcweir     long nDelta = 0;
294cdf0e10cSrcweir 
295cdf0e10cSrcweir     if ( mbShowSignatures )
296cdf0e10cSrcweir     {
297cdf0e10cSrcweir         aMinSize = maSignsFI.CalcMinimumSize( maSignsFI.GetSizePixel().Width() );
298cdf0e10cSrcweir         nTxtH = Max( aMinSize.Height(), maViewSignsBtn.GetSizePixel().Height() );
299cdf0e10cSrcweir         nTxtH += a3Size.Height() / 2;
300cdf0e10cSrcweir         nCtrlH = maSignsFI.GetSizePixel().Height();
301cdf0e10cSrcweir         nDelta = Max( nCtrlH - nTxtH, static_cast< long >( -100 ) ); // not too large
302cdf0e10cSrcweir         aNewSize = maSignsFI.GetSizePixel();
303cdf0e10cSrcweir         aNewSize.Height() -= nDelta;
304cdf0e10cSrcweir         maSignsFI.SetSizePixel( aNewSize );
305cdf0e10cSrcweir     }
306cdf0e10cSrcweir 
307cdf0e10cSrcweir     aMinSize = maDescr2FI.CalcMinimumSize( maDescr2FI.GetSizePixel().Width() );
308cdf0e10cSrcweir     nTxtH = aMinSize.Height();
309cdf0e10cSrcweir     nCtrlH = maDescr2FI.GetSizePixel().Height();
310cdf0e10cSrcweir     long nDelta2 = ( nCtrlH - nTxtH );
311cdf0e10cSrcweir     aNewSize = maDescr2FI.GetSizePixel();
312cdf0e10cSrcweir     aNewSize.Height() -= nDelta2;
313cdf0e10cSrcweir     maDescr2FI.SetSizePixel( aNewSize );
314cdf0e10cSrcweir 
315cdf0e10cSrcweir     // new position for the succeeding windows
316cdf0e10cSrcweir     Window* pWins[] =
317cdf0e10cSrcweir     {
318cdf0e10cSrcweir         &maDescr2FI, &maAlwaysTrustCB, &maBottomSepFL, &maEnableBtn, &maDisableBtn, &maHelpBtn
319cdf0e10cSrcweir     };
320cdf0e10cSrcweir     Window** pCurrent = pWins;
321cdf0e10cSrcweir     for ( sal_uInt32 i = 0; i < sizeof( pWins ) / sizeof( pWins[ 0 ] ); ++i, ++pCurrent )
322cdf0e10cSrcweir     {
323cdf0e10cSrcweir         Point aNewPos = (*pCurrent)->GetPosPixel();
324cdf0e10cSrcweir         aNewPos.Y() -= nDelta;
325cdf0e10cSrcweir         (*pCurrent)->SetPosPixel( aNewPos );
326cdf0e10cSrcweir 
327cdf0e10cSrcweir         if ( *pCurrent == &maDescr2FI )
328cdf0e10cSrcweir             nDelta += nDelta2;
329cdf0e10cSrcweir     }
330cdf0e10cSrcweir 
331cdf0e10cSrcweir     // new size of the dialog
332cdf0e10cSrcweir     aNewSize = GetSizePixel();
333cdf0e10cSrcweir     aNewSize.Height() -= nDelta;
334cdf0e10cSrcweir     SetSizePixel( aNewSize );
335cdf0e10cSrcweir }
336cdf0e10cSrcweir 
SetStorage(const cssu::Reference<css::embed::XStorage> & rxStore,const::rtl::OUString & aODFVersion,const cssu::Sequence<security::DocumentSignatureInformation> & rInfos)337cdf0e10cSrcweir void MacroWarning::SetStorage( const cssu::Reference < css::embed::XStorage >& rxStore,
338cdf0e10cSrcweir                                const ::rtl::OUString& aODFVersion,
339cdf0e10cSrcweir                                const cssu::Sequence< security::DocumentSignatureInformation >& rInfos )
340cdf0e10cSrcweir {
341cdf0e10cSrcweir 	mxStore = rxStore;
342cdf0e10cSrcweir     maODFVersion = aODFVersion;
343cdf0e10cSrcweir 	sal_Int32	nCnt = rInfos.getLength();
344cdf0e10cSrcweir 	if( mxStore.is() && nCnt > 0 )
345cdf0e10cSrcweir 	{
346cdf0e10cSrcweir 		mpInfos = &rInfos;
347cdf0e10cSrcweir 		String		aCN_Id( String::CreateFromAscii( "CN" ) );
348cdf0e10cSrcweir 		String		s;
349cdf0e10cSrcweir 		s = GetContentPart( rInfos[ 0 ].Signer->getSubjectName(), aCN_Id );
350cdf0e10cSrcweir 
351cdf0e10cSrcweir 		for( sal_Int32 i = 1 ; i < nCnt ; ++i )
352cdf0e10cSrcweir 		{
353cdf0e10cSrcweir 			s.AppendAscii( "\n" );
354cdf0e10cSrcweir 			s += GetContentPart( rInfos[ i ].Signer->getSubjectName(), aCN_Id );
355cdf0e10cSrcweir 		}
356cdf0e10cSrcweir 
357cdf0e10cSrcweir         maSignsFI.SetText( s );
358cdf0e10cSrcweir 		maViewSignsBtn.Enable();
359cdf0e10cSrcweir 	}
360cdf0e10cSrcweir }
361cdf0e10cSrcweir 
SetCertificate(const cssu::Reference<css::security::XCertificate> & _rxCert)362cdf0e10cSrcweir void MacroWarning::SetCertificate( const cssu::Reference< css::security::XCertificate >& _rxCert )
363cdf0e10cSrcweir {
364cdf0e10cSrcweir 	mxCert = _rxCert;
365cdf0e10cSrcweir 	if( mxCert.is() )
366cdf0e10cSrcweir 	{
367cdf0e10cSrcweir 		String	aCN_Id( String::CreateFromAscii( "CN" ) );
368cdf0e10cSrcweir 		String	s;
369cdf0e10cSrcweir 		s = GetContentPart( mxCert->getSubjectName(), aCN_Id );
370cdf0e10cSrcweir         maSignsFI.SetText( s );
371cdf0e10cSrcweir 		maViewSignsBtn.Enable();
372cdf0e10cSrcweir 	}
373cdf0e10cSrcweir }
374cdf0e10cSrcweir 
375