Android open source calendar
Go to file
doomsdayrs e73a3928f1 Split CalendarRepository into Repository & DataSources scheme
CalendarRepository is currently a monolithic file that
 contains all operations related to Calendars.
 While it is true that the Repository is meant to be a source of truth.
 It is not the case to have all operations in it.

Instead, splitting the repositorys data accessor functions into
 datasources lowers the code complexity of the repository itself,
 letting it focus on proper tasks such as actually handling dataflow
 and truth.

A final adjustment is adding an interface between the actual
 implementation of the repository and the UI layer.
 This allows UI developers to not be overwhelmed looking at
 implementation code, and instead focus on accessing methods they need.

Another small change made in this is replacing the usage of LiveData
 in the data layer.
 LiveData is a UI level structure meant best to be used with old
 android views, not for the data layer.

Replacement with Kotlin Flow fits the proper scheme for
 what the data layer is tasked with.
 To lower the amount of changes, the UI layer handles the change of the
 Flow into LiveData via the `asLiveData()` extension function.
 This change also removes ContentProviderLiveData.kt, which is simply
 replaced with `callbackFlow`.

Copyright has also been updated for respective files.
2024-05-27 21:12:01 +02:00
.github Bump actions/cache from 4.0.1 to 4.0.2 2024-04-02 14:48:03 +02:00
app Split CalendarRepository into Repository & DataSources scheme 2024-05-27 21:12:01 +02:00
external Update submodules 2023-10-28 14:57:51 +02:00
gradle/wrapper Bump to latest stable AGP and Gradle version 2024-04-02 15:04:41 +02:00
metadata New version 1.0.45 2024-04-19 16:33:38 +02:00
tests Rearrange the project for better Android Studio support [1/2] 2022-07-15 13:25:46 +02:00
.editorconfig Add editorconfig support 2021-12-09 21:42:18 +01:00
.gitignore .gitignore: Ignore system configurations created in Mac OS 2022-07-28 19:53:01 +02:00
.gitmodules point external/calendar submodule to rebase branch 2022-09-12 08:43:41 +02:00
Android.mk Update Android.mk (#98) 2016-11-05 17:31:12 +01:00
build.gradle.kts Downgrade kotlin to fix compilation 2024-04-19 16:20:05 +02:00
gradle.properties Update Gradle and dependencies (#1373) 2023-04-27 09:03:19 +02:00
gradlew Bump to latest stable AGP and Gradle version 2024-04-02 15:04:41 +02:00
gradlew.bat Bump to latest stable AGP and Gradle version 2024-04-02 15:04:41 +02:00
LICENSE Change License to GPLv3 2020-01-07 20:03:49 +01:00
LICENSE.apache2 Change License to GPLv3 2020-01-07 20:03:49 +01:00
PrivacyPolicy.md Add privacy policy #178 2017-03-14 07:52:15 +03:00
README.md Update README.md 2023-07-09 17:01:00 +02:00
settings.gradle.kts Convert settings.gradle to kts 2024-04-16 18:50:06 +02:00

Etar Calendar

Etar Calendar

Etar (from Arabic: إِيتَار) is an open source material designed calendar made for everyone!

Get it on F-DroidGet it on Google Play

Etar Calendar

Why?

Well, I wanted a simple, material designed and state of the art open source calendar that anyone can make better.

Special thanks

The application is an enhanced version of AOSP Calendar. Without the help of Free Software for Android team, this app would be just a dream. So thanks to them!

Features

  • Month view.
  • Week, day & agenda view.
  • Uses Android calendar sync. Works with Google Calendar, Exchange, etc.
  • Material designed.
  • Support offline calendar.
  • Agenda widget.
  • Multilingual UI.

How to use Etar

Store your calendar on the phone only:

  • Create an offline calendar.

Sync your calendar to a server:

  • A cloud-synched calendar could be a google calendar, but you can also use any other public Caldav-server or even host your own (which would be the only way to keep full control over your data and still have ONE calendar usable from different devices.) To sync such a calendar to some server you need yet another app, e. g. DAVx5. Thats necessary because a Caldav client isn't included in Etar.

Technical explanation

On Android there are "Calendar providers". These can be calendars that are synchronized with a cloud service or local calendars. Basically any app could provide a calendar. Those "provided" calendars can be used by Etar. You can even configure in Etar which ones are to be shown and when adding an event to which calendar it should be added.

Important permissions Etar requires

  • READ_EXTERNAL_STORAGE & WRITE_EXTERNAL_STORAGE
    ->import and export ics calendar files
  • READ_CONTACTS(optional)
    Is queried the first time an appointment is created and can be rejected. But then search and location suggestions no longer work. ->allows search and location suggestions when adding guests to an event
  • READ_CALENDAR & WRITE_CALENDAR
    ->read and create calendar events

Known issues with the ICS import feature

Etar can import ICS files, for instance, received in invitation emails. The import feature is unstable and has a list of known bugs. Refer to https://github.com/Etar-Group/Etar-Calendar/pull/653 as a reference to those bugs. Use it with caution, especially, if your calendar provider automatically sends out invitation emails.

Contribute

Translations

Interested in helping to translate Etar? Contribute here: https://hosted.weblate.org/projects/etar-calendar/strings/

Google Play app description:

You can update/add your own language and all artwork files here

Build instructions

Install and extract Android SDK command line tools.

tools/bin/sdkmanager platform-tools
export ANDROID_HOME=/path/to/android-sdk/
git submodule update --init
gradle :app:assembleDebug

License

Copyright (c) 2005-2013, The Android Open Source Project

Copyright (c) 2013, Dominik Schürmann

Copyright (c) 2015-, The Etar Project

Licensed under the GPLv3: https://www.gnu.org/licenses/gpl-3.0.html Except where otherwise noted.

Google Play and the Google Play logo are trademarks of Google Inc.