package com.duckduckgo.mobile.android.views;
import android.content.Context;
import android.database.sqlite.SQLiteCursor;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.duckduckgo.mobile.android.R;
import com.duckduckgo.mobile.android.adapters.FavoriteFeedCursorAdapter;
import com.duckduckgo.mobile.android.bus.BusProvider;
import com.duckduckgo.mobile.android.download.AsyncImageView;
import com.duckduckgo.mobile.android.events.feedEvents.MainFeedItemLongClickEvent;
import com.duckduckgo.mobile.android.events.feedEvents.MainFeedItemSelectedEvent;
import com.duckduckgo.mobile.android.events.feedEvents.SavedFeedItemLongClickEvent;
import com.duckduckgo.mobile.android.objects.FeedObject;
import com.squareup.picasso.Picasso;
public class MainFeedListView extends ListView implements android.widget.AdapterView.OnItemClickListener, android.widget.AdapterView.OnItemLongClickListener {
public MainFeedListView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setOnItemClickListener(this);
this.setOnItemLongClickListener(this);
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.e("aaa", "main feed list view on click");
Object item = getAdapter().getItem(position);
FeedObject obj = null;
if(item instanceof FeedObject) {
obj = (FeedObject) item;
}
else if(item instanceof SQLiteCursor) {
obj = new FeedObject(((SQLiteCursor) item));
}
if (obj != null) {
BusProvider.getInstance().post(new MainFeedItemSelectedEvent(obj));
}
}
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Log.e("aaa", "main feed long click");
Object item = getAdapter().getItem(position);
FeedObject obj = null;
if(item instanceof FeedObject) {
obj = (FeedObject) item;
}
else if(item instanceof SQLiteCursor) {
obj = new FeedObject(((SQLiteCursor) item));
}
if (obj != null) {
if(getAdapter().getClass() == FavoriteFeedCursorAdapter.class) {
Log.e("aaa", "saved feed item long click event");
BusProvider.getInstance().post(new SavedFeedItemLongClickEvent(obj));
}
else {
Log.e("aaa", "main feed item long click event");
BusProvider.getInstance().post(new MainFeedItemLongClickEvent(obj));
}
}
return true;
}
public void setSelectionById(String id) {
int itemCount = getCount();
for(int i=0; i < itemCount ; ++i) {
if(((FeedObject) getItemAtPosition(i)).getId().equals(id)) {
setSelection(i);
break;
}
}
}
/**
* Find the item given by its ID and return its position in the list
* @param id item ID
* @return item position in the list
*/
public int getSelectionPosById(String id) {
int headerViewCount = getHeaderViewsCount();
int itemCount = getCount() - headerViewCount;
for(int i=headerViewCount; i < itemCount ; ++i) {
if(((FeedObject) getItemAtPosition(i)).getId().equals(id)) {
return i;
}
}
return -1;
}
public void cleanImageTasks() {
int count = getCount();
for(int i=0;i<count;i++) {
View v = getChildAt(i);
if(v != null) {
AsyncImageView iv = (AsyncImageView) v.findViewById(R.id.feedItemBackground);
Picasso.with(getContext()).cancelRequest(iv);
}
}
}
}