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