4294 Commits

Author SHA1 Message Date
mvp76
238dff5c10 Update download progress for OBB files 2017-02-28 22:45:41 +01:00
mvp76
1418a419ea Remove "InstallError" entries when clearing notification
I.e. either the user "swiped" the notification away or clicked on it to
view the error message (and thus the notification was auto canceled)
2017-02-28 22:24:26 +01:00
mvp76
a8509ae833 Added a comment about the key being the downloadUrl 2017-02-28 22:07:40 +01:00
mvp76
7b446daf3f Make AppUpdateStatusManager a singleton 2017-02-28 21:57:51 +01:00
mvp76
a4c187f3e1 Add strings for first time installs 2017-02-28 20:56:35 +01:00
mvp76
04d2d004a3 Add logic to show/hide notifications based on appdetails screen
Also, add code to AppDetails2 to match AppDetails, keeping track of
currently viewed app. Moved the nulling of this info to onStop instead
of onPause, since alerts may be shown on top of the details page, while
still visible.
2017-02-28 20:56:35 +01:00
mvp76
d2cc4fcb05 Set blue color on notifications 2017-02-28 20:56:35 +01:00
mvp76
40a061ae73 Fix for old devices
They can't use vector drawables in notifications. Also, groups can not
be used, see http://stackoverflow.com/a/34953411.
2017-02-28 20:56:35 +01:00
Peter Serwylo
583ea96816 Clarify that the pendingIntent arg can be null. 2017-02-28 20:56:35 +01:00
Peter Serwylo
2ad61a4eb7 Replace setApkInternal with more specific functions.
The `setApkInternal` method had to infer the intent of the caller
based on the arguments which were passed on, and then do specific
things depending on the input. Instead, this change has three
distinct actions which can happen (add/remove/update). Each of
these methods does only one thing, and doesn't have to guess
the intent of the caller. The only exception may be "add", which
will (for convenience) delegate to "update" if it already knows
about the apk in question.
2017-02-28 20:56:35 +01:00
Peter Serwylo
d00de69974 Extract "remove apk" code to simplify setApkInternal().
The only time `status == null` was when coming from `removeApk()`. By
moving the logic out of `setApkInternal()` into `removeApk()` it makes
it easier to reason about `setApkInternal()` as it now does less. Also,
it was doubling up on the `syncrhonized (appMapping)` and `if (entry !=
null)` logic which is no longer required, because `removeApk()` was
already doing that.

While here, also make explicit the fact that `status` can no longer be
`null`.
2017-02-28 20:56:35 +01:00
Peter Serwylo
30d3f8efcc Make "batchUpdates" mode an implementation detail of the AddUpdateStatusManager class.
Because of the way that this can be misused without the compiler knowing
(e.g. by forgetting to call `endBatchUpdates()`) it may be safer to move
it to an internal implementation detail of the class.

