/*
*
* * Copyright (C) 2012 Ignacio Gonzalez Sainz
* *
* * Holy Week Guide: An android application with the itineraries, images and all information of the brotherhoods Spain's holy week
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
* *
* * Ignacio Gonzalez Sainz
* * Cádiz (Spain)
* * ignacio.glez.s@gmail.com
* *
*
*/
package com.ignaciogs.semanasanta.adapters;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.ignaciogs.semanasanta.Cofradia;
import com.ignaciogs.semanasanta.DataManager;
import com.ignaciogs.semanasanta.R;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
public class ItinerarioListAdapter extends BaseAdapter {
private Context context;
private List<Cofradia> listCofradias;
private SimpleDateFormat sdf;
private Calendar calendar;
private boolean puestoPrimerDomingo = false;
private boolean isPrimerDomingo = true;
public ItinerarioListAdapter(Context context, List<Cofradia> list) {
this.context = context;
this.listCofradias = list;
sdf = new SimpleDateFormat("yyyyMMdd");
calendar = GregorianCalendar.getInstance();
}
@Override
public int getCount() {
return listCofradias.size();
}
@Override
public Object getItem(int position) {
return listCofradias.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Cofradia cofradia = listCofradias.get(position);
try {
calendar.setTime(sdf.parse(cofradia.getFecha_salida()));
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 1 && !puestoPrimerDomingo) {
puestoPrimerDomingo = true;
} else if (dayOfWeek != 1 && puestoPrimerDomingo) {
isPrimerDomingo = false;
}
} catch (ParseException e) {
}
if (convertView == null) {
convertView = View.inflate(context, R.layout.item_list_itinerario, null);
}
/* Si cambia el día de la semana mostramos la division de dias */
TextView lblDiaSemana = (TextView)convertView.findViewById(R.id.item_list_itinerario_nombreDiaSemana);
if (position == 0) {
lblDiaSemana.setVisibility(View.VISIBLE);
lblDiaSemana.setText(DataManager.getInstance().getNameDayFromDate(cofradia.getFecha_salida(), cofradia.getHoraSalida(), context, isPrimerDomingo));
} else if ( (position > 0) && (! cofradia.getFecha_salida().equals(listCofradias.get(position -1).getFecha_salida()))) {
lblDiaSemana.setVisibility(View.VISIBLE);
lblDiaSemana.setText(DataManager.getInstance().getNameDayFromDate(cofradia.getFecha_salida(), cofradia.getHoraSalida(), context, isPrimerDomingo));
} else {
//Si la fecha es la misma comprobamos la hora ya que hay que distinguir entre madrugada y tarde
int horaSalida = Integer.valueOf(cofradia.getHoraSalida().substring(0, 2));
int horaSalidaAnt = Integer.valueOf(listCofradias.get(position -1).getHoraSalida().substring(0, 2));
if ( ((horaSalida < DataManager.getInstance().getHoraFinMadrugada()) && (horaSalidaAnt >= DataManager.getInstance().getHoraFinMadrugada())) ||
((horaSalidaAnt < DataManager.getInstance().getHoraFinMadrugada()) && (horaSalida >= DataManager.getInstance().getHoraFinMadrugada())) ) {
//Una es de madrugada y la otra es de tarde
lblDiaSemana.setVisibility(View.VISIBLE);
lblDiaSemana.setText(DataManager.getInstance().getNameDayFromDate(cofradia.getFecha_salida(), cofradia.getHoraSalida(), context, isPrimerDomingo));
} else {
lblDiaSemana.setVisibility(View.GONE);
}
}
/* Buscamos es escudo de la cofradia */
ImageView imgEscudo = (ImageView)convertView.findViewById(R.id.item_list_itinerario_escudo);
if (! cofradia.getImagenEscudo().equals("")) {
int idEscudo = context.getResources().getIdentifier(cofradia.getImagenEscudo(), "drawable", "com.ignaciogs.semanasanta");
if (idEscudo > 0) {
imgEscudo.setVisibility(View.VISIBLE);
imgEscudo.setImageResource(idEscudo);
} else {
imgEscudo.setVisibility(View.INVISIBLE);
}
} else {
imgEscudo.setVisibility(View.INVISIBLE);
}
TextView tvNombre = (TextView)convertView.findViewById(R.id.item_list_itinerario_nombreCofradia);
tvNombre.setText(cofradia.getNombre_corto());
TextView tvIglesia = (TextView)convertView.findViewById(R.id.item_list_itinerario_nombreIglesia);
tvIglesia.setText(cofradia.getNombre_iglesia());
TextView tvHorario = (TextView)convertView.findViewById(R.id.item_list_itinerario_nombreHorario);
tvHorario.setText(context.getString(R.string.lista_cofradias_salida) + " " + cofradia.getHoraSalida() + " -- " +
context.getString(R.string.lista_cofradias_recogida) + " " + cofradia.getHoraRecogida());
return convertView;
}
}