Chromium Code Reviews| Index: ash/devtools/ui_element.cc |
| diff --git a/ash/devtools/ui_element.cc b/ash/devtools/ui_element.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7741360ff6da0a26cac82d14c8bb334e2c9d854d |
| --- /dev/null |
| +++ b/ash/devtools/ui_element.cc |
| @@ -0,0 +1,89 @@ |
| +// Copyright 2017 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 "ash/devtools/ui_element.h" |
| + |
| +#include "ash/devtools/ui_element_delegate.h" |
| +#include "ash/devtools/view_element.h" |
| +#include "ash/devtools/widget_element.h" |
| +#include "ash/devtools/window_element.h" |
| + |
| +namespace ash { |
| +namespace devtools { |
| + |
| +int UIElement::GetNodeId() const { |
| + return node_id_; |
| +} |
| + |
| +void UIElement::SetNodeId(int node_id) { |
| + node_id_ = node_id; |
| +} |
| + |
| +UIElement* UIElement::GetParent() const { |
| + return parent_; |
| +} |
| + |
| +UIElementDelegate* UIElement::delegate() const { |
| + return ui_element_delegate_; |
| +} |
| + |
| +UIElementType UIElement::GetType() const { |
| + return type_; |
| +} |
| + |
| +std::string UIElement::GetTypeString() const { |
| + switch (type_) { |
| + case UIElementType::WINDOW: |
| + return "Window"; |
| + case UIElementType::WIDGET: |
| + return "Widget"; |
| + case UIElementType::VIEW: |
| + return "View"; |
| + default: |
| + DCHECK(false); |
| + } |
| +} |
| + |
| +const std::vector<UIElement*>& UIElement::GetChildren() const { |
| + return children_; |
| +} |
| + |
| +void UIElement::AddChild(UIElement* child, UIElement* before) { |
| + if (before) { |
| + auto iter = std::find(children_.begin(), children_.end(), before); |
| + children_.insert(iter, child); |
| + } else |
| + children_.push_back(child); |
|
sadrul
2017/05/05 20:19:33
{} here too
thanhph
2017/05/08 17:03:30
Done.
|
| +} |
| + |
| +void UIElement::RemoveChild(UIElement* child) { |
| + auto iter = std::find(children_.begin(), children_.end(), child); |
| + if (iter != children_.end()) |
| + children_.erase(iter); |
| +} |
| + |
| +UIElement* UIElement::ReorderChild(UIElement* child, int new_index) { |
| + auto iter = children_.begin(); |
| + while (new_index-- > 0) |
| + iter++; |
| + children_.insert(iter, child); |
| + if (iter != children_.begin()) |
| + return *std::prev(iter); |
| + return nullptr; |
|
sadrul
2017/05/05 20:19:33
I think this can be simpler:
new_index = std::m
thanhph
2017/05/08 17:03:30
That's correct. I removed the return part.
|
| +} |
| + |
| +UIElement::UIElement(const UIElementType type, |
| + UIElementDelegate* ui_element_delegate, |
| + UIElement* parent) |
| + : type_(type), parent_(parent), ui_element_delegate_(ui_element_delegate) {} |
| + |
| +UIElement::~UIElement() { |
| + for (auto* child : children_) |
| + if (child) |
| + delete child; |
| + children_.clear(); |
| +} |
| + |
| +} // namespace devtools |
| +} // namespace ash |