package net.kismetwireless.android.smarterwifimanager; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.TextView; /** * Created by dragorn on 9/17/13. */ public class FragmentMain extends SmarterFragment { View mainView; SmarterWifiServiceBinder serviceBinder; Context context; ImageView mainIcon; TextView headlineText, smallText; CompoundButton switchManageWifi, switchAutoLearn; SharedPreferences sharedPreferences; private SmarterWifiService.SmarterServiceCallback guiCallback = new SmarterWifiService.SmarterServiceCallback() { @Override public void preferencesChanged() { super.preferencesChanged(); if (sharedPreferences == null || switchManageWifi == null || switchAutoLearn == null) return; Activity ma = getActivity(); if (ma == null) return; ma.runOnUiThread(new Runnable() { @Override public void run() { if (sharedPreferences.getBoolean(getString(R.string.pref_enable), true)) { switchManageWifi.setChecked(true); } else { switchManageWifi.setChecked(false); } if (sharedPreferences.getBoolean(getString(R.string.pref_learn), true)) { switchAutoLearn.setChecked(true); } else { switchAutoLearn.setChecked(false); } } }); } @Override public void wifiStateChanged(final SmarterSSID ssid, final SmarterWifiService.WifiState state, final SmarterWifiService.WifiState controlstate, final SmarterWifiService.ControlType type) { super.wifiStateChanged(ssid, state, controlstate, type); Activity ma = getActivity(); if (ma == null) return; ma.runOnUiThread(new Runnable() { @Override public void run() { int wifiIconId = R.drawable.ic_launcher_notification_ignore; int wifiTextResource = -1; int reasonTextResource = -1; wifiTextResource = SmarterWifiService.wifiStateToTextResource(state); reasonTextResource = SmarterWifiService.controlTypeToTextResource(type, state); if (state == SmarterWifiService.WifiState.WIFI_IDLE) { wifiIconId = R.drawable.ic_launcher_notification_idle; } else if (state == SmarterWifiService.WifiState.WIFI_BLOCKED) { wifiIconId = R.drawable.ic_launcher_notification_disabled; } else if (state == SmarterWifiService.WifiState.WIFI_IGNORE) { wifiIconId = R.drawable.ic_launcher_notification_idle; } else if (state == SmarterWifiService.WifiState.WIFI_OFF) { if (type == SmarterWifiService.ControlType.CONTROL_BLUETOOTH) wifiIconId = R.drawable.ic_launcher_notification_bluetooth; else if (type == SmarterWifiService.ControlType.CONTROL_TIME) wifiIconId = R.drawable.ic_launcher_notification_clock; else if (type == SmarterWifiService.ControlType.CONTROL_TOWER) wifiIconId = R.drawable.ic_launcher_notification_cell; else wifiIconId = R.drawable.ic_launcher_notification_disabled; } else if (state == SmarterWifiService.WifiState.WIFI_ON) { if (type == SmarterWifiService.ControlType.CONTROL_BLUETOOTH) wifiIconId = R.drawable.ic_launcher_notification_bluetooth; else if (type == SmarterWifiService.ControlType.CONTROL_TIME) wifiIconId = R.drawable.ic_launcher_notification_clock; else if (type == SmarterWifiService.ControlType.CONTROL_TOWER) wifiIconId = R.drawable.ic_launcher_notification_cell; else wifiIconId = R.drawable.ic_launcher_notification_ignore; } mainIcon.setImageResource(wifiIconId); if (wifiTextResource > 0) { headlineText.setText(wifiTextResource); } else { headlineText.setText(""); } if (reasonTextResource > 0) { smallText.setText(reasonTextResource); } else { smallText.setText(""); } } }); } }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); //if (mainView == null) mainView = inflater.inflate(R.layout.fragment_main, container, false); context = getActivity().getApplicationContext(); serviceBinder = new SmarterWifiServiceBinder(context); sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); mainIcon = (ImageView) mainView.findViewById(R.id.imageWifiStatus); headlineText = (TextView) mainView.findViewById(R.id.textViewMain); smallText = (TextView) mainView.findViewById(R.id.textViewMinor); switchManageWifi = (CompoundButton) mainView.findViewById(R.id.switchManageWifi); switchAutoLearn = (CompoundButton) mainView.findViewById(R.id.switchAutoLearn); // Defer main setup until we've bound serviceBinder.doCallAndBindService(new SmarterWifiServiceBinder.BinderCallback() { @Override public void run(SmarterWifiServiceBinder b) { if (!isAdded()) return; switchManageWifi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { switchAutoLearn.setEnabled(b); setManageWifi(b); } }); serviceBinder.addCallback(guiCallback); switchAutoLearn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { setLearnWifi(b); } }); if (sharedPreferences.getBoolean(getString(R.string.pref_enable), true)) { switchManageWifi.setChecked(true); } else { switchManageWifi.setChecked(false); } if (sharedPreferences.getBoolean(getString(R.string.pref_learn), true)) { switchAutoLearn.setChecked(true); } else { switchAutoLearn.setChecked(false); } } }); return mainView; } @Override public void onPause() { super.onPause(); if (serviceBinder != null) serviceBinder.removeCallback(guiCallback); } @Override public void onResume() { super.onResume(); if (serviceBinder != null) serviceBinder.addCallback(guiCallback); } @Override public void onDestroy() { super.onDestroy(); if (serviceBinder != null) serviceBinder.doUnbindService(); } private boolean setManageWifi(boolean b) { if (serviceBinder == null) return false; SharedPreferences.Editor e = sharedPreferences.edit(); e.putBoolean(getString(R.string.pref_enable), b); e.commit(); serviceBinder.doUpdatePreferences(); return true; } private boolean setLearnWifi(boolean b) { if (serviceBinder == null) return false; SharedPreferences.Editor e = sharedPreferences.edit(); e.putBoolean(getString(R.string.pref_learn), b); e.commit(); return true; } @Override public int getTitle() { return R.string.tab_main; } }