...
This commit is contained in:
@@ -44,8 +44,11 @@ import android.support.v4.media.MediaBrowserCompat
|
||||
import android.telephony.TelephonyManager
|
||||
import android.view.KeyEvent
|
||||
import android.view.KeyEvent.ACTION_UP
|
||||
import android.view.KeyEvent.KEYCODE_BUTTON_A
|
||||
import android.view.KeyEvent.KEYCODE_BUTTON_SELECT
|
||||
import android.view.KeyEvent.KEYCODE_BUTTON_START
|
||||
import android.view.KeyEvent.KEYCODE_BUTTON_X
|
||||
import android.view.KeyEvent.KEYCODE_BUTTON_Y
|
||||
import android.view.KeyEvent.KEYCODE_DPAD_DOWN
|
||||
import android.view.KeyEvent.KEYCODE_DPAD_LEFT
|
||||
import android.view.KeyEvent.KEYCODE_DPAD_RIGHT
|
||||
@@ -87,8 +90,11 @@ import bums.lunatic.launcher.home.LauncherHome
|
||||
import bums.lunatic.launcher.home.RssViewBuilder
|
||||
import bums.lunatic.launcher.home.adapters.RssItemAdapter.Companion.rssList
|
||||
import bums.lunatic.launcher.model.RssData
|
||||
import bums.lunatic.launcher.model.RssDataType
|
||||
import bums.lunatic.launcher.receiver.NLService
|
||||
import bums.lunatic.launcher.utils.Blog
|
||||
import bums.lunatic.launcher.utils.FeedParseManager
|
||||
import bums.lunatic.launcher.utils.getJ
|
||||
import bums.lunatic.launcher.workers.AppInfoGetter
|
||||
import bums.lunatic.launcher.workers.ArcaGetter
|
||||
import bums.lunatic.launcher.workers.CalendarGetter
|
||||
@@ -116,8 +122,12 @@ import bums.lunatic.launcher.workers.YoutubeGetter.Companion.YT_WORK_TAG
|
||||
import com.google.android.material.color.DynamicColors
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import io.realm.kotlin.ext.query
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kr.lunaticbum.utils.ui.DisplayUtil
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Base64
|
||||
import java.util.Calendar
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
@@ -323,26 +333,26 @@ internal class LauncherActivity : CommonActivity() {
|
||||
override fun dispatchKeyEvent(ev: KeyEvent): Boolean {
|
||||
Blog.LOGE("dispatch ev?.device?.name >>> ${ev?.device?.name}")
|
||||
if (ev?.device?.name?.contains("SM-031N Mouse") == true) {
|
||||
Blog.LOGE("dispatch dispatchKeyEvent>>> ${ev}")
|
||||
|
||||
when(ev.action) {
|
||||
ACTION_UP -> {
|
||||
Blog.LOGE("dispatch dispatchKeyEvent>>> ${ev}")
|
||||
when(ev.keyCode) {
|
||||
KEYCODE_DPAD_LEFT->{
|
||||
|
||||
KEYCODE_BUTTON_Y->{
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
String(Base64.getMimeDecoder().decode("aHR0cHM6Ly9qYXZtb3N0LnRvL2xhdGVzdC11cGRhdGVzCg==".toByteArray())).getJ().let { doc -> FeedParseManager.parse(doc){Blog.LOGE(it)} }
|
||||
}
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
String.format(String(Base64.getMimeDecoder().decode("aHR0cHM6Ly9qYXZtb3N0LnRvL3NlYXJjaC9tb3ZpZS8lcw==".toByteArray())),"").getJ().let { doc -> FeedParseManager.parse(doc){Blog.LOGE(it)} }
|
||||
}
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
String.format(String(Base64.getMimeDecoder().decode("aHR0cHM6Ly9rcjcxLnNvZ2lybC5zby8/cz0lcw==".toByteArray())),"").getJ().let { doc -> FeedParseManager.parse(doc){Blog.LOGE(it)} }
|
||||
}
|
||||
}
|
||||
KEYCODE_DPAD_RIGHT->{
|
||||
|
||||
}
|
||||
KEYCODE_DPAD_DOWN->{
|
||||
|
||||
}
|
||||
KEYCODE_DPAD_UP->{
|
||||
|
||||
}
|
||||
KEYCODE_BUTTON_START->{
|
||||
KEYCODE_BUTTON_X->{
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
var ddd = copyFromRealm(WorkersDb.getRssQuery(null, null,false).limit(100).find()).map { it.originPage() }
|
||||
var ddd = copyFromRealm(WorkersDb.getRssQuery("", RssDataType.getAdts(),false).limit(100).find()).map { it.originPage() }
|
||||
var origin = ddd.first()
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(arrayListOf<String>().apply { this.addAll(ddd) })
|
||||
@@ -352,13 +362,39 @@ internal class LauncherActivity : CommonActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
KEYCODE_BUTTON_A->{
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
var ddd = copyFromRealm(WorkersDb.getRssQuery("", arrayListOf(),false).limit(100).query("read == $0", 0).query("vote != $0", true).find()).map { it.originPage() }
|
||||
var origin = ddd.first()
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(arrayListOf<String>().apply { this.addAll(ddd) })
|
||||
.setRssId(origin)
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
|
||||
.show(origin)
|
||||
}
|
||||
}
|
||||
}
|
||||
KEYCODE_DPAD_DOWN->{
|
||||
|
||||
}
|
||||
KEYCODE_DPAD_UP->{
|
||||
|
||||
}
|
||||
KEYCODE_BUTTON_START->{
|
||||
onClickCenterButton()
|
||||
}
|
||||
KEYCODE_BUTTON_SELECT->{
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
var ddd = copyFromRealm(WorkersDb.getVotedRss().limit(100).find()).map { it.originPage() }
|
||||
var origin = ddd.first()
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(arrayListOf<String>().apply { this.addAll(ddd) })
|
||||
.setRssList(arrayListOf<String>().apply {
|
||||
var jjjj = hashSetOf<String>()
|
||||
jjjj.addAll(ddd)
|
||||
this.addAll(jjjj)}
|
||||
)
|
||||
.setRssId(origin)
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
|
||||
.show(origin)
|
||||
@@ -374,6 +410,24 @@ internal class LauncherActivity : CommonActivity() {
|
||||
}
|
||||
return super.dispatchKeyEvent(ev)
|
||||
}
|
||||
|
||||
|
||||
fun onClickCenterButton() {
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
var ddd = copyFromRealm(WorkersDb.getRssQuery("", RssDataType.getExcAdt(),false).limit(100).query("read == $0", 0).query("vote != $0", true).find()).map { it.originPage() }
|
||||
var origin = ddd.first()
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(arrayListOf<String>().apply {
|
||||
var jjjj = hashSetOf<String>()
|
||||
jjjj.addAll(ddd)
|
||||
this.addAll(jjjj) })
|
||||
.setRssId(origin)
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
|
||||
.show(origin)
|
||||
}
|
||||
}
|
||||
}
|
||||
override fun dispatchGenericMotionEvent(ev: MotionEvent?): Boolean {
|
||||
// Blog.LOGE("dispatchKeyEvent ev?.device?.name >>> ${ev?.device?.name}")
|
||||
/// || ev?.device?.name?.contains("SM-031N Mouse") == true
|
||||
@@ -409,17 +463,7 @@ internal class LauncherActivity : CommonActivity() {
|
||||
Blog.LOGE("DisplayUtil.width >>> ${DisplayUtil.height} ${actionButtonPressY}")
|
||||
if(actionButtonPressX.toInt() == 480 && actionButtonPressY < 2000) {
|
||||
Blog.LOGE("Arrow Center Click")
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
var ddd = copyFromRealm(WorkersDb.getRssQuery("", arrayListOf(),false).find()).map { it.originPage() }
|
||||
var origin = ddd.first()
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(arrayListOf<String>().apply { this.addAll(ddd) })
|
||||
.setRssId(origin)
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
|
||||
.show(origin)
|
||||
}
|
||||
}
|
||||
onClickCenterButton()
|
||||
} else if(ev.y > 2000) {
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package bums.lunatic.launcher.common
|
||||
import android.content.Intent
|
||||
import android.os.Environment
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.app.ComponentActivity
|
||||
import bums.lunatic.launcher.R
|
||||
import bums.lunatic.launcher.apps.SearchMenu
|
||||
import bums.lunatic.launcher.helpers.PrefBoolean
|
||||
|
||||
@@ -391,6 +391,18 @@ internal class LauncherHome : Fragment() {
|
||||
it.notifyDataSetChanged()
|
||||
}
|
||||
mWeatherAdapter?.let {
|
||||
fun onclick() {
|
||||
requireContext().startActivity(Intent().apply {
|
||||
action = Intent.ACTION_VIEW
|
||||
setData(Uri.parse("https://www.accuweather.com/ko/search-locations?query=${LocationGetter.latitude},${LocationGetter.longitude}"))
|
||||
})
|
||||
}
|
||||
binding.weathers.weatherViewPager.setOnTouchListener { v, event ->
|
||||
onclick()
|
||||
true
|
||||
}
|
||||
binding.weathers.weatherViewPager.setOnClickListener { onclick() }
|
||||
binding.weathers.root.setOnClickListener { onclick() }
|
||||
binding.weathers.textLocation =
|
||||
if (hours.isNotEmpty()) WeatherInfoManager.getShowingInfo(hours.first()).textLocation else "도시 / 나라"
|
||||
it.notifyDataSetChanged()
|
||||
|
||||
@@ -211,7 +211,7 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
|
||||
fun rightClick() {
|
||||
if (currentIdx < rssList.size - 1) {
|
||||
currentIdx += 1
|
||||
rssId = rssList.get(currentIdx)
|
||||
rssId = rssList.removeAt(currentIdx)
|
||||
Blog.LOGE("Arrow Right Click ${currentIdx} ${rssId}")
|
||||
load(rssId)
|
||||
registCancelSearch()
|
||||
@@ -224,7 +224,7 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
|
||||
fun leftClick() {
|
||||
if (currentIdx > 0) {
|
||||
currentIdx -= 1
|
||||
rssId = rssList.get(currentIdx)
|
||||
rssId = rssList.removeAt(currentIdx)
|
||||
Blog.LOGE("Arrow Left Click ${currentIdx} ${rssId}")
|
||||
load(rssId)
|
||||
registCancelSearch()
|
||||
@@ -315,6 +315,18 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
|
||||
registCancelSearch()
|
||||
}
|
||||
protected fun load(newUrl: String) {
|
||||
newUrl.toUri().host?.let {
|
||||
val splits = it.replace("http://","").replace("https://","").split(".")
|
||||
when(splits.size) {
|
||||
1-> host = splits[0]
|
||||
2-> host = splits[0]
|
||||
3-> host = splits[1]
|
||||
4-> host = splits[2]
|
||||
else -> {
|
||||
host = null
|
||||
}
|
||||
}
|
||||
}
|
||||
if (extraHeaders == null) {
|
||||
webView!!.loadUrl(newUrl!!)
|
||||
} else {
|
||||
@@ -340,6 +352,9 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
|
||||
}
|
||||
override fun webviewOnPageFinished() {
|
||||
double = false
|
||||
if(hasYoutubePlayer) {
|
||||
LogUtil.e("hasYoutubePlayer >>> ${hasYoutubePlayer}")
|
||||
}
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
val result =
|
||||
@@ -347,6 +362,8 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
|
||||
.find()
|
||||
if (result.size == 1) {
|
||||
result.first().read += 1
|
||||
} else {
|
||||
result.forEach { it.read += 1 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ object RssFeedsParser {
|
||||
|
||||
|
||||
if (date > limitDateTime && title != null && link != null) {
|
||||
Blog.LOGE("date ${date} title ${title} link ${link}")
|
||||
// Blog.LOGE("date ${date} title ${title} link ${link}")
|
||||
val item = NewsData(title, link)
|
||||
item.pubDate = date
|
||||
item.source = source
|
||||
|
||||
@@ -94,7 +94,11 @@ internal class RssItemAdapter (
|
||||
openReddit(rss.originPage())
|
||||
} else {
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(rssList)
|
||||
.setRssList(arrayListOf<String>().apply {
|
||||
var jjjj = hashSetOf<String>()
|
||||
jjjj.addAll(rssList)
|
||||
this.addAll(jjjj)
|
||||
})
|
||||
.setRssId(rss.originPage())
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).backPressToClose(false).webViewMixedContentMode(1)
|
||||
.show(rss.originPage!!)
|
||||
@@ -107,7 +111,11 @@ internal class RssItemAdapter (
|
||||
}
|
||||
RssDataType.DOTAX -> {
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(rssList)
|
||||
.setRssList(arrayListOf<String>().apply {
|
||||
var jjjj = hashSetOf<String>()
|
||||
jjjj.addAll(rssList)
|
||||
this.addAll(jjjj)
|
||||
})
|
||||
.setRssId(rss.originPage())
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).webViewMixedContentMode(0)
|
||||
.show(rss.originPage!!)
|
||||
@@ -119,7 +127,11 @@ internal class RssItemAdapter (
|
||||
}
|
||||
else -> {
|
||||
RssViewBuilder(lActivity!!)
|
||||
.setRssList(rssList)
|
||||
.setRssList(arrayListOf<String>().apply {
|
||||
var jjjj = hashSetOf<String>()
|
||||
jjjj.addAll(rssList)
|
||||
this.addAll(jjjj)
|
||||
})
|
||||
.setRssId(rss.originPage())
|
||||
.showIconClose(true).showIconBack(false).showProgressBar(true).webViewMixedContentMode(0)
|
||||
.show(rss.originPage!!)
|
||||
|
||||
@@ -40,6 +40,7 @@ class NewsData : RssDataInterface {
|
||||
return RssDataType.NEWSFEED
|
||||
}
|
||||
override fun getCho(): String? {
|
||||
return JamoUtils.split(title()).joinToString("")
|
||||
var cho = JamoUtils.split(title()).joinToString("")
|
||||
return if(cho.length > 0 ) cho else title()
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,10 @@ enum class RssDataType {
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun getExcAdt() = arrayListOf(NEWSFEED, REDDIT, DOTAX, FMKORAE, DCINSIDE, RULIWEB, CLIEN, THEQOO, ARCA).map { it.name }
|
||||
fun getAdts() = arrayListOf( REDDIT_NSFW, MOST,GURU).map { it.name }
|
||||
}
|
||||
}
|
||||
|
||||
interface RssDataInterface {
|
||||
|
||||
@@ -198,7 +198,7 @@ object WorkersDb {
|
||||
fun getVotedRss() = getRealm().query<RssData>().query("vote == $0", true)
|
||||
|
||||
fun getRssQuery(keyword: String?,
|
||||
category: ArrayList<String>? = arrayListOf(),
|
||||
category: Collection<String>? = arrayListOf(),
|
||||
noLimit: Boolean = false) : RealmQuery<RssData>{
|
||||
var rQ = getRealm().query<RssData>()
|
||||
if (!noLimit) rQ.query("pubDate > $0", beforeDay(Date(), 3))
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/textDress"
|
||||
android:maxLines="2"
|
||||
style="@style/small"
|
||||
android:text="@{info.textCondition}"
|
||||
android:gravity="center"
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
android:includeFontPadding="false"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxWidth="80dp"
|
||||
android:id="@+id/textDress"
|
||||
style="@style/small"
|
||||
android:text="@{info.textCondition}"
|
||||
|
||||
Reference in New Issue
Block a user