summaryrefslogtreecommitdiff
path: root/cui/source/dialogs/cuigaldlg.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/dialogs/cuigaldlg.cxx')
-rw-r--r--cui/source/dialogs/cuigaldlg.cxx1300
1 files changed, 0 insertions, 1300 deletions
diff --git a/cui/source/dialogs/cuigaldlg.cxx b/cui/source/dialogs/cuigaldlg.cxx
deleted file mode 100644
index c09912899..000000000
--- a/cui/source/dialogs/cuigaldlg.cxx
+++ /dev/null
@@ -1,1300 +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.
- *
- ************************************************************************/
-
-#include <algorithm>
-#include <ucbhelper/content.hxx>
-#include <osl/mutex.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/msgbox.hxx>
-#include <avmedia/mediawindow.hxx>
-#include <unotools/pathoptions.hxx>
-#include <sfx2/opengrf.hxx>
-#include <svtools/filter.hxx>
-#include <svx/gallery1.hxx>
-#include <svx/galtheme.hxx>
-#include "cuigaldlg.hxx"
-#include "helpid.hrc"
-#include <unotools/syslocale.hxx>
-#include <cppuhelper/implbase1.hxx>
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
-#include <comphelper/processfactory.hxx>
-#include <com/sun/star/sdbc/XResultSet.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/ucb/XContentAccess.hpp>
-#include <com/sun/star/ui/dialogs/XAsynchronousExecutableDialog.hpp>
-#include <sfx2/sfxuno.hxx>
-#include "dialmgr.hxx"
-#include "gallery.hrc"
-#include <svx/dialogs.hrc>
-#include <svx/dialmgr.hxx>
-
-
-// --------------
-// - Namespaces -
-// --------------
-
-using namespace ::ucbhelper;
-using namespace ::rtl;
-using namespace ::cppu;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::ui::dialogs;
-using namespace ::com::sun::star::uno;
-
-
-// -----------
-// - Defines -
-// -----------
-
-#define MAXPATH 1024
-
-// ----------------
-// - SearchThread -
-// ----------------
-
-SearchThread::SearchThread( SearchProgress* pProgess,
- TPGalleryThemeProperties* pBrowser,
- const INetURLObject& rStartURL ) :
- mpProgress ( pProgess ),
- mpBrowser ( pBrowser ),
- maStartURL ( rStartURL )
-{
-}
-
-// ------------------------------------------------------------------------
-
-SearchThread::~SearchThread()
-{
-}
-
-// ------------------------------------------------------------------------
-
-void SAL_CALL SearchThread::run()
-{
- const String aFileType( mpBrowser->aCbbFileType.GetText() );
-
- if( aFileType.Len() )
- {
- const sal_uInt16 nFileNumber = mpBrowser->aCbbFileType.GetEntryPos( aFileType );
- sal_uInt16 nBeginFormat, nEndFormat;
- ::std::vector< String > aFormats;
-
- if( !nFileNumber || ( nFileNumber >= mpBrowser->aCbbFileType.GetEntryCount() ) )
- {
- nBeginFormat = 1;
- nEndFormat = mpBrowser->aCbbFileType.GetEntryCount() - 1;
- }
- else
- nBeginFormat = nEndFormat = nFileNumber;
-
- for( sal_uInt16 i = nBeginFormat; i <= nEndFormat; ++i )
- aFormats.push_back( mpBrowser->aFilterEntryList[ i ]->aFilterName.ToLowerAscii() );
-
- ImplSearch( maStartURL, aFormats, mpBrowser->bSearchRecursive );
- }
-}
-
-// ------------------------------------------------------------------------
-
-void SAL_CALL SearchThread::onTerminated()
-{
- Application::PostUserEvent( LINK( mpProgress, SearchProgress, CleanUpHdl ) );
-}
-
-// ------------------------------------------------------------------------
-
-void SearchThread::ImplSearch( const INetURLObject& rStartURL,
- const ::std::vector< String >& rFormats,
- sal_Bool bRecursive )
-{
- {
- SolarMutexGuard aGuard;
-
- mpProgress->SetDirectory( rStartURL );
- mpProgress->Sync();
- }
-
- try
- {
- ::com::sun::star::uno::Reference< XCommandEnvironment > xEnv;
- Content aCnt( rStartURL.GetMainURL( INetURLObject::NO_DECODE ), xEnv );
- Sequence< OUString > aProps( 2 );
-
- aProps.getArray()[ 0 ] = OUString(RTL_CONSTASCII_USTRINGPARAM( "IsFolder" ));
- aProps.getArray()[ 1 ] = OUString(RTL_CONSTASCII_USTRINGPARAM( "IsDocument" ));
- ::com::sun::star::uno::Reference< XResultSet > xResultSet(
- aCnt.createCursor( aProps, INCLUDE_FOLDERS_AND_DOCUMENTS ) );
-
- if( xResultSet.is() )
- {
- ::com::sun::star::uno::Reference< XContentAccess > xContentAccess( xResultSet, UNO_QUERY_THROW );
- ::com::sun::star::uno::Reference< XRow > xRow( xResultSet, UNO_QUERY_THROW );
-
- while( xResultSet->next() && schedule() )
- {
- INetURLObject aFoundURL( xContentAccess->queryContentIdentifierString() );
- DBG_ASSERT( aFoundURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
-
- sal_Bool bFolder = xRow->getBoolean( 1 ); // property "IsFolder"
- if ( xRow->wasNull() )
- bFolder = sal_False;
-
- if( bRecursive && bFolder )
- ImplSearch( aFoundURL, rFormats, sal_True );
- else
- {
- sal_Bool bDocument = xRow->getBoolean( 2 ); // property "IsDocument"
- if ( xRow->wasNull() )
- bDocument = sal_False;
-
- if( bDocument )
- {
- GraphicDescriptor aDesc( aFoundURL );
- String aFileName;
-
- if( ( aDesc.Detect() &&
- ::std::find( rFormats.begin(),
- rFormats.end(),
- aDesc.GetImportFormatShortName(
- aDesc.GetFileFormat() ).ToLowerAscii() )
- != rFormats.end() ) ||
- ::std::find( rFormats.begin(),
- rFormats.end(),
- String(aFoundURL.GetExtension().toAsciiLowerCase()) )
- != rFormats.end() )
- {
- SolarMutexGuard aGuard;
-
- mpBrowser->aFoundList.push_back(
- new String( aFoundURL.GetMainURL( INetURLObject::NO_DECODE ) )
- );
- mpBrowser->aLbxFound.InsertEntry(
- GetReducedString( aFoundURL, 50 ),
- (sal_uInt16) mpBrowser->aFoundList.size() - 1 );
- }
- }
- }
- }
- }
- }
- catch (const ContentCreationException&)
- {
- }
- catch (const ::com::sun::star::uno::RuntimeException&)
- {
- }
- catch (const ::com::sun::star::uno::Exception&)
- {
- }
-}
-
-// ------------------
-// - SearchProgress -
-// ------------------
-
-SearchProgress::SearchProgress( Window* pParent, const INetURLObject& rStartURL ) :
- ModalDialog ( pParent, CUI_RES(RID_SVXDLG_GALLERY_SEARCH_PROGRESS ) ),
- aFtSearchDir ( this, CUI_RES( FT_SEARCH_DIR ) ),
- aFLSearchDir ( this, CUI_RES( FL_SEARCH_DIR ) ),
- aFtSearchType ( this, CUI_RES( FT_SEARCH_TYPE ) ),
- aFLSearchType ( this, CUI_RES( FL_SEARCH_TYPE ) ),
- aBtnCancel ( this, CUI_RES( BTN_CANCEL ) ),
- maSearchThread ( this, (TPGalleryThemeProperties*) pParent, rStartURL )
-{
- FreeResource();
- aBtnCancel.SetClickHdl( LINK( this, SearchProgress, ClickCancelBtn ) );
-}
-
-// ------------------------------------------------------------------------
-
-void SearchProgress::Terminate()
-{
- maSearchThread.terminate();
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( SearchProgress, ClickCancelBtn, void*, EMPTYARG )
-{
- Terminate();
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( SearchProgress, CleanUpHdl, void*, EMPTYARG )
-{
- EndDialog( RET_OK );
- delete this;
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-short SearchProgress::Execute()
-{
- OSL_FAIL( "SearchProgress cannot be executed via Dialog::Execute!\n"
- "It creates a thread that will call back to VCL apartment => deadlock!\n"
- "Use Dialog::StartExecuteModal to execute the dialog!" );
- return RET_CANCEL;
-}
-
-// ------------------------------------------------------------------------
-
-void SearchProgress::StartExecuteModal( const Link& rEndDialogHdl )
-{
- maSearchThread.create();
- ModalDialog::StartExecuteModal( rEndDialogHdl );
-}
-
-// --------------
-// - TakeThread -
-// --------------
-
-TakeThread::TakeThread(
- TakeProgress* pProgess,
- TPGalleryThemeProperties* pBrowser,
- TokenList_impl& rTakenList
-) :
- mpProgress ( pProgess ),
- mpBrowser ( pBrowser ),
- mrTakenList ( rTakenList )
-{
-}
-
-// ------------------------------------------------------------------------
-
-TakeThread::~TakeThread()
-{
-}
-
-// ------------------------------------------------------------------------
-
-void SAL_CALL TakeThread::run()
-{
- String aName;
- INetURLObject aURL;
- sal_uInt16 nEntries;
- GalleryTheme* pThm = mpBrowser->GetXChgData()->pTheme;
- sal_uInt16 nPos;
- GalleryProgress* pStatusProgress;
-
- {
- SolarMutexGuard aGuard;
- pStatusProgress = new GalleryProgress;
- nEntries = mpBrowser->bTakeAll ? mpBrowser->aLbxFound.GetEntryCount() : mpBrowser->aLbxFound.GetSelectEntryCount();
- pThm->LockBroadcaster();
- }
-
- for( sal_uInt16 i = 0; i < nEntries && schedule(); i++ )
- {
- // kompletten Filenamen aus FoundList holen
- if( mpBrowser->bTakeAll )
- aURL = INetURLObject( *mpBrowser->aFoundList[ nPos = i ] );
- else
- aURL = INetURLObject(*mpBrowser->aFoundList[ nPos = mpBrowser->aLbxFound.GetSelectEntryPos( i ) ]);
-
- // Position in Taken-Liste uebernehmen
- mrTakenList.push_back( (sal_uLong)nPos );
-
- {
- SolarMutexGuard aGuard;
-
- mpProgress->SetFile( aURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS ) );
- pStatusProgress->Update( i, nEntries - 1 );
- mpProgress->Sync();
- pThm->InsertURL( aURL );
- }
- }
-
- {
- SolarMutexGuard aGuard;
-
- pThm->UnlockBroadcaster();
- delete pStatusProgress;
- }
-}
-
-// ------------------------------------------------------------------------
-
-void SAL_CALL TakeThread::onTerminated()
-{
- Application::PostUserEvent( LINK( mpProgress, TakeProgress, CleanUpHdl ) );
-}
-
-// ----------------
-// - TakeProgress -
-// ----------------
-
-TakeProgress::TakeProgress( Window* pWindow ) :
- ModalDialog ( pWindow, CUI_RES( RID_SVXDLG_GALLERY_TAKE_PROGRESS ) ),
- aFtTakeFile ( this, CUI_RES( FT_TAKE_FILE ) ),
- aFLTakeProgress( this, CUI_RES( FL_TAKE_PROGRESS ) ),
- aBtnCancel ( this, CUI_RES( BTN_CANCEL ) ),
- maTakeThread ( this, (TPGalleryThemeProperties*) pWindow, maTakenList )
-
-{
- FreeResource();
- aBtnCancel.SetClickHdl( LINK( this, TakeProgress, ClickCancelBtn ) );
-}
-
-// ------------------------------------------------------------------------
-
-
-void TakeProgress::Terminate()
-{
- maTakeThread.terminate();
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TakeProgress, ClickCancelBtn, void*, EMPTYARG )
-{
- Terminate();
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TakeProgress, CleanUpHdl, void*, EMPTYARG )
-{
- TPGalleryThemeProperties* mpBrowser = (TPGalleryThemeProperties*) GetParent();
- ::std::vector<bool, std::allocator<bool> > aRemoveEntries( mpBrowser->aFoundList.size(), false );
- ::std::vector< String > aRemainingVector;
- sal_uInt32 i, nCount;
-
- GetParent()->EnterWait();
- mpBrowser->aLbxFound.SetUpdateMode( sal_False );
- mpBrowser->aLbxFound.SetNoSelection();
-
- // mark all taken positions in aRemoveEntries
- for( i = 0, nCount = maTakenList.size(); i < nCount; ++i )
- aRemoveEntries[ maTakenList[ i ] ] = true;
- maTakenList.clear();
-
- // refill found list
- for( i = 0, nCount = aRemoveEntries.size(); i < nCount; ++i )
- if( !aRemoveEntries[ i ] )
- aRemainingVector.push_back( *mpBrowser->aFoundList[ i ] );
-
- for ( i = 0, nCount = mpBrowser->aFoundList.size(); i < nCount; ++i )
- delete mpBrowser->aFoundList[ i ];
- mpBrowser->aFoundList.clear();
-
- for( i = 0, nCount = aRemainingVector.size(); i < nCount; ++i )
- mpBrowser->aFoundList.push_back( new String( aRemainingVector[ i ] ) );
-
- aRemainingVector.clear();
-
- // refill list box
- for( i = 0, nCount = aRemoveEntries.size(); i < nCount; ++i )
- if( !aRemoveEntries[ i ] )
- aRemainingVector.push_back( mpBrowser->aLbxFound.GetEntry( (sal_uInt16) i ) );
-
- mpBrowser->aLbxFound.Clear();
-
- for( i = 0, nCount = aRemainingVector.size(); i < nCount; ++i )
- mpBrowser->aLbxFound.InsertEntry( aRemainingVector[ i ] );
-
- aRemainingVector.clear();
-
- mpBrowser->aLbxFound.SetUpdateMode( sal_True );
- mpBrowser->SelectFoundHdl( NULL );
- GetParent()->LeaveWait();
-
- EndDialog( RET_OK );
- delete this;
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-short TakeProgress::Execute()
-{
- OSL_FAIL( "TakeProgress cannot be executed via Dialog::Execute!\n"
- "It creates a thread that will call back to VCL apartment => deadlock!\n"
- "Use Dialog::StartExecuteModal to execute the dialog!" );
- return RET_CANCEL;
-}
-
-// ------------------------------------------------------------------------
-
-void TakeProgress::StartExecuteModal( const Link& rEndDialogHdl )
-{
- maTakeThread.create();
- ModalDialog::StartExecuteModal( rEndDialogHdl );
-}
-
-// ---------------------
-// - ActualizeProgress -
-// ---------------------
-
-ActualizeProgress::ActualizeProgress( Window* pWindow, GalleryTheme* pThm ) :
- ModalDialog ( pWindow, CUI_RES( RID_SVXDLG_GALLERY_ACTUALIZE_PROGRESS ) ),
- aFtActualizeFile ( this, CUI_RES( FT_ACTUALIZE_FILE ) ),
- aFLActualizeProgress ( this, CUI_RES( FL_ACTUALIZE_PROGRESS ) ),
- aBtnCancel ( this, CUI_RES( BTN_CANCEL ) ),
- pTheme ( pThm )
-{
- FreeResource();
- aBtnCancel.SetClickHdl( LINK( this, ActualizeProgress, ClickCancelBtn ) );
-}
-
-// ------------------------------------------------------------------------
-
-short ActualizeProgress::Execute()
-{
- short nRet;
-
- pTimer = new Timer;
-
- if ( pTimer )
- {
- pTimer->SetTimeoutHdl( LINK( this, ActualizeProgress, TimeoutHdl ) );
- pTimer->SetTimeout( 500 );
- pTimer->Start();
- }
-
- nRet = ModalDialog::Execute();
-
- return nRet;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( ActualizeProgress, ClickCancelBtn, void*, EMPTYARG )
-{
- pTheme->AbortActualize();
- EndDialog( RET_OK );
-
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( ActualizeProgress, TimeoutHdl, Timer*, _pTimer )
-{
- if ( _pTimer )
- {
- _pTimer->Stop();
- delete _pTimer;
- }
-
- pTheme->Actualize( LINK( this, ActualizeProgress, ActualizeHdl ), &aStatusProgress );
- ClickCancelBtn( NULL );
-
- return 0;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( ActualizeProgress, ActualizeHdl, INetURLObject*, pURL )
-{
- for( long i = 0; i < 128; i++ )
- Application::Reschedule();
-
- Flush();
- Sync();
-
- if( pURL )
- {
- aFtActualizeFile.SetText( GetReducedString( *pURL, 30 ) );
- aFtActualizeFile.Flush();
- aFtActualizeFile.Sync();
- }
-
- return 0;
-}
-
-// ---------------
-// - TitleDialog -
-// ---------------
-
-TitleDialog::TitleDialog( Window* pParent, const String& rOldTitle ) :
- ModalDialog ( pParent, CUI_RES( RID_SVXDLG_GALLERY_TITLE ) ),
- maOk ( this, CUI_RES( BTN_OK ) ),
- maCancel ( this, CUI_RES( BTN_CANCEL ) ),
- maHelp ( this, CUI_RES( BTN_HELP ) ),
- maFL ( this, CUI_RES( FL_TITLE ) ),
- maEdit ( this, CUI_RES( EDT_TITLE ) )
-{
- FreeResource();
- maEdit.SetText( rOldTitle );
- maEdit.GrabFocus();
-}
-
-// -------------------
-// - GalleryIdDialog -
-// -------------------
-
-GalleryIdDialog::GalleryIdDialog( Window* pParent, GalleryTheme* _pThm ) :
- ModalDialog ( pParent, CUI_RES( RID_SVXDLG_GALLERY_THEMEID ) ),
- aBtnOk ( this, CUI_RES( BTN_OK ) ),
- aBtnCancel ( this, CUI_RES( BTN_CANCEL ) ),
- aFLId ( this, CUI_RES( FL_ID ) ),
- aLbResName ( this, CUI_RES( LB_RESNAME ) ),
- pThm ( _pThm )
-{
- FreeResource();
-
- aLbResName.InsertEntry( String( RTL_CONSTASCII_USTRINGPARAM( "!!! No Id !!!" ) ) );
-
- GalleryTheme::InsertAllThemes( aLbResName );
-
- aLbResName.SelectEntryPos( (sal_uInt16) pThm->GetId() );
- aLbResName.GrabFocus();
-
- aBtnOk.SetClickHdl( LINK( this, GalleryIdDialog, ClickOkHdl ) );
-}
-
-// -----------------------------------------------------------------------------
-
-IMPL_LINK( GalleryIdDialog, ClickOkHdl, void*, EMPTYARG )
-{
- Gallery* pGal = pThm->GetParent();
- const sal_uLong nId = GetId();
- sal_Bool bDifferentThemeExists = sal_False;
-
- for( sal_uLong i = 0, nCount = pGal->GetThemeCount(); i < nCount && !bDifferentThemeExists; i++ )
- {
- const GalleryThemeEntry* pInfo = pGal->GetThemeInfo( i );
-
- if( ( pInfo->GetId() == nId ) && ( pInfo->GetThemeName() != pThm->GetName() ) )
- {
- String aStr( CUI_RES( RID_SVXSTR_GALLERY_ID_EXISTS ) );
-
- aStr += String( RTL_CONSTASCII_USTRINGPARAM( " (" ) );
- aStr += pInfo->GetThemeName();
- aStr += ')';
-
- InfoBox aBox( this, aStr );
- aBox.Execute();
- aLbResName.GrabFocus();
- bDifferentThemeExists = sal_True;
- }
- }
-
- if( !bDifferentThemeExists )
- EndDialog( RET_OK );
-
- return 0L;
-}
-
-
-// --------------------------
-// - GalleryThemeProperties -
-// --------------------------
-
-GalleryThemeProperties::GalleryThemeProperties( Window* pParent, ExchangeData* _pData, SfxItemSet* pItemSet ) :
- SfxTabDialog ( pParent, CUI_RES( RID_SVXTABDLG_GALLERYTHEME ), pItemSet ),
- pData ( _pData )
-{
- FreeResource();
-
- AddTabPage( RID_SVXTABPAGE_GALLERY_GENERAL, TPGalleryThemeGeneral::Create, 0 );
- AddTabPage( RID_SVXTABPAGE_GALLERYTHEME_FILES, TPGalleryThemeProperties::Create, 0 );
-
- if( pData->pTheme->IsReadOnly() )
- RemoveTabPage( RID_SVXTABPAGE_GALLERYTHEME_FILES );
-
- String aText( GetText() );
-
- aText += pData->pTheme->GetName();
-
- if( pData->pTheme->IsReadOnly() )
- aText += String( CUI_RES( RID_SVXSTR_GALLERY_READONLY ) );
-
- SetText( aText );
-}
-
-// ------------------------------------------------------------------------
-
-void GalleryThemeProperties::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
-{
- if( RID_SVXTABPAGE_GALLERY_GENERAL == nId )
- ( (TPGalleryThemeGeneral&) rPage ).SetXChgData( pData );
- else
- ( (TPGalleryThemeProperties&) rPage ).SetXChgData( pData );
-}
-
-// -------------------------
-// - TPGalleryThemeGeneral -
-// -------------------------
-
-TPGalleryThemeGeneral::TPGalleryThemeGeneral( Window* pParent, const SfxItemSet& rSet ) :
- SfxTabPage ( pParent, CUI_RES( RID_SVXTABPAGE_GALLERY_GENERAL ), rSet ),
- aFiMSImage ( this, CUI_RES( FI_MS_IMAGE ) ),
- aEdtMSName ( this, CUI_RES( EDT_MS_NAME ) ),
- aFlMSGeneralFirst ( this, CUI_RES( FL_MS_GENERAL_FIRST ) ),
- aFtMSType ( this, CUI_RES( FT_MS_TYPE ) ),
- aFtMSShowType ( this, CUI_RES( FT_MS_SHOW_TYPE ) ),
- aFtMSPath ( this, CUI_RES( FT_MS_PATH ) ),
- aFtMSShowPath ( this, CUI_RES( FT_MS_SHOW_PATH ) ),
- aFtMSContent ( this, CUI_RES( FT_MS_CONTENT ) ),
- aFtMSShowContent ( this, CUI_RES( FT_MS_SHOW_CONTENT ) ),
- aFlMSGeneralSecond ( this, CUI_RES( FL_MS_GENERAL_SECOND ) ),
- aFtMSChangeDate ( this, CUI_RES( FT_MS_CHANGEDATE ) ),
- aFtMSShowChangeDate ( this, CUI_RES( FT_MS_SHOW_CHANGEDATE ) )
-{
- FreeResource();
-
- String aAccName(SVX_RES(RID_SVXSTR_GALLERY_THEMENAME));
- aEdtMSName.SetAccessibleName(aAccName);
- aFiMSImage.SetAccessibleName(aAccName);
- aEdtMSName.SetAccessibleRelationLabeledBy( &aFiMSImage );
-}
-
-// ------------------------------------------------------------------------
-
-void TPGalleryThemeGeneral::SetXChgData( ExchangeData* _pData )
-{
- pData = _pData;
-
- GalleryTheme* pThm = pData->pTheme;
- String aOutStr( String::CreateFromInt32( pThm->GetObjectCount() ) );
- String aObjStr( CUI_RES( RID_SVXSTR_GALLERYPROPS_OBJECT ) );
- String aAccess;
- String aType( SVX_RES( RID_SVXSTR_GALLERYPROPS_GALTHEME ) );
- sal_Bool bReadOnly = pThm->IsReadOnly() && !pThm->IsImported();
-
- aEdtMSName.SetHelpId( HID_GALLERY_EDIT_MSNAME );
- aEdtMSName.SetText( pThm->GetName() );
- aEdtMSName.SetReadOnly( bReadOnly );
-
- if( bReadOnly )
- aEdtMSName.Disable();
- else
- aEdtMSName.Enable();
-
- if( pThm->IsReadOnly() )
- aType += String( CUI_RES( RID_SVXSTR_GALLERY_READONLY ) );
-
- aFtMSShowType.SetText( aType );
- aFtMSShowPath.SetText( pThm->GetSdgURL().GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS ) );
-
- // Ein- oder Mehrzahl?
- if ( 1 == pThm->GetObjectCount() )
- aObjStr = aObjStr.GetToken( 0 );
- else
- aObjStr = aObjStr.GetToken( 1 );
-
- aOutStr += ' ';
- aOutStr += aObjStr;
-
- aFtMSShowContent.SetText( aOutStr );
-
- // get locale wrapper (singleton)
- const SvtSysLocale aSysLocale;
- const LocaleDataWrapper& aLocaleData = aSysLocale.GetLocaleData();
-
- // ChangeDate/Time
- aAccess = aLocaleData.getDate( pData->aThemeChangeDate );
- aAccess += String( RTL_CONSTASCII_USTRINGPARAM( ", " ) );
- aAccess += aLocaleData.getTime( pData->aThemeChangeTime );
- aFtMSShowChangeDate.SetText( aAccess );
-
- // Image setzen
- sal_uInt16 nId;
-
- if( pThm->IsImported() )
- nId = RID_SVXBMP_THEME_IMPORTED_BIG;
- else if( pThm->IsReadOnly() )
- nId = RID_SVXBMP_THEME_READONLY_BIG;
- else if( pThm->IsDefault() )
- nId = RID_SVXBMP_THEME_DEFAULT_BIG;
- else
- nId = RID_SVXBMP_THEME_NORMAL_BIG;
-
- aFiMSImage.SetImage( Image( Bitmap( CUI_RES( nId ) ), COL_LIGHTMAGENTA ) );
-}
-
-// ------------------------------------------------------------------------
-
-sal_Bool TPGalleryThemeGeneral::FillItemSet( SfxItemSet& /*rSet*/ )
-{
- pData->aEditedTitle = aEdtMSName.GetText();
- return sal_True;
-}
-
-// ------------------------------------------------------------------------
-
-SfxTabPage* TPGalleryThemeGeneral::Create( Window* pParent, const SfxItemSet& rSet )
-{
- return new TPGalleryThemeGeneral( pParent, rSet );
-}
-
-// ----------------------------
-// - TPGalleryThemeProperties -
-// ----------------------------
-
-TPGalleryThemeProperties::TPGalleryThemeProperties( Window* pWindow, const SfxItemSet& rSet ) :
- SfxTabPage ( pWindow, CUI_RES( RID_SVXTABPAGE_GALLERYTHEME_FILES ), rSet ),
- aFtFileType ( this, CUI_RES(FT_FILETYPE ) ),
- aCbbFileType ( this, CUI_RES(CBB_FILETYPE ) ),
- aLbxFound ( this, CUI_RES(LBX_FOUND ) ),
- aBtnSearch ( this, CUI_RES(BTN_SEARCH ) ),
- aBtnTake ( this, CUI_RES(BTN_TAKE ) ),
- aBtnTakeAll ( this, CUI_RES(BTN_TAKEALL ) ),
- aCbxPreview ( this, CUI_RES(CBX_PREVIEW ) ),
- aWndPreview ( this, CUI_RES( WND_BRSPRV ) ),
- nCurFilterPos (0),
- nFirstExtFilterPos (0),
- bEntriesFound (sal_False),
- bInputAllowed (sal_True),
- bSearchRecursive (sal_False),
- xDialogListener ( new ::svt::DialogClosedListener() )
-{
- FreeResource();
-
- xDialogListener->SetDialogClosedLink( LINK( this, TPGalleryThemeProperties, DialogClosedHdl ) );
- aLbxFound.SetAccessibleName(String(SVX_RES(RID_SVXSTR_GALLERY_FILESFOUND)));
- aWndPreview.SetAccessibleName(aCbxPreview.GetText());
- aLbxFound.SetAccessibleRelationLabeledBy(&aLbxFound);
-}
-
-// ------------------------------------------------------------------------
-
-void TPGalleryThemeProperties::SetXChgData( ExchangeData* _pData )
-{
- pData = _pData;
-
- aPreviewTimer.SetTimeoutHdl( LINK( this, TPGalleryThemeProperties, PreviewTimerHdl ) );
- aPreviewTimer.SetTimeout( 500 );
- aBtnSearch.SetClickHdl(LINK(this, TPGalleryThemeProperties, ClickSearchHdl));
- aBtnTake.SetClickHdl(LINK(this, TPGalleryThemeProperties, ClickTakeHdl));
- aBtnTakeAll.SetClickHdl(LINK(this, TPGalleryThemeProperties, ClickTakeAllHdl));
- aCbxPreview.SetClickHdl(LINK(this, TPGalleryThemeProperties, ClickPreviewHdl));
- aCbbFileType.SetSelectHdl(LINK(this, TPGalleryThemeProperties, SelectFileTypeHdl));
- aCbbFileType.EnableDDAutoWidth( sal_False );
- aLbxFound.SetDoubleClickHdl(LINK(this, TPGalleryThemeProperties, DClickFoundHdl));
- aLbxFound.SetSelectHdl(LINK(this, TPGalleryThemeProperties, SelectFoundHdl));
- aLbxFound.InsertEntry(String(CUI_RES(RID_SVXSTR_GALLERY_NOFILES)));
- aLbxFound.Show();
-
- FillFilterList();
-
- aBtnTake.Enable();
- aBtnTakeAll.Disable();
- aCbxPreview.Disable();
-}
-
-// ------------------------------------------------------------------------
-
-void TPGalleryThemeProperties::StartSearchFiles( const String& _rFolderURL, short _nDlgResult )
-{
- if ( RET_OK == _nDlgResult )
- {
- aURL = INetURLObject( _rFolderURL );
- bSearchRecursive = sal_True; // UI choice no longer possible, windows file picker allows no user controls
- SearchFiles();
- }
-
- nCurFilterPos = aCbbFileType.GetEntryPos( aCbbFileType.GetText() );
-}
-
-// ------------------------------------------------------------------------
-
-TPGalleryThemeProperties::~TPGalleryThemeProperties()
-{
- xMediaPlayer.clear();
- xDialogListener.clear();
-
- for ( size_t i = 0, n = aFoundList.size(); i < n; ++i )
- delete aFoundList[ i ];
-
- for ( size_t i = 0, n = aFilterEntryList.size(); i < n; ++i ) {
- delete aFilterEntryList[ i ];
- }
-}
-
-// ------------------------------------------------------------------------
-
-SfxTabPage* TPGalleryThemeProperties::Create( Window* pParent, const SfxItemSet& rSet )
-{
- return new TPGalleryThemeProperties( pParent, rSet );
-}
-
-// ------------------------------------------------------------------------
-
-::rtl::OUString TPGalleryThemeProperties::addExtension( const ::rtl::OUString& _rDisplayText, const ::rtl::OUString& _rExtension )
-{
- ::rtl::OUString sAllFilter( RTL_CONSTASCII_USTRINGPARAM( "(*.*)" ) );
- ::rtl::OUString sOpenBracket( RTL_CONSTASCII_USTRINGPARAM( " (" ) );
- ::rtl::OUString sCloseBracket( RTL_CONSTASCII_USTRINGPARAM( ")" ) );
- ::rtl::OUString sRet = _rDisplayText;
-
- if ( sRet.indexOf( sAllFilter ) == -1 )
- {
- String sExt = _rExtension;
- sRet += sOpenBracket;
- sRet += sExt;
- sRet += sCloseBracket;
- }
- return sRet;
-}
-
-// ------------------------------------------------------------------------
-
-void TPGalleryThemeProperties::FillFilterList()
-{
- GraphicFilter &rFilter = GraphicFilter::GetGraphicFilter();
- String aExt;
- String aName;
- FilterEntry* pFilterEntry;
- FilterEntry* pTestEntry;
- sal_uInt16 i, nKeyCount;
- sal_Bool bInList;
-
- // graphic filters
- for( i = 0, nKeyCount = rFilter.GetImportFormatCount(); i < nKeyCount; i++ )
- {
- aExt = rFilter.GetImportFormatShortName( i );
- aName = rFilter.GetImportFormatName( i );
- size_t entryIndex = 0;
- pTestEntry = aFilterEntryList.empty() ? NULL : aFilterEntryList[ entryIndex ];
- bInList = sal_False;
-
- String aExtensions;
- int j = 0;
- String sWildcard;
- while( sal_True )
- {
- sWildcard = rFilter.GetImportWildcard( i, j++ );
- if ( !sWildcard.Len() )
- break;
- if ( aExtensions.Search( sWildcard ) == STRING_NOTFOUND )
- {
- if ( aExtensions.Len() )
- aExtensions += sal_Unicode(';');
- aExtensions += sWildcard;
- }
- }
- aName = addExtension( aName, aExtensions );
-
- while( pTestEntry )
- {
- if ( pTestEntry->aFilterName == aExt )
- {
- bInList = sal_True;
- break;
- }
- pTestEntry = ( ++entryIndex < aFilterEntryList.size() )
- ? aFilterEntryList[ entryIndex ] : NULL;
- }
- if ( !bInList )
- {
- pFilterEntry = new FilterEntry;
- pFilterEntry->aFilterName = aExt;
- size_t pos = aCbbFileType.InsertEntry( aName );
- if ( pos < aFilterEntryList.size() ) {
- aFilterEntryList.insert( aFilterEntryList.begin() + pos, pFilterEntry );
- } else {
- aFilterEntryList.push_back( pFilterEntry );
- }
- }
- }
-
- // media filters
- static const ::rtl::OUString aWildcard( RTL_CONSTASCII_USTRINGPARAM( "*." ) );
- ::avmedia::FilterNameVector aFilters;
- const ::rtl::OUString aSeparator( RTL_CONSTASCII_USTRINGPARAM( ";" ) );
- ::rtl::OUString aAllTypes;
-
- ::avmedia::MediaWindow::getMediaFilters( aFilters );
-
- for( unsigned long l = 0; l < aFilters.size(); ++l )
- {
- for( sal_Int32 nIndex = 0; nIndex >= 0; )
- {
- ::rtl::OUString aFilterWildcard( aWildcard );
-
- pFilterEntry = new FilterEntry;
- pFilterEntry->aFilterName = aFilters[ l ].second.getToken( 0, ';', nIndex );
- nFirstExtFilterPos = aCbbFileType.InsertEntry(
- addExtension(
- aFilters[ l ].first,
- aFilterWildcard += pFilterEntry->aFilterName
- )
- );
- if ( nFirstExtFilterPos < aFilterEntryList.size() ) {
- aFilterEntryList.insert(
- aFilterEntryList.begin() + nFirstExtFilterPos,
- pFilterEntry
- );
- } else {
- aFilterEntryList.push_back( pFilterEntry );
- }
- }
- }
-
- // 'All' filters
- String aExtensions;
-
- // graphic filters
- for ( i = 0; i < nKeyCount; ++i )
- {
- int j = 0;
- String sWildcard;
- while( sal_True )
- {
- sWildcard = rFilter.GetImportWildcard( i, j++ );
- if ( !sWildcard.Len() )
- break;
- if ( aExtensions.Search( sWildcard ) == STRING_NOTFOUND )
- {
- if ( aExtensions.Len() )
- aExtensions += sal_Unicode( ';' );
-
- aExtensions += sWildcard;
- }
- }
- }
-
- // media filters
- for( unsigned long k = 0; k < aFilters.size(); ++k )
- {
- for( sal_Int32 nIndex = 0; nIndex >= 0; )
- {
- if ( aExtensions.Len() )
- aExtensions += sal_Unicode( ';' );
- ( aExtensions += String( aWildcard ) ) += String( aFilters[ k ].second.getToken( 0, ';', nIndex ) );
- }
- }
-
-#if defined(WNT)
- if ( aExtensions.Len() > 240 )
- aExtensions = DEFINE_CONST_UNICODE( "*.*" );
-#endif
-
- pFilterEntry = new FilterEntry;
- pFilterEntry->aFilterName = String( CUI_RES( RID_SVXSTR_GALLERY_ALLFILES ) );
- pFilterEntry->aFilterName = addExtension( pFilterEntry->aFilterName, aExtensions );
- size_t pos = aCbbFileType.InsertEntry( pFilterEntry->aFilterName, 0 );
- if ( pos < aFilterEntryList.size() ) {
- aFilterEntryList.insert( aFilterEntryList.begin() + pos, pFilterEntry );
- } else {
- aFilterEntryList.push_back( pFilterEntry );
- }
- aCbbFileType.SetText( pFilterEntry->aFilterName );
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, SelectFileTypeHdl, void *, EMPTYARG )
-{
- String aText( aCbbFileType.GetText() );
-
- if( bInputAllowed && ( aLastFilterName != aText ) )
- {
- aLastFilterName = aText;
-
- if( QueryBox( this, WB_YES_NO, String( CUI_RES( RID_SVXSTR_GALLERY_SEARCH ) ) ).Execute() == RET_YES )
- SearchFiles();
- }
-
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-void TPGalleryThemeProperties::SearchFiles()
-{
- SearchProgress* pProgress = new SearchProgress( this, aURL );
-
- for ( size_t i = 0, n = aFoundList.size(); i < n; ++i )
- delete aFoundList[ i ];
- aFoundList.clear();
-
- aLbxFound.Clear();
-
- pProgress->SetFileType( aCbbFileType.GetText() );
- pProgress->SetDirectory( rtl::OUString() );
- pProgress->Update();
-
- pProgress->StartExecuteModal( LINK( this, TPGalleryThemeProperties, EndSearchProgressHdl ) );
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, ClickCloseBrowserHdl, void *, EMPTYARG )
-{
- if( bInputAllowed )
- aPreviewTimer.Stop();
-
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, ClickSearchHdl, void *, EMPTYARG )
-{
- if( bInputAllowed )
- {
- try
- {
- // setup folder picker
- ::com::sun::star::uno::Reference< XMultiServiceFactory > xMgr( ::comphelper::getProcessServiceFactory() );
- if( xMgr.is() )
- {
- xFolderPicker = ::com::sun::star::uno::Reference< XFolderPicker >(
- xMgr->createInstance( OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FolderPicker" ))), UNO_QUERY );
-
- if ( xFolderPicker.is() )
- {
- String aDlgPathName( SvtPathOptions().GetGraphicPath() );
- xFolderPicker->setDisplayDirectory(aDlgPathName);
-
- aPreviewTimer.Stop();
-
- ::com::sun::star::uno::Reference< XAsynchronousExecutableDialog > xAsyncDlg( xFolderPicker, UNO_QUERY );
- if ( xAsyncDlg.is() )
- xAsyncDlg->startExecuteModal( xDialogListener.get() );
- else
- {
- if( xFolderPicker->execute() == RET_OK )
- {
- aURL = INetURLObject( xFolderPicker->getDirectory() );
- bSearchRecursive = sal_True; // UI choice no longer possible, windows file picker allows no user controls
- SearchFiles();
- }
-
- nCurFilterPos = aCbbFileType.GetEntryPos( aCbbFileType.GetText() );
- }
- }
- }
- }
- catch (const IllegalArgumentException&)
- {
- OSL_FAIL( "Folder picker failed with illegal arguments" );
- }
- }
-
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-void TPGalleryThemeProperties::TakeFiles()
-{
- if( aLbxFound.GetSelectEntryCount() || ( bTakeAll && bEntriesFound ) )
- {
- TakeProgress* pTakeProgress = new TakeProgress( this );
- pTakeProgress->Update();
-
- pTakeProgress->StartExecuteModal(
- Link() /* no postprocessing needed, pTakeProgress
- will be deleted in TakeProgress::CleanupHdl */ );
- }
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, ClickPreviewHdl, void *, EMPTYARG )
-{
- if ( bInputAllowed )
- {
- aPreviewTimer.Stop();
- aPreviewString.Erase();
-
- if( !aCbxPreview.IsChecked() )
- {
- xMediaPlayer.clear();
- aWndPreview.SetGraphic( Graphic() );
- aWndPreview.Invalidate();
- }
- else
- DoPreview();
- }
-
- return 0;
-}
-
-// ------------------------------------------------------------------------
-
-void TPGalleryThemeProperties::DoPreview()
-{
- String aString( aLbxFound.GetSelectEntry() );
-
- if( aString != aPreviewString )
- {
- INetURLObject _aURL( *aFoundList[ aLbxFound.GetEntryPos( aString ) ] );
- bInputAllowed = sal_False;
-
- if ( !aWndPreview.SetGraphic( _aURL ) )
- {
- GetParent()->LeaveWait();
- ErrorHandler::HandleError( ERRCODE_IO_NOTEXISTSPATH );
- GetParent()->EnterWait();
- }
- else if( ::avmedia::MediaWindow::isMediaURL( _aURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS ) ) )
- {
- xMediaPlayer = ::avmedia::MediaWindow::createPlayer( _aURL.GetMainURL( INetURLObject::NO_DECODE ) );
- if( xMediaPlayer.is() )
- xMediaPlayer->start();
- }
-
- bInputAllowed = sal_True;
- aPreviewString = aString;
- }
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, ClickTakeHdl, void*, EMPTYARG )
-{
- if( bInputAllowed )
- {
- aPreviewTimer.Stop();
-
- if( !aLbxFound.GetSelectEntryCount() || !bEntriesFound )
- {
- SvxOpenGraphicDialog aDlg(String( RTL_CONSTASCII_USTRINGPARAM( "Gallery" ) ) );
- aDlg.EnableLink(sal_False);
- aDlg.AsLink(sal_False);
-
- if( !aDlg.Execute() )
- pData->pTheme->InsertURL( INetURLObject( aDlg.GetPath() ) );
- }
- else
- {
- bTakeAll = sal_False;
- TakeFiles();
- }
- }
-
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, ClickTakeAllHdl, void *, EMPTYARG )
-{
- if( bInputAllowed )
- {
- aPreviewTimer.Stop();
- bTakeAll = sal_True;
- TakeFiles();
- }
-
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, SelectFoundHdl, void *, EMPTYARG )
-{
- if( bInputAllowed )
- {
- sal_Bool bPreviewPossible = sal_False;
-
- aPreviewTimer.Stop();
-
- if( bEntriesFound )
- {
- if( aLbxFound.GetSelectEntryCount() == 1 )
- {
- aCbxPreview.Enable();
- bPreviewPossible = sal_True;
- }
- else
- aCbxPreview.Disable();
-
- if( aFoundList.size() )
- aBtnTakeAll.Enable();
- else
- aBtnTakeAll.Disable();
- }
-
- if( bPreviewPossible && aCbxPreview.IsChecked() )
- aPreviewTimer.Start();
- }
-
- return 0;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, DClickFoundHdl, void *, EMPTYARG )
-{
- if( bInputAllowed )
- {
- aPreviewTimer.Stop();
-
- return (aLbxFound.GetSelectEntryCount() == 1 && bEntriesFound) ?
- ClickTakeHdl(NULL) : 0;
- }
- else
- return 0;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, PreviewTimerHdl, void *, EMPTYARG )
-{
- aPreviewTimer.Stop();
- DoPreview();
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, EndSearchProgressHdl, SearchProgress *, EMPTYARG )
-{
- if( aFoundList.size() )
- {
- aLbxFound.SelectEntryPos( 0 );
- aBtnTakeAll.Enable();
- aCbxPreview.Enable();
- bEntriesFound = sal_True;
- }
- else
- {
- aLbxFound.InsertEntry( String( CUI_RES( RID_SVXSTR_GALLERY_NOFILES ) ) );
- aBtnTakeAll.Disable();
- aCbxPreview.Disable();
- bEntriesFound = sal_False;
- }
- return 0L;
-}
-
-// ------------------------------------------------------------------------
-
-IMPL_LINK( TPGalleryThemeProperties, DialogClosedHdl, ::com::sun::star::ui::dialogs::DialogClosedEvent*, pEvt )
-{
- DBG_ASSERT( xFolderPicker.is() == sal_True, "TPGalleryThemeProperties::DialogClosedHdl(): no folder picker" );
-
- String sURL = String( xFolderPicker->getDirectory() );
- StartSearchFiles( sURL, pEvt->DialogResult );
-
- return 0L;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */