1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 #include <svl/httpcook.hxx>
25 #include <tools/urlobj.hxx>
26 #include <vcl/msgbox.hxx>
27
28 #ifndef UUI_COOKIEDG_HRC
29 #include <cookiedg.hrc>
30 #endif
31 #include <cookiedg.hxx>
32 #ifndef UUI_IDS_HRC
33 #include <ids.hrc>
34 #endif
35
36 // CookiesDialog ---------------------------------------------------------
37
IMPL_LINK(CookiesDialog,ButtonHdl_Impl,PushButton *,pBtn)38 IMPL_LINK( CookiesDialog, ButtonHdl_Impl, PushButton *, pBtn )
39 {
40 short nRet = ( &maSendBtn == pBtn ) ? RET_OK : RET_CANCEL;
41 EndDialog( nRet );
42 return 1;
43 }
44
45 // -----------------------------------------------------------------------
CookiesDialog(Window * pParent,CntHTTPCookieRequest * pRequest,ResMgr * pResMgr)46 CookiesDialog::CookiesDialog( Window* pParent,
47 CntHTTPCookieRequest* pRequest,
48 ResMgr* pResMgr ) :
49
50 ModalDialog( pParent, ResId( DLG_COOKIES, *pResMgr ) ),
51
52 maCookieFB ( this, ResId( FB_COOKIES, *pResMgr ) ),
53 maCookieFT ( this, ResId( FT_COOKIES, *pResMgr ) ),
54 maInFutureLine ( this, ResId( FL_COOKIES, *pResMgr ) ),
55 maInFutureSendBtn ( this, ResId( RB_INFUTURE_SEND, *pResMgr ) ),
56 maInFutureIgnoreBtn ( this, ResId( RB_INFUTURE_IGNORE, *pResMgr ) ),
57 maInFutureInteractiveBtn( this, ResId( RB_INFUTURE_INTERACTIVE, *pResMgr ) ),
58 maInFutureGB ( this, ResId( GB_INFUTURE, *pResMgr ) ),
59 maIgnoreBtn ( this, ResId( BTN_COOKIES_CANCEL, *pResMgr ) ),
60 maSendBtn ( this, ResId( BTN_COOKIES_OK, *pResMgr ) ),
61
62 mpCookieRequest ( pRequest )
63
64 {
65 FreeResource();
66
67 Link aLink( LINK( this, CookiesDialog, ButtonHdl_Impl ) );
68 maIgnoreBtn.SetClickHdl( aLink );
69 maSendBtn.SetClickHdl( aLink );
70 const Bitmap& rBitmap = maCookieFB.GetBitmap();
71 Size aSize = rBitmap.GetSizePixel();
72 SetMapMode( MapMode( MAP_APPFONT ) );
73 Size aLogicSize = PixelToLogic( aSize );
74 Point aPoint( 6 ,
75 6 + ( 145 - aLogicSize.Height() ) / 2 );
76 maCookieFB.SetPosSizePixel( LogicToPixel( aPoint ), aSize );
77 maCookieFB.Show();
78
79 sal_uInt16 nOffset = CNTHTTP_COOKIE_REQUEST_RECV == mpCookieRequest->m_eType
80 ? 0 : STR_COOKIES_SEND_START - STR_COOKIES_RECV_START;
81 INetURLObject aObj( mpCookieRequest->m_rURL );
82 SetText( String( ResId( STR_COOKIES_RECV_TITLE + nOffset, *pResMgr ) ) );
83 String aMsg( ResId( STR_COOKIES_RECV_START + nOffset, *pResMgr ) );
84 aMsg.SearchAndReplaceAscii( "${HOST}", aObj.GetHost() );
85 aMsg.SearchAndReplaceAscii( "${PATH}", aObj.GetPath() );
86 String aTemplate( ResId( STR_COOKIES_RECV_COOKIES, *pResMgr ) );
87 List& rList =mpCookieRequest->m_rCookieList;
88 String aPair, aCookie;
89
90 for ( sal_uInt16 i = (sal_uInt16)rList.Count(); i--; )
91 {
92 CntHTTPCookie* pCookie = (CntHTTPCookie*)rList.GetObject(i);
93
94 if ( CNTHTTP_COOKIE_POLICY_INTERACTIVE == pCookie->m_nPolicy )
95 {
96 aCookie = aTemplate;
97 aCookie.SearchAndReplaceAscii( "${DOMAIN}", pCookie->m_aDomain );
98 aCookie.SearchAndReplaceAscii( "${PATH}", pCookie->m_aPath );
99 aPair = pCookie->m_aName;
100 aPair += '=';
101 aPair += pCookie->m_aValue;
102 aCookie.SearchAndReplaceAscii( "${COOKIE}", aPair );
103 aMsg += aCookie;
104 }
105 }
106 maInFutureInteractiveBtn.Check( sal_True );
107 maCookieFT.SetText( aMsg );
108 }
109
110 // -----------------------------------------------------------------------
111
Execute()112 short CookiesDialog::Execute()
113 {
114 maSendBtn.GrabFocus();
115 short nRet = ModalDialog::Execute();
116 sal_uInt16 nStatus = CNTHTTP_COOKIE_POLICY_INTERACTIVE;
117
118 if ( maInFutureSendBtn.IsChecked() )
119 nStatus = CNTHTTP_COOKIE_POLICY_ACCEPTED;
120
121 if ( maInFutureIgnoreBtn.IsChecked() )
122 nStatus = CNTHTTP_COOKIE_POLICY_BANNED;
123 List& rList = mpCookieRequest->m_rCookieList;
124
125 for ( sal_uInt16 i = (sal_uInt16)rList.Count(); i--; )
126 {
127 sal_uInt16& rStatus = ( (CntHTTPCookie*)rList.GetObject(i) )->m_nPolicy;
128
129 if ( rStatus == CNTHTTP_COOKIE_POLICY_INTERACTIVE )
130 rStatus = nStatus;
131 }
132
133 if ( nRet == RET_OK )
134 mpCookieRequest->m_nRet = CNTHTTP_COOKIE_POLICY_ACCEPTED;
135 else
136 mpCookieRequest->m_nRet = CNTHTTP_COOKIE_POLICY_BANNED;
137
138 return nRet;
139 }
140
141