package com.dreamspace.uucampus.ui.activity.Market;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.api.ApiManager;
import com.dreamspace.uucampus.common.utils.NetUtils;
import com.dreamspace.uucampus.model.Labels;
import com.dreamspace.uucampus.ui.activity.Search.SearchResultActivity;
import com.dreamspace.uucampus.ui.base.AbsActivity;
import com.dreamspace.uucampus.ui.fragment.Market.ShowGoodsFragment;
import com.dreamspace.uucampus.ui.popupwindow.GoodsSortPopupWindow;
import com.ogaclejapan.smarttablayout.SmartTabLayout;
import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItemAdapter;
import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItems;
import com.ogaclejapan.smarttablayout.utils.v4.FragmentStatePagerItemAdapter;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by Lx on 2015/9/22.
*/
public class FastInAct extends AbsActivity {
@Bind(R.id.fast_in_act_smarttablayout)
SmartTabLayout smartTabLayout;
@Bind(R.id.fast_in_act_view_pager)
ViewPager pager;
@Bind(R.id.divider_below_fi_act_smarttab)
View dividerBelowSTL;
@Bind(R.id.shadow_view)
View shadowView;
@Bind(R.id.content_rl)
RelativeLayout contentRl;
private String order;//当前的排列方式
private GoodsSortPopupWindow popupWindow;
private boolean actDestory = false;
private ArrayList<String> mLabels;
private boolean haveGood = false;
private FragmentPagerItemAdapter pagerAdpater;
public static String LABEL = "label";
public static String CATEGORY = "category";
public static String LABEL_NAME = "label_name";
private String category;
private String labelName;
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
category = bundle.getString(CATEGORY);
labelName = bundle.getString(LABEL_NAME);
order = getString(R.string.order_view_number);//默认排列方式
super.onCreate(savedInstanceState);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.fast_in_act_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_sort) {
if (popupWindow != null) {
if(popupWindow.isShowing()){
popupWindow.dismiss();
}else{
popupWindow.showAsDropDown(mToolBar);
}
}
}else if(id == R.id.action_search){
readyGo(SearchResultActivity.class);
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem sort = menu.findItem(R.id.action_sort);
if(!haveGood){
sort.setVisible(false);//若没有数据则不现实排序
}else{
sort.setVisible(true);
}
return super.onPrepareOptionsMenu(menu);
}
@Override
protected int getContentView() {
return R.layout.activity_fast_in;
}
@Override
protected void prepareDatas() {
getLabels();
}
@Override
protected void initViews() {
popupWindow = new GoodsSortPopupWindow(this, shadowView);
initListeners();
}
@Override
protected View getLoadingTargetView() {
return contentRl;
}
private void initListeners() {
popupWindow.setMostPopularOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.popupItemSetSelect(0);
order = getString(R.string.order_view_number);
//必须调用getpage才能获取准确的fragment,getitem获取的不对
((ShowGoodsFragment) pagerAdpater.getPage(pager.getCurrentItem())).orderChange(getString(R.string.order_view_number));
}
});
popupWindow.setHighestAppraiesOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.popupItemSetSelect(1);
order = getString(R.string.order_score);
((ShowGoodsFragment) pagerAdpater.getPage(pager.getCurrentItem())).orderChange(getString(R.string.order_score));
}
});
popupWindow.setRecentPublishOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.popupItemSetSelect(2);
order = getString(R.string.order_last_update);
((ShowGoodsFragment) pagerAdpater.getPage(pager.getCurrentItem())).orderChange(getString(R.string.order_last_update));
}
});
popupWindow.setCheapestOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.popupItemSetSelect(3);
order = getString(R.string.order_price);
((ShowGoodsFragment) pagerAdpater.getPage(pager.getCurrentItem())).orderChange(getString(R.string.order_price));
}
});
}
@Override
public void onBackPressed() {
if (popupWindow != null && popupWindow.isShowing()) {
popupWindow.dismiss();
} else {
super.onBackPressed();
}
}
private void initSTL() {
if (mLabels != null) {
int pagerIndex = 0;
FragmentPagerItems.Creator creator = FragmentPagerItems.with(this);
for (String label : mLabels) {
Bundle bundle = new Bundle();
bundle.putString(LABEL, label);
bundle.putString(CATEGORY, category);
creator.add(label, ShowGoodsFragment.class, bundle);
if(label.equals(labelName)){
pagerIndex = mLabels.indexOf(label);
}
}
pagerAdpater = new FragmentPagerItemAdapter(getSupportFragmentManager(), creator.create());
smartTabLayout.setDistributeEvenly(false);
pager.setAdapter(pagerAdpater);
smartTabLayout.setViewPager(pager);
pager.setCurrentItem(pagerIndex);
}
}
private void getLabels() {
toggleShowLoading(true, null);
if (!NetUtils.isNetworkConnected(this)) {
showNetWorkError();
toggleNetworkError(true, getLabelsClickListener);
}
ApiManager.getService(this).getLabels(category, new Callback<Labels>() {
@Override
public void success(Labels labels, Response response) {
if (labels != null && !actDestory) {
if (labels.getLabel().size() == 0) {
haveGood = false;
invalidateOptionsMenu();//不显示排序
toggleShowEmpty(true, getString(R.string.no_such_good), null);
} else {
haveGood = true;
invalidateOptionsMenu();
mLabels = labels.getLabel();
initSTL();
toggleRestore();
}
}
}
@Override
public void failure(RetrofitError error) {
toggleShowEmpty(true, null, getLabelsClickListener);
}
});
}
private View.OnClickListener getLabelsClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
getLabels();
}
};
@Override
protected void onDestroy() {
super.onDestroy();
actDestory = true;
}
public String getOrder() {
return order;
}
}