2008/03/05 21:03:47 fs 1.1.2.9: ongoing work - merge all the changes which so far happened on the intermediate branch 'odbmacros_2_5' 2008/02/27 14:41:47 fs 1.1.2.8.2.3: 'Update' after progress changes, and take the final summary from outside 2008/02/14 22:25:00 fs 1.1.2.8.2.2: #i49133# ingegrate the migration engine (though not yet finished) into the wizard 2008/02/14 12:16:43 fs 1.1.2.8.2.1: '#' 2008/02/11 11:18:26 fs 1.1.2.8: #i49133# proper travel handling on the second page 2008/02/04 22:39:08 fs 1.1.2.7: #i10000# 2008/01/30 13:50:48 fs 1.1.2.6: #i49133# working on Step 2 of the migration: use an URL Box for inputting the backup location 2008/01/28 11:36:27 fs 1.1.2.5: #i49133# implement closing the sub docs, using a new method at the XDatabaseDocumentUI 2008/01/24 10:12:40 fs 1.1.2.4: prototype changes as defined in the iTeam / support for initializing the dialog with a database document 2008/01/21 11:25:40 fs 1.1.2.3: #i10000# precompiled headers 2008/01/21 10:16:21 fs 1.1.2.2: some more prototype details 2008/01/16 15:53:36 fs 1.1.2.1: initial checkin. The whole dialog is a prototype by now
334 lines
13 KiB
C++
334 lines
13 KiB
C++
/*************************************************************************
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* $RCSfile: macromigrationpages.cxx,v $
|
|
*
|
|
* $Revision: 1.2 $
|
|
*
|
|
* last change: $Author: kz $ $Date: 2008-03-06 18:04:03 $
|
|
*
|
|
* The Contents of this file are made available subject to
|
|
* the terms of GNU Lesser General Public License Version 2.1.
|
|
*
|
|
*
|
|
* GNU Lesser General Public License Version 2.1
|
|
* =============================================
|
|
* Copyright 2005 by Sun Microsystems, Inc.
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License version 2.1, as published by the Free Software Foundation.
|
|
*
|
|
* This library 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 for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
* MA 02111-1307 USA
|
|
*
|
|
************************************************************************/
|
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
#include "precompiled_dbaccess.hxx"
|
|
|
|
#include "dbmm_module.hxx"
|
|
#include "dbmm_global.hrc"
|
|
#include "macromigration.hrc"
|
|
#include "macromigrationpages.hxx"
|
|
#include "macromigrationdialog.hxx"
|
|
|
|
/** === begin UNO includes === **/
|
|
#include <com/sun/star/frame/XModel.hpp>
|
|
/** === end UNO includes === **/
|
|
|
|
#include <tools/urlobj.hxx>
|
|
#include <tools/diagnose_ex.h>
|
|
|
|
//........................................................................
|
|
namespace dbmm
|
|
{
|
|
//........................................................................
|
|
|
|
/** === begin UNO using === **/
|
|
using ::com::sun::star::uno::Reference;
|
|
using ::com::sun::star::uno::XInterface;
|
|
using ::com::sun::star::uno::UNO_QUERY;
|
|
using ::com::sun::star::uno::UNO_QUERY_THROW;
|
|
using ::com::sun::star::uno::UNO_SET_THROW;
|
|
using ::com::sun::star::uno::Exception;
|
|
using ::com::sun::star::uno::RuntimeException;
|
|
using ::com::sun::star::uno::Any;
|
|
using ::com::sun::star::uno::makeAny;
|
|
using ::com::sun::star::uno::Sequence;
|
|
using ::com::sun::star::frame::XModel;
|
|
/** === end UNO using === **/
|
|
|
|
//====================================================================
|
|
//= MacroMigrationPage
|
|
//====================================================================
|
|
//--------------------------------------------------------------------
|
|
MacroMigrationPage::MacroMigrationPage( MacroMigrationDialog& _rParentDialog, const ResId& _rRes )
|
|
:MacroMigrationPage_Base( &_rParentDialog, _rRes )
|
|
,m_aHeader( this, MacroMigrationResId( FT_HEADER ) )
|
|
{
|
|
Font aFont( m_aHeader.GetFont() );
|
|
aFont.SetWeight( WEIGHT_BOLD );
|
|
m_aHeader.SetFont( aFont );
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
MacroMigrationPage::~MacroMigrationPage()
|
|
{
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
const MacroMigrationDialog& MacroMigrationPage::getDialog() const
|
|
{
|
|
return *dynamic_cast< const MacroMigrationDialog* >( GetParent() );
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
MacroMigrationDialog& MacroMigrationPage::getDialog()
|
|
{
|
|
return *dynamic_cast< MacroMigrationDialog* >( GetParent() );
|
|
}
|
|
|
|
//====================================================================
|
|
//= PreparationPage
|
|
//====================================================================
|
|
//--------------------------------------------------------------------
|
|
PreparationPage::PreparationPage( MacroMigrationDialog& _rParentDialog )
|
|
:MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_PREPARE ) )
|
|
,m_aIntroduction ( this, MacroMigrationResId( FT_INTRODUCTION ) )
|
|
,m_aCloseDocError( this, MacroMigrationResId( FT_CLOSE_DOC_ERROR ) )
|
|
{
|
|
FreeResource();
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void PreparationPage::showCloseDocsError( bool _bShow )
|
|
{
|
|
m_aCloseDocError.Show( _bShow );
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
TabPage* PreparationPage::Create( ::svt::RoadmapWizard& _rParentDialog )
|
|
{
|
|
return new PreparationPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) );
|
|
}
|
|
|
|
//====================================================================
|
|
//= SaveDBDocPage
|
|
//====================================================================
|
|
//--------------------------------------------------------------------
|
|
SaveDBDocPage::SaveDBDocPage( MacroMigrationDialog& _rParentDialog )
|
|
:MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_SAVE_DBDOC_AS ) )
|
|
,m_aExplanation ( this, MacroMigrationResId( FT_EXPLANATION ) )
|
|
,m_aSaveAsLabel ( this, MacroMigrationResId( FT_SAVE_AS_LABEL ) )
|
|
,m_aSaveAsLocation ( this, MacroMigrationResId( ED_SAVE_AS_LOCATION ) )
|
|
,m_aBrowseSaveAsLocation( this, MacroMigrationResId( PB_BROWSE_SAVE_AS_LOCATION ) )
|
|
,m_aStartMigration ( this, MacroMigrationResId( FT_START_MIGRATION ) )
|
|
,m_aLocationController( _rParentDialog.getComponentContext(), m_aSaveAsLocation, m_aBrowseSaveAsLocation )
|
|
{
|
|
FreeResource();
|
|
|
|
m_aSaveAsLocation.SetModifyHdl( LINK( this, SaveDBDocPage, OnLocationModified ) );
|
|
m_aSaveAsLocation.SetDropDownLineCount( 20 );
|
|
|
|
impl_updateLocationDependentItems();
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void SaveDBDocPage::impl_updateLocationDependentItems()
|
|
{
|
|
updateDialogTravelUI();
|
|
m_aStartMigration.Show( m_aSaveAsLocation.GetText().Len() > 0 );
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
IMPL_LINK( SaveDBDocPage, OnLocationModified, Edit*, /**/ )
|
|
{
|
|
impl_updateLocationDependentItems();
|
|
return 0L;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void SaveDBDocPage::initializePage()
|
|
{
|
|
OWizardPage::initializePage();
|
|
|
|
try
|
|
{
|
|
// get the document's current URL
|
|
Reference< XModel > xDocument( getDialog().getDocument(), UNO_QUERY_THROW );
|
|
INetURLObject aURLParser( xDocument->getURL() );
|
|
OSL_ENSURE( aURLParser.GetProtocol() != INET_PROT_NOT_VALID, "SaveDBDocPage::initializePage: illegal document URL!" );
|
|
|
|
::rtl::OUStringBuffer aBaseName( aURLParser.getBase() );
|
|
aBaseName.appendAscii( ".backup" );
|
|
aURLParser.setBase( aBaseName.makeStringAndClear() );
|
|
|
|
m_aLocationController.setURL( aURLParser.GetMainURL( INetURLObject::NO_DECODE ) );
|
|
impl_updateLocationDependentItems();
|
|
}
|
|
catch( const Exception& )
|
|
{
|
|
DBG_UNHANDLED_EXCEPTION();
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
bool SaveDBDocPage::canAdvance() const
|
|
{
|
|
if ( !MacroMigrationPage::canAdvance() )
|
|
return false;
|
|
|
|
return m_aSaveAsLocation.GetText().Len() > 0;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
sal_Bool SaveDBDocPage::commitPage( CommitPageReason _eReason )
|
|
{
|
|
if ( !MacroMigrationPage::commitPage( _eReason ) )
|
|
return sal_False;
|
|
|
|
if ( eTravelBackward == _eReason )
|
|
return sal_True;
|
|
|
|
if ( !m_aLocationController.prepareCommit() )
|
|
return sal_False;
|
|
|
|
return sal_True;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
TabPage* SaveDBDocPage::Create( ::svt::RoadmapWizard& _rParentDialog )
|
|
{
|
|
return new SaveDBDocPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) );
|
|
}
|
|
|
|
//====================================================================
|
|
//= ProgressPage
|
|
//====================================================================
|
|
//--------------------------------------------------------------------
|
|
ProgressPage::ProgressPage( MacroMigrationDialog& _rParentDialog )
|
|
:MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_MIGRATE ) )
|
|
,m_aObjectCount ( this, MacroMigrationResId( FT_OBJECT_COUNT ) )
|
|
,m_aCurrentObjectLabel ( this, MacroMigrationResId( FT_CURRENT_OBJECT_LABEL ) )
|
|
,m_aCurrentObject ( this, MacroMigrationResId( FT_CURRENT_OBJECT ) )
|
|
,m_aCurrentActionLabel ( this, MacroMigrationResId( FT_CURRENT_PROGRESS_LABEL ) )
|
|
,m_aCurrentAction ( this, MacroMigrationResId( FT_CURRENT_PROGRESS ) )
|
|
,m_aCurrentProgress ( this, MacroMigrationResId( WND_CURRENT_PROGRESS ) )
|
|
,m_aAllProgressLabel ( this, MacroMigrationResId( FT_ALL_PROGRESS_LABEL ) )
|
|
,m_aAllProgressText ( this, MacroMigrationResId( FT_OBJECT_COUNT_PROGRESS ) )
|
|
,m_aAllProgress ( this, MacroMigrationResId( WND_ALL_PROGRESS ) )
|
|
,m_aMigrationDone ( this, MacroMigrationResId( FT_MIGRATION_DONE ) )
|
|
{
|
|
FreeResource();
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
TabPage* ProgressPage::Create( ::svt::RoadmapWizard& _rParentDialog )
|
|
{
|
|
return new ProgressPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) );
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void ProgressPage::setDocumentCounts( const sal_Int32 _nForms, const sal_Int32 _nReports )
|
|
{
|
|
String sText( m_aObjectCount.GetText() );
|
|
sText.SearchAndReplaceAscii( "$forms$", String::CreateFromInt32( _nForms ) );
|
|
sText.SearchAndReplaceAscii( "$reports$", String::CreateFromInt32( _nReports ) );
|
|
m_aObjectCount.SetText( sText );
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void ProgressPage::startObject( const ::rtl::OUString& _rObjectName, const ::rtl::OUString& _rCurrentAction, const sal_uInt32 _nRange )
|
|
{
|
|
m_aCurrentObject.SetText( _rObjectName );
|
|
m_aCurrentAction.SetText( _rCurrentAction );
|
|
m_aCurrentProgress.SetRange( _nRange );
|
|
m_aCurrentProgress.SetValue( (sal_uInt32)0 );
|
|
|
|
// since this is currently called from the main thread, which does not have the chance
|
|
// to re-schedule, we need to explicitly update the display
|
|
Update();
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void ProgressPage::setObjectProgressText( const ::rtl::OUString& _rText )
|
|
{
|
|
m_aCurrentAction.SetText( _rText );
|
|
Update();
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void ProgressPage::setObjectProgressValue( const sal_uInt32 _nValue )
|
|
{
|
|
m_aCurrentProgress.SetValue( _nValue );
|
|
Update();
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void ProgressPage::endObject()
|
|
{
|
|
m_aCurrentObject.SetText( String() );
|
|
m_aCurrentAction.SetText( String() );
|
|
m_aCurrentProgress.SetValue( (sal_uInt32)0 );
|
|
Update();
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void ProgressPage::start( const sal_uInt32 _nOverallRange )
|
|
{
|
|
m_aAllProgress.SetRange( _nOverallRange );
|
|
Update();
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void ProgressPage::setOverallProgressText( const ::rtl::OUString& _rText )
|
|
{
|
|
m_aAllProgressText.SetText( _rText );
|
|
Update();
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void ProgressPage::setOverallProgressValue( const sal_uInt32 _nValue )
|
|
{
|
|
m_aAllProgress.SetValue( _nValue );
|
|
Update();
|
|
}
|
|
|
|
//====================================================================
|
|
//= ResultPage
|
|
//====================================================================
|
|
//--------------------------------------------------------------------
|
|
ResultPage::ResultPage( MacroMigrationDialog& _rParentDialog )
|
|
:MacroMigrationPage( _rParentDialog, MacroMigrationResId( TP_SUMMARY ) )
|
|
,m_aChangesLabel( this, MacroMigrationResId( FT_CHANGES_LABEL ) )
|
|
,m_aChanges ( this, MacroMigrationResId( ED_CHANGES ) )
|
|
{
|
|
FreeResource();
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
TabPage* ResultPage::Create( ::svt::RoadmapWizard& _rParentDialog )
|
|
{
|
|
return new ResultPage( dynamic_cast< MacroMigrationDialog& >( _rParentDialog ) );
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
void ResultPage::displaySummary( const String& _rSummary )
|
|
{
|
|
m_aChanges.SetText( _rSummary );
|
|
}
|
|
|
|
//........................................................................
|
|
} // namespace dbmm
|
|
//........................................................................
|