package com.letsvote.ui.activities; import android.content.Context; import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.ListView; import com.letsvote.model.PartyItem; import com.letsvote.ui.fragment.CandidateListFragment; import com.letsvote.ui.fragment.FAQListFragment; import com.letsvote.ui.fragment.PartyListFragment; import com.letsvote.ui.fragment.PotentialFragment; import com.fasterxml.jackson.databind.ObjectMapper; import com.letsvote.R; import com.letsvote.Base.BaseActivity; import com.letsvote.api.APIConfig; import com.letsvote.api.RetrofitAPI; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; import uk.co.chrisjenx.calligraphy.CalligraphyConfig; import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; import com.letsvote.ui.adapters.DrawerList_Adapter; import com.letsvote.utility.MySharedPreference; import com.letsvote.utility.PreferenceConfig; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class DrawerMainActivity extends BaseActivity { ActionBarDrawerToggle mDrawerToggle; LinearLayout mDrawerListLayout; DrawerLayout mDrawerLayout; ListView mDrawerList; Toolbar toolbar; String[] DrawerMenuList; int[] DrawerIcons; static ObjectMapper mapper = new ObjectMapper(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/Padauk.ttf") .setFontAttrId(R.attr.fontPath) .build() ); setContentView(R.layout.activity_drawer_main); mDrawerList = (ListView) findViewById(R.id.left_drawer_lv); mDrawerListLayout = (LinearLayout) findViewById(R.id.left_drawer); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.inflateMenu(R.menu.menu_drawer_main); if(MySharedPreference.getInstance(DrawerMainActivity.this).getStringPreference(PreferenceConfig.TOKEN, "").equals("")){ RetrofitAPI.getInstance(getApplication()).getService().getToken(APIConfig.api_key, new Callback<String>() { @Override public void success(String s, Response response) { GetTokens(s); Log.e("TOKEN", MySharedPreference.getInstance(DrawerMainActivity.this).getStringPreference(PreferenceConfig.TOKEN, "")); } @Override public void failure(RetrofitError error) { error.printStackTrace(); } }); }else{ String token=MySharedPreference.getInstance(DrawerMainActivity.this).getStringPreference(PreferenceConfig.TOKEN, ""); /* RetrofitAPI.getInstance(getApplication()).getService().getPartylist(token, new Callback<String>() { @Override public void success(String s, Response response) { if(!s.equals("")){ Object obj = null; List<PartyItem> PartyItemList=new ArrayList<PartyItem>(); try { JSONObject listobj=new JSONObject(s); if(!listobj.isNull("data")){ JSONArray listArry=listobj.getJSONArray("data"); int i=0; while(i<listArry.length()){ ObjectMapper mapper=new ObjectMapper(); PartyItem partyItem=new PartyItem(); try { obj=mapper.readValue(listArry.getString(i), PartyItem.class); partyItem=(PartyItem)obj; PartyItemList.add(partyItem); } catch (IOException e) { e.printStackTrace(); } i++; } Log.e("PARTY_LIST","COMPLETED"); } } catch (JSONException e) { e.printStackTrace(); } } } @Override public void failure(RetrofitError error) { error.printStackTrace(); } });*/ RetrofitAPI.getInstance(getApplication()).getService().getPartyById(token, "55d453165bf73049038b4567", new Callback<String>() { @Override public void success(String s, Response response) { if (!s.equals("")) { Object obj = null; try { JSONObject jsonObject = new JSONObject(s); if (!jsonObject.isNull("data")) { ObjectMapper mapper=new ObjectMapper(); PartyItem item=new PartyItem(); try { obj=mapper.readValue(jsonObject.getString("data"), PartyItem.class); item=(PartyItem) obj; Log.e("PARTY_LIST","COMPLETED"); } catch (IOException e) { e.printStackTrace(); } } } catch (JSONException e) { e.printStackTrace(); } } } @Override public void failure(RetrofitError retrofitError) { } }); } initialize(); binddataTOList(); makeFragmentSelection(0); } @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); } void GetTokens(String s) { Object obj = null; if(!s.equals("")){ try { JSONObject apiobj=new JSONObject(s); if(!apiobj.isNull("data")){ JSONObject api_key=apiobj.getJSONObject("data"); if(!api_key.isNull("token")){ String token=api_key.getString("token"); MySharedPreference.getInstance(DrawerMainActivity.this).setStringPreference(PreferenceConfig.TOKEN,token); } } } catch (JSONException e) { e.printStackTrace(); } } /*try { obj = mapper.readValue(s, Object.class); } catch (IOException e) { e.printStackTrace(); } Log.w("OBJECT", "obj type: " + obj.getClass().toString()); // java.util.LinkedHashMap Log.w("OBJECT", "obj: " + obj);*/ } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } private void initialize() { toolbar.setTitle(getResources().getString(R.string.app_name)); toolbar.setTitleTextColor(getResources().getColor(android.R.color.white)); toolbar.setOnMenuItemClickListener(new ToolbarMenuclickListener()); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); //set toggle to naviation drawer on tollbar mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.open_drawer, R.string.close_drawer) { /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { // getActionBar().setTitle(mTitle); // toolbar.setTitle("PSI DataCapture"); } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { // toolbar.setTitle(Title); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); } protected class ToolbarMenuclickListener implements Toolbar.OnMenuItemClickListener { @Override public boolean onMenuItemClick(MenuItem item) { return false; } } void makeFragmentSelection(int position) { FragmentManager fragmentManager = getSupportFragmentManager(); switch (position) { case 0: toolbar.setTitle(DrawerMenuList[position]); fragmentManager.beginTransaction().replace(R.id.content_frame, new PotentialFragment()).commit(); break; case 1: toolbar.setTitle(DrawerMenuList[position]); fragmentManager.beginTransaction().replace(R.id.content_frame, new PartyListFragment()).commit(); break; case 2: //Do action here toolbar.setTitle(DrawerMenuList[position]); fragmentManager.beginTransaction().replace(R.id.content_frame, new CandidateListFragment()).commit(); break; case 3: //Do action here toolbar.setTitle(DrawerMenuList[position]); //fragmentManager.beginTransaction().replace(R.id.content_frame,new Fragment_Settings()).commit(); break; case 4: //Do action here toolbar.setTitle(DrawerMenuList[position]); fragmentManager.beginTransaction().replace(R.id.content_frame,new FAQListFragment()).commit(); break; } mDrawerList.setItemChecked(position, true); mDrawerLayout.closeDrawer(mDrawerListLayout); } void binddataTOList() { DrawerMenuList = getResources().getStringArray(R.array.nav_drawer_items);// new String[]{"Candidates","Parties","FAQs", "Geolocations","About"}; //DrawerIcons=new int[]{R.drawable.ic_calendar, R.drawable.ic_setting,R.drawable.ic_info}; DrawerIcons=new int[]{R.drawable.ic_candidate,R.drawable.ic_party,R.drawable.ic_faq,R.drawable.ic_partyocations,R.drawable.ic_info,R.drawable.ic_info}; DrawerList_Adapter drawerList_adapter=new DrawerList_Adapter(this,DrawerMenuList,DrawerIcons); drawerList_adapter.notifyDataSetChanged(); mDrawerList.setAdapter(drawerList_adapter); mDrawerList.setOnItemClickListener(new DrawerListItemClickListener()); setListViewHeightBasedOnChildren(mDrawerList); } protected class DrawerListItemClickListener implements AdapterView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { makeFragmentSelection(position); } } public void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom(); for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); if (listItem instanceof ViewGroup) listItem.setLayoutParams(new AbsListView.LayoutParams( AbsListView.LayoutParams.WRAP_CONTENT, AbsListView.LayoutParams.WRAP_CONTENT)); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); // Sync the toggle state after onRestoreInstanceState has occurred. mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } }