pastebin - collaborative debugging tool
phoenix.kpaste.net RSS


StayAwakeTile.java
Posted by Phoenix on Sat 19th Oct 2013 18:44
raw | new post

  1. https://github.com/ReVolt-ROM/frameworks_base/commit/a79211133a0c88b00f63aee353ef53f862895c3c
  2.  
  3. package com.android.systemui.quicksettings;
  4.  
  5. import android.content.ContentResolver;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.content.res.Resources;
  9. import android.net.Uri;
  10. import android.os.UserHandle;
  11. import android.provider.Settings;
  12. import android.view.LayoutInflater;
  13. import android.view.View;
  14. import android.view.View.OnClickListener;
  15. import android.view.View.OnLongClickListener;
  16.  
  17. import com.android.systemui.R;
  18. import com.android.systemui.statusbar.phone.QuickSettingsController;
  19. import com.android.systemui.statusbar.phone.QuickSettingsContainerView;
  20.  
  21. import android.content.SharedPreferences;
  22. import android.content.SharedPreferences.Editor;
  23. import android.database.ContentObserver;
  24.  
  25. public class StayAwakeTile extends QuickSettingsTile {
  26.  
  27.         private static final String KEY_USER_TIMEOUT = "user_timeout";
  28.         private static final int neverSleep = Integer.MAX_VALUE; // MAX_VALUE equates to approx 24 days
  29.     private static final int FALLBACK_SCREEN_TIMEOUT_VALUE = 30000;
  30.         private boolean enabled;
  31.     private int storedUserTimeout;
  32.         SettingsObserver mObserver = null;
  33.     //private static final int SCREEN_TIMEOUT_MAX    = Integer.Max_;
  34.  
  35.             @Override
  36.     public void init(Context c, int style) {
  37.         super.init(c, style);
  38.  
  39.         SharedPreferences shared = mContext.getSharedPreferences(KEY_USER_TIMEOUT,
  40.                 Context.MODE_PRIVATE);
  41.         storedUserTimeout = shared.getInt("timeout", FALLBACK_SCREEN_TIMEOUT_VALUE);
  42.         mObserver = new SettingsObserver(mHandler);
  43.         mObserver.observe();
  44.     }
  45.  
  46.     @Override
  47.     protected void cleanup() {
  48.         if (mObserver != null) {
  49.             mContext.getContentResolver().unregisterContentObserver(mObserver);
  50.             mObserver = null;
  51.         }
  52.         super.cleanup();
  53.     }
  54.        
  55.     public StayAwakeTile(Context context, QuickSettingsController qsc) {
  56.         super(context, qsc);
  57.  
  58.         mOnClick = new OnClickListener() {
  59.             @Override
  60.             public void onClick(View v) {
  61.                 toggleState();
  62.                 updateResources();
  63.             }
  64.         };
  65.  
  66.         mOnLongClick = new OnLongClickListener() {
  67.             @Override
  68.             public boolean onLongClick(View v) {
  69.                 Intent intent = new Intent("android.settings.DISPLAY_SETTINGS");
  70.                 startSettingsActivity(intent);
  71.                 return true;
  72.             }
  73.         };
  74.  
  75.         qsc.registerObservedContent(Settings.System.getUriFor(Settings.System.SCREEN_OFF_TIMEOUT)
  76.                 , this);
  77.     }
  78.  
  79.     @Override
  80.     public void onChangeUri(ContentResolver resolver, Uri uri) {
  81.         updateResources();
  82.     }
  83.  
  84.     @Override
  85.     void onPostCreate() {
  86.         updateTile();
  87.         super.onPostCreate();
  88.     }
  89.  
  90.     @Override
  91.     public void updateResources() {
  92.         updateTile();
  93.         super.updateResources();
  94.     }
  95.  
  96.     private synchronized void updateTile() {
  97.         int currentTimeout = Settings.System.getInt(mContext.getContentResolver(),
  98.                 Settings.System.SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE);
  99.  
  100.         if (currentTimeout == neverSleep) {
  101.             enabled = true;
  102.         } else {
  103.             enabled = false;
  104.         }
  105.         mLabel = (enabled ? R.string.quick_settings_stayawake_on
  106.                 : R.string.quick_settings_stayawake_off);
  107.         mDrawable = (enabled ? R.drawable.ic_qs_stayawake_on : R.drawable.ic_qs_stayawake_off);
  108.     }
  109.  
  110.     protected void toggleState() {
  111.         int currentTimeout =
  112.  
  113.         if (state) {
  114.             saveUserTimeout();
  115.             Settings.System.putInt(mContext.getContentResolver(),
  116.                     Settings.System.SCREEN_OFF_TIMEOUT, neverSleep);
  117.         } else {
  118.             Settings.System.putInt(mContext.getContentResolver(),
  119.                     Settings.System.SCREEN_OFF_TIMEOUT, storedUserTimeout);
  120.             saveUserTimeout(); // save here incase of manual change
  121.         }
  122.     }
  123.        
  124.     private void saveUserTimeout() {
  125.         storedUserTimeout = Settings.System.getInt(mContext.getContentResolver(),
  126.                 Settings.System.SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE);
  127.         SharedPreferences shared = mContext.getSharedPreferences(KEY_USER_TIMEOUT,
  128.                 Context.MODE_PRIVATE);
  129.         shared.edit().putInt("timeout", storedUserTimeout).commit();
  130.     }
  131.  
  132.     class SettingsObserver extends ContentObserver {
  133.         SettingsObserver(Handler handler) {
  134.             super(handler);
  135.         }
  136.  
  137.         void observe() {
  138.             ContentResolver resolver = mContext.getContentResolver();
  139.             resolver.registerContentObserver(Settings.Global
  140.                     .getUriFor(Settings.System.SCREEN_OFF_TIMEOUT), false,
  141.                     this);
  142.         }

Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:

To highlight particular lines, prefix each line with {%HIGHLIGHT}




All content is user-submitted.
The administrators of this site (kpaste.net) are not responsible for their content.
Abuse reports should be emailed to us at