Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Android version #2147

Closed
30 of 41 tasks
Bionus opened this issue Oct 19, 2020 · 19 comments
Closed
30 of 41 tasks

Android version #2147

Bionus opened this issue Oct 19, 2020 · 19 comments

Comments

@Bionus
Copy link
Owner

Bionus commented Oct 19, 2020

About

Grabber is going mobile! 馃帀
And it needs testers!

Creating this ticket for general discussion about the Android version.
This version is not officially supported yet, so please do not open other issues for it, please keep everything here.

Goal of this ticket:

  • General discussion related to the mobile version
  • General feedback
  • General suggestions about existing features (please don't just suggest new features from the desktop version)
  • Discussion about the roadmap / prioritization of features
  • Report bugs / crashes (please check the "known issues" and other comments beforehand)

Download

It can be downloaded here (Grabber_nightly.apk): nightly.
Or for the direct download link: Grabber_nightly.apk

Features

Existing

  • Basic browsing (search and pagination)
  • Source selection among default sources
  • View an image
  • GIF and video support
  • Check an image's tags (colored)
  • Color in the search field
  • Saving single files from the image screen
  • Adding new sources
  • Translation
  • Basic source settings (HTTPS...)
  • Swipe results from the image window
  • Settings (filename, save location, interface, MD5...)
  • Blacklist / removed / ignored tags
  • Proxy settings
  • Proper "back" button handling
  • Theming (UI colors, day / night)
  • Source login
  • Post-filters
  • Favorites
  • Search auto-completion
  • settings.json import / export

Short term

  • Source settings (interval / source order / cookies / headers)
  • Individual tag types settings (for filenaming)
  • Allow to change the image window background color

Medium term

  • Update checker
  • Custom tag type colors
  • Add proper image download indicator
  • "Pull down" to refresh results
  • Add setting to default to HD version

Long term

  • Handle "already existing" images
  • Better import settings feature, with blacklist & co, plus documentation on how to generate it on Windows
  • Multi-source selection
  • Multi-image select for download (like ctrl+click on windows)
  • Infinite scroll / browse
  • Batch downloads
  • Monitors
  • Think about how to handle a huge MD5 database

Very long term

  • Token drag & drop for filename

Other applications

If you know any other application of which I can take inspiration from, please do tell in the comments!

Known issues

  • 馃敶 Saving doesn't seem to support SD cards
  • 馃煝 The copy/paste buttons in the search field go under the notification bar and are not accessible
  • 馃煝 Restoring from "deep sleep" loses the application state

Screenshots

drawer search image tags sources source-add source-settings settings settings-interface

FAQ

It's ugly!

Feel free to suggest improvements to the UI/UX!
Until then I'm blatantly copying taking inspiration from existing applications.

What about iOS?

I don't have an Apple license, so even if I manage to build it it's unlikely you'll be able to install it on an iPhone. So for now, I'm concentrating on the Android version. I've tried a little with Github actions but didn't go very far, you can see the workflow file here: ios.yml. Feel free to fix it, and if you manage to generate a releasable file, comment or make a PR!

What about the desktop version?

The desktop version will always be supported, and likely to remain the main platform for most users. And while working on the mobile version will take some time that I could invest on the desktop version instead, there's one huge big that was actually the driving factor for this decision.

Currently, the desktop version is divided into two projects: the GUI (sources), and the library (sources). The separation of concerns should be clear: the library does all the "logic" while the GUI only shows stuff. However, because Grabber is almost 10 years old (early 2011), lots of old code is actually mixed in the GUI. And while the library is easy to test, the GUI today is not tested at all. I could invest in some GUI testing framework and write a bunch of scenarios, but that's a huge pain. So currently, a lot of code is simply untested in Grabber, which explains most crashes and regressions.

However, with a new mobile UI, it would force the code out of the desktop GUI (since it can't be re-used if it's not in the library code). That means that the more things are implemented in the mobile version, the more things are getting actually proper testing, and the less likely the desktop version is to bug or crash.

What about translations? Can I help?

Currently, there is English and French translations as a proof of concept. Other translations can be made using Crowdin, however, given the interface is currently very new, I don't recommend starting working on those at the moment since there might be big interface changes causing strings to be made obsolete. I'd suggest waiting for the official release, unless you're motivated to have a translation in your language ASAP!

There's already many existing applications that do the same thing!

Yes, I even listed a bunch in this post. Although most of them are good for basic things, I believe that Grabber has some useful features that are not present in those applications.

When will it be ready?

When most "vital" features are implemented and the application is stable enough, I'll include it in the releases.
As for when that is exactly, it'll be ready when it's ready.

@XutaxKamay
Copy link

Hello!

I'm just coming here to tell that it doesn't seem to support android/oxygen 11 ?
It might be normal since it's relatively new, for now I'm just building it myself.

Thank you for creating the application. :)

