diff options
Diffstat (limited to 'svx/source/cui/webconninfo.cxx')
-rw-r--r-- | svx/source/cui/webconninfo.cxx | 386 |
1 files changed, 0 insertions, 386 deletions
diff --git a/svx/source/cui/webconninfo.cxx b/svx/source/cui/webconninfo.cxx deleted file mode 100644 index 33bd7f8925..0000000000 --- a/svx/source/cui/webconninfo.cxx +++ /dev/null @@ -1,386 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: webconninfo.cxx,v $ - * $Revision: 1.3 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_svx.hxx" - -#ifdef SVX_DLLIMPLEMENTATION -#undef SVX_DLLIMPLEMENTATION -#endif - -// include --------------------------------------------------------------- -#include <svx/dialmgr.hxx> -#ifndef _SVX_DIALOGS_HRC -#include <svx/dialogs.hrc> -#endif - -#include <com/sun/star/task/UrlRecord.hpp> -#include <com/sun/star/task/XPasswordContainer.hpp> -#include <com/sun/star/task/XMasterPasswordHandling.hpp> -#include "com/sun/star/task/XUrlContainer.hpp" - -#include <comphelper/processfactory.hxx> -#include <comphelper/docpasswordrequest.hxx> - -#include "webconninfo.hxx" -#include "webconninfo.hrc" - -using namespace ::com::sun::star; - -//........................................................................ -namespace svx -{ -//........................................................................ - -// class PasswordTable --------------------------------------------------- - -PasswordTable::PasswordTable( Window* pParent, const ResId& rResId ) : - SvxSimpleTable( pParent, rResId ) -{ - SetWindowBits( GetStyle() | WB_NOINITIALSELECTION ); -} - -void PasswordTable::InsertHeaderItem( USHORT nColumn, const String& rText, HeaderBarItemBits nBits ) -{ - GetTheHeaderBar()->InsertItem( nColumn, rText, 0, nBits ); -} - -void PasswordTable::ResetTabs() -{ - SetTabs(); -} - -void PasswordTable::Resort( bool bForced ) -{ - USHORT nColumn = GetSelectedCol(); - if ( 0 == nColumn || bForced ) // only the first column is sorted - { - HeaderBarItemBits nBits = GetTheHeaderBar()->GetItemBits(1); - BOOL bUp = ( ( nBits & HIB_UPARROW ) == HIB_UPARROW ); - SvSortMode eMode = SortAscending; - - if ( bUp ) - { - nBits &= ~HIB_UPARROW; - nBits |= HIB_DOWNARROW; - eMode = SortDescending; - } - else - { - nBits &= ~HIB_DOWNARROW; - nBits |= HIB_UPARROW; - } - GetTheHeaderBar()->SetItemBits( 1, nBits ); - SvTreeList* pListModel = GetModel(); - pListModel->SetSortMode( eMode ); - pListModel->Resort(); - } -} - -// class WebConnectionInfoDialog ----------------------------------------- - -// ----------------------------------------------------------------------- -WebConnectionInfoDialog::WebConnectionInfoDialog( Window* pParent ) : - ModalDialog( pParent, SVX_RES( RID_SVXDLG_WEBCONNECTION_INFO ) ) - ,m_aNeverShownFI ( this, SVX_RES( FI_NEVERSHOWN ) ) - ,m_aPasswordsLB ( this, SVX_RES( LB_PASSWORDS ) ) - ,m_aRemoveBtn ( this, SVX_RES( PB_REMOVE ) ) - ,m_aRemoveAllBtn ( this, SVX_RES( PB_REMOVEALL ) ) - ,m_aChangeBtn ( this, SVX_RES( PB_CHANGE ) ) - ,m_aButtonsFL ( this, SVX_RES( FL_BUTTONS ) ) - ,m_aCloseBtn ( this, SVX_RES( PB_CLOSE ) ) - ,m_aHelpBtn ( this, SVX_RES( PB_HELP ) ) - ,m_nPos ( -1 ) -{ - static long aStaticTabs[]= { 3, 0, 150, 250 }; - m_aPasswordsLB.SetTabs( aStaticTabs ); - m_aPasswordsLB.InsertHeaderItem( 1, SVX_RESSTR( STR_WEBSITE ), - HIB_LEFT | HIB_VCENTER | HIB_FIXEDPOS | HIB_CLICKABLE | HIB_UPARROW ); - m_aPasswordsLB.InsertHeaderItem( 2, SVX_RESSTR( STR_USERNAME ), - HIB_LEFT | HIB_VCENTER | HIB_FIXEDPOS ); - m_aPasswordsLB.ResetTabs(); - - FreeResource(); - - m_aPasswordsLB.SetHeaderBarClickHdl( LINK( this, WebConnectionInfoDialog, HeaderBarClickedHdl ) ); - m_aRemoveBtn.SetClickHdl( LINK( this, WebConnectionInfoDialog, RemovePasswordHdl ) ); - m_aRemoveAllBtn.SetClickHdl( LINK( this, WebConnectionInfoDialog, RemoveAllPasswordsHdl ) ); - m_aChangeBtn.SetClickHdl( LINK( this, WebConnectionInfoDialog, ChangePasswordHdl ) ); - - // one button too small for its text? - sal_Int32 i = 0; - long nBtnTextWidth = 0; - Window* pButtons[] = { &m_aRemoveBtn, &m_aRemoveAllBtn, &m_aChangeBtn }; - Window** pButton = pButtons; - const sal_Int32 nBCount = sizeof( pButtons ) / sizeof( pButtons[ 0 ] ); - for ( ; i < nBCount; ++i, ++pButton ) - { - long nTemp = (*pButton)->GetCtrlTextWidth( (*pButton)->GetText() ); - if ( nTemp > nBtnTextWidth ) - nBtnTextWidth = nTemp; - } - nBtnTextWidth = nBtnTextWidth * 115 / 100; // a little offset - long nButtonWidth = m_aRemoveBtn.GetSizePixel().Width(); - if ( nBtnTextWidth > nButtonWidth ) - { - // so make the buttons broader and its control in front of it smaller - long nDelta = nBtnTextWidth - nButtonWidth; - pButton = pButtons; - for ( i = 0; i < nBCount; ++i, ++pButton ) - { - Point aNewPos = (*pButton)->GetPosPixel(); - if ( &m_aRemoveAllBtn == (*pButton) ) - aNewPos.X() += nDelta; - else if ( &m_aChangeBtn == (*pButton) ) - aNewPos.X() -= nDelta; - Size aNewSize = (*pButton)->GetSizePixel(); - aNewSize.Width() += nDelta; - (*pButton)->SetPosSizePixel( aNewPos, aNewSize ); - } - } - - FillPasswordList(); - - m_aRemoveBtn.SetClickHdl( LINK( this, WebConnectionInfoDialog, RemovePasswordHdl ) ); - m_aRemoveAllBtn.SetClickHdl( LINK( this, WebConnectionInfoDialog, RemoveAllPasswordsHdl ) ); - m_aChangeBtn.SetClickHdl( LINK( this, WebConnectionInfoDialog, ChangePasswordHdl ) ); - m_aPasswordsLB.SetSelectHdl( LINK( this, WebConnectionInfoDialog, EntrySelectedHdl ) ); - - m_aRemoveBtn.Enable( FALSE ); - m_aChangeBtn.Enable( FALSE ); - - HeaderBarClickedHdl( NULL ); -} - -// ----------------------------------------------------------------------- -WebConnectionInfoDialog::~WebConnectionInfoDialog() -{ -} - -// ----------------------------------------------------------------------- -IMPL_LINK( WebConnectionInfoDialog, HeaderBarClickedHdl, SvxSimpleTable*, pTable ) -{ - m_aPasswordsLB.Resort( NULL == pTable ); - return 0; -} - -// ----------------------------------------------------------------------- -void WebConnectionInfoDialog::FillPasswordList() -{ - try - { - uno::Reference< task::XMasterPasswordHandling > xMasterPasswd( - comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.task.PasswordContainer" ) ) ), - uno::UNO_QUERY ); - - if ( xMasterPasswd.is() && xMasterPasswd->isPersistentStoringAllowed() ) - { - uno::Reference< task::XPasswordContainer > xPasswdContainer( xMasterPasswd, uno::UNO_QUERY_THROW ); - uno::Reference< task::XInteractionHandler > xInteractionHandler( - comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.task.InteractionHandler" ) ) ), - uno::UNO_QUERY_THROW ); - - uno::Sequence< task::UrlRecord > aURLEntries = xPasswdContainer->getAllPersistent( xInteractionHandler ); - sal_Int32 nCount = 0; - for ( sal_Int32 nURLInd = 0; nURLInd < aURLEntries.getLength(); nURLInd++ ) - { - for ( sal_Int32 nUserInd = 0; nUserInd < aURLEntries[nURLInd].UserList.getLength(); nUserInd++ ) - { - ::rtl::OUString aUIEntry( aURLEntries[nURLInd].Url ); - aUIEntry += ::rtl::OUString::valueOf( (sal_Unicode)'\t' ); - aUIEntry += aURLEntries[nURLInd].UserList[nUserInd].UserName; - SvLBoxEntry* pEntry = m_aPasswordsLB.InsertEntry( aUIEntry ); - pEntry->SetUserData( (void*)(nCount++) ); - } - } - - // remember pos of first url container entry. - m_nPos = nCount; - - uno::Reference< task::XUrlContainer > xUrlContainer( - xPasswdContainer, uno::UNO_QUERY_THROW ); - - uno::Sequence< rtl::OUString > aUrls - = xUrlContainer->getUrls( sal_True /* OnlyPersistent */ ); - - for ( sal_Int32 nURLIdx = 0; nURLIdx < aUrls.getLength(); nURLIdx++ ) - { - ::rtl::OUString aUIEntry( aUrls[ nURLIdx ] ); - aUIEntry += ::rtl::OUString::valueOf( (sal_Unicode)'\t' ); - aUIEntry += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*" ) ); - SvLBoxEntry* pEntry = m_aPasswordsLB.InsertEntry( aUIEntry ); - pEntry->SetUserData( (void*)(nCount++) ); - } - } - } - catch( uno::Exception& ) - {} -} - -// ----------------------------------------------------------------------- -IMPL_LINK( WebConnectionInfoDialog, RemovePasswordHdl, PushButton*, EMPTYARG ) -{ - try - { - SvLBoxEntry* pEntry = m_aPasswordsLB.GetCurEntry(); - if ( pEntry ) - { - ::rtl::OUString aURL = m_aPasswordsLB.GetEntryText( pEntry, 0 ); - ::rtl::OUString aUserName = m_aPasswordsLB.GetEntryText( pEntry, 1 ); - - uno::Reference< task::XPasswordContainer > xPasswdContainer( - comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.task.PasswordContainer" ) ) ), - uno::UNO_QUERY_THROW ); - - sal_Int32 nPos = (sal_Int32)(sal_IntPtr)pEntry->GetUserData(); - if ( nPos < m_nPos ) - { - xPasswdContainer->removePersistent( aURL, aUserName ); - } - else - { - uno::Reference< task::XUrlContainer > xUrlContainer( - xPasswdContainer, uno::UNO_QUERY_THROW ); - xUrlContainer->removeUrl( aURL ); - } - m_aPasswordsLB.RemoveEntry( pEntry ); - } - } - catch( uno::Exception& ) - {} - - return 0; -} - -// ----------------------------------------------------------------------- -IMPL_LINK( WebConnectionInfoDialog, RemoveAllPasswordsHdl, PushButton*, EMPTYARG ) -{ - try - { - uno::Reference< task::XPasswordContainer > xPasswdContainer( - comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.task.PasswordContainer" ) ) ), - uno::UNO_QUERY_THROW ); - - // should the master password be requested before? - xPasswdContainer->removeAllPersistent(); - - uno::Reference< task::XUrlContainer > xUrlContainer( - xPasswdContainer, uno::UNO_QUERY_THROW ); - uno::Sequence< rtl::OUString > aUrls - = xUrlContainer->getUrls( sal_True /* OnlyPersistent */ ); - for ( sal_Int32 nURLIdx = 0; nURLIdx < aUrls.getLength(); nURLIdx++ ) - xUrlContainer->removeUrl( aUrls[ nURLIdx ] ); - - m_aPasswordsLB.Clear(); - } - catch( uno::Exception& ) - {} - - return 0; -} - -// ----------------------------------------------------------------------- -IMPL_LINK( WebConnectionInfoDialog, ChangePasswordHdl, PushButton*, EMPTYARG ) -{ - try - { - SvLBoxEntry* pEntry = m_aPasswordsLB.GetCurEntry(); - if ( pEntry ) - { - ::rtl::OUString aURL = m_aPasswordsLB.GetEntryText( pEntry, 0 ); - ::rtl::OUString aUserName = m_aPasswordsLB.GetEntryText( pEntry, 1 ); - - ::comphelper::DocPasswordRequest* pPasswordRequest - = new ::comphelper::DocPasswordRequest( - ::comphelper::DocPasswordRequestType_STANDARD, - task::PasswordRequestMode_PASSWORD_CREATE, aURL ); - uno::Reference< task::XInteractionRequest > rRequest( pPasswordRequest ); - - uno::Reference< task::XInteractionHandler > xInteractionHandler( - comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.task.InteractionHandler" ) ) ), - uno::UNO_QUERY_THROW ); - xInteractionHandler->handle( rRequest ); - - if ( pPasswordRequest->isPassword() ) - { - String aNewPass = pPasswordRequest->getPassword(); - uno::Sequence< ::rtl::OUString > aPasswd( 1 ); - aPasswd[0] = aNewPass; - - uno::Reference< task::XPasswordContainer > xPasswdContainer( - comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.task.PasswordContainer" ) ) ), - uno::UNO_QUERY_THROW ); - xPasswdContainer->addPersistent( - aURL, aUserName, aPasswd, xInteractionHandler ); - } - } - } - catch( uno::Exception& ) - {} - - return 0; -} - -// ----------------------------------------------------------------------- -IMPL_LINK( WebConnectionInfoDialog, EntrySelectedHdl, void*, EMPTYARG ) -{ - SvLBoxEntry* pEntry = m_aPasswordsLB.GetCurEntry(); - if ( !pEntry ) - { - m_aRemoveBtn.Enable( FALSE ); - m_aChangeBtn.Enable( FALSE ); - } - else - { - m_aRemoveBtn.Enable( TRUE ); - - // url container entries (-> use system credentials) have - // no password - sal_Int32 nPos = (sal_Int32)(sal_IntPtr)pEntry->GetUserData(); - m_aChangeBtn.Enable( nPos < m_nPos ); - } - - return 0; -} - -//........................................................................ -} // namespace svx -//........................................................................ - |