mirror of
				https://github.com/SimpleMobileTools/Simple-Calendar.git
				synced 2025-06-05 21:59:17 +02:00 
			
		
		
		
	refresh the calendar after fetching google events
This commit is contained in:
		| @@ -18,6 +18,7 @@ import com.simplemobiletools.calendar.R | ||||
| import com.simplemobiletools.calendar.adapters.MyMonthPagerAdapter | ||||
| import com.simplemobiletools.calendar.adapters.MyWeekPagerAdapter | ||||
| import com.simplemobiletools.calendar.adapters.MyYearPagerAdapter | ||||
| import com.simplemobiletools.calendar.asynctasks.FetchGoogleEventsTask | ||||
| import com.simplemobiletools.calendar.dialogs.ExportEventsDialog | ||||
| import com.simplemobiletools.calendar.dialogs.FilterEventTypesDialog | ||||
| import com.simplemobiletools.calendar.dialogs.ImportEventsDialog | ||||
| @@ -26,6 +27,7 @@ import com.simplemobiletools.calendar.fragments.EventListFragment | ||||
| import com.simplemobiletools.calendar.fragments.WeekFragment | ||||
| import com.simplemobiletools.calendar.helpers.* | ||||
| import com.simplemobiletools.calendar.helpers.Formatter | ||||
| import com.simplemobiletools.calendar.interfaces.GoogleSyncListener | ||||
| import com.simplemobiletools.calendar.interfaces.NavigationListener | ||||
| import com.simplemobiletools.calendar.models.Event | ||||
| import com.simplemobiletools.calendar.models.EventType | ||||
| @@ -87,6 +89,10 @@ class MainActivity : SimpleActivity(), NavigationListener { | ||||
|         if (!hasGetAccountsPermission()) { | ||||
|             config.googleSync = false | ||||
|         } | ||||
|  | ||||
|         if (config.syncAccountName.isNotEmpty()) { | ||||
|             FetchGoogleEventsTask(this, googleSyncListener).execute() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun onResume() { | ||||
| @@ -527,6 +533,12 @@ class MainActivity : SimpleActivity(), NavigationListener { | ||||
|         supportFragmentManager.beginTransaction().replace(R.id.calendar_event_list_holder, EventListFragment(), "").commit() | ||||
|     } | ||||
|  | ||||
|     val googleSyncListener = object : GoogleSyncListener { | ||||
|         override fun syncCompleted() { | ||||
|             refreshViewPager() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun goLeft() { | ||||
|         main_view_pager.currentItem = main_view_pager.currentItem - 1 | ||||
|     } | ||||
|   | ||||
| @@ -14,12 +14,13 @@ import com.simplemobiletools.calendar.extensions.dbHelper | ||||
| import com.simplemobiletools.calendar.extensions.getGoogleSyncService | ||||
| import com.simplemobiletools.calendar.extensions.seconds | ||||
| import com.simplemobiletools.calendar.helpers.* | ||||
| import com.simplemobiletools.calendar.interfaces.GoogleSyncListener | ||||
| import com.simplemobiletools.calendar.models.* | ||||
| import org.joda.time.DateTime | ||||
| import java.util.* | ||||
|  | ||||
| // more info about event fields at https://developers.google.com/google-apps/calendar/v3/reference/events/insert | ||||
| class FetchGoogleEventsTask(val activity: Activity) : AsyncTask<Void, Void, List<Event>>() { | ||||
| class FetchGoogleEventsTask(val activity: Activity, val googleSyncListener: GoogleSyncListener? = null) : AsyncTask<Void, Void, String>() { | ||||
|     private val CONFIRMED = "confirmed" | ||||
|     private val ITEMS = "items" | ||||
|     private val OVERRIDES = "overrides" | ||||
| @@ -32,15 +33,16 @@ class FetchGoogleEventsTask(val activity: Activity) : AsyncTask<Void, Void, List | ||||
|     private var eventColors = SparseIntArray() | ||||
|     private var service = activity.getGoogleSyncService() | ||||
|  | ||||
|     override fun doInBackground(vararg params: Void): List<Event>? { | ||||
|         return try { | ||||
|     override fun doInBackground(vararg params: Void): String { | ||||
|         try { | ||||
|             getColors() | ||||
|             getDataFromApi() | ||||
|         } catch (e: Exception) { | ||||
|             lastError = e | ||||
|             cancel(true) | ||||
|             null | ||||
|         } | ||||
|         googleSyncListener?.syncCompleted() | ||||
|         return "" | ||||
|     } | ||||
|  | ||||
|     private fun getColors() { | ||||
| @@ -50,8 +52,7 @@ class FetchGoogleEventsTask(val activity: Activity) : AsyncTask<Void, Void, List | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun getDataFromApi(): List<Event> { | ||||
|         val parsedEvents = ArrayList<Event>() | ||||
|     private fun getDataFromApi() { | ||||
|         var currToken = "" | ||||
|         while (true) { | ||||
|             val events = service.events().list(PRIMARY) | ||||
| @@ -60,10 +61,8 @@ class FetchGoogleEventsTask(val activity: Activity) : AsyncTask<Void, Void, List | ||||
|  | ||||
|             for ((key, value) in events) { | ||||
|                 if (key == ITEMS) { | ||||
|                     dbHelper.getEventTypes { | ||||
|                         eventTypes = it | ||||
|                         parseEvents(value.toString()) | ||||
|                     } | ||||
|                     eventTypes = dbHelper.fetchEventTypes() | ||||
|                     parseEvents(value.toString()) | ||||
|                 } | ||||
|             } | ||||
|  | ||||
| @@ -73,15 +72,12 @@ class FetchGoogleEventsTask(val activity: Activity) : AsyncTask<Void, Void, List | ||||
|                 break | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return parsedEvents | ||||
|     } | ||||
|  | ||||
|     private fun parseEvents(json: String): List<Event> { | ||||
|     private fun parseEvents(json: String) { | ||||
|         var updateEvent = false | ||||
|         var eventId = 0 | ||||
|         val importIDs = activity.dbHelper.getImportIds() | ||||
|         val events = ArrayList<Event>() | ||||
|         val token = object : TypeToken<List<GoogleEvent>>() {}.type | ||||
|         val googleEvents = Gson().fromJson<ArrayList<GoogleEvent>>(json, token) ?: ArrayList<GoogleEvent>(8) | ||||
|         for (googleEvent in googleEvents) { | ||||
| @@ -136,7 +132,6 @@ class FetchGoogleEventsTask(val activity: Activity) : AsyncTask<Void, Void, List | ||||
|                 dbHelper.insert(event) {} | ||||
|             } | ||||
|         } | ||||
|         return events | ||||
|     } | ||||
|  | ||||
|     private fun getEventTypeId(colorId: Int): Int { | ||||
|   | ||||
| @@ -736,11 +736,11 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont | ||||
|  | ||||
|     fun getEventTypes(callback: (types: ArrayList<EventType>) -> Unit) { | ||||
|         Thread({ | ||||
|             fetchEventTypes(callback) | ||||
|             callback(fetchEventTypes()) | ||||
|         }).start() | ||||
|     } | ||||
|  | ||||
|     fun fetchEventTypes(callback: (types: ArrayList<EventType>) -> Unit) { | ||||
|     fun fetchEventTypes(): ArrayList<EventType> { | ||||
|         val eventTypes = ArrayList<EventType>(3) | ||||
|         val cols = arrayOf(COL_TYPE_ID, COL_TYPE_TITLE, COL_TYPE_COLOR) | ||||
|         var cursor: Cursor? = null | ||||
| @@ -758,7 +758,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont | ||||
|         } finally { | ||||
|             cursor?.close() | ||||
|         } | ||||
|         callback.invoke(eventTypes) | ||||
|         return eventTypes | ||||
|     } | ||||
|  | ||||
|     fun doEventTypesContainEvent(types: ArrayList<Int>): Boolean { | ||||
|   | ||||
| @@ -0,0 +1,5 @@ | ||||
| package com.simplemobiletools.calendar.interfaces | ||||
|  | ||||
| interface GoogleSyncListener { | ||||
|     fun syncCompleted() | ||||
| } | ||||
		Reference in New Issue
	
	Block a user