package com.cheatdatabase.android;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.cheatdatabase.android.pojo.Cheat;
import com.cheatdatabase.android.tools.GetDataFromWeb;
import com.cheatdatabase.android.tools.Tools;
/**
* Anzeige der Suchresultate bei einer Volltext-Suche.
*
* @author erbsland
*/
public class FulltextSearchResult extends ListActivity implements OnItemClickListener {
private CheatAdapter mAdapter;
private final int HOME = 0;
public final static String SEARCHRESULT_FILENAME = "fulltext_searchform_searchresult";
private ConnectivityManager cm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fulltextsearchresult);
setTitle(R.string.fulltext_search_results);
// Internet-Verbindungs Check
cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
ListView list = (ListView) findViewById(android.R.id.list);
mAdapter = new CheatAdapter(this);
String resultString = null;
try {
FileInputStream fIn = openFileInput(SEARCHRESULT_FILENAME);
DataInputStream in = new DataInputStream(fIn);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
// Read file with UTF-8
resultString = br.readLine();
} catch (IOException ioe) {
ioe.printStackTrace();
}
if (cm.getActiveNetworkInfo() != null) {
Cheat[] cheats = GetDataFromWeb.fulltextSearchConvertJSONStringToCheatArrayOffline(resultString);
for (int i = 0; i < cheats.length; i++) {
// GameSystem-Namen holen
cheats[i].setSystemName(Tools.getSystemNameById(this, cheats[i].getSystemId()));
mAdapter.add(cheats[i]);
}
list.setAdapter(mAdapter);
list.setOnItemClickListener(this);
} else {
Toast.makeText(this, R.string.no_internet, Toast.LENGTH_SHORT).show();
}
}
/**
* Aufbau vom Android-Men
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, HOME, 0, R.string.goto_main_screen);
return true;
}
/**
* Handles item selections
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case HOME:
goHome();
return true;
}
return false;
}
private void goHome() {
Intent explicitIntent = new Intent(FulltextSearchResult.this, CheatDatabaseAndroid.class);
startActivity(explicitIntent);
}
class CheatAdapter extends ArrayAdapter<Cheat> {
public CheatAdapter(Context context) {
super(context, 0);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = LayoutInflater.from(getContext()).inflate(R.layout.fulltextsearchitem, null);
Cheat cheat = getItem(position);
TextView tvGameName = (TextView) v.findViewById(R.id.tvGameName);
TextView tvCheatTitle = (TextView) v.findViewById(R.id.tvCheatTitle);
TextView tvCheatText = (TextView) v.findViewById(R.id.tvCheatText);
if (tvGameName != null) {
tvGameName.setText(cheat.getGameName() + " (" + cheat.getSystemName() + ")");
}
if (tvCheatTitle != null) {
String styledTitle = cheat.getCheatTitle();
tvCheatTitle.setText(Html.fromHtml(styledTitle), TextView.BufferType.SPANNABLE);
}
if (tvCheatText != null) {
String styledText = cheat.getCheatText();
styledText = styledText.replaceAll("</th><th>", " - ");
styledText = styledText.replaceAll("</td><td>", " - ");
styledText = styledText.replaceAll("</tr>", "<br>");
tvCheatText.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);
}
return v;
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Cheat cheat = mAdapter.getItem(position);
Intent explicitIntent = new Intent(FulltextSearchResult.this, CheatView.class);
explicitIntent.putExtra("cheatId", cheat.getCheatId());
// FIXME hier nocheine schnere lsung finden
// Farbcodes mit weiss ersetzen
String neutralCheatTitle = cheat.getCheatTitle();
neutralCheatTitle = neutralCheatTitle.replaceAll("<font color=\"#6699ff\">", "");
neutralCheatTitle = neutralCheatTitle.replaceAll("<font color=\"#ff6666\">", "");
neutralCheatTitle = neutralCheatTitle.replaceAll("</font>", "");
explicitIntent.putExtra("cheatTitle", neutralCheatTitle);
explicitIntent.putExtra("gameName", cheat.getGameName());
explicitIntent.putExtra("systemName", cheat.getSystemName());
explicitIntent.putExtra("systemId", cheat.getSystemId());
explicitIntent.putExtra("gameId", cheat.getGameId());
startActivity(explicitIntent);
}
}
|