package com.lechucksoftware.proxy.proxysettings.ui.fragments;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import com.astuetz.PagerSlidingTabStrip;
import com.lechucksoftware.proxy.proxysettings.App;
import com.lechucksoftware.proxy.proxysettings.R;
import com.lechucksoftware.proxy.proxysettings.constants.FragmentMode;
import com.lechucksoftware.proxy.proxysettings.ui.base.BaseFragment;
import be.shouldit.proxy.lib.APLNetworkId;
import be.shouldit.proxy.lib.WiFiApConfig;
import be.shouldit.proxy.lib.reflection.android.ProxySetting;
import butterknife.ButterKnife;
import butterknife.InjectView;
public class ProxySelectorFragment extends BaseFragment
{
private static final String SELECTED_WIFI_NETWORK = "SELECTED_WIFI_NETWORK";
private APLNetworkId wifiAplNetworkId;
private WiFiApConfig selectedConfig;
@InjectView(R.id.tabs) PagerSlidingTabStrip tabs;
@InjectView(R.id.pager) ViewPager pager;
private MyPagerAdapter adapter;
public static ProxySelectorFragment newInstance(APLNetworkId wifiAplNetworkId)
{
ProxySelectorFragment fragment = new ProxySelectorFragment();
Bundle args = new Bundle();
args.putParcelable(SELECTED_WIFI_NETWORK, wifiAplNetworkId);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
wifiAplNetworkId = getArguments().getParcelable(SELECTED_WIFI_NETWORK);
selectedConfig = App.getWifiNetworksManager().getConfiguration(wifiAplNetworkId);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v;
v = inflater.inflate(R.layout.proxy_selector_dialog, container, false);
ButterKnife.inject(this, v);
adapter = new MyPagerAdapter(getFragmentManager());
pager.setAdapter(adapter);
tabs.setViewPager(pager);
return v;
}
@Override
public void onDestroyView()
{
super.onDestroyView();
ButterKnife.reset(this);
}
@Override
public void onResume()
{
super.onResume();
if (selectedConfig != null)
{
if (selectedConfig.getProxySetting() == ProxySetting.STATIC)
{
pager.setCurrentItem(0);
}
else if (selectedConfig.getProxySetting() == ProxySetting.PAC)
{
pager.setCurrentItem(1);
}
}
else
{
pager.setCurrentItem(0);
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
inflater.inflate(R.menu.empty, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
getActivity().finish();
return true;
}
return super.onOptionsItemSelected(item);
}
public class MyPagerAdapter extends FragmentPagerAdapter
{
public MyPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public CharSequence getPageTitle(int position)
{
if (position == 0)
{
return getString(R.string.static_proxies);
}
else
{
return getString(R.string.pac_proxies);
}
}
@Override
public int getCount()
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
return 2;
}
else
{
return 1;
}
}
@Override
public Fragment getItem(int position)
{
if (position == 0)
{
return ProxyListFragment.newInstance(0, FragmentMode.DIALOG, wifiAplNetworkId);
}
else
{
return PacListFragment.newInstance(0, FragmentMode.DIALOG, wifiAplNetworkId);
}
}
}
}