MinTimetable

MinTimeTable is Customizable library to generate Timetable of University.
If you only add a course, the course time is automatically calculated and added to the timetable.
(default 09:00 ~ 16:00)

Screenshot

Portrait & Landscape Timetable

screenshot_1

Installation

JitPack

MinTimeTable is available through JitPack, to install it simply add the following line to your Gradle:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
implementation 'com.github.islandparadise14:Mintable:x.y.z'

Usage

Add View

<com.islandparadise14.mintable.MinTimeTableView
                android:id="@+id/table"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

Day Symbol Definition

private val day = arrayOf("Mon", "Tue", "Wen", "Thu", "Fri")  

Make Table

override onWindowFocusChanged because we know the size of the view after onCreate is finished.
If you don't want to use this method, see the optimization options below.

override fun onWindowFocusChanged(hasFocus: Boolean) {
    super.onWindowFocusChanged(hasFocus)
    table.initTable(day)
}

screenshot_2

Add Schedules

private val scheduleList: ArrayList<ScheduleEntity> = ArrayList()
val schedule = ScheduleEntity(
                  32, //originId
                  "Database", //scheduleName
                  "IT Building 301", //roomInfo
                  ScheduleDay.TUESDAY, //ScheduleDay object (MONDAY ~ SUNDAY)
                  "8:20", //startTime format: "HH:mm"
                  "10:30", //endTime  format: "HH:mm"
                  "#73fcae68", //backgroundColor (optional)
                  "#000000" //textcolor (optional)
                )
scheduleList.add(schedule)
override fun onWindowFocusChanged(hasFocus: Boolean) {
    super.onWindowFocusChanged(hasFocus)
    table.initTable(day)
    table.updateSchedules(scheduleList)
}

screenshot_3

If you want to start on Sunday,
use 'ScheduleDayOption.${weekday}' (SUNDAY ~ SATURDAY)

Optimization Option

Make the view fullWidth

screenshot_4

add attribute 'isFullWidth' (default: false)

<com.islandparadise14.mintable.MinTimeTableView
                android:id="@+id/table"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:isFullWidth="true" />

then you don't need override onWindowFocusChanged

if you want to add padding using optimization option, add attribute 'widthPadding' (default: 0)

<com.islandparadise14.mintable.MinTimeTableView
                android:id="@+id/table"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:isFullWidth="true"
                app:widthPadding="20" />

More Options

Add Listener

ScheduleEntity has onClickListener

schedule.setOnClickListener(View.OnClickListener {
    //do something
})

MinTimeTableView has three kinds of Listener

When you click on a schedule,
if you need ScheduleEntity in Listener, you can use OnScheduleClickListener

table.setOnScheduleClickListener(
    object :OnScheduleClickListener {
        override fun scheduleClicked(entity: ScheduleEntity) {
            //do something
        }
    }
)

When you click on a timeCell,
if you need weekdayInfo and timeInfo, you can use OnTimeCellClickListener

table.setOnTimeCellClickListener(object :OnTimeCellClickListener{
    override fun timeCellClicked(scheduleDay: Int, time: Int) {
        //do something
    }
})

When you LongClick on a schedule,
if you need ScheduleEntity in Listener, you can use OnScheduleLongClickListener

table.setOnScheduleLongClickListener(
        object :OnScheduleLongClickListener{
            override fun scheduleLongClicked(entity: ScheduleEntity) {
                //do something
            }
        }
)

Length options

Length

baseSetting(topMenuHeight: Int, leftMenuWidth: Int, cellHeight: Int)

table.baseSetting(30, 40, 60) //default (20, 30, 50)

Rate

ratioCellSetting(topMenuHeight: Int, leftMenuWidth: Int, cellRatio: Float)

table.ratioCellSetting(20, 30, 1.5f)

Border Option

add attribute 'radius_option' ( none | left | right | round )

<com.islandparadise14.mintable.MinTimeTableView
                android:id="@+id/table"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:radius_option="left" />

screenshot_5

Color options

add attribute 'cellColor', 'lineColor', 'menuColor'

<com.islandparadise14.mintable.MinTimeTableView
                android:id="@+id/table"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:cellColor="@color/black"
                app:lineColor="@color/colorAccent"
                app:menuColor="@color/colorPrimary" />

screenshot_6

TwentyFourHourClock option

add attribute 'setTwentyFourHourClock' (default: true)

<com.islandparadise14.mintable.MinTimeTableView
                android:id="@+id/table"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:setTwentyFourHourClock="false" />

screenshot_7

Border Option

screenshot_8
add attribute 'xEndLine'(blue), 'yEndLine'(red), 'border'(green)

(default: false)

<com.islandparadise14.mintable.MinTimeTableView
                android:id="@+id/table"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:border="true"
                app:xEndLine="true"
                app:yEndLine="true" />

Author Information


Timetable Library for Android Development
Author : Mint Park / Seoul, South Korea
Email : [email protected]
Newest Version : 1.4.2 (JitPack)

GitHub