Skip to content

Commit

Permalink
Fix issue in back press if folderMode set to true
Browse files Browse the repository at this point in the history
  • Loading branch information
esafirm committed Jul 5, 2017
1 parent a46cd88 commit 0645b24
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@

import com.esafirm.imagepicker.R;
import com.esafirm.imagepicker.features.camera.CameraHelper;
import com.esafirm.imagepicker.features.recyclers.OnBackAction;
import com.esafirm.imagepicker.features.recyclers.RecyclerViewManager;
import com.esafirm.imagepicker.helper.ImagePickerPreferences;
import com.esafirm.imagepicker.helper.IpLogger;
import com.esafirm.imagepicker.helper.ViewUtils;
import com.esafirm.imagepicker.model.Folder;
import com.esafirm.imagepicker.model.Image;
import com.esafirm.imagepicker.view.ProgressWheel;
Expand Down Expand Up @@ -394,12 +394,18 @@ protected void onDestroy() {

@Override
public void onBackPressed() {
if (!recyclerViewManager.isDisplayingFolderView()) {
setFolderAdapter(null);
return;
}
setResult(RESULT_CANCELED);
super.onBackPressed();
recyclerViewManager.handleBack(new OnBackAction() {
@Override
public void onBackToFolder() {
invalidateTitle();
}

@Override
public void onFinishImagePicker() {
setResult(RESULT_CANCELED);
finish();
}
});
}

/* --------------------------------------------------- */
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.esafirm.imagepicker.features.recyclers;

public interface OnBackAction {
void onBackToFolder();
void onFinishImagePicker();
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ public void changeOrientation(int orientation) {
imageColumns = orientation == Configuration.ORIENTATION_PORTRAIT ? 3 : 5;
folderColumns = orientation == Configuration.ORIENTATION_PORTRAIT ? 2 : 4;

int columns = isDisplayingFolderView() ? folderColumns : imageColumns;
boolean shouldShowFolder = config.isFolderMode() && isDisplayingFolderView();
int columns = shouldShowFolder ? folderColumns : imageColumns;
layoutManager = new GridLayoutManager(context, columns);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
Expand Down Expand Up @@ -93,9 +94,17 @@ private void setItemDecoration(int columns) {
layoutManager.setSpanCount(columns);
}

public boolean isDisplayingFolderView() {
return config.isFolderMode()
&& (recyclerView.getAdapter() == null || recyclerView.getAdapter() instanceof FolderPickerAdapter);
public void handleBack(OnBackAction action) {
if (config.isFolderMode() && !isDisplayingFolderView()) {
setFolderAdapter(null);
action.onBackToFolder();
return;
}
action.onFinishImagePicker();
}

private boolean isDisplayingFolderView() {
return recyclerView.getAdapter() == null || recyclerView.getAdapter() instanceof FolderPickerAdapter;
}

public String getTitle() {
Expand Down
2 changes: 1 addition & 1 deletion sample/src/main/java/com/esafirm/sample/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public void start() {
ImagePicker imagePicker = ImagePicker.create(this)
.theme(R.style.ImagePickerTheme)
.returnAfterFirst(returnAfterCapture) // set whether pick action or camera action should return immediate result or not. Only works in single mode for image picker
.folderMode(true) // set folder mode (false by default)
.folderMode(false) // set folder mode (false by default)
.folderTitle("Folder") // folder selection title
.imageTitle("Tap to select"); // image selection title

Expand Down

0 comments on commit 0645b24

Please sign in to comment.