summaryrefslogtreecommitdiffstats
path: root/ui/base/models
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-25 15:02:11 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-25 15:02:11 +0000
commit2b68f8170eac47782a7680fc97b44886e27ac2fe (patch)
tree4ac3bd72425f89bed4226f0d724d089362c5ede3 /ui/base/models
parent3138146004b13a2f1a249da15531d96a53f3e2d2 (diff)
downloadchromium_src-2b68f8170eac47782a7680fc97b44886e27ac2fe.zip
chromium_src-2b68f8170eac47782a7680fc97b44886e27ac2fe.tar.gz
chromium_src-2b68f8170eac47782a7680fc97b44886e27ac2fe.tar.bz2
Move accelerator related files to ui/base/accelerators
BUG=104599 R=mazda@chromium.org Review URL: http://codereview.chromium.org/8695005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111597 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/base/models')
-rw-r--r--ui/base/models/accelerator.cc163
-rw-r--r--ui/base/models/accelerator.h129
-rw-r--r--ui/base/models/accelerator_cocoa.h44
-rw-r--r--ui/base/models/accelerator_cocoa.mm41
-rw-r--r--ui/base/models/accelerator_gtk.h59
5 files changed, 0 insertions, 436 deletions
diff --git a/ui/base/models/accelerator.cc b/ui/base/models/accelerator.cc
deleted file mode 100644
index 45dee03..0000000
--- a/ui/base/models/accelerator.cc
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/base/models/accelerator.h"
-
-#if defined(OS_WIN)
-#include <windows.h>
-#elif defined(TOOLKIT_USES_GTK)
-#include <gdk/gdk.h>
-#endif
-
-#include "base/i18n/rtl.h"
-#include "base/logging.h"
-#include "base/string_util.h"
-#include "base/utf_string_conversions.h"
-#include "grit/ui_strings.h"
-#include "ui/base/l10n/l10n_util.h"
-
-namespace ui {
-
-string16 Accelerator::GetShortcutText() const {
- int string_id = 0;
- switch(key_code_) {
- case ui::VKEY_TAB:
- string_id = IDS_APP_TAB_KEY;
- break;
- case ui::VKEY_RETURN:
- string_id = IDS_APP_ENTER_KEY;
- break;
- case ui::VKEY_ESCAPE:
- string_id = IDS_APP_ESC_KEY;
- break;
- case ui::VKEY_PRIOR:
- string_id = IDS_APP_PAGEUP_KEY;
- break;
- case ui::VKEY_NEXT:
- string_id = IDS_APP_PAGEDOWN_KEY;
- break;
- case ui::VKEY_END:
- string_id = IDS_APP_END_KEY;
- break;
- case ui::VKEY_HOME:
- string_id = IDS_APP_HOME_KEY;
- break;
- case ui::VKEY_INSERT:
- string_id = IDS_APP_INSERT_KEY;
- break;
- case ui::VKEY_DELETE:
- string_id = IDS_APP_DELETE_KEY;
- break;
- case ui::VKEY_LEFT:
- string_id = IDS_APP_LEFT_ARROW_KEY;
- break;
- case ui::VKEY_RIGHT:
- string_id = IDS_APP_RIGHT_ARROW_KEY;
- break;
- case ui::VKEY_BACK:
- string_id = IDS_APP_BACKSPACE_KEY;
- break;
- case ui::VKEY_F1:
- string_id = IDS_APP_F1_KEY;
- break;
- case ui::VKEY_F11:
- string_id = IDS_APP_F11_KEY;
- break;
- default:
- break;
- }
-
- string16 shortcut;
- if (!string_id) {
-#if defined(OS_WIN)
- // Our fallback is to try translate the key code to a regular character
- // unless it is one of digits (VK_0 to VK_9). Some keyboard
- // layouts have characters other than digits assigned in
- // an unshifted mode (e.g. French AZERY layout has 'a with grave
- // accent' for '0'). For display in the menu (e.g. Ctrl-0 for the
- // default zoom level), we leave VK_[0-9] alone without translation.
- wchar_t key;
- if (key_code_ >= '0' && key_code_ <= '9')
- key = key_code_;
- else
- key = LOWORD(::MapVirtualKeyW(key_code_, MAPVK_VK_TO_CHAR));
- shortcut += key;
-#elif defined(TOOLKIT_USES_GTK)
- const gchar* name = NULL;
- switch (key_code_) {
- case ui::VKEY_OEM_2:
- name = static_cast<const gchar*>("/");
- break;
- default:
- name = gdk_keyval_name(gdk_keyval_to_lower(key_code_));
- break;
- }
- if (name) {
- if (name[0] != 0 && name[1] == 0)
- shortcut += static_cast<string16::value_type>(g_ascii_toupper(name[0]));
- else
- shortcut += UTF8ToUTF16(name);
- }
-#endif
- } else {
- shortcut = l10n_util::GetStringUTF16(string_id);
- }
-
- // Checking whether the character used for the accelerator is alphanumeric.
- // If it is not, then we need to adjust the string later on if the locale is
- // right-to-left. See below for more information of why such adjustment is
- // required.
- string16 shortcut_rtl;
- bool adjust_shortcut_for_rtl = false;
- if (base::i18n::IsRTL() && shortcut.length() == 1 &&
- !IsAsciiAlpha(shortcut[0]) && !IsAsciiDigit(shortcut[0])) {
- adjust_shortcut_for_rtl = true;
- shortcut_rtl.assign(shortcut);
- }
-
- if (IsShiftDown())
- shortcut = l10n_util::GetStringFUTF16(IDS_APP_SHIFT_MODIFIER, shortcut);
-
- // Note that we use 'else-if' in order to avoid using Ctrl+Alt as a shortcut.
- // See http://blogs.msdn.com/oldnewthing/archive/2004/03/29/101121.aspx for
- // more information.
- if (IsCtrlDown())
- shortcut = l10n_util::GetStringFUTF16(IDS_APP_CONTROL_MODIFIER, shortcut);
- else if (IsAltDown())
- shortcut = l10n_util::GetStringFUTF16(IDS_APP_ALT_MODIFIER, shortcut);
-
- // For some reason, menus in Windows ignore standard Unicode directionality
- // marks (such as LRE, PDF, etc.). On RTL locales, we use RTL menus and
- // therefore any text we draw for the menu items is drawn in an RTL context.
- // Thus, the text "Ctrl++" (which we currently use for the Zoom In option)
- // appears as "++Ctrl" in RTL because the Unicode BiDi algorithm puts
- // punctuations on the left when the context is right-to-left. Shortcuts that
- // do not end with a punctuation mark (such as "Ctrl+H" do not have this
- // problem).
- //
- // The only way to solve this problem is to adjust the string if the locale
- // is RTL so that it is drawn correnctly in an RTL context. Instead of
- // returning "Ctrl++" in the above example, we return "++Ctrl". This will
- // cause the text to appear as "Ctrl++" when Windows draws the string in an
- // RTL context because the punctunation no longer appears at the end of the
- // string.
- //
- // TODO(idana) bug# 1232732: this hack can be avoided if instead of using
- // views::Menu we use views::MenuItemView because the latter is a View
- // subclass and therefore it supports marking text as RTL or LTR using
- // standard Unicode directionality marks.
- if (adjust_shortcut_for_rtl) {
- int key_length = static_cast<int>(shortcut_rtl.length());
- DCHECK_GT(key_length, 0);
- shortcut_rtl.append(ASCIIToUTF16("+"));
-
- // Subtracting the size of the shortcut key and 1 for the '+' sign.
- shortcut_rtl.append(shortcut, 0, shortcut.length() - key_length - 1);
- shortcut.swap(shortcut_rtl);
- }
-
- return shortcut;
-}
-
-} // namespace ui
diff --git a/ui/base/models/accelerator.h b/ui/base/models/accelerator.h
deleted file mode 100644
index 42de42a..0000000
--- a/ui/base/models/accelerator.h
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This class describe a keyboard accelerator (or keyboard shortcut).
-// Keyboard accelerators are registered with the FocusManager.
-// It has a copy constructor and assignment operator so that it can be copied.
-// It also defines the < operator so that it can be used as a key in a std::map.
-//
-
-#ifndef UI_BASE_MODELS_ACCELERATOR_H_
-#define UI_BASE_MODELS_ACCELERATOR_H_
-#pragma once
-
-#include "base/string16.h"
-#include "ui/base/keycodes/keyboard_codes.h"
-#include "ui/base/events.h"
-#include "ui/base/ui_export.h"
-
-namespace ui {
-
-// This is a cross-platform base class for accelerator keys used in menus. It is
-// meant to be subclassed for concrete toolkit implementations.
-class UI_EXPORT Accelerator {
- public:
- Accelerator() : key_code_(ui::VKEY_UNKNOWN), modifiers_(0) {}
-
- Accelerator(ui::KeyboardCode keycode, int modifiers)
- : key_code_(keycode),
- modifiers_(modifiers) {}
-
- Accelerator(const Accelerator& accelerator) {
- key_code_ = accelerator.key_code_;
- modifiers_ = accelerator.modifiers_;
- }
-
- Accelerator(ui::KeyboardCode keycode,
- bool shift_pressed, bool ctrl_pressed, bool alt_pressed)
- : key_code_(keycode),
- modifiers_(0) {
- if (shift_pressed)
- modifiers_ |= ui::EF_SHIFT_DOWN;
- if (ctrl_pressed)
- modifiers_ |= ui::EF_CONTROL_DOWN;
- if (alt_pressed)
- modifiers_ |= ui::EF_ALT_DOWN;
- }
-
- virtual ~Accelerator() {}
-
- Accelerator& operator=(const Accelerator& accelerator) {
- if (this != &accelerator) {
- key_code_ = accelerator.key_code_;
- modifiers_ = accelerator.modifiers_;
- }
- return *this;
- }
-
- // We define the < operator so that the KeyboardShortcut can be used as a key
- // in a std::map.
- bool operator <(const Accelerator& rhs) const {
- if (key_code_ != rhs.key_code_)
- return key_code_ < rhs.key_code_;
- return modifiers_ < rhs.modifiers_;
- }
-
- bool operator ==(const Accelerator& rhs) const {
- return (key_code_ == rhs.key_code_) && (modifiers_ == rhs.modifiers_);
- }
-
- bool operator !=(const Accelerator& rhs) const {
- return !(*this == rhs);
- }
-
- ui::KeyboardCode key_code() const { return key_code_; }
-
- int modifiers() const { return modifiers_; }
-
- bool IsShiftDown() const {
- return (modifiers_ & ui::EF_SHIFT_DOWN) == ui::EF_SHIFT_DOWN;
- }
-
- bool IsCtrlDown() const {
- return (modifiers_ & ui::EF_CONTROL_DOWN) == ui::EF_CONTROL_DOWN;
- }
-
- bool IsAltDown() const {
- return (modifiers_ & ui::EF_ALT_DOWN) == ui::EF_ALT_DOWN;
- }
-
- // Returns a string with the localized shortcut if any.
- string16 GetShortcutText() const;
-
- protected:
- // The keycode (VK_...).
- ui::KeyboardCode key_code_;
-
- // The state of the Shift/Ctrl/Alt keys (platform-dependent).
- int modifiers_;
-};
-
-// An interface that classes that want to register for keyboard accelerators
-// should implement.
-class UI_EXPORT AcceleratorTarget {
- public:
- // This method should return true if the accelerator was processed.
- virtual bool AcceleratorPressed(const Accelerator& accelerator) = 0;
-
- protected:
- virtual ~AcceleratorTarget() {}
-};
-
-// Since acclerator code is one of the few things that can't be cross platform
-// in the chrome UI, separate out just the GetAcceleratorForCommandId() from
-// the menu delegates.
-class AcceleratorProvider {
- public:
- // Gets the accelerator for the specified command id. Returns true if the
- // command id has a valid accelerator, false otherwise.
- virtual bool GetAcceleratorForCommandId(int command_id,
- ui::Accelerator* accelerator) = 0;
-
- protected:
- virtual ~AcceleratorProvider() {}
-};
-
-} // namespace ui
-
-#endif // UI_BASE_MODELS_ACCELERATOR_H_
diff --git a/ui/base/models/accelerator_cocoa.h b/ui/base/models/accelerator_cocoa.h
deleted file mode 100644
index f1c980c..0000000
--- a/ui/base/models/accelerator_cocoa.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_BASE_MODELS_ACCELERATOR_COCOA_H_
-#define UI_BASE_MODELS_ACCELERATOR_COCOA_H_
-#pragma once
-
-#include <Foundation/Foundation.h>
-
-#include "base/memory/scoped_nsobject.h"
-#include "ui/base/models/accelerator.h"
-#include "ui/base/ui_export.h"
-
-namespace ui {
-
-// This is a subclass of the cross-platform Accelerator, but with more direct
-// support for Cocoa key equivalents. Note that the typical use case for this
-// class is to initialize it with a string literal, which is why it sends
-// |-copy| to the |key_code| paramater in the constructor.
-class UI_EXPORT AcceleratorCocoa : public Accelerator {
- public:
- AcceleratorCocoa();
- AcceleratorCocoa(NSString* key_code, NSUInteger mask);
- AcceleratorCocoa(const AcceleratorCocoa& accelerator);
- virtual ~AcceleratorCocoa();
-
- AcceleratorCocoa& operator=(const AcceleratorCocoa& accelerator);
-
- bool operator==(const AcceleratorCocoa& rhs) const;
- bool operator!=(const AcceleratorCocoa& rhs) const;
-
- NSString* characters() const {
- return characters_.get();
- }
-
- private:
- // String of characters for the key equivalent.
- scoped_nsobject<NSString> characters_;
-};
-
-} // namespace ui
-
-#endif // UI_BASE_MODELS_ACCELERATOR_COCOA_H_
diff --git a/ui/base/models/accelerator_cocoa.mm b/ui/base/models/accelerator_cocoa.mm
deleted file mode 100644
index 414a14e..0000000
--- a/ui/base/models/accelerator_cocoa.mm
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/base/models/accelerator_cocoa.h"
-
-namespace ui {
-
-AcceleratorCocoa::AcceleratorCocoa() : Accelerator() {}
-
-AcceleratorCocoa::AcceleratorCocoa(NSString* key_code, NSUInteger mask)
- : Accelerator(ui::VKEY_UNKNOWN, mask),
- characters_([key_code copy]) {
-}
-
-AcceleratorCocoa::AcceleratorCocoa(const AcceleratorCocoa& accelerator)
- : Accelerator(accelerator) {
- characters_.reset([accelerator.characters_ copy]);
-}
-
-AcceleratorCocoa::~AcceleratorCocoa() {}
-
-AcceleratorCocoa& AcceleratorCocoa::operator=(
- const AcceleratorCocoa& accelerator) {
- if (this != &accelerator) {
- *static_cast<Accelerator*>(this) = accelerator;
- characters_.reset([accelerator.characters_ copy]);
- }
- return *this;
-}
-
-bool AcceleratorCocoa::operator==(const AcceleratorCocoa& rhs) const {
- return [characters_ isEqualToString:rhs.characters_.get()] &&
- (modifiers_ == rhs.modifiers_);
-}
-
-bool AcceleratorCocoa::operator!=(const AcceleratorCocoa& rhs) const {
- return !(*this == rhs);
-}
-
-} // namespace ui
diff --git a/ui/base/models/accelerator_gtk.h b/ui/base/models/accelerator_gtk.h
deleted file mode 100644
index 720e291..0000000
--- a/ui/base/models/accelerator_gtk.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_BASE_MODELS_ACCELERATOR_GTK_H_
-#define UI_BASE_MODELS_ACCELERATOR_GTK_H_
-#pragma once
-
-#include <gdk/gdk.h>
-
-#include "ui/base/keycodes/keyboard_code_conversion_gtk.h"
-#include "ui/base/keycodes/keyboard_codes_posix.h"
-#include "ui/base/models/accelerator.h"
-
-namespace ui {
-
-class AcceleratorGtk : public Accelerator {
- public:
- AcceleratorGtk(ui::KeyboardCode key_code,
- bool shift_pressed, bool ctrl_pressed, bool alt_pressed)
- : gdk_keyval_(0) {
- key_code_ = key_code;
- modifiers_ = 0;
- if (shift_pressed)
- modifiers_ |= GDK_SHIFT_MASK;
- if (ctrl_pressed)
- modifiers_ |= GDK_CONTROL_MASK;
- if (alt_pressed)
- modifiers_ |= GDK_MOD1_MASK;
- }
-
- AcceleratorGtk(guint keyval, GdkModifierType modifier_type) {
- key_code_ = ui::WindowsKeyCodeForGdkKeyCode(keyval);
- gdk_keyval_ = keyval;
- modifiers_ = modifier_type;
- }
-
- AcceleratorGtk() : gdk_keyval_(0) { }
- virtual ~AcceleratorGtk() { }
-
- guint GetGdkKeyCode() const {
- return gdk_keyval_ > 0 ?
- // The second parameter is false because accelerator keys are
- // expressed in terms of the non-shift-modified key.
- gdk_keyval_ : ui::GdkKeyCodeForWindowsKeyCode(key_code_, false);
- }
-
- GdkModifierType gdk_modifier_type() const {
- return static_cast<GdkModifierType>(modifiers());
- }
-
- private:
- // The GDK keycode.
- guint gdk_keyval_;
-};
-
-} // namespace ui
-
-#endif // UI_BASE_MODELS_ACCELERATOR_GTK_H_