diff --git a/app/build.gradle b/app/build.gradle
index 08acf6a82..cae0f6c1b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -36,6 +36,15 @@ dependencies {
compile 'joda-time:joda-time:2.9.1'
compile 'com.facebook.stetho:stetho:1.4.1'
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
+
+ compile 'com.google.android.gms:play-services-auth:10.0.1'
+ compile('com.google.api-client:google-api-client-android:1.22.0') {
+ exclude group: 'org.apache.httpcomponents'
+ }
+ compile('com.google.apis:google-api-services-calendar:v3-rev230-1.22.0') {
+ exclude group: 'org.apache.httpcomponents'
+ }
+
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 63dc54ab1..71230579c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
if (uri == null) {
config.reminderSound = ""
@@ -193,6 +221,34 @@ class SettingsActivity : SimpleActivity() {
settings_reminder_sound.text = RingtoneManager.getRingtone(this, uri as Uri).getTitle(this)
config.reminderSound = uri.toString()
}
+ } else if (resultCode == RESULT_OK && requestCode == REQUEST_ACCOUNT && resultData?.extras != null) {
+ val accountName = resultData!!.getStringExtra(AccountManager.KEY_ACCOUNT_NAME)
+ config.syncAccountName = accountName
+ credential.selectedAccountName = accountName
+ }
+ }
+
+ private fun checkGetAccountsPermission() {
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.GET_ACCOUNTS) == PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.GET_ACCOUNTS), ACCOUNTS_PERMISSION)
+ } else {
+ showAccountChooser()
+ }
+ }
+
+ override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+
+ if (requestCode == ACCOUNTS_PERMISSION) {
+ if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ showAccountChooser()
+ }
+ }
+ }
+
+ private fun showAccountChooser() {
+ if (config.syncAccountName.isEmpty()) {
+ startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT)
}
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt
index b4eeb86fc..0596d3e91 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt
@@ -59,6 +59,14 @@ class Config(context: Context) : BaseConfig(context) {
prefs.edit().putInt(REMINDER_MINUTES, mins).apply()
}
+ var googleSync: Boolean
+ get() = prefs.getBoolean(GOOGLE_SYNC, false)
+ set(googleSync) = prefs.edit().putBoolean(GOOGLE_SYNC, googleSync).apply()
+
+ var syncAccountName: String
+ get() = prefs.getString(SYNC_ACCOUNT_NAME, "")
+ set(syncAccountName) = prefs.edit().putString(SYNC_ACCOUNT_NAME, syncAccountName).apply()
+
fun getDefaultNotificationSound(): String {
try {
return RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_NOTIFICATION)?.toString() ?: ""
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt
index 2cdef502a..6ae0356e6 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt
@@ -39,6 +39,8 @@ val REMINDER_SOUND = "reminder_sound"
val VIEW = "view"
val REMINDER_TYPE = "reminder_type"
val REMINDER_MINUTES = "reminder_minutes"
+val GOOGLE_SYNC = "google_sync"
+val SYNC_ACCOUNT_NAME = "sync_account_name"
val letterIDs = intArrayOf(R.string.sunday_letter, R.string.monday_letter, R.string.tuesday_letter, R.string.wednesday_letter,
R.string.thursday_letter, R.string.friday_letter, R.string.saturday_letter)
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index bfed750fd..f58c33cd8 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -31,7 +31,7 @@
+ android:text="@string/google_sync"/>
@@ -105,6 +105,26 @@
+
+
+
+
+
+
No app capable of setting ringtone found
Kein Klingelton gewählt
The day cannot end earlier than it starts
+ Google sync
- 1 Termin gelöscht
diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml
index 2a807337a..9c863583d 100644
--- a/app/src/main/res/values-es-rES/strings.xml
+++ b/app/src/main/res/values-es-rES/strings.xml
@@ -73,6 +73,7 @@
No app capable of setting ringtone found
None
The day cannot end earlier than it starts
+ Google sync
- 1 evento borrado
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 37a352f30..fcc874adc 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -73,6 +73,7 @@
Aucune application capable de configurer la sonnerie trouvée
None
The day cannot end earlier than it starts
+ Google sync
- 1 événement supprimé
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index fa28b3fb7..76bdbaa47 100644
--- a/app/src/main/res/values-hi-rIN/strings.xml
+++ b/app/src/main/res/values-hi-rIN/strings.xml
@@ -73,6 +73,7 @@
No app capable of setting ringtone found
None
The day cannot end earlier than it starts
+ Google sync
- 1 इवेंट डिलीट किया गया
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 64966997c..1a324927f 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -73,6 +73,7 @@
No app capable of setting ringtone found
None
The day cannot end earlier than it starts
+ Google sync
- 1 bejegyzés törölve
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 778dfedbb..c237e120b 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -73,6 +73,7 @@
No app capable of setting ringtone found
None
The day cannot end earlier than it starts
+ Google sync
- 1 evento eliminato
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index 5350d06f0..0441b8039 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -73,6 +73,7 @@
לא נמצאה אפליקציה להגדרת רינגטון
ללא
היום לא יכול להסתיים מוקדם משהוא מתחיל
+ Google sync
- אירוע אחד נמחק
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 553b0d4ca..ad0c438e5 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -73,6 +73,7 @@
No app capable of setting ringtone found
None
The day cannot end earlier than it starts
+ Google sync
- 1 イベントを削除しました
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 81025d775..9dbd69703 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -73,6 +73,7 @@
Não foi encontrada qualquer aplicação capaz de definir o som
Nenhum
O dia final não pode ser antes do inicial
+ Google sync
- 1 evento apagado
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index dee8ba5dc..347b3ca50 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -73,6 +73,7 @@
Не найдено приложение для выбора рингтона
Нет
The day cannot end earlier than it starts
+ Google sync
- 1 событие удалено
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index ce2579d36..2278db40a 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -73,6 +73,7 @@
Hittade ingen app som kan ställa in ljudet
Ingen
Dagen kan inte börja innan den tar slut
+ Google sync
- 1 händelse borttagen
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index be667290a..70d34175a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -73,6 +73,7 @@
No app capable of setting ringtone found
None
The day cannot end earlier than it starts
+ Google sync
- 1 event deleted