diff --git a/app/src/main/java/org/communiquons/android/comunic/client/ui/fragments/ConversationFragment.java b/app/src/main/java/org/communiquons/android/comunic/client/ui/fragments/ConversationFragment.java index 52eb61f..3d910ed 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/ui/fragments/ConversationFragment.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/ui/fragments/ConversationFragment.java @@ -5,7 +5,6 @@ import android.app.Fragment; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; -import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.NonNull; @@ -32,16 +31,14 @@ import org.communiquons.android.comunic.client.data.models.ConversationsInfo; import org.communiquons.android.comunic.client.data.models.UserInfo; import org.communiquons.android.comunic.client.data.runnables.ConversationRefreshRunnable; import org.communiquons.android.comunic.client.data.utils.AccountUtils; -import org.communiquons.android.comunic.client.data.utils.FilesUtils; import org.communiquons.android.comunic.client.ui.activities.MainActivity; import org.communiquons.android.comunic.client.ui.adapters.ConversationMessageAdapter; import org.communiquons.android.comunic.client.ui.listeners.OnScrollChangeDetectListener; import org.communiquons.android.comunic.client.ui.utils.BitmapUtils; +import org.communiquons.android.comunic.client.ui.utils.UiUtils; import org.communiquons.android.comunic.client.ui.views.ScrollListView; -import java.io.File; import java.io.FileNotFoundException; -import java.io.InputStream; import java.util.ArrayList; import static android.app.Activity.RESULT_OK; @@ -501,35 +498,15 @@ public class ConversationFragment extends Fragment if(resultCode == RESULT_OK){ try { - Uri imageUri = data.getData(); - InputStream imageStream = getActivity().getContentResolver() - .openInputStream(imageUri); - - //Create a temporary file - File tempFile = FilesUtils.getTempFile(getActivity()); - - if(tempFile == null){ - Log.e(TAG, "Could not create temporary file to store conversation image!"); - return; - } - - //Intend to transfer file - if(!FilesUtils.InputStreamToFile(imageStream, tempFile)){ - Log.e(TAG, "Could not transfer the content of the image to the file !"); - return; - } - - //Load bitmap - new_message_bitmap = BitmapUtils.openResized(tempFile, 1198, 1198); + //Get new message bitmap + new_message_bitmap = BitmapUtils.IntentResultToBitmap(getActivity(), data); + //Check for errors if(new_message_bitmap == null){ - Log.e(TAG, "Could not open temporary file!"); + remove_picked_image(); return; } - //Schedule file deletion - tempFile.deleteOnExit(); - //Append image pick_image_button.setImageBitmap(new_message_bitmap); @@ -553,8 +530,8 @@ public class ConversationFragment extends Fragment //Reset image button pick_image_button.setImageBitmap(null); - pick_image_button.setImageDrawable(getActivity().getResources(). - getDrawable(android.R.drawable.ic_menu_gallery, getActivity().getTheme())); + pick_image_button.setImageDrawable(UiUtils.getDrawable(getActivity(), + android.R.drawable.ic_menu_gallery)); } /** diff --git a/app/src/main/java/org/communiquons/android/comunic/client/ui/utils/BitmapUtils.java b/app/src/main/java/org/communiquons/android/comunic/client/ui/utils/BitmapUtils.java index 3313454..226c7e3 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/ui/utils/BitmapUtils.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/ui/utils/BitmapUtils.java @@ -1,12 +1,21 @@ package org.communiquons.android.comunic.client.ui.utils; +import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.net.Uri; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.util.Base64; +import android.util.Log; + +import org.communiquons.android.comunic.client.data.utils.FilesUtils; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileNotFoundException; +import java.io.InputStream; /** * Bitmap utilities @@ -17,6 +26,11 @@ import java.io.File; public class BitmapUtils { + /** + * Debug tag + */ + private static final String TAG = "BitmapUtils"; + /** * Convert a Bitmap into a base64-encoded string * @@ -112,4 +126,48 @@ public class BitmapUtils { return inSampleSize; } + + /** + * Turn an intent data into Bitmap object + * + * @param context The context of the activity + * @param data Intent data + * @return Generated bitmap + * @throws FileNotFoundException In case of failure during the process + */ + @Nullable + public static Bitmap IntentResultToBitmap(Context context, Intent data) + throws FileNotFoundException { + + Uri imageUri = data.getData(); + InputStream imageStream = context.getContentResolver() + .openInputStream(imageUri); + + //Create a temporary file + File tempFile = FilesUtils.getTempFile(context); + + if(tempFile == null){ + Log.e(TAG, "Could not create temporary file to store intent image!"); + return null; + } + + //Intend to transfer file + if(!FilesUtils.InputStreamToFile(imageStream, tempFile)){ + Log.e(TAG, "Could not transfer the content of the image to the file !"); + return null; + } + + //Load bitmap + Bitmap bitmap = BitmapUtils.openResized(tempFile, 1198, 1198); + + if(bitmap == null){ + Log.e(TAG, "Could not open temporary file!"); + return null; + } + + //Schedule file deletion + tempFile.deleteOnExit(); + + return bitmap; + } }