xref: /trunk/main/uui/source/cookiedg.cxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
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