855 Commits

Author SHA1 Message Date
Peter Serwylo
c4fd369feb Merge branch 'dark-mode-fixes' into 'master'
More dark more fixes

See merge request !487
2017-04-20 22:44:31 +00:00
Chirayu Desai
9f50bef04f More dark more fixes
Fixes some leftover items missed in the previous major update.
* Donate view in AppDetails
* What's new view in AppDetails
* The search view
2017-04-21 01:39:39 +05:30
Peter Serwylo
b0803432d8 Ensure PendingIntents use explicit Intents.
The only pending intents that were not explicit were the four from
the NotificationHelper class. These now explicitly specify the
NotificationBroadcastReceiver as their destination, which is not
exported. That then forwards the intents onto relevant methods of
AppUpdateStatusManager.
2017-04-20 17:03:37 +10:00
Hans-Christoph Steiner
f224483e1b when checking language support, reset locale back to original
With this, it was leaving the app's locale set to the last language on
the LOCALES_TO_TEST list, which is 'zu' (Zulu).  For some dialogs, it
was actually using that locale, so showing OK/Cancel in Zulu despite
the app being in a different language.

#943
2017-04-19 00:19:10 +02:00
Hans-Christoph Steiner
67f40367cd use Languages class as source of locales to test 2017-04-18 21:37:59 +02:00
Hans-Christoph Steiner
670e6be39a fix fallthrough setting of localized metadata entries
Java's Map.get() returns null if there is no match, so this was always
setting each entry to whatever value was in the highest priority
locale, whether it had contents or what null.  Now, this will fall
through the priority list of locales until it finds actually contents.
2017-04-18 21:26:58 +02:00
Hans-Christoph Steiner
4bb7050725 add Video to Links section of App Details 2017-04-18 21:26:58 +02:00
Hans-Christoph Steiner
6fae74b36d actually use phone's locale when picking descriptive metadata
A TreeSet apparently does not really maintain insertion order, while a
LinkedHashSet does.  This ensures that the insertion order of locales
is preserved in localesToUse so that the prioritization is correct.
2017-04-18 21:26:58 +02:00
Hans-Christoph Steiner
06dff8184b no need to catch an exception, only to throw it
Just let the SecurityException be throwing where it originated.

From PMD: "A catch statement that catches an exception only to wrap it
in a new instance of the same type of exception and throw it should be
avoided".

This cleans up a little from !482.  Ctrl-Alt-L and Ctrl-Alt-O before
committing! :-)
2017-04-18 21:07:16 +02:00
Chirayu Desai
432f45254b PrivilegedInstaller: fallback to default installer for uninstall
* On API >= 24, in cases when the installer package name is not set
  to privext, the system won't let us uninstall.
* Fallback to the DefaultInstaller so that uninstall still works.
2017-04-18 23:59:19 +05:30
Chirayu Desai
db4aa3b519 Installer: Use content URI on API >= 24 for DefaultInstaller fallback
* When there's a permission mismatch (#951, #890), the fallback
  DefaultInstaller is invoked, which enforces file and content schemes
  for API < 24 and >= 24 respectively.
* Use content URI in that case, which allows the fallback to work.
2017-04-18 23:50:05 +05:30
Hans-Christoph Steiner
cfabd2a2c3 properly handle <plurals>
<plurals> handles the grammar needed for numbers/quantities in various
languages.  Like in a number of slavic languages, numbers ending in 0,
1 or others have separate grammar.  In English, there is just 1 and
then all the rest (0 days, 2 days, 3 days, etc). <plurals> does not
handle multiple strings for different quantities, like having a
different string for each number case.  For that, we have to do it in
Java and have multiple <strings>

!472
2017-04-18 19:29:50 +02:00
Peter Serwylo
2fbfcb66b0 Make categories read out correctly by screenreader. 2017-04-17 17:31:32 +10:00
Peter Serwylo
93e39d895c Fix for API 15- having really busted navigation 2017-04-17 17:31:32 +10:00
Peter Serwylo
6c12707720 Update AppDetails buttons after upgrading app to latest version.
Prior to this, it would only update the "Uninstall"/"Run"/"Upgrade"
buttons after a fresh install, or an uninstall.

This change is a bit more liberal in how often we try to update the
view, due to a race condition with PackageManager and AppDetails2.
AppDetails2 listens for InstalledAppProviderService in onResume, but
sometimes that is too late (the notification has already fired).
2017-04-17 17:31:32 +10:00
Hans-Christoph Steiner
97fd3f0bad support "What's New" and "Video" fields from index-v1
fdroidserver currently only supports a single WhatsNew field that
comes from the CurrentVersionCode of the app.  Google Play and
fastlane supply support a WhatsNew field per-release, but we don't use
that data anywhere, and implementing that in the data structures would
add a lot of complexity since Apk would then need to have its own
"localized" section like App does.

