From 69fb5e19779dcc6f56c92a27b869e871ebfb20a5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 27 Dec 2019 21:59:00 +0100 Subject: [PATCH 001/117] update commons to 5.21.8 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 81b672ac2..6e20b83d7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.7' + implementation 'com.simplemobiletools:commons:5.21.8' 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 f8b5bd4f3cab7e5e148148c31f4abcadc0ff1cea Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 27 Dec 2019 21:59:07 +0100 Subject: [PATCH 002/117] update version to 6.11.4 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6e20b83d7..1ab77c63e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 283 - versionName "6.11.3" + versionCode 284 + versionName "6.11.4" multiDexEnabled true setProperty("archivesBaseName", "gallery") vectorDrawables.useSupportLibrary = true From ba1ac66117fbe2b9cd5b84a6460aef77a7bb38e3 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 27 Dec 2019 21:59:14 +0100 Subject: [PATCH 003/117] updating changelog --- CHANGELOG.md | 9 +++++++++ fastlane/metadata/android/en-US/changelogs/284.txt | 5 +++++ 2 files changed, 14 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/284.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 535083502..6bfb648ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ Changelog ========== +Version 6.11.4 *(2019-12-27)* +---------------------------- + + * Fixed a few SD card related issues + * Moved Focus in the editor as the last tool, to prioritize more popular tools + * Added a new Crop aspect ratio 37:18 to be used instead of 18.5x9 + * Some translation improvements + * Last app update for a while now, wishing you a Happy New Year! + Version 6.11.3 *(2019-12-25)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/284.txt b/fastlane/metadata/android/en-US/changelogs/284.txt new file mode 100644 index 000000000..a6136ec22 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/284.txt @@ -0,0 +1,5 @@ + * Fixed a few SD card related issues + * Moved Focus in the editor as the last tool, to prioritize more popular tools + * Added a new Crop aspect ratio 37:18 to be used instead of 18.5x9 + * Some translation improvements + * Last app update for a while now, wishing you a Happy New Year! From a4f9fe4eba5ccd02aca2b769f2319a842d4b7eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hevesi=20J=C3=A1nos?= <44799533+hevesij@users.noreply.github.com> Date: Sat, 28 Dec 2019 09:52:46 +0100 Subject: [PATCH 004/117] Update strings.xml --- app/src/main/res/values-hu/strings.xml | 633 ++++++++++++------------- 1 file changed, 310 insertions(+), 323 deletions(-) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 3fc07f5b3..f872c7c82 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -1,327 +1,312 @@ - + - Simple Gallery - Galéria - Szerkesztés - Kamera megnyitása - (rejtett) - (kizárva) - Mappa kitűzés - Mappa kitűzés megszüntetése - Kitűzés felülre - Mutassa az összes mappa tartalmát - Összes mappa - Váltás mappa nézetre - Egyéb mappa - Mutassa a térképen - Ismeretlen helyszín - Növelje az oszlopok számát - Csökkentse az oszlopok számát - Borítókép változtatása - Válasszon fotót - Alapértelmezett használata - Hangerő - Fényerő - Tájolás zárolása - Tájolás feloldása - Tájolás változtatása - Álló mód kényszerítése - Fekvő mód kényszerítése - Alapértelmezett tájolás használata - Dátum javítása - Javítás… - Sikeres dátum javítás - Átméretezett verzió megosztása - 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 - - - Média szűrő - Kép - Videó - GIF - RAW kép - SVG - Portraits - A kiválasztott szűrők nem találtak médiafájlokat. - Szűrők változtatása - - - Ez a funkció elrejti a mappát egy \'.nomedia\' fájl hozzáadásával, és elrejti az almappákat is. Láthatóvá teheti ezeket a Beállítások \"Mutassa a rejtett elemeket\" menüpontban. Folytatja? - Kizárás - Kizárt mappák - Kizárt mappák kezelése - Ez kizárja a kijelölést és az alkönyvtárakat a Simple Gallery alkalmazásból. A kizárt mappákat a Beállításokban kezelheti. - Kizárja a szülő mappát? - A mappák kizárásával az almappákkal együtt elrejti a Simple Gallery alkalmazásban, de továbbra is láthatóak maradnak más alkalmazásokban.\n\nHa el szeretné rejteni őket más alkalmazásokban is, használja az Elrejtés funkciót. - Összes eltávolítása - Összes mappa eltávolítása a Kizárás listából. Ez nem törli a mappákat. - Rejtett mappák - Rejtett mappák kezelése - Úgy tűnik, a mappái nincsenek elrejtve egy \".nomedia\" fájllal. - - - Befoglalt mappák - Befoglalt mappák kezelése - Mappa hozzáadása - Ha vannak olyan mappák, amelyek média fájlokat tartalmaznak, de az alkalmazás nem ismerte fel, akkor kézzel is hozzáadhatja ezeket.\n\nAz elemek hozzáadása nem zár ki más mappákat. - Nem talált médiafájlokat. Ezt megoldhatja a médiafájlokat tartalmazó mappák manuális hozzáadásával. - - - Átméretezés - Kiválasztás átméretezése és mentés - Szélesség - Magasság - Képarány megtartása - Írjon be érvényes felbontást - - - Szerkesztő - Mentés - Forgatás - 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 - Nem lehet felülírni a forrás fájlt - Forgatás balra - Forgatás jobbra - 180º-os forgatás - Tükrözés - Tükrözés vízszintesen - Tükrözés függőlegesen - Kötetlen - Egyéb - - - - Simple Wallpaper - Beállítás háttérképként - Nem sikerült a beállítás háttérképként - Beállítás háttérképként ezzel: - Beállítás háttérképként… - Sikeresen beállítva háttérképnek - Álló képarány - Fekvő képarány - Kezdő képernyő - Zárolás képernyő - Kezdő és zárolás képernyő - - - Diavetítés - Időköz (másodperc): - Fotók befoglalása - Videók befoglalása - GIF befoglalása - Véletlen sorrend - Áthelyezés hátra - Diavetítés ismétlése - Animáció - Nincs - Áttűnés - Csúsztatás - A diavetítés vége - A diavetítéshez nem található média - - - Nézet típus változtatása - Rács - Lista - Közvetlen almappa csoport - - - Csoportosítás - Nincs csoportosítás - Mappa - Utolsó módosítás - Utoljára módosítva (naponta) - Utoljára módosítva (havonta) - Dátum - Felvétel dátuma (naponta) - Felvétel dátuma (havonta) - Fájl típus - Kiterjesztés - Kérjük, vegye figyelembe, hogy a csoportosítás és a rendezés 2 egymástól független mező - - - Mappa mutatása a widgeten: - Mutassa a mappa nevét - - - Automatikus videó lejátszás - Emlékezzen a videó utolsó lejátszási pozícióra - Fájlnév láthatóság módosítása - Videók ismétlése - Animált GIF miniatűr - Maximális fényerő a teljes képernyős médiánál - Miniatűrök négyzet alakúra vágva - Mutassa a videó időtartamát - Teljes képernyős média forgatása - Rendszer beállítások - Eszköz elforgatás - Képarány - Fekete háttérszín teljes képernyős médiánál - Miniatűrök görgetése vízszintesen - Automatikusan elrejti a rendszer UI-t teljes képernyőn - Az üres mappák törlése a tartalom törlése után - Engedélyezi a kép fényerő módosítást függőleges gesztusokkal - Engedélyezi a videó hangerő és fényerő módosítást függőleges gesztusokkal - Mutassa a fájlok számát a mappákban - Mutassa a kiterjesztett adatokat a teljes képernyős médián keresztül - Bővített részletek kezelése - Engedélyezi az egy ujjas nagyítást a teljes képernyős médiában - Engedélyezi a azonnali média váltást a képernyő oldalára kattintva - Engedélyezi a képek mély nagyítását - Bővített részletek elrejtése az állapotsor rejtett állapotában - Mutassa a művelet gombokat a képernyő alján - Mutassa a Lomtárat a mappák képernyőjén - Mély nagyítású képek - Mutassa a képeket a lehető legjobb minőségben - Mutassa a Lomtárat a fő képernyő utolsó elemeként - Engedélyezi a teljes képernyős nézetet a lefelé mozdulattal - Engedélyezi az 1:1 nagyítást két dupla érintéssel - Mindig külön képernyőn nyissa meg a videókat új vízszintes mozdulattal - Notch mutatása, ha elérhető - Engedélyezi a kép forgatását gesztusokkal - Fájl betöltés prioritása - Gyors - Kiegyensúlyozott - Kerülje az érvénytelen fájlok mutatását - Show image file types - - - Miniatűrök - Teljes képernyős média - Bővített részletek - Gomb műveletek - - - Látható gomb műveletek kezelése - Kedvencek módosítása - Fájl láthatóság módosítása - - - Custom - Reset - Square - Transform - Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness - Contrast - Saturation - Clarity - Gamma - Blacks - Whites - Temperature - Sharpness - Reset - Focus - None - Radial - Linear - Mirrored - Gaussian - Text - Text Options - Text Color - Font - Add - Edit - Straighten - Font - Color - BG Color - Alignment - To Front - Delete - Your text - Brush - Color - Size - Hardness - To Front - Delete - Brush Color - Editor - Close Editor? - Do you really want to discard the image? - Yes - No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker - Transparent - White - Gray - Black - Light blue - Blue - Purple - Orchid - Pink - Red - Orange - Gold - Yellow - Olive - Green - Aquamarin - Pipettable color - - - Hogyan tudom beállítani a Simple Gallery-t alapértelmezett galériának? - Először meg kell találnia az alapértelmezett galériát az eszköz beállításainak Alkalmazások részében. Keressen egy olyan gombot, amely valami olyasmit, mint az \"Legyen alapértelmezett\", kattintson rá, majd válassza a \"Alapértelmezések törlése\" pontot. + Simple Gallery + Galéria + Szerkesztés + Kamera megnyitása + (rejtett) + (kizárva) + Mappa kitűzés + Mappa kitűzés megszüntetése + Kitűzés felülre + Mutassa az összes mappa tartalmát + Összes mappa + Váltás mappa nézetre + Egyéb mappa + Mutassa a térképen + Ismeretlen helyszín + Növelje az oszlopok számát + Csökkentse az oszlopok számát + Borítókép változtatása + Válasszon fotót + Alapértelmezett használata + Hangerő + Fényerő + Tájolás zárolása + Tájolás feloldása + Tájolás változtatása + Álló mód kényszerítése + Fekvő mód kényszerítése + Alapértelmezett tájolás használata + Dátum javítása + Javítás... + Sikeres dátum javítás + Átméretezett verzió megosztása + 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 + + Média szűrő + Kép + Videó + GIF + RAW kép + SVG + Portraits + A kiválasztott szűrők nem találtak médiafájlokat. + Szűrők változtatása + + Ez a funkció elrejti a mappát egy \'.nomedia\' fájl hozzáadásával, és elrejti az almappákat is. Láthatóvá teheti ezeket a Beállítások \"Mutassa a rejtett elemeket\" menüpontban. Folytatja? + Kizárás + Kizárt mappák + Kizárt mappák kezelése + Ez kizárja a kijelölést és az alkönyvtárakat a Simple Gallery alkalmazásból. A kizárt mappákat a Beállításokban kezelheti. + Kizárja a szülő mappát? + A mappák kizárásával az almappákkal együtt elrejti a Simple Gallery alkalmazásban, de továbbra is láthatóak maradnak más alkalmazásokban.\n\nHa el szeretné rejteni őket más alkalmazásokban is, használja az Elrejtés funkciót. + Összes eltávolítása + Összes mappa eltávolítása a Kizárás listából. Ez nem törli a mappákat. + Rejtett mappák + Rejtett mappák kezelése + Úgy tűnik, a mappái nincsenek elrejtve egy \".nomedia\" fájllal. + + Befoglalt mappák + Befoglalt mappák kezelése + Mappa hozzáadása + Ha vannak olyan mappák, amelyek média fájlokat tartalmaznak, de az alkalmazás nem ismerte fel, akkor kézzel is hozzáadhatja ezeket.\n\nAz elemek hozzáadása nem zár ki más mappákat. + Nem talált médiafájlokat. Ezt megoldhatja a médiafájlokat tartalmazó mappák manuális hozzáadásával. + + Átméretezés + Kiválasztás átméretezése és mentés + Szélesség + Magasság + Képarány megtartása + Írjon be érvényes felbontást + + Szerkesztő + Mentés + Forgatás + 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 + Nem lehet felülírni a forrás fájlt + Forgatás balra + Forgatás jobbra + 180º-os forgatás + Tükrözés + Tükrözés vízszintesen + Tükrözés függőlegesen + Szabad + + Egyéb + + + Simple Wallpaper + Beállítás háttérképként + Nem sikerült a beállítás háttérképként + Beállítás háttérképként ezzel: + Beállítás háttérképként... + Sikeresen beállítva háttérképnek + Álló képarány + Fekvő képarány + Kezdő képernyő + Zárolás képernyő + Kezdő és zárolás képernyő + + Diavetítés + Időköz (másodperc): + Fotók befoglalása + Videók befoglalása + GIF befoglalása + Véletlen sorrend + Áthelyezés hátra + Diavetítés ismétlése + Animáció + Nincs + Áttűnés + Csúsztatás + A diavetítés vége + A diavetítéshez nem található média + + Nézet típus változtatása + Rács + Lista + Közvetlen almappa csoport + + Csoportosítás + Nincs csoportosítás + Mappa + Utolsó módosítás + Utoljára módosítva (naponta) + Utoljára módosítva (havonta) + Dátum + Felvétel dátuma (naponta) + Felvétel dátuma (havonta) + Fájl típus + Kiterjesztés + Kérjük, vegye figyelembe, hogy a csoportosítás és a rendezés 2 egymástól független mező + + Mappa mutatása a widgeten: + Mutassa a mappa nevét + + Automatikus videó lejátszás + Emlékezzen a videó utolsó lejátszási pozícióra + Fájlnév láthatóság módosítása + Videók ismétlése + Animált GIF miniatűr + Maximális fényerő a teljes képernyős médiánál + Miniatűrök négyzet alakúra vágva + Mutassa a videó időtartamát + Teljes képernyős média forgatása + Rendszer beállítások + Eszköz elforgatás + Képarány + Fekete háttérszín teljes képernyős médiánál + Miniatűrök görgetése vízszintesen + Automatikusan elrejti a rendszer UI-t teljes képernyőn + Az üres mappák törlése a tartalom törlése után + Engedélyezi a kép fényerő módosítást függőleges gesztusokkal + Engedélyezi a videó hangerő és fényerő módosítást függőleges gesztusokkal + Mutassa a fájlok számát a mappákban + Mutassa a kiterjesztett adatokat a teljes képernyős médián keresztül + Bővített részletek kezelése + Engedélyezi az egy ujjas nagyítást a teljes képernyős médiában + Engedélyezi a azonnali média váltást a képernyő oldalára kattintva + Engedélyezi a képek mély nagyítását + Bővített részletek elrejtése az állapotsor rejtett állapotában + Mutassa a művelet gombokat a képernyő alján + Mutassa a Lomtárat a mappák képernyőjén + Mély nagyítású képek + Mutassa a képeket a lehető legjobb minőségben + Mutassa a Lomtárat a fő képernyő utolsó elemeként + Engedélyezi a teljes képernyős nézetet a lefelé mozdulattal + Engedélyezi az 1:1 nagyítást két dupla érintéssel + Mindig külön képernyőn nyissa meg a videókat új vízszintes mozdulattal + Notch mutatása, ha elérhető + Engedélyezi a kép forgatását gesztusokkal + Fájl betöltés prioritása + Gyors + Kiegyensúlyozott + Kerülje az érvénytelen fájlok mutatását + Mutassa a kép fájl típusokat + + Miniatűrök + Teljes képernyős média + Bővített részletek + Gomb műveletek + + Látható gomb műveletek kezelése + Kedvencek módosítása + Fájl láthatóság módosítása + + Egyéni + Reset + Square + Transform + Szűrő + Nincs + Adjust + Árnyékok + Exposure + Highlights + Fényesség + Kontraszt + Színtelítettség + Világosság + Gamma + Blacks + Whites + Színhőmérséklet + Élesség + Reset + Fókusz + Nincs + Radial + Linear + Tükrözött + Gaussian + Szöveg + Szöveg beállítások + Szöveg színe + Betűtípus + Hozzáadás + Szerkesztés + Straighten + Betűtípus + Szín + Háttérszín + Igazítás + To Front + Törlés + Saját szöveg + Brush + Szín + Méret + Hardness + To Front + Törlés + Brush Color + Szerkesztő + Close Editor? + Do you really want to discard the image? + Igen + Nem + Mégsem + Accept + Mentés + Exporting image… + Exporting image %s. + Flip H + Flip V + Visszavonás + Redo + Color Picker + Áttetsző + Fehér + Szürke + Fekete + Világoskék + Kék + Bíbor + Orchidea + Rózsaszín + Piros + Narancssárga + Arany + Sárga + Oliva + Zöld + Aquamarin + Pipetta szín + + Hogyan tudom beállítani a Simple Gallery-t alapértelmezett galériának? + Először meg kell találnia az alapértelmezett galériát az eszköz beállításainak Alkalmazások részében. Keressen egy olyan gombot, amely valami olyasmit, mint az \"Legyen alapértelmezett\", kattintson rá, majd válassza a \"Alapértelmezések törlése\" pontot. A következő alkalommal, amikor megpróbál megnyitni egy képet vagy videót, megjelenik egy alkalmazásválasztó, ahol kiválaszthatja a Simple Gallery lehetőséget, és beállíthatja alapértelmezett alkalmazásnak. - Zároltam az alkalmazást jelszóval, de elfelejtettem. Mit tehetek? - 2 módon is megoldhatja. Újratelepítheti az alkalmazást, vagy megkeresi az alkalmazást az eszköz beállításai között, és válassza az \"Adatok törlése\" lehetőséget. Minden beállítást visszaállít alapértelmezettre. Ez nem távolítja el a média fájlokat. - Hogyan állíthatok be egy albumot úgy, hogy mindig felül legyen? - Hosszan nyomja meg a kívánt albumot, és válassza ki a Kitűzés ikont a művelet menüben, ami rögzíti felülre. Többféle mappát is kitűzhet, ezeket az elemeket az alapértelmezett rendezési mód szerint rendezi. - Hogyan tudom előre tekerni a videókat? - Húzhatja az ujját vízszintesen a videolejátszón, vagy kattintson az aktuális vagy a max. időtartam szövegekre a keresősáv közelében. Ez visszafelé vagy előre mozgatja a videót. - Mi a különbség a mappa elrejtése és kizárása között? - A Kizárás megakadályozza, hogy a mappát a Simple Gallery megjelenítse, az Elrejtés pedig rendszer szinten működik, és elrejti a mappát más galériákból is. Úgy működik, hogy létrehoz egy üres \". nomedia\" nevű fájlt az adott mappában, amelyet bármikor eltávolíthat bármilyen fájlkezelővel is. - Miért jelennek meg a zenei borítóval vagy matricával rendelkező mappák? - Lehet, hogy látni fog néhány szokatlan album megjelenést. Könnyen kizárhatja a hosszú megnyomással és a Kizárás kiválasztásával. A következő párbeszédablakban kiválaszthatja a szülő mappát, és valószínűleg megakadályozza, hogy a többi kapcsolódó album is megjelenjen. - A képekkel nem rendelkező mappa nem jelenik meg, vagy nem jeleníti meg az összes elemet. Mit tehetek? - Ennek több oka lehet, de megoldása egyszerű. Menjen a Beállítások -> Befoglalt mappák kezelése lehetőségre, válassza a plusz jelet, és keresse meg a kívánt mappát. - Mi van, ha csak néhány különleges mappát szeretnék látni? - A Befoglalt mappákhoz tartozó mappák hozzáadása nem zár ki automatikusan semmit. Amit tehetünk, menjünk a Beállítások -> Kizárt mappák kezelése, kizárjuk a gyökérmappát \"/ \", utána hozzáadjuk a kívánt mappákat a Beállítások -> Befoglalt mappák kezelése menüpontban. + Zároltam az alkalmazást jelszóval, de elfelejtettem. Mit tehetek? + 2 módon is megoldhatja. Újratelepítheti az alkalmazást, vagy megkeresi az alkalmazást az eszköz beállításai között, és válassza az \"Adatok törlése\" lehetőséget. Minden beállítást visszaállít alapértelmezettre. Ez nem távolítja el a média fájlokat. + Hogyan állíthatok be egy albumot úgy, hogy mindig felül legyen? + Hosszan nyomja meg a kívánt albumot, és válassza ki a Kitűzés ikont a művelet menüben, ami rögzíti felülre. Többféle mappát is kitűzhet, ezeket az elemeket az alapértelmezett rendezési mód szerint rendezi. + Hogyan tudom előre tekerni a videókat? + Húzhatja az ujját vízszintesen a videolejátszón, vagy kattintson az aktuális vagy a max. időtartam szövegekre a keresősáv közelében. Ez visszafelé vagy előre mozgatja a videót. + Mi a különbség a mappa elrejtése és kizárása között? + A Kizárás megakadályozza, hogy a mappát a Simple Gallery megjelenítse, az Elrejtés pedig rendszer szinten működik, és elrejti a mappát más galériákból is. Úgy működik, hogy létrehoz egy üres \". nomedia\" nevű fájlt az adott mappában, amelyet bármikor eltávolíthat bármilyen fájlkezelővel is. + Miért jelennek meg a zenei borítóval vagy matricával rendelkező mappák? + Lehet, hogy látni fog néhány szokatlan album megjelenést. Könnyen kizárhatja a hosszú megnyomással és a Kizárás kiválasztásával. A következő párbeszédablakban kiválaszthatja a szülő mappát, és valószínűleg megakadályozza, hogy a többi kapcsolódó album is megjelenjen. + A képekkel nem rendelkező mappa nem jelenik meg, vagy nem jeleníti meg az összes elemet. Mit tehetek? + Ennek több oka lehet, de megoldása egyszerű. Menjen a Beállítások -> Befoglalt mappák kezelése lehetőségre, válassza a plusz jelet, és keresse meg a kívánt mappát. + Mi van, ha csak néhány különleges mappát szeretnék látni? + A Befoglalt mappákhoz tartozó mappák hozzáadása nem zár ki automatikusan semmit. Amit tehetünk, menjünk a Beállítások -> Kizárt mappák kezelése, kizárjuk a gyökérmappát \"/ \", utána hozzáadjuk a kívánt mappákat a Beállítások -> Befoglalt mappák kezelése menüpontban. Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglalás rekurzív. Ha egy mappát hozzáadunk mindkettőhöz, akkor megjelenik. - Tudom vágni a képeket ezzel az alkalmazással? - Igen, megvághatja a képeket a szerkesztőben a kép sarkainak húzásával. A szerkesztőhöz eljuthat egy miniatűr kép hosszú megnyomásával és a Szerkesztés választásával, vagy a Szerkesztés választásával a teljes képernyős nézetben. - Valamilyen módon össze tudom csoportosítani a médiafájl bélyegképeit? - Persze, a miniatűr nézetben használja a \"Csoport\" menüpontot. A fájlokat többféle kritérium alapján csoportosíthatja, beleértve a dátumot is. Ha a \"Mutassa az összes mappa tartalmát\" funkciót választja, akkor mappákba is csoportosíthatja ezeket. - A dátum szerinti rendezés nem működik megfelelően, hogyan tudom megjavítani? - Valószínűleg a fájlok másolásából származik. Ezt a fájl bélyegképének kiválasztásával és a \"Dátum javítása\" lehetőség kiválasztásával oldhatja meg. - Néhány színcsíkot látok a képeken. Hogyan javíthatom a minőséget? - Az esetek többségében a kép megjelenítés jelenlegi megoldása jól működik. Ha még jobb képminőséget szeretne, engedélyezheti a \"Mutassa a képeket a lehető legjobb minőségben\" opcióval az alkalmazás beállításaiban, a \"Mély nagyítású képek\" szakaszban. - Elrejtettem egy fájlt/mappát. Hogyan tudom látni? - A rejtett elemek megtekintéséhez nyomja meg a \"Rejtettek ideiglenes mutatása\" elemet a fő képernyőn, vagy válassza a \"Mutassa a rejtett elemeket\" az alkalmazás beállításaiban. Ha meg akarja szüntetni, csak hosszan nyomja meg, és válassza a \"Elrejtés megszüntetés\" lehetőséget. A mappák elrejtése egy rejtett \". nomedia\" fájl hozzáadásával történik. Ezt a fájlt bármelyik fájlkezelővel is törölheti. - Miért használ az alkalmazás ennyi helyet? - Az alkalmazás gyorsítótára akár a 250 MB-ot is meghaladhatja, és ez gyorsabb megjelenítést biztosít. Ha az alkalmazás még több helyet foglal el, a legvalószínűbb oka, hogy a Lomtárban is van elem. Ezek a fájlok is az alkalmazás méretébe számítanak bele. Törölheti a Lomtárat azzal, hogy megnyitja és törli az összes fájlt vagy az alkalmazás beállításait. A Lomtárban lévő minden fájl 30 nap elteltével automatikusan törlődik. - - - - Simple Gallery Pro - Photo Manager & Editor - - Browse your memories without any interruptions. - + Tudom vágni a képeket ezzel az alkalmazással? + Igen, megvághatja a képeket a szerkesztőben a kép sarkainak húzásával. A szerkesztőhöz eljuthat egy miniatűr kép hosszú megnyomásával és a Szerkesztés választásával, vagy a Szerkesztés választásával a teljes képernyős nézetben. + Valamilyen módon össze tudom csoportosítani a médiafájl bélyegképeit? + Persze, a miniatűr nézetben használja a \"Csoport\" menüpontot. A fájlokat többféle kritérium alapján csoportosíthatja, beleértve a dátumot is. Ha a \"Mutassa az összes mappa tartalmát\" funkciót választja, akkor mappákba is csoportosíthatja ezeket. + A dátum szerinti rendezés nem működik megfelelően, hogyan tudom megjavítani? + Valószínűleg a fájlok másolásából származik. Ezt a fájl bélyegképének kiválasztásával és a \"Dátum javítása\" lehetőség kiválasztásával oldhatja meg. + Néhány színcsíkot látok a képeken. Hogyan javíthatom a minőséget? + Az esetek többségében a kép megjelenítés jelenlegi megoldása jól működik. Ha még jobb képminőséget szeretne, engedélyezheti a \"Mutassa a képeket a lehető legjobb minőségben\" opcióval az alkalmazás beállításaiban, a \"Mély nagyítású képek\" szakaszban. + Elrejtettem egy fájlt/mappát. Hogyan tudom látni? + A rejtett elemek megtekintéséhez nyomja meg a \"Rejtettek ideiglenes mutatása\" elemet a fő képernyőn, vagy válassza a \"Mutassa a rejtett elemeket\" az alkalmazás beállításaiban. Ha meg akarja szüntetni, csak hosszan nyomja meg, és válassza a \"Elrejtés megszüntetés\" lehetőséget. A mappák elrejtése egy rejtett \". nomedia\" fájl hozzáadásával történik. Ezt a fájlt bármelyik fájlkezelővel is törölheti. + Miért használ az alkalmazás ennyi helyet? + Az alkalmazás gyorsítótára akár a 250 MB-ot is meghaladhatja, és ez gyorsabb megjelenítést biztosít. Ha az alkalmazás még több helyet foglal el, a legvalószínűbb oka, hogy a Lomtárban is van elem. Ezek a fájlok is az alkalmazás méretébe számítanak bele. Törölheti a Lomtárat azzal, hogy megnyitja és törli az összes fájlt vagy az alkalmazás beállításait. A Lomtárban lévő minden fájl 30 nap elteltével automatikusan törlődik. + + + Simple Gallery Pro - Photo Manager & Editor + + Böngészés az emlékek közt megszakítás nélkül. + 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. The app contains no ads and unnecessary permissions. As the app doesn’t require internet access either, your privacy is protected. @@ -368,14 +353,16 @@ Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglal Nézze meg a Simple Tools csomagot itt: https://www.simplemobiletools.com + A Simple Gallery Pro önálló weboldala: + https://www.simplemobiletools.com/gallery + Facebook: https://www.facebook.com/simplemobiletools Reddit: https://www.reddit.com/r/SimpleMobileTools - - From b80390ce8f18cf01f92db794970c574f7d19e933 Mon Sep 17 00:00:00 2001 From: pcpepik Date: Sat, 28 Dec 2019 16:31:19 +0100 Subject: [PATCH 005/117] Update cs strings.xml - Translate new strings to Czech --- app/src/main/res/values-cs/strings.xml | 180 ++++++++++++------------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 1200e499b..0de30b260 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -33,7 +33,7 @@ Datumy byly úspěšně opraveny Sdílet verzi se změněnou velikostí Zdravím,\n\nzdá se, že jse přešli ze staré bezplatné aplikace. Starou aplikaci, která má nahoře v nastavení tlačítko \'Stáhnout Pro verzi\', můžete již odinstalovat.\n\nZtratíte tím pouze soubory v odpadkovém koši, označení oblíbených souborů a také budete muset znovu nastavit položky v nastavení aplikace.\n\nDěkuji! - Switch to file search across all visible folders + Přepnout na vyhledávání souborů ve všech viditelných složkách Filtr médií @@ -42,7 +42,7 @@ GIFy RAW obrázky SVGčka - Portraits + Portréty Se zvolenými filtry nebyly nalezeny žádné médiální soubory. Změnit filtry @@ -65,7 +65,7 @@ Spravovat přidané složky Přidat složku Pokud máte nějaké složky obsahující média, ale nebyly aplikací nalezeny, můžete je zde přidat ručně. - No media files have been found. You can solve it by adding the folders containing media files manually. + Nebyly nalezeny žádné mediální soubory. Můžete to napravit ručním přidáním složek, které obsahují média. Změnit velikost @@ -82,7 +82,7 @@ Cesta Neplatná cesta Úprava souboru selhala - File edited successfully + Soubor byl úspěšně upraven Upravit soubor pomocí: Nebyl nalezen žádný editor Neznámé umístění souboru @@ -118,10 +118,10 @@ Náhodné pořadí Jít opačným směrem Opakovat prezentaci ve smyčce - Animation - None - Fade - Slide + Animace + Žádná + Prolnutí + Posun Prezentace skončila Nebyla nalezena žádná média pro prezentaci @@ -136,11 +136,11 @@ Neseskupovat soubory Složky Data poslední úpravy - Last modified (daily) - Last modified (monthly) + Data poslední úpravy (denně) + Data poslední úpravy (měsíčně) Data pořízení - Date taken (daily) - Date taken (monthly) + Data pořízení (denně) + Data pořízení (měsíčně) Typu souboru Přípony Mějte prosím na paměti, že seskupování a řazení jsou 2 nezávislé hodnoty @@ -188,8 +188,8 @@ Priorita načítání obrázků Rychlost Kompromis - Vyvarovat se zobrazení neplatných souborů - Show image file types + Nezobrazovat neplatné soubory + Zobrazit typ obrázkových souborů Náhledy @@ -203,85 +203,85 @@ Přepnutí viditelnosti souboru - Custom - Reset - Square - Transform - Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness - Contrast - Saturation - Clarity + Vlastní + Obnovit + Čtverec + Transformovat + Filtr + Žádný + Doladění + Stíny + Expozice + Světla + Jas + Kontrast + Sytost + Jasnost Gamma - Blacks - Whites - Temperature - Sharpness - Reset - Focus - None - Radial - Linear - Mirrored + Černé + Bílé + Teplota + Ostrost + Obnovit + Zaostření + Žádné + Radiální + Lineární + Zrcadlové Gaussian Text - Text Options - Text Color - Font - Add - Edit - Straighten - Font - Color - BG Color - Alignment - To Front - Delete - Your text - Brush - Color - Size - Hardness - To Front - Delete - Brush Color + Nastavení textu + Barva textu + Písmo + Přidat + Upravit + Narovnat + Písmo + Barva + Pozadí + Zarovnání + Do popředí + Vymazat + Váš text + Štětec + Barva + Velikost + Tvrdost + Do popředí + Vymazat + Barva štětce Editor - Close Editor? - Do you really want to discard the image? - Yes - No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker - Transparent - White - Gray - Black - Light blue - Blue - Purple - Orchid - Pink - Red - Orange - Gold - Yellow - Olive - Green - Aquamarin - Pipettable color + Zavřít editor? + Opravdu chcete zahodit úpravy obrázku? + Ano + Ne + Zrušit + Potvrdit + Uložit + Exportuje se obrázek… + Export obrázku %s. + Překlopit H + Překlopit V + Vrátit + Zopakovat vrácené + Výběr barvy + Průsvitná + Bílá + Šedá + Černá + Světle modrá + Modrá + Fialová + Orchidej + Růžová + Červená + Oranžová + Zlatá + Žlutá + Olivová + Zelená + Akvamarín + Pipetovatelná barva Jak nastavím Jednoduchou Galerii jako výchozí galerii? @@ -319,7 +319,7 @@ Jednoduchá Galerie Pro - Organizér a editor fotografií - Browse your memories without any interruptions. + Prohlížejte své vzpomínky bez přerušení. Jednoduchá Galerie Pro je vysoce přizpůsobitelná offline galerie. Organizujte a upravujte své fotografie, obnovujte smazané fotografie s funkcí odpadkového koše, chraňte je a skrývejte. Prohlížejte množství různých foto a video formátů včetně RAW, SVG a mnoho dalších. From 2159cee994153edc3274a24ce00f5d154ee2253e Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 29 Dec 2019 12:22:12 +0100 Subject: [PATCH 006/117] adding a vietnamese app translation --- app/src/main/res/values-vi/strings.xml | 651 +++++++++++++------------ 1 file changed, 334 insertions(+), 317 deletions(-) diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 4f949f7c1..1dfd43ac9 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1,373 +1,390 @@ Simple Gallery - Gallery - Edit - Open camera - (hidden) - (excluded) - Pin folder - Unpin folder - Pin to the top - Show all folders content - All folders - Switch to folder view - Other folder - Show on map - Unknown location - Increase column count - Reduce column count - Change cover image - Select photo - Use default - Volume - Brightness - Lock orientation - Unlock orientation - 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 + Thư viện + Biên tập + Mở Camera + (ẩn) + (không bao gồm) + Ghim thư mục + Bỏ ghim thư mục + Ghim lên đầu + Hiển thị tất cả nội dung thư mục + Tất cả các thư mục + Chuyển sang xem thư mục + Thư mục khác + Hiển thị trên bản đồ + Vị trí không xác định + Tăng số lượng cột + Giảm số lượng cột + Thay đổi ảnh bìa + Chọn ảnh + Sử dụng mặc định + Âm lượng + Độ sáng + Khóa xoay màn hình + Mở khóa xoay + Thay đổi hướng màn hình + Bắt buộc dọc + Bắt buộc ngang + Sử dụng hướng mặc định + Sửa giá trị ngày chụp + Đang sửa… + Sửa ngày thành công + Chia sẻ phiên bản đã thay đổi kích thước + Xin chào, có vẻ như bạn đã nâng cấp từ ứng dụng miễn phí cũ. Giờ đây, bạn có thể gỡ cài đặt phiên bản cũ có nút \'Nâng cấp lên Pro\' ở đầu Cài đặt ứng dụng. \n\nBạn sẽ chỉ xóa các mục Thùng rác, các mục yêu thích không được đánh dấu và bạn cũng sẽ phải đặt lại cài đặt ứng dụng của bạn.\n\nCảm ơn! + Chuyển sang tìm kiếm tệp trên tất cả các thư mục hiển thị - Filter media - Images - Videos - GIFs - RAW images + Lọc + Hình ảnh + Video + Ảnh GIF + Ảnh RAW SVGs - Portraits - No media files have been found with the selected filters. - Change filters + Chân dung + Không có tập tin phương tiện nào được tìm thấy với các bộ lọc được chọn. + Thay đổi bộ lọc - This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden items\' option in Settings. Continue? - Exclude - Excluded folders - Manage excluded folders - This will exclude the selection together with its subfolders from Simple Gallery only. You can manage excluded folders in Settings. - Exclude a parent instead? - Excluding folders will make them together with their subfolders hidden just in Simple Gallery, they will still be visible in other applications.\n\nIf you want to hide them from other apps too, use the Hide function. - Remove all - Remove all folders from the list of excluded? This will not delete the folders. - Hidden folders - Manage hidden folders - Seems like you don\'t have any folders hidden with a \".nomedia\" file. + Chức năng này ẩn thư mục bằng cách thêm tệp \'.nomedia\' vào nó, nó cũng sẽ ẩn tất cả các thư mục con. Bạn có thể nhìn thấy chúng bằng cách bật tùy chọn \'Hiển thị các mục bị ẩn\' trong Cài đặt. Tiếp tục? + Loại trừ + Các thư mục bị loại trừ + Quản lý các thư mục loại trừ + Điều này sẽ loại trừ lựa chọn cùng với các thư mục con của nó khỏi Simple Gallery. Bạn có thể quản lý các thư mục loại trừ trong Cài đặt. + Loại trừ thư mục mẹ thay thế? + Các thư mục loại trừ sẽ làm cho chúng cùng với các thư mục con của chúng bị ẩn chỉ trong Simple Gallery, chúng vẫn sẽ hiển thị trong các ứng dụng khác.\n\nNếu bạn cũng muốn ẩn chúng khỏi các ứng dụng khác, hãy sử dụng chức năng Ẩn. + Xóa tất cả + Xóa tất cả các thư mục khỏi danh sách loại trừ? Điều này sẽ không xóa các thư mục. + Các thư mục ẩn + Quản lý thư mục ẩn + Có vẻ như bạn không có bất kỳ thư mục nào bị ẩn với tệp \".nomedia\". - Included folders - Manage included folders - Add folder - If you have some folders which contain media, but were not recognized by the app, you can add them manually here.\n\nAdding some items here will not exclude any other folder. - No media files have been found. You can solve it by adding the folders containing media files manually. + Bao gồm các thư mục + Quản lý các thư mục được bao gồm + Thêm thư mục + Nếu bạn có một số thư mục chứa tập tin phương tiện, nhưng ứng dụng không nhận ra, bạn có thể thêm chúng theo cách thủ công tại đây. \n\nThêm một số mục ở đây sẽ không loại trừ bất kỳ thư mục nào khác. + Không có tập tin phương tiện được tìm thấy. Bạn có thể thêm các thư mục chứa tệp phương tiện theo cách thủ công. - Resize - Resize selection and save - Width - Height - Keep aspect ratio - Please enter a valid resolution + Thay đổi kích thước + Thay đổi kích thước mục đã chọn và lưu + Chiều rộng + Chiều cao + Giữ tỷ lệ khung hình + Vui lòng nhập độ phân giải hợp lệ - Editor - Save - Rotate - Path - Invalid image path - Image editing failed - File edited successfully - Edit image with: - No image editor found - Unknown file location - Could not overwrite the source file - Rotate left - Rotate right - Rotate by 180º - Flip - Flip horizontally - Flip vertically - Free - Other + Trình biên tập + Lưu + Xoay + Đường dẫn + Đường dẫn hình ảnh không hợp lệ + Thất bại + Tập tin được chỉnh sửa thành công + Chỉnh sửa hình ảnh với: + Không tìm thấy trình chỉnh sửa hình ảnh + Vị trí tệp không xác định + Không thể ghi đè tệp nguồn + Xoay trái + Xoay phải + Xoay 180 độ + Lật + Lật theo chiều ngang + Lật theo chiều dọc + Tự do + Khác - Simple Wallpaper - Set as Wallpaper - Setting as Wallpaper failed - Set as wallpaper with: - Setting wallpaper… - Wallpaper set successfully - Portrait aspect ratio - Landscape aspect ratio - Home screen - Lock screen - Home and lock screen + Hình nền + Cài làm hình nền + Thất bại + Đặt làm hình nền với: + Cài đặt hình nền… + Đặt hình nền thành công + Tỷ lệ khung hình dọc + Tỷ lệ khung hình ngang + Màn hình chính + Màn hình khóa + Màn hình chính và khóa - Slideshow - Interval (seconds): - Include photos - Include videos - Include GIFs - Random order - Move backwards - Loop slideshow - Animation - None - Fade - Slide - The slideshow ended - No media for the slideshow have been found + Trình chiếu + Khoảng thời gian (giây): + Bao gồm hình ảnh + Bao gồm video + Bao gồm ảnh GIF + Thứ tự ngẫu nhiên + Lùi lại + Trình chiếu theo vòng lặp + Hiệu ứng + Không + Phai màu + Trượt + Trình chiếu kết thúc + Không có tập tin phương tiện cho trình chiếu được tìm thấy - Change view type - Grid - List - Group direct subfolders + Thay đổi kiểu xem + Lưới + Danh sách + Nhóm thư mục con trực tiếp - 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 + Nhóm theo + Không nhóm các tệp + Thư mục + Sửa đổi lần cuối + Sửa đổi lần cuối (hàng ngày) + Sửa đổi lần cuối (hàng tháng) + Ngày chụp + Ngày chụp (hàng ngày) + Ngày chụp (hàng tháng) + Loại tệp + Phần mở rộng + Xin lưu ý rằng Nhóm và Sắp xếp là 2 trường độc lập - Folder shown on the widget: - Show folder name + Thư mục hiển thị trên widget: + Hiển thị tên thư mục - Play videos automatically - Remember last video playback position - Toggle filename visibility - Loop videos - Animate GIFs at thumbnails - Max brightness when viewing fullscreen media - Crop thumbnails into squares - Show video durations - Rotate fullscreen media by - System setting - Device rotation - Aspect ratio - Black background at fullscreen media - Scroll thumbnails horizontally - Automatically hide system UI at fullscreen media - Delete empty folders after deleting their content - Allow controlling photo brightness with vertical gestures - Allow controlling video volume and brightness with vertical gestures - Show folder media count on the main view - Show extended details over fullscreen media - Manage extended details - Allow one finger zoom at fullscreen media - Allow instantly changing media by clicking on screen sides - Allow deep zooming images - Hide extended details when status bar is hidden - 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 + Phát video tự động + Ghi nhớ vị trí phát video cuối cùng + Chuyển đổi khả năng hiển thị tên tệp + Tự động phát video đầu khi hết video cuối + GIF động tại hình thu nhỏ + Độ sáng tối đa khi xem tập tin phương tiện toàn màn hình + Cắt hình thu nhỏ thành hình vuông + Hiển thị thời lượng video + Xoay tập tin toàn màn hình theo + Thiết lập hệ thống + Hướng xoay của thiết bị + Tỷ lệ khung hình + Nền đen khi xem toàn màn hình + Cuộn hình thu nhỏ theo chiều ngang + Tự động ẩn giao diện người dùng hệ thống khi xem toàn màn hình + Xóa các thư mục trống sau khi xóa nội dung của chúng + Cho phép kiểm soát độ sáng của ảnh bằng cách vuốt dọc màn hình + Cho phép kiểm soát âm lượng và độ sáng của video bằng cách vuốt dọc màn hình + Hiển thị số thư mục trên giao diện chính + Hiển thị chi tiết mở rộng khi xem toàn màn hình + Quản lý chi tiết mở rộng + Cho phép thu phóng một ngón tay khi xem toàn màn hình + Cho phép chuyển tiếp ngay lập tức bằng cách nhấp vào các cạnh màn hình + Cho phép phóng to hình ảnh sâu + Ẩn chi tiết mở rộng khi thanh trạng thái bị ẩn + Hiển thị một số nút chức năng ở dưới cùng của màn hình + Hiển thị Thùng rác tại màn hình thư mục + Hình ảnh có thể phóng to + Hiển thị hình ảnh với chất lượng cao nhất có thể + Hiển thị Thùng rác là mục cuối cùng trên màn hình chính + Cho phép đóng chế độ xem toàn màn hình bằng cách vuốt xuống + Cho phép phóng to 1:1 với hai lần nháy đúp + Luôn mở video trên một màn hình riêng biệt bằng cử chỉ ngang mới + Hiển thị màn hình chữ V nếu có + Cho phép xoay hình ảnh bằng cử chỉ + Ưu tiên tải tệp + Tốc độ + Thỏa hiệp + Tránh hiển thị các tệp không hợp lệ + Hiển thị các loại tệp hình ảnh - Thumbnails - Fullscreen media - Extended details - Bottom actions + Hình thu nhỏ + Toàn màn hình + Chi tiết mở rộng + Hành động dưới cùng - Manage visible bottom actions - Toggle favorite - Toggle file visibility + Quản lý các hành động dưới cùng có thể nhìn thấy + Yêu thích + Ẩn/bỏ ẩn - Custom - Reset - Square - Transform - Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness - Contrast - Saturation - Clarity - Gamma - Blacks - Whites - Temperature - Sharpness - Reset - Focus - None - Radial - Linear - Mirrored - Gaussian - Text - Text Options - Text Color + Tùy chỉnh + Cài lại + Hình vuông + Biến đổi + Bộ lọc + Không + Điều chỉnh + Đổ bóng + Phơi sáng + Làm nổi bật + Độ sáng + Tương phản + Độ bão hòa + Sáng sủa + Đồ thị gamma + Đen + Trắng + Nhiệt độ + Độ sắc nét + Đặt lại + Tiêu điểm + Không + Xuyên tâm + Tuyến tính + Nhân đôi + Đường cong gauss + Văn bản + Tùy chọn văn bản + Màu văn bản Font - Add - Edit - Straighten + Thêm + Biên tập + Duỗi thẳng Font - Color - BG Color - Alignment - To Front - Delete - Your text - Brush - Color - Size - Hardness - To Front - Delete - Brush Color - Editor - Close Editor? - Do you really want to discard the image? - Yes - No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker - Transparent - White - Gray - Black - Light blue - Blue - Purple - Orchid - Pink - Red - Orange - Gold - Yellow - Olive - Green - Aquamarin - Pipettable color + Màu sắc + Màu BG + Căn chỉnh + Lên trước + Xóa + Văn bản của bạn + Cọ vẽ + Màu sắc + Kích thước + Độ đậm + Lên trước + Xóa bỏ + Màu cọ + Trình biên tập + Đóng trình biên tập? + Bạn có thực sự muốn loại bỏ hình ảnh? + + Không + Hủy bỏ + Chấp nhận + Lưu + Xuất hình ảnh… + Xuất hình ảnh %s. + Lật H + Lật V + Hoàn tác + Lui lại + Bộ chọn màu + Trong suốt + Trắng + Xám + Đen + Màu xanh nhạt + Màu xanh da trời + Màu tím + màu hoa lan + Hồng + Đỏ + Cam + Vàng kim + Màu vàng + Xanh ô-liu + Xanh lá + Xanh ngọc nước biển + Màu sắc dễ thương - How can I make Simple Gallery the default device gallery? - First you have to find the currently default gallery in the Apps section of your device settings, look for a button that says something like \"Open by default\", click on it, then select \"Clear defaults\". - The next time you will try opening an image or video you should see an app picker, where you can select Simple Gallery and make it the default app. - I locked the app with a password, but I forgot it. What can I do? - You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files. - How can I make an album always appear at the top? - You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method. - How can I fast-forward videos? - 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. - What is the difference between hiding and excluding a folder? - Exclude prevents displaying the folder only in Simple Gallery, while Hide works system-wise and it hides the folder from other galleries too. It works by creating an empty \".nomedia\" file in the given folder, which you can then remove with any file manager too. - Why do folders with music cover art or stickers show up? - It can happen that you will see some unusual albums show up. You can easily exclude them by long pressing them and selecting Exclude. In the next dialog you can then select the parent folder, chances are it will prevent the other related albums showing up too. - A folder with images isn\'t showing up, or it doesn\'t show all items. What can I do? - That can have multiple reasons, but solving it is easy. Just go in Settings -> Manage Included Folders, select Plus and navigate to the required folder. - What if I want just a few particular folders visible? - Adding a folder at the Included Folders doesn\'t automatically exclude anything. What you can do is go in Settings -> Manage Excluded Folders, exclude the root folder \"/\", then add the desired folders at Settings -> Manage Included Folders. - That will make only the selected folders visible, as both excluding and including are recursive and if a folder is both excluded and included, it will show up. - Can I crop images with this app? - Yes, you can crop images in the editor, by dragging the image corners. You can get to the editor either by long pressing an image thumbnail and selecting Edit, or selecting Edit from the fullscreen view. - 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. + Làm thế nào để đặt Simple Gallery thành thư viện mặc định? + Trước tiên, bạn phải tìm thư viện hiện tại mặc định trong phần Ứng dụng trong Cài đặt thiết bị của bạn, tìm nút có nội dung như \"Mở theo mặc định\", nhấp vào đó, sau đó chọn \"Xóa mặc định\". +         Lần tới, bạn hãy thử mở một hình ảnh hoặc video, bạn sẽ thấy một bộ chọn ứng dụng, nơi bạn có thể chọn Simple Gallery và biến nó thành ứng dụng mặc định. + Tôi đã khóa ứng dụng bằng mật khẩu, nhưng tôi quên mất. Tôi có thể làm gì? + Bạn có thể giải quyết nó theo 2 cách. Bạn có thể cài đặt lại ứng dụng hoặc tìm ứng dụng trong cài đặt thiết bị của mình và chọn \"Xóa dữ liệu\". Nó sẽ thiết lập lại tất cả các cài đặt của bạn, nó sẽ không xóa bất kỳ tập tin phương tiện nào. + Làm thế nào tôi có thể làm cho một album luôn xuất hiện ở đầu? + Bạn có thể nhấn và giữ album mong muốn và chọn biểu tượng Ghim ở menu hành động, nó sẽ ghim nó lên trên cùng. Bạn cũng có thể ghim nhiều thư mục, các mục được ghim sẽ được sắp xếp theo phương pháp sắp xếp mặc định. + Làm cách nào tôi có tua video nhanh? + Bạn có thể kéo ngón tay của mình theo chiều ngang trên trình phát video hoặc nhấp vào văn bản thời lượng hiện tại hoặc tối đa gần thanh tìm kiếm. Điều đó sẽ di chuyển video hoặc lùi hoặc tiến. + Sự khác biệt giữa ẩn và loại trừ một thư mục là gì? + Loại trừ ngăn chỉ hiển thị thư mục trong Thư viện đơn giản, trong khi Ẩn hoạt động theo hệ thống và nó cũng ẩn thư mục khỏi các phòng trưng bày khác. Nó hoạt động bằng cách tạo một tệp \".nomedia\" trong thư mục đã cho, sau đó bạn cũng có thể xóa bằng bất kỳ trình quản lý tệp nào. + Tại sao hiển thị các thư mục với ảnh bìa hoặc nhãn dán? + Nó có thể xảy ra rằng bạn sẽ thấy một số album bất thường xuất hiện. Bạn có thể dễ dàng loại trừ chúng bằng cách nhấn giữ và chọn Loại trừ. Trong hộp thoại tiếp theo bạn có thể chọn thư mục mẹ sau đó, rất có thể nó sẽ ngăn các album liên quan khác xuất hiện. + Một thư mục chứa hình ảnh không hiển thị hoặc không hiển thị tất cả các mục. Tôi có thể làm gì? + Điều đó có thể có nhiều lý do, nhưng giải quyết nó là dễ dàng. Chỉ cần vào Cài đặt -> Quản lý các thư mục được bao gồm, chọn Thêm và điều hướng đến thư mục cần thiết. + Nếu tôi chỉ muốn một vài thư mục cụ thể hiển thị thì sao? + Thêm thư mục tại Thư mục được bao gồm sẽ không tự động loại trừ bất cứ điều gì. Những gì bạn có thể làm là vào Cài đặt -> Quản lý các thư mục bị loại trừ, loại trừ thư mục gốc \"/\", sau đó thêm các thư mục mong muốn tại Cài đặt -> Quản lý các thư mục được bao gồm. +         Điều đó sẽ chỉ hiển thị các thư mục đã chọn, vì cả loại trừ và bao gồm đều được đệ quy và nếu một thư mục được loại trừ và bao gồm, nó sẽ hiển thị. + Tôi có thể cắt hình ảnh với ứng dụng này không? + Có, bạn có thể cắt hình ảnh trong trình chỉnh sửa, bằng cách kéo các góc hình ảnh. Bạn có thể truy cập trình chỉnh sửa bằng cách nhấn và thu nhỏ hình ảnh và chọn Chỉnh sửa hoặc chọn Chỉnh sửa từ chế độ xem toàn màn hình. + Tôi có thể bằng cách nào đó nhóm hình thu nhỏ tập tin phương tiện không? + Được chứ, chỉ cần sử dụng mục menu \"Nhóm theo\" trong khi ở chế độ xem hình thu nhỏ. Bạn có thể nhóm các tệp theo nhiều tiêu chí, bao gồm cả Ngày chụp. Nếu bạn sử dụng chức năng \"Hiển thị tất cả các nội dung thư mục\", bạn cũng có thể nhóm chúng theo các thư mục. + Sắp xếp theo ngày chụp dường như không hoạt động đúng, làm thế nào tôi có thể sửa nó? + Rất có thể là do các tệp được sao chép từ đâu đó. Bạn có thể sửa nó bằng cách chọn hình thu nhỏ của tệp và chọn \"Sửa giá trị ngày chụp\". + Tôi thấy một số dải màu trên hình ảnh. Làm thế nào tôi có thể cải thiện chất lượng? + Giải pháp hiện tại để hiển thị hình ảnh hoạt động tốt trong phần lớn các trường hợp, nhưng nếu bạn muốn chất lượng hình ảnh tốt hơn nữa, bạn có thể bật \"Hiển thị hình ảnh ở chất lượng cao nhất có thể\" ở cài đặt ứng dụng, trong phần \"Hình ảnh có thể phóng to sâu\". + Tôi đã ẩn một tập tin/thư mục. Làm thế nào tôi có thể bỏ ẩn nó? + Bạn có thể nhấn mục menu \"Tạm thời hiển thị các mục bị ẩn\" ở màn hình chính hoặc chuyển đổi \"Hiển thị các mục bị ẩn\" trong Cài đặt ứng dụng để xem mục bị ẩn. Nếu bạn muốn bỏ ẩn nó, chỉ cần nhấn và giữ \"Bỏ ẩn\". Các thư mục được ẩn bằng cách thêm tệp ẩn \".nomedia\" vào chúng, bạn cũng có thể xóa tệp bằng bất kỳ trình quản lý tệp nào. + Tại sao ứng dụng chiếm quá nhiều dung lượng ? + Bộ nhớ cache ứng dụng có thể mất tới 250MB, nó đảm bảo tải hình ảnh nhanh hơn. Nếu ứng dụng chiếm nhiều dung lượng hơn, rất có thể là do bạn có nhiều mục trong Thùng rác. Những tập tin đó được tính vào kích thước ứng dụng. Bạn có thể xóa thùng rác bằng cách mở nó và xóa tất cả các tệp hoặc từ Cài đặt ứng dụng. Mọi tệp trong Thùng rác sẽ tự động bị xóa sau 30 ngày. - Simple Gallery Pro - Photo Manager & Editor + Simple Gallery Pro - Trình quản lý ảnh & biên tập - Browse your memories without any interruptions. + Duyệt khoảnh khắc của bạn mà không có bất kỳ gián đoạn. - 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. - - The app contains no ads and unnecessary permissions. As the app doesn’t require internet access either, your privacy is protected. + Simple Gallery Pro là một bộ sưu tập ngoại tuyến có khả năng tùy biến cao. Tổ chức & chỉnh sửa ảnh của bạn, khôi phục các tệp đã xóa bằng thùng rác, bảo vệ & ẩn các tệp và xem được nhiều định dạng ảnh & video bao gồm RAW, SVG và nhiều hơn nữa.     +      Ứng dụng này không chứa quảng cáo và các quyền không cần thiết. Vì ứng dụng không có yêu cầu truy cập internet, quyền riêng tư của bạn sẽ được bảo vệ. ------------------------------------------------- - SIMPLE GALLERY PRO – FEATURES + SIMPLE GALLERY PRO – TÍNH NĂNG ------------------------------------------------- - • 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! + • Thư viện ngoại tuyến không có quảng cáo hoặc popups   - 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! + • Trình chỉnh sửa ảnh thư viện đơn giản - cắt, xoay, thay đổi kích thước, vẽ, lọc & hơn nữa - 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. +       • Không cần truy cập internet, mang lại cho bạn sự riêng tư và bảo mật hơn - 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! +       • Không cần quyền không cần thiết   - 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. +       • Nhanh chóng tìm kiếm hình ảnh, video & các tập tin +        + • Mở & xem nhiều loại ảnh và video khác nhau (RAW, SVG, toàn cảnh, v.v.)     - 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. +      • Một loạt các cử chỉ trực quan để dễ dàng chỉnh sửa & tổ chức tập tin - Check out the full suite of Simple Tools here: +       • Rất nhiều cách để lọc, nhóm & sắp xếp tập tin + +       • Tùy chỉnh giao diện của Simple Gallery Pro    + +       • Có sẵn trong 32 ngôn ngữ    + +       • Đánh dấu các tập tin là mục yêu thích để truy cập nhanh + +       • Bảo vệ ảnh của bạn & video có mẫu hình, pin hoặc dấu vân tay     + +      • Sử dụng pin, mẫu hình & dấu vân tay để bảo vệ khởi chạy ứng dụng hoặc các chức năng cụ thể + +       • Khôi phục ảnh đã xóa & video từ thùng rác     + +      • Chuyển đổi khả năng hiển thị của các tệp để ẩn ảnh & video    + +       • Tạo một slideshow tùy biến các tập tin của bạn + +       • Xem thông tin chi tiết về các tập tin của bạn (độ phân giải, giá trị EXIF, v.v.) + +       • Simple Gallery Pro là mã nguồn mở + +         Nhiều và nhiều hơn nữa! + + TRÌNH BIÊN TẬP ẢNH + Simple Gallery Pro giúp bạn dễ dàng chỉnh sửa ảnh của mình một cách nhanh chóng. Cắt, lật, xoay và thay đổi kích thước hình ảnh của bạn. Nếu bạn cảm thấy sáng tạo hơn một chút, bạn có thể thêm các bộ lọc và vẽ lên hình ảnh của mình! + + HỖ TRỢ NHIỀU ĐỊNH DẠNG FILE + Không giống như một số Trình xem thư viện khác & Trình tổ chức ảnh, Simple Gallery Pro hỗ trợ rất nhiều loại tệp khác nhau bao gồm JPEG, PNG, MP4, MKV, RAW, SVG, Ảnh toàn cảnh, Video toàn cảnh và nhiều loại khác. + + TRÌNH QUẢN LÝ THƯ VIỆN TÙY BIẾN CAO + Từ giao diện người dùng đến các nút chức năng trên thanh công cụ dưới cùng, Simple Gallery Pro có khả năng tùy biến cao và hoạt động theo cách bạn muốn. Không có trình quản lý thư viện nào khác có sự linh hoạt này! Nhờ nguồn mở, chúng tôi cũng có sẵn trong 32 ngôn ngữ! + + PHỤC HỒI ẢNH & VIDEO ĐÃ BỊ XÓA + Vô tình xóa một bức ảnh hoặc video quý giá? Hãy lo lắng! Simple Gallery Pro có thùng rác tiện dụng, nơi bạn có thể khôi phục ảnh & video đã xóa dễ dàng. + + BẢO VỆ & ẨN ẢNH ,VIDEO & TỆP + Sử dụng Mã pin, mẫu hình hoặc vân tay của bạn, bạn có thể bảo vệ và ẩn ảnh, video & toàn bộ album. Bạn có thể tự bảo vệ ứng dụng hoặc đặt khóa trên các chức năng cụ thể của ứng dụng. Ví dụ, bạn không thể xóa một tập tin mà chưa quét dấu vân tay, giúp bảo vệ các tập tin của bạn khỏi bị xóa do vô tình. + + Kiểm tra bộ công cụ Simple đầy đủ tại đây: https://www.simplemobiletools.com - Standalone website of Simple Gallery Pro: + Website của Simple Gallery Pro: https://www.simplemobiletools.com/gallery Facebook: From 61207a6407c0a0eb0d2cfbaa360dd6678724eed9 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 29 Dec 2019 12:59:47 +0100 Subject: [PATCH 007/117] updating the vietnamese app info --- .../metadata/android/vi/full_description.txt | 52 +++++++++++++++++++ .../metadata/android/vi/short_description.txt | 1 + fastlane/metadata/android/vi/title.txt | 1 + 3 files changed, 54 insertions(+) create mode 100644 fastlane/metadata/android/vi/full_description.txt create mode 100644 fastlane/metadata/android/vi/short_description.txt create mode 100644 fastlane/metadata/android/vi/title.txt diff --git a/fastlane/metadata/android/vi/full_description.txt b/fastlane/metadata/android/vi/full_description.txt new file mode 100644 index 000000000..11297ac44 --- /dev/null +++ b/fastlane/metadata/android/vi/full_description.txt @@ -0,0 +1,52 @@ +Simple Gallery Pro là một bộ sưu tập ngoại tuyến có khả năng tùy biến cao. Tổ chức & chỉnh sửa ảnh của bạn, khôi phục các tệp đã xóa bằng thùng rác, bảo vệ & ẩn các tệp và xem được nhiều định dạng ảnh & video bao gồm RAW, SVG và nhiều hơn nữa. Ứng dụng này không chứa quảng cáo và các quyền không cần thiết. Vì ứng dụng không có yêu cầu truy cập internet, quyền riêng tư của bạn sẽ được bảo vệ. + +------------------------------------------------- +SIMPLE GALLERY PRO – TÍNH NĂNG +------------------------------------------------- + +• Thư viện ngoại tuyến không có quảng cáo hoặc popups +• Trình chỉnh sửa ảnh thư viện đơn giản - cắt, xoay, thay đổi kích thước, vẽ, lọc & hơn nữa +• Không cần truy cập internet, mang lại cho bạn sự riêng tư và bảo mật hơn +• Không cần quyền không cần thiết +• Nhanh chóng tìm kiếm hình ảnh, video & các tập tin +• Mở & xem nhiều loại ảnh và video khác nhau (RAW, SVG, toàn cảnh, v.v.) +• Một loạt các cử chỉ trực quan để dễ dàng chỉnh sửa & tổ chức tập tin +• Rất nhiều cách để lọc, nhóm & sắp xếp tập tin +• Tùy chỉnh giao diện của Simple Gallery Pro +• Có sẵn trong 32 ngôn ngữ +• Đánh dấu các tập tin là mục yêu thích để truy cập nhanh +• Bảo vệ ảnh của bạn & video có mẫu hình, pin hoặc dấu vân tay +• Sử dụng pin, mẫu hình & dấu vân tay để bảo vệ khởi chạy ứng dụng hoặc các chức năng cụ thể +• Khôi phục ảnh đã xóa & video từ thùng rác +• Chuyển đổi khả năng hiển thị của các tệp để ẩn ảnh & video +• Tạo một slideshow tùy biến các tập tin của bạn +• Xem thông tin chi tiết về các tập tin của bạn (độ phân giải, giá trị EXIF, v.v.) +• Simple Gallery Pro là mã nguồn mở +  Nhiều và nhiều hơn nữa! + +TRÌNH BIÊN TẬP ẢNH +Simple Gallery Pro giúp bạn dễ dàng chỉnh sửa ảnh của mình một cách nhanh chóng. Cắt, lật, xoay và thay đổi kích thước hình ảnh của bạn. Nếu bạn cảm thấy sáng tạo hơn một chút, bạn có thể thêm các bộ lọc và vẽ lên hình ảnh của mình! + +HỖ TRỢ NHIỀU ĐỊNH DẠNG FILE +Không giống như một số Trình xem thư viện khác & Trình tổ chức ảnh, Simple Gallery Pro hỗ trợ rất nhiều loại tệp khác nhau bao gồm JPEG, PNG, MP4, MKV, RAW, SVG, Ảnh toàn cảnh, Video toàn cảnh và nhiều loại khác. + +TRÌNH QUẢN LÝ THƯ VIỆN TÙY BIẾN CAO +Từ giao diện người dùng đến các nút chức năng trên thanh công cụ dưới cùng, Simple Gallery Pro có khả năng tùy biến cao và hoạt động theo cách bạn muốn. Không có trình quản lý thư viện nào khác có sự linh hoạt này! Nhờ nguồn mở, chúng tôi cũng có sẵn trong 32 ngôn ngữ! + +PHỤC HỒI ẢNH & VIDEO ĐÃ BỊ XÓA +Vô tình xóa một bức ảnh hoặc video quý giá? Hãy lo lắng! Simple Gallery Pro có thùng rác tiện dụng, nơi bạn có thể khôi phục ảnh & video đã xóa dễ dàng. + +BẢO VỆ & ẨN ẢNH ,VIDEO & TỆP +Sử dụng Mã pin, mẫu hình hoặc vân tay của bạn, bạn có thể bảo vệ và ẩn ảnh, video & toàn bộ album. Bạn có thể tự bảo vệ ứng dụng hoặc đặt khóa trên các chức năng cụ thể của ứng dụng. Ví dụ, bạn không thể xóa một tập tin mà chưa quét dấu vân tay, giúp bảo vệ các tập tin của bạn khỏi bị xóa do vô tình. + +Kiểm tra bộ công cụ Simple đầy đủ tại đây: +https://www.simplemobiletools.com + +Website của Simple Gallery Pro: +https://www.simplemobiletools.com/gallery + +Facebook: +https://www.facebook.com/simplemobiletools + +Reddit: +https://www.reddit.com/r/SimpleMobileTools diff --git a/fastlane/metadata/android/vi/short_description.txt b/fastlane/metadata/android/vi/short_description.txt new file mode 100644 index 000000000..5fdf2f40c --- /dev/null +++ b/fastlane/metadata/android/vi/short_description.txt @@ -0,0 +1 @@ +Duyệt khoảnh khắc của bạn mà không có bất kỳ gián đoạn. diff --git a/fastlane/metadata/android/vi/title.txt b/fastlane/metadata/android/vi/title.txt new file mode 100644 index 000000000..fe6636dbd --- /dev/null +++ b/fastlane/metadata/android/vi/title.txt @@ -0,0 +1 @@ +Simple Gallery Pro - Trình quản lý ảnh & biên tập From b279f03a779ebab85fb218e463eb21f173c7078f Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 29 Dec 2019 13:27:39 +0100 Subject: [PATCH 008/117] updating the apps czech short description --- fastlane/metadata/android/cs/short_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/cs/short_description.txt b/fastlane/metadata/android/cs/short_description.txt index d9ce4d9f8..838a83301 100644 --- a/fastlane/metadata/android/cs/short_description.txt +++ b/fastlane/metadata/android/cs/short_description.txt @@ -1 +1 @@ -Offline galerie bez reklam. Organizujte, upravujte a chraňte své fotografie a videa +Prohlížejte své vzpomínky bez přerušení. From 7489709e49c3537340a03eedd0146acd239c2a3a Mon Sep 17 00:00:00 2001 From: Tibor Kaputa Date: Sun, 29 Dec 2019 13:29:56 +0100 Subject: [PATCH 009/117] tweaking the file a bit --- app/src/main/res/values-hu/strings.xml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index f872c7c82..b42e97172 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -1,4 +1,4 @@ - + Simple Gallery Galéria @@ -34,6 +34,7 @@ Átméretezett verzió megosztása 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 + Média szűrő Kép @@ -44,6 +45,7 @@ Portraits A kiválasztott szűrők nem találtak médiafájlokat. Szűrők változtatása + Ez a funkció elrejti a mappát egy \'.nomedia\' fájl hozzáadásával, és elrejti az almappákat is. Láthatóvá teheti ezeket a Beállítások \"Mutassa a rejtett elemeket\" menüpontban. Folytatja? Kizárás @@ -57,12 +59,14 @@ Rejtett mappák Rejtett mappák kezelése Úgy tűnik, a mappái nincsenek elrejtve egy \".nomedia\" fájllal. + Befoglalt mappák Befoglalt mappák kezelése Mappa hozzáadása Ha vannak olyan mappák, amelyek média fájlokat tartalmaznak, de az alkalmazás nem ismerte fel, akkor kézzel is hozzáadhatja ezeket.\n\nAz elemek hozzáadása nem zár ki más mappákat. Nem talált médiafájlokat. Ezt megoldhatja a médiafájlokat tartalmazó mappák manuális hozzáadásával. + Átméretezés Kiválasztás átméretezése és mentés @@ -70,6 +74,7 @@ Magasság Képarány megtartása Írjon be érvényes felbontást + Szerkesztő Mentés @@ -92,6 +97,7 @@ Egyéb + Simple Wallpaper Beállítás háttérképként @@ -104,6 +110,7 @@ Kezdő képernyő Zárolás képernyő Kezdő és zárolás képernyő + Diavetítés Időköz (másodperc): @@ -119,11 +126,13 @@ Csúsztatás A diavetítés vége A diavetítéshez nem található média + Nézet típus változtatása Rács Lista Közvetlen almappa csoport + Csoportosítás Nincs csoportosítás @@ -137,9 +146,11 @@ Fájl típus Kiterjesztés Kérjük, vegye figyelembe, hogy a csoportosítás és a rendezés 2 egymástól független mező + Mappa mutatása a widgeten: Mutassa a mappa nevét + Automatikus videó lejátszás Emlékezzen a videó utolsó lejátszási pozícióra @@ -181,15 +192,18 @@ Kiegyensúlyozott Kerülje az érvénytelen fájlok mutatását Mutassa a kép fájl típusokat + Miniatűrök Teljes képernyős média Bővített részletek Gomb műveletek + Látható gomb műveletek kezelése Kedvencek módosítása Fájl láthatóság módosítása + Egyéni Reset @@ -270,6 +284,7 @@ Zöld Aquamarin Pipetta szín + Hogyan tudom beállítani a Simple Gallery-t alapértelmezett galériának? Először meg kell találnia az alapértelmezett galériát az eszköz beállításainak Alkalmazások részében. Keressen egy olyan gombot, amely valami olyasmit, mint az \"Legyen alapértelmezett\", kattintson rá, majd válassza a \"Alapértelmezések törlése\" pontot. @@ -301,6 +316,7 @@ Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglal A rejtett elemek megtekintéséhez nyomja meg a \"Rejtettek ideiglenes mutatása\" elemet a fő képernyőn, vagy válassza a \"Mutassa a rejtett elemeket\" az alkalmazás beállításaiban. Ha meg akarja szüntetni, csak hosszan nyomja meg, és válassza a \"Elrejtés megszüntetés\" lehetőséget. A mappák elrejtése egy rejtett \". nomedia\" fájl hozzáadásával történik. Ezt a fájlt bármelyik fájlkezelővel is törölheti. Miért használ az alkalmazás ennyi helyet? Az alkalmazás gyorsítótára akár a 250 MB-ot is meghaladhatja, és ez gyorsabb megjelenítést biztosít. Ha az alkalmazás még több helyet foglal el, a legvalószínűbb oka, hogy a Lomtárban is van elem. Ezek a fájlok is az alkalmazás méretébe számítanak bele. Törölheti a Lomtárat azzal, hogy megnyitja és törli az összes fájlt vagy az alkalmazás beállításait. A Lomtárban lévő minden fájl 30 nap elteltével automatikusan törlődik. + Simple Gallery Pro - Photo Manager & Editor From 69bce78001f0c89a15cbb10311a6191e537826c9 Mon Sep 17 00:00:00 2001 From: AlbatorV Date: Sun, 29 Dec 2019 15:16:08 +0100 Subject: [PATCH 010/117] Update strings.xml --- app/src/main/res/values-fr/strings.xml | 154 ++++++++++++------------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 07308d101..8597683cf 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -32,7 +32,7 @@ Correction en cours... Dates corrigées Partager une version redimensionnée - 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! + Hé,\n\nvous avez apparemment fait une mise à niveau à partir de l'ancienne application gratuite. Vous pouvez maintenant désinstaller l'ancienne version avec le bouton \'Mettre à niveau vers Pro\' en haut des paramètres de l'application.\n\nVos éléments de la corbeille seront supprimés, les éléments favoris seront non marqués et vous devrez également restaurer les paramètres de votre application.\n\nMerci ! Basculer vers la recherche de fichiers @@ -58,7 +58,7 @@ Supprimer tous les dossiers de la liste des exclusions ? Cela n\'effacera pas les dossiers. Dossiers cachés Gérer les dossiers cachés - Il semblerait que vous n\'ayez pas de dossier cachés avec un fichier \".nomedia\". + Il semblerait que vous n\'ayez pas de dossier caché avec un fichier \".nomedia\". Dossiers ajoutés @@ -81,8 +81,8 @@ Pivoter Emplacement Emplacement invalide - Échec de l\'édition de l\'image - File edited successfully + L\'édition de l\'image a échoué + L\'image a été éditée avec succès Modifier l\'image avec : Aucun éditeur d\'image trouvé Emplacement du fichier inconnu @@ -132,7 +132,7 @@ Mode sous-dossiers - Grouper par + Grouper par... Ne pas grouper les fichiers Dossier Date de modification @@ -188,7 +188,7 @@ Priorité de chargement des fichiers Rapide Compromis - Eviter l\'affichage de fichiers invalides + Éviter l\'affichage de fichiers invalides Afficher les types d\'image @@ -203,85 +203,85 @@ Visibilité du fichier - Custom - Reset - Square - Transform - Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness - Contrast + Libre + Réinitialiser + Carré + Transformer + Filtres + Aucun + Ajuster + Ombres + Exposition + Détails + Luminosité + Contraste Saturation - Clarity + Clarté Gamma - Blacks - Whites - Temperature - Sharpness - Reset + Noirs + Blancs + Température + Netteté + Réinitialiser Focus - None + Aucun Radial - Linear - Mirrored - Gaussian - Text - Text Options - Text Color - Font - Add - Edit - Straighten - Font - Color - BG Color - Alignment - To Front - Delete - Your text - Brush - Color - Size - Hardness - To Front - Delete - Brush Color - Editor - Close Editor? - Do you really want to discard the image? - Yes - No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker + Linéaire + Miroir + Gaussien + Texte + Options du texte + Couleur du texte + Police + Ajouter + Éditer + Redresser + Police + Couleur + Fond + Alignement + Devant + Supprimer + Votre texte + Pinceau + Couleur + Taille + Contour + Devant + Supprimer + Couleur du pinceau + Éditeur + Fermer l\'éditeur ? + Voulez-vous vraiment annuler l\'édition ? + Oui + Non + Annuler + Accepter + Enregistrer + Exportation de l\'image... + Exportation de l\'image %s + Symétrie H + Symétrie V + Annuler + Refaire + Sélecteur de couleur Transparent - White - Gray - Black - Light blue - Blue - Purple - Orchid - Pink - Red + Blanc + Gris + Noir + Bleu clair + Bleu + Violet + Orchidée + Rose + Rouge Orange - Gold - Yellow + Or + Jaune Olive - Green + Vert Aquamarin - Pipettable color + Couleur de la pipette Comment faire de Simple Gallery ma galerie par défaut ? From bf0a7381336fab7381abed4df90595e2e7b6f651 Mon Sep 17 00:00:00 2001 From: AlbatorV Date: Sun, 29 Dec 2019 17:26:42 +0100 Subject: [PATCH 011/117] Update strings.xml --- app/src/main/res/values-fr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8597683cf..331087125 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -132,7 +132,7 @@ Mode sous-dossiers - Grouper par... + Grouper par Ne pas grouper les fichiers Dossier Date de modification From b910f0b640a17191dee10f6579bb35d1caf37c2c Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 29 Dec 2019 18:21:50 +0100 Subject: [PATCH 012/117] a couple small string updates --- app/build.gradle | 2 +- app/src/main/res/values-fr/strings.xml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1ab77c63e..258f5ead0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.8' + implementation 'com.simplemobiletools:commons:5.21.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' diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 331087125..20ee4def5 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -29,10 +29,10 @@ Forcer la vue paysage Utiliser l\'orientation par défaut Corriger les dates de prise de vue - Correction en cours... + Correction en cours… Dates corrigées Partager une version redimensionnée - Hé,\n\nvous avez apparemment fait une mise à niveau à partir de l'ancienne application gratuite. Vous pouvez maintenant désinstaller l'ancienne version avec le bouton \'Mettre à niveau vers Pro\' en haut des paramètres de l'application.\n\nVos éléments de la corbeille seront supprimés, les éléments favoris seront non marqués et vous devrez également restaurer les paramètres de votre application.\n\nMerci ! + Hé,\n\nvous avez apparemment fait une mise à niveau à partir de l\'ancienne application gratuite. Vous pouvez maintenant désinstaller l\'ancienne version avec le bouton \'Mettre à niveau vers Pro\' en haut des paramètres de l\'application.\n\nVos éléments de la corbeille seront supprimés, les éléments favoris seront non marqués et vous devrez également restaurer les paramètres de votre application.\n\nMerci ! Basculer vers la recherche de fichiers @@ -83,7 +83,7 @@ Emplacement invalide L\'édition de l\'image a échoué L\'image a été éditée avec succès - Modifier l\'image avec : + Modifier l\'image avec: Aucun éditeur d\'image trouvé Emplacement du fichier inconnu Impossible de remplacer le fichier source @@ -100,8 +100,8 @@ Fond d\'écran simple Définir comme fond d\'écran Échec de la définition en tant que fond d\'écran - Définir comme fond d\'écran avec : - Définition du fond d\'écran en cours... + Définir comme fond d\'écran avec: + Définition du fond d\'écran en cours… Fond d\'écran défini Rapport d\'affichage portrait Rapport d\'affichage paysage @@ -111,7 +111,7 @@ Diaporama - Intervalle (secondes) : + Intervalle (secondes): Inclure les images Inclure les vidéos Inclure les GIFs @@ -146,7 +146,7 @@ \'Grouper par\' et \'Trier par\' sont 2 modes indépendants - Dossier affiché sur le widget : + Dossier affiché sur le widget: Afficher le nom du dossier @@ -258,7 +258,7 @@ Annuler Accepter Enregistrer - Exportation de l\'image... + Exportation de l\'image… Exportation de l\'image %s Symétrie H Symétrie V From 5e00bb6d625e45e5b73ff51b7f1c00cc224f4c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20F=C4=B1r=C4=B1nc=C4=B1?= Date: Tue, 31 Dec 2019 04:40:21 +0300 Subject: [PATCH 013/117] Update strings.xml --- app/src/main/res/values-tr/strings.xml | 164 ++++++++++++------------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index d044fb8ff..bbf693c31 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -42,7 +42,7 @@ GIF\'ler RAW resimler SVG\'ler - Portraits + Portreler Seçilen filtrelerle hiçbir medya dosyası bulunamadı. Filtreleri değiştir @@ -82,7 +82,7 @@ Yol Geçersiz resim yolu Resim düzenleme başarısız - File edited successfully + Dosya başarıyla düzenlendi Resmi şununla düzenle: Resim düzenleyici bulunamadı Bilinmeyen dosya konumu @@ -203,85 +203,85 @@ Dosya görünürlüğünü aç/kapat - Custom - Reset - Square - Transform - Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness - Contrast - Saturation - Clarity - Gamma - Blacks - Whites - Temperature - Sharpness - Reset - Focus - None - Radial - Linear - Mirrored - Gaussian - Text - Text Options - Text Color - Font - Add - Edit - Straighten - Font - Color - BG Color - Alignment - To Front - Delete - Your text - Brush - Color - Size - Hardness - To Front - Delete - Brush Color - Editor - Close Editor? - Do you really want to discard the image? - Yes - No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker - Transparent - White - Gray - Black - Light blue - Blue - Purple - Orchid - Pink - Red - Orange - Gold - Yellow - Olive - Green - Aquamarin - Pipettable color + Özel + Sıfırla + Kare + Dönüştür + Filtre + Yok + Ayarla + Gölgeler + Pozlama + Vurgular + Parlaklık + Kontrast + Doygunluk + Berraklık + Gama + Siyahlar + Beyazlar + Sıcaklık + Netlik + Sıfırla + Odak + Yok + Radyal + Doğrusal + Aynalı + Gauss + Metin + Metin Seçenekleri + Metin Rengi + Yazı Tipi + Ekle + Düzenle + Düzle + Yazı Tipi + Renk + Arka Renk + Hizalama + Öne + Sil + Metniniz + Fırça + Renk + Boyut + Sertlik + Öne + Sil + Fırça Rengi + Editör + Editör kapatılsın mı? + Değişiklikler kaydedilmeden çıkılsın mı? + Evet + Hayır + İptal + Kabul Et + Kaydet + Resim dışa aktarılıyor… + Resim dışa aktarılıyor %s. + Yatay Çevir + Dikey Çevir + Geri Al + Yinele + Renk Seçici + Şeffaf + Beyaz + Gri + Siyah + Açık Mavi + Mavi + Mor + Orkide + Pembe + Kırmızı + Turuncu + Altın + Sarı + Zeytin + Yeşil + Akuamarin + Pipetlenebilir renk Basit Galeri\'yi nasıl varsayılan cihaz galerisi yapabilirim? @@ -319,7 +319,7 @@ Basit Galeri Pro - Fotoğraf Yönetici & Düzenleyici - Browse your memories without any interruptions. + Anılarınıza kesintisiz göz atın. Basit Galeri Pro, özelleştirilebilir bir çevrimdışı galeridir. Fotoğraflarınızı düzenleyin ve organize edin, geri dönüşüm kutusuyla silinen dosyaları kurtarın, dosyaları koruyun ve gizleyin ve RAW, SVG ve çok daha fazlası dahil olmak üzere çok çeşitli fotoğraf ve video formatlarını görüntüleyin. From 73e035c557c4e947f76b3386583f3cd643258b25 Mon Sep 17 00:00:00 2001 From: fricyo <30796677+fricyo@users.noreply.github.com> Date: Wed, 1 Jan 2020 12:12:40 +0800 Subject: [PATCH 014/117] Update Translation --- app/src/main/res/values-zh-rTW/strings.xml | 158 ++++++++++----------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index ae4184a87..62c2ab62d 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -82,7 +82,7 @@ 路徑 無效的圖片路徑 圖片編輯失敗 - File edited successfully + 檔案編輯成功 編輯圖片: 找不到圖片編輯器 未知的檔案位置 @@ -203,85 +203,85 @@ 檔案顯示 - Custom - Reset - Square - Transform - Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness - Contrast - Saturation - Clarity + 自訂 + 重置 + 正方形 + 變形 + 濾鏡 + + 調整 + 暗部 + 曝光 + 高光 + 亮度 + 對比 + 飽和度 + 清晰度 Gamma - Blacks - Whites - Temperature - Sharpness - Reset - Focus - None - Radial - Linear - Mirrored - Gaussian - Text - Text Options - Text Color - Font - Add - Edit - Straighten - Font - Color - BG Color - Alignment - To Front - Delete - Your text - Brush - Color - Size - Hardness - To Front - Delete - Brush Color - Editor - Close Editor? - Do you really want to discard the image? - Yes - No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker - Transparent - White - Gray - Black - Light blue - Blue - Purple - Orchid - Pink - Red - Orange - Gold - Yellow - Olive - Green - Aquamarin - Pipettable color + 黑色 + 白色 + 色溫 + 銳利度 + 重置 + 聚焦 + + 放射 + 線性 + 鏡像 + 高斯 + 文字 + 文字選項 + 文字顏色 + 字型 + 添加 + 編輯 + 拉伸 + 字型 + 顏色 + 背景顏色 + 對齊 + 移到最上層 + 刪除 + 你的文字 + 筆刷 + 顏色 + 尺寸 + 硬度 + 移到最上層 + 刪除 + 筆刷顏色 + 編輯器 + 關閉編輯器? + 你確定要捨棄圖片嗎? + + + 取消 + 接受 + 儲存 + 圖片匯出中… + 圖片%s匯出中。 + 水平翻轉 + 垂直翻轉 + 復原 + 取消復原 + 顏色挑選器 + 透明 + 白色 + 灰色 + 黑色 + 淺藍 + 藍色 + 紫色 + 淡紫 + 粉紅 + 紅色 + 橘色 + 金色 + 黃色 + 橄欖 + 綠色 + 藍綠 + 顏色吸取器 我如何將簡易相簿設為預設相簿? From 307e887fc5b78b1919cd14e85171c6d94f780688 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 2 Jan 2020 16:30:24 +0100 Subject: [PATCH 015/117] fix #1695, do not allow filtering out all file types --- .../gallery/pro/dialogs/FilterMediaDialog.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/FilterMediaDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/FilterMediaDialog.kt index b4c072021..dc8a06293 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/FilterMediaDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/FilterMediaDialog.kt @@ -45,6 +45,10 @@ class FilterMediaDialog(val activity: BaseSimpleActivity, val callback: (result: if (view.filter_media_portraits.isChecked) result += TYPE_PORTRAITS + if (result == 0) { + result = TYPE_DEFAULT_FILTER + } + activity.config.filterMedia = result callback(result) } From 740b82d5f2aa9b748be19d12a21b10f519d5d5e6 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 2 Jan 2020 16:58:29 +0100 Subject: [PATCH 016/117] updating the portugal apps short description --- fastlane/metadata/android/pt-rBR/short_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/pt-rBR/short_description.txt b/fastlane/metadata/android/pt-rBR/short_description.txt index d29c44f98..e87fc131b 100644 --- a/fastlane/metadata/android/pt-rBR/short_description.txt +++ b/fastlane/metadata/android/pt-rBR/short_description.txt @@ -1 +1 @@ -Galeria offline sem anúncios. Organize, edite, e proteja fotos e vídeos. +Procure suas memórias sem interrupções. From fbb20477d6c91029b06f3c0fa7bfd5900cab718d Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 2 Jan 2020 17:11:19 +0100 Subject: [PATCH 017/117] update commons to 5.21.14 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 258f5ead0..317c093b1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.9' + implementation 'com.simplemobiletools:commons:5.21.14' 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 6234050c7f876d8b0f8c8f50acc39cd156c5d69f Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 2 Jan 2020 17:37:41 +0100 Subject: [PATCH 018/117] fix #1668, properly delete empty folders when appropriate --- .../gallery/pro/activities/MainActivity.kt | 6 ++++++ .../simplemobiletools/gallery/pro/extensions/FileDirItem.kt | 3 +-- .../com/simplemobiletools/gallery/pro/extensions/String.kt | 3 +++ 3 files changed, 10 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 cf7ee98bf..1af9c13d0 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 @@ -592,6 +592,12 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { folders.filter { !getDoesFilePathExist(it.absolutePath, OTGPath) }.forEach { mDirectoryDao.deleteDirPath(it.absolutePath) } + + if (config.deleteEmptyFolders) { + folders.filter { !it.absolutePath.isDownloadsFolder() && it.isDirectory && it.toFileDirItem(this).getProperFileCount(this, true) == 0 }.forEach { + tryDeleteFileDirItem(it.toFileDirItem(this), true, true) + } + } } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/FileDirItem.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/FileDirItem.kt index 726fcc8a9..c67eebabb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/FileDirItem.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/FileDirItem.kt @@ -1,6 +1,5 @@ package com.simplemobiletools.gallery.pro.extensions -import android.os.Environment import com.simplemobiletools.commons.models.FileDirItem -fun FileDirItem.isDownloadsFolder() = path.equals(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString(), true) +fun FileDirItem.isDownloadsFolder() = path.isDownloadsFolder() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt index 0d708ce1a..3a8eb02ae 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/extensions/String.kt @@ -1,6 +1,7 @@ package com.simplemobiletools.gallery.pro.extensions import android.media.MediaMetadataRetriever +import android.os.Environment import com.simplemobiletools.commons.extensions.doesThisOrParentHaveNoMedia import com.simplemobiletools.commons.helpers.NOMEDIA import java.io.File @@ -70,3 +71,5 @@ fun String.getVideoDuration(): Int { } return seconds } + +fun String.isDownloadsFolder() = equals(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString(), true) From b1b9d111483ff911822ffa52e9caa941dd5a819d Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 2 Jan 2020 19:25:13 +0100 Subject: [PATCH 019/117] do not rely on SOURCE_IMAGE_PATH from the editor, store the original path --- .../gallery/pro/activities/NewEditActivity.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt index 4a9adb5ee..4f5174640 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt @@ -37,11 +37,11 @@ import kotlin.collections.set class NewEditActivity : SimpleActivity() { private val PESDK_EDIT_IMAGE = 1 private val SETTINGS_LIST = "SETTINGS_LIST" - private val SOURCE_IMAGE_PATH = "SOURCE_IMAGE_PATH" private val RESULT_IMAGE_PATH = "RESULT_IMAGE_PATH" private var sourceFileLastModified = 0L private var destinationFilePath = "" private var imagePathFromEditor = "" // delete the file stored at the internal app storage (the editor saves it there) in case moving to the selected location fails + private var sourceImageUri: Uri? = null private lateinit var uri: Uri private lateinit var saveUri: Uri @@ -102,7 +102,6 @@ class NewEditActivity : SimpleActivity() { override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { if (requestCode == PESDK_EDIT_IMAGE) { val extras = resultData?.extras - val source = extras?.getString(SOURCE_IMAGE_PATH, "") ?: "" imagePathFromEditor = extras?.getString(RESULT_IMAGE_PATH, "") ?: "" val settings = extras?.getParcelable(SETTINGS_LIST) @@ -113,12 +112,19 @@ class NewEditActivity : SimpleActivity() { config.editorBrushSize = brush.brushSize } - if (resultCode != Activity.RESULT_OK || source.isEmpty() || imagePathFromEditor.isEmpty() || source == imagePathFromEditor) { + if (resultCode != Activity.RESULT_OK || sourceImageUri == null || sourceImageUri.toString().isEmpty() || imagePathFromEditor.isEmpty() || sourceImageUri.toString() == imagePathFromEditor) { toast(R.string.image_editing_failed) finish() } else { // the image is stored at the internal app storage first, for example /data/user/0/com.simplemobiletools.gallery.pro/files/editor/IMG_20191207_183023.jpg // first we rename it to the desired name, then move + val sourceString = sourceImageUri?.toString() ?: "" + val source = if (sourceString.isEmpty() || sourceString.startsWith("content")) { + internalStoragePath + } else { + sourceString.substringAfter("file://") + } + SaveAsDialog(this, source, true, cancelCallback = { toast(R.string.image_editing_failed) finish() @@ -173,10 +179,11 @@ class NewEditActivity : SimpleActivity() { } private fun openEditor(inputImage: Uri) { + sourceImageUri = inputImage val filename = inputImage.toString().getFilenameFromPath() val settingsList = createPesdkSettingsList(filename) - settingsList.getSettingsModel(EditorLoadSettings::class.java).imageSource = inputImage + settingsList.getSettingsModel(EditorLoadSettings::class.java).imageSource = sourceImageUri PhotoEditorBuilder(this) .setSettingsList(settingsList) From 9d5565be96ac43b618749384035f69a27a9d0edd Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 2 Jan 2020 23:20:53 +0100 Subject: [PATCH 020/117] do not show Favorites and Recycle bin at the copy destination picker --- .../gallery/pro/activities/WidgetConfigureActivity.kt | 2 +- .../gallery/pro/dialogs/PickDirectoryDialog.kt | 6 ++++-- .../gallery/pro/dialogs/PickMediumDialog.kt | 2 +- .../simplemobiletools/gallery/pro/extensions/Activity.kt | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt index f34a23e9b..d2e1696bb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt @@ -150,7 +150,7 @@ class WidgetConfigureActivity : SimpleActivity() { } private fun changeSelectedFolder() { - PickDirectoryDialog(this, "", false) { + PickDirectoryDialog(this, "", false, true) { updateFolderImage(it) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickDirectoryDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickDirectoryDialog.kt index c29f1e6b3..cf8f0b89e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickDirectoryDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/PickDirectoryDialog.kt @@ -14,7 +14,8 @@ import com.simplemobiletools.gallery.pro.helpers.VIEW_TYPE_GRID import com.simplemobiletools.gallery.pro.models.Directory import kotlinx.android.synthetic.main.dialog_directory_picker.view.* -class PickDirectoryDialog(val activity: BaseSimpleActivity, val sourcePath: String, showOtherFolderButton: Boolean, val callback: (path: String) -> Unit) { +class PickDirectoryDialog(val activity: BaseSimpleActivity, val sourcePath: String, showOtherFolderButton: Boolean, val showFavoritesBin: Boolean, + val callback: (path: String) -> Unit) { private var dialog: AlertDialog private var shownDirectories = ArrayList() private var allDirectories = ArrayList() @@ -88,7 +89,8 @@ class PickDirectoryDialog(val activity: BaseSimpleActivity, val sourcePath: Stri if (allDirectories.isEmpty()) { allDirectories = newDirs.clone() as ArrayList } - val distinctDirs = newDirs.distinctBy { it.path.getDistinctPath() }.toMutableList() as ArrayList + + val distinctDirs = newDirs.filter { showFavoritesBin || (!it.isRecycleBin() && !it.areFavorites()) }.distinctBy { it.path.getDistinctPath() }.toMutableList() as ArrayList val sortedDirs = activity.getSortedDirectories(distinctDirs) val dirs = activity.getDirsToShow(sortedDirs, allDirectories, currentPathPrefix).clone() as ArrayList if (dirs.hashCode() == shownDirectories.hashCode()) { 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 99509354b..036b1eadf 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 @@ -54,7 +54,7 @@ class PickMediumDialog(val activity: BaseSimpleActivity, val path: String, val c } private fun showOtherFolder() { - PickDirectoryDialog(activity, path, true) { + PickDirectoryDialog(activity, path, true, true) { callback(it) dialog.dismiss() } 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 c2f273e6c..dfdafcc8c 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 @@ -208,7 +208,7 @@ fun BaseSimpleActivity.tryCopyMoveFilesTo(fileDirItems: ArrayList, } val source = fileDirItems[0].getParentPath() - PickDirectoryDialog(this, source, true) { + PickDirectoryDialog(this, source, true, false) { val destination = it handleSAFDialog(source) { if (it) { From 79c5e239e9489b76944edb2c0a0f40e5463634bb Mon Sep 17 00:00:00 2001 From: siswonugroho <33504481+siswonugroho@users.noreply.github.com> Date: Fri, 3 Jan 2020 18:17:08 +0700 Subject: [PATCH 021/117] Update Indonesian translation Translated new editor strings --- app/src/main/res/values-id/strings.xml | 128 ++++++++++++------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 5a1f4ce34..f0eb5588e 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -203,85 +203,85 @@ Ubah visibilitas berkas - Custom + Bebas Reset - Square - Transform + Persegi + Ukuran Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness - Contrast - Saturation - Clarity + Tidak ada + Sesuaikan + Bayangan + Eksposur + Sorotan + Kecerahan + Kontras + Saturasi + Perjelas Gamma - Blacks - Whites - Temperature - Sharpness + Hitam + Putih + Suhu + Ketajaman Reset - Focus - None + Fokus + Tidak ada Radial Linear - Mirrored + Cermin Gaussian - Text - Text Options - Text Color + Teks + Opsi Teks + Warna Teks Font - Add + Tambah Edit - Straighten + Luruskan Font - Color - BG Color - Alignment - To Front - Delete - Your text - Brush - Color - Size - Hardness - To Front - Delete - Brush Color + Warna + Warna BG + Perataan + Ke Depan + Hapus + Ketik teks + Kuas + Warna + Ukuran + Kekerasan + Ke Depan + hapus + Warna Kuas Editor - Close Editor? - Do you really want to discard the image? - Yes - No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker - Transparent - White - Gray - Black - Light blue - Blue - Purple + Tutup Editor? + Buang perubahan pada gambar? + Ya + Tidak + Batal + Terima + Simpan + Mengekspor gambar… + Mengekspor gambar %s. + Balik H + Balik V + Urungkan + Ulangi + Pemilih Warna + Transparan + Putih + Abu-abu + Hitam + Biru cerah + Biru + Ungu Orchid Pink - Red - Orange - Gold - Yellow + Merah + Oranye + Emas + Kuning Olive - Green + Hijau Aquamarin - Pipettable color + Warna pipet Bagaimana cara menjadikan Simple Gallery sebagai aplikasi galeri default? From f2d4d81d1b63e1fa2d3fcb1394bc34bace1fd744 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 3 Jan 2020 19:17:07 +0100 Subject: [PATCH 022/117] adding a new proguard rule for renderscript --- app/proguard-rules.pro | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 200ec8081..763f4ff3b 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -12,3 +12,9 @@ -keepclassmembers class * implements android.os.Parcelable { static ** CREATOR; } + +# RenderScript +-keepclasseswithmembernames class * { +native ; +} +-keep class androidx.renderscript.** { *; } From 68880a4fed6c8e14c440a246f4f8891a9d95abc8 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 3 Jan 2020 21:13:59 +0100 Subject: [PATCH 023/117] update commons to 5.21.17 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 317c093b1..2c5ce1f90 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.14' + implementation 'com.simplemobiletools:commons:5.21.17' 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 38bd15bd2cba71070c5f4cee61a856205cf129b3 Mon Sep 17 00:00:00 2001 From: unbranched Date: Sat, 4 Jan 2020 11:59:59 +0100 Subject: [PATCH 024/117] Italian translation update --- app/src/main/res/values-it/strings.xml | 156 ++++++++++++------------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 7f4a943c2..cc911c85e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -42,7 +42,7 @@ GIF Immagini RAW SVG - Portraits + Ritratti Nessun file trovato con il filtro selezionato. Cambia filtro @@ -203,85 +203,85 @@ Attiva / disattiva la visibilità dei file - Custom - Reset - Square - Transform - Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness - Contrast - Saturation - Clarity + Libera + Reimposta + Quadrato + Trasformazione + Filtro + Nessuno + Regolazione + Ombre + Esposizione + Luci + Luminosità + Contrasto + Saturazione + Chiarezza Gamma - Blacks - Whites - Temperature - Sharpness - Reset - Focus - None - Radial - Linear - Mirrored - Gaussian - Text - Text Options - Text Color - Font - Add - Edit - Straighten - Font - Color - BG Color - Alignment - To Front - Delete - Your text - Brush - Color - Size - Hardness - To Front - Delete - Brush Color + Neri + Bianchi + Temperatura + Nitidezza + Ripristina + Fuoco + Nessuno + Radiale + Lineare + Speculare + Gaussiano + Testo + Opzioni testo + Colore testo + Carattere + Aggiungi + Modifica + Raddrizza + Carattere + Colore + Colore sfondo + Allineamento + Porta davanti + Elimina + Il tuo testo + Pennello + Colore + Dimensione + Durezza + Porta davanti + Elimina + Colore pennello Editor - Close Editor? - Do you really want to discard the image? - Yes + Chiudere l\'editor? + Vuoi veramente scartare l\'immagine? + No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker - Transparent - White - Gray - Black - Light blue - Blue - Purple - Orchid - Pink - Red - Orange - Gold - Yellow - Olive - Green - Aquamarin - Pipettable color + Annulla + Accetta + Salva + Esportazione immagine… + Esportazione immagine %s. + Capovolgi O + Capovolgi V + Annulla + Ripeti + Selettore colore + Trasparente + Bianco + Grigio + Nero + Azzurro + Blu + Viola + Orchidea + Rosa + Rosso + Arancione + Oro + Giallo + Oliva + Verde + Acquamarina + Colore pipettabile Come posso impostare Semplice Galleria come la galleria predefinita del dispositivo? @@ -319,7 +319,7 @@ Semplice Galleria Pro - gestore di foto & editor - Browse your memories without any interruptions. + Sfoglia le tue memorie senza alcuna interruzione. Semplice Galleria Pro è una galleria offline altamente personalizzabile. Organizza, modifica le tue foto, recupera file con il cestino, progetti e nascondi file e visualizza una grande varietà di formati foto e video, inclusi RAW, SVG e molti altri. From f55593700fa411d8a2d10d9e45f2376435cf78e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solatec=20Inform=C3=A0tica?= <35220662+Solatec@users.noreply.github.com> Date: Sat, 4 Jan 2020 15:29:02 +0100 Subject: [PATCH 025/117] Update strings.xml --- app/src/main/res/values-ca/strings.xml | 136 ++++++++++++------------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 3c079f438..b8a4097a3 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -203,85 +203,85 @@ Activa la visibilitat del fitxer - Custom - Reset - Square - Transform - Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness + Personalitzat + Reiniciar + Quadrat + Transformar + Filtrar + No + Ajustar + Ombres + Exposició + Destacat + Brillantor Contrast - Saturation - Clarity + Saturació + Claredat Gamma - Blacks - Whites - Temperature - Sharpness - Reset + Negres + Blancs + Temperatura + Nitidessa + Restablir Focus - None + No Radial - Linear - Mirrored - Gaussian + Lineal + Emmirallat + Gaussià Text - Text Options - Text Color + Opcions de Text + Color de Text Font - Add - Edit - Straighten - Font + Afegir + Editar + Allisar + Lletra Color - BG Color - Alignment - To Front - Delete - Your text - Brush + Color de fons + Alineació + Al davant + Eliminar + El teu text + Pinzell Color - Size - Hardness - To Front - Delete - Brush Color + Mida + Duresa + Al davant + Eliminar + de pinzellColor Editor - Close Editor? - Do you really want to discard the image? - Yes + Tancar Editor? + Vols realment descartar la imatge? + Si No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker + Cancel·lar + Acceptar + Desar + Exportar imatge… + Exportant imatge %s. + Voltejar H + Voltejar V + Desfer + Refer + Selector de colors Transparent - White - Gray - Black - Light blue - Blue - Purple - Orchid - Pink - Red - Orange - Gold - Yellow - Olive - Green - Aquamarin - Pipettable color + Blanc + Gris + Negre + Blau clar + Blau + Porpre + Orquídia + Rosa + Vermell + Taronja + Or + Groc + Oliva + Verd + Aiguamarina + Pipetejat de color Com puc fer que Simple Gallery sigui la galeria de dispositius predeterminada? From 37bd0105e882c6ed7fe83190a4cac882a4c62396 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 4 Jan 2020 15:42:26 +0100 Subject: [PATCH 026/117] updating the apps italian short description --- fastlane/metadata/android/it/short_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/it/short_description.txt b/fastlane/metadata/android/it/short_description.txt index 14614d0a9..0f202fe9e 100644 --- a/fastlane/metadata/android/it/short_description.txt +++ b/fastlane/metadata/android/it/short_description.txt @@ -1 +1 @@ -Galleria offline senza pubblicità. Organizza, modifica e proteggi foto e video +Sfoglia le tue memorie senza alcuna interruzione. From c0194d5db6a820922ac9ff0f57b419769effcbc1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 4 Jan 2020 17:40:30 +0100 Subject: [PATCH 027/117] update commons to 5.21.19 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 2c5ce1f90..993e5b6bb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.17' + implementation 'com.simplemobiletools:commons:5.21.19' 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 3055a50516f23b136132bd4f52433e3765f3c24a Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 4 Jan 2020 17:50:18 +0100 Subject: [PATCH 028/117] update version to 6.11.5 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 993e5b6bb..a01211fdc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 284 - versionName "6.11.4" + versionCode 285 + versionName "6.11.5" multiDexEnabled true setProperty("archivesBaseName", "gallery") vectorDrawables.useSupportLibrary = true From 6a9177c54e57a52425ea639f82cddb69521ef421 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 4 Jan 2020 17:50:27 +0100 Subject: [PATCH 029/117] updating changelog --- CHANGELOG.md | 7 +++++++ fastlane/metadata/android/en-US/changelogs/285.txt | 3 +++ 2 files changed, 10 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/285.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bfb648ea..1475d215e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ Changelog ========== +Version 6.11.5 *(2020-01-04)* +---------------------------- + + * Fixed a few SD card related issues + * Fixed some theming issues + * Added some UI and translation improvements + Version 6.11.4 *(2019-12-27)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/285.txt b/fastlane/metadata/android/en-US/changelogs/285.txt new file mode 100644 index 000000000..abad491dc --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/285.txt @@ -0,0 +1,3 @@ + * Fixed a few SD card related issues + * Fixed some theming issues + * Added some UI and translation improvements From 21722b0c3a91e5cdf6a660fb5c67eacce2a8b85e Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 6 Jan 2020 12:16:59 +0100 Subject: [PATCH 030/117] tweaking the apps short description, make it longer --- app/src/main/res/values-ar/strings.xml | 2 +- app/src/main/res/values-az/strings.xml | 2 +- app/src/main/res/values-ca/strings.xml | 2 +- app/src/main/res/values-cs/strings.xml | 2 +- app/src/main/res/values-da/strings.xml | 2 +- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-el/strings.xml | 2 +- app/src/main/res/values-es/strings.xml | 2 +- app/src/main/res/values-fi/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values-gl/strings.xml | 2 +- app/src/main/res/values-hr/strings.xml | 2 +- app/src/main/res/values-hu/strings.xml | 2 +- app/src/main/res/values-id/strings.xml | 2 +- app/src/main/res/values-in/strings.xml | 2 +- app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values-ja/strings.xml | 2 +- app/src/main/res/values-ko-rKR/strings.xml | 2 +- app/src/main/res/values-lt/strings.xml | 2 +- app/src/main/res/values-nb/strings.xml | 2 +- app/src/main/res/values-nl/strings.xml | 2 +- app/src/main/res/values-pl/strings.xml | 2 +- app/src/main/res/values-pt-rBR/strings.xml | 2 +- app/src/main/res/values-pt/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-sk/strings.xml | 2 +- app/src/main/res/values-sl/strings.xml | 2 +- app/src/main/res/values-sr/strings.xml | 2 +- app/src/main/res/values-sv/strings.xml | 2 +- app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- app/src/main/res/values-vi/strings.xml | 2 +- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rHK/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 36 files changed, 36 insertions(+), 36 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 95ab576ab..344bcce6b 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -317,7 +317,7 @@ المعرض البسيط الـ Pro - محرر ومدير الصور - تصفح ذكرياتك دون اي انقطاع. + Browse your memories without any interruptions with this photo and video gallery (تطبيق المعرض البسيط الـ Pro) هو معرض بدون إنترنت قابل للتخصيص بدرجة كبيرة يتمتع بتنظيم الصور وتحريرها وإستعادة الملفات المحذوفة من خلال "سلة المحذوفات" وحماية الملفات وإخفاؤها وعرض مجموعة كبيرة من تنسيقات الصور والفيديو المختلفة بما في ذلك تنسيقات RAW و SVG وغير ذلك الكثير. diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 6ab4d33ec..449778d15 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index b8a4097a3..673ca5601 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Navegueu pels vostres records sense interrupcions. + Browse your memories without any interruptions with this photo and video gallery Simple Gallery Pro és una galeria fora de línia altament personalitzable. Organitza i edita les teves fotos, recupera fitxers suprimits amb la paperera de reciclatge, protegeix i amaga fitxers, mostra una gran varietat de formats de foto i vídeo incloent RAW, SVG i molt més. diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 0de30b260..2e17b6791 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -319,7 +319,7 @@ Jednoduchá Galerie Pro - Organizér a editor fotografií - Prohlížejte své vzpomínky bez přerušení. + Browse your memories without any interruptions with this photo and video gallery Jednoduchá Galerie Pro je vysoce přizpůsobitelná offline galerie. Organizujte a upravujte své fotografie, obnovujte smazané fotografie s funkcí odpadkového koše, chraňte je a skrývejte. Prohlížejte množství různých foto a video formátů včetně RAW, SVG a mnoho dalších. diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 03cd3e395..a4fc7e372 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Billedhåndtering - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery Simple Gallery Pro er et offline-galleri med mange tilpasningsmuligheder. Organiser og rediger dine billeder, gendan slettede filer via papirkurven, beskyt og skjul filer og se adskillige forskellige billed- og videoformater inklusiv RAW, SVG og mange flere. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index f22771d90..c5dd78fa9 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -318,7 +318,7 @@ Schlichte Galerie Pro - Foto Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery Schlichte Galerie Pro ist eine stark individualisierbare Offline Galerie. Ordne & bearbeite deine Fotos, stelle gelöschte Fotos mit Hilfe des Papierkorbs wieder her, schütze & verstecke Dateien und zeige eine Vielzahl von Bilder- & Videoformaten an, unter anderem RAW, SVG und viele mehr. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index c75db686e..14105403d 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -320,7 +320,7 @@ ΑΠΛΗ ΣΥΛΛΟΓΗ Pro - Διαχείριση & Επεξεργασία - Ξεφυλλίστε τις αναμνήσεις σας χωρίς διακοπές. + Browse your memories without any interruptions with this photo and video gallery Η Απλή Συλλογή Pro είναι χωρίς σύνδεση και εξαιρετικά προσαρμόσιμη. Οργανώστε και επεξεργαστείτε τις φωτογραφίες σας, ανακτήσετε διαγραμμένα αρχεία απο τον κάδο ανακύκλωσης, προστατεύσετε και αποκρύψτε αρχεία, προβάλετε πλήθος διαφορετικών φωτογραφιών και μορφών βίντεο, συμπεριλαμβανομένων των RAW, SVG και πολλών άλλων. diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e1ac72856..cee120d37 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Gestor y editor de fotos - Explore sus recuerdos sin interrupciones. + Browse your memories without any interruptions with this photo and video gallery Simple Gallery Pro es una galería altamente personalizable disponible sin conexión. Organiza y edita tus fotos, recupera archivos eliminados con la papelera de reciclaje, protege y oculta archivos y mira una gran variedad de diferentes formatos de fotos y videos incluyendo RAW, SVG y muchos más. diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 3a4f6ffdf..ec6c7a99e 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 20ee4def5..2f372892e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -317,7 +317,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index fa073d954..dc9b48aa7 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index f219ee7c4..ebb3c745c 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index b42e97172..35bd4c7e3 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -321,7 +321,7 @@ Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglal Simple Gallery Pro - Photo Manager & Editor - Böngészés az emlékek közt megszakítás nélkül. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index f0eb5588e..6536c8373 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Pengelola & Penyunting Foto - Menampilkan semua kenangan anda tanpa gangguan. + Browse your memories without any interruptions with this photo and video gallery 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 5a1f4ce34..21a731990 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Pengelola & Penyunting Foto - Menampilkan semua kenangan anda tanpa gangguan. + Browse your memories without any interruptions with this photo and video gallery 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-it/strings.xml b/app/src/main/res/values-it/strings.xml index cc911c85e..898992fdb 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -319,7 +319,7 @@ Semplice Galleria Pro - gestore di foto & editor - Sfoglia le tue memorie senza alcuna interruzione. + Browse your memories without any interruptions with this photo and video gallery Semplice Galleria Pro è una galleria offline altamente personalizzabile. Organizza, modifica le tue foto, recupera file con il cestino, progetti e nascondi file e visualizza una grande varietà di formati foto e video, inclusi RAW, SVG e molti altri. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 780b1244b..108f8bd18 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 1aae7ab77..bf2c14a64 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 568060164..7a8138d85 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 85b68bb6c..e0172c233 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 8361c816a..b15bb8853 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -319,7 +319,7 @@ Eenvoudige Galerij Pro - Foto’s Beheren & Bewerken - Navigeer zonder afleidingen door al uw herinneringen. + Browse your memories without any interruptions with this photo and video gallery Eenvoudige Galerij Pro is een volledig aan te passen offline galerij. Organiseer & bewerk foto’s, herstel verwijderde bestanden met de prullenbakfunctie, beveilig & verberg items en bekijk een enorme hoeveelheid aan foto- & videoformaten, waaronder RAW, SVG en nog veel meer. diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index f916718a3..62cbd7aad 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -317,7 +317,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery Simple Gallery Pro to wysoce konfigurowalna galeria. Przeglądaj i edytuj swoje zdjęcia, dzięki funkcji kosza z łatwością odzyskuj przypadkowo (lub nie) ususnięte pliki, chroń je i ukrywaj dzięki różnym metodom zabezpieczeń. Nie martw się o obsługiwane formaty - wśród nich są m.in. RAW, SVG i wiele więcej. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index ac6970a1c..431a95a28 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -318,7 +318,7 @@ Simple Galeria Pro - Gerenciador de Imagens - Procure suas memórias sem interrupções. + Browse your memories without any interruptions with this photo and video gallery A Simple Galeria Pro é uma galeria de imagens e vídeos altamente customizável. Organize e edite suas fotos e vídeos, recupere arquivos movidos para a lixeira, proteja e oculte seus arquivos, e visualize arquivos em uma grande variedade de formatos, incluindo RAW, SVG, e muito mais. Este app não inclui anúncios ou permissões desnecessárias e também não acessa a internet. Sua privacidade está protegida. diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 59101c006..bf4a80ddd 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Editor e gestor de fotos - Explore as suas memórias sem interrupções. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 5db3b5b4e..30aa6d796 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -319,7 +319,7 @@ Галерея Pro - управление изображениями - Просматривайте свои воспоминания без перерывов. + Browse your memories without any interruptions with this photo and video gallery Simple Gallery Pro — настраиваемая автономная галерея. Организуйте и редактируйте свои фотографии; восстанавливайте удалённые файлы при помощи функции "корзина"; защищайте и скрывайте личные файлы; просматривайте множество различных фото- и видеоформатов, включая RAW, SVG и многие другие. diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 968c47c60..0a1a3c2e2 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -319,7 +319,7 @@ Jednoduchá galéria Pro - Foto organizér a editor - Prehliadajte svoje spomienky bez prerušenia. + Prehliadajte svoje spomienky bez prerušenia s touto foto a video galériou. Jednoduchá Galéria Pro je vysoko prispôsobiteľná offline galéria. Organizujte a upravujte vaše fotky, obnovujte vymazané súbory pomocou odpadkového koša, ochraňujte a skrývajte ich, alebo prehliadajte množstvo rôznych foto a video formátov vrátane RAW, SVG a mnoho ďalších. diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 197c49554..58c3230db 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Pregledovalnik fotografij - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery Simple Gallery Pro je visoko prilagodljiva lokalna galerija. Organizirajte & urejajte vaše fotografije, vrnite izbrisane datoteke iz koša, zaščitite & skrijte datoteke in pregledujte ogromno različnih vrst foto & video formatov, vključujoč RAW, SVG in mnoge druge. diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index d6cf72ebc..0a5ab8092 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery Једноставна галерија Про је високо прилагодљива галерија којој није неопходан интернет да би радила. Организуј и измени своје слике, опорави обрисане датотеке са кантом за отпатке, заштити и сакриј датотеке имај увид у огромну количину различитих фотографија и видео формата укључујући RAW, SVG и многих других. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index cbe6289c3..8f4342a62 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index bbf693c31..bb700f47a 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -319,7 +319,7 @@ Basit Galeri Pro - Fotoğraf Yönetici & Düzenleyici - Anılarınıza kesintisiz göz atın. + Browse your memories without any interruptions with this photo and video gallery Basit Galeri Pro, özelleştirilebilir bir çevrimdışı galeridir. Fotoğraflarınızı düzenleyin ve organize edin, geri dönüşüm kutusuyla silinen dosyaları kurtarın, dosyaları koruyun ve gizleyin ve RAW, SVG ve çok daha fazlası dahil olmak üzere çok çeşitli fotoğraf ve video formatlarını görüntüleyin. diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index c29acb22a..b30d57e3f 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - фотоменеджер і редактор - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery Simple Gallery Pro - це офлайн-галерея з великою кількістю налаштувань. Впорядковуйте та редагуйте ваші фото, відновлюйте видалені файли з кошика, захищайте та приховуйте файли і переглядайте фото і відео різноманітних форматів, включаючи RAW, SVG та багато іншого. diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 1dfd43ac9..f35990c78 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Trình quản lý ảnh & biên tập - Duyệt khoảnh khắc của bạn mà không có bất kỳ gián đoạn. + Browse your memories without any interruptions with this photo and video gallery Simple Gallery Pro là một bộ sưu tập ngoại tuyến có khả năng tùy biến cao. Tổ chức & chỉnh sửa ảnh của bạn, khôi phục các tệp đã xóa bằng thùng rác, bảo vệ & ẩn các tệp và xem được nhiều định dạng ảnh & video bao gồm RAW, SVG và nhiều hơn nữa.          Ứng dụng này không chứa quảng cáo và các quyền không cần thiết. Vì ứng dụng không có yêu cầu truy cập internet, quyền riêng tư của bạn sẽ được bảo vệ. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 97d1713ca..d2c68ffe9 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -317,7 +317,7 @@ 简约图库 Pro - 图片管理 & 编辑 - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 简约图库 Pro 是一个高度可定制的图库。管理并编辑你的照片,从回收站中恢复已删除的照片,保护并隐藏文件,查看RAW,SVG等等多种照片和视频格式。 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 66b761c8a..037f78856 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -319,7 +319,7 @@ 簡易相簿 Pro - 相片管理&編輯器 - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 簡易相簿Pro是一個高度自訂化的離線相簿。整理和編輯你的照片,從回收桶恢復刪除的檔案,保護和隱藏檔案,以及瀏覽大量不同的照片&影片格式,包含RAW、SVG…等更多。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 62c2ab62d..07dc7d737 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -319,7 +319,7 @@ 簡易相簿 Pro - 相片管理&編輯器 - 毫無阻礙地瀏覽您的回憶。 + Browse your memories without any interruptions with this photo and video gallery 簡易相簿Pro是一個高度自訂化的離線相簿。整理和編輯你的照片,從回收桶恢復刪除的檔案,保護和隱藏檔案,以及瀏覽大量不同的照片&影片格式,包含RAW、SVG…等更多。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4f949f7c1..2e8c6d123 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Photo Manager & Editor - Browse your memories without any interruptions. + Browse your memories without any interruptions with this photo and video gallery 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. From 26162cc665650081395b86f8fd2afd3a22c49bd1 Mon Sep 17 00:00:00 2001 From: spkprs Date: Mon, 6 Jan 2020 15:24:26 +0300 Subject: [PATCH 031/117] Update strings.xml --- app/src/main/res/values-el/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 14105403d..aa1793702 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -320,7 +320,7 @@ ΑΠΛΗ ΣΥΛΛΟΓΗ Pro - Διαχείριση & Επεξεργασία - Browse your memories without any interruptions with this photo and video gallery + Περιηγηθείτε στις αναμνήσεις σας χωρίς διακοπές με αυτήν τη συλλογή φωτό & βίντεο Η Απλή Συλλογή Pro είναι χωρίς σύνδεση και εξαιρετικά προσαρμόσιμη. Οργανώστε και επεξεργαστείτε τις φωτογραφίες σας, ανακτήσετε διαγραμμένα αρχεία απο τον κάδο ανακύκλωσης, προστατεύσετε και αποκρύψτε αρχεία, προβάλετε πλήθος διαφορετικών φωτογραφιών και μορφών βίντεο, συμπεριλαμβανομένων των RAW, SVG και πολλών άλλων. From d2d762ae06dd328854eee83e2df8c0dbc162b4ef Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 6 Jan 2020 14:18:07 +0100 Subject: [PATCH 032/117] updating the greek app short desc --- fastlane/metadata/android/el/short_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/el/short_description.txt b/fastlane/metadata/android/el/short_description.txt index 67f7afb67..400c185f3 100644 --- a/fastlane/metadata/android/el/short_description.txt +++ b/fastlane/metadata/android/el/short_description.txt @@ -1 +1 @@ -Ξεφυλλίστε τις αναμνήσεις σας χωρίς διακοπές. +Περιηγηθείτε στις αναμνήσεις σας χωρίς διακοπές με αυτήν τη συλλογή φωτό &βίντεο From 3a10166b8aedaab0e2a9b81a3d7d9988f2a52a42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hevesi=20J=C3=A1nos?= <44799533+hevesij@users.noreply.github.com> Date: Mon, 6 Jan 2020 17:32:38 +0100 Subject: [PATCH 033/117] Update strings.xml --- app/src/main/res/values-hu/strings.xml | 54 +++++++++----------------- 1 file changed, 19 insertions(+), 35 deletions(-) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 35bd4c7e3..9fd480f32 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -33,8 +33,7 @@ Sikeres dátum javítás Átméretezett verzió megosztása 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 - + Váltás a fájlkeresésre az összes látható mappában Média szűrő Kép @@ -45,7 +44,6 @@ Portraits A kiválasztott szűrők nem találtak médiafájlokat. Szűrők változtatása - Ez a funkció elrejti a mappát egy \'.nomedia\' fájl hozzáadásával, és elrejti az almappákat is. Láthatóvá teheti ezeket a Beállítások \"Mutassa a rejtett elemeket\" menüpontban. Folytatja? Kizárás @@ -59,14 +57,12 @@ Rejtett mappák Rejtett mappák kezelése Úgy tűnik, a mappái nincsenek elrejtve egy \".nomedia\" fájllal. - Befoglalt mappák Befoglalt mappák kezelése Mappa hozzáadása Ha vannak olyan mappák, amelyek média fájlokat tartalmaznak, de az alkalmazás nem ismerte fel, akkor kézzel is hozzáadhatja ezeket.\n\nAz elemek hozzáadása nem zár ki más mappákat. Nem talált médiafájlokat. Ezt megoldhatja a médiafájlokat tartalmazó mappák manuális hozzáadásával. - Átméretezés Kiválasztás átméretezése és mentés @@ -74,7 +70,6 @@ Magasság Képarány megtartása Írjon be érvényes felbontást - Szerkesztő Mentés @@ -82,7 +77,7 @@ Elérési útvonal Érvénytelen kép elérési útvonal Sikertelen kép szerkesztés - File edited successfully + A fájl szerkesztése sikerült Kép szerkesztés ezzel: Nem található kép szerkesztő Ismeretlen fájl hely @@ -97,7 +92,6 @@ Egyéb - Simple Wallpaper Beállítás háttérképként @@ -110,7 +104,6 @@ Kezdő képernyő Zárolás képernyő Kezdő és zárolás képernyő - Diavetítés Időköz (másodperc): @@ -126,13 +119,11 @@ Csúsztatás A diavetítés vége A diavetítéshez nem található média - Nézet típus változtatása Rács Lista Közvetlen almappa csoport - Csoportosítás Nincs csoportosítás @@ -146,11 +137,9 @@ Fájl típus Kiterjesztés Kérjük, vegye figyelembe, hogy a csoportosítás és a rendezés 2 egymástól független mező - Mappa mutatása a widgeten: Mutassa a mappa nevét - Automatikus videó lejátszás Emlékezzen a videó utolsó lejátszási pozícióra @@ -192,26 +181,23 @@ Kiegyensúlyozott Kerülje az érvénytelen fájlok mutatását Mutassa a kép fájl típusokat - Miniatűrök Teljes képernyős média Bővített részletek Gomb műveletek - Látható gomb műveletek kezelése Kedvencek módosítása Fájl láthatóság módosítása - Egyéni - Reset + Alaphelyzetbe Square Transform Szűrő Nincs - Adjust + Beállít Árnyékok Exposure Highlights @@ -224,7 +210,7 @@ Whites Színhőmérséklet Élesség - Reset + Alaphelyzetbe Fókusz Nincs Radial @@ -242,31 +228,31 @@ Szín Háttérszín Igazítás - To Front + Előre Törlés Saját szöveg - Brush + Ecset Szín Méret - Hardness - To Front + Keménység + Előre Törlés - Brush Color + Ecset színe Szerkesztő - Close Editor? - Do you really want to discard the image? + Bezárja a szerkesztőt? + Valóban el akarja dobni a képet? Igen Nem Mégsem - Accept + Elfogad Mentés - Exporting image… - Exporting image %s. - Flip H - Flip V + Kép exportálása... + %s kép exportálása + Tükrözés vízszintesen + Tükrözés függőlegesen Visszavonás - Redo - Color Picker + Visszavom + Színválasztó Áttetsző Fehér Szürke @@ -284,7 +270,6 @@ Zöld Aquamarin Pipetta szín - Hogyan tudom beállítani a Simple Gallery-t alapértelmezett galériának? Először meg kell találnia az alapértelmezett galériát az eszköz beállításainak Alkalmazások részében. Keressen egy olyan gombot, amely valami olyasmit, mint az \"Legyen alapértelmezett\", kattintson rá, majd válassza a \"Alapértelmezések törlése\" pontot. @@ -316,7 +301,6 @@ Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglal A rejtett elemek megtekintéséhez nyomja meg a \"Rejtettek ideiglenes mutatása\" elemet a fő képernyőn, vagy válassza a \"Mutassa a rejtett elemeket\" az alkalmazás beállításaiban. Ha meg akarja szüntetni, csak hosszan nyomja meg, és válassza a \"Elrejtés megszüntetés\" lehetőséget. A mappák elrejtése egy rejtett \". nomedia\" fájl hozzáadásával történik. Ezt a fájlt bármelyik fájlkezelővel is törölheti. Miért használ az alkalmazás ennyi helyet? Az alkalmazás gyorsítótára akár a 250 MB-ot is meghaladhatja, és ez gyorsabb megjelenítést biztosít. Ha az alkalmazás még több helyet foglal el, a legvalószínűbb oka, hogy a Lomtárban is van elem. Ezek a fájlok is az alkalmazás méretébe számítanak bele. Törölheti a Lomtárat azzal, hogy megnyitja és törli az összes fájlt vagy az alkalmazás beállításait. A Lomtárban lévő minden fájl 30 nap elteltével automatikusan törlődik. - Simple Gallery Pro - Photo Manager & Editor From 305264654af02630e402ad29c7173891b5e83ba2 Mon Sep 17 00:00:00 2001 From: Guillaume Date: Mon, 6 Jan 2020 19:50:04 +0100 Subject: [PATCH 034/117] Dutch --- app/src/main/res/values-nl/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index b15bb8853..922dd0b3f 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -319,7 +319,7 @@ Eenvoudige Galerij Pro - Foto’s Beheren & Bewerken - Browse your memories without any interruptions with this photo and video gallery + Navigeer met deze galerij zonder afleidingen door al je herinneringen Eenvoudige Galerij Pro is een volledig aan te passen offline galerij. Organiseer & bewerk foto’s, herstel verwijderde bestanden met de prullenbakfunctie, beveilig & verberg items en bekijk een enorme hoeveelheid aan foto- & videoformaten, waaronder RAW, SVG en nog veel meer. From 5880415f3bcb02c9bf64bbd71731139c2a7c11d2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 6 Jan 2020 20:49:24 +0100 Subject: [PATCH 035/117] updating the apps dutch short description --- fastlane/metadata/android/nl/short_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/nl/short_description.txt b/fastlane/metadata/android/nl/short_description.txt index 025e75925..b0c2add72 100644 --- a/fastlane/metadata/android/nl/short_description.txt +++ b/fastlane/metadata/android/nl/short_description.txt @@ -1 +1 @@ -Navigeer zonder afleidingen door al uw herinneringen. +Navigeer met deze galerij zonder afleidingen door al je herinneringen From d8af54b538dbc20ab5e7825853685751819bc4eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solatec=20Inform=C3=A0tica?= <35220662+Solatec@users.noreply.github.com> Date: Tue, 7 Jan 2020 10:33:22 +0100 Subject: [PATCH 036/117] Update strings.xml --- app/src/main/res/values-es/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index cee120d37..3b0c92a89 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -319,7 +319,7 @@ Simple Gallery Pro - Gestor y editor de fotos - Browse your memories without any interruptions with this photo and video gallery + Explore sus recuerdos sin interrupciones con esta galeria de foto y vídeo Simple Gallery Pro es una galería altamente personalizable disponible sin conexión. Organiza y edita tus fotos, recupera archivos eliminados con la papelera de reciclaje, protege y oculta archivos y mira una gran variedad de diferentes formatos de fotos y videos incluyendo RAW, SVG y muchos más. From 94ab013b6bfeef6b548049ba2db9c4d73d2c0205 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 7 Jan 2020 18:51:37 +0100 Subject: [PATCH 037/117] updating the spanish app short description --- fastlane/metadata/android/es/short_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/es/short_description.txt b/fastlane/metadata/android/es/short_description.txt index 56250b41d..19cbec0ad 100644 --- a/fastlane/metadata/android/es/short_description.txt +++ b/fastlane/metadata/android/es/short_description.txt @@ -1 +1 @@ -Explore sus recuerdos sin interrupciones. +Explore sus recuerdos sin interrupciones con esta galeria de foto y vídeo From e68a4ae99b51e88a0457b5925568a7288bbbc58f Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 9 Jan 2020 10:08:41 +0100 Subject: [PATCH 038/117] decode the file path UI after editing an image --- .../simplemobiletools/gallery/pro/activities/NewEditActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt index 4f5174640..e9dd88135 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt @@ -118,7 +118,7 @@ class NewEditActivity : SimpleActivity() { } else { // the image is stored at the internal app storage first, for example /data/user/0/com.simplemobiletools.gallery.pro/files/editor/IMG_20191207_183023.jpg // first we rename it to the desired name, then move - val sourceString = sourceImageUri?.toString() ?: "" + val sourceString = Uri.decode(sourceImageUri.toString())?.toString() ?: "" val source = if (sourceString.isEmpty() || sourceString.startsWith("content")) { internalStoragePath } else { From bb3f39737e484f7bb36f970f52fd089e6ab52e07 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 9 Jan 2020 19:31:44 +0100 Subject: [PATCH 039/117] uploading the square version of the icon --- .../metadata/android/en-US/images/square.png | Bin 0 -> 16427 bytes .../metadata/android/en-US/images/square.xcf | Bin 0 -> 34439 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 fastlane/metadata/android/en-US/images/square.png create mode 100644 fastlane/metadata/android/en-US/images/square.xcf diff --git a/fastlane/metadata/android/en-US/images/square.png b/fastlane/metadata/android/en-US/images/square.png new file mode 100644 index 0000000000000000000000000000000000000000..77730890725763b43c1ead4bdbf6eecf11e42df9 GIT binary patch literal 16427 zcmb`uc|6qJ`#=5~kx;o4NfNS;tt47xsH|gatl35($xildQgUZ!hOrb{>>*^!+CpY1 zEtc#hLqamvVa$BbOZWSJe;&U-Kfli(US?j-xz2Sxul1aBxo2XevxoB#Cj>!z^mH#` zAczHgWPx_=1izMpdN&|Q1k$^xX%;jz-yBFdJRM%J88L2YZZ~>v6u*DxZN#y*-A7Xp zQP4|+zr-~^J-Vp>NcwV0!K-qrP#2ihm;U-BYyx2EWxV-G_LUN7ChKsuWAGBCn!tJ%2EEZn&R_1Fq9 z^uf$Z8~nn7pFfO3yWmeE@B;@wwz>b`zZ8K<;NZvqPeT9S>HoKE{txP~w*L3>{trST zFd-cL*naunPyff%MWA?i4FvpPg&%*x4-NS7fAR8vPbjs+5%7~5kGK6@-O7um$P{A; z$ov`R9vtAT*X}i1GtQt^ryyU4bJ*#XO6D_jeTq0S)u+WNynQtxzY=3&E2Ec|Y7mU^ z`Sx7dAG0{A*N&IsO%h6z#1fHg9bCW!G~V&H@ROe}lbjm!-HGlI4F;P?8I*L*GP!oy zfJ^g*T?hKzx>Wn6C-tYwgC;T_ozUSkK5QB`C81S;l6??nap)}4@Q9__YKih<7Ozgc zFn|u%F26+}kh`4DI8$%?Uf6U__aM%U$_;;#`p)LZG%ZWx@WW)_XRZ9lP;rvRG9g>8 z=Jp%qkHp3;!X|B$0E5OY3TYkrMcr>%YG@t;%-yYDSa3VrLQ?t30To1n7A?^tHq)fyzN?Lt!av9GCp?9wVAh%M;U8^2xHi5)B@(v}t$4Z)U z@nvOYhEH=-=@FR*g^&6*(?V6y#>|EZDMrll#%GM#L^Ug5@@wot+0V`Po)rJ8*Q#B6 z?ZvWZ%V=NvxtxaCDMRU{y_MFK)o-pGK{GZ=``@nHB7mJ{1lQ# zxF=r<*%IYDYgziCR-dxKWDl0g4f&p;>Dd*fwQ<8|zX;TOlNK}Y>*kpf*@a3carbxc ziO{>0sh0oBG_v@WrFy;tJy@Vt=x#gDB@hNr4m0J$skLf(Uw^lzyV`y9rYP#Ebj#X? zRx2&6S0DqtEa#%beglv-_7fuq&IC6eNv&JJf8JcR8OT5t9#_)Tj#vnZj!`e2_#ht} zWw94_!aTh$W=UYD{R+-~IQB*3pqDz2!SdYd=xW`Vc%VjR=-*0<>MFq@7!Yv}hx8^5?F50v8P>dJ45n^+5$sQ6bWRi%-J zGs`6YC!dpKybntx|MuzF1v!v>T7U!5Hq}oymsL2s`p#H5_uE#?wIuy?I$d^DaX+l@ zL-TXvPNBSq=}!#?{*LEAmRikqv)ocXd#`LY#pBFnk_ZA`c}HJlM8ilwyR)U8RIuw# z-(T+WDeqQ_=L@hY19h3Q+hcBjb#dCL>l~&kWSS+SnMCU+%^LOt)|9mflUn}N^=(%i^S$^rRPs8cc#+fTIyyYXZ_?e3=Ai&|yNREoCKF0>UdwF-1qIeu} zOxu1|$ys&$ab95a)yv{=I4t_yUKm(CS0Xq$WT_NCc;<8GJ5EbrsqIT3%Fr+lc;o6@Ib|I?5oNa)Y> ztKTk%W*aO_6^zY$F)R_*h1f&N&!^wD@{4XuTINXYa%K-8O{E`?r*-#O=WnRWo(uch z)SAQ!fqYZb{A0Jh{O4Ls2e&{+m`lcj2z74mmGCO~gWjQiI1|s`he+Q8nfK(z>_v#PDFe+GSy!aAwh37I#`BZQzjO&Q zQ*GOBABdI>Ak}ALAI5LXrExmjlF#HkdNd~7}t9sZMnjyW$;GUGzp z-?95K_YE8c#o=77TmBHq!(wu-6=@`$`1m3@R~7*$xhNKsbWX?E{VxpmOcNpx%PJ(w zBp&GRCBBG;wplu0fk}%(I#wL}`{zL%(#1Z79DT7%_|Kn=g7wcV@%R-bB8uo6T(MoI z_lPJS9FRjUe&Ws}Q^jL3Z;Tm^#TYZnGCFqJhs{C3c<)ho)wYqi61C#>$?DxlT_43h zTKryO(4sya3QbjeK-&bm7dhMNC-xhoIYx^2PRI5UVk^|u!|~2(|13RalrNniWWKy{ zB9<&Ml|q1crObjD*|F2dK8ugN{hL(;Fi~BGELJQ2(e7n9{?{&&L5=dmSAOFJWc7ZW zIJV<(`=^;Gv-8{Nc3~8XsB~=4rl)^>9{sWI$6gt}#4s<5VY%!(%&m?lABjIuC@4av zu{q2a6R%v`_pPzWSwWmGW+C$&S}yht6AHLKX{KKVtH`!|-Da_|*v%9mfsBHoQd0Cr zZ|38yu#FT6`N(Z$WV}0FYLH*_qd|u^p|#`G0VR?&hSIx_FDJr@^pA+wEbT!;d~`x_ z$sQNo{Y?2Gb+OP~je6aX@CRet266k1#G7=E_UIG49diiw;kKqdVU8VLO!Otjwjp>2 zBiXc!nVIAY^$uWTt5})hpvlIp5UQeEIXwlAe_yE*t8-$pi4oXKK2cY?X>-iud^yZ? zWMN{j6HV-oBrM(=S~H!h<`MISyB!t$;*eP(Q-Vk}riT{4+9noFN!kYcgz{yrMXqrZ zS|&5U=-7L;YkHLR&q%c;|1|sXrl~HbEr-Kf4R}SDz20-jX9inMXlcSAT=Kd$6jch- z*Ji4jeyf*?C{$E7_qK7pKaSHqLp9_(vZdH0@%W>AETtLm9}mw3Ru5=R*5Y z2^}q)rw!E^=34vT&er~eNLZ|6l@8MgpG5a6i5LE^r8%AM>~lVvc%*MehY^h|Op;DS z`rG|O_m?v?SUiv~yrs$)L3P&p{`TNK;FT6LeYrR0hM7j~{0xgr4PXBH2czlQ2P1DT zX^n5So?Pi3FcUz19QpqD(X_;K#rK5iDUuPt+1h=2O~ByZokzqVTvh|m?+H~ihEZXG zt^Ul(0aAf=mKUebQ}PT^dGR%>|I0Wd)Lha?#fgTMM$ib8XIt2SYbi@~=#H6UEnY?| zX#z$zoo)T(O?`Z99mi=G62h05n3*@#d;Y_}(Ze_T=eC>;FIL7crP()E1e04apJpnU zIUOxq>`0-|5*ZM#G=MKfSjbWIq7}o;3z=c(Kfbv@_Iy!V8HY;bBTD-JRAgj!2yb~I zg+oI&_K_rInANnaqOkEOpR4u8WIo0YWa`Am>YI{1>o2IJd307Y$RvLM4MC>%e$;vt zxdK&KZ|nYo8tHdr+ibta77~Ifvxk@=njbSClRcYEYyD07mjoxK;|h#Qy(cdjhB228 zZH`5n-<(P-P+Mx%jZKD)xvkUyxkVK_6aKRZ`TZ?nG{`DqVdF)_d67g%bED=bulyp* z0M3C4%-?aboGw{E0~wa&7*@F`hsX_FMBH&m!%)#oo6041^Jjw&AKzPNdc1pyR)=xd zmyMzK;vi^-Y@IfwucOawB}A5z-ZIR58Z>A<8kI+B7QS=V_*2*DCt?M5K)pNiV{e9G zs4oVJoj1403n5AFE!Yk;NqjU&FLyVV+iLNqlbW)=cl&TJw{D zqqMk&RKe4UJgwrEJ!I_W8e#ONrQx{9K}-FTCPtIdIjW*EW2;B@%u>lC{S>OscKD*% zawPMUDIt`#r^~MaF}I9NLRmog?Nn;L*8Z z_C99CgT7@e|E!MI$B7G|2;=JFtzNgIa`v$`3r?<;69+0WDx;F$OP1Ch%Kj7IkSRO}KRV=XYewM*XA8fibo3g>?MOLo)o^aZ>~_t=o3<+d%=8e5+eR)U7gV zs5YgBn@ri5tQz&r49GMylI%PBoql;-A%gz z%=}0)KSe#KEp0`EU(aW!}HP2G~_jFMll_Z92Uai;Hi3A_{`O+i>3v6d4g#V-} zeHI1zop!#NMw!PHv&lva@?WDdW;yD^iiXk(hDQ9%FK*Sy5OU-qRTQxl^8iBRiT-}j zo0-$ddhz>PzJ%OU70&U;`L{$DS!#de(@TkpiTNkA#2wV1)$u^e_gTC1aTBL34(oi5 z)Joyi`JBCae=F3Bu0{6pfH z6d)le^)GPJ107uhbK5Z5Y61cs@AylD19x8pA}NRgA-+$$^?Tgj2RIY>!^k`7?WAPD zlkD)#gi(`QG59B)YO)Nyc8ZPhEz1piCk_wM;FAE$wuZff>kZ}8+EqDD>qreM%&}L? zwPeWR+;#h>ijAu(!2{ve0SHk1@a+abpCR_J2M5eDq#ND!eCvwnaj4M*c=8&WIvB#`U z>L=}X6WshJ&&nd?Z%v;3;Cg}udZ+W@Xrp^$laO#SCRo6YQYA!ouQ$bO8sRGmA&ZI> z{qI?0Qo9`jU~PG}oJ#MA!_?jag5suLof<5^6rBAFKYuxL3{_QpAYaEby({47a;`aV z3;kp;#YbkU`JuNn3^NM*v?CSz1!f&}$Jkb7c4F2bU!)`D zBtGc!IP9hj8PMMAYlw~P$3Yq=9x%H0jLX%nXp*=T{ZiWS184Hy*D-SR#nwuA1CF1` zxWsa86M2PP<3l|e3sn9=`3t3yqP>tjKPKWAZT|L@ak+m3Rh6Df&K@s4ACZB0C9(Ll zHzyfb+zP&8-?k_sqcW-?R@Z*u43aZPiR0G5Cwr@AM`Kk`MdvrQr*@g+fe|sNeT}SO z|EjFsK`v`B4_Lo8*#Gjh0*iJrBSER(wcFTjA|}^#>PujTOt&<>SfJN z8DAd8yl@;NG8Ac2p)&acV|o3rTT2(mwqk?s{ndTxk3*odr2AmE`jD|QUW@Vkyj8WM zQJi1A$?D)`l-a50It|&VvU`1NMH4m0Zf2yxKAo$WID3JmK7u1b2dQ|rUI!>%srV;f z^&UUYnDTTdy%dYCR>7P?Oxnud88`5&y>&(j{=AP@a#s%;3p7a``#w zY`c-I%`$#ztAMmKo?CnP`bYB5U(3Aex%ZBMxPvI$#fE-ti*>UUaD|T3n+u0h1kcG0 zw}!hiw)#mmdrD@pXahAPtE1-g!K zpQK$kn&D@jzgxKDD-Vx%gW!&B#AH=>9)(O=56a@_Q|jiMtGa5tSOD9s-F4!CKL%8HrNN%isV$Xhs zR9ycZI4k6aq2V0SD-_U|KY27&O0m8eO4O#%2!xu&9i+~-|b4=BdwylAz=k^$!*2k7;t=*fr=jYFBjHr z*aeS1T3ErJay1}+$$a9@A(jVwn<#GEcamp`dJ0S9josfuZjOviGyw8#rST zUAo#;udzSEy7(<4?mqJHe(xOC`wG&PmWHMvA1k`TI6Oyd5@(iZUEuB{ho9VS*b{hMflv6ZC47w@y73Mjrf9(w`k+ zZu&Z~m>`ra_iOJox-BgBZ{M=oKDDWOgSBa#CrU#X4RUXKSgYt1;- zHLbtdJo=gC@rwO-*>tz#zyT!UsfdZA3$u(G5T@Zt^StK6VLOW(@>-X0osK!lw=5p8 z8keYkt@CjRvXY!-u`H;FM!3a~+GBI7KTMv%uU8-0Z zC2foH=W`z-f(0XtBvB%crq_SPeFBQ@2G?W|nR{aRY&T^LSLZAyodtG-TnHCWaVJ&5LJl*e zfUdIB(yAfsM8>o@!a`-ZcrJaDFtn6huu*OyaozElcM33>cX%%ap0?_X&z`Rf3^F`? z&yGpq$;XpUM=mDB=VH26*_~|jNDFuLo9P2oPN{=?n`96!oFornP>X^9!}FK@m0YMC zYQyBbBHv6Pm$lk>I!G;9eeJ`gd#sgG+N8`5ztEC+%i#EZf}=A(Rptn+`FB(LkR{-7 zm-VE@xU|>OaHiJzJFf@2c3yt4_$fAWeSy!)UTPN#kBhd2leFS^S~;sX8syIX%->wyp9@fiu?cwxdYBO>$tC4sjBt~JN|$!<2~^p=?X(jz7h!yjCYVQr&; z;?-j$Y+4`G3UTIIm@krbD|Wy!QVi>qQnlVtLehpelbaq0e{zbrxX*_D^=>#01+-N2 zB6mS@L;Cy40cH4BCNcje`;rwWN9XfW=e5wZ7Mk#NrBT?j(( zj|aY`<@n0PTXGbaEAa*ymi4|BzI9u*lEm>Ru|4Itjx}F0P|z(1l4cGmM&5e>JseuU zJovKNS8yDO_jEaO@+g9HNxy7JQKtWmstpCjh_ld|ko_+>MGCRpB<1aFsdQed@-%K28`3u1~~WM|#L=Yc9TyiYk*mZku&o3geG| zbfZhuHvjIPJia#y3EUZrq9j2Y{;o4=f(>>7eS4G=8{fN`vwjk*>nxxiTDs7X8*%C7 zo0Pj}mQ>}#eTT>7L1~)ih%z5!jm=^BHOPpI=yBxHXG`h(prQ#GqGH`t-rR5bDw=cm z;|{$&^C^oL5`ta%B7O^}A)5*&?L``IQYu8G>K4mREu1N zvIP_6vIpiW5?liP`pmv;bNFZS`pbb@4C59y#jY}`kumH1vS)>~U{_I}kAgK;>JV~R_6M}@N z;9h`7wt{6a-$R+i$nRdHvX)EwltQmFw>Q>*L_KXvOp6_kF%SFYHQ8>u5`1?qA4G1M z`Yk5G)h=S}vsA~yOtUyTrO}LF8b;?Bq@EIHsEOmK72{MLNFn~r+!ZfasBAoa=*6POt1Nf}7@?lb?8*STff`u4F@ufJ?-FASEgb*&5V zG2Wa0rm9ZrJJtxOjEdI%G8$Z2>#VJ~KYad6gMMb&n%gI1x1V0JoJo<9A)iI+*E61B z&>{(Z{N;KC=BI0uoRGM;^;go~xzxJvTfVZZ7)Csu6Fpwex=sZ zbH&j2ag2cWV}vqFe1W7oke=eZAiHWg5T=rq3KZJY*7t-p#w^pKVOp_LdpVT%ox%mc0%2J6H z(I%Jzo0l&m6@~-TocI|whWnj(pMH7Vzsc0VpKIi8P!^7e;?bZD7->haL0l&~%~d-+ zf*m%x&$AeOk&GNPNAhxg$`q^0&kt!xOd%=aBez^8`wtUd)m~J2pwyxJp7<`H z%RlKlwVR`1@v%~x%w8P24B@x#4?N38U>}r$0ynOp9P@lvRyCtC^-+$;;ejnW$#&M4 z52?MlUW%sfZYFV)JzB7g#5KLl@{4Qtk9BmO!m11?5@$`X+`wF$lNhA3vbU*80E=&q zS7U>g&hZiIeklx^4|F|WR!Wi-x2n}rve>U+@=Yq&^5@Fi=hu^ZoL@Lu+9`T<-Bzj& z8}YJlpNi2hdtuQLlJy%Co4cOcq_@ghKRGz*oU=EN?sft|xpbM&`Ne=ScEbz%&W`y` z4zZQ(+)U`8Kj$20_UJ#L>#YRtS+4fI9ZFFdR~&B5-zcADQ!(s(_xKn(tG>OlsXGzZ1AVV->jeX)yEN8cd7c-?w>M@FEKj^RP7Y;t47*)V)Yh zlu`|<0nU{2X})_$0smINGubn=QHecL$EC@$z2MCB0m8yz1HT@vKu5?pB)?MVh~pvfBz5CSxZek9z(5GQt!= z$pQyz8Wm12erajYSgV<@dN|$ZRzb_Gtp8+1P-I*F)N)6~jt(?N4XyKtUYffPfs+-! zC{$Wlw<$E#v#@n#mFKS~Y1V$X-G6s{_cM;v8tZlQyPlu{itS$|f#mWQnG`!l3C6Q* z2PdG+p_E0RjeYeva;c-@T>YVASYT89QoyDxPo4h+=Q6wS#|B@>Y7U+}-m3x|&&(Y= zkP%cgHBPF6zJ9;*^VzM0Bk6VX({8nNaD0^R89n9CLF|K9-qc;L5_05d$Jp z95JO3`dSr}Ki{YiuHQkYLHv%XK;FwztxROi*y7m|_j+u8UU&%VUKi*cDQiVDe#OjQ ztKblvA{=V5r`6G0BpYjGs7e#ZUuH^t#Ykw;6t_XmD_HkH_p>4fXglC?;k z>jKfG+(jmGrM?rc4HLxzJ&e(G_Q{2yR)e?R;afu_s|NQvI_0c#Fr6*)gd$m6YcGz= zd4@-ICx#IR_RU#q01pt~vNq{C%E^@d|i{am@@VPeDg&{f^ zjq2`l6EYd>DOUE;A6wt|V9Tz-uGVzyR}AIuD(Q*uitO3S@+E1iuXS8G3 z`Uzc)(=XYjq?v=S4RPMz$P#$0g4bp!h$REvCk8%P1qs3TG&=YQ>*xhGPJ4#npnKg& z;+iqa;}bM&V1pvGhBYd^|NLZykGbwg?Xds)y7jkQuf6~_OIn_uu15wnS9J1Bs*V5c zk-MQ1Z!=M5KHt1-%9roHuF}*tO{zr>w;GLsB7E@IPO2-GQB_u@8P^eiX(lF8I+9w% zn|2!FNrzx6Y~fs{RXff))v1Z#XB>{0Y+X1aHrC!+^x)) zUH##4z3AL9&EiG=C!DJ6lHe?xN&os@A!zBhvQR1Iu2-7iP|qockI$~yzpN^Cs(yfe z@ix+5qK!=1B(!ejc6w|E8`kVLpHH}#AcF9lQQ4MaBHC9h(4f^ldXxd~*iYtx-3ag8 z)+RE*J!7S|95Xy466GL`rS~EdP6r-PRtgFi91K48spi zkoL|K>ljBeYx%l&I8?Sq4Jxp`R@INt-k%m5MLd!spD2m|7BHbT`i7$D!>wUTY=w7) zOZzetPb$54k%Z8T<_2|eM6uq>*ulqMZps^AOLNvUL?ZOkuT&FJEFYd9lyN75g4lEY zTIR7HT_~L@IFrvSH(oq4-}-pstA7b=*@R&fKU!l5UBD|7$(nbsRqvMjT1fD~){Du- zbQI3|6Is{&0Ri^VYS2$jmZxd&z(#c_ zsmmk0jx03G>-YWFQxL9opf;<9K2=irY3Tv=H(=z z2O`+@e4Bo}2W%%%LI@ zr@ay4a)$RQC`PzX&g4&?Ta*~&QQW6*&2p##Ah)w)GM$t-qR_aZO=8>4nun-hUB9sD zggI^4Ne*4@agxH~C;t8h)RAD%;88`WNP_(J`v%QMn6UWSc7y$TZz|U(Dscg`x`DND zUQb45s*_Ib^t;8{?a$_Z7od2E`sYyDCNjyrXXg~+!*6V`Y-?n7m1?;5#~-7}7`rB; zAOz0`Ij~hzK033vp@yB(FLdnyWO!%Rsw`bF!f zSG9&(&FJiLB(tregkVEDhp0}*U6YHvR|p-N>c(El9x2##BF+;yPHnPZx99jx8Hync zEgv9RrL}B%O+E<26ezWO-(38RcxTPnrSbak$DEN)QP@rg@*Wn^i&99QIhbBIE1J2Qrj*_l4*l-PX8l~I zkKIb93oV!ydl8SK-a5Qb!F@oNKc58~Iot;GZkJQ&;X2-spPIbcCwAXo*Beu zhd>T{wTL%T>f9S&oogw$UqN=vC1$Hhj)|WN<+y$asP!jk&V&o2p$k=ZkK=bhQ-Kl= z4l$GY%9JoIGqY4$NNgA3I=%n%3ZF4acbSqorCWDOAwCjyMK~&^@5|4<+(gemk7_X z+pNmg@G#1((gQb&N~>LM=(+C@Zt}hSkfn6>+G}bBtzN%4@nYaxH&%{kd#r$bLTRl{ zCJg`F^!Y<+m0|8s@^2)5#w@6B7&I~#B5UL<4bFkHG8x5&Pv!Z6+`l;nc3dfKD&r=D z_Tv~I=&C|^1f zvI4wfUKoCxs?+y*@@b9ncn&?DDxY(n1sr|VY>=<8=B0z`Vy{s0@J(R~Hxws@=+KQQ z^6naTZqkTeD0m_^p8VhpaOF!ZH)?Of^_rRYo$>265meGC&W}-2%NYMv^tetfZJN(l>J@6 z7Alh9&^1K2{o*EjGTW9ncf6VH?9tblIJ?s#nEgC!UOX`=YV&Ej) zrue>8g-i1*p@kHcR#VFRmDGp&Pg7WkwyugDjqK~aH`o*u3*LYhA#D z^GI>jYcSBYoHZj|-FcNBH8Pg8#Pg6(9gcUa)){!N9{~GZ;N{mtY~LcIZGKt4G%j5h5?kn7 z(7hzUQ6y(iL(@6)Hr6v|8X2msc9Ln1N5KD1xX=3LtF#)v97`%5snM%y$)dI3WVgR_2Ij!|-h3~@pg|yIG+0|E5>5sU?^Q=J}FcYZzW)E(9bww55fVTUa zqK2)gHvbCCsns5&wSU}%*%1!!K6&7-S?vDIfCm3S(#kb@zNX$^Y>!MTgi=w2d=Xi%t{vdq%ISh9eFv1$_j4wO8nddG8f#zlqY#@e z6xndET{_d_woAzRZiMb3MS@NEV{n8GEl@{{=ioX&fbZZCH9jaAhQSNeENi{-yswA+4CqTa-*tn$o@B&B1 zyBxn=8W><_j56w4*pr#Hx}A`2!E(F-x}vI%UORF!*F>VOi8OuuEJw!t-D+j?^Ix3L zP6mWIY-pj}*SMhMFKH0lfJI35%p7wX{A`78EMY>r3{T>!X)gl24^Rs+y3_qHz_}pQ%pFugBbHwDNDhRp2My z9E*J{u^wp2o2HmkXLqOcrcc8&Wz{k*^x1`a+oE4dfm0IZ`dVqS7BY>jD8~f7wn4!i z(|)>Q5Jwp2BIv)(-MXva6M??OE1UD0QatnM9-k!=V`iJmNa`|;Rjf8K_b84pU=y)- z;D3J_Yn#bfvmnP=F{Tf^p2RG-n#r^rUs#X2aBA?_)GK50a%p?q*Y|a$2~SQX@)9|x zIW#`yF2vK2`N3P=T>kh|v14>k^QHK(ou$MnQONJy&hNgOKD?!W=@meQ49`=!3C+Adi(Ebjw8go%Tu2A(rG zQzP=uR4)lP;#8a-4WAS?=~h4`KGB!sOaH2BQ&VfPxpdu+)qw*Xr%MUbI(2ALYcA#! z(O$&icyO60R|SqqCdGtlU_-cMepK9{9De!e-0%X<6tsAstoGcor2_4X3QEHhSc*go{Jr(BXxxi7x2{i5-C&be> zfrjNsarv9oRt_=!o*QxfDu=_O1mJAo$BBz95t0ag_$B5)FXh0?0u*=8QOHmcA=d)4 zn&ojDu1jQ(f< zv-S7CY?1zI#}q4V1*xz=C*}V$?@ARd3uf*N@js-Wo!M?0!<|Y0_st6$Xb=Nq(s9z) zzKH<#-|jAbP;m)dNEVrL9HY#fHOD7I2lm2hn?BK^mH_(NG|pi;KD?5^Mc)pad`zds zyXZUyy+R+}@U*?sRHt5Igmw5mP64e`unJ(3(vj-lX&|B^A6!O8=3!Tm=dT1iHQ1waiL#vggY z%-{15rSbgHKZ4*!@#DQ+)FM>sjV*e`*HDw{S+mhuA z$6q`|+=uLlLjS9O^b1Ev1@z&bttVUv+#Bw&aY?B^q)9q0gU2laa(UOby#@|^xG-^DCP!-%lb)6H1!!$w5T1^=cQAI1+~+n@CNpTodS{sIe5A`J>o zC38gv!v2vV3b;Kxp~~2Sz`fXB7+6t?m**Q>1TN&i-y;C0b=#a?(^Us2gCCs!S6@u- z@z)xIWnum5v@9)E?icB8VttZ2c04)yHf$MU!oXUL%2}IUM!{B;2P>`VH)VN zRpKbR$gyy+^OYu?AopYeLU&Ujv0`xDzP&C;Y$tue!iTh3npDeK#YML#!zl^OhGPOa zX-=u&SP})j%kYXobNi<*fQD!XAOR3mvO5Oajy5oP!wf*a0EQM;lv@YPXw847RfB1H zuCUHvqsclg3|N&xNE!vb)i|I63*2`Z1^~knn>NEVa{Bk}74SA0SHIel@kgkV2iyoq z+#v^OsRK@_eSX^mfW63sd;W*r!K=4p)*u+cc!7WpuIpyhGIg1Mj}{T>t<8 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/square.xcf b/fastlane/metadata/android/en-US/images/square.xcf new file mode 100644 index 0000000000000000000000000000000000000000..d8dedf7e36dad601ed61d35c061a176ebda8228a GIT binary patch literal 34439 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 I$t&Rh0@_=w#Q*>R literal 0 HcmV?d00001 From 45c262996eebba714f286f70fe597d2d8a741407 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 9 Jan 2020 19:53:57 +0100 Subject: [PATCH 040/117] updating the app icon, make it flatter --- .../mipmap-hdpi/ic_launcher_foreground.png | Bin 3936 -> 3085 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 2407 -> 1831 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 5756 -> 4239 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 10155 -> 7182 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 15470 -> 9811 bytes .../metadata/android/en-US/images/square.xcf | Bin 34439 -> 34439 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png index ad7d954a99cd012274baae57e68239d6182bc9e7..e5c2534d43b2ac5cd99e2957fec397ea30b12383 100644 GIT binary patch delta 2984 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 Hu0mjfd^%%R delta 2397 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 Dhl7dy diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png index 4648c335ce566d40bc4d18969277e3a3fb66f639..751916395dbb80d02dff3c944864e7b3a8c48ba3 100644 GIT binary patch delta 4052 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 literal 5756 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 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png index 56a5af235ff809cf2ba12a141c5c3182397668d0..0572eaa1a89a9f60796959efe22423215199a33a 100644 GIT binary patch literal 7182 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 literal 10155 zcmeHt_cxpGAGekk6>6kbX&bd-6w#t~N$eUyQL7@MMX8n6?jT6**&0<5d+*J+C2H^5 zqcv)Vs=c4v=bYzXcz$|vj*}DjeP7r6dSCDHdcCeYR9{z}{u<{s3JMB(O$|7bg5nbV z;*aJk@E_|{^)?C$0XI$fBcnGH{Lbvc1{h#0&T}ziyHBDcy-e7!$E_+e8;@msg z+_bxN17V!Hs%V_8S3O%jVr9SXo_FlwXTNzqMz{i)@c%#m*8|Gs#BMr@w_+&=Cj&4> zo4!jF&#}x-9L$B62VjxBmnf1v_}SyE9j(_{XwGeIV&GvE{X|I>fp30ok++-sLYVIE z8H2cFUNtxQ9an7yZ@5QN^Mtm&-)30Zz9e?H-+dGYw{LcIL@1MGmu<&_# zUY>&u0ztA}8!bNH2)^wvv(_Py##OMiYM;WT+8P4B^p%J)HQ~%(@Z?#as@;A^ecSi% zBbSD)HZaRCF$V{SnXW~*2er?!Ou z`!!27L8g1ACC`W*%G6>SJIj@n!w(OZ5z=5%-6-; z6E@<{b{kz7^IGhTFOMfLUTbZwIZZo1S$f?kyH>CfQ_%I__;^NDjG&Df>*!&uo?@*P zPgiDO8EJQIR7u`vZ(Wfag!$@V4#!jI55g*(Hg58lbXs(dIgS*VmH+uh%fi1C2R2su z0nGUIO=g*+qz7z$q|iK3>2yUedw68TxdWq4Hg{?Cv@Eu2^sdp7&{wR!7|V#`>3Tx? z1SplNiYkAF2ErddU3Td{OXHtb-AIjF-k5oKb zeqvlz%TwY!U8lr_9ka<0QCah zP6SPOMYK;&&W<MD8mcxJ!XFyXlh*TXk|f1UCFVDKoRP&Vkq zjFuP7Sc=K5yPxik-fngrEn2m>`?vjWr0qusTPJ$MOiB<{w)`Y?=aFg%B!Gdz8BR8X}jPK=1X_# z-Nwz)=|vV&4;j2qwtf^li$I!o2DKwSH)l@Sg_9#oY;V5cm}89ZWev`or-ocso*4h_ z4AFu)KhgRT!R_;zD_H*T|0u)xTkX^Q_7eHO=d!Zs;4*&BJ7sRaO;-)x|wJz_pzpT|})WW^T#4!xj)z6!ftQ2sjfE5|~8Sxy(mG2t5 z>YBj#_*Y|L>*gQ&F}vT?6oMhs`Ol6=Wp_Mtb}B_&YcMDQC&1I{r9q}O;Y zL6PP2NoWs~)?=b_Rcns4t9^3f-P670gG=uV=iLrcrdR z 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 literal 15470 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 delta 376 zcmZ|H&nv@m9LMqJXFqHQi4*Iq6=FrEB`F7ABP9;(;vh9Yl4MD0jj%7Z+QruD8wYAP zCrxRslv4fy2Y&$h2b7zWyuO@$>hbx!d%gR-iX~sM!}tD^og3=Tm2T&|@7Bl Date: Fri, 10 Jan 2020 17:19:41 +0100 Subject: [PATCH 041/117] restoring some emptylines --- app/src/main/res/values-hu/strings.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 9fd480f32..b052836be 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -34,6 +34,7 @@ Átméretezett verzió megosztása 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! Váltás a fájlkeresésre az összes látható mappában + Média szűrő Kép @@ -44,6 +45,7 @@ Portraits A kiválasztott szűrők nem találtak médiafájlokat. Szűrők változtatása + Ez a funkció elrejti a mappát egy \'.nomedia\' fájl hozzáadásával, és elrejti az almappákat is. Láthatóvá teheti ezeket a Beállítások \"Mutassa a rejtett elemeket\" menüpontban. Folytatja? Kizárás @@ -57,12 +59,14 @@ Rejtett mappák Rejtett mappák kezelése Úgy tűnik, a mappái nincsenek elrejtve egy \".nomedia\" fájllal. + Befoglalt mappák Befoglalt mappák kezelése Mappa hozzáadása Ha vannak olyan mappák, amelyek média fájlokat tartalmaznak, de az alkalmazás nem ismerte fel, akkor kézzel is hozzáadhatja ezeket.\n\nAz elemek hozzáadása nem zár ki más mappákat. Nem talált médiafájlokat. Ezt megoldhatja a médiafájlokat tartalmazó mappák manuális hozzáadásával. + Átméretezés Kiválasztás átméretezése és mentés @@ -70,6 +74,7 @@ Magasság Képarány megtartása Írjon be érvényes felbontást + Szerkesztő Mentés @@ -89,8 +94,10 @@ Tükrözés vízszintesen Tükrözés függőlegesen Szabad + Egyéb + Simple Wallpaper @@ -104,6 +111,7 @@ Kezdő képernyő Zárolás képernyő Kezdő és zárolás képernyő + Diavetítés Időköz (másodperc): @@ -119,11 +127,13 @@ Csúsztatás A diavetítés vége A diavetítéshez nem található média + Nézet típus változtatása Rács Lista Közvetlen almappa csoport + Csoportosítás Nincs csoportosítás @@ -137,9 +147,11 @@ Fájl típus Kiterjesztés Kérjük, vegye figyelembe, hogy a csoportosítás és a rendezés 2 egymástól független mező + Mappa mutatása a widgeten: Mutassa a mappa nevét + Automatikus videó lejátszás Emlékezzen a videó utolsó lejátszási pozícióra @@ -181,15 +193,18 @@ Kiegyensúlyozott Kerülje az érvénytelen fájlok mutatását Mutassa a kép fájl típusokat + Miniatűrök Teljes képernyős média Bővített részletek Gomb műveletek + Látható gomb műveletek kezelése Kedvencek módosítása Fájl láthatóság módosítása + Egyéni Alaphelyzetbe @@ -270,6 +285,7 @@ Zöld Aquamarin Pipetta szín + Hogyan tudom beállítani a Simple Gallery-t alapértelmezett galériának? Először meg kell találnia az alapértelmezett galériát az eszköz beállításainak Alkalmazások részében. Keressen egy olyan gombot, amely valami olyasmit, mint az \"Legyen alapértelmezett\", kattintson rá, majd válassza a \"Alapértelmezések törlése\" pontot. @@ -301,6 +317,7 @@ Ezzel csak a kiválasztott mappák láthatók, mivel a kizárás és a befoglal A rejtett elemek megtekintéséhez nyomja meg a \"Rejtettek ideiglenes mutatása\" elemet a fő képernyőn, vagy válassza a \"Mutassa a rejtett elemeket\" az alkalmazás beállításaiban. Ha meg akarja szüntetni, csak hosszan nyomja meg, és válassza a \"Elrejtés megszüntetés\" lehetőséget. A mappák elrejtése egy rejtett \". nomedia\" fájl hozzáadásával történik. Ezt a fájlt bármelyik fájlkezelővel is törölheti. Miért használ az alkalmazás ennyi helyet? Az alkalmazás gyorsítótára akár a 250 MB-ot is meghaladhatja, és ez gyorsabb megjelenítést biztosít. Ha az alkalmazás még több helyet foglal el, a legvalószínűbb oka, hogy a Lomtárban is van elem. Ezek a fájlok is az alkalmazás méretébe számítanak bele. Törölheti a Lomtárat azzal, hogy megnyitja és törli az összes fájlt vagy az alkalmazás beállításait. A Lomtárban lévő minden fájl 30 nap elteltével automatikusan törlődik. + Simple Gallery Pro - Photo Manager & Editor From 3185e3eea9f714f4f5ce5e63924c393d37555942 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 10 Jan 2020 19:43:35 +0100 Subject: [PATCH 042/117] fix #1705, hide the keyboard at clicking path on Save As dialog --- .../com/simplemobiletools/gallery/pro/dialogs/SaveAsDialog.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SaveAsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SaveAsDialog.kt index a4dd80712..4331b3120 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SaveAsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/dialogs/SaveAsDialog.kt @@ -33,6 +33,7 @@ class SaveAsDialog(val activity: BaseSimpleActivity, val path: String, val appen save_as_name.setText(name) save_as_path.setOnClickListener { + activity.hideKeyboard(save_as_path) FilePickerDialog(activity, realPath, false, false, true, true) { save_as_path.text = activity.humanizePath(it) realPath = it From d2aa5f9f11d4b8ba699fa5e3f0b1bc8cdce35f19 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 10 Jan 2020 20:19:37 +0100 Subject: [PATCH 043/117] fixing some double escaped newlines --- app/build.gradle | 2 +- app/src/main/res/values-ca/strings.xml | 2 +- app/src/main/res/values-de/strings.xml | 4 ++-- app/src/main/res/values-es/strings.xml | 2 +- app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values-ja/strings.xml | 2 +- app/src/main/res/values-pt-rBR/strings.xml | 2 +- app/src/main/res/values-pt/strings.xml | 2 +- app/src/main/res/values-sk/strings.xml | 2 +- app/src/main/res/values-sv/strings.xml | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a01211fdc..7eb7e9e60 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.19' + implementation 'com.simplemobiletools:commons:5.21.21' 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/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 673ca5601..bf388a9fd 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -53,7 +53,7 @@ Gestionar carpetes excloses Això exclou la selecció juntament amb les carpetes, només de Simple Gallery. Pots gestionar les carpetes excloses en els Ajustaments. Excloure millor la carpeta superior? - Excloure les carpetes les ocultarà junt amb les seves subcarpetes, però només a Simple Gallery. Seguirant sent visibles a altres aplicacions.\\n\\nSi vols ocultar-les d’altres aplicacions fes servir la opció Ocultar. + Excloure les carpetes les ocultarà junt amb les seves subcarpetes, però només a Simple Gallery. Seguirant sent visibles a altres aplicacions.\n\nSi vols ocultar-les d’altres aplicacions fes servir la opció Ocultar. Eliminar tot Eliminar totes les carpetes de la llista d’excloses? Això no eliminarà les carpetes. Carpetes ocultes diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index c5dd78fa9..acbebcd82 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -47,13 +47,13 @@ Filter ändern - Diese Funktion versteckt die ausgewählten Ordner, indem im Dateisystem eine \'.nomedia\'-Datei abgelegt wird. Dadurch werden die ausgewählten Ordner und alle Unterverzeichnisse auch in anderen Apps nicht angezeigt. Solche Ordner werden nur gezeigt, wenn die Einstellung \'Versteckte Elemente anzeigen\' aktiv ist (auch andere Apps bieten üblicherweise eine solche Option).\\nFortfahren? + Diese Funktion versteckt die ausgewählten Ordner, indem im Dateisystem eine \'.nomedia\'-Datei abgelegt wird. Dadurch werden die ausgewählten Ordner und alle Unterverzeichnisse auch in anderen Apps nicht angezeigt. Solche Ordner werden nur gezeigt, wenn die Einstellung \'Versteckte Elemente anzeigen\' aktiv ist (auch andere Apps bieten üblicherweise eine solche Option).\nFortfahren? Ordner ausschließen Ausgeschlossene Ordner Ausgeschlossene Ordner verwalten Diese Funktion blendet die ausgewählten Ordner und deren Unterordner nur in dieser App aus. Ausgeschlossene Ordner können in den Einstellungen verwaltet werden. Möchtest du stattdessen einen höherliegenden Ordner ausschließen? - \'Ordner ausschließen\' wird ausgewählte Ordner und deren Unterordner nur in dieser App ausblenden. Andere Apps werden solche Ordner weiterhin anzeigen.\\n\\nWenn du Ordner auch für andere Apps verstecken willst, verwende dafür die Funktion \'Ordner verstecken\'. + \'Ordner ausschließen\' wird ausgewählte Ordner und deren Unterordner nur in dieser App ausblenden. Andere Apps werden solche Ordner weiterhin anzeigen.\n\nWenn du Ordner auch für andere Apps verstecken willst, verwende dafür die Funktion \'Ordner verstecken\'. Alle entfernen Alle Ordner aus der Liste ausgeblendeter Ordner entfernen? Die Ordner selbst werden nicht gelöscht. Versteckte Ordner diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 3b0c92a89..e5ab52d0e 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -53,7 +53,7 @@ Gestionar carpetas excluidas Esto excluirá la selección junto con sus subcarpetas, solamente de Simple Gallery. Puede gestionar las carpetas excluidas en los Ajustes. ¿Excluir mejor la carpeta superior? - Excluir las carpetas las excluirá junto a sus subcarpetas sólo en Simple Gallery, estas seguirán siendo visibles en otras aplicaciones.\\n\\nSi desea ocultarlo de otras aplicaciones, utilice la función de \"Ocultar\". + Excluir las carpetas las excluirá junto a sus subcarpetas sólo en Simple Gallery, estas seguirán siendo visibles en otras aplicaciones.\n\nSi desea ocultarlo de otras aplicaciones, utilice la función de \"Ocultar\". Eliminar todo ¿Eliminar todas las carpetas de la lista de excluidas? Esto no borrará las carpetas. Carpetas ocultas diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 898992fdb..34eb9b92c 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -53,7 +53,7 @@ Gestisci le cartelle escluse Questo escluderà la selezione e le relative sottocartelle solo da Semplice Galleria. Si possono gestire le cartelle escluse nelle impostazioni. Vuoi invece escluderne una superiore? - L\'esclusione delle cartelle e delle sottocartelle le renderà nascoste solo in Semplice Galleria, saranno ancora visibili in altre applicazioni.\\n\\nSe si desidera nasconderle anche nelle altre app, usa la funzione Nascondi. + L\'esclusione delle cartelle e delle sottocartelle le renderà nascoste solo in Semplice Galleria, saranno ancora visibili in altre applicazioni.\n\nSe si desidera nasconderle anche nelle altre app, usa la funzione Nascondi. Rimuovi tutte Rimuovere tutte le cartelle dalla lista delle esclusioni? Ciò non eliminerà le cartelle. Cartelle nascoste diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 108f8bd18..7b34fa90f 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -53,7 +53,7 @@ 除外フォルダの管理 選択したフォルダとそのサブフォルダを、Simple Galleyの一覧から除外します。除外したフォルダは「設定」で確認できます。 親フォルダを選択して除外することもできます。 - フォルダを除外すると、サブフォルダも含めSimple Galleyの一覧から除外します。他のアプリでは引き続き表示されます。\\n\\n他のアプリでも非表示にしたい場合は、「非表示」機能を使用してください。 + フォルダを除外すると、サブフォルダも含めSimple Galleyの一覧から除外します。他のアプリでは引き続き表示されます。\n\n他のアプリでも非表示にしたい場合は、「非表示」機能を使用してください。 すべて解除 除外するフォルダの登録をすべて解除しますか? フォルダ自体は削除されません。 非表示フォルダ diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 431a95a28..f76355c3e 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -53,7 +53,7 @@ Gerenciar pastas ignoradas Esta ação deixará de exibir as pastas selecionadas apenas dentro deste aplicativo. Você pode gerenciar as pastas ignoradas nas Configurações do aplicativo. Ignorar a pasta raiz ao invés desta? - Ignorar uma pasta apenas deixa de exibi-la nesta galeria. Ela continuará visível para outros aplicativos.\\n\\nSe você quiser ocultar a pasta para todos os aplicativos, utilize a função ocultar. + Ignorar uma pasta apenas deixa de exibi-la nesta galeria. Ela continuará visível para outros aplicativos.\n\nSe você quiser ocultar a pasta para todos os aplicativos, utilize a função ocultar. Remover todas Remover todas as pastas da lista de pastas ignoradas? Esta ação não exclui as pastas. Pastas ocultas diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index bf4a80ddd..7e387b5c0 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -53,7 +53,7 @@ Gerir pastas excluídas Esta ação apenas exclui as pastas selecionadas da lista de pastas desta aplicação. Pode gerir as pastas excluídas nas Definições. Excluir antes a pasta superior? - A exclusão de uma pasta apenas oculta o seu conteúdo do Simple Gallery porque as outras aplicações continuarão a poder aceder-lhes.\\n\\nSe quiser ocultar também das outras aplicações, utilize a função Ocultar. + A exclusão de uma pasta apenas oculta o seu conteúdo do Simple Gallery porque as outras aplicações continuarão a poder aceder-lhes.\n\nSe quiser ocultar também das outras aplicações, utilize a função Ocultar. Remover todas Remover todas as pastas de lista de exclusões? Esta ação não apaga as pastas. Pastas ocultas diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 0a1a3c2e2..f09e34dab 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -53,7 +53,7 @@ Spravovať vylúčené priečinky Táto funkcia vylúči výber a jeho podpriečinky iba z Jednoduchej galérie. Spravovať vylúčené priečinky je možné v nastaveniach. Chcete ukryť rodičovský priečinok? - Vylúčené priečinky budú spolu s podpriečinkami ukryté iba pred Jednoduchou Galériou, ostatné aplikácie ich budú stále vidieť.\\n\\nAk ich chcete ukryť aj pred ostatnými aplikáciami, použite funkciu Skryť. + Vylúčené priečinky budú spolu s podpriečinkami ukryté iba pred Jednoduchou Galériou, ostatné aplikácie ich budú stále vidieť.\n\nAk ich chcete ukryť aj pred ostatnými aplikáciami, použite funkciu Skryť. Odstrániť všetky Odstrániť všetky priečinky zo zoznamu vylúčených? Táto operácia neodstráni samotný obsah priečinkov. Skryté priečinky diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 8f4342a62..a0cf7883a 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -53,7 +53,7 @@ Hantera uteslutna mappar Detta utesluter bara den markerade mappen och dess undermappar från Simple Gallery. Du kan hantera uteslutna mappar i Inställningar. Vill du utesluta en överordnad mapp istället? - Uteslutning av mappar döljer bara dem och deras undermappar i Simple Gallery, de visas fortfarande i andra appar.\\n\\nAnvänd Dölj-funktionen om du även vill dölja dem från andra appar. + Uteslutning av mappar döljer bara dem och deras undermappar i Simple Gallery, de visas fortfarande i andra appar.\n\nAnvänd Dölj-funktionen om du även vill dölja dem från andra appar. Ta bort alla Vill du ta bort alla mappar från uteslutningslistan? Detta raderar inte mapparna. Dolda mappar From fa402c24b12c13b97dbde980574044ccc06a4290 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 10 Jan 2020 20:21:25 +0100 Subject: [PATCH 044/117] allow excluding the root folder again --- .../gallery/pro/activities/ExcludedFoldersActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ExcludedFoldersActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ExcludedFoldersActivity.kt index 530452b0b..2d584ab73 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ExcludedFoldersActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ExcludedFoldersActivity.kt @@ -50,7 +50,7 @@ class ExcludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener { } private fun addFolder() { - FilePickerDialog(this, config.lastFilepickerPath, false, config.shouldShowHidden, false, true) { + FilePickerDialog(this, config.lastFilepickerPath, false, config.shouldShowHidden, false, true, true) { config.lastFilepickerPath = it config.addExcludedFolder(it) updateFolders() From 3db5db5569f9adb2a1c454d0429ce37bf40da2bd Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 10 Jan 2020 21:17:15 +0100 Subject: [PATCH 045/117] updating some slovak strings --- app/src/main/res/values-sk/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index f09e34dab..565448a00 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -39,9 +39,9 @@ Filter médií Obrázky Videá - GIFká + GIF RAW obrázky - SVGčká + SVG Portréty So zvolenými filtrami sa nenašli žiadne média súbory. Zmeniť filtre From 13a3f90595dc76c13ba50c2becf5dd41117d430d Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 10 Jan 2020 22:30:21 +0100 Subject: [PATCH 046/117] optimize Portrait photo checking for better performance --- .../gallery/pro/helpers/MediaFetcher.kt | 62 +++++++------------ 1 file changed, 23 insertions(+), 39 deletions(-) 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 965771e9c..c9cada42d 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 @@ -214,7 +214,6 @@ class MediaFetcher(val context: Context) { private fun getMediaInFolder(folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, getProperDateTaken: Boolean, getProperFileSize: Boolean, favoritePaths: ArrayList, getVideoDurations: Boolean): ArrayList { val media = ArrayList() - val isRecycleBin = folder == RECYCLE_BIN val deletedMedia = if (isRecycleBin) { context.getUpdatedDeletedMedia(context.galleryDB.MediumDao()) @@ -229,54 +228,39 @@ class MediaFetcher(val context: Context) { val showPortraits = filterMedia and TYPE_PORTRAITS != 0 val dateTakens = if (getProperDateTaken && folder != FAVORITES && !isRecycleBin) getFolderDateTakens(folder) else HashMap() - // used only for Portrait photos starting with "IMG_" for now - val subdirs = ArrayList() - val covers = ArrayList() - val files = when (folder) { FAVORITES -> favoritePaths.filter { showHidden || !it.contains("/.") }.map { File(it) }.toMutableList() as ArrayList RECYCLE_BIN -> deletedMedia.map { File(it.path) }.toMutableList() as ArrayList - else -> { - val allFiles = File(folder).listFiles() ?: return media - val notDirs = ArrayList() - allFiles.forEach { - if (it.isDirectory) { - if (showPortraits && it.name.startsWith("img_", true)) { - subdirs.add(it) - } - } else { - notDirs.add(it) - } - } - - notDirs - } + else -> File(folder).listFiles()?.toMutableList() ?: return media } - for (subdir in subdirs) { - val portraitFiles = subdir.listFiles() ?: continue - val cover = portraitFiles.firstOrNull { it.name.contains("cover", true) } ?: portraitFiles.firstOrNull() - if (cover != null) { - files.add(cover) - covers.add(cover.absolutePath) - } - } - - for (file in files) { + for (curFile in files) { + var file = curFile if (shouldStop) { break } - val path = file.absolutePath - val isPortrait = covers.contains(path) - val isImage = if (isPortrait) false else path.isImageFast() - val isVideo = if (isPortrait || isImage) false else path.isVideoFast() - val isGif = if (isPortrait || isImage || isVideo) false else path.isGif() - val isRaw = if (isPortrait || isImage || isVideo || isGif) false else path.isRawFast() - val isSvg = if (isPortrait || isImage || isVideo || isGif || isRaw) false else path.isSvg() + var path = file.absolutePath + var isPortrait = false + val isImage = path.isImageFast() + val isVideo = if (isImage) false else path.isVideoFast() + val isGif = if (isImage || isVideo) false else path.isGif() + val isRaw = if (isImage || isVideo || isGif) false else path.isRawFast() + val isSvg = if (isImage || isVideo || isGif || isRaw) false else path.isSvg() - if (!isPortrait && !isImage && !isVideo && !isGif && !isRaw && !isSvg) - continue + if (!isImage && !isVideo && !isGif && !isRaw && !isSvg) { + if (showPortraits && file.isDirectory && file.name.startsWith("img_", true)) { + val portraitFiles = file.listFiles() ?: continue + val cover = portraitFiles.firstOrNull { it.name.contains("cover", true) } ?: portraitFiles.firstOrNull() + if (cover != null && !files.contains(cover)) { + file = cover + path = cover.absolutePath + isPortrait = true + } + } else { + continue + } + } if (isVideo && (isPickImage || filterMedia and TYPE_VIDEOS == 0)) continue From b2d0dff131bca95c526fda8105ae5c202dbd541e Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 10 Jan 2020 22:37:03 +0100 Subject: [PATCH 047/117] properly show the Portraits title at thumbnail grouping --- .../com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 c9cada42d..1513a771b 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 @@ -545,7 +545,8 @@ class MediaFetcher(val context: Context) { TYPE_VIDEOS -> R.string.videos TYPE_GIFS -> R.string.gifs TYPE_RAWS -> R.string.raw_images - else -> R.string.svgs + TYPE_SVGS -> R.string.svgs + else -> R.string.portraits } return context.getString(stringId) } From 146b7628b7736be07f559e78b27448e5bb0efbe7 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 10 Jan 2020 22:53:42 +0100 Subject: [PATCH 048/117] fixing a german typo --- app/src/main/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index acbebcd82..1d3b1270a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -182,7 +182,7 @@ Zeige den Papierkorb als letztes Element auf dem Hauptbildschirm Erlaube das Schließen der Vollbildansicht mit einer Abwärtsgeste Erlaube 1:1 Zoom mit zweimaligem, doppeltem Antippen - Öffne Videos immer auf einem seperaten Bildschirm mit neuen horizontalen Gesten + Öffne Videos immer auf einem separaten Bildschirm mit neuen horizontalen Gesten Show a notch if available Rotieren von Bildern mit Gesten zulassen Priorität beim Laden von Dateien From 29352e65f0046d8fcbe1fa3de2525003acbfef15 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 11 Jan 2020 17:18:46 +0100 Subject: [PATCH 049/117] update version to 6.11.6 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7eb7e9e60..e142ce31f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 285 - versionName "6.11.5" + versionCode 286 + versionName "6.11.6" multiDexEnabled true setProperty("archivesBaseName", "gallery") vectorDrawables.useSupportLibrary = true From cabfe4f766950820bc4ddedef4abf9291f7ea373 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 11 Jan 2020 17:18:54 +0100 Subject: [PATCH 050/117] updating changelog --- CHANGELOG.md | 8 ++++++++ fastlane/metadata/android/en-US/changelogs/286.txt | 4 ++++ 2 files changed, 12 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/286.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 1475d215e..70abbf56b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ Changelog ========== +Version 6.11.6 *(2020-01-11)* +---------------------------- + + * Improved the image loading performance + * Allow excluding the root "/" folder + * Properly handle editing files with spaces in path + * Couple other UX, UI, translation and stability improvements + Version 6.11.5 *(2020-01-04)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/286.txt b/fastlane/metadata/android/en-US/changelogs/286.txt new file mode 100644 index 000000000..49b5efac3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/286.txt @@ -0,0 +1,4 @@ + * Improved the image loading performance + * Allow excluding the root "/" folder + * Properly handle editing files with spaces in path + * Couple other UX, UI, translation and stability improvements From 416c56465893038b79004b6e4619ba8349e62d28 Mon Sep 17 00:00:00 2001 From: dipenSan Date: Sun, 12 Jan 2020 23:14:43 +0545 Subject: [PATCH 051/117] adding Nepali Strings --- app/src/main/res/values-np/strings.xml | 384 +++++++++++++++++++++++++ 1 file changed, 384 insertions(+) create mode 100644 app/src/main/res/values-np/strings.xml diff --git a/app/src/main/res/values-np/strings.xml b/app/src/main/res/values-np/strings.xml new file mode 100644 index 000000000..68e3e162f --- /dev/null +++ b/app/src/main/res/values-np/strings.xml @@ -0,0 +1,384 @@ + + + सजिलो ग्यालरी + ग्यालरी + सम्पादन + क्यामेरा खोल्नुहोस + (लुकेको) + (excluded) + फोल्डरलाई पिन गर्नुहोस + फोल्डरलाई पिन गर्नुहोस + सबैभन्दा माथि पिन गर्नुहोस + फोल्डरको सबै बिषयबस्तु देखाउनुहोस + सबै फोल्डरहरु + फोल्डर भ्यू + अन्य फोल्डर + नक्सामा देखाउनुहोस + थाहानभएको ठाउ + कोलम सङ्खा बढाउनुहोस + कोलम सङ्खा घटाउनुहोस + कभर तस्बिर परिवर्तन गर्नुहोस + फोटो चयन गर्नुहोस + डिफल्ट प्रयोग गर्नुहोस + भोलुम + उज्यालोपन + Lock orientation + Unlock orientation + 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 + + + Filter media + तस्बिरहरु + भिडियोहरु + GIFs + RAW ईमेजहरु + SVGs + Portraits + No media files have been found with the selected filters. + Change filters + + + This function hides the folder by adding a \'.nomedia\' file into it, it will hide all subfolders too. You can see them by toggling the \'Show hidden items\' option in Settings. Continue? + Exclude + Excluded folders + Manage excluded folders + This will exclude the selection together with its subfolders from Simple Gallery only. You can manage excluded folders in Settings. + Exclude a parent instead? + Excluding folders will make them together with their subfolders hidden just in Simple Gallery, they will still be visible in other applications.\n\nIf you want to hide them from other apps too, use the Hide function. + Remove all + Remove all folders from the list of excluded? This will not delete the folders. + Hidden folders + Manage hidden folders + Seems like you don\'t have any folders hidden with a \".nomedia\" file. + + + Included folders + Manage included folders + फोल्डर थप्नुहोस + If you have some folders which contain media, but were not recognized by the app, you can add them manually here.\n\nAdding some items here will not exclude any other folder. + No media files have been found. You can solve it by adding the folders containing media files manually. + + + Resize + Resize selection and save + चाैडाई + उचाई + Keep aspect ratio + Please enter a valid resolution + + + सम्पादक + बचत + घुमाउने + Path + Invalid image path + Image editing failed + File edited successfully + Edit image with: + No image editor found + Unknown file location + Could not overwrite the source file + Rotate left + Rotate right + Rotate by 180º + Flip + Flip horizontally + Flip vertically + स्वतन्त्र + अन्य + + + सजिलो वालपेपर + वालपेपरको रुपमा स्थापित गर्नुहोस + Setting as Wallpaper failed + Set as wallpaper with: + Setting wallpaper… + Wallpaper set successfully + Portrait aspect ratio + Landscape aspect ratio + होम स्क्रिन + लक स्क्रिन + होम र लक स्क्रिन + + + स्लाईडसो + Interval (seconds): + Include photos + Include videos + Include GIFs + Random order + Move backwards + Loop slideshow + Animation + केहि होईन + फेड + स्लाईड + स्लाईडसो समाप्त भयो + No media for the slideshow have been found + + + भ्यू प्रकार परिवर्तन गर्नुहोस + कोठे + सुची + Group direct subfolders + + + Group by + Do not group files + फोल्डर + Last modified + Last modified (daily) + Last modified (monthly) + Date taken + Date taken (daily) + Date taken (monthly) + फाईलको प्रकार + Extension + Please note that grouping and sorting are 2 independent fields + + + Folder shown on the widget: + फोल्डरको नाम देखाउनुहोस + + + भिडियोहरु आफै चल्ने + Remember last video playback position + Toggle filename visibility + भिडियो लुप + Animate GIFs at thumbnails + Max brightness when viewing fullscreen media + Crop thumbnails into squares + भिडियो अबधि देखाउने + Rotate fullscreen media by + सिस्टम सेटिङ + Device rotation + Aspect ratio + Black background at fullscreen media + Scroll thumbnails horizontally + Automatically hide system UI at fullscreen media + Delete empty folders after deleting their content + Allow controlling photo brightness with vertical gestures + Allow controlling video volume and brightness with vertical gestures + Show folder media count on the main view + Show extended details over fullscreen media + Manage extended details + Allow one finger zoom at fullscreen media + Allow instantly changing media by clicking on screen sides + Allow deep zooming images + Hide extended details when status bar is hidden + 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 + गति + Compromise + Avoid showing invalid files + तस्बिरको फाईल किसिम देखाउनुहोस + + + Thumbnails + Fullscreen media + Extended details + Bottom actions + + + Manage visible bottom actions + Toggle favorite + Toggle file visibility + + + Custom + Reset + Square + Transform + Filter + केहिहोईन + Adjust + Shadows + Exposure + Highlights + उज्यालोपन + Contrast + Saturation + Clarity + Gamma + Blacks + Whites + तापक्रम + Sharpness + Reset + Focus + None + Radial + Linear + Mirrored + Gaussian + टेक्स + Text Options + टेक्सको रङ + फन्ट + Add + सम्पादन + Straighten + फन्ट + रङ + BG Color + Alignment + To Front + Delete + Your text + Brush + Color + Size + Hardness + To Front + मेटाउनु + Brush Color + सम्पादक + Close Editor? + Do you really want to discard the image? + Yes + No + रद्द + स्विकार + बचत + Exporting image… + Exporting image %s. + Flip H + Flip V + Undo + Redo + Color Picker + पारदर्शी + सेतो + खरानि + कालो + Light blue + निलो + Purple + Orchid + Pink + रातो + सुन्तला + सुन + पहेलो + Olive + हरियो + Aquamarin + Pipettable color + + + How can I make Simple Gallery the default device gallery? + First you have to find the currently default gallery in the Apps section of your device settings, look for a button that says something like \"Open by default\", click on it, then select \"Clear defaults\". + The next time you will try opening an image or video you should see an app picker, where you can select Simple Gallery and make it the default app. + I locked the app with a password, but I forgot it. What can I do? + You can solve it in 2 ways. You can either reinstall the app, or find the app in your device settings and select \"Clear data\". It will reset all your settings, it will not remove any media files. + How can I make an album always appear at the top? + You can long press the desired album and select the Pin icon at the actions menu, that will pin it to the top. You can pin multiple folders too, pinned items will be sorted by the default sorting method. + How can I fast-forward videos? + 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. + What is the difference between hiding and excluding a folder? + Exclude prevents displaying the folder only in Simple Gallery, while Hide works system-wise and it hides the folder from other galleries too. It works by creating an empty \".nomedia\" file in the given folder, which you can then remove with any file manager too. + Why do folders with music cover art or stickers show up? + It can happen that you will see some unusual albums show up. You can easily exclude them by long pressing them and selecting Exclude. In the next dialog you can then select the parent folder, chances are it will prevent the other related albums showing up too. + A folder with images isn\'t showing up, or it doesn\'t show all items. What can I do? + That can have multiple reasons, but solving it is easy. Just go in Settings -> Manage Included Folders, select Plus and navigate to the required folder. + What if I want just a few particular folders visible? + Adding a folder at the Included Folders doesn\'t automatically exclude anything. What you can do is go in Settings -> Manage Excluded Folders, exclude the root folder \"/\", then add the desired folders at Settings -> Manage Included Folders. + That will make only the selected folders visible, as both excluding and including are recursive and if a folder is both excluded and included, it will show up. + Can I crop images with this app? + Yes, you can crop images in the editor, by dragging the image corners. You can get to the editor either by long pressing an image thumbnail and selecting Edit, or selecting Edit from the fullscreen view. + 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. + + + + Simple Gallery Pro - Photo Manager & Editor + + Browse your memories without any interruptions with this photo and video gallery + + 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. + + 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 + ------------------------------------------------- + + • 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! + + 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! + + 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. + + 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. + + Check out the full suite of Simple Tools here: + https://www.simplemobiletools.com + + Standalone website of Simple Gallery Pro: + https://www.simplemobiletools.com/gallery + + Facebook: + https://www.facebook.com/simplemobiletools + + Reddit: + https://www.reddit.com/r/SimpleMobileTools + + + + From 1f6977bd8400e5a28956c4cc31204b0e23b03a24 Mon Sep 17 00:00:00 2001 From: Florian Scholdei <45232454+fscholdei@users.noreply.github.com> Date: Sun, 12 Jan 2020 21:09:32 +0100 Subject: [PATCH 052/117] Update strings.xml adding german strings --- app/src/main/res/values-de/strings.xml | 132 ++++++++++++------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 1d3b1270a..2ca93ce28 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -203,85 +203,85 @@ Schaltet die Sichtbarkeit von Dateien um - Custom - Reset - Square - Transform + Benutzerdefiniert + Zurücksetzen + Quadrat + Umwandeln Filter - None - Adjust - Shadows - Exposure + Kein + Anpassen + Schatten + Belichtung Highlights - Brightness - Contrast - Saturation - Clarity + Helligkeit + Kontrast + Sättigung + Struktur Gamma - Blacks - Whites - Temperature - Sharpness - Reset - Focus - None + Schwarz + Weiß + Temperatur + Schärfe + Zurücksetzen + Fokus + Kein Radial Linear - Mirrored - Gaussian + Gespiegelt + Gaußsch Text - Text Options - Text Color - Font - Add - Edit - Straighten - Font - Color - BG Color - Alignment - To Front - Delete - Your text - Brush - Color - Size - Hardness - To Front - Delete - Brush Color + Textoptionen + Textfarbe + Schriftart + Hinzufügen + Bearbeiten + Begradigen + Schrift + Farbe + Hintergrund + Ausrichtung + Nach Vorne + Löschen + Dein Text + Pinsel + Farbe + Größe + Stärke + Nach Vorne + Löschen + Pinselfarbe Editor - Close Editor? - Do you really want to discard the image? - Yes - No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker + Editor schließen? + Möchtest du das Bild wirklich verwerfen? + Ja + Nein + Abbrechen + Akzeptieren + Speichern + Bild wird exportiert… + Bild %s wird exportiert. + H spiegeln + V spiegeln + Rückgängig + Wiederholen + Farbauswahl Transparent - White - Gray - Black - Light blue - Blue - Purple - Orchid + Weiß + Grau + Schwarz + Hellblau + Blau + Violett + Orchidee Pink - Red + Rot Orange Gold - Yellow + Geld Olive - Green + Grün Aquamarin - Pipettable color + Pipettierbare Farbe Wie kann ich Schlichte Galerie als Standardanwendung auswählen? From 6286746b3544c4ede5aaa176a3887cfe8e4f9b43 Mon Sep 17 00:00:00 2001 From: Florian Scholdei <45232454+fscholdei@users.noreply.github.com> Date: Mon, 13 Jan 2020 12:41:46 +0100 Subject: [PATCH 053/117] Add German strings --- app/src/main/res/values-de/strings.xml | 40 +++++++++++++------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 2ca93ce28..0e04da922 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -33,7 +33,7 @@ Datum erfolgreich korrigiert. Teile eine verkleinerte Version Hey,\n\nes sieht so aus, als hättest du von der alten kostenlosen App geupgraded. Du kannst nun die alte Version deinstallieren, die oben in den App-Einstellungen einen \'Upgrade auf Pro\' Button hat.\n\nEs wird nur der Papierkorb gelöscht, die Markierungen von Favoriten entfernt und die App-Einstellungen zurückgesetzt.\n\nDanke! - Switch to file search across all visible folders + Zur Dateisuche in allen sichtbaren Ordnern wechseln Filter @@ -65,7 +65,7 @@ Einbezogene Ordner verwalten Ordner hinzufügen Solltest du weitere Mediendateien haben, die von der App nicht gefunden wurden, kannst du deren Ordner hier manuell hinzufügen. - No media files have been found. You can solve it by adding the folders containing media files manually. + Es konnten keine Mediendateien gefunden werden. Das Problem kann behoben werden, indem die Ordner mit den Mediendateien manuell hinzugefügt werden. Größe ändern @@ -80,13 +80,13 @@ Speichern Drehen Pfad - Ungültiger Dateipfad. - Bildbearbeitung fehlgeschlagen. - File edited successfully + Ungültiger Dateipfad + Bildbearbeitung fehlgeschlagen + Datei erfolgreich bearbeitet Bild bearbeiten mit: - Keine Bildeditor-App gefunden. - Unbekannter Dateipfad. - Konnte Quelldatei nicht überschreiben. + Keine Bildeditor-App gefunden + Unbekannter Dateipfad + Konnte Quelldatei nicht überschreiben Nach links drehen Nach rechts drehen Um 180° drehen @@ -119,11 +119,11 @@ Rückwärts abspielen Endlos abspielen Animation - None - Fade - Slide - Diashow beendet. - Keine Medien für Diashow gefunden. + Keine + Verblassen + Schieben + Diashow beendet + Keine Medien für Diashow gefunden Darstellung ändern @@ -136,11 +136,11 @@ Dateien nicht gruppieren Ordner Datum der letzten Änderung - Last modified (daily) - Last modified (monthly) + Zuletzt geändert (täglich) + Zuletzt geändert (monatlich) Aufnahmedatum - Date taken (daily) - Date taken (monthly) + Aufnahmedatum (täglich) + Aufnahmedatum (monatlich) Dateityp (Bilder/Videos) Dateierweiterung Bitte beachte, dass Gruppieren und Sortieren zwei unabhängige Felder sind. @@ -183,13 +183,13 @@ Erlaube das Schließen der Vollbildansicht mit einer Abwärtsgeste Erlaube 1:1 Zoom mit zweimaligem, doppeltem Antippen Öffne Videos immer auf einem separaten Bildschirm mit neuen horizontalen Gesten - Show a notch if available + Zeige eine Notch, wenn vorhanden Rotieren von Bildern mit Gesten zulassen Priorität beim Laden von Dateien Geschwindigkeit Kompromiss Das Anzeigen von ungültigen Dateien vermeiden - Show image file types + Bilddateitypen anzeigen Thumbnails @@ -318,7 +318,7 @@ Schlichte Galerie Pro - Foto Manager & Editor - Browse your memories without any interruptions with this photo and video gallery + Bewahre deine Andenken ohne Unterbrechungen mit dieser Foto- und Videogalerie Schlichte Galerie Pro ist eine stark individualisierbare Offline Galerie. Ordne & bearbeite deine Fotos, stelle gelöschte Fotos mit Hilfe des Papierkorbs wieder her, schütze & verstecke Dateien und zeige eine Vielzahl von Bilder- & Videoformaten an, unter anderem RAW, SVG und viele mehr. From 07c3d26b5dc31ac48bff6149f3b1db541a6512c3 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 13 Jan 2020 13:34:12 +0100 Subject: [PATCH 054/117] updating the german app short desc --- fastlane/metadata/android/de/short_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/de/short_description.txt b/fastlane/metadata/android/de/short_description.txt index ac0a14175..d9bd6cf0b 100644 --- a/fastlane/metadata/android/de/short_description.txt +++ b/fastlane/metadata/android/de/short_description.txt @@ -1 +1 @@ -Galerie ohne Werbung. Ordnen, Bearbeiten und Wiederherstellen von Fotos & Videos +Bewahre deine Andenken ohne Unterbrechungen mit dieser Foto- und Videogalerie From 386c52a0ffc00aa5cb46135b6ebf5e96e8c44f58 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 13 Jan 2020 22:53:54 +0100 Subject: [PATCH 055/117] fix some empty portrait photos creating blank thumbnails --- .../com/simplemobiletools/gallery/pro/helpers/MediaFetcher.kt | 2 ++ 1 file changed, 2 insertions(+) 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 1513a771b..8b625e5e5 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 @@ -256,6 +256,8 @@ class MediaFetcher(val context: Context) { file = cover path = cover.absolutePath isPortrait = true + } else { + continue } } else { continue From 2b6b46de254fa16f5234a3ad19539459e5b551be Mon Sep 17 00:00:00 2001 From: fricyo <30796677+fricyo@users.noreply.github.com> Date: Tue, 14 Jan 2020 10:40:28 +0800 Subject: [PATCH 056/117] Update Translation --- app/src/main/res/values-zh-rTW/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 07dc7d737..f28bde093 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -319,7 +319,7 @@ 簡易相簿 Pro - 相片管理&編輯器 - Browse your memories without any interruptions with this photo and video gallery + 使用相片和影片相簿來毫無阻礙地瀏覽您的回憶。 簡易相簿Pro是一個高度自訂化的離線相簿。整理和編輯你的照片,從回收桶恢復刪除的檔案,保護和隱藏檔案,以及瀏覽大量不同的照片&影片格式,包含RAW、SVG…等更多。 From 778d1ce71a8a45c85c031fc02a64548016cbb7f5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 14 Jan 2020 10:35:20 +0100 Subject: [PATCH 057/117] updating the apps taiwanese fastlane short desc --- fastlane/metadata/android/zh-rTW/short_description.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/zh-rTW/short_description.txt b/fastlane/metadata/android/zh-rTW/short_description.txt index a2063faf6..a7ca00aab 100644 --- a/fastlane/metadata/android/zh-rTW/short_description.txt +++ b/fastlane/metadata/android/zh-rTW/short_description.txt @@ -1 +1 @@ -毫無阻礙地瀏覽您的回憶。 +使用相片和影片相簿來毫無阻礙地瀏覽您的回憶。 From e3b921db4d1ae0013472fb17f9e8d38bb77a1a5d Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 Jan 2020 20:44:31 +0100 Subject: [PATCH 058/117] adding some crashfixes related to extended details --- .../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 3c95c9927..7473326dd 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 @@ -40,7 +40,12 @@ abstract class ViewPagerFragment : Fragment() { } val path = "${file.parent.trimEnd('/')}/" - val exif = ExifInterface(medium.path) + val exif = try { + ExifInterface(medium.path) + } catch (e: Exception) { + return "" + } + val details = StringBuilder() val detailsFlag = context!!.config.extendedDetails if (detailsFlag and EXT_NAME != 0) { From 9a6d1535ba74602d259cb12ca3485b8ad475e4e6 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 Jan 2020 20:49:44 +0100 Subject: [PATCH 059/117] do not show the portrait stripe at fullscreen view --- .../simplemobiletools/gallery/pro/fragments/PhotoFragment.kt | 3 +++ 1 file changed, 3 insertions(+) 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 212f0da68..f5cf3f93e 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 @@ -490,6 +490,9 @@ class PhotoFragment : ViewPagerFragment() { mView.photo_portrait_stripe.scrollBy((coverIndex - fakeItemsCnt) * itemWidth, 0) adapter.setCurrentPhoto(coverIndex) mView.photo_portrait_stripe_wrapper.beVisible() + if (mIsFullscreen) { + mView.photo_portrait_stripe_wrapper.alpha = 0f + } } } } From 39ed8834791305163c7a87d102da8b85b688ab80 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 Jan 2020 21:07:30 +0100 Subject: [PATCH 060/117] updating Glide to 4.11.0 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e142ce31f..892a3a6c2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.21' + implementation 'com.simplemobiletools:commons:5.21.22' 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' @@ -84,7 +84,7 @@ dependencies { implementation 'com.github.tibbi:gestureviews:8dccb8450b' implementation 'com.github.tibbi:subsampling-scale-image-view:d404e74e39' - kapt 'com.github.bumptech.glide:compiler:4.10.0' + kapt 'com.github.bumptech.glide:compiler:4.11.0' kapt 'androidx.room:room-compiler:2.2.2' implementation 'androidx.room:room-runtime:2.2.2' From 8b02b93161ed0c839c69036bb91ae5de6a6ec5e1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 Jan 2020 21:43:39 +0100 Subject: [PATCH 061/117] create an own table DateTakens to be used at sorting --- .../gallery/pro/databases/GalleryDatabase.kt | 13 ++++++++++++- .../gallery/pro/interfaces/DateTakensDAO.kt | 8 ++++++++ .../gallery/pro/models/DateTaken.kt | 15 +++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDAO.kt create mode 100644 app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt index b5ac89748..c3b036669 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt @@ -6,14 +6,16 @@ import androidx.room.Room import androidx.room.RoomDatabase import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase +import com.simplemobiletools.gallery.pro.interfaces.DateTakensDAO import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao import com.simplemobiletools.gallery.pro.interfaces.MediumDao import com.simplemobiletools.gallery.pro.interfaces.WidgetsDao +import com.simplemobiletools.gallery.pro.models.DateTaken import com.simplemobiletools.gallery.pro.models.Directory import com.simplemobiletools.gallery.pro.models.Medium import com.simplemobiletools.gallery.pro.models.Widget -@Database(entities = [Directory::class, Medium::class, Widget::class], version = 6) +@Database(entities = [Directory::class, Medium::class, Widget::class, DateTaken::class], version = 7) abstract class GalleryDatabase : RoomDatabase() { abstract fun DirectoryDao(): DirectoryDao @@ -22,6 +24,8 @@ abstract class GalleryDatabase : RoomDatabase() { abstract fun WidgetsDao(): WidgetsDao + abstract fun DateTakensDAO(): DateTakensDAO + companion object { private var db: GalleryDatabase? = null @@ -33,6 +37,7 @@ abstract class GalleryDatabase : RoomDatabase() { .fallbackToDestructiveMigration() .addMigrations(MIGRATION_4_5) .addMigrations(MIGRATION_5_6) + .addMigrations(MIGRATION_6_7) .build() } } @@ -56,5 +61,11 @@ abstract class GalleryDatabase : RoomDatabase() { database.execSQL("CREATE UNIQUE INDEX `index_widgets_widget_id` ON `widgets` (`widget_id`)") } } + + private val MIGRATION_6_7 = object : Migration(6, 7) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `last_fixed` LONG NOT NULL)") + } + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDAO.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDAO.kt new file mode 100644 index 000000000..107801537 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDAO.kt @@ -0,0 +1,8 @@ +package com.simplemobiletools.gallery.pro.interfaces + +import androidx.room.Dao + +@Dao +interface DateTakensDAO { + +} diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt new file mode 100644 index 000000000..aeb584e54 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt @@ -0,0 +1,15 @@ +package com.simplemobiletools.gallery.pro.models + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey + +// Date Taken in the MediaStore is unreliable and hard to work with, keep the values in an own database +// It is used at sorting files by date taken, checking EXIF file by file would be way too slow +@Entity(tableName = "date_takens", indices = [Index(value = ["full_path"], unique = true)]) +data class DateTaken( + @PrimaryKey(autoGenerate = true) var id: Int?, + @ColumnInfo(name = "full_path") var fullPath: String, + @ColumnInfo(name = "parent_path") var parentPath: String, + @ColumnInfo(name = "last_fixed") var lastFixed: Long) From 2daf7e045f40c0eb24f81669a919f13a554cdd2a Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 Jan 2020 22:42:53 +0100 Subject: [PATCH 062/117] fix #1715, properly edit png files, do not convert them to jpgs --- .../simplemobiletools/gallery/pro/activities/NewEditActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt index e9dd88135..26ca74066 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt @@ -243,6 +243,7 @@ class NewEditActivity : SimpleActivity() { settingsList.getSettingsModel(UiConfigTheme::class.java).theme = R.style.Imgly_Theme_NoFullscreen settingsList.getSettingsModel(EditorSaveSettings::class.java) + .setExportFormat(EditorSaveSettings.FORMAT.AUTO) .setOutputFilePath("$filesDir/editor/$filename") .savePolicy = EditorSaveSettings.SavePolicy.RETURN_SOURCE_OR_CREATE_OUTPUT_IF_NECESSARY From aa0c21a2092ef5a94b84cdd622510e0523bdd046 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 Jan 2020 22:48:43 +0100 Subject: [PATCH 063/117] change last_fixed field in DateTakens to int --- .../simplemobiletools/gallery/pro/databases/GalleryDatabase.kt | 2 +- .../com/simplemobiletools/gallery/pro/models/DateTaken.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt index c3b036669..fa7c30bcd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt @@ -64,7 +64,7 @@ abstract class GalleryDatabase : RoomDatabase() { private val MIGRATION_6_7 = object : Migration(6, 7) { override fun migrate(database: SupportSQLiteDatabase) { - database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `last_fixed` LONG NOT NULL)") + database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `last_fixed` INTEGER NOT NULL)") } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt index aeb584e54..c5b8c5b3e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt @@ -12,4 +12,4 @@ data class DateTaken( @PrimaryKey(autoGenerate = true) var id: Int?, @ColumnInfo(name = "full_path") var fullPath: String, @ColumnInfo(name = "parent_path") var parentPath: String, - @ColumnInfo(name = "last_fixed") var lastFixed: Long) + @ColumnInfo(name = "last_fixed") var lastFixed: Int) From ca6b84be8121ab6759a75932b1a765e5f60f92b2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 Jan 2020 23:00:52 +0100 Subject: [PATCH 064/117] adding an index on DateTakens table --- .../simplemobiletools/gallery/pro/databases/GalleryDatabase.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt index fa7c30bcd..2d0398675 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt @@ -65,6 +65,7 @@ abstract class GalleryDatabase : RoomDatabase() { private val MIGRATION_6_7 = object : Migration(6, 7) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `last_fixed` INTEGER NOT NULL)") + database.execSQL("CREATE UNIQUE INDEX `index_date_takens_full_path` ON `date_takens` (`full_path`)") } } } From 402fccbc21e45ba6113f45994b6f9eea88d32858 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 Jan 2020 11:26:13 +0100 Subject: [PATCH 065/117] create an own table for storing favorite items too --- .../gallery/pro/databases/GalleryDatabase.kt | 17 ++++++++--------- .../gallery/pro/interfaces/FavoritesDAO.kt | 8 ++++++++ .../gallery/pro/models/Favorite.kt | 12 ++++++++++++ 3 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt create mode 100644 app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt index 2d0398675..d427a6142 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt @@ -6,16 +6,10 @@ import androidx.room.Room import androidx.room.RoomDatabase import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase -import com.simplemobiletools.gallery.pro.interfaces.DateTakensDAO -import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao -import com.simplemobiletools.gallery.pro.interfaces.MediumDao -import com.simplemobiletools.gallery.pro.interfaces.WidgetsDao -import com.simplemobiletools.gallery.pro.models.DateTaken -import com.simplemobiletools.gallery.pro.models.Directory -import com.simplemobiletools.gallery.pro.models.Medium -import com.simplemobiletools.gallery.pro.models.Widget +import com.simplemobiletools.gallery.pro.interfaces.* +import com.simplemobiletools.gallery.pro.models.* -@Database(entities = [Directory::class, Medium::class, Widget::class, DateTaken::class], version = 7) +@Database(entities = [Directory::class, Medium::class, Widget::class, DateTaken::class, Favorite::class], version = 7) abstract class GalleryDatabase : RoomDatabase() { abstract fun DirectoryDao(): DirectoryDao @@ -26,6 +20,8 @@ abstract class GalleryDatabase : RoomDatabase() { abstract fun DateTakensDAO(): DateTakensDAO + abstract fun FavoritesDAO(): FavoritesDAO + companion object { private var db: GalleryDatabase? = null @@ -66,6 +62,9 @@ abstract class GalleryDatabase : RoomDatabase() { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `last_fixed` INTEGER NOT NULL)") database.execSQL("CREATE UNIQUE INDEX `index_date_takens_full_path` ON `date_takens` (`full_path`)") + + database.execSQL("CREATE TABLE IF NOT EXISTS `favorites` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `parent_path` TEXT NOT NULL)") + database.execSQL("CREATE UNIQUE INDEX `index_favorites_full_path` ON `favorites` (`full_path`)") } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt new file mode 100644 index 000000000..1d80c3e80 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt @@ -0,0 +1,8 @@ +package com.simplemobiletools.gallery.pro.interfaces + +import androidx.room.Dao + +@Dao +interface FavoritesDAO { + +} diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt new file mode 100644 index 000000000..a6c3fe001 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt @@ -0,0 +1,12 @@ +package com.simplemobiletools.gallery.pro.models + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey + +@Entity(tableName = "favorites", indices = [Index(value = ["full_path"], unique = true)]) +data class Favorite( + @PrimaryKey(autoGenerate = true) var id: Int?, + @ColumnInfo(name = "full_path") var fullPath: String, + @ColumnInfo(name = "parent_path") var parentPath: String) From 8035d90e36aa45b00f4b02c5f529d6afdfe81d8b Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 Jan 2020 11:28:01 +0100 Subject: [PATCH 066/117] store the file name in the date takens and favorites tables too --- .../gallery/pro/databases/GalleryDatabase.kt | 4 ++-- .../com/simplemobiletools/gallery/pro/models/DateTaken.kt | 1 + .../com/simplemobiletools/gallery/pro/models/Favorite.kt | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt index d427a6142..5eb246150 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt @@ -60,10 +60,10 @@ abstract class GalleryDatabase : RoomDatabase() { private val MIGRATION_6_7 = object : Migration(6, 7) { override fun migrate(database: SupportSQLiteDatabase) { - database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `last_fixed` INTEGER NOT NULL)") + database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `file_name` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `last_fixed` INTEGER NOT NULL)") database.execSQL("CREATE UNIQUE INDEX `index_date_takens_full_path` ON `date_takens` (`full_path`)") - database.execSQL("CREATE TABLE IF NOT EXISTS `favorites` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `parent_path` TEXT NOT NULL)") + database.execSQL("CREATE TABLE IF NOT EXISTS `favorites` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `file_name` TEXT NOT NULL, `parent_path` TEXT NOT NULL)") database.execSQL("CREATE UNIQUE INDEX `index_favorites_full_path` ON `favorites` (`full_path`)") } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt index c5b8c5b3e..a5e7e5a22 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt @@ -11,5 +11,6 @@ import androidx.room.PrimaryKey data class DateTaken( @PrimaryKey(autoGenerate = true) var id: Int?, @ColumnInfo(name = "full_path") var fullPath: String, + @ColumnInfo(name = "file_name") var fileName: String, @ColumnInfo(name = "parent_path") var parentPath: String, @ColumnInfo(name = "last_fixed") var lastFixed: Int) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt index a6c3fe001..4bd0449ad 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt @@ -9,4 +9,5 @@ import androidx.room.PrimaryKey data class Favorite( @PrimaryKey(autoGenerate = true) var id: Int?, @ColumnInfo(name = "full_path") var fullPath: String, + @ColumnInfo(name = "file_name") var fileName: String, @ColumnInfo(name = "parent_path") var parentPath: String) From daf87be965ddba23d076a50bc5691a50c34aa12e Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 Jan 2020 18:58:55 +0100 Subject: [PATCH 067/117] adding 16:10 crop ratio, used mostly on tablets --- app/build.gradle | 2 +- .../gallery/pro/activities/NewEditActivity.kt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 892a3a6c2..b66d774a5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.22' + implementation 'com.simplemobiletools:commons:5.21.23' 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/NewEditActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt index 26ca74066..62215b769 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/NewEditActivity.kt @@ -201,6 +201,8 @@ class NewEditActivity : SimpleActivity() { add(CropAspectAsset("my_crop_4_5", 4, 5, false)) add(CropAspectAsset("my_crop_37_18", 37, 18, false)) add(CropAspectAsset("my_crop_18_37", 18, 37, false)) + add(CropAspectAsset("my_crop_16_10", 16, 10, false)) + add(CropAspectAsset("my_crop_10_16", 10, 16, false)) } settingsList.getSettingsModel(UiConfigAspect::class.java).aspectList.apply { @@ -208,6 +210,7 @@ class NewEditActivity : SimpleActivity() { add(ToggleAspectItem(CropAspectItem("my_crop_19_9"), CropAspectItem("my_crop_9_19"))) add(ToggleAspectItem(CropAspectItem("my_crop_5_4"), CropAspectItem("my_crop_4_5"))) add(ToggleAspectItem(CropAspectItem("my_crop_37_18"), CropAspectItem("my_crop_18_37"))) + add(ToggleAspectItem(CropAspectItem("my_crop_16_10"), CropAspectItem("my_crop_10_16"))) } settingsList.getSettingsModel(UiConfigFilter::class.java).setFilterList( From f1b380e6faf6ab6c8fa9c45e000dfe17ec6306cc Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 Jan 2020 20:57:12 +0100 Subject: [PATCH 068/117] rename file_name column to filename --- .../gallery/pro/databases/GalleryDatabase.kt | 4 ++-- .../com/simplemobiletools/gallery/pro/models/DateTaken.kt | 2 +- .../com/simplemobiletools/gallery/pro/models/Favorite.kt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt index 5eb246150..1a09b301f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt @@ -60,10 +60,10 @@ abstract class GalleryDatabase : RoomDatabase() { private val MIGRATION_6_7 = object : Migration(6, 7) { override fun migrate(database: SupportSQLiteDatabase) { - database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `file_name` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `last_fixed` INTEGER NOT NULL)") + database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `filename` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `last_fixed` INTEGER NOT NULL)") database.execSQL("CREATE UNIQUE INDEX `index_date_takens_full_path` ON `date_takens` (`full_path`)") - database.execSQL("CREATE TABLE IF NOT EXISTS `favorites` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `file_name` TEXT NOT NULL, `parent_path` TEXT NOT NULL)") + database.execSQL("CREATE TABLE IF NOT EXISTS `favorites` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `filename` TEXT NOT NULL, `parent_path` TEXT NOT NULL)") database.execSQL("CREATE UNIQUE INDEX `index_favorites_full_path` ON `favorites` (`full_path`)") } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt index a5e7e5a22..50c140994 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt @@ -11,6 +11,6 @@ import androidx.room.PrimaryKey data class DateTaken( @PrimaryKey(autoGenerate = true) var id: Int?, @ColumnInfo(name = "full_path") var fullPath: String, - @ColumnInfo(name = "file_name") var fileName: String, + @ColumnInfo(name = "filename") var filename: String, @ColumnInfo(name = "parent_path") var parentPath: String, @ColumnInfo(name = "last_fixed") var lastFixed: Int) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt index 4bd0449ad..8f37a9b41 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/Favorite.kt @@ -9,5 +9,5 @@ import androidx.room.PrimaryKey data class Favorite( @PrimaryKey(autoGenerate = true) var id: Int?, @ColumnInfo(name = "full_path") var fullPath: String, - @ColumnInfo(name = "file_name") var fileName: String, + @ColumnInfo(name = "filename") var filename: String, @ColumnInfo(name = "parent_path") var parentPath: String) From 631e9dea34968666604fe295997e32132ad2c682 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 Jan 2020 21:00:37 +0100 Subject: [PATCH 069/117] adding the actual DateTaken value column --- .../simplemobiletools/gallery/pro/databases/GalleryDatabase.kt | 2 +- .../com/simplemobiletools/gallery/pro/models/DateTaken.kt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt index 1a09b301f..9b01fe7cb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt @@ -60,7 +60,7 @@ abstract class GalleryDatabase : RoomDatabase() { private val MIGRATION_6_7 = object : Migration(6, 7) { override fun migrate(database: SupportSQLiteDatabase) { - database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `filename` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `last_fixed` INTEGER NOT NULL)") + database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `filename` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `date_taken` INTEGER NOT NULL, `last_fixed` INTEGER NOT NULL)") database.execSQL("CREATE UNIQUE INDEX `index_date_takens_full_path` ON `date_takens` (`full_path`)") database.execSQL("CREATE TABLE IF NOT EXISTS `favorites` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `filename` TEXT NOT NULL, `parent_path` TEXT NOT NULL)") diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt index 50c140994..293e2a619 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/models/DateTaken.kt @@ -13,4 +13,5 @@ data class DateTaken( @ColumnInfo(name = "full_path") var fullPath: String, @ColumnInfo(name = "filename") var filename: String, @ColumnInfo(name = "parent_path") var parentPath: String, + @ColumnInfo(name = "date_taken") var taken: Long, @ColumnInfo(name = "last_fixed") var lastFixed: Int) From 6131c7fb5d83bf81aeec09b27ec804efd39fc2fa Mon Sep 17 00:00:00 2001 From: solokot Date: Thu, 16 Jan 2020 23:38:45 +0300 Subject: [PATCH 070/117] Updated Russian language --- app/src/main/res/values-ru/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 30aa6d796..66cd4eeff 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -81,10 +81,10 @@ Поворот Путь Недопустимый путь изображения - Редактирование изображения не удалось + Редактирование изображения не выполнено Файл успешно отредактирован Редактировать изображение в: - Ни одного редактора изображений не найдено + Не найдено ни одного редактора изображений Неизвестное местоположение файла Не удалось перезаписать исходный файл Повернуть влево @@ -252,14 +252,14 @@ Цвет кисти Редактор Закрыть редактор? - Вы действительно хотите отказаться от изображения? + Вы действительно хотите отказаться от сделанных изменений изображения? Да Нет Отмена Принять Сохранить Экспорт изображения… - Экспорт изображения %s. + Экспорт изображения %s Г-поворот В-поворот Отмена @@ -319,7 +319,7 @@ Галерея Pro - управление изображениями - Browse your memories without any interruptions with this photo and video gallery + Просматривайте свои воспоминания без перерывов с этой фото- и видеогалереей Simple Gallery Pro — настраиваемая автономная галерея. Организуйте и редактируйте свои фотографии; восстанавливайте удалённые файлы при помощи функции "корзина"; защищайте и скрывайте личные файлы; просматривайте множество различных фото- и видеоформатов, включая RAW, SVG и многие другие. From 69c56e6983fa5fb6083300f3c27c2229524aa837 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 Jan 2020 22:06:59 +0100 Subject: [PATCH 071/117] updating the russian app short desc --- 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 8b0a76ce3..d2b3cb34d 100644 --- a/fastlane/metadata/android/ru/short_description.txt +++ b/fastlane/metadata/android/ru/short_description.txt @@ -1 +1 @@ -Просматривайте свои воспоминания без перерывов. +Просматривайте свои воспоминания без перерывов с этой фото- и видеогалереей From 659b808a42ba7b1042a0e7d784e7bad9ff87b20a Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 Jan 2020 23:16:12 +0100 Subject: [PATCH 072/117] update commons to 5.21.24 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index b66d774a5..a46f4b768 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.23' + implementation 'com.simplemobiletools:commons:5.21.24' 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 55f55624c7f7bc82486a908f322be00dd8b7490d Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 Jan 2020 23:29:11 +0100 Subject: [PATCH 073/117] moving Nepali strings from np to ne --- app/src/main/res/{values-np => values-ne}/strings.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app/src/main/res/{values-np => values-ne}/strings.xml (100%) diff --git a/app/src/main/res/values-np/strings.xml b/app/src/main/res/values-ne/strings.xml similarity index 100% rename from app/src/main/res/values-np/strings.xml rename to app/src/main/res/values-ne/strings.xml From 4c080a51199773695b66d1daf0ae7f29eaa4edaf Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 Jan 2020 23:29:18 +0100 Subject: [PATCH 074/117] update version to 6.11.7 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a46f4b768..c72469756 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 286 - versionName "6.11.6" + versionCode 287 + versionName "6.11.7" multiDexEnabled true setProperty("archivesBaseName", "gallery") vectorDrawables.useSupportLibrary = true From 38c01fd6c061835f82a767fb4ee2683fe9555312 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 16 Jan 2020 23:29:24 +0100 Subject: [PATCH 075/117] updating changelog --- CHANGELOG.md | 10 ++++++++++ fastlane/metadata/android/en-US/changelogs/287.txt | 6 ++++++ 2 files changed, 16 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/287.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 70abbf56b..b2a0bb855 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,16 @@ Changelog ========== +Version 6.11.7 *(2020-01-16)* +---------------------------- + + * Do not convert every edited file into a JPG, keep PNGs intact + * Fixed a glitch with empty portrait photos being shown as grey thumbnails + * Show a FAQ/settings prompt once at pressing Rate Us in the About section + * Added a 16:10 editor crop aspect ratio, used mostly on tablets + * Do some preparations for better handling Date Taken values and Favorites + * Other stability and translation improvements + Version 6.11.6 *(2020-01-11)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/287.txt b/fastlane/metadata/android/en-US/changelogs/287.txt new file mode 100644 index 000000000..914f7ba83 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/287.txt @@ -0,0 +1,6 @@ + * Do not convert every edited file into a JPG, keep PNGs intact + * Fixed a glitch with empty portrait photos being shown as grey thumbnails + * Show a FAQ/settings prompt once at pressing Rate Us in the About section + * Added a 16:10 editor crop aspect ratio, used mostly on tablets + * Do some preparations for better handling Date Taken values and Favorites + * Other stability and translation improvements From eab0af408de805eed27f0613d62f10e4b7db3a78 Mon Sep 17 00:00:00 2001 From: Tibor Kaputa Date: Thu, 16 Jan 2020 23:38:38 +0100 Subject: [PATCH 076/117] Update README.md --- README.md | 118 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 96 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 75fbfa410..485b4d2da 100644 --- a/README.md +++ b/README.md @@ -2,33 +2,107 @@ Logo -A gallery for viewing photos and videos. +Simple Gallery Pro is a highly customizable lightweight gallery loved by millions of people for its great user experience. Organize and edit your photos, recover deleted files with the recycle bin, protect & hide files and easily view a huge variety of different photo and video formats including RAW, SVG, GIF, panoramic and much more. -A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. +------------------------------------------------- +SIMPLE GALLERY PRO – FEATURES +------------------------------------------------- -It is open source, contains no ads or unnecessary permissions. +• A beautiful modern gallery with no ads or popups -Let's list some of its features worth mentioning: -1. Search -2. Slideshow -3. Notch support -4. Pinning folders to the top -5. Filtering media files by type -6. Recycle bin for easy file recovery -7. Fullscreen view orientation locking -8. Marking favorite files for easy access -9. Quick fullscreen media closing with down gesture -10. An editor for modifying images and applying filters -11. Password protection for protecting hidden items or the whole app -12. Changing the thumbnail column count with gestures or menu buttons -13. Customizable bottom actions at the fullscreen view for quick access -14. Showing extended details over fullscreen media with desired file properties -15. Several different ways of sorting or grouping items, both ascending and descending -16. Hiding folders (affects other apps too), excluding folders (affects only Simple Gallery) +• Photo editor – crop, rotate, resize, draw, filters & more -The fingerprint permission is needed for locking either hidden item visibility, the whole app, or protecting files from being deleted. +• No internet access needed, giving you more privacy, security and stability -This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com +• No unnecessary permissions required + +• Quickly search images, videos & other files + +• Open and view many different photo and video types (RAW, SVG, panoramic, GIF etc) + +• A variety of intuitive gestures to easily edit, rotate & organize files + +• Lots of ways to filter, group and sort files + +• Customize the appearance of Simple Gallery Pro + +• Available in over 30 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 with many options + +• View detailed information of your files (resolution, EXIF values etc) + +• Zoom high quality photos, videos and GIFs easily with gestures + +• Easily force portrait or landscape orientation for easy video viewing + +• Quick file share to social media, email or anywhere else + +• Print images or set them as wallpaper with a few clicks + +• Create home screen shortcuts or widgets to easily access any file or folder + +• Show the image location on a map, if available + +• Obvious presence of standard operations like rename, copy/move, un/hide, delete + +• Rewind videos with horizontal gestures + +• Change photo and video brightness, or volume with vertical gestures + +• Reorder, lock folders or change cover thumbnails anytime + +• Set any image as wallpaper without hassle + +… and much much more! + +ADVANCED PHOTO 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! + + +SUPPORT FOR MANY FILE TYPES +Simple Gallery Pro supports a huge range of different file types including JPEG, PNG, MP4, MKV, RAW, SVG, GIF Panoramic photos, Panoramic videos and many more. + + +HIGHLY CUSTOMIZABLE FILE 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 has this kind of flexibility! Thanks to being open source, we’re also available in over 30 languages! + + +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. + + +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. + + +Check out the full suite of Simple Tools here: +https://www.simplemobiletools.com + + +Standalone website of Simple Gallery Pro: +https://www.simplemobiletools.com/gallery + + +Facebook: +https://www.facebook.com/simplemobiletools + + +Reddit: +https://www.reddit.com/r/SimpleMobileTools + + +Don't forget that if you uninstall any paid app within 2 hours, you will automatically be refunded. If you want a refund anytime later, just contact us at hello@simplemobiletools.com and you will get it. That makes it easy to try it out :) Get it on Google Play Get it on F-Droid From 90b4ab470dabf87a1f066b1c1b6fb1b484a50574 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 18 Jan 2020 19:06:08 +0100 Subject: [PATCH 077/117] limit the file loading settings item label length to avoid some glitches --- app/src/main/res/layout/activity_settings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index e99e5adc5..b7d436f28 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -95,6 +95,8 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toStartOf="@+id/settings_file_loading_priority" + android:ellipsize="end" + android:lines="1" android:paddingLeft="@dimen/medium_margin" android:paddingRight="@dimen/medium_margin" android:text="@string/file_loading_priority"/> From 89790ebdfe340b905b644508a5264a043c122d32 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 18 Jan 2020 23:27:40 +0100 Subject: [PATCH 078/117] reverting Glide back to 4.10.0 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c72469756..15c8c810f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.24' + implementation 'com.simplemobiletools:commons:5.21.25' 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' @@ -84,7 +84,7 @@ dependencies { implementation 'com.github.tibbi:gestureviews:8dccb8450b' implementation 'com.github.tibbi:subsampling-scale-image-view:d404e74e39' - kapt 'com.github.bumptech.glide:compiler:4.11.0' + kapt 'com.github.bumptech.glide:compiler:4.10.0' kapt 'androidx.room:room-compiler:2.2.2' implementation 'androidx.room:room-runtime:2.2.2' From 6b95c585592a485878993e5d4f230c0736c7fbfd Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 18 Jan 2020 23:29:03 +0100 Subject: [PATCH 079/117] try flipping some migration lines to avoid working on nonexistent tables --- .../gallery/pro/databases/GalleryDatabase.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt index 9b01fe7cb..e190b37d7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/databases/GalleryDatabase.kt @@ -61,9 +61,9 @@ abstract class GalleryDatabase : RoomDatabase() { private val MIGRATION_6_7 = object : Migration(6, 7) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `filename` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `date_taken` INTEGER NOT NULL, `last_fixed` INTEGER NOT NULL)") - database.execSQL("CREATE UNIQUE INDEX `index_date_takens_full_path` ON `date_takens` (`full_path`)") - database.execSQL("CREATE TABLE IF NOT EXISTS `favorites` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `filename` TEXT NOT NULL, `parent_path` TEXT NOT NULL)") + + database.execSQL("CREATE UNIQUE INDEX `index_date_takens_full_path` ON `date_takens` (`full_path`)") database.execSQL("CREATE UNIQUE INDEX `index_favorites_full_path` ON `favorites` (`full_path`)") } } From e93eade241124f797c4c43b7ee55896e0ac89fa1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 19 Jan 2020 10:51:36 +0100 Subject: [PATCH 080/117] update version to 6.11.8 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 15c8c810f..9b9269853 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 287 - versionName "6.11.7" + versionCode 288 + versionName "6.11.8" multiDexEnabled true setProperty("archivesBaseName", "gallery") vectorDrawables.useSupportLibrary = true From 4e2380f13af0894dcc343162712ec184a4534a61 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 19 Jan 2020 10:51:44 +0100 Subject: [PATCH 081/117] updating changelog --- CHANGELOG.md | 5 +++++ fastlane/metadata/android/en-US/changelogs/288.txt | 1 + 2 files changed, 6 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/288.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index b2a0bb855..a76981def 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ Changelog ========== +Version 6.11.8 *(2020-01-19)* +---------------------------- + + * Reverted Glide to fix some crashes + Version 6.11.7 *(2020-01-16)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/288.txt b/fastlane/metadata/android/en-US/changelogs/288.txt new file mode 100644 index 000000000..9631ebb6a --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/288.txt @@ -0,0 +1 @@ + * Reverted Glide to fix some crashes From 56d721b68aa0c61c9e373ee9133eed16d20e860a Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 24 Jan 2020 22:47:42 +0100 Subject: [PATCH 082/117] moving the isFavorite function at FavoritesDAO --- .../gallery/pro/activities/ViewPagerActivity.kt | 2 +- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 2 +- .../simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt | 4 +++- .../com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt | 3 --- 4 files changed, 5 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 0dc77ed6c..1e456721b 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 @@ -375,7 +375,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View else -> TYPE_IMAGES } - val isFavorite = mediumDao.isFavorite(mPath) + val isFavorite = galleryDB.FavoritesDAO().isFavorite(mPath) val duration = if (type == TYPE_VIDEOS) mPath.getVideoDuration() else 0 val ts = System.currentTimeMillis() val medium = Medium(null, mPath.getFilenameFromPath(), mPath, mPath.getParentPath(), ts, ts, File(mPath).length(), type, duration, isFavorite, 0) 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 552b47339..b21e4a390 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 @@ -827,7 +827,7 @@ fun Context.addPathToDB(path: String) { try { val mediumDao = galleryDB.MediumDao() - val isFavorite = mediumDao.isFavorite(path) + val isFavorite = galleryDB.FavoritesDAO().isFavorite(path) val videoDuration = if (type == TYPE_VIDEOS) path.getVideoDuration() else 0 val medium = Medium(null, path.getFilenameFromPath(), path, path.getParentPath(), System.currentTimeMillis(), System.currentTimeMillis(), File(path).length(), type, videoDuration, isFavorite, 0L) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt index 1d80c3e80..d1fa0856e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt @@ -1,8 +1,10 @@ package com.simplemobiletools.gallery.pro.interfaces import androidx.room.Dao +import androidx.room.Query @Dao interface FavoritesDAO { - + @Query("SELECT id FROM favorites WHERE full_path = :path COLLATE NOCASE") + fun isFavorite(path: String): Boolean } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt index 490bd62f4..1ce2bb641 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt @@ -21,9 +21,6 @@ interface MediumDao { @Query("SELECT filename, full_path, parent_path, last_modified, date_taken, size, type, video_duration, is_favorite, deleted_ts FROM media WHERE deleted_ts != 0") fun getDeletedMedia(): List - @Query("SELECT is_favorite FROM media WHERE full_path = :path COLLATE NOCASE") - fun isFavorite(path: String): Boolean - @Insert(onConflict = REPLACE) fun insert(medium: Medium) From b867d2a2eb872d9dfef857eba97a9f37758e950e Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 24 Jan 2020 23:10:40 +0100 Subject: [PATCH 083/117] at deleting a file path from db, delete it from favorites too --- .../simplemobiletools/gallery/pro/extensions/Context.kt | 7 ++++++- .../gallery/pro/interfaces/FavoritesDAO.kt | 3 +++ 2 files changed, 9 insertions(+), 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 b21e4a390..5ead9ba4e 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 @@ -736,8 +736,13 @@ fun Context.getUpdatedDeletedMedia(mediumDao: MediumDao): ArrayList { } fun Context.deleteDBPath(mediumDao: MediumDao, path: String) { + deleteMediumWithPath(mediumDao, path.replaceFirst(recycleBinPath, RECYCLE_BIN)) +} + +fun Context.deleteMediumWithPath(mediumDao: MediumDao, path: String) { try { - mediumDao.deleteMediumPath(path.replaceFirst(recycleBinPath, RECYCLE_BIN)) + mediumDao.deleteMediumPath(path) + galleryDB.FavoritesDAO().deleteFavoritePath(path) } catch (ignored: Exception) { } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt index d1fa0856e..6daa09356 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt @@ -7,4 +7,7 @@ import androidx.room.Query interface FavoritesDAO { @Query("SELECT id FROM favorites WHERE full_path = :path COLLATE NOCASE") fun isFavorite(path: String): Boolean + + @Query("DELETE FROM favorites WHERE full_path = :path COLLATE NOCASE") + fun deleteFavoritePath(path: String) } From fb0badeca5288d4a7d5583c43e68ef2b13e9354c Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 24 Jan 2020 23:29:03 +0100 Subject: [PATCH 084/117] adding a few more favorites related queries --- .../gallery/pro/extensions/Context.kt | 7 +++---- .../gallery/pro/interfaces/FavoritesDAO.kt | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) 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 5ead9ba4e..b013354bf 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 @@ -28,10 +28,7 @@ import com.simplemobiletools.gallery.pro.helpers.* import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao import com.simplemobiletools.gallery.pro.interfaces.MediumDao import com.simplemobiletools.gallery.pro.interfaces.WidgetsDao -import com.simplemobiletools.gallery.pro.models.AlbumCover -import com.simplemobiletools.gallery.pro.models.Directory -import com.simplemobiletools.gallery.pro.models.Medium -import com.simplemobiletools.gallery.pro.models.ThumbnailItem +import com.simplemobiletools.gallery.pro.models.* import com.simplemobiletools.gallery.pro.svg.SvgSoftwareLayerSetter import com.simplemobiletools.gallery.pro.views.MySquareImageView import pl.droidsonroids.gif.GifDrawable @@ -721,6 +718,8 @@ fun Context.getFavoritePaths(): ArrayList { } } +fun Context.getFavoriteFromPath(path: String) = Favorite(null, path, path.getFilenameFromPath(), path.getParentPath()) + // remove the "recycle_bin" from the file path prefix, replace it with real bin path /data/user... fun Context.getUpdatedDeletedMedia(mediumDao: MediumDao): ArrayList { val media = try { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt index 6daa09356..f3b97e6ad 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt @@ -1,10 +1,25 @@ package com.simplemobiletools.gallery.pro.interfaces import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy import androidx.room.Query +import com.simplemobiletools.gallery.pro.models.Favorite @Dao interface FavoritesDAO { + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insert(favorite: Favorite) + + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insertAll(favorites: List) + + @Query("SELECT full_path FROM favorites") + fun getFavoriteRawPaths(): List + + @Query("SELECT favorites.full_path FROM favorites INNER JOIN media ON favorites.full_path = media.full_path WHERE media.deleted_ts = 0") + fun getValidFavoritePaths(): List + @Query("SELECT id FROM favorites WHERE full_path = :path COLLATE NOCASE") fun isFavorite(path: String): Boolean From a7b7881d732caab95874acb4f5864b68ca924143 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 Jan 2020 09:34:33 +0100 Subject: [PATCH 085/117] moving the favorite toggling function into FavoritesDao --- .../gallery/pro/activities/ViewPagerActivity.kt | 2 +- .../gallery/pro/adapters/MediaAdapter.kt | 3 +-- .../simplemobiletools/gallery/pro/extensions/Context.kt | 9 +++++++++ .../gallery/pro/interfaces/MediumDao.kt | 3 --- 4 files changed, 11 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 1e456721b..1befd61d9 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 @@ -864,7 +864,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View val medium = getCurrentMedium() ?: return medium.isFavorite = !medium.isFavorite ensureBackgroundThread { - galleryDB.MediumDao().updateFavorite(medium.path, medium.isFavorite) + updateFavorite(medium.path, medium.isFavorite) if (medium.isFavorite) { mFavoritePaths.add(medium.path) } else { 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 298a90def..5dcf75275 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 @@ -266,10 +266,9 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList { fun Context.getFavoriteFromPath(path: String) = Favorite(null, path, path.getFilenameFromPath(), path.getParentPath()) +fun Context.updateFavorite(path: String, isFavorite: Boolean) { + val favoritesDAO = galleryDB.FavoritesDAO() + if (isFavorite) { + favoritesDAO.insert(getFavoriteFromPath(path)) + } else { + favoritesDAO.deleteFavoritePath(path) + } +} + // remove the "recycle_bin" from the file path prefix, replace it with real bin path /data/user... fun Context.getUpdatedDeletedMedia(mediumDao: MediumDao): ArrayList { val media = try { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt index 1ce2bb641..3f89a2f5d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt @@ -39,9 +39,6 @@ interface MediumDao { @Query("UPDATE OR REPLACE media SET filename = :newFilename, full_path = :newFullPath, parent_path = :newParentPath WHERE full_path = :oldPath COLLATE NOCASE") fun updateMedium(oldPath: String, newParentPath: String, newFilename: String, newFullPath: String) - @Query("UPDATE media SET is_favorite = :isFavorite WHERE full_path = :path COLLATE NOCASE") - fun updateFavorite(path: String, isFavorite: Boolean) - @Query("UPDATE OR REPLACE media SET full_path = :newPath, deleted_ts = :deletedTS WHERE full_path = :oldPath COLLATE NOCASE") fun updateDeleted(newPath: String, deletedTS: Long, oldPath: String) From 61c4db155d74b3ec913735577d5d30cb430f1784 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 Jan 2020 09:39:56 +0100 Subject: [PATCH 086/117] removing the favorite paths getting function from MediumDao --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 2 +- .../com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) 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 c597a6f0d..cd098f6cd 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 @@ -712,7 +712,7 @@ fun Context.getOTGFolderChildrenNames(path: String) = getOTGFolderChildren(path) fun Context.getFavoritePaths(): ArrayList { return try { - galleryDB.MediumDao().getFavoritePaths() as ArrayList + galleryDB.FavoritesDAO().getValidFavoritePaths() as ArrayList } catch (e: Exception) { ArrayList() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt index 3f89a2f5d..1bf91b543 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt @@ -15,9 +15,6 @@ interface MediumDao { @Query("SELECT filename, full_path, parent_path, last_modified, date_taken, size, type, video_duration, is_favorite, deleted_ts FROM media WHERE deleted_ts = 0 AND is_favorite = 1") fun getFavorites(): List - @Query("SELECT full_path FROM media WHERE deleted_ts = 0 AND is_favorite = 1") - fun getFavoritePaths(): List - @Query("SELECT filename, full_path, parent_path, last_modified, date_taken, size, type, video_duration, is_favorite, deleted_ts FROM media WHERE deleted_ts != 0") fun getDeletedMedia(): List From b9369139f190f15ae8121cefd32da039f11ecc16 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 Jan 2020 09:51:28 +0100 Subject: [PATCH 087/117] renaming some DAO to Dao --- .../gallery/pro/activities/ViewPagerActivity.kt | 2 +- .../gallery/pro/adapters/DirectoryAdapter.kt | 2 +- .../gallery/pro/databases/GalleryDatabase.kt | 4 ++-- .../gallery/pro/extensions/Context.kt | 14 ++++++++------ .../{DateTakensDAO.kt => DateTakensDao.kt} | 2 +- .../{FavoritesDAO.kt => FavoritesDao.kt} | 5 ++++- .../gallery/pro/interfaces/MediumDao.kt | 3 --- 7 files changed, 17 insertions(+), 15 deletions(-) rename app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/{DateTakensDAO.kt => DateTakensDao.kt} (77%) rename app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/{FavoritesDAO.kt => FavoritesDao.kt} (91%) 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 1befd61d9..4ffb2d73d 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 @@ -375,7 +375,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View else -> TYPE_IMAGES } - val isFavorite = galleryDB.FavoritesDAO().isFavorite(mPath) + val isFavorite = favoritesDB.isFavorite(mPath) val duration = if (type == TYPE_VIDEOS) mPath.getVideoDuration() else 0 val ts = System.currentTimeMillis() val medium = Medium(null, mPath.getFilenameFromPath(), mPath, mPath.getParentPath(), ts, ts, File(mPath).length(), type, duration, isFavorite, 0) 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 abc71941e..a70362d67 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 @@ -555,7 +555,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList { return try { - galleryDB.FavoritesDAO().getValidFavoritePaths() as ArrayList + favoritesDB.getValidFavoritePaths() as ArrayList } catch (e: Exception) { ArrayList() } @@ -721,11 +724,10 @@ fun Context.getFavoritePaths(): ArrayList { fun Context.getFavoriteFromPath(path: String) = Favorite(null, path, path.getFilenameFromPath(), path.getParentPath()) fun Context.updateFavorite(path: String, isFavorite: Boolean) { - val favoritesDAO = galleryDB.FavoritesDAO() if (isFavorite) { - favoritesDAO.insert(getFavoriteFromPath(path)) + favoritesDB.insert(getFavoriteFromPath(path)) } else { - favoritesDAO.deleteFavoritePath(path) + favoritesDB.deleteFavoritePath(path) } } @@ -750,7 +752,7 @@ fun Context.deleteDBPath(mediumDao: MediumDao, path: String) { fun Context.deleteMediumWithPath(mediumDao: MediumDao, path: String) { try { mediumDao.deleteMediumPath(path) - galleryDB.FavoritesDAO().deleteFavoritePath(path) + favoritesDB.deleteFavoritePath(path) } catch (ignored: Exception) { } } @@ -840,7 +842,7 @@ fun Context.addPathToDB(path: String) { try { val mediumDao = galleryDB.MediumDao() - val isFavorite = galleryDB.FavoritesDAO().isFavorite(path) + val isFavorite = favoritesDB.isFavorite(path) val videoDuration = if (type == TYPE_VIDEOS) path.getVideoDuration() else 0 val medium = Medium(null, path.getFilenameFromPath(), path, path.getParentPath(), System.currentTimeMillis(), System.currentTimeMillis(), File(path).length(), type, videoDuration, isFavorite, 0L) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDAO.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDao.kt similarity index 77% rename from app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDAO.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDao.kt index 107801537..0d3380408 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDAO.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDao.kt @@ -3,6 +3,6 @@ package com.simplemobiletools.gallery.pro.interfaces import androidx.room.Dao @Dao -interface DateTakensDAO { +interface DateTakensDao { } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt similarity index 91% rename from app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt rename to app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt index f3b97e6ad..d835d9f65 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDAO.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt @@ -7,7 +7,7 @@ import androidx.room.Query import com.simplemobiletools.gallery.pro.models.Favorite @Dao -interface FavoritesDAO { +interface FavoritesDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(favorite: Favorite) @@ -25,4 +25,7 @@ interface FavoritesDAO { @Query("DELETE FROM favorites WHERE full_path = :path COLLATE NOCASE") fun deleteFavoritePath(path: String) + + @Query("DELETE FROM favorites") + fun clearFavorites() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt index 1bf91b543..ec0a8befc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt @@ -44,7 +44,4 @@ interface MediumDao { @Query("DELETE FROM media WHERE deleted_ts != 0") fun clearRecycleBin() - - @Query("UPDATE media SET is_favorite = 0") - fun clearFavorites() } From 3ca8e685b81a21efb3f3c0d11bec1060fc1682e8 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 Jan 2020 10:56:08 +0100 Subject: [PATCH 088/117] shortening some code related to getting DAOs --- .../gallery/pro/activities/MainActivity.kt | 36 +++++-------- .../gallery/pro/activities/MediaActivity.kt | 26 ++++----- .../gallery/pro/activities/SearchActivity.kt | 4 +- .../pro/activities/SettingsActivity.kt | 7 +-- .../pro/activities/ViewPagerActivity.kt | 5 +- .../pro/activities/WidgetConfigureActivity.kt | 2 +- .../gallery/pro/adapters/DirectoryAdapter.kt | 2 +- .../gallery/pro/extensions/Activity.kt | 22 ++++---- .../gallery/pro/extensions/Context.kt | 53 +++++++++---------- .../gallery/pro/helpers/MediaFetcher.kt | 2 +- .../gallery/pro/helpers/MyWidgetProvider.kt | 4 +- 11 files changed, 69 insertions(+), 94 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 1af9c13d0..7cad1ca04 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 @@ -36,9 +36,7 @@ import com.simplemobiletools.gallery.pro.dialogs.ChangeViewTypeDialog import com.simplemobiletools.gallery.pro.dialogs.FilterMediaDialog import com.simplemobiletools.gallery.pro.extensions.* import com.simplemobiletools.gallery.pro.helpers.* -import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao import com.simplemobiletools.gallery.pro.interfaces.DirectoryOperationsListener -import com.simplemobiletools.gallery.pro.interfaces.MediumDao import com.simplemobiletools.gallery.pro.jobs.NewPhotoFetcher import com.simplemobiletools.gallery.pro.models.Directory import com.simplemobiletools.gallery.pro.models.Medium @@ -85,17 +83,11 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { private var mStoredTextColor = 0 private var mStoredPrimaryColor = 0 - private lateinit var mMediumDao: MediumDao - private lateinit var mDirectoryDao: DirectoryDao - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) appLaunched(BuildConfig.APPLICATION_ID) - mMediumDao = galleryDB.MediumDao() - mDirectoryDao = galleryDB.DirectoryDao() - if (savedInstanceState == null) { config.temporarilyShowHidden = false config.tempSkipDeleteConfirmation = false @@ -464,7 +456,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { val getImagesOnly = mIsPickImageIntent || mIsGetImageContentIntent val getVideosOnly = mIsPickVideoIntent || mIsGetVideoContentIntent - getCachedDirectories(getVideosOnly, getImagesOnly, mDirectoryDao) { + getCachedDirectories(getVideosOnly, getImagesOnly) { gotDirectories(addTempFolderIfNeeded(it)) } } @@ -569,7 +561,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { val pathsToDelete = ArrayList() itemsToDelete.mapTo(pathsToDelete) { it.path } - movePathsInRecycleBin(pathsToDelete, mMediumDao) { + movePathsInRecycleBin(pathsToDelete) { if (it) { deleteFilteredFileDirItems(itemsToDelete, folders) } else { @@ -590,7 +582,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { ensureBackgroundThread { folders.filter { !getDoesFilePathExist(it.absolutePath, OTGPath) }.forEach { - mDirectoryDao.deleteDirPath(it.absolutePath) + directoryDao.deleteDirPath(it.absolutePath) } if (config.deleteEmptyFolders) { @@ -936,16 +928,16 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { setupAdapter(dirs) // update directories and media files in the local db, delete invalid items - updateDBDirectory(directory, mDirectoryDao) + updateDBDirectory(directory) if (!directory.isRecycleBin()) { - mMediumDao.insertAll(curMedia) + mediaDB.insertAll(curMedia) } - getCachedMedia(directory.path, getVideosOnly, getImagesOnly, mMediumDao) { + getCachedMedia(directory.path, getVideosOnly, getImagesOnly) { it.forEach { if (!curMedia.contains(it)) { val path = (it as? Medium)?.path if (path != null) { - deleteDBPath(mMediumDao, path) + deleteDBPath(path) } } } @@ -955,7 +947,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { if (dirPathsToRemove.isNotEmpty()) { val dirsToRemove = dirs.filter { dirPathsToRemove.contains(it.path) } dirsToRemove.forEach { - mDirectoryDao.deleteDirPath(it.path) + directoryDao.deleteDirPath(it.path) } dirs.removeAll(dirsToRemove) setupAdapter(dirs) @@ -999,9 +991,9 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { dirs.add(newDir) setupAdapter(dirs) try { - mDirectoryDao.insert(newDir) + directoryDao.insert(newDir) if (folder != RECYCLE_BIN) { - mMediumDao.insertAll(newMedia) + mediaDB.insertAll(newMedia) } } catch (ignored: Exception) { } @@ -1156,7 +1148,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { if (config.useRecycleBin) { try { val binFolder = dirs.firstOrNull { it.path == RECYCLE_BIN } - if (binFolder != null && mMediumDao.getDeletedMedia().isEmpty()) { + if (binFolder != null && mediaDB.getDeletedMedia().isEmpty()) { invalidDirs.add(binFolder) } } catch (ignored: Exception) { @@ -1168,7 +1160,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { setupAdapter(dirs) invalidDirs.forEach { try { - mDirectoryDao.deleteDirPath(it.path) + directoryDao.deleteDirPath(it.path) } catch (ignored: Exception) { } } @@ -1218,7 +1210,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { Handler().postDelayed({ ensureBackgroundThread { try { - mMediumDao.deleteOldRecycleBinItems(System.currentTimeMillis() - MONTH_MILLISECONDS) + mediaDB.deleteOldRecycleBinItems(System.currentTimeMillis() - MONTH_MILLISECONDS) } catch (e: Exception) { } } @@ -1283,7 +1275,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { override fun updateDirectories(directories: ArrayList) { ensureBackgroundThread { - storeDirectoryItems(directories, mDirectoryDao) + storeDirectoryItems(directories) removeInvalidDBDirectories() } } 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 6aa7d5fcd..7f05afad3 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 @@ -39,9 +39,7 @@ import com.simplemobiletools.gallery.pro.databases.GalleryDatabase import com.simplemobiletools.gallery.pro.dialogs.* import com.simplemobiletools.gallery.pro.extensions.* import com.simplemobiletools.gallery.pro.helpers.* -import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao import com.simplemobiletools.gallery.pro.interfaces.MediaOperationsListener -import com.simplemobiletools.gallery.pro.interfaces.MediumDao import com.simplemobiletools.gallery.pro.models.Medium import com.simplemobiletools.gallery.pro.models.ThumbnailItem import com.simplemobiletools.gallery.pro.models.ThumbnailSection @@ -78,9 +76,6 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { private var mStoredTextColor = 0 private var mStoredPrimaryColor = 0 - private lateinit var mMediumDao: MediumDao - private lateinit var mDirectoryDao: DirectoryDao - companion object { var mMedia = ArrayList() } @@ -89,9 +84,6 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { super.onCreate(savedInstanceState) setContentView(R.layout.activity_media) - mMediumDao = galleryDB.MediumDao() - mDirectoryDao = galleryDB.DirectoryDao() - intent.apply { mIsGetImageIntent = getBooleanExtra(GET_IMAGE_INTENT, false) mIsGetVideoIntent = getBooleanExtra(GET_VIDEO_INTENT, false) @@ -495,9 +487,9 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { private fun restoreAllFiles() { val paths = mMedia.filter { it is Medium }.map { (it as Medium).path } as ArrayList - restoreRecycleBinPaths(paths, mMediumDao) { + restoreRecycleBinPaths(paths) { ensureBackgroundThread { - mDirectoryDao.deleteDirPath(RECYCLE_BIN) + directoryDao.deleteDirPath(RECYCLE_BIN) } finish() } @@ -584,7 +576,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { if (mLoadedInitialPhotos) { startAsyncTask() } else { - getCachedMedia(mPath, mIsGetVideoIntent, mIsGetImageIntent, mMediumDao) { + getCachedMedia(mPath, mIsGetVideoIntent, mIsGetImageIntent) { if (it.isEmpty()) { runOnUiThread { media_refresh_layout.isRefreshing = true @@ -608,7 +600,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { try { gotMedia(newMedia, false) oldMedia.filter { !newMedia.contains(it) }.mapNotNull { it as? Medium }.filter { !getDoesFilePathExist(it.path) }.forEach { - mMediumDao.deleteMediumPath(it.path) + mediaDB.deleteMediumPath(it.path) } } catch (e: Exception) { } @@ -627,7 +619,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { if (mPath == FAVORITES) { ensureBackgroundThread { - mDirectoryDao.deleteDirPath(FAVORITES) + directoryDao.deleteDirPath(FAVORITES) } } @@ -641,7 +633,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { private fun deleteDBDirectory() { ensureBackgroundThread { try { - mDirectoryDao.deleteDirPath(mPath) + directoryDao.deleteDirPath(mPath) } catch (ignored: Exception) { } } @@ -897,7 +889,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { if (!isFromCache) { val mediaToInsert = (mMedia).filter { it is Medium && it.deletedTS == 0L }.map { it as Medium } try { - mMediumDao.insertAll(mediaToInsert) + mediaDB.insertAll(mediaToInsert) } catch (e: Exception) { } } @@ -913,7 +905,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { val movingItems = resources.getQuantityString(R.plurals.moving_items_into_bin, filtered.size, filtered.size) toast(movingItems) - movePathsInRecycleBin(filtered.map { it.path } as ArrayList, mMediumDao) { + movePathsInRecycleBin(filtered.map { it.path } as ArrayList) { if (it) { deleteFilteredFiles(filtered) } else { @@ -940,7 +932,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener { val useRecycleBin = config.useRecycleBin filtered.forEach { if (it.path.startsWith(recycleBinPath) || !useRecycleBin) { - deleteDBPath(mMediumDao, it.path) + deleteDBPath(it.path) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SearchActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SearchActivity.kt index 0febbfd0b..2ef59a3bc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SearchActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SearchActivity.kt @@ -315,7 +315,7 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { val movingItems = resources.getQuantityString(R.plurals.moving_items_into_bin, filtered.size, filtered.size) toast(movingItems) - movePathsInRecycleBin(filtered.map { it.path } as ArrayList, galleryDB.MediumDao()) { + movePathsInRecycleBin(filtered.map { it.path } as ArrayList) { if (it) { deleteFilteredFiles(filtered) } else { @@ -342,7 +342,7 @@ class SearchActivity : SimpleActivity(), MediaOperationsListener { val useRecycleBin = config.useRecycleBin filtered.forEach { if (it.path.startsWith(recycleBinPath) || !useRecycleBin) { - deleteDBPath(galleryDB.MediumDao(), it.path) + deleteDBPath(it.path) } } } 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 0be79e7fe..50133ccf5 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 @@ -13,10 +13,7 @@ import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.dialogs.ManageBottomActionsDialog import com.simplemobiletools.gallery.pro.dialogs.ManageExtendedDetailsDialog -import com.simplemobiletools.gallery.pro.extensions.config -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.extensions.* import com.simplemobiletools.gallery.pro.helpers.* import com.simplemobiletools.gallery.pro.models.AlbumCover import kotlinx.android.synthetic.main.activity_settings.* @@ -593,7 +590,7 @@ class SettingsActivity : SimpleActivity() { private fun setupEmptyRecycleBin() { ensureBackgroundThread { try { - mRecycleBinContentSize = galleryDB.MediumDao().getDeletedMedia().sumByLong { it.size } + mRecycleBinContentSize = mediaDB.getDeletedMedia().sumByLong { it.size } } catch (ignored: Exception) { } runOnUiThread { 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 4ffb2d73d..089d3da5d 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 @@ -364,8 +364,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (intent.action == "com.android.camera.action.REVIEW") { ensureBackgroundThread { - val mediumDao = galleryDB.MediumDao() - if (mediumDao.getMediaFromPath(mPath).isEmpty()) { + if (mediaDB.getMediaFromPath(mPath).isEmpty()) { val type = when { mPath.isVideoFast() -> TYPE_VIDEOS mPath.isGif() -> TYPE_GIFS @@ -379,7 +378,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View val duration = if (type == TYPE_VIDEOS) mPath.getVideoDuration() else 0 val ts = System.currentTimeMillis() val medium = Medium(null, mPath.getFilenameFromPath(), mPath, mPath.getParentPath(), ts, ts, File(mPath).length(), type, duration, isFavorite, 0) - mediumDao.insert(medium) + mediaDB.insert(medium) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt index d2e1696bb..3f0c66912 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/WidgetConfigureActivity.kt @@ -163,7 +163,7 @@ class WidgetConfigureActivity : SimpleActivity() { } ensureBackgroundThread { - val path = directoryDB.getDirectoryThumbnail(folderPath) + val path = directoryDao.getDirectoryThumbnail(folderPath) if (path != null) { runOnUiThread { loadJpg(path, config_image, config.cropThumbnails) 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 a70362d67..84113cfa9 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 @@ -198,7 +198,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList, mediumDao: MediumDao = galleryDB.MediumDao(), callback: ((wasSuccess: Boolean) -> Unit)?) { +fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList, callback: ((wasSuccess: Boolean) -> Unit)?) { ensureBackgroundThread { var pathsCnt = paths.size val OTGPath = config.OTGPath @@ -261,7 +260,7 @@ fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList, mediumDao out?.flush() if (fileDocument?.getItemSize(true) == copiedSize && getDoesFilePathExist(destination)) { - mediumDao.updateDeleted("$RECYCLE_BIN$source", System.currentTimeMillis(), source) + mediaDB.updateDeleted("$RECYCLE_BIN$source", System.currentTimeMillis(), source) pathsCnt-- } } catch (e: Exception) { @@ -277,7 +276,7 @@ fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList, mediumDao val lastModified = file.lastModified() try { if (file.copyRecursively(internalFile, true)) { - mediumDao.updateDeleted("$RECYCLE_BIN$source", System.currentTimeMillis(), source) + mediaDB.updateDeleted("$RECYCLE_BIN$source", System.currentTimeMillis(), source) pathsCnt-- if (config.keepLastModified) { @@ -295,10 +294,10 @@ fun BaseSimpleActivity.movePathsInRecycleBin(paths: ArrayList, mediumDao } fun BaseSimpleActivity.restoreRecycleBinPath(path: String, callback: () -> Unit) { - restoreRecycleBinPaths(arrayListOf(path), galleryDB.MediumDao(), callback) + restoreRecycleBinPaths(arrayListOf(path), callback) } -fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDao: MediumDao = galleryDB.MediumDao(), callback: () -> Unit) { +fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, callback: () -> Unit) { ensureBackgroundThread { val newPaths = ArrayList() for (source in paths) { @@ -328,7 +327,7 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList, mediumDa out?.flush() if (File(source).length() == copiedSize) { - mediumDao.updateDeleted(destination.removePrefix(recycleBinPath), 0, "$RECYCLE_BIN$destination") + mediaDB.updateDeleted(destination.removePrefix(recycleBinPath), 0, "$RECYCLE_BIN$destination") } newPaths.add(destination) @@ -357,8 +356,8 @@ fun BaseSimpleActivity.emptyTheRecycleBin(callback: (() -> Unit)? = null) { ensureBackgroundThread { try { recycleBin.deleteRecursively() - galleryDB.MediumDao().clearRecycleBin() - galleryDB.DirectoryDao().deleteRecycleBin() + mediaDB.clearRecycleBin() + directoryDao.deleteRecycleBin() toast(R.string.recycle_bin_emptied) callback?.invoke() } catch (e: Exception) { @@ -413,7 +412,6 @@ fun Activity.fixDateTaken(paths: ArrayList, showToasts: Boolean, hasResc try { var didUpdateFile = false val operations = ArrayList() - val mediumDao = galleryDB.MediumDao() ensureBackgroundThread { for (path in paths) { @@ -442,7 +440,7 @@ fun Activity.fixDateTaken(paths: ArrayList, showToasts: Boolean, hasResc operations.clear() } - mediumDao.updateFavoriteDateTaken(path, timestamp) + mediaDB.updateFavoriteDateTaken(path, timestamp) didUpdateFile = true if (!hasRescanned && getFileDateTaken(path) == 0L) { 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 8b3574847..31c37b75a 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 @@ -111,11 +111,11 @@ fun Context.launchSettings() { val Context.config: Config get() = Config.newInstance(applicationContext) -val Context.galleryDB: GalleryDatabase get() = GalleryDatabase.getInstance(applicationContext) - val Context.widgetsDB: WidgetsDao get() = GalleryDatabase.getInstance(applicationContext).WidgetsDao() -val Context.directoryDB: DirectoryDao get() = GalleryDatabase.getInstance(applicationContext).DirectoryDao() +val Context.mediaDB: MediumDao get() = GalleryDatabase.getInstance(applicationContext).MediumDao() + +val Context.directoryDao: DirectoryDao get() = GalleryDatabase.getInstance(applicationContext).DirectoryDao() val Context.favoritesDB: FavoritesDao get() = GalleryDatabase.getInstance(applicationContext).FavoritesDao() @@ -400,16 +400,15 @@ fun Context.rescanFolderMediaSync(path: String) { GetMediaAsynctask(applicationContext, path, false, false, false) { ensureBackgroundThread { val newMedia = it - val mediumDao = galleryDB.MediumDao() val media = newMedia.filter { it is Medium } as ArrayList try { - mediumDao.insertAll(media) + mediaDB.insertAll(media) cached.forEach { if (!newMedia.contains(it)) { val mediumPath = (it as? Medium)?.path if (mediumPath != null) { - deleteDBPath(mediumDao, mediumPath) + deleteDBPath(mediumPath) } } } @@ -420,7 +419,7 @@ fun Context.rescanFolderMediaSync(path: String) { } } -fun Context.storeDirectoryItems(items: ArrayList, directoryDao: DirectoryDao) { +fun Context.storeDirectoryItems(items: ArrayList) { ensureBackgroundThread { directoryDao.insertAll(items) } @@ -559,7 +558,7 @@ fun Context.loadSVG(path: String, target: MySquareImageView, cropThumbnails: Boo .into(target) } -fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, directoryDao: DirectoryDao = galleryDB.DirectoryDao(), forceShowHidden: Boolean = false, callback: (ArrayList) -> Unit) { +fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, forceShowHidden: Boolean = false, callback: (ArrayList) -> Unit) { ensureBackgroundThread { val directories = try { directoryDao.getAll() as ArrayList @@ -602,22 +601,21 @@ fun Context.getCachedDirectories(getVideosOnly: Boolean = false, getImagesOnly: val clone = filteredDirectories.clone() as ArrayList callback(clone.distinctBy { it.path.getDistinctPath() } as ArrayList) - removeInvalidDBDirectories(filteredDirectories, directoryDao) + removeInvalidDBDirectories(filteredDirectories) } } -fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, mediumDao: MediumDao = galleryDB.MediumDao(), - callback: (ArrayList) -> Unit) { +fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, callback: (ArrayList) -> Unit) { ensureBackgroundThread { val mediaFetcher = MediaFetcher(this) val foldersToScan = if (path.isEmpty()) mediaFetcher.getFoldersToScan() else arrayListOf(path) var media = ArrayList() if (path == FAVORITES) { - media.addAll(mediumDao.getFavorites()) + media.addAll(mediaDB.getFavorites()) } if (path == RECYCLE_BIN) { - media.addAll(getUpdatedDeletedMedia(mediumDao)) + media.addAll(getUpdatedDeletedMedia()) } if (config.filterMedia and TYPE_PORTRAITS != 0) { @@ -634,7 +632,7 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag val shouldShowHidden = config.shouldShowHidden foldersToScan.filter { path.isNotEmpty() || !config.isFolderProtected(it) }.forEach { try { - val currMedia = mediumDao.getMediaFromPath(it) + val currMedia = mediaDB.getMediaFromPath(it) media.addAll(currMedia) } catch (ignored: Exception) { } @@ -667,7 +665,7 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag val mediaToDelete = ArrayList() media.filter { !getDoesFilePathExist(it.path, OTGPath) }.forEach { if (it.path.startsWith(recycleBinPath)) { - deleteDBPath(mediumDao, it.path) + deleteDBPath(it.path) } else { mediaToDelete.add(it) } @@ -675,14 +673,14 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag try { if (mediaToDelete.isNotEmpty()) { - mediumDao.deleteMedia(*mediaToDelete.toTypedArray()) + mediaDB.deleteMedia(*mediaToDelete.toTypedArray()) } } catch (ignored: Exception) { } } } -fun Context.removeInvalidDBDirectories(dirs: ArrayList? = null, directoryDao: DirectoryDao = galleryDB.DirectoryDao()) { +fun Context.removeInvalidDBDirectories(dirs: ArrayList? = null) { val dirsToCheck = dirs ?: directoryDao.getAll() val OTGPath = config.OTGPath dirsToCheck.filter { !it.areFavorites() && !it.isRecycleBin() && !getDoesFilePathExist(it.path, OTGPath) && it.path != config.tempFolderPath }.forEach { @@ -697,12 +695,12 @@ fun Context.updateDBMediaPath(oldPath: String, newPath: String) { val newFilename = newPath.getFilenameFromPath() val newParentPath = newPath.getParentPath() try { - galleryDB.MediumDao().updateMedium(oldPath, newParentPath, newFilename, newPath) + mediaDB.updateMedium(oldPath, newParentPath, newFilename, newPath) } catch (ignored: Exception) { } } -fun Context.updateDBDirectory(directory: Directory, directoryDao: DirectoryDao) { +fun Context.updateDBDirectory(directory: Directory) { try { directoryDao.updateDirectory(directory.path, directory.tmb, directory.mediaCnt, directory.modified, directory.taken, directory.size, directory.types) } catch (ignored: Exception) { @@ -732,9 +730,9 @@ fun Context.updateFavorite(path: String, isFavorite: Boolean) { } // remove the "recycle_bin" from the file path prefix, replace it with real bin path /data/user... -fun Context.getUpdatedDeletedMedia(mediumDao: MediumDao): ArrayList { +fun Context.getUpdatedDeletedMedia(): ArrayList { val media = try { - mediumDao.getDeletedMedia() as ArrayList + mediaDB.getDeletedMedia() as ArrayList } catch (ignored: Exception) { ArrayList() } @@ -745,13 +743,13 @@ fun Context.getUpdatedDeletedMedia(mediumDao: MediumDao): ArrayList { return media } -fun Context.deleteDBPath(mediumDao: MediumDao, path: String) { - deleteMediumWithPath(mediumDao, path.replaceFirst(recycleBinPath, RECYCLE_BIN)) +fun Context.deleteDBPath(path: String) { + deleteMediumWithPath(path.replaceFirst(recycleBinPath, RECYCLE_BIN)) } -fun Context.deleteMediumWithPath(mediumDao: MediumDao, path: String) { +fun Context.deleteMediumWithPath(path: String) { try { - mediumDao.deleteMediumPath(path) + mediaDB.deleteMediumPath(path) favoritesDB.deleteFavoritePath(path) } catch (ignored: Exception) { } @@ -841,13 +839,12 @@ fun Context.addPathToDB(path: String) { } try { - val mediumDao = galleryDB.MediumDao() val isFavorite = favoritesDB.isFavorite(path) val videoDuration = if (type == TYPE_VIDEOS) path.getVideoDuration() else 0 val medium = Medium(null, path.getFilenameFromPath(), path, path.getParentPath(), System.currentTimeMillis(), System.currentTimeMillis(), File(path).length(), type, videoDuration, isFavorite, 0L) - mediumDao.insert(medium) + mediaDB.insert(medium) } catch (ignored: Exception) { } } @@ -891,7 +888,7 @@ fun Context.updateDirectoryPath(path: String) { val favoritePaths = getFavoritePaths() val curMedia = mediaFetcher.getFilesFrom(path, getImagesOnly, getVideosOnly, getProperDateTaken, getProperFileSize, favoritePaths, false) val directory = createDirectoryFromMedia(path, curMedia, albumCovers, hiddenString, includedFolders, isSortingAscending, getProperFileSize) - updateDBDirectory(directory, galleryDB.DirectoryDao()) + updateDBDirectory(directory) } fun Context.getFileDateTaken(path: String): Long { 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 8b625e5e5..6a4db386a 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 @@ -216,7 +216,7 @@ class MediaFetcher(val context: Context) { val media = ArrayList() val isRecycleBin = folder == RECYCLE_BIN val deletedMedia = if (isRecycleBin) { - context.getUpdatedDeletedMedia(context.galleryDB.MediumDao()) + context.getUpdatedDeletedMedia() } else { ArrayList() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt index 199d90952..f2e1b3d02 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/MyWidgetProvider.kt @@ -18,7 +18,7 @@ import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.activities.MediaActivity import com.simplemobiletools.gallery.pro.extensions.config -import com.simplemobiletools.gallery.pro.extensions.directoryDB +import com.simplemobiletools.gallery.pro.extensions.directoryDao import com.simplemobiletools.gallery.pro.extensions.getFolderNameFromPath import com.simplemobiletools.gallery.pro.extensions.widgetsDB import com.simplemobiletools.gallery.pro.models.Widget @@ -45,7 +45,7 @@ class MyWidgetProvider : AppWidgetProvider() { setText(R.id.widget_folder_name, context.getFolderNameFromPath(it.folderPath)) } - val path = context.directoryDB.getDirectoryThumbnail(it.folderPath) ?: return@forEach + val path = context.directoryDao.getDirectoryThumbnail(it.folderPath) ?: return@forEach val options = RequestOptions() .signature(path.getFileSignature()) .diskCacheStrategy(DiskCacheStrategy.RESOURCE) From e578036a227b22000d58814f32816cf852eed59e Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 Jan 2020 11:11:23 +0100 Subject: [PATCH 089/117] delete favorites at deleting media --- .../simplemobiletools/gallery/pro/extensions/Context.kt | 2 ++ .../gallery/pro/interfaces/FavoritesDao.kt | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) 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 31c37b75a..be0f31756 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 @@ -674,6 +674,8 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag try { if (mediaToDelete.isNotEmpty()) { mediaDB.deleteMedia(*mediaToDelete.toTypedArray()) + val favorites = mediaToDelete.map { getFavoriteFromPath(it.path) } + favoritesDB.deleteFavorites(*favorites.toTypedArray()) } } catch (ignored: Exception) { } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt index d835d9f65..8a890e20a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt @@ -1,9 +1,6 @@ package com.simplemobiletools.gallery.pro.interfaces -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.OnConflictStrategy -import androidx.room.Query +import androidx.room.* import com.simplemobiletools.gallery.pro.models.Favorite @Dao @@ -23,6 +20,9 @@ interface FavoritesDao { @Query("SELECT id FROM favorites WHERE full_path = :path COLLATE NOCASE") fun isFavorite(path: String): Boolean + @Delete + fun deleteFavorites(vararg favorite: Favorite) + @Query("DELETE FROM favorites WHERE full_path = :path COLLATE NOCASE") fun deleteFavoritePath(path: String) From 29a521d107859e7c66f21043d5abe0b2f57bf334 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 25 Jan 2020 11:50:09 +0100 Subject: [PATCH 090/117] update Favorite too at updating a medium --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 3 ++- .../simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt | 3 +++ .../com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) 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 be0f31756..7e69583e8 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 @@ -697,7 +697,8 @@ fun Context.updateDBMediaPath(oldPath: String, newPath: String) { val newFilename = newPath.getFilenameFromPath() val newParentPath = newPath.getParentPath() try { - mediaDB.updateMedium(oldPath, newParentPath, newFilename, newPath) + mediaDB.updateMedium(newFilename, newPath, newParentPath, oldPath) + favoritesDB.updateFavorite(newFilename, newPath, newParentPath, oldPath) } catch (ignored: Exception) { } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt index 8a890e20a..52056cb7e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt @@ -20,6 +20,9 @@ interface FavoritesDao { @Query("SELECT id FROM favorites WHERE full_path = :path COLLATE NOCASE") fun isFavorite(path: String): Boolean + @Query("UPDATE OR REPLACE favorites SET filename = :newFilename, full_path = :newFullPath, parent_path = :newParentPath WHERE full_path = :oldPath COLLATE NOCASE") + fun updateFavorite(newFilename: String, newFullPath: String, newParentPath: String, oldPath: String) + @Delete fun deleteFavorites(vararg favorite: Favorite) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt index ec0a8befc..8552256de 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt @@ -34,7 +34,7 @@ interface MediumDao { fun deleteOldRecycleBinItems(timestmap: Long) @Query("UPDATE OR REPLACE media SET filename = :newFilename, full_path = :newFullPath, parent_path = :newParentPath WHERE full_path = :oldPath COLLATE NOCASE") - fun updateMedium(oldPath: String, newParentPath: String, newFilename: String, newFullPath: String) + fun updateMedium(newFilename: String, newFullPath: String, newParentPath: String, oldPath: String) @Query("UPDATE OR REPLACE media SET full_path = :newPath, deleted_ts = :deletedTS WHERE full_path = :oldPath COLLATE NOCASE") fun updateDeleted(newPath: String, deletedTS: Long, oldPath: String) From 9607348b5029241bde31ba8a8c2d7ace49076f19 Mon Sep 17 00:00:00 2001 From: herkul-s <58790982+herkul-s@users.noreply.github.com> Date: Sat, 25 Jan 2020 18:43:41 +0100 Subject: [PATCH 091/117] updating czech strings --- app/src/main/res/values-cs/strings.xml | 44 +++++++++++++------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 2e17b6791..100e451e2 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -32,7 +32,7 @@ Opravuji… Datumy byly úspěšně opraveny Sdílet verzi se změněnou velikostí - Zdravím,\n\nzdá se, že jse přešli ze staré bezplatné aplikace. Starou aplikaci, která má nahoře v nastavení tlačítko \'Stáhnout Pro verzi\', můžete již odinstalovat.\n\nZtratíte tím pouze soubory v odpadkovém koši, označení oblíbených souborů a také budete muset znovu nastavit položky v nastavení aplikace.\n\nDěkuji! + Zdravím,\n\nzdá se, že jste přešli ze staré bezplatné aplikace. Starou aplikaci, která má nahoře v nastavení tlačítko \'Stáhnout Pro verzi\', můžete již odinstalovat.\n\nZtratíte tím pouze soubory v odpadkovém koši, označení oblíbených souborů a také budete muset znovu nastavit položky v nastavení aplikace.\n\nDěkuji! Přepnout na vyhledávání souborů ve všech viditelných složkách @@ -43,7 +43,7 @@ RAW obrázky SVGčka Portréty - Se zvolenými filtry nebyly nalezeny žádné médiální soubory. + Se zvolenými filtry nebyly nalezeny žádné mediální soubory. Změnit filtry @@ -53,7 +53,7 @@ Spravovat vyloučené složky Tato funkce vyloučí výběr včetně podsložek jen z Jednoduché galerie. V nastavení můžete spravovat vyloučené složky. Chcete vyloučit nadřazenou složku? - Vyloučené složky budou spolu s podsložkami vyloučeny jen z Jednoduché Galerie, ostatní aplikace je nadále uvidí.\n\nPokud je chcete skrýt i před ostatními aplikacemi, použijte funkci Skrýt. + Vyloučené složky budou spolu s podsložkami vyloučeny jen z Jednoduché galerie, ostatní aplikace je nadále uvidí.\n\nPokud je chcete skrýt i před ostatními aplikacemi, použijte funkci Skrýt. Odstranit všechny Odstranit všechny složky ze seznamu vyloučených? Tato operace neodstraní obsah složek. Skryté složky @@ -111,7 +111,7 @@ Prezentace - Interval (vteřin): + Interval (sekund): Zahrnout fotografie Zahrnout videa Zahrnout GIFy @@ -169,10 +169,10 @@ Povolit ovládání jasu vertikálními tahy Povolit ovládání hlasitosti a jasu videí vertikálními tahy Zobrazit počet médií ve složce na hlavní obrazovce - Zobrazit rozšířené vlastnosti přes celoobrazovkové média + Zobrazit rozšířené vlastnosti přes celoobrazovková média Spravovat rozšířené vlastnosti Povolit přibližování jedním prstem v celoobrazovkovém režimu - Povolit okamžité přepínání médií ťuknutím na okraj obrazovky + Povolit okamžité přepínání médií klepnutím na okraj obrazovky Povolit hluboké přibližování obrázků Skrýt rozšířené vlastnosti pokud je skrytá stavová lišta Zobrazit některá akční tlačítka ve spodní části obrazovky @@ -198,7 +198,7 @@ Spodní akční tlačítka - Upravit viditelné spodní akční tlačítka + Upravit viditelná spodní akční tlačítka Přepnutí oblíbenosti Přepnutí viditelnosti souboru @@ -284,17 +284,17 @@ Pipetovatelná barva - Jak nastavím Jednoduchou Galerii jako výchozí galerii? + Jak nastavím Jednoduchou galerii jako výchozí galerii? Nejdříve musíte najít v nastavení zařízení, v sekci Aplikace, současnou výchozí galerii, zvolit tlačítko s textem ve smyslu \"Nastavení výchozího otevírání\" a následně \"Vymazat výchozí nastavení\". - Pokud poté zkusíte otevřít obrázek nebo video, zobrazí se seznam aplikací, kde můžete zvolit Jednoduchou Galerii a nastavit ji jako výchozí. + Pokud poté zkusíte otevřít obrázek nebo video, zobrazí se seznam aplikací, kde můžete zvolit Jednoduchou galerii a nastavit ji jako výchozí. Uzamknul jsem aplikaci heslem, ale zapomněl jsem ho. Co můžu udělat? - Můžete to vyriešǐť 2 způsoby. Můžete aplikaci buď přeinstalovat nebo ji najít v nastavení zařízení a zvolit \"Vymazat data\". Vymažou se pouze nastavení aplikace, nikoliv soubory. + Můžete to vyriešit 2 způsoby. Můžete aplikaci buď přeinstalovat nebo ji najít v nastavení zařízení a zvolit \"Vymazat data\". Vymažou se pouze nastavení aplikace, nikoliv soubory. Jak mohu dosáhnout, aby bylo dané album stále zobrazeno jako první? - Můžete označit danou složku dlouhým podržením a zvolit tlačítko s obrázkem připínáčku, to ji připne na vrch. Můžete připnout i více složek, budou seřazeny podle zvoleného řazení. + Můžete označit danou složku dlouhým podržením a zvolit tlačítko s obrázkem připínáčku, to ji připne nahoru. Můžete připnout i více složek, budou seřazeny podle zvoleného řazení. Jak mohu video posunout vpřed? - Můžete toho dosáhnout buď tažením prstu vodorovně přes okno přehrávače nebo ťuknutím na text aktuální či celkové délky videa, které najdete po bocích indikátoru aktuální pozice. To posune video buď zpět nebo vpřed. + Můžete toho dosáhnout buď tažením prstu vodorovně přes okno přehrávače nebo klepnutím na text aktuální či celkové délky videa, který najdete po bocích indikátoru aktuální pozice. To posune video buď zpět nebo vpřed. Jaký je rozdíl mezi Skrytím a Vyloučením složky? - Zatímco vyloučení zamezí zobrazení složky pouze vrámci Jednoduché Galerie, skrytí ji ukryje vrámci celého systému, tedy to ovlivní i ostatní galerie. Skrytí funguje pomocí vytvoření prázdného souboru \".nomedia\" v daném adresáři, který můžete vymazat i libovolným správcem souborů. + Zatímco vyloučení zamezí zobrazení složky pouze vrámci Jednoduché galerie, skrytí ji ukryje v celém systému, tedy to ovlivní i ostatní galerie. Skrytí funguje pomocí vytvoření prázdného souboru \".nomedia\" v daném adresáři, který můžete vymazat i libovolným správcem souborů. Proč se mi zobrazují složky s obaly hudebních alb, nebo nálepkami? Může se stát, že se vám zobrazí také neobvyklé složky. Můžete je ale jednoduše skrýt jejich vybráním pomocí dlouhého podržení a zvolením Vyloučit. Pokud na následujícím dialogu zvolíte vyloučení nadřazené složky, pravděpodobně budou vyloučeny i ostatní podobné složky. Složka s fotografiemi se mi nezobrazuje nebo ve složce nevidím všechny soubory. Co s tím? @@ -317,13 +317,13 @@ - Jednoduchá Galerie Pro - Organizér a editor fotografií + Jednoduchá galerie Pro - Organizér a editor fotografií - Browse your memories without any interruptions with this photo and video gallery + Prohlížejte svoje vzpomínky bez prerušení s touto foto a video galerií. - Jednoduchá Galerie Pro je vysoce přizpůsobitelná offline galerie. Organizujte a upravujte své fotografie, obnovujte smazané fotografie s funkcí odpadkového koše, chraňte je a skrývejte. Prohlížejte množství různých foto a video formátů včetně RAW, SVG a mnoho dalších. + Jednoduchá galerie Pro je vysoce přizpůsobitelná offline galerie. Organizujte a upravujte své fotografie, obnovujte smazané fotografie s funkcí odpadkového koše, chraňte je a skrývejte. Prohlížejte množství různých foto a video formátů včetně RAW, SVG a mnoho dalších. - Aplikace neobsahuje žádné reklamy ani nepotřebná oprávnění. Tím, že ani nevyžaduje připojení k internetu je vaše soukromí maximálně chráněno. + Aplikace neobsahuje žádné reklamy ani nepotřebná oprávnění. Tím, že ani nevyžaduje připojení k internetu, je vaše soukromí maximálně chráněno. ------------------------------------------------- JEDNODUCHÁ GALERIE PRO – FUNKCE @@ -337,7 +337,7 @@ • Otevírejte mnoho rozličných formátů fotografií a videí (RAW, SVG, GIF, panorama, atd) • Množství intuitivních gest pro jednoduchou úpravu a organizaci souborů • Mnoho různých způsobů filtrování, seskupování a řazení souborů - • Změňte si vzhled Jednoduché galerie pro + • Změňte si vzhled Jednoduché galerie Pro • Dostupná ve 32 jazycích • Označte si oblíbené soubory pro rychlý přístup • Chraňte své fotografie a videa pomocí pinu, vzoru nebo otiskem prstu @@ -350,16 +350,16 @@ … a mnoho dalších! EDITOR OBRÁZKŮ - Jednoduchá Galerie Pro umožňuje snadnou úpravu obrázků. Ořezávejte, překlápějte, otáčejte či měňte jejich velikost. Pokud se cítíte kreativně, můžete také aplikovat filtry nebo do obrázku kreslit! + Jednoduchá galerie Pro umožňuje snadnou úpravu obrázků. Ořezávejte, překlápějte, otáčejte či měňte jejich velikost. Pokud se cítíte kreativně, můžete také aplikovat filtry nebo do obrázku kreslit! PODPORA MNOHA TYPŮ SOUBORŮ - Na rozdíl od některých galerií podporuje Jednoduchá Galerie Pro velké množství různých druhů souborů včetně JPEG, PNG, MP4, MKV, RAW, SVG, panoramatických fotografií a videí. + Na rozdíl od některých galerií podporuje Jednoduchá galerie Pro velké množství různých druhů souborů včetně JPEG, PNG, MP4, MKV, RAW, SVG, panoramatických fotografií a videí. Vysoce upravitelný správce galerie - Od vzhledu až po funkční tlačítka na spodní liště, Jednoduchá Galerie Pro je plně nastavitelná a bude fungovat přesně jak si budete přát. Žádná jiná galerie nenabízí takovou flexibilitu! A díky otevřenému kódu je naše aplikace dostupná ve 32 jazycích! + Od vzhledu až po funkční tlačítka na spodní liště, Jednoduchá galerie Pro je plně nastavitelná a bude fungovat přesně jak si budete přát. Žádná jiná galerie nenabízí takovou flexibilitu! A díky otevřenému kódu je naše aplikace dostupná ve 32 jazycích! OBNOVTE SMAZANÉ FOTOGRAFIE A VIDEA - Smazali jste nechtěně důležitou fotografii nebo video? Žádný strach! Jednoduchá Galerie Pro pro podobné případy nabízí funkci odpadkového koše, odkud smazané fotografie a videa snadno obnovíte. + Smazali jste nechtěně důležitou fotografii nebo video? Žádný strach! Jednoduchá galerie Pro pro podobné případy nabízí funkci odpadkového koše, odkud smazané fotografie a videa snadno obnovíte. CHRAŇTE A SKRÝVEJTE SVÉ FOTOGRAFIE A VIDEA Použitím pinu, vzoru nebo otisku prstu snadno své fotografie, videa či celá alba ochráníte nebo skryjete. Můžete ochránit i spuštění samotné aplikace, nebo některé její funkce. Například můžete zabránit náhodnému smazání souboru bez potvrzení otiskem prstu. From ea187e117ee7dbee659cdbbdff82b2ffde976078 Mon Sep 17 00:00:00 2001 From: AioiLight Date: Sun, 26 Jan 2020 17:22:52 +0900 Subject: [PATCH 092/117] updating the app description from original language --- app/src/main/res/values-ja/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 7b34fa90f..8aa0d66da 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -366,6 +366,9 @@ Check out the full suite of Simple Tools here: https://www.simplemobiletools.com + + Standalone website of Simple Gallery Pro: + https://www.simplemobiletools.com/gallery Facebook: https://www.facebook.com/simplemobiletools From fef507e16d83600331f1be570b777da84370407d Mon Sep 17 00:00:00 2001 From: AioiLight Date: Sun, 26 Jan 2020 17:56:16 +0900 Subject: [PATCH 093/117] updating Japanese translation(New editor strings) --- app/src/main/res/values-ja/strings.xml | 126 ++++++++++++------------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8aa0d66da..203820656 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -203,69 +203,69 @@ 表示/非表示の切替 - Custom - Reset - Square - Transform - Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness - Contrast - Saturation - Clarity - Gamma - Blacks - Whites - Temperature - Sharpness - Reset - Focus - None - Radial - Linear - Mirrored - Gaussian - Text - Text Options - Text Color - Font - Add - Edit - Straighten - Font - Color - BG Color - Alignment - To Front - Delete - Your text - Brush - Color - Size - Hardness - To Front - Delete - Brush Color - Editor - Close Editor? - Do you really want to discard the image? - Yes - No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker - Transparent + カスタム + リセット + 正方形 + 変形 + フィルター + なし + 調整 + シャドウ + 露出 + ハイライト + 明るさ + コントラスト + 彩度 + 明瞭度 + ガンマ + 黒レベル + 白レベル + 色温度 + シャープネス + リセット + ぼかし + なし + 円形 + 直線 + ミラー + ガウス + テキスト + テキスト オプション + 文字色 + フォント + 追加 + 編集 + まっすぐにする + フォント + + 背景色 + 配置 + 前面に + 削除 + テキストを入力 + ブラシ + + 太さ + 硬度 + 前面に + 削除 + ブラシの色 + エディター + エディターを閉じますか? + 画像を破棄して閉じますか? + はい + いいえ + キャンセル + 了解 + 保存 + 画像を保存中…… + 画像を保存中 %s. + 水平方向に反転 + 垂直方向に反転 + 元に戻す + やり直し + カラーピッカー + 透明 White Gray Black From 76571aab9a86d0c210ac6aa714a50d947493bbde Mon Sep 17 00:00:00 2001 From: AioiLight Date: Sun, 26 Jan 2020 18:31:49 +0900 Subject: [PATCH 094/117] updating Japanese translation(some strings) --- app/src/main/res/values-ja/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 203820656..f97b63ada 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -32,8 +32,8 @@ 修正中… 撮影日が正常に修正されました リサイズした画像を共有 - 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 + あなたは無料版からアップグレードしたと思われます。"Upgrade to Pro"というボタンが設定の上部にある無料版はアンインストールすることができます。\n\nごみ箱の中身は削除され、お気に入りもアプリの設定もリセットされることになります。\n\nありがとう! + 表示されているすべてのフォルダで検索 に切り替え 表示する形式 @@ -42,7 +42,7 @@ GIF RAW SVG - Portraits + ポートレイト 条件に該当するメディアがありません。 絞り込み条件を変更 @@ -82,7 +82,7 @@ パス 無効な画像パス 画像の編集に失敗しました - File edited successfully + ファイルの編集に成功しました 画像を編集: 画像エディターが見つかりません ファイルの場所が不明です @@ -180,11 +180,11 @@ 画像のズームを深くする 可能な限り高品質で画像を表示 ごみ箱をメイン画面の最後に表示 - Allow closing the fullscreen view with a down gesture - Allow 1:1 zooming in with two double taps + フルスクリーン表示を下にスワイプするジェスチャーで閉じる + ダブルタップして 1:1 ズームする 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 From 1c2d23c57d286ec5eeaba4ad99eccf96a4ee86f2 Mon Sep 17 00:00:00 2001 From: AioiLight Date: Sun, 26 Jan 2020 19:05:20 +0900 Subject: [PATCH 095/117] fix escape missing --- app/src/main/res/values-ja/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index f97b63ada..f35577c8c 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -32,7 +32,7 @@ 修正中… 撮影日が正常に修正されました リサイズした画像を共有 - あなたは無料版からアップグレードしたと思われます。"Upgrade to Pro"というボタンが設定の上部にある無料版はアンインストールすることができます。\n\nごみ箱の中身は削除され、お気に入りもアプリの設定もリセットされることになります。\n\nありがとう! + あなたは無料版からアップグレードしたと思われます。\"Upgrade to Pro\"というボタンが設定の上部にある無料版はアンインストールすることができます。\n\nごみ箱の中身は削除され、お気に入りもアプリの設定もリセットされることになります。\n\nありがとう! 表示されているすべてのフォルダで検索 に切り替え From 9e702ce59352977fbc5e52f19faa4d26d9fd2391 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 Jan 2020 19:18:33 +0100 Subject: [PATCH 096/117] adding czech fastlane app data --- fastlane/metadata/android/cs/full_description.txt | 14 +++++++------- fastlane/metadata/android/cs/short_description.txt | 2 +- fastlane/metadata/android/cs/title.txt | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/fastlane/metadata/android/cs/full_description.txt b/fastlane/metadata/android/cs/full_description.txt index 70cb84ae8..621e34bd7 100644 --- a/fastlane/metadata/android/cs/full_description.txt +++ b/fastlane/metadata/android/cs/full_description.txt @@ -1,6 +1,6 @@ -Jednoduchá Galerie Pro je vysoce přizpůsobitelná offline galerie. Organizujte a upravujte své fotografie, obnovujte smazané fotografie s funkcí odpadkového koše, chraňte je a skrývejte. Prohlížejte množství různých foto a video formátů včetně RAW, SVG a mnoho dalších. +Jednoduchá galerie Pro je vysoce přizpůsobitelná offline galerie. Organizujte a upravujte své fotografie, obnovujte smazané fotografie s funkcí odpadkového koše, chraňte je a skrývejte. Prohlížejte množství různých foto a video formátů včetně RAW, SVG a mnoho dalších. -Aplikace neobsahuje žádné reklamy ani nepotřebná oprávnění. Tím, že ani nevyžaduje připojení k internetu je vaše soukromí maximálně chráněno. +Aplikace neobsahuje žádné reklamy ani nepotřebná oprávnění. Tím, že ani nevyžaduje připojení k internetu, je vaše soukromí maximálně chráněno. ------------------------------------------------- JEDNODUCHÁ GALERIE PRO – FUNKCE @@ -14,7 +14,7 @@ Aplikace neobsahuje žádné reklamy ani nepotřebná oprávnění. Tím, že an • Otevírejte mnoho rozličných formátů fotografií a videí (RAW, SVG, GIF, panorama, atd) • Množství intuitivních gest pro jednoduchou úpravu a organizaci souborů • Mnoho různých způsobů filtrování, seskupování a řazení souborů -• Změňte si vzhled Jednoduché galerie pro +• Změňte si vzhled Jednoduché galerie Pro • Dostupná ve 32 jazycích • Označte si oblíbené soubory pro rychlý přístup • Chraňte své fotografie a videa pomocí pinu, vzoru nebo otiskem prstu @@ -27,16 +27,16 @@ Aplikace neobsahuje žádné reklamy ani nepotřebná oprávnění. Tím, že an … a mnoho dalších! EDITOR OBRÁZKŮ -Jednoduchá Galerie Pro umožňuje snadnou úpravu obrázků. Ořezávejte, překlápějte, otáčejte či měňte jejich velikost. Pokud se cítíte kreativně, můžete také aplikovat filtry nebo do obrázku kreslit! +Jednoduchá galerie Pro umožňuje snadnou úpravu obrázků. Ořezávejte, překlápějte, otáčejte či měňte jejich velikost. Pokud se cítíte kreativně, můžete také aplikovat filtry nebo do obrázku kreslit! PODPORA MNOHA TYPŮ SOUBORŮ -Na rozdíl od některých galerií podporuje Jednoduchá Galerie Pro velké množství různých druhů souborů včetně JPEG, PNG, MP4, MKV, RAW, SVG, panoramatických fotografií a videí. +Na rozdíl od některých galerií podporuje Jednoduchá galerie Pro velké množství různých druhů souborů včetně JPEG, PNG, MP4, MKV, RAW, SVG, panoramatických fotografií a videí. Vysoce upravitelný správce galerie -Od vzhledu až po funkční tlačítka na spodní liště, Jednoduchá Galerie Pro je plně nastavitelná a bude fungovat přesně jak si budete přát. Žádná jiná galerie nenabízí takovou flexibilitu! A díky otevřenému kódu je naše aplikace dostupná ve 32 jazycích! +Od vzhledu až po funkční tlačítka na spodní liště, Jednoduchá galerie Pro je plně nastavitelná a bude fungovat přesně jak si budete přát. Žádná jiná galerie nenabízí takovou flexibilitu! A díky otevřenému kódu je naše aplikace dostupná ve 32 jazycích! OBNOVTE SMAZANÉ FOTOGRAFIE A VIDEA -Smazali jste nechtěně důležitou fotografii nebo video? Žádný strach! Jednoduchá Galerie Pro pro podobné případy nabízí funkci odpadkového koše, odkud smazané fotografie a videa snadno obnovíte. +Smazali jste nechtěně důležitou fotografii nebo video? Žádný strach! Jednoduchá galerie Pro pro podobné případy nabízí funkci odpadkového koše, odkud smazané fotografie a videa snadno obnovíte. CHRAŇTE A SKRÝVEJTE SVÉ FOTOGRAFIE A VIDEA Použitím pinu, vzoru nebo otisku prstu snadno své fotografie, videa či celá alba ochráníte nebo skryjete. Můžete ochránit i spuštění samotné aplikace, nebo některé její funkce. Například můžete zabránit náhodnému smazání souboru bez potvrzení otiskem prstu. diff --git a/fastlane/metadata/android/cs/short_description.txt b/fastlane/metadata/android/cs/short_description.txt index 838a83301..07d253324 100644 --- a/fastlane/metadata/android/cs/short_description.txt +++ b/fastlane/metadata/android/cs/short_description.txt @@ -1 +1 @@ -Prohlížejte své vzpomínky bez přerušení. +Prohlížejte svoje vzpomínky bez prerušení s touto foto a video galerií. diff --git a/fastlane/metadata/android/cs/title.txt b/fastlane/metadata/android/cs/title.txt index 085c5b107..c4d4949ec 100644 --- a/fastlane/metadata/android/cs/title.txt +++ b/fastlane/metadata/android/cs/title.txt @@ -1 +1 @@ -Jednoduchá Galerie Pro - Organizér a editor fotografií +Jednoduchá Galerie Pro - Organizér fotografií From 4d7e95d72a4ca23a7ef2eac0be6b2f15f64727c6 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 26 Jan 2020 19:18:43 +0100 Subject: [PATCH 097/117] shortening the czech app title --- app/src/main/res/values-cs/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 100e451e2..9ed63b894 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -317,7 +317,7 @@ - Jednoduchá galerie Pro - Organizér a editor fotografií + Jednoduchá galerie Pro - Organizér fotografií Prohlížejte svoje vzpomínky bez prerušení s touto foto a video galerií. From 86db0b8f19386d4697612647a394f336daebcaca Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jan 2020 14:47:17 +0100 Subject: [PATCH 098/117] fix unselecting invalid favorite items --- .../com/simplemobiletools/gallery/pro/extensions/Context.kt | 6 ++++-- .../gallery/pro/interfaces/FavoritesDao.kt | 3 --- 2 files changed, 4 insertions(+), 5 deletions(-) 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 7e69583e8..179832a97 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 @@ -674,8 +674,10 @@ fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImag try { if (mediaToDelete.isNotEmpty()) { mediaDB.deleteMedia(*mediaToDelete.toTypedArray()) - val favorites = mediaToDelete.map { getFavoriteFromPath(it.path) } - favoritesDB.deleteFavorites(*favorites.toTypedArray()) + + mediaToDelete.filter { it.isFavorite }.forEach { + favoritesDB.deleteFavoritePath(it.path) + } } } catch (ignored: Exception) { } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt index 52056cb7e..102454e79 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt @@ -23,9 +23,6 @@ interface FavoritesDao { @Query("UPDATE OR REPLACE favorites SET filename = :newFilename, full_path = :newFullPath, parent_path = :newParentPath WHERE full_path = :oldPath COLLATE NOCASE") fun updateFavorite(newFilename: String, newFullPath: String, newParentPath: String, oldPath: String) - @Delete - fun deleteFavorites(vararg favorite: Favorite) - @Query("DELETE FROM favorites WHERE full_path = :path COLLATE NOCASE") fun deleteFavoritePath(path: String) From 9d2239d1c1b39ef35e1be989b33b4db824d273de Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jan 2020 15:05:17 +0100 Subject: [PATCH 099/117] really clear all Favorites at deleting the given folder --- .../simplemobiletools/gallery/pro/adapters/DirectoryAdapter.kt | 1 + .../com/simplemobiletools/gallery/pro/interfaces/MediumDao.kt | 3 +++ 2 files changed, 4 insertions(+) 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 84113cfa9..ec683644d 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 @@ -555,6 +555,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList Date: Mon, 27 Jan 2020 15:17:46 +0100 Subject: [PATCH 100/117] migrate favorites in the new table on app upgrade --- .../gallery/pro/activities/SplashActivity.kt | 32 +++++++++++++++++++ .../gallery/pro/helpers/Config.kt | 4 +++ .../gallery/pro/helpers/Constants.kt | 1 + 3 files changed, 37 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt index 20c9c9387..ede321fc2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt @@ -2,9 +2,41 @@ package com.simplemobiletools.gallery.pro.activities import android.content.Intent import com.simplemobiletools.commons.activities.BaseSplashActivity +import com.simplemobiletools.commons.helpers.ensureBackgroundThread +import com.simplemobiletools.gallery.pro.extensions.config +import com.simplemobiletools.gallery.pro.extensions.favoritesDB +import com.simplemobiletools.gallery.pro.extensions.getFavoriteFromPath +import com.simplemobiletools.gallery.pro.extensions.mediaDB +import com.simplemobiletools.gallery.pro.models.Favorite class SplashActivity : BaseSplashActivity() { override fun initActivity() { + + // check if previously selected favorite items have been properly migrated into the new Favorites table + if (config.wereFavoritesMigrated) { + launchActivity() + } else { + if (config.appRunCount == 0) { + config.wereFavoritesMigrated = true + } else { + ensureBackgroundThread { + val favorites = ArrayList() + val favoritePaths = mediaDB.getFavorites().map { it.path }.toMutableList() as ArrayList + favoritePaths.forEach { + favorites.add(getFavoriteFromPath(it)) + } + favoritesDB.insertAll(favorites) + config.wereFavoritesMigrated = true + + runOnUiThread { + launchActivity() + } + } + } + } + } + + private fun launchActivity() { startActivity(Intent(this, MainActivity::class.java)) finish() } 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 4f8bce7c8..6769ec72d 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 @@ -494,4 +494,8 @@ class Config(context: Context) : BaseConfig(context) { var editorBrushSize: Float get() = prefs.getFloat(EDITOR_BRUSH_SIZE, 0.05f) set(editorBrushSize) = prefs.edit().putFloat(EDITOR_BRUSH_SIZE, editorBrushSize).apply() + + var wereFavoritesMigrated: Boolean + get() = prefs.getBoolean(WERE_FAVORITES_MIGRATED, false) + set(wereFavoritesMigrated) = prefs.edit().putBoolean(WERE_FAVORITES_MIGRATED, wereFavoritesMigrated).apply() } 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 50ca3f376..9b549de78 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 @@ -80,6 +80,7 @@ const val SHOW_THUMBNAIL_FILE_TYPES = "show_thumbnail_file_types" const val EDITOR_BRUSH_COLOR = "editor_brush_color" const val EDITOR_BRUSH_HARDNESS = "editor_brush_hardness" const val EDITOR_BRUSH_SIZE = "editor_brush_size" +const val WERE_FAVORITES_MIGRATED = "were_favorites_migrated" // slideshow const val SLIDESHOW_INTERVAL = "slideshow_interval" From 817229a697e8a06d75d4de9fde72754023e262db Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jan 2020 17:22:16 +0100 Subject: [PATCH 101/117] lets set wereFavoritesMigrated earlier to avoid some crashlooping --- .../simplemobiletools/gallery/pro/activities/SplashActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt index ede321fc2..45332bcd2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt @@ -19,6 +19,7 @@ class SplashActivity : BaseSplashActivity() { if (config.appRunCount == 0) { config.wereFavoritesMigrated = true } else { + config.wereFavoritesMigrated = true ensureBackgroundThread { val favorites = ArrayList() val favoritePaths = mediaDB.getFavorites().map { it.path }.toMutableList() as ArrayList @@ -26,7 +27,6 @@ class SplashActivity : BaseSplashActivity() { favorites.add(getFavoriteFromPath(it)) } favoritesDB.insertAll(favorites) - config.wereFavoritesMigrated = true runOnUiThread { launchActivity() From 665690c81912ec993f5512ec3f515319b3a9893f Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jan 2020 20:34:59 +0100 Subject: [PATCH 102/117] removing an unused debug function --- .../gallery/pro/interfaces/FavoritesDao.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt index 102454e79..39a4c4530 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/FavoritesDao.kt @@ -1,6 +1,9 @@ package com.simplemobiletools.gallery.pro.interfaces -import androidx.room.* +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query import com.simplemobiletools.gallery.pro.models.Favorite @Dao @@ -11,9 +14,6 @@ interface FavoritesDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertAll(favorites: List) - @Query("SELECT full_path FROM favorites") - fun getFavoriteRawPaths(): List - @Query("SELECT favorites.full_path FROM favorites INNER JOIN media ON favorites.full_path = media.full_path WHERE media.deleted_ts = 0") fun getValidFavoritePaths(): List From 2517170aebcf5a2b25eff23317d64889270edafe Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jan 2020 20:48:37 +0100 Subject: [PATCH 103/117] store the fixed Date Taken values in the new table --- .../gallery/pro/extensions/Activity.kt | 9 +++++++++ .../gallery/pro/extensions/Context.kt | 7 +++---- .../gallery/pro/interfaces/DateTakensDao.kt | 11 +++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) 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 4020ed9f5..b23b28522 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 @@ -31,6 +31,7 @@ import com.simplemobiletools.gallery.pro.R import com.simplemobiletools.gallery.pro.activities.SimpleActivity import com.simplemobiletools.gallery.pro.dialogs.PickDirectoryDialog import com.simplemobiletools.gallery.pro.helpers.RECYCLE_BIN +import com.simplemobiletools.gallery.pro.models.DateTaken import com.squareup.picasso.Picasso import java.io.File import java.io.FileOutputStream @@ -414,6 +415,8 @@ fun Activity.fixDateTaken(paths: ArrayList, showToasts: Boolean, hasResc val operations = ArrayList() ensureBackgroundThread { + val dateTakens = ArrayList() + for (path in paths) { val dateTime = ExifInterface(path).getAttribute(ExifInterface.TAG_DATETIME_ORIGINAL) ?: ExifInterface(path).getAttribute(ExifInterface.TAG_DATETIME) ?: continue @@ -443,6 +446,8 @@ fun Activity.fixDateTaken(paths: ArrayList, showToasts: Boolean, hasResc mediaDB.updateFavoriteDateTaken(path, timestamp) didUpdateFile = true + val dateTaken = DateTaken(null, path, path.getFilenameFromPath(), path.getParentPath(), timestamp, (System.currentTimeMillis() / 1000).toInt()) + dateTakens.add(dateTaken) if (!hasRescanned && getFileDateTaken(path) == 0L) { pathsToRescan.add(path) } @@ -454,6 +459,10 @@ fun Activity.fixDateTaken(paths: ArrayList, showToasts: Boolean, hasResc } if (hasRescanned || pathsToRescan.isEmpty()) { + if (dateTakens.isNotEmpty()) { + dateTakensDB.insertAll(dateTakens) + } + runOnUiThread { if (showToasts) { toast(if (didUpdateFile) R.string.dates_fixed_successfully else R.string.unknown_error_occurred) 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 179832a97..a3d542674 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 @@ -25,10 +25,7 @@ import com.simplemobiletools.gallery.pro.activities.SettingsActivity import com.simplemobiletools.gallery.pro.asynctasks.GetMediaAsynctask import com.simplemobiletools.gallery.pro.databases.GalleryDatabase import com.simplemobiletools.gallery.pro.helpers.* -import com.simplemobiletools.gallery.pro.interfaces.DirectoryDao -import com.simplemobiletools.gallery.pro.interfaces.FavoritesDao -import com.simplemobiletools.gallery.pro.interfaces.MediumDao -import com.simplemobiletools.gallery.pro.interfaces.WidgetsDao +import com.simplemobiletools.gallery.pro.interfaces.* import com.simplemobiletools.gallery.pro.models.* import com.simplemobiletools.gallery.pro.svg.SvgSoftwareLayerSetter import com.simplemobiletools.gallery.pro.views.MySquareImageView @@ -119,6 +116,8 @@ val Context.directoryDao: DirectoryDao get() = GalleryDatabase.getInstance(appli val Context.favoritesDB: FavoritesDao get() = GalleryDatabase.getInstance(applicationContext).FavoritesDao() +val Context.dateTakensDB: DateTakensDao get() = GalleryDatabase.getInstance(applicationContext).DateTakensDao() + val Context.recycleBin: File get() = filesDir val Context.recycleBinPath: String get() = filesDir.absolutePath diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDao.kt index 0d3380408..6f8b609a8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/interfaces/DateTakensDao.kt @@ -1,8 +1,19 @@ package com.simplemobiletools.gallery.pro.interfaces import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import com.simplemobiletools.gallery.pro.models.DateTaken @Dao interface DateTakensDao { + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insertAll(dateTakens: List) + @Query("SELECT full_path, filename, parent_path, date_taken, last_fixed FROM date_takens WHERE parent_path = :path COLLATE NOCASE") + fun getDateTakensFromPath(path: String): List + + @Query("SELECT full_path, filename, parent_path, date_taken, last_fixed FROM date_takens") + fun getAllDateTakens(): List } From 650a985a9cecc0676bf3ea0ba92fe818cf0d7279 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jan 2020 21:05:05 +0100 Subject: [PATCH 104/117] make the Date Taken from Fix Date Taken value be higher priority than mediastore --- .../simplemobiletools/gallery/pro/helpers/MediaFetcher.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 6a4db386a..955ce9eed 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 @@ -407,8 +407,8 @@ class MediaFetcher(val context: Context) { try { val dateTaken = cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN) if (dateTaken != 0L) { - val path = cursor.getStringValue(MediaStore.Images.Media.DISPLAY_NAME) - dateTakens[path] = dateTaken + val name = cursor.getStringValue(MediaStore.Images.Media.DISPLAY_NAME) + dateTakens[name] = dateTaken } } catch (e: Exception) { } @@ -416,6 +416,10 @@ class MediaFetcher(val context: Context) { } } + context.dateTakensDB.getDateTakensFromPath(folder).forEach { + dateTakens[it.filename] = it.taken + } + return dateTakens } From f4c02d11687861ca2ff04256c674381b2456c2f8 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jan 2020 21:22:10 +0100 Subject: [PATCH 105/117] fix #1545, properly sort Favorites by date taken --- .../gallery/pro/helpers/MediaFetcher.kt | 60 +++++++++++-------- 1 file changed, 34 insertions(+), 26 deletions(-) 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 955ce9eed..8f060f922 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 @@ -226,7 +226,7 @@ class MediaFetcher(val context: Context) { val checkFileExistence = config.fileLoadingPriority == PRIORITY_VALIDITY val showHidden = config.shouldShowHidden val showPortraits = filterMedia and TYPE_PORTRAITS != 0 - val dateTakens = if (getProperDateTaken && folder != FAVORITES && !isRecycleBin) getFolderDateTakens(folder) else HashMap() + val dateTakens = if (getProperDateTaken && !isRecycleBin) getFolderDateTakens(folder) else HashMap() val files = when (folder) { FAVORITES -> favoritePaths.filter { showHidden || !it.contains("/.") }.map { File(it) }.toMutableList() as ArrayList @@ -302,7 +302,7 @@ class MediaFetcher(val context: Context) { val videoDuration = if (getVideoDurations && isVideo) path.getVideoDuration() else 0 if (getProperDateTaken) { - dateTaken = dateTakens.remove(filename) ?: lastModified + dateTaken = dateTakens.remove(path) ?: lastModified } val type = when { @@ -390,34 +390,42 @@ class MediaFetcher(val context: Context) { } private fun getFolderDateTakens(folder: String): HashMap { - val projection = arrayOf( - MediaStore.Images.Media.DISPLAY_NAME, - MediaStore.Images.Media.DATE_TAKEN - ) - - val uri = MediaStore.Files.getContentUri("external") - val selection = "${MediaStore.Images.Media.DATA} LIKE ? AND ${MediaStore.Images.Media.DATA} NOT LIKE ?" - val selectionArgs = arrayOf("$folder/%", "$folder/%/%") - val dateTakens = HashMap() - val cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null) - cursor?.use { - if (cursor.moveToFirst()) { - do { - try { - val dateTaken = cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN) - if (dateTaken != 0L) { - val name = cursor.getStringValue(MediaStore.Images.Media.DISPLAY_NAME) - dateTakens[name] = dateTaken + if (folder != FAVORITES) { + val projection = arrayOf( + MediaStore.Images.Media.DISPLAY_NAME, + MediaStore.Images.Media.DATE_TAKEN + ) + + val uri = MediaStore.Files.getContentUri("external") + val selection = "${MediaStore.Images.Media.DATA} LIKE ? AND ${MediaStore.Images.Media.DATA} NOT LIKE ?" + val selectionArgs = arrayOf("$folder/%", "$folder/%/%") + + val cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null) + cursor?.use { + if (cursor.moveToFirst()) { + do { + try { + val dateTaken = cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN) + if (dateTaken != 0L) { + val name = cursor.getStringValue(MediaStore.Images.Media.DISPLAY_NAME) + dateTakens["$folder/$name"] = dateTaken + } + } catch (e: Exception) { } - } catch (e: Exception) { - } - } while (cursor.moveToNext()) + } while (cursor.moveToNext()) + } } } - context.dateTakensDB.getDateTakensFromPath(folder).forEach { - dateTakens[it.filename] = it.taken + val dateTakenValues = if (folder == FAVORITES) { + context.dateTakensDB.getAllDateTakens() + } else { + context.dateTakensDB.getDateTakensFromPath(folder) + } + + dateTakenValues.forEach { + dateTakens[it.fullPath] = it.taken } return dateTakens @@ -460,7 +468,6 @@ class MediaFetcher(val context: Context) { } fun groupMedia(media: ArrayList, path: String): ArrayList { - val mediumGroups = LinkedHashMap>() val pathToCheck = if (path.isEmpty()) SHOW_ALL else path val currentGrouping = context.config.getFolderGrouping(pathToCheck) if (currentGrouping and GROUP_BY_NONE != 0) { @@ -473,6 +480,7 @@ class MediaFetcher(val context: Context) { return thumbnailItems } + val mediumGroups = LinkedHashMap>() media.forEach { val key = it.getGroupingKey(currentGrouping) if (!mediumGroups.containsKey(key)) { From 3e7f99fc01dc285320c079c98e0bfe5df03da250 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jan 2020 23:04:18 +0100 Subject: [PATCH 106/117] fix #1725, properly remember last video playback position, if paused --- .../gallery/pro/fragments/VideoFragment.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 96879d3c1..92b98f653 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 @@ -273,8 +273,12 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } private fun saveVideoProgress() { - if (!videoEnded() && mExoPlayer != null) { - mConfig.saveLastVideoPosition(mMedium.path, mExoPlayer!!.currentPosition.toInt() / 1000) + if (!videoEnded()) { + if (mExoPlayer != null) { + mConfig.saveLastVideoPosition(mMedium.path, mExoPlayer!!.currentPosition.toInt() / 1000) + } else { + mConfig.saveLastVideoPosition(mMedium.path, mPositionAtPause.toInt() / 1000) + } } } From 035d0363e3b10987bf3317aed54d0deefc796831 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jan 2020 23:15:47 +0100 Subject: [PATCH 107/117] fix #1723, recognize panoramic photos by a new xml tag too --- .../simplemobiletools/gallery/pro/fragments/PhotoFragment.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 f5cf3f93e..d7555a5b4 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 @@ -657,7 +657,9 @@ class PhotoFragment : ViewPagerFragment() { mIsPanorama = try { val inputStream = if (mMedium.path.startsWith("content:/")) context!!.contentResolver.openInputStream(Uri.parse(mMedium.path)) else File(mMedium.path).inputStream() val imageParser = JpegImageParser().getXmpXml(ByteSourceInputStream(inputStream, mMedium.name), HashMap()) - imageParser.contains("GPano:UsePanoramaViewer=\"True\"", true) || imageParser.contains("True", true) + imageParser.contains("GPano:UsePanoramaViewer=\"True\"", true) || + imageParser.contains("True", true) || + imageParser.contains("GPano:FullPanoWidthPixels=") } catch (e: Exception) { false } catch (e: OutOfMemoryError) { From f8315438d86fb974a871fee18557ca7a97119428 Mon Sep 17 00:00:00 2001 From: ForgottenUmbrella Date: Mon, 27 Jan 2020 01:41:38 +1100 Subject: [PATCH 108/117] Let ExoPlayer handle video looping seamlessly Now that videos are replacing the inefficient GIF format, gapless loops are important. ExoPlayer's built-in mechanism prebuffers the video to enable this, whereas the current implementation of seeking to the start presents a short but noticeable delay between each loop. Note that this change introduces an incompatibility with current behaviour: due to google/ExoPlayer#6459, certain videos with broken audio tracks that played fine before will no longer start. Disabling the audio track is a workaround to re-enable looping playback, but ExoPlayer does not appear to expose a way to check if the audio track is short enough to produce the bug. --- .../gallery/pro/activities/VideoPlayerActivity.kt | 3 +++ .../simplemobiletools/gallery/pro/fragments/VideoFragment.kt | 3 +++ 2 files changed, 6 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt index bed9bc018..6d0f4f245 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt @@ -214,6 +214,9 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen mExoPlayer = ExoPlayerFactory.newSimpleInstance(applicationContext).apply { seekParameters = SeekParameters.CLOSEST_SYNC audioStreamType = C.STREAM_TYPE_MUSIC + if (config.loopVideos) { + repeatMode = Player.REPEAT_MODE_ONE + } prepare(audioSource) } initExoPlayerListeners() 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 92b98f653..162f98c86 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 @@ -317,6 +317,9 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S mExoPlayer = ExoPlayerFactory.newSimpleInstance(context) mExoPlayer!!.seekParameters = SeekParameters.CLOSEST_SYNC + if (mConfig.loopVideos) { + mExoPlayer?.repeatMode = Player.REPEAT_MODE_ONE + } val isContentUri = mMedium.path.startsWith("content://") val uri = if (isContentUri) Uri.parse(mMedium.path) else Uri.fromFile(File(mMedium.path)) From e83db406a9a0f3cc0ea19fe1de447cfacdd7fddb Mon Sep 17 00:00:00 2001 From: ForgottenUmbrella Date: Mon, 27 Jan 2020 02:12:40 +1100 Subject: [PATCH 109/117] Reset progress views on video loop The previous loop method of seeking to the beginning at video completion ensured that the seekbar and current time text were immediately reset. Using ExoPlayer's own implementation of video looping means that `Player.STATE_ENDED` is no longer reached, thus the UI no longer accurately tracks progress. Restore the old behaviour by resetting the views on position discontinuity. --- .../gallery/pro/activities/VideoPlayerActivity.kt | 8 +++++++- .../gallery/pro/fragments/VideoFragment.kt | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt index 6d0f4f245..6b306ba4c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt @@ -234,7 +234,13 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen override fun onLoadingChanged(isLoading: Boolean) {} - override fun onPositionDiscontinuity(reason: Int) {} + override fun onPositionDiscontinuity(reason: Int) { + // Reset progress views when video loops. + if (reason == Player.DISCONTINUITY_REASON_PERIOD_TRANSITION) { + video_seekbar.progress = 0 + video_curr_time.text = 0.getFormattedDuration() + } + } override fun onRepeatModeChanged(repeatMode: Int) {} 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 162f98c86..56deff9a1 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 @@ -353,7 +353,13 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S override fun onLoadingChanged(isLoading: Boolean) {} - override fun onPositionDiscontinuity(reason: Int) {} + override fun onPositionDiscontinuity(reason: Int) { + // Reset progress views when video loops. + if (reason == Player.DISCONTINUITY_REASON_PERIOD_TRANSITION) { + mSeekBar.progress = 0 + mCurrTimeView.text = 0.getFormattedDuration() + } + } override fun onRepeatModeChanged(repeatMode: Int) {} From 9877cbaf2cde09f190f4ee15a9f51f1973d091d9 Mon Sep 17 00:00:00 2001 From: ForgottenUmbrella Date: Mon, 27 Jan 2020 02:13:25 +1100 Subject: [PATCH 110/117] Remove unreachable branches in video completion handling It is never the case that `loopVideos == true` in the `videoCompleted` handler, since enabling that preference sets `repeatMode`, which in turn prevents the player from reaching `STATE_ENDED`. Thus, the branches are unreachable. --- .../gallery/pro/activities/VideoPlayerActivity.kt | 10 +++------- .../gallery/pro/fragments/VideoFragment.kt | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt index 6b306ba4c..27839af11 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt @@ -347,13 +347,9 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen clearLastVideoSavedProgress() mCurrTime = (mExoPlayer!!.duration / 1000).toInt() - if (config.loopVideos) { - resumeVideo() - } else { - video_seekbar.progress = video_seekbar.max - video_curr_time.text = mDuration.getFormattedDuration() - pauseVideo() - } + video_seekbar.progress = video_seekbar.max + video_curr_time.text = mDuration.getFormattedDuration() + pauseVideo() } private fun didVideoEnd(): Boolean { 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 56deff9a1..bc7a69b56 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 @@ -681,13 +681,9 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S } mCurrTime = (mExoPlayer!!.duration / 1000).toInt() - if (listener?.videoEnded() == false && mConfig.loopVideos) { - playVideo() - } else { - mSeekBar.progress = mSeekBar.max - mCurrTimeView.text = mDuration.getFormattedDuration() - pauseVideo() - } + mSeekBar.progress = mSeekBar.max + mCurrTimeView.text = mDuration.getFormattedDuration() + pauseVideo() } private fun cleanup() { From 61ded74c064f9e1ba788d36bca95f76e19a12f69 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 28 Jan 2020 18:45:22 +0100 Subject: [PATCH 111/117] update commons to 5.21.28 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 9b9269853..9fefcf351 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.21.25' + implementation 'com.simplemobiletools:commons:5.21.28' 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 2476b974524c261fd69b15e3eb53707dd785fac9 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 28 Jan 2020 18:51:28 +0100 Subject: [PATCH 112/117] properly launch the main activity on first app use --- .../simplemobiletools/gallery/pro/activities/SplashActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt index 45332bcd2..9d0c0cc79 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SplashActivity.kt @@ -18,6 +18,7 @@ class SplashActivity : BaseSplashActivity() { } else { if (config.appRunCount == 0) { config.wereFavoritesMigrated = true + launchActivity() } else { config.wereFavoritesMigrated = true ensureBackgroundThread { From 6bb6853d4907d787b0b278badd27c0b1033ad49e Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 28 Jan 2020 19:02:48 +0100 Subject: [PATCH 113/117] update version to 6.12.0 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9fefcf351..759a1442b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 288 - versionName "6.11.8" + versionCode 289 + versionName "6.12.0" multiDexEnabled true setProperty("archivesBaseName", "gallery") vectorDrawables.useSupportLibrary = true From 8840a1ad0a945f6464576e281a9c051291d4fa74 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 28 Jan 2020 19:02:56 +0100 Subject: [PATCH 114/117] updating changelog --- CHANGELOG.md | 12 ++++++++++++ fastlane/metadata/android/en-US/changelogs/289.txt | 8 ++++++++ 2 files changed, 20 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/289.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index a76981def..c4d6db2ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,18 @@ Changelog ========== +Version 6.12.0 *(2020-01-28)* +---------------------------- + + * Properly handle sorting by date taken after using "Fix Date Taken values" on the wrong files + * Fixed some issues at copying files, when the source was on an SD card + * Change the way Favorite items are stored, to avoid accidental removal + * Improved video looping (by ForgottenUmbrella) + * Recognize a new type of panoramic photos + * Properly remember last video playback position if the video is paused on exit + * Properly color the top status bar icons at using light primary colors + * Other UX and translation improvements + Version 6.11.8 *(2020-01-19)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/289.txt b/fastlane/metadata/android/en-US/changelogs/289.txt new file mode 100644 index 000000000..6c4167f4f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/289.txt @@ -0,0 +1,8 @@ + * Properly handle sorting by date taken after using "Fix Date Taken values" on the wrong files + * Fixed some issues at copying files, when the source was on an SD card + * Change the way Favorite items are stored, to avoid accidental removal + * Improved video looping (by ForgottenUmbrella) + * Recognize a new type of panoramic photos + * Properly remember last video playback position if the video is paused on exit + * Properly color the top status bar icons at using light primary colors + * Other UX and translation improvements From 4d96af4d7fbafb9561efee321530fe3361bc3f16 Mon Sep 17 00:00:00 2001 From: akcanSoft Date: Wed, 29 Jan 2020 12:15:04 +0300 Subject: [PATCH 115/117] new tr strings updated --- app/src/main/res/values-tr/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index bb700f47a..f04d9abc6 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -317,9 +317,9 @@ - Basit Galeri Pro - Fotoğraf Yönetici & Düzenleyici + Basit Galeri Pro - Fotoğraf Yönetici, Düzenleyici - Browse your memories without any interruptions with this photo and video gallery + Bu fotoğraf ve video galerisinde kesintisiz olarak anılarınıza göz atın Basit Galeri Pro, özelleştirilebilir bir çevrimdışı galeridir. Fotoğraflarınızı düzenleyin ve organize edin, geri dönüşüm kutusuyla silinen dosyaları kurtarın, dosyaları koruyun ve gizleyin ve RAW, SVG ve çok daha fazlası dahil olmak üzere çok çeşitli fotoğraf ve video formatlarını görüntüleyin. From 0faf477e41f66dd4f9253d6e4e8f3862d571882b Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 29 Jan 2020 11:04:38 +0100 Subject: [PATCH 116/117] updating the turkish app fastlane data --- fastlane/metadata/android/tr/short_description.txt | 2 +- fastlane/metadata/android/tr/title.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fastlane/metadata/android/tr/short_description.txt b/fastlane/metadata/android/tr/short_description.txt index 690c2cc5a..66c5ba9e8 100644 --- a/fastlane/metadata/android/tr/short_description.txt +++ b/fastlane/metadata/android/tr/short_description.txt @@ -1 +1 @@ -Reklamsız çevrimdışı galeri. Fotoğraf & videolarınızı yönetin ve düzenleyin +Bu fotoğraf ve video galerisinde kesintisiz olarak anılarınıza göz atın diff --git a/fastlane/metadata/android/tr/title.txt b/fastlane/metadata/android/tr/title.txt index 7110dfc6f..5a8fd5a45 100644 --- a/fastlane/metadata/android/tr/title.txt +++ b/fastlane/metadata/android/tr/title.txt @@ -1 +1 @@ -Basit Galeri Pro - Fotoğraf Yönetici & Düzenleyici +Basit Galeri Pro - Fotoğraf Yönetici, Düzenleyici From 193b5c1f2f8eb152bd59433daed91410802fdfbe Mon Sep 17 00:00:00 2001 From: Luis Alfredo Figueroa Bracamontes Date: Wed, 29 Jan 2020 20:14:14 -0600 Subject: [PATCH 117/117] =?UTF-8?q?Update=20strings.xml=20Espa=C3=B1ol?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The new editor translations --- app/src/main/res/values-es/strings.xml | 148 ++++++++++++------------- 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e5ab52d0e..f64c4896c 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -203,85 +203,85 @@ Alternar visibilidad de archivo - Custom - Reset - Square - Transform - Filter - None - Adjust - Shadows - Exposure - Highlights - Brightness - Contrast - Saturation - Clarity - Gamma - Blacks - Whites - Temperature - Sharpness - Reset - Focus - None + Personalizado + Reiniciar + Cuadrado + Recortar + Filtros + Ninguno + Ajustes + Sombras + Exposición + Luces + Brillo + Contraste + Saturación + Claridad + Colores + Negros + Blancos + Temperatura + Nitidez + Reiniciar + Enfoque + Ninguno Radial - Linear - Mirrored - Gaussian - Text - Text Options - Text Color - Font - Add - Edit - Straighten - Font + Lineal + Reflejado + Gaussiano + Texto + Opciones de texto + Color de texto + Fuente + Añadir + Editar + Enderezar + Fuente Color - BG Color - Alignment - To Front - Delete - Your text - Brush + Color de fondo + Alineación + Traer al frente + Eliminar + Tu texto + Pincel Color - Size - Hardness - To Front - Delete - Brush Color + Tamaño + Dureza + Traer al frente + Eliminar + Color del pincel Editor - Close Editor? - Do you really want to discard the image? - Yes + ¿Cerrar editor? + ¿Realmente quieres descartar la imagen? + No - Cancel - Accept - Save - Exporting image… - Exporting image %s. - Flip H - Flip V - Undo - Redo - Color Picker - Transparent - White - Gray - Black - Light blue - Blue - Purple - Orchid - Pink - Red - Orange - Gold - Yellow - Olive - Green - Aquamarin - Pipettable color + Cancelar + Aceptar + Guardar + Exportando imagen… + Exportando imagen %s. + Girar Hor + Girar Vert + Deshacer + Rehacer + Cuentagotas + Transparente + Blanco + Gris + Negro + Azul claro + Azul + Púrpura + Orquídea + Rosa + Rojo + Naranja + Dorado + Amarillo + Oliva + Verde + Aguamarina + Color pipetable ¿Cómo puedo hacer que Simple Gallery sea la galería de dispositivos predeterminada?