package com.aincc.seoulexcursion.ui.scene.parks;
import java.util.Iterator;
import java.util.List;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.aincc.lib.common.annotation.InjectView;
import com.aincc.lib.ui.widget.list.section.AmazingListView;
import com.aincc.seoulexcursion.util.Logger;
import com.aincc.seoulexcursion.R;
import com.aincc.seoulexcursion.ui.Constants;
import com.aincc.seoulexcursion.ui.SeoulBaseActivity;
import com.aincc.seoulexcursion.ui.control.OneSectionAdapter;
import com.aincc.seoulexcursion.ui.widget.Navibar;
import com.aincc.seoulexcursion.util.SeoulFont;
import com.aincc.seoulopenapi.ServiceExecutor;
import com.aincc.seoulopenapi.model.ParkInfo;
import com.aincc.seoulopenapi.model.ParkProgramInfo;
/**
*
* <h3><b>ParksProgramActivity</b></h3></br>
*
* 공원 프로그램 목록 표시
*
* @author aincc@barusoft.com
* @version 1.0.0
* @since 1.0.0
*/
public class ParksProgramActivity extends SeoulBaseActivity
{
/**
* 상단 네비게이션 바
*/
@InjectView
private Navibar navibar;
/**
* 프로그램 리스트뷰
*/
@InjectView
private AmazingListView listview;
/**
* 공원 어댑터
*/
private SectionProgramsAdapter<ParkProgramInfo> adapter;
/**
* 공원정보
*/
private ParkInfo info = null;
/**
* 프로그램 리스트
*/
private List<ParkProgramInfo> listdata = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
Logger.d1(LOG, "onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_programs);
try
{
getIntentData();
}
catch (Exception e)
{
e.printStackTrace();
Toast.makeText(context, "Exception", Toast.LENGTH_SHORT).show();
finish();
}
mappingViews(this);
initializeUI();
}
/**
* 인덴트 정보 처리
*
* @since 1.0.0
*/
private void getIntentData() throws Exception
{
Intent data = getIntent();
if (null != data)
{
Bundle bundle = data.getExtras();
if (null != bundle)
{
info = bundle.getParcelable(Constants.EXTRA_KEY_PARK_INFO);
listdata = bundle.getParcelableArrayList(Constants.EXTRA_KEY_PARK_PROGRAM_LIST);
if (null != info)
{
Logger.d1(LOG, "Park : " + info.P_PARK);
}
if (null != listdata)
{
Iterator<ParkProgramInfo> it = listdata.iterator();
while (it.hasNext())
{
Logger.d1(LOG, it.next().toString());
break;
}
}
}
}
}
@Override
protected void initializeUI()
{
super.initializeUI();
if (null == adapter)
{
adapter = new SectionProgramsAdapter<ParkProgramInfo>();
adapter.setList(listdata);
listview.setAdapter(adapter);
}
listview.setPinnedHeaderView(LayoutInflater.from(this).inflate(R.layout.cell_header_programs, listview, false));
}
@Override
protected void initializeNavibar()
{
super.initializeNavibar();
navibar.setTypeface(SeoulFont.getInstance().getSeoulHangang());
navibar.setActionBack(new OnClickListener()
{
@Override
public void onClick(View v)
{
finish();
}
});
navibar.setActionFuncVisible(View.INVISIBLE);
// 제목 설정
navibar.setTitle(null != info ? info.P_PARK : "");
}
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
initializeUI();
}
@Override
protected void onResume()
{
super.onResume();
if (null != info && null != listdata)
{
// 정보표시
displayParkInfo();
}
}
@Override
protected void onPause()
{
super.onPause();
ServiceExecutor.getInstance().cancelAll();
}
@Override
public void finish()
{
super.finish();
overridePendingTransition(android.R.anim.fade_in, R.anim.push_down_out);
}
/**
* 공원정보 표시하기
*
* @since 1.0.0
*/
private void displayParkInfo()
{
Logger.d1(LOG, "Park : " + info.P_PARK);
navibar.setTitle(info.P_PARK);
adapter.notifyDataSetChanged();
}
/**
*
* <h3><b>SectionProgramsAdapter</b></h3></br>
*
* @author aincc@barusoft.com
* @version 1.0.0
* @since 1.0.0
*/
class SectionProgramsAdapter<T> extends OneSectionAdapter<T>
{
@SuppressWarnings("unchecked")
@Override
public View getAmazingView(final int position, View convertView, ViewGroup parent)
{
View view = convertView;
ViewHolder viewHolder = null;
if (null == convertView)
{
view = getLayoutInflater().inflate(R.layout.cell_programs, null);
viewHolder = new ViewHolder();
viewHolder.cellSelector = (LinearLayout) view.findViewById(R.id.cellSelector);
viewHolder.P_NAME = (TextView) view.findViewById(R.id.P_NAME);
viewHolder.P_EDUDAY = (TextView) view.findViewById(R.id.P_EDUDAY);
viewHolder.P_EDUPERSON = (TextView) view.findViewById(R.id.P_EDUPERSON);
viewHolder.P_EAMAX = (TextView) view.findViewById(R.id.P_EAMAX);
viewHolder.P_NAME.setTypeface(SeoulFont.getInstance().getSeoulHangang());
viewHolder.P_EDUDAY.setTypeface(SeoulFont.getInstance().getSeoulHangang());
viewHolder.P_EDUPERSON.setTypeface(SeoulFont.getInstance().getSeoulHangang());
viewHolder.P_EAMAX.setTypeface(SeoulFont.getInstance().getSeoulHangang());
view.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.cellSelector.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
ProgramInfoPopup.show(context, (ParkProgramInfo) getItem(position));
}
});
ParkProgramInfo item = (ParkProgramInfo) getItem(position);
viewHolder.P_NAME.setText(item.P_NAME);
viewHolder.P_EDUDAY.setText(item.P_EDUDAY_S + " ~ " + item.P_EDUDAY_E);
viewHolder.P_EDUPERSON.setText(string(R.string.program_person) + " " + item.P_EDUPERSON);
viewHolder.P_EAMAX.setText(string(R.string.program_max) + " " + item.P_EAMAX);
return view;
}
@Override
public String[] getSections()
{
String[] res = new String[1];
res[0] = info.P_PARK;
return res;
}
/**
*
* <h3><b>ViewHolder</b></h3></br>
*
* @author aincc@barusoft.com
* @version 1.0.0
* @since 1.0.0
*/
class ViewHolder
{
LinearLayout cellSelector;
TextView P_NAME;
TextView P_EDUDAY;
TextView P_EDUPERSON;
TextView P_EAMAX;
}
}
}