package org.voxe.android.activity;
import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
import java.util.HashSet;
import org.voxe.android.R;
import org.voxe.android.VoxeApplication;
import org.voxe.android.adapter.SelectCandidatesAdapter;
import org.voxe.android.common.Analytics;
import org.voxe.android.model.Candidate;
import org.voxe.android.model.Election;
import org.voxe.android.model.ElectionsHolder;
import android.content.Intent;
import android.view.View;
import android.widget.ListView;
import com.actionbarsherlock.app.SherlockActivity;
import com.google.common.base.Optional;
import com.googlecode.androidannotations.annotations.AfterViews;
import com.googlecode.androidannotations.annotations.App;
import com.googlecode.androidannotations.annotations.Bean;
import com.googlecode.androidannotations.annotations.EActivity;
import com.googlecode.androidannotations.annotations.Extra;
import com.googlecode.androidannotations.annotations.InstanceState;
import com.googlecode.androidannotations.annotations.ItemClick;
import com.googlecode.androidannotations.annotations.OptionsItem;
import com.googlecode.androidannotations.annotations.ViewById;
@EActivity(R.layout.select_candidates_list)
public class SelectCandidatesActivity extends SherlockActivity {
@App
VoxeApplication application;
@ViewById
ListView listView;
@Bean
Analytics analytics;
private Election election;
@Bean
SelectCandidatesAdapter adapter;
@InstanceState
HashSet<String> selectedCandidateIds = new HashSet<String>();
@Extra
int electionIndex;
@AfterViews
void init() {
Optional<ElectionsHolder> optionalElectionHolder = application.getElectionHolder();
if (optionalElectionHolder.isPresent()) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
ElectionsHolder electionHolder = optionalElectionHolder.get();
election = electionHolder.elections.get(electionIndex);
adapter.init(election.getMainCandidates(), selectedCandidateIds);
listView.setAdapter(adapter);
setTitle(election.name);
} else {
LoadingActivity_ //
.intent(this) //
.flags(FLAG_ACTIVITY_CLEAR_TOP) //
.start();
finish();
}
}
void startSelectTagActivity() {
Intent intent = SelectTagActivity_. //
intent(this) //
.electionIndex(electionIndex) //
.selectedCandidateIds(selectedCandidateIds) //
.get();
startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
selectedCandidateIds.clear();
adapter.notifyDataSetChanged();
}
@ItemClick
void listViewItemClicked(int position) {
Candidate candidate = adapter.getItem(position);
if (selectedCandidateIds.contains(candidate.id)) {
selectedCandidateIds.remove(candidate.id);
} else {
selectedCandidateIds.add(candidate.id);
}
View candidateView = listView.getChildAt(position - listView.getFirstVisiblePosition());
adapter.updateCheckbox(candidateView, candidate);
if (selectedCandidateIds.size() == 2) {
analytics.twoCandidatesSelected(election, selectedCandidateIds);
startSelectTagActivity();
}
}
@OptionsItem
void homeSelected() {
SelectElectionActivity_ //
.intent(this) //
.flags(FLAG_ACTIVITY_CLEAR_TOP) //
.start();
finish();
}
@Override
protected void onPause() {
super.onPause();
analytics.onPause();
}
@Override
protected void onResume() {
super.onResume();
analytics.onResume();
}
}