4429 Commits

Author SHA1 Message Date
Peter Serwylo
37e608dbad Use textAlignment + gravity. TextAlignment was only added in API 17. 2017-04-07 09:55:13 +10:00
Peter Serwylo
f83adbef44 Repeat grid pattern every 5 items
Previously it would show a grid patter for the first five items, and
then resort to list items. This continues the grid pattern indefinetly.

Fixes #866.
2017-04-07 09:55:13 +10:00
Peter Serwylo
74f4883ffc Remove strings which are clearly associated with the old 3 tab layout.
Left some more unused strings which are a bit more general purpose and
perhaps should wait until after a stable release to remove. The
rationale for this is that we may want to revert to part of the old
terminology in certain places, and don't want to have to ask everyone to
translate everything again.
2017-04-07 08:34:41 +10:00
Peter Serwylo
1a799a7dcc Suppress lint warnings for unused category colours/names.
These are loaded dynamically at runtime based on a sanitized version
of the category names. Thus, the static lint tool cannot pick up that
they are indeed used.
2017-04-07 08:34:41 +10:00
Peter Serwylo
f099ae52bf Remove unused resources (layouts/dimens/etc)
Leaving strings to a separate commit to make it clearer when they were
removed, in case they need to be reinstated.
2017-04-07 08:34:41 +10:00
Peter Serwylo
fada693ac9 Remove AppDetails (in preference to AppDetails2).
Also removed associated layouts which are no longer required.
2017-04-07 08:34:41 +10:00
Peter Serwylo
3efb3a3043 Remove category provider stuff specific to old 3 tab layout.
We no longer prefix the list of categories with "Whats New", "Recently
Updated", and "All". The new UI doesn't require this. The only place
they were being used now were in the tests.
2017-04-07 08:34:40 +10:00
Peter Serwylo
c2d5f57fbd Remove now-unused queries from AppProvider. 2017-04-07 08:30:31 +10:00
Peter Serwylo
a8e6daadc3 Removed now-unused ArrayAdapterCompat class. 2017-04-07 08:30:31 +10:00
Peter Serwylo
d7fbd868b9 Remove app list adapters from old 3 tab layout. 2017-04-07 08:30:31 +10:00
Peter Serwylo
65afc83b16 Removed app list fragments from old 3 tab layout. 2017-04-07 08:30:31 +10:00
Peter Serwylo
6f80fbd945 Removed PreferencesActivity.
This is now a top level view inside MainActivity.
2017-04-07 08:30:31 +10:00
Peter Serwylo
4db31ef975 Removed FDroid.java, no longer used. 2017-04-07 08:30:31 +10:00
Peter Serwylo
7b9219e701 Removed TabManager
Only used in old FDroid activity which is about to be removed.
2017-04-07 08:30:30 +10:00
Peter Serwylo
4dc18f0a88 Removed AppListFragmentPageAdapter
Only used in old FDroid activity which is about to be removed.
2017-04-07 08:30:30 +10:00
Peter Serwylo
5ebe3b2420 Remove references to unused classes in AndroidManifest.xml 2017-04-07 08:30:30 +10:00
Hans-Christoph Steiner
e28e29455e Merge branch 'new-ui--feedback-from-alpha' into 'master'
Implement a handful of UX tweaks in response to alpha feedback

Closes #879

See merge request !464
2017-04-06 10:39:49 +00:00
Hans-Christoph Steiner
8ca795e307 Merge branch 'fix-909--repo-priorities' into 'master'
Repos added later should take higher priority.

Closes #909

See merge request !462
2017-04-06 10:26:19 +00:00
Peter Serwylo
8faf151c90 Remove 1 second pause between installing and updating UI.
This was implemented before because the main screen of the three tab
layout needed to update in response to the list of installed apps being
installed. When we scan the list of installed apps upon starting
F-Droid, we didn't want to have to requery for the list of installed
apps every time we found a new installed app. For this reason, we
"debounced" these requests (accumulated them for 1 second, and then let
go of a notification only after 1 second of inactivity).

This is no longer a feature, and so we can afford to fire the
notification instantly.
2017-04-05 16:44:53 +10:00
Peter Serwylo
24a6e9590d Wait until installed app service is ready before updating app details.
We were jumping the gun before, and asking to refresh the app details
adapter before the installed app service was able to notify us of a
change to the apps installed version.

This should be refactored to use broadcast receivers instead of
content observers (which are tied to the implementation of a content
provider). However this is currently a straight port from app details 1
to app details 2.
2017-04-05 16:37:55 +10:00
Peter Serwylo
50044629ab Remove placeholder whatsNew text completely.
Now that we are releasing this, we need to remove the "Whats New"
placeholder text.
2017-04-05 15:50:18 +10:00
Peter Serwylo
b0afa3e2fe Using custom icon for notification rather than the launcher icon.
On newer devices, it takes the icon, removes colour, and uses that. This
looks weird because:

 * The head and body look too close together once you remove the shading
   from the launcher icon.

 * The eyes dissapear because they are white (not transparent) in the
   launcher icon.
2017-04-05 15:41:57 +10:00
Peter Serwylo
2ab5c6a1c6 Correctly update the list item in updates view after install.
Prior to this, it would still show the "Ready to update" list item.
Now it updatpes the description to say "successfully installed" and
removes the "Update" button.
2017-04-05 15:23:28 +10:00
Peter Serwylo
8a69816648 Only automatically redirect to package manager when viewing app.
If you open AppDetails, initiate a download + install, and then navigate
away, it still pops open the install dialog for you. This is because it
never deregisters the broadcast receiver.

This change maintains the behaviour of always having the broadcast
receiver. This is because it is only added when the download
completes, and would require further refactoring to change that.
Instead, we listen for the receiver, but we ask if the AppDetails view
for the apk in question is actually visible to the user. If not, we
don't try to initiate the package manager.
2017-04-05 15:09:44 +10:00
Peter Serwylo
be11a785e5 Make the "Updates" badge only show number of items needing action.
Previously it showed the number of things which were eligible for
update. This will become less and less important the more people we can
switch over to automatic updates. However, given the privext vs unknown
sources thing, we will always have a lot of users who need to be
notified that they need to take further action to complete an install.
2017-04-05 15:01:55 +10:00
Peter Serwylo
0b7dc64fb6 Show apps in name order.
Prior to this, they were in whatever order they came from the metadata.
This resulted in weidrness because the repo which was updated last will
have its apps shown last. We are trying to move away from the repo
update order being important.

In the future, this sort order should take into account better
heuristics, but for now this is at least deterministic.
2017-04-05 13:26:56 +10:00
Peter Serwylo
b5341efff9 Don't padd the left/right of the category apps
Doing so makes it appear like they scroll from somewhere which isn't
quite the edge of the screen, which is weird.
2017-04-05 13:17:21 +10:00
Peter Serwylo
89625ac355 Add selectable background to list items and cards. 2017-04-05 13:12:51 +10:00
Peter Serwylo
1aea1c9302 Updated tests to work with flipped repo priorities. 2017-04-05 09:09:51 +10:00
Peter Serwylo
c6efdbb20c Repos added later should take higher priority.
The database still treats repos with a _low_ number as _low_ priority.
This means it sounds weird when you say "Repo with priority 1 is the
least important", but other than that, everything works as expected now.

Technically we could recreate the query to update the repo metadata
within DBHelper, but that is difficult because it is sort of build into
the content providers. Unfortunately, we are unable to access content
providers from the DBHelper.

In the future if we are able to migrate away from content providers to a
more dumb data access layer, then we could reuse the query to update the
metadata priorities in the DBHelper. However that is a tomorrow problem.
db-version/68
2017-04-04 16:26:42 +10:00
Hans-Christoph Steiner
89e103fc23 Bump to 0.103-alpha1 v0.103-alpha1 2017-04-01 21:15:18 +02:00
Hans-Christoph Steiner
cebf5ed915 Merge branch 'weblate' into 'master'
pull weblate for v0.103-alpha1

See merge request !460
2017-04-01 19:10:16 +00:00
Hans-Christoph Steiner
fb0e453fce pull weblate for v0.103-alpha1 2017-04-01 19:10:15 +00:00
Hans-Christoph Steiner
5971533b09 changelog for 0.102.3
closes #898
2017-04-01 17:30:41 +02:00
Hans-Christoph Steiner
bcb2894d4c update CHANGELOG for 0.102.x 2017-04-01 16:28:45 +02:00
Hans-Christoph Steiner
21fd522e95 only set installer to privext on versions where its required
To limit the possible oddness of having the installer package being
something different than F-Droid, only set it to priv ext on android-24
and newer, since its required there.
2017-03-31 20:07:56 +02:00
Hans-Christoph Steiner
a9a37747cb Merge branch 'uninstall' into 'master'
Set installer package name to privext if using that

See merge request !454
2017-03-31 18:00:41 +00:00
Hans-Christoph Steiner
e2ab447315 Merge branch 'privext-updates' into 'master'
InstallerFactory: Check for privext before checking if apk to be installed is privext

Closes #911

See merge request !459
2017-03-31 17:45:11 +00:00
Hans-Christoph Steiner
c69f443506 Merge branch 'add-new-index-format' into 'master'
Add new index format to support localization and graphics

See merge request !422
2017-03-31 17:44:07 +00:00
Peter Serwylo
c3424f9ff3 Update AppDetailsAdapterTest for apps that don't have screenshots.
While here, also added a couple of new test cases to better ensure the
adapter plays nicely with its items when receiving an app with specific
states.
2017-03-31 12:12:19 +02:00
Peter Serwylo
e34f289246 Setup and teardown preferences singleton for new tests.
Depending on the order the tests are run, this may have resulted in an
exception due to the singleton being setup multiple times.
2017-03-31 12:12:16 +02:00
Peter Serwylo
fb6f61c226 Instructions for getting tests to run in AS again. 2017-03-31 12:12:12 +02:00
Hans-Christoph Steiner
b08dfdcb80 move "What's New" placeholder to where its used
There is still quite a bit to figure out in the data format of the
per-package "What's New" entries, and its breaking the tests, so move
the placeholder code to the one spot where the placeholder whatsNew
entry is used.
2017-03-31 12:11:56 +02:00
Hans-Christoph Steiner
d90c773161 do not show screenshots view in AppDetails if none are available
App.getAllScreenshots() works nicely here, but its probably a temporary
measure until we figure out how to handle the various kinds of
screenshots (TV, Wear, etc).
2017-03-31 09:09:31 +11:00
Hans-Christoph Steiner
28bcbc548a use central method to setup Jackson in locked down setup
This is based on @pserwlyo's work.  The App and Apk classes currently
need just the public instance variables auto-filled by Jackson, so
everything else is considered opt-in, via @JsonProperty declarations.
This is currently only used for setLocalized(), setUsesPermission(),
and setUsesPermissionSdk23().

# Conflicts:
#	app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java
2017-03-31 09:09:31 +11:00
Hans-Christoph Steiner
2a2e475bdc index-v1 future proof test for uses-permission
The parser should accept additional elements to each
uses-permission entry, in case more XML attributes is added to
<uses-permission>.  <uses-permission> has had two attributes
since the beginning.

Other changes to this JSON data structure are bad index-v1
format, and will cause crashes:

* Removing an element e.g. null from a uses-permission entry
  would be invalid index-v1 JSON, since that structure mirrors
  the uses-permission AndroidManifest.xml element, which has a
  long standing fixed definition of name/maxSdkVersion.  That
  should crash so that fdroidserver authors know they are
  generating invalid index-v1.

* setting versionCode to anything but an int is invalid index-v1
  JSON, and should crash.  versionCode has been defined as an
  32-bit signed integer value since the beginning of Android.

* <uses-permission android:name=""> has been defined as a string
  since the beginning of Android.

https://developer.android.com/guide/topics/manifest/uses-permission-element.html
2017-03-31 09:09:31 +11:00
Hans-Christoph Steiner
9d026bbdbc use string name for JacksonInject to make it easy to read
java
2017-03-31 09:09:31 +11:00
Hans-Christoph Steiner
f86b65e12a rename Apk.repo to match App.repoId and Repo.id
Somehow, the Apk class has its Repo ID variable confusingly named just
"repo", which throughout the code is used to represent an instance of
Repo.
2017-03-31 09:09:31 +11:00
Hans-Christoph Steiner
6f58c2a13d make Jackson inject repoId rather than looping later to add it
repoId is used in Repo, App, and Apk instances to point to the Repo data
in the database.  It does not come from the index files, but rather the
client database.
2017-03-31 09:09:31 +11:00
Hans-Christoph Steiner
38d21cd178 check timestamp with index-v1
An important security protection is erroring when the index-v1.jar is
older than what is currently in the database.  If the current or older
jar is allowed to be parsed, then a malicious server or
Man-In-The-Middle could replay old version of the index-v1.jar to
prevent the clients from learning about updates that fix security issues
2017-03-31 09:09:31 +11:00