1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #include <svl/httpcook.hxx> 29 #include <tools/urlobj.hxx> 30 #include <vcl/msgbox.hxx> 31 32 #ifndef UUI_COOKIEDG_HRC 33 #include <cookiedg.hrc> 34 #endif 35 #include <cookiedg.hxx> 36 #ifndef UUI_IDS_HRC 37 #include <ids.hrc> 38 #endif 39 40 // CookiesDialog --------------------------------------------------------- 41 42 IMPL_LINK( CookiesDialog, ButtonHdl_Impl, PushButton *, pBtn ) 43 { 44 short nRet = ( &maSendBtn == pBtn ) ? RET_OK : RET_CANCEL; 45 EndDialog( nRet ); 46 return 1; 47 } 48 49 // ----------------------------------------------------------------------- 50 CookiesDialog::CookiesDialog( Window* pParent, 51 CntHTTPCookieRequest* pRequest, 52 ResMgr* pResMgr ) : 53 54 ModalDialog( pParent, ResId( DLG_COOKIES, *pResMgr ) ), 55 56 maCookieFB ( this, ResId( FB_COOKIES, *pResMgr ) ), 57 maCookieFT ( this, ResId( FT_COOKIES, *pResMgr ) ), 58 maInFutureLine ( this, ResId( FL_COOKIES, *pResMgr ) ), 59 maInFutureSendBtn ( this, ResId( RB_INFUTURE_SEND, *pResMgr ) ), 60 maInFutureIgnoreBtn ( this, ResId( RB_INFUTURE_IGNORE, *pResMgr ) ), 61 maInFutureInteractiveBtn( this, ResId( RB_INFUTURE_INTERACTIVE, *pResMgr ) ), 62 maInFutureGB ( this, ResId( GB_INFUTURE, *pResMgr ) ), 63 maIgnoreBtn ( this, ResId( BTN_COOKIES_CANCEL, *pResMgr ) ), 64 maSendBtn ( this, ResId( BTN_COOKIES_OK, *pResMgr ) ), 65 66 mpCookieRequest ( pRequest ) 67 68 { 69 FreeResource(); 70 71 Link aLink( LINK( this, CookiesDialog, ButtonHdl_Impl ) ); 72 maIgnoreBtn.SetClickHdl( aLink ); 73 maSendBtn.SetClickHdl( aLink ); 74 const Bitmap& rBitmap = maCookieFB.GetBitmap(); 75 Size aSize = rBitmap.GetSizePixel(); 76 SetMapMode( MapMode( MAP_APPFONT ) ); 77 Size aLogicSize = PixelToLogic( aSize ); 78 Point aPoint( 6 , 79 6 + ( 145 - aLogicSize.Height() ) / 2 ); 80 maCookieFB.SetPosSizePixel( LogicToPixel( aPoint ), aSize ); 81 maCookieFB.Show(); 82 83 sal_uInt16 nOffset = CNTHTTP_COOKIE_REQUEST_RECV == mpCookieRequest->m_eType 84 ? 0 : STR_COOKIES_SEND_START - STR_COOKIES_RECV_START; 85 INetURLObject aObj( mpCookieRequest->m_rURL ); 86 SetText( String( ResId( STR_COOKIES_RECV_TITLE + nOffset, *pResMgr ) ) ); 87 String aMsg( ResId( STR_COOKIES_RECV_START + nOffset, *pResMgr ) ); 88 aMsg.SearchAndReplaceAscii( "${HOST}", aObj.GetHost() ); 89 aMsg.SearchAndReplaceAscii( "${PATH}", aObj.GetPath() ); 90 String aTemplate( ResId( STR_COOKIES_RECV_COOKIES, *pResMgr ) ); 91 List& rList =mpCookieRequest->m_rCookieList; 92 String aPair, aCookie; 93 94 for ( sal_uInt16 i = (sal_uInt16)rList.Count(); i--; ) 95 { 96 CntHTTPCookie* pCookie = (CntHTTPCookie*)rList.GetObject(i); 97 98 if ( CNTHTTP_COOKIE_POLICY_INTERACTIVE == pCookie->m_nPolicy ) 99 { 100 aCookie = aTemplate; 101 aCookie.SearchAndReplaceAscii( "${DOMAIN}", pCookie->m_aDomain ); 102 aCookie.SearchAndReplaceAscii( "${PATH}", pCookie->m_aPath ); 103 aPair = pCookie->m_aName; 104 aPair += '='; 105 aPair += pCookie->m_aValue; 106 aCookie.SearchAndReplaceAscii( "${COOKIE}", aPair ); 107 aMsg += aCookie; 108 } 109 } 110 maInFutureInteractiveBtn.Check( sal_True ); 111 maCookieFT.SetText( aMsg ); 112 } 113 114 // ----------------------------------------------------------------------- 115 116 short CookiesDialog::Execute() 117 { 118 maSendBtn.GrabFocus(); 119 short nRet = ModalDialog::Execute(); 120 sal_uInt16 nStatus = CNTHTTP_COOKIE_POLICY_INTERACTIVE; 121 122 if ( maInFutureSendBtn.IsChecked() ) 123 nStatus = CNTHTTP_COOKIE_POLICY_ACCEPTED; 124 125 if ( maInFutureIgnoreBtn.IsChecked() ) 126 nStatus = CNTHTTP_COOKIE_POLICY_BANNED; 127 List& rList = mpCookieRequest->m_rCookieList; 128 129 for ( sal_uInt16 i = (sal_uInt16)rList.Count(); i--; ) 130 { 131 sal_uInt16& rStatus = ( (CntHTTPCookie*)rList.GetObject(i) )->m_nPolicy; 132 133 if ( rStatus == CNTHTTP_COOKIE_POLICY_INTERACTIVE ) 134 rStatus = nStatus; 135 } 136 137 if ( nRet == RET_OK ) 138 mpCookieRequest->m_nRet = CNTHTTP_COOKIE_POLICY_ACCEPTED; 139 else 140 mpCookieRequest->m_nRet = CNTHTTP_COOKIE_POLICY_BANNED; 141 142 return nRet; 143 } 144 145