1003 Commits

Author SHA1 Message Date
Hans-Christoph Steiner
c0cd0d33bf send the FDroid.apk via bluetooth on devices that support it
This is another easy method to send FDroid to a device that doesn't have it
yet.  Unfortunately, stock Android blocks the receiving of APKs, but many
ROMs and even some Samsung devices do not have this block.

You can find the lengthy backstory on this work here:
https://dev.guardianproject.info/issues/2084
2014-02-14 22:45:48 -05:00
Hans-Christoph Steiner
0c06b67f3d do not require WiFi in a device, any internet access will work
Setting android.permission.ACCESS_WIFI_STATE automatically sets up
uses-feature to require wifi.  Therefore, we have to manually say that
wifi is not actually required.
2014-02-14 22:45:48 -05:00
Daniel Martí
b709f9e17a Update AndroidPinning 2014-02-14 21:26:04 +01:00
Daniel Martí
1e9c6ccf2e Finally give up on UIL and set up the gradle project ourselves 2014-02-14 12:17:07 +01:00
Daniel Martí
fffae79c24 Add MemorizingTrustManager as gradle library too 2014-02-14 10:51:30 +01:00
Daniel Martí
967174b549 Finally get UIL working as a gradle library
The problem were the dashes in the path 'extern/Universal-Image-Loader'
2014-02-14 10:34:36 +01:00
Daniel Martí
c99cf93c8b Test projects can't have --name it seems 2014-02-14 09:18:21 +01:00
Daniel Martí
cf1519f792 Add eclipse files to gitignore 2014-02-14 09:16:18 +01:00
Daniel Martí
51a02fe40f Update libraries 2014-02-14 09:12:52 +01:00
Daniel Martí
97e3bac98e Bump gradle plugin to 0.8 (gradle 1.10) 2014-02-14 09:10:58 +01:00
Ciaran Gultnieks
f60ce3f56c Merge branch 'merge-requests/61' 2014-02-14 06:30:48 +00:00
Hans-Christoph Steiner
cdad2c66ed add instructions for running the embedded Android Test Project 2014-02-13 23:28:31 -05:00
Hans-Christoph Steiner
9871ad0f01 ant-prepare.sh: also set up test suite, should not affect normal ant builds
This adds the command to update the embedded Android Test Project, so that
it can be run using `cd test/; ant clean emma debug install test`

It also changes -p to --path just to make things a little easier to read.
2014-02-13 21:53:52 -05:00
Hans-Christoph Steiner
113ae202b7 include Eclipse project for the embedded Android Test Project
This should make it easier for some people get started with the tests.
2014-02-13 21:51:29 -05:00
Hans-Christoph Steiner
9c9c0a4819 setup main FDroid screen to NFC Beam the FDroid.apk
This pre-configures a file:// URI that points to the installed location of
the FDroid.apk.  When users put two devices together, and touch the screen
on the device with FDroid on it, it will "beam" over the APK, and prompt
the user to install it.
2014-02-12 21:19:19 -05:00
Hans-Christoph Steiner
ceed2c31d7 prevent crash when using back button after screen rotate
To reproduce the crash:
0. click a fdroidrepo:// URI to bring up the "app repo" dialog
1. rotate the device
2. click back to make the keyboard go away
3. click back to make the dialog go away
4. click back on Manage Repos screen
5. boom!
2014-02-12 21:19:19 -05:00
Hans-Christoph Steiner
ba8de64686 split out RepoListFragment from ManageRepo, Fragments need to be public
Otherwise we get errors like this upon rotation:

"android.support.v4.app.Fragment$InstantiationException: Unable to
instantiate fragment org.fdroid.fdroid.RepoListFragment: make sure class
name exists, is public, and has an empty constructor that is public"
2014-02-12 21:19:19 -05:00
Hans-Christoph Steiner
ea7f82ed1a add menu item to enable NFC to RepoDetails view
It is now possible to beam a repo config via NFC but just selecting the
repo in FDroid, then touching two NFC devices together, and clicking on the
FDroid one.  There is no indication that NFC is off, so this commit adds a
menu item that makes it easy to enable the required NFC settings for
sending a repo to another device via NFC.
2014-02-12 21:19:19 -05:00
Hans-Christoph Steiner
4489037619 NFC beam the repo in RepoDetailsActivity
This is the framework for easily swapping repos.  The idea is that a user
can send the URL with the fingerprint for trusted bootstrapping of the repo
on a new user's device.  This will be essential for p2p repos provided
by Bazaar/Kerplapp.

