package com.lechucksoftware.proxy.proxysettings.excluded;
import android.support.v7.app.ActionBar;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceFragment;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.lechucksoftware.proxy.proxysettings.App;
import com.lechucksoftware.proxy.proxysettings.R;
import com.lechucksoftware.proxy.proxysettings.constants.Intents;
import com.lechucksoftware.proxy.proxysettings.preferences.ValidationPreference;
import be.shouldit.proxy.lib.ProxyStatusItem;
import be.shouldit.proxy.lib.WiFiAPConfig;
import be.shouldit.proxy.lib.enums.CheckStatusValues;
import be.shouldit.proxy.lib.enums.ProxyStatusProperties;
public class ProxyCheckerPrefsFragment extends PreferenceFragment
{
private ValidationPreference proxyEnabledPref;
private ValidationPreference proxyReachablePref;
private ValidationPreference proxyWebPref;
private ValidationPreference proxyValidHostPref;
private ValidationPreference proxyValidPortPref;
private ValidationPreference wifiEnabledPref;
private ValidationPreference wifiSelectedPref;
private Preference startCheckPref;
public static final String TAG = ProxyCheckerPrefsFragment.class.getSimpleName();
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.checker_preferences);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = super.onCreateView(inflater, container, savedInstanceState);
getUIComponents();
refreshUIComponents();
return v;
}
private void getUIComponents()
{
startCheckPref = (Preference) findPreference("preference_test_proxy_configuration");
startCheckPref.setOnPreferenceClickListener(new OnPreferenceClickListener()
{
public boolean onPreferenceClick(Preference preference)
{
App.getTraceUtils().d(TAG, "Calling broadcast intent " + Intents.PROXY_SETTINGS_MANUAL_REFRESH);
getActivity().sendBroadcast(new Intent(Intents.PROXY_SETTINGS_MANUAL_REFRESH));
return true;
}
});
wifiEnabledPref = (ValidationPreference) findPreference("validation_wifi_enabled");
wifiSelectedPref = (ValidationPreference) findPreference("validation_wifi_selected");
proxyEnabledPref = (ValidationPreference) findPreference("validation_proxy_enabled");
proxyValidHostPref = (ValidationPreference) findPreference("validation_proxy_valid_host");
proxyValidPortPref = (ValidationPreference) findPreference("validation_proxy_valid_port");
proxyReachablePref = (ValidationPreference) findPreference("validation_proxy_reachable");
proxyWebPref = (ValidationPreference) findPreference("validation_web_reachable");
}
public void refreshUIComponents()
{
WiFiAPConfig conf = App.getWifiNetworksManager().getCachedConfiguration();
if (conf.getStatus().getCheckingStatus() == CheckStatusValues.CHECKING)
{
startCheckPref.setEnabled(false);
String checkedDate = conf.getStatus().getCheckedDateString();
if (!TextUtils.isEmpty(checkedDate))
startCheckPref.setSummary("Start checking on: " + checkedDate);
}
else
{
startCheckPref.setEnabled(true);
String checkedDate = conf.getStatus().getCheckedDateString();
if (checkedDate != null && checkedDate.length() > 0)
startCheckPref.setSummary("Last checked on: " + checkedDate);
}
ProxyStatusItem wifi = conf.getStatus().getProperty(ProxyStatusProperties.WIFI_ENABLED);
ProxyStatusItem wifiSelected = conf.getStatus().getProperty(ProxyStatusProperties.WIFI_SELECTED);
ProxyStatusItem enabled = conf.getStatus().getProperty(ProxyStatusProperties.PROXY_ENABLED);
ProxyStatusItem hostname = conf.getStatus().getProperty(ProxyStatusProperties.PROXY_VALID_HOSTNAME);
ProxyStatusItem port = conf.getStatus().getProperty(ProxyStatusProperties.PROXY_VALID_PORT);
ProxyStatusItem ping = conf.getStatus().getProperty(ProxyStatusProperties.PROXY_REACHABLE);
ProxyStatusItem web = conf.getStatus().getProperty(ProxyStatusProperties.WEB_REACHABLE);
checkProxyStatusItem(wifi, wifiEnabledPref);
checkProxyStatusItem(wifiSelected, wifiSelectedPref);
checkProxyStatusItem(enabled, proxyEnabledPref);
checkProxyStatusItem(hostname, proxyValidHostPref);
checkProxyStatusItem(port, proxyValidPortPref);
checkProxyStatusItem(ping, proxyReachablePref);
checkProxyStatusItem(web, proxyWebPref);
}
public void checkProxyStatusItem(ProxyStatusItem statusItem, ValidationPreference uiPref)
{
uiPref.SetStatus(statusItem);
}
@Override
public void onResume()
{
super.onResume();
ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
}
}