It could probably be done away with completely if the `notify*` methods
were moved out of the respective `*ApkInternal()` methods, but that
requires more significant refactoring to get right without code
duplication.
2017-02-28 20:56:35 +01:00
Peter Serwylo
aa945367c9 Pass potentially nullable argument instead of guarding.
It seems that `setContentIntent()` will do fine if we pass it a null
argument. The default value is `null` anyway, and it doesn't mandate
a non-null argument.
2017-02-28 20:56:35 +01:00
Peter Serwylo
d2ef357403 Invert if statement to bail early. 2017-02-28 20:56:35 +01:00
Peter Serwylo
7329dc5d8d Return notification instead of builder.
Given that none of the callers need the functionality of the builder,
lets make it explicit that we don't expect the builder to be further
customized once it is returned. Instead, return a notification to hint
that no further customization is required/desired.
2017-02-28 20:56:35 +01:00
Peter Serwylo
ef7d8dfce9 Make updates/installed final to slightly simplify code. 2017-02-28 20:56:35 +01:00
Peter Serwylo
a2997747af Clarify the unused status of notificationManager 2017-02-28 20:56:35 +01:00
Peter Serwylo
0b1940c4bf Make it explicit that it may return null.
Given that some places where this method is invoked does a null check,
it seems reasonable to make this assumption explicit. That way if devs
use the method in the future, then they will be aware of the contract.
2017-02-28 20:56:35 +01:00
Peter Serwylo
875b0d091f Replace if/else with switch
This is common throughout the F-Droid code base.
2017-02-28 20:56:35 +01:00
Peter Serwylo
49f20f64b3 Added documentation. 2017-02-28 20:56:35 +01:00
Peter Serwylo
1a9f5d60bf Remove dead code 2017-02-28 20:56:35 +01:00
Peter Serwylo
c81b2c7fe4 Minor formatting.
Neither pmd/checkstyle/many-devs are particularly precious about
hard rules of when to wrap a line. In this case we could've brought the
`ErrorDialogActivity` onto the same line as `putExtra`, but instead
opted to chain the method calls as per the `getAppDetailsIntent` method.
2017-02-28 20:56:35 +01:00
mvp76
f7e12b4f25 Icon fixes and general tweaks 2017-02-28 20:56:35 +01:00
mvp76
28d683e16a Add intent for "installed" state 2017-02-28 20:56:35 +01:00
mvp76
0461860479 Removed "installed" notification when entering Details screen. 2017-02-28 20:56:35 +01:00
mvp76
7efa62891d Use strings, async image loading, "unknown" status added. 2017-02-28 20:56:35 +01:00
mvp76
55c7a21c90 Move app status handling to new AppUpdateStatusManager 2017-02-28 20:56:34 +01:00
mvp76
10cbf1ef7a Create notification helper class 2017-02-28 20:56:34 +01:00
Hans-Christoph Steiner
9e1458f41e Merge branch 'nougat' into 'master'
Support for PrivilegedExtension on Nougat

Closes privileged-extension#17

See merge request !442
2017-02-28 18:38:46 +00:00
Chirayu Desai
1a586511cf ApkFileProvider: Explicitly grant read permission to PrivExt 2017-02-28 17:47:36 +05:30
Chirayu Desai
c004f1ce10 PrivilegedInstaller: Use ContentUri on Nougat (24) and above 2017-02-28 17:47:29 +05:30
Peter Serwylo
3ca3a6d699 Merge branch 'preperation-for-new-ui' into 'master'
Some groundwork for the main screens new UI

See merge request !432
2017-02-28 02:40:14 +00:00
Peter Serwylo
6ac62d791a Merge branch 'prep-for-new-index' into 'master'
prep for new index-v1

Closes #819

