1358 Commits

Author SHA1 Message Date
Dominik Schürmann
6419915d5a Strings for error dialog, cleanup 2014-05-11 02:25:50 +02:00
Dominik Schürmann
df696ed81e Installer: define all methods as abstract that need to be implemented in subclasses 2014-05-11 02:13:27 +02:00
Dominik Schürmann
04577d213c Use ContentObserver to observe install status 2014-05-11 01:38:17 +02:00
Dominik Schürmann
919f9c63b8 Merge master into super-fdroid 2014-05-11 00:38:53 +02:00
Dominik Schürmann
d250ac727b Cleanup installer code 2014-05-11 00:36:54 +02:00
Dominik Schürmann
e1d9e0f3b1 Document installer callback hack 2014-05-11 00:26:31 +02:00
Dominik Schürmann
c48dcdc785 Change callback 2014-05-11 00:03:26 +02:00
Dominik Schürmann
0887da72ed Add default installer for Android >= 4.0 2014-05-10 19:46:46 +02:00
Daniel Martí
6a4b323d06 Prepare for 0.67-test 0.67-test 2014-05-08 13:23:20 +02:00
Daniel Martí
96c3af5485 Add missing RTL/LTR layout attributes 2014-05-08 13:16:21 +02:00
Daniel Martí
295ef8f02a Merge branch 'swap_ux_improvements' of https://gitlab.com/eighthave/fdroidclient 2014-05-08 12:53:04 +02:00
Hans-Christoph Steiner
0a8d08aac8 ensure that "Update Repo" is always shown in the Action Mode
Otherwise, it gets confusing what is the action the user should do. Perhaps
the Action Mode "Done" button should always trigger the "Update Repo"
action, right now it means do nothing and return.
2014-05-08 01:12:41 -04:00
Hans-Christoph Steiner
efacc22c10 include app icons in the SelectLocalApps view
Since we have the packageName, we can just fetch the Drawables directly.
This uses some shortcuts to try to make things run faster.  For example,
the ImageView does not have an ID, instead it is references by the index
number within the LinearLayout.
2014-05-08 00:58:42 -04:00
Hans-Christoph Steiner
107eab5eac Local Repo webserver turns itself off if it was automatically started
When you visit LocalRepoActivity, the swapping webserver is automatically
turned on, since it is required for any swapping to happen.  When it was
automatically turned on, it will automatically turn itself off after 15
minutes to make sure that it doesn't stay running forever.  If the user
manually turns it off, that cancels the automatic stop.
2014-05-08 00:58:42 -04:00
Hans-Christoph Steiner
16399b760b start the local repo webserver by default when going to LocalRepoActivity
To make it dead simple to swap repos when going to the Local Repos screen.
2014-05-08 00:58:42 -04:00
Hans-Christoph Steiner
2256cd00e1 start/stop Local Repo from any Activity
This forces the use of the Application's Context, so we can be sure the
webserver will run as long as FDroid is running.  It also checks to make
sure whether the webserver is running before trying to start it.
2014-05-08 00:58:42 -04:00
Hans-Christoph Steiner
7401366ac9 quick improvement of LocalRepoActivity layout
This is meant to try to make the on/off state of the webserver that serves
the local repo more apparent.
2014-05-08 00:58:42 -04:00
Hans-Christoph Steiner
8d3d325967 apply light/dark theme to all Local Repo related Activities 2014-05-07 21:55:37 -04:00
Hans-Christoph Steiner
914149aad2 live filtering of InstalledApps for setting up Local Repo
This implements live filtering in a SearchView so that it is easy to search
for the apps you want to include in your Local Repo.  This requires some
newer stuff, so I switched it to the android-11 Activity until appcompat-v7
is included.  All this functionality will work fine with appcompat-v7.
2014-05-07 20:49:43 -04:00
Hans-Christoph Steiner
a6de6b2932 use two text item layout with label and packageName for SelectLocalApps
Having the packageName as the minor text is useful for figuring out who the
developer of the app is.
2014-05-07 20:49:43 -04:00
Peter Serwylo
5e02404d6a Added getSearchUri() to InstalledAppProvider
This allows for searching installed app names for ones which match
a string.  It searches based on the "label" as declared in the
manifest in the <application> tag as "android:label".
2014-05-07 20:48:28 -04:00
Peter Serwylo
60f5a1441c Installed apps by application label by default, and sort order can be chosen.
Also prevented crash due to lack of applicationLabel field.
db-version/46
2014-05-07 19:16:45 -04:00
Hans-Christoph Steiner
584152d2fa store "App Label" for Installed Apps, to show in Local Repo setup
Most people are going to know the "label" i.e. the display name rather than
the packageName/id.  So also store the label in the database and make it
accessible via InstalledAppsProvider so SelectLocalAppsFragment can show a
list of friendly names rather than packageNames.
db-version/45
2014-05-07 19:16:45 -04:00
Hans-Christoph Steiner
3c005006ce zxing requires >= android-8, only gen QR Codes on >= android-8
The zxing library includes some Java 7 features, so it will only work on
Android SDK 8 (2.1) or above.  FDroid supports SDK 7 (2.0), so on 7, do not
try to generate QR Codes.
2014-05-07 19:16:45 -04:00
Hans-Christoph Steiner
47d4526f05 include new nanohttpd setup in Eclipse project 2014-05-07 19:16:45 -04:00
F-Droid Translatebot
0aadd51e71 Translation updates 2014-05-07 23:42:08 +01:00
Daniel Martí
52c61ec1ca Update nanohttpd, replace as an ant library 2014-05-07 22:02:40 +02:00
Daniel Martí
15a3d74ada Merge branch 'merge_requests/11' of https://gitlab.com/eighthave/fdroidclient 2014-05-07 20:32:22 +02:00
Hans-Christoph Steiner
06c974265e if port 8888 is in use, then use a random one
This is a quick and dirty way to deal with port conflicts
2014-05-07 14:20:39 -04:00
Hans-Christoph Steiner
2848b50f8b catch NameNotFoundException when looking up installer name
If an application was installed via ADB, then it won't have an installer
package/name set.  Therefore, looking up the label will cause a
NameNotFoundException, which should be ignored and not passed to the method
that called App() since it does not refer to the packageName that the
method is trying to look up, but instead the packageName of the missing
installer app.
2014-05-07 14:20:39 -04:00
Hans-Christoph Steiner
2aa39311c2 no need for ipAddress int to be global, so make local
This will prevent ipAddressString and ipAddress from getting out of sync.
2014-05-06 22:10:32 -04:00
Hans-Christoph Steiner
a58825d7ea split out FDroid.apk copying into its own private method
This is at the request of pserwylo, I think its unecessary.
2014-05-06 22:10:32 -04:00
Hans-Christoph Steiner
d8d8a45d88 purge appInfo property variable from App class
Expose less stuff as properties, this didn't need to be exposed, it was
only an implementation shortcut.
2014-05-06 22:10:32 -04:00
Hans-Christoph Steiner
3352d83102 make App.apks List into a single Apk instance at App.installedApk
This then serves to represent the APK that is installed for this app. It
needs to be filled out by the Providers then also.  This then becomes a
place for data specific to the an installed App, like installedVersionCode
and installedVersionName, instead of having it both stored in an App
instance and a related Apk instance.
2014-05-06 22:10:32 -04:00
Hans-Christoph Steiner
b11232b607 add summary/description to installed apps based on installed info
First try to get the description from APK, which is seems that no one sets
so it is usually null. Then get info about how it was installed, like
which app store, when it was installed and upgraded.
2014-05-06 22:10:32 -04:00
Hans-Christoph Steiner
e35a6e05c7 constructor to create App from an installed APK
Using PackageManager and Context, this will create an App instance from
the APK specified by the packageName.
2014-05-06 22:10:32 -04:00
Hans-Christoph Steiner
c1a6f545cf move getMinSdkVersion() from LocalRepoManager to Utils
This will probably be useful elsewhere.
2014-05-06 19:51:15 -04:00
Hans-Christoph Steiner
d24f94476e split out static copy/symlink methods from LocalRepoManager to Utils
They are static utility methods, so put them where they belong!
2014-05-06 19:51:15 -04:00
Hans-Christoph Steiner
5d995aa8c8 move LocalRepoService's Handler to a static subclass
This fixes this lint error:
"This Handler class should be static or leaks might occur"
2014-05-06 19:51:15 -04:00
Hans-Christoph Steiner
882e010052 create initial repo with only FDroid in it
This automatically creates a repo with only FDroid in it the first time the
user goes to the Local Repo view.  Having an empty repo is useless if the
user is trying to swap with someone.  Having FDroid in there is not a
privacy leak since FDroid is needed for the swap process, and it will then
enable people to automatically get updates from each other, and do the
bootstrap process from the web browser.

