diff --git a/README.md b/README.md index d78b625592cc8b50c7f43e2f73c56ee082d66d88..29737a159b575faa4165b5e01ea9e0a1b96b9876 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,28 @@ 기존 안드로이드 달력에 국가선택 및 다양한 기능추가 ================================================= -### introduce +## introduce * 나라에 맞게 공휴일 & 기념일 설정이 가능한 달력입니다. * 기존 달력에 국가선택 기능. * 그 외에도 다른 기능 추가. * 해외 여행 & 글로벌 인턴 시 원하는 나라에 맞게 캘린더 활용가능. -### Summary +## Summary > <p> 1.해외여행 증가.</p> > <p> 2.기존 안드로이드 기본 달력에는 국가설정이 없음.</p> > <p> 3.기타 다양한 기능 추가.</p> > <p> 이런 점에서 모티브를 얻어 달력에 기능 추가</p> -### opensource&tools +## tools -* Android Calender -* Airsaid/AccountBook * googleAPI * kotlin -* android +* android studio 3.1 -### 기존 유사 프로젝트 +## 기존 유사 프로젝트 -* 기존 안드로이드 달력 +* 기존 안드로이드 달력 <p> https://github.com/wanasit/google-calendar</p> <p> 국가 변경 기능이 추가되어 있지는 않지만 구글 계정 변경을 통해 변경 가능</p> <p> 한 계정으로 여러 국가를 설정 할 수 없음</p> @@ -37,7 +35,7 @@ <p> 모든 기능 한글화 </p> <p> 공휴일 한글화 </p> -### View +## View  @@ -47,39 +45,50 @@  - +## 사용한 오픈소스 & 개선 -### 사용한 오픈소스 & 개선 +### 달력 기초 및 가계부UI +* Simple-calendar(https://github.com/SimpleMobileTools/Simple-Calendar) +* wisedog/Whoochoo(https://github.com/wisedog/Whoochoo) +### DB * open holiday ics파일 -* 개선한 점 : 한국 여행자 등에게 도움이 될 수 있도록 한국어로 번역 +* open holiday dataset +* 개선한 점 : ics파일에 없는 내용을 holiday dataset에서 추가 한국 여행자 등에게 도움이 될 수 있도록 한국어로 번역 -* google GPS API 사용법 -* http://git.ajou.ac.kr/open-source-2018-spring/Google_GPS_API_Kotlin +### 타 개발자에게 도움이 될만한 자료 * python - ics parser -* https://github.com/oblique63/Python-GoogleCalendarParser +* https://github.com/oblique63/Python-GoogleCalendarParser (기존 파이썬 ics parser) + +* 기존 파이썬 ics parser를 참고하여 kotlin ics parser 제작 +* http://git.ajou.ac.kr/open-source-2018-spring/Android_ics_parser_kotlin (kotlin으로 ics parser 새로 작성) +* kotlin 안드로이드 개발자들에게 도움이 될 것으로 예상됨(날짜 등을 활용한 프로젝트에서) -* 기존 파이썬 ics parser -> kotlin ics parser +* kotlin google_GPS_api 사용법 정리 및 샘플 코드 작성(안드로이드 스튜디오 3.1버전에서) +* http://git.ajou.ac.kr/open-source-2018-spring/Google_GPS_API_Kotlin +* GPS를 이용해야 하는 개발자들에게 도움이 될 것으로 예상됨 -* googleGPS API 사용법 제시 -### License +## 사용한 오픈소스 & License +* Simple-calendar(Apache 2.0) +* wisedog/Whoochoo(Apache 2.0) +## License * Apache 2.0 License -### developers +## developers * 201420978 이정필 * 201421000 박신혁 * 201421005 이현호 -### Update +## Update > <p> 1.나라별 변경 완료.</p> > <p> 2.기능 한글화.</p> > <p> 3.나라별 공휴일 한글화 완료.</p> > <p> 4.D-day 기능 구현(예정).</p> > <p> 5.GPS 국가 자동 변경 기능 완료.</p> -> <p> 6.가계부 기능 구현(예정).</p> +> <p> 6.가계부 기능 구현 완료.</p> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5b5bae98692cb658d56553aec92bbcf1b27fbb8a..714926213f674de0e12d3b5fe682b44e20174f8a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,10 +1,18 @@ <?xml version="1.0" encoding="utf-8"?> -<manifest - xmlns:android="http://schemas.android.com/apk/res/android" +<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.simplemobiletools.calendar" android:installLocation="auto"> + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.READ_CONTACTS" /> + <uses-permission android:name="android.permission.VIBRATE" /> + <uses-permission android:name="android.permission.READ_CALENDAR" /> + <uses-permission android:name="android.permission.WRITE_CALENDAR" /> + <uses-permission android:name="android.permission.WAKE_LOCK" /> + <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> @@ -14,9 +22,10 @@ <uses-permission android:name="android.permission.READ_CALENDAR"/> <uses-permission android:name="android.permission.WRITE_CALENDAR"/> <uses-permission android:name='android.permission.WAKE_LOCK'/> + <uses-permission android:name="android.permission.USE_FINGERPRINT" - tools:node="remove"/> + tools:node="remove" /> <application android:name=".App" @@ -25,181 +34,14 @@ android:label="@string/app_launcher_name" android:roundIcon="@mipmap/ic_launcher" android:theme="@style/AppTheme"> - <activity android:name=".activities.SplashActivity" android:launchMode="singleTask" android:theme="@style/SplashTheme"> <intent-filter> - <category android:name="android.intent.category.LAUNCHER"/> - </intent-filter> - </activity> - - <activity - android:name=".activities.MainActivity" - android:launchMode="singleTask"> - <meta-data - android:name="android.app.default_searchable" - android:resource="@xml/searchable"/> - - <intent-filter> - <action android:name="android.intent.action.SEARCH"/> - </intent-filter> - - <intent-filter> - <action android:name="android.intent.action.VIEW"/> - <category android:name="android.intent.category.DEFAULT"/> - - <data android:scheme="content"/> - <data android:scheme="file"/> - <data android:mimeType="text/x-vcalendar"/> - <data android:mimeType="text/calendar"/> - </intent-filter> - - <intent-filter> - <action android:name="android.intent.action.VIEW"/> - <category android:name="android.intent.category.DEFAULT"/> - - <data android:mimeType="time/epoch"/> - <data android:host="com.android.calendar"/> - <data android:scheme="content"/> - </intent-filter> - - <intent-filter> - <action android:name="android.intent.action.VIEW"/> - <category android:name="android.intent.category.DEFAULT"/> - <data android:mimeType="vnd.android.cursor.item/event"/> - </intent-filter> - </activity> - - <activity - android:name=".activities.WidgetMonthlyConfigureActivity" - android:screenOrientation="portrait" - android:theme="@style/MyWidgetConfigTheme"> - <intent-filter> - <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/> - </intent-filter> - </activity> - - <activity - android:name=".activities.WidgetListConfigureActivity" - android:screenOrientation="portrait" - android:theme="@style/MyWidgetConfigTheme"> - <intent-filter> - <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/> - </intent-filter> - </activity> - - <activity - android:name="com.simplemobiletools.commons.activities.AboutActivity" - android:label="@string/about" - android:parentActivityName=".activities.MainActivity"/> - - <activity - android:name="com.simplemobiletools.commons.activities.CustomizationActivity" - android:label="@string/customize_colors" - android:parentActivityName=".activities.SettingsActivity"/> - - <activity - android:name="com.simplemobiletools.commons.activities.LicenseActivity" - android:label="@string/third_party_licences" - android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity"/> - - <activity - android:name="com.simplemobiletools.commons.activities.FAQActivity" - android:label="@string/frequently_asked_questions" - android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity"/> - - <activity - android:name=".activities.EventActivity" - android:parentActivityName=".activities.MainActivity"> - - <intent-filter> - <action android:name="android.intent.action.EDIT"/> - <action android:name="android.intent.action.INSERT"/> - - <category android:name="android.intent.category.DEFAULT"/> - <data android:mimeType="vnd.android.cursor.item/event"/> - </intent-filter> - - <intent-filter> - <action android:name="android.intent.action.EDIT"/> - <action android:name="android.intent.action.INSERT"/> - - <category android:name="android.intent.category.DEFAULT"/> - <data android:mimeType="vnd.android.cursor.dir/event"/> - </intent-filter> - </activity> - - <activity - android:name=".activities.SettingsActivity" - android:label="@string/settings" - android:parentActivityName=".activities.MainActivity"/> - - <activity - android:name=".activities.ManageEventTypesActivity" - android:label="@string/event_types" - android:parentActivityName=".activities.SettingsActivity"/> - - <activity - android:name=".activities.SnoozeReminderActivity" - android:theme="@style/Theme.Transparent"/> - - <receiver - android:name=".helpers.MyWidgetMonthlyProvider" - android:icon="@drawable/img_widget_monthly_preview" - android:label="@string/widget_monthly"> - <intent-filter> - <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> - </intent-filter> - - <meta-data - android:name="android.appwidget.provider" - android:resource="@xml/widget_monthly_info"/> - </receiver> - - <receiver - android:name=".helpers.MyWidgetListProvider" - android:icon="@drawable/img_widget_list_preview" - android:label="@string/widget_list"> - <intent-filter> - <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> - </intent-filter> - - <meta-data - android:name="android.appwidget.provider" - android:resource="@xml/widget_list_info"/> - </receiver> - - <service - android:name=".services.WidgetService" - android:permission="android.permission.BIND_REMOTEVIEWS"/> - - <service android:name=".services.SnoozeService"/> - - <receiver android:name=".receivers.NotificationReceiver"/> - - <receiver android:name=".receivers.CalDAVSyncReceiver"/> - - <receiver android:name=".receivers.BootCompletedReceiver"> - <intent-filter> - <action android:name="android.intent.action.BOOT_COMPLETED"/> - <action android:name="android.intent.action.QUICKBOOT_POWERON"/> - <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/> + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> - </receiver> - - <provider - android:name="android.support.v4.content.FileProvider" - android:authorities="${applicationId}.provider" - android:exported="false" - android:grantUriPermissions="true"> - <meta-data - android:name="android.support.FILE_PROVIDER_PATHS" - android:resource="@xml/provider_paths"/> - </provider> - - <!-- Do not append ".Orange" to the default alias "name", it would remove the old homescreen launcher of users at upgrade --> + </activity> <!-- Do not append ".Orange" to the default alias "name", it would remove the old homescreen launcher of users at upgrade --> <activity-alias android:name=".activities.SplashActivity" android:enabled="true" @@ -207,243 +49,382 @@ android:roundIcon="@mipmap/ic_launcher" android:targetActivity=".activities.SplashActivity"> <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Red" android:enabled="false" android:icon="@mipmap/ic_launcher_red" android:roundIcon="@mipmap/ic_launcher_red" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Pink" android:enabled="false" android:icon="@mipmap/ic_launcher_pink" android:roundIcon="@mipmap/ic_launcher_pink" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Purple" android:enabled="false" android:icon="@mipmap/ic_launcher_purple" android:roundIcon="@mipmap/ic_launcher_purple" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Deep_purple" android:enabled="false" android:icon="@mipmap/ic_launcher_deep_purple" android:roundIcon="@mipmap/ic_launcher_deep_purple" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Indigo" android:enabled="false" android:icon="@mipmap/ic_launcher_indigo" android:roundIcon="@mipmap/ic_launcher_indigo" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Blue" android:enabled="false" android:icon="@mipmap/ic_launcher_blue" android:roundIcon="@mipmap/ic_launcher_blue" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Light_blue" android:enabled="false" android:icon="@mipmap/ic_launcher_light_blue" android:roundIcon="@mipmap/ic_launcher_light_blue" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Cyan" android:enabled="false" android:icon="@mipmap/ic_launcher_cyan" android:roundIcon="@mipmap/ic_launcher_cyan" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Teal" android:enabled="false" android:icon="@mipmap/ic_launcher_teal" android:roundIcon="@mipmap/ic_launcher_teal" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Green" android:enabled="false" android:icon="@mipmap/ic_launcher_green" android:roundIcon="@mipmap/ic_launcher_green" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Light_green" android:enabled="false" android:icon="@mipmap/ic_launcher_light_green" android:roundIcon="@mipmap/ic_launcher_light_green" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Lime" android:enabled="false" android:icon="@mipmap/ic_launcher_lime" android:roundIcon="@mipmap/ic_launcher_lime" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Yellow" android:enabled="false" android:icon="@mipmap/ic_launcher_yellow" android:roundIcon="@mipmap/ic_launcher_yellow" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Amber" android:enabled="false" android:icon="@mipmap/ic_launcher_amber" android:roundIcon="@mipmap/ic_launcher_amber" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Deep_orange" android:enabled="false" android:icon="@mipmap/ic_launcher_deep_orange" android:roundIcon="@mipmap/ic_launcher_deep_orange" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Brown" android:enabled="false" android:icon="@mipmap/ic_launcher_brown" android:roundIcon="@mipmap/ic_launcher_brown" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Blue_grey" android:enabled="false" android:icon="@mipmap/ic_launcher_blue_grey" android:roundIcon="@mipmap/ic_launcher_blue_grey" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> - <activity-alias android:name=".activities.SplashActivity.Grey_black" android:enabled="false" android:icon="@mipmap/ic_launcher_grey_black" android:roundIcon="@mipmap/ic_launcher_grey_black" android:targetActivity=".activities.SplashActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> + + <activity + android:name=".activities.MainActivity" + android:launchMode="singleTask"> + <meta-data + android:name="android.app.default_searchable" + android:resource="@xml/searchable" /> + + <intent-filter> + <action android:name="android.intent.action.SEARCH" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:scheme="content" /> + <data android:scheme="file" /> + <data android:mimeType="text/x-vcalendar" /> + <data android:mimeType="text/calendar" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:mimeType="time/epoch" /> + <data android:host="com.android.calendar" /> + <data android:scheme="content" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:mimeType="vnd.android.cursor.item/event" /> + </intent-filter> + </activity> + <activity + android:name=".activities.WidgetMonthlyConfigureActivity" + android:screenOrientation="portrait" + android:theme="@style/MyWidgetConfigTheme"> + <intent-filter> + <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" /> + </intent-filter> + </activity> + <activity + android:name=".activities.WidgetListConfigureActivity" + android:screenOrientation="portrait" + android:theme="@style/MyWidgetConfigTheme"> + <intent-filter> + <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" /> + </intent-filter> + </activity> + <activity + android:name="com.simplemobiletools.commons.activities.AboutActivity" + android:label="@string/about" + android:parentActivityName=".activities.MainActivity" /> + <activity + android:name="com.simplemobiletools.commons.activities.CustomizationActivity" + android:label="@string/customize_colors" + android:parentActivityName=".activities.SettingsActivity" /> + <activity + android:name="com.simplemobiletools.commons.activities.LicenseActivity" + android:label="@string/third_party_licences" + android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity" /> + <activity + android:name="com.simplemobiletools.commons.activities.FAQActivity" + android:label="@string/frequently_asked_questions" + android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity" /> + <activity + android:name=".activities.EventActivity" + android:parentActivityName=".activities.MainActivity"> + <intent-filter> + <action android:name="android.intent.action.EDIT" /> + <action android:name="android.intent.action.INSERT" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:mimeType="vnd.android.cursor.item/event" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.EDIT" /> + <action android:name="android.intent.action.INSERT" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:mimeType="vnd.android.cursor.dir/event" /> + </intent-filter> + </activity> + <activity + android:name=".activities.SettingsActivity" + android:label="@string/settings" + android:parentActivityName=".activities.MainActivity" /> + <activity + android:name=".activities.ManageEventTypesActivity" + android:label="@string/event_types" + android:parentActivityName=".activities.SettingsActivity" /> + <activity + android:name=".activities.SnoozeReminderActivity" + android:theme="@style/Theme.Transparent" /> + + <receiver + android:name=".helpers.MyWidgetMonthlyProvider" + android:icon="@drawable/img_widget_monthly_preview" + android:label="@string/widget_monthly"> + <intent-filter> + <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> + </intent-filter> + + <meta-data + android:name="android.appwidget.provider" + android:resource="@xml/widget_monthly_info" /> + </receiver> + <receiver + android:name=".helpers.MyWidgetListProvider" + android:icon="@drawable/img_widget_list_preview" + android:label="@string/widget_list"> + <intent-filter> + <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> + </intent-filter> + + <meta-data + android:name="android.appwidget.provider" + android:resource="@xml/widget_list_info" /> + </receiver> + + <service + android:name=".services.WidgetService" + android:permission="android.permission.BIND_REMOTEVIEWS" /> + <service android:name=".services.SnoozeService" /> + + <receiver android:name=".receivers.NotificationReceiver" /> + <receiver android:name=".receivers.CalDAVSyncReceiver" /> + <receiver android:name=".receivers.BootCompletedReceiver"> + <intent-filter> + <action android:name="android.intent.action.BOOT_COMPLETED" /> + <action android:name="android.intent.action.QUICKBOOT_POWERON" /> + <action android:name="com.htc.intent.action.QUICKBOOT_POWERON" /> + </intent-filter> + </receiver> + + <provider + android:name="android.support.v4.content.FileProvider" + android:authorities="${applicationId}.provider" + android:exported="false" + android:grantUriPermissions="true"> + <meta-data + android:name="android.support.FILE_PROVIDER_PATHS" + android:resource="@xml/provider_paths" /> + </provider> + + <activity android:name=".debug.AccountActivity" /> + <activity android:name=".activities.CountActivity"></activity> + </application> + </manifest> diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Parser.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Parser.kt index 11fc1a411a0d81bb2a1f0e29ad0111d27b9df273..f70989897094fbf2236519047c5e318628df364d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Parser.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Parser.kt @@ -11,7 +11,7 @@ import org.joda.time.DateTimeZone import org.joda.time.format.DateTimeFormat class Parser { - + // from RRULE:FREQ=DAILY;COUNT=5 to Daily, 5x... fun parseRepeatInterval(fullString: String, startTS: Int): RepeatRule { val parts = fullString.split(";") var repeatInterval = 0 @@ -186,6 +186,7 @@ class Parser { else -> SU } + // from P0DT1H5M0S to 3900 (seconds) fun parseDurationSeconds(duration: String): Int { val weeks = getDurationValue(duration, "W") val days = getDurationValue(duration, "D")