The "Video" field is just a URL pointing to a video.

closes #910
2017-04-14 01:31:33 +02:00
Hans-Christoph Steiner
656b3185b2 added Esperanto and Shqip back to the language chooser
I added Esperanto because someone asked, and Shqip since it is not
available in Android 5.1 and people who speak Shqip would be likely to
open the language menu to switch away from English, then they'd see
Shqip as an option.  This still won't take effect until those
languages are fully translated.

closes #941
2017-04-14 01:09:33 +02:00
Hans-Christoph Steiner
3121a106e0 fix "DefaultLocale: Implied default locale in case conversion"
The point here is to use the English work all lowercase, so make sure
that the English lowercasing rules are always active, regardless of
the system's locale.
2017-04-14 01:09:33 +02:00
Hans-Christoph Steiner
e6844a5f4f do not override original description with nulls
The original single language description gets stuck straight into
App.description by Jackson.  getLocalizedEntry() might return a null,
in which case it was overriding the original description.  This only
overrides the original description if there is actually a localized
description.
2017-04-14 01:09:33 +02:00
Chirayu Desai
c2685bf14e Fixes for dark mode, needed after the UX Overhaul
* Replace hardcoded color values with references to style.xml,
  which in turn has different values for light and dark theme.
* Force reload the activity to get the theme applied.

TODO:
* Swap uses it's own theme, need to figure out a way to
  handle that. Currently the main Nearby screen which you get
  to from the bottom navigation is ok, but anything after
  that is light / custom themed.
2017-04-13 19:34:18 +05:30
Hans-Christoph Steiner
46adf47fdf Merge branch 'even-more-ui-fixes' into 'master'
Even more ui fixes

Closes #931

See merge request !471
2017-04-11 21:07:02 +00:00
Hans-Christoph Steiner
ecaf2362f2 Revert "Merge branch 'replicant-fsdg-compliance' into 'master'"
This reverts merge request !452
2017-04-11 14:50:40 +00:00
Peter Serwylo
b9129e8a35 Provide feedback to user when installing previous version.
Given the only feedback available to the user that they initiated a
download once clicking the version from the list is up top, this scrolls
the recycler view to the top to show that feedback.

Also shows the selectable background when they touch the version list
items.
2017-04-11 15:37:42 +10:00
Peter Serwylo
6891752672 Added empty state text to updates/installed apps.
Both of these reuse the text that was used in 0.102.
2017-04-11 15:37:42 +10:00
Peter Serwylo
854b19eee6 Correct handling of localized metadata representing images.
Previously, it assumed that featureGraphic et al. were always present if
the localised entry was present. This is not the case, so we only return
a URL if we can actually find the entry we are looking for.
2017-04-11 15:37:42 +10:00
Peter Serwylo
3d7a4ef8dc Show F-Droid blue in feature image place when loading icons.
Prior to this it was black, which looked broken. This also ensures that
the blue is shown behind the dynamic colour when it is time to ease in
that colour.
2017-04-11 15:37:40 +10:00
Peter Serwylo
8e7096b2a8 Merge branch 'replicant-fsdg-compliance' into 'master'
Skip non-FSDG-compliant apps on Replicant during repo data parsing

See merge request !452
2017-04-10 22:30:47 +00:00
Hans-Christoph Steiner
78ecba646c Merge branch 'system-language-names' into 'master'
get language names from system, instead of hard coded list

Closes #908 and #858

See merge request !461
2017-04-07 16:51:56 +00:00
Hans-Christoph Steiner
49f7248d45 Merge branch 'improvements-to-update-workflow' into 'master'
Improvements to update workflow

Closes #922

See merge request !468
2017-04-07 16:46:50 +00:00
Hans-Christoph Steiner
eefb2eb8a6 Merge branch 'screenshot-placeholder' into 'master'
Use screenshot placeholder instead of app icon placeholder.

See merge request !469
2017-04-07 16:35:18 +00:00
Peter Serwylo
2353a4e82d Use screenshot placeholder instead of app icon placeholder. 2017-04-07 22:53:10 +10:00
Hans-Christoph Steiner
6d0bde716e fully replace language pref handling with Languages class
closes #908
2017-04-07 14:50:53 +02:00
Hans-Christoph Steiner
019964387a get language names from system, instead of hard coded list
closes #858
2017-04-07 14:50:53 +02:00
Peter Serwylo
9521b9a72c Add guard contidion to prevent notifying when inappropriate.
Although the adapter tries to keep in sync with the app status update
manager, there may be times when this is not successful. In such
circumstances, it seems safe to just guard against invalid situations,
rather than trying to assert an error or fall over.

