Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Side by Side Diff: views/controls/textfield/textfield_view_model.h

Issue 5857002: no native implementation of Textfield. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: " Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEW_MODEL_H_
6 #define VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEW_MODEL_H_
7 #pragma once
8
9 #include <vector>
10
11 #include "base/string16.h"
12 #include "gfx/rect.h"
13 #include "third_party/skia/include/core/SkColor.h"
14
15 namespace gfx {
16 class Font;
17 } // namespace gfx
18
19 namespace views {
20
21 class TextfieldViewModel {
sky 2010/12/15 20:31:27 Description?
oshima 2010/12/16 01:15:19 Done.
22 public:
23 TextfieldViewModel();
24 virtual ~TextfieldViewModel();
sky 2010/12/15 20:31:27 Why virtual?
oshima 2010/12/16 01:15:19 it's just my habit to always use virtual destructo
25
26 // Text fragment info. Used to draw selected text.
27 // We may replace this with TextAttribute class
28 // in the future to supportmulti-color text
sky 2010/12/15 20:31:27 support multi
oshima 2010/12/16 01:15:19 Done.
29 // for omnibox.
30 struct TextFragment {
31 TextFragment(size_t b, size_t e, bool s)
32 : begin(b), end(e), selected(s) {
33 }
34 // The begin and end position of text fragment.
35 size_t begin, end;
36 // True if the text is selected.
37 bool selected;
38 };
39 typedef std::vector<TextFragment> TextFragments;
40
41 // Populate the text element info.
42 void PopulateFragments(TextFragments* elements) const;
sky 2010/12/15 20:31:27 How about GetFragments.
oshima 2010/12/16 01:15:19 Done.
43
44 void set_is_password(bool is_password) {
45 is_password_ = is_password;
46 }
47 const string16& text() const { return text_; }
48
49 // Edit related methods.
50
51 // Set the text. Returns true if the text has been modified.
52 bool SetText(const string16& text);
53
54 // Inserts a character at the current cursor position.
55 void Insert(char16 c);
56
57 // Replaces the char at the current position with given character.
58 void Replace(char16 c);
59
60 // Appends the text.
61 void Append(const string16& text);
62
63 // Deletes the first character after the current cursor position (as if, the
64 // the user has pressed delete key in the textfield). Returns true if
65 // the deletion is successful.
66 bool Delete();
67
68 // Deletes the first character before the current cursor position (as if, the
69 // the user has pressed backspace key in the textfield). Returns true if
70 // the removal is successful.
71 bool Backspace();
72
73 // Cursor related methods.
74
75 // Returns the current cursor position.
76 int cursor_pos() const { return cursor_pos_; }
sky 2010/12/15 20:31:27 size_t
oshima 2010/12/16 01:15:19 good catch. Done
77
78 // Moves the cursor left by one position (as if, the user has pressed the left
79 // arrow key). If |select| is true, it updates the selection accordingly.
80 void MoveCursorLeft(bool select);
81
82 // Moves the cursor right by one position (as if, the user has pressed the
83 // right arrow key). If |select| is true, it updates the selection
84 // accordingly.
85 void MoveCursorRight(bool select);
86
87 // Moves the cursor left by one word (word boundry is defined by space).
88 // If |select| is true, it updates the selection accordingly.
89 void MoveCursorToPreviousWord(bool select);
90
91 // Moves the cursor right by one word (word boundry is defined by space).
92 // If |select| is true, it updates the selection accordingly.
93 void MoveCursorToNextWord(bool select);
94
95 // Moves the cursor to start of the textfield contents.
96 // If |select| is true, it updates the selection accordingly.
97 void MoveCursorToStart(bool select);
98
99 // Moves the cursor to end of the textfield contents.
100 // If |select| is true, it updates the selection accordingly.
101 void MoveCursorToEnd(bool select);
102
103 // Moves the cursor to the specified |position|.
104 // If |select| is true, it updates the selection accordingly.
105 bool MoveCursorTo(size_t position, bool select);
106
107 // Returns the bounds of character at the current cursor.
108 gfx::Rect GetCursorBounds(const gfx::Font& font) const;
109
110 // Selection related method
111
112 // Returns the selected text.
113 string16 GetSelectedText() const;
sky 2010/12/15 20:31:27 Does this intentionally not return the password ch
oshima 2010/12/16 01:15:19 I believe this is now gtk version works and expect
114
115 // Selects all text.
116 void SelectAll();
117
118 // Clears selection.
119 void ClearSelection();
120
121 // Returns visible text. If the field is password, it returns the
122 // sequence of "*".
123 string16 GetVisibleText() const {
124 return GetVisibleText(0U, text_.length());
125 }
126
127 private:
128 friend class NativeTextfieldView;
129
130 // Selects the text. |old| is the old cursor position and
131 // end is the new corsor position.
sky 2010/12/15 20:31:27 corsor->cursor
oshima 2010/12/16 01:15:19 Done.
132 void Select(size_t old, size_t end);
133
134 // Tells if any text is selected.
135 bool HasSelection() const;
136
137 // Deletes the selected text.
138 void DeleteSelection();
139
140 // Returns the visible text given |start| and |end|.
141 string16 GetVisibleText(size_t start, size_t end) const;
142
143 // The text in utf16 format.
144 string16 text_;
145
146 // Current cursor position.
147 size_t cursor_pos_;
148
149 // Selection range.
150 size_t begin_, end_;
sky 2010/12/15 20:31:27 Could you combine cursor_pos_ and begin_ end_ ? Is
oshima 2010/12/16 01:15:19 Only if something is selected. There are several o
sky 2010/12/16 17:29:43 I don't understand this con. You have to update so
151
152 // True if the text is the password.
153 bool is_password_;
154
155 DISALLOW_COPY_AND_ASSIGN(TextfieldViewModel);
156 };
157
158 } // namespace views
159
160 #endif // VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEW_MODEL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698