38 Commits

Author SHA1 Message Date
Peter Serwylo
0100415e3e WIP: Refactoring Bonjour from manage repos to swap.
Implementing the bare bones of a generic "peer finder" framework. This
may or may not eventuate to something which can live in its own library
and be used by other projects. Might go hand in hand with Carries idea
of having a common UI to be shared among projects.

Got Bluetooth and Bonjour kinda working, but the UI is crud,
and it doesn't remove items and ends up with duplicates. Otherwise,
on our way to a proper "nearby peers" screen.
2015-06-22 08:59:37 +10:00
Peter Serwylo
7c9492e6b4 WIP: Refactoring swap service.
Removed LocalRepoService, replaced with SwapService.

Still TODO:
  Manage threads. Currently everything is called from the
  UI thread, which is a regression from the previous behaviour.
  I'd like to manage this so that the code interacting with the
  SwapManager doesn't need to bother itself with whether it is calling
  from the UI thread or not.

The local repo service had many different methods and properties for
dealing with starting and stopping various things (webserver, bonjour,
in the future it will also need to know about bluetooth and Wifi AP).

The SwapService handles this stuff by delegating to specific classes
that are only responsible for one of these. Hopefully this will make
the process of enabling and disabling swap repos easier to reason
about.

The local repo service was also stopped and started quite regularly.
This meant it was up to the code making use of the service to know if
it was running or not, and to enable it if required.
The new SwapService is only started once (when the singleton
SwapManager is created for the first time). It should not use any more
resources, because it is a background service most the time, and it
is responsible for moving itself to the foreground when required (the
burden is not on the code consuming this service to know when to do
this).

By having the service running more often, it doesn't need to'
continually figure out if it  needs to register or unregister listeners
for various properties (e.g. https enabled) or wifi broadcasts. The
listeners can stay active, and do nothing once notified if swapping is
not enabled.

Moved the timeout timer (which cancels the swap service after 15 mins)
into the SwapService, rather than being managed by the
SwapWorkflowActivity. Seems more appropriate for the service to know to
time itself out rather than the Activity, seeing as the Activity can
die and get GC'ed while the service is still running.

Finally, although there is nothing stopping code in F-Droid from
talking to the service directly, it is now handled by the SwapManager
singleton. This means that details such as using a Messenger or Handler
object in order to communicate via arg1 and arg2 is no longer required,
and instead methods with proper type signatures can be used. This is
similar (but not exactly the same) to how Android system services work.
That is, ask for a "Manager" object using getSystemService(), and then
use that to perform functionality and query state via that object,
which delegates to the service. Then we get the best of both worlds:

 * Reasonable and type safe method signatures
 * Services that are not tied to activity lifecycles, which persist
   beyond the closing of the swap activity.
2015-06-02 00:18:37 +10:00
Peter Serwylo
c26c6b9e89 Removed old SwapActivity + Fragments.
All the code from the activity and the fragments has been successfully
ported to the SwapWorkflowActivity + Views. Thus, the code is no longer
useful, as it was only kept over the previous WIP commits so that it
can be referred to to help re-implement fragments with views.
2015-05-25 16:07:49 +10:00
Peter Serwylo
4f7f7b2cb5 WIP: Refactored select apps to swap into view.
Not worrying about styling yet, just functionality. Added an InnerView
interface that these views can implement. Currently it asks them to
populate the menu. It may be slightly inefficient if we end up with a
popup menu, because it is called onPrepareOptionsMenu, but expects the
inner view to inflate the menu. However, for swap this shouldn't be an
issue, as all the menus pretty much fit in the action bar of most screen
sizes.
2015-05-23 00:10:50 +10:00
Peter Serwylo
3aac399456 Merge branch 'fix-267/nfc-swap' into integration 2015-05-21 07:52:10 +10:00
Peter Serwylo
9824e8df09 NFC swap now goes to confirm swap, not manage repos activity.
The NFC message now is handled by the FDroid activity, so it is treated
the same way as every other incoming repo URL. Because FDroid handles
incoming intents correctly, the NFC one just magically works when
the <intent-filter> is moved from ManageReposAcivity to FDroid without
further code changes.

The other change is that the two way swap only happens when both are
actually swapping. Otherwise, we will send a request for someone to
swap with us, when we are incapable of swapping with them.

