summaryrefslogtreecommitdiff
path: root/extensions/source/preload/oemwiz.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/source/preload/oemwiz.cxx')
-rw-r--r--extensions/source/preload/oemwiz.cxx471
1 files changed, 471 insertions, 0 deletions
diff --git a/extensions/source/preload/oemwiz.cxx b/extensions/source/preload/oemwiz.cxx
new file mode 100644
index 000000000000..a073e71c7c7c
--- /dev/null
+++ b/extensions/source/preload/oemwiz.cxx
@@ -0,0 +1,471 @@
+/*************************************************************************
+ *
+ * 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_extensions.hxx"
+#include "oemwiz.hxx"
+#include "componentmodule.hxx"
+#include <tools/debug.hxx>
+#include <sfx2/docfile.hxx>
+#include <svl/itemset.hxx>
+#include <svl/itempool.hxx>
+#include <vcl/msgbox.hxx>
+#include <unotools/pathoptions.hxx>
+#ifndef _EXTENSIONS_PRELOAD_PRELOAD_HRC_
+#include "preload.hrc"
+#endif
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+#include <sfx2/app.hxx>
+#include <svtools/xtextedt.hxx>
+#include "osl/diagnose.h"
+#include "tools/urlobj.hxx"
+
+#include <sfx2/sfxdlg.hxx>
+#include <sfx2/tabdlg.hxx>
+#include <svx/dialogs.hrc>
+
+//.........................................................................
+namespace preload
+{
+//.........................................................................
+
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star::beans;
+//.........................................................................
+
+ struct OEMPreloadDialog_Impl
+ {
+ SfxItemSet* pSet;
+ TabPage* pWelcomePage;
+ TabPage* pLicensePage;
+ TabPage* pUserDataPage;
+
+ OEMPreloadDialog_Impl(OEMPreloadDialog* pDialog);
+ ~OEMPreloadDialog_Impl()
+ {
+ delete pWelcomePage;
+ delete pLicensePage;
+ delete pUserDataPage;
+ delete pSet;
+ }
+ void WriteUserData();
+ };
+/* -----------------------------14.11.2001 11:33------------------------------
+
+ ---------------------------------------------------------------------------*/
+ OEMPreloadDialog_Impl::OEMPreloadDialog_Impl(OEMPreloadDialog* pDialog)
+ {
+ SfxItemPool& rPool = SFX_APP()->GetPool();
+ pSet = new SfxItemSet(rPool, SID_FIELD_GRABFOCUS, SID_FIELD_GRABFOCUS);
+ SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
+ if ( pFact )
+ {
+ CreateTabPage pFunc = pFact->GetTabPageCreatorFunc(RID_SFXPAGE_GENERAL);
+ pUserDataPage = (*pFunc)(pDialog, *pSet);
+ ((SfxTabPage*)pUserDataPage)->Reset(*pSet);
+ }
+ else
+ pUserDataPage = NULL;
+ pWelcomePage = new OEMWelcomeTabPage(pDialog);
+ pLicensePage = new OEMLicenseTabPage(pDialog);
+ }
+/* -----------------------------14.11.2001 11:33------------------------------
+
+ ---------------------------------------------------------------------------*/
+ void OEMPreloadDialog_Impl::WriteUserData()
+ {
+ if ( pUserDataPage )
+ ((SfxTabPage*)pUserDataPage)->FillItemSet(*pSet);
+ }
+
+/* -----------------------------14.11.2001 11:33------------------------------
+
+ ---------------------------------------------------------------------------*/
+ //=====================================================================
+ //= OEMPreloadDialog
+ //=====================================================================
+ //---------------------------------------------------------------------
+ OEMPreloadDialog::OEMPreloadDialog( Window* _pParent,
+ const Reference< XPropertySet >& /*_rxObjectModel*/, const Reference< XMultiServiceFactory >& /*_rxORB*/ )
+ :WizardDialog(_pParent, ModuleRes(RID_DLG_OEMWIZARD)/*, _rxObjectModel, _rxORB*/)
+ ,aPrevPB(this, ModuleRes(PB_PREV ))
+ ,aNextPB(this, ModuleRes(PB_NEXT ))
+ ,aCancelPB(this, ModuleRes(PB_CANCEL ))
+ ,aAcceptST(ModuleRes(ST_ACCEPT))
+ ,aFinishST(ModuleRes(ST_FINISH))
+ ,aLicense(ModuleRes(ST_LICENSE_AGREEMENT))
+ ,aUserData(ModuleRes(ST_INSERT_USER_DATA))
+ ,pImpl(new OEMPreloadDialog_Impl(this))
+ {
+ FreeResource();
+ aDlgTitle = GetText();
+ aPrevPB.Enable(FALSE);
+ aNextST = aNextPB.GetText();
+ aPrevPB.SetClickHdl(LINK(this, OEMPreloadDialog, NextPrevPageHdl));
+ aNextPB.SetClickHdl(LINK(this, OEMPreloadDialog, NextPrevPageHdl));
+ AddButton( &aPrevPB, WIZARDDIALOG_BUTTON_STDOFFSET_X );
+ AddButton( &aNextPB, WIZARDDIALOG_BUTTON_STDOFFSET_X );
+ AddButton( &aCancelPB, WIZARDDIALOG_BUTTON_STDOFFSET_X );
+
+ SetPrevButton(&aPrevPB);
+ SetNextButton(&aNextPB);
+
+ AddPage( pImpl->pWelcomePage );
+ AddPage( pImpl->pLicensePage );
+ if ( pImpl->pUserDataPage )
+ AddPage( pImpl->pUserDataPage );
+ SetPage( OEM_WELCOME, pImpl->pWelcomePage );
+ SetPage( OEM_LICENSE, pImpl->pLicensePage );
+ if ( pImpl->pUserDataPage )
+ SetPage( OEM_USERDATA, pImpl->pUserDataPage );
+ ShowPage( OEM_WELCOME );
+ }
+/* -----------------------------14.11.2001 11:33------------------------------
+
+ ---------------------------------------------------------------------------*/
+ OEMPreloadDialog::~OEMPreloadDialog( )
+ {
+ delete pImpl;
+ }
+/* -----------------------------14.11.2001 11:33------------------------------
+
+ ---------------------------------------------------------------------------*/
+ IMPL_LINK(OEMPreloadDialog, NextPrevPageHdl, PushButton*, pButton)
+ {
+ if(pButton == &aPrevPB)
+ {
+ if(GetCurLevel())
+ ShowPage(GetCurLevel() - 1);
+ }
+ else if(OEM_USERDATA > GetCurLevel())
+ ShowPage(GetCurLevel() + 1);
+ else
+ {
+ pImpl->WriteUserData();
+ Finnish(RET_OK);
+ }
+
+ String sTitle(aDlgTitle);
+
+ switch(GetCurLevel())
+ {
+ case OEM_WELCOME:
+ aNextPB.SetText(aNextST);
+ aNextPB.Enable(TRUE);
+ break;
+ case OEM_LICENSE:
+ sTitle += aLicense;
+ aNextPB.SetText(aNextST);
+ aCancelPB.GrabFocus();
+ break;
+ case OEM_USERDATA:
+ sTitle += aUserData;
+ aNextPB.SetText(aFinishST);
+ break;
+ }
+ SetText(sTitle);
+ aPrevPB.Enable(GetCurLevel() != OEM_WELCOME);
+ return 0;
+ }
+/* -----------------------------14.11.2001 11:33------------------------------
+
+ ---------------------------------------------------------------------------*/
+ sal_Bool OEMPreloadDialog::LoadFromLocalFile(const String& rFileName, String& rContent)
+ {
+ SvtPathOptions aPathOpt;
+ String sFileName = aPathOpt.GetUserConfigPath();//GetModulePath();
+ INetURLObject aURLObject(sFileName);
+ OSL_ASSERT(aURLObject.getSegmentCount() >= 2);
+ aURLObject.removeSegment(); //remove '/config'
+ aURLObject.removeSegment(); //remove '/user'
+ sFileName = aURLObject.GetMainURL(INetURLObject::DECODE_TO_IURI);
+ sFileName += rFileName;
+
+ SfxMedium aMedium( sFileName,STREAM_READ, TRUE );
+ SvStream* pInStream = aMedium.GetInStream();
+ if( !pInStream )
+ return sal_False;
+
+ pInStream->ReadCString( rContent, RTL_TEXTENCODING_UTF8 );
+
+ xub_StrLen nPos;
+ while ( ( nPos = rContent.Search( 12 )) != STRING_NOTFOUND )
+ rContent.Erase( nPos, 1 );
+ return sal_True;
+ }
+
+
+ void OEMPreloadDialog::SetCancelString( const String& rText )
+ {
+ aCancelPB.SetText(rText);
+ }
+
+/* -----------------------------13.11.2001 12:29------------------------------
+
+ ---------------------------------------------------------------------------*/
+ OEMWelcomeTabPage::OEMWelcomeTabPage(Window* pParent) :
+ TabPage(pParent, ModuleRes(RID_TP_WELCOME)),
+ aInfoFT(this, ModuleRes(FT_INFO))
+ {
+ FreeResource();
+ }
+/* -----------------------------13.11.2001 12:30------------------------------
+
+ ---------------------------------------------------------------------------*/
+ OEMWelcomeTabPage::~OEMWelcomeTabPage()
+ {
+ }
+/* -----------------------------13.11.2001 12:29------------------------------
+
+ ---------------------------------------------------------------------------*/
+ OEMLicenseTabPage::OEMLicenseTabPage(OEMPreloadDialog* pParent) :
+ TabPage(pParent, ModuleRes(RID_TP_LICENSE)),
+ aLicenseML(this, ModuleRes(ML_LICENSE)),
+ aInfo1FT(this, ModuleRes(FT_INFO1)),
+ aInfo2FT(this, ModuleRes(FT_INFO2)),
+ aInfo3FT(this, ModuleRes(FT_INFO3)),
+ aInfo2_1FT(this, ModuleRes(FT_INFO2_1)),
+ aInfo3_1FT(this, ModuleRes(FT_INFO3_1)),
+ aCBAccept(this, ModuleRes(CB_ACCEPT)),
+ aPBPageDown(this, ModuleRes(PB_PAGEDOWN)),
+ aArrow(this, ModuleRes(IMG_ARROW)),
+ aStrAccept( ModuleRes(LICENCE_ACCEPT) ),
+ aStrNotAccept( ModuleRes(LICENCE_NOTACCEPT) ),
+ bEndReached(FALSE),
+ pPreloadDialog(pParent)
+ {
+ FreeResource();
+
+ aLicenseML.SetEndReachedHdl( LINK(this, OEMLicenseTabPage, EndReachedHdl) );
+ aLicenseML.SetScrolledHdl( LINK(this, OEMLicenseTabPage, ScrolledHdl) );
+
+ aPBPageDown.SetClickHdl( LINK(this, OEMLicenseTabPage, PageDownHdl) );
+ aCBAccept.SetClickHdl( LINK(this, OEMLicenseTabPage, AcceptHdl) );
+
+ // We want a automatic repeating page down button
+ WinBits aStyle = aPBPageDown.GetStyle();
+ aStyle |= WB_REPEAT;
+ aPBPageDown.SetStyle( aStyle );
+
+ aOldCancelText = pPreloadDialog->GetCancelString();
+ pPreloadDialog->SetCancelString( aStrNotAccept );
+
+ String aText = aInfo2FT.GetText();
+ aText.SearchAndReplaceAll( UniString::CreateFromAscii("%PAGEDOWN"), aPBPageDown.GetText() );
+ aInfo2FT.SetText( aText );
+ }
+/* -----------------------------13.11.2001 12:30------------------------------
+
+ ---------------------------------------------------------------------------*/
+ OEMLicenseTabPage::~OEMLicenseTabPage()
+ {
+ }
+/* ---------------------------14.11.2001 11:24----------------------------
+
+ -----------------------------------------------------------------------*/
+ void OEMLicenseTabPage::ActivatePage()
+ {
+ if(!aLicenseML.GetText().Len())
+ {
+ aLicenseML.SetLeftMargin( 5 );
+ String sLicense;
+#ifdef UNX
+ OEMPreloadDialog::LoadFromLocalFile(String::CreateFromAscii("LICENSE"), sLicense);
+#else
+ OEMPreloadDialog::LoadFromLocalFile(String::CreateFromAscii("license.txt"), sLicense);
+#endif
+ aLicenseML.SetText( sLicense );
+ }
+
+ EnableControls();
+ }
+
+ //------------------------------------------------------------------------
+ IMPL_LINK( OEMLicenseTabPage, AcceptHdl, CheckBox *, EMPTYARG )
+ {
+ EnableControls();
+ return 0;
+ }
+
+ //------------------------------------------------------------------------
+ IMPL_LINK( OEMLicenseTabPage, PageDownHdl, PushButton *, EMPTYARG )
+ {
+ aLicenseML.ScrollDown( SCROLL_PAGEDOWN );
+ return 0;
+ }
+
+ //------------------------------------------------------------------------
+ IMPL_LINK( OEMLicenseTabPage, EndReachedHdl, LicenceView *, EMPTYARG )
+ {
+ bEndReached = TRUE;
+
+ EnableControls();
+ aCBAccept.GrabFocus();
+
+ return 0;
+ }
+
+ //------------------------------------------------------------------------
+ IMPL_LINK( OEMLicenseTabPage, ScrolledHdl, LicenceView *, EMPTYARG )
+ {
+ EnableControls();
+
+ return 0;
+ }
+
+ //------------------------------------------------------------------------
+ void OEMLicenseTabPage::EnableControls()
+ {
+ if( !bEndReached &&
+ ( aLicenseML.IsEndReached() || !aLicenseML.GetText().Len() ) )
+ bEndReached = TRUE;
+
+ if ( bEndReached )
+ {
+ Point aPos( 0, aInfo3_1FT.GetPosPixel().Y() );
+ aArrow.SetPosPixel( aPos );
+ aCBAccept.Enable();
+ }
+ else
+ {
+ Point aPos( 0, aInfo2_1FT.GetPosPixel().Y() );
+ aArrow.SetPosPixel( aPos );
+ aCBAccept.Disable();
+ }
+
+ if ( aLicenseML.IsEndReached() )
+ aPBPageDown.Disable();
+ else
+ aPBPageDown.Enable();
+
+ if ( aCBAccept.IsChecked() )
+ {
+ PushButton *pNext = pPreloadDialog->GetNextButton();
+ if ( ! pNext->IsEnabled() )
+ {
+ pPreloadDialog->SetCancelString( aOldCancelText );
+ pNext->Enable(TRUE);
+ }
+ }
+ else
+ {
+ PushButton *pNext = pPreloadDialog->GetNextButton();
+ if ( pNext->IsEnabled() )
+ {
+ pPreloadDialog->SetCancelString( aStrNotAccept );
+ pNext->Enable(FALSE);
+ }
+ }
+ }
+
+ //------------------------------------------------------------------------
+ //------------------------------------------------------------------------
+ //------------------------------------------------------------------------
+ LicenceView::LicenceView( Window* pParent, const ResId& rResId )
+ : MultiLineEdit( pParent, rResId )
+ {
+ SetLeftMargin( 5 );
+
+ mbEndReached = IsEndReached();
+
+ StartListening( *GetTextEngine() );
+ }
+
+ //------------------------------------------------------------------------
+ LicenceView::~LicenceView()
+ {
+ maEndReachedHdl = Link();
+ maScrolledHdl = Link();
+
+ EndListeningAll();
+ }
+
+ //------------------------------------------------------------------------
+ void LicenceView::ScrollDown( ScrollType eScroll )
+ {
+ ScrollBar* pScroll = GetVScrollBar();
+
+ if ( pScroll )
+ pScroll->DoScrollAction( eScroll );
+ }
+
+ //------------------------------------------------------------------------
+ BOOL LicenceView::IsEndReached() const
+ {
+ BOOL bEndReached;
+
+ ExtTextView* pView = GetTextView();
+ ExtTextEngine* pEdit = GetTextEngine();
+ ULONG nHeight = pEdit->GetTextHeight();
+ Size aOutSize = pView->GetWindow()->GetOutputSizePixel();
+ Point aBottom( 0, aOutSize.Height() );
+
+ if ( (ULONG) pView->GetDocPos( aBottom ).Y() >= nHeight - 1 )
+ bEndReached = TRUE;
+ else
+ bEndReached = FALSE;
+
+ return bEndReached;
+ }
+
+ //------------------------------------------------------------------------
+ void LicenceView::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
+ {
+ if ( rHint.IsA( TYPE(TextHint) ) )
+ {
+ BOOL bLastVal = EndReached();
+ 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 );
+ }
+ }
+ }
+
+ //------------------------------------------------------------------------
+
+//.........................................................................
+} // namespace preload
+//.........................................................................
+
+