specifics:
- secret keys are preserved when a new public key is inserted
- started work to give virtual columns a representation in the contract
class
- streamline ProviderHelper methods. the getUnifiedData method relies
on a api level 11 method, not sure yet how to fix/workaround that...
- many more small things work as they did before
Change entire database design. This introduces a lot of changes,
notably all URIs and almost all projections. Some features (like key
deletion) have been simply commented out for now since they need
serious reconsideration. There are a couple of new TODOs marking places
where more work is needed.
The migration path works fine from what I tested. The old database is
not deleted for now, ie, it is reimported at every start of the
application making all intermediate changes transient.
Tested and working (for me):
- All activities in the main drawer
- Multiselect and Search
- ViewKeyActivity, with and without secret key available
- CertifyKeyActivity
- SelectSecretKeyActivity (from CertifyKeyActivity)
- SelectPublicKeyActivity (from encrypt activity)
What doesn't work:
- Actually certifying keys (pending a TODO in ProviderHelper)
- Importing keys doesn't preserve secret keys
- "Encrypt to this contact" doesn't pass key
- Editing keys. All controls are disabled, I'm not sure why... (is this
even my fault?)
- Deleting keys
What I didn't test:
- Key export
- API stuff
- Creating keys (since editing doesn't even work)
show info on the key to be certified, along with a list of (selectable)
user ids. user ids are handed through to the signing service, but not
yet handled.
note: the unified query /will/ need special treatment once certs are
joined in, so I am leaving this as an artifact commit for later
reference or point to revert to.
Find the explicit row id of the public key id given in the uri in
KeyListFragment and work with that. This way, passing in uris by
master key id, mail address, or any other criteria, works.
Might be a good idea to add an actual check if the row id is non-zero
here, but not sure how to do a "bad intent" thing