diff options
Diffstat (limited to 'desktop/source/migration/pages.cxx')
-rw-r--r-- | desktop/source/migration/pages.cxx | 671 |
1 files changed, 0 insertions, 671 deletions
diff --git a/desktop/source/migration/pages.cxx b/desktop/source/migration/pages.cxx deleted file mode 100644 index fb86474c8578..000000000000 --- a/desktop/source/migration/pages.cxx +++ /dev/null @@ -1,671 +0,0 @@ -/************************************************************************* - * - * 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_desktop.hxx" - -#include "pages.hxx" -#include "wizard.hrc" -#include "wizard.hxx" -#include "migration.hxx" -#include <vcl/msgbox.hxx> -#include <vcl/mnemonic.hxx> -#include <vos/security.hxx> -#include <app.hxx> -#include <rtl/ustring.hxx> -#include <osl/file.hxx> -#include <unotools/bootstrap.hxx> -#include <unotools/configmgr.hxx> -#include <unotools/regoptions.hxx> -#include <unotools/useroptions.hxx> -#include <sfx2/basedlgs.hxx> -#include <comphelper/processfactory.hxx> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/lang/XInitialization.hpp> -#include <com/sun/star/frame/XDesktop.hpp> -#include <com/sun/star/beans/XMaterialHolder.hpp> -#include <com/sun/star/beans/NamedValue.hpp> -#include <com/sun/star/container/XNameReplace.hpp> -#include <com/sun/star/task/XJobExecutor.hpp> -#include <comphelper/configurationhelper.hxx> -#include <rtl/bootstrap.hxx> -#include <rtl/ustrbuf.hxx> -#include <osl/file.hxx> -#include <osl/thread.hxx> -#include <unotools/bootstrap.hxx> -#include <tools/config.hxx> - -using namespace rtl; -using namespace osl; -using namespace utl; -using namespace svt; -using namespace com::sun::star; -using namespace com::sun::star::frame; -using namespace com::sun::star::lang; -using namespace com::sun::star::util; -using namespace com::sun::star::beans; -using namespace com::sun::star::uno; -using namespace com::sun::star::container; - -#define UNISTRING(s) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)) - -namespace desktop { - -static void _setBold(FixedText& ft) -{ - Font f = ft.GetControlFont(); - f.SetWeight(WEIGHT_BOLD); - ft.SetControlFont(f); -} - -WelcomePage::WelcomePage( svt::OWizardMachine* parent, const ResId& resid, sal_Bool bLicenseNeedsAcceptance ) - : OWizardPage(parent, resid) - , m_ftHead(this, WizardResId(FT_WELCOME_HEADER)) - , m_ftBody(this, WizardResId(FT_WELCOME_BODY)) - , m_pParent(parent) - , m_bLicenseNeedsAcceptance( bLicenseNeedsAcceptance ) - , bIsEvalVersion(false) - , bNoEvalText(false) -{ - FreeResource(); - - _setBold(m_ftHead); - - checkEval(); - - // check for migration - if (Migration::checkMigration()) - { - String aText(WizardResId(STR_WELCOME_MIGRATION)); - // replace %OLDPRODUCT with found version name - aText.SearchAndReplaceAll( UniString::CreateFromAscii("%OLD_VERSION"), Migration::getOldVersionName()); - m_ftBody.SetText( aText ); - } - else if ( ! m_bLicenseNeedsAcceptance ) - { - String aText(WizardResId(STR_WELCOME_WITHOUT_LICENSE)); - m_ftBody.SetText( aText ); - } -} - - -void WelcomePage::checkEval() -{ - Reference< XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory(); - Reference< XMaterialHolder > xHolder(xFactory->createInstance( - OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.tab.tabreg"))), UNO_QUERY); - if (xHolder.is()) { - Any aData = xHolder->getMaterial(); - Sequence < NamedValue > aSeq; - if (aData >>= aSeq) { - bIsEvalVersion = true; - for (int i=0; i< aSeq.getLength(); i++) { - if (aSeq[i].Name.equalsAscii("NoEvalText")) { - aSeq[i].Value >>= bNoEvalText; - } - } - } - } -} - - -void WelcomePage::ActivatePage() -{ - OWizardPage::ActivatePage(); - // this page has no controls, so forwarding to default - // button (next) won't work if we grap focus - // GrabFocus(); -} - -LicensePage::LicensePage( svt::OWizardMachine* parent, const ResId& resid, const rtl::OUString &rLicensePath ) - : OWizardPage(parent, resid) - , m_pParent(parent) - , m_ftHead(this, WizardResId(FT_LICENSE_HEADER)) - , m_ftBody1(this, WizardResId(FT_LICENSE_BODY_1)) - , m_ftBody1Txt(this, WizardResId(FT_LICENSE_BODY_1_TXT)) - , m_ftBody2(this, WizardResId(FT_LICENSE_BODY_2)) - , m_ftBody2Txt(this, WizardResId(FT_LICENSE_BODY_2_TXT)) - , m_mlLicense(this, WizardResId(ML_LICENSE)) - , m_pbDown(this, WizardResId(PB_LICENSE_DOWN)) - , m_bLicenseRead(sal_False) -{ - FreeResource(); - - _setBold(m_ftHead); - - m_mlLicense.SetEndReachedHdl( LINK(this, LicensePage, EndReachedHdl) ); - m_mlLicense.SetScrolledHdl( LINK(this, LicensePage, ScrolledHdl) ); - m_pbDown.SetClickHdl( LINK(this, LicensePage, PageDownHdl) ); - - // We want a automatic repeating page down button - WinBits aStyle = m_pbDown.GetStyle(); - aStyle |= WB_REPEAT; - m_pbDown.SetStyle( aStyle ); - - // replace %PAGEDOWN in text2 with button text - String aText = m_ftBody1Txt.GetText(); - aText.SearchAndReplaceAll( UniString::CreateFromAscii("%PAGEDOWN"), - MnemonicGenerator::EraseAllMnemonicChars(m_pbDown.GetText())); - - m_ftBody1Txt.SetText( aText ); - - // load license text - File aLicenseFile(rLicensePath); - if ( aLicenseFile.open(OpenFlag_Read) == FileBase::E_None) - { - DirectoryItem d; - DirectoryItem::get(rLicensePath, d); - FileStatus fs(osl_FileStatus_Mask_FileSize); - d.getFileStatus(fs); - sal_uInt64 nBytesRead = 0; - sal_uInt64 nPosition = 0; - sal_uInt32 nBytes = (sal_uInt32)fs.getFileSize(); - sal_Char *pBuffer = new sal_Char[nBytes]; - // FileBase RC r = FileBase::E_None; - while (aLicenseFile.read(pBuffer+nPosition, nBytes-nPosition, nBytesRead) == FileBase::E_None - && nPosition + nBytesRead < nBytes) - { - nPosition += nBytesRead; - } - OUString aLicenseString(pBuffer, nBytes, RTL_TEXTENCODING_UTF8, - OSTRING_TO_OUSTRING_CVTFLAGS | RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE); - delete[] pBuffer; - m_mlLicense.SetText(aLicenseString); - - } -} - -void LicensePage::ActivatePage() -{ - OWizardPage::ActivatePage(); - m_bLicenseRead = m_mlLicense.IsEndReached(); - m_pbDown.GrabFocus(); - updateDialogTravelUI(); -} - -bool LicensePage::canAdvance() const -{ - if (m_mlLicense.IsEndReached()) - const_cast< LicensePage* >( this )->m_pbDown.Disable(); - else - const_cast< LicensePage* >( this )->m_pbDown.Enable(); - - return m_bLicenseRead; -} - -IMPL_LINK( LicensePage, PageDownHdl, PushButton *, EMPTYARG ) -{ - m_mlLicense.ScrollDown( SCROLL_PAGEDOWN ); - return 0; -} - -IMPL_LINK( LicensePage, EndReachedHdl, LicenseView *, EMPTYARG ) -{ - m_bLicenseRead = sal_True; - updateDialogTravelUI(); - return 0; -} - -IMPL_LINK( LicensePage, ScrolledHdl, LicenseView *, EMPTYARG ) -{ - updateDialogTravelUI(); - return 0; -} - - -LicenseView::LicenseView( Window* pParent, const ResId& rResId ) - : MultiLineEdit( pParent, rResId ) -{ - SetLeftMargin( 5 ); - mbEndReached = IsEndReached(); - StartListening( *GetTextEngine() ); -} - -LicenseView::~LicenseView() -{ - maEndReachedHdl = Link(); - maScrolledHdl = Link(); - EndListeningAll(); -} - -void LicenseView::ScrollDown( ScrollType eScroll ) -{ - ScrollBar* pScroll = GetVScrollBar(); - if ( pScroll ) - pScroll->DoScrollAction( eScroll ); -} - -sal_Bool LicenseView::IsEndReached() const -{ - sal_Bool bEndReached; - - ExtTextView* pView = GetTextView(); - ExtTextEngine* pEdit = GetTextEngine(); - sal_uLong nHeight = pEdit->GetTextHeight(); - Size aOutSize = pView->GetWindow()->GetOutputSizePixel(); - Point aBottom( 0, aOutSize.Height() ); - - if ( (sal_uLong) pView->GetDocPos( aBottom ).Y() >= nHeight - 1 ) - bEndReached = sal_True; - else - bEndReached = sal_False; - - return bEndReached; -} - -void LicenseView::Notify( SfxBroadcaster&, const SfxHint& rHint ) -{ - if ( rHint.IsA( TYPE(TextHint) ) ) - { - sal_Bool bLastVal = EndReached(); - sal_uLong nId = ((const TextHint&)rHint).GetId(); - - if ( nId == TEXT_HINT_PARAINSERTED ) - { - if ( bLastVal ) - mbEndReached = IsEndReached(); - } - else if ( nId == TEXT_HINT_VIEWSCROLLED ) - { - if ( ! mbEndReached ) - mbEndReached = IsEndReached(); - maScrolledHdl.Call( this ); - } - - if ( EndReached() && !bLastVal ) - { - maEndReachedHdl.Call( this ); - } - } -} - - - -// ------------------------------------------------------------------- - -class MigrationThread : public ::osl::Thread -{ - public: - MigrationThread(); - - virtual void SAL_CALL run(); - virtual void SAL_CALL onTerminated(); -}; - -MigrationThread::MigrationThread() -{ -} - -void MigrationThread::run() -{ - try - { - Migration::doMigration(); - } - catch ( uno::Exception& ) - { - } -} - -void MigrationThread::onTerminated() -{ -} - -// ------------------------------------------------------------------- - -MigrationPage::MigrationPage( - svt::OWizardMachine* parent, - const ResId& resid, Throbber& i_throbber ) - : OWizardPage(parent, resid) - , m_ftHead(this, WizardResId(FT_MIGRATION_HEADER)) - , m_ftBody(this, WizardResId(FT_MIGRATION_BODY)) - , m_cbMigration(this, WizardResId(CB_MIGRATION)) - , m_rThrobber(i_throbber) - , m_bMigrationDone(sal_False) -{ - FreeResource(); - _setBold(m_ftHead); - - // replace %OLDPRODUCT with found version name - String aText = m_ftBody.GetText(); - aText.SearchAndReplaceAll( UniString::CreateFromAscii("%OLDPRODUCT"), Migration::getOldVersionName()); - m_ftBody.SetText( aText ); -} - -sal_Bool MigrationPage::commitPage( svt::WizardTypes::CommitPageReason _eReason ) -{ - if (_eReason == svt::WizardTypes::eTravelForward && m_cbMigration.IsChecked() && !m_bMigrationDone) - { - GetParent()->EnterWait(); - FirstStartWizard* pWizard = dynamic_cast< FirstStartWizard* >( GetParent() ); - if ( pWizard ) - pWizard->DisableButtonsWhileMigration(); - - m_rThrobber.Show(); - m_rThrobber.start(); - MigrationThread* pMigThread = new MigrationThread(); - pMigThread->create(); - - while ( pMigThread->isRunning() ) - { - Application::Reschedule(); - } - - m_rThrobber.stop(); - GetParent()->LeaveWait(); - // Next state will enable buttons - so no EnableButtons necessary! - m_rThrobber.Hide(); - pMigThread->join(); - delete pMigThread; - m_bMigrationDone = sal_True; - } - else - Migration::cancelMigration(); - return sal_True; -} - -void MigrationPage::ActivatePage() -{ - OWizardPage::ActivatePage(); - GrabFocus(); -} - -UserPage::UserPage( svt::OWizardMachine* parent, const ResId& resid) - : OWizardPage(parent, resid) - , m_ftHead(this, WizardResId(FT_USER_HEADER)) - , m_ftBody(this, WizardResId(FT_USER_BODY)) - , m_ftFirst(this, WizardResId(FT_USER_FIRST)) - , m_edFirst(this, WizardResId(ED_USER_FIRST)) - , m_ftLast(this, WizardResId(FT_USER_LAST)) - , m_edLast(this, WizardResId(ED_USER_LAST)) - , m_ftInitials(this, WizardResId(FT_USER_INITIALS)) - , m_edInitials(this, WizardResId(ED_USER_INITIALS)) - , m_ftFather(this, WizardResId(FT_USER_FATHER)) - , m_edFather(this, WizardResId(ED_USER_FATHER)) - , m_lang(Application::GetSettings().GetUILanguage()) -{ - FreeResource(); - _setBold(m_ftHead); - - // check whether this is a russian version. otherwise - // we'll hide the 'Fathers name' field - SvtUserOptions aUserOpt; - m_edFirst.SetText(aUserOpt.GetFirstName()); - m_edLast.SetText(aUserOpt.GetLastName()); -#if 0 - rtl::OUString aUserName; - vos::OSecurity().getUserName( aUserName ); - aUserOpt.SetID( aUserName ); -#endif - - m_edInitials.SetText(aUserOpt.GetID()); - if (m_lang == LANGUAGE_RUSSIAN) - { - m_ftFather.Show(); - m_edFather.Show(); - m_edFather.SetText(aUserOpt.GetFathersName()); - } -} - -sal_Bool UserPage::commitPage( svt::WizardTypes::CommitPageReason ) -{ - SvtUserOptions aUserOpt; - aUserOpt.SetFirstName(m_edFirst.GetText()); - aUserOpt.SetLastName(m_edLast.GetText()); - aUserOpt.SetID( m_edInitials.GetText()); - - if (m_lang == LANGUAGE_RUSSIAN) - aUserOpt.SetFathersName(m_edFather.GetText()); - - return sal_True; -} - -void UserPage::ActivatePage() -{ - OWizardPage::ActivatePage(); - GrabFocus(); -} - -// ------------------------------------------------------------------- -UpdateCheckPage::UpdateCheckPage( svt::OWizardMachine* parent, const ResId& resid) - : OWizardPage(parent, resid) - , m_ftHead(this, WizardResId(FT_UPDATE_CHECK_HEADER)) - , m_ftBody(this, WizardResId(FT_UPDATE_CHECK_BODY)) - , m_cbUpdateCheck(this, WizardResId(CB_UPDATE_CHECK)) -{ - FreeResource(); - _setBold(m_ftHead); -} - -sal_Bool UpdateCheckPage::commitPage( svt::WizardTypes::CommitPageReason _eReason ) -{ - if ( _eReason == svt::WizardTypes::eTravelForward ) - { - try { - Reference < XNameReplace > xUpdateAccess; - Reference < XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() ); - - xUpdateAccess = Reference < XNameReplace >( - xFactory->createInstance( UNISTRING( "com.sun.star.setup.UpdateCheckConfig" ) ), UNO_QUERY_THROW ); - - if ( !xUpdateAccess.is() ) - return sal_False; - - sal_Bool bAutoUpdChk = m_cbUpdateCheck.IsChecked(); - xUpdateAccess->replaceByName( UNISTRING("AutoCheckEnabled"), makeAny( bAutoUpdChk ) ); - - Reference< XChangesBatch > xChangesBatch( xUpdateAccess, UNO_QUERY); - if( xChangesBatch.is() && xChangesBatch->hasPendingChanges() ) - xChangesBatch->commitChanges(); - } catch (RuntimeException) - { - } - } - - return sal_True; -} - -void UpdateCheckPage::ActivatePage() -{ - OWizardPage::ActivatePage(); - GrabFocus(); -} - -// ------------------------------------------------------------------- -RegistrationPage::RegistrationPage( Window* pParent, const ResId& rResid ) - : OWizardPage( pParent, rResid ) - , m_ftHeader(this, WizardResId(FT_REGISTRATION_HEADER)) - , m_ftBody(this, WizardResId(FT_REGISTRATION_BODY)) - , m_rbNow(this, WizardResId(RB_REGISTRATION_NOW)) - , m_rbLater(this, WizardResId(RB_REGISTRATION_LATER)) - , m_rbNever(this, WizardResId(RB_REGISTRATION_NEVER)) - , m_flSeparator(this, WizardResId(FL_REGISTRATION)) - , m_ftEnd(this, WizardResId(FT_REGISTRATION_END)) - , m_bNeverVisible( sal_True ) -{ - FreeResource(); - - // another text for OOo - sal_Int32 nOpenSourceContext = 0; - try - { - ::utl::ConfigManager::GetDirectConfigProperty( - ::utl::ConfigManager::OPENSOURCECONTEXT ) >>= nOpenSourceContext; - } - catch( Exception& ) - { - DBG_ERRORFILE( "RegistrationPage::RegistrationPage(): error while getting open source context" ); - } - - if ( nOpenSourceContext > 0 ) - { - String sBodyText( WizardResId( STR_REGISTRATION_OOO ) ); - m_ftBody.SetText( sBodyText ); - } - - // calculate height of body text and rearrange the buttons - Size aSize = m_ftBody.GetSizePixel(); - Size aMinSize = m_ftBody.CalcMinimumSize( aSize.Width() ); - long nTxtH = aMinSize.Height(); - long nCtrlH = aSize.Height(); - long nDelta = ( nCtrlH - nTxtH ); - aSize.Height() -= nDelta; - m_ftBody.SetSizePixel( aSize ); - Window* pWins[] = { &m_rbNow, &m_rbLater, &m_rbNever }; - Window** pCurrent = pWins; - for ( sal_uInt32 i = 0; i < sizeof( pWins ) / sizeof( pWins[ 0 ] ); ++i, ++pCurrent ) - { - Point aNewPos = (*pCurrent)->GetPosPixel(); - aNewPos.Y() -= nDelta; - (*pCurrent)->SetPosPixel( aNewPos ); - } - - _setBold(m_ftHeader); - impl_retrieveConfigurationData(); - updateButtonStates(); -} - -bool RegistrationPage::canAdvance() const -{ - return false; -} - -void RegistrationPage::ActivatePage() -{ - OWizardPage::ActivatePage(); - GrabFocus(); -} - -void RegistrationPage::impl_retrieveConfigurationData() -{ - static ::rtl::OUString PACKAGE(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.FirstStartWizard")); - static ::rtl::OUString PATH(RTL_CONSTASCII_USTRINGPARAM("TabPages/Registration/RegistrationOptions/NeverButton")); - static ::rtl::OUString KEY(RTL_CONSTASCII_USTRINGPARAM("Visible")); - - ::com::sun::star::uno::Any aValue; - try - { - aValue = ::comphelper::ConfigurationHelper::readDirectKey( - ::comphelper::getProcessServiceFactory(), - PACKAGE, - PATH, - KEY, - ::comphelper::ConfigurationHelper::E_READONLY); - } - catch(const ::com::sun::star::uno::Exception&) - { aValue.clear(); } - - aValue >>= m_bNeverVisible; -} - -void RegistrationPage::updateButtonStates() -{ - m_rbNever.Show( m_bNeverVisible ); -} - -sal_Bool RegistrationPage::commitPage( svt::WizardTypes::CommitPageReason _eReason ) -{ - if ( _eReason == svt::WizardTypes::eFinish ) - { - ::utl::RegOptions aOptions; - rtl::OUString aEvent; - - if ( m_rbNow.IsChecked()) - { - aEvent = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RegistrationRequired" ) ); - } - else if (m_rbLater.IsChecked()) - { - aOptions.activateReminder(7); - // avtivate a reminder job... - } - // aOptions.markSessionDone(); - - try - { - // create the Desktop component which can load components - Reference < XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory(); - if( xFactory.is() ) - { - Reference< com::sun::star::task::XJobExecutor > xProductRegistration( - xFactory->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.setup.ProductRegistration" ) ) ), - UNO_QUERY_THROW ); - - // tell it that the user wants to register - xProductRegistration->trigger( aEvent ); - } - } - catch( const Exception& ) - { - } - } - return sal_True; -} - -RegistrationPage::RegistrationMode RegistrationPage::getRegistrationMode() const -{ - RegistrationPage::RegistrationMode eMode = rmNow; - if ( m_rbLater.IsChecked() ) - eMode = rmLater; - else if ( m_rbNever.IsChecked() ) - eMode = rmNever; - return eMode; -} - -void RegistrationPage::prepareSingleMode() -{ - // remove wizard text (hide and cut) - m_flSeparator.Hide(); - m_ftEnd.Hide(); - Size aNewSize = GetSizePixel(); - aNewSize.Height() -= ( aNewSize.Height() - m_flSeparator.GetPosPixel().Y() ); - SetSizePixel( aNewSize ); -} - -bool RegistrationPage::hasReminderDateCome() -{ - return ::utl::RegOptions().hasReminderDateCome(); -} - -void RegistrationPage::executeSingleMode() -{ - // opens the page in a single tabdialog - SfxSingleTabDialog aSingleDlg( NULL, TP_REGISTRATION ); - RegistrationPage* pPage = new RegistrationPage( &aSingleDlg, WizardResId( TP_REGISTRATION ) ); - pPage->prepareSingleMode(); - aSingleDlg.SetPage( pPage ); - aSingleDlg.SetText( pPage->getSingleModeTitle() ); - aSingleDlg.Execute(); - // the registration modes "Now" and "Later" are handled by the page - RegistrationPage::RegistrationMode eMode = pPage->getRegistrationMode(); - if ( eMode == RegistrationPage::rmNow || eMode == RegistrationPage::rmLater ) - pPage->commitPage( WizardTypes::eFinish ); - if ( eMode != RegistrationPage::rmLater ) - ::utl::RegOptions().removeReminder(); -} - -} // namespace desktop |