56 Commits

Author SHA1 Message Date
Ciaran Gultnieks
77419183ec Declarative dependencies for proxy settings too 2014-08-28 17:46:23 +01:00
Ciaran Gultnieks
b4d8ee08dc Specify preferences dependencies declaratively 2014-08-28 17:39:34 +01:00
Daniel Martí
98a333b7fa "Other" should be the last preferences category 2014-06-19 10:20:01 +02:00
Hans-Christoph Steiner
b7f0195234 add "HTTP Proxy" preference to support Tor, I2P, or any other proxy
This is the most basic support for channeling all downloads through Tor or
I2P.  This does not include Orbot integration, so the use will have to know
to start Orbot before using this.  I don't know anything about I2P.

closes #2367 https://dev.guardianproject.info/issues/2367
https://f-droid.org/repository/issues/?do=view_issue&issue=404
https://f-droid.org/repository/issues/?do=view_issue&issue=424
2014-06-05 17:23:44 -04:00
Daniel Martí
7351584697 Fix inconsistency in local_repo_https default state
+mvdan | _hc: you put https to default true in preferences.xml, but false in Preferences.java
   _hc | mvdan:  it should be off/false by default
2014-05-27 17:53:56 +02:00
Hans-Christoph Steiner
b7339e9423 support HTTPS:// for local repo in a preference
Allow the local repo to use HTTPS:// instead of HTTP://.  This is currently
default off since handling the self-signed certificate is not currently
graceful.  In the future, the SPKI that AndroidPinning uses should be
included in the repo meta data, then when someone marks a repo as trusted,
that local repo's SPKI should be added to the list of trusted keys in
AndroidPinning.

fixes #2960 https://dev.guardianproject.info/issues/2960
2014-05-25 22:53:18 -04:00
Hans-Christoph Steiner
b5f7c0a481 preference for the "name" of the local repo
This name is used in the RepoList, the local repo website title, the
Bonjour broadcast, etc.  By default, a name is generated using the make and
model of the phone plus a random number.
2014-05-20 18:44:47 -04:00
Hans-Christoph Steiner
d25a395936 broadcast local repo via Bonjour/mDNS to enable auto-discovery
This adds support for registering the local repo with Bonjour/mDNS so that
it is broadcast out to all devices on the local network.  This makes it
easy to discover and add local repos on the same wifi.

refs #2900 https://dev.guardianproject.info/issues/2900
2014-05-20 18:37:45 -04:00
Dominik Schürmann
acd3137cbc Make prefs coherent, rename them, and rename SystemPermissionInstaller to SystemInstaller 2014-05-12 18:59:03 +02:00
Dominik Schürmann
2bd686dfe8 Add preference to opt-out of SystemPermissionInstaller 2014-05-12 12:55:17 +02:00
Dominik Schürmann
63b0bbd120 Move root access preference down into other category 2014-05-12 11:40:25 +02:00
Dominik Schürmann
7ed69c93fc Installation/Delete with root shell, add preference for root access, fixes to Installer classes 2014-04-27 18:56:47 +02:00
Peter Serwylo
da8e41249b Removed DB, implemented AppProvider.
Yay!

As expected, a lot of the stuff in DB class is due to UpdateService
requiring it to process the downloaded indexes and insert data into
the database. Thus, this change is about removing that stuff from
the DB class and migrating to ContentProviders.

This required a bit of a change to the way that UpdateService decides
what to do with the data from indexes, but I hope it will make
understanding and changing UpdateService easier in the long term.
For example, it used to read the app details from database, then
if a repo wasn't updated (due to unchanged index) then it would take
the app details for that repo from the list of apps, and re-update
the database (or something like that).

Now, it has been refactored into the following methods:
 * updateOrInsertApps(appsToUpdate);
 * updateOrInsertApks(apksToUpdate);
 * removeApksFromRepos(disabledRepos);
 * removeApksNoLongerInRepo(appsToUpdate, updatedRepos);
 * removeAppsWithoutApks();
 * and probably some others...
Which hopefully are self-explanitory.

The recent change to implement single repo updates was re-implemented
with in light of the methods above. The interface to UpdateService for
scheduling a single repo update is the same as it was before, but
the implementation is completely different. Still works though.

