// Path: api/src/main/java/ch/liip/timeforcoffee/api/models/Station.java
// public class Station {
// 
//     private final int id;
//     private final String name;
//     private final Location location;
//     private final float distance;
//     private boolean isFavorite;
// 
//     public Station(int id, String name, float distance, Location location, boolean isFavorite) {
//         this.id = id;
//         this.name = name;
//         this.location = location;
//         this.distance = distance;
//         this.isFavorite = isFavorite;
//     }
// 
//     public int getId() {
//         return id;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public Location getLocation() {
//         return location;
//     }
// 
//     public float getDistance() {
//         return distance;
//     }
// 
//     public boolean getIsFavorite() {
//         return isFavorite;
//     }
// 
//     public void setIsFavorite(boolean isFavorite) {
//         this.isFavorite = isFavorite;
//     }
// 
//     public String getDistanceForDisplay(Location userLocation) {
// 
//         if (userLocation != null) {
//             int directDistance = getDistanceInMeter(userLocation);
// 
//             if (directDistance > 5000) {
//                 int km = (int) (Math.round((double) (directDistance) / 1000));
//                 return km + " km";
//             } else {
//                 return directDistance + " m";
//             }
//         }
//         return null;
//     }
// 
//     private int getDistanceInMeter(Location userLocation) {
//         if (userLocation != null) {
//             return (int) userLocation.distanceTo(location);
//         }
//         return 0;
//     }
// 
//     @Override
//     public boolean equals(Object object) {
//         boolean sameName = false;
// 
//         if (object instanceof Station) {
//             sameName = this.name.equals(((Station) object).getName());
//         }
// 
//         return sameName;
//     }
// }
// 
// Path: mobile/src/main/java/ch/liip/timeforcoffee/widget/FavoriteButton.java
// public class FavoriteButton extends ImageSwitcher implements View.OnClickListener, ViewSwitcher.ViewFactory
// {
//     private boolean mIsFavorite = false;
// 
//     private OnClickListener clickListener;
// 
//     private void init() {
//         setFactory(this);
//         setOnClickListener(this);
//         if(mIsFavorite) {
//             setImageResource(R.drawable.shape_star);
//         } else {
//             setImageResource(R.drawable.shape_place);
//         }
//         Animation inAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.grow);
//         Animation outAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.shrink);
//         setInAnimation(inAnimation);
//         setOutAnimation(outAnimation);
//     }
// 
//     public void setIsFavorite(boolean isFavorite)
//     {
//         this.mIsFavorite = isFavorite;
// 
//         if(mIsFavorite) {
//             setImageResource(R.drawable.shape_star);
//         } else {
//             setImageResource(R.drawable.shape_place);
//         }
//     }
// 
//     public FavoriteButton(Context context) {
//         super(context);
//         init();
//     }
// 
//     public FavoriteButton(Context context, AttributeSet attrs) {
//         super(context, attrs);
//         init();
//     }
// 
//     @Override
//     public void setOnClickListener(OnClickListener l) {
//         if (l == this) {
//             super.setOnClickListener(l);
//         } else {
//             clickListener = l;
//         }
//     }
// 
//     @Override
//     public void onClick(View v) {
// 
//         mIsFavorite = !mIsFavorite;
// 
//         if(mIsFavorite) {
//             setImageResource(R.drawable.shape_star);
//         } else {
//             setImageResource(R.drawable.shape_place);
//         }
// 
//         if (clickListener != null) {
//             clickListener.onClick(this);
//         }
//     }
// 
//     @Override
//     public View makeView() {
//         ImageView view = new ImageView(getContext());
//         view.setScaleType(ImageView.ScaleType.FIT_CENTER);
//         view.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.
//                 MATCH_PARENT,LayoutParams.MATCH_PARENT));
//         return view;
//     }
// }