fixes #2954 https://dev.guardianproject.info/issues/2954
2014-05-06 19:51:15 -04:00
Hans-Christoph Steiner
5f31703316 init SelectLocalApps list from the apks in the local repo
When FDroid has been started, this checks the symlinked APKs in the local
repo and uses those package names to build up the list of selected local
apps.  This gives the SelectLocalApps experience continuity across app
restarts.

refs #3204 https://dev.guardianproject.info/issues/3204
2014-05-06 19:51:15 -04:00
Hans-Christoph Steiner
08346b9b18 add Activity to choose which installed apps are in the local repo
This gets the data about which apps are installed from the ContentProvider
that pserwylo recently added for data about "Installed Apps" and presents
a list view for the user to select from by touching each line.  Then if the
user chooses "Update Repo", it will regenerate the local repo based on the
current selection.  It will always include FDroid in the local repo.

fixes #3232 https://dev.guardianproject.info/issues/3232
refs #3204 https://dev.guardianproject.info/issues/3204
2014-05-06 19:51:15 -04:00
Hans-Christoph Steiner
678e2b09ea InstalledAppProvider needs _ID row so it can be used in CursorLoaders
In order to use the data from InstalledAppProvider in a lot of the high
level classes provided by Android, like CursorLoader, SimpleCursorLoader,
etc, there must be an _ID row.
2014-05-06 19:51:15 -04:00
Hans-Christoph Steiner
94dc2d019f add wizard for sending FDroid to another device via WiFi/QR
This is a little helper to direct people to get a new device to download
FDroid from another device that already has it.  It first prompts them to
join the same wifi network, and offers a QR Code to associate to the same
wifi.  The next step is a QR Code for getting the URL to the local repo.
The index.html on that local repo includes a download link for FDroid and
a repo link to the local repo.

