package com.android.settings.widget.buttons; import android.app.Activity; import android.app.KeyguardManager; import android.app.KeyguardManager.KeyguardLock; import android.content.Context; import android.content.SharedPreferences; import android.view.Gravity; import android.widget.Toast; import com.android.settings.R; import com.android.settings.widget.SettingsAppWidgetProvider; import com.android.settings.widget.WidgetSettings; public class LockScreenButton extends WidgetButton { static Boolean lockScreen = null; public static final String LOCK_SCREEN="lockScreen"; static LockScreenButton ownButton=null; KeyguardLock lock; private KeyguardLock getLock(Context context) { if (lock==null) { KeyguardManager keyguardManager = (KeyguardManager)context.getSystemService(Activity.KEYGUARD_SERVICE); lock = keyguardManager.newKeyguardLock(Context.KEYGUARD_SERVICE); } return lock; } public void updateState(Context context, SharedPreferences globalPreferences, int[] appWidgetIds) { getState(context); if (lockScreen==null) { currentIcon=R.drawable.ic_appwidget_settings_lock_screen_off; currentState=SettingsAppWidgetProvider.STATE_INTERMEDIATE; } else if (lockScreen) { currentIcon=R.drawable.ic_appwidget_settings_lock_screen_on; currentState=SettingsAppWidgetProvider.STATE_ENABLED; } else { currentIcon=R.drawable.ic_appwidget_settings_lock_screen_off; currentState=SettingsAppWidgetProvider.STATE_DISABLED; } } /** * Toggles the state of GPS. * * @param context */ public void toggleState(Context context) { getState(context); if(lockScreen==null) { Toast msg = Toast.makeText(context, "Not yet initialized", Toast.LENGTH_LONG); msg.setGravity(Gravity.CENTER, msg.getXOffset() / 2, msg.getYOffset() / 2); msg.show(); } else { getLock(context); if (lockScreen && lock!=null){ lock.disableKeyguard(); lockScreen=false; // writeState(context); } else if (lock!=null){ lock.reenableKeyguard(); lockScreen=true; // writeState(context); } } } /** * Gets the state of GPS location. * * @param context * @return true if enabled. */ private static boolean getState(Context context) { if (lockScreen==null) { /* SharedPreferences preferencesGeneral = context.getSharedPreferences(WidgetSettings.WIDGET_PREF_MAIN,Context.MODE_PRIVATE); if (preferencesGeneral.getInt(WidgetSettings.SAVED, SettingsAppWidgetProvider.WIDGET_NOT_CONFIGURED)==SettingsAppWidgetProvider.WIDGET_PRESENT ) { lockScreen=preferencesGeneral.getBoolean(LOCK_SCREEN, true); } else { return false; } */ lockScreen=true; } return lockScreen; } public static LockScreenButton getInstance() { if (ownButton==null) ownButton = new LockScreenButton(); return ownButton; } @Override void initButton() { buttonID=WidgetButton.BUTTON_LOCK_SCREEN; preferenceName=WidgetSettings.TOGGLE_LOCK_SCREEN; } }