Fixes #922.
2017-04-07 22:40:29 +10:00
Peter Serwylo
42965701a3 Show "Run" button next to a successfully installed app.
There was some confusion in the user tests about how to launch an app
once it was installed. Hopefully this small change goes towards fixing
some of that confusion. Instead of just showing "X installed
successfully" in the app list, it now shows a "Run" button next to it.
2017-04-07 22:40:29 +10:00
Peter Serwylo
34c741f835 Clear up confusion around "Tick" icon when updating app.
When navigating to Updates -> Show Apps and then downloading an item, it
shows the download progress inline for that item. After this is
complete, it then shows a tick icon next to the item. The long term goal
should be to remove the list item from under "Show Apps" so that it is
only shown at the top of the "Updates" view. However this will require
more work. In the meantime, we can alleviate some confusion by replacing
the "Tick" icon with a button that says "Update" (like the other buttons
in the Update view).
2017-04-07 22:40:29 +10:00
Peter Serwylo
1f035a9696 Don't re-use existing pending intents.
When dismissing an "X installed successfully" intent, it should also
dismiss the relevant item from the "Updates" screen. This was not
happening. Upon investigation, I noticed that when I dismissed a
notification, it was passing through the Apk which I installed over a
day ago. This is because it was reusing a previous pending intent rather
than creating a new one.
2017-04-07 22:40:29 +10:00
Peter Serwylo
05d6929eb6 Remove unused preference "Update History".
Now that we've moved the first screen to "Latest", we always want to do
our best to show something there. This preference is pretty redundant in
light of this.
2017-04-07 22:08:29 +10:00
Peter Serwylo
d41b0d330f Only show "New" next to apps added in the last two weeks.
Previously, the definition of "New" was whether or not the added and
last updated dates were the same. This made sense, because we only
showed apps from the past few weeks (depending on preferences) as new.

Now that we show up to 200 apps in the first screen, regardless of age,
this check is no longer helpful.
2017-04-07 22:02:16 +10:00
Peter Serwylo
c5051e8813 Extract "days since date" to Utils 2017-04-07 22:02:16 +10:00
Peter Serwylo
3b9f841117 Try to always show something in "Latest"
It seems pointless to only restrict "Latest" to items within the last X
days. When you only have the GP repo enabled, or other repos with less
apps that are updated less frequently than the main repo, this screen
always ends up empty. This change shows the last 200 updated items
instead of those updated in the last X days.
2017-04-07 22:02:16 +10:00
Peter Serwylo
ab5ea39f7c Show empty state feedback for latest + categories
The text is more comprehensive on the main screen than on categories,
because this is the view that all users will see when they first open
F-Droid.

Fixes #879.
2017-04-07 22:02:14 +10:00
Peter Serwylo
510ec5f7c7 Adding ability to query last repo update and number of repos.
This will be used to improve the empty state handling of the main list
of latest apps.
2017-04-07 21:58:30 +10:00
Peter Serwylo
d83c15d0d4 Show "Updating repositories" banner in main UI.
Previously this was only shown in the notifications.
This does not show the full progress of the update, but at least it
provides a rudimentary level of feedback. In the future it can be
modified to show more substantial feedback if required.
2017-04-07 21:56:42 +10:00
Hans-Christoph Steiner
1054d57b02 Merge branch 'new-ui--more-fixes' into 'master'
More misc UI fixes, mainly for older devices.

Closes #906 and #866

See merge request !465
2017-04-07 07:47:42 +00:00
Hans-Christoph Steiner
a710eeef3a Merge branch 'fix-913--vector-issues' into 'master'
Force the build tools to generate .pngs for each vector.

Closes #913

See merge request !466
2017-04-07 07:41:37 +00:00
Peter Serwylo
432eee0f83 Force 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 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.
2017-04-07 15:56:16 +10:00
Peter Serwylo
655c4bfdd3 Reinstate the About dialog.
Currently available as the first entry in Preferences. Used to be
available in the main action bar menu.

Fixes #906.
2017-04-07 09:55:14 +10:00
Peter Serwylo
5ef5288e3a Prevent preferences fragment from crashing when resuming.
It was assuming there is always a priv ext preference. However, we
remove the priv ext preference the first time the fragment is opened. In
these circumstances, the preference no longer exists, resulting in a
NPE.
2017-04-07 09:55:14 +10:00
Peter Serwylo
05f6f08832 Add Profiler class for diagnosing performance problems.
Unused for now, but like with the `LoggingQuery`, it is helpful to
be used for debugging purposes. For example, used this to quickly
figure out that it took 7 seconds to fix the PRNG stuff in FDroidApp
onCreate().
2017-04-07 09:55:14 +10:00