FazziCLAY / OpenToday

Android application for the organization of life
GNU General Public License v3.0
46 stars 7 forks source link
android android-reminder f-droid gnugpl izzyondroid life lifestyle mobile notification planner planner-app reminder reminder-application reminders to-do todo todo-android todo-list todolist-application

Public archive

This project is no longer in development.

.

.

.

.

.

.

.

OpenToday

Language: [English | Русский]

Android application for the organization of life, pro notes and reminder.

license

GitHub release (latest SemVer) IzzyOnDroid

Using

Each tile in the app is called an Item. There are different types of Items, some inherit others, adding new functionality. So for example, the 'Daily checkmark' is inherited from the 'Checkmark' item.

and others...

Screenshots

Even more ideas for use can come to your mind after viewing the screenshots

1 2 About app Calendar
1 2

Toolbar

Toolbar is an important element of the interface. It is located at the bottom of the screen

About important functions in brief:

Add item - Toolbar->Items click (+) next to the desired item type.

--

Move items Swipe the desired item to the right, click the 'selected' checkbox, then open the desired location, open the 'selection' tab in the toolbar and select the desired action there

--

Import/Export Share your items with your friends, to export you have to click on the corresponding button in the 'selection' toolbar menu. All selected items are exported to the clipboard

To import, use the received text in the File tab in the toolbar

--

Technical information

Check more documentation in "/docs" directory

Contribute

I will be glad if you make a Pull Request with a new feature or bug fix.

See "/docs/CONTRIBUTING.md"

Kotlin or Java?

I know Java well, and I'm just learning Kotlin.

When developing, I act according to this logic:

If I write a Backend (working with items, etc.) then Java

If I write Frontend (GUI), then Kotlin is preferable

Items tree (pedigree)

Item (implements Unique) - (minimal height, background color)
|
| Text - (text, text color)
  |
  | DebugTickCounter - (debug item...)
  | LongText - (long text, long text color)
  | Group (implements ContainerItem, ItemsStorage) - (items)
  | FilterGroup (implements ContainerItem, ItemsStorage) - (items)
  | CycleList (implements ContainerItem, ItemsStorage) - (items)
  | Counter - (current value, step)
  | MathGame - (primitive operations (+-*/))
  | Checkbox - (is checked)
     |
     | DayRepeatableCheckbox - (start value for 'is checked' in Checkbox, latest regenerate date)

Todo/Ideas:

Make a pull request -> you will be added to contributors.json and also I will create the contributors screen in the application

Save

Data saved in item_data.json, and item_data.gz (bak file is stored in /data/data/item_data.gz.bak)

Saving in other Thread (TabsManager.SaveThread)

Data loaded from .gz, if the error is from .json

Other files

Import/Export

Structure

--OPENTODAY-IMPORT-START--
<version>
<data>
--OPENTODAY-IMPORT-END--

Tree of code (not full) (maybe outdated)

com.fazziclay.opentoday
|
| app - app logic
  | App - main application class (used by AndroidManifest.xml)
  |
  | items
  | |
  | | item - (items)
  | | |
  | | | ItemsRegistry - contain all items (Item.class, "Item", EmportExportTool, howToCreateEmpty, howToCopy, R.string.itemDisplayName)
  | | | Item - the father of all aitems (see items tree in README.md)
  | | | TextItem
  | | | CheckboxItem
  | | | DayRepeatableCheckboxItem
  | | | CounterItem
  | | | GroupItem
  | | | FilterGroupItem
  | | | CycleList
  | | | DebugTickCounterItem - item contain (int: counter) and add +1 every tick
  | | | ItemController - controller on item (set when attach to itemsStorage)
  | | | ItemsUtils - utils for item managment
  | |
  | | callback - (callbacks)
  | | |
  | |
  | | notification - (item notifications)
  | | |
  | |
  | | tab - (tabs)
  | | | TabsManager - manager of items
  | |
  | | selection - ...
  | | | SelectionManager
  | | | Selection - selection of item (contain item and item itemsStorage)
  | | 
  | | 
  | | CurrentItemStorage - item storage for one item (CycleListItem...)
  | | ItemsStorage - items storage interface
  | | SimpleItemsStorage - simple implementation of ItemsStorage
  | | ImportWrapper - for import/export
  | 
  | datafixer
  | | DataFixer - it is launched at the very beginning of the app to correct the data of the old version (if the application has been updated)
  |             used 'version' file in '.../Android/data/<...>/files/'
  | SettingsManager - manager of application settings (use in ui...SettingsFragment)
  |             used 'settings.json' file
  | UpdateChecker - checking for app updates
                use api in 'https://fazziclay.github.io/api/project_3/...'
                cached result if update not-available for '...cache/latest_update_check' (file contain unix MILLISeconds)
| gui - ui logic
  | activity
  | |
  | | MainActivity - (see UI tree in README.md)
  |
  | UI - ui utils
  |
| util - there are many different utilities...
| (the rest is for convenience and it doesn't matter)

UI Tree

| MainActivity - mainActivity (current date of top, notifications)
| |
| | MainRootFragment - container of fragments, ItemsTabIncludeFragment by default
| | |
| | | ItemsTabIncludeFragment - (contain Toolbar, Tabs+ViewPager2: ItemsEditorRootFragment)
| | | |
| | | | ItemsEditorRootFragment - Root for ItemsStorage tree
| | | | |
| | | | | ItemsEditorFragment - Contain ItemsStorage drawer
| | | | | | ItemTextEditorFragment - comfortable editor for text & text formatting
| | |
| | | AboutFragment - about this app
| | | | ChangelogFragment - CHANGELOG file viewer
| | | SettingsFragment - settings of app (see app.settings.SettingsManager)
| | | ImportFragment - import from text
| | | DeleteItemsFragment - delete items (calls delete() for all provided items)