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 // MsOfficeDocumentInformation.h: Schnittstelle f�r die Klasse MsOfficeDocumentInformation.
23*b1cdbd2cSJim Jagielski //
24*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski #ifndef _REGISTRATIONCONTEXTINFORMATION_HXX_
27*b1cdbd2cSJim Jagielski #define _REGISTRATIONCONTEXTINFORMATION_HXX_
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #ifdef _MSC_VER
30*b1cdbd2cSJim Jagielski #pragma warning(push, 1) /* disable warnings within system headers */
31*b1cdbd2cSJim Jagielski #endif
32*b1cdbd2cSJim Jagielski #define WIN32_LEAN_AND_MEAN
33*b1cdbd2cSJim Jagielski #include <windows.h>
34*b1cdbd2cSJim Jagielski #include <msi.h>
35*b1cdbd2cSJim Jagielski #ifdef _MSC_VER
36*b1cdbd2cSJim Jagielski #pragma warning(pop)
37*b1cdbd2cSJim Jagielski #endif
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski #include <string>
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski /** A simple implementation class that returns the
42*b1cdbd2cSJim Jagielski 	appropriate display names for the Microsoft
43*b1cdbd2cSJim Jagielski 	Office document types.
44*b1cdbd2cSJim Jagielski 	Under Windows 9x this class checks if the
45*b1cdbd2cSJim Jagielski 	document display name is convertable to an ANSI
46*b1cdbd2cSJim Jagielski 	string and if not returns an english default.
47*b1cdbd2cSJim Jagielski 	So we avoid garbage if soemone for instance
48*b1cdbd2cSJim Jagielski 	installs an japanese version
49*b1cdbd2cSJim Jagielski 	under a German Windows 98 for instance.
50*b1cdbd2cSJim Jagielski */
51*b1cdbd2cSJim Jagielski class RegistrationContextInformation
52*b1cdbd2cSJim Jagielski {
53*b1cdbd2cSJim Jagielski public:
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski 	enum SHELL_COMMAND {New, Open, Print, Printto};
56*b1cdbd2cSJim Jagielski 	enum OFFICE_APPLICATION {Office, Writer, Calc, Impress};
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski 	RegistrationContextInformation(MSIHANDLE hMsi, const std::wstring& OpenOfficeExecutablePath);
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski 	/** Word document information
61*b1cdbd2cSJim Jagielski 		The icon index is the index of the icon
62*b1cdbd2cSJim Jagielski 		in soffice.exe to be associated with
63*b1cdbd2cSJim Jagielski 		word document files
64*b1cdbd2cSJim Jagielski 	*/
65*b1cdbd2cSJim Jagielski 	std::wstring GetWordDocumentDisplayName() const;
66*b1cdbd2cSJim Jagielski 	std::wstring GetWordDocumentFileExtension() const;
67*b1cdbd2cSJim Jagielski 	std::wstring GetWordDocumentDefaultIconEntry() const;
68*b1cdbd2cSJim Jagielski 	std::wstring GetWordDocumentDefaultShellCommand() const;
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski 	/** Word template information
71*b1cdbd2cSJim Jagielski 		The icon index is the index of the icon
72*b1cdbd2cSJim Jagielski 		in soffice.exe to be associated with
73*b1cdbd2cSJim Jagielski 		word template files
74*b1cdbd2cSJim Jagielski 	*/
75*b1cdbd2cSJim Jagielski 	std::wstring GetWordTemplateDisplayName() const;
76*b1cdbd2cSJim Jagielski 	std::wstring GetWordTemplateFileExtension() const;
77*b1cdbd2cSJim Jagielski 	std::wstring GetWordTemplateDefaultIconEntry() const;
78*b1cdbd2cSJim Jagielski 	std::wstring GetWordTemplateDefaultShellCommand() const;
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski 	/** Rtf document information
81*b1cdbd2cSJim Jagielski 		The icon index is the index of the icon
82*b1cdbd2cSJim Jagielski 		in soffice.exe to be associated with
83*b1cdbd2cSJim Jagielski 		rtf document files
84*b1cdbd2cSJim Jagielski 	*/
85*b1cdbd2cSJim Jagielski 	std::wstring GetRtfDocumentDisplayName() const;
86*b1cdbd2cSJim Jagielski 	std::wstring GetRtfDocumentFileExtension() const;
87*b1cdbd2cSJim Jagielski 	std::wstring GetRtfDocumentDefaultIconEntry() const;
88*b1cdbd2cSJim Jagielski 	std::wstring GetRtfDocumentDefaultShellCommand() const;
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski 	/** Excel sheet information
91*b1cdbd2cSJim Jagielski 		The icon index is the index of the icon
92*b1cdbd2cSJim Jagielski 		in soffice.exe to be associated with
93*b1cdbd2cSJim Jagielski 		Excel sheets
94*b1cdbd2cSJim Jagielski 	*/
95*b1cdbd2cSJim Jagielski 	std::wstring GetExcelSheetDisplayName() const;
96*b1cdbd2cSJim Jagielski 	std::wstring GetExcelSheetFileExtension() const;
97*b1cdbd2cSJim Jagielski 	std::wstring GetExcelSheetDefaultIconEntry() const;
98*b1cdbd2cSJim Jagielski 	std::wstring GetExcelSheetDefaultShellCommand() const;
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski 	/** Excel template information
101*b1cdbd2cSJim Jagielski 		The icon index is the index of the icon
102*b1cdbd2cSJim Jagielski 		in soffice.exe to be associated with
103*b1cdbd2cSJim Jagielski 		Excel template files
104*b1cdbd2cSJim Jagielski 	*/
105*b1cdbd2cSJim Jagielski 	std::wstring GetExcelTemplateDisplayName() const;
106*b1cdbd2cSJim Jagielski 	std::wstring GetExcelTemplateFileExtension() const;
107*b1cdbd2cSJim Jagielski 	std::wstring GetExcelTemplateDefaultIconEntry() const;
108*b1cdbd2cSJim Jagielski 	std::wstring GetExcelTemplateDefaultShellCommand() const;
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski 	/** PowerPoint document information
111*b1cdbd2cSJim Jagielski 		The icon index is the index of the icon
112*b1cdbd2cSJim Jagielski 		in soffice.exe to be associated with
113*b1cdbd2cSJim Jagielski 		PowerPoint document files
114*b1cdbd2cSJim Jagielski 	*/
115*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointDocumentDisplayName() const;
116*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointDocumentFileExtension() const;
117*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointDocumentDefaultIconEntry() const;
118*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointDocumentDefaultShellCommand() const;
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski 	/** PowerPoint template information
121*b1cdbd2cSJim Jagielski 		The icon index is the index of the icon
122*b1cdbd2cSJim Jagielski 		in soffice.exe to be associated with
123*b1cdbd2cSJim Jagielski 		PowerPoint template files
124*b1cdbd2cSJim Jagielski 	*/
125*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointTemplateDisplayName() const;
126*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointTemplateFileExtension() const;
127*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointTemplateDefaultIconEntry() const;
128*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointTemplateDefaultShellCommand() const;
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski     /** PowerPoint Show information
131*b1cdbd2cSJim Jagielski     */
132*b1cdbd2cSJim Jagielski     std::wstring GetPowerPointShowDisplayName() const;
133*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointShowFileExtension() const;
134*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointShowDefaultIconEntry() const;
135*b1cdbd2cSJim Jagielski 	std::wstring GetPowerPointShowDefaultShellCommand() const;
136*b1cdbd2cSJim Jagielski 
137*b1cdbd2cSJim Jagielski 	/** The string for the "New" command that should appear
138*b1cdbd2cSJim Jagielski 		in the Explorer context menu when someone right
139*b1cdbd2cSJim Jagielski 		clicks a Microsoft document
140*b1cdbd2cSJim Jagielski 	*/
141*b1cdbd2cSJim Jagielski 	std::wstring ShellNewCommandDisplayName() const;
142*b1cdbd2cSJim Jagielski 
143*b1cdbd2cSJim Jagielski 	/** The string for the "Edit" command that should
144*b1cdbd2cSJim Jagielski 		appear in the Explorer context menu when someone
145*b1cdbd2cSJim Jagielski 		right clicks a document
146*b1cdbd2cSJim Jagielski 	*/
147*b1cdbd2cSJim Jagielski 	std::wstring ShellEditCommandDisplayName() const;
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski 	/** A friendly name for the application
150*b1cdbd2cSJim Jagielski 	*/
151*b1cdbd2cSJim Jagielski 	std::wstring GetOpenOfficeFriendlyAppName() const;
152*b1cdbd2cSJim Jagielski 
153*b1cdbd2cSJim Jagielski 	/** The path to the office executable
154*b1cdbd2cSJim Jagielski 	*/
155*b1cdbd2cSJim Jagielski 	std::wstring GetOpenOfficeExecutablePath() const;
156*b1cdbd2cSJim Jagielski 
157*b1cdbd2cSJim Jagielski 	/** The name of the executable (currently "soffice.exe"
158*b1cdbd2cSJim Jagielski 		but may change in the future, who knows)
159*b1cdbd2cSJim Jagielski 	*/
160*b1cdbd2cSJim Jagielski 	std::wstring GetOpenOfficeExecutableName() const;
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski 	/** A command line for the specified shell command
163*b1cdbd2cSJim Jagielski 	*/
164*b1cdbd2cSJim Jagielski 	std::wstring GetOpenOfficeCommandline(SHELL_COMMAND ShellCommand,
165*b1cdbd2cSJim Jagielski                                           OFFICE_APPLICATION OfficeApp) const;
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski private:
168*b1cdbd2cSJim Jagielski 	bool IsConvertableToAnsi(const std::wstring& String)  const;
169*b1cdbd2cSJim Jagielski 
170*b1cdbd2cSJim Jagielski 	void ExtractOpenOfficeExecNameFromPath();
171*b1cdbd2cSJim Jagielski 
172*b1cdbd2cSJim Jagielski private:
173*b1cdbd2cSJim Jagielski 	MSIHANDLE	 msihandle_;
174*b1cdbd2cSJim Jagielski 	bool		 m_IsWin9x;
175*b1cdbd2cSJim Jagielski 	std::wstring m_OOExecPath;
176*b1cdbd2cSJim Jagielski 	std::wstring m_OOExecName;
177*b1cdbd2cSJim Jagielski };
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski #endif
180