@Bionus
Copy link
Owner Author

Bionus commented Oct 23, 2020

What do you mean it doesn't support it? It should at least start on it.
And how did you build it differently to avoid this issue?

If it's the "Built for an older version of Android" message on start-up it happens on pretty much all Android versions AFAIK, I had the same thing on my Android 10 phone.

@XutaxKamay
Copy link

XutaxKamay commented Oct 23, 2020

Oh right, yes I had the exact same error, I was building it with qtcreator, in fact I wanted to build it later but I realized there was errors during cmake, do you mind to tell me how you're configuring with cmake?

The fact is that I can't even start it because of that error, it's strange.
It feels more like crashing at the start though.
I've never developed on android so I can't tell you what happens but I'll edit this post until I find more information

@Bionus
Copy link
Owner Author

Bionus commented Oct 23, 2020

Weird. The build is not trivial since it's cross-build so I wouldn't really recommend it.
And this message absolutely shouldn't stop the app from opening. Clicking OK should be more than enough and it should go on to the application. It might indeed be some kind of crash, which would be hard to investigate.

Here's the cmake command for Linux:

cmake ../src \
-DVERSION="$GRABBER_VERSION" \
-DANDROID_ABI:STRING=armeabi-v7a \
-DANDROID_BUILD_ABI_arm64-v8a:BOOL=OFF \
-DANDROID_BUILD_ABI_armeabi-v7a:BOOL=ON \
-DANDROID_BUILD_ABI_x86:BOOL=OFF \
-DANDROID_BUILD_ABI_x86_64:BOOL=OFF \
-DANDROID_NATIVE_API_LEVEL:STRING=21 \
-DANDROID_NDK:PATH=$ANDROID_SDK_ROOT/ndk-bundle \
-DANDROID_SDK:PATH=$ANDROID_SDK_ROOT \
-DANDROID_STL:STRING=c++_shared \
-DCMAKE_BUILD_TYPE:STRING=Debug \
-DCMAKE_CXX_COMPILER:STRING=$ANDROID_SDK_ROOT/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ \
-DCMAKE_C_COMPILER:STRING=$ANDROID_SDK_ROOT/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang \
-DCMAKE_FIND_ROOT_PATH:STRING=$Qt5_DIR \
-DCMAKE_PREFIX_PATH:STRING=$Qt5_DIR \
-DCMAKE_TOOLCHAIN_FILE:PATH=$ANDROID_SDK_ROOT/ndk-bundle/build/cmake/android.toolchain.cmake \
-DQT_QMAKE_EXECUTABLE:STRING=$Qt5_DIR/bin/qmake

And here's the one for Windows:

