Home | History | Annotate | Download | only in deskclock
      1 package com.android.deskclock;
      2 
      3 import android.support.annotation.IntDef;
      4 
      5 /**
      6  * Implemented by containers that house the fab and its associated buttons. Also implemented by
      7  * containers that know how to contact the <strong>true</strong> fab container to ferry through
      8  * commands.
      9  */
     10 public interface FabContainer {
     11 
     12     /** Bit field for updates */
     13 
     14     /** Bit 0-1 */
     15     int FAB_ANIMATION_MASK = 0b11;
     16     /** Signals that the fab should be updated in place with no animation. */
     17     int FAB_IMMEDIATE = 0b1;
     18     /** Signals the fab should be "animated away", updated, and "animated back". */
     19     int FAB_SHRINK_AND_EXPAND = 0b10;
     20     /** Signals that the fab should morph into a new state in place. */
     21     int FAB_MORPH = 0b11;
     22 
     23     /** Bit 2 */
     24     int FAB_REQUEST_FOCUS_MASK = 0b100;
     25     /** Signals that the fab should request focus. */
     26     int FAB_REQUEST_FOCUS = 0b100;
     27 
     28     /** Bit 3-4 */
     29     int BUTTONS_ANIMATION_MASK = 0b11000;
     30     /** Signals that the buttons should be updated in place with no animation. */
     31     int BUTTONS_IMMEDIATE = 0b1000;
     32     /** Signals that the buttons should be "animated away", updated, and "animated back". */
     33     int BUTTONS_SHRINK_AND_EXPAND = 0b10000;
     34 
     35     /** Bit 5 */
     36     int BUTTONS_DISABLE_MASK = 0b100000;
     37     /** Disable the buttons of the fab so they do not respond to clicks. */
     38     int BUTTONS_DISABLE = 0b100000;
     39 
     40     /** Bit 6-7 */
     41     int FAB_AND_BUTTONS_SHRINK_EXPAND_MASK = 0b11000000;
     42     /** Signals the fab and buttons should be "animated away". */
     43     int FAB_AND_BUTTONS_SHRINK = 0b10000000;
     44     /** Signals the fab and buttons should be "animated back". */
     45     int FAB_AND_BUTTONS_EXPAND = 0b01000000;
     46 
     47     /** Convenience flags */
     48     int FAB_AND_BUTTONS_IMMEDIATE = FAB_IMMEDIATE | BUTTONS_IMMEDIATE;
     49     int FAB_AND_BUTTONS_SHRINK_AND_EXPAND = FAB_SHRINK_AND_EXPAND | BUTTONS_SHRINK_AND_EXPAND;
     50 
     51     @IntDef(
     52             flag = true,
     53             value = { FAB_IMMEDIATE, FAB_SHRINK_AND_EXPAND, FAB_MORPH, FAB_REQUEST_FOCUS,
     54                     BUTTONS_IMMEDIATE, BUTTONS_SHRINK_AND_EXPAND, BUTTONS_DISABLE,
     55                     FAB_AND_BUTTONS_IMMEDIATE, FAB_AND_BUTTONS_SHRINK_AND_EXPAND,
     56                     FAB_AND_BUTTONS_SHRINK, FAB_AND_BUTTONS_EXPAND }
     57     )
     58     @interface UpdateFabFlag {}
     59 
     60     /**
     61      * Requests that this container update the fab and/or its buttons because their state has
     62      * changed. The update may be immediate or it may be animated depending on the choice of
     63      * {@code updateTypes}.
     64      *
     65      * @param updateTypes indicates the types of update to apply to the fab and its buttons
     66      */
     67     void updateFab(@UpdateFabFlag int updateTypes);
     68 }