diff options
Diffstat (limited to 'dbaccess/source/ui/control/opendoccontrols.cxx')
-rw-r--r-- | dbaccess/source/ui/control/opendoccontrols.cxx | 335 |
1 files changed, 0 insertions, 335 deletions
diff --git a/dbaccess/source/ui/control/opendoccontrols.cxx b/dbaccess/source/ui/control/opendoccontrols.cxx deleted file mode 100644 index e02b7c000..000000000 --- a/dbaccess/source/ui/control/opendoccontrols.cxx +++ /dev/null @@ -1,335 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * 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_dbaccess.hxx" - -#include "opendoccontrols.hxx" - -/** === begin UNO includes === **/ -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/ui/XModuleUIConfigurationManagerSupplier.hpp> -#include <com/sun/star/ui/XUIConfigurationManager.hpp> -#include <com/sun/star/graphic/XGraphic.hpp> -#include <com/sun/star/ui/XImageManager.hpp> -/** === end UNO includes === **/ - -#include <comphelper/processfactory.hxx> -#include <vcl/graph.hxx> -#include <vcl/help.hxx> -#include <unotools/historyoptions.hxx> -#include <comphelper/sequenceashashmap.hxx> -#include <tools/urlobj.hxx> -#include <svl/filenotation.hxx> -#include <osl/diagnose.h> - -//........................................................................ -namespace dbaui -{ -//........................................................................ - - namespace - { - using ::com::sun::star::uno::Reference; - using ::com::sun::star::uno::Exception; - using ::com::sun::star::uno::Sequence; - using ::com::sun::star::uno::UNO_QUERY_THROW; - using ::com::sun::star::container::XNameAccess; - using ::com::sun::star::lang::XMultiServiceFactory; - using ::com::sun::star::beans::PropertyValue; - using ::com::sun::star::ui::XModuleUIConfigurationManagerSupplier; - using ::com::sun::star::ui::XUIConfigurationManager; - using ::com::sun::star::ui::XImageManager; - using ::com::sun::star::graphic::XGraphic; - - String GetCommandText( const sal_Char* _pCommandURL, const ::rtl::OUString& _rModuleName ) - { - ::rtl::OUString sLabel; - if ( !_pCommandURL || !*_pCommandURL ) - return sLabel; - - Reference< XNameAccess > xUICommandLabels; - ::rtl::OUString sCommandURL = ::rtl::OUString::createFromAscii( _pCommandURL ); - - try - { - do - { - // Retrieve popup menu labels - Reference< XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() ); - if ( !xFactory.is() ) - break; - - Reference< XNameAccess> xNameAccess; - xNameAccess = xNameAccess.query( xFactory->createInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.UICommandDescription" ) ) - ) ); - if ( !xNameAccess.is() ) - break; - - xNameAccess->getByName( _rModuleName ) >>= xUICommandLabels; - if ( !xUICommandLabels.is() ) - break; - - Sequence< PropertyValue > aProperties; - if ( !( xUICommandLabels->getByName(sCommandURL) >>= aProperties ) ) - break; - - sal_Int32 nCount( aProperties.getLength() ); - for ( sal_Int32 i=0; i<nCount; ++i ) - { - ::rtl::OUString sPropertyName( aProperties[i].Name ); - if ( sPropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("Label" ) ) ) - { - aProperties[i].Value >>= sLabel; - break; - } - } - } - while ( false ); - } - catch( Exception& rException ) - { - (void)rException; - } - - return sLabel; - } - - Image GetCommandIcon( const sal_Char* _pCommandURL, const ::rtl::OUString& _rModuleName ) - { - Image aIcon; - if ( !_pCommandURL || !*_pCommandURL ) - return aIcon; - - Reference< XNameAccess > xUICommandLabels; - ::rtl::OUString sCommandURL = ::rtl::OUString::createFromAscii( _pCommandURL ); - try - { - do - { - // Retrieve popup menu labels - Reference< XMultiServiceFactory> xFactory( ::comphelper::getProcessServiceFactory() ); - if ( !xFactory.is() ) - break; - - Reference< XModuleUIConfigurationManagerSupplier > xSupplier( - xFactory->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.ui.ModuleUIConfigurationManagerSupplier" ) ) ), - UNO_QUERY_THROW ); - - Reference< XUIConfigurationManager > xManager( xSupplier->getUIConfigurationManager( _rModuleName ) ); - Reference< XImageManager > xImageManager; - if ( xManager.is() ) - xImageManager = xImageManager.query( xManager->getImageManager() ); - if ( !xImageManager.is() ) - break; - - Sequence< ::rtl::OUString > aCommandList( &sCommandURL, 1 ); - Sequence<Reference< XGraphic> > xIconList( xImageManager->getImages( 0, aCommandList ) ); - if ( !xIconList.hasElements() ) - break; - - aIcon = Graphic( xIconList[0] ).GetBitmapEx(); - } - while ( false ); - } - catch ( Exception& rException ) - { - (void)rException; - } - - return aIcon; - } - - - } - - //==================================================================== - //= OpenButton - //==================================================================== - //-------------------------------------------------------------------- - OpenDocumentButton::OpenDocumentButton( Window* _pParent, const sal_Char* _pAsciiModuleName, const ResId& _rResId ) - :PushButton( _pParent, _rResId ) - { - impl_init( _pAsciiModuleName ); - } - - //-------------------------------------------------------------------- - void OpenDocumentButton::impl_init( const sal_Char* _pAsciiModuleName ) - { - OSL_ENSURE( _pAsciiModuleName, "OpenDocumentButton::impl_init: invalid module name!" ); - m_sModule = ::rtl::OUString::createFromAscii( _pAsciiModuleName ); - - // our label should equal the UI text of the "Open" command - String sLabel( GetCommandText( ".uno:Open", m_sModule ) ); - sLabel.SearchAndReplaceAllAscii( "~", String() ); - sLabel.Insert( (sal_Unicode)' ', 0 ); - SetText( sLabel ); - - // Place icon left of text and both centered in the button. - SetModeImage( GetCommandIcon( ".uno:Open", m_sModule ) ); - EnableImageDisplay( sal_True ); - EnableTextDisplay( sal_True ); - SetImageAlign( IMAGEALIGN_LEFT ); - SetStyle( GetStyle() | WB_CENTER ); - } - - //==================================================================== - //= OpenDocumentListBox - //==================================================================== - //-------------------------------------------------------------------- - OpenDocumentListBox::OpenDocumentListBox( Window* _pParent, const sal_Char* _pAsciiModuleName, const ResId& _rResId ) - :ListBox( _pParent, _rResId ) - { - impl_init( _pAsciiModuleName ); - } - - //-------------------------------------------------------------------- - void OpenDocumentListBox::impl_init( const sal_Char* _pAsciiModuleName ) - { - OSL_ENSURE( _pAsciiModuleName, "OpenDocumentListBox::impl_init: invalid module name!" ); - - Sequence< Sequence< PropertyValue> > aHistory = SvtHistoryOptions().GetList( ePICKLIST ); - Reference< XNameAccess > xFilterFactory; - xFilterFactory = xFilterFactory.query( ::comphelper::getProcessServiceFactory()->createInstance( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.FilterFactory" ) ) ) ); - - sal_uInt32 nCount = aHistory.getLength(); - for ( sal_uInt32 nItem = 0; nItem < nCount; ++nItem ) - { - try - { - // Get the current history item's properties. - ::comphelper::SequenceAsHashMap aItemProperties( aHistory[ nItem ] ); - ::rtl::OUString sURL = aItemProperties.getUnpackedValueOrDefault( HISTORY_PROPERTYNAME_URL, ::rtl::OUString() ); - ::rtl::OUString sFilter = aItemProperties.getUnpackedValueOrDefault( HISTORY_PROPERTYNAME_FILTER, ::rtl::OUString() ); - String sTitle = aItemProperties.getUnpackedValueOrDefault( HISTORY_PROPERTYNAME_TITLE, ::rtl::OUString() ); - ::rtl::OUString sPassword = aItemProperties.getUnpackedValueOrDefault( HISTORY_PROPERTYNAME_PASSWORD, ::rtl::OUString() ); - - // If the entry is an impress file then insert it into the - // history list and the list box. - Sequence< PropertyValue > aProps; - xFilterFactory->getByName( sFilter ) >>= aProps; - - ::comphelper::SequenceAsHashMap aFilterProperties( aProps ); - ::rtl::OUString sDocumentService = aFilterProperties.getUnpackedValueOrDefault( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DocumentService" ) ), ::rtl::OUString() ); - if ( sDocumentService.equalsAscii( _pAsciiModuleName ) ) - { - // yes, it's a Base document - INetURLObject aURL; - aURL.SetSmartURL( sURL ); - // The password is set only when it is not empty. - if ( sPassword.getLength() > 0 ) - aURL.SetPass( sPassword ); - - if ( !sTitle.Len() ) - sTitle = aURL.getBase( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_UNAMBIGUOUS ); - - String sDecodedURL = aURL.GetMainURL( INetURLObject::NO_DECODE ); - - sal_uInt16 nPos = InsertEntry( sTitle ); - m_aURLs.insert( MapIndexToStringPair::value_type( nPos, StringPair( sDecodedURL, sFilter ) ) ); - } - } - catch( Exception& rException ) - { - (void)rException; - } - } - } - - //-------------------------------------------------------------------- - String OpenDocumentListBox::GetSelectedDocumentURL() const - { - String sURL; - sal_uInt16 nSelected = GetSelectEntryPos(); - if ( LISTBOX_ENTRY_NOTFOUND != GetSelectEntryPos() ) - sURL = impl_getDocumentAtIndex( nSelected ).first; - return sURL; - } - - //-------------------------------------------------------------------- - String OpenDocumentListBox::GetSelectedDocumentFilter() const - { - String sFilter; - sal_uInt16 nSelected = GetSelectEntryPos(); - if ( LISTBOX_ENTRY_NOTFOUND != GetSelectEntryPos() ) - sFilter = impl_getDocumentAtIndex( nSelected ).second; - return sFilter; - } - - //-------------------------------------------------------------------- - OpenDocumentListBox::StringPair OpenDocumentListBox::impl_getDocumentAtIndex( sal_uInt16 _nListIndex, bool _bSystemNotation ) const - { - MapIndexToStringPair::const_iterator pos = m_aURLs.find( _nListIndex ); - OSL_ENSURE( pos != m_aURLs.end(), "OpenDocumentListBox::impl_getDocumentAtIndex: invalid index!" ); - - StringPair aDocumentDescriptor; - if ( pos != m_aURLs.end() ) - { - aDocumentDescriptor = pos->second; - if ( _bSystemNotation && aDocumentDescriptor.first.Len() ) - { - ::svt::OFileNotation aNotation( aDocumentDescriptor.first ); - aDocumentDescriptor.first = aNotation.get( ::svt::OFileNotation::N_SYSTEM ); - } - } - return aDocumentDescriptor; - } - - //-------------------------------------------------------------------- - void OpenDocumentListBox::RequestHelp( const HelpEvent& _rHEvt ) - { - if( !( _rHEvt.GetMode() & HELPMODE_QUICK ) ) - return; - if ( !IsEnabled() ) - return; - - Point aRequestPos( ScreenToOutputPixel( _rHEvt.GetMousePosPixel() ) ); - sal_uInt16 nItemIndex = LISTBOX_ENTRY_NOTFOUND; - if ( GetIndexForPoint( aRequestPos, nItemIndex ) != -1 ) - { - Rectangle aItemRect( GetBoundingRectangle( nItemIndex ) ); - aItemRect = Rectangle( - OutputToScreenPixel( aItemRect.TopLeft() ), - OutputToScreenPixel( aItemRect.BottomRight() ) ); - String sHelpText = impl_getDocumentAtIndex( nItemIndex, true ).first; - Help::ShowQuickHelp( this, aItemRect, sHelpText, QUICKHELP_LEFT | QUICKHELP_VCENTER ); - } - } - -//........................................................................ -} // namespace dbaui -//........................................................................ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |