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/java/com/darsh/multipleimageselect/activities/ImageSelectActivity.java b/multipleimageselect/src/main/java/com/darsh/multipleimageselect/activities/ImageSelectActivity.java index 4f46aaf..789a766 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 @@ -80,24 +84,34 @@ 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); 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() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - if (actionMode == null) { - actionMode = ImageSelectActivity.this.startActionMode(callback); - } toggleSelection(position); - actionMode.setTitle(countSelected + " " + getString(R.string.selected)); - - if (countSelected == 0) { - actionMode.finish(); + if (countSelected > 0) { + doneButton.setVisibility(View.VISIBLE); + actionMode.setTitle(countSelected + " " + getString(R.string.selected)); + } else { + doneButton.setVisibility(View.GONE); + actionMode.setTitle(getString(R.string.image_view)); } } }); @@ -253,9 +267,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 +306,26 @@ 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 && countSelected < Constants.limit) { + images.get(i).isSelected = true; + countSelected++; + } + } + + if(countSelected > 0) { + doneButton.setVisibility(View.VISIBLE); + } + + 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 new file mode 100644 index 0000000..aad246c --- /dev/null +++ b/multipleimageselect/src/main/res/values-es/strings.xml @@ -0,0 +1,16 @@ + + + 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 + Todas + \ 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 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 +