diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-09 23:11:52 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-09 23:11:52 +0000 |
commit | 870764920553f9347c599a6aed97d1d889ffeba7 (patch) | |
tree | 32207fd5879811fa5400117be9a52017423cd5e9 /ui/views/view_model.cc | |
parent | c3a396716daab081b57bdf443b0e0aac50af51b5 (diff) | |
download | chromium_src-870764920553f9347c599a6aed97d1d889ffeba7.zip chromium_src-870764920553f9347c599a6aed97d1d889ffeba7.tar.gz chromium_src-870764920553f9347c599a6aed97d1d889ffeba7.tar.bz2 |
Moves view_model and related classes to views. This way I can use it
in the tabstrip.
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/10031012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131472 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views/view_model.cc')
-rw-r--r-- | ui/views/view_model.cc | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/ui/views/view_model.cc b/ui/views/view_model.cc new file mode 100644 index 0000000..8ce2474 --- /dev/null +++ b/ui/views/view_model.cc @@ -0,0 +1,55 @@ +// Copyright (c) 2012 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/views/view_model.h" + +#include "base/logging.h" +#include "ui/views/view.h" + +namespace views { + +ViewModel::ViewModel() { +} + +ViewModel::~ViewModel() { + // view are owned by their parent, no need to delete them. +} + +void ViewModel::Add(View* view, int index) { + Entry entry; + entry.view = view; + entries_.insert(entries_.begin() + index, entry); +} + +void ViewModel::Remove(int index) { + if (index == -1) + return; + + entries_.erase(entries_.begin() + index); +} + +void ViewModel::Move(int index, int target_index) { + if (index == target_index) + return; + Entry entry(entries_[index]); + entries_.erase(entries_.begin() + index); + entries_.insert(entries_.begin() + target_index, entry); +} + +void ViewModel::Clear() { + Entries entries; + entries.swap(entries_); + for (size_t i = 0; i < entries.size(); ++i) + delete entries[i].view; +} + +int ViewModel::GetIndexOfView(const View* view) const { + for (size_t i = 0; i < entries_.size(); ++i) { + if (entries_[i].view == view) + return static_cast<int>(i); + } + return -1; +} + +} // namespace views |