/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include 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::createFromAscii("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(); } // ------------------------------------------------------------------- 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(); } } // namespace desktop