Using batch content provider operations for repo updates,
but they suffer from the problem of not all being under the same
transaction, so if an insert/update stuffs up half way through, we
are left with only half of the update being complete. In the future,
if there is some way to implement notifications from the content provider's
applyBatch method, then we can do it all in the one transaction, and
still have notifications. Currently we break it into several calls
to applyBatch (and hence several transactions) to inform the user
of the progress.

Also adding the beginnings of some tests for AppProvider. In the future, I'll
work on adding better coverage, including instrumentation to test UI features.

==========================
Below is a list of many of the minor changes that also happened along the way
==========================

Make "Can update" tab stay up to date using content observer, rather
than manually deciding when to refresh the tab label as before.

The installed app list is now cached in Utils, because it is invoked
quite a few times, especially when rendering the app lists. The cache is
invalidated when PackageReceiver is notified of new apps.

The content providers don't notify changes if we are in batch mode.
I've left the notification at the end of the batch updates as the
responsibility of the UpdateService. However, it would be nice if this
was somehow handled by the content, as they are really the ones who
should worry about it.

Made curVersion, curVercode and curApk work with providers.
This was done by removing curApk (otherwise we'd need to query the db each
time we fetched one app to get a reference to that apk (resulting in hundreds
of queries). Instead, UpdateService now calculates curVercode and curVersion
and saves them to the database. We then use these where possible. If we really
need curApk (because we want info other than its version and code) we still have
the option of ApkProvider.Helper.find(app.id, app.curVercode). I considered
putting this inside the app value object, e.g. in getCurApk() but thought
better of it as it will likely result in people invoking it all the time,
without realising it causes a DB query.

incompatibleReasons required a minor UI tweak, removing the "min sdk"
ui element from the Apk list. It is replaced by the "Requires: %s" view
(which only appears when the app is incompatible). In the process, and in
response to some feedback from mvdan, I left the min sdk in there, but
only made it show when in "expert mode", just like the architecture.

In order to make the "installed apps" query work under test conditions,
needed to change the way the InstalledApkCache be replaceable with a
mock object.

Pause UIL loading on fast scroll of list, as the list was very choppy for
some reason.

Re-added "Last repo scan" info to the Manage Repo list view.

Fixed up some misc TODO's, removed some unused/empty functions.
2014-02-08 11:29:59 +11:00
Daniel Martí
1f99c00899 Revert "New setting: "Small screen" to avoid ellipsizing on small screens"
This reverts commit a5c66a8c6ed9c9fd174aeb448e428d288e52f1e1.

Conflicts:
	src/org/fdroid/fdroid/AppDetails.java
2014-01-17 21:06:37 +01:00
Daniel Martí
a5c66a8c6e New setting: "Small screen" to avoid ellipsizing on small screens 2014-01-10 22:12:57 +01:00
Daniel Martí
4edd90d7aa Remove translations of removed strings 2014-01-08 09:49:29 +01:00
Daniel Martí
962521947e Last pref summary: notifications 2014-01-01 01:47:10 +01:00
Daniel Martí
6c9a375b27 Do db sync and apk cache settings summaries too 2014-01-01 01:32:33 +01:00
Daniel Martí
abef4f36e0 Do incompatible versions and permissions settings too 2014-01-01 01:20:21 +01:00
Daniel Martí
177b2a170d Show value for the theme pref too, no dummy defualt summaries 2014-01-01 00:42:27 +01:00
Daniel Martí
02bac89b17 Do on/off and value summaries for auto updates 2014-01-01 00:38:47 +01:00
Daniel Martí
1b6a643b9c Start doing checkbox preferences with on/off summaries 2013-12-31 21:59:46 +01:00
Daniel Martí
a76a465cf1 Re-add theming, much better this time 2013-11-03 16:12:22 +01:00
Daniel Martí
ed49eced45 Change setting "Incompatible apps" to "Incompatible versions"
Rather large rewrite, basically doing:
* Always show incompatible apps
* Don't fetch incompatible apks if the new setting is off
* Start using result codes when returning from PreferencesActivity
2013-11-02 18:27:02 +01:00
Daniel Martí
d6f0fbca98 New setting: Automatic app list updates only on wifi (fixes: #380) 2013-10-24 14:21:35 +02:00
Daniel Martí
86af7638e8 Re-add filtering by Root 2013-10-23 17:53:36 +02:00
Daniel Martí
991b91dfdc Remove filter by root, replaced by ACCESS_SUPERUSER permission 2013-10-23 01:13:39 +02:00
Daniel Martí
19712433bc Always show apps with AFs; Always display AF list in bold red at top of AppDetails 2013-10-23 00:52:25 +02:00
Daniel Martí
3741c0c62b Revert all Light Theme changes
Should be done differently. Light theme before Holo is buggy.
2013-09-01 14:03:55 +02:00
Daniel Martí
eb1d21f827 Rename "Maintenance" to "Other" 2013-08-30 14:34:52 +02:00
Daniel Martí
9b9f1a0cce Group all "Storage" prefs under "Maintenance" 2013-08-29 17:29:41 +02:00
Daniel Martí
50f0856f67 Add "Light Theme" setting
Default theme is dark (Holo dark on >=11), addition is light on <11, Holo.Ligt
on >=11 and Holo.Light.DarkActionbar on >=14
2013-08-23 14:29:50 +02:00
Daniel Martí
0c1b854b69 Remove "reset" from the preferences page.
Currently, removing the cache does the job much better. The only thing
clearing the cache doesn't do which "reset" did is removing the databases. But
we don't want to do that anyway.

If someone wants to do that, they can just deactivate or remove a repo, and it
will get wiped from the database.
2013-07-23 17:02:35 +02:00
Daniel Martí
a17d09e0a2 First attempt at implementing the compact layout 2013-05-11 23:32:18 +02:00
Daniel Martí
dbb084accd Disable preferences after desc by default. 2013-05-03 23:02:13 +02:00
Peter Serwylo
688142c83e bede's changes for adding permissions to app details. 2013-04-28 18:48:22 +10:00
Paul Sokolovsky
b71fcab896 Allow user to edit number of update history days in prefs.
Instead of using hardcoded 14 days.
2013-03-17 00:37:37 +02:00
Ciaran Gultnieks
2ae4e6516e Re-implement show incompatible, and fix details layout more 2012-09-19 17:06:49 +01:00
Ciaran Gultnieks
717df0b82f Adds preference to ignore touchscreen feature
A ridiclous number of apps claim to be incompatible with devices that
don't have a touchscreen. This even includes devices that have the 'fake
touchscreen' feature instead. Nearly all of those have no such
requirement, so this preference allows you to ignore it and treat those
apps as being compatible.
2012-09-16 11:37:06 +01:00
Ciaran Gultnieks
0efc4c6794 Performence improvements, work in progress 2012-09-13 21:28:19 +01:00
Ciaran Gultnieks
1b2a1e99ea Better way of dealing with translation exclusions 2012-01-11 11:04:50 +00:00
Ciaran Gultnieks
732262547e Put default_repo xml in correct place 2012-01-10 17:53:37 +00:00
Ivo Ugrina
9359509e2c added antiNoneFreeDep 2011-10-08 00:20:51 +02:00
Ciaran Gultnieks
45a38cc653 Default to auto updating repo daily, and notifying of app updates 2011-04-15 10:53:13 +01:00
Henrik Tunedal
cea9278ef2 Optionally filter apps that require root 2011-03-08 20:06:43 +01:00
Henrik Tunedal
0513bb2de7 Filter incompatible applications 2011-03-05 19:59:01 +01:00
Henrik Tunedal
55eb63b077 Disable database sync preference unless in expert mode 2011-02-14 02:23:23 +01:00
Henrik Tunedal
176c9173ae Add preference for SQLite "synchronous" flag
By default SQLite runs with synchronous=FULL, which is the safest mode
and uses fsync() a lot, but this interacts very badly with Samsung's
infamous RFS filesystem. With this preference the user can decide
whether to sacrifice some safety for reasonable performance.
2011-02-13 20:37:35 +01:00
Ciaran Gultnieks
3d19b7f2c1 Basic search implemented, just needs a bit of tidying up (e.g. tell you what you searched for) 2011-01-17 17:58:48 +00:00
Ciaran Gultnieks
ae6e9d57ff Merge branch 'master' of gitorious.org:f-droid/fdroidclient 2011-01-17 17:28:49 +00:00