blob: 0d99580817d234f60867d3eb9f4f9ef5956cae18 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MsOfficeDocumentInformation.h: Schnittstelle f�r die Klasse MsOfficeDocumentInformation.
//
//////////////////////////////////////////////////////////////////////
#ifndef _REGISTRATIONCONTEXTINFORMATION_HXX_
#define _REGISTRATIONCONTEXTINFORMATION_HXX_
#ifdef _MSC_VER
#pragma warning(push, 1) /* disable warnings within system headers */
#endif
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <msi.h>
#ifdef _MSC_VER
#pragma warning(pop)
#endif
#include <string>
/** A simple implementation class that returns the
appropriate display names for the Microsoft
Office document types.
Under Windows 9x this class checks if the
document display name is convertable to an ANSI
string and if not returns an english default.
So we avoid garbage if soemone for instance
installs an japanese version
under a German Windows 98 for instance.
*/
class RegistrationContextInformation
{
public:
enum SHELL_COMMAND {New, Open, Print, Printto};
enum OFFICE_APPLICATION {Office, Writer, Calc, Impress};
RegistrationContextInformation(MSIHANDLE hMsi, const std::wstring& OpenOfficeExecutablePath);
/** Word document information
The icon index is the index of the icon
in soffice.exe to be associated with
word document files
*/
std::wstring GetWordDocumentDisplayName() const;
std::wstring GetWordDocumentFileExtension() const;
std::wstring GetWordDocumentDefaultIconEntry() const;
std::wstring GetWordDocumentDefaultShellCommand() const;
/** Word template information
The icon index is the index of the icon
in soffice.exe to be associated with
word template files
*/
std::wstring GetWordTemplateDisplayName() const;
std::wstring GetWordTemplateFileExtension() const;
std::wstring GetWordTemplateDefaultIconEntry() const;
std::wstring GetWordTemplateDefaultShellCommand() const;
/** Rtf document information
The icon index is the index of the icon
in soffice.exe to be associated with
rtf document files
*/
std::wstring GetRtfDocumentDisplayName() const;
std::wstring GetRtfDocumentFileExtension() const;
std::wstring GetRtfDocumentDefaultIconEntry() const;
std::wstring GetRtfDocumentDefaultShellCommand() const;
/** Excel sheet information
The icon index is the index of the icon
in soffice.exe to be associated with
Excel sheets
*/
std::wstring GetExcelSheetDisplayName() const;
std::wstring GetExcelSheetFileExtension() const;
std::wstring GetExcelSheetDefaultIconEntry() const;
std::wstring GetExcelSheetDefaultShellCommand() const;
/** Excel template information
The icon index is the index of the icon
in soffice.exe to be associated with
Excel template files
*/
std::wstring GetExcelTemplateDisplayName() const;
std::wstring GetExcelTemplateFileExtension() const;
std::wstring GetExcelTemplateDefaultIconEntry() const;
std::wstring GetExcelTemplateDefaultShellCommand() const;
/** PowerPoint document information
The icon index is the index of the icon
in soffice.exe to be associated with
PowerPoint document files
*/
std::wstring GetPowerPointDocumentDisplayName() const;
std::wstring GetPowerPointDocumentFileExtension() const;
std::wstring GetPowerPointDocumentDefaultIconEntry() const;
std::wstring GetPowerPointDocumentDefaultShellCommand() const;
/** PowerPoint template information
The icon index is the index of the icon
in soffice.exe to be associated with
PowerPoint template files
*/
std::wstring GetPowerPointTemplateDisplayName() const;
std::wstring GetPowerPointTemplateFileExtension() const;
std::wstring GetPowerPointTemplateDefaultIconEntry() const;
std::wstring GetPowerPointTemplateDefaultShellCommand() const;
/** PowerPoint Show information
*/
std::wstring GetPowerPointShowDisplayName() const;
std::wstring GetPowerPointShowFileExtension() const;
std::wstring GetPowerPointShowDefaultIconEntry() const;
std::wstring GetPowerPointShowDefaultShellCommand() const;
/** The string for the "New" command that should appear
in the Explorer context menu when someone right
clicks a Microsoft document
*/
std::wstring ShellNewCommandDisplayName() const;
/** The string for the "Edit" command that should
appear in the Explorer context menu when someone
right clicks a document
*/
std::wstring ShellEditCommandDisplayName() const;
/** A friendly name for the application
*/
std::wstring GetOpenOfficeFriendlyAppName() const;
/** The path to the office executable
*/
std::wstring GetOpenOfficeExecutablePath() const;
/** The name of the executable (currently "soffice.exe"
but may change in the future, who knows)
*/
std::wstring GetOpenOfficeExecutableName() const;
/** A command line for the specified shell command
*/
std::wstring GetOpenOfficeCommandline(SHELL_COMMAND ShellCommand,
OFFICE_APPLICATION OfficeApp) const;
private:
bool IsConvertableToAnsi(const std::wstring& String) const;
void ExtractOpenOfficeExecNameFromPath();
private:
MSIHANDLE msihandle_;
bool m_IsWin9x;
std::wstring m_OOExecPath;
std::wstring m_OOExecName;
};
#endif