package com.socioboard.iboardpro.fragments;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Base64;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import com.socioboard.iboardpro.ApplicationData;
import com.socioboard.iboardpro.ConstantTags;
import com.socioboard.iboardpro.Encrypt;
import com.socioboard.iboardpro.JSONParser;
import com.socioboard.iboardpro.R;
import com.socioboard.iboardpro.adapter.CopyFollowAdapter;
import com.socioboard.iboardpro.database.util.MainSingleTon;
import com.socioboard.iboardpro.models.FollowModel;
import com.socioboard.iboardpro.ui.WaveDrawable;
public class Copy_follows extends Fragment implements OnScrollListener {
String getUserIDURl = "https://api.instagram.com/v1/users/search?q=";
private String[] choose_category;
JSONParser jParser = new JSONParser();
int mainposition = 0;
ListView list;
TextView alerttext;
public static ArrayList<FollowModel> follows_arrayList = new ArrayList<FollowModel>();
private WaveDrawable waveDrawable;
ImageView progressimage;
public static CopyFollowAdapter adapter;
// loadmore
ViewGroup viewGroup;
boolean isAlreadyScrolling = true;
String nexturl;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.copy_follows_fragment,
container, false);
Spinner spinner = (Spinner) rootView.findViewById(R.id.spinner);
ImageView searchView = (ImageView) rootView
.findViewById(R.id.searchimage);
list = (ListView) rootView.findViewById(R.id.listview);
addFooterView();
list.setOnScrollListener(Copy_follows.this);
choose_category = getResources().getStringArray(R.array.chooselist);
alerttext = (TextView) rootView.findViewById(R.id.alerttext);
alerttext.setVisibility(View.INVISIBLE);
final EditText text = (EditText) rootView
.findViewById(R.id.captionText);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_spinner_item,
choose_category);
dataAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
progressimage = (ImageView) rootView.findViewById(R.id.image);
waveDrawable = new WaveDrawable(Color.parseColor("#8DD2FA"), 500);
if (Build.VERSION.SDK_INT >= 16) {
progressimage.setBackground(waveDrawable);
} else {
progressimage.setBackgroundDrawable(waveDrawable);
}
Interpolator interpolator = new LinearInterpolator();
waveDrawable.setWaveInterpolator(interpolator);
waveDrawable.startAnimation();
spinner.setAdapter(dataAdapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
TextView selectedText = (TextView) parent.getChildAt(0);
if (selectedText != null) {
selectedText.setTextColor(Color.WHITE);
}
if (position == 0) {
mainposition = 0;
System.out.println("POSITION==========" + position);
} else {
System.out.println("POSITION else==========" + position);
mainposition = 1;
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
searchView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
alerttext.setVisibility(View.INVISIBLE);
String user = text.getText().toString();
if (user.length() > 0) {
new getUserNameFromID().execute(user);
}
}
});
SetAdapter();
if (follows_arrayList.size()==0) {
viewGroup.setVisibility(View.INVISIBLE);
}
return rootView;
}
private void addFooterView() {
LayoutInflater inflater = getActivity().getLayoutInflater();
viewGroup = (ViewGroup) inflater.inflate(R.layout.progress_layout,
list, false);
list.addFooterView(viewGroup);
}
class getUserNameFromID extends AsyncTask<String, Void, Void> {
String id;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
progressimage.setVisibility(View.VISIBLE);
list.setVisibility(View.INVISIBLE);
}
@Override
protected Void doInBackground(String... params) {
String username = params[0];
JSONObject json = jParser.getJSONFromUrlByGet(getUserIDURl
+ username.replace(" ", "%20") + "&client_id=" + MainSingleTon.api_key);
try {
if (json.has(ConstantTags.TAG_DATA)) {
JSONArray data = json.getJSONArray(ConstantTags.TAG_DATA);
if (data.length() > 0) {
JSONObject object = data.getJSONObject(0);
id = object.getString(ConstantTags.TAG_ID);
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
progressimage.setVisibility(View.INVISIBLE);
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
list.setVisibility(View.VISIBLE);
String url;
if (id != null) {
if (mainposition == 0) {
url = "https://api.instagram.com/v1/users/" + id
+ "/follows/?access_token="
+ MainSingleTon.accesstoken;
}
else {
url = "https://api.instagram.com/v1/users/" + id
+ "/followed-by/?access_token="
+ MainSingleTon.accesstoken;
}
new getUserFollowers().execute(url);
} else {
list.setVisibility(View.INVISIBLE);
progressimage.setVisibility(View.INVISIBLE);
alerttext.setVisibility(View.VISIBLE);
}
}
}
class getUserFollowers extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
follows_arrayList.clear();
adapter.notifyDataSetChanged();
}
@Override
protected Void doInBackground(String... params) {
String url = params[0];
JSONObject json = jParser.getJSONFromUrlByGet(url);
System.out.println("jsonresponse" + json);
try {
if (json.has("pagination")) {
JSONObject jsonObject = json.getJSONObject("pagination");
if (jsonObject.has("next_url")) {
nexturl = jsonObject.getString("next_url");
}
}
if (json.has(ConstantTags.TAG_DATA)) {
JSONArray data = json.getJSONArray(ConstantTags.TAG_DATA);
if (data.length() > 0) {
for (int data_i = 0; data_i < data.length(); data_i++) {
JSONObject data_obj = data.getJSONObject(data_i);
String str_full_name = data_obj
.getString(ConstantTags.TAG_FULL_NAME);
String str_profile_picture = data_obj
.getString(ConstantTags.TAG_PROFILE_PICTURE);
String str_id = data_obj.getString(ConstantTags.TAG_ID);
String str_username = data_obj
.getString(ConstantTags.TAG_USERNAME);
FollowModel model = new FollowModel();
model.setFull_name(str_full_name);
model.setProfile_pic_url(str_profile_picture);
model.setUserid(str_id);
model.setUsername(str_username);
follows_arrayList.add(model);
System.out.println("inside array name=str_full_name"
+ str_full_name);
if (data_i % 4 == 0) {
if (data_i != 0) {
//if full name is "1" then inflate banner ad
FollowModel model1 = new FollowModel();
model1.setFull_name("1");
follows_arrayList.add(model1);
}
}
}
}
}
} catch (JSONException e) {
System.out.println("catch block");
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
progressimage.setVisibility(View.INVISIBLE);
if (follows_arrayList.size() > 0) {
list.setVisibility(View.VISIBLE);
adapter.notifyDataSetChanged();
} else {
list.setVisibility(View.INVISIBLE);
alerttext.setVisibility(View.VISIBLE);
}
isAlreadyScrolling = false;
progressimage.setVisibility(View.INVISIBLE);
}
}
class getPagedUserFollowers extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected Void doInBackground(String... params) {
String url = params[0];
JSONObject json = jParser.getJSONFromUrlByGet(url);
System.out.println("jsonresponse" + json);
try {
if (json.has("pagination")) {
System.out.println("has peginaion true");
JSONObject jsonObject = json.getJSONObject("pagination");
if (jsonObject.has("next_url")) {
nexturl = jsonObject.getString("next_url");
System.out.println("nexturl" + nexturl);
} else {
nexturl = null;
}
}
if (json.has(ConstantTags.TAG_DATA)) {
JSONArray data = json.getJSONArray(ConstantTags.TAG_DATA);
if (data.length() > 0) {
for (int data_i = 0; data_i < data.length(); data_i++) {
JSONObject data_obj = data.getJSONObject(data_i);
String str_full_name = data_obj
.getString(ConstantTags.TAG_FULL_NAME);
String str_profile_picture = data_obj
.getString(ConstantTags.TAG_PROFILE_PICTURE);
String str_id = data_obj.getString(ConstantTags.TAG_ID);
String str_username = data_obj
.getString(ConstantTags.TAG_USERNAME);
FollowModel model = new FollowModel();
model.setFull_name(str_full_name);
model.setProfile_pic_url(str_profile_picture);
model.setUserid(str_id);
model.setUsername(str_username);
follows_arrayList.add(model);
if (data_i % 4 == 0) {
if (data_i != 0) {
//if full name is "1" then inflate banner ad
FollowModel model1 = new FollowModel();
model1.setFull_name("1");
follows_arrayList.add(model1);
}
}
}
}
}
} catch (JSONException e) {
System.out.println("catch block");
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
progressimage.setVisibility(View.INVISIBLE);
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$");
viewGroup.setVisibility(View.INVISIBLE);
int listCount = list.getCount();
list.setScrollY(listCount);
adapter.notifyDataSetChanged();
isAlreadyScrolling = false;
}
}
void SetAdapter() {
adapter = new CopyFollowAdapter(getActivity(), follows_arrayList);
list.setAdapter(adapter);
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
/* maybe add a padding */
boolean loadMore = firstVisibleItem + visibleItemCount >= totalItemCount;
if (loadMore) {
System.out.println("inside loadmore adapter coumt");
if (isAlreadyScrolling) {
} else {
viewGroup.setVisibility(View.VISIBLE);
isAlreadyScrolling = true;
if (adapter!=null) {
if (adapter.getCount() != 0) {
System.out.println("inside adapter.getCount()"
+ adapter.getCount());
if (nexturl != null) {
new getPagedUserFollowers().execute(nexturl);
}
else {
viewGroup.setVisibility(View.INVISIBLE);
}
}
}
}
} else {
}
}
}