cmake ^
-G"MinGW Makefiles" ^
-DQT_VERSION="5.12.3" ^
-DANDROID_TARGET_ARCH="armeabi-v7a" ^
-DANDROID_TOOLCHAIN="clang" ^
-DCMAKE_C_COMPILER="%ANDROID_NDK%/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe" ^
-DCMAKE_CXX_COMPILER="%ANDROID_NDK%/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe" ^
-DCMAKE_TOOLCHAIN_FILE="%ANDROID_NDK%/build/cmake/android.toolchain.cmake" ^
-DCMAKE_MAKE_PROGRAM="%ANDROID_NDK%/prebuilt/windows-x86_64/bin/make.exe" ^
-DQt5AndroidExtras_DIR="%QT_CMAKE%/Qt5AndroidExtras" ^
-DQt5Concurrent_DIR="%QT_CMAKE%/Qt5Concurrent" ^
-DQt5Core_DIR="%QT_CMAKE%/Qt5Core" ^
-DQt5Gui_DIR="%QT_CMAKE%/Qt5Gui" ^
-DQt5LinguistTools_DIR="%QT_CMAKE%/Qt5LinguistTools" ^
-DQt5Multimedia_DIR="%QT_CMAKE%/Qt5Multimedia" ^
-DQt5Network_DIR="%QT_CMAKE%/Qt5Network" ^
-DQt5Qml_DIR="%QT_CMAKE%/Qt5Qml" ^
-DQt5Quick_DIR="%QT_CMAKE%/Qt5Quick" ^
-DQt5Sql_DIR="%QT_CMAKE%/Qt5Sql" ^
-DQt5Test_DIR="%QT_CMAKE%/Qt5Test" ^
-DQt5Widgets_DIR="%QT_CMAKE%/Qt5Widgets" ^
-DQt5Xml_DIR="%QT_CMAKE%/Qt5Xml" ^
../src
_(QT_CMAKE is something like "C:/Qt/Qt5.12.3/5.12.3/android_armv7/lib/cmake", I couldn't make it work with `DCMAKE_PREFIX_PATH` so I put all dirs manually)_

Then you just need to build targeting gui-qml_apk:

cmake ^
--build . ^
--target gui-qml_apk ^
--config Release ^
-- -j 4

@XutaxKamay
Copy link

XutaxKamay commented Oct 24, 2020

Hm, I'm still having issues generating the project somehow:

cmake ../src \                                                                                                                                                                                                                              
-DVERSION="$GRABBER_VERSION" \
-DANDROID_ABI:STRING=armeabi-v7a \
-DANDROID_BUILD_ABI_arm64-v8a:BOOL=OFF \
-DANDROID_BUILD_ABI_armeabi-v7a:BOOL=ON \
-DANDROID_BUILD_ABI_x86:BOOL=OFF \
-DANDROID_BUILD_ABI_x86_64:BOOL=OFF \
-DANDROID_NATIVE_API_LEVEL:STRING=21 \
-DANDROID_NDK:PATH=$ANDROID_NDK_ROOT \
-DANDROID_SDK:PATH=$ANDROID_SDK_ROOT \
-DANDROID_STL:STRING=c++_shared \
-DCMAKE_BUILD_TYPE:STRING=Debug \
-DCMAKE_CXX_COMPILER:STRING=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ \
-DCMAKE_C_COMPILER:STRING=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/clang \
-DCMAKE_FIND_ROOT_PATH:STRING=$Qt5_DIR \
-DCMAKE_PREFIX_PATH:STRING=$Qt5_DIR \
-DCMAKE_TOOLCHAIN_FILE:PATH=$ANDROID_NDK_ROOT/build/cmake/android.toolchain.cmake \
-DQT_QMAKE_EXECUTABLE:STRING=$Qt5_DIR/bin/qmake \
> -DJAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
-- Configuring for version '1.0'
-- Configuring for platform 'x86' (armv7-a)
CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:126 (add_custom_target):
  add_custom_target cannot create target "apk" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Concurrent/Qt5ConcurrentConfig.cmake:96 (find_package)
  gui/CMakeLists.txt:38 (find_package)


CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:135 (add_custom_target):
  add_custom_target cannot create target "aab" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Concurrent/Qt5ConcurrentConfig.cmake:96 (find_package)
  gui/CMakeLists.txt:38 (find_package)


-- Compiling with SSL support
/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl
-- Android libs: /media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/arm/libcrypto_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/arm/libssl_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/arm64/libcrypto_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/arm64/libssl_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/x86/libcrypto_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/x86/libssl_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/x86_64/libcrypto_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/x86_64/libssl_1_1.so
-- Found Qt for Android: /opt/Qt/5.15.1/android
-- Found Android SDK: /home/kamay/Android/Sdk
-- Found Android NDK: /home/kamay/Android/Sdk/ndk/21.1.6352462
-- Found Android SDK build tools version: 30.0.2
CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:126 (add_custom_target):
  add_custom_target cannot create target "apk" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  gui-qml/CMakeLists.txt:7 (find_package)


CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:135 (add_custom_target):
  add_custom_target cannot create target "aab" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  gui-qml/CMakeLists.txt:7 (find_package)


-- Compiling with SSL support
/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl
-- Android libs: /media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/arm/libcrypto_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/arm/libssl_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/arm64/libcrypto_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/arm64/libssl_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/x86/libcrypto_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/x86/libssl_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/x86_64/libcrypto_1_1.so;/media/sda2/git/imgbrd-grabber/src/cmake/android_openssl/latest/x86_64/libssl_1_1.so
-- Found Qt for Android: /opt/Qt/5.15.1/android
-- Found Android SDK: /home/kamay/Android/Sdk
-- Found Android NDK: /home/kamay/Android/Sdk/ndk/21.1.6352462
-- Found Android SDK build tools version: 30.0.2
CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:126 (add_custom_target):
  add_custom_target cannot create target "apk" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  cli/CMakeLists.txt:5 (find_package)


CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:135 (add_custom_target):
  add_custom_target cannot create target "aab" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  cli/CMakeLists.txt:5 (find_package)


CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:126 (add_custom_target):
  add_custom_target cannot create target "apk" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  tests/CMakeLists.txt:9 (find_package)


CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:135 (add_custom_target):
  add_custom_target cannot create target "aab" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  tests/CMakeLists.txt:9 (find_package)


CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:126 (add_custom_target):
  add_custom_target cannot create target "apk" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  e2e/CMakeLists.txt:3 (find_package)


CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:135 (add_custom_target):
  add_custom_target cannot create target "aab" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  e2e/CMakeLists.txt:3 (find_package)


CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:126 (add_custom_target):
  add_custom_target cannot create target "apk" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  crash-reporter/CMakeLists.txt:3 (find_package)


CMake Error at /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5AndroidSupport.cmake:135 (add_custom_target):
  add_custom_target cannot create target "aab" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory "/media/sda2/git/imgbrd-grabber/src/lib".  See
  documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake:94 (include)
  /opt/Qt/5.15.1/android/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:232 (include)
  crash-reporter/CMakeLists.txt:3 (find_package)

What do you recommend me to do? Seems like there's a conflict with /src/lib cmake configuration.
Now that I notice it, it's the same errors I get with QtCreator.
Do you have a social media so we can chat please when you're not busy ? It would take less time to solve issues (xutaxkamay@gmail.com)

@Bionus
Copy link
Owner Author

Bionus commented Oct 24, 2020

There's a Gitter chat: https://gitter.im/imgbrd-grabber/Lobby

Although your issue seem to be from using a too recent Qt version. I heard they made changes to the way they manage Android in Qt with CMake in recent versions, and that might be the cause. I'm currently using 5.12 for building.

I'll try to build with 5.15 and see if I can reproduce the issue.

@Bionus
Copy link
Owner Author

Bionus commented Nov 2, 2020

Screenshots updated with latest version (Material design, new search field, new results layout).

@xodiack
Copy link

xodiack commented Dec 9, 2020

Regarding the changes made in response to #2201 specifically the 4th point ,when changing the source and then using the phones back button / gesture to return to the prior screen, it seems to not save which source it changed to. If instead, I use the arrow on the top left to return to the previous screen it will correctly change and remember its setting.

For example, starting with danbooru selected, I change it to gelbooru. I then gesture out and search. The log will show it pulling results from danbooru rather than gelbooru. If I go back into the source selection (same session) it will show gelbooru is selected as the source. Exiting the app and reloading will correct this screen to show danbooru as the source its pulling from.

If I instead do the same above but use the UI buttons, it will correctly change and remember when going from danbooru to gelbooru as a source.

--

Some somewhat related further suggestions:

For the action buttons on the top/bottom, could they be spaced out from each other horizontally more? Increasing the spacing by 50% between each would work for my phone's screen size. A UI scaling slider could work to accommodate other's as I'm unsure how it behaves in landscape or differing phone sizes in portrait.

Lastly, when an image is saved with the button, could there be some kind of visual feedback to show it has been saved? Maybe something similar to the desktop where the "save" button turns to "delete" once its on disk in your download directory?

Let me know if I need to clarify anything.

@AwJeezLouise
Copy link

Heyo!

I want to recommend Tachiyomi as an app for potential inspiration.

It's a mobile app, open source manga reader that supports bulk downloading. It's gallery-based like e-hentai, but it looks like you're trying to make a imgbrd/gallery board hybrid, so it should help?

@Bionus
Copy link
Owner Author

Bionus commented Jan 2, 2021

Regarding the changes made in response to #2201 specifically the 4th point ,when changing the source and then using the phones back button / gesture to return to the prior screen, it seems to not save which source it changed to. If instead, I use the arrow on the top left to return to the previous screen it will correctly change and remember its setting.

Indeed, seems to have been an oversight.

For the action buttons on the top/bottom, could they be spaced out from each other horizontally more? Increasing the spacing by 50% between each would work for my phone's screen size. A UI scaling slider could work to accommodate other's as I'm unsure how it behaves in landscape or differing phone sizes in portrait.

I'll consider it, but for now I like having the UI consistent. Maybe I'll add something like that when I add a more advanced theme customizer in the settings (instead of just primary / secondary colors).

Lastly, when an image is saved with the button, could there be some kind of visual feedback to show it has been saved? Maybe something similar to the desktop where the "save" button turns to "delete" once its on disk in your download directory?

Yes it's planned as it's currently not clear when the image is saving / saved. There's also no indicator when an image is already saved.

I want to recommend Tachiyomi as an app for potential inspiration.

I indeed like their UI, but I don't think the UX would fit given how Grabber is more linked to "searching", while Tachiyomi is more tracking individual mangas (or "galleries" in Grabber's terms) and download. 馃槄

