1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_extensions.hxx"
26*b1cdbd2cSJim Jagielski #include "oemwiz.hxx"
27*b1cdbd2cSJim Jagielski #include "componentmodule.hxx"
28*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
29*b1cdbd2cSJim Jagielski #include <sfx2/docfile.hxx>
30*b1cdbd2cSJim Jagielski #include <svl/itemset.hxx>
31*b1cdbd2cSJim Jagielski #include <svl/itempool.hxx>
32*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
33*b1cdbd2cSJim Jagielski #include <unotools/pathoptions.hxx>
34*b1cdbd2cSJim Jagielski #ifndef _EXTENSIONS_PRELOAD_PRELOAD_HRC_
35*b1cdbd2cSJim Jagielski #include "preload.hrc"
36*b1cdbd2cSJim Jagielski #endif
37*b1cdbd2cSJim Jagielski #ifndef _SVX_SVXIDS_HRC
38*b1cdbd2cSJim Jagielski #include <svx/svxids.hrc>
39*b1cdbd2cSJim Jagielski #endif
40*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
41*b1cdbd2cSJim Jagielski #include <svtools/xtextedt.hxx>
42*b1cdbd2cSJim Jagielski #include "osl/diagnose.h"
43*b1cdbd2cSJim Jagielski #include "tools/urlobj.hxx"
44*b1cdbd2cSJim Jagielski 
45*b1cdbd2cSJim Jagielski #include <sfx2/sfxdlg.hxx>
46*b1cdbd2cSJim Jagielski #include <sfx2/tabdlg.hxx>
47*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc>
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski //.........................................................................
50*b1cdbd2cSJim Jagielski namespace preload
51*b1cdbd2cSJim Jagielski {
52*b1cdbd2cSJim Jagielski //.........................................................................
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star::uno;
55*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star::lang;
56*b1cdbd2cSJim Jagielski     using namespace ::com::sun::star::beans;
57*b1cdbd2cSJim Jagielski //.........................................................................
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski     struct OEMPreloadDialog_Impl
60*b1cdbd2cSJim Jagielski     {
61*b1cdbd2cSJim Jagielski         SfxItemSet*     pSet;
62*b1cdbd2cSJim Jagielski         TabPage* pWelcomePage;
63*b1cdbd2cSJim Jagielski         TabPage* pLicensePage;
64*b1cdbd2cSJim Jagielski         TabPage* pUserDataPage;
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski         OEMPreloadDialog_Impl(OEMPreloadDialog* pDialog);
~OEMPreloadDialog_Implpreload::OEMPreloadDialog_Impl67*b1cdbd2cSJim Jagielski         ~OEMPreloadDialog_Impl()
68*b1cdbd2cSJim Jagielski         {
69*b1cdbd2cSJim Jagielski             delete pWelcomePage;
70*b1cdbd2cSJim Jagielski             delete pLicensePage;
71*b1cdbd2cSJim Jagielski             delete pUserDataPage;
72*b1cdbd2cSJim Jagielski             delete pSet;
73*b1cdbd2cSJim Jagielski         }
74*b1cdbd2cSJim Jagielski         void WriteUserData();
75*b1cdbd2cSJim Jagielski     };
76*b1cdbd2cSJim Jagielski /* -----------------------------14.11.2001 11:33------------------------------
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
OEMPreloadDialog_Impl(OEMPreloadDialog * pDialog)79*b1cdbd2cSJim Jagielski     OEMPreloadDialog_Impl::OEMPreloadDialog_Impl(OEMPreloadDialog* pDialog)
80*b1cdbd2cSJim Jagielski         {
81*b1cdbd2cSJim Jagielski             SfxItemPool& rPool = SFX_APP()->GetPool();
82*b1cdbd2cSJim Jagielski             pSet = new SfxItemSet(rPool, SID_FIELD_GRABFOCUS, SID_FIELD_GRABFOCUS);
83*b1cdbd2cSJim Jagielski 			SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
84*b1cdbd2cSJim Jagielski 			if ( pFact )
85*b1cdbd2cSJim Jagielski 			{
86*b1cdbd2cSJim Jagielski 				CreateTabPage pFunc = pFact->GetTabPageCreatorFunc(RID_SFXPAGE_GENERAL);
87*b1cdbd2cSJim Jagielski             	pUserDataPage = (*pFunc)(pDialog, *pSet);
88*b1cdbd2cSJim Jagielski             	((SfxTabPage*)pUserDataPage)->Reset(*pSet);
89*b1cdbd2cSJim Jagielski 			}
90*b1cdbd2cSJim Jagielski 			else
91*b1cdbd2cSJim Jagielski 				pUserDataPage = NULL;
92*b1cdbd2cSJim Jagielski             pWelcomePage = new OEMWelcomeTabPage(pDialog);
93*b1cdbd2cSJim Jagielski             pLicensePage = new OEMLicenseTabPage(pDialog);
94*b1cdbd2cSJim Jagielski         }
95*b1cdbd2cSJim Jagielski /* -----------------------------14.11.2001 11:33------------------------------
96*b1cdbd2cSJim Jagielski 
97*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
WriteUserData()98*b1cdbd2cSJim Jagielski         void OEMPreloadDialog_Impl::WriteUserData()
99*b1cdbd2cSJim Jagielski         {
100*b1cdbd2cSJim Jagielski 			if ( pUserDataPage )
101*b1cdbd2cSJim Jagielski             	((SfxTabPage*)pUserDataPage)->FillItemSet(*pSet);
102*b1cdbd2cSJim Jagielski         }
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski /* -----------------------------14.11.2001 11:33------------------------------
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
107*b1cdbd2cSJim Jagielski     //=====================================================================
108*b1cdbd2cSJim Jagielski     //= OEMPreloadDialog
109*b1cdbd2cSJim Jagielski 	//=====================================================================
110*b1cdbd2cSJim Jagielski 	//---------------------------------------------------------------------
OEMPreloadDialog(Window * _pParent,const Reference<XPropertySet> &,const Reference<XMultiServiceFactory> &)111*b1cdbd2cSJim Jagielski     OEMPreloadDialog::OEMPreloadDialog( Window* _pParent,
112*b1cdbd2cSJim Jagielski 			const Reference< XPropertySet >& /*_rxObjectModel*/, const Reference< XMultiServiceFactory >& /*_rxORB*/ )
113*b1cdbd2cSJim Jagielski         :WizardDialog(_pParent, ModuleRes(RID_DLG_OEMWIZARD)/*, _rxObjectModel, _rxORB*/)
114*b1cdbd2cSJim Jagielski         ,aPrevPB(this,      ModuleRes(PB_PREV   ))
115*b1cdbd2cSJim Jagielski         ,aNextPB(this,      ModuleRes(PB_NEXT   ))
116*b1cdbd2cSJim Jagielski         ,aCancelPB(this,    ModuleRes(PB_CANCEL ))
117*b1cdbd2cSJim Jagielski         ,aAcceptST(ModuleRes(ST_ACCEPT))
118*b1cdbd2cSJim Jagielski         ,aFinishST(ModuleRes(ST_FINISH))
119*b1cdbd2cSJim Jagielski         ,aLicense(ModuleRes(ST_LICENSE_AGREEMENT))
120*b1cdbd2cSJim Jagielski         ,aUserData(ModuleRes(ST_INSERT_USER_DATA))
121*b1cdbd2cSJim Jagielski         ,pImpl(new OEMPreloadDialog_Impl(this))
122*b1cdbd2cSJim Jagielski 	{
123*b1cdbd2cSJim Jagielski           FreeResource();
124*b1cdbd2cSJim Jagielski           aDlgTitle = GetText();
125*b1cdbd2cSJim Jagielski           aPrevPB.Enable(sal_False);
126*b1cdbd2cSJim Jagielski           aNextST = aNextPB.GetText();
127*b1cdbd2cSJim Jagielski           aPrevPB.SetClickHdl(LINK(this, OEMPreloadDialog, NextPrevPageHdl));
128*b1cdbd2cSJim Jagielski           aNextPB.SetClickHdl(LINK(this, OEMPreloadDialog, NextPrevPageHdl));
129*b1cdbd2cSJim Jagielski           AddButton( &aPrevPB, WIZARDDIALOG_BUTTON_STDOFFSET_X );
130*b1cdbd2cSJim Jagielski           AddButton( &aNextPB, WIZARDDIALOG_BUTTON_STDOFFSET_X );
131*b1cdbd2cSJim Jagielski           AddButton( &aCancelPB, WIZARDDIALOG_BUTTON_STDOFFSET_X );
132*b1cdbd2cSJim Jagielski 
133*b1cdbd2cSJim Jagielski           SetPrevButton(&aPrevPB);
134*b1cdbd2cSJim Jagielski           SetNextButton(&aNextPB);
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski           AddPage( pImpl->pWelcomePage );
137*b1cdbd2cSJim Jagielski           AddPage( pImpl->pLicensePage );
138*b1cdbd2cSJim Jagielski 		  if ( pImpl->pUserDataPage )
139*b1cdbd2cSJim Jagielski           	AddPage( pImpl->pUserDataPage );
140*b1cdbd2cSJim Jagielski           SetPage( OEM_WELCOME, pImpl->pWelcomePage );
141*b1cdbd2cSJim Jagielski           SetPage( OEM_LICENSE, pImpl->pLicensePage );
142*b1cdbd2cSJim Jagielski 		  if ( pImpl->pUserDataPage )
143*b1cdbd2cSJim Jagielski           	SetPage( OEM_USERDATA, pImpl->pUserDataPage );
144*b1cdbd2cSJim Jagielski           ShowPage( OEM_WELCOME );
145*b1cdbd2cSJim Jagielski     }
146*b1cdbd2cSJim Jagielski /* -----------------------------14.11.2001 11:33------------------------------
147*b1cdbd2cSJim Jagielski 
148*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
~OEMPreloadDialog()149*b1cdbd2cSJim Jagielski     OEMPreloadDialog::~OEMPreloadDialog( )
150*b1cdbd2cSJim Jagielski     {
151*b1cdbd2cSJim Jagielski         delete pImpl;
152*b1cdbd2cSJim Jagielski     }
153*b1cdbd2cSJim Jagielski /* -----------------------------14.11.2001 11:33------------------------------
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
IMPL_LINK(OEMPreloadDialog,NextPrevPageHdl,PushButton *,pButton)156*b1cdbd2cSJim Jagielski     IMPL_LINK(OEMPreloadDialog, NextPrevPageHdl, PushButton*, pButton)
157*b1cdbd2cSJim Jagielski     {
158*b1cdbd2cSJim Jagielski         if(pButton == &aPrevPB)
159*b1cdbd2cSJim Jagielski         {
160*b1cdbd2cSJim Jagielski             if(GetCurLevel())
161*b1cdbd2cSJim Jagielski                 ShowPage(GetCurLevel() - 1);
162*b1cdbd2cSJim Jagielski         }
163*b1cdbd2cSJim Jagielski            else if(OEM_USERDATA > GetCurLevel())
164*b1cdbd2cSJim Jagielski             ShowPage(GetCurLevel() + 1);
165*b1cdbd2cSJim Jagielski 		else
166*b1cdbd2cSJim Jagielski 		{
167*b1cdbd2cSJim Jagielski             pImpl->WriteUserData();
168*b1cdbd2cSJim Jagielski             Finnish(RET_OK);
169*b1cdbd2cSJim Jagielski 		}
170*b1cdbd2cSJim Jagielski 
171*b1cdbd2cSJim Jagielski         String sTitle(aDlgTitle);
172*b1cdbd2cSJim Jagielski 
173*b1cdbd2cSJim Jagielski         switch(GetCurLevel())
174*b1cdbd2cSJim Jagielski         {
175*b1cdbd2cSJim Jagielski             case OEM_WELCOME:
176*b1cdbd2cSJim Jagielski                 aNextPB.SetText(aNextST);
177*b1cdbd2cSJim Jagielski                 aNextPB.Enable(sal_True);
178*b1cdbd2cSJim Jagielski             break;
179*b1cdbd2cSJim Jagielski             case OEM_LICENSE:
180*b1cdbd2cSJim Jagielski                 sTitle += aLicense;
181*b1cdbd2cSJim Jagielski                 aNextPB.SetText(aNextST);
182*b1cdbd2cSJim Jagielski                 aCancelPB.GrabFocus();
183*b1cdbd2cSJim Jagielski             break;
184*b1cdbd2cSJim Jagielski             case OEM_USERDATA:
185*b1cdbd2cSJim Jagielski                 sTitle += aUserData;
186*b1cdbd2cSJim Jagielski                 aNextPB.SetText(aFinishST);
187*b1cdbd2cSJim Jagielski             break;
188*b1cdbd2cSJim Jagielski         }
189*b1cdbd2cSJim Jagielski         SetText(sTitle);
190*b1cdbd2cSJim Jagielski         aPrevPB.Enable(GetCurLevel() != OEM_WELCOME);
191*b1cdbd2cSJim Jagielski         return 0;
192*b1cdbd2cSJim Jagielski     }
193*b1cdbd2cSJim Jagielski /* -----------------------------14.11.2001 11:33------------------------------
194*b1cdbd2cSJim Jagielski 
195*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
LoadFromLocalFile(const String & rFileName,String & rContent)196*b1cdbd2cSJim Jagielski     sal_Bool OEMPreloadDialog::LoadFromLocalFile(const String& rFileName, String& rContent)
197*b1cdbd2cSJim Jagielski     {
198*b1cdbd2cSJim Jagielski         SvtPathOptions aPathOpt;
199*b1cdbd2cSJim Jagielski         String sFileName = aPathOpt.GetUserConfigPath();//GetModulePath();
200*b1cdbd2cSJim Jagielski         INetURLObject aURLObject(sFileName);
201*b1cdbd2cSJim Jagielski         OSL_ASSERT(aURLObject.getSegmentCount() >= 2);
202*b1cdbd2cSJim Jagielski         aURLObject.removeSegment(); //remove '/config'
203*b1cdbd2cSJim Jagielski         aURLObject.removeSegment(); //remove '/user'
204*b1cdbd2cSJim Jagielski         sFileName = aURLObject.GetMainURL(INetURLObject::DECODE_TO_IURI);
205*b1cdbd2cSJim Jagielski         sFileName += rFileName;
206*b1cdbd2cSJim Jagielski 
207*b1cdbd2cSJim Jagielski         SfxMedium aMedium( sFileName,STREAM_READ, sal_True );
208*b1cdbd2cSJim Jagielski         SvStream* pInStream = aMedium.GetInStream();
209*b1cdbd2cSJim Jagielski         if( !pInStream )
210*b1cdbd2cSJim Jagielski             return sal_False;
211*b1cdbd2cSJim Jagielski 
212*b1cdbd2cSJim Jagielski         pInStream->ReadCString( rContent, RTL_TEXTENCODING_UTF8 );
213*b1cdbd2cSJim Jagielski 
214*b1cdbd2cSJim Jagielski         xub_StrLen nPos;
215*b1cdbd2cSJim Jagielski         while ( ( nPos = rContent.Search( 12 )) != STRING_NOTFOUND )
216*b1cdbd2cSJim Jagielski             rContent.Erase( nPos, 1 );
217*b1cdbd2cSJim Jagielski         return sal_True;
218*b1cdbd2cSJim Jagielski     }
219*b1cdbd2cSJim Jagielski 
220*b1cdbd2cSJim Jagielski 
SetCancelString(const String & rText)221*b1cdbd2cSJim Jagielski     void OEMPreloadDialog::SetCancelString( const String& rText )
222*b1cdbd2cSJim Jagielski     {
223*b1cdbd2cSJim Jagielski         aCancelPB.SetText(rText);
224*b1cdbd2cSJim Jagielski     }
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski /* -----------------------------13.11.2001 12:29------------------------------
227*b1cdbd2cSJim Jagielski 
228*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
OEMWelcomeTabPage(Window * pParent)229*b1cdbd2cSJim Jagielski     OEMWelcomeTabPage::OEMWelcomeTabPage(Window* pParent) :
230*b1cdbd2cSJim Jagielski         TabPage(pParent, ModuleRes(RID_TP_WELCOME)),
231*b1cdbd2cSJim Jagielski         aInfoFT(this, ModuleRes(FT_INFO))
232*b1cdbd2cSJim Jagielski     {
233*b1cdbd2cSJim Jagielski         FreeResource();
234*b1cdbd2cSJim Jagielski     }
235*b1cdbd2cSJim Jagielski /* -----------------------------13.11.2001 12:30------------------------------
236*b1cdbd2cSJim Jagielski 
237*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
~OEMWelcomeTabPage()238*b1cdbd2cSJim Jagielski     OEMWelcomeTabPage::~OEMWelcomeTabPage()
239*b1cdbd2cSJim Jagielski     {
240*b1cdbd2cSJim Jagielski     }
241*b1cdbd2cSJim Jagielski /* -----------------------------13.11.2001 12:29------------------------------
242*b1cdbd2cSJim Jagielski 
243*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
OEMLicenseTabPage(OEMPreloadDialog * pParent)244*b1cdbd2cSJim Jagielski     OEMLicenseTabPage::OEMLicenseTabPage(OEMPreloadDialog* pParent) :
245*b1cdbd2cSJim Jagielski         TabPage(pParent, ModuleRes(RID_TP_LICENSE)),
246*b1cdbd2cSJim Jagielski         aLicenseML(this, ModuleRes(ML_LICENSE)),
247*b1cdbd2cSJim Jagielski         aInfo1FT(this, ModuleRes(FT_INFO1)),
248*b1cdbd2cSJim Jagielski         aInfo2FT(this, ModuleRes(FT_INFO2)),
249*b1cdbd2cSJim Jagielski         aInfo3FT(this, ModuleRes(FT_INFO3)),
250*b1cdbd2cSJim Jagielski         aInfo2_1FT(this, ModuleRes(FT_INFO2_1)),
251*b1cdbd2cSJim Jagielski         aInfo3_1FT(this, ModuleRes(FT_INFO3_1)),
252*b1cdbd2cSJim Jagielski         aCBAccept(this, ModuleRes(CB_ACCEPT)),
253*b1cdbd2cSJim Jagielski         aPBPageDown(this, ModuleRes(PB_PAGEDOWN)),
254*b1cdbd2cSJim Jagielski         aArrow(this, ModuleRes(IMG_ARROW)),
255*b1cdbd2cSJim Jagielski         aStrAccept( ModuleRes(LICENCE_ACCEPT) ),
256*b1cdbd2cSJim Jagielski 	    aStrNotAccept( ModuleRes(LICENCE_NOTACCEPT) ),
257*b1cdbd2cSJim Jagielski         bEndReached(sal_False),
258*b1cdbd2cSJim Jagielski         pPreloadDialog(pParent)
259*b1cdbd2cSJim Jagielski     {
260*b1cdbd2cSJim Jagielski         FreeResource();
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski         aLicenseML.SetEndReachedHdl( LINK(this, OEMLicenseTabPage, EndReachedHdl) );
263*b1cdbd2cSJim Jagielski         aLicenseML.SetScrolledHdl( LINK(this, OEMLicenseTabPage, ScrolledHdl) );
264*b1cdbd2cSJim Jagielski 
265*b1cdbd2cSJim Jagielski         aPBPageDown.SetClickHdl( LINK(this, OEMLicenseTabPage, PageDownHdl) );
266*b1cdbd2cSJim Jagielski         aCBAccept.SetClickHdl( LINK(this, OEMLicenseTabPage, AcceptHdl) );
267*b1cdbd2cSJim Jagielski 
268*b1cdbd2cSJim Jagielski         // We want a automatic repeating page down button
269*b1cdbd2cSJim Jagielski         WinBits aStyle = aPBPageDown.GetStyle();
270*b1cdbd2cSJim Jagielski         aStyle |= WB_REPEAT;
271*b1cdbd2cSJim Jagielski         aPBPageDown.SetStyle( aStyle );
272*b1cdbd2cSJim Jagielski 
273*b1cdbd2cSJim Jagielski         aOldCancelText = pPreloadDialog->GetCancelString();
274*b1cdbd2cSJim Jagielski         pPreloadDialog->SetCancelString( aStrNotAccept );
275*b1cdbd2cSJim Jagielski 
276*b1cdbd2cSJim Jagielski         String aText = aInfo2FT.GetText();
277*b1cdbd2cSJim Jagielski         aText.SearchAndReplaceAll( UniString::CreateFromAscii("%PAGEDOWN"), aPBPageDown.GetText() );
278*b1cdbd2cSJim Jagielski         aInfo2FT.SetText( aText );
279*b1cdbd2cSJim Jagielski     }
280*b1cdbd2cSJim Jagielski /* -----------------------------13.11.2001 12:30------------------------------
281*b1cdbd2cSJim Jagielski 
282*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
~OEMLicenseTabPage()283*b1cdbd2cSJim Jagielski     OEMLicenseTabPage::~OEMLicenseTabPage()
284*b1cdbd2cSJim Jagielski     {
285*b1cdbd2cSJim Jagielski     }
286*b1cdbd2cSJim Jagielski /* ---------------------------14.11.2001 11:24----------------------------
287*b1cdbd2cSJim Jagielski 
288*b1cdbd2cSJim Jagielski     -----------------------------------------------------------------------*/
ActivatePage()289*b1cdbd2cSJim Jagielski     void OEMLicenseTabPage::ActivatePage()
290*b1cdbd2cSJim Jagielski     {
291*b1cdbd2cSJim Jagielski         if(!aLicenseML.GetText().Len())
292*b1cdbd2cSJim Jagielski         {
293*b1cdbd2cSJim Jagielski         aLicenseML.SetLeftMargin( 5 );
294*b1cdbd2cSJim Jagielski         String sLicense;
295*b1cdbd2cSJim Jagielski #ifdef UNX
296*b1cdbd2cSJim Jagielski         OEMPreloadDialog::LoadFromLocalFile(String::CreateFromAscii("LICENSE"), sLicense);
297*b1cdbd2cSJim Jagielski #else
298*b1cdbd2cSJim Jagielski         OEMPreloadDialog::LoadFromLocalFile(String::CreateFromAscii("license.txt"), sLicense);
299*b1cdbd2cSJim Jagielski #endif
300*b1cdbd2cSJim Jagielski         aLicenseML.SetText( sLicense );
301*b1cdbd2cSJim Jagielski         }
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski         EnableControls();
304*b1cdbd2cSJim Jagielski     }
305*b1cdbd2cSJim Jagielski 
306*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
IMPL_LINK(OEMLicenseTabPage,AcceptHdl,CheckBox *,EMPTYARG)307*b1cdbd2cSJim Jagielski     IMPL_LINK( OEMLicenseTabPage, AcceptHdl, CheckBox *, EMPTYARG )
308*b1cdbd2cSJim Jagielski     {
309*b1cdbd2cSJim Jagielski         EnableControls();
310*b1cdbd2cSJim Jagielski         return 0;
311*b1cdbd2cSJim Jagielski     }
312*b1cdbd2cSJim Jagielski 
313*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
IMPL_LINK(OEMLicenseTabPage,PageDownHdl,PushButton *,EMPTYARG)314*b1cdbd2cSJim Jagielski     IMPL_LINK( OEMLicenseTabPage, PageDownHdl, PushButton *, EMPTYARG )
315*b1cdbd2cSJim Jagielski     {
316*b1cdbd2cSJim Jagielski         aLicenseML.ScrollDown( SCROLL_PAGEDOWN );
317*b1cdbd2cSJim Jagielski         return 0;
318*b1cdbd2cSJim Jagielski     }
319*b1cdbd2cSJim Jagielski 
320*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
IMPL_LINK(OEMLicenseTabPage,EndReachedHdl,LicenceView *,EMPTYARG)321*b1cdbd2cSJim Jagielski     IMPL_LINK( OEMLicenseTabPage, EndReachedHdl, LicenceView *, EMPTYARG )
322*b1cdbd2cSJim Jagielski     {
323*b1cdbd2cSJim Jagielski         bEndReached = sal_True;
324*b1cdbd2cSJim Jagielski 
325*b1cdbd2cSJim Jagielski         EnableControls();
326*b1cdbd2cSJim Jagielski         aCBAccept.GrabFocus();
327*b1cdbd2cSJim Jagielski 
328*b1cdbd2cSJim Jagielski         return 0;
329*b1cdbd2cSJim Jagielski     }
330*b1cdbd2cSJim Jagielski 
331*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
IMPL_LINK(OEMLicenseTabPage,ScrolledHdl,LicenceView *,EMPTYARG)332*b1cdbd2cSJim Jagielski     IMPL_LINK( OEMLicenseTabPage, ScrolledHdl, LicenceView *, EMPTYARG )
333*b1cdbd2cSJim Jagielski     {
334*b1cdbd2cSJim Jagielski         EnableControls();
335*b1cdbd2cSJim Jagielski 
336*b1cdbd2cSJim Jagielski         return 0;
337*b1cdbd2cSJim Jagielski     }
338*b1cdbd2cSJim Jagielski 
339*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
EnableControls()340*b1cdbd2cSJim Jagielski     void OEMLicenseTabPage::EnableControls()
341*b1cdbd2cSJim Jagielski     {
342*b1cdbd2cSJim Jagielski         if( !bEndReached &&
343*b1cdbd2cSJim Jagielski             ( aLicenseML.IsEndReached() || !aLicenseML.GetText().Len() ) )
344*b1cdbd2cSJim Jagielski             bEndReached = sal_True;
345*b1cdbd2cSJim Jagielski 
346*b1cdbd2cSJim Jagielski         if ( bEndReached )
347*b1cdbd2cSJim Jagielski         {
348*b1cdbd2cSJim Jagielski             Point aPos( 0, aInfo3_1FT.GetPosPixel().Y() );
349*b1cdbd2cSJim Jagielski             aArrow.SetPosPixel( aPos );
350*b1cdbd2cSJim Jagielski             aCBAccept.Enable();
351*b1cdbd2cSJim Jagielski         }
352*b1cdbd2cSJim Jagielski         else
353*b1cdbd2cSJim Jagielski         {
354*b1cdbd2cSJim Jagielski             Point aPos( 0, aInfo2_1FT.GetPosPixel().Y() );
355*b1cdbd2cSJim Jagielski             aArrow.SetPosPixel( aPos );
356*b1cdbd2cSJim Jagielski             aCBAccept.Disable();
357*b1cdbd2cSJim Jagielski         }
358*b1cdbd2cSJim Jagielski 
359*b1cdbd2cSJim Jagielski         if ( aLicenseML.IsEndReached() )
360*b1cdbd2cSJim Jagielski             aPBPageDown.Disable();
361*b1cdbd2cSJim Jagielski         else
362*b1cdbd2cSJim Jagielski             aPBPageDown.Enable();
363*b1cdbd2cSJim Jagielski 
364*b1cdbd2cSJim Jagielski         if ( aCBAccept.IsChecked() )
365*b1cdbd2cSJim Jagielski         {
366*b1cdbd2cSJim Jagielski             PushButton *pNext = pPreloadDialog->GetNextButton();
367*b1cdbd2cSJim Jagielski             if ( ! pNext->IsEnabled() )
368*b1cdbd2cSJim Jagielski             {
369*b1cdbd2cSJim Jagielski                 pPreloadDialog->SetCancelString( aOldCancelText );
370*b1cdbd2cSJim Jagielski                 pNext->Enable(sal_True);
371*b1cdbd2cSJim Jagielski             }
372*b1cdbd2cSJim Jagielski         }
373*b1cdbd2cSJim Jagielski         else
374*b1cdbd2cSJim Jagielski         {
375*b1cdbd2cSJim Jagielski             PushButton *pNext = pPreloadDialog->GetNextButton();
376*b1cdbd2cSJim Jagielski             if ( pNext->IsEnabled() )
377*b1cdbd2cSJim Jagielski             {
378*b1cdbd2cSJim Jagielski                 pPreloadDialog->SetCancelString( aStrNotAccept );
379*b1cdbd2cSJim Jagielski                 pNext->Enable(sal_False);
380*b1cdbd2cSJim Jagielski             }
381*b1cdbd2cSJim Jagielski         }
382*b1cdbd2cSJim Jagielski     }
383*b1cdbd2cSJim Jagielski 
384*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
385*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
386*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
LicenceView(Window * pParent,const ResId & rResId)387*b1cdbd2cSJim Jagielski     LicenceView::LicenceView( Window* pParent, const ResId& rResId )
388*b1cdbd2cSJim Jagielski         : MultiLineEdit( pParent, rResId )
389*b1cdbd2cSJim Jagielski     {
390*b1cdbd2cSJim Jagielski         SetLeftMargin( 5 );
391*b1cdbd2cSJim Jagielski 
392*b1cdbd2cSJim Jagielski         mbEndReached = IsEndReached();
393*b1cdbd2cSJim Jagielski 
394*b1cdbd2cSJim Jagielski 	    StartListening( *GetTextEngine() );
395*b1cdbd2cSJim Jagielski     }
396*b1cdbd2cSJim Jagielski 
397*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
~LicenceView()398*b1cdbd2cSJim Jagielski     LicenceView::~LicenceView()
399*b1cdbd2cSJim Jagielski     {
400*b1cdbd2cSJim Jagielski         maEndReachedHdl = Link();
401*b1cdbd2cSJim Jagielski         maScrolledHdl   = Link();
402*b1cdbd2cSJim Jagielski 
403*b1cdbd2cSJim Jagielski         EndListeningAll();
404*b1cdbd2cSJim Jagielski     }
405*b1cdbd2cSJim Jagielski 
406*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
ScrollDown(ScrollType eScroll)407*b1cdbd2cSJim Jagielski     void LicenceView::ScrollDown( ScrollType eScroll )
408*b1cdbd2cSJim Jagielski     {
409*b1cdbd2cSJim Jagielski         ScrollBar*  pScroll = GetVScrollBar();
410*b1cdbd2cSJim Jagielski 
411*b1cdbd2cSJim Jagielski         if ( pScroll )
412*b1cdbd2cSJim Jagielski             pScroll->DoScrollAction( eScroll );
413*b1cdbd2cSJim Jagielski     }
414*b1cdbd2cSJim Jagielski 
415*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
IsEndReached() const416*b1cdbd2cSJim Jagielski     sal_Bool LicenceView::IsEndReached() const
417*b1cdbd2cSJim Jagielski     {
418*b1cdbd2cSJim Jagielski         sal_Bool bEndReached;
419*b1cdbd2cSJim Jagielski 
420*b1cdbd2cSJim Jagielski         ExtTextView*    pView = GetTextView();
421*b1cdbd2cSJim Jagielski         ExtTextEngine*  pEdit = GetTextEngine();
422*b1cdbd2cSJim Jagielski         sal_uLong           nHeight = pEdit->GetTextHeight();
423*b1cdbd2cSJim Jagielski         Size            aOutSize = pView->GetWindow()->GetOutputSizePixel();
424*b1cdbd2cSJim Jagielski         Point           aBottom( 0, aOutSize.Height() );
425*b1cdbd2cSJim Jagielski 
426*b1cdbd2cSJim Jagielski         if ( (sal_uLong) pView->GetDocPos( aBottom ).Y() >= nHeight - 1 )
427*b1cdbd2cSJim Jagielski             bEndReached = sal_True;
428*b1cdbd2cSJim Jagielski         else
429*b1cdbd2cSJim Jagielski             bEndReached = sal_False;
430*b1cdbd2cSJim Jagielski 
431*b1cdbd2cSJim Jagielski         return bEndReached;
432*b1cdbd2cSJim Jagielski     }
433*b1cdbd2cSJim Jagielski 
434*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
Notify(SfxBroadcaster &,const SfxHint & rHint)435*b1cdbd2cSJim Jagielski     void LicenceView::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
436*b1cdbd2cSJim Jagielski     {
437*b1cdbd2cSJim Jagielski         if ( rHint.IsA( TYPE(TextHint) ) )
438*b1cdbd2cSJim Jagielski         {
439*b1cdbd2cSJim Jagielski             sal_Bool    bLastVal = EndReached();
440*b1cdbd2cSJim Jagielski             sal_uLong   nId = ((const TextHint&)rHint).GetId();
441*b1cdbd2cSJim Jagielski 
442*b1cdbd2cSJim Jagielski             if ( nId == TEXT_HINT_PARAINSERTED )
443*b1cdbd2cSJim Jagielski             {
444*b1cdbd2cSJim Jagielski                 if ( bLastVal )
445*b1cdbd2cSJim Jagielski                     mbEndReached = IsEndReached();
446*b1cdbd2cSJim Jagielski             }
447*b1cdbd2cSJim Jagielski             else if ( nId == TEXT_HINT_VIEWSCROLLED )
448*b1cdbd2cSJim Jagielski             {
449*b1cdbd2cSJim Jagielski                 if ( ! mbEndReached )
450*b1cdbd2cSJim Jagielski                     mbEndReached = IsEndReached();
451*b1cdbd2cSJim Jagielski                 maScrolledHdl.Call( this );
452*b1cdbd2cSJim Jagielski             }
453*b1cdbd2cSJim Jagielski 
454*b1cdbd2cSJim Jagielski             if ( EndReached() && !bLastVal )
455*b1cdbd2cSJim Jagielski             {
456*b1cdbd2cSJim Jagielski                 maEndReachedHdl.Call( this );
457*b1cdbd2cSJim Jagielski             }
458*b1cdbd2cSJim Jagielski         }
459*b1cdbd2cSJim Jagielski     }
460*b1cdbd2cSJim Jagielski 
461*b1cdbd2cSJim Jagielski     //------------------------------------------------------------------------
462*b1cdbd2cSJim Jagielski 
463*b1cdbd2cSJim Jagielski //.........................................................................
464*b1cdbd2cSJim Jagielski }   // namespace preload
465*b1cdbd2cSJim Jagielski //.........................................................................
466*b1cdbd2cSJim Jagielski 
467*b1cdbd2cSJim Jagielski 
468