//
// _/_/_/ _/ _/_/_/_/_/
// _/ _/_/ _/_/ _/ _/ _/ _/_/ _/_/
// _/ _/_/ _/_/_/_/ _/_/_/_/ _/_/ _/ _/ _/ _/ _/
// _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
// _/_/_/ _/_/_/ _/_/_/ _/ _/ _/_/_/_/_/ _/_/ _/_/
//
//
// Copyright (c) 2015-2016, Geek Zoo Studio
// http://www.geek-zoo.com
//
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
//
package com.insthub.O2OMobile.Activity;
import android.annotation.TargetApi;
import android.content.Intent;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.BeeFramework.Utils.AnimationUtil;
import com.BeeFramework.Utils.ImageUtil;
import com.BeeFramework.activity.BaseActivity;
import com.BeeFramework.model.BusinessResponse;
import com.external.androidquery.callback.AjaxStatus;
import com.external.maxwin.view.IXListViewListener;
import com.external.maxwin.view.XListView;
import com.insthub.O2OMobile.Adapter.C0_ServiceListAdapter;
import com.insthub.O2OMobile.Model.UserListModel;
import com.insthub.O2OMobile.O2OMobileAppConst;
import com.insthub.O2OMobile.Protocol.ApiInterface;
import com.insthub.O2OMobile.Protocol.ENUM_SEARCH_ORDER;
import com.insthub.O2OMobile.Protocol.SERVICE_TYPE;
import com.insthub.O2OMobile.Protocol.SIMPLE_USER;
import com.insthub.O2OMobile.Protocol.userlistResponse;
import com.insthub.O2OMobile.R;
import com.insthub.O2OMobile.Utils.LocationManager;
import org.json.JSONException;
import org.json.JSONObject;
public class C0_ServiceListActivity extends BaseActivity implements BusinessResponse, IXListViewListener {
C0_ServiceListAdapter mListWithServiceAdapter;
XListView mListView;
UserListModel mDataModel;
SERVICE_TYPE mServiceType;
ImageView mFilterButton;
LinearLayout mFilterLayout;
TextView mPriceDesc;
ImageView mPriceDescSelected;
TextView mPriceAsc;
ImageView mPriceAscSelected;
TextView mRankDesc;
ImageView mRankDescSelected;
TextView mLocationAsc;
ImageView mLocationAscSelected;
View mMaskView;
ImageView mBackButton;
TextView mTitleTextView;
TextView mPublishButton;
ENUM_SEARCH_ORDER search_order = ENUM_SEARCH_ORDER.location_asc;
View footView ;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.c0_service_list);
mTitleTextView = (TextView)findViewById(R.id.top_view_title);
mListView = (XListView)findViewById(R.id.c0_user_list);
mListView.setXListViewListener(this, 0);
mListView.setPullLoadEnable(true);
mListView.setPullRefreshEnable(true);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position - 1 >= 0 && position - 1 < mDataModel.dataList.size()) {
SIMPLE_USER user = mDataModel.dataList.get(position - 1);
Intent intent_profile = new Intent(C0_ServiceListActivity.this, F0_ProfileActivity.class);
intent_profile.putExtra(F0_ProfileActivity.USER_ID, user.id);
intent_profile.putExtra(O2OMobileAppConst.SERVICE_TYPE, mServiceType);
startActivity(intent_profile);
C0_ServiceListActivity.this.overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
}
}
});
mBackButton = (ImageView)findViewById(R.id.top_view_back);
mBackButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
mMaskView = (View)findViewById(R.id.c0_mask_view);
mMaskView.setClickable(true);
mMaskView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideFilter();
}
});
mDataModel = new UserListModel(this);
mDataModel.addResponseListener(this);
mServiceType = (SERVICE_TYPE) getIntent().getSerializableExtra(O2OMobileAppConst.SERVICE_TYPE);
if (null != mServiceType.title)
{
mTitleTextView.setText(mServiceType.title);
}
mDataModel.fetPreService(mServiceType.id, ENUM_SEARCH_ORDER.location_asc);
mFilterLayout = (LinearLayout)findViewById(R.id.c0_filter_layout);
mFilterButton = (ImageView)findViewById(R.id.top_view_right_image);
mFilterButton.setImageResource(R.drawable.b1_icon_filter);
mFilterButton.setVisibility(View.VISIBLE);
mFilterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showFilter();
}
});
mPublishButton = (TextView)findViewById(R.id.c0_publish_button);
mPublishButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent it = new Intent(C0_ServiceListActivity.this, C1_PublishOrderActivity.class);
it.putExtra(O2OMobileAppConst.SERVICE_TYPE, mServiceType);
startActivity(it);
}
});
initFilter();
LocationManager.getInstance().refreshLocation();
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
public void showFilter()
{
mMaskView.setVisibility(View.VISIBLE);
showView();
mFilterButton.setImageResource(R.drawable.b2_close);
mFilterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideFilter();
}
});
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
public void hideFilter()
{
mMaskView.setVisibility(View.GONE);
hideView();
mFilterButton.setImageResource(R.drawable.b1_icon_filter);
mFilterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showFilter();
}
});
}
public void showView() {
if(mFilterLayout.getVisibility() == View.GONE) {
mFilterLayout.setVisibility(View.VISIBLE);
AnimationUtil.showAnimationFromTop(mFilterLayout);
} else {
hideView();
}
}
public void hideView() {
mFilterLayout.setVisibility(View.GONE);
AnimationUtil.backAnimationFromBottom(mFilterLayout);
}
void selectedSearchOrder(ENUM_SEARCH_ORDER search_order)
{
if (search_order == ENUM_SEARCH_ORDER.price_desc)
{
mPriceDesc.setTextColor(getResources().getColor(R.color.select_item));
mPriceDescSelected.setVisibility(View.VISIBLE);
mPriceAsc.setTextColor(getResources().getColor(R.color.filter_text_color));
mPriceAscSelected.setVisibility(View.INVISIBLE);
mRankDesc.setTextColor(getResources().getColor(R.color.filter_text_color));
mRankDescSelected.setVisibility(View.INVISIBLE);
mLocationAsc.setTextColor(getResources().getColor(R.color.filter_text_color));
mLocationAscSelected.setVisibility(View.INVISIBLE);
}
else if (search_order == ENUM_SEARCH_ORDER.price_asc)
{
mPriceDesc.setTextColor(getResources().getColor(R.color.filter_text_color));
mPriceDescSelected.setVisibility(View.INVISIBLE);
mPriceAsc.setTextColor(getResources().getColor(R.color.select_item));
mPriceAscSelected.setVisibility(View.VISIBLE);
mRankDesc.setTextColor(getResources().getColor(R.color.filter_text_color));
mRankDescSelected.setVisibility(View.INVISIBLE);
mLocationAsc.setTextColor(getResources().getColor(R.color.filter_text_color));
mLocationAscSelected.setVisibility(View.INVISIBLE);
}
else if (search_order == ENUM_SEARCH_ORDER.rank_desc)
{
mPriceDesc.setTextColor(getResources().getColor(R.color.filter_text_color));
mPriceDescSelected.setVisibility(View.INVISIBLE);
mPriceAsc.setTextColor(getResources().getColor(R.color.filter_text_color));
mPriceAscSelected.setVisibility(View.INVISIBLE);
mRankDesc.setTextColor(getResources().getColor(R.color.select_item));
mRankDescSelected.setVisibility(View.VISIBLE);
mLocationAsc.setTextColor(getResources().getColor(R.color.filter_text_color));
mLocationAscSelected.setVisibility(View.INVISIBLE);
}
else if(search_order == ENUM_SEARCH_ORDER.location_asc)
{
mPriceDesc.setTextColor(getResources().getColor(R.color.filter_text_color));
mPriceDescSelected.setVisibility(View.INVISIBLE);
mPriceAsc.setTextColor(getResources().getColor(R.color.filter_text_color));
mPriceAscSelected.setVisibility(View.INVISIBLE);
mRankDesc.setTextColor(getResources().getColor(R.color.filter_text_color));
mRankDescSelected.setVisibility(View.INVISIBLE);
mLocationAsc.setTextColor(getResources().getColor(R.color.select_item));
mLocationAscSelected.setVisibility(View.VISIBLE);
}
}
public void initFilter()
{
mPriceDesc = (TextView)findViewById(R.id.c0_price_desc);
mPriceDescSelected = (ImageView)findViewById(R.id.c0_price_desc_select);
mPriceDesc.setClickable(true);
mPriceDesc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
search_order = ENUM_SEARCH_ORDER.price_desc;
selectedSearchOrder(search_order);
hideFilter();
mDataModel.fetPreService(mServiceType.id, search_order);
}
});
mPriceAsc = (TextView)findViewById(R.id.c0_price_asc);
mPriceAscSelected = (ImageView)findViewById(R.id.c0_price_asc_select) ;
mPriceAsc.setClickable(true);
mPriceAsc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
search_order = ENUM_SEARCH_ORDER.price_asc;
selectedSearchOrder(search_order);
hideFilter();
mDataModel.fetPreService(mServiceType.id, search_order);
}
});
mRankDesc = (TextView)findViewById(R.id.c0_rank_desc);
mRankDescSelected = (ImageView)findViewById(R.id.c0_rank_desc_select);
mRankDesc.setClickable(true);
mRankDesc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
search_order = ENUM_SEARCH_ORDER.rank_desc;
selectedSearchOrder(search_order);
hideFilter();
mDataModel.fetPreService(mServiceType.id, search_order);
}
});
mLocationAsc = (TextView)findViewById(R.id.location_asc);
mLocationAsc.setClickable(true);
mLocationAscSelected = (ImageView)findViewById(R.id.c0_location_asc_select);
mLocationAsc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
search_order = ENUM_SEARCH_ORDER.location_asc;
selectedSearchOrder(search_order);
hideFilter();
mDataModel.fetPreService(mServiceType.id, search_order);
}
});
selectedSearchOrder(search_order);
}
@Override
public void OnMessageResponse(String url, JSONObject jo, AjaxStatus status) throws JSONException
{
mListView.stopRefresh();
mListView.stopLoadMore();
if(url.endsWith(ApiInterface.USER_LIST))
{
if (null != jo)
{
userlistResponse response = new userlistResponse();
response.fromJson(jo);
if (null == mListWithServiceAdapter)
{
mListWithServiceAdapter = new C0_ServiceListAdapter(this, mDataModel.dataList);
mListView.setAdapter(mListWithServiceAdapter);
footView = new View(this);
footView.setEnabled(true);
footView.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ImageUtil.Dp2Px(this,60)));
mListView.addFooterView(footView);
}
else
{
mListWithServiceAdapter.notifyDataSetChanged();
}
mListView.stopLoadMore();
if (0 == response.more)
{
mListView.setPullLoadEnable(false);
}
Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;
int listHeight = mListView.getHeight();
int screenHeight = getResources().getDisplayMetrics().heightPixels - ImageUtil.Dp2Px(this,50) - statusBarHeight;
if (listHeight >= screenHeight)
{
footView.setVisibility(View.VISIBLE);
}
else
{
footView.setVisibility(View.GONE);
mListView.removeFooterView(footView);
}
}
}
}
@Override
public void onRefresh(int id) {
mDataModel.fetPreService(mServiceType.id, search_order);
}
@Override
public void onLoadMore(int id) {
mDataModel.fetNextService(mServiceType.id, search_order);
}
}