From 3754359184e7a34bd34812ca91109740b0509520 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 9 Nov 2019 23:11:17 +0100 Subject: [PATCH 01/53] update commons ot 5.19.9 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index e25c0421a..5fcc5413f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.19.2' + implementation 'com.simplemobiletools:commons:5.19.9' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' From 296c36fef92e381e34697365f6a6de2197d335f7 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 9 Nov 2019 23:23:00 +0100 Subject: [PATCH 02/53] update commons to 5.19.10 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 5fcc5413f..01dddf17f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.19.9' + implementation 'com.simplemobiletools:commons:5.19.10' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' From 2d08bd38986440819556ed3b220ce4fccb66f7e2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 9 Nov 2019 23:33:51 +0100 Subject: [PATCH 03/53] do not show (hidden) after cached folder, if inappropriate --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt index be514de6c..81dd0e8e3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt @@ -595,7 +595,7 @@ fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly: it.name = if (it.path.doesThisOrParentHaveNoMedia() && !it.path.isThisOrParentIncluded(includedPaths)) { "${it.name.removeSuffix(hiddenString).trim()} $hiddenString" } else { - it.name + it.name.removeSuffix(hiddenString).trim() } } From 690cbfcc6c7723ce9a1959bb0feda1614d4fbc86 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 10 Nov 2019 09:54:34 +0100 Subject: [PATCH 04/53] updating the apps short fastlane description --- fastlane/metadata/android/ru/short_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/ru/short_description.txt b/fastlane/metadata/android/ru/short_description.txt index 8021a58ca..8b0a76ce3 100644 --- a/fastlane/metadata/android/ru/short_description.txt +++ b/fastlane/metadata/android/ru/short_description.txt @@ -1 +1 @@ -Галерея без рекламы. Управление, изменение, восстановление и защита фото и видео +Просматривайте свои воспоминания без перерывов. From 35de514ee31a4632f02cfc8ba990785b6feb7135 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 10 Nov 2019 10:17:37 +0100 Subject: [PATCH 05/53] adding a null check at fetching photo path --- app/build.gradle | 2 +- .../gallery/pro/fragments/ViewPagerFragment.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 01dddf17f..6691c53ba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.19.10' + implementation 'com.simplemobiletools:commons:5.19.12' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt index fd350941c..471c11635 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt @@ -81,7 +81,7 @@ abstract class ViewPagerFragment : Fragment() { return details.toString().trim() } - fun getPathToLoad(medium: Medium) = if (context!!.isPathOnOTG(medium.path)) medium.path.getOTGPublicPath(context!!) else medium.path + fun getPathToLoad(medium: Medium) = if (context?.isPathOnOTG(medium.path) == true) medium.path.getOTGPublicPath(context!!) else medium.path private fun getFileLastModified(file: File): String { val projection = arrayOf(MediaStore.Images.Media.DATE_MODIFIED) From 59be8838c4300493f855b13e544b21936703caa3 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 10 Nov 2019 10:39:45 +0100 Subject: [PATCH 06/53] toggle fullscreen mode on click on all devices, not just chromebooks --- .../gallery/pro/activities/ViewPagerActivity.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index f0eec2073..f521b1f99 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -1096,9 +1096,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View override fun fragmentClicked() { mIsFullScreen = !mIsFullScreen checkSystemUI() - if (isChromebook()) { - fullscreenToggled() - } + fullscreenToggled() } override fun videoEnded(): Boolean { From 8c509ac5256936921b9c258bbfeeaea78ef01afb Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 10 Nov 2019 10:48:43 +0100 Subject: [PATCH 07/53] fix #1544, allow picking videos as folder covers --- .../simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt index 23264db5d..99509354b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickMediumDialog.kt @@ -40,7 +40,7 @@ class PickMediumDialog(val activity: BaseSimpleActivity, val path: String, val c } activity.getCachedMedia(path) { - val media = it.filter { it is Medium && !it.isVideo() } as ArrayList + val media = it.filter { it is Medium } as ArrayList if (media.isNotEmpty()) { activity.runOnUiThread { gotMedia(media) @@ -48,7 +48,7 @@ class PickMediumDialog(val activity: BaseSimpleActivity, val path: String, val c } } - GetMediaAsynctask(activity, path, true, false, false) { + GetMediaAsynctask(activity, path, false, false, false) { gotMedia(it) }.execute() } From 250ed1a5bf90d5fb25c705e3bc43170508a10bf4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 10 Nov 2019 12:55:05 +0100 Subject: [PATCH 08/53] update version to 6.10.5 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6691c53ba..c227ecb40 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 271 - versionName "6.10.4" + versionCode 272 + versionName "6.10.5" multiDexEnabled true setProperty("archivesBaseName", "gallery") vectorDrawables.useSupportLibrary = true From f0a0cf6bc6ecc7bc19fefdbc13ffd1e2575f5032 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 10 Nov 2019 12:55:14 +0100 Subject: [PATCH 09/53] updating changelog --- CHANGELOG.md | 10 ++++++++++ fastlane/metadata/android/en-US/changelogs/272.txt | 6 ++++++ 2 files changed, 16 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/272.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 1549a634b..66cae8cca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,16 @@ Changelog ========== +Version 6.10.5 *(2019-11-10)* +---------------------------- + + * Remember the last used pattern at batch renaming + * Allow adding an incrementing number at pattern batch renaming + * Fixed some USB file related issues + * Fixed some fullscreen glitches at using split screen + * Allow using videos as custom folder covers + * Some stability and translation improvements + Version 6.10.4 *(2019-11-05)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/272.txt b/fastlane/metadata/android/en-US/changelogs/272.txt new file mode 100644 index 000000000..c6217f294 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/272.txt @@ -0,0 +1,6 @@ + * Remember the last used pattern at batch renaming + * Allow adding an incrementing number at pattern batch renaming + * Fixed some USB file related issues + * Fixed some fullscreen glitches at using split screen + * Allow using videos as custom folder covers + * Some stability and translation improvements From fe39e552fd6a5ead1c40b88b311cf88a6d626411 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 13 Nov 2019 18:08:46 +0100 Subject: [PATCH 10/53] adding arabis translation --- app/src/main/res/values-ar/strings.xml | 412 +++++++++--------- .../metadata/android/ar/full_description.txt | 55 +++ .../metadata/android/ar/short_description.txt | 1 + fastlane/metadata/android/ar/title.txt | 1 + 4 files changed, 264 insertions(+), 205 deletions(-) create mode 100644 fastlane/metadata/android/ar/full_description.txt create mode 100644 fastlane/metadata/android/ar/short_description.txt create mode 100644 fastlane/metadata/android/ar/title.txt diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 674976caa..68c82be8d 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -1,294 +1,296 @@ - الاستوديو البسيط - الاستوديو + الاستديو البسيط + الاستديو تعديل فتح الكاميرا - (مخفية) - (excluded) + (مخفي) + (مستبعد) تثبيت المجلد - ازالة تثبيت الملف - Pin to the top - عرض كل محتوى المجلدات - كل المجلدات + إلغاء تثبيت المجلد + تثبيت في الأعلى + إظهار كل محتويات المجلدات + كل المحلات التبديل إلى عرض المجلد مجلد آخر - عرض على الخريطة + عرض علي الخريطة موقع غير معروف - زيادة عدد الأعمدة - تقليل عدد الأعمدة + زيادة عدد السعادة + تقليل عدد السعادة تغيير صورة الغلاف - اختر الصور - استخدم الافتراضي + تحديد صورة + إستخدام كإفتراضي الصوت - السطوع - غلق الاتجاه + السبوع + قفل الاتجاه فتح الاتجاه - Change orientation - Force portrait - Force landscape - Use default orientation - Fix Date Taken value - Fixing… - Dates fixed successfully - Share a resized version - Hey,\n\nseems like you upgraded from the old free app. You can now uninstall the old version, which has an \'Upgrade to Pro\' button at the top of the app settings.\n\nYou will only have the Recycle bin items deleted, favorite items unmarked and you will also have to reset your app settings.\n\nThanks! - Switch to file search across all visible folders + تغيير الاتجاه + فرض الإتجاه العمودي + فرض الإتجاه الفقي + إستخدام الإتجاه الافتراضي + إصلاح تاريخ إلتقاط القيمة + جارٍ الإصلاح… + تم إصلاح التواريخ بنجاح + مشاركة الصورة الذي تم تغيير حجمها + مرحباً,\n\nيبدو أنك قمت بترقية التطبيق المجاني القديم. يمكنك الآن إلغاء تثبيت الإصدار القديم، الذي يحتوي على زر \'الترقية إلى Pro\' في أعلي إعدادات التطبيق.\n\nسيتم حذف عناصر سلة المحذوفات فقط، كما سيتم حذف العناصر المفضلة، كما سيتعين عليك إعادة ضبط إعدادات التطبيق .\n\nشكراً! + التبديل الي البحث في الملفات عبر كافة المجلدات المراية - فلتر الميديا + فلترة الوسائط الصور - الفديوهات - الصور المتحركة - RAW images - SVGs - Portraits - لم يتم العثور على ملفات وسائط مع الفلاتر المحددة - تغيير الفلاتر + الفيديوهات + الصور المتحركة (GIF) + صور الخام (RAW) + صور الرسومات المتجهة (SVG) + صور البورتريه + لم يتم العثور على ملفات وسائط مع الفلاتر المحددة. + تغيير الفلاتر - هذه الميزة تخفي المجلد عن طريق إضافة ملف \'.nomedia\' بداخله، فإنه سيتم إخفاء كافة المجلدات الفرعية أيضا. يمكنك رؤيتها عن طريق تبديل الخيار \"إظهار العناصر المخفية\" في الإعدادات. استمر؟ - استبعد - المجلدات المستبعدة - ادارة المجلدات المستبعدة - سيؤدي هذا إلى استبعاد التحديد مع مجلداته الفرعية من الاستوديو فقط. يمكنك إدارة المجلدات المستبعدة في الإعدادات - هل تريد استبعاد أحد الوالدين بدلا من ذلك؟ - باستثناء المجلدات سيجعلها جنبا إلى جنب مع المجلدات الفرعية مخبأة فقط في الاستوديو ، فإنها لا تزال مرئية في تطبيقات أخرى.\n - \n - إذا كنت تريد إخفاءها من تطبيقات أخرى أيضا، استخدم ميزة الإخفاء - حذف الكل - هل تريد إزالة جميع المجلدات من القائمة المستبعدة؟ لن يؤدي هذا إلى حذف المجلدات + تقوم هذه الوظيفة باخفاء المجلد عن طريق إضافة ملف \'. nomedia \' إليه ، وستقوم باخفاء كل المجلدات الفرعية أيضًا. يمكنك رؤيتهم عن طريق تبديل خيار \'إظهار العناصر المخفية \' في الإعدادات. هل تريد المتابعة؟ + إستبعاد + المجلدات السابعة + إدارة المجلدات السابعة + سيؤدي ذلك الي إستبعاد التحديد مع المجلدات الفرعية من "الاستديو" فقط.. يمكنك إدارة المجلدات المستبعدة في الإعدادات. + إستبعاد المجلد الأصل بدلاً من ذلك(المحدد)؟ + سيؤدي إستبعاد المجلدات الي جعلها مع المجلدات الفرعية مخفية في "الاستديو" فقط, وستظل مرئية في تطبيقات أخرى. \n\nإذا كنت تريد إخفاءها من التطبيقات الأخرى أيضاً ، فاستخدم وظيفة الإخفاء. + إزالة الكل + هل تريد إزالة كافة المجلدات من قائمة المجلدات المستبعدة ؟ لن يؤدي هذا إلي حذف المجلدات. المجلدات المخفية إدارة المجلدات المخفية - يبدو أنك لا تملك أي مجلد مخفي بملف \".nomedia\". + يبدو أنه لا توجد لديك أي مجلدات مخفية بملف \".nomedia\". المجلدات المضمنة إدارة المجلدات المضمنة - اضافة مجلد - إذا كان لديك بعض المجلدات التي تحتوي على الملتيميديا ، ولكن لم يتم التعرف عليها من قبل التطبيق، يمكنك إضافتها يدويا هنا.\n \n لن تؤدي إضافة بعض العناصر هنا إلى استبعاد أي مجلد آخر. - No media files have been found. You can solve it by adding the folders containing media files manually. + إضافة مجلد + إذا كان لديك بعض المجلدات التي تحتوي على الوسائط ، ولكن لم يتم التعرف عليها من قبل التطبيق، يمكنك إضافتها يدوياً هنا.\n\nلن تؤدي إضافة بعض العناصر هنا إلى إستبعاد أي مجلد آخر. + لم يتم العثور علي أي ملفات وسائط.يمكنك حلها عن طريق إضافة المجلدات التي تحتوي على ملفات وسائط يدوياً. - تحجيم - تغيير حجم التحديد وحفظ + تغيير الحجم + تغيير حجم التحديد والحفظ العرض - الارتفاع - إبقاء نسبة القياس - الرجاء إدخال درجة دقة صحيحة + الإرتفاع + الحفاظ على نسبة الأبعاد + يرجى إدخال دقة صالحة تعديل حفظ - التدوير + تدوير المسار - مسار صورة غير صحيح + مسار الصورة غير صحيح فشل تعديل الصورة تعديل الصورة باستخدام: لم يتم العثور على أي محرر للصور - موقع ملف غير معروف - تعذر الكتابة فوق الملف المصدر + موقع الملف غير معروف + لا يمكن إستبدال الملف الأصل تدوير لليسار تدوير لليمين - تدوير 180º - قلب - قلب أفقيا - قلب عموديا - Free - Other + تدوير بزاوية 180º + انعكاس + انعكاس أفقياً + انعكاس عمودياً + حر + أخري خلفية بسيطة - تعيين كخلفية الشاشة - فشل الإعداد كخلفية - تعيين كخلفية بواسطة: - … جار تعيين الخلفية ... - تم تعيبن الخلفية بنجاح - صورة نسبة العرض إلى الارتفاع - نسبة العرض إلى الارتفاع في المناظر الطبيعية + تعيين كخلفية + فشل التعيين كخلفية + تعيين كخلفية باستخدام: + جارٍ تعيين الخلفية… + تم تعيين الخلفية بنجاح + نسبة الأبعاد العمودية + نسبة الأبعاد الأفقية الشاشة الرئيسية شاشة القفل - الرئيسية وشاشة القفل + الشاشة الرئيسية وشاشة القفل عرض الشرائح الفاصل الزمني (بالثواني): تضمين الصور - تضمين الفديو - تضمين GIF + تضمين مقاطع الفيديو + تضمين الصور المتحركة (Gif) ترتيب عشوائي - ارجع للخلف + تحريك للخلف حلقة عرض الشرائح - Animation - None - Fade - Slide - انتهى عرض الشرائح - لم يتم العثور على وسائط لعرض الشرائح + الحركة + لا شيء + تلاشى + انزلاق + أنتهى عرض الشرائح + لم يتم العثور علي أي وسائط لعرض الشرائح - تغيير طريقة العرض + تغيير نوع العرض الشبكة القائمة - Group direct subfolders + تجميع المجلدات الفرعية مباشرة - Group by - Do not group files - Folder - Last modified - Last modified (daily) - Last modified (monthly) - Date taken - Date taken (daily) - Date taken (monthly) - File type - Extension - Please note that grouping and sorting are 2 independent fields + تجميع حسب + عدم تجميع الملفات + المجلد + آخر تعديل + آخر تعديل (يومياً) + آخر تعديل (شهرياً) + تاريخ الإلتقاط + تاريخ الإلتقاط (يومياً) + آخر تعديل (شهرياً) + نوع الملف + الإمتداد + يرجى ملاحظة أن التجميع والفرز هما حقلان مستقلان - Folder shown on the widget: - Show folder name + المجلد الظاهر فى الويدجت: + إظهار اسم المجلد - تشغيل الفديوهات تلقائيا - Remember last video playback position - تبديل رؤية اسم الملف - حلقة الفيديو - عرض صور GIF المتحركة في الصور المصغرة - أقصى سطوع عند عرض الوسائط - قص الصور المصغرة الى مستطيلات - Show video durations - تدوير وسائط ملء الشاشة بواسطة - اعدادات النظام + تشغيل مقاطع الفيديو تلقائياً + تذكر آخر موضع لتشغيل الفيديو + تبديل رؤية إسم الملف + حلقة مقاطع الفيديو + تحريك الصور المتحركة (Gif) في الصور المصغرة + أقصى سطوع عند عرض وسائط ملء الشاشة + إقتصاص الصور المصغرة إلى مربعات + إظهار مدة الفيديوهات + تدوير وسائط ملء الشاشة باستخدام + إعدادات النظام تدوير الجهاز - الابعاد - اجعل الخلفية وشريط الحالة باللون الاسود عند عرض المحتوى في كامل الشاشة - قم بتمرير الصور المصغرة أفقيا - إخفاء واجهة النظام تلقائيا عند العرض في وضع ملء الشاشة - احذف المجلدات الفارغة بعد حذف محتواها - السماح بالتحكم في سطوع الصورة باستخدام الإيماءات الرأسية - السماح بالتحكم في صوت الفيديو والسطوع بالإيماءات العمودية - إظهار عدد لوسائط المجلد على طريقة العرض الرئيسية - عرض تفاصيل موسعة على وسائط ملء الشاشة - إدارة المجلدات المستبعدة + نسبة الأبعاد + جعل الخلفية باللون الأسود في وسائط ملء الشاشة + تمرير الصور المصغرة أفقياً + إخفاء واجهة مستخدم النظام تلقائياً في وضع ملء الشاشة + حذف المجلدات الفارغة بعد حذف محتواها + السماح بالتحكم في سطوع الصور باستخدام الإيماءات العمودية + السماح بالتحكم في مستوي صوت الفيديو والسطوع باستخدام الإيماءات العمودية + إظهار عدد وسائط المجلد في العرض الرئيسي + إظهار التفاصيل الموسعة عبر وسائط ملء الشاشة + إدارة التفاصيل الموسعة السماح بتكبير الوسائط بأصبع واحد في وضع ملء الشاشة - السماح بتغيير الوسائط على الفور من خلال النقر على جوانب الشاشة - Allow deep zooming images + السماح بتغيير الوسائط علي الفور من خلال النقر علي جوانب الشاشة + السماح بالتكبير العميق للصور إخفاء التفاصيل الموسعة عند إخفاء شريط الحالة - Show some action buttons at the bottom of the screen - Show the Recycle Bin at the folders screen - Deep zoomable images - Show images in the highest possible quality - Show the Recycle Bin as the last item on the main screen - Allow closing the fullscreen view with a down gesture - Allow 1:1 zooming in with two double taps - Always open videos on a separate screen with new horizontal gestures - Show a notch if available - Allow rotating images with gestures - File loading priority - Speed - Compromise - Avoid showing invalid files - Show image file types + إظهار بعض أزرار الإجراءات في أسفل الشاشة + إظهار "سلة المحذوفات" في شاشة المجلدات + الصور القابلة للتكبير العميق + عرض الصور بأعلى جودة ممكنة + إظهار "سلة المحذوفات" كعنصر آخر علي الشاشة الرئيسية + السماح بإغلاق عرض ملء الشاشة باستخدام إيماءه لأسفل + السماح بالتكبير 1:1 باستخدام النقر مزدوجاّ + فتح مقاطع الفيديو دائماً علي شاشة منفصلة مع إيماءات أفقية جديدة + عرض النوتش إذا كان متوفر + السماح بتدوير الصور باستخدام الإيماءات + أولوية تحميل الملفات + بسرعة + إختيار وسط + تجنب إظهار الملفات غير الصالحة + إظهار أنواع ملفات الصور - المصغرات + الصور المصغرة وسائط ملء الشاشة - تفاصيل موسعة - Bottom actions + التفاصيل الموسعة + إجراءات الأزرار - Manage visible bottom actions - Toggle favorite - Toggle file visibility + إدارة إجراءات الأزرار المرئية + تبديل المفضل + تبديل رؤية الملف - كيف يمكنني جعل الاستوديو البسيط معرض الأجهزة الافتراضي؟ - أولاً ، عليك العثور على المعرض الافتراضي حاليًا في قسم التطبيقات في إعدادات جهازك ، ابحث عن زر يقول مثلا \"فتح افتراضيًا\" ، وانقر عليه ، ثم حدد \"مسح الإعدادات الافتراضية\". في المرة التالية التي ستحاول فيها فتح صورة أو فيديو ، يجب أن تذهب الى منتقي التطبيقات ، حيث يمكنك اختيار تطبيق الاستوديو البسيط وجعله التطبيق الافتراضي. - أغلقت التطبيق بكلمة مرور ، لكني نسيت ذلك. ماذا افعل؟ - يمكنك حلها بطريقتين. يمكنك إما إعادة تثبيت التطبيق ، أو العثور على التطبيق في إعدادات جهازك وتحديد \"مسح البيانات\". سيقوم بإعادة ضبط جميع إعداداتك ، ولن يزيل أي ملفات وسائط. - كيف يمكنني جعل الألبوم يظهر دائمًا في الجزء العلوي؟ - يمكنك الضغط لفترة طويلة على الألبوم المطلوب وتحديد أيقونة الدبوس في الإجراء ، والتي سوف تثبيته إلى الأعلى. يمكنك تثبيت عدة مجلدات أيضًا ، وسيتم ترتيب العناصر المثبتة حسب طريقة الفرز الافتراضية. - كيف يمكنني تقديم مقاطع فيديو بسرعة؟ - You can either drag your finger horizontally over the video player, or click on the current or max duration texts near the seekbar. That will move the video either backward, or forward. - ما الفرق بين إخفاء واستبعاد مجلد؟ - يمنع الاستبعاد من عرض المجلد في الاستوديو البسيط فقط ، بينما يقوم بإخفاء بالعمل على مستوى النظام ككل ويقوم بإخفاء المجلد من المعارض الأخرى أيضًا. وهو يعمل عن طريق إنشاء ملف \".nomedia\" فارغ في المجلد المحدد ، والذي يمكنك بعد ذلك إزالته مع أي مدير ملفات أيضًا. - لماذا تظهر المجلدات التي تحتوي على ملصقات أو ملصقات موسيقى تغطيها؟ - يمكن أن يحدث ذلك سترى بعض ألبومات غير عادية تظهر. يمكنك استبعادها بسهولة عن طريق الضغط عليها وتحديد \"استبعاد\". في مربع الحوار التالي ، يمكنك بعد ذلك تحديد المجلد الأصلي ، ومن المحتمل أن يؤدي ذلك إلى منع ظهور الألبومات الأخرى ذات الصلة أيضًا. - لا يظهر مجلد به صور ، فماذا أفعل؟ - يمكن أن يكون ذلك لأسباب متعددة ، ولكن حلها أمر سهل. أذهب إلى الإعدادات -> إدارة المجلدات المضمنة ، اضغط علامة الزائد وانتقل إلى المجلد المطلوب. - ماذا لو كنت أرغب في رؤية بعض المجلدات الخاصة؟ - لا يؤدي إضافة مجلد في \"المجلدات المضمنة\" إلى استبعاد أي شيء تلقائيًا. ما يمكنك فعله هو الذهاب إلى الإعدادات -> إدارة المجلدات المستبعدة ، واستبعاد المجلد الجذر \"/\" ، ثم إضافة المجلدات المطلوبة في الإعدادات -> إدارة المجلدات المضمنة. سيؤدي ذلك إلى إظهار المجلدات المحددة فقط ، حيث أن الاستبعاد والتضمين يكونان متكررين ، وإذا تم استبعاد أحد المجلدات وإدراجه ، فسيظهر. - هل يمكنني قص الصور باستخدام هذا التطبيق؟ - نعم ، يمكنك اقتصاص الصور في المحرر ، عن طريق سحب زوايا الصورة. يمكنك الوصول إلى المحرر إما عن طريق الضغط لفترة طويلة على صورة مصغرة وتحديد تحرير ، أو تحديد تحرير من العرض بملء الشاشة. - Can I somehow group media file thumbnails? - Sure, just use the \"Group by\" menu item while at the thumbnails view. You can group files by multiple criteria, including Date Taken. If you use the \"Show all folders content\" function you can group them by folders too. - Sorting by Date Taken doesn\'t seem to work properly, how can I fix it? - It is most likely caused by the files being copied from somewhere. You can fix it by selecting the file thumbnails and selecting \"Fix Date Taken value\". - I see some color banding on the images. How can I improve the quality? - The current solution for displaying images works fine in the vast majority of cases, but if you want even better image quality, you can enable the \"Show images in the highest possible quality\" at the app settings, in the \"Deep zoomable images\" section. - I have hidden a file/folder. How can I unhide it? - You can either press the \"Temporarily show hidden items\" menu item at the main screen, or toggle \"Show hidden items\" in the app settings to see the hidden item. If you want to unhide it, just long press it and select \"Unhide\". Folders are hidden by adding a hidden \".nomedia\" file into them, you can delete the file with any file manager too. - Why does the app take up so much space? - App cache can take up to 250MB, it ensures quicker image loading. If the app is taking up even more space, it is most likely caused by you having items in the Recycle Bin. Those files count to the app size. You can clear the Recycle bin by opening it and deleting all files, or from the app settings. Every file in the Bin is deleted automatically after 30 days. + كيف يمكنني جعل تطبيق الاستديو معرض الجهاز الإفتراضي ؟ + أولا، يجب عليك العثور على المعرض الإفتراضي الحالي في قسم "التطبيقات" من إعدادات الجهاز، أبحث عن زر يقول شيئاً مثل \"فتح كافتراضي/"، ثم أنقر عليه، ثم حدد \"مسح الإعدادات الإفتراضية\". في المرة القادمة التي ستحاول فيها فتح صورة أو مقطع فيديو يجب أن تري إختيار تطبيق، حيث يمكنك تحديد تطبيق "الاستديو" وجعله التطبيق الإفتراضي. + لقد أغلقت التطبيق بكلمة مرور، لكنني نسيت ذلك. ماذا يمكنني أن أفعل؟ + يمكنك حلها بطريقتين. يمكنك أما إعادة تثبيت التطبيق أو أبحث عن التطبيق في اعدادات جهازك وحدد \"مسح البيانات\". سيتم إعادة تعيين كل إعداداتك، ولن يقوم بإزالة أي ملفات وسائط. + كيف يمكنني جعل ألبوماً يظهر دائماً في الأعلى ؟ + يمكنك الضغط مطولاً علي الألبوم المطلوب وحدد أيقونة "التثبيت" في قائمة الإجراءات، التي ستقوم بتثبيته في الأعلي. يمكنك تثبيت مجلدات متعددة أيضا، سيتم فرز العناصر المثبتة حسب طريقة الفرز الإفتراضية. + كيف يمكنني تسريع مقاطع الفيديو؟ + يمكنك إما سحب إصبعك أفقياً على مشغل الفيديو، أو النقر على نصوص المدة الحالية أو أقصي مدة النصوص بالقرب من شريط التحكم (seekbar) . هذا سوف يحرك الفيديو إما إلى الخلف، أو إلى الأمام. + ما هو الفرق بين إخفاء المجلد وإستبعاده ؟ + الإستبعاد يمنع عرض المجلد فقط في الاستديو، بينما الإخفاء يعمل على مستوى النظام ويخفي المجلد من المعارض الأخرى أيضاً. يعمل عن طريق إنشاء ملف فارغ \ ".nomedia \" في المجلد المحدد ، والذي يمكنك إزالته بعد ذلك بواسطة أي مدير ملفات أيضًا. + لماذا تظهر المجلدات مع صورة غلاف الموسيقى أو الملصقات؟ + قد يحدث أن ترى بعض الألبومات غير العادية تظهر. يمكنك بسهولة إستبعادهم بالضغط مطولاً عليهم وأختر إستبعاد. في مربع الحوار التالي يمكنك بعد ذلك تحديد المجلد الاصل، من المحتمل ان يمنع ظهور الألبومات الأخري ذات الصلة أيضاً. + المجلد الذي به صور لا يظهر، أو لا يظهر كل العناصر. ماذا يمكنني أن أفعل؟ + قد يكون لهذا عدة أسباب، ولكن حل هذه المشكلة أمر سهل. فقط أذهب إلى الإعدادات -> إدارة المجلدات المضمنة، وأختر علامة زائد (+) وأنتقل إلى المجلد المطلوب. + ماذا أفعل لو كنت أريد بعض المجلدات المحددة مرئية فقط؟ + إضافة مجلد إلى المجلدات المضمنة لا يستبعد تلقائياً أي شيء. ما يمكنك القيام به هو الإنتقال إلى الإعدادات -> إدارة المجلدات المستبعدة، إستبعاد المجلد الأصل \"/\"، ثم إضافة المجلدات المطلوبة في الإعدادات -> إدارة المجلدات المضمنة. سيؤدي ذلك إلى جعل المجلدات المحددة مرئية فقط، حيث أن كل من الاستبعاد والتضمين منعكسين وإذا كان أحد المجلدات مستبعداً ومضمن معاً، فسوف يظهر. + هل يمكنني إقتصاص الصور باستخدام هذا التطبيق؟ + نعم ، يمكنك إقتصاص الصور في المحرر ، عن طريق سحب زوايا الصورة. يمكنك الوصول إلى المحرر إما بالضغط مطولاً على الصورة المصغرة وأختر تعديل ، أو أختر تعديل من عرض ملء الشاشة. + هل يمكنني بطريقة ما تجميع الصور المصغرة لملف الوسائط؟ + بالتأكيد، فقط تستخدم عنصر القائمة \"تجميع حسب\" أثناء عرض الصور المصغرة.يمكنك تجميع الملفات حسب معايير متعددة، بما في ذلك تاريخ الإلتقاط. إذا كنت تستخدم وظيفة \"إظهار كل محتويات المجلدات\" فيمكنك تجميعها حسب المجلدات أيضا. + يبدو ان الفرز حسب تاريخ الإلتقاط لا يعمل بشكل صحيح، كيف يمكنني إصلاحه؟ + غالباً ما يكون ذلك بسبب الملفات التي يتم نسخها من مكان ما. يمكنك اصلاحه عن طريق تحديد الصور المصغرة للملف وأختر \"إصلاح تاريخ إلتقاط القيمة\". + أرى بعض التباين اللونى على الصور. كيف يمكنني تحسين الجودة؟ + الحل الحالي لعرض الصور يعمل بشكل جيد في الأغلبية العظمي للحالات، ولكن إذا كنت تريد تحسين جودة الصور، يمكنك تمكين خيار \"عرض الصور بأعلي جودة ممكنة\" من اعدادات التطبيق، من قسم \"الصور العميقة القابلة للتكبير\". + لقد قمت بإخفاء ملف/مجلد. كيف يمكنني إظهاره؟ + يمكنك أما أن تضغط علي عنصر القائمة "إظهار العناصر المخفية مؤقتاً" علي الشاشه الرئيسية أو تفعيل خيار \"إظهار العناصر المخفية" في إعدادات التطبيق لرؤية العنصر المخفي. إذا كنت تريد إظهاره ، فقط أضغط مطولاً عليه وأختر \" إظهار\". يتم إخفاء المجلدات عن طريق إضافة ملف مخفي ". nomedia/" إليهم، يمكنك حذف الملف بواسطة أي مدير ملفات أيضاً. + لماذا يشغل التطبيق مساحة كبيرة؟ + يمكن لذاكرة التخزين المؤقت للتطبيق أن تصل سعتها إلى 250 ميجابايت، ، مما يضمن سرعة تحميل الصور. إذا كان التطبيق يشغل مساحة أكبر ، فمن المحتمل أن يكون ذلك بسبب وجود عناصر في "سلة المحذوفات". يتم حساب هذه الملفات إلى حجم التطبيق. يمكنك مسح "سلة المحذوفات" عن طريق فتحها وحذف جميع الملفات ، أو من إعدادات التطبيق. يتم حذف كل ملف في "سلة المحذوفات" تلقائياً بعد 30 يوماً. - - Simple Gallery Pro - Photo Manager & Editor + + المعرض البسيط الـ Pro - محرر ومدير الصور - Browse your memories without any interruptions. + تصفح ذكرياتك دون اي انقطاع. - Simple Gallery Pro is a highly customizable offline gallery. Organize & edit your photos, recover deleted files with the recycle bin, protect & hide files and view a huge variety of different photo & video formats including RAW, SVG and much more. + (تطبيق المعرض البسيط الـ Pro) هو معرض بدون إنترنت قابل للتخصيص بدرجة كبيرة يتمتع بتنظيم الصور وتحريرها وإستعادة الملفات المحذوفة من خلال "سلة المحذوفات" وحماية الملفات وإخفاؤها وعرض مجموعة كبيرة من تنسيقات الصور والفيديو المختلفة بما في ذلك تنسيقات RAW و SVG وغير ذلك الكثير. - The app contains no ads and unnecessary permissions. As the app doesn’t require internet access either, your privacy is protected. + لا يحتوي التطبيق على إعلانات وأذونات غير ضرورية. نظراً لأن التطبيق لا يتطلب الوصول إلى الإنترنت أيضاً ، فإن خصوصيتك محمية. ------------------------------------------------- - SIMPLE GALLERY PRO – FEATURES + المعرض البسيط الـ Pro - الميزات ------------------------------------------------- - • Offline gallery with no ads or popups - • Simple gallery photo editor – crop, rotate, resize, draw, filters & more - • No internet access needed, giving you more privacy and security - • No unnecessary permissions required - • Quickly search images, videos & files - • Open & view many different photo and video types (RAW, SVG, panoramic etc) - • A variety of intuitive gestures to easily edit & organize files - • Lots of ways to filter, group & sort files - • Customize the appearance of Simple Gallery Pro - • Available in 32 languages - • Mark files as favorites for quick access - • Protect your photos & videos with a pattern, pin or fingerprint - • Use pin, pattern & fingerprint to protect the app launch or specific functions too - • Recover deleted photos & videos from the recycle bin - • Toggle visibility of files to hide photos & videos - • Create a customizable slideshow of your files - • View detailed information of your files (resolution, EXIF values etc) - • Simple Gallery Pro is open source - … and much much more! + معرض بدون إنترنت بدون إعلانات أو نوافذ منبثقة + • محرر صور (معرض البسيط) - قص، تدوير، تغيير حجم، رسم، فلاتر وغير ذلك + • لا حاجة للوصول إلى الإنترنت، مما يمنحك المزيد من الخصوصية والأمان - PHOTO GALLERY EDITOR - Simple Gallery Pro makes it easy to edit your pictures on the fly. Crop, flip, rotate and resize your pictures. If you’re feeling a little more creative you can add filters and draw on your pictures! + • لا توجد أذونات غير ضرورية مطلوبة + • البحث بسرعة عن الصور ومقاطع الفيديو والملفات + • فتح وعرض العديد من أنواع مختلفة من الصور والفيديو (RAW ، SVG ، بانورامية الخ) + • مجموعة متنوعة من الإيماءات البسيطة لتحرير الملفات وتنظيمها بسهولة + • الكثير من الطرق لفلترة الملفات وتجميعها وفرزها + • تخصيص مظهر للتطبيق + • متوفر بـ ٣٢ لغة + • وضع علامة علي الملفات كمفضلة للوصول السريع + • تمتع بحماية صورك ومقاطع الفيديو باستخدام نمط أو رمز PIN أو بصمة إصبع + • أستخدم رمز الـ PIN والنقش وبصمة الاصبع لحماية تشغيل التطبيق أو وظائف معينة أيضاً + • إستعادة الصور ومقاطع الفيديو المحذوفة من "سلة المحذوفات" + • تبديل رؤية الملفات لإخفاء الصور ومقاطع الفيديو + • إنشاء عرض شرائح قابل للتخصيص لملفاتك + • عرض معلومات تفصيلية لملفاتك (دقة الوضوح، قيم EXIF، إلخ) + • تطبيق المعرض هو مصدر مفتوح + … والكثير الكثير! + محرر معرض الصور + يساعد (تطبيق المعرض البسيط الـ Pro ) على تسهيل تحرير الصور بسرعة فائقة. قص الصور وقلبها وتدويرها وتغيير حجمها. إذا كنت تشعر بقدر أكبر من الإبداع، يمكنك إضافة الفلاتر والرسم على صورك! - SUPPORT FOR MANY FILE TYPES - Unlike some other gallery viewers & photo organizers, Simple Gallery Pro supports a huge range of different file types including JPEG, PNG, MP4, MKV, RAW, SVG, Panoramic photos, Panoramic videos and many more. - HIGHLY CUSTOMIZABLE GALLERY MANAGER - From the UI to the function buttons on the bottom toolbar, Simple Gallery Pro is highly customizable and works the way you want it to. No other gallery manager has this kind of flexibility! Thanks to being open source, we’re also available in 32 languages! + يدعم العديد من انواع الملفات + على عكس بعض تطبيقات معرض الصور الأخري ومنظمي الصور ، يدعم (تطبيق المعرض البسيط الـ Pro )مجموعة كبيرة من أنواع الملفات المختلفة بما في ذلك JPEG و PNG و MP4 و MKV و RAW و SVG والصور البانورامية ومقاطع الفيديو البانورامية وغيرها الكثير. - RECOVER DELETED PHOTOS & VIDEOS - Accidentally deleted a precious photo or video? Don’t worry! Simple Gallery Pro features a handy recycle bin where you can recover deleted photos & videos easily. + مدير معرض الصور القابل للتخصيص بدرجة كبيرة + بدءاً من واجهة المستخدم وحتى أزرار الوظائف الموجودة على شريط الأدوات السفلي، يتسم (تطبيق المعرض البسيط الـ Pro ) بأنه قابل للتخصيص بدرجة كبيرة ويعمل بالطريقة التي تريدها في الإستخدام. لا يوجد أي مدير معرض آخر يتمتع بهذا النوع من المرونة! بفضل كونه مفتوح المصدر ، نحن متاحون أيضاً بـ 32 لغة! - PROTECT & HIDE PHOTOS, VIDEOS & FILES - Using pin, pattern or your device’s fingerprint scanner you can protect and hide photos, videos & entire albums. You can protect the app itself or place locks on specific functions of the app. For example, you can’t delete a file without a fingerprint scan, helping to protect your files from accidental deletion. + إسترداد الصور ومقاطع الفيديو المحذوفة + حذف صورة أو فيديو ثمين عن طريق الخطأ لا تقلق نظراً لأن(تطبيق المعرض البسيط الـ Pro) يتميز بسلة محذوفات سهلة الاستخدام يمكنك من خلالها إسترداد الصور ومقاطع الفيديو المحذوفة بسهولة. - Check out the full suite of Simple Tools here: + حماية وإخفاء الصور والفيديوهات والملفات + باستخدام رمز الـ PIN أو النمط أو الماسح الضوئي لبصمة الاصبع لجهازك يمكنك حماية الصور ومقاطع الفيديو والألبومات بأكملها وإخفائها. يمكنك حماية التطبيق نفسه أو وضع قفل الأمان علي وظائف معينة للتطبيق علي سبيل المثال، لا يمكنك حذف ملف دون إجراء مسح ضوئي لبصمة الاصبع، مما يساعد علي حماية ملفاتك من الحذف غير المقصود. + + أطلع على المجموعة الكاملة من الأدوات البسيطة هنا: https://www.simplemobiletools.com - Facebook: + موقع مستقل لتطبيق المعرض البسيط الـ Pro : + https://www.simplemobiletools.com/gallery + + الفيسبوك: https://www.facebook.com/simplemobiletools - Reddit: + موقع رديت: https://www.reddit.com/r/SimpleMobileTools diff --git a/fastlane/metadata/android/ar/full_description.txt b/fastlane/metadata/android/ar/full_description.txt new file mode 100644 index 000000000..1bbc1f5a9 --- /dev/null +++ b/fastlane/metadata/android/ar/full_description.txt @@ -0,0 +1,55 @@ + + +لا يحتوي التطبيق على إعلانات وأذونات غير ضرورية. نظراً لأن التطبيق لا يتطلب الوصول إلى الإنترنت أيضاً ، فإن خصوصيتك محمية. + +------------------------------------------------- +المعرض البسيط الـ Pro - الميزات +------------------------------------------------- + +معرض بدون إنترنت بدون إعلانات أو نوافذ منبثقة +• محرر صور (معرض البسيط) - قص، تدوير، تغيير حجم، رسم، فلاتر وغير ذلك +• لا حاجة للوصول إلى الإنترنت، مما يمنحك المزيد من الخصوصية والأمان + +• لا توجد أذونات غير ضرورية مطلوبة +• البحث بسرعة عن الصور ومقاطع الفيديو والملفات +• فتح وعرض العديد من أنواع مختلفة من الصور والفيديو (RAW ، SVG ، بانورامية الخ) +• مجموعة متنوعة من الإيماءات البسيطة لتحرير الملفات وتنظيمها بسهولة +• الكثير من الطرق لفلترة الملفات وتجميعها وفرزها +• تخصيص مظهر للتطبيق +• متوفر بـ ٣٢ لغة +• وضع علامة علي الملفات كمفضلة للوصول السريع +• تمتع بحماية صورك ومقاطع الفيديو باستخدام نمط أو رمز PIN أو بصمة إصبع +• أستخدم رمز الـ PIN والنقش وبصمة الاصبع لحماية تشغيل التطبيق أو وظائف معينة أيضاً +• إستعادة الصور ومقاطع الفيديو المحذوفة من "سلة المحذوفات" +• تبديل رؤية الملفات لإخفاء الصور ومقاطع الفيديو +• إنشاء عرض شرائح قابل للتخصيص لملفاتك +• عرض معلومات تفصيلية لملفاتك (دقة الوضوح، قيم EXIF، إلخ) +• تطبيق المعرض هو مصدر مفتوح +… والكثير الكثير! +محرر معرض الصور +يساعد (تطبيق المعرض البسيط الـ Pro ) على تسهيل تحرير الصور بسرعة فائقة. قص الصور وقلبها وتدويرها وتغيير حجمها. إذا كنت تشعر بقدر أكبر من الإبداع، يمكنك إضافة الفلاتر والرسم على صورك! + + +يدعم العديد من انواع الملفات +على عكس بعض تطبيقات معرض الصور الأخري ومنظمي الصور ، يدعم (تطبيق المعرض البسيط الـ Pro )مجموعة كبيرة من أنواع الملفات المختلفة بما في ذلك JPEG و PNG و MP4 و MKV و RAW و SVG والصور البانورامية ومقاطع الفيديو البانورامية وغيرها الكثير. + +مدير معرض الصور القابل للتخصيص بدرجة كبيرة +بدءاً من واجهة المستخدم وحتى أزرار الوظائف الموجودة على شريط الأدوات السفلي، يتسم (تطبيق المعرض البسيط الـ Pro ) بأنه قابل للتخصيص بدرجة كبيرة ويعمل بالطريقة التي تريدها في الإستخدام. لا يوجد أي مدير معرض آخر يتمتع بهذا النوع من المرونة! بفضل كونه مفتوح المصدر ، نحن متاحون أيضاً بـ 32 لغة! + +إسترداد الصور ومقاطع الفيديو المحذوفة +حذف صورة أو فيديو ثمين عن طريق الخطأ لا تقلق نظراً لأن(تطبيق المعرض البسيط الـ Pro) يتميز بسلة محذوفات سهلة الاستخدام يمكنك من خلالها إسترداد الصور ومقاطع الفيديو المحذوفة بسهولة. + +حماية وإخفاء الصور والفيديوهات والملفات +باستخدام رمز الـ PIN أو النمط أو الماسح الضوئي لبصمة الاصبع لجهازك يمكنك حماية الصور ومقاطع الفيديو والألبومات بأكملها وإخفائها. يمكنك حماية التطبيق نفسه أو وضع قفل الأمان علي وظائف معينة للتطبيق علي سبيل المثال، لا يمكنك حذف ملف دون إجراء مسح ضوئي لبصمة الاصبع، مما يساعد علي حماية ملفاتك من الحذف غير المقصود. + +أطلع على المجموعة الكاملة من الأدوات البسيطة هنا: +https://www.simplemobiletools.com + +موقع مستقل لتطبيق المعرض البسيط الـ Pro : +https://www.simplemobiletools.com/gallery + +الفيسبوك: +https://www.facebook.com/simplemobiletools + +موقع رديت: +https://www.reddit.com/r/SimpleMobileTools diff --git a/fastlane/metadata/android/ar/short_description.txt b/fastlane/metadata/android/ar/short_description.txt new file mode 100644 index 000000000..3081b0253 --- /dev/null +++ b/fastlane/metadata/android/ar/short_description.txt @@ -0,0 +1 @@ +تصفح ذكرياتك دون اي انقطاع. diff --git a/fastlane/metadata/android/ar/title.txt b/fastlane/metadata/android/ar/title.txt new file mode 100644 index 000000000..9143c5c30 --- /dev/null +++ b/fastlane/metadata/android/ar/title.txt @@ -0,0 +1 @@ +المعرض البسيط الـ Pro - محرر ومدير الصور From a2ef729170afb49cdf7d392d444a42813f98c094 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 16 Nov 2019 08:46:39 +0100 Subject: [PATCH 11/53] removing a debug toast --- .../com/simplemobiletools/gallery/pro/activities/MainActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt index df273bec1..ce6615589 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt @@ -1144,7 +1144,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { dirs.removeAll(invalidDirs) setupAdapter(dirs) invalidDirs.forEach { - toast("invalid ${it.path}", Toast.LENGTH_LONG) try { mDirectoryDao.deleteDirPath(it.path) } catch (ignored: Exception) { From 3cc6ac90d1b6fdfc9f4ccdee77e055c165b1a717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Marques?= Date: Mon, 18 Nov 2019 22:43:31 +0000 Subject: [PATCH 12/53] Update strings.xml --- app/src/main/res/values-pt/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 3afb56f68..3fcf1c1fb 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -237,11 +237,11 @@ Simple Gallery Pro - Editor e gestor de fotos - Browse your memories without any interruptions. + Explore as suas memórias sem interrupções. Simple Gallery Pro é uma aplicação local para gerir fotos e vídeos. Pode organizar e editar as suas fotos, recuperar ficheiros através da reciclagem, proteger e ocultar ficheiros e ver imagens e vídeos disponíveis em vários formatos tais como RAW, SVG e muito mais. - A aplicação não tem anúncios nem pede permissões desnecessárias. Uma vez que também não precisa de aceder à Internet, os seus ficheiros estão protegidos. + A aplicação não tem anúncios nem permissões desnecessárias. Uma vez que também não precisa de aceder à Internet, os seus ficheiros estão protegidos. ------------------------------------------------- SIMPLE GALLERY PRO – FUNCIONALIDADES From df4a6902c88ffbeededd3020315d8e88afd4b095 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 19 Nov 2019 10:51:41 +0100 Subject: [PATCH 13/53] updating fastlane portugal app data --- fastlane/metadata/android/pt-rPT/full_description.txt | 2 +- fastlane/metadata/android/pt-rPT/short_description.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fastlane/metadata/android/pt-rPT/full_description.txt b/fastlane/metadata/android/pt-rPT/full_description.txt index 51ff06a56..a2fc0ade0 100644 --- a/fastlane/metadata/android/pt-rPT/full_description.txt +++ b/fastlane/metadata/android/pt-rPT/full_description.txt @@ -1,6 +1,6 @@ Simple Gallery Pro é uma aplicação local para gerir fotos e vídeos. Pode organizar e editar as suas fotos, recuperar ficheiros através da reciclagem, proteger e ocultar ficheiros e ver imagens e vídeos disponíveis em vários formatos tais como RAW, SVG e muito mais. -A aplicação não tem anúncios nem pede permissões desnecessárias. Uma vez que também não precisa de aceder à Internet, os seus ficheiros estão protegidos. +A aplicação não tem anúncios nem permissões desnecessárias. Uma vez que também não precisa de aceder à Internet, os seus ficheiros estão protegidos. ------------------------------------------------- SIMPLE GALLERY PRO – FUNCIONALIDADES diff --git a/fastlane/metadata/android/pt-rPT/short_description.txt b/fastlane/metadata/android/pt-rPT/short_description.txt index 0c6cb387c..3ebb2c472 100644 --- a/fastlane/metadata/android/pt-rPT/short_description.txt +++ b/fastlane/metadata/android/pt-rPT/short_description.txt @@ -1 +1 @@ -Sem anúncios. Organize, edite, recupere e protega os seus vídeos e fotos +Explore as suas memórias sem interrupções. From 6c47bcc6f1770fc42d98ac832ddde9b47f5ad69f Mon Sep 17 00:00:00 2001 From: Tibor Kaputa Date: Thu, 21 Nov 2019 09:12:27 +0100 Subject: [PATCH 14/53] Create FUNDING.yml --- .github/FUNDING.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..a22a788a2 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +github: [tibbi] +patreon: tiborkaputa From 948e5c934a3ea86e91a27e435cbbb38dd21ea489 Mon Sep 17 00:00:00 2001 From: Tibor Kaputa Date: Thu, 21 Nov 2019 09:20:07 +0100 Subject: [PATCH 15/53] Update FUNDING.yml --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index a22a788a2..bef563799 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,3 @@ github: [tibbi] patreon: tiborkaputa +custom: ["https://www.paypal.me/SimpleMobileTools", "https://www.simplemobiletools.com/donate"] From 7affe4f6afff034079b3a7de2b0e05bd666f981e Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 22 Nov 2019 15:49:02 +0100 Subject: [PATCH 16/53] adding some crashfixes at fullscreen fragments --- .../simplemobiletools/gallery/pro/fragments/PhotoFragment.kt | 2 +- .../simplemobiletools/gallery/pro/fragments/VideoFragment.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt index 60d85a7aa..10f85ce02 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt @@ -771,7 +771,7 @@ class PhotoFragment : ViewPagerFragment() { this.mIsFullscreen = isFullscreen mView.apply { photo_details.apply { - if (mStoredShowExtendedDetails && isVisible()) { + if (mStoredShowExtendedDetails && isVisible() && context != null) { animate().y(getExtendedDetailsY(height)) if (mStoredHideExtendedDetails) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index e3bd29731..df99218b9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -460,7 +460,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mTimeHolder.animate().alpha(newAlpha).start() mView.video_details.apply { - if (mStoredShowExtendedDetails && isVisible()) { + if (mStoredShowExtendedDetails && isVisible() && context != null) { animate().y(getExtendedDetailsY(height)) if (mStoredHideExtendedDetails) { From 67d4c1ecbeb50918c3475884506666100b1523fa Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 22 Nov 2019 18:31:37 +0100 Subject: [PATCH 17/53] updating commons and kotlin --- app/build.gradle | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c227ecb40..36a02edb3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.19.12' + implementation 'com.simplemobiletools:commons:5.19.15' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' diff --git a/build.gradle b/build.gradle index d28a976a8..8def24ddc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.3.60' repositories { google() From 1d0f129e85031076cd69607f87908f43b2308b03 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 25 Nov 2019 22:41:57 +0100 Subject: [PATCH 18/53] adding some exclamation marks in preparation for sdk 29 --- .../gallery/pro/activities/EditActivity.kt | 18 +++++++++--------- .../gallery/pro/activities/MainActivity.kt | 18 +++++++++--------- .../pro/activities/PhotoVideoActivity.kt | 12 ++++++------ .../pro/activities/SetWallpaperActivity.kt | 2 +- .../pro/activities/ViewPagerActivity.kt | 2 +- .../gallery/pro/extensions/Activity.kt | 4 ++-- .../gallery/pro/helpers/Config.kt | 14 +++++++------- .../gallery/pro/helpers/MediaFetcher.kt | 2 +- 8 files changed, 36 insertions(+), 36 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt index d96a77c50..8d3532271 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/EditActivity.kt @@ -145,7 +145,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener return } - uri = intent.data + uri = intent.data!! if (uri.scheme != "file" && uri.scheme != "content") { toast(R.string.unknown_file_location) finish() @@ -153,9 +153,9 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener } if (intent.extras?.containsKey(REAL_FILE_PATH) == true) { - val realPath = intent.extras.getString(REAL_FILE_PATH) + val realPath = intent.extras!!.getString(REAL_FILE_PATH) uri = when { - isPathOnOTG(realPath) -> uri + isPathOnOTG(realPath!!) -> uri realPath.startsWith("file:/") -> Uri.parse(realPath) else -> Uri.fromFile(File(realPath)) } @@ -305,7 +305,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener try { if (isNougatPlus()) { inputStream = contentResolver.openInputStream(uri) - oldExif = ExifInterface(inputStream) + oldExif = ExifInterface(inputStream!!) } } catch (e: Exception) { } finally { @@ -317,7 +317,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener } else if (editor_draw_canvas.isVisible()) { val bitmap = editor_draw_canvas.getBitmap() if (saveUri.scheme == "file") { - SaveAsDialog(this, saveUri.path, true) { + SaveAsDialog(this, saveUri.path!!, true) { saveBitmapToFile(bitmap, it, true) } } else if (saveUri.scheme == "content") { @@ -643,7 +643,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener } private fun applyFilter(filterItem: FilterItem) { - val newBitmap = Bitmap.createBitmap(filterInitialBitmap) + val newBitmap = Bitmap.createBitmap(filterInitialBitmap!!) default_image_view.setImageBitmap(filterItem.filter.processFilter(newBitmap)) } @@ -748,7 +748,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener if (isCropIntent) { if (saveUri.scheme == "file") { - saveBitmapToFile(bitmap, saveUri.path, true) + saveBitmapToFile(bitmap, saveUri.path!!, true) } else { var inputStream: InputStream? = null var outputStream: OutputStream? = null @@ -757,7 +757,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener bitmap.compress(CompressFormat.JPEG, 100, stream) inputStream = ByteArrayInputStream(stream.toByteArray()) outputStream = contentResolver.openOutputStream(saveUri) - inputStream.copyTo(outputStream) + inputStream.copyTo(outputStream!!) } finally { inputStream?.close() outputStream?.close() @@ -771,7 +771,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener finish() } } else if (saveUri.scheme == "file") { - SaveAsDialog(this, saveUri.path, true) { + SaveAsDialog(this, saveUri.path!!, true) { saveBitmapToFile(bitmap, it, true) } } else if (saveUri.scheme == "content") { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt index ce6615589..37b9a8c46 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt @@ -723,10 +723,10 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { private fun isGetContentIntent(intent: Intent) = intent.action == Intent.ACTION_GET_CONTENT && intent.type != null private fun isGetImageContentIntent(intent: Intent) = isGetContentIntent(intent) && - (intent.type.startsWith("image/") || intent.type == MediaStore.Images.Media.CONTENT_TYPE) + (intent.type!!.startsWith("image/") || intent.type == MediaStore.Images.Media.CONTENT_TYPE) private fun isGetVideoContentIntent(intent: Intent) = isGetContentIntent(intent) && - (intent.type.startsWith("video/") || intent.type == MediaStore.Video.Media.CONTENT_TYPE) + (intent.type!!.startsWith("video/") || intent.type == MediaStore.Video.Media.CONTENT_TYPE) private fun isGetAnyContentIntent(intent: Intent) = isGetContentIntent(intent) && intent.type == "*/*" @@ -773,14 +773,14 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } private fun fillExtraOutput(resultData: Intent): Uri? { - val file = File(resultData.data.path) + val file = File(resultData.data!!.path!!) var inputStream: InputStream? = null var outputStream: OutputStream? = null try { - val output = intent.extras.get(MediaStore.EXTRA_OUTPUT) as Uri + val output = intent.extras!!.get(MediaStore.EXTRA_OUTPUT) as Uri inputStream = FileInputStream(file) outputStream = contentResolver.openOutputStream(output) - inputStream.copyTo(outputStream) + inputStream.copyTo(outputStream!!) } catch (e: SecurityException) { showErrorToast(e) } catch (ignored: FileNotFoundException) { @@ -794,8 +794,8 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } private fun fillPickedPaths(resultData: Intent, resultIntent: Intent) { - val paths = resultData.extras.getStringArrayList(PICKED_PATHS) - val uris = paths.map { getFilePublicUri(File(it), BuildConfig.APPLICATION_ID) } as ArrayList + val paths = resultData.extras!!.getStringArrayList(PICKED_PATHS) + val uris = paths!!.map { getFilePublicUri(File(it), BuildConfig.APPLICATION_ID) } as ArrayList val clipData = ClipData("Attachment", arrayOf("image/*", "video/*"), ClipData.Item(uris.removeAt(0))) uris.forEach { @@ -808,8 +808,8 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { private fun fillIntentPath(resultData: Intent, resultIntent: Intent) { val data = resultData.data - val path = if (data.toString().startsWith("/")) data.toString() else data.path - val uri = getFilePublicUri(File(path), BuildConfig.APPLICATION_ID) + val path = if (data.toString().startsWith("/")) data.toString() else data!!.path + val uri = getFilePublicUri(File(path!!), BuildConfig.APPLICATION_ID) val type = path.getMimeType() resultIntent.setDataAndTypeAndNormalize(uri, type) resultIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt index 409dbdd35..71080ca0d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt @@ -114,10 +114,10 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList if (mUri!!.scheme == "file") { if (filename.contains('.')) { bottom_actions.beGone() - handleLockedFolderOpening(mUri!!.path.getParentPath()) { success -> + handleLockedFolderOpening(mUri!!.path!!.getParentPath()) { success -> if (success) { - rescanPaths(arrayListOf(mUri!!.path)) - sendViewPagerIntent(mUri!!.path) + rescanPaths(arrayListOf(mUri!!.path!!)) + sendViewPagerIntent(mUri!!.path!!) } finish() } @@ -130,7 +130,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList bottom_actions.beGone() handleLockedFolderOpening(path.getParentPath()) { success -> if (success) { - rescanPaths(arrayListOf(mUri!!.path)) + rescanPaths(arrayListOf(mUri!!.path!!)) sendViewPagerIntent(path) } finish() @@ -154,7 +154,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList } mIsVideo = type == TYPE_VIDEOS - mMedium = Medium(null, filename, mUri.toString(), mUri!!.path.getParentPath(), 0, 0, file.length(), type, 0, false, 0L) + mMedium = Medium(null, filename, mUri.toString(), mUri!!.path!!.getParentPath(), 0, 0, file.length(), type, 0, false, 0L) supportActionBar?.title = mMedium!!.name bundle.putSerializable(MEDIUM, mMedium) @@ -272,7 +272,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList } private fun showProperties() { - PropertiesDialog(this, mUri!!.path) + PropertiesDialog(this, mUri!!.path!!) } private fun isFileTypeVisible(path: String): Boolean { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt index 56d5d01cd..a6941c2b4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SetWallpaperActivity.kt @@ -63,7 +63,7 @@ class SetWallpaperActivity : SimpleActivity(), CropImageView.OnCropImageComplete } private fun handleImage(intent: Intent) { - uri = intent.data + uri = intent.data!! if (uri.scheme != "file" && uri.scheme != "content") { toast(R.string.unknown_file_location) finish() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index f521b1f99..845235403 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -258,7 +258,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } if (intent.extras?.containsKey(REAL_FILE_PATH) == true) { - mPath = intent.extras.getString(REAL_FILE_PATH) + mPath = intent.extras!!.getString(REAL_FILE_PATH)!! } if (mPath.isEmpty()) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt index 438487891..f4254781a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt @@ -237,12 +237,12 @@ fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList, mediumDao try { val destination = "$recycleBinPath/$source" val fileDocument = getSomeDocumentFile(source) - inputStream = applicationContext.contentResolver.openInputStream(fileDocument?.uri) + inputStream = applicationContext.contentResolver.openInputStream(fileDocument?.uri!!) out = getFileOutputStreamSync(destination, source.getMimeType()) var copiedSize = 0L val buffer = ByteArray(DEFAULT_BUFFER_SIZE) - var bytes = inputStream.read(buffer) + var bytes = inputStream!!.read(buffer) while (bytes >= 0) { out!!.write(buffer, 0, bytes) copiedSize += bytes diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt index 4b083aad3..6d126dbce 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt @@ -94,7 +94,7 @@ class Config(context: Context) : BaseConfig(context) { set(isThirdPartyIntent) = prefs.edit().putBoolean(IS_THIRD_PARTY_INTENT, isThirdPartyIntent).apply() var pinnedFolders: Set - get() = prefs.getStringSet(PINNED_FOLDERS, HashSet()) + get() = prefs.getStringSet(PINNED_FOLDERS, HashSet())!! set(pinnedFolders) = prefs.edit().putStringSet(PINNED_FOLDERS, pinnedFolders).apply() var showAll: Boolean @@ -133,7 +133,7 @@ class Config(context: Context) : BaseConfig(context) { } var excludedFolders: MutableSet - get() = prefs.getStringSet(EXCLUDED_FOLDERS, HashSet()) + get() = prefs.getStringSet(EXCLUDED_FOLDERS, HashSet())!! set(excludedFolders) = prefs.edit().remove(EXCLUDED_FOLDERS).putStringSet(EXCLUDED_FOLDERS, excludedFolders).apply() fun addIncludedFolder(path: String) { @@ -155,7 +155,7 @@ class Config(context: Context) : BaseConfig(context) { } var includedFolders: MutableSet - get() = prefs.getStringSet(INCLUDED_FOLDERS, HashSet()) + get() = prefs.getStringSet(INCLUDED_FOLDERS, HashSet())!! set(includedFolders) = prefs.edit().remove(INCLUDED_FOLDERS).putStringSet(INCLUDED_FOLDERS, includedFolders).apply() var autoplayVideos: Boolean @@ -263,7 +263,7 @@ class Config(context: Context) : BaseConfig(context) { else R.integer.media_columns_vertical_scroll) var albumCovers: String - get() = prefs.getString(ALBUM_COVERS, "") + get() = prefs.getString(ALBUM_COVERS, "")!! set(albumCovers) = prefs.edit().putString(ALBUM_COVERS, albumCovers).apply() fun parseAlbumCovers(): ArrayList { @@ -320,7 +320,7 @@ class Config(context: Context) : BaseConfig(context) { set(loopSlideshow) = prefs.edit().putBoolean(SLIDESHOW_LOOP, loopSlideshow).apply() var tempFolderPath: String - get() = prefs.getString(TEMP_FOLDER_PATH, "") + get() = prefs.getString(TEMP_FOLDER_PATH, "")!! set(tempFolderPath) = prefs.edit().putString(TEMP_FOLDER_PATH, tempFolderPath).apply() var viewTypeFolders: Int @@ -348,7 +348,7 @@ class Config(context: Context) : BaseConfig(context) { set(wasNewAppShown) = prefs.edit().putBoolean(WAS_NEW_APP_SHOWN, wasNewAppShown).apply() var lastFilepickerPath: String - get() = prefs.getString(LAST_FILEPICKER_PATH, "") + get() = prefs.getString(LAST_FILEPICKER_PATH, "")!! set(lastFilepickerPath) = prefs.edit().putString(LAST_FILEPICKER_PATH, lastFilepickerPath).apply() var tempSkipDeleteConfirmation: Boolean @@ -412,7 +412,7 @@ class Config(context: Context) : BaseConfig(context) { // if a user hides a folder, then enables temporary hidden folder displaying, make sure we show it properly var everShownFolders: Set - get() = prefs.getStringSet(EVER_SHOWN_FOLDERS, getEverShownFolders()) + get() = prefs.getStringSet(EVER_SHOWN_FOLDERS, getEverShownFolders())!! set(everShownFolders) = prefs.edit().putStringSet(EVER_SHOWN_FOLDERS, everShownFolders).apply() private fun getEverShownFolders() = hashSetOf( diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt index a17eabeea..965771e9c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt @@ -61,7 +61,7 @@ class MediaFetcher(val context: Context) { val selection = "${getSelectionQuery(filterMedia)} ${MediaStore.Images.ImageColumns.BUCKET_ID} IS NOT NULL) GROUP BY (${MediaStore.Images.ImageColumns.BUCKET_ID}" val selectionArgs = getSelectionArgsQuery(filterMedia).toTypedArray() val cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null) - folders.addAll(parseCursor(cursor)) + folders.addAll(parseCursor(cursor!!)) val config = context.config val shouldShowHidden = config.shouldShowHidden From a1b390190e3881e6c915fd1d5873e4ce4f6485fd Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 27 Nov 2019 22:28:38 +0100 Subject: [PATCH 19/53] adding 2 more null checks --- .../simplemobiletools/gallery/pro/activities/MainActivity.kt | 2 +- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt index 37b9a8c46..9469474f2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt @@ -1114,7 +1114,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } else if (it.path != config.tempFolderPath) { val children = if (isPathOnOTG(it.path)) getOTGFolderChildrenNames(it.path) else File(it.path).list()?.asList() val hasMediaFile = children?.any { - it?.isMediaFile() == true || (File(it).isDirectory && it?.startsWith("img_", true) == true) + it?.isMediaFile() == true || (File(it!!).isDirectory && it.startsWith("img_", true)) } ?: false if (!hasMediaFile) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt index 81dd0e8e3..552b47339 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Context.kt @@ -251,7 +251,7 @@ fun Context.getDirectParentSubfolders(dirs: ArrayList, currentPathPre // /storage/emulated/0/Pictures/Screenshots, // but /storage/emulated/0/Pictures is empty, still Pictures with the first folders thumbnails and proper other info val parent = File(path).parent - if (!folders.contains(parent) && dirs.none { it.path == parent }) { + if (parent != null && !folders.contains(parent) && dirs.none { it.path == parent }) { currentPaths.add(parent) val isSortingAscending = config.sorting and SORT_DESCENDING == 0 val subDirs = dirs.filter { File(it.path).parent.equals(File(path).parent, true) } as ArrayList From d06a01ea32ce3ee2f2e2eb025cdbe6909b7ceb37 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 28 Nov 2019 21:51:32 +0100 Subject: [PATCH 20/53] adding some more exclamation marks --- .../com/simplemobiletools/gallery/pro/extensions/Activity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt index f4254781a..8d9885c7a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/Activity.kt @@ -612,7 +612,7 @@ fun Activity.getShortcutImage(tmb: String, drawable: Drawable, callback: () -> U fun Activity.showFileOnMap(path: String) { val exif = try { if (path.startsWith("content://") && isNougatPlus()) { - ExifInterface(contentResolver.openInputStream(Uri.parse(path))) + ExifInterface(contentResolver.openInputStream(Uri.parse(path))!!) } else { ExifInterface(path) } From 518126de3aead7d4aed981305dc6a18202abf18f Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 28 Nov 2019 21:56:26 +0100 Subject: [PATCH 21/53] updating some libraries --- app/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 36a02edb3..e64417351 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,12 +62,12 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.19.15' + implementation 'com.simplemobiletools:commons:5.20.2' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.18' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta3' implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6' implementation 'com.google.vr:sdk-panowidget:1.180.0' implementation 'com.google.vr:sdk-videowidget:1.180.0' @@ -80,7 +80,7 @@ dependencies { kapt 'com.github.bumptech.glide:compiler:4.10.0' - kapt 'androidx.room:room-compiler:2.2.1' - implementation 'androidx.room:room-runtime:2.2.1' - annotationProcessor 'androidx.room:room-compiler:2.2.1' + kapt 'androidx.room:room-compiler:2.2.2' + implementation 'androidx.room:room-runtime:2.2.2' + annotationProcessor 'androidx.room:room-compiler:2.2.2' } From c0da2ef6c6413707e1c32aca3b1e5f155a849755 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 28 Nov 2019 23:23:56 +0100 Subject: [PATCH 22/53] fix #1648, properly handle View intent with no data, launch main screen --- .../gallery/pro/activities/PhotoVideoActivity.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt index 71080ca0d..82ee18c29 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt @@ -71,6 +71,12 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList } private fun checkIntent(savedInstanceState: Bundle? = null) { + if (intent.data == null && intent.action == Intent.ACTION_VIEW) { + startActivity(Intent(this, MainActivity::class.java)) + finish() + return + } + mUri = intent.data ?: return val uri = mUri.toString() if (uri.startsWith("content:/") && uri.contains("/storage/")) { From 60473dfbea172da4f3ba237fc6c848df00758f54 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 28 Nov 2019 23:32:44 +0100 Subject: [PATCH 23/53] update version to 6.10.6 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e64417351..b677da847 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 272 - versionName "6.10.5" + versionCode 273 + versionName "6.10.6" multiDexEnabled true setProperty("archivesBaseName", "gallery") vectorDrawables.useSupportLibrary = true From c14be36fb8ce51f159c7edb870006aaeffb41fab Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 28 Nov 2019 23:32:51 +0100 Subject: [PATCH 24/53] updating changelog --- CHANGELOG.md | 6 ++++++ fastlane/metadata/android/en-US/changelogs/273.txt | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/273.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 66cae8cca..04fe4772a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ Changelog ========== +Version 6.10.6 *(2019-11-28)* +---------------------------- + + * Fixed some smaller glitches + * Added some stability, translation improvements + Version 6.10.5 *(2019-11-10)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/273.txt b/fastlane/metadata/android/en-US/changelogs/273.txt new file mode 100644 index 000000000..61c726b4b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/273.txt @@ -0,0 +1,2 @@ + * Fixed some smaller glitches + * Added some stability, translation improvements From d25246f2da8ff91a9edc3cbb03040b4bfb956688 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 30 Nov 2019 15:42:47 +0100 Subject: [PATCH 25/53] tweaking the changelog --- CHANGELOG.md | 2 +- fastlane/metadata/android/en-US/changelogs/273.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04fe4772a..575c4e12a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ Version 6.10.6 *(2019-11-28)* ---------------------------- * Fixed some smaller glitches - * Added some stability, translation improvements + * Added some stability and translation improvements Version 6.10.5 *(2019-11-10)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/273.txt b/fastlane/metadata/android/en-US/changelogs/273.txt index 61c726b4b..7f22492b0 100644 --- a/fastlane/metadata/android/en-US/changelogs/273.txt +++ b/fastlane/metadata/android/en-US/changelogs/273.txt @@ -1,2 +1,2 @@ * Fixed some smaller glitches - * Added some stability, translation improvements + * Added some stability and translation improvements From 54b8380533bc724359f264d7cfa6fe1db48c7cf4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 30 Nov 2019 16:31:46 +0100 Subject: [PATCH 26/53] updating some arabic strings --- app/src/main/res/values-ar/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 68c82be8d..3c4d36040 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -15,8 +15,8 @@ مجلد آخر عرض علي الخريطة موقع غير معروف - زيادة عدد السعادة - تقليل عدد السعادة + ذيادة عدد الأعمدة + تقليل عدد الأعمدة تغيير صورة الغلاف تحديد صورة إستخدام كإفتراضي @@ -26,14 +26,14 @@ فتح الاتجاه تغيير الاتجاه فرض الإتجاه العمودي - فرض الإتجاه الفقي + فرض الإتجاه الأفقي إستخدام الإتجاه الافتراضي إصلاح تاريخ إلتقاط القيمة جارٍ الإصلاح… تم إصلاح التواريخ بنجاح مشاركة الصورة الذي تم تغيير حجمها مرحباً,\n\nيبدو أنك قمت بترقية التطبيق المجاني القديم. يمكنك الآن إلغاء تثبيت الإصدار القديم، الذي يحتوي على زر \'الترقية إلى Pro\' في أعلي إعدادات التطبيق.\n\nسيتم حذف عناصر سلة المحذوفات فقط، كما سيتم حذف العناصر المفضلة، كما سيتعين عليك إعادة ضبط إعدادات التطبيق .\n\nشكراً! - التبديل الي البحث في الملفات عبر كافة المجلدات المراية + التبديل إلي البحث فى الملفات عبر كافة المجلدات المرئية فلترة الوسائط @@ -49,8 +49,8 @@ تقوم هذه الوظيفة باخفاء المجلد عن طريق إضافة ملف \'. nomedia \' إليه ، وستقوم باخفاء كل المجلدات الفرعية أيضًا. يمكنك رؤيتهم عن طريق تبديل خيار \'إظهار العناصر المخفية \' في الإعدادات. هل تريد المتابعة؟ إستبعاد - المجلدات السابعة - إدارة المجلدات السابعة + المجلدات المستبعدة + إدارة المجلدات المستبعدة سيؤدي ذلك الي إستبعاد التحديد مع المجلدات الفرعية من "الاستديو" فقط.. يمكنك إدارة المجلدات المستبعدة في الإعدادات. إستبعاد المجلد الأصل بدلاً من ذلك(المحدد)؟ سيؤدي إستبعاد المجلدات الي جعلها مع المجلدات الفرعية مخفية في "الاستديو" فقط, وستظل مرئية في تطبيقات أخرى. \n\nإذا كنت تريد إخفاءها من التطبيقات الأخرى أيضاً ، فاستخدم وظيفة الإخفاء. @@ -194,7 +194,7 @@ الصور المصغرة وسائط ملء الشاشة التفاصيل الموسعة - إجراءات الأزرار + إجراءات الأزرار السفلية إدارة إجراءات الأزرار المرئية @@ -287,7 +287,7 @@ موقع مستقل لتطبيق المعرض البسيط الـ Pro : https://www.simplemobiletools.com/gallery - الفيسبوك: + صفحة الفيسبوك: https://www.facebook.com/simplemobiletools موقع رديت: From b5f72faf2d498f1c28192fce2eb1137228e80148 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 2 Dec 2019 10:17:43 +0100 Subject: [PATCH 27/53] adding some resources null checks --- .../simplemobiletools/gallery/pro/fragments/PhotoFragment.kt | 2 +- .../simplemobiletools/gallery/pro/fragments/VideoFragment.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt index 10f85ce02..456680c0b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt @@ -771,7 +771,7 @@ class PhotoFragment : ViewPagerFragment() { this.mIsFullscreen = isFullscreen mView.apply { photo_details.apply { - if (mStoredShowExtendedDetails && isVisible() && context != null) { + if (mStoredShowExtendedDetails && isVisible() && context != null && resources != null) { animate().y(getExtendedDetailsY(height)) if (mStoredHideExtendedDetails) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index df99218b9..d120839ae 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -460,7 +460,7 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mTimeHolder.animate().alpha(newAlpha).start() mView.video_details.apply { - if (mStoredShowExtendedDetails && isVisible() && context != null) { + if (mStoredShowExtendedDetails && isVisible() && context != null && resources != null) { animate().y(getExtendedDetailsY(height)) if (mStoredHideExtendedDetails) { From 8e8f23e6d1cdf307bee209a06fb6ac4c02f4e3bf Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 2 Dec 2019 10:22:55 +0100 Subject: [PATCH 28/53] catch exceptions at fetching photo gps coordinates --- .../gallery/pro/fragments/ViewPagerFragment.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt index 471c11635..3c95c9927 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/ViewPagerFragment.kt @@ -102,7 +102,12 @@ abstract class ViewPagerFragment : Fragment() { private fun getLatLonAltitude(path: String): String { var result = "" - val exif = ExifInterface(path) + val exif = try { + ExifInterface(path) + } catch (e: Exception) { + return "" + } + val latLon = FloatArray(2) if (exif.getLatLong(latLon)) { From 706c7311c219e2aa599614cd4c7a9aad04ddf9e1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 2 Dec 2019 17:40:07 +0100 Subject: [PATCH 29/53] update kotlin to 1.3.61 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8def24ddc..684c611c8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.60' + ext.kotlin_version = '1.3.61' repositories { google() From ca8ab6f43eafe6111b71f56e9df15e6d23d67cc2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 2 Dec 2019 23:26:19 +0100 Subject: [PATCH 30/53] update commons to 5.20.3 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index b677da847..2fc7eeeb3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.20.2' + implementation 'com.simplemobiletools:commons:5.20.3' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' From f3168e5f97a2e8343c745ceb1fe5e1ce17a9f71f Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 3 Dec 2019 22:17:32 +0100 Subject: [PATCH 31/53] fix a glitch at empty screen with direct subfolder grouping --- app/build.gradle | 2 +- .../simplemobiletools/gallery/pro/activities/MainActivity.kt | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 2fc7eeeb3..c626d59d8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.20.3' + implementation 'com.simplemobiletools:commons:5.20.4' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt index 9469474f2..d38331114 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt @@ -854,6 +854,10 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { } val dirs = getSortedDirectories(newDirs) + if (config.groupDirectSubfolders) { + mDirs = dirs.clone() as ArrayList + } + var isPlaceholderVisible = dirs.isEmpty() runOnUiThread { From d95b9c112930da6a9342d200d2e059d787c2fa24 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 3 Dec 2019 22:45:59 +0100 Subject: [PATCH 32/53] migrate album covers at exporting/importing settings too --- .../gallery/pro/activities/SettingsActivity.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt index c9c296874..bafa61116 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt @@ -4,6 +4,8 @@ import android.content.Intent import android.os.Bundle import android.text.TextUtils import android.view.Menu +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.simplemobiletools.commons.dialogs.* import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* @@ -16,6 +18,7 @@ import com.simplemobiletools.gallery.pro.extensions.emptyTheRecycleBin import com.simplemobiletools.gallery.pro.extensions.galleryDB import com.simplemobiletools.gallery.pro.extensions.showRecycleBinEmptyingDialog import com.simplemobiletools.gallery.pro.helpers.* +import com.simplemobiletools.gallery.pro.models.AlbumCover import kotlinx.android.synthetic.main.activity_settings.* import java.io.File import java.util.* @@ -690,6 +693,7 @@ class SettingsActivity : SimpleActivity() { put(LAST_EDITOR_BRUSH_SIZE, config.lastEditorBrushSize) put(LAST_CONFLICT_RESOLUTION, config.lastConflictResolution) put(LAST_CONFLICT_APPLY_TO_ALL, config.lastConflictApplyToAll) + put(ALBUM_COVERS, config.albumCovers) } exportSettings(configItems, "gallery-settings.txt") @@ -812,6 +816,18 @@ class SettingsActivity : SimpleActivity() { LAST_EDITOR_BRUSH_SIZE -> config.lastEditorBrushSize = value.toInt() LAST_CONFLICT_RESOLUTION -> config.lastConflictResolution = value.toInt() LAST_CONFLICT_APPLY_TO_ALL -> config.lastConflictApplyToAll = value.toBoolean() + ALBUM_COVERS -> { + val existingCovers = config.parseAlbumCovers() + val existingCoverPaths = existingCovers.map { it.path }.toMutableList() as ArrayList + + val listType = object : TypeToken>() {}.type + val covers = Gson().fromJson>(value.toString(), listType) ?: ArrayList(1) + covers.filter { !existingCoverPaths.contains(it.path) && getDoesFilePathExist(it.tmb) }.forEach { + existingCovers.add(it) + } + + config.albumCovers = Gson().toJson(existingCovers) + } } } From 041f8b77a98fbca46cff4c28e7facf44b2c2b6ad Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 3 Dec 2019 23:53:00 +0100 Subject: [PATCH 33/53] updating commons, remember Export settings path --- app/build.gradle | 2 +- .../gallery/pro/activities/SettingsActivity.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c626d59d8..7603a5693 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.20.4' + implementation 'com.simplemobiletools:commons:5.20.6' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt index bafa61116..6cb5ac89d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt @@ -696,7 +696,7 @@ class SettingsActivity : SimpleActivity() { put(ALBUM_COVERS, config.albumCovers) } - exportSettings(configItems, "gallery-settings.txt") + exportSettings(configItems) } } From 59ab305a845d3d00a64a7f1cfcb02198699b5e54 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 11 Dec 2019 12:23:24 +0100 Subject: [PATCH 34/53] updating gradle and commons --- app/build.gradle | 2 +- .../gallery/pro/adapters/DirectoryAdapter.kt | 4 ++++ .../gallery/pro/adapters/ManageFoldersAdapter.kt | 4 ++++ .../gallery/pro/adapters/ManageHiddenFoldersAdapter.kt | 4 ++++ .../simplemobiletools/gallery/pro/adapters/MediaAdapter.kt | 4 ++++ build.gradle | 2 +- 6 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7603a5693..ea64fba32 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.20.6' + implementation 'com.simplemobiletools:commons:5.20.10' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt index 87c97c00b..4e3d29de4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt @@ -137,6 +137,10 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList Date: Thu, 12 Dec 2019 10:11:46 +0100 Subject: [PATCH 35/53] reordering some main screen and folder screen menu items --- app/src/main/res/menu/menu_main.xml | 8 ++++---- app/src/main/res/menu/menu_media.xml | 28 ++++++++++++++-------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index e4aea1047..f8b02c0de 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -26,10 +26,6 @@ android:id="@+id/change_view_type" android:title="@string/change_view_type" app:showAsAction="never"/> - + + + + - - - Date: Thu, 12 Dec 2019 10:17:29 +0100 Subject: [PATCH 36/53] reordering some cab menu items --- app/src/main/res/menu/cab_directories.xml | 24 +++++++++++------------ app/src/main/res/menu/cab_media.xml | 24 +++++++++++------------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/app/src/main/res/menu/cab_directories.xml b/app/src/main/res/menu/cab_directories.xml index 7cd39f6b1..11ebffc8d 100644 --- a/app/src/main/res/menu/cab_directories.xml +++ b/app/src/main/res/menu/cab_directories.xml @@ -36,6 +36,14 @@ android:icon="@drawable/ic_unhide_vector" android:title="@string/unhide_folder" app:showAsAction="ifRoom"/> + + - - + android:id="@+id/cab_select_all" + android:icon="@drawable/ic_select_all_vector" + android:title="@string/select_all" + app:showAsAction="ifRoom"/> diff --git a/app/src/main/res/menu/cab_media.xml b/app/src/main/res/menu/cab_media.xml index 0d0bb7b5b..5a79c7089 100644 --- a/app/src/main/res/menu/cab_media.xml +++ b/app/src/main/res/menu/cab_media.xml @@ -53,16 +53,19 @@ android:icon="@drawable/ic_unhide_vector" android:title="@string/unhide" app:showAsAction="ifRoom"/> + + - - + android:id="@+id/cab_select_all" + android:icon="@drawable/ic_select_all_vector" + android:title="@string/select_all" + app:showAsAction="ifRoom"/> From 230d028227a5f9714b1404b71b47cab362c7c4c6 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 12 Dec 2019 10:35:23 +0100 Subject: [PATCH 37/53] allow creating file shortcuts from the thumbnail view --- .../pro/activities/ViewPagerActivity.kt | 12 ++++-- .../gallery/pro/adapters/MediaAdapter.kt | 41 +++++++++++++++++-- app/src/main/res/menu/cab_directories.xml | 8 ++-- app/src/main/res/menu/cab_media.xml | 4 ++ 4 files changed, 53 insertions(+), 12 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index 845235403..aa3f88bbc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -15,7 +15,6 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Icon import android.media.ExifInterface -import android.net.Uri import android.os.Bundle import android.os.Handler import android.provider.MediaStore @@ -666,9 +665,14 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View val path = medium.path val drawable = resources.getDrawable(R.drawable.shortcut_image).mutate() getShortcutImage(path, drawable) { - val intent = Intent(this, PhotoVideoActivity::class.java) - intent.action = Intent.ACTION_VIEW - intent.data = Uri.fromFile(File(path)) + val intent = Intent(this, ViewPagerActivity::class.java).apply { + putExtra(PATH, path) + putExtra(SHOW_ALL, config.showAll) + putExtra(SHOW_FAVORITES, path == FAVORITES) + putExtra(SHOW_RECYCLE_BIN, path == RECYCLE_BIN) + action = Intent.ACTION_VIEW + flags = flags or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + } val shortcut = ShortcutInfo.Builder(this, path) .setShortLabel(medium.name) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt index 2eeae31fc..743d2127d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt @@ -1,5 +1,10 @@ package com.simplemobiletools.gallery.pro.adapters +import android.annotation.SuppressLint +import android.content.Intent +import android.content.pm.ShortcutInfo +import android.content.pm.ShortcutManager +import android.graphics.drawable.Icon import android.os.Handler import android.os.Looper import android.view.Menu @@ -14,16 +19,15 @@ import com.simplemobiletools.commons.dialogs.RenameDialog import com.simplemobiletools.commons.dialogs.RenameItemDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.ensureBackgroundThread +import com.simplemobiletools.commons.helpers.isOreoPlus import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.activities.ViewPagerActivity import com.simplemobiletools.gallery.pro.dialogs.DeleteWithRememberDialog import com.simplemobiletools.gallery.pro.extensions.* -import com.simplemobiletools.gallery.pro.helpers.SHOW_ALL -import com.simplemobiletools.gallery.pro.helpers.TYPE_GIFS -import com.simplemobiletools.gallery.pro.helpers.TYPE_RAWS -import com.simplemobiletools.gallery.pro.helpers.VIEW_TYPE_LIST +import com.simplemobiletools.gallery.pro.helpers.* import com.simplemobiletools.gallery.pro.interfaces.MediaOperationsListener import com.simplemobiletools.gallery.pro.models.Medium import com.simplemobiletools.gallery.pro.models.ThumbnailItem @@ -122,6 +126,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList rotateSelection(180) R.id.cab_copy_to -> copyMoveTo(true) R.id.cab_move_to -> moveFilesTo() + R.id.cab_create_shortcut -> createShortcut() R.id.cab_select_all -> selectAll() R.id.cab_open_with -> openPath() R.id.cab_fix_date_taken -> fixDateTaken() @@ -347,6 +353,33 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList + - + Date: Thu, 12 Dec 2019 10:54:26 +0100 Subject: [PATCH 38/53] reordering some more menu items --- app/src/main/res/menu/cab_media.xml | 16 ++-- app/src/main/res/menu/menu_media.xml | 8 +- app/src/main/res/menu/menu_viewpager.xml | 100 ++++++++++++----------- 3 files changed, 63 insertions(+), 61 deletions(-) diff --git a/app/src/main/res/menu/cab_media.xml b/app/src/main/res/menu/cab_media.xml index ee10dbfa4..cb8dda1e9 100644 --- a/app/src/main/res/menu/cab_media.xml +++ b/app/src/main/res/menu/cab_media.xml @@ -65,6 +65,14 @@ android:id="@+id/cab_create_shortcut" android:title="@string/create_shortcut" app:showAsAction="never"/> + + - - - + + + + + + + + + + + - - - - - - - - - - - + Date: Thu, 12 Dec 2019 11:07:34 +0100 Subject: [PATCH 39/53] adding a menu item at viewpager for resizing images --- .../gallery/pro/activities/ViewPagerActivity.kt | 6 ++++++ app/src/main/res/menu/menu_viewpager.xml | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index aa3f88bbc..35db0bc82 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -172,6 +172,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View findItem(R.id.menu_move_to).isVisible = visibleBottomActions and BOTTOM_ACTION_MOVE == 0 findItem(R.id.menu_save_as).isVisible = rotationDegrees != 0 findItem(R.id.menu_print).isVisible = currentMedium.isImage() || currentMedium.isRaw() + findItem(R.id.menu_resize).isVisible = currentMedium.isImage() findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 && !currentMedium.getIsInRecycleBin() @@ -226,6 +227,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View R.id.menu_default_orientation -> toggleOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) R.id.menu_save_as -> saveImageAs() R.id.menu_create_shortcut -> createShortcut() + R.id.menu_resize -> resizeImage() R.id.menu_settings -> launchSettings() else -> return super.onOptionsItemSelected(item) } @@ -898,6 +900,10 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } + private fun resizeImage() { + + } + override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { if (requestCode == REQUEST_EDIT_IMAGE && resultCode == Activity.RESULT_OK && resultData != null) { mPos = -1 diff --git a/app/src/main/res/menu/menu_viewpager.xml b/app/src/main/res/menu/menu_viewpager.xml index a0dcfaf84..d0913803e 100644 --- a/app/src/main/res/menu/menu_viewpager.xml +++ b/app/src/main/res/menu/menu_viewpager.xml @@ -115,6 +115,10 @@ android:id="@+id/menu_print" android:title="@string/print" app:showAsAction="never"/> + Date: Thu, 12 Dec 2019 11:09:02 +0100 Subject: [PATCH 40/53] just moving a function, no real change --- .../pro/activities/ViewPagerActivity.kt | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index 35db0bc82..086cc83dc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -234,6 +234,23 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View return true } + override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { + if (requestCode == REQUEST_EDIT_IMAGE && resultCode == Activity.RESULT_OK && resultData != null) { + mPos = -1 + mPrevHashcode = 0 + refreshViewPager() + } else if (requestCode == REQUEST_SET_AS && resultCode == Activity.RESULT_OK) { + toast(R.string.wallpaper_set_successfully) + } else if (requestCode == REQUEST_VIEW_VIDEO && resultCode == Activity.RESULT_OK && resultData != null) { + if (resultData.getBooleanExtra(GO_TO_NEXT_ITEM, false)) { + goToNextItem() + } else if (resultData.getBooleanExtra(GO_TO_PREV_ITEM, false)) { + goToPrevItem() + } + } + super.onActivityResult(requestCode, resultCode, resultData) + } + private fun initViewPager() { val uri = intent.data if (uri != null) { @@ -904,23 +921,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } - override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { - if (requestCode == REQUEST_EDIT_IMAGE && resultCode == Activity.RESULT_OK && resultData != null) { - mPos = -1 - mPrevHashcode = 0 - refreshViewPager() - } else if (requestCode == REQUEST_SET_AS && resultCode == Activity.RESULT_OK) { - toast(R.string.wallpaper_set_successfully) - } else if (requestCode == REQUEST_VIEW_VIDEO && resultCode == Activity.RESULT_OK && resultData != null) { - if (resultData.getBooleanExtra(GO_TO_NEXT_ITEM, false)) { - goToNextItem() - } else if (resultData.getBooleanExtra(GO_TO_PREV_ITEM, false)) { - goToPrevItem() - } - } - super.onActivityResult(requestCode, resultCode, resultData) - } - private fun checkDeleteConfirmation() { if (getCurrentMedium() == null) { return From 787a672c7ffe960cde938692f958fc69300b07b2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 12 Dec 2019 11:38:47 +0100 Subject: [PATCH 41/53] creating a dialog with resize and saving --- .../pro/activities/ViewPagerActivity.kt | 5 + .../pro/dialogs/ResizeWithPathDialog.kt | 98 +++++++++++++++++++ .../layout/dialog_resize_image_with_path.xml | 98 +++++++++++++++++++ 3 files changed, 201 insertions(+) create mode 100644 app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeWithPathDialog.kt create mode 100644 app/src/main/res/layout/dialog_resize_image_with_path.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index 086cc83dc..9e9b0cf5b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -44,6 +44,7 @@ import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.adapters.MyPagerAdapter import com.simplemobiletools.gallery.pro.asynctasks.GetMediaAsynctask import com.simplemobiletools.gallery.pro.dialogs.DeleteWithRememberDialog +import com.simplemobiletools.gallery.pro.dialogs.ResizeWithPathDialog import com.simplemobiletools.gallery.pro.dialogs.SaveAsDialog import com.simplemobiletools.gallery.pro.dialogs.SlideshowDialog import com.simplemobiletools.gallery.pro.extensions.* @@ -918,7 +919,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } private fun resizeImage() { + val currentPath = getCurrentPath() + val originalSize = currentPath.getImageResolution() ?: return + ResizeWithPathDialog(this, originalSize, currentPath) { + } } private fun checkDeleteConfirmation() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeWithPathDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeWithPathDialog.kt new file mode 100644 index 000000000..f3863943d --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeWithPathDialog.kt @@ -0,0 +1,98 @@ +package com.simplemobiletools.gallery.pro.dialogs + +import android.graphics.Point +import android.widget.EditText +import androidx.appcompat.app.AlertDialog +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.dialogs.FilePickerDialog +import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.gallery.pro.R +import com.simplemobiletools.gallery.pro.extensions.config +import kotlinx.android.synthetic.main.dialog_resize_image.view.image_height +import kotlinx.android.synthetic.main.dialog_resize_image.view.image_width +import kotlinx.android.synthetic.main.dialog_resize_image_with_path.view.* + +class ResizeWithPathDialog(val activity: BaseSimpleActivity, val size: Point, val path: String, val callback: (newSize: Point) -> Unit) { + init { + var realPath = path.getParentPath() + val view = activity.layoutInflater.inflate(R.layout.dialog_resize_image_with_path, null).apply { + image_path.text = "${activity.humanizePath(realPath).trimEnd('/')}/" + + val fullName = path.getFilenameFromPath() + val dotAt = fullName.lastIndexOf(".") + var name = fullName + + if (dotAt > 0) { + name = fullName.substring(0, dotAt) + val extension = fullName.substring(dotAt + 1) + image_extension.setText(extension) + } + + image_name.setText(name) + image_path.setOnClickListener { + FilePickerDialog(activity, realPath, false, activity.config.shouldShowHidden, true, true) { + image_path.text = activity.humanizePath(it) + realPath = it + } + } + } + + val widthView = view.image_width + val heightView = view.image_height + + widthView.setText(size.x.toString()) + heightView.setText(size.y.toString()) + + val ratio = size.x / size.y.toFloat() + + widthView.onTextChangeListener { + if (widthView.hasFocus()) { + var width = getViewValue(widthView) + if (width > size.x) { + widthView.setText(size.x.toString()) + width = size.x + } + + heightView.setText((width / ratio).toInt().toString()) + } + } + + heightView.onTextChangeListener { + if (heightView.hasFocus()) { + var height = getViewValue(heightView) + if (height > size.y) { + heightView.setText(size.y.toString()) + height = size.y + } + + widthView.setText((height * ratio).toInt().toString()) + } + } + + AlertDialog.Builder(activity) + .setPositiveButton(R.string.ok, null) + .setNegativeButton(R.string.cancel, null) + .create().apply { + activity.setupDialogStuff(view, this) { + showKeyboard(view.image_width) + getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { + val width = getViewValue(widthView) + val height = getViewValue(heightView) + if (width <= 0 || height <= 0) { + activity.toast(R.string.invalid_values) + return@setOnClickListener + } + + val newSize = Point(getViewValue(widthView), getViewValue(heightView)) + callback(newSize) + dismiss() + } + } + } + } + + private fun getViewValue(view: EditText): Int { + val textValue = view.value + return if (textValue.isEmpty()) 0 else textValue.toInt() + } +} diff --git a/app/src/main/res/layout/dialog_resize_image_with_path.xml b/app/src/main/res/layout/dialog_resize_image_with_path.xml new file mode 100644 index 000000000..c1defcff2 --- /dev/null +++ b/app/src/main/res/layout/dialog_resize_image_with_path.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + From 8ba998d3ae393b5d18c259c037bfd56347517448 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 12 Dec 2019 11:59:56 +0100 Subject: [PATCH 42/53] return both the resolution and path from the new dialog --- .../pro/activities/ViewPagerActivity.kt | 2 +- .../pro/dialogs/ResizeWithPathDialog.kt | 37 ++++++++++++++++--- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index 9e9b0cf5b..5de7555d3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -921,7 +921,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private fun resizeImage() { val currentPath = getCurrentPath() val originalSize = currentPath.getImageResolution() ?: return - ResizeWithPathDialog(this, originalSize, currentPath) { + ResizeWithPathDialog(this, originalSize, currentPath) { newSize, newPath -> } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeWithPathDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeWithPathDialog.kt index f3863943d..b377f6801 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeWithPathDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ResizeWithPathDialog.kt @@ -4,15 +4,14 @@ import android.graphics.Point import android.widget.EditText import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.extensions.config -import kotlinx.android.synthetic.main.dialog_resize_image.view.image_height -import kotlinx.android.synthetic.main.dialog_resize_image.view.image_width import kotlinx.android.synthetic.main.dialog_resize_image_with_path.view.* -class ResizeWithPathDialog(val activity: BaseSimpleActivity, val size: Point, val path: String, val callback: (newSize: Point) -> Unit) { +class ResizeWithPathDialog(val activity: BaseSimpleActivity, val size: Point, val path: String, val callback: (newSize: Point, newPath: String) -> Unit) { init { var realPath = path.getParentPath() val view = activity.layoutInflater.inflate(R.layout.dialog_resize_image_with_path, null).apply { @@ -84,8 +83,36 @@ class ResizeWithPathDialog(val activity: BaseSimpleActivity, val size: Point, va } val newSize = Point(getViewValue(widthView), getViewValue(heightView)) - callback(newSize) - dismiss() + + val filename = view.image_name.value + val extension = view.image_extension.value + if (filename.isEmpty()) { + activity.toast(R.string.filename_cannot_be_empty) + return@setOnClickListener + } + + if (extension.isEmpty()) { + activity.toast(R.string.extension_cannot_be_empty) + return@setOnClickListener + } + + val newFilename = "$filename.$extension" + val newPath = "${realPath.trimEnd('/')}/$newFilename" + if (!newFilename.isAValidFilename()) { + activity.toast(R.string.filename_invalid_characters) + return@setOnClickListener + } + + if (activity.getDoesFilePathExist(newPath)) { + val title = String.format(activity.getString(R.string.file_already_exists_overwrite), newFilename) + ConfirmationDialog(activity, title) { + callback(newSize, newPath) + dismiss() + } + } else { + callback(newSize, newPath) + dismiss() + } } } } From fd52c7c22562e2c52ff886d52ee6b6b3addf38c6 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 12 Dec 2019 12:22:13 +0100 Subject: [PATCH 43/53] implementing the Resize function at fullscreen resizing --- .../pro/activities/ViewPagerActivity.kt | 60 ++++++++++++++++++- 1 file changed, 57 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index 5de7555d3..36e75e9ea 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -3,6 +3,7 @@ package com.simplemobiletools.gallery.pro.activities import android.animation.Animator import android.animation.ValueAnimator import android.annotation.SuppressLint +import android.annotation.TargetApi import android.app.Activity import android.content.Intent import android.content.pm.ActivityInfo @@ -15,6 +16,8 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Icon import android.media.ExifInterface +import android.net.Uri +import android.os.Build import android.os.Bundle import android.os.Handler import android.provider.MediaStore @@ -57,6 +60,7 @@ import com.simplemobiletools.gallery.pro.models.ThumbnailItem import kotlinx.android.synthetic.main.activity_medium.* import kotlinx.android.synthetic.main.bottom_actions.* import java.io.File +import java.io.OutputStream import java.util.* class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, ViewPagerFragment.FragmentListener { @@ -918,14 +922,64 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } } + @TargetApi(Build.VERSION_CODES.N) private fun resizeImage() { - val currentPath = getCurrentPath() - val originalSize = currentPath.getImageResolution() ?: return - ResizeWithPathDialog(this, originalSize, currentPath) { newSize, newPath -> + val oldPath = getCurrentPath() + val originalSize = oldPath.getImageResolution() ?: return + ResizeWithPathDialog(this, originalSize, oldPath) { newSize, newPath -> + ensureBackgroundThread { + try { + var oldExif: ExifInterface? = null + if (isNougatPlus()) { + val inputStream = contentResolver.openInputStream(Uri.fromFile(File(oldPath))) + oldExif = ExifInterface(inputStream!!) + } + val newBitmap = Glide.with(applicationContext).asBitmap().load(oldPath).submit(newSize.x, newSize.y).get() + + val newFile = File(newPath) + val newFileDirItem = FileDirItem(newPath, newPath.getFilenameFromPath()) + getFileOutputStream(newFileDirItem, true) { + if (it != null) { + saveBitmap(newFile, newBitmap, it, oldExif, File(oldPath).lastModified()) + } else { + toast(R.string.image_editing_failed) + } + } + } catch (e: OutOfMemoryError) { + toast(R.string.out_of_memory_error) + } catch (e: Exception) { + showErrorToast(e) + } + } } } + @TargetApi(Build.VERSION_CODES.N) + private fun saveBitmap(file: File, bitmap: Bitmap, out: OutputStream, oldExif: ExifInterface?, lastModified: Long) { + try { + bitmap.compress(file.absolutePath.getCompressionFormat(), 90, out) + + if (isNougatPlus()) { + val newExif = ExifInterface(file.absolutePath) + oldExif?.copyTo(newExif, false) + } + } catch (e: Exception) { + } + + toast(R.string.file_saved) + val paths = arrayListOf(file.absolutePath) + rescanPaths(paths) { + fixDateTaken(paths, false) + + if (config.keepLastModified) { + File(file.absolutePath).setLastModified(lastModified) + updateLastModified(file.absolutePath, lastModified) + } + } + out.close() + } + private fun checkDeleteConfirmation() { if (getCurrentMedium() == null) { return From 8dac3880d6f1e9138559430cd76909de30cdfa43 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 12 Dec 2019 14:05:46 +0100 Subject: [PATCH 44/53] refreshing the directories list view UI, remove dividers --- .../gallery/pro/activities/MainActivity.kt | 13 +++++++++ .../main/res/layout/directory_item_list.xml | 29 ++++++++----------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt index d38331114..ad9dce178 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MainActivity.kt @@ -13,6 +13,7 @@ import android.view.Menu import android.view.MenuItem import android.view.ViewGroup import android.widget.FrameLayout +import android.widget.RelativeLayout import android.widget.Toast import androidx.appcompat.widget.SearchView import androidx.core.view.MenuItemCompat @@ -605,6 +606,11 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { private fun setupGridLayoutManager() { val layoutManager = directories_grid.layoutManager as MyGridLayoutManager + (directories_grid.layoutParams as RelativeLayout.LayoutParams).apply { + topMargin = 0 + bottomMargin = 0 + } + if (config.scrollHorizontally) { layoutManager.orientation = RecyclerView.HORIZONTAL directories_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT) @@ -670,6 +676,13 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { layoutManager.spanCount = 1 layoutManager.orientation = RecyclerView.VERTICAL directories_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + + val smallMargin = resources.getDimension(R.dimen.small_margin).toInt() + (directories_grid.layoutParams as RelativeLayout.LayoutParams).apply { + topMargin = smallMargin + bottomMargin = smallMargin + } + mZoomListener = null } diff --git a/app/src/main/res/layout/directory_item_list.xml b/app/src/main/res/layout/directory_item_list.xml index 97937ee4e..20be472f9 100644 --- a/app/src/main/res/layout/directory_item_list.xml +++ b/app/src/main/res/layout/directory_item_list.xml @@ -4,10 +4,12 @@ android:id="@+id/dir_holder" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" android:clickable="true" android:focusable="true" - android:paddingStart="@dimen/small_margin" - android:paddingTop="@dimen/small_margin"> + android:paddingStart="@dimen/medium_margin" + android:paddingTop="@dimen/small_margin" + android:paddingBottom="@dimen/small_margin"> @@ -64,7 +67,8 @@ android:alpha="0.4" android:ellipsize="end" android:maxLines="1" - android:paddingStart="6dp" + android:paddingStart="@dimen/medium_margin" + android:paddingEnd="@dimen/medium_margin" android:textColor="@android:color/white" android:textSize="@dimen/smaller_text_size"/> @@ -84,7 +88,7 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" - android:layout_marginEnd="@dimen/small_margin" + android:layout_marginEnd="@dimen/medium_margin" android:gravity="end" android:orientation="horizontal" android:paddingBottom="@dimen/tiny_margin"> @@ -106,15 +110,6 @@ android:paddingBottom="@dimen/small_margin" android:src="@drawable/ic_pin" android:visibility="gone"/> + - - - From bd7ae6b1824ee168e3b7cccc38d135f56460d736 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 12 Dec 2019 14:12:36 +0100 Subject: [PATCH 45/53] removing the dividers from the file thumbnails list view too --- .../gallery/pro/activities/MediaActivity.kt | 13 ++++++++++ .../main/res/layout/photo_video_item_list.xml | 26 +++++++------------ 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt index dc44ff967..6aa7d5fcd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/MediaActivity.kt @@ -13,6 +13,7 @@ import android.view.Menu import android.view.MenuItem import android.view.ViewGroup import android.widget.FrameLayout +import android.widget.RelativeLayout import androidx.appcompat.widget.SearchView import androidx.core.view.MenuItemCompat import androidx.recyclerview.widget.GridLayoutManager @@ -680,6 +681,11 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { private fun setupGridLayoutManager() { val layoutManager = media_grid.layoutManager as MyGridLayoutManager + (media_grid.layoutParams as RelativeLayout.LayoutParams).apply { + topMargin = 0 + bottomMargin = 0 + } + if (config.scrollHorizontally) { layoutManager.orientation = RecyclerView.HORIZONTAL media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT) @@ -775,6 +781,13 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { layoutManager.spanCount = 1 layoutManager.orientation = RecyclerView.VERTICAL media_refresh_layout.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + + val smallMargin = resources.getDimension(R.dimen.small_margin).toInt() + (media_grid.layoutParams as RelativeLayout.LayoutParams).apply { + topMargin = smallMargin + bottomMargin = smallMargin + } + mZoomListener = null } diff --git a/app/src/main/res/layout/photo_video_item_list.xml b/app/src/main/res/layout/photo_video_item_list.xml index d2e8e7def..bda74102d 100644 --- a/app/src/main/res/layout/photo_video_item_list.xml +++ b/app/src/main/res/layout/photo_video_item_list.xml @@ -5,10 +5,12 @@ android:id="@+id/media_item_holder" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" android:clickable="true" android:focusable="true" - android:paddingStart="@dimen/small_margin" - android:paddingTop="@dimen/small_margin"> + android:paddingStart="@dimen/medium_margin" + android:paddingTop="@dimen/small_margin" + android:paddingBottom="@dimen/small_margin"> @@ -38,7 +41,7 @@ android:ellipsize="end" android:gravity="center_vertical" android:maxLines="3" - android:paddingStart="6dp" + android:paddingStart="@dimen/medium_margin" android:paddingEnd="@dimen/normal_margin" android:textColor="@android:color/white" android:textSize="@dimen/bigger_text_size" @@ -62,7 +65,7 @@ android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" android:layout_marginEnd="@dimen/small_margin" - android:paddingBottom="6dp" + android:paddingBottom="@dimen/medium_margin" android:paddingEnd="@dimen/small_margin" android:fontFamily="sans-serif-medium" android:shadowColor="@color/default_background_color" @@ -77,7 +80,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:layout_marginBottom="6dp" + android:layout_marginBottom="@dimen/medium_margin" android:layout_toStartOf="@+id/play_outline" android:paddingLeft="@dimen/small_margin" android:paddingRight="@dimen/small_margin" @@ -86,13 +89,4 @@ android:textSize="@dimen/normal_text_size" tools:text="00:05"/> - - From c681f62c306ee74745a15d9d4280993951a8d4d7 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 12 Dec 2019 14:24:25 +0100 Subject: [PATCH 46/53] allow adding Resize at the bottom actions --- .../pro/activities/PhotoVideoActivity.kt | 2 +- .../gallery/pro/activities/ViewPagerActivity.kt | 10 ++++++++-- .../pro/dialogs/ManageBottomActionsDialog.kt | 3 +++ .../gallery/pro/helpers/Constants.kt | 1 + app/src/main/res/layout/bottom_actions.xml | 17 ++++++++++++++++- .../res/layout/dialog_manage_bottom_actions.xml | 8 ++++++++ 6 files changed, 37 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt index 82ee18c29..9ea20f4a9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/PhotoVideoActivity.kt @@ -307,7 +307,7 @@ open class PhotoVideoActivity : SimpleActivity(), ViewPagerFragment.FragmentList private fun initBottomActionButtons() { arrayListOf(bottom_favorite, bottom_delete, bottom_rotate, bottom_properties, bottom_change_orientation, bottom_slideshow, bottom_show_on_map, - bottom_toggle_file_visibility, bottom_rename, bottom_copy, bottom_move).forEach { + bottom_toggle_file_visibility, bottom_rename, bottom_copy, bottom_move, bottom_resize).forEach { it.beGone() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index 36e75e9ea..7f30b2096 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -177,7 +177,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View findItem(R.id.menu_move_to).isVisible = visibleBottomActions and BOTTOM_ACTION_MOVE == 0 findItem(R.id.menu_save_as).isVisible = rotationDegrees != 0 findItem(R.id.menu_print).isVisible = currentMedium.isImage() || currentMedium.isRaw() - findItem(R.id.menu_resize).isVisible = currentMedium.isImage() + findItem(R.id.menu_resize).isVisible = visibleBottomActions and BOTTOM_ACTION_RESIZE == 0 && currentMedium.isImage() findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 && !currentMedium.getIsInRecycleBin() @@ -832,6 +832,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View bottom_move.setOnClickListener { moveFileTo() } + + bottom_resize.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_RESIZE != 0 && currentMedium?.isImage() == true) + bottom_resize.setOnClickListener { + resizeImage() + } } private fun updateBottomActionIcons(medium: Medium?) { @@ -1230,7 +1235,8 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (bottom_actions.isVisible()) { bottom_actions.animate().alpha(newAlpha).start() arrayOf(bottom_favorite, bottom_edit, bottom_share, bottom_delete, bottom_rotate, bottom_properties, bottom_change_orientation, - bottom_slideshow, bottom_show_on_map, bottom_toggle_file_visibility, bottom_rename).forEach { + bottom_slideshow, bottom_show_on_map, bottom_toggle_file_visibility, bottom_rename, bottom_set_as, bottom_copy, bottom_move, + bottom_resize).forEach { it.isClickable = !mIsFullScreen } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ManageBottomActionsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ManageBottomActionsDialog.kt index 217559e73..cfbe131f8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ManageBottomActionsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/ManageBottomActionsDialog.kt @@ -28,6 +28,7 @@ class ManageBottomActionsDialog(val activity: BaseSimpleActivity, val callback: manage_bottom_actions_set_as.isChecked = actions and BOTTOM_ACTION_SET_AS != 0 manage_bottom_actions_copy.isChecked = actions and BOTTOM_ACTION_COPY != 0 manage_bottom_actions_move.isChecked = actions and BOTTOM_ACTION_MOVE != 0 + manage_bottom_actions_resize.isChecked = actions and BOTTOM_ACTION_RESIZE != 0 } AlertDialog.Builder(activity) @@ -69,6 +70,8 @@ class ManageBottomActionsDialog(val activity: BaseSimpleActivity, val callback: result += BOTTOM_ACTION_COPY if (manage_bottom_actions_move.isChecked) result += BOTTOM_ACTION_MOVE + if (manage_bottom_actions_resize.isChecked) + result += BOTTOM_ACTION_RESIZE } activity.config.visibleBottomActions = result diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt index 0697dfe0c..5e2ab2d33 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt @@ -195,6 +195,7 @@ const val BOTTOM_ACTION_RENAME = 1024 const val BOTTOM_ACTION_SET_AS = 2048 const val BOTTOM_ACTION_COPY = 4096 const val BOTTOM_ACTION_MOVE = 8192 +const val BOTTOM_ACTION_RESIZE = 16384 const val DEFAULT_BOTTOM_ACTIONS = BOTTOM_ACTION_TOGGLE_FAVORITE or BOTTOM_ACTION_EDIT or BOTTOM_ACTION_SHARE or BOTTOM_ACTION_DELETE diff --git a/app/src/main/res/layout/bottom_actions.xml b/app/src/main/res/layout/bottom_actions.xml index 88906f599..e03791630 100644 --- a/app/src/main/res/layout/bottom_actions.xml +++ b/app/src/main/res/layout/bottom_actions.xml @@ -213,10 +213,25 @@ android:padding="@dimen/medium_margin" android:src="@drawable/ic_move" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintEnd_toStartOf="@+id/bottom_resize" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@+id/bottom_copy" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0"/> + + diff --git a/app/src/main/res/layout/dialog_manage_bottom_actions.xml b/app/src/main/res/layout/dialog_manage_bottom_actions.xml index fb76d7666..2ddeb0afc 100644 --- a/app/src/main/res/layout/dialog_manage_bottom_actions.xml +++ b/app/src/main/res/layout/dialog_manage_bottom_actions.xml @@ -126,5 +126,13 @@ android:paddingBottom="@dimen/activity_margin" android:text="@string/move"/> + + From 19efea09f8671b997b52ed940794a35bc35be35c Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 12 Dec 2019 14:35:39 +0100 Subject: [PATCH 47/53] reverting constraintlayout back to beta 2 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ea64fba32..91b0ce350 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.18' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta3' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6' implementation 'com.google.vr:sdk-panowidget:1.180.0' implementation 'com.google.vr:sdk-videowidget:1.180.0' From 774ec21c9bcaa3f3d5c0e1b2cf8156189d905fe4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 12 Dec 2019 14:45:09 +0100 Subject: [PATCH 48/53] update version to 6.10.7 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 91b0ce350..7fc2026cd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 273 - versionName "6.10.6" + versionCode 275 + versionName "6.10.7" multiDexEnabled true setProperty("archivesBaseName", "gallery") vectorDrawables.useSupportLibrary = true From c07b01b93e73d21ae888be0ca10c43ef4e6aa9fe Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 12 Dec 2019 14:45:15 +0100 Subject: [PATCH 49/53] updating changelog --- CHANGELOG.md | 11 +++++++++++ fastlane/metadata/android/en-US/changelogs/275.txt | 7 +++++++ 2 files changed, 18 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/275.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 575c4e12a..e25283681 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,17 @@ Changelog ========== +Version 6.10.7 *(2019-12-12)* +---------------------------- + + * Refreshed the thumbnails list views by removing the dividers + * Reordered some top menu items for consistency + * Added a Resize button to resize images directly from the fullscreen view + * Migrate album covers at export/import settings too + * Remember the last used path and file name at exporting settings + * Fixed a glitch with empty screen at direct subfolder grouping + * Many other stability, ux and translation improvements + Version 6.10.6 *(2019-11-28)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/275.txt b/fastlane/metadata/android/en-US/changelogs/275.txt new file mode 100644 index 000000000..cb8428b03 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/275.txt @@ -0,0 +1,7 @@ + * Refreshed the thumbnails list views by removing the dividers + * Reordered some top menu items for consistency + * Added a Resize button to resize images directly from the fullscreen view + * Migrate album covers at export/import settings too + * Remember the last used path and file name at exporting settings + * Fixed a glitch with empty screen at direct subfolder grouping + * Many other stability, ux and translation improvements From a6e50c74c17913de7d540b8b592721682f47c398 Mon Sep 17 00:00:00 2001 From: AlbatorV Date: Sat, 14 Dec 2019 08:50:24 +0100 Subject: [PATCH 50/53] Update strings.xml --- app/src/main/res/values-fr/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f9a4bdfbd..69425bf6d 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -151,11 +151,11 @@ Lecture automatique des vidéos Mémoriser la position de lecture des vidéos - Permuter la visibilité des noms de fichier + Permuter l\'affichage des noms de fichier Lecture en boucle des vidéos - Animer le GIFs dans les miniatures + Animer les miniatures des GIF Luminosité maximale - Recadrer les miniatures en carrés + Recadrer les miniatures en carré Afficher la durée des vidéos Orientation de l\'affichage Paramètres système @@ -199,7 +199,7 @@ Gérer la barre d\'actions Ajouter aux favoris - Changer la visibilité des fichiers + Visibilité du fichier Comment faire de Simple Gallery ma galerie par défaut ? From d84dd06f9f66941ab57b58d3ac7f69a480ab8aed Mon Sep 17 00:00:00 2001 From: zmni Date: Sun, 15 Dec 2019 17:24:29 +0700 Subject: [PATCH 51/53] Update Indonesian translation --- app/src/main/res/values-id/strings.xml | 2 +- app/src/main/res/values-in/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index dbd959a21..29b217c59 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -237,7 +237,7 @@ Simple Gallery Pro - Pengelola & Penyunting Foto - Browse your memories without any interruptions. + Menampilkan semua kenangan anda tanpa gangguan. Simple Gallery Pro adalah aplikasi galeri luring yang sangat mudah diubahsuai. Mengelola & menyunting foto anda, memulihkan berkas yang terhapus dari keranjang sampah, melindungi & menyembunyikan berkas, dan menampilkan banyak format foto & video, diantaranya RAW, SVG dan masih banyak lainnya. diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index dbd959a21..29b217c59 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -237,7 +237,7 @@ Simple Gallery Pro - Pengelola & Penyunting Foto - Browse your memories without any interruptions. + Menampilkan semua kenangan anda tanpa gangguan. Simple Gallery Pro adalah aplikasi galeri luring yang sangat mudah diubahsuai. Mengelola & menyunting foto anda, memulihkan berkas yang terhapus dari keranjang sampah, melindungi & menyembunyikan berkas, dan menampilkan banyak format foto & video, diantaranya RAW, SVG dan masih banyak lainnya. From 3f0e74ea030e8a6665f2d685bfc3f404e674e6ae Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 15 Dec 2019 15:00:32 +0100 Subject: [PATCH 52/53] updating the apps indonesian short title --- fastlane/metadata/android/id/short_description.txt | 2 +- fastlane/metadata/android/in/short_description.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fastlane/metadata/android/id/short_description.txt b/fastlane/metadata/android/id/short_description.txt index 64f9a3446..cb3fd9ef3 100644 --- a/fastlane/metadata/android/id/short_description.txt +++ b/fastlane/metadata/android/id/short_description.txt @@ -1 +1 @@ -Galeri luring tanpa iklan. Kelola, sunting, pulihkan dan lindungi foto & video +Menampilkan semua kenangan anda tanpa gangguan. diff --git a/fastlane/metadata/android/in/short_description.txt b/fastlane/metadata/android/in/short_description.txt index 64f9a3446..cb3fd9ef3 100644 --- a/fastlane/metadata/android/in/short_description.txt +++ b/fastlane/metadata/android/in/short_description.txt @@ -1 +1 @@ -Galeri luring tanpa iklan. Kelola, sunting, pulihkan dan lindungi foto & video +Menampilkan semua kenangan anda tanpa gangguan. From 17bf9430667971b05151c817fb2ef2c3cc1f9ad5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 16 Dec 2019 12:05:28 +0100 Subject: [PATCH 53/53] adding a new string related to file edited successfully --- app/src/main/res/values-ar/strings.xml | 1 + app/src/main/res/values-az/strings.xml | 1 + app/src/main/res/values-ca/strings.xml | 1 + app/src/main/res/values-cs/strings.xml | 1 + app/src/main/res/values-da/strings.xml | 1 + app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-el/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values-fi/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-gl/strings.xml | 1 + app/src/main/res/values-hr/strings.xml | 1 + app/src/main/res/values-hu/strings.xml | 1 + app/src/main/res/values-id/strings.xml | 1 + app/src/main/res/values-in/strings.xml | 1 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-ko-rKR/strings.xml | 1 + app/src/main/res/values-lt/strings.xml | 1 + app/src/main/res/values-nb/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-pl/strings.xml | 1 + app/src/main/res/values-pt-rBR/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values-sl/strings.xml | 1 + app/src/main/res/values-sr/strings.xml | 1 + app/src/main/res/values-sv/strings.xml | 1 + app/src/main/res/values-tr/strings.xml | 1 + app/src/main/res/values-uk/strings.xml | 1 + app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rHK/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 35 files changed, 35 insertions(+) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 3c4d36040..2b45b8cf6 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -82,6 +82,7 @@ المسار مسار الصورة غير صحيح فشل تعديل الصورة + File edited successfully تعديل الصورة باستخدام: لم يتم العثور على أي محرر للصور موقع الملف غير معروف diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index ca3c433b6..b8c83ea2f 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -82,6 +82,7 @@ Path Invalid image path Image editing failed + File edited successfully Edit image with: No image editor found Unknown file location diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index da07babb8..c4dc0344b 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -82,6 +82,7 @@ Ruta Ruta de imatge no vàlida Ha fallat la edició de la imatge + File edited successfully Editar imatge utilitzant: No s’ha trobat cap editor d’imatges Ubicació de l’arxiu desconeguda diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 35b8641ab..baf7bc05d 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -82,6 +82,7 @@ Cesta Neplatná cesta Úprava souboru selhala + File edited successfully Upravit soubor pomocí: Nebyl nalezen žádný editor Neznámé umístění souboru diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index ef70131fa..724f21045 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -82,6 +82,7 @@ Sti Ugyldig sti til billede Redigering af billede mislykkedes + File edited successfully Rediger billede med: Der blev ikke fundet en editor til billedbehandling Ukendt filplacering diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 6e4e85b2d..e8162dfb5 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -82,6 +82,7 @@ Pfad Ungültiger Dateipfad. Bildbearbeitung fehlgeschlagen. + File edited successfully Bild bearbeiten mit: Keine Bildeditor-App gefunden. Unbekannter Dateipfad. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index fc8071014..5ef9cecfa 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -82,6 +82,7 @@ Διαδρομή Μη έγκυρη διαδρομή εικόνας Η επεξεργασία εικόνας απέτυχε + File edited successfully Επεξεργασία εικόνας με: Δεν βρέθηκε επεργαστής εικόνων Άγνωστη τοποθεσία αρχείου diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0ee6f14a4..bd4ec6c57 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -82,6 +82,7 @@ Ruta Ruta de imagen no válida Falló la edición de imagen + File edited successfully Editar imagen usando: No se encontró editor de imágenes Ubicación del archivo desconocida diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index f8144fe2d..e7577e94f 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -82,6 +82,7 @@ Polku Kuvan polkua ei ole Kuvan muokkaus epäonnistui + File edited successfully Muokkaa kuvaa: Kuvamuokkainta ei löytynyt Tuntematon tiedostosijainti diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 69425bf6d..99a1b0387 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -82,6 +82,7 @@ Emplacement Emplacement invalide Échec de l\'édition de l\'image + File edited successfully Modifier l\'image avec : Aucun éditeur d\'image trouvé Emplacement du fichier inconnu diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 2a0fd706a..de6fa84a1 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -82,6 +82,7 @@ Ruta Ruta a imaxe non válida Fallo na edición da imaxe + File edited successfully Editar imaxe con: Non se atopou ningún editor Localización do ficheiro descoñecida diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 7f72b193b..372f978bb 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -82,6 +82,7 @@ Putanja Neispravna putanja slike Uređivanje slika nije uspjelo + File edited successfully Uredi sliku pomoću: Nije pronađen uređivač slika Nepoznata lokacija datoteke diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 05178e032..08d3d33e9 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -82,6 +82,7 @@ Elérési útvonal Érvénytelen kép elérési útvonal Sikertelen kép szerkesztés + File edited successfully Kép szerkesztés ezzel: Nem található kép szerkesztő Ismeretlen fájl hely diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 29b217c59..2f13ee5a3 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -82,6 +82,7 @@ Jalur Jalur gambar tidak valid Gagal menyunting gambar + File edited successfully Sunting gambar dengan: Tidak ditemukan aplikasi penyunting gambar Lokasi berkas tidak diketahui diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 29b217c59..2f13ee5a3 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -82,6 +82,7 @@ Jalur Jalur gambar tidak valid Gagal menyunting gambar + File edited successfully Sunting gambar dengan: Tidak ditemukan aplikasi penyunting gambar Lokasi berkas tidak diketahui diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3d5f28c7c..a38aaa46a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -82,6 +82,7 @@ Percorso Percorso dell\'immagine non valido Modifica dell\'immagine fallita + File edited successfully Modifica immagine con: Editor delle immagini non trovato Posizione del file sconosciuta diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 3873aea87..a65590f8f 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -82,6 +82,7 @@ パス 無効な画像パス 画像の編集に失敗しました + File edited successfully 画像を編集: 画像エディターが見つかりません ファイルの場所が不明です diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 3a23e4d01..fa94511aa 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -82,6 +82,7 @@ 경로 유효하지 않은 사진 경로 사진 편집 실패 + File edited successfully 사진 편집 프로그램 연결: 사진 편집 프로그램 없음 알 수 없는 파일 위치 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index ad6e733c0..447ee9b0c 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -82,6 +82,7 @@ Kelias Netinkamas atvaizdo kelias Atvaizdo redagavimas nepavyko + File edited successfully Redaguoti atvaizdą su: Nerasta atvaizdų redagavimo programėlės Nežinoma bylos vieta diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 9e5ed7bd8..a50a62907 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -82,6 +82,7 @@ Bane Ugyldig bildebane Bilderedigering feilet + File edited successfully Rediger bilde med: Ingen bilderedigeringsapp funnet Ukjent filplassering diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index f0f276ae2..82c50ba89 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -82,6 +82,7 @@ Pad Ongeldig pad naar afbeelding Fout bij bewerken van afbeelding + File edited successfully Afbeelding bewerken met: Geen app gevonden voor fotobewerking Onbekende bestandslocatie diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 021f302c4..f3ee11f77 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -82,6 +82,7 @@ Ścieżka Nieprawidłowa ścieżka Edycja obrazu nie powiodła się + File edited successfully Edytuj obraz w: Nie znalazłem edytora zdjęć Nieznana lokalizacja pliku diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index e5bfe22e3..d3f2495fd 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -82,6 +82,7 @@ Caminho Caminho inválido Falha na edição da imagem + File edited successfully Editar imagem com: Editor não encontrado Localização desconhecida diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 3fcf1c1fb..bcf4b5ef1 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -82,6 +82,7 @@ Caminho Caminho inválido Falha na edição da imagem + File edited successfully Editar imagem com: Editor não encontrado Localização desconhecida diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index adff0354b..4cd04cf6b 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -82,6 +82,7 @@ Путь Недопустимый путь изображения Редактирование изображения не удалось + File edited successfully Редактировать изображение в: Ни одного редактора изображений не найдено Неизвестное местоположение файла diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 109d765f9..3c126a8bd 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -82,6 +82,7 @@ Cesta Neplatná cesta Úprava súboru zlyhala + Súbor bol úspešne upravený Upraviť súbor s: Nebol nájdený žiadny editor Neznáme umiestnenie súboru diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index ebfac19a5..659514b1b 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -82,6 +82,7 @@ Pot Napačna pot Urejanje slike ni uspelo + File edited successfully Uredi sliko z: Ne najdem urejevalnika slik Neznana lokacija datoteke diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index a2e82e684..0dda5fde3 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -82,6 +82,7 @@ Стаза Неисправна стаза слике Измена слике неуспешна + File edited successfully Измени слику са: Није пронађен едитор слика Непозната локација датотеке diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index be177d669..1e6f7a038 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -82,6 +82,7 @@ Sökväg Ogiltig bildsökväg Bilden kunde inte redigeras + File edited successfully Redigera bilden med: Ingen bildredigerare hittades Okänd filplats diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 4323a9f9f..e04f830c0 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -82,6 +82,7 @@ Yol Geçersiz resim yolu Resim düzenleme başarısız + File edited successfully Resmi şununla düzenle: Resim düzenleyici bulunamadı Bilinmeyen dosya konumu diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index ae6a73028..dfd954b03 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -82,6 +82,7 @@ Шлях Неприпустимий шлях до зображення Не вдалося редагувати зображення + File edited successfully Редагувати зображення за допомогою: Не знайдено редакторів зображень Невідоме розташування файлу diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 7f3c8c1c8..ea954d84d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -82,6 +82,7 @@ 路径 无效的图片路径 图片编辑失败 + File edited successfully 编辑方式: 没有找到图片编辑器 未知文件位置 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index d7ebe00e6..3a59c68ae 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -82,6 +82,7 @@ 路徑 無效的圖片路徑 圖片編輯失敗 + File edited successfully 編輯圖片: 找不到圖片編輯器 未知的檔案位置 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a015013e4..c2623c0dc 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -82,6 +82,7 @@ 路徑 無效的圖片路徑 圖片編輯失敗 + File edited successfully 編輯圖片: 找不到圖片編輯器 未知的檔案位置 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4eee33fa8..bd6354007 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -82,6 +82,7 @@ Path Invalid image path Image editing failed + File edited successfully Edit image with: No image editor found Unknown file location