1 / 9

Linear Calendar

Slides prepared by Ben Pitts. November 2013. Linear Calendar. Ben Pitts Semester Project Android App Development Computer Science Dept , ODU. Linear Calendar Overview. Far Weekly Hourly. Making an interactive timeline Clock or calendar

rhian
Télécharger la présentation

Linear Calendar

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Slides prepared by Ben Pitts November 2013 Linear Calendar Ben Pitts Semester Project Android App Development Computer Science Dept, ODU

  2. Linear Calendar Overview Far Weekly Hourly Making an interactive timeline • Clock or calendar • Zoom-sensitive context • Far: Events collapse into series • Weekly: Events fall vertically beneath days • Hourly: Events shown on their marks • Uses device’s calendars • Existing SyncAdapters handle synchronization to Google Calendar or Exchange servers

  3. Motivation / Problem Description Orange line: Time distance = 1 day Visual distance = 7 days Red line: Time distance = 7 days Visual distance = 1 day Traditional calendars • Inconsistent distance between points Difficult to judge distance at a glance • Fixed window position • Monthly view wastes display space on past events • Prevents viewing future events • Fixed window size • Alternate views (Yearly, weekly, daily, hourly agenda) require entirely new calendar formats • Details require drill-down views Timeline calendar • Always consistent distances Distance is intuitive at a glance • Variable window position • Simply scroll to preferred view extents • View as much past/future as needed • Variable window size • Zoom in and out at will • Detail varies by zoom • Presentation remains consistent Time distance = visual distance 1:1 correlation between days and pixels

  4. Linear Calendar Overview Far view context • Years, months displayed • ‘Anchor’ dates: Birthdays, Anniversaries, Holidays, Major events • Conflated event series visible • Series collapsed, Event instances hidden Weeks, days • Event instances shown • Event titles visible • Events vertical beneath days Near view context: clock/agenda • Hours visible • Minutes, seconds shown dependent on scale • Events horizontal beneath the ruler at their start/end times

  5. Components • Model/Data layer • android.provider.CalendarContract .Calendars – Multiple calendars supported .Events – Events loaded from all calendars • Custom View • onTouchEvent • Multi-touch finger tracking • Smooth panning/scaling support • onDraw • Time ruler drawn dependent on zoom level • Years, months, weeks, days, hours • Events rendered beneath ruler • Event detail varies on zoom • Events use color set to calendar

  6. Usage Scenario • View current date/time in context of surrounding time • At a glance see event distribution • View calendar events • Get a visual feel for where events fall in time, not just by seeing the date • Explore timeline • Add/Update events

  7. Lessons Learned • Gregorian calendar is dumb • Variable and arbitrary everything… if only we used metric time • Leap years, leap seconds, leap from balcony • Daylight Saving Time (DST) is dumb • DST nightmares • Two 1:30AMs on DST day • Programmers usually just hope users don’t try to do important things around DST changes • How do you consistently show events in the context of DST? • Time zones are dumb • Variable per country, per region, per date/time, subject to change anytime • What about someone who travels a lot? How do they need to see timezone changes? This is what time zones actually believe

  8. More Lessons Learned • SYSTEM_UI_FLAG_HIDE_NAVIGATION steals first touch event • Google Calendar/Tasks API • Google APIs complicated to use • REST protocol needs lots of async calls and parsing • Java client library needs dozens of support libs, not optimized for Android • Android Calendar API • Only since Android 4.0+ (Nov 2011) • Sparse documentation, no sample code • Example of event recurrence per rfc2445 (iCalendar) • P15DT5H0M20S = 15 days, 5 hours and 20 seconds • FREQ=MONTHLY;BYMONTHDAY=28,29,30;BYSETPOS=-1 = recur on the 30th of every month; or the last day of the month if the 30th doesn't exist • API only gives access to DB tables, correct RFC2445 implementation left as exercise to reader • Calendars, Events, Instances, Attendees, Reminders • Instances table holds individual instances of recurring Events • Event_id pointer to parent Event • Begin/End times in MS since epoch (UTC) • Start_day, end_day in Julian day (local timezone) • Start_minute, end_minute in minutes since midnight (what about DST?) • Events table holds details for events • Calendar_id pointer to parent Calendar • Title/Description/Event_location text • DTStart/DTEnd times in UTC milliseconds since epoch, variable timezone for both

  9. Future Work Core functionality stuff (i.e. what’s missing) • Better navigation • Snap back to now, save/restore views • Event interaction (Create, Update, Delete) • UI stuff • Event recurrence (RFC2445) • Correct Daylight Savings • Instance conflation • Changes to instances get saved as new Events, need to declutter event viewing • Proper data layer • Async data loading, caching More functionality • Dynamic event layout beneath ruler • Extend organization into existing Event properties • Keep the DB in the cloud, but add functionality like… • Google Tasks integration • Link tasks with Events • Calendar customization • Custom weeks/weekends • Manage events between multiple calendars More future stuff… • Multiple timelines for TimeZone changes • Remove epoch dependency • Event planning/requisites • Loose annotations • Support S-Pen • Virtual whiteboard • Display of additional data tracks • Pictures • SMS/Emails/IMs • Twits, Faceboxes, Instagrammas, YoubTubesetc • RSS feeds, news • External time scale data • Weather, day/night, tides, moon phases • Bank account balance • Diary data: Tracking workouts, weight loss, anxiety/depression, smoking • Integration with Web Google Calendar interface • iOS support (aahahahhhahahhahahha)

More Related