package com.uservoice.uservoicesdk.ui; import android.annotation.SuppressLint; import android.support.v4.app.FragmentActivity; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import com.uservoice.uservoicesdk.R; import com.uservoice.uservoicesdk.Session; import com.uservoice.uservoicesdk.babayaga.Babayaga; import com.uservoice.uservoicesdk.babayaga.Babayaga.Event; import com.uservoice.uservoicesdk.flow.SigninManager; import com.uservoice.uservoicesdk.model.Category; import com.uservoice.uservoicesdk.model.Suggestion; import java.util.ArrayList; import java.util.List; public class PostIdeaAdapter extends InstantAnswersAdapter { private static int DESCRIPTION = 8; private static int CATEGORY = 9; private static int HELP = 10; private static int TEXT_HEADING = 11; private Spinner categorySelect; private EditText descriptionField; public PostIdeaAdapter(FragmentActivity context) { super(context); continueButtonMessage = R.string.uv_post_idea_continue_button; } @Override public int getViewTypeCount() { return super.getViewTypeCount() + 4; } @Override protected List<Integer> getDetailRows() { List<Integer> rows = new ArrayList<Integer>(); rows.add(DESCRIPTION); if (Session.getInstance().getForum().getCategories().size() > 0) rows.add(CATEGORY); rows.add(SPACE); rows.add(EMAIL_FIELD); rows.add(NAME_FIELD); return rows; } @Override protected List<Integer> getRows() { List<Integer> rows = super.getRows(); rows.add(0, TEXT_HEADING); if (state == State.DETAILS) rows.add(HELP); return rows; } @Override @SuppressLint("CutPasteId") public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; int type = getItemViewType(position); if (view == null) { if (type == DESCRIPTION) { view = inflater.inflate(R.layout.uv_text_field_item, null); TextView title = (TextView) view.findViewById(R.id.uv_header_text); descriptionField = (EditText) view.findViewById(R.id.uv_text_field); title.setText(R.string.uv_idea_description_heading); descriptionField.setHint(R.string.uv_idea_description_hint); } else if (type == CATEGORY) { view = inflater.inflate(R.layout.uv_select_field_item, null); TextView title = (TextView) view.findViewById(R.id.uv_header_text); categorySelect = (Spinner) view.findViewById(R.id.uv_select_field); categorySelect.setAdapter(new SpinnerAdapter<Category>(context, Session.getInstance().getForum().getCategories())); title.setText(R.string.uv_category); } else if (type == HELP) { view = inflater.inflate(R.layout.uv_idea_help_item, null); } else if (type == TEXT_HEADING) { view = inflater.inflate(R.layout.uv_header_item, null); TextView textView = (TextView) view.findViewById(R.id.uv_header_text); textView.setText(R.string.uv_idea_text_heading); } else { view = super.getView(position, convertView, parent); } } if (type == DESCRIPTION || type == CATEGORY || type == HELP || type == TEXT_HEADING) { // just skip the else } else if (type == TEXT) { TextView textView = (TextView) view.findViewById(R.id.uv_text); textView.setHint(R.string.uv_idea_text_hint); textView.setMinLines(1); } else { return super.getView(position, view, parent); } return view; } @Override protected void doSubmit() { SigninManager.signIn(context, emailField.getText().toString(), nameField.getText().toString(), new Runnable() { @Override public void run() { Category category = categorySelect == null ? null : (Category) categorySelect.getSelectedItem(); Suggestion.createSuggestion(Session.getInstance().getForum(), category, textField.getText().toString(), descriptionField.getText().toString(), 1, new DefaultCallback<Suggestion>(context) { @Override public void onModel(Suggestion model) { Babayaga.track(Event.SUBMIT_IDEA); Toast.makeText(context, R.string.uv_msg_idea_created, Toast.LENGTH_SHORT).show(); context.finish(); } }); } }); } @Override protected String getSubmitString() { return context.getString(R.string.uv_submit_idea); } }