summaryrefslogtreecommitdiffstats
path: root/ui/views/view_model.cc
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-09 23:11:52 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-09 23:11:52 +0000
commit870764920553f9347c599a6aed97d1d889ffeba7 (patch)
tree32207fd5879811fa5400117be9a52017423cd5e9 /ui/views/view_model.cc
parentc3a396716daab081b57bdf443b0e0aac50af51b5 (diff)
downloadchromium_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.cc55
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