See merge request !439
2017-02-28 02:35:15 +00:00
Peter Serwylo
a93904d907 Added preference to manage repositories
As this is no longer a top level menu item, it is now the first item
in the settings, under "Updates".
2017-02-28 08:29:38 +11:00
Peter Serwylo
bdde162f56 Notify when new categories are available, old ones are no longer available.
Whether a category is "available" or not is not a function of whether it
is in the category table or not. Rather, it is a function of whether there
are any active apps/apks which are in that category. Thus, don't notify
after inserting a category (the notification was wrong anyway as it was
trying to notify the AppProvider Uri instead of the ContentProvider one).
Instead, do it after a repo update is complete.
2017-02-28 08:29:38 +11:00
Peter Serwylo
f4c03c6baa Make category searching case insensitive. Only works for ASCII :( 2017-02-28 08:29:38 +11:00
Peter Serwylo
25d2659b93 Be more explicit about searching categories with free form text. 2017-02-28 08:29:38 +11:00
Peter Serwylo
a8d8e65698 Added query for 'top X apps in category' and associated test 2017-02-28 08:29:38 +11:00
Hans-Christoph Steiner
601c85103e fields as instance vars: icon, mirrors for Repo; antiFeatures for Apk
This adds support for the index fields: icon, mirrors, and antiFeatures.
icon and mirrors are for Repo, they've been around a while on the server
side, but just never used on the client side.

For Apk, this adds a new per-APK antiFeatures field so that each APK can
be individually marked.  For example, when tracking is added or removed,
vulnerabilities are discovered and fixed, etc.

These fields will be ignored when using the v0 index.xml format, they
will be used by the upcoming index-v1 format: !422
db-version/66
2017-02-27 22:20:44 +01:00
Hans-Christoph Steiner
bc0db92c50 ensure that App description is never null
In the v0 index format, empty descriptions were filled in with boilerplate
text.  The v1 index format instead leaves empty descriptions empty, and
lets the various consumers (fdroidclient, web interfaces, etc) decide what
to show.  The database and code still assume that the description will not
be null, so instead this ensures there is something in the database, but it
will be an empty string instead of a null.  In the future, it would
probably make sense to standardize empty values on null or something.
2017-02-27 14:15:31 +01:00
Hans-Christoph Steiner
611fd6e5e3 rename App instance vars to match fdroidserver field names
This makes the name of the instance variables in the App class match the
names of the metadata fields in the new fdroidserver .yml YAML format. This
means that the Jackson parser can automatically instantiate instances for
us, which will be more efficient and maintainable.

These names aren't great, but it would a ton of work to rename the field
names in all of the metadata files, the docs, fdroidserver code, etc.
2017-02-27 14:15:15 +01:00
Hans-Christoph Steiner
199ab44ec3 deprecate App.requirements[], was only used for RequiresRoot
RequiresRoot is obsolete as a metadata field since there is the SUPER_USER
permission.  This `requirements` array was set up to handle other things,
but that was never implemented.
2017-02-27 14:15:15 +01:00
Hans-Christoph Steiner
6fb1207ae6 always refresh APKs in DB at start with timestamps < 2010-01-01
APKs installed in /system} will often have zeroed out timestamps, like
2008-01-01 (ziptime) or 2009-01-01.  So instead anything older than 2010
every time since we have no way to know whether an APK wasn't changed as
part of an OTA update.  An OTA update could change the APK without changing
the versionCode or lastUpdateTime.

closes #819
2017-02-27 14:15:15 +01:00
Hans-Christoph Steiner
34dbf49f6c gitlab-ci: put all the static tests into test job
gitlab-ci used to run all of our jobs in parallel, now it mostly seems
to run them sequentially.  So splitting up the various parts of the CI
suite into separate jobs mostly slows things down.  This combines the
static tests into one job (lint, pmd, checkstyle, tools) with the JVM
tests aka Robolectric.  That makes three jobs from the previous six.
2017-02-27 14:15:15 +01:00
Hans-Christoph Steiner
6f43d4eb18 make checkstyle happy with instance variable names
[ant:checkstyle] [ERROR]
/export/share/code/fdroid/client/app/src/main/java/com/geecko/QuickLyric/view/AppCompatListPreference.java:35:29:
Name 'mDialog' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'. [MemberName]

Introduced in 79ecffc91c8856e7ceb6a65441d19a6272195426
2017-02-24 21:23:13 +01:00
Hans-Christoph Steiner
bfc1060bfb Merge branch 'new-ui--app-details-2' into 'master'
Tweak some styles in AppDetails2

See merge request !426
2017-02-24 15:27:29 +00:00
Hans-Christoph Steiner
bb4409457b Merge branch 'old-perm' into 'master'
Remove unused permission org.fdroid.fdroid.privileged.USE_SERVICE

Closes #861

See merge request !438
2017-02-24 15:14:01 +00:00
Hans-Christoph Steiner
064af8c94c remove empty Kurdish strings.xml that breaks 'tools' test 2017-02-24 16:02:16 +01:00
Hans-Christoph Steiner
e27ce21b65 Merge branch 'fix-817--info-why-priv-extension-disabled' into master
Remove Privileged Installer preference when appropriate

See merge request !430
2017-02-24 15:56:32 +01:00
Hans-Christoph Steiner
0ee14800c3 Merge branch 'fix-750--white-background-on-popup' into master
Fix white background on preference dialogs.

See merge request !431
2017-02-24 15:28:33 +01:00