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.content.Context;
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.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.socioboard.t_board_pro.adapters.SearchAdapter;
import com.socioboard.t_board_pro.twitterapi.TwitterRequestCallBack;
import com.socioboard.t_board_pro.twitterapi.TwitterUserGETRequest;
import com.socioboard.t_board_pro.twitterapi.TwitterUserSearchRequest;
import com.socioboard.t_board_pro.util.Const;
import com.socioboard.t_board_pro.util.MainSingleTon;
import com.socioboard.t_board_pro.util.SearchDetailModel;
import com.socioboard.t_board_pro.util.ToFollowingModel;
import com.socioboard.tboardpro.R;
public class FragmentSearch extends Fragment implements OnScrollListener {
View rootView;
EditText editText;
TwitterUserSearchRequest userSearchRequest;
String searchText = "";
ImageView button1Search;
ListView listView;
SearchAdapter searchAdapter;
Activity aActivity;
RelativeLayout reloutProgress;
boolean isAlreadyScrolling = true;
TextView textView1SearchedText;
ImageView imageView1;
ViewGroup viewGroup;
Handler handler = new Handler();
SearchDetailModel searchDetailModel = new SearchDetailModel();
public static FragmentSearch newInstance(String text) {
FragmentSearch f = new FragmentSearch();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_search, container, false);
aActivity = getActivity();
editText = (EditText) rootView.findViewById(R.id.edsearchView1);
textView1SearchedText = (TextView) rootView
.findViewById(R.id.textView1SearchedText);
button1Search = (ImageView) rootView.findViewById(R.id.button1Search);
listView = (ListView) rootView.findViewById(R.id.listView1Searched);
imageView1 = (ImageView) rootView.findViewById(R.id.imageView1Removes);
imageView1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
viewGroup.setVisibility(View.INVISIBLE);
imageView1.setVisibility(View.INVISIBLE);
searchDetailModel.setSearchText("");
searchDetailModel.getSearchList().clear();
searchAdapter.tweetModels.clear();
searchAdapter = new SearchAdapter(FragmentSearch.this
.getActivity(), searchDetailModel.getSearchList(),
FragmentSearch.this.getActivity());
listView.setAdapter(searchAdapter);
isAlreadyScrolling = true;
textView1SearchedText.setText("");
editText.setText("");
cancelProgres();
}
});
listView.setOnScrollListener(this);
addFooterView();
viewGroup.setVisibility(View.INVISIBLE);
reloutProgress = (RelativeLayout) rootView
.findViewById(R.id.reloutProgress);
button1Search.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isAlreadyScrolling = true;
searchText = editText.getText().toString();
if (searchText.length() == 0) {
myprint("Empty");
myToastS("Enter username to search");
} else {
View view = getActivity().getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager) getActivity()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
searchDetailModel.getSearchList().clear();
searchAdapter = new SearchAdapter(aActivity,
searchDetailModel.getSearchList(), aActivity);
textView1SearchedText.setText("Searching results for: \""
+ searchText + "\"");
searchDetailModel.setSearchText(searchText);
listView.setAdapter(searchAdapter);
showProgress();
FetchReqPaged();
}
}
});
initView();
return rootView;
}
private void initView() {
if (searchDetailModel.getSearchList().size() == 0) {
} else {
imageView1.setVisibility(View.VISIBLE);
searchAdapter = new SearchAdapter(getActivity(),
searchDetailModel.getSearchList(),
FragmentSearch.this.getActivity());
listView.setAdapter(searchAdapter);
textView1SearchedText.setText("Searched "
+ searchAdapter.tweetModels.size() + " results for: \""
+ searchDetailModel.getSearchText() + "\"");
editText.append(searchDetailModel.getSearchText());
isAlreadyScrolling = false;
}
}
void myToastS(final String toastMsg) {
Toast.makeText(getActivity(), toastMsg, Toast.LENGTH_SHORT).show();
}
private void addFooterView() {
LayoutInflater inflater = getActivity().getLayoutInflater();
viewGroup = (ViewGroup) inflater.inflate(R.layout.progress_layout,
listView, false);
listView.addFooterView(viewGroup);
myprint("addFooterView ++++++++++++++++++++++++++++++++++++++++++++++ DONt LOad");
}
void myToastL(final String toastMsg) {
Toast.makeText(getActivity(), toastMsg, Toast.LENGTH_LONG).show();
}
public void myprint(Object msg) {
System.out.println(msg.toString());
}
public void FetchReqPaged() {
String urlTimeline = MainSingleTon.userSearch;
TwitterUserGETRequest twitterUserGETRequest = new TwitterUserGETRequest(
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);
handler.post(new Runnable() {
@Override
public void run() {
viewGroup.setVisibility(View.INVISIBLE);
}
});
}
@Override
public void onSuccess(JSONObject jsonObject) {
}
});
List<BasicNameValuePair> peramPairs = new ArrayList<BasicNameValuePair>();
peramPairs.add(new BasicNameValuePair(Const.count, "" + 20));
peramPairs.add(new BasicNameValuePair(Const.page, ""
+ (searchAdapter.getCount() / 20 + 1)));
peramPairs.add(new BasicNameValuePair(Const.q, searchText));
twitterUserGETRequest.executeThisRequest(urlTimeline, peramPairs);
}
protected void parseJsonResult(String jsonResult) {
myprint("parseJsonResult ");
try {
JSONArray jsonArray = new JSONArray(jsonResult);
for (int i = 0; i < jsonArray.length(); ++i) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
myprint("jsonObject2 " + (searchAdapter.getCount() + i) + " = "
+ "");
ToFollowingModel followingModel = new ToFollowingModel();
followingModel.setFollowingStatus(jsonObject2.getString(
Const.following).contains("true"));
followingModel.setId(jsonObject2.getString(Const.id_str));
followingModel.setNoFollowers(jsonObject2
.getString(Const.followers_count));
followingModel.setNoToFollowing(jsonObject2
.getString(Const.friends_count));
followingModel.setNoTweets(jsonObject2
.getString(Const.listed_count));
followingModel.setTweeet_str("");
followingModel.setUserImagerUrl(jsonObject2
.getString(Const.profile_image_url));
followingModel.setUserName("@"
+ jsonObject2.getString(Const.screen_name));
searchAdapter.tweetModels.add(followingModel);
// myprint(followingModel);
}
if (FragmentSearch.this.getActivity() != null) {
aActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
searchDetailModel
.setSearchList(searchAdapter.tweetModels);
if (searchDetailModel.getSearchList().size() < 20) {
isAlreadyScrolling = true;
} else {
isAlreadyScrolling = false;
}
if (searchDetailModel.getSearchList().size() == 0) {
} else {
imageView1.setVisibility(View.VISIBLE);
}
int listCount = listView.getCount();
listView.setScrollY(listCount);
textView1SearchedText.setText("Searched "
+ searchAdapter.tweetModels.size()
+ " results for: \"" + searchText + "\"");
searchAdapter.notifyDataSetChanged();
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
cancelProgres();
}
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) {
myprint("BUT isAlreadyScrolling ");
} else {
isAlreadyScrolling = true;
String madMaxId = ""
+ searchAdapter.getItem(searchAdapter.getCount() - 1)
.getId();
myprint(searchAdapter.getItem(searchAdapter.getCount() - 1));
if (searchAdapter.getCount() % 20 != 0) {
myprint("searchAdapter.getCount() % 20 != 0 "
+ searchAdapter.getCount() % 20);
} else {
viewGroup.setVisibility(View.VISIBLE);
FetchReqPaged();
}
myprint("*********** searchAdapter.getCount() "
+ (searchAdapter.getCount()));
}
} else {
myprint("NOOOOOOOOO DONt LOad");
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
}