270 Commits

Author SHA1 Message Date
Daniel Martí
d6dcf6bf7b Don't prompt users to install into system until it's stable
Right now there are multiple issues - #294, #346, #347, #348 - so telling
people to go through the process at startup should not happen yet.
2015-08-09 12:12:41 -07:00
Daniel Martí
56ff9d1353 Re-add lightWithDarkActionBar enum item (fixes #340)
Added it in the same position as it was originally.
2015-08-09 12:12:28 -07:00
Daniel Martí
9cafe80763 Merge branch 'betaUpdates' into 'master'
Prompt for beta updates

Ready to get merged. 👍

~~This MR is ready to get merged, the last thing that needs to be fixed is [this](72ed814a73 (note_1726274)).~~

This closes #313.

See merge request !112
2015-08-09 18:33:09 +00:00
Peter Serwylo
2b8a882933 Merge branch 'integration/mr-102-and-107' into 'master'
Integration branch containing both MR 102 and 107

Given both MR !102 and !107 both stood on eachothers feet to some extent, this branch contains all commits from both in an integration branch. If both @Nutomic and @eighthave are happy that it faithfully kept their changes during the minor merge conflict resolutions, then we can merge this instead of those two branches. 

* !102 changed download progress from events + listeners to broadcasts + receivers.
* !107 made use of download progress events + listeners to show a downloading UI that was embedded in the activity, rather than shown as a modal dialog.

The conflicts which arose while I merged these branches together were in `AppDetails`. I made it so that, to the best of my ability, it uses broadcast receivers instead of progress listeners when updating the progress bar. Other than that, the only other conflict was both trying to store a reference to the main button from the UI. The only changes were in naming (mainButton vs btMain) and also in the place where the local variable was assigned (onCreate() vs setupViews() which is called during onCreate() anyway).

After merging, I did some minor cleanups. This is because in the process of checking that my conflict resolution compiled, I thought it best to remove a bunch of warnings from `AppDetails` and others. Turns out that by doing so, I found a bug due to the integration (to do with the `AppDetails` querying the downloader for status in `onResume()` rather than waiting for a broadcast event) so I'm glad I did so.

Let me know what you think, and then after the next stable, we can go ahead and merge this if people are happy.

p.s. I have no idea why GitLab is showing @eighthave's commit at the top of the list of commits, after my integration related commits.

See merge request !114
2015-08-09 06:09:54 +00:00
Daniel Martí
f1901d75ac Remove leftover lightWithDarkActionBar enum item 2015-08-03 17:52:31 -07:00
Daniel Martí
bdb71d828f Have the light theme as the default throughout
It was changed in preferences.xml, but not in the manifest and in the default
case in the Java code.
2015-08-03 17:45:32 -07:00
Peter Serwylo
cbd8c977e2 Use annotations to remove lint warnings.
Also removed undocumented java doc.
2015-08-03 22:59:47 +10:00
Peter Serwylo
215dcc0dd9 Don't use Notification class, but rather NotificationCompat. 2015-08-03 22:59:46 +10:00
Peter Serwylo
f3a9581d89 Fix warnings in app details (remove progress thingo).
AppCompat no longer supports progress indicators in the action bar. So
this is not your everyday "Deprecated, but sure, keep using it" job.
Rather, it is "deprecated, and no, we wont even let you use it."

Also removed unused argument and extended AppCompatActivity.
2015-08-03 22:59:46 +10:00
Peter Serwylo
a0bf49d1ea Reinstate code to allow resumed activity to query download status (rather than wait for broadcasts). 2015-08-03 22:59:46 +10:00
Peter Serwylo
b2bde89834 Merge remote-tracking branch 'Nutomic/no-download-dialog' into integration2/mr-102-and-107 2015-08-03 22:59:38 +10:00
Hans-Christoph Steiner
b8261fcecf EXTRA_REPO_ERRORS in Intents should be a CharSequence[], not an ArrayList
This was including the instance of the ArrayList in the Intent, rather than
the expected CharSequence[].
2015-08-03 11:58:34 +02:00
Hans-Christoph Steiner
60f02c0181 in Downloader, instance vars that are set in constructor should be final 2015-08-01 21:02:39 +02:00
Hans-Christoph Steiner
5582e906c8 disable Install/Run/Uninstall button when the install process is running
To make things less confusing, this disables the main button on AppDetails
when something is running.  During install, it also changes the text of the
button to "Installing..."
2015-08-01 21:02:39 +02:00
Hans-Christoph Steiner
7d48ad736c replace Downloader's ProgressListener with local broadcasts
This removes lots of boiler plate, makes it much easier to get the info
where it is needed, and puts the code in line with rest of FDroid. The
ProgressListener pattern was forcing a lot of passing the listener
instances around through classes that never used the listener even.
2015-08-01 21:02:38 +02:00
Hans-Christoph Steiner
e984ed82ef run index update in the background after adding a new repo
That makes that repo automatically ready for use based on user actions like
adding a new repo, switching an existing repo on, etc.

This also lowers the priority of the "update" menu item since it shouldn't
be needed any more.  But leave it for now, just in case.
2015-08-01 21:02:38 +02:00
Hans-Christoph Steiner
cd0b5b80f9 purge unused methods from ApkDownloader and AsyncDownloadWrapper 2015-08-01 20:58:14 +02:00
Hans-Christoph Steiner
5d4bdf6139 all Downloaders have a URL, so make the base class store it for use
This lets the local broadcasts include the URL as an extra, and other
tricks.
2015-08-01 20:58:14 +02:00
Hans-Christoph Steiner
9a9bf92126 make all Downloaders get a Context so the base class can use those tricks
Having a Context in Downloader means that the communications can be changed
to a LocalBroadcastManager, following the pattern that is in a lot of this
app already.
2015-08-01 20:58:14 +02:00
Hans-Christoph Steiner
80063eb786 simplify Downloader constructors
Since all Downloaders are created via the DownloaderFactory, put the temp
file creation there, then we can remove lots of constructors.
2015-08-01 20:58:14 +02:00
Hans-Christoph Steiner
4fd914ac7a convert repo update dialog to a notification
Since the repo updates are happening in an IntentService, they are already
running in a separate thread.  Ironically, the dialog was showing in spite
of that.  This removes the dialog entirely and instead puts up a
Notification with the same messages.  Ultimately, the "refresh" button
should go away, the repos should be updated whenever someone goes to
install an app, and all APK downloads should also show up in the same
Notification.

This removes UpdateReceiver entirely and replaces it with local broadcasts,
since that is a common pattern in FDroid and Android.  It also reduces the
amount of code here.

refs #103 https://gitlab.com/fdroid/fdroidclient/issues/103
2015-08-01 20:58:14 +02:00
Hans-Christoph Steiner
1d263b2aee fix sending repo via NFC
This was my stupid mistake: using a String for a class, instead of a .class
so that when ManageRepo was renamed to ManageRepoActivity, this broke.
2015-08-01 20:55:37 +02:00
Hans-Christoph Steiner
46978e1086 make RepoDetails scrollable and add a QR code to the bottom
Having a QR Code of the repo makes it easy for people to share the repo to
someone else.
2015-08-01 20:55:37 +02:00
Hans-Christoph Steiner
7ea294bb66 switch RepoDetailsActivity to plain structure, purge RepoDetailsFragment
No need for a reusable Fragment here, its only used in one place.  This
changes the structure to be a regular Activity, with all View and Menu
setup in XML files loaded in onCreate().

This also converts the URL to a TextView.  Having it editable in this
Activity makes for a confusing user experience.  Instead, the "Add Repo"
input should validate the URL and not allow creating repos that don't work.

This also purges the use of UpdateService.UpdateReceiver, it will be going
away in the upcoming commits.
2015-08-01 20:55:37 +02:00
Nico Alt
92f8678b3d Prompt for beta updates
Fixes #313
2015-07-30 13:06:53 +02:00
Peter Serwylo
4565f58a75 Clear out the etag from the repo table to "force" update.
We are not forcing an update, in the sense that we make the update
service run. Rather, we are ensuring that the next update wont return
after doing nothing, with the message "repos already up to date".
In this case, the repo metadata (and hence its etag) is the same,
but we made changes in the client to handle the metadata correctly.
Thus, we don't care that it hasn't changed, we want to update anyhow.
2015-07-30 21:06:30 +10:00
Peter Serwylo
e1a8c42f9e Ensure icon URLs are always populated when database is upgraded.
Did this by using the same query which is used to update the icon URLs
after updating the index. To make this same method accessible, without
causing sad database locking, had to expose the method from AppProvider
in a way which would let DBHelper access it. See comments in code for
further explainations.

While there, removed the final lint warning in my Android Studio for
the AppProvider. This was a warning because we could have ended up
iterating over a null object. Although it turns out there was a correct
guard in place which would ensure this didn't happen, it wasn't in such
a way that lint would understand. Thus, I changed the guard condition
around `for( String blah : CommaSeparatedList.make() ) {}` to let lint
relax and not be so pedantic.
2015-07-30 21:06:30 +10:00
Felix Ableitner
8c25134031 Replaced download dialog with embedded progress bar (fixes #270). 2015-07-27 13:04:42 +02:00
relan
4b699d5376 Use AlertDialog from the support library
This unifies look of alert dialogs across various Android versions and
allows proper tinting.
2015-07-20 11:17:40 +03:00
Luca Favatella
b7527e78e7 Log error when view finds unknown column in model
This stricter behaviour would have reported a more meaningful error
easing investigation for issue #276 on Android 2.1.
2015-07-20 03:26:22 +01:00
relan
2dc689e2a1 Remove icons from dialogs titles
Dialogs should not have icons in their title bars. See the Material Design
spec:

    http://www.google.com/design/spec/components/dialogs.html
2015-07-17 09:59:34 +03:00
relan
f0f0bd09d3 Reuse existing refresh icon
Use Material-style icon instead of the old Holo-style one.
2015-07-17 09:20:47 +03:00
Hans-Christoph Steiner
01fce7f94f re-enable Lollipop spongycastle hack
It doesn't look like there is an easy way around this, so re-enable it in
the new structure.

#111 https://gitlab.com/fdroid/fdroidclient/issues/111
2015-07-13 10:32:08 -07:00
Hans-Christoph Steiner
2910acc906 break out TOFU so all connections also run through regular verification
This drastically simplifies the very important index.jar signature
verification process by splitting out the Trust On First Use (TOFU) part of
the process into its own method, and makes the TOFU write happen separately
from the `RepoUpdateRememberer`.  It requires all connections go through
the normal verification process.
2015-07-13 10:32:08 -07:00
Hans-Christoph Steiner
43cc017c91 Utils.closeQuietly() for closing things in finally {} blocks 2015-07-13 10:32:08 -07:00
Hans-Christoph Steiner
675151b4ef rename string status_processing_xml to prevent crashes on old translations
Thanks to @mvdan for catching that.  Turns out Java's String formatting is
not as tolerant as C's printf().  Java crashes when the format is wrong,
while C just ignores extras.
2015-07-13 10:32:08 -07:00
Hans-Christoph Steiner
64d709c142 create ProgressBufferedInputStream to get progress info while parsing XML
Might as well tap into the stream to get the byte counts, that's best
progress info I can think of when parsing a file.

This is a step towards a single progress bar for the whole process, instead
of showing one progress for downloading, another for parsing XML, then a
third for processing the new app info.
2015-07-13 10:32:08 -07:00
Hans-Christoph Steiner
4f2650cd47 update logic to match only parsing signed index files
Now that there is only ever the index.jar, the whole flow of RepoUpdater
has changed quite a bit.  This updates the logic for deciding when to store
the current repo's pubkey in the database for future reference.

This changes the flow to stop writing the unpacked index.xml and instead
stream it directly to the XML parser from the index.jar.  This should speed
things up some.
refs #259 https://gitlab.com/fdroid/fdroidclient/issues/259

This is also work towards running the whole thing in the background:
refs #103 https://gitlab.com/fdroid/fdroidclient/issues/103

This also removes the progress stuff since it will need to change a lot to
work with the streaming mode
2015-07-13 10:32:07 -07:00
Hans-Christoph Steiner
d7efc99bdb simplify RepoUpdater to remove cruft from previous code structure
Before, there was an abstract RepoUpdater class with two subclasses, one
for signed and unsigned.  Now there is just a single class, and it only
ever starts with the index.jar.  So this removes lots of code that was
there to handle that more complicated structure.  For example, there is no
longer the need to separately work on the index.xml vs index.jar.
2015-07-13 10:32:07 -07:00
Nico Alt
53c4ba52c4 delete default value for old permission preference 2015-07-11 11:43:59 +02:00
Daniel Martí
6e5468daa1 Remove unused code in TabsAdapter 2015-06-28 13:37:37 -07:00
Daniel Martí
d9c2ea6fb6 Remove unused imports 2015-06-28 13:33:19 -07:00
Daniel Martí
2b15a3c17b Make good use of TextUtils.isEmpty()
Keep a consistent style when checking for empty strings. This also adds some
missing lentgh() > 0 checks in crucial places like AppDetails.
2015-06-28 13:24:23 -07:00
Nico Alt
5be35d1d87 Merge branch 'material-design' into 'master'
Material Design

Similar to !94, this wants to merge from the F-Droid branch.
Old MR is !84.

See merge request !95
2015-06-18 21:17:36 +00:00
Daniel Martí
a7c9be9b16 Don't read empty xml elements from the index
This fixes cases where e.g. strings would be "" instead of null. Fixes #285.
2015-06-17 20:59:27 +02:00
Daniel Martí
7e0f4bbc0e We bumped minSdk to 8, so TargetApi(8) can go 2015-06-16 17:22:57 +02:00
Nico Alt
8bb4d9012f delete case in switch for deleted theme 2015-06-15 21:19:15 +02:00
Peter Serwylo
a345788dba Added material icons from CC licensed "Google material icons" set.
Fixes #240.

To make this easier, I added a script to aid in downloading icons.
Checkout F-Droid/tools/download-material-icon.sh for more details.

The icons are licensed under the CCv4 attribution license, which I
added a shout out to under "License" in the README.md.
2015-06-15 21:19:14 +02:00
Peter Serwylo
d94e8a4ad2 Made category Spinner style correctly.
Signed-off-by: Nico Alt <nicoalt@posteo.org>
2015-06-15 21:19:14 +02:00
Nico Alt
03c5a224de fix #91: Material Design
- use 'com.android.support:appcompat-v7:22.0.0' instead of version 20.0.0
- ActionBar color: "F-Droid Blue" (also option for "F-Droid Green")
- fix invisible swap button with Material Design
- remove "Light + dark action bar" theme (as of Action Bar is always blue/green)
2015-06-15 21:19:14 +02:00