package br.com.dgimenes.nasapic.control.activity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
import br.com.dgimenes.nasapic.R;
import br.com.dgimenes.nasapic.control.ErrorMessage;
import br.com.dgimenes.nasapic.model.SpacePic;
import br.com.dgimenes.nasapic.service.DefaultPicasso;
import br.com.dgimenes.nasapic.service.EventsLogger;
import br.com.dgimenes.nasapic.service.WallpaperChangeNotification;
import br.com.dgimenes.nasapic.service.interactor.OnFinishListener;
import br.com.dgimenes.nasapic.service.interactor.SpacePicInteractor;
import br.com.dgimenes.nasapic.util.DateUtils;
import br.com.dgimenes.nasapic.view.LoadingDialog;
import butterknife.Bind;
import butterknife.ButterKnife;
public class DetailActivity extends TrackedActivity {
public static final String SPACE_PIC_PARAM = "SPACE_PIC_PARAM";
@Bind(R.id.image_view)
ImageView imageView;
@Bind(R.id.progress_bar)
ProgressBar progressBar;
@Bind(R.id.explanation)
public TextView explanationTextView;
@Bind(R.id.open_explanation_button)
Button openExplanationButton;
@Bind(R.id.main_toolbar)
Toolbar mainToolbar;
@Bind(R.id.set_wallpaper_button)
Button setWallpaperButton;
private SpacePic spacePic;
private LoadingDialog loadingDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
if (getActionBar() != null) {
getActionBar().setDisplayHomeAsUpEnabled(true);
}
ButterKnife.bind(this);
spacePic = getIntent().getExtras().getParcelable(DetailActivity.SPACE_PIC_PARAM);
setupUI();
loadImageAsync();
}
private void setupUI() {
this.setTitle(spacePic.getTitle());
setSupportActionBar(mainToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
loadingDialog = new LoadingDialog(this);
explanationTextView.setText(
DateUtils.friendlyDateString(this, spacePic.getOriginallyPublishedAt()) + " - \"" +
spacePic.getDescription() + "\" " + getResources().getString(R.string.text_origin));
openExplanationButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (explanationTextView.getVisibility() == View.GONE) {
showExplanation();
} else {
hideExplanation();
}
}
});
setWallpaperButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadingDialog.show();
WallpaperChangeNotification.createChangingNotification(DetailActivity.this);
new SpacePicInteractor(DetailActivity.this).setWallpaper(
spacePic.getHdImageUrl(), new OnFinishListener<Void>() {
@Override
public void onSuccess(Void result) {
loadingDialog.dismiss();
WallpaperChangeNotification
.dismissChangingNotification(DetailActivity.this);
EventsLogger.logEvent("Wallpaper set manually");
String msg = getResources().getString(R.string.success_setting_wallpaper);
Toast.makeText(DetailActivity.this, msg, Toast.LENGTH_LONG).show();
}
@Override
public void onError(Throwable throwable) {
loadingDialog.dismiss();
WallpaperChangeNotification
.dismissChangingNotification(DetailActivity.this);
ErrorMessage error = ErrorMessage.SETTING_WALLPAPER;
EventsLogger.logError(error, throwable);
String errorMessage = getResources().getString(error.userMessageRes);
Toast.makeText(DetailActivity.this, errorMessage, Toast.LENGTH_LONG).show();
}
});
}
});
}
private void loadImageAsync() {
Picasso picasso = DefaultPicasso.get(this, null);
picasso.load(spacePic.getHdImageUrl()).into(imageView, new Callback() {
@Override
public void onSuccess() {
progressBar.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
}
@Override
public void onError() {
ErrorMessage error = ErrorMessage.DOWNLOADING_IMAGE;
EventsLogger.logError(error, null);
String errorMessage = getResources().getString(error.userMessageRes);
Toast.makeText(DetailActivity.this, errorMessage, Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
private void hideExplanation() {
explanationTextView.setVisibility(View.GONE);
openExplanationButton.setCompoundDrawablesWithIntrinsicBounds(
0, 0, R.drawable.ic_info_outline_white_36dp, 0);
}
private void showExplanation() {
explanationTextView.setVisibility(View.VISIBLE);
openExplanationButton.setCompoundDrawablesWithIntrinsicBounds(
0, 0, R.drawable.ic_highlight_off_white_36dp, 0);
}
}