Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactoring #352

Merged
merged 17 commits into from
May 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ android {
applicationId "com.burhanrashid52.photoediting"
minSdkVersion 14
targetSdkVersion 30
versionCode 4
versionName "1.1.2"
versionCode 5
versionName "1.1.3"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static com.burhanrashid52.photoediting.EmojiBSFragment.getEmojis;
import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
Expand Down Expand Up @@ -73,7 +74,7 @@ public void checkIfEraserIsEnabledWhenClickedOnEraserTool() {
@Test
public void checkIfEmojiIsDisplayedWhenEmojiIsSelected() {
Context context = mActivityRule.launchActivity(null);
ArrayList<String> emojis = PhotoEditor.getEmojis(context);
ArrayList<String> emojis = getEmojis(context);
int emojiPosition = 1;
String emojiUnicode = emojis.get(emojiPosition);
onView(withText(R.string.label_emoji)).perform(click());
Expand Down Expand Up @@ -104,7 +105,7 @@ public void checkIfDiscardDialogIsDisplayedWhenCacheIsNotEmpty() {
@Test
public void checkIfUndoRedoIsWorkingCorrectWhenClickedOnUndoRedo() throws InterruptedException {
EditImageActivity editImageActivity = mActivityRule.launchActivity(null);
ArrayList<String> emojisUnicodes = PhotoEditor.getEmojis(editImageActivity);
ArrayList<String> emojisUnicodes = getEmojis(editImageActivity);

//Add Emoji
onView(withText(R.string.label_emoji)).perform(click());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.burhanrashid52.photoediting;

import android.Manifest;
import android.content.DialogInterface;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Typeface;
Expand Down Expand Up @@ -69,10 +69,10 @@ public class EditImageActivity extends BaseActivity implements OnPhotoEditorList
private TextView mTxtCurrentTool;
private Typeface mWonderFont;
private RecyclerView mRvTools, mRvFilters;
private EditingToolsAdapter mEditingToolsAdapter = new EditingToolsAdapter(this);
private FilterViewAdapter mFilterViewAdapter = new FilterViewAdapter(this);
private final EditingToolsAdapter mEditingToolsAdapter = new EditingToolsAdapter(this);
private final FilterViewAdapter mFilterViewAdapter = new FilterViewAdapter(this);
private ConstraintLayout mRootView;
private ConstraintSet mConstraintSet = new ConstraintSet();
private final ConstraintSet mConstraintSet = new ConstraintSet();
private boolean mIsFilterVisible;

@Nullable
Expand Down Expand Up @@ -123,7 +123,7 @@ protected void onCreate(Bundle savedInstanceState) {
mPhotoEditor.setOnPhotoEditorListener(this);

//Set Image Dynamically
// mPhotoEditorView.getSource().setImageResource(R.drawable.color_palette);
mPhotoEditorView.getSource().setImageResource(R.drawable.paris_tower);

mSaveFileHelper = new FileSaveHelper(this);
}
Expand Down Expand Up @@ -196,15 +196,12 @@ private void initViews() {
public void onEditTextChangeListener(final View rootView, String text, int colorCode) {
TextEditorDialogFragment textEditorDialogFragment =
TextEditorDialogFragment.show(this, text, colorCode);
textEditorDialogFragment.setOnTextEditorListener(new TextEditorDialogFragment.TextEditor() {
@Override
public void onDone(String inputText, int colorCode) {
final TextStyleBuilder styleBuilder = new TextStyleBuilder();
styleBuilder.withTextColor(colorCode);

mPhotoEditor.editText(rootView, inputText, styleBuilder);
mTxtCurrentTool.setText(R.string.label_text);
}
textEditorDialogFragment.setOnTextEditorListener((inputText, newColorCode) -> {
final TextStyleBuilder styleBuilder = new TextStyleBuilder();
styleBuilder.withTextColor(newColorCode);

mPhotoEditor.editText(rootView, inputText, styleBuilder);
mTxtCurrentTool.setText(R.string.label_text);
});
}

Expand All @@ -228,6 +225,7 @@ public void onStopViewChangeListener(ViewType viewType) {
Log.d(TAG, "onStopViewChangeListener() called with: viewType = [" + viewType + "]");
}

@SuppressLint("NonConstantResourceId")
@Override
public void onClick(View view) {
switch (view.getId()) {
Expand Down Expand Up @@ -287,8 +285,8 @@ private Uri buildFileProviderUri(@NonNull Uri uri) {
private void saveImage() {
final String fileName = System.currentTimeMillis() + ".png";
final boolean hasStoragePermission =
ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) == PERMISSION_GRANTED;
if(hasStoragePermission || isSdkHigherThan28()) {
ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PERMISSION_GRANTED;
if (hasStoragePermission || isSdkHigherThan28()) {
showLoading("Saving...");
mSaveFileHelper.createFile(fileName, (fileCreated, filePath, error, uri) -> {
if (fileCreated) {
Expand Down Expand Up @@ -319,7 +317,7 @@ public void onFailure(@NonNull Exception exception) {
showSnackbar(error);
}
});
}else {
} else {
requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
}
Expand Down Expand Up @@ -389,25 +387,9 @@ public void isPermissionGranted(boolean isGranted, String permission) {
private void showSaveDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(getString(R.string.msg_save_image));
builder.setPositiveButton("Save", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
saveImage();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});

builder.setNeutralButton("Discard", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.setPositiveButton("Save", (dialog, which) -> saveImage());
builder.setNegativeButton("Cancel", (dialog, which) -> dialog.dismiss());
builder.setNeutralButton("Discard", (dialog, which) -> finish());
builder.create().show();

}
Expand All @@ -427,15 +409,12 @@ public void onToolSelected(ToolType toolType) {
break;
case TEXT:
TextEditorDialogFragment textEditorDialogFragment = TextEditorDialogFragment.show(this);
textEditorDialogFragment.setOnTextEditorListener(new TextEditorDialogFragment.TextEditor() {
@Override
public void onDone(String inputText, int colorCode) {
final TextStyleBuilder styleBuilder = new TextStyleBuilder();
styleBuilder.withTextColor(colorCode);

mPhotoEditor.addText(inputText, styleBuilder);
mTxtCurrentTool.setText(R.string.label_text);
}
textEditorDialogFragment.setOnTextEditorListener((inputText, colorCode) -> {
final TextStyleBuilder styleBuilder = new TextStyleBuilder();
styleBuilder.withTextColor(colorCode);

mPhotoEditor.addText(inputText, styleBuilder);
mTxtCurrentTool.setText(R.string.label_text);
});
break;
case ERASER:
Expand Down Expand Up @@ -498,4 +477,4 @@ public void onBackPressed() {
super.onBackPressed();
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,24 @@

import android.annotation.SuppressLint;
import android.app.Dialog;

import androidx.annotation.NonNull;

import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;

import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

import ja.burhanrashid52.photoeditor.PhotoEditor;

public class EmojiBSFragment extends BottomSheetDialogFragment {

public EmojiBSFragment() {
Expand Down Expand Up @@ -72,7 +75,7 @@ public void setEmojiListener(EmojiListener emojiListener) {

public class EmojiAdapter extends RecyclerView.Adapter<EmojiAdapter.ViewHolder> {

ArrayList<String> emojisList = PhotoEditor.getEmojis(getActivity());
ArrayList<String> emojisList = getEmojis(getActivity());

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Expand Down Expand Up @@ -109,4 +112,31 @@ public void onClick(View v) {
}
}
}
}

/**
* Provide the list of emoji in form of unicode string
*
* @param context context
* @return list of emoji unicode
*/
public static ArrayList<String> getEmojis(Context context) {
ArrayList<String> convertedEmojiList = new ArrayList<>();
String[] emojiList = context.getResources().getStringArray(R.array.photo_editor_emoji);
for (String emojiUnicode : emojiList) {
convertedEmojiList.add(convertEmoji(emojiUnicode));
}
return convertedEmojiList;
}

private static String convertEmoji(String emoji) {
String returnedEmoji;
try {
int convertEmojiToInt = Integer.parseInt(emoji.substring(2), 16);
returnedEmoji = new String(Character.toChars(convertEmojiToInt));
} catch (NumberFormatException e) {
returnedEmoji = "";
}
return returnedEmoji;
}
}

Binary file added app/src/main/res/drawable/paris_tower.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading