package com.aptoide.amethyst.viewholders;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.ShapeDrawable;
import android.support.v7.widget.PopupMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;
import com.aptoide.amethyst.Aptoide;
import com.aptoide.amethyst.R;
import com.aptoide.amethyst.analytics.Analytics;
import com.aptoide.amethyst.database.AptoideDatabase;
import com.aptoide.amethyst.models.EnumStoreTheme;
import com.aptoide.models.displayables.SearchApk;
import com.aptoide.amethyst.utils.AptoideUtils;
import com.aptoide.amethyst.utils.Logger;
import com.aptoide.dataprovider.webservices.models.Constants;
import com.aptoide.models.displayables.Displayable;
import com.bumptech.glide.Glide;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import com.aptoide.amethyst.AppViewActivity;
import com.aptoide.amethyst.StoresActivity;
import com.aptoide.amethyst.ui.MoreVersionsActivity;
/**
* Created by rmateus on 02/06/15.
*/
public class SearchAppViewHolder extends BaseViewHolder {
private final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault());
public TextView name;
public ImageView icon;
public TextView downloads;
public RatingBar ratingBar;
public ImageView overflow;
public TextView time;
public TextView store;
public ImageView icTrusted;
public View bottomView;
public SearchAppViewHolder(View itemView, int viewType) {
super(itemView, viewType);
}
@Override
public void populateView(Displayable displayable) {
final SearchApk appItem = (SearchApk) displayable;
overflow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final PopupMenu popup = new PopupMenu(view.getContext(), view);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.menu_search_item, popup.getMenu());
MenuItem menuItem = popup.getMenu().findItem(R.id.versions);
menuItem.setVisible(appItem.hasOtherVersions);
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
Intent intent = new Intent(itemView.getContext(), MoreVersionsActivity.class);
intent.putExtra(Constants.PACKAGENAME_KEY, appItem.packageName);
intent.putExtra(Constants.EVENT_LABEL, appItem.name);
itemView.getContext().startActivity(intent);
return true;
}
});
menuItem = popup.getMenu().findItem(R.id.go_to_store);
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
Intent intent = new Intent(itemView.getContext(), StoresActivity.class);
intent.putExtra(Constants.STORENAME_KEY, appItem.repo);
intent.putExtra(Constants.STOREAVATAR_KEY, appItem.icon);
intent.putExtra(Constants.THEME_KEY, appItem.repo_theme);
intent.putExtra(Constants.DOWNLOAD_FROM_KEY, "store");
boolean subscribed = new AptoideDatabase(Aptoide.getDb()).existsStore(appItem.repo);
intent.putExtra(Constants.STORE_SUBSCRIBED_KEY, subscribed);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
itemView.getContext().startActivity(intent);
return true;
}
});
popup.show();
}
});
name.setText(appItem.name);
String downloadNumber = AptoideUtils.StringUtils.withSuffix(appItem.downloads)+" "+bottomView.getContext().getString(R.string.downloads);
downloads.setText(downloadNumber);
if (appItem.stars.floatValue() <= 0) {
ratingBar.setVisibility(View.GONE);
} else {
ratingBar.setVisibility(View.VISIBLE);
ratingBar.setRating(appItem.stars.floatValue());
}
Date modified = null;
try {
modified = dateFormatter.parse(appItem.timestamp);
} catch (ParseException e) {
Logger.printException(e);
} finally {
if (modified != null) {
String timeSinceUpdate= AptoideUtils.DateTimeUtils.getInstance(itemView.getContext()).getTimeDiffAll(itemView.getContext(), modified.getTime());
if (timeSinceUpdate != null && !timeSinceUpdate.equals("")) {
time.setText(timeSinceUpdate);
}
}
}
final EnumStoreTheme theme = EnumStoreTheme.get(appItem.repo_theme);
Drawable background = bottomView.getBackground();
if (background instanceof ShapeDrawable) {
((ShapeDrawable)background).getPaint().setColor(itemView.getContext().getResources().getColor(theme.getStoreHeader()));
} else if (background instanceof GradientDrawable) {
((GradientDrawable)background).setColor(itemView.getContext().getResources().getColor(theme.getStoreHeader()));
}
background = store.getBackground();
if (background instanceof ShapeDrawable) {
((ShapeDrawable)background).getPaint().setColor(itemView.getContext().getResources().getColor(theme.getStoreHeader()));
} else if (background instanceof GradientDrawable) {
((GradientDrawable)background).setColor(itemView.getContext().getResources().getColor(theme.getStoreHeader()));
}
store.setText(appItem.repo);
Glide.with(itemView.getContext()).load(appItem.iconHd != null ? appItem.iconHd : appItem.icon).into(icon);
if (appItem.malrank == 2) {
icTrusted.setVisibility(View.VISIBLE);
} else {
icTrusted.setVisibility(View.GONE);
}
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), AppViewActivity.class);
intent.putExtra(Constants.APPNAME_KEY, appItem.name);
intent.putExtra(Constants.SEARCH_FROM_KEY, true);
intent.putExtra(Constants.MD5SUM_KEY, appItem.md5sum);
intent.putExtra(Constants.PACKAGENAME_KEY, appItem.packageName);
intent.putExtra(Constants.STORENAME_KEY, appItem.repo);
Analytics.Search.searchPosition(appItem.position, appItem.fromSubscribedStore, appItem.repo);
v.getContext().startActivity(intent);
}
});
}
@Override
protected void bindViews(View itemView) {
name = (TextView )itemView.findViewById(R.id.name);
icon = (ImageView )itemView.findViewById(R.id.icon);
downloads = (TextView )itemView.findViewById(R.id.downloads);
ratingBar = (RatingBar )itemView.findViewById(R.id.ratingbar);
overflow = (ImageView )itemView.findViewById(R.id.overflow);
time = (TextView )itemView.findViewById(R.id.search_time);
store = (TextView )itemView.findViewById(R.id.search_store);
icTrusted = (ImageView )itemView.findViewById(R.id.ic_trusted_search);
bottomView = (View )itemView.findViewById(R.id.bottom_view);
}
}