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