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

Side by Side Diff: ui/views/controls/textfield/textfield_views_model.h

Issue 9467017: Password support for NativeTextfieldViews, in the model (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 10 months 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef UI_VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEWS_MODEL_H_ 5 #ifndef UI_VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEWS_MODEL_H_
6 #define UI_VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEWS_MODEL_H_ 6 #define UI_VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEWS_MODEL_H_
7 #pragma once 7 #pragma once
8 8
9 #include <list> 9 #include <list>
10 #include <vector> 10 #include <vector>
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 60
61 protected: 61 protected:
62 virtual ~Delegate(); 62 virtual ~Delegate();
63 }; 63 };
64 64
65 explicit TextfieldViewsModel(Delegate* delegate); 65 explicit TextfieldViewsModel(Delegate* delegate);
66 virtual ~TextfieldViewsModel(); 66 virtual ~TextfieldViewsModel();
67 67
68 // Edit related methods. 68 // Edit related methods.
69 69
70 const string16& GetText() const; 70 const string16& GetText() const { return text_; }
71 // Sets the text. Returns true if the text has been modified. The 71 // Sets the text. Returns true if the text has been modified. The
72 // current composition text will be confirmed first. Setting 72 // current composition text will be confirmed first. Setting
73 // the same text will not add edit history because it's not user 73 // the same text will not add edit history because it's not user
74 // visible change nor user-initiated change. This allow a client 74 // visible change nor user-initiated change. This allow a client
75 // code to set the same text multiple times without worrying about 75 // code to set the same text multiple times without worrying about
76 // messing edit history. 76 // messing edit history.
77 bool SetText(const string16& text); 77 bool SetText(const string16& text);
78 78
79 // In an obscured (password) field, all text is drawn as asterisks or bullets.
80 bool is_obscured() const { return obscured_; }
81 void SetObscured(bool obscured);
82
79 gfx::RenderText* render_text() { return render_text_.get(); } 83 gfx::RenderText* render_text() { return render_text_.get(); }
80 84
81 // Inserts given |text| at the current cursor position. 85 // Inserts given |text| at the current cursor position.
82 // The current composition text will be cleared. 86 // The current composition text will be cleared.
83 void InsertText(const string16& text) { 87 void InsertText(const string16& text) {
84 InsertTextInternal(text, false); 88 InsertTextInternal(text, false);
85 } 89 }
86 90
87 // Inserts a character at the current cursor position. 91 // Inserts a character at the current cursor position.
88 void InsertChar(char16 c) { 92 void InsertChar(char16 c) {
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 // Note that the index is after deletion. 283 // Note that the index is after deletion.
280 // 3) Move the cursor to |new_cursor_pos|. 284 // 3) Move the cursor to |new_cursor_pos|.
281 void ModifyText(size_t delete_from, 285 void ModifyText(size_t delete_from,
282 size_t delete_to, 286 size_t delete_to,
283 const string16& new_text, 287 const string16& new_text,
284 size_t new_text_insert_at, 288 size_t new_text_insert_at,
285 size_t new_cursor_pos); 289 size_t new_cursor_pos);
286 290
287 void ClearComposition(); 291 void ClearComposition();
288 292
293 void SetTextInternal(const string16& text);
294
295 // Like GetText() except that it returns asterisks or bullets if this is an
296 // obscured field.
297 string16 GetDisplayText() const;
298
299 // Functions for converting between indices into the text and indices into the
300 // displayed text (which might be a bunch of asterisks).
301 size_t FromDisplayIndex(size_t index) const;
302 size_t ToDisplayIndex(size_t index) const;
303 ui::Range FromDisplayRange(ui::Range range) const;
304 ui::Range ToDisplayRange(ui::Range range) const;
305 gfx::SelectionModel FromDisplaySelection(
306 const gfx::SelectionModel& model) const;
307 gfx::SelectionModel ToDisplaySelection(
308 const gfx::SelectionModel& model) const;
309
310 // The current text.
311 string16 text_;
312
313 // True if this is an obscured (password) field.
314 bool obscured_;
315
289 // Pointer to a TextfieldViewsModel::Delegate instance, should be provided by 316 // Pointer to a TextfieldViewsModel::Delegate instance, should be provided by
290 // the View object. 317 // the View object.
291 Delegate* delegate_; 318 Delegate* delegate_;
292 319
293 // The stylized text, cursor, selection, and the visual layout model. 320 // The stylized text, cursor, selection, and the visual layout model.
294 scoped_ptr<gfx::RenderText> render_text_; 321 scoped_ptr<gfx::RenderText> render_text_;
295 322
296 typedef std::list<internal::Edit*> EditHistory; 323 typedef std::list<internal::Edit*> EditHistory;
297 EditHistory edit_history_; 324 EditHistory edit_history_;
298 325
299 // An iterator that points to the current edit that can be undone. 326 // An iterator that points to the current edit that can be undone.
300 // This iterator moves from the |end()|, meaining no edit to undo, 327 // This iterator moves from the |end()|, meaining no edit to undo,
301 // to the last element (one before |end()|), meaning no edit to redo. 328 // to the last element (one before |end()|), meaning no edit to redo.
302 // There is no edit to undo (== end()) when: 329 // There is no edit to undo (== end()) when:
303 // 1) in initial state. (nothing to undo) 330 // 1) in initial state. (nothing to undo)
304 // 2) very 1st edit is undone. 331 // 2) very 1st edit is undone.
305 // 3) all edit history is removed. 332 // 3) all edit history is removed.
306 // There is no edit to redo (== last element or no element) when: 333 // There is no edit to redo (== last element or no element) when:
307 // 1) in initial state. (nothing to redo) 334 // 1) in initial state. (nothing to redo)
308 // 2) new edit is added. (redo history is cleared) 335 // 2) new edit is added. (redo history is cleared)
309 // 3) redone all undone edits. 336 // 3) redone all undone edits.
310 EditHistory::iterator current_edit_; 337 EditHistory::iterator current_edit_;
311 338
312 DISALLOW_COPY_AND_ASSIGN(TextfieldViewsModel); 339 DISALLOW_COPY_AND_ASSIGN(TextfieldViewsModel);
313 }; 340 };
314 341
315 } // namespace views 342 } // namespace views
316 343
317 #endif // UI_VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEWS_MODEL_H_ 344 #endif // UI_VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEWS_MODEL_H_
OLDNEW
« no previous file with comments | « ui/views/controls/textfield/native_textfield_views_unittest.cc ('k') | ui/views/controls/textfield/textfield_views_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698