Client merge requestshttps://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests2017-09-28T02:30:58Zhttps://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/584Swipe to dismiss updates2017-09-28T02:30:58Zusername-removed-25042Swipe to dismiss updatesFixes #1131. Though not using the full UX described by Carrie. Rather than revealing a hidden menu with a button to dismiss, it will instead respond (hopefully-) appropriately depending on the item being dismissed:
* **Ready to insta...Fixes #1131. Though not using the full UX described by Carrie. Rather than revealing a hidden menu with a button to dismiss, it will instead respond (hopefully-) appropriately depending on the item being dismissed:
* **Ready to install** - We'll forget you ever wanted to install it. It stays in the cache, but the prompt to install will go away until you ask to install it again. Doesn't bother showing a toast.
* **Downloading** - Download will be canceled. Shows a Toast with "Download canceled"
* **Installed, ready to run** - Remove the item from the updates tab. Note that this happens already after tapping "Run" once, or even closing F-Droid then reopening. But it makes perfect sense to swipe and dismiss this too. Doesn't bother showing a toast.
* **Can be updated** - Same as if you went to app details and checked "Ignore this update". Shows a toast saying "Update Ignored".1.0https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/571WIP: Change background colors of dark theme to material default ones2017-09-25T00:09:14Zusername-removed-723773WIP: Change background colors of dark theme to material default onesThe dark theme colors were set to full black for many screen backgrounds which made the elevation shadows invisible. I removed many of the color overrides so the default gray values for dark themes are used (https://material.io/guideline...The dark theme colors were set to full black for many screen backgrounds which made the elevation shadows invisible. I removed many of the color overrides so the default gray values for dark themes are used (https://material.io/guidelines/style/color.html#color-themes). This way all main screens (settings, new, swap, etc.) have the same background color and overall color scheme. Also, the app details screen now has much more contrast.
Additionally I removed the green ripple color (which looked a bit off - especially on the blue bottom navigation) so the default gray one is used instead.
![Screenshot_20170828-204929](/uploads/d4f3c764e35070a4e40264e83d6ccf2f/Screenshot_20170828-204929.png)
Please let me know if I should do more changes or roll back something.https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/551Don't show apps/categories after disabling repo.2017-06-30T14:17:34Zusername-removed-25042Don't show apps/categories after disabling repo.This was setup to work correctly, but for two problems:
* The `cursor.close()` in `CategoriesViewBinder` stops the cursor from
being requeried when required.
* The `AppProvider` was not notifying correctly after deleting apps
...This was setup to work correctly, but for two problems:
* The `cursor.close()` in `CategoriesViewBinder` stops the cursor from
being requeried when required.
* The `AppProvider` was not notifying correctly after deleting apps
belonging to a repo.
Fixes #1028.1.0-alpha0https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/550Add progress reporting for index-v1 (using `LocalBroadcastManager`)2017-07-05T15:44:08Zusername-removed-25042Add progress reporting for index-v1 (using `LocalBroadcastManager`)A reimagination of !548, using `LocalBroadcastManager` as suggested.
I still think `LocalBroadcastManager` is a terrible API, but this works fine and reads pretty well.
If it is too messy or too large a change, feel free to merge !54...A reimagination of !548, using `LocalBroadcastManager` as suggested.
I still think `LocalBroadcastManager` is a terrible API, but this works fine and reads pretty well.
If it is too messy or too large a change, feel free to merge !548 and close this. Alternatively, if this is merged, could you please close !548 in response.
This refactors existing progress handling between `RepoUpdater` and
`UpdateService` to use `LocalBroadcastManager` in preference to
`ProgressListener`. Still needs to use `ProgressListener` to talk
between `RepoUpdater` and the `Downloader` +
`ProgressBufferedInputStream`.
The only change that is related to something more important than
notifications is the fact that now `IndexV1Updater` makes use of the
`indexUrl`. To do so, because it is final, the base class constructor
delegates to `getIndexUrl()` which is overriden by the v1 updater.
This is required because we want to differentiate between broadcasts
coming from different repo update processes.
Fixes #1054.username-removed-24982username-removed-24982https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/549Refactor `AppListItemController` to improve updates tab stability2017-09-15T09:12:42Zusername-removed-25042Refactor `AppListItemController` to improve updates tab stabilityThere have been a host of stability problems around the updates tab.
A lot of it revolves around the complexity of `AppListItemController`. What seemed as a good idea at the time (code reuse for common layouts - i.e. those with an app...There have been a host of stability problems around the updates tab.
A lot of it revolves around the complexity of `AppListItemController`. What seemed as a good idea at the time (code reuse for common layouts - i.e. those with an app icon, name,, and perhaps a button or progress indicator) has already grown into something unmaintainable. As such, this redesigns the class to make it more understandable, maintainable, and theoretically it is now quite testable if somebody felt the desire to write tests for the UI too.
The main problem being addressed, is that different parts of the UI are updated in response to different events. For example, a download event may cause just the progress bar to show and update, but it doesn't actively hide unrelated widgets. Instead, it just presumes that they were correctly hidden earlier. This results in oddities like the progress bar being shown behind the "Update" button after a download is complete.
You can think of it as:
* Callack 1:
* Update widget X:
* Is app in state a, b, or c?
* Update widget Y:
* Is app in state b or c?
* Update widget Z:
* Is app in state a?
* Callback 2:
* Update widget x:
* Is app in state a or b?
* Update widget Z:
* Is app in state c?
It is too easy to have each widget updated in a manner which is incongruous with the other widgets, because they don't interrogate the apps state consistently.
The new design works by only having one method responsible for updating the view, and each event/callback/whatever which wants to update the view is responsible for invoking that. It also separates the business logic from the UI code so that they can both be audited separately. This is done by having the business logic write to a really dump `AppListItemState` class which is only responsible for representing the current state of the UI.
You can think of this as:
* Callback 1:
* Refresh view:
* Is app in state a, b, or c?
* Update widget X
* Update widget Y
* Update widget Z
* Callback 2:
* Refresh view:
* Is app in state a?
* Update widget X
* Update widget Y
* Update widget Z
Here each single callback results in updating all the widgets. This is much more predictable. If it becomes a performance problem then we can look at optimizing it, but anecdotally it doesn't seem problematic.
After working with it during refactoring, I think this is much better. It also behaves much better than it used to when using the updates tab.1.0-alpha0https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/548Add progress reporting for index-v12017-07-03T06:30:43Zusername-removed-25042Add progress reporting for index-v1Fixes #1054.Fixes #1054.1.0-alpha0https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/535Add final artwork and correctly read colours.2017-06-08T10:19:32Zusername-removed-25042Add final artwork and correctly read colours.It was pointed out in #1039 that some category backgrounds were missing. We indeed don't have artwork for all backgrounds, but I did neglect to add the Games category background that Carrie created. In addition, I also noticed that I was...It was pointed out in #1039 that some category backgrounds were missing. We indeed don't have artwork for all backgrounds, but I did neglect to add the Games category background that Carrie created. In addition, I also noticed that I wasn't using the colours that Carrie suggested, so this fixes the code which asks for the category background colours.
Fixes #1039.https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/530Fix incorrect persistent + annoying notification to update F-Droid.2017-06-08T22:45:42Zusername-removed-25042Fix incorrect persistent + annoying notification to update F-Droid.There is a persistent shared preference which dictates whether apps
have been successfully downloaded and are ready to install. When
the `InstallManagerService` used to receive an `ACTION_INSTALL_COMPLETE`
broadcast, it would update t...There is a persistent shared preference which dictates whether apps
have been successfully downloaded and are ready to install. When
the `InstallManagerService` used to receive an `ACTION_INSTALL_COMPLETE`
broadcast, it would update this preference to no longer be installing.
However, this never got received in the case of F-Droid updating itself.
In that case, we need to instead wait for the system to broadcast an
`Intent.ACTION_PACKAGE_ADDED` intent. This change waits until that
point before removing the preference.
**NOTE:** This is a little tricky to test with the F-Droid package, so I've done testing with other packages that are not F-Droid and it works quite well. Specifically, if I comment out [this line](https://gitlab.com/fdroid/fdroidclient/blob/73b135ab0398d42bdf886b6de18c0334607adc50/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProviderService.java#L230) then it indeed does replicate the but in #1027 for all apps. That is, they all continue to show the "App is ready to install" notification repeatedly. Then reverting to this change fixes the bug for those apps.
Fixes #1027, #776.0.104https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/471Even more ui fixes2017-04-17T06:46:34Zusername-removed-25042Even more ui fixesMore minor fixes to the UI/UX, including a regression from 0.102 (68917526729), a regression from 0.103-alpha1 (46da776c2c1), and some other minor quirks which I found quite annoying while using the latest alphas.
Each commit is quite s...More minor fixes to the UI/UX, including a regression from 0.102 (68917526729), a regression from 0.103-alpha1 (46da776c2c1), and some other minor quirks which I found quite annoying while using the latest alphas.
Each commit is quite small and is a fix in its own right, so if any seem stupid, feel free to request they get removed so this MR can proceed.
Fixes #931.0.103 - UX Overhaulhttps://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/466Force the build tools to generate .pngs for each vector.2017-04-07T07:41:50Zusername-removed-25042Force the build tools to generate .pngs for each vector.This results in a slightly larger apk (e.g. 500KiB), but it reduces the
scope for bugs greatly. We still get all the maintenance benefits of only having to
maintain a single density-independent vector (rather than several
density depende...This results in a slightly larger apk (e.g. 500KiB), but it reduces the
scope for bugs greatly. We still get all the maintenance benefits of only having to
maintain a single density-independent vector (rather than several
density dependent PNGs and all the work that involves).
The class of bugs that it solves is that there are several places where
vectors cannot be used, and you wont notice when developing on a device
newer than 5.0. For example, notification icons, `TextView`
and its `android:drawableStart` attribute.
Fixes #913, which is coming up a few times in ACRA crash reports.0.103 - UX Overhaulhttps://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/465More misc UI fixes, mainly for older devices.2017-04-07T12:41:55Zusername-removed-25042More misc UI fixes, mainly for older devices.During development of %"0.103 - UX Overhaul", most of my testing was done on a 5.1 device. This is the result of me spending some time testing on an older 2.3 and 4.4 device.
It also includes some fixes for other UI stuff against the 0....During development of %"0.103 - UX Overhaul", most of my testing was done on a 5.1 device. This is the result of me spending some time testing on an older 2.3 and 4.4 device.
It also includes some fixes for other UI stuff against the 0.103 milestone.0.103 - UX Overhaulhttps://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/463Feedback about empty lists2017-04-07T12:48:12Zusername-removed-25042Feedback about empty listsThe UX is pretty bad for all first-time users of F-Droid, because they get an empty screen and no feedback about what to expect next.
This adds [the text shown here](https://gitlab.com/fdroid/fdroidclient/issues/879#note_26846495) to ...The UX is pretty bad for all first-time users of F-Droid, because they get an empty screen and no feedback about what to expect next.
This adds [the text shown here](https://gitlab.com/fdroid/fdroidclient/issues/879#note_26846495) to the screen when there is nothing else to show.
It also shows a banner at the top saying "Updating repositories" whenever the `UpdateService` is doing its thing. This is shown on both the latest + categories screen.
Finally, it fixes up the situation where enabling only the GP repo will show a blank screen on "Latest" due to no apps being updated recently. Instead, we now show the last 200 apps which were updated from any repo.0.103 - UX Overhaulhttps://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/455Better offline support2017-09-02T21:10:27Zusername-removed-25042Better offline supportThe simple part of this is to add a "No Internet" banner to the top of the "Latest", "Categories", and "Updates" screens. The more complex part is that when viewing an apps details while offline, it will present the user with the option ...The simple part of this is to add a "No Internet" banner to the top of the "Latest", "Categories", and "Updates" screens. The more complex part is that when viewing an apps details while offline, it will present the user with the option to "Download later". This stores a flag against the app in the database, so that whenever they visit the Updates tab, it will show a list of apps that have been marked for subsequent download. These will then automatically download next time F-Droid receives a network connection.
There are likely a handful of edge cases when this will need to be ironed out, but for the most part, it is a fully working feature.
Fixes #94, #884, #885.1.1https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/453Minor ui tweaks2017-03-26T07:32:42Zusername-removed-25042Minor ui tweaksFixes a handful of issues throughout the new UI. Each commit should address one.Fixes a handful of issues throughout the new UI. Each commit should address one.0.103 - UX Overhaulhttps://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/448Categories artwork2017-03-21T21:53:59Zusername-removed-25042Categories artworkImprovements to category screen. Now shows images or procedural artwork behind categories. Also uses the previously internationalized category names. Also tweaked the "View all" button to have the proper background when touching.
Fixe...Improvements to category screen. Now shows images or procedural artwork behind categories. Also uses the previously internationalized category names. Also tweaked the "View all" button to have the proper background when touching.
Fixes #851.0.103 - UX Overhaulhttps://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/446Updated icons in bottom nav to newest versions.2017-03-17T00:13:33Zusername-removed-25042Updated icons in bottom nav to newest versions.Just replaces some drawables with others from #838. Fixes issue #838.
![icons](/uploads/3f08ea18bd33bf2cb7f30a81d6f67061/icons.png)Just replaces some drawables with others from #838. Fixes issue #838.
![icons](/uploads/3f08ea18bd33bf2cb7f30a81d6f67061/icons.png)0.103 - UX Overhaulhttps://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/445Scroll app details appropriately when expanding sections.2017-03-21T14:11:43Zusername-removed-25042Scroll app details appropriately when expanding sections.Fixes #875.
Note that the versions list works really nicely, by animating the addition of items and smooth scrolling down. However the other expandable items don't. This is due to a technical limitation whereby the adapter only includes...Fixes #875.
Note that the versions list works really nicely, by animating the addition of items and smooth scrolling down. However the other expandable items don't. This is due to a technical limitation whereby the adapter only includes one item for Links + Permissions respectively. This item grows/shrinks in size as it is expanded/collapsed, but no items are added/removed from the adapter. This causes problems with the smooth scrolling, but I don't think it is a bit problem.0.103 - UX Overhaulusername-removed-833299username-removed-833299https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/444Updates tab + misc UI improvements.2017-03-22T00:20:51Zusername-removed-25042Updates tab + misc UI improvements.Does away with "My Apps", replacing instead with "Updates" (Fixes #840). The things it **doesn't** address (fully) from #840 is offline "mark for install", security warnings, and donation prompts.
Other UI tweaks are:
* Back button ...Does away with "My Apps", replacing instead with "Updates" (Fixes #840). The things it **doesn't** address (fully) from #840 is offline "mark for install", security warnings, and donation prompts.
Other UI tweaks are:
* Back button now works as expected (Fixes #876) for:
* Viewing list of apps in a category
* Searching for apps
* Viewing installed apps
* Manage repositories
* App Details
* Bottom navigation bar uses new icons (Fixes #838).
* Bottom navigation now includes labels for each item (Fixes #892).
* Notification about available updates takes user to the main "Updates" tab.
* Use rounded buttons instead of square ones (Identified in #840).
There is one concern I have which should be addressed in a future MR (or this if you think so). That is the new service which scans the disk cache for downloaded apks, and then adds downloaded items to the `AppUpdateStatusManager` with a status of `ReadyToInstall`. This works great for the new "Updates" tab, but it now also continually shows the update notifications to the end user even if they have previously dismissed them. Is this okay, given we are only showing notifications for apps which are downloaded and ready to install, not those for which an update is available (which I'd think would get annoying if we kept notifying about that)?
For those wanting to see/test this (e.g. @crwinfrey), check out [F-Droid.new-ui.unofficial.debug.apk](/uploads/089b3197e311ecc3b6000ccc695b7e00/F-Droid.new-ui.unofficial.debug.apk).0.103 - UX Overhaulusername-removed-833299username-removed-833299https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/443Notification improvements from mvp762017-03-14T10:17:50Zusername-removed-25042Notification improvements from mvp76See !437, specifically [this comment](https://gitlab.com/fdroid/fdroidclient/merge_requests/437#note_24387158).
This is just a procedural thing whereby I wanted CI to pass with `gradle lint` before merging, but timezone differences woul...See !437, specifically [this comment](https://gitlab.com/fdroid/fdroidclient/merge_requests/437#note_24387158).
This is just a procedural thing whereby I wanted CI to pass with `gradle lint` before merging, but timezone differences would have caused a whole day round trip before we could get it merged. This would prevent me from updating other MRs and allowing them to get CR'ed.0.103 - UX Overhaulusername-removed-25042username-removed-25042https://staging.gitlab.com/fdroid/fdroidclient/-/merge_requests/435Allow the priorities of repos to be changed via the UI2017-04-26T07:40:34Zusername-removed-25042Allow the priorities of repos to be changed via the UIAn earlier change improved support for repo priorities, however it didn't add a UI to change these priorities. This change adds support in the UI for changing repo priorities.
![repo-priorities](/uploads/e97f073c36c27df2d3cb8e266f8824...An earlier change improved support for repo priorities, however it didn't add a UI to change these priorities. This change adds support in the UI for changing repo priorities.
![repo-priorities](/uploads/e97f073c36c27df2d3cb8e266f88243e/repo-priorities.mp4)1.1