2010-10-19 23:24:04 +01:00
<?xml version="1.0" encoding="utf-8"?>
<resources >
2013-09-26 13:12:11 +02:00
<string name= "searchres_napps" > Found %1$d applications matching \'%2$s\':</string>
<string name= "searchres_oneapp" > Found one application matching \'%s\':</string>
<string name= "searchres_noapps" > No applications were found matching \'%s\'</string>
<string name= "SignatureMismatch" > The new version is signed with a different key to the old one. To install the new version, the old one must be uninstalled first. Please do this and try again. (Note that uninstalling will erase any internal data stored by the application)</string>
<string name= "installIncompatible" > It seems like this package is not compatible with your device. Do you want to try and install it anyway?</string>
<string name= "installDowngrade" > You are trying to downgrade this application. Doing so might get it to malfunction and even lose your data. Do you want to try and downgrade it anyway?</string>
2010-12-16 21:40:17 +00:00
<string name= "version" > Version</string>
2013-04-13 10:06:55 +10:00
<string name= "edit" > Edit</string>
<string name= "delete" > Delete</string>
2014-01-30 16:16:56 -05:00
<string name= "enable_nfc_send" > Enable NFC Send…</string>
2014-01-01 01:32:33 +01:00
<string name= "cache_downloaded" > App cache</string>
<string name= "cache_downloaded_on" > Keep downloaded apk files on SD card</string>
2010-12-16 21:40:17 +00:00
<string name= "updates" > Updates</string>
2013-08-30 14:34:52 +02:00
<string name= "other" > Other</string>
2012-09-28 11:01:25 +02:00
<string name= "last_update_check" > Last repo scan: %s</string>
<string name= "never" > never</string>
2013-10-24 14:21:35 +02:00
2014-01-01 00:38:47 +01:00
<string name= "update_interval" > Automatic update interval</string>
<string name= "update_interval_zero" > No automatic app list updates</string>
2013-10-24 14:21:35 +02:00
<string name= "automatic_scan_wifi" > Only on wifi</string>
2014-01-01 00:38:47 +01:00
<string name= "automatic_scan_wifi_on" > Update app lists automatically only on wifi</string>
2013-10-24 14:21:35 +02:00
<string name= "notify" > Notify</string>
2014-01-01 01:47:10 +01:00
<string name= "notify_on" > Notify when updates are available</string>
2013-10-24 14:21:35 +02:00
<string name= "update_history" > Update history</string>
2014-01-01 01:13:01 +01:00
<string name= "update_history_summ" > Days to consider apps new or recent: %s</string>
2014-05-12 18:59:03 +02:00
<string name= "root_installer" > Install using root access</string>
<string name= "root_installer_on" > Request root access to install, update, and remove packages</string>
<string name= "system_installer" > Install using system-permissions</string>
<string name= "system_installer_on" > Use system permissions to install, update, and remove packages</string>
2014-05-16 16:08:30 -04:00
<string name= "local_repo_bonjour" > Broadcast Local Repo</string>
2014-05-16 16:23:54 -04:00
<string name= "local_repo_bonjour_on" > Advertise your local repo using Bonjour (mDNS)</string>
2014-05-16 17:23:29 -04:00
<string name= "local_repo_name" > Name of your Local Repo</string>
<string name= "local_repo_name_summary" > The advertised title of your local repo: %s</string>
2014-05-22 19:51:00 -04:00
<string name= "local_repo_https" > Use Private Connection</string>
<string name= "local_repo_https_on" > Use encrypted HTTPS:// connection for local repo</string>
2014-05-16 16:08:30 -04:00
2013-09-26 13:12:11 +02:00
<string name= "search_results" > Search Results</string>
<string name= "app_details" > App Details</string>
<string name= "no_such_app" > No such app found</string>
2013-07-28 13:50:42 +02:00
2012-08-25 09:57:10 +01:00
<string name= "about_title" > About F-Droid</string>
2010-12-16 21:40:17 +00:00
<string name= "about_desc" > Originally based on Aptoide.\nReleased under the
2013-10-03 19:10:32 +02:00
GNU GPLv3 license.</string>
2010-12-03 20:45:48 +01:00
<string name= "about_site" > Website: </string>
2010-11-12 22:14:25 +00:00
<string name= "about_mail" > Email: </string>
<string name= "about_version" > Version: </string>
2010-12-03 20:45:48 +01:00
<string name= "about_website" > Website</string>
2010-11-07 23:06:46 +00:00
2010-12-05 11:37:39 +00:00
<string name= "no_repo" > You don\'t have any repositories configured!\n\nA
2010-11-07 23:06:46 +00:00
repository is a source of applications. To add one, press the MENU
2010-12-16 21:40:17 +00:00
button now and enter the URL.\n\nA repository address looks something
like
2013-07-28 10:26:58 +01:00
this: https://f-droid.org/repo</string>
2010-10-19 23:24:04 +01:00
2013-05-07 18:32:13 +02:00
<string name= "inst" > Installed</string>
2010-10-19 23:24:04 +01:00
<string name= "not_inst" > Not Installed</string>
2015-01-03 20:27:28 +01:00
<string name= "inst_known_source" > Installed (from %s)</string>
<string name= "inst_unknown_source" > Installed (from unknown source)</string>
2010-11-07 23:06:46 +00:00
2013-09-26 13:12:11 +02:00
<string name= "added_on" > Added on %s</string>
2010-11-07 23:06:46 +00:00
2010-12-03 20:45:48 +01:00
<string name= "ok" > OK</string>
2010-10-19 23:24:04 +01:00
<string name= "yes" > Yes</string>
<string name= "no" > No</string>
<string name= "repo_add_title" > Add new repository</string>
<string name= "repo_add_add" > Add</string>
2010-11-07 23:06:46 +00:00
2010-10-19 23:24:04 +01:00
<string name= "cancel" > Cancel</string>
2013-12-02 20:12:52 -05:00
<string name= "enable" > Enable</string>
<string name= "add_key" > Add Key</string>
<string name= "overwrite" > Overwrite</string>
2010-10-28 17:57:57 +01:00
<string name= "repo_delete_title" > Choose repository to remove</string>
2010-11-07 23:06:46 +00:00
2010-10-19 23:24:04 +01:00
<string name= "repo_update_title" > Update repositories</string>
<string name= "tab_noninstalled" > Available</string>
<string name= "tab_updates" > Updates</string>
2013-05-07 19:36:46 +02:00
<string name= "one_update_available" > 1 update is available.</string>
<string name= "many_updates_available" > %d updates are available.</string>
<string name= "fdroid_updates_available" > F-Droid Updates Available</string>
2010-10-19 23:24:04 +01:00
<string name= "process_wait_title" > Please Wait</string>
2014-01-08 13:09:53 +01:00
<string name= "process_update_msg" > Updating application list…</string>
2010-10-19 23:24:04 +01:00
<string name= "download_server" > Getting application from</string>
2014-01-30 16:16:56 -05:00
<string name= "nfc_is_not_enabled" > NFC is not enabled!</string>
<string name= "go_to_nfc_settings" > Go to NFC Settings…</string>
2014-02-14 22:40:48 -05:00
<string name= "bluetooth_activity_not_found" > No Bluetooth send method found, choose one!</string>
<string name= "choose_bt_send" > Choose Bluetooth send method</string>
2014-04-21 21:13:34 -04:00
<string name= "send_via_bluetooth" > Send via Bluetooth</string>
2010-11-07 23:06:46 +00:00
2010-12-03 20:45:48 +01:00
<string name= "repo_add_url" > Repository address</string>
2013-12-13 03:24:38 +11:00
<string name= "repo_add_fingerprint" > Fingerprint (optional)</string>
2013-11-19 23:47:05 -05:00
<string name= "repo_exists" > This repo already exists!</string>
2013-12-02 20:12:52 -05:00
<string name= "repo_exists_add_fingerprint" > This repo is already setup, this will add new key information.</string>
<string name= "repo_exists_enable" > This repo is already setup, confirm that you want to re-enable it.</string>
2013-12-02 20:19:50 -05:00
<string name= "repo_exists_and_enabled" > The incoming repo is already setup and enabled!</string>
2013-12-02 20:12:52 -05:00
<string name= "repo_delete_to_overwrite" > You must first delete this repo before you can add one with a different key!</string>
2014-01-22 21:38:53 -05:00
<string name= "malformed_repo_uri" > Ignoring malformed repo URI: %s</string>
2010-11-07 23:06:46 +00:00
2010-12-03 20:45:48 +01:00
<string name= "repo_alrt" > The list of used repositories has
2010-12-16 21:40:17 +00:00
changed.\nDo you
want to update them?</string>
2010-11-07 23:06:46 +00:00
2012-12-22 17:54:13 +01:00
<string name= "menu_update_repo" > Update Repos</string>
2013-04-13 10:06:55 +10:00
<string name= "menu_manage" > Repositories</string>
2014-02-14 22:40:48 -05:00
<string name= "menu_send_apk_bt" > Bluetooth FDroid.apk…</string>
2010-11-07 23:06:46 +00:00
<string name= "menu_preferences" > Preferences</string>
<string name= "menu_about" > About</string>
2011-01-16 23:06:18 +00:00
<string name= "menu_search" > Search</string>
2010-11-07 23:06:46 +00:00
<string name= "menu_add_repo" > New Repository</string>
<string name= "menu_rem_repo" > Remove Repository</string>
2014-02-19 14:52:01 -05:00
<string name= "menu_scan_repo" > Find Local Repos</string>
2010-11-07 23:06:46 +00:00
2013-01-28 02:17:20 +02:00
<string name= "menu_launch" > Run</string>
2013-07-15 16:49:03 +02:00
<string name= "menu_share" > Share</string>
2010-11-07 23:06:46 +00:00
<string name= "menu_install" > Install</string>
<string name= "menu_uninstall" > Uninstall</string>
2013-10-10 17:49:31 +02:00
<string name= "menu_ignore_all" > Ignore All Updates</string>
<string name= "menu_ignore_this" > Ignore This Update</string>
2010-12-03 20:45:48 +01:00
<string name= "menu_website" > Website</string>
2010-11-07 23:06:46 +00:00
<string name= "menu_issues" > Issues</string>
<string name= "menu_source" > Source Code</string>
2013-10-25 14:51:50 -04:00
<string name= "menu_upgrade" > Upgrade</string>
2011-02-21 21:33:18 +00:00
<string name= "menu_donate" > Donate</string>
2010-11-07 23:06:46 +00:00
<string name= "details_installed" > Version %s installed</string>
2011-03-22 17:20:41 +01:00
<string name= "details_notinstalled" > Not installed</string>
2010-11-07 23:06:46 +00:00
<string name= "corrupt_download" > Downloaded file is corrupt</string>
2013-09-26 13:12:11 +02:00
<string name= "download_cancelled" > Download cancelled</string>
2010-12-16 21:40:17 +00:00
2013-10-08 14:56:09 +02:00
<string name= "antiadslist" > This app contains advertising</string>
<string name= "antitracklist" > This app tracks and reports your activity</string>
<string name= "antinonfreeadlist" > This app promotes non-free add-ons</string>
<string name= "antinonfreenetlist" > This app promotes non-free network services</string>
<string name= "antinonfreedeplist" > This app depends on other non-free apps</string>
2013-11-27 11:26:52 +00:00
<string name= "antiupstreamnonfreelist" > The upstream source code is not entirely Free</string>
2010-12-16 21:40:17 +00:00
2013-05-11 23:32:18 +02:00
<string name= "display" > Display</string>
2011-01-04 23:52:04 +00:00
<string name= "expert" > Expert</string>
2014-01-01 01:43:52 +01:00
<string name= "expert_on" > Show extra info and enable extra settings</string>
2011-01-04 23:52:04 +00:00
2013-10-23 01:13:39 +02:00
<string name= "search_hint" > Search applications</string>
2011-02-13 20:37:35 +01:00
2011-03-04 23:46:24 +01:00
<string name= "appcompatibility" > Application compatibility</string>
2013-11-02 18:27:02 +01:00
<string name= "show_incompat_versions" > Incompatible versions</string>
2014-01-01 01:20:21 +01:00
<string name= "show_incompat_versions_on" > Show app versions incompatible with the device</string>
2011-03-08 17:14:50 +01:00
<string name= "rooted" > Root</string>
2013-12-31 21:59:46 +01:00
<string name= "rooted_on" > Do not grey out apps requiring root privileges</string>
2012-09-16 11:37:06 +01:00
<string name= "ignoreTouch" > Ignore Touchscreen</string>
2013-12-31 21:59:46 +01:00
<string name= "ignoreTouch_on" > Always include apps that require touchscreen</string>
2013-10-23 01:13:39 +02:00
2012-08-26 09:31:59 +01:00
<string name= "category_all" > All</string>
<string name= "category_whatsnew" > What\'s New</string>
<string name= "category_recentlyupdated" > Recently Updated</string>
2014-05-02 20:26:31 -04:00
<string name= "local_repo" > Local Repo</string>
2014-02-19 14:52:01 -05:00
<string name= "local_repos_title" > Local FDroid Repos</string>
<string name= "local_repos_scanning" > Discovering local FDroid repos… </string>
2014-09-03 16:14:51 +09:30
<string name= "local_repo_running" > F-Droid is ready to swap</string>
2014-05-19 21:49:07 -04:00
<string name= "waiting_for_ipaddress" > waiting for IP address…</string>
2014-05-02 20:51:23 -04:00
<string name= "setup_repo" > Setup Local Repo</string>
2014-09-03 16:14:51 +09:30
<string name= "touch_to_configure_local_repo" > Touch to view details and allow others to swap your apps.</string>
2014-05-07 22:03:35 -04:00
<string name= "touch_to_turn_on_local_repo" > Touch to turn on your local repo.</string>
<string name= "touch_to_turn_off_local_repo" > Touch to turn off your local repo.</string>
2014-05-02 20:37:52 -04:00
<string name= "updating" > Updating… </string>
2014-05-05 19:47:21 -04:00
<string name= "update_repo" > Update Repo</string>
2014-05-02 20:37:52 -04:00
<string name= "deleting_repo" > Deleting current repo… </string>
<string name= "adding_apks_format" > Adding %s to repo… </string>
2014-05-22 19:02:25 -04:00
<string name= "writing_index_jar" > Writing signed index file (index.jar)… </string>
2014-05-23 17:01:15 -04:00
<string name= "failed_to_create_index" > Failed to create the repo index!</string>
2014-05-02 20:37:52 -04:00
<string name= "linking_apks" > Linking APKs into the repo… </string>
<string name= "copying_icons" > Copying app icons into the repo… </string>
<string name= "updated_local_repo" > Finished updating local repo</string>
2014-05-05 19:47:21 -04:00
<string name= "no_applications_found" > No applications found</string>
<string name= "icon" > icon</string>
2014-05-02 20:26:31 -04:00
<string name= "fingerprint" > Fingerprint:</string>
<string name= "wifi_network" > WiFi Network:</string>
2014-05-07 22:03:35 -04:00
<string name= "sharing_uri" > Sharing URL:</string>
2014-05-02 20:26:31 -04:00
<string name= "enable_wifi" > Enable WiFi</string>
<string name= "enabling_wifi" > Enabling WiFi… </string>
<string name= "same_wifi_instructions" > To connect to other people\'s devices, make sure both devices are on the same WiFi network. Then either type the URL above into F-Droid, or scan this QR Code:</string>
2014-05-02 20:51:23 -04:00
<string name= "qr_code" > QR Code</string>
<string name= "next" > Next</string>
2014-08-12 07:24:13 +09:30
<string name= "skip" > Skip</string>
2014-05-02 20:26:31 -04:00
<string name= "qr_content_description" > QR Code of repo URL</string>
2014-05-02 20:51:23 -04:00
<string name= "qr_wizard_wifi_network_instructions" > Scan this QR Code to connect to the same WiFi network as this device.</string>
<string name= "qr_wizard_download_instructions" > Scan this QR Code to connect to the website for getting started.</string>
<string name= "send_fdroid_via_wifi" > Send FDroid via WiFi… </string>
2014-02-19 14:52:01 -05:00
2014-05-28 19:55:47 -04:00
<string name= "proxy" > Proxy</string>
<string name= "enable_proxy_title" > Enable HTTP Proxy</string>
<string name= "enable_proxy_summary" > Configure HTTP Proxy for all network requests</string>
<string name= "proxy_host" > Proxy Host</string>
<string name= "proxy_host_summary" > Configure your proxy\'s hostname (e.g. 127.0.0.1)</string>
<string name= "proxy_port" > Proxy Port</string>
<string name= "proxy_port_summary" > Configure your proxy\'s port number (e.g. 8118)</string>
2013-09-26 13:12:11 +02:00
<!--
status_download takes four parameters:
- Repository (url)
- Downloaded size (human readable)
- Total size (human readable)
- Percentage complete (int between 0-100)
-->
<string name= "status_download" > Downloading\n%2$s / %3$s (%4$d%%) from\n%1$s</string>
<string name= "status_processing_xml" > Processing application\n%2$d of %3$d from\n%1$s</string>
<string name= "status_connecting_to_repo" > Connecting to\n%1$s</string>
<string name= "status_checking_compatibility" > Checking apps compatibility with your device…</string>
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-02 19:38:36 +11:00
<string name= "status_inserting" > Saving application details (%1$d%%)</string>
2014-09-08 00:37:03 +02:00
<string name= "repos_unchanged" > No repository has any package updates</string>
2014-09-13 23:14:52 +02:00
<string name= "all_other_repos_fine" > All other repos didn\'t create errors.</string>
<string name= "global_error_updating_repos" > Error during update:</string>
2013-09-26 13:12:11 +02:00
<string name= "no_permissions" > No permissions are used.</string>
<string name= "permissions_for_long" > Permissions for version %s</string>
<string name= "showPermissions" > Show permissions</string>
2014-01-01 01:20:21 +01:00
<string name= "showPermissions_on" > Display a list of permissions an app requires</string>
2013-09-26 13:12:11 +02:00
<string name= "no_handler_app" > You don\'t have any available app that can handle %s</string>
<string name= "compactlayout" > Compact Layout</string>
2014-01-01 01:03:25 +01:00
<string name= "compactlayout_on" > Show icons at a smaller size</string>
2013-11-03 16:12:22 +01:00
<string name= "theme" > Theme</string>
2013-04-13 10:06:55 +10:00
<string name= "unsigned" > Unsigned</string>
2014-04-25 23:57:42 -04:00
<string name= "unverified" > Unverified</string>
2013-04-13 10:06:55 +10:00
<string name= "repo_url" > URL</string>
2014-01-08 10:38:19 +01:00
<string name= "repo_num_apps" > Number of apps</string>
2014-01-28 20:18:58 -05:00
<string name= "repo_fingerprint" > Fingerprint of Repo Signing Key (SHA-256)</string>
2013-04-13 10:06:55 +10:00
<string name= "repo_description" > Description</string>
<string name= "repo_last_update" > Last update</string>
2013-12-06 13:01:05 +11:00
<string name= "repo_update" > Update</string>
2013-04-13 10:06:55 +10:00
<string name= "repo_name" > Name</string>
<string name= "unsigned_description" > This means that the list of
applications could not be verified. You should be careful
with applications downloaded from unsigned indexes.</string>
<string name= "repo_not_yet_updated" > This repository has not been used yet.
In order to view the apps it provides, you will need to update
it.\n\nOnce updated, the description and other details will
become available here.
</string>
<string name= "repo_delete_details" > Do you want to delete the \"{0}\"
repository, which has {1} apps in it? Any installed apps will NOT be
removed, but you will not be able to update them through F-Droid any
more.
</string>
<string name= "unknown" > Unknown</string>
<string name= "repo_confirm_delete_title" > Delete Repository?</string>
<string name= "repo_confirm_delete_body" > Deleting a repository means
apps from it will no longer be available from F-Droid.\n\nNote: All
previously installed apps will remain on your device.
</string>
<string name= "repo_disabled_notification" > Disabled "%1$s".\n\nYou will
need to re-enable this repository to install apps from it.
</string>
2014-02-19 18:11:32 +01:00
<string name= "minsdk_or_later" > %s or later</string>
<string name= "up_to_maxsdk" > up to %s</string>
<string name= "minsdk_up_to_maxsdk" > %1$s up to %2$s</string>
2014-01-24 11:27:32 -05:00
<string name= "not_on_same_wifi" > Your device is not on the same WiFi as the local repo you just added! Try joining this network: %s</string>
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-02 19:38:36 +11:00
<string name= "requires_features" > Requires: %1$s</string>
2013-04-09 18:31:33 +10:00
2014-03-22 11:12:42 +01:00
<string name= "app_icon" > App icon</string>
<string name= "repo_icon" > Repo icon</string>
2014-04-05 17:08:29 +11:00
<string name= "Children" > Children</string>
<string name= "Development" > Development</string>
<string name= "Games" > Games</string>
<string name= "Internet" > Internet</string>
<string name= "Mathematics" > Mathematics</string>
<string name= "Multimedia" > Multimedia</string>
<string name= "Navigation" > Navigation</string>
<string name= "News" > News</string>
<string name= "Office" > Office</string>
<string name= "Phone_SMS" > Phone & SMS</string>
<string name= "Reading" > Reading</string>
<string name= "Science_Education" > Science & Education</string>
<string name= "Security" > Security</string>
<string name= "System" > System</string>
<string name= "Wallpaper" > Wallpaper</string>
2015-01-03 17:00:11 +01:00
2014-04-27 19:59:28 +02:00
<string name= "requesting_root_access_title" > Root access</string>
<string name= "requesting_root_access_body" > Requesting root access…</string>
2014-04-27 20:11:36 +02:00
<string name= "root_access_denied_title" > Root access denied</string>
<string name= "root_access_denied_body" > Either your Android device is not rooted or you have denied root access for F-Droid.</string>
2014-04-27 22:22:21 +02:00
<string name= "update_all" > Update all</string>
2014-05-11 02:25:50 +02:00
<string name= "installer_error_title" > (De-)Installation Error</string>
<string name= "installer_error_body" > The (de-)installation failed. If you are using root access, try disabling this setting!</string>
2014-05-12 18:59:03 +02:00
<string name= "system_permission_denied_title" > System permissions denied</string>
<string name= "system_permission_denied_body" > This option is only available when F-Droid is installed as a system-app.</string>
2014-05-19 23:18:10 -04:00
<string name= "app_description" > F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. The client makes it easy to browse, install, and keep track of updates on your device.</string>
2014-08-19 15:37:44 +09:30
<string name= "swap_nfc_description" > If your friend has <b > F-Droid and NFC turned on</b> touch your phones together.</string>
<string name= "swap_join_same_wifi" > Join the same Wifi as your friend</string>
<string name= "swap_use_bluetooth" > Use Bluetooth instead</string>
<string name= "swap_wifi_help" > Learn more about Wifi</string>
<string name= "menu_swap" > Swap apps</string>
<string name= "swap" > Swap apps</string>
<string name= "swap_no_wifi_network" > No network yet</string>
<string name= "swap_view_available_networks" > (Tap to open available networks)</string>
2014-06-20 21:44:42 +09:30
<string name= "swap_wifi_qr_not_working" > It\'s not working</string>
<string name= "open_qr_code_scanner" > Open QR Code Scanner</string>
Implemented client connection for swap.
Listen for a new intent, show a screen to the user mentioning
they are about to start a swap. Make FDroid receive repo intents,
then dispatch to relevant Activity.
Previously manage repo always got the intents. Now FDroid does, and
chooses whether to give to ManageRepos or Client connect.
Not sure if it is required to do it this way or not, but it seems to
work.
I had a bit of an issue getting the "Welcome to F-Droid" string to
fit on one line, because it was breaking on the hyphen. That is still
not resolved in this commit.
Still need to:
* Show error messages instead of the "connect" description
* Jar signing seems not to work when connecting to other repo.
In order to handle returning to F-Droid after connecting (or saying no)
I tagged the intent with a "handled" extra value. That way, I can ignore
trying to connect to a repo if we've already handled that event.
Finally, I also fixed an issue regarding downloading of signed
index.jar files with an uppercase fingerprint.
The fingerprint from the jar differed from that in the swap url,
in that one was upper case and the other was lower case.
This uses an .equalsIgnoreCase check instead. It also adds an
extra guard in case the repo doesn't have a fingerprint. Although
it may not even use the signed repo updater if both the pubkey
and fingerprint are null, it is nice to have the extra assurance.
Fixes issue #19.
I also left some more TODO's around. I should put them in issues,
but I'm in a bit of a hurry.
2014-07-05 07:49:37 +09:30
<string name= "swap_welcome" > Welcome to F-Droid!</string>
2015-02-23 15:44:50 +01:00
<string name= "swap_confirm_connect" > Do you want to get apps from %1$s now?</string>
2010-10-19 23:24:04 +01:00
</resources>