From 80f9d1655642ada28195845184048fce0f4310cc Mon Sep 17 00:00:00 2001 From: moises Date: Fri, 2 Dec 2016 20:43:28 -0300 Subject: [PATCH 1/3] Spanish translations added. --- multipleimageselect/multipleimageselect.iml | 5 ++++- .../src/main/res/values-es/strings.xml | 15 +++++++++++++++ .../src/main/res/values-fr/strings.xml | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 multipleimageselect/src/main/res/values-es/strings.xml diff --git a/multipleimageselect/multipleimageselect.iml b/multipleimageselect/multipleimageselect.iml index 7839fe1..b2a192e 100644 --- a/multipleimageselect/multipleimageselect.iml +++ b/multipleimageselect/multipleimageselect.iml @@ -33,12 +33,14 @@ + + @@ -82,7 +84,6 @@ - @@ -102,11 +103,13 @@ + + diff --git a/multipleimageselect/src/main/res/values-es/strings.xml b/multipleimageselect/src/main/res/values-es/strings.xml new file mode 100644 index 0000000..ce7d993 --- /dev/null +++ b/multipleimageselect/src/main/res/values-es/strings.xml @@ -0,0 +1,15 @@ + + + Agregar + Selecciona un álbum + Multiple Image Select + Toca para seleccionar + Puedes seleccionar un máximo de %d imagenes + Permiso denegado + + La App requiere de permisos de almacenamiento para ver las imagenes. Pincha configuraciones para otorgarle permisos + La App requiere permisos de almacenamiento para ver imagenes + Aceptar + Configuraciones + seleccionadas + \ No newline at end of file diff --git a/multipleimageselect/src/main/res/values-fr/strings.xml b/multipleimageselect/src/main/res/values-fr/strings.xml index dde28a9..8335f82 100644 --- a/multipleimageselect/src/main/res/values-fr/strings.xml +++ b/multipleimageselect/src/main/res/values-fr/strings.xml @@ -12,4 +12,5 @@ Permission refusée! Veuillez permettre l\'accès aux photos, médias et fichiers sur votre appareil pour afficher les albums Veuillez permettre l\'accès aux photos, médias et fichiers sur votre appareil pour afficher les images + \ No newline at end of file From 9ec86cd1e4564ab33543cfb10c58014fbd517f54 Mon Sep 17 00:00:00 2001 From: moises Date: Sat, 3 Dec 2016 10:10:53 -0300 Subject: [PATCH 2/3] Feature select all images implemented, also the add button was moved to a floating action Button to save space in the action bar. --- .../activities/ImageSelectActivity.java | 38 +++++++++++-- .../main/res/layout/activity_image_select.xml | 53 +++++++++++++------ .../res/menu/menu_contextual_action_bar.xml | 5 +- .../src/main/res/values-es/strings.xml | 3 +- .../src/main/res/values/strings.xml | 3 ++ 5 files changed, 78 insertions(+), 24 deletions(-) diff --git a/multipleimageselect/src/main/java/com/darsh/multipleimageselect/activities/ImageSelectActivity.java b/multipleimageselect/src/main/java/com/darsh/multipleimageselect/activities/ImageSelectActivity.java index 4f46aaf..881c9fb 100644 --- a/multipleimageselect/src/main/java/com/darsh/multipleimageselect/activities/ImageSelectActivity.java +++ b/multipleimageselect/src/main/java/com/darsh/multipleimageselect/activities/ImageSelectActivity.java @@ -10,6 +10,7 @@ import android.os.Message; import android.os.Process; import android.provider.MediaStore; +import android.support.design.widget.FloatingActionButton; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; import android.util.DisplayMetrics; @@ -43,6 +44,8 @@ public class ImageSelectActivity extends HelperActivity { private TextView errorDisplay; + private FloatingActionButton doneButton; + private ProgressBar progressBar; private GridView gridView; private CustomImageSelectAdapter adapter; @@ -56,6 +59,7 @@ public class ImageSelectActivity extends HelperActivity { private Handler handler; private Thread thread; + private final String[] projection = new String[]{ MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.DATA }; @Override @@ -85,6 +89,14 @@ protected void onCreate(Bundle savedInstanceState) { errorDisplay = (TextView) findViewById(R.id.text_view_error); errorDisplay.setVisibility(View.INVISIBLE); + doneButton = (FloatingActionButton) findViewById(R.id.done_button); + doneButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + sendIntent(); + } + }); + progressBar = (ProgressBar) findViewById(R.id.progress_bar_image_select); gridView = (GridView) findViewById(R.id.grid_view_image_select); gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @@ -92,11 +104,14 @@ protected void onCreate(Bundle savedInstanceState) { public void onItemClick(AdapterView parent, View view, int position, long id) { if (actionMode == null) { actionMode = ImageSelectActivity.this.startActionMode(callback); + doneButton.setVisibility(View.VISIBLE); + } toggleSelection(position); actionMode.setTitle(countSelected + " " + getString(R.string.selected)); if (countSelected == 0) { + doneButton.setVisibility(View.GONE); actionMode.finish(); } } @@ -253,9 +268,12 @@ public boolean onPrepareActionMode(ActionMode mode, Menu menu) { } @Override - public boolean onActionItemClicked(ActionMode mode, MenuItem item) {int i = item.getItemId(); - if (i == R.id.menu_item_add_image) { - sendIntent(); + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + + int i = item.getItemId(); + + if(i == R.id.menu_select_all_images) { + selectAll(); return true; } return false; @@ -289,7 +307,21 @@ private void toggleSelection(int position) { adapter.notifyDataSetChanged(); } + + private void selectAll() { + + for (int i = 0, l = images.size(); i < l; i++) { + if(!images.get(i).isSelected) { + images.get(i).isSelected = true; + countSelected++; + } + } + adapter.notifyDataSetChanged(); + } + + private void deselectAll() { + for (int i = 0, l = images.size(); i < l; i++) { images.get(i).isSelected = false; } diff --git a/multipleimageselect/src/main/res/layout/activity_image_select.xml b/multipleimageselect/src/main/res/layout/activity_image_select.xml index 528370f..7d7e90d 100644 --- a/multipleimageselect/src/main/res/layout/activity_image_select.xml +++ b/multipleimageselect/src/main/res/layout/activity_image_select.xml @@ -1,19 +1,38 @@ - - + android:layout_height="match_parent" + android:orientation="vertical"> + + + + + + android:text="@string/error_null_cursor" + android:layout_gravity="center_vertical|center"/> - - \ No newline at end of file + + + \ No newline at end of file diff --git a/multipleimageselect/src/main/res/menu/menu_contextual_action_bar.xml b/multipleimageselect/src/main/res/menu/menu_contextual_action_bar.xml index e902ce3..911486d 100644 --- a/multipleimageselect/src/main/res/menu/menu_contextual_action_bar.xml +++ b/multipleimageselect/src/main/res/menu/menu_contextual_action_bar.xml @@ -3,9 +3,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> - \ No newline at end of file diff --git a/multipleimageselect/src/main/res/values-es/strings.xml b/multipleimageselect/src/main/res/values-es/strings.xml index ce7d993..aad246c 100644 --- a/multipleimageselect/src/main/res/values-es/strings.xml +++ b/multipleimageselect/src/main/res/values-es/strings.xml @@ -11,5 +11,6 @@ La App requiere permisos de almacenamiento para ver imagenes Aceptar Configuraciones - seleccionadas + Seleccionadas + Todas \ No newline at end of file diff --git a/multipleimageselect/src/main/res/values/strings.xml b/multipleimageselect/src/main/res/values/strings.xml index 0b1859f..31b0b3f 100644 --- a/multipleimageselect/src/main/res/values/strings.xml +++ b/multipleimageselect/src/main/res/values/strings.xml @@ -8,6 +8,8 @@ Oops, something went wrong! + Select all + App requires permission to Storage to view images. App requires permission to Storage to view images. Tap Settings and go to Permissions to grant permission. @@ -15,4 +17,5 @@ Settings package + From 15036a0da20d893fc01708f61445a4e4059ae0ca Mon Sep 17 00:00:00 2001 From: moises Date: Sat, 3 Dec 2016 10:30:22 -0300 Subject: [PATCH 3/3] When the user selected all the photographs, the library allowed to exceed the limit. --- .../activities/ImageSelectActivity.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/multipleimageselect/src/main/java/com/darsh/multipleimageselect/activities/ImageSelectActivity.java b/multipleimageselect/src/main/java/com/darsh/multipleimageselect/activities/ImageSelectActivity.java index 881c9fb..789a766 100644 --- a/multipleimageselect/src/main/java/com/darsh/multipleimageselect/activities/ImageSelectActivity.java +++ b/multipleimageselect/src/main/java/com/darsh/multipleimageselect/activities/ImageSelectActivity.java @@ -84,6 +84,9 @@ protected void onCreate(Bundle savedInstanceState) { if (intent == null) { finish(); } + + actionMode = ImageSelectActivity.this.startActionMode(callback); + album = intent.getStringExtra(Constants.INTENT_EXTRA_ALBUM); errorDisplay = (TextView) findViewById(R.id.text_view_error); @@ -102,17 +105,13 @@ public void onClick(View v) { gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - if (actionMode == null) { - actionMode = ImageSelectActivity.this.startActionMode(callback); - doneButton.setVisibility(View.VISIBLE); - - } toggleSelection(position); - actionMode.setTitle(countSelected + " " + getString(R.string.selected)); - - if (countSelected == 0) { + if (countSelected > 0) { + doneButton.setVisibility(View.VISIBLE); + actionMode.setTitle(countSelected + " " + getString(R.string.selected)); + } else { doneButton.setVisibility(View.GONE); - actionMode.finish(); + actionMode.setTitle(getString(R.string.image_view)); } } }); @@ -311,11 +310,16 @@ private void toggleSelection(int position) { private void selectAll() { for (int i = 0, l = images.size(); i < l; i++) { - if(!images.get(i).isSelected) { + if(!images.get(i).isSelected && countSelected < Constants.limit) { images.get(i).isSelected = true; countSelected++; } } + + if(countSelected > 0) { + doneButton.setVisibility(View.VISIBLE); + } + adapter.notifyDataSetChanged(); }