diff --git a/README.md b/README.md index 6d17b8153..5b83bd247 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,51 @@ This software is licensed under the [Apache License][5]. This software has no bugs. You can dispute this statement at [bugzilla][3] +## Code Structure ## + +Key breakdowns: + +Activities started within the UI: +* ContributionsActivity (ContributionsListFragment, MediaDetailPagerFragment, MediaDetailFragment) - main "my uploads" list and detail view +* LoginActivity - login screen when setting up an account +* SettingsActivity - settings screen +* AboutActivity - about screen + +Activities receiving intents: +* ShareActivity (SingleUploadFragment, CategorizationFragment) - handles receiving a file from another app, accepting a title/desc, and slating it for upload +* MultipleShareActivity (MultipleUploadListFragment, CategorizationFragment) - handles receiving a batch of multiple files from another app, accepting a title/desc, and slating them for upload + +Services: +* WikiAccountAuthenticatorService - authentication service +* UploadService - performs actual file uploads in background +* ContributionsSyncService - polls for updated contributions list from server +* ModificationsSyncService - pushes category additions up to server + +Content providers: +* ContributionsContentProvider - private storage for local copy of user's contribution list +* ModificationsContentProvider - private storage for pending category and template modifications +* CategoryContentProvider - private storage for recently used categories + + +## On-Device Storage ## + +Account credentials are encapsulated in an account provider. Currently only one Wikimedia Commons account is supported at a time. (Question: what is the actual storage for credentials?) + +Preferences are stored in Android's SharedPreferences. + +Information about past and pending uploads is stored in the Contributions content provider, which uses an SQLite database on the backend. + +A list of recently-used categories is stored in the Categories content provider, which uses an SQLite database on the backend. + +Captured files are not currently stored within the app, but are passed by content: or file: URI from other apps. + +Thumbnail images are not currently cached. (?) + + + + + + [1]: https://developer.android.com/sdk/index.html [2]: https://maven.apache.org/ [3]: https://bugzilla.wikimedia.org/enter_bug.cgi?product=Commons%20App