248 lines
6.1 KiB
Java
248 lines
6.1 KiB
Java
package fishrungames.bashgid;
|
|
|
|
|
|
import android.annotation.SuppressLint;
|
|
import android.content.Context;
|
|
import android.os.AsyncTask;
|
|
import android.os.Bundle;
|
|
import android.support.v4.app.Fragment;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
|
|
import android.widget.BaseAdapter;
|
|
|
|
import android.widget.AdapterView;
|
|
import android.widget.AdapterView.OnItemClickListener;
|
|
import android.widget.ImageView;
|
|
import android.widget.ListView;
|
|
import android.widget.ProgressBar;
|
|
import android.widget.TextView;
|
|
|
|
|
|
import fishrungames.bashgid.core.DatabaseGetJournalTask;
|
|
import fishrungames.bashgid.core.JournalManager;
|
|
import fishrungames.bashgid.core.JournalManager.JournalSemiFullData;
|
|
import fishrungames.networkutils.ImageManager;
|
|
|
|
public class JournalFragment extends Fragment
|
|
{
|
|
|
|
JournalSemiFullData journal = null;
|
|
String journalName = "";
|
|
|
|
ListAdapter listAdapter;
|
|
ProgressBar progressBar;
|
|
TextView headerTextView;
|
|
|
|
DatabaseGetJournalTask databaseGetJournalTask = null;
|
|
|
|
public JournalFragment()
|
|
{
|
|
}
|
|
|
|
public JournalFragment(String journalName)
|
|
{
|
|
this.journalName = journalName;
|
|
RestoreJournal();
|
|
}
|
|
|
|
public JournalFragment(JournalSemiFullData journal)
|
|
{
|
|
this.journalName = journal.name;
|
|
this.journal = journal;
|
|
}
|
|
|
|
@Override
|
|
public void onSaveInstanceState(final Bundle outState) {
|
|
super.onSaveInstanceState(outState);
|
|
outState.putString("journalName", journalName);
|
|
}
|
|
|
|
|
|
@SuppressLint("InflateParams") @Override
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
|
|
|
View rootView = inflater.inflate(R.layout.fragment_journal_page, container, false);
|
|
|
|
progressBar = (ProgressBar)rootView.findViewById(R.id.progressBar);
|
|
|
|
progressBar.setVisibility(View.VISIBLE);
|
|
|
|
|
|
ListView listView = (ListView) rootView.findViewById(R.id.listView);
|
|
|
|
View header = inflater.inflate(R.layout.journal_page_header, null);
|
|
|
|
headerTextView = (TextView)header.findViewById(R.id.headerTextView);
|
|
|
|
listView.addHeaderView(header);
|
|
|
|
|
|
listAdapter = new ListAdapter(getActivity());
|
|
|
|
|
|
listView.setAdapter(listAdapter);
|
|
|
|
listView.setOnItemClickListener(new OnItemClickListener(){
|
|
|
|
@Override
|
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
|
|
{
|
|
MainActivity.getInstance().SetLastJournalName(journalName);
|
|
|
|
if (position == 0)
|
|
{
|
|
if (journal.geoCategory == 1)
|
|
{
|
|
MainActivity.getInstance().OpenMapScreen(journalName, MainActivity.TAG_BACK_TO_JOURNALFRAGMENT);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
MainActivity.getInstance().OpenArticleScreen(journal.articleArr.get(position-1).name, MainActivity.TAG_BACK_TO_JOURNALFRAGMENT);
|
|
}
|
|
}
|
|
});
|
|
|
|
if (savedInstanceState != null) {
|
|
journalName = savedInstanceState.getString("journalName");
|
|
RestoreJournal();
|
|
}
|
|
else if (journalName.length() > 0 && journal == null)
|
|
{
|
|
RestoreJournal();
|
|
}
|
|
|
|
return rootView;
|
|
}
|
|
|
|
@Override
|
|
public void onDestroyView ()
|
|
{
|
|
|
|
CancelTaskIfRunning();
|
|
|
|
super.onDestroyView();
|
|
}
|
|
|
|
|
|
void RestoreJournal()
|
|
{
|
|
CancelTaskIfRunning();
|
|
|
|
journal = JournalManager.CreateEmptyJournalSemiFull();
|
|
|
|
databaseGetJournalTask = new DatabaseGetJournalTask();
|
|
|
|
Bundle bundle = new Bundle();
|
|
|
|
bundle.putString("journalName", journalName);
|
|
|
|
databaseGetJournalTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, bundle);
|
|
}
|
|
|
|
public void SetJournal(JournalSemiFullData journal)
|
|
{
|
|
databaseGetJournalTask = null;
|
|
|
|
progressBar.setVisibility(View.GONE);
|
|
|
|
|
|
this.journal = journal;
|
|
|
|
if (journal.geoCategory == 1)
|
|
{
|
|
headerTextView.setText(R.string.journal_open_map);
|
|
|
|
}
|
|
else
|
|
{
|
|
headerTextView.setText(R.string.category_is_loaded);
|
|
}
|
|
|
|
listAdapter.notifyDataSetChanged();
|
|
|
|
}
|
|
|
|
public void CancelTaskIfRunning()
|
|
{
|
|
if (databaseGetJournalTask != null)
|
|
{
|
|
databaseGetJournalTask.cancel(false);
|
|
databaseGetJournalTask = null;
|
|
}
|
|
}
|
|
|
|
public void RefreshAdapter()
|
|
{
|
|
if (listAdapter != null)
|
|
{
|
|
listAdapter.notifyDataSetChanged();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public class ListAdapter extends BaseAdapter {
|
|
private Context mContext;
|
|
|
|
public ListAdapter(Context c) {
|
|
mContext = c;
|
|
}
|
|
|
|
public int getCount() {
|
|
return journal.articleArr.size();
|
|
}
|
|
|
|
public Object getItem(int position) {
|
|
return null;
|
|
}
|
|
|
|
public long getItemId(int position) {
|
|
return 0;
|
|
}
|
|
|
|
// create a new ImageView for each item referenced by the Adapter
|
|
@SuppressLint("InflateParams")
|
|
public View getView(int position, View convertView, ViewGroup parent) {
|
|
|
|
|
|
View view;
|
|
if (convertView == null) { // if it's not recycled, initialize some attributes
|
|
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
|
view = inflater.inflate(R.layout.journal_element, null);
|
|
|
|
|
|
} else {
|
|
view = convertView;
|
|
}
|
|
|
|
TextView titleTextView = (TextView)view.findViewById(R.id.titleTextView);
|
|
|
|
titleTextView.setText(journal.articleArr.get(position).title);
|
|
|
|
TextView dateTextView = (TextView)view.findViewById(R.id.dateTextView);
|
|
|
|
dateTextView.setText(journal.articleArr.get(position).dateTime.toString());
|
|
|
|
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
|
|
|
|
if (journal.articleArr.get(position).previewImageUrl != null)
|
|
{
|
|
//ImageManager.getInstance().ApplyImageToImageView(imageView, journal.articleArr.get(position).previewImageUrl);
|
|
ImageManager.getInstance().ApplySmallImageToImageView(imageView, journal.articleArr.get(position).previewImageUrl);
|
|
|
|
}
|
|
else
|
|
{
|
|
imageView.setImageResource(R.drawable.transparent);
|
|
}
|
|
return view;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
} |