package com.socioboard.t_board_pro.fragments;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.socioboard.t_board_pro.adapters.ToFollowingAdapter;
import com.socioboard.t_board_pro.twitterapi.TwitterRequestCallBack;
import com.socioboard.t_board_pro.twitterapi.TwitterTimeLineRequest2;
import com.socioboard.t_board_pro.twitterapi.TwitterUserGETRequest;
import com.socioboard.t_board_pro.util.Const;
import com.socioboard.t_board_pro.util.MainSingleTon;
import com.socioboard.t_board_pro.util.ToFollowingModel;
import com.socioboard.tboardpro.R;
public class FragmentUsersFollowingToMe extends Fragment implements
OnScrollListener {
View rootView;
ListView listView;
Bitmap userImage, userbannerImage;
ToFollowingAdapter myFollowersAdapter;
RelativeLayout reloutProgress;
Activity aActivity;
boolean isAlreadyScrolling = true, isneedTostop = false;
ViewGroup viewGroup;
Handler handler = new Handler();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_my_followers, container,
false);
aActivity = getActivity();
reloutProgress = (RelativeLayout) rootView
.findViewById(R.id.reloutProgress);
listView = (ListView) rootView.findViewById(R.id.listViewMyfolowers);
listView.setOnScrollListener(this);
addFooterView();
viewGroup.setVisibility(View.INVISIBLE);
if (MainSingleTon.listMyfollowersIDs.size() == 0) {
cancelProgres();
} else {
if (MainSingleTon.myFollowers.size() > 0) {
myFollowersAdapter = new ToFollowingAdapter(getActivity(),
MainSingleTon.myFollowers,
FragmentUsersFollowingToMe.this.getActivity());
listView.setAdapter(myFollowersAdapter);
} else {
new FollowingToMe().execute();
}
}
return rootView;
}
protected void parseJsonResultPaged(String jsonResult) {
myprint("parseResult ");
handler.post(new Runnable() {
@Override
public void run() {
viewGroup.setVisibility(View.INVISIBLE);
}
});
try {
JSONObject jsonObject = new JSONObject(jsonResult);
JSONArray jsonArray = jsonObject.getJSONArray("users");
MainSingleTon.myfollowersNextCursor = jsonObject
.getString(Const.next_cursor_str);
myprint("************** MainSingleTon.myfollowersNextCursor "
+ MainSingleTon.myfollowersNextCursor);
for (int i = 0; i < jsonArray.length(); ++i) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
myprint("jsonObject2 " + i + " = " + jsonObject2);
final ToFollowingModel myFollowersModel = new ToFollowingModel();
myFollowersModel.setFollowingStatus(jsonObject2.getString(
Const.following).contains("true"));
myFollowersModel.setId(jsonObject2.getString(Const.id_str));
myFollowersModel.setNoFollowers(jsonObject2
.getString(Const.followers_count));
myFollowersModel.setNoToFollowing(jsonObject2
.getString(Const.friends_count));
myFollowersModel.setNoTweets(jsonObject2
.getString(Const.listed_count));
myFollowersModel.setTweeet_str("");
myFollowersModel.setUserImagerUrl(jsonObject2
.getString(Const.profile_image_url));
myFollowersModel.setUserName("@"
+ jsonObject2.getString(Const.screen_name));
myprint(myFollowersModel);
final int indexed = i;
if (FragmentUsersFollowingToMe.this.getActivity() != null) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
int listCount = listView.getCount();
myFollowersAdapter.tweetModels
.add(myFollowersModel);
listView.setScrollY(listCount);
myFollowersAdapter.notifyDataSetChanged();
MainSingleTon.myFollowers.add(indexed,
myFollowersModel);
}
});
}
}
} catch (JSONException e) {
e.printStackTrace();
}
isAlreadyScrolling = false;
}
private void addFooterView() {
LayoutInflater inflater = getActivity().getLayoutInflater();
viewGroup = (ViewGroup) inflater.inflate(R.layout.progress_layout,
listView, false);
listView.addFooterView(viewGroup);
myprint("addFooterView++++++++++++++++++++++++++++++++++++++++++++++ DONt LOad");
}
public class FollowingToMe extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
showProgress();
TwitterTimeLineRequest2 twitterTimeLineRequest = new TwitterTimeLineRequest2(
MainSingleTon.currentUserModel,
new TwitterRequestCallBack() {
@Override
public void onSuccess(String jsonResult) {
myprint("onSuccess jsonResult " + jsonResult);
parseJsonResult(jsonResult);
}
@Override
public void onFailure(Exception e) {
myprint("onFailure e " + e);
}
@Override
public void onSuccess(JSONObject jsonObject) {
}
});
twitterTimeLineRequest
.doInBackground(MainSingleTon.users_following_to_me);
return null;
}
}
public class FetchReqPaged extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... params) {
String urlTimeline = MainSingleTon.users_following_to_me;
TwitterUserGETRequest twitterUserGETRequest = new TwitterUserGETRequest(
MainSingleTon.currentUserModel,
new TwitterRequestCallBack() {
@Override
public void onSuccess(String jsonResult) {
myprint("onSuccess jsonResult " + jsonResult);
parseJsonResultPaged(jsonResult);
}
@Override
public void onFailure(Exception e) {
myprint("onFailure e " + e);
handler.post(new Runnable() {
@Override
public void run() {
viewGroup.setVisibility(View.INVISIBLE);
isAlreadyScrolling = false;
}
});
}
@Override
public void onSuccess(JSONObject jsonObject) {
}
});
List<BasicNameValuePair> peramPairs = new ArrayList<BasicNameValuePair>();
peramPairs.add(new BasicNameValuePair(Const.cursor,
MainSingleTon.myfollowersNextCursor));
twitterUserGETRequest.executeThisRequest(urlTimeline, peramPairs);
return null;
}
}
protected void parseJsonResult(String jsonResult) {
myprint("parseJsonResult ");
try {
JSONObject jsonObject = new JSONObject(jsonResult);
JSONArray jsonArray = jsonObject.getJSONArray("users");
MainSingleTon.myfollowersNextCursor = jsonObject
.getString(Const.next_cursor_str);
myprint("************** MainSingleTon.myfollowersNextCursor "
+ MainSingleTon.myfollowersNextCursor);
for (int i = 0; i < jsonArray.length(); ++i) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
myprint("jsonObject2 " + i + " = " + jsonObject2);
ToFollowingModel myFollowersModel = new ToFollowingModel();
myFollowersModel.setFollowingStatus(jsonObject2.getString(
Const.following).contains("true"));
myFollowersModel.setId(jsonObject2.getString(Const.id_str));
myFollowersModel.setNoFollowers(jsonObject2
.getString(Const.followers_count));
myFollowersModel.setNoToFollowing(jsonObject2
.getString(Const.friends_count));
myFollowersModel.setNoTweets(jsonObject2
.getString(Const.listed_count));
myFollowersModel.setTweeet_str("");
myFollowersModel.setUserImagerUrl(jsonObject2
.getString(Const.profile_image_url));
myFollowersModel.setUserName("@"
+ jsonObject2.getString(Const.screen_name));
myprint(myFollowersModel);
MainSingleTon.myFollowers.add(myFollowersModel);
myprint(myFollowersModel);
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (FragmentUsersFollowingToMe.this.getActivity() != null) {
myFollowersAdapter = new ToFollowingAdapter(
getActivity(), MainSingleTon.myFollowers,
FragmentUsersFollowingToMe.this.getActivity());
listView.setAdapter(myFollowersAdapter);
}
}
});
} catch (JSONException e) {
e.printStackTrace();
}
isAlreadyScrolling = false;
cancelProgres();
}
void myToastS(final String toastMsg) {
Toast.makeText(getActivity(), toastMsg, Toast.LENGTH_SHORT).show();
}
void myToastL(final String toastMsg) {
Toast.makeText(getActivity(), toastMsg, Toast.LENGTH_LONG).show();
}
public void myprint(Object msg) {
System.out.println(msg.toString());
}
void showProgress() {
aActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
reloutProgress.setVisibility(View.VISIBLE);
}
});
}
void cancelProgres() {
aActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
reloutProgress.setVisibility(View.INVISIBLE);
}
});
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
/* maybe add a padding */
boolean loadMore = firstVisibleItem + visibleItemCount >= totalItemCount;
if (loadMore) {
myprint("YESSSSSSSSSSSSS load MOOOOOOOOOREE");
if (isAlreadyScrolling) {
// DO NOTHING
myprint("BUT isAlreadyScrolling ");
} else {
isAlreadyScrolling = true;
myprint(myFollowersAdapter.getItem(myFollowersAdapter
.getCount() - 1));
if (MainSingleTon.myfollowersNextCursor.length() == 1) {
myprint("MainSingleTon.myfollowersNextCursor.length() == 1 DONt LOad");
} else {
viewGroup.setVisibility(View.VISIBLE);
new FetchReqPaged().execute();
}
}
} else {
myprint("NOOOOOOOOO DONt LOad");
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
}