@PookaMustard
Copy link

Didn't know Grabber had an Android version in the works. Assuming its issues are dealt with, there will be little need to even consider some of the listed alternatives, especially when only one of them supports Sankaku (and AFAIK support for that has been broken too). Greatness.

There are two issues I found when using the app, though:

  • If you view a picture, download it, then swipe left or right to download another picture, only the first picture is actually downloaded. Later ones don't get downloaded at all.
  • Also while viewing a picture, if you switch out of the app to another app or the homescreen the instant after pressing download, the resulting download is corrupted/incompleted.

Thanks for taking the time to develop the Android app!

@bahari15
Copy link

bahari15 commented May 11, 2021

Hello, I want to report an error, so basically just like the tags error that has been posted in the issues couple months ago.
In android version, particularly in rule34.xxx, the app does not distinguish the artist, copyright, and character tags, thus lumping them together with general tags.
I'm currently using the grabber nightly version on my phone.
Please fix this issue, thanks.

@bahari15
Copy link

bahari15 commented Sep 4, 2021

Does this support chan sankaku? Because I couldn't find it in source despite it being present on your preview pic

@GlassedSilver
Copy link
Contributor

Is there any update on the monitoring feature for Android?

I'd love to auto-pull some searches and then set my tablet's screen saver to source that folder, which would yield me an auto-updating digital picture frame with all my pics of choice. :D

