Home | History | Annotate | Download | only in kbars
      1 package js.kbars;
      2 
      3 import android.util.Log;
      4 import android.view.View;
      5 import android.view.View.OnClickListener;
      6 import android.view.View.OnSystemUiVisibilityChangeListener;
      7 import android.widget.Button;
      8 
      9 public final class ImmersiveModeToggleButton extends Button {
     10     private final KBarsActivity mActivity;
     11     private final String mCaption;
     12     private final int mImmersiveFlags;
     13     private boolean mImmersiveMode;
     14 
     15     public ImmersiveModeToggleButton(KBarsActivity activity, String caption, int immersiveFlags) {
     16         super(activity);
     17         this.mActivity = activity;
     18         this.mCaption = caption;
     19         this.mImmersiveFlags = immersiveFlags;
     20         setOnClickListener(new OnClickListener() {
     21             public void onClick(View v) {
     22                 ImmersiveModeToggleButton.this.toggleImmersiveMode("clicked");
     23             }
     24         });
     25         updateImmersiveModeButton();
     26         setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() {
     27             public void onSystemUiVisibilityChange(int visibility) {
     28                 ImmersiveModeToggleButton.this.onSysuiChanged(visibility);
     29             }
     30         });
     31     }
     32 
     33     private void toggleImmersiveMode(String reason) {
     34         boolean z;
     35         boolean z2 = false;
     36         Log.d(KBarsActivity.TAG, "toggleImmersiveMode reason=" + reason);
     37         if (this.mImmersiveMode) {
     38             z = false;
     39         } else {
     40             z = true;
     41         }
     42         this.mImmersiveMode = z;
     43         updateImmersiveModeButton();
     44         KBarsActivity kBarsActivity = this.mActivity;
     45         if (!this.mImmersiveMode) {
     46             z2 = true;
     47         }
     48         kBarsActivity.setSoloButton(z2, this, true);
     49     }
     50 
     51     private void updateImmersiveModeButton() {
     52         Log.d(KBarsActivity.TAG, "updateButtons mImmersiveMode=" + this.mImmersiveMode);
     53         setText(this.mImmersiveMode ? "Exit " + this.mCaption + " mode" : "Enter " + this.mCaption + " mode");
     54         setSystemUiVisibility(this.mImmersiveMode ? this.mImmersiveFlags : KBarsActivity.BASE_FLAGS);
     55     }
     56 
     57     private void onSysuiChanged(int vis) {
     58         boolean hideStatus;
     59         boolean hideSomething = false;
     60         Log.d(KBarsActivity.TAG, "sysui changed: " + Integer.toHexString(vis));
     61         if ((vis & 4) != 0) {
     62             hideStatus = true;
     63         } else {
     64             hideStatus = false;
     65         }
     66         boolean hideNav;
     67         if ((vis & 2) != 0) {
     68             hideNav = true;
     69         } else {
     70             hideNav = false;
     71         }
     72         if (hideStatus || hideNav) {
     73             hideSomething = true;
     74         }
     75         if (this.mImmersiveMode && !hideSomething) {
     76             toggleImmersiveMode("sysui_changed");
     77         }
     78     }
     79 }
     80