package net.kismetwireless.android.smarterwifimanager; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.net.wifi.WifiManager; import android.os.Bundle; import android.preference.PreferenceManager; import android.provider.Settings; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.Button; import android.widget.CompoundButton; /** * Created by dragorn on 10/19/13. */ public class ActivityQuickconfig extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState == null) { FragmentManager fm = getSupportFragmentManager(); QuickDialog qDialog = new QuickDialog(); qDialog.show(fm, "fragment_edit_name"); } /* AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.delete_dialog_title); builder.setMessage(R.string.delete_learned_message); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { ActivityQuickconfig.this.finish(); } }); builder.create().show(); */ } public static class QuickDialog extends DialogFragment { private View dialogView; private SharedPreferences sharedPreferences; private WifiManager wifiManager; private BluetoothAdapter btAdapter; private View forgetView; private SmarterWifiServiceBinder binder; private SmarterWifiService.SmarterServiceCallback serviceCallback = new SmarterWifiService.SmarterServiceCallback() { @Override public void wifiStateChanged(SmarterSSID ssid, SmarterWifiService.WifiState state, final SmarterWifiService.WifiState controlstate, final SmarterWifiService.ControlType type) { super.wifiStateChanged(ssid, state, controlstate, type); try { Activity activity = getActivity(); activity.runOnUiThread(new Runnable() { @Override public void run() { // Toast.makeText(ActivityQuickconfig.this, "controlstate " + controlstate + " type " + type, Toast.LENGTH_SHORT).show(); if (controlstate == SmarterWifiService.WifiState.WIFI_ON && type == SmarterWifiService.ControlType.CONTROL_TOWER && forgetView != null) forgetView.setVisibility(View.VISIBLE); // else //forgetView.setVisibility(View.GONE); } }); } catch (NullPointerException npe) { } } }; private BroadcastReceiver bcastRx = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION) || intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { try { Activity activity = getActivity(); activity.runOnUiThread(new Runnable() { @Override public void run() { configureView(); } }); } catch (NullPointerException npe) { } } } }; public QuickDialog() { } private void configureView() { if (dialogView == null) { return; } CompoundButton wifiSwitch = (CompoundButton) dialogView.findViewById(R.id.quickSwitchWifi); CompoundButton btSwitch = (CompoundButton) dialogView.findViewById(R.id.quickSwitchBt); CompoundButton enableSwitch = (CompoundButton) dialogView.findViewById(R.id.quickSwitchEnable); if (sharedPreferences.getBoolean(getString(R.string.pref_enable), true)) { enableSwitch.setChecked(true); } else { enableSwitch.setChecked(false); } enableSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { setManageWifi(b); } }); int ws = wifiManager.getWifiState(); if (ws == WifiManager.WIFI_STATE_ENABLED || ws == WifiManager.WIFI_STATE_ENABLING) { wifiSwitch.setChecked(true); } else { wifiSwitch.setChecked(false); } int bs = btAdapter.getState(); if (bs == BluetoothAdapter.STATE_ON || bs == BluetoothAdapter.STATE_TURNING_ON) { btSwitch.setChecked(true); } else { btSwitch.setChecked(false); } wifiSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { wifiManager.setWifiEnabled(b); } }); btSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if (b) { btAdapter.enable(); } else { btAdapter.disable(); } } }); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final Activity activity = getActivity(); sharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity); SharedPreferences.Editor e = sharedPreferences.edit(); e.putBoolean("everbeenrun", true); e.commit(); binder = new SmarterWifiServiceBinder(activity); binder.doCallAndBindService(new SmarterWifiServiceBinder.BinderCallback() { @Override public void run(SmarterWifiServiceBinder b) { b.doUpdatePreferences(); } }); wifiManager = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE); btAdapter = BluetoothAdapter.getDefaultAdapter(); View view = inflater.inflate(R.layout.activity_quickconfig, container); getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); Button closeButton = (Button) view.findViewById(R.id.quickerButtonClose); closeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { QuickDialog.this.getDialog().dismiss(); } }); View settingsView = (View) view.findViewById(R.id.quickerSettings); settingsView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(Settings.ACTION_WIFI_SETTINGS); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); QuickDialog.this.getDialog().dismiss(); startActivity(i); } }); View swmView = (View) view.findViewById(R.id.quickerManager); swmView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { Intent i = new Intent(activity, MainActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); QuickDialog.this.getDialog().dismiss(); startActivity(i); } catch (NullPointerException npe) { } } }); forgetView = (View) view.findViewById(R.id.quickerForget); forgetView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { binder.deleteCurrentTower(); } }); binder.addCallback(serviceCallback); dialogView = view; IntentFilter intf = new IntentFilter(); intf.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); intf.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); activity.registerReceiver(bcastRx, intf); configureView(); return view; } @Override public void onDismiss(DialogInterface dialog) { try { Activity activity = getActivity(); activity.unregisterReceiver(bcastRx); binder.removeCallback(serviceCallback); activity.finish(); } catch (NullPointerException npe) { } } private boolean setManageWifi(boolean b) { SharedPreferences.Editor e = sharedPreferences.edit(); e.putBoolean(getString(R.string.pref_enable), b); e.commit(); try { Activity activity = getActivity(); SmarterWifiServiceBinder binder = new SmarterWifiServiceBinder(activity); binder.doCallAndBindService(new SmarterWifiServiceBinder.BinderCallback() { @Override public void run(SmarterWifiServiceBinder b) { b.doUpdatePreferences(); } }); } catch (NullPointerException npe) { } return true; } } }