[Author: nicolasroard]
[google-gears.git] / gears / ui / ie / tools_menu_item.cc
blobae0db8e59a97c845098f9ab4c28397eee25941e4
1 // Copyright 2007, Google Inc.
2 //
3 // Redistribution and use in source and binary forms, with or without
4 // modification, are permitted provided that the following conditions are met:
5 //
6 // 1. Redistributions of source code must retain the above copyright notice,
7 // this list of conditions and the following disclaimer.
8 // 2. Redistributions in binary form must reproduce the above copyright notice,
9 // this list of conditions and the following disclaimer in the documentation
10 // and/or other materials provided with the distribution.
11 // 3. Neither the name of Google Inc. nor the names of its contributors may be
12 // used to endorse or promote products derived from this software without
13 // specific prior written permission.
15 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
16 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
17 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
18 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
21 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
24 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #include "gears/base/ie/detect_version_collision.h"
27 #include "gears/ui/common/settings_dialog.h"
28 #include "gears/ui/ie/tools_menu_item.h"
29 #include "common/genfiles/product_constants.h" // from OUTDIR
31 #ifdef WINCE
33 STDMETHODIMP ToolsMenuItem::QueryContextMenu(HMENU hmenu,
34 UINT index_menu,
35 UINT id_cmd_first,
36 UINT id_cmd_last,
37 UINT flags) {
38 if (flags == CMF_DEFAULTONLY) {
39 return MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 0);
42 command_first_ = id_cmd_first;
44 InsertMenu(hmenu, index_menu, MF_BYPOSITION, command_first_,
45 TEXT(PRODUCT_FRIENDLY_NAME_ASCII) L" Settings");
47 return MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 1);
50 STDMETHODIMP ToolsMenuItem::GetCommandString(UINT id_cmd,
51 UINT flags,
52 UINT *reserved,
53 LPSTR command_name,
54 UINT command_name_len) {
55 if (command_first_ != id_cmd)
56 return E_INVALIDARG;
58 switch (flags) {
59 case GCS_VERB:
60 case GCS_HELPTEXT: {
61 strncpy(command_name, PRODUCT_FRIENDLY_NAME_ASCII " Settings",
62 command_name_len);
63 } break;
64 case GCS_VALIDATE:
65 break;
66 default:
67 return E_INVALIDARG;
70 return S_OK;
73 STDMETHODIMP ToolsMenuItem::InvokeCommand(LPCMINVOKECOMMANDINFO command_info) {
74 if (DetectedVersionCollision()) {
75 NotifyUserOfVersionCollision();
76 return S_OK;
79 SettingsDialog::Run();
81 return S_OK;
84 #else
86 STDAPI ToolsMenuItem::QueryStatus(const GUID *command_group_id,
87 ULONG num_commands, OLECMD *commands,
88 OLECMDTEXT *command_text) {
89 // Gears settings menu item is always enabled.
90 if (command_group_id || (num_commands != 1) || !commands) {
91 return E_FAIL;
94 commands->cmdf = OLECMDF_ENABLED;
95 return S_OK;
98 STDAPI ToolsMenuItem::Exec(const GUID *command_group_id, DWORD command_id,
99 DWORD exec_options, VARIANTARG *args,
100 VARIANTARG *output) {
101 if (DetectedVersionCollision()) {
102 NotifyUserOfVersionCollision();
103 return S_OK;
105 SettingsDialog::Run();
106 return S_OK;
109 #endif