package com.wangdaye.mysplash.photo.view.holder;
import android.os.Build;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.wangdaye.mysplash.Mysplash;
import com.wangdaye.mysplash.R;
import com.wangdaye.mysplash.common.data.entity.unsplash.Photo;
import com.wangdaye.mysplash.common._basic.MysplashActivity;
import com.wangdaye.mysplash.common.ui.adapter.PhotoInfoAdapter;
import com.wangdaye.mysplash.common.ui.widget.CircleImageView;
import com.wangdaye.mysplash.common.ui.widget.PhotoDownloadView;
import com.wangdaye.mysplash.common.ui.widget.SwipeBackCoordinatorLayout;
import com.wangdaye.mysplash.common.utils.AnimUtils;
import com.wangdaye.mysplash.common.utils.DisplayUtils;
import com.wangdaye.mysplash.common.utils.ShareUtils;
import com.wangdaye.mysplash.common.utils.helper.DatabaseHelper;
import com.wangdaye.mysplash.common.utils.helper.DownloadHelper;
import com.wangdaye.mysplash.common.utils.helper.ImageHelper;
import com.wangdaye.mysplash.common.utils.helper.IntentHelper;
import com.wangdaye.mysplash.common.utils.manager.ThemeManager;
import com.wangdaye.mysplash.photo.view.activity.PhotoActivity;
import com.wangdaye.mysplash.user.view.activity.UserActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* Base holder.
*
* This view holder is used to show the basic part of the photo information.
*
* */
public class BaseHolder extends PhotoInfoAdapter.ViewHolder
implements View.OnClickListener, Toolbar.OnMenuItemClickListener {
private PhotoActivity activity;
@BindView(R.id.item_photo_base_displayContainer)
RelativeLayout displayContainer;
@BindView(R.id.item_photo_base_toolbar)
Toolbar toolbar;
@BindView(R.id.item_photo_base_title)
TextView title;
@BindView(R.id.item_photo_base_subtitle)
TextView subtitle;
@BindView(R.id.item_photo_base_avatar)
CircleImageView avatar;
@BindView(R.id.item_photo_base_btnBar)
PhotoDownloadView downloadView;
private Photo photo;
public static final int TYPE_BASE = 2;
public BaseHolder(PhotoActivity a, View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
this.activity = a;
toolbar.setTitle("");
if (activity.isBrowsable()) {
ThemeManager.setNavigationIcon(
toolbar, R.drawable.ic_toolbar_home_light, R.drawable.ic_toolbar_home_dark);
} else {
ThemeManager.setNavigationIcon(
toolbar, R.drawable.ic_toolbar_back_light, R.drawable.ic_toolbar_back_dark);
}
ThemeManager.inflateMenu(
toolbar, R.menu.activity_photo_toolbar_light, R.menu.activity_photo_toolbar_dark);
toolbar.setNavigationOnClickListener(this);
toolbar.setOnMenuItemClickListener(this);
DisplayUtils.setTypeface(activity, subtitle);
}
@Override
protected void onBindView(MysplashActivity a, Photo photo) {
title.setText(a.getString(R.string.by) + " " + photo.user.name);
subtitle.setText(a.getString(R.string.on) + " " + photo.created_at.split("T")[0]);
ImageHelper.loadAvatar(a, avatar, photo.user, null);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
avatar.setTransitionName(photo.user.username + "-1");
}
if (DatabaseHelper.getInstance(a).readDownloadingEntityCount(photo.id) > 0) {
downloadView.setProgressState();
((PhotoActivity) a).startCheckDownloadProgressThread();
} else {
downloadView.setButtonState();
}
this.photo = photo;
}
@Override
protected void onRecycled() {
ImageHelper.releaseImageView(avatar);
}
public void showInitAnim() {
displayContainer.setVisibility(View.GONE);
downloadView.setVisibility(View.GONE);
AnimUtils.animInitShow(displayContainer, 200);
AnimUtils.animInitShow(downloadView, 350);
}
public PhotoDownloadView getDownloadView() {
return downloadView;
}
// interface.
// on click listener.
@Override
public void onClick(View view) {
switch (view.getId()) {
case -1:
if (activity.isBrowsable()) {
activity.visitParentActivity();
}
activity.finishActivity(SwipeBackCoordinatorLayout.DOWN_DIR);
break;
}
}
@OnClick(R.id.item_photo_base_avatar) void clickAvatar() {
IntentHelper.startUserActivity(
Mysplash.getInstance().getTopActivity(),
avatar,
photo.user,
UserActivity.PAGE_PHOTO);
}
@OnClick(R.id.container_download_downloadBtn) void download() {
activity.readyToDownload(DownloadHelper.DOWNLOAD_TYPE);
}
@OnClick(R.id.container_download_shareBtn) void share() {
activity.readyToDownload(DownloadHelper.SHARE_TYPE);
}
@OnClick(R.id.container_download_wallBtn) void setWallpaper() {
activity.readyToDownload(DownloadHelper.WALLPAPER_TYPE);
}
// on menu item click listener.
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_share:
ShareUtils.sharePhoto(photo);
break;
case R.id.action_menu:
activity.showPopup(activity, toolbar, null, 0);
break;
}
return true;
}
}