1d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi/* 2d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * Copyright (C) 2014 The Android Open Source Project 3d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * 4d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * Licensed under the Apache License, Version 2.0 (the "License"); 5d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * you may not use this file except in compliance with the License. 6d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * You may obtain a copy of the License at 7d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * 8d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * http://www.apache.org/licenses/LICENSE-2.0 9d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * 10d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * Unless required by applicable law or agreed to in writing, software 11d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * distributed under the License is distributed on an "AS IS" BASIS, 12d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * See the License for the specific language governing permissions and 14d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * limitations under the License 15d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi */ 16d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 17d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggipackage com.android.systemui.statusbar.stack; 18d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 19d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggiimport java.util.ArrayList; 20d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 21d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi/** 22d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * Filters the animations for only a certain type of properties. 23d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi */ 24d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggipublic class AnimationFilter { 25d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi boolean animateAlpha; 26d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi boolean animateY; 27d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi boolean animateZ; 28d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi boolean animateScale; 29d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi boolean animateHeight; 30708a6c120da6750d281195ef15a240a5627efed4Selim Cinek boolean animateTopInset; 31d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi boolean animateDimmed; 32bf370992508c55d1f2493923bdc1834a0710e4baJohn Spurlock boolean animateDark; 33ae44128776410abd11bd06ae700db9cc4606a773Jorim Jaggi boolean animateHideSensitive; 348efa6dde2b4f2cdbf046b87b7366404c3cc46219Selim Cinek boolean hasDelays; 3560d07c597c3f996deb3f2743466fe5279ca15e8dJorim Jaggi boolean hasGoToFullShadeEvent; 364e857f4ef0357e05806819d0488a73a12208fe8fJorim Jaggi boolean hasDarkEvent; 372a5e452f4f70d2dd717946dd50486cc66ea4cc43Jorim Jaggi int darkAnimationOriginIndex; 38d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 39d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi public AnimationFilter animateAlpha() { 40d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateAlpha = true; 41d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi return this; 42d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi } 43d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 44d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi public AnimationFilter animateY() { 45d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateY = true; 46d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi return this; 47d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi } 48d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 498efa6dde2b4f2cdbf046b87b7366404c3cc46219Selim Cinek public AnimationFilter hasDelays() { 508efa6dde2b4f2cdbf046b87b7366404c3cc46219Selim Cinek hasDelays = true; 518efa6dde2b4f2cdbf046b87b7366404c3cc46219Selim Cinek return this; 528efa6dde2b4f2cdbf046b87b7366404c3cc46219Selim Cinek } 538efa6dde2b4f2cdbf046b87b7366404c3cc46219Selim Cinek 54d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi public AnimationFilter animateZ() { 55d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateZ = true; 56d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi return this; 57d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi } 58d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 59d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi public AnimationFilter animateScale() { 60d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateScale = true; 61d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi return this; 62d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi } 63d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 64d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi public AnimationFilter animateHeight() { 65d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateHeight = true; 66d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi return this; 67d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi } 68d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 69708a6c120da6750d281195ef15a240a5627efed4Selim Cinek public AnimationFilter animateTopInset() { 70708a6c120da6750d281195ef15a240a5627efed4Selim Cinek animateTopInset = true; 71708a6c120da6750d281195ef15a240a5627efed4Selim Cinek return this; 72708a6c120da6750d281195ef15a240a5627efed4Selim Cinek } 73708a6c120da6750d281195ef15a240a5627efed4Selim Cinek 74d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi public AnimationFilter animateDimmed() { 75d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateDimmed = true; 76d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi return this; 77d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi } 78d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 79bf370992508c55d1f2493923bdc1834a0710e4baJohn Spurlock public AnimationFilter animateDark() { 80bf370992508c55d1f2493923bdc1834a0710e4baJohn Spurlock animateDark = true; 81bf370992508c55d1f2493923bdc1834a0710e4baJohn Spurlock return this; 82bf370992508c55d1f2493923bdc1834a0710e4baJohn Spurlock } 83bf370992508c55d1f2493923bdc1834a0710e4baJohn Spurlock 84ae44128776410abd11bd06ae700db9cc4606a773Jorim Jaggi public AnimationFilter animateHideSensitive() { 85ae44128776410abd11bd06ae700db9cc4606a773Jorim Jaggi animateHideSensitive = true; 86ae44128776410abd11bd06ae700db9cc4606a773Jorim Jaggi return this; 87ae44128776410abd11bd06ae700db9cc4606a773Jorim Jaggi } 88ae44128776410abd11bd06ae700db9cc4606a773Jorim Jaggi 89d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi /** 90d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * Combines multiple filters into {@code this} filter, using or as the operand . 91d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * 92d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi * @param events The animation events from the filters to combine. 93d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi */ 94d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi public void applyCombination(ArrayList<NotificationStackScrollLayout.AnimationEvent> events) { 95d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi reset(); 96d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi int size = events.size(); 97d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi for (int i = 0; i < size; i++) { 982a5e452f4f70d2dd717946dd50486cc66ea4cc43Jorim Jaggi NotificationStackScrollLayout.AnimationEvent ev = events.get(i); 99d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi combineFilter(events.get(i).filter); 1002a5e452f4f70d2dd717946dd50486cc66ea4cc43Jorim Jaggi if (ev.animationType == 10160d07c597c3f996deb3f2743466fe5279ca15e8dJorim Jaggi NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_GO_TO_FULL_SHADE) { 10260d07c597c3f996deb3f2743466fe5279ca15e8dJorim Jaggi hasGoToFullShadeEvent = true; 10360d07c597c3f996deb3f2743466fe5279ca15e8dJorim Jaggi } 1042a5e452f4f70d2dd717946dd50486cc66ea4cc43Jorim Jaggi if (ev.animationType == 1054e857f4ef0357e05806819d0488a73a12208fe8fJorim Jaggi NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_DARK) { 1064e857f4ef0357e05806819d0488a73a12208fe8fJorim Jaggi hasDarkEvent = true; 1072a5e452f4f70d2dd717946dd50486cc66ea4cc43Jorim Jaggi darkAnimationOriginIndex = ev.darkAnimationOriginIndex; 1084e857f4ef0357e05806819d0488a73a12208fe8fJorim Jaggi } 109d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi } 110d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi } 111d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 112d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi private void combineFilter(AnimationFilter filter) { 113d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateAlpha |= filter.animateAlpha; 114d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateY |= filter.animateY; 115d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateZ |= filter.animateZ; 116d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateScale |= filter.animateScale; 117d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateHeight |= filter.animateHeight; 118708a6c120da6750d281195ef15a240a5627efed4Selim Cinek animateTopInset |= filter.animateTopInset; 119d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateDimmed |= filter.animateDimmed; 120bf370992508c55d1f2493923bdc1834a0710e4baJohn Spurlock animateDark |= filter.animateDark; 121ae44128776410abd11bd06ae700db9cc4606a773Jorim Jaggi animateHideSensitive |= filter.animateHideSensitive; 1228efa6dde2b4f2cdbf046b87b7366404c3cc46219Selim Cinek hasDelays |= filter.hasDelays; 123d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi } 124d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi 125d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi private void reset() { 126d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateAlpha = false; 127d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateY = false; 128d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateZ = false; 129d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateScale = false; 130d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateHeight = false; 131708a6c120da6750d281195ef15a240a5627efed4Selim Cinek animateTopInset = false; 132d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi animateDimmed = false; 133bf370992508c55d1f2493923bdc1834a0710e4baJohn Spurlock animateDark = false; 134ae44128776410abd11bd06ae700db9cc4606a773Jorim Jaggi animateHideSensitive = false; 1358efa6dde2b4f2cdbf046b87b7366404c3cc46219Selim Cinek hasDelays = false; 13660d07c597c3f996deb3f2743466fe5279ca15e8dJorim Jaggi hasGoToFullShadeEvent = false; 1374e857f4ef0357e05806819d0488a73a12208fe8fJorim Jaggi hasDarkEvent = false; 1382a5e452f4f70d2dd717946dd50486cc66ea4cc43Jorim Jaggi darkAnimationOriginIndex = 1392a5e452f4f70d2dd717946dd50486cc66ea4cc43Jorim Jaggi NotificationStackScrollLayout.AnimationEvent.DARK_ANIMATION_ORIGIN_INDEX_ABOVE; 140d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi } 141d552d9d8e964c102e6832610be46cf2c041e8829Jorim Jaggi} 142