/*
* Copyright 2008-2013, ETH Zürich, Samuel Welten, Michael Kuhn, Tobias Langner,
* Sandro Affentranger, Lukas Bossard, Michael Grob, Rahul Jain,
* Dominic Langenegger, Sonia Mayor Alonso, Roger Odermatt, Tobias Schlueter,
* Yannick Stucki, Sebastian Wendland, Samuel Zehnder, Samuel Zihlmann,
* Samuel Zweifel
*
* This file is part of Jukefox.
*
* Jukefox 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 any later version. Jukefox 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
* Jukefox. If not, see <http://www.gnu.org/licenses/>.
*/
package ch.ethz.dcg.pancho3.tablet.widget;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import ch.ethz.dcg.jukefox.model.collection.BaseAlbum;
import ch.ethz.dcg.jukefox.model.collection.MapAlbum;
import ch.ethz.dcg.pancho3.R;
public class AlbumImageView extends FrameLayout implements OnClickListener, OnLongClickListener {
private ImageView image;
private View shade;
private TextView albumText;
private TextView artistText;
private int index;
private int id;
private OnItemClickListener onItemClickListener;
private OnItemLongClickListener onItemLongClickListener;
private long timestamp = 0;
public AlbumImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
image = (ImageView) findViewById(R.id.image);
shade = findViewById(R.id.shade);
albumText = (TextView) findViewById(R.id.albumText);
artistText = (TextView) findViewById(R.id.artistText);
setOnClickListener(this);
setOnLongClickListener(this);
}
public void bind(MapAlbum album, int index) {
id = album.getId();
albumText.setText(album.getTitle());
artistText.setText(album.getFirstArtist().getTitle());
this.index = index;
shade.setBackgroundColor(getDarkerColor(album.getColor()));
image.setBackgroundColor(album.getColor());
image.setImageDrawable(null);
if (timestamp != 0) {
Log.i("TEST", "Lived for ms " + (System.currentTimeMillis() - timestamp));
}
timestamp = System.currentTimeMillis();
}
public void setListeners(OnItemClickListener onItemClickListener,
OnItemLongClickListener onItemLongClickListener) {
this.onItemClickListener = onItemClickListener;
this.onItemLongClickListener = onItemLongClickListener;
}
@Override
public boolean onLongClick(View v) {
if (onItemLongClickListener != null) {
onItemLongClickListener.onItemLongClick(null, v, index, id);
return true;
}
return false;
}
@Override
public void onClick(View v) {
Log.i("TEST", "CLICK");
if (onItemClickListener != null) {
onItemClickListener.onItemClick(null, v, index, id);
}
}
private int getDarkerColor(int color) {
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
if (hsv[1] < 0.4f) {
color = Color.parseColor("#C8515151");
} else {
color = Color.HSVToColor(200, hsv);
}
return color;
}
public void setBitmap(Bitmap bitmap, BaseAlbum album) {
if (album.getId() == id) {
image.setImageBitmap(bitmap);
}
}
public boolean matchAlbum(BaseAlbum album) {
return album.getId() == id;
}
}