xref: /aoo42x/main/sfx2/inc/sfx2/sfxhtml.hxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _SFXHTML_HXX
29 #define _SFXHTML_HXX
30 
31 #include "sal/config.h"
32 #include "sfx2/dllapi.h"
33 #include "sal/types.h"
34 #include <i18npool/lang.h>
35 #include <svtools/parhtml.hxx>
36 #include <svl/macitem.hxx>
37 
38 
39 class ImageMap;
40 class SfxMedium;
41 class SfxObjectShell;
42 
43 class SFX2_DLLPUBLIC SfxHTMLParser : public HTMLParser
44 {
45 	DECL_DLLPRIVATE_STATIC_LINK( SfxHTMLParser, FileDownloadDone, void* );
46 
47 	String					aScriptType;
48 
49 	SfxMedium*				pMedium;
50 	SfxMedium *pDLMedium;	// Medium fuer Download von Files
51 
52 	sal_uInt16 nMetaTags;		// Anzahl der bisher gelesenen Meta-Tags
53 	ScriptType eScriptType;
54 
55 	SAL_DLLPRIVATE void GetScriptType_Impl( SvKeyValueIterator* );
56 
57 protected:
58 
59 	SfxHTMLParser( SvStream& rStream, sal_Bool bNewDoc=sal_True, SfxMedium *pMedium=0 );
60 
61     virtual ~SfxHTMLParser();
62 
63 public:
64 	// Lesen der Optionen einer Image-Map
65 	// <MAP>: sal_True = Image-Map hat einen Namen
66 	// <AREA>: sal_True = Image-Map hat jetzt einen Bereich mehr
67 	static sal_Bool ParseMapOptions(ImageMap * pImageMap,
68 								const HTMLOptions * pOptions );
69 	sal_Bool ParseMapOptions(ImageMap * pImageMap)
70 	{ return ParseMapOptions(pImageMap, GetOptions()); }
71     static sal_Bool ParseAreaOptions(ImageMap * pImageMap, const String& rBaseURL,
72 								 const HTMLOptions * pOptions,
73 								 sal_uInt16 nEventMouseOver = 0,
74 								 sal_uInt16 nEventMouseOut = 0 );
75     inline sal_Bool ParseAreaOptions(ImageMap * pImageMap, const String& rBaseURL,
76 								 sal_uInt16 nEventMouseOver = 0,
77 								 sal_uInt16 nEventMouseOut = 0);
78 
79 	// <TD SDVAL="..." SDNUM="...">
80 	static double GetTableDataOptionsValNum( sal_uInt32& nNumForm,
81 			LanguageType& eNumLang, const String& aValStr,
82 			const String& aNumStr, SvNumberFormatter& rFormatter );
83 
84 protected:
85 
86 	// Start eines File-Downloads. Dieser erfolgt synchron oder asynchron.
87 	// Im synchronen Fall befindet sich der Parser nach dem Aufruf im
88 	// Working-Zustand. Die gelesene Datei kann dann direkt mit
89 	// FinishFileDownload abgeholt werden.
90 	// Im asynchronen Fall befindet sich der Parser nach dem Aufruf im
91 	// Pending-Zustand. Der Parser muss dann ueber das Continue verlassen
92 	// werden (ohne Reschedule!). Wenn die Datei geladen ist, wird
93 	// ein Continue mit dem uebergebenen Token aufgerufen. Die Datei kann
94 	// dann wiederum mit FinishFileDownload abgeholt werden.
95 	// Zum Abbrechen des Dwonloads sollte eine Shell uebergeben werden.
96 	// Es kann nur ein einziger Download gleichzeitig existieren. Fuer jeden
97 	// gestarteten Download muss FinshFileDownload aufgerufen werden.
98 	void StartFileDownload( const String& rURL, int nToken,
99 							SfxObjectShell *pSh=0 );
100 
101 	// Ermittelnd des MIME-Types eines zuvor downloadeten Files. Kann nur
102 	// unmittelbar vor FinishFileDownload aufgerufen werden, nie aber
103 	// danach.
104 
105 	sal_Bool GetFileDownloadMIME( String& rMime );
106 
107 	// Beenden eines asynchronen File-Downloads. Gibt sal_True zurueck, wenn
108 	// der Download geklappt hat. Das gelesene File befindet sich dann in
109 	// dem uebergeben String.
110 	sal_Bool FinishFileDownload( String& rStr );
111 
112 	// Gibt sal_True zurueck, wenn ein File downloaded wurde und
113 	// FileDownloadFinished noch nicht gerufen wurde.
114 	sal_Bool ShouldFinishFileDownload() const { return pDLMedium != 0; }
115 
116 	SfxMedium *GetMedium() { return pMedium; }
117 	const SfxMedium *GetMedium() const { return pMedium; }
118 
119 	// Default (auch ohne Iterator) ist JavaScript
120 	ScriptType GetScriptType( SvKeyValueIterator* ) const;
121 	const String& GetScriptTypeString( SvKeyValueIterator* ) const;
122 };
123 
124 inline sal_Bool SfxHTMLParser::ParseAreaOptions(ImageMap * pImageMap, const String& rBaseURL,
125 											sal_uInt16 nEventMouseOver,
126 											sal_uInt16 nEventMouseOut)
127 {
128     return ParseAreaOptions( pImageMap, rBaseURL, GetOptions(),
129 							 nEventMouseOver, nEventMouseOut );
130 }
131 
132 
133 #endif
134