Age | Commit message (Collapse) | Author | |
---|---|---|---|
2017-08-15 | ConfigAddActivity: Add an standalone config-creating activity | Samuel Holland | |
2017-08-15 | BaseConfigActivity: Set initial config when service available | Samuel Holland | |
This was accidentally missed earlier when adding the optimization to omit binding the service when unnecessary. | |||
2017-08-15 | KeyInputFilter: Extract to its own class | Samuel Holland | |
It will be reused for entering public keys of peers. | |||
2017-08-15 | ConfigActivity: Show the current config in the title | Samuel Holland | |
2017-08-15 | BaseConfigActivity: Move menu handling to ConfigActivity | Samuel Holland | |
2017-08-14 | ConfigActivity: Show back arrow in single layout action bar | Samuel Holland | |
2017-08-14 | ListFragment: Don't assume the ListView is the root | Samuel Holland | |
It may share the layout with a FAB, and that requires a parent ViewGroup. | |||
2017-08-14 | ConfigActivity: Fragments are hard; this un-breaks animations | Samuel Holland | |
2017-08-14 | ConfigActivity: Enable animations on fragment transitions | Samuel Holland | |
2017-08-14 | EditFragment: Input filters for config name and private key | Samuel Holland | |
2017-08-14 | ConfigActivity: Avoid crash when started while locked | Samuel Holland | |
2017-08-13 | Major renaming and refactoring in activity and service | Samuel Holland | |
Apparently "configuration" is the proper term, not "profile". | |||
2017-08-13 | Profile: Add function to copy config from another profile | Samuel Holland | |
2017-08-13 | ProfileActivity: Remove unnecessary parameterization | Samuel Holland | |
2017-08-13 | ProfileService: Rework handling of updates, again | Samuel Holland | |
Prefer updating an object instead of replacing it. This preserves the selection in the UI list. Also make renaming atomic as it should be. Now the only possibility for data loss is if the old file can be opened but not written to. | |||
2017-08-10 | ServiceClientFragment: Connect early if possible | Samuel Holland | |
2017-08-10 | ProfileList: Fix state tracking | Samuel Holland | |
2017-08-10 | ProfileEdit: Finish writing code-behind | Samuel Holland | |
2017-08-10 | ProfileActivity: Do menus correctly | Samuel Holland | |
2017-08-10 | ProfileFragment: Make good use of the cached profile | Samuel Holland | |
2017-08-09 | Settings: Add empty activity | Samuel Holland | |
2017-08-09 | Hook up editing to the layout and menus | Samuel Holland | |
2017-08-09 | ProfileEdit: Add empty activity/fragment | Samuel Holland | |
2017-08-09 | ProfileActivity: Do not use onClick for menus | Samuel Holland | |
2017-08-09 | ProfileActivity: Also remember editing state | Samuel Holland | |
2017-08-09 | ProfileFragment: Helper class to remember a fragment's profile | Samuel Holland | |
Caching the actual profile object is important when the fragment is on an activity's back stack: when it is shown again, onCreateView will be called with profile already set and the service already connected. In this case, there is no later notification from which to bind the profile, so the existing object needs to be bound there. | |||
2017-08-09 | ProfileList: Add the list fragment in code so it knows the layout | Samuel Holland | |
2017-08-09 | ProfileActivity: Replace fragments instead of hiding | Samuel Holland | |
2017-08-09 | ProfileActivity: Extract base class for fixing fragments | Samuel Holland | |
2017-08-09 | Interface: Correctly handle setting a null or empty key | Samuel Holland | |
2017-08-09 | KeyEncoding: Clean up and reorganize to match style | Samuel Holland | |
2017-08-09 | Keypair: Convert to java-style array declarations | Samuel Holland | |
2017-08-08 | Constant time base64 | Jason A. Donenfeld | |
2017-08-08 | Profile: Add helper to check name validity | Samuel Holland | |
2017-08-08 | Profile: Make name modifiable | Samuel Holland | |
2017-08-08 | ProfileActivity: Refactor into clean layers of functionality | Samuel Holland | |
2017-08-07 | ProfileServiceInterface: Update for map-based collection | Samuel Holland | |
2017-08-07 | ProfileService: Use a map to store profile data | Samuel Holland | |
This has no visible changes at the moment, but will allow most functions to pass around strings instead of Profile objects, obviating the need to implement serialization for them. It also trades some naive linear searches for the binary search in SimpleArrayMap. | |||
2017-08-07 | ObservableArrayMapAdapter: Copy ObservableListAdapter | Samuel Holland | |
Since the conversion to a sequential list (to implement ListAdapter) depends on the implementation detail that ObservableArrayMap is backed by an array, we can't use the ObservableMap interface here. | |||
2017-08-07 | ProfileActivity: Add two-pane master-detail layout | Samuel Holland | |
This is designed for tablets, but for testing purposes, it is currently enabled for all devices in landscape orientation. | |||
2017-08-07 | PlaceholderFragment: Simple fragment that shows a message | Samuel Holland | |
This is used for the detail pane when no profile is selected. | |||
2017-08-07 | ProfileActivity: Make local variables final | Samuel Holland | |
2017-08-07 | ProfileActivityFragment: Fix service connection tracking | Samuel Holland | |
2017-08-07 | ProfileList: Load fragment programmatically | Samuel Holland | |
This is necessary to replace it with the profile detail fragment later. | |||
2017-08-04 | ProfileList: Extract service management into a base class | Samuel Holland | |
It will be shared with other fragments. | |||
2017-08-04 | ProfileList: Convert to a fragment | Samuel Holland | |
This is required for a future two-fragment tablet layout, and simplifies the code a bit since the profile detail (view/edit) will be implemented as fragments anyway. | |||
2017-08-04 | RootShell: Make shell command configurable | Samuel Holland | |
2017-08-01 | ProfileList: Remove "Add" menu action, to be replaced by a FAB | Samuel Holland | |
2017-08-01 | ProfileService: Rework profile updating | Samuel Holland | |
This should help discourage editing a Profile without making a copy first, since the caller has to keep track of the old Profile as well. ProfileAdder has been updated to prevent adding duplicate profiles. It checks once in the constructor, so the caller can catch the exception and pass the error back to the UI. It checks again in the worker thread to prevent any race from happening if a profile is added twice quickly. Either the file exists, or it doesn't. Additionally, this change solves the race condition when the old profile is removed before it is updated; previously this would lead to the profile being re-added. Now, ProfileRemover will fail and the profile will stay removed. Finally, updating a profile's name should now work correctly. There were previously multiple bugs with that (the old profile wasn't removed, the new one could duplicate a name, the new one could overwrite some random other one, etc.). | |||
2017-08-01 | Interface: Convert to using Keypair class | Samuel Holland | |
This allows retrieving the public key and generating keypairs, both of which will be exposed in the UI. |