Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / fpdfsdk / include / fpdfxfa / fpdfxfa_app.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4  \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _FPDFXFA_APP_H_\r
8 #define _FPDFXFA_APP_H_\r
9 \r
10 class CPDFXFA_App;\r
11 class IFXJS_Runtime;\r
12 class CJS_RuntimeFactory;\r
13 \r
14 class CPDFXFA_App : public IXFA_AppProvider, public CFX_Object \r
15 {\r
16 public:\r
17         CPDFXFA_App();\r
18         ~CPDFXFA_App();\r
19 \r
20         FX_BOOL                         Initialize();\r
21 \r
22         IXFA_App*                       GetXFAApp() { return m_pXFAApp; }\r
23 \r
24                                                 \r
25         /*CPDFDoc_Environment*GetFormFillEnv(){ return m_pEnv; }*/\r
26         FX_BOOL                         AddFormFillEnv(CPDFDoc_Environment* pEnv);\r
27         FX_BOOL                         RemoveFormFillEnv(CPDFDoc_Environment* pEnv);\r
28 \r
29         FXJSE_HRUNTIME          GetJSERuntime() { return m_hJSERuntime; }\r
30 \r
31         void                            ReleaseRuntime();\r
32 \r
33         FX_BOOL                         InitRuntime(FX_BOOL bReset = FALSE) {\r
34                 if (bReset) {\r
35                         m_bInitRuntime = FALSE;\r
36                         return TRUE;\r
37                 }\r
38                 if (m_bInitRuntime)\r
39                         return TRUE;\r
40                 m_bInitRuntime = TRUE;\r
41                 return FALSE;\r
42         }\r
43 \r
44         //IFXJS_Runtime*                GetJSRuntime();\r
45 \r
46         CJS_RuntimeFactory* GetRuntimeFactory() {return m_pJSRuntimeFactory;}\r
47 \r
48 public:\r
49         /**\r
50          *Specifies the name of the client application in which a form currently exists. Such as Exchange-Pro.\r
51          */\r
52         virtual void            GetAppType(CFX_WideString &wsAppType);\r
53         virtual void            SetAppType(FX_WSTR wsAppType) ;\r
54         virtual void            SetFoxitAppType(FX_WSTR wsFoxitAppType) { return; }\r
55         virtual void            GetFoxitAppType(CFX_WideString &wsFoxitAppType) { return; }\r
56         virtual void            GetFoxitAppName(CFX_WideString& wsFoxitName) {wsFoxitName = L"Foxit";}\r
57         virtual void            GetFoxitVersion(CFX_WideString &wsFoxitVersion) {wsFoxitVersion = L"7.0";}\r
58         /**\r
59          *Returns the language of the running host application. Such as zh_CN\r
60          */\r
61         virtual void            GetLanguage(CFX_WideString &wsLanguage);\r
62         /** \r
63                 *Returns the platform of the machine running the script. Such as WIN\r
64          */\r
65         virtual void            GetPlatform(CFX_WideString &wsPlatform);\r
66         /** \r
67          * Indicates the packaging of the application that is running the script. Such as Full\r
68          */\r
69         virtual void            GetVariation(CFX_WideString &wsVariation);\r
70         /** \r
71          * Indicates the version number of the current application. Such as 9\r
72          */\r
73         virtual void            GetVersion(CFX_WideString &wsVersion);\r
74         //Get application name, such as Phantom\r
75         virtual void            GetAppName(CFX_WideString& wsName);\r
76         /** \r
77          *Causes the system to play a sound.    \r
78          * @param[in] dwType The system code for the appropriate sound.0 (Error)1 (Warning)2 (Question)3 (Status)4 (Default)\r
79          */\r
80         virtual void            Beep(FX_DWORD dwType);\r
81         /**\r
82          * Displays a message box.\r
83          * @param[in] dwIconType        Icon type, refer to XFA_MBICON.\r
84          * @param[in] dwButtonType      Button type, refer to XFA_MESSAGEBUTTON.\r
85          * @return A valid integer representing the value of the button pressed by the user, refer to XFA_ID.\r
86          */\r
87         virtual FX_INT32        MsgBox(FX_WSTR wsMessage, FX_WSTR wsTitle = FX_WSTRC(L""), FX_DWORD dwIconType = 0, FX_DWORD dwButtonType = 0);\r
88         //bMark True (default) Masks the user¡¯s answer with * (asterisks). False Does not mask the user¡¯s answer. \r
89         virtual void            Response(CFX_WideString &wsAnswer, FX_WSTR wsQuestion, FX_WSTR wsTitle = FX_WSTRC(L""), FX_WSTR wsDefaultAnswer = FX_WSTRC(L""), FX_BOOL bMark = TRUE);\r
90         virtual FX_INT32        GetDocumentCountInBatch();\r
91         virtual FX_INT32        GetCurDocumentInBatch();\r
92         //wsURL http, ftp, such as "http://www.w3.org/TR/REC-xml-names/".\r
93         virtual IFX_FileRead* DownloadURL(FX_WSTR wsURL);\r
94         /*\r
95         * Post data to the given url.\r
96         * @param[in] wsURL                      the URL being uploaded.\r
97         * @param[in] wsData                     the data being uploaded.\r
98         * @param[in] wsContentType      the content type of data including text/html, text/xml, text/plain, multipart/form-data, \r
99         *                                                       application/x-www-form-urlencoded, application/octet-stream, any valid MIME type.\r
100         * @param[in] wsEncode           the encode of data including UTF-8, UTF-16, ISO8859-1, any recognized [IANA]character encoding\r
101         * @param[in] wsHeader           any additional HTTP headers to be included in the post.\r
102         * @param[out] wsResponse        decoded response from server.\r
103         * @return TRUE Server permitted the post request, FALSE otherwise.\r
104         */\r
105         virtual FX_BOOL         PostRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsContentType, \r
106                                                                             FX_WSTR wsEncode, FX_WSTR wsHeader, CFX_WideString &wsResponse);\r
107 \r
108         /*\r
109         * Put data to the given url.\r
110         * @param[in] wsURL                      the URL being uploaded.\r
111         * @param[in] wsData                     the data being uploaded.\r
112         * @param[in] wsEncode           the encode of data including UTF-8, UTF-16, ISO8859-1, any recognized [IANA]character encoding\r
113         * @return TRUE Server permitted the post request, FALSE otherwise.\r
114         */\r
115         virtual FX_BOOL         PutRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsEncode);\r
116 \r
117         virtual void            LoadString(FX_INT32 iStringID, CFX_WideString &wsString);\r
118         virtual FX_BOOL         ShowFileDialog(FX_WSTR wsTitle, FX_WSTR wsFilter, CFX_WideStringArray &wsPathArr, FX_BOOL bOpen = TRUE);\r
119         virtual IFWL_AdapterTimerMgr* GetTimerMgr();\r
120 \r
121         CFX_ArrayTemplate<CPDFDoc_Environment*> m_pEnvList;\r
122 \r
123 public:\r
124         static CPDFXFA_App* m_pApp;\r
125 \r
126 private:\r
127         IXFA_App*  m_pXFAApp;\r
128         IXFA_FontMgr* m_pFontMgr;\r
129         FXJSE_HRUNTIME m_hJSERuntime;\r
130         IFXJS_Runtime* m_pJSRuntime;\r
131         CJS_RuntimeFactory*  m_pJSRuntimeFactory;\r
132 \r
133         CFX_WideString  m_csAppType;\r
134         FX_BOOL                 m_bInitRuntime;\r
135 };\r
136 \r
137 CPDFXFA_App* FPDFXFA_GetApp();\r
138 void FPDFXFA_ReleaseApp();\r
139 \r
140 #endif \r