| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #include <svl/httpcook.hxx> |
| #include <tools/urlobj.hxx> |
| #include <vcl/msgbox.hxx> |
| |
| #ifndef UUI_COOKIEDG_HRC |
| #include <cookiedg.hrc> |
| #endif |
| #include <cookiedg.hxx> |
| #ifndef UUI_IDS_HRC |
| #include <ids.hrc> |
| #endif |
| |
| // CookiesDialog --------------------------------------------------------- |
| |
| IMPL_LINK( CookiesDialog, ButtonHdl_Impl, PushButton *, pBtn ) |
| { |
| short nRet = ( &maSendBtn == pBtn ) ? RET_OK : RET_CANCEL; |
| EndDialog( nRet ); |
| return 1; |
| } |
| |
| // ----------------------------------------------------------------------- |
| CookiesDialog::CookiesDialog( Window* pParent, |
| CntHTTPCookieRequest* pRequest, |
| ResMgr* pResMgr ) : |
| |
| ModalDialog( pParent, ResId( DLG_COOKIES, *pResMgr ) ), |
| |
| maCookieFB ( this, ResId( FB_COOKIES, *pResMgr ) ), |
| maCookieFT ( this, ResId( FT_COOKIES, *pResMgr ) ), |
| maInFutureLine ( this, ResId( FL_COOKIES, *pResMgr ) ), |
| maInFutureSendBtn ( this, ResId( RB_INFUTURE_SEND, *pResMgr ) ), |
| maInFutureIgnoreBtn ( this, ResId( RB_INFUTURE_IGNORE, *pResMgr ) ), |
| maInFutureInteractiveBtn( this, ResId( RB_INFUTURE_INTERACTIVE, *pResMgr ) ), |
| maInFutureGB ( this, ResId( GB_INFUTURE, *pResMgr ) ), |
| maIgnoreBtn ( this, ResId( BTN_COOKIES_CANCEL, *pResMgr ) ), |
| maSendBtn ( this, ResId( BTN_COOKIES_OK, *pResMgr ) ), |
| |
| mpCookieRequest ( pRequest ) |
| |
| { |
| FreeResource(); |
| |
| Link aLink( LINK( this, CookiesDialog, ButtonHdl_Impl ) ); |
| maIgnoreBtn.SetClickHdl( aLink ); |
| maSendBtn.SetClickHdl( aLink ); |
| const Bitmap& rBitmap = maCookieFB.GetBitmap(); |
| Size aSize = rBitmap.GetSizePixel(); |
| SetMapMode( MapMode( MAP_APPFONT ) ); |
| Size aLogicSize = PixelToLogic( aSize ); |
| Point aPoint( 6 , |
| 6 + ( 145 - aLogicSize.Height() ) / 2 ); |
| maCookieFB.SetPosSizePixel( LogicToPixel( aPoint ), aSize ); |
| maCookieFB.Show(); |
| |
| sal_uInt16 nOffset = CNTHTTP_COOKIE_REQUEST_RECV == mpCookieRequest->m_eType |
| ? 0 : STR_COOKIES_SEND_START - STR_COOKIES_RECV_START; |
| INetURLObject aObj( mpCookieRequest->m_rURL ); |
| SetText( String( ResId( STR_COOKIES_RECV_TITLE + nOffset, *pResMgr ) ) ); |
| String aMsg( ResId( STR_COOKIES_RECV_START + nOffset, *pResMgr ) ); |
| aMsg.SearchAndReplaceAscii( "${HOST}", aObj.GetHost() ); |
| aMsg.SearchAndReplaceAscii( "${PATH}", aObj.GetPath() ); |
| String aTemplate( ResId( STR_COOKIES_RECV_COOKIES, *pResMgr ) ); |
| List& rList =mpCookieRequest->m_rCookieList; |
| String aPair, aCookie; |
| |
| for ( sal_uInt16 i = (sal_uInt16)rList.Count(); i--; ) |
| { |
| CntHTTPCookie* pCookie = (CntHTTPCookie*)rList.GetObject(i); |
| |
| if ( CNTHTTP_COOKIE_POLICY_INTERACTIVE == pCookie->m_nPolicy ) |
| { |
| aCookie = aTemplate; |
| aCookie.SearchAndReplaceAscii( "${DOMAIN}", pCookie->m_aDomain ); |
| aCookie.SearchAndReplaceAscii( "${PATH}", pCookie->m_aPath ); |
| aPair = pCookie->m_aName; |
| aPair += '='; |
| aPair += pCookie->m_aValue; |
| aCookie.SearchAndReplaceAscii( "${COOKIE}", aPair ); |
| aMsg += aCookie; |
| } |
| } |
| maInFutureInteractiveBtn.Check( sal_True ); |
| maCookieFT.SetText( aMsg ); |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| short CookiesDialog::Execute() |
| { |
| maSendBtn.GrabFocus(); |
| short nRet = ModalDialog::Execute(); |
| sal_uInt16 nStatus = CNTHTTP_COOKIE_POLICY_INTERACTIVE; |
| |
| if ( maInFutureSendBtn.IsChecked() ) |
| nStatus = CNTHTTP_COOKIE_POLICY_ACCEPTED; |
| |
| if ( maInFutureIgnoreBtn.IsChecked() ) |
| nStatus = CNTHTTP_COOKIE_POLICY_BANNED; |
| List& rList = mpCookieRequest->m_rCookieList; |
| |
| for ( sal_uInt16 i = (sal_uInt16)rList.Count(); i--; ) |
| { |
| sal_uInt16& rStatus = ( (CntHTTPCookie*)rList.GetObject(i) )->m_nPolicy; |
| |
| if ( rStatus == CNTHTTP_COOKIE_POLICY_INTERACTIVE ) |
| rStatus = nStatus; |
| } |
| |
| if ( nRet == RET_OK ) |
| mpCookieRequest->m_nRet = CNTHTTP_COOKIE_POLICY_ACCEPTED; |
| else |
| mpCookieRequest->m_nRet = CNTHTTP_COOKIE_POLICY_BANNED; |
| |
| return nRet; |
| } |
| |