/*
*
* * 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;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.view.SubMenu;
import com.ignaciogs.semanasanta.adapters.ItinerarioListAdapter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class ItinerarioListActivity extends SherlockActivity {
private ListView listView;
private List<Cofradia> partialList = new ArrayList<Cofradia>();
private static final int GROUP_ICONS_DAYS = 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.itinerario_list_activity);
partialList.addAll(DataManager.getInstance().getCofradiasList());
ItinerarioListAdapter adapter = new ItinerarioListAdapter(this, partialList);
listView = (ListView) findViewById(R.id.itinerario_list_lvDatos);
listView.setOnItemClickListener(click_lista);
listView.setAdapter(adapter);
getSupportActionBar().setTitle(getString(R.string.lista_cofradias_title));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu subMenu = menu.addSubMenu("");
subMenu.add(GROUP_ICONS_DAYS, 0, 0, getString(R.string.lista_cofradias_todas));
for (int i = 0; i < DataManager.getInstance().getDaysOfWeeksList().size(); i++) {
String dia = DataManager.getInstance().getDaysOfWeeksList().get(i);
String desc = dia.substring(0, 3);
if (dia.indexOf(getString(R.string.text_madruga)) > -1) { //Indicamos que es madrugada
desc += " (" + getString(R.string.text_madruga) + ")";
}
MenuItem menuItem = subMenu.add(GROUP_ICONS_DAYS, i + 1, 0, desc);
}
MenuItem subMenu1Item = subMenu.getItem();
subMenu1Item.setIcon(R.drawable.action_bar_itinerario);
subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return super.onCreateOptionsMenu(menu);
}
private void FilterByDayOfWeek(String dayOfWeek) {
if (dayOfWeek.equals(getString(R.string.lista_cofradias_todas))) { //son todas las cofradias
partialList.clear();
partialList.addAll(DataManager.getInstance().getCofradiasList());
} else {
partialList.clear();
Boolean isPrimerDomingo = true;
for (Cofradia cofradia : DataManager.getInstance().getCofradiasList()) {
if (dayOfWeek.equals(DataManager.getInstance().getNameDayFromDate(cofradia.getFecha_salida(), cofradia.getHoraSalida(), ItinerarioListActivity.this, isPrimerDomingo))) {
partialList.add(cofradia);
}
}
}
listView.setAdapter(new ItinerarioListAdapter(this, partialList));
}
private OnItemClickListener click_lista = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent i = new Intent(ItinerarioListActivity.this, FichaCofradia.class);
Bundle params = new Bundle();
params.putSerializable("cofradia", (Serializable) partialList.get(arg2));
i.putExtra("datos", params);
startActivity(i);
}
};
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
boolean result = false;
if (item.getGroupId() == GROUP_ICONS_DAYS) {
if (item.getItemId() == 0) {
FilterByDayOfWeek(getString(R.string.lista_cofradias_todas));
} else {
FilterByDayOfWeek(DataManager.getInstance().getDaysOfWeeksList().get(item.getItemId() - 1));
}
result = true;
} else if (item.getItemId() == android.R.id.home) {
finish();
result = true;
}
return result;
}
}