/*
* 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 my.home.lehome.view;
import android.app.Activity;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.davemorrissey.labs.subscaleview.ImageSource;
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import java.io.File;
import java.lang.ref.WeakReference;
import my.home.lehome.R;
import my.home.lehome.asynctask.SaveCaptureAsyncTask;
import my.home.lehome.util.CommonUtils;
/**
* Created by legendmohe on 15/5/10.
*/
public class PhotoViewerDialog extends Dialog {
public static final String TAG = "PhotoViewerDialog";
private String mImageUrl = "";
private ProgressBar mProgressBar;
private final DisplayImageOptions options;
private final WeakReference<Activity> mContextActivity;
private Intent mExtraIntent;
private String mExtraTitle;
public PhotoViewerDialog(Activity context) {
super(context, R.style.PhotoViewerAcvitity);
LayoutInflater inflater = context.getLayoutInflater();
View contentView = inflater.inflate(R.layout.dialog_photo_viewer, null);
setContentView(contentView);
mContextActivity = new WeakReference<>(context);
mProgressBar = (ProgressBar) contentView.findViewById(R.id.dialog_image_progressBar);
options = new DisplayImageOptions.Builder()
.resetViewBeforeLoading(true)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.build();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (mContextActivity.get() != null) {
mContextActivity.get().getMenuInflater().inflate(R.menu.menu_photo_viewer, menu);
}
if (mExtraIntent != null) {
menu.getItem(1).setTitle(mExtraTitle);
menu.getItem(1).setVisible(true);
}
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_save_photo && mContextActivity.get() != null) {
if (TextUtils.isEmpty(mImageUrl)) {
return super.onMenuItemSelected(featureId, item);
}
String fileName = CommonUtils.getDateFormatString("yyyy-MM-dd_hh-mm-ss") + ".jpg";
new SaveCaptureAsyncTask(mContextActivity.get().getApplicationContext()).execute(mImageUrl, fileName);
return true;
} else if (id == R.id.action_photo_extra_intent && mContextActivity.get() != null) {
try {
mContextActivity.get().startActivity(mExtraIntent);
} catch (ActivityNotFoundException exception) {
Toast.makeText(getContext(), R.string.toast_no_such_app, Toast.LENGTH_SHORT).show();
}
}
return super.onMenuItemSelected(featureId, item);
}
// @Override
// public boolean onOptionsItemSelected(MenuItem item) {
// int id = item.getItemId();
// if (id == R.id.action_save_photo && mContextActivity.get() != null) {
// if (TextUtils.isEmpty(mImageUrl) || TextUtils.isEmpty(mImageName)) {
// return super.onOptionsItemSelected(item);
// }
// new SaveCaptureAsyncTask(mContextActivity.get().getApplicationContext()).execute(mImageUrl, mImageName);
// return true;
// }
//
// return super.onOptionsItemSelected(item);
// }
public void setTarget(String imageURL, Intent extraIntent, String extraTitle) {
if (extraIntent != null) {
mExtraIntent = extraIntent;
mExtraTitle = extraTitle;
}
File imageFile = ImageLoader.getInstance().getDiskCache().get(imageURL);
if (imageFile != null) {
mImageUrl = imageFile.getAbsolutePath();
}
findViewById(R.id.scale_imageView).setVisibility(View.INVISIBLE);
if (imageFile != null) {
SubsamplingScaleImageView imageView = (SubsamplingScaleImageView) findViewById(R.id.scale_imageView);
imageView.setImage(ImageSource.uri(mImageUrl));
imageView.setVisibility(View.VISIBLE);
} else {
ImageLoader.getInstance().loadImage(imageURL, null, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
mProgressBar.setProgress(0);
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason) {
Log.w(TAG, failReason.toString());
mProgressBar.setVisibility(View.GONE);
findViewById(R.id.scale_imageView).setVisibility(View.VISIBLE);
}
@Override
public void onLoadingComplete(String imageUri,
View view, Bitmap loadedImage) {
mProgressBar.setVisibility(View.GONE);
SubsamplingScaleImageView imageView = (SubsamplingScaleImageView) findViewById(R.id.scale_imageView);
imageView.setImage(ImageSource.bitmap(loadedImage));
imageView.setVisibility(View.VISIBLE);
File imageFile = ImageLoader.getInstance().getDiskCache().get(imageUri);
if (imageFile != null) {
mImageUrl = imageFile.getAbsolutePath();
}
}
}, new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, View view, int current, int total) {
mProgressBar.setProgress(Math.round(100.0f * current / total));
}
});
}
}
@Override
protected void onStop() {
super.onStop();
}
}