@Bionus
Copy link
Owner Author

Bionus commented Nov 14, 2021

That's a good idea, but there's indeed no monitoring at the moment.
The big issue would be running the app in the background. Monitoring as long as the app is open/on-startup would be easier but kinda miss the point.

@GlassedSilver
Copy link
Contributor

How would that be an issue? I have all sorts of apps that do background tasks, granted depending on your OEM you have to do some system setting fixing to facilitate this, but far cry from impossible.

SD Maid does auto tasks on a schedule, I have a web site monitor on a Samsung phone as well watching some shops and stuff detecting changes like something being in stock again very reliably, independent push services that don't hook into Google's cloud can be made to self-execute check for possible notifications, ...

It's certainly possible. Only limitation is that on some Android versions you need a constant notification, but you can minimize it and have it get out of your way. Similar to Windows' systray icons.

@bahari15
Copy link

Hello, I want to ask, why is danbooru stuck on eternal loading in the apk?
Is there some settings that I need to change or what?

@Bionus Bionus unpinned this issue Jul 23, 2023
@Bionus
Copy link
Owner Author

Bionus commented Jul 23, 2023

Hello, I want to ask, why is danbooru stuck on eternal loading in the apk?
Is there some settings that I need to change or what?

I believe it's the same Cloudflare issue as the desktop one, so it's unrelated to the Android version.

@Bionus
Copy link
Owner Author

Bionus commented Jul 23, 2023

On another note, given the Android version has been out for a while, I'll just close this issue since it can use individual issues instead, which is more efficient 馃槃

@Bionus Bionus closed this as completed Jul 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants