package typical_if.android.adapter;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.daimajia.numberprogressbar.NumberProgressBar;
import com.vk.sdk.VKSdk;
import com.vk.sdk.api.model.VKApiPoll;
import com.vk.sdk.api.model.VKList;
import typical_if.android.R;
import typical_if.android.TIFApp;
import typical_if.android.VKHelper;
import typical_if.android.VKRequestListener;
/**
* Created by Yurij on 05.02.2015.
*/
public class VotesItemAdapter extends BaseAdapter implements ListAdapter {
public final VKList<VKApiPoll.Answer> answers;
// public final LayoutInflater mLayoutInflater;
public VKApiPoll poll;
final Context appContext;
final int textFadeOutColor;
LayoutInflater layoutInflater;
TextView answers_anonymous_text;
TextView answers_anonymous_text_preview;
String isAnonymous_preview;
String isAnonymous;
Button changeDecision;
int answer_id;
int rule = 0;
public VotesItemAdapter(final Context activity, VKApiPoll poll, TextView answers_anonymous_text, TextView answers_anonymous_text_preview, String isAnonymous, String isAnonymous_preview,
Button changeDecision) {
this.answers = poll.answers;
this.appContext = activity.getApplicationContext();
this.textFadeOutColor = appContext.getResources().getColor(R.color.DATE_COLOR);
this.layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.answers_anonymous_text = answers_anonymous_text;
this.answers_anonymous_text_preview = answers_anonymous_text_preview;
this.isAnonymous = isAnonymous;
this.isAnonymous_preview = isAnonymous_preview;
this.poll = poll;
this.changeDecision = changeDecision;
}
@Override
public int getCount() {
return answers.size();
}
@Override
public Object getItem(int position) {
return answers.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, final ViewGroup parent) {
final VKApiPoll.Answer answer = (VKApiPoll.Answer) getItem(position);
final ViewHolder viewHolder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.vote_item_v2, null, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.vote_text.setVisibility(View.VISIBLE);
// viewHolder.amount_of_answers.setText(String.valueOf(answer.votes));
// viewHolder.vote_text.setText(answer.text);
// viewHolder.bar.setMax(100);
/// if (viewHolder.wasAlreadyCalled){
/// viewHolder.bar.setProgress((int) answer.rate);
// }else {
viewHolder.bar.setProgress(0);
// }
checkConditions(viewHolder, answer);
viewHolder.addVoteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
VKHelper.addVote(poll.owner_id, poll.id, answer.id, 0, new VKRequestListener() {
@Override
public void onSuccess() {
if (hasJson) {
int result = vkJson.optInt(VKHelper.TIF_VK_SDK_KEY_RESPONSE);
if (result != 0) {
Log.d("YOU'RE_VOTE_ADDED", vkJson.toString());
poll.answer_id = answer.id;
++poll.votes;
++answer.votes;
notifyDataSetChanged();
checkConditions(viewHolder, answer);
viewHolder.vote_text.setTypeface(null, Typeface.BOLD);
}
}
}
@Override
public void onError() {
Toast.makeText(TIFApp.getAppContext(), R.string.error_during_voting, Toast.LENGTH_SHORT).show();
}
});
}
});
changeDecision.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (poll.answer_id != 0) {
for (int i = 0; i < poll.answers.size(); i++) {
if (poll.answer_id == answers.get(i).id) {
answer_id = answers.get(i).id;
}
}
VKHelper.deleteVote(poll.owner_id, poll.id, answer_id, 0, new VKRequestListener() {
@Override
public void onSuccess() {
int result = vkJson.optInt(VKHelper.TIF_VK_SDK_KEY_RESPONSE);
if (result != 0) {
Log.d("YOU'RE_VOTE_DELETED", vkJson.toString());
poll.answer_id = 0;
--poll.votes;
--answer.votes;
notifyDataSetChanged();
checkConditions(viewHolder, answer);
viewHolder.vote_text.setTypeface(null, Typeface.NORMAL);
}
}
@Override
public void onError() {
Toast.makeText(TIFApp.getAppContext(), R.string.error_during_voting, Toast.LENGTH_SHORT).show();
}
});
}
}
});
viewHolder.bar.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
VKHelper.deleteVote(poll.owner_id, poll.id, answer.id, 0, new VKRequestListener() {
@Override
public void onSuccess() {
int result = vkJson.optInt(VKHelper.TIF_VK_SDK_KEY_RESPONSE);
if (result != 0) {
Log.d("YOU'RE_VOTE_DELETED", vkJson.toString());
poll.answer_id = 0;
--poll.votes;
--answer.votes;
notifyDataSetChanged();
checkConditions(viewHolder, answer);
viewHolder.vote_text.setTypeface(null, Typeface.NORMAL);
}
}
@Override
public void onError() {
Toast.makeText(TIFApp.getAppContext(), R.string.error_during_voting, Toast.LENGTH_SHORT).show();
}
});
return true;
}
});
return convertView;
}
// Thread t;
public void checkConditions(final ViewHolder viewHolder, final VKApiPoll.Answer answer) {
answers_anonymous_text_preview.setText(isAnonymous_preview + " " + poll.votes);
answers_anonymous_text.setText(isAnonymous + " " + poll.votes);
viewHolder.amount_of_answers.setText(String.valueOf(answer.votes));
viewHolder.vote_text.setText(answer.text);
viewHolder.bar.setMax(100);
// viewHolder.bar.setProgress((int) answer.rate);
if (VKSdk.isLoggedIn()) {
viewHolder.bar.setProgress((int) answer.rate);
if (poll.answer_id == 0) {
changeDecision.setVisibility(View.INVISIBLE);
viewHolder.bar.setVisibility(View.INVISIBLE);
viewHolder.amount_of_answers.setVisibility(View.INVISIBLE);
viewHolder.addVoteButton.setVisibility(View.VISIBLE);
}
if (poll.answer_id > 0) {
changeDecision.setVisibility(View.VISIBLE);
viewHolder.addVoteButton.setVisibility(View.GONE);
viewHolder.bar.setVisibility(View.VISIBLE);
viewHolder.amount_of_answers.setVisibility(View.VISIBLE);
}
if (answer.id == poll.answer_id) {
viewHolder.vote_text.setTypeface(null, Typeface.BOLD);
viewHolder.amount_of_answers.setTypeface(null, Typeface.BOLD);
viewHolder.vote_text.setTextColor(Color.WHITE);
viewHolder.amount_of_answers.setTextColor(Color.WHITE);
} else {
viewHolder.vote_text.setTypeface(null, Typeface.NORMAL);
viewHolder.amount_of_answers.setTypeface(null, Typeface.NORMAL);
viewHolder.amount_of_answers.setTextColor(textFadeOutColor);
viewHolder.vote_text.setTextColor(textFadeOutColor);
}
} else {
changeDecision.setVisibility(View.INVISIBLE);
viewHolder.addVoteButton.setVisibility(View.GONE);
viewHolder.bar.setVisibility(View.VISIBLE);
// if (!viewHolder.wasAlreadyCalled) {
// final ObjectAnimator animation = ObjectAnimator.ofInt(viewHolder.bar, "progress", (int) answer.rate);
// animation.setDuration(1200); // 0.5 second
// animation.setInterpolator(new DecelerateInterpolator());
// try {
// t.join();
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
//
// }
// if (viewHolder.wasAlreadyCalled)
viewHolder.bar.setProgress((int) answer.rate);
viewHolder.amount_of_answers.setVisibility(View.VISIBLE);
}
}
public static class ViewHolder {
public final NumberProgressBar bar;
public final TextView vote_text;
public final TextView amount_of_answers;
public final Button addVoteButton;
public boolean wasAlreadyCalled;
ViewHolder(View view) {
this.wasAlreadyCalled = false;
this.bar = (NumberProgressBar) view.findViewById(R.id.rate_bar);
this.vote_text = (TextView) view.findViewById(R.id.variant_text);
this.amount_of_answers = (TextView) view.findViewById(R.id.rate_amount_text);
this.addVoteButton = ((Button) view.findViewById(R.id.add_your_vote_button));
}
}
}