diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a4138434b..be3e1238b 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,39 +4,30 @@
package="org.fossasia.phimpme">
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -55,7 +46,6 @@
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/AppTheme">
-
+
+ android:taskAffinity="" />
+
-
+
+
-
+
+
-
+
+
-
+
+
+ android:theme="@style/Theme.AppCompat.NoActionBar">
@@ -264,9 +260,9 @@
+ android:theme="@style/Theme.AppCompat.NoActionBar">
@@ -278,11 +274,14 @@
+
+ android:theme="@style/Theme.AppCompat.NoActionBar">
+
+
+
+ android:windowSoftInputMode="adjustPan"
+ />
+
+
-
+
+
-
\ No newline at end of file
+
diff --git a/app/src/main/java/org/fossasia/phimpme/MyApplication.java b/app/src/main/java/org/fossasia/phimpme/MyApplication.java
index f5cd000fc..c5a0387b1 100644
--- a/app/src/main/java/org/fossasia/phimpme/MyApplication.java
+++ b/app/src/main/java/org/fossasia/phimpme/MyApplication.java
@@ -5,7 +5,6 @@
import android.os.StrictMode;
import android.util.Log;
import androidx.multidex.MultiDex;
-
import com.squareup.leakcanary.LeakCanary;
import com.squareup.leakcanary.RefWatcher;
import com.twitter.sdk.android.core.DefaultLogger;
@@ -55,6 +54,7 @@ public void onCreate() {
.debug(true)
.build();
Twitter.initialize(config);
+
/** Realm initialization */
Realm.init(this);
RealmConfiguration realmConfiguration =
diff --git a/app/src/main/java/org/fossasia/phimpme/gallery/activities/LFMainActivity.java b/app/src/main/java/org/fossasia/phimpme/gallery/activities/LFMainActivity.java
index 4fbd63ce5..31789fda3 100644
--- a/app/src/main/java/org/fossasia/phimpme/gallery/activities/LFMainActivity.java
+++ b/app/src/main/java/org/fossasia/phimpme/gallery/activities/LFMainActivity.java
@@ -6,6 +6,7 @@
import static org.fossasia.phimpme.gallery.data.base.SortingMode.SIZE;
import static org.fossasia.phimpme.utilities.ActivitySwitchHelper.context;
+import android.Manifest;
import android.animation.Animator;
import android.annotation.TargetApi;
import android.app.Dialog;
@@ -64,6 +65,7 @@
import androidx.appcompat.widget.SwitchCompat;
import androidx.appcompat.widget.Toolbar;
import androidx.cardview.widget.CardView;
+import androidx.core.app.ActivityCompat;
import androidx.core.app.ActivityOptionsCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.GravityCompat;
@@ -128,6 +130,7 @@
import org.fossasia.phimpme.gallery.util.ContentHelper;
import org.fossasia.phimpme.gallery.util.CustomNestedView;
import org.fossasia.phimpme.gallery.util.Measure;
+import org.fossasia.phimpme.gallery.util.PermissionUtils;
import org.fossasia.phimpme.gallery.util.PreferenceUtil;
import org.fossasia.phimpme.gallery.util.StringUtils;
import org.fossasia.phimpme.gallery.util.ThemeHelper;
@@ -1219,33 +1222,15 @@ public final void onActivityResult(
// endregion
private void requestSdCardPermissions() {
- final AlertDialog.Builder dialogBuilder =
- new AlertDialog.Builder(LFMainActivity.this, getDialogStyle());
-
- AlertDialogsHelper.getTextDialog(
- LFMainActivity.this,
- dialogBuilder,
- R.string.sd_card_write_permission_title,
- R.string.sd_card_permissions_message,
- null);
-
- dialogBuilder.setPositiveButton(
- getString(R.string.ok_action).toUpperCase(),
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
- startActivityForResult(
- new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE), REQUEST_CODE_SD_CARD_PERMISSIONS);
- }
- });
- dialogBuilder.setNegativeButton(getString(R.string.cancel).toUpperCase(), null);
- AlertDialog alertDialog = dialogBuilder.create();
- alertDialog.show();
- AlertDialogsHelper.setButtonTextColor(
- new int[] {DialogInterface.BUTTON_POSITIVE, DialogInterface.BUTTON_NEGATIVE},
- getAccentColor(),
- alertDialog);
+ if (ActivityCompat.shouldShowRequestPermissionRationale(
+ this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
+ showPermissionAlertDialog();
+ } else {
+ ActivityCompat.requestPermissions(
+ this,
+ new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
+ REQUEST_CODE_SD_CARD_PERMISSIONS);
+ }
}
// region UI/GRAPHIC
@@ -2040,6 +2025,12 @@ public void onClick(DialogInterface dialog, int which) {
case R.id.delete_action:
getNavigationBar();
+ if (!PermissionUtils.checkPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
+ requestSdCardPermissions();
+ swipeRefreshLayout.setRefreshing(false);
+ invalidateOptionsMenu();
+ return true;
+ }
class DeletePhotos extends AsyncTask {
private boolean succ = false;
@@ -2249,7 +2240,11 @@ mDrawerLayout, getResources().getString(R.string.single_image_removed))
new FavouritePhotos(activityContext).execute();
}
}
- } else requestSdCardPermissions();
+ } else {
+ SnackBarHandler.create(
+ mDrawerLayout, getResources().getString(R.string.photo_deletion_failed))
+ .show();
+ }
invalidateOptionsMenu();
checkNothing();
@@ -2737,6 +2732,12 @@ public void onClick(DialogInterface dialog, int id) {
// endregion
case R.id.action_move:
+ if (!PermissionUtils.checkPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
+ requestSdCardPermissions();
+ swipeRefreshLayout.setRefreshing(false);
+ invalidateOptionsMenu();
+ return true;
+ }
final Snackbar[] snackbar = {null};
final ArrayList dr = getselecteditems();
final String[] pathofalbum = {null};
@@ -2854,7 +2855,12 @@ public void onClick(DialogInterface dialog, int id) {
getAccentColor(),
alert);
- } else requestSdCardPermissions();
+ } else {
+ SnackBarHandler.showWithBottomMargin(
+ mDrawerLayout,
+ getString(R.string.photo_move_failed),
+ navigationView.getHeight());
+ }
swipeRefreshLayout.setRefreshing(false);
bottomSheetDialogFragment.dismiss();
@@ -2905,9 +2911,10 @@ public void folderSelected(String path) {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
new PrepareAlbumTask(activityContext).execute();
} else {
- requestSdCardPermissions();
- swipeRefreshLayout.setRefreshing(false);
- invalidateOptionsMenu();
+ SnackBarHandler.showWithBottomMargin(
+ mDrawerLayout,
+ getString(R.string.photo_move_failed),
+ navigationView.getHeight());
}
bottomSheetDialogFragment.dismiss();
}
@@ -2930,6 +2937,12 @@ public void folderSelected(String path) {
return true;
case R.id.action_copy:
+ if (!PermissionUtils.checkPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
+ requestSdCardPermissions();
+ swipeRefreshLayout.setRefreshing(false);
+ invalidateOptionsMenu();
+ return true;
+ }
bottomSheetDialogFragment = new SelectAlbumBottomSheet();
bottomSheetDialogFragment.setTitle(getString(R.string.copy_to));
bottomSheetDialogFragment.setSelectAlbumInterface(
@@ -2945,6 +2958,12 @@ public void folderSelected(String path) {
return true;
case R.id.renameAlbum:
+ if (!PermissionUtils.checkPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
+ requestSdCardPermissions();
+ swipeRefreshLayout.setRefreshing(false);
+ invalidateOptionsMenu();
+ return true;
+ }
AlertDialog.Builder renameDialogBuilder =
new AlertDialog.Builder(LFMainActivity.this, getDialogStyle());
final EditText editTextNewName = new EditText(getApplicationContext());
@@ -3087,7 +3106,6 @@ public void onClick(View dialog) {
mDrawerLayout,
getString(R.string.rename_error),
navigationView.getHeight());
- requestSdCardPermissions();
}
swipeRefreshLayout.setRefreshing(false);
} else {
@@ -3157,7 +3175,6 @@ public boolean onKey(
mDrawerLayout,
getString(R.string.rename_error),
navigationView.getHeight());
- requestSdCardPermissions();
}
swipeRefreshLayout.setRefreshing(false);
} else {
@@ -4609,7 +4626,44 @@ public void onClick(View view) {
snackbar.show();
}
- } else asyncActivityRef.requestSdCardPermissions();
+ } else {
+ SnackBarHandler.showWithBottomMargin2(
+ asyncActivityRef.mDrawerLayout,
+ asyncActivityRef.getString(R.string.error_copying_files),
+ asyncActivityRef.navigationView.getHeight(),
+ Snackbar.LENGTH_SHORT);
+ }
}
}
+
+ private void showPermissionAlertDialog() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setIcon(R.drawable.ic_caution);
+ builder.setTitle(R.string.permission_rationale_title);
+ builder.setMessage(R.string.permission_rationale_storage);
+ builder.setCancelable(false);
+ builder.setPositiveButton(
+ R.string.exit,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ finish();
+ }
+ });
+
+ builder.setNegativeButton(
+ R.string.grant_permission,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ ActivityCompat.requestPermissions(
+ LFMainActivity.this,
+ new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
+ REQUEST_CODE_SD_CARD_PERMISSIONS);
+ }
+ });
+
+ AlertDialog alertDialog = builder.create();
+ alertDialog.show();
+ }
}
diff --git a/app/src/main/java/org/fossasia/phimpme/gallery/activities/SingleMediaActivity.java b/app/src/main/java/org/fossasia/phimpme/gallery/activities/SingleMediaActivity.java
index 12e4345c1..1b086098a 100644
--- a/app/src/main/java/org/fossasia/phimpme/gallery/activities/SingleMediaActivity.java
+++ b/app/src/main/java/org/fossasia/phimpme/gallery/activities/SingleMediaActivity.java
@@ -820,7 +820,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
SnackBarHandler.showWithBottomMargin(
parentView,
getString(R.string.new_file_created),
- (bottomBar.getHeight() * 2) - 22);
+ parentView.getHeight() - bottomBar.getTop());
}
// adapter.notifyDataSetChanged();
} catch (Exception e) {
@@ -828,7 +828,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
} else
SnackBarHandler.showWithBottomMargin(
- parentView, "errori random", (bottomBar.getHeight() * 2) - 22);
+ parentView, "errori random", parentView.getHeight() - bottomBar.getTop());
break;
default:
break;
@@ -871,7 +871,7 @@ private void deleteCurrentMedia() {
SnackBarHandler.showWithBottomMargin(
parentView,
getString(R.string.trashbin_move_onefile),
- bottomBar.getHeight() + navigationView.getHeight(),
+ parentView.getHeight() - bottomBar.getTop(),
Snackbar.LENGTH_SHORT);
snackbar.setAction(
R.string.open,
@@ -888,7 +888,7 @@ public void onClick(View view) {
SnackBarHandler.showWithBottomMargin(
parentView,
getApplicationContext().getString(R.string.photo_deleted_msg),
- bottomBar.getHeight() + navigationView.getHeight());
+ parentView.getHeight() - bottomBar.getTop());
snackbar.show();
}
if (!success) {
@@ -1210,7 +1210,7 @@ public void onClick(DialogInterface dialog, int id) {
SnackBarHandler.showWithBottomMargin(
parentView,
getString(R.string.photo_deleted_from_fav_msg),
- (bottomBar.getHeight() * 2) - 22);
+ parentView.getHeight() - bottomBar.getTop());
}
});
AlertDialog alertDialog = deleteDialog.create();
@@ -1258,7 +1258,7 @@ public void folderSelected(String path) {
SnackBarHandler.showWithBottomMargin(
relativeLayout,
getString(R.string.copied_successfully) + " to " + path,
- (bottomBar.getHeight() * 2) - 22);
+ parentView.getHeight() - bottomBar.getTop());
}
}
});
@@ -1497,7 +1497,7 @@ public void onClick(DialogInterface dialogInterface, int i) {
SnackBarHandler.showWithBottomMargin(
parentView,
getString(R.string.rename_no_change),
- (bottomBar.getHeight() * 2) - 22);
+ parentView.getHeight() - bottomBar.getTop());
renameDialog.dismiss();
} else {
int index = file.getPath().lastIndexOf("/");
@@ -1669,7 +1669,7 @@ public void onClick(DialogInterface dialogInterface, int i) {
SnackBarHandler.showWithBottomMargin(
parentView,
getResources().getString(R.string.add_favourite),
- bottomBar.getHeight());
+ parentView.getHeight() - bottomBar.getTop());
snackbar.setAction(
R.string.openfav,
new View.OnClickListener() {
@@ -1755,7 +1755,7 @@ public void folderSelected(String path) {
SnackBarHandler.showWithBottomMargin(
relativeLayout,
getString(R.string.photo_moved_successfully) + " to " + path,
- (bottomBar.getHeight() * 2) - 22);
+ parentView.getHeight() - bottomBar.getTop());
}
});
bottomSheetDialogFragment.show(
@@ -1769,14 +1769,18 @@ public void folderSelected(String path) {
AlbumSettings.getSettings(getApplicationContext(), getAlbum());
albumSettings.changeCoverPath(getApplicationContext(), getAlbum().getMedia(0).getPath());
SnackBarHandler.showWithBottomMargin(
- parentView, getString(R.string.cover_removed), (bottomBar.getHeight() * 2) - 22);
+ parentView,
+ getString(R.string.cover_removed),
+ parentView.getHeight() - bottomBar.getTop());
} else {
AlbumSettings albumSettings =
AlbumSettings.getSettings(getApplicationContext(), getAlbum());
albumSettings.changeCoverPath(
getApplicationContext(), getAlbum().getCurrentMedia().getPath());
SnackBarHandler.showWithBottomMargin(
- parentView, getString(R.string.change_cover), bottomBar.getHeight());
+ parentView,
+ getString(R.string.change_cover),
+ parentView.getHeight() - bottomBar.getTop());
MenuItem cover = menu.findItem(R.id.action_cover);
cover.setTitle("Remove cover image");
}
@@ -1936,7 +1940,7 @@ public void onClick(View v) {
SnackBarHandler.showWithBottomMargin(
parentView,
getString(R.string.description_saved),
- (bottomBar.getHeight() * 2) - 22);
+ (parentView.getHeight() - bottomBar.getTop()));
} else {
databaseHelper.update(
new ImageDescModel(
@@ -1944,7 +1948,7 @@ public void onClick(View v) {
SnackBarHandler.showWithBottomMargin(
parentView,
getString(R.string.description_updated),
- (bottomBar.getHeight() * 2) - 22);
+ parentView.getHeight() - bottomBar.getTop());
}
}
});
@@ -1963,7 +1967,7 @@ public void onClick(View v) {
SnackBarHandler.showWithBottomMargin(
parentView,
getString(R.string.description_deleted),
- (bottomBar.getHeight() * 2) - 22);
+ (parentView.getHeight() - bottomBar.getTop()));
}
}
});
diff --git a/app/src/main/java/org/fossasia/phimpme/gallery/activities/SplashScreen.java b/app/src/main/java/org/fossasia/phimpme/gallery/activities/SplashScreen.java
index 7217bd612..40ea12ea2 100755
--- a/app/src/main/java/org/fossasia/phimpme/gallery/activities/SplashScreen.java
+++ b/app/src/main/java/org/fossasia/phimpme/gallery/activities/SplashScreen.java
@@ -15,6 +15,7 @@
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
+import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import butterknife.BindView;
import butterknife.ButterKnife;
@@ -120,8 +121,8 @@ public void onAnimationCompleted(int loopNumber) {
}
private void askForPermission() {
- String[] permissions = new String[] {Manifest.permission.READ_EXTERNAL_STORAGE};
- PermissionUtils.requestPermissions(this, READ_EXTERNAL_STORAGE_ID, permissions);
+ ActivityCompat.requestPermissions(
+ this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, READ_EXTERNAL_STORAGE_ID);
}
@Override
diff --git a/app/src/main/java/org/fossasia/phimpme/gallery/util/PermissionUtils.java b/app/src/main/java/org/fossasia/phimpme/gallery/util/PermissionUtils.java
index eceb6e547..f8dd0cd35 100644
--- a/app/src/main/java/org/fossasia/phimpme/gallery/util/PermissionUtils.java
+++ b/app/src/main/java/org/fossasia/phimpme/gallery/util/PermissionUtils.java
@@ -1,17 +1,14 @@
package org.fossasia.phimpme.gallery.util;
import android.Manifest;
-import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
/** Created by dnld on 01/04/16. */
public final class PermissionUtils {
- private static boolean checkPermission(Context context, String permission) {
+ public static boolean checkPermission(Context context, String permission) {
return ContextCompat.checkSelfPermission(context, permission)
== PackageManager.PERMISSION_GRANTED;
}
@@ -19,10 +16,4 @@ private static boolean checkPermission(Context context, String permission) {
public static boolean isDeviceInfoGranted(Context context) {
return checkPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE);
}
-
- public static void requestPermissions(Object o, int permissionId, String... permissions) {
- if (o instanceof Activity) {
- ActivityCompat.requestPermissions((AppCompatActivity) o, permissions, permissionId);
- }
- }
}
diff --git a/app/src/main/java/org/fossasia/phimpme/utilities/Utils.java b/app/src/main/java/org/fossasia/phimpme/utilities/Utils.java
index 752b06304..67bceacb7 100644
--- a/app/src/main/java/org/fossasia/phimpme/utilities/Utils.java
+++ b/app/src/main/java/org/fossasia/phimpme/utilities/Utils.java
@@ -21,7 +21,6 @@
import android.util.Base64;
import android.view.View;
import android.widget.Toast;
-
import androidx.annotation.NonNull;
import com.google.android.material.snackbar.Snackbar;
import io.realm.Realm;
diff --git a/app/src/main/res/layout/activity_pager.xml b/app/src/main/res/layout/activity_pager.xml
index ff62dfbed..e7357c7e0 100644
--- a/app/src/main/res/layout/activity_pager.xml
+++ b/app/src/main/res/layout/activity_pager.xml
@@ -16,6 +16,7 @@
layout="@layout/toolbar" />
@@ -26,7 +27,7 @@
android:layout_height="match_parent"
android:layout_above="@+id/toolbar_bottom"
android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
+ android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
diff --git a/app/src/main/res/layout/activity_pinterest_share.xml b/app/src/main/res/layout/activity_pinterest_share.xml
index 3d7806135..cbd846396 100644
--- a/app/src/main/res/layout/activity_pinterest_share.xml
+++ b/app/src/main/res/layout/activity_pinterest_share.xml
@@ -22,14 +22,13 @@
android:fillViewport="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintBottom_toTopOf="@id/tv_create_board"
+ app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar">
-
Press back again to exit
Photos moved successfully
Photo moved successfully
+ Failed to move photos
Copied successfully
+ Error copying files
All photos are already there in the folder
No Changes Made!
transition_photo
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 3ba4388b7..60be41f5e 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -60,7 +60,7 @@
- true
- 5dp
- - @style/MyToolbarTheme
+ - @style/MyToolbarTheme