The required NFC APIs were introduced in android-14. So android-14 and below
skip the NFC stuff.
2014-02-12 21:19:19 -05:00
Hans-Christoph Steiner
220b3d1441 ensure repo fingerprints are always stored in all upper case
this makes sure that the repo fingerprints are always going to have the
same case, no matter how they were added.  Repo.fingerprint probably should
be converted to a BigInteger so that the comparison can be numeric rather
than String.  Then when the fingerprint needs to be displayed, it can be
formatted appropriately.
2014-02-12 21:19:19 -05:00
Hans-Christoph Steiner
fc511fd94f use https for fdroid.org everywhere, avoid redirects 2014-02-12 21:19:19 -05:00
Hans-Christoph Steiner
ae10cd0db4 save/restore current category in Available view
This saves the currently selected category in the Available apps view, and
restores that category when the user returns to the Available screen. It
drives me totally nuts that it always forgets the category when I nav away
from that screen, always returning to What's New.
2014-02-12 21:19:19 -05:00
Daniel Martí
2f6a812fdc Fix db rewrite regression, filtering pref used the wrong way 2014-02-12 20:53:26 +01:00
Daniel Martí
a3b316c4a8 Fix a couple regressions 2014-02-12 20:46:32 +01:00
Daniel Martí
4c58514152 Apply similar layout improvement to app list elements 2014-02-12 20:23:19 +01:00
Daniel Martí
f35528cd78 Fix remaining issues related to vertical length and centering 2014-02-12 20:15:43 +01:00
Daniel Martí
9bd236d66c Some much needed fixes to appdetails headers
* If the info is taller than the icon, grow larger to fit it in
* Center icon vertically
* Move padding out of the header
* Revert some font sizes to how they were some time ago, a bit smaller
2014-02-12 19:30:26 +01:00
Daniel Martí
9b2e5c2426 Don't let AppDetails header textviews overflow 2014-02-12 19:10:47 +01:00
Daniel Martí
81359f929e Place top categories in the original order 2014-02-11 09:06:36 +01:00
Peter Serwylo
1083f57ec1 Case insensitive sort of app list, if sorting by name. 2014-02-11 10:19:32 +11:00
Peter Serwylo
7ca6db9555 Added ArrayAdapterCompat so addAll doesn't need to be wrapped in a guard condition. 2014-02-11 10:12:29 +11:00
Peter Serwylo
ef784dffa8 Update categories list after app list update. 2014-02-11 09:02:03 +11:00
Peter Serwylo
e4d106a298 Fixed incorrect size of category spinner. 2014-02-11 08:30:36 +11:00
Daniel Martí
9ec0a9060c Add .fdmeta for testing reasons 2014-02-10 11:13:44 +01:00
Daniel Martí
52dc6f8977 Update README with new translation info 2014-02-10 09:37:03 +01:00
Daniel Martí
6da00f84cb Fix proguard use in gradle 2014-02-10 09:30:08 +01:00
Daniel Martí
34cdacc303 Run remove-unused-trans again 2014-02-10 09:23:40 +01:00
Daniel Martí
5292acfef0 Add support for arrays in remove-unused-trans 2014-02-10 09:23:27 +01:00
Daniel Martí
0ff1257aef Update submodules 2014-02-10 09:15:03 +01:00
Daniel Martí
f525af993f Run optipng -o4 on all png files 2014-02-09 16:40:38 +01:00
Daniel Martí
9b6bb724d6 Run remove-unused-trans 2014-02-09 16:37:39 +01:00
Daniel Martí
292cc40bc4 Tabbing fixes 2014-02-09 16:35:02 +01:00
Daniel Martí
87c5ff56b8 Fix gradle test root 2014-02-09 16:34:36 +01:00
Peter Serwylo
aaae885161 Merge commit 'refs/merge-requests/60' of gitorious.org:f-droid/fdroidclient 2014-02-08 12:35:13 +11: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.
db-version/39
2014-02-08 11:29:59 +11:00
Peter Serwylo
b3773a1561 Refactoring Apk references into content provider.
Removed DB.Apk in favour of stand-alone Apk class.

Conflicts:
	src/org/fdroid/fdroid/DB.java
2014-02-01 21:40:15 +11:00
Daniel Martí
3b5509ff4b Fix changelog markdown 2014-01-30 17:01:18 +01:00
Daniel Martí
2a8c570a00 Release 0.59-test 0.59-test 2014-01-29 23:45:42 +01:00
Daniel Martí
a01bcd6be2 Don't use find in fix-ellipsis 2014-01-29 23:44:49 +01:00
Daniel Martí
102ff2d0be Run remove-unused-trans 2014-01-29 23:44:04 +01:00