Persian Calendar View

Additional

Language
Java
Version
N/A
Created
Mar 23, 2017
Updated
Jan 28, 2018
Owner
Mohammad Mirrajabi (mirrajabi)
Contributor
Mohammad Mirrajabi (mirrajabi)
1
Activity
Badge
Generate
Download
Source code
APK file

Promotion

PersianCalendarView - تقویم فارسی اندروید

Persian calendar view for android based on ebraminio's DroidPersianCalendar open-source project.

Usage

First add jitpack to your projects build.gradle file

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Then add the dependency in modules build.gradle file

dependencies {
    compile 'com.github.roojin:persian-calendar-view:1.2.2'
}

now just simply add PersianCalendarView to your layouts

<ir.mirrajabi.persiancalendar.PersianCalendarView
    android:id="@+id/persian_calendar"
    android:layout_width="match_parent"
    android:layout_height="290dp"
    app:pcv_colorBackground="#292929"
    app:pcv_colorDayName="#bab6b6"
    app:pcv_colorHoliday="#ffd506"
    app:pcv_colorHolidaySelected="#f1f2f3"
    app:pcv_colorNormalDaySelected="#d9d9d9"
    app:pcv_colorNormalDay="#f3f4f5"
    app:pcv_eventUnderlineColor="#02f0f0"/>

Sample App is provided to demonstrate the basic scenario.

You can also interact with the sample app in this Page

Styling

Attributes

Attribute Type Description
pcv_typefacePath string Path to custom font in assets folder
pcv_headersTypefacePath string Path to custom font for header in assets folder
pcv_colorBackground color Calendar's background color
pcv_colorHoliday color Text color of holidays
pcv_colorHolidaySelected color Text color of holidays when selected
pcv_colorNormalDay color Text color of normal days
pcv_colorNormalDaySelected color Text color of normal days when selected
pcv_colorDayName color Text color of day name headers
pcv_eventUnderlineColor color Underline color of days with events
pcv_todayBackground reference Background resource used to highlight today
pcv_selectedDayBackground reference Background resource used to highlight selected day
pcv_fontSize dimension Day digits font size
pcv_HeadersFontSize dimension Day name headers font size

Functions

Most of the functionalities are inside the handler class. you can get it like this

  PersianCalendarView calendarView  = (PersianCalendarView) findViewById(R.id.persian_calendar);
  PersianCalendarHandler calendarHandler = persianCalendarView.getCalendar();
                PersianDate today = calendar.getToday();

Events

The library includes official events but you can also add your own events to it

Adding local events

// Add an event called "Custom event" to this day
calendarHandler.addLocalEvent(new CalendarEvent(calendar.getToday(), "Custom event", false));
// Add an event called "Custom event 2" to 12 days later
calendarHandler.addLocalEvent(new CalendarEvent(today.clone().rollDay(12,true), "Custom event 2", true));
// Add an event called "Custom event 3" to 1399/1/10 later
calendarHandler.addLocalEvent(new CalendarEvent(new PersianDate(1399,1,10), "Custom event 2", true));

Getting events for specific day

PersianDate today = calendar.getToday();
calendarHandler.getAllEventsForDay(today);
calendarHandler.getLocalEvents();
calendarHandler.getLocalEventsForDay(today);
calendarHandler.getOfficialEventsForDay(today);

Listeners

currently you can set Click, LongClick and MonthChange listeners on PersianCalendarView

void setOnDayClickedListener(OnDayClickedListener listener)
void setOnDayLongClickedListener(OnDayLongClickedListener listener)
void setOnMonthChangedListener(OnMonthChangedListener listener)

Other functions of PersianCalendarView

void update()
void goToDate(PersianDate date)
void goToToday()
void goToNextMonth()
void goToPreviousMonth()
void goToMonthFromNow(int offset)
PersianCalendarHandler getCalendar()

Useful methods of PersianCalendarHandler

PersianDate getToday()
// These ones Convert english digits to persian
String formatNumber(int number) 
String formatNumber(String number)
// Converts classes inherited from AbstractDate class to date string
String dateToString(AbstractDate date)
String dayTitleSummary
String dayTitleSummary(PersianDate persianDate)
String getMonthName(AbstractDate date)
String getWeekDayName(AbstractDate date)
List<CalendarEvent> getOfficialEventsForDay(PersianDate day)
List<CalendarEvent> getAllEventsForDay(PersianDate day)
List<CalendarEvent> getLocalEvents()
List<CalendarEvent> getLocalEventsForDay(PersianDate day)
String getEventsTitle(PersianDate day, boolean holiday)
// These ones also have getters
PersianCalendarHandler setMonthNames(String[] monthNames)
PersianCalendarHandler setWeekDaysNames(String[] weekDaysNames)
PersianCalendarHandler setTypeface(Typeface typeface)
PersianCalendarHandler setColorBackground(int colorBackground) 
PersianCalendarHandler setColorDayName(int colorDayName)
PersianCalendarHandler setColorHoliday(int colorHoliday)
PersianCalendarHandler setColorHolidaySelected(int colorHolidaySelected)
PersianCalendarHandler setColorNormalDay(int colorNormalDay)
PersianCalendarHandler setColorNormalDaySelected(int colorNormalDaySelected)
PersianCalendarHandler setColorEventUnderline(int colorEventUnderline)
PersianCalendarHandler setDaysFontSize(int daysFontSize)
PersianCalendarHandler setHeadersFontSize(int headersFontSize)
PersianCalendarHandler setTodayBackground(int todayBackground)
PersianCalendarHandler setSelectedDayBackground(int selectedDayBackground)
PersianCalendarHandler setHighlightOfficialEvents(boolean highlightOfficialEvents)
PersianCalendarHandler setHighlightLocalEvents(boolean highlightLocalEvents)

Notes

If you want to use this library with Xamarin or Basic4Android you can use the following links. I didn't test any of these myself but I guess they may work fine.

using with Xamarin

take a look at issue #11

Using with B4A

https://b4x.com/android/forum/threads/persiancalendarview.79171/

Todo

  • Make it even more flexible and customizable
  • Clean it up

Contributions

Any contributions are welcome. just fork it and submit your changes to your fork and then create a pull request

Thanks

Special thanks to ebrahimino for his open-source project which this library is based on

Links

Roojin co

Roojin co (Github page)

Mirrajabi.ir