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

Side by Side Diff: athena/util/drag_handle.cc

Issue 863033002: Delete athena/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « athena/util/drag_handle.h ('k') | athena/util/drag_handle_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 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 #include "athena/util/drag_handle.h"
6
7 #include "ui/views/background.h"
8 #include "ui/views/view.h"
9
10 namespace athena {
11 namespace {
12
13 const SkColor kDragHandleColorNormal = SK_ColorGRAY;
14 const SkColor kDragHandleColorHot = SK_ColorWHITE;
15
16 // This view notifies its delegate of the touch scroll gestures performed on it.
17 class DragHandleView : public views::View {
18 public:
19 DragHandleView(DragHandleScrollDirection scroll_direction,
20 DragHandleScrollDelegate* delegate,
21 int preferred_width,
22 int preferred_height);
23 ~DragHandleView() override;
24
25 private:
26 void SetColor(SkColor color);
27
28 void SetIsScrolling(bool scrolling);
29
30 // views::View:
31 virtual gfx::Size GetPreferredSize() const override;
32 virtual void OnGestureEvent(ui::GestureEvent* event) override;
33
34 bool scroll_in_progress_;
35 DragHandleScrollDelegate* delegate_;
36 DragHandleScrollDirection scroll_direction_;
37 SkColor color_;
38 float scroll_start_location_;
39 const int preferred_width_;
40 const int preferred_height_;
41
42 DISALLOW_COPY_AND_ASSIGN(DragHandleView);
43 };
44
45 DragHandleView::DragHandleView(DragHandleScrollDirection scroll_direction,
46 DragHandleScrollDelegate* delegate,
47 int preferred_width,
48 int preferred_height)
49 : scroll_in_progress_(false),
50 delegate_(delegate),
51 scroll_direction_(scroll_direction),
52 color_(SK_ColorTRANSPARENT),
53 preferred_width_(preferred_width),
54 preferred_height_(preferred_height) {
55 SetColor(kDragHandleColorNormal);
56 }
57
58 DragHandleView::~DragHandleView() {
59 }
60
61 void DragHandleView::SetColor(SkColor color) {
62 if (color_ == color)
63 return;
64 color_ = color;
65 set_background(views::Background::CreateSolidBackground(color_));
66 SchedulePaint();
67 }
68
69 void DragHandleView::SetIsScrolling(bool scrolling) {
70 if (scroll_in_progress_ == scrolling)
71 return;
72 scroll_in_progress_ = scrolling;
73 if (!scroll_in_progress_)
74 scroll_start_location_ = 0;
75 }
76
77 // views::View:
78 gfx::Size DragHandleView::GetPreferredSize() const {
79 return gfx::Size(preferred_width_, preferred_height_);
80 }
81
82 void DragHandleView::OnGestureEvent(ui::GestureEvent* event) {
83 SkColor change_color = SK_ColorTRANSPARENT;
84 if (event->type() == ui::ET_GESTURE_BEGIN &&
85 event->details().touch_points() == 1) {
86 change_color = kDragHandleColorHot;
87 } else if (event->type() == ui::ET_GESTURE_END &&
88 event->details().touch_points() == 1) {
89 change_color = kDragHandleColorNormal;
90 }
91
92 if (change_color != SK_ColorTRANSPARENT) {
93 SetColor(change_color);
94 event->SetHandled();
95 return;
96 }
97
98 if (event->type() == ui::ET_GESTURE_SCROLL_BEGIN) {
99 if (scroll_in_progress_)
100 return;
101 float delta;
102 if (scroll_direction_ == DRAG_HANDLE_VERTICAL) {
103 delta = event->details().scroll_y_hint();
104 scroll_start_location_ = event->root_location().y();
105 } else {
106 delta = event->details().scroll_x_hint();
107 scroll_start_location_ = event->root_location().x();
108 }
109 delegate_->HandleScrollBegin(delta);
110 SetIsScrolling(true);
111 event->SetHandled();
112 } else if (event->type() == ui::ET_GESTURE_SCROLL_END ||
113 event->type() == ui::ET_SCROLL_FLING_START) {
114 if (!scroll_in_progress_)
115 return;
116 float velocity = 0.0f;
117 if (event->type() == ui::ET_SCROLL_FLING_START)
118 velocity = event->details().velocity_x();
119 delegate_->HandleScrollEnd(velocity);
120 SetColor(kDragHandleColorNormal);
121 SetIsScrolling(false);
122 event->SetHandled();
123 } else if (event->type() == ui::ET_GESTURE_SCROLL_UPDATE) {
124 if (!scroll_in_progress_)
125 return;
126 float delta = scroll_direction_ == DRAG_HANDLE_VERTICAL
127 ? event->root_location().y() - scroll_start_location_
128 : event->root_location().x() - scroll_start_location_;
129 delegate_->HandleScrollUpdate(delta);
130 event->SetHandled();
131 }
132 }
133
134 } // namespace
135
136 views::View* CreateDragHandleView(DragHandleScrollDirection scroll_direction,
137 DragHandleScrollDelegate* delegate,
138 int preferred_width,
139 int preferred_height) {
140 views::View* view = new DragHandleView(
141 scroll_direction, delegate, preferred_width, preferred_height);
142 return view;
143 }
144
145 } // namespace athena
OLDNEW
« no previous file with comments | « athena/util/drag_handle.h ('k') | athena/util/drag_handle_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698