Skip to content

Commit

Permalink
Title will always be show as long as nothing is selected and title is…
Browse files Browse the repository at this point in the history
… explicitly set

#70

Breaking changes: ImagePickerConfigFactory.create() and ImagePicker.init() don't take Context anymore
  • Loading branch information
esafirm committed Sep 2, 2017
1 parent ccba881 commit 512e833
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public static class ImagePickerWithActivity extends ImagePicker {

public ImagePickerWithActivity(Activity activity) {
this.activity = activity;
init(activity);
init();
}

@Override
Expand All @@ -49,7 +49,7 @@ public static class ImagePickerWithFragment extends ImagePicker {

public ImagePickerWithFragment(Fragment fragment) {
this.fragment = fragment;
init(fragment.getActivity());
init();
}

@Override
Expand All @@ -63,8 +63,8 @@ public void start(int requestCode) {
/* > Stater */
/* --------------------------------------------------- */

public void init(Context context) {
config = ImagePickerConfigFactory.createDefault(context);
public void init() {
config = ImagePickerConfigFactory.createDefault();
}

public static ImagePickerWithActivity create(Activity activity) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ protected void onCreate(Bundle savedInstanceState) {
ImagePickerConfig config = getConfig();
setTheme(config.getTheme());
setContentView(R.layout.ef_activity_image_picker);
setupView(config);
setupView();
setupComponents(config);
}

Expand All @@ -91,7 +91,7 @@ private ImagePickerConfig getConfig() {
return config;
}

private void setupView(ImagePickerConfig config) {
private void setupView() {
progressBar = (ProgressWheel) findViewById(R.id.progress_bar);
emptyTextView = (TextView) findViewById(R.id.tv_empty_images);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
Expand All @@ -102,7 +102,6 @@ private void setupView(ImagePickerConfig config) {
actionBar = getSupportActionBar();

if (actionBar != null) {
actionBar.setTitle(config.isFolderMode() ? config.getFolderTitle() : config.getImageTitle());
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_arrow_back);
actionBar.setDisplayShowTitleEnabled(true);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
package com.esafirm.imagepicker.features;

import android.content.Context;

import com.esafirm.imagepicker.R;
import com.esafirm.imagepicker.features.imageloader.DefaultImageLoader;

import java.util.ArrayList;

public class ImagePickerConfigFactory {

public static ImagePickerConfig createDefault(Context context) {
public static ImagePickerConfig createDefault() {
ImagePickerConfig config = new ImagePickerConfig();
config.setMode(ImagePicker.MODE_MULTIPLE);
config.setLimit(ImagePicker.MAX_LIMIT);
config.setShowCamera(true);
config.setFolderMode(false);
config.setFolderTitle(context.getString(R.string.ef_title_folder));
config.setImageTitle(context.getString(R.string.ef_title_select_image));
config.setSelectedImages(new ArrayList<>());
config.setSavePath(ImagePickerSavePath.DEFAULT);
config.setReturnAfterFirst(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class DefaultCameraModule implements CameraModule, Serializable {
protected String currentImagePath;

public Intent getCameraIntent(Context context) {
return getCameraIntent(context, ImagePickerConfigFactory.createDefault(context));
return getCameraIntent(context, ImagePickerConfigFactory.createDefault());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import com.esafirm.imagepicker.features.ImagePicker;
import com.esafirm.imagepicker.features.ImagePickerConfig;
import com.esafirm.imagepicker.features.imageloader.ImageLoader;
import com.esafirm.imagepicker.helper.ConfigUtils;
import com.esafirm.imagepicker.helper.ImagePickerUtils;
import com.esafirm.imagepicker.listeners.OnFolderClickListener;
import com.esafirm.imagepicker.listeners.OnImageClickListener;
import com.esafirm.imagepicker.listeners.OnImageSelectedListener;
Expand Down Expand Up @@ -109,17 +111,22 @@ private boolean isDisplayingFolderView() {

public String getTitle() {
if (isDisplayingFolderView()) {
return config.getFolderTitle();
return ConfigUtils.getFolderTitle(context, config);
}

if (config.getMode() == ImagePicker.MODE_MULTIPLE) {
int imageSize = imageAdapter.getSelectedImages().size();
return config.getLimit() == ImagePicker.MAX_LIMIT
? String.format(context.getString(R.string.ef_selected), imageSize)
: String.format(context.getString(R.string.ef_selected_with_limit), imageSize, config.getLimit());
if (config.getMode() == ImagePicker.MODE_SINGLE) {
return ConfigUtils.getImageTitle(context, config);
}

return config.getImageTitle();
final int imageSize = imageAdapter.getSelectedImages().size();
final boolean useDefaultTitle = !ImagePickerUtils.isStringEmpty(config.getImageTitle()) && imageSize == 0;

if (useDefaultTitle) {
return ConfigUtils.getImageTitle(context, config);
}
return config.getLimit() == ImagePicker.MAX_LIMIT
? String.format(context.getString(R.string.ef_selected), imageSize)
: String.format(context.getString(R.string.ef_selected_with_limit), imageSize, config.getLimit());
}

public void setImageAdapter(List<Image> images) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.esafirm.imagepicker.helper;

import android.content.Context;

import com.esafirm.imagepicker.R;
import com.esafirm.imagepicker.features.ImagePicker;
import com.esafirm.imagepicker.features.ImagePickerConfig;

Expand All @@ -24,4 +27,18 @@ public static ImagePickerConfig checkConfig(ImagePickerConfig config) {
public static boolean isReturnAfterFirst(ImagePickerConfig config) {
return config.getMode() == ImagePicker.MODE_SINGLE && config.isReturnAfterFirst();
}

public static String getFolderTitle(Context context, ImagePickerConfig config) {
final String folderTitle = config.getFolderTitle();
return ImagePickerUtils.isStringEmpty(folderTitle)
? context.getString(R.string.ef_title_folder)
: folderTitle;
}

public static String getImageTitle(Context context, ImagePickerConfig config) {
final String configImageTitle = config.getImageTitle();
return ImagePickerUtils.isStringEmpty(configImageTitle)
? context.getString(R.string.ef_title_select_image)
: configImageTitle;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Environment;
import android.support.annotation.Nullable;

import com.esafirm.imagepicker.features.ImagePickerSavePath;
import com.esafirm.imagepicker.model.Image;
Expand All @@ -19,6 +20,10 @@

public class ImagePickerUtils {

public static boolean isStringEmpty(@Nullable String str) {
return str == null || str.length() == 0;
}

public static File createImageFile(ImagePickerSavePath savePath) {
// External sdcard location
final String path = savePath.getPath();
Expand Down

2 comments on commit 512e833

@iNoles
Copy link

@iNoles iNoles commented on 512e833 Sep 2, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@esafirm
Copy link
Owner Author

@esafirm esafirm commented on 512e833 Sep 2, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@iNoles i could but i wouldn't. My target is to have a unit test in 2.0.
If i use TextUtils (which belongs to android.jar) i need more setup to make the test running. It would be easier this way

More info:
https://stackoverflow.com/questions/36846081/junit4-textutils-isempty-gives-different-result-than-string-isempty

Please sign in to comment.