package net.reichholf.dreamdroid.fragment;
import android.os.Bundle;
import android.support.v4.content.Loader;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import net.reichholf.dreamdroid.R;
import net.reichholf.dreamdroid.fragment.abs.BaseHttpRecyclerEventFragment;
import net.reichholf.dreamdroid.helpers.ExtendedHashMap;
import net.reichholf.dreamdroid.helpers.NameValuePair;
import net.reichholf.dreamdroid.helpers.enigma2.URIStore;
import net.reichholf.dreamdroid.helpers.enigma2.requesthandler.EventListRequestHandler;
import net.reichholf.dreamdroid.loader.AsyncListLoader;
import net.reichholf.dreamdroid.loader.LoaderResult;
import net.reichholf.dreamdroid.view.EnhancedHorizontalScrollView;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
/**
* Created by Stephan on 09.03.14.
*/
public class EpgTimelineFragment extends BaseHttpRecyclerEventFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.multiepg, null);
final EnhancedHorizontalScrollView headerScroll = (EnhancedHorizontalScrollView) v.findViewById(R.id.scrollview_header);
final EnhancedHorizontalScrollView contentScroll = (EnhancedHorizontalScrollView) v.findViewById(R.id.scrollview_content);
headerScroll.addScrollChangedListener(new EnhancedHorizontalScrollView.OnScrollChangedListener() {
@Override
public void onScrollChanged(int x, int y) {
contentScroll.scrollTo(x, y);
}
});
contentScroll.addScrollChangedListener(new EnhancedHorizontalScrollView.OnScrollChangedListener() {
@Override
public void onScrollChanged(int x, int y) {
headerScroll.scrollTo(x, y);
}
});
LinearLayout header = (LinearLayout) v.findViewById(R.id.header);
header.addView(createTimeLine(inflater));
LinearLayout content = (LinearLayout) v.findViewById(R.id.content);
for (int i = 0; i < 48; ++i) {
LinearLayout row = (LinearLayout) inflater.inflate(R.layout.multiepg_row, null);
for (int j = 0; j < 10; ++j) {
int width = new Double((Math.random() * 120)).intValue() * getScaleFactor();
View item = createRowItem(inflater, width, String.format("%spx", width), false);
row.addView(item);
}
content.addView(row);
}
return v;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
reload();
}
@Override
public boolean hasHeader() {
return true;
}
public LinearLayout createTimeLine(LayoutInflater inflater) {
LinearLayout row = (LinearLayout) inflater.inflate(R.layout.multiepg_row, null);
Date now = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(now);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int width = cal.get(Calendar.MINUTE) * getScaleFactor();
View v = createRowItem(inflater, width, String.valueOf(hour), true);
row.addView(v);
width = 60 * getScaleFactor();
for (int i = 0; i < 24; ++i) {
cal.add(Calendar.HOUR_OF_DAY, 1);
hour = cal.get(Calendar.HOUR_OF_DAY);
v = createRowItem(inflater, width, String.valueOf(hour), true);
v.setClickable(false);
row.addView(v);
}
return row;
}
private View createRowItem(LayoutInflater inflater, int width, String text1, boolean header) {
View item;
if (header)
item = inflater.inflate(R.layout.multiepg_header_item, null);
else
item = inflater.inflate(R.layout.multiepg_row_item, null);
TextView tv = (TextView) item.findViewById(android.R.id.text1);
tv.setText(text1);
ViewGroup.LayoutParams params = tv.getLayoutParams();
params.width = width;
tv.setLayoutParams(params);
return item;
}
private int getScaleFactor() {
return new Double(3 * getResources().getDimension(R.dimen.single_dp)).intValue();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
return false;
}
@Override
public ArrayList<NameValuePair> getHttpParams(int loader) {
ArrayList<NameValuePair> params = new ArrayList<>();
params.add(new NameValuePair("bRef", "1:7:1:0:0:0:0:0:0:0:FROM BOUQUET \"userbouquet.favourites.tv\" ORDER BY bouquet"));
return params;
}
@Override
public Loader<LoaderResult<ArrayList<ExtendedHashMap>>> onCreateLoader(int id, Bundle args) {
return new AsyncListLoader(getAppCompatActivity(), new EventListRequestHandler(
URIStore.EPG_MULTI), false, args);
}
@Override
public void onLoadFinished(Loader<LoaderResult<ArrayList<ExtendedHashMap>>> loader,
LoaderResult<ArrayList<ExtendedHashMap>> result) {
super.onLoadFinished(loader, result);
}
}