diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b42201a..d6c8aff 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,6 +12,7 @@
+
.
+ *
+ * @copyright Copyright (c) 2016 Vinzenz Rosenkanz
+ *
+ * @author Vinzenz Rosenkranz
+ */
+
+package de.apps4ics.mountainnavigation;
+
+public class RequestCodes {
+ public final static int SELECT_POI_PHOTO = 1;
+ public final static int SELECT_ENDANGERED_PHOTO = 2;
+ public final static int TAKE_ENDANGERED_IMAGE = 3;
+}
diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/EndangeredListAdapter.java b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/EndangeredListAdapter.java
index 362103b..a245a24 100644
--- a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/EndangeredListAdapter.java
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/EndangeredListAdapter.java
@@ -32,14 +32,16 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
-import android.widget.Button;
+import android.widget.ImageButton;
import android.widget.ImageView;
+import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.List;
import de.apps4ics.mountainnavigation.MainActivity;
import de.apps4ics.mountainnavigation.R;
+import de.apps4ics.mountainnavigation.RequestCodes;
import de.apps4ics.mountainnavigation.handlers.PoiHandler;
import de.apps4ics.mountainnavigation.pois.Endangered;
@@ -58,11 +60,7 @@
this.maxHeight = -1;
}
- public void setImageAtPosition(Uri data) {
- byte[] rawImage = PoiHandler.createImage(data, context);
- //Scale image to maximal res of max_db_image_* dimen to store it in DB
- Drawable drawable = MainActivity.convertByteArrayToDrawable(rawImage);
- Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
+ private void scaleAndSetImage(Bitmap bitmap, byte[] rawImage) {
int height = bitmap.getHeight();
int width = bitmap.getWidth();
boolean scaleToWidth = width > height;
@@ -78,7 +76,20 @@
currentHolder.image.setImageDrawable(MainActivity.convertByteArrayToDrawable(rawImage, maxHeight));
currentHolder.image.setVisibility(View.VISIBLE);
- currentHolder.addImage.setVisibility(View.GONE);
+ currentHolder.imageButtonLayout.setVisibility(View.GONE);
+ }
+
+ public void setImageAtPosition(Bitmap bitmap) {
+ byte[] rawImage = MainActivity.convertDrawableToByteArray(new BitmapDrawable(MainActivity.getRes(), bitmap));
+ scaleAndSetImage(bitmap, rawImage);
+ }
+
+ public void setImageAtPosition(Uri data) {
+ byte[] rawImage = PoiHandler.createImage(data, context);
+ //Scale image to maximal res of max_db_image_* dimen to store it in DB
+ Drawable drawable = MainActivity.convertByteArrayToDrawable(rawImage);
+ Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
+ scaleAndSetImage(bitmap, rawImage);
}
@Override
@@ -90,7 +101,9 @@
convertView = inflater.inflate(R.layout.endangered_dialog_item, null);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.endangered_title);
- holder.addImage = (Button) convertView.findViewById(R.id.endangered_add_image);
+ holder.imageButtonLayout = (LinearLayout) convertView.findViewById(R.id.endangered_add_image_layout);
+ holder.addImage = (ImageButton) convertView.findViewById(R.id.endangered_add_image);
+ holder.takeImage = (ImageButton) convertView.findViewById(R.id.endangered_take_image);
holder.image = (ImageView) convertView.findViewById(R.id.endangered_image);
convertView.setTag(holder);
} else {
@@ -104,20 +117,29 @@
imagePosition = position;
currentHolder = holder;
Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
- context.startActivityForResult(galleryIntent, PoiHandler.SELECT_ENDANGERED_PHOTO);
+ context.startActivityForResult(galleryIntent, RequestCodes.SELECT_ENDANGERED_PHOTO);
+ }
+ });
+ holder.takeImage.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ imagePosition = position;
+ currentHolder = holder;
+ Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
+ context.startActivityForResult(cameraIntent, RequestCodes.TAKE_ENDANGERED_IMAGE);
}
});
holder.title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if(holder.addImage.isShown()) {
- holder.addImage.setVisibility(View.GONE);
+ if(holder.imageButtonLayout.isShown()) {
+ holder.imageButtonLayout.setVisibility(View.GONE);
} else if(holder.image.isShown()) {
holder.image.setVisibility(View.GONE);
} else { //if there is no image, show add button, image otherwise
if(holder.image.getDrawable() == null) {
- holder.addImage.setVisibility(View.VISIBLE);
+ holder.imageButtonLayout.setVisibility(View.VISIBLE);
} else {
holder.image.setVisibility(View.VISIBLE);
}
@@ -133,7 +155,9 @@
protected static class ViewHolder {
protected TextView title;
- protected Button addImage;
+ protected LinearLayout imageButtonLayout;
+ protected ImageButton addImage;
+ protected ImageButton takeImage;
protected ImageView image;
}
}
diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ShowEndangeredListAdapter.java b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ShowEndangeredListAdapter.java
index d934fc3..c69de27 100644
--- a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ShowEndangeredListAdapter.java
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ShowEndangeredListAdapter.java
@@ -25,7 +25,7 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.Button;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -50,7 +50,8 @@
convertView = inflater.inflate(R.layout.endangered_dialog_item, null);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.endangered_title);
- holder.addImage = (Button) convertView.findViewById(R.id.endangered_add_image);
+ holder.addImage = (ImageButton) convertView.findViewById(R.id.endangered_add_image);
+ holder.takeImage = (ImageButton) convertView.findViewById(R.id.endangered_take_image);
holder.image = (ImageView) convertView.findViewById(R.id.endangered_image);
convertView.setTag(holder);
} else {
@@ -59,6 +60,7 @@
if(maxHeight == -1) maxHeight = holder.image.getMaxHeight();
holder.title.setText(items.get(position).getName());
holder.addImage.setVisibility(View.GONE);
+ holder.takeImage.setVisibility(View.GONE);
holder.image.setVisibility(View.VISIBLE);
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
@@ -79,7 +81,8 @@
});
byte[] b = getItem(position).getImage();
- holder.image.setImageDrawable(MainActivity.convertByteArrayToDrawable(b, maxHeight));
+ if(b == null) holder.image.setImageDrawable(null);
+ else holder.image.setImageDrawable(MainActivity.convertByteArrayToDrawable(b, maxHeight));
return convertView;
}
diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java
index 4f021e4..5d7092d 100644
--- a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java
@@ -76,6 +76,7 @@
import de.apps4ics.mountainnavigation.MainActivity;
import de.apps4ics.mountainnavigation.ModernInfoWindow;
import de.apps4ics.mountainnavigation.R;
+import de.apps4ics.mountainnavigation.RequestCodes;
import de.apps4ics.mountainnavigation.overlays.ImageDialogItemizedIconOverlay;
import de.apps4ics.mountainnavigation.overlays.MapDialogItemizedIconOverlay;
import de.apps4ics.mountainnavigation.pois.AddBiotaDialog;
@@ -111,8 +112,6 @@
private Vibrator v;
private static final long VIB_LENGTH = 50;
- public final static int SELECT_POI_PHOTO = 1;
- public final static int SELECT_ENDANGERED_PHOTO = 2;
private static String[] fountainSizes;
private static String[] pathOptions;
@@ -602,7 +601,7 @@
@Override
public void onClick(DialogInterface dialog, int which) {
Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
- activity.startActivityForResult(galleryIntent, SELECT_POI_PHOTO);
+ activity.startActivityForResult(galleryIntent, RequestCodes.SELECT_POI_PHOTO);
}
})
.setNegativeButton(R.string.cancel_button, new DialogInterface.OnClickListener() {
diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBiotaDialog.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBiotaDialog.java
index 9cad93c..becaf61 100644
--- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBiotaDialog.java
+++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/AddBiotaDialog.java
@@ -25,6 +25,7 @@
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
+import android.graphics.Bitmap;
import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
@@ -145,6 +146,10 @@
listAdapter.setImageAtPosition(data);
}
+ public static void addImage(Bitmap bitmap) {
+ listAdapter.setImageAtPosition(bitmap);
+ }
+
private void addElement(Endangered e) {
listItems.add(e);
addElementButton.setEnabled(false);
diff --git a/app/src/main/res/layout/endangered_dialog_item.xml b/app/src/main/res/layout/endangered_dialog_item.xml
index c2fa9b7..59852d0 100644
--- a/app/src/main/res/layout/endangered_dialog_item.xml
+++ b/app/src/main/res/layout/endangered_dialog_item.xml
@@ -42,10 +42,20 @@
android:maxHeight="200dp"
android:id="@+id/endangered_image"
android:visibility="gone"/>
-
+ android:orientation="horizontal"
+ android:id="@+id/endangered_add_image_layout">
+
+
+
\ No newline at end of file