package io.github.froger.instamaterial.ui.activity;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewTreeObserver;
import android.view.animation.OvershootInterpolator;
import android.widget.ImageView;
import android.widget.ToggleButton;
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
import butterknife.BindView;
import butterknife.OnCheckedChanged;
import io.github.froger.instamaterial.R;
import io.github.froger.instamaterial.Utils;
/**
* Created by Miroslaw Stanek on 21.02.15.
*/
public class PublishActivity extends BaseActivity {
public static final String ARG_TAKEN_PHOTO_URI = "arg_taken_photo_uri";
@BindView(R.id.tbFollowers)
ToggleButton tbFollowers;
@BindView(R.id.tbDirect)
ToggleButton tbDirect;
@BindView(R.id.ivPhoto)
ImageView ivPhoto;
private boolean propagatingToggleState = false;
private Uri photoUri;
private int photoSize;
public static void openWithPhotoUri(Activity openingActivity, Uri photoUri) {
Intent intent = new Intent(openingActivity, PublishActivity.class);
intent.putExtra(ARG_TAKEN_PHOTO_URI, photoUri);
openingActivity.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_publish);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_grey600_24dp);
photoSize = getResources().getDimensionPixelSize(R.dimen.publish_photo_thumbnail_size);
if (savedInstanceState == null) {
photoUri = getIntent().getParcelableExtra(ARG_TAKEN_PHOTO_URI);
} else {
photoUri = savedInstanceState.getParcelable(ARG_TAKEN_PHOTO_URI);
}
updateStatusBarColor();
ivPhoto.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
ivPhoto.getViewTreeObserver().removeOnPreDrawListener(this);
loadThumbnailPhoto();
return true;
}
});
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void updateStatusBarColor() {
if (Utils.isAndroid5()) {
getWindow().setStatusBarColor(0xff888888);
}
}
private void loadThumbnailPhoto() {
ivPhoto.setScaleX(0);
ivPhoto.setScaleY(0);
Picasso.with(this)
.load(photoUri)
.centerCrop()
.resize(photoSize, photoSize)
.into(ivPhoto, new Callback() {
@Override
public void onSuccess() {
ivPhoto.animate()
.scaleX(1.f).scaleY(1.f)
.setInterpolator(new OvershootInterpolator())
.setDuration(400)
.setStartDelay(200)
.start();
}
@Override
public void onError() {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_publish, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_publish) {
bringMainActivityToTop();
return true;
} else {
return super.onOptionsItemSelected(item);
}
}
private void bringMainActivityToTop() {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setAction(MainActivity.ACTION_SHOW_LOADING_ITEM);
startActivity(intent);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable(ARG_TAKEN_PHOTO_URI, photoUri);
}
@OnCheckedChanged(R.id.tbFollowers)
public void onFollowersCheckedChange(boolean checked) {
if (!propagatingToggleState) {
propagatingToggleState = true;
tbDirect.setChecked(!checked);
propagatingToggleState = false;
}
}
@OnCheckedChanged(R.id.tbDirect)
public void onDirectCheckedChange(boolean checked) {
if (!propagatingToggleState) {
propagatingToggleState = true;
tbFollowers.setChecked(!checked);
propagatingToggleState = false;
}
}
}