1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
GuiaTV/src/org/r3pek/guiatv/GuiaTV.java

166 lines
5.1 KiB

package org.r3pek.guiatv;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnCancelListener;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class GuiaTV extends ListActivity {
private final int DIALOG_PROGRESS = 0;
private final int DIALOG_ABOUT = 1;
private final int MENU_REFRESH = 0;
private final int MENU_ABOUT = 1;
private ChannelList allChannels;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getListView().setTextFilterEnabled(true);
update();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
TextView tv = (TextView) v.findViewById(R.id.tvNome);
int pos = allChannels.namePos(tv.getText().toString());
Intent i = new Intent(getApplicationContext(), ShowDay.class);
i.putExtra("org.r3pek.guiatv.date", System.currentTimeMillis());
i.putExtra("org.r3pek.guiatv.channel", allChannels.getChannels().get(pos).getSigla());
i.putExtra("org.r3pek.guiatv.channelname", allChannels.getChannels().get(pos).getName());
startActivity(i);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_REFRESH, 0, "Actualizar").setIcon(android.R.drawable.ic_menu_rotate);
menu.add(0, MENU_ABOUT, 0, "Acerca").setIcon(android.R.drawable.ic_menu_info_details);;
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_REFRESH:
update();
return true;
case MENU_ABOUT:
showDialog(DIALOG_ABOUT);
return true;
}
return false;
}
private void update() {
Runnable r = new Runnable() {
@Override
public void run() {
allChannels = new ChannelList();
ArrayList<HashMap<String, String>> channels = new ArrayList<HashMap<String, String>>();
if (allChannels.getChannels() != null && allChannels.getChannelCount() > 0) {
for (Channel c : allChannels.getChannels()) {
HashMap<String, String> channel = new HashMap<String, String>();
channel.put("nome", c.getName().trim());
channels.add(channel);
}
} else {
// Server Error
HashMap<String, String> msg = new HashMap<String, String>();
msg.put("nome", "Erro");
channels.add(msg);
}
/* Create the Adapter to show the information */
final SimpleAdapter adap = new ChannelsSimpleAdapter(getApplicationContext(), channels, R.layout.main_row,
new String[] {"nome"},
new int[] {R.id.tvNome},
allChannels
);
runOnUiThread(new Runnable() {
@Override
public void run() {
setListAdapter(adap);
dismissDialog(DIALOG_PROGRESS);
}
});
}
};
showDialog(DIALOG_PROGRESS);
Thread t = new Thread(r);
t.start();
}
@Override
public Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_PROGRESS: {
ProgressDialog d = new ProgressDialog(this);
d.setCancelable(true);
d.setMessage("Aguarde...");
d.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
HashMap<String, String> msg = new HashMap<String, String>();
ArrayList<HashMap<String, String>> a_msg = new ArrayList<HashMap<String, String>>();
a_msg.add(msg);
msg.put("nome", "Cancelado");
final SimpleAdapter adap = new SimpleAdapter(getApplicationContext(), a_msg, R.layout.main_row,
new String[] {"msg"},
new int[] {R.id.tvNome}
);
runOnUiThread(new Runnable() {
@Override
public void run() {
setListAdapter(adap);
}
});
}
});
return d;
}
case DIALOG_ABOUT: {
Dialog d;
LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.about, (ViewGroup)findViewById(R.id.aboutRoot));
ImageView image = (ImageView)layout.findViewById(R.id.ImageView01);
image.setImageResource(R.drawable.icon);
Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
d = builder.create();
return d;
}
default: return null;
}
}
}