refs #3204 https://dev.guardianproject.info/issues/3204
2014-05-06 19:51:15 -04:00
Hans-Christoph Steiner
17c42e4bd0 use class Context directly rather than storing it
Use the WifiStateChangeService.this syntax in order to eliminate
an instance variable.
2014-05-06 19:51:15 -04:00
Hans-Christoph Steiner
a9c88bb5d7 build a local repo from a list of installed APKs
Wire up the "Setup Repo" button on the Local Repo view to generate an
FDroid repo on the device that is hosted with the local webserver.  This
also generates an index.html for when people navigate to the local repo via
a browser.  This index.html will allow them to both download FDroid and to
setup the repo on the device running the webserver on the local FDroid.

refs #3204 https://dev.guardianproject.info/issues/3204
refs #2668 https://dev.guardianproject.info/issues/2668
2014-05-06 19:51:15 -04:00
Hans-Christoph Steiner
5050605f72 Activity/Service for running a local repo via http://
This is a skeleton for the upcoming local repo (aka swap aka Kerplapp).
Right now, it just provides an Activity for controlling a Service which
manages a local webserver (nanohttpd).  Next, it will be wired up to the
local repo created via a dedicated Activity for managing the list of apps
included in the local repo.

refs #3204 https://dev.guardianproject.info/issues/3204
2014-05-06 19:28:27 -04:00
Hans-Christoph Steiner
2c2d8c868c monitor Wifi changes with BroadcastReceiver/Service
The local repo will need to both have current wifi settings in order to
send the correct IP address, SSID, etc.  Also, this could be used to handle
interrupted downloads and updates, but that is not included in this commit.

refs #3204 https://dev.guardianproject.info/issues/3204
2014-05-06 11:55:52 -04:00
Hans-Christoph Steiner
db0b106656 nanohttpd submodule for supporting local HTTP repos
This webserver is the core of the kerplapp swap local repo when used over
IP connections (WiFi).  It is the smallest Java webserver we could find. It
is included as a git submodule, but then only the actual source files that
are needed are included.  They are symlinked in src/.

The git repo used is the one that we submitted upstream as a pull request.
The pull request contains changes required to support https://.  It has not
yet been accepted, so we cannot yet use the official repo.  Once the pull
request is included, this should be switched to the latest release in the
official git repo.

https://github.com/eighthave/nanohttpd
https://github.com/NanoHttpd/nanohttpd/pull/107

refs #3204 https://dev.guardianproject.info/issues/3204
2014-05-06 11:55:51 -04:00
Hans-Christoph Steiner
a89e4143c0 QR Code image generation into AsyncTask to keep things snappy
Generating the QR Code image can take some time, so do it in an AsyncTask
which then updates the ImageView once the QRCode is complete.  This will be
used for the kerplapp repo swapping process.

refs #3204 https://dev.guardianproject.info/issues/3204
refs #3201 https://dev.guardianproject.info/issues/3201
2014-05-05 19:38:40 -04:00