import android.content.Context;
import android.location.Location;
import android.os.Build;
import androidx.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.List;
import ch.liip.timeforcoffee.R;
import ch.liip.timeforcoffee.api.models.Station;
import ch.liip.timeforcoffee.widget.FavoriteButton;
import io.nlopez.smartlocation.SmartLocation;
    }

    public Station getStation(int position) {
        return this.mStations.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public Station getItem(int position) {
        return this.mStations.get(position);
    }

    @Override
    public int getCount() {
        return this.mStations.size();
    }

    public void setStations(List<Station> stations) {
        this.mStations.clear();
        this.mStations.addAll(stations);
        notifyDataSetChanged();
    }

    private static class StationViewHolder {
        TextView nameTextView;
        TextView distanceTextView;
// Path: api/src/main/java/ch/liip/timeforcoffee/api/models/Station.java
// public class Station {
// 
//     private final int id;
//     private final String name;
//     private final Location location;
//     private final float distance;
//     private boolean isFavorite;
// 
//     public Station(int id, String name, float distance, Location location, boolean isFavorite) {
//         this.id = id;
//         this.name = name;
//         this.location = location;
//         this.distance = distance;
//         this.isFavorite = isFavorite;
//     }
// 
//     public int getId() {
//         return id;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public Location getLocation() {
//         return location;
//     }
// 
//     public float getDistance() {
//         return distance;
//     }
// 
//     public boolean getIsFavorite() {
//         return isFavorite;
//     }
// 
//     public void setIsFavorite(boolean isFavorite) {
//         this.isFavorite = isFavorite;
//     }
// 
//     public String getDistanceForDisplay(Location userLocation) {
// 
//         if (userLocation != null) {
//             int directDistance = getDistanceInMeter(userLocation);
// 
//             if (directDistance > 5000) {
//                 int km = (int) (Math.round((double) (directDistance) / 1000));
//                 return km + " km";
//             } else {
//                 return directDistance + " m";
//             }
//         }
//         return null;
//     }
// 
//     private int getDistanceInMeter(Location userLocation) {
//         if (userLocation != null) {
//             return (int) userLocation.distanceTo(location);
//         }
//         return 0;
//     }
// 
//     @Override
//     public boolean equals(Object object) {
//         boolean sameName = false;
// 
//         if (object instanceof Station) {
//             sameName = this.name.equals(((Station) object).getName());
//         }
// 
//         return sameName;
//     }
// }
// 
// Path: mobile/src/main/java/ch/liip/timeforcoffee/widget/FavoriteButton.java
// public class FavoriteButton extends ImageSwitcher implements View.OnClickListener, ViewSwitcher.ViewFactory
// {
//     private boolean mIsFavorite = false;
// 
//     private OnClickListener clickListener;
// 
//     private void init() {
//         setFactory(this);
//         setOnClickListener(this);
//         if(mIsFavorite) {
//             setImageResource(R.drawable.shape_star);
//         } else {
//             setImageResource(R.drawable.shape_place);
//         }
//         Animation inAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.grow);
//         Animation outAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.shrink);
//         setInAnimation(inAnimation);
//         setOutAnimation(outAnimation);
//     }
// 
//     public void setIsFavorite(boolean isFavorite)
//     {
//         this.mIsFavorite = isFavorite;
// 
//         if(mIsFavorite) {
//             setImageResource(R.drawable.shape_star);
//         } else {
//             setImageResource(R.drawable.shape_place);
//         }
//     }
// 
//     public FavoriteButton(Context context) {
//         super(context);
//         init();
//     }
// 
//     public FavoriteButton(Context context, AttributeSet attrs) {
//         super(context, attrs);
//         init();
//     }
// 
//     @Override
//     public void setOnClickListener(OnClickListener l) {
//         if (l == this) {
//             super.setOnClickListener(l);
//         } else {
//             clickListener = l;
//         }
//     }
// 
//     @Override
//     public void onClick(View v) {
// 
//         mIsFavorite = !mIsFavorite;
// 
//         if(mIsFavorite) {
//             setImageResource(R.drawable.shape_star);
//         } else {
//             setImageResource(R.drawable.shape_place);
//         }
// 
//         if (clickListener != null) {
//             clickListener.onClick(this);
//         }
//     }
// 
//     @Override
//     public View makeView() {
//         ImageView view = new ImageView(getContext());
//         view.setScaleType(ImageView.ScaleType.FIT_CENTER);
//         view.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.
//                 MATCH_PARENT,LayoutParams.MATCH_PARENT));
//         return view;
//     }
// }


// Path: mobile/src/main/java/ch/liip/timeforcoffee/adapter/StationListAdapter.java
import android.content.Context;
import android.location.Location;
import android.os.Build;
import androidx.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.List;
import ch.liip.timeforcoffee.R;
import ch.liip.timeforcoffee.api.models.Station;
import ch.liip.timeforcoffee.widget.FavoriteButton;
import io.nlopez.smartlocation.SmartLocation;

    }

    public Station getStation(int position) {
        return this.mStations.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public Station getItem(int position) {
        return this.mStations.get(position);
    }

    @Override
    public int getCount() {
        return this.mStations.size();
    }

    public void setStations(List<Station> stations) {
        this.mStations.clear();
        this.mStations.addAll(stations);
        notifyDataSetChanged();
    }

    private static class StationViewHolder {
        TextView nameTextView;
        TextView distanceTextView;
        FavoriteButton favoriteButton;