Fixes #267.
2015-05-20 22:10:18 +10:00
Peter Serwylo
3df1327b9b Force entire swap process to be portrait.
Although this is usually regarded as poor form, it is currently better
than the alternative which is the whole swap process poohing itself
when a device is rotated. In the future, it may be worthwhile investing
in designing a proper UX for landscape swap too. However the process
of swapping can be quite complex if not presented well, and so it might
end up being too much work to maintain two different UXes for landscape
and portrait.
2015-05-19 21:41:38 +10:00
Daniel Martí
cbf59f9dd0 Fix minsdk to be 8 instead of 7
Java 1.7 is supported from 8, not 7, so we dropped support for 7 long ago.
Very few devices run 7 and quite a few things wouldn't work on 7 anyway.
2015-05-19 13:08:55 +02:00
Daniel Martí
fc52e3e1c0 Bump to 0.91 2015-05-18 23:08:32 +02:00
Daniel Martí
f41be4bbe4 Bump to 0.90-test 2015-05-15 17:37:53 +02:00
Daniel Martí
0db225e07c Bump to 0.89-test 2015-05-09 22:34:04 +02:00
Hans-Christoph Steiner
f79f95e25a fix support for nested repo URLs with bad QR scanner apps
These needed to be pathPattern rather than path in order to make the
IntentFilter treat the .* as a regexp rather than a string literal.
2015-05-07 14:59:57 -04:00
Daniel Martí
01e6db5720 We don't need WRITE_EXTERNAL_STORAGE on api 19 or later
On api 19 or later, writing to your own private directory on the SD doesn't
require any extra dependencies. We only ever store icons, apks and index stuff
on the private repo, so we never read/write anywhere else on the SD.
2015-05-07 16:12:54 +02:00
Daniel Martí
7267736166 Bump to 0.88 2015-04-28 23:14:55 +02:00
Daniel Martí
fa5eac0b72 Bump to 0.87-test 2015-04-21 19:29:06 +02:00
Daniel Martí
928d3e8c9a Bump to 0.86-test 2015-04-18 00:06:13 +02:00
Daniel Martí
f58f008a63 Bump to 0.85-test 2015-04-12 23:57:54 +02:00
Daniel Martí
c52262a405 Handle all app and search links via the main activity
Closes #208.
2015-04-09 00:13:40 +02:00
Daniel Martí
0a515dfae1 Bump to 0.84-test 2015-04-01 20:56:47 +02:00
Peter Serwylo
f5ce318be7 Fix for fragment not displaying on 2.3 device.
Also, app details now goes to the "Swap app list" rather than the main list of
apps after hitting the "Up" button from the ActionBar.
2015-04-01 15:30:57 +11:00
Daniel Martí
246d1c5f32 Remove MemorizingTrustManager, not used right now 2015-03-31 20:47:19 +02:00
Daniel Martí
c0c80919f7 tools:replace no longer needed to make gradle work 2015-03-31 17:22:36 +02:00
Daniel Martí
e1df9c600c Move receivers into subdir 2015-03-30 20:57:31 +02:00
Daniel Martí
e6efffb981 Add support for amazon app links 2015-03-30 19:02:16 +02:00
Daniel Martí
8239f12ff7 Add support for play.google.com search urls 2015-03-30 18:36:32 +02:00
Daniel Martí
53aa7ec849 Add support for play.google.com app links
As requested in #154
2015-03-30 18:07:03 +02:00
Daniel Martí
c11fdd11d8 Bump to 0.83 2015-03-26 19:07:25 +01:00
Daniel Martí
0ced75d451 Bump to 0.82 2015-03-23 16:44:45 +01:00
Daniel Martí
c2eb9a9b67 Bump to 0.81-test 2015-03-15 19:14:04 +01:00
Daniel Martí
d338046329 Bump to 0.80-test 2015-03-08 20:38:44 +01:00
Daniel Martí
8c7a821e8d Place some xml closing tags separate for readability
This also means that diffs will get better if more lines are added to the end
of each attribute list
2015-03-05 16:06:10 +01:00
Peter Serwylo
eec57945c0 Default to binary dependencies, with option for source builds.
NOTE: This commit does not touch the ant build system at all,
only gradle.

There are currently 23 gradle projects which require configuration,
let alone building, in order to build F-Droid. This takes a non-trivial
amount of time/memory/cpu. Additionally, it also provides difficulties
when importing the project into Android Studio - which is the IDE that
many potential contributors will be using. Finally, I have over 100mb
of data in the extern/ folder, and the support libraries require almost
every single Android SDK to be installed, which is several GB. This is
not a friendly environment to encourage people to submit merge requests.

However, I'm very mindful of the need for an open source project such
as F-Droid to be able to be built from source. So to make sure we have
the best of both worlds, I've ensured that building all dependencies
from source is still possible.

The F-Droid/libs/README.md file explains in greater detail how to
do this (i.e. "gradle -PsourceDeps build").

As much as possible, I've tried to make the binary dependencies fetched
from jcenter. However there are still libraries which either haven't
integrated required changes for F-Droid back upstream, or don't have
mavenCentral/jcenter binaries available.

Android preference fragment has been changed to the original
upstream repository. The one we had before was because upstream
hadn't merged a MR for gradfle support yet. However, that has
now been merged. This version still doesn't exist in jcenter though.

In order for libsuperuser to build from upstream, using
`gradle -PsourceDeps`, we need to include a few gradle plugins
from jcenter which are never actually used (used by upstream to
release to jcenter).

Even though support-v4 is included through jcenter, it is kept in
the libs directory, so that ./ant-prepare.sh can use it.

Update support preference fragment to newer version. There has been
bugfixes commited, so lets include them in the version we are using.
2015-03-01 10:21:51 +11:00
Daniel Martí
63a86df035 Bump to 0.79-test 2015-02-16 08:38:00 +01:00
Daniel Martí
623748091d Also explicitly state telephony as not required 2015-01-03 18:13:35 +01:00
Daniel Martí
30385baf16 Bump to 0.78 2014-12-31 01:04:15 +01:00
Daniel Martí
e16ab9e74d Remove more trailing whitespaces 2014-12-31 01:00:31 +01:00
Daniel Martí
c7e9e16a6b Bump to 0.77-test 2014-12-09 15:55:13 +01:00
Daniel Martí
06dd4c8dcb Move F-Droid project into subdir, keeping a root gradle project
Also improved .gitignore a tad
2014-12-09 15:36:07 +01:00