package com.ijoomer.components.sobipro;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.widget.SeekBar;
import com.ijoomer.common.classes.IjoomerUtilities;
import com.ijoomer.common.configuration.IjoomerApplicationConfiguration;
import com.ijoomer.library.sobipro.SobiproCategoriesDataProvider;
import com.ijoomer.src.R;
import com.ijoomer.weservice.WebCallListenerWithCacheInfo;
import com.smart.framework.CustomAlertNeutral;
/**
* This Class Contains All Method Related To SobiproEntryDetailActivity.
*
* @author tasol
*
*/
public class SobiproEntryDetailActivity extends SobiproMasterActivity {
ArrayList<HashMap<String, String>> entryArrayList;
private int IN_POS;
private String IN_PAGELAYOUT;
private final String PAGENO = "pageNO";
private ViewPager viewPager;
private EntryDetailAdapter adapter;
private SobiproCategoriesDataProvider dataProvider;
String IN_TABLE;
ArrayList<String> IN_ENTRY_ID_ARRAY;
int IN_ENTRY_INDEX;
private SeekBar proSeekBar;
private ArrayList<String> pageLayouts;
private String IN_FEATUREDFIRST = "No";
/**
* Overrides method
*/
@Override
public int setLayoutId() {
return R.layout.sobipro_entry_detail;
}
@Override
public void initComponents() {
viewPager = (ViewPager) findViewById(R.id.viewpager);
adapter = new EntryDetailAdapter(getSupportFragmentManager());
pageLayouts = new ArrayList<String>(Arrays.asList(getResources().getStringArray(R.array.sobipro_pageLayout)));
getIntentData();
}
@Override
public void onResume() {
super.onResume();
if (IjoomerApplicationConfiguration.isReloadRequired) {
final int currentItem = viewPager.getCurrentItem();
dataProvider = new SobiproCategoriesDataProvider(SobiproEntryDetailActivity.this);
entryArrayList = dataProvider.getEntriesFromCache(IN_TABLE, IN_ENTRY_ID_ARRAY.get(viewPager.getCurrentItem()));
dataProvider.restorePagingSettings();
dataProvider.setPageNo(Integer.parseInt(entryArrayList.get(0).get(PAGENO)));
switch (pageLayouts.indexOf(IN_PAGELAYOUT)) {
case 2:
proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_sending_request));
dataProvider.getRestaurantEntries(entryArrayList.get(0).get(SECTIONID), getLatitude(), getLongitude(), IN_FEATUREDFIRST, new WebCallListenerWithCacheInfo() {
@Override
public void onProgressUpdate(int progressCount) {
proSeekBar.setProgress(progressCount);
}
@Override
public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2, int pageNo, int pageLimit,
boolean fromCache) {
try {
if (responseCode == 200 && !fromCache) {
if (IN_TABLE.equalsIgnoreCase(SOBIPROFAVOURITEENTRIES)) {
entryArrayList = dataProvider.getEntriesFromCache(SOBIPRO_RESTAURANT_ENTRIES, IN_ENTRY_ID_ARRAY.get(viewPager.getCurrentItem()));
dataProvider.addToFavourite(entryArrayList, IN_PAGELAYOUT);
}
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(currentItem);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
IjoomerApplicationConfiguration.setReloadRequired(false);
break;
default:
proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_sending_request));
dataProvider.getEntries(entryArrayList.get(0).get(SECTIONID), entryArrayList.get(0).get(CATID), IN_FEATUREDFIRST, new WebCallListenerWithCacheInfo() {
@Override
public void onProgressUpdate(int progressCount) {
proSeekBar.setProgress(progressCount);
}
@Override
public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2, int pageNo, int pageLimit,
boolean fromCache) {
try {
if (responseCode == 200 && !fromCache) {
entryArrayList = dataProvider.getEntriesFromCache(SOBIPROENTRIES, IN_ENTRY_ID_ARRAY.get(viewPager.getCurrentItem()));
if (IN_TABLE.equalsIgnoreCase(SOBIPROFAVOURITEENTRIES)) {
entryArrayList = dataProvider.getEntriesFromCache(SOBIPROENTRIES, IN_ENTRY_ID_ARRAY.get(viewPager.getCurrentItem()));
dataProvider.addToFavourite(entryArrayList, IN_PAGELAYOUT);
}
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(currentItem);
}
} catch (Exception e) {
e.printStackTrace();
}
IjoomerApplicationConfiguration.setReloadRequired(false);
}
});
break;
}
}
}
@Override
public void prepareViews() {
if (IN_ENTRY_ID_ARRAY != null) {
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(IN_ENTRY_INDEX);
} else {
IjoomerUtilities.getCustomOkDialog(getScreenCaption(), getString(getResources().getIdentifier("code204", "string", getPackageName())), getString(R.string.ok),
R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() {
@Override
public void NeutralMethod() {
}
});
}
}
@Override
public void setActionListeners() {
}
/**
* Class methods
*/
/**
* This method used to get intent data.
*/
private void getIntentData() {
try {
IN_ENTRY_INDEX = getIntent().getIntExtra("IN_ENTRY_INDEX", 0);
IN_ENTRY_ID_ARRAY = getIntent().getStringArrayListExtra("IN_ENTRY_ID_ARRAY");
IN_TABLE = getIntent().getStringExtra("IN_TABLE");
IN_POS = getIntent().getIntExtra("IN_POS", 0);
IN_PAGELAYOUT = getIntent().getStringExtra("IN_PAGELAYOUT");
IN_FEATUREDFIRST = getIntent().getStringExtra("IN_FEATUREDFIRST");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Custom class Adapter
*/
private class EntryDetailAdapter extends FragmentStatePagerAdapter {
public EntryDetailAdapter(FragmentManager fm) {
super(fm);
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int pos) {
System.gc();
switch (pageLayouts.indexOf(IN_PAGELAYOUT)) {
case 1:
return new SobiproCarEntryDetailFragment(IN_ENTRY_ID_ARRAY.get(pos), IN_TABLE, IN_POS, IN_PAGELAYOUT);
case 2:
return new SobiproRestaurantEntryDetailFragment(IN_ENTRY_ID_ARRAY.get(pos), IN_TABLE, IN_PAGELAYOUT);
default:
return new SobiproEntryDetailFragment(IN_ENTRY_ID_ARRAY.get(pos), IN_TABLE, IN_POS, IN_PAGELAYOUT);
}
}
@Override
public int getCount() {
return IN_ENTRY_ID_ARRAY.size();
}
}
}