/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.torrenttunes.android.ui;
import android.app.Activity;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.drawable.AnimationDrawable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.media.MediaDescriptionCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.torrenttunes.android.R;
import com.torrenttunes.android.utils.LollipopUtils;
public class MediaItemViewHolder {
static final int STATE_INVALID = -1;
static final int STATE_NONE = 0;
static final int STATE_PLAYABLE = 1;
static final int STATE_PAUSED = 2;
static final int STATE_PLAYING = 3;
private static ColorStateList sColorStatePlaying;
private static ColorStateList sColorStateNotPlaying;
ImageView mImageView;
TextView mTitleView;
TextView mDescriptionView;
static View setupView(Activity activity, View convertView, ViewGroup parent,
MediaDescriptionCompat description, int state) {
if (sColorStateNotPlaying == null || sColorStatePlaying == null) {
initializeColorStateLists(activity);
}
MediaItemViewHolder holder;
Integer cachedState = STATE_INVALID;
if (convertView == null) {
convertView = LayoutInflater.from(activity)
.inflate(R.layout.media_list_item, parent, false);
holder = new MediaItemViewHolder();
holder.mImageView = (ImageView) convertView.findViewById(R.id.play_eq);
holder.mTitleView = (TextView) convertView.findViewById(R.id.title);
holder.mDescriptionView = (TextView) convertView.findViewById(R.id.description);
convertView.setTag(holder);
} else {
holder = (MediaItemViewHolder) convertView.getTag();
cachedState = (Integer) convertView.getTag(R.id.tag_mediaitem_state_cache);
}
holder.mTitleView.setText(description.getTitle());
holder.mDescriptionView.setText(description.getSubtitle());
// If the state of convertView is different, we need to adapt the view to the
// new state.
if (cachedState == null || cachedState != state) {
switch (state) {
case STATE_PLAYABLE:
holder.mImageView.setImageDrawable(
ActivityCompat.getDrawable(activity, R.drawable.ic_play_arrow_black_36dp));
LollipopUtils.setImageTintList(holder.mImageView, sColorStateNotPlaying);
holder.mImageView.setVisibility(View.VISIBLE);
break;
case STATE_PLAYING:
AnimationDrawable animation = (AnimationDrawable)
ActivityCompat.getDrawable(activity, R.drawable.ic_equalizer_white_36dp);
holder.mImageView.setImageDrawable(animation);
LollipopUtils.setImageTintList(holder.mImageView, sColorStatePlaying);
holder.mImageView.setVisibility(View.VISIBLE);
animation.start();
break;
case STATE_PAUSED:
holder.mImageView.setImageDrawable(
ActivityCompat.getDrawable(activity,R.drawable.ic_equalizer1_white_36dp));
LollipopUtils.setImageTintList(holder.mImageView, sColorStateNotPlaying);
holder.mImageView.setVisibility(View.VISIBLE);
break;
default:
holder.mImageView.setVisibility(View.GONE);
}
convertView.setTag(R.id.tag_mediaitem_state_cache, state);
}
return convertView;
}
static private void initializeColorStateLists(Context ctx) {
sColorStateNotPlaying = ColorStateList.valueOf(ctx.getResources().getColor(
R.color.media_item_icon_not_playing));
sColorStatePlaying = ColorStateList.valueOf(ctx.getResources().getColor(
R.color.media_item_icon_playing));
}
}