• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #ifndef _APP_H_
8 #define _APP_H_
9 
10 class CJS_Runtime;
11 
12 /* ---------------------------- TimerObj ---------------------------- */
13 
14 class CJS_Timer;
15 
16 class TimerObj : public CJS_EmbedObj
17 {
18 public:
19 	TimerObj(CJS_Object* pJSObject);
20 	virtual ~TimerObj();
21 
22 public:
23 	void			SetTimer(CJS_Timer* pTimer);
24 	CJS_Timer*		GetTimer() const;
25 
26 private:
27 	CJS_Timer*		m_pTimer;
28 };
29 
30 class CJS_TimerObj : public CJS_Object
31 {
32 public:
CJS_TimerObj(JSFXObject pObject)33 	CJS_TimerObj(JSFXObject pObject) : CJS_Object(pObject) {}
~CJS_TimerObj()34 	virtual ~CJS_TimerObj(){}
35 
36 	DECLARE_JS_CLASS(CJS_TimerObj);
37 };
38 
39 
40 // struct APP_MENUITEM_ARRAY;
41 //
42 // struct APP_MENUITEM
43 // {
44 // 	APP_MENUITEM() : oSubMenu(NULL), cName(L""), cReturn(L""), bMarked(false), bEnabled(true)
45 // 	{
46 // 	}
47 // 	CFX_WideString cName;
48 // 	CFX_WideString cReturn;
49 // 	APP_MENUITEM_ARRAY* oSubMenu;
50 // 	bool bMarked;
51 // 	bool bEnabled;
52 // };
53 
54 // struct APP_MENUITEM_ARRAY
55 // {
56 // 	APP_MENUITEM_ARRAY() : m_hMenu(NULL), pContents(NULL), nSize(0)
57 // 	{
58 //
59 // 	}
60 // 	APP_MENUITEM * pContents;
61 // 	HMENU m_hMenu;
62 // 	int	nSize;
63 // };
64 
65 // struct APP_MENU;
66 // struct APP_MENU_ARRAY
67 // {
68 // 	APP_MENU_ARRAY():
69 //     pContent(NULL)
70 // 	{
71 // 	}
72 //
73 // 	APP_MENU* pContent;
74 // };
75 
76 // struct APP_MENU
77 // {
78 // 	APP_MENU():bSubMenu(false),
79 // 	SubMenuItems(NULL),
80 // 	cwMenuItemName(L""),
81 // 	hMenu(NULL),
82 // 	iSize(0)
83 // 	{
84 //
85 // 	}
86 //
87 // 	APP_MENU(CFX_WideString &cwName):
88 // 	cwMenuItemName(cwName),
89 // 	bSubMenu(false),
90 // 	SubMenuItems(NULL),
91 // 	hMenu(NULL),
92 // 	iSize(0)
93 // 	{
94 //
95 // 	}
96 //
97 // 	CFX_WideString cwMenuItemName;
98 // 	bool bSubMenu;
99 // 	APP_MENU_ARRAY* SubMenuItems;
100 // 	int iSize;
101 // 	HMENU hMenu;
102 // };
103 
104 class app : public CJS_EmbedObj
105 {
106 public:
107 	app(CJS_Object * pJSObject);
108 	virtual ~app();
109 
110 public:
111 	FX_BOOL						activeDocs(OBJ_PROP_PARAMS);
112 	FX_BOOL						calculate(OBJ_PROP_PARAMS);
113 	FX_BOOL						formsVersion(OBJ_PROP_PARAMS);
114 	FX_BOOL						fs(OBJ_PROP_PARAMS);
115 	FX_BOOL						fullscreen(OBJ_PROP_PARAMS);
116 	FX_BOOL						language(OBJ_PROP_PARAMS);
117 	FX_BOOL						media(OBJ_PROP_PARAMS);
118 	FX_BOOL						platform(OBJ_PROP_PARAMS);
119 	FX_BOOL						runtimeHighlight(OBJ_PROP_PARAMS);
120 	FX_BOOL						viewerType(OBJ_PROP_PARAMS);
121 	FX_BOOL						viewerVariation(OBJ_PROP_PARAMS);
122 	FX_BOOL						viewerVersion(OBJ_PROP_PARAMS);
123 
124 
125 	FX_BOOL						alert(OBJ_METHOD_PARAMS);
126 	FX_BOOL						beep(OBJ_METHOD_PARAMS);
127 	FX_BOOL						browseForDoc(OBJ_METHOD_PARAMS);
128 	FX_BOOL						clearInterval(OBJ_METHOD_PARAMS);
129 	FX_BOOL						clearTimeOut(OBJ_METHOD_PARAMS);
130 	FX_BOOL						execDialog(OBJ_METHOD_PARAMS);
131 	FX_BOOL						execMenuItem(OBJ_METHOD_PARAMS);
132 	FX_BOOL						findComponent(OBJ_METHOD_PARAMS);
133 	FX_BOOL						goBack(OBJ_METHOD_PARAMS);
134 	FX_BOOL						goForward(OBJ_METHOD_PARAMS);
135 	FX_BOOL						launchURL(OBJ_METHOD_PARAMS);
136 	FX_BOOL						mailMsg(OBJ_METHOD_PARAMS);
137 	FX_BOOL						newFDF(OBJ_METHOD_PARAMS);
138 	FX_BOOL						newDoc(OBJ_METHOD_PARAMS);
139 	FX_BOOL						openDoc(OBJ_METHOD_PARAMS);
140 	FX_BOOL						openFDF(OBJ_METHOD_PARAMS);
141 	FX_BOOL						popUpMenuEx(OBJ_METHOD_PARAMS);
142 	FX_BOOL						popUpMenu(OBJ_METHOD_PARAMS);
143 	FX_BOOL						response(OBJ_METHOD_PARAMS);
144 	FX_BOOL						setInterval(OBJ_METHOD_PARAMS);
145 	FX_BOOL						setTimeOut(OBJ_METHOD_PARAMS);
146 
147 private:
148 //	FX_DWORD					AppGetTickCount();
149 	void						TimerProc(CJS_Timer* pTimer);
150 	void						RunJsScript(CJS_Runtime * pRuntime,const CFX_WideString & wsScript);
151 //	void						ParsePopupMenuObj(APP_MENUITEM * ppMenuItem,JSObject * pObj);
152 //	void						DeleteMenuItems(APP_MENUITEM_ARRAY * pMenuItems);
153 // 	void						AddMenuItem(APP_MENUITEM_ARRAY * pMenuItems, HMENU hMenu, MENUITEMINFO MenuItemInfo);
154 // 	void						InitMenuItemInfo(MENUITEMINFO& MenuItemInfo);
155 // 	void						DestroyPopUpMenu();
156 
157 // 	void						ParserMenuItem(APP_MENU* pHead, const CJS_Parameters&params);
158 // 	void						AddItemToMenu(APP_MENU* pHead, HMENU hMenu, MENUITEMINFO MenuItemInfo);
159 // 	void						DestroyMenuItems(APP_MENU* pHead);
160 
161 public:
162 	static CFX_WideString		SysPathToPDFPath(const CFX_WideString& sOldPath);
163 	static CFX_WideString		PDFPathToSysPath(const CFX_WideString& sOldPath);
164 	static CFX_WideString		RelativePathToSysPath(const CFX_WideString& sOldPath, const CFX_WideString& sFilePath);
165 
166 
167 private:
168 
169 	bool						m_bCalculate;
170 	CJS_Runtime*				m_pRuntime;
171 	bool						m_bRuntimeHighLight;
172 
173 	CFX_ArrayTemplate<CJS_Timer*>	m_aTimer;
174 //	APP_MENU*					m_pMenuHead;
175 
176 public:
177 //	static CReader_App* s_App;
178 };
179 
180 class CJS_App : public CJS_Object
181 {
182 public:
CJS_App(JSFXObject pObject)183 	CJS_App(JSFXObject  pObject) : CJS_Object(pObject) {};
~CJS_App(void)184 	virtual ~CJS_App(void){};
185 
186 	DECLARE_JS_CLASS(CJS_App);
187 
188 	JS_STATIC_PROP(activeDocs, app);
189 	JS_STATIC_PROP(calculate, app);
190 	JS_STATIC_PROP(formsVersion, app);
191 	JS_STATIC_PROP(fs, app);
192 	JS_STATIC_PROP(fullscreen, app);
193 	JS_STATIC_PROP(language, app);
194 	JS_STATIC_PROP(media, app);
195 	JS_STATIC_PROP(platform, app);
196 	JS_STATIC_PROP(runtimeHighlight, app);
197 	JS_STATIC_PROP(viewerType, app);
198 	JS_STATIC_PROP(viewerVariation, app);
199 	JS_STATIC_PROP(viewerVersion, app);
200 
201 	JS_STATIC_METHOD(alert, app);
202 	JS_STATIC_METHOD(beep, app);
203 	JS_STATIC_METHOD(browseForDoc, app);
204 	JS_STATIC_METHOD(clearInterval, app);
205 	JS_STATIC_METHOD(clearTimeOut, app);
206 	JS_STATIC_METHOD(execDialog, app);
207 	JS_STATIC_METHOD(execMenuItem, app);
208 	JS_STATIC_METHOD(findComponent, app);
209 	JS_STATIC_METHOD(goBack, app);
210 	JS_STATIC_METHOD(goForward, app);
211 	JS_STATIC_METHOD(launchURL, app);
212 	JS_STATIC_METHOD(mailMsg, app);
213 	JS_STATIC_METHOD(newFDF, app);
214 	JS_STATIC_METHOD(newDoc, app);
215 	JS_STATIC_METHOD(openDoc, app);
216 	JS_STATIC_METHOD(openFDF, app);
217 	JS_STATIC_METHOD(popUpMenuEx, app);
218 	JS_STATIC_METHOD(popUpMenu, app);
219 	JS_STATIC_METHOD(response, app);
220 	JS_STATIC_METHOD(setInterval, app);
221 	JS_STATIC_METHOD(setTimeOut, app);
222 
223 };
224 
225 #endif //_APP_H_
226