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