770 Commits

Author SHA1 Message Date
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
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
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
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
Chirayu Desai
5e59138082 Remove unused permission org.fdroid.fdroid.privileged.USE_SERVICE
* This was removed by [1] and a whitelist is being used instead
  of this signature protected permission
* Closes #861

[1]: 80452dec24
2017-02-23 22:46:20 +05:30
Peter Serwylo
75eb72c50b Show material-design-ripple in background when touching list item.
Also ensure it shows this animation correctly when expanding "Versions".
This is done by changing from `notifyDataSetChanged()` to the more
specific `notifyItemRange(Inserted|Removed)`, which ensures the
"Versions" item doesn't get rebuilt midway through an animation.
2017-02-22 10:31:40 +11:00
Peter Serwylo
2101ec4bbc Remove Privileged Installer preference when appropriate.
Fixes #817.

As discussed in #817, this preference is not useful on Android >= 5.0.
As such, the preference should just be removed. However, it should stay
if the privileged installer is already installed (e.g. via update.zip or
included as part of the ROM).
2017-02-22 08:41:41 +11:00
F-Droid Translatebot
109c795dd1 Pull translation updates from Weblate
Translators:

Ahmad Zafrullah  Indonesian
Allan Nordhøy    Norwegian Bokmål
Balázs Úr        Hungarian
Hasan İlingi     Kurdish
Jonatan Nyberg   Swedish
Juraj Harasta    Czech
Michalis         Greek
Michalis         Spanish
Nick Bishop      Greek
Verdulo          Esperanto
yiannakis        Greek
2017-02-20 16:00:03 +11:00
Peter Serwylo
81aacac592 Make 3rd party AppCompatListPreference adhere to our checkstyle rules.
Added braces around one line if statements.
2017-02-20 08:47:59 +11:00
Peter Serwylo
79ecffc91c Use AppCompatListPreference from QuickLyric to fix dialog themes.
Fixes Issue #750.

This new class makes sure to use the correct `AlertDialog.Builder` from
the support lib. This in turn ensures the correct styles get applied to
the result alert dialog.
2017-02-20 08:42:25 +11:00
Peter Serwylo
2c1a059da9 Use AppCompatActivity instead of deprecated ActionBarActivity
Doesn't change anything, just removes a deprecation warning.
AppCompatActivity currently extends ActionBarActivity and doesn't
provide any further imnplementation.
2017-02-20 08:41:52 +11:00
F-Droid Translatebot
2db46e0794 Pull translation updates from Weblate
Translators:

Adrià García-Alzórriz      Catalan
Ajeje Brazorf              Sardinian
Alaa Issa                  Arabic
Alberto Moshpirit          Spanish
Alexander Georgievskiy     Russian
András Lengyel-Nagy        Hungarian
André Marcelo Alvarenga    Portuguese (Brazil)
Anteri                     Finnish
Athmane MOKRAOUI           Arabic
Claus Rüdinger             German
Cyxae Dexyc                French
dark159123                 Danish
Dmitriy Bogdanov           Russian
Enol P                     Asturian
ezjerry liao               Chinese (Traditional)
Gregor Santner             German
Hsiu-Ming Chang            Chinese (Traditional)
Jean-Baptiste              French
John Doe                   Turkish
Jonatan Nyberg             Swedish
Kheireddine Mkh            Arabic
Lari Oesch                 Finnish
Luca Bianchi               Italian
Marcelo Santana            Portuguese (Brazil)
Marian Hanzel              Slovak
Michael                    German
Mladen Pejaković           Serbian
msrn                       Finnish
naofum                     Japanese
Olexandr Nesterenko        Ukrainian
Osoitz                     Basque
Raphaël Barman             French
Sveinn í Felli             Icelandic
Sylvia van Os              Dutch
Tobias Bannert             German
Verdulo                    Esperanto
Verdulo                    Polish
Yaron Shahrabani           Hebrew
zmni                       Indonesian
2017-01-04 12:01:10 +00:00