Android open source calendar

Overview

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. That’s necessary because a Caldav client isn't included in Etar.

The following link provides a tutorial how to use Nextcloud + DAVx5 + 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

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 build

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.

Comments
  • Redesigning calendar preferences + offline calendar

    Redesigning calendar preferences + offline calendar

    It started with my idea to integrate offline calendars into Etar. Then I found the current screen to manage calendars very difficult to use. Because I like the way they can be managed in Google's calendar app, I started to refactor Etar's preferences.

    There are still some todos left before this can potentially be merged. I am interested in general feedback if these UI changes are desired.

    I have a licensing question: Is Apache v2 a requirement? I would really prefer GPLv3 for a project that is not a library, but an end-user app to prevent greedy companies from taking the code and making a proprietary version out of it without contributing back. This happens a lot with K-9 Mail...

    Screenshot_20191227-095759

    Screenshot_20191227-100200

    opened by dschuermann 46
  • Etar is crashing.

    Etar is crashing.

    Yesterday everything was fine with etar, today it´s crashing instantly. I don´t know what could be the problem, i didn´t changed anything ( major ) on my phone. ( Android 7.1.1 )

    I deisntalled the app and installed it again, but the app is crashing instantly, after asking for calender access, with im allowing.

    EDIT: Stock calender is still working.

    bug 
    opened by natackx 24
  • Add option to hide Contact's birthdays

    Add option to hide Contact's birthdays

    Contact birthdays are showed automatically, the problem is that with Birthday Adapter installed your calendars "Contacts birthdays" have to be hidden, otherwise duplicates of birthdays are being displayed; Unfortunately Etar do not have this option.

    In S Planner you can hide them: S Planner -> Calendars -> Display -> Uncheck Contact's birthdays. Doing so did only hide Contact's birthdays in S Planner but not in Etar.

    Its not possible to hide Contact's birthdays in Etar, can you please add that option?

    opened by davidhedlund 24
  • no notifcations

    no notifcations

    Etar 1.0.16 freshly installed from f-droid, Etar notifications are allowed and set up as urgent (popup+sound), notification sound is configured, event has notification set up, I even turned battery optimization off for Etar. And nothing - no popup, no sound, no notification at all, even when screen is on. Android 8.1. Two other calendars are installed: google - notifications are disabled, and simple calendar pro - stopped.

    opened by lvmm 19
  • Margin around calendar view leads to dithering when scrolling

    Margin around calendar view leads to dithering when scrolling

    When you zoom the calendar view very small and your screen is large enough, there is a small margin around the calendar view at the top and bottom. When you scroll, there are ugly dithering effects, like you can see in this screen record: https://i.imgur.com/sZewz8T.mp4

    Phone: OnePlus 5 with Andoid 9 (default display size, 5.5 inches, 1080 x 1920 pixels, 16:9 ratio (~401 ppi density).

    opened by sedrubal 19
  • Event formatting in month view refactored to introduce EventFormatter

    Event formatting in month view refactored to introduce EventFormatter

    Long term goal of my changes is to allow multi-line calendar events in MonthView (this should be configurable) This commit decouples dealing with some formatting issues - like whether to show event time, or "more" indicator, from actual event drawing.

    opened by 0xym 19
  • Primary color selection

    Primary color selection

    Hi ! As some people seemed to want that feature (issue #310), I added the ability to choose the primary color of the app. Please tell me if you want it be done in another way (there might be better ways to implement that feature), or if you want me to change the colours. Any feedback is appreciated ! Cheers !

    opened by Askrenteam 17
  • Opentask view Support

    Opentask view Support

    I added Opentask support in read-only mode: current features

    • show/hide task calendars
    • view task on day, week, month and agenda view
    • view task detail with markdown support
    • support Opentask
    • share task as VTODO
    • add option to show/hide non-visible calendars in main preferences list
    • widget show tasks
    opened by mebitek 16
  • Not exporting db in Android 10

    Not exporting db in Android 10

    Clicking the "export db" button results in App crash, in Samsung galaxy a21s. I know is a beta feature, but i need to access my db file, anyone had the same problem? I switched recently(new phone) to Android10, always worked super well with previous versions i owned.

    opened by teonactl 16
  • Bug: Scrolling to January 1970

    Bug: Scrolling to January 1970

    When scrolling in monthly view to a different month in the future, closing and reopening Etar (just put it in the background - do not force close), it says 'January 1970', but it still shows the monthly calender of June 2022 or whatever. If you now again put Etar in background and reopen it, it shows the monthly view for January 1970.

    I'm using: Google Pixel 6 Stock ROM Android 12 Etar 1.0.30 from F-Droid

    Screenshot_20220424-094445~4

    Screenshot_20220424-094454

    bug 
    opened by EukalyptusX 15
  • Birthday contacts

    Birthday contacts

    Hello, Could someone please explain to me why some of my android contacts are not showing up in etar? Some contacts are showing up and some are not. I can't see what makes them different I must add that I do not synchronize my contacts with google Many thanks for help

    opened by plegrand1 15
  • All-day entries: end date is automatically increased by 1 as soon as edit mode is entered

    All-day entries: end date is automatically increased by 1 as soon as edit mode is entered

    Whenever I want to change all-day entries, their end date is automatically increased by 1 as soon as I enter edit mode. The start date, however, remains unchanged.

    Example: Mon, Jan 2, 2023 is set to Tue, Jan 3, 2023 when entering edit mode. The start date remains at Mon, Jan 2.

    opened by Staubach-GS 0
  • Bump org.jetbrains.kotlin.android from 1.7.0 to 1.8.0

    Bump org.jetbrains.kotlin.android from 1.7.0 to 1.8.0

    Bumps org.jetbrains.kotlin.android from 1.7.0 to 1.8.0.

    Release notes

    Sourced from org.jetbrains.kotlin.android's releases.

    Kotlin 1.8.0

    Changelog

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend

    ... (truncated)

    Changelog

    Sourced from org.jetbrains.kotlin.android's changelog.

    1.8.0

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend

    ... (truncated)

    Commits
    • da1a843 Add ChangeLog for 1.8.0-RC2
    • d325cf8 Call additional publishToMavenLocal in maven build scripts and enable info
    • 0403d70 Don't leave Gradle daemons after build scripts
    • 52b225d Fix task module-name is not propagated to compiler arguments
    • d40ebc3 Specify versions-maven-plugin version explicitly
    • 2e829ed Fix version parsing crash on Gradle rich version string
    • f603c0e Scripting, IR: fix capturing of implicit receiver
    • 06cbf8f Scripting, tests: enable custom script tests with IR
    • d61cef0 Fix deserialization exception for DNN types from Java
    • ea33e72 JVM IR: script is a valid container for local delegated properties
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
  • Bump actions/cache from 3.0.11 to 3.2.2

    Bump actions/cache from 3.0.11 to 3.2.2

    Bumps actions/cache from 3.0.11 to 3.2.2.

    Release notes

    Sourced from actions/cache's releases.

    v3.2.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/cache/compare/v3.2.1...v3.2.2

    v3.2.1

    What's Changed

    Full Changelog: https://github.com/actions/cache/compare/v3.2.0...v3.2.1

    v3.2.0

    What's Changed

    New Contributors

    ... (truncated)

    Changelog

    Sourced from actions/cache's changelog.

    3.0.11

    • Update toolkit version to 3.0.5 to include @actions/core@^1.10.0
    • Update @actions/cache to use updated saveState and setOutput functions from @actions/core@^1.10.0

    3.1.0-beta.1

    • Update @actions/cache on windows to use gnu tar and zstd by default and fallback to bsdtar and zstd if gnu tar is not available. (issue)

    3.1.0-beta.2

    • Added support for fallback to gzip to restore old caches on windows.

    3.1.0-beta.3

    • Bug fixes for bsdtar fallback if gnutar not available and gzip fallback if cache saved using old cache action on windows.

    3.2.0-beta.1

    • Added two new actions - restore and save for granular control on cache.

    3.2.0

    • Released the two new actions - restore and save for granular control on cache

    3.2.1

    • Update @actions/cache on windows to use gnu tar and zstd by default and fallback to bsdtar and zstd if gnu tar is not available. (issue)
    • Added support for fallback to gzip to restore old caches on windows.
    • Added logs for cache version in case of a cache miss.

    3.2.2

    • Reverted the changes made in 3.2.1 to use gnu tar and zstd by default on windows.
    Commits
    • 4723a57 Revert compression changes related to windows but keep version logging (#1049)
    • d1507cc Merge pull request #1042 from me-and/correct-readme-re-windows
    • 3337563 Merge branch 'main' into correct-readme-re-windows
    • 60c7666 save/README.md: Fix typo in example (#1040)
    • b053f2b Fix formatting error in restore/README.md (#1044)
    • 501277c README.md: remove outdated Windows cache tip link
    • c1a5de8 Upgrade codeql to v2 (#1023)
    • 9b0be58 Release compression related changes for windows (#1039)
    • c17f4bf GA for granular cache (#1035)
    • ac25611 docs: fix an invalid link in workarounds.md (#929)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Google Play version out of date since March 22nd

    Google Play version out of date since March 22nd

    Latest release of Etar is v1.0.33, whereas the version hosted on Google Play is v1.0.29 since January 29th. Google Play version has been out of date since March 22nd, when v.1.0.30 released. Best to have this updated for those who use Google Play as their app source for Etar.

    opened by cyberparty 1
Releases(v1.0.33)
Android open source calendar

Etar Calendar Etar (from Arabic: إِيتَار) is an open source material designed calendar made for everyone! Why? Well, I wanted a simple, material desig

null 1.5k Jan 4, 2023
A better calendar for Android

Caldroid Caldroid is a fragment that display calendar with dates in a month. Caldroid can be used as embedded fragment, or as dialog fragment. User ca

Roomorama 1.4k Nov 29, 2022
Standalone Android widget for picking a single date from a calendar view.

TimesSquare for Android Standalone Android widget for picking a single date from a calendar view. Usage Include CalendarPickerView in your layout XML.

Square 4.4k Dec 20, 2022
An android library which provides a compact calendar view much like the one used in google calenders.

CompactCalendarView CompactCalendarView is a simple calendar view which provides scrolling between months. It's based on Java's Date and Calendar clas

SundeepK 1.5k Jan 7, 2023
📅 CosmoCalendar is a fully customizable calendar with a wide variety of features and displaying modes.

CosmoCalendar Made by Applikey Solutions Usage Customization Common Selection Current day Navigation buttons Weekend days Connected days Disabled days

Applikey Solutions 1.6k Dec 22, 2022
CustomizableCalendar is a library that allows you to create your calendar, customizing UI and behaviour

CustomizableCalendar This library allows you to create a completely customizable calendar. You can use CustomizableCalendar to create your calendar, c

MOLO17 216 Dec 6, 2022
Demo app for a horizontal schedule(event) calendar

This is a demo project that showcases a horizontally laid out calendar that shows events in a timeline fashion. It is not a library, just a reference implementation for curious developers.

Halil Ozercan 188 Dec 26, 2022
A simple calendar with events, customizable widgets and no ads.

Simple Calendar A simple calendar with events and a customizable widget. A simple calendar with optional CalDAV synchronization. You can easily create

Simple Mobile Tools 3k Jan 4, 2023
Solutions for Muetzilla's Advent Calendar

Solutions for Muetzilla's Advent Calendar Link To the Advents Calendar Content Solutions for Muetzilla's Advent Calendar Content Problem 1 Problem 2 P

Marc Andri Fuchs 1 Mar 23, 2022
Kmpcalendar - A calendar library and views written for kotlin multiplatform

KMPCalendarView Minimal Kotlin Multiplatform project with SwiftUI, Jetpack Compo

Anmol Verma 2 Oct 7, 2022
A Jetpack Compose library for handling calendar component rendering.

Compose Calendar Compose Calendar is a composable handling all complexity of rendering calendar component and date selection. Due to flexibility provi

Bogusz Pawłowski 181 Dec 22, 2022
Calendar - A component for compose desktop

日历 一个用于compose-desktop的日历组件。 截图 feature DayPicker的动画 月份选择器错误提示 点击非本月的时间会跳到上个月 to

wwalkingg 1 Feb 7, 2022
Android Week View is an android library to display calendars (week view or day view) within the app. It supports custom styling.

Android Week View Android Week View is an android library to display calendars (week view or day view) within the app. It supports custom styling. Fea

Raquib-ul Alam (Kanak) 3.4k Jan 3, 2023
Joda-Time library with Android specialization

Android has built-in date and time handling - why bother with a library? If you've worked with Java's Date and Calendar classes you can probably answer this question yourself, but if not, check out Joda-Time's list of benefits.

Daniel Lew 2.6k Dec 9, 2022
An adaptation of the JSR-310 backport for Android.

ThreeTen Android Backport An adaptation of the JSR-310 backport for Android. Attention: Development on this library is winding down. Please consider s

Jake Wharton 3.5k Dec 11, 2022
Android NTP time library. Get the true current time impervious to device clock time changes

TrueTime for Android Make sure to check out our counterpart too: TrueTime, an NTP library for Swift. NTP client for Android. Calculate the date and ti

Instacart 1.3k Jan 4, 2023
Android library for better Picker DialogFragments

DialogFragments modeled after the AOSP Clock and Calendar apps to improve UX for picking time, date, numbers, and other things.

Code-Troopers 2.7k Dec 29, 2022
A material-styled android view that provisions picking of a date, time & recurrence option, all from a single user-interface.

SublimePicker A customizable view that provisions picking of a date, time & recurrence option, all from a single user-interface. You can also view 'Su

Vikram 2.3k Jan 4, 2023
Pick a date or time on Android in style

Material DateTime Picker - Select a time/date in style Material DateTime Picker tries to offer you the date and time pickers as shown in the Material

null 4.7k Dec 29, 2022