diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 0d4476f..86b6547 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -95,6 +95,9 @@ dependencies {
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.6.4")
implementation("com.squareup.retrofit2:converter-scalars:2.6.4")
+
+ implementation ("me.everything:providers-android:1.0.1")
+ implementation ("me.everything:providers-core:1.0.1")
// implementation ("androidx.window:window:1.0.0")
// implementation("io.github.vaneproject:hanguleditor:1.0.0")
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fa5eb41..376c460 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -26,7 +26,8 @@
-
+
+
diff --git a/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt b/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt
index f46d2ec..2594988 100644
--- a/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt
+++ b/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt
@@ -108,6 +108,7 @@ import rasel.lunar.launcher.utils.beforeDay
import rasel.lunar.launcher.utils.make0H
import rasel.lunar.launcher.workers.AppInfoGetter
import rasel.lunar.launcher.workers.ArcaGetter
+import rasel.lunar.launcher.workers.CalendarGetter
import rasel.lunar.launcher.workers.ClienGetter
import rasel.lunar.launcher.workers.ContactInfoGetter
import rasel.lunar.launcher.workers.DCGetter
@@ -210,6 +211,12 @@ internal class LauncherActivity : AppCompatActivity() {
}, 5, TimeUnit.SECONDS)
}
+ fun getCal() {
+ Executors.newSingleThreadScheduledExecutor().schedule({
+ mWorkManager?.enqueue(OneTimeWorkRequest.from(CalendarGetter::class.java))
+ }, 5, TimeUnit.SECONDS)
+ }
+
fun refreshFeeds() {
var delay = 5L
Executors.newSingleThreadScheduledExecutor().schedule({
@@ -435,6 +442,8 @@ internal class LauncherActivity : AppCompatActivity() {
private fun welcomeDialog() {
var needAsk = if (
+ this.checkSelfPermission(Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED ||
+ this.checkSelfPermission(Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED ||
this.checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED ||
this.checkSelfPermission(Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED ||
this.checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED ||
@@ -473,6 +482,8 @@ internal class LauncherActivity : AppCompatActivity() {
/* phone permission */
if (
+ this.checkSelfPermission(Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED ||
+ this.checkSelfPermission(Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED ||
this.checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED ||
this.checkSelfPermission(Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED ||
this.checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED ||
@@ -484,6 +495,8 @@ internal class LauncherActivity : AppCompatActivity() {
this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
) {
this.requestPermissions(arrayOf(
+ Manifest.permission.READ_CALENDAR,
+ Manifest.permission.WRITE_CALENDAR,
Manifest.permission.READ_CONTACTS,
Manifest.permission.READ_CALL_LOG,
Manifest.permission.CALL_PHONE,
diff --git a/app/src/main/kotlin/rasel/lunar/launcher/feeds/Feeds.kt b/app/src/main/kotlin/rasel/lunar/launcher/feeds/Feeds.kt
index 2bc1369..d9ed7b6 100644
--- a/app/src/main/kotlin/rasel/lunar/launcher/feeds/Feeds.kt
+++ b/app/src/main/kotlin/rasel/lunar/launcher/feeds/Feeds.kt
@@ -58,6 +58,7 @@ import org.jsoup.Jsoup
import rasel.lunar.launcher.CommadCallabck
import rasel.lunar.launcher.LauncherActivity.Companion.appWidgetHost
import rasel.lunar.launcher.LauncherActivity.Companion.appWidgetManager
+import rasel.lunar.launcher.LauncherActivity.Companion.getCal
import rasel.lunar.launcher.LauncherActivity.Companion.lActivity
import rasel.lunar.launcher.LauncherActivity.Companion.refreshDeviceData
import rasel.lunar.launcher.LauncherActivity.Companion.refreshFeeds
@@ -282,6 +283,9 @@ internal class Feeds : Fragment() , CommadCallabck {
binding.expandRss.isChecked = false
} else {
when (input.text.toString()) {
+ "cal" ->{
+ getCal()
+ }
"so" -> GlobalScope.launch {
"https://kr69.sogirl.so".getJ().let { doc ->
// BLog.LOGE("ogirl >>> ${doc.title()}")
diff --git a/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt b/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt
index d633efd..d5c9282 100644
--- a/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt
+++ b/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt
@@ -178,11 +178,11 @@ internal class LauncherHome : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
home = this
- BLog.LOGE("${this} ::::: onCreate >>>> ")
+// BLog.LOGE("${this} ::::: onCreate >>>> ")
}
var mWeatherResult : RealmResults? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
- BLog.LOGE("${this} ::::: onCreateView >>>> ")
+// BLog.LOGE("${this} ::::: onCreateView >>>> ")
binding = LauncherHomeBinding.inflate(inflater, container, false)
fragManager = lActivity!!.supportFragmentManager
settingsPrefs = requireContext().getSharedPreferences(PREFS_SETTINGS, 0)
@@ -397,7 +397,7 @@ internal class LauncherHome : Fragment() {
private fun queryNotice() {
var mWorkManager = WorkManager.getInstance(requireContext())
Executors.newSingleThreadScheduledExecutor().schedule({
- mWorkManager.enqueue(OneTimeWorkRequest.from(TelegramBotGetter::class.java))
+// mWorkManager.enqueue(OneTimeWorkRequest.from(TelegramBotGetter::class.java))
}, 5, TimeUnit.SECONDS)
try { noticeJob?.cancel() } catch (e:Exception) {e.printStackTrace()}
mNotificationResult = null
@@ -483,7 +483,7 @@ internal class LauncherHome : Fragment() {
}}
var rQ = WorkersDb.getRealm().query().query("pubDate > $0", beforeDay(Date(),3))
if(keyword.length > 0) {
- BLog.LOGE("queryInfos it >>> ${keyword}")
+// BLog.LOGE("queryInfos it >>> ${keyword}")
if (JamoUtils.CHOSUNG.contains(keyword.split("")[0])) {
rQ = rQ.query(
"title CONTAINS $0 OR chosung CONTAINS $1 ",
@@ -580,7 +580,7 @@ internal class LauncherHome : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- BLog.LOGE("${this} ::::: onViewCreated >>>> ")
+// BLog.LOGE("${this} ::::: onViewCreated >>>> ")
rootViewGestures()
batteryProgressGestures()
@@ -804,7 +804,7 @@ internal class LauncherHome : Fragment() {
}
override fun onResume() {
super.onResume()
- BLog.LOGE("${this} ::::: onResume >>>> ")
+// BLog.LOGE("${this} ::::: onResume >>>> ")
if (shouldResume) {
/* register battery changes */
diff --git a/app/src/main/kotlin/rasel/lunar/launcher/settings/SettingsActivity.kt b/app/src/main/kotlin/rasel/lunar/launcher/settings/SettingsActivity.kt
index 5dc8867..8b4d2c5 100644
--- a/app/src/main/kotlin/rasel/lunar/launcher/settings/SettingsActivity.kt
+++ b/app/src/main/kotlin/rasel/lunar/launcher/settings/SettingsActivity.kt
@@ -117,17 +117,17 @@ internal class SettingsActivity : AppCompatActivity() {
/* source code at github */
aboutBinding.sourceCode.setOnClickListener {
bottomSheetDialog.dismiss()
- startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(sourceCode)))
+// startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(sourceCode)))
}
/* wiki at github */
aboutBinding.wiki.setOnClickListener {
bottomSheetDialog.dismiss()
- startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("$sourceCode/wiki")))
+// startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("$sourceCode/wiki")))
}
/* telegram community */
aboutBinding.telegramGroup.setOnClickListener {
bottomSheetDialog.dismiss()
- startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://t.me/LunarLauncher_chats")))
+// startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://t.me/LunarLauncher_chats")))
}
}
@@ -138,15 +138,15 @@ internal class SettingsActivity : AppCompatActivity() {
.setMessage(R.string.support_message)
/* star button */
.setNeutralButton(R.string.star) { _, _ ->
- startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(sourceCode)))
+// startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(sourceCode)))
}
/* affiliate button */
.setNegativeButton(R.string.amazon) { _, _ ->
- startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://amzn.to/44krAw9")))
+// startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://amzn.to/44krAw9")))
}
/* donate button */
.setPositiveButton(R.string.donate) { _, _ ->
- startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://iamrasel.github.io/donate")))
+// startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://iamrasel.github.io/donate")))
}
.show()
}
diff --git a/app/src/main/kotlin/rasel/lunar/launcher/workers/CalendarGetter.kt b/app/src/main/kotlin/rasel/lunar/launcher/workers/CalendarGetter.kt
new file mode 100644
index 0000000..b31482d
--- /dev/null
+++ b/app/src/main/kotlin/rasel/lunar/launcher/workers/CalendarGetter.kt
@@ -0,0 +1,149 @@
+package rasel.lunar.launcher.workers
+
+import android.content.Context
+import android.net.Uri
+import androidx.work.WorkerParameters
+import rasel.lunar.launcher.LauncherActivity.Companion.lActivity
+import rasel.lunar.launcher.utils.BLog
+
+
+class CalendarGetter : BaseGetter {
+ companion object {
+ val TAG = "DCGetter"
+ }
+ constructor(context: Context, workerParams: WorkerParameters) : super(context, workerParams) {
+
+ }
+ override fun realWork(): Result {
+ setCalendar()
+ return Result.success().apply {
+
+ }
+ }
+
+ fun setCalendar() {
+
+
+ val calendars = Uri.parse("content://com.android.calendar/events")
+
+ val projection = arrayOf(
+ "calendar_id",
+// "htmlUri",
+ "title",
+// "eventLocation",
+ "description",
+// "eventStatus",
+// "selfAttendeeStatus",
+// "commentsUri",
+ "dtstart",
+ "dtend",
+// "eventTimezone",
+// "duration",
+// "allDay",
+// "visibility",
+// "transparency",
+// "hasAlarm",
+// "hasExtendedProperties",
+// "rrule",
+ "rdate",
+// "exrule",
+// "exdate",
+// "originalEvent",
+// "originalInstanceTime",
+// "originalAllDay",
+// "lastDate",
+// "hasAttendeeData",
+// "guestsCanModify",
+// "guestsCanInviteOthers",
+// "guestsCanSeeGuests",
+// "organizer",
+// "deleted"
+ )
+// val managedCursor: Cursor =
+ lActivity?.contentResolver?.query(calendars, projection, null, null, null)?.let { managedCursor ->
+ if (managedCursor.moveToFirst()) {
+ val calendar_id = IntArray(managedCursor.count)
+
+// val htmlUri = arrayOfNulls(managedCursor.count)
+ val title = arrayOfNulls(managedCursor.count)
+// val eventLocation = arrayOfNulls(managedCursor.count)
+ val description = arrayOfNulls(managedCursor.count)
+// val eventStatus = IntArray(managedCursor.count)
+// val selfAttendeeStatus = IntArray(managedCursor.count)
+// val commentsUri = arrayOfNulls(managedCursor.count)
+ val dtstart = arrayOfNulls(managedCursor.count)
+ val dtend = arrayOfNulls(managedCursor.count)
+// val eventTimezone = arrayOfNulls(managedCursor.count)
+// val duration = arrayOfNulls(managedCursor.count)
+// val allDay = IntArray(managedCursor.count)
+// val visibility = IntArray(managedCursor.count)
+// val transparency = IntArray(managedCursor.count)
+// val hasAlarm = IntArray(managedCursor.count)
+// val hasExtendedProperties = IntArray(managedCursor.count)
+// val rrule = arrayOfNulls(managedCursor.count)
+ val rdate = arrayOfNulls(managedCursor.count)
+// val exrule = arrayOfNulls(managedCursor.count)
+// val exdate = arrayOfNulls(managedCursor.count)
+// val originalEvent = arrayOfNulls(managedCursor.count)
+// val originalInstanceTime = IntArray(managedCursor.count)
+// val originalAllDay = IntArray(managedCursor.count)
+// val lastDate = IntArray(managedCursor.count)
+// val hasAttendeeData = IntArray(managedCursor.count)
+// val guestsCanModify = IntArray(managedCursor.count)
+// val guestsCanInviteOthers = IntArray(managedCursor.count)
+// val guestsCanSeeGuests = IntArray(managedCursor.count)
+// val organizer = arrayOfNulls(managedCursor.count)
+// val deleted = IntArray(managedCursor.count)
+
+ for (i in title.indices) {
+ calendar_id[i] = managedCursor.getInt(0)
+ BLog.LOGE("Calendar ID : " + calendar_id[i])
+// htmlUri[i] = managedCursor.getString(1)
+// Log.i("Calendar", "htmlUri : " + htmlUri[i])
+ title[i] = managedCursor.getString(1)
+ BLog.LOGE("Calendar title : " + title[i])
+// eventLocation[i] = managedCursor.getString(3)
+// Log.i("Calendar", "eventLocation : " + eventLocation[i])
+ description[i] = managedCursor.getString(2)
+// eventStatus[i] = managedCursor.getInt(5)
+// selfAttendeeStatus[i] = managedCursor.getInt(6)
+// commentsUri[i] = managedCursor.getString(7)
+ dtstart[i] = managedCursor.getString(3)
+ BLog.LOGE("Calendar dtstart : " + rdate[i])
+ dtend[i] = managedCursor.getString(4)
+ BLog.LOGE("Calendar dtend : " + rdate[i])
+// eventTimezone[i] = managedCursor.getString(10)
+// duration[i] = managedCursor.getString(11)
+// allDay[i] = managedCursor.getInt(12)
+// visibility[i] = managedCursor.getInt(13)
+// transparency[i] = managedCursor.getInt(14)
+// hasAlarm[i] = managedCursor.getInt(15)
+// hasExtendedProperties[i] = managedCursor.getInt(16)
+// rrule[i] = managedCursor.getString(17)
+ rdate[i] = managedCursor.getString(5)
+ BLog.LOGE("Calendar rdate : " + rdate[i])
+// exrule[i] = managedCursor.getString(19)
+// exdate[i] = managedCursor.getString(20)
+// originalEvent[i] = managedCursor.getString(21)
+// originalInstanceTime[i] = managedCursor.getInt(22)
+// originalAllDay[i] = managedCursor.getInt(23)
+// lastDate[i] = managedCursor.getInt(24)
+// hasAttendeeData[i] = managedCursor.getInt(25)
+// guestsCanModify[i] = managedCursor.getInt(26)
+// guestsCanInviteOthers[i] = managedCursor.getInt(27)
+// guestsCanSeeGuests[i] = managedCursor.getInt(28)
+// organizer[i] = managedCursor.getString(29)
+// deleted[i] = managedCursor.getInt(30)
+
+ if (title[i] != null) {
+ BLog.LOGE("title[i] ${title[i]}")
+ }
+
+ managedCursor.moveToNext()
+ }
+ }
+ managedCursor.close()
+ }
+ }
+
+}
\ No newline at end of file