package com.ilegendsoft.toprankapps.tinderliker.activities;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.Volley;
import com.ilegendsoft.ilsalib.ilsautils.IlsUtilsManager;
import com.ilegendsoft.ilsalib.ilsautils.log.Logger;
import com.ilegendsoft.ilsalib.ilsazcloud.item.CloudyParameter;
import com.ilegendsoft.ilsalib.ilsazcloud.utils.ZCloudAccountUtils;
import com.ilegendsoft.ilsalib.ilsazcloud.utils.ZCloudCloudyParameterUtil;
import com.ilegendsoft.toprankapps.tinderliker.R;
import com.ilegendsoft.toprankapps.tinderliker.adapters.DrawerAdapter;
import com.ilegendsoft.toprankapps.tinderliker.fragments.DiscoverFragment;
import com.ilegendsoft.toprankapps.tinderliker.fragments.LocationFragment;
import com.ilegendsoft.toprankapps.tinderliker.fragments.SettingsFragment;
import com.ilegendsoft.toprankapps.tinderliker.fragments.TinderLikerFragment;
import com.ilegendsoft.toprankapps.tinderliker.fragments.TindersFragment;
import com.ilegendsoft.toprankapps.tinderliker.items.Drawer;
import java.lang.reflect.Field;
import java.util.ArrayList;
public class MainActivity extends BaseActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBar mActionBar;
private ActionBarDrawerToggle mDrawerToggle;
private DrawerAdapter mDrawerAdapter;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private ArrayList<Drawer> mDrawers;
private FragmentManager mFragmentManager;
private TinderLikerFragment mTinderLikerFragment;
private DiscoverFragment mDiscoverFragment;
private TindersFragment mTindersFragment;
private LocationFragment mLocationFragment;
private SettingsFragment mSettingsFragment;
private long mLastBackPressedTime = 0;
private Fragment mCurrentFragment;
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
if (savedInstanceState == null) {
selectItem(0);
}
checkCloudyParameter();
}
private void checkCloudyParameter() {
ZCloudCloudyParameterUtil.getCloudyParameterRequest(Volley.newRequestQueue(this),
ZCloudAccountUtils.getAccessTokenNoLogin(this), this,
new ZCloudCloudyParameterUtil.OnSuccessListener() {
@Override
public void onSuccess(CloudyParameter cloudyParameter) {
IlsUtilsManager.getInstance().check(MainActivity.this,
cloudyParameter.getAlternative(), cloudyParameter.getVersion(), 0, null);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
IlsUtilsManager.getInstance().check(MainActivity.this, "", "", 0, null);
Logger.toast(MainActivity.this, R.string.network_error);
}
});
}
private void init() {
mTitle = mDrawerTitle = getTitle();
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mActionBar = getSupportActionBar();
mDrawerList = (ListView) findViewById(R.id.left_drawer);
mDrawerList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
initDrawerListData();
mDrawerAdapter = new DrawerAdapter(this, mDrawers);
mDrawerList.setAdapter(mDrawerAdapter);
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
mToolbar, R.string.drawer_open,
R.string.drawer_close) {
public void onDrawerClosed(View view) {
mActionBar.setTitle(mTitle);
supportInvalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
mActionBar.setTitle(mDrawerTitle);
supportInvalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
initMainFragment();
}
private void initMainFragment() {
mFragmentManager = getSupportFragmentManager();
mTinderLikerFragment = TinderLikerFragment.newInstance();
mDiscoverFragment = DiscoverFragment.newInstance();
mTindersFragment = TindersFragment.newInstance();
mLocationFragment = LocationFragment.newInstance();
mSettingsFragment = SettingsFragment.newInstance();
}
private void initDrawerListData() {
mDrawers = new ArrayList<Drawer>();
String[] drawerNames = getResources().getStringArray(
R.array.drawer_array);
for (int i = 0; i < drawerNames.length; i++) {
Drawer drawer = new Drawer();
switch (i) {
case 0:
drawer.setImageResourceId(R.drawable.btn_navgationdrawer_tinderlike);
break;
case 1:
drawer.setImageResourceId(R.drawable.btn_navgationdrawer_tinders);
break;
case 2:
drawer.setImageResourceId(R.drawable.btn_navgationdrawer_discoversetting);
break;
case 3:
drawer.setImageResourceId(R.drawable.btn_navgationdrawer_locationsetting);
break;
case 4:
drawer.setImageResourceId(R.drawable.btn_navgationdrawer_setting);
break;
default:
break;
}
drawer.setName(drawerNames[i]);
mDrawers.add(drawer);
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
if (drawerOpen) hideSoftKeyBoard();
if (mCurrentFragment == mTinderLikerFragment) {
int[] ids = {R.id.action_auto};
controlMenuDisplay(menu, drawerOpen, ids);
} else if (mCurrentFragment == mLocationFragment) {
int[] ids = {R.id.action_search};
controlMenuDisplay(menu, drawerOpen, ids);
}
return super.onPrepareOptionsMenu(menu);
}
@Override
protected void onResume() {
super.onResume();
}
private void hideSoftKeyBoard() {
InputMethodManager inputManager = (InputMethodManager) this
.getSystemService(Context.INPUT_METHOD_SERVICE);
View view = this.getCurrentFocus();
if (view == null)
return;
inputManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
private void controlMenuDisplay(Menu menu, boolean drawerOpen, int[] ids) {
for (int id : ids) {
MenuItem item = menu.findItem(id);
if (item != null) {
item.setVisible(!drawerOpen);
}
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
selectItem(position);
}
}
private void selectItem(int position) {
switch (position) {
case 0:
mCurrentFragment = mTinderLikerFragment;
break;
case 1:
mCurrentFragment = mTindersFragment;
break;
case 2:
mCurrentFragment = mDiscoverFragment;
break;
case 3:
mCurrentFragment = mLocationFragment;
break;
case 4:
mCurrentFragment = mSettingsFragment;
break;
default:
break;
}
mFragmentManager.beginTransaction()
.replace(R.id.content_frame, mCurrentFragment).commit();
setTitle(mDrawers.get(position).getName());
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mDrawerLayout.closeDrawer(mDrawerList);
}
}, 200);
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
TextView titleView = getToolBarTitleTextView();
if (titleView != null) {
Typeface font = Typeface.createFromAsset(getAssets(), "SansitaOne.ttf");
titleView.setTypeface(font);
titleView.setText(mTitle);
titleView.setTextSize(23);
titleView.setTextColor(0xDDFFFFFF);
} else {
mActionBar.setTitle(mTitle);
}
}
private TextView getToolBarTitleTextView() {
TextView titleTextView = null;
try {
Field f = mToolbar.getClass().getDeclaredField("mTitleTextView");
f.setAccessible(true);
titleTextView = (TextView) f.get(mToolbar);
} catch (NoSuchFieldException e) {
} catch (IllegalAccessException e) {
}
return titleTextView;
}
/**
* When using the ActionBarDrawerToggle, you must call it during
* onPostCreate() and onConfigurationChanged()...
*/
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public void onBackPressed() {
if (System.currentTimeMillis() - mLastBackPressedTime < 2000) {
super.onBackPressed();
} else {
mLastBackPressedTime = System.currentTimeMillis();
Logger.toast(this, R.string.exit);
}
}
}