package net.dewep.intranetepitech; import java.util.ArrayList; import org.apache.http.message.BasicNameValuePair; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.text.Html; import android.text.InputType; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.View.OnClickListener; import android.view.inputmethod.EditorInfo; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; public class AdapterCalendrier extends BaseAdapter implements OnClickListener { LayoutInflater inflater; Context context; public AdapterCalendrier(Context context) { this.context = context; inflater = LayoutInflater.from(context); } @Override public int getCount() { return Stock.getInstance().calGetCount(); } @Override public Object getItem(int position) { return getAct(position); } @Override public long getItemId(int position) { return position; } protected Activite getAct(int position) { ArrayList<InfosCalendrier> ics = Stock.getInstance().cal; int index = 0; while (position > ics.get(index).acts.size()) { position -= ics.get(index).acts.size() + 1; index++; } if (position == 0) return (null); return (ics.get(index).acts.get(position - 1)); } protected String getJour(int position) { ArrayList<InfosCalendrier> ics = Stock.getInstance().cal; int index = 0; while (position > ics.get(index).acts.size()) { position -= ics.get(index).acts.size() + 1; index++; } if (position == 0) return (ics.get(index).jour); return (""); } @Override public View getView(int position, View convertView, ViewGroup parent) { Activite act = null; String txt = null; convertView = inflater.inflate(R.layout.error, null); TextView error_txt = (TextView) convertView.findViewById(R.id.error_txt); error_txt.setText(context.getString(R.string.aucune_donnee)); if (Stock.getInstance().cal.size() == 0) { } else if (!(txt = getJour(position)).equals("")) { convertView = inflater.inflate(R.layout.item_calendrier_jour, null); TextView jour = (TextView) convertView.findViewById(R.id.jour); jour.setText(ManipulateDate.convert_date(txt)); } else if ((act = getAct(position)) != null) { convertView = inflater.inflate(R.layout.item_calendrier_activites, null); TextView titre = (TextView) convertView.findViewById(R.id.activite_titre); TextView infos = (TextView) convertView.findViewById(R.id.activite_infos); Button token = (Button) convertView.findViewById(R.id.token); titre.setText(act.start + " - " + act.end + "\n" + act.name); infos.setText(act.toString()); if (act.isAffToken() != 1) { token.setVisibility(View.GONE); } else { token.setId(position); token.setOnClickListener(this); } } convertView.invalidate(); return convertView; } @Override public void onClick(View v) { if (v.getId() >= getCount() && v.getId() < 0) return ; final Activite act = getAct(v.getId()); if (act != null && act.isAffToken() == 1) { final EditText input = new EditText(this.context); input.setInputType(InputType.TYPE_CLASS_NUMBER); final Context context_class = this.context; final AlertDialog dialog = new AlertDialog.Builder(this.context) .setTitle("Token").setMessage(act.name).setView(input) .setPositiveButton("Ok", null).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); } }).create(); dialog.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface d) { Button b = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (input.getText().length() != 8 || !input.getText().toString().matches("^-?[0-9]+(\\.[0-9]+)?$")) dialog.setMessage(Html.fromHtml("<font color='#FF0000'><b>Il doit y avoir 8 chiffres.</b></font>")); else { dialog.dismiss(); RecupDonneesNet mnm = new RecupDonneesNet(context_class, true); MyRequest req = new MyRequest(); req.url = "/module/" + act.url_event + "/token?format=json"; req.type = Global.T_TOKENS; req.obj = dialog; req.nameValuePairs.add(new BasicNameValuePair("token", input.getText().toString())); req.nameValuePairs.add(new BasicNameValuePair("rate", "0")); req.nameValuePairs.add(new BasicNameValuePair("comment", "")); mnm.execute(req); } } }); } }); input.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { dialog.getButton(Dialog.BUTTON_POSITIVE).performClick(); } return false; } }); dialog.show(); input.requestFocus(); dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } } }