/* * This file is part of RateBeer For Android. RateBeer for Android is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either * version 3 of the License, or (at your option) any later version. RateBeer for Android is distributed in the hope that * it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU * General Public License along with RateBeer for Android. If not, see <http://www.gnu.org/licenses/>. */ package com.ratebeer.android.gui.fragments; import java.text.DateFormat; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; <<<<<<< HEAD ======= import android.widget.ProgressBar; >>>>>>> 9cb2b20cee7ae90e7a5ea61c0ebff4e0c86a6dd6 import android.widget.TextView; import com.googlecode.androidannotations.annotations.AfterViews; import com.googlecode.androidannotations.annotations.EFragment; import com.googlecode.androidannotations.annotations.InstanceState; import com.googlecode.androidannotations.annotations.OptionsItem; import com.googlecode.androidannotations.annotations.OptionsMenu; import com.googlecode.androidannotations.annotations.ViewById; import com.ratebeer.android.R; import com.ratebeer.android.api.ApiMethod; import com.ratebeer.android.api.CommandFailureResult; import com.ratebeer.android.api.CommandSuccessResult; <<<<<<< HEAD ======= import com.ratebeer.android.api.command.GetBeerDetailsCommand; import com.ratebeer.android.api.command.GetBeerDetailsCommand.BeerDetails; >>>>>>> 9cb2b20cee7ae90e7a5ea61c0ebff4e0c86a6dd6 import com.ratebeer.android.api.command.GetUserTicksCommand; import com.ratebeer.android.api.command.GetUserTicksCommand.UserTick; import com.ratebeer.android.gui.components.RateBeerFragment; import com.ratebeer.android.gui.components.helpers.ArrayAdapter; <<<<<<< HEAD @EFragment(R.layout.fragment_userratings) ======= @EFragment(R.layout.fragment_userticks) >>>>>>> 9cb2b20cee7ae90e7a5ea61c0ebff4e0c86a6dd6 @OptionsMenu(R.menu.refresh) public class UserTicksFragment extends RateBeerFragment { @InstanceState protected ArrayList<UserTick> ticks = null; @ViewById(R.id.empty) protected TextView emptyText; @ViewById(R.id.ticks) protected ListView ticksView; private DateFormat displayDateFormat; public UserTicksFragment() { } @AfterViews public void init() { displayDateFormat = android.text.format.DateFormat.getDateFormat(getActivity()); ticksView.setOnItemClickListener(onItemSelected); if (ticks != null) { publishResults(ticks); } else { refreshTicks(); } } @OptionsItem(R.id.menu_refresh) protected void refreshTicks() { execute(new GetUserTicksCommand(getUser())); } private OnItemClickListener onItemSelected = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { <<<<<<< HEAD // TODO: When ticks work correctly, enable these two lines //UserTick item = ((UserTicksAdapter) ticksView.getAdapter()).getItem(position); //load(BeerViewFragment_.builder().beerId(item.beerdId).beerName(item.beerName).build()); ======= UserTick item = ((UserTicksAdapter) ticksView.getAdapter()).getItem(position); load(BeerViewFragment_.builder().beerId(item.beerdId).beerName(item.beerName).build()); >>>>>>> 9cb2b20cee7ae90e7a5ea61c0ebff4e0c86a6dd6 } }; @Override public void onTaskSuccessResult(CommandSuccessResult result) { if (result.getCommand().getMethod() == ApiMethod.GetUserTicks) { publishResults(((GetUserTicksCommand) result.getCommand()).getUserTicks()); <<<<<<< HEAD ======= } else if (result.getCommand().getMethod() == ApiMethod.GetBeerDetails) { publishTickNames((GetBeerDetailsCommand) result.getCommand()); >>>>>>> 9cb2b20cee7ae90e7a5ea61c0ebff4e0c86a6dd6 } } private void publishResults(ArrayList<UserTick> result) { this.ticks = result; if (ticks == null) { ticksView.setVisibility(View.GONE); emptyText.setVisibility(View.GONE); return; } if (ticksView.getAdapter() == null) { ticksView.setAdapter(new UserTicksAdapter(getActivity(), result)); } else { ((UserTicksAdapter) ticksView.getAdapter()).replace(result); } ticksView.setVisibility(result.size() == 0 ? View.GONE : View.VISIBLE); emptyText.setVisibility(result.size() == 0 ? View.VISIBLE : View.GONE); } <<<<<<< HEAD ======= private void publishTickNames(GetBeerDetailsCommand command) { if (ticksView.getAdapter() == null) { // Huh? This should really never happen... but let's be defensive about it and silently ignore it return; } ((UserTicksAdapter) ticksView.getAdapter()).updateNames(command.getDetails()); } >>>>>>> 9cb2b20cee7ae90e7a5ea61c0ebff4e0c86a6dd6 @Override public void onTaskFailureResult(CommandFailureResult result) { publishException(emptyText, result.getException()); } private class UserTicksAdapter extends ArrayAdapter<UserTick> { public UserTicksAdapter(Context context, List<UserTick> objects) { super(context, objects); } <<<<<<< HEAD ======= public void updateNames(BeerDetails details) { // Find the beer for which we received the names and refresh the adapter views for (int i = 0; i < getCount(); i++) { UserTick tick = getItem(i); if (tick.beerdId == details.beerId) { tick.beerName = details.beerName; tick.brewerName = details.brewerName; tick.isLoadingNames = false; notifyDataSetChanged(); break; } } } >>>>>>> 9cb2b20cee7ae90e7a5ea61c0ebff4e0c86a6dd6 @Override public View getView(int position, View convertView, ViewGroup parent) { // Get the right view, using a ViewHolder ViewHolder holder; if (convertView == null || convertView.getTag() == null) { convertView = getActivity().getLayoutInflater().inflate(R.layout.list_item_tick, null); holder = new ViewHolder(); <<<<<<< HEAD holder.beer = (TextView) convertView.findViewById(R.id.beer); holder.brewer = (TextView) convertView.findViewById(R.id.brewer); holder.liked = (TextView) convertView.findViewById(R.id.score); ======= holder.loading = (ProgressBar) convertView.findViewById(R.id.loading); holder.beer = (TextView) convertView.findViewById(R.id.beer); holder.brewer = (TextView) convertView.findViewById(R.id.brewer); holder.liked = (TextView) convertView.findViewById(R.id.liked); >>>>>>> 9cb2b20cee7ae90e7a5ea61c0ebff4e0c86a6dd6 holder.date = (TextView) convertView.findViewById(R.id.date); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } // Bind the data UserTick item = getItem(position); <<<<<<< HEAD // TODO: When tick loading works correctly, enable these two lines //holder.beer.setText(item.beerName); //holder.brewer.setText(item.brewerName); holder.liked.setText(Integer.toString(item.liked)); holder.date.setText(displayDateFormat.format(item.timeEntered)); ======= if (item.beerName != null && item.brewerName != null) { holder.loading.setVisibility(View.GONE); holder.beer.setVisibility(View.VISIBLE); holder.beer.setText(item.beerName); holder.brewer.setVisibility(View.VISIBLE); holder.brewer.setText(item.brewerName); holder.liked.setVisibility(View.VISIBLE); holder.liked.setText(Integer.toString(item.liked)); holder.date.setVisibility(View.VISIBLE); holder.date.setText(displayDateFormat.format(item.timeEntered)); } else { holder.loading.setVisibility(View.VISIBLE); holder.beer.setVisibility(View.GONE); holder.brewer.setVisibility(View.GONE); holder.liked.setVisibility(View.GONE); holder.date.setVisibility(View.GONE); if (!item.isLoadingNames) { execute(new GetBeerDetailsCommand(getUser(), item.beerdId)); } } >>>>>>> 9cb2b20cee7ae90e7a5ea61c0ebff4e0c86a6dd6 return convertView; } } protected static class ViewHolder { <<<<<<< HEAD ======= ProgressBar loading; >>>>>>> 9cb2b20cee7ae90e7a5ea61c0ebff4e0c86a6dd6 TextView beer, brewer, liked, date; } }