diff --git a/app/src/main/assets/extensions/my_extension/messaging.js b/app/src/main/assets/extensions/my_extension/messaging.js index ec7daa1b..947ae0d4 100644 --- a/app/src/main/assets/extensions/my_extension/messaging.js +++ b/app/src/main/assets/extensions/my_extension/messaging.js @@ -418,15 +418,22 @@ function gotoNext() { if (document.querySelector('[class="btn-group"]')) { time2 = setTimeout(function () { clearTimeout(time2) + var targetElement = null document.querySelector('[class="btn-group"]').querySelectorAll('a').forEach(function(e){ if(e.hasAttribute("href") && ( (e.getAttribute("href").search("page=2") > -1 && location.href.search("page") < 0) || (e.getAttribute("href").search("page=3") > -1 && location.href.search("page=2") > 0) )) { - e.click() + targetElement = e + } }) + if(targetElement !== null) { + targetElement.click() + } else { + location.href = "https://naver.com" + } }, 5000); } } catch (e) { diff --git a/app/src/main/kotlin/bums/lunatic/launcher/LauncherActivity.kt b/app/src/main/kotlin/bums/lunatic/launcher/LauncherActivity.kt index 1609effa..1e0a0a0b 100644 --- a/app/src/main/kotlin/bums/lunatic/launcher/LauncherActivity.kt +++ b/app/src/main/kotlin/bums/lunatic/launcher/LauncherActivity.kt @@ -602,6 +602,15 @@ internal class LauncherActivity : CommonActivity() { binding.tabs.setOnCheckedChangeListener { g, id -> showContents(id) } + binding.hidden.setOnLongClickListener { + supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, RssHome().apply { + arguments = Bundle().apply { + putBoolean("HIDDEN", true) + }} + ).commit() + true + } /* handle navigation back events */ handleBackPress() diff --git a/app/src/main/kotlin/bums/lunatic/launcher/home/GeckoWeb.kt b/app/src/main/kotlin/bums/lunatic/launcher/home/GeckoWeb.kt index df8e1ca2..c6abc51e 100644 --- a/app/src/main/kotlin/bums/lunatic/launcher/home/GeckoWeb.kt +++ b/app/src/main/kotlin/bums/lunatic/launcher/home/GeckoWeb.kt @@ -112,6 +112,11 @@ class GeckoWeb : BWebview { var mPort: WebExtension.Port? = null var mCaache : WebExtension.Port? = null var privateMode = false + set(value) { + Blog.LOGE("Current Mode = $field") + Blog.LOGE("Current Mode = $value") + field = value + } object WebExtensionInfo { val mPortNam = "browser" val extPath = "resource://android/assets/extensions/my_extension/" diff --git a/app/src/main/kotlin/bums/lunatic/launcher/home/RssHome.kt b/app/src/main/kotlin/bums/lunatic/launcher/home/RssHome.kt index e6f11ea4..95ba22dc 100644 --- a/app/src/main/kotlin/bums/lunatic/launcher/home/RssHome.kt +++ b/app/src/main/kotlin/bums/lunatic/launcher/home/RssHome.kt @@ -29,9 +29,11 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import android.view.LayoutInflater +import android.view.MotionEvent import android.view.PointerIcon import android.view.View import android.view.ViewGroup +import android.widget.CheckBox import android.widget.EditText import android.widget.ImageView import android.widget.Toast @@ -83,6 +85,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.launch import java.text.SimpleDateFormat import java.util.Date +import kotlin.time.TimeSource internal class RssHome : Fragment() { @@ -203,9 +206,14 @@ internal class RssHome : Fragment() { return false } }) - + var useHiddenMenu = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + arguments?.let { + if(it.containsKey("HIDDEN") && it.getBoolean("HIDDEN")) { + useHiddenMenu = true + } + } home = this } @@ -279,6 +287,12 @@ internal class RssHome : Fragment() { val viewInflated: View = LayoutInflater.from(requireContext()) .inflate(R.layout.text_inpu_password, binding.root as ViewGroup?, false) val input = viewInflated.findViewById(R.id.input) as EditText + val privateMode = viewInflated.findViewById(R.id.parivate_mode) as CheckBox + privateMode.setOnCheckedChangeListener { v,c-> + binding.geckoWeb.privateMode = c + } + privateMode.isChecked = true + binding.geckoWeb.privateMode = true builder.setView(viewInflated) builder.setPositiveButton( android.R.string.ok, @@ -306,13 +320,13 @@ internal class RssHome : Fragment() { fun openGecko(originPage: String? = null, rssData: RssData? = null) { if (!imageView) { originPage?.let { + binding.geckoWeb.privateMode = false rssId = originPage targetList.clear() var setString = hashSetOf() setString.addAll(rssList) setString.removeAll { it.equals(rssId) } - targetList.addAll(setString) binding.geckoWeb.loadUrl(rssId) } @@ -399,13 +413,28 @@ internal class RssHome : Fragment() { vote() } } - binding.test.setOnClickListener { - if (binding.geckoWeb.isVisible) { + Blog.LOGE("useHiddenMenu >>> $useHiddenMenu") + if (useHiddenMenu) { + binding.search.setOnLongClickListener { + if (binding.geckoWeb.isVisible) { + binding.geckoWeb.visibility = View.GONE + } binding.geckoWeb.visibility = View.GONE - + ask() + true } - binding.geckoWeb.visibility = View.GONE - ask() + binding.privateBtn.setOnClickListener { + queryPrevate(true) + } + binding.privateBtn.setOnLongClickListener { + queryPrevate(false) + true + } + binding.privateBtn.visibility = View.VISIBLE + binding.search.visibility = View.VISIBLE + } else { + binding.privateBtn.visibility = View.GONE + binding.search.visibility = View.GONE } binding.hide.setOnClickListener { @@ -439,9 +468,7 @@ internal class RssHome : Fragment() { binding.layoutRssSummary.root.visibility = View.GONE queryVotes() } - binding.prv.setOnClickListener { - queryPrevate() - } + binding.layoutRssSummary.link.setOnClickListener { (it.tag as? RssData)?.let { appendReadCount(it, 1, true) @@ -564,12 +591,12 @@ internal class RssHome : Fragment() { flow.collect { changes: ResultsChange -> // when (changes) { // is InitialResults -> { - commandHandler.removeCallbacks(infoUpdate) - WorkersDb.getRealm().apply { - lasted.clear() - lasted.addAll(copyFromRealm(changes.list)) - } - commandHandler.post(infoUpdate) + commandHandler.removeCallbacks(infoUpdate) + WorkersDb.getRealm().apply { + lasted.clear() + lasted.addAll(copyFromRealm(changes.list)) + } + commandHandler.post(infoUpdate) // } // // is UpdatedResults -> { @@ -587,10 +614,10 @@ internal class RssHome : Fragment() { } } - fun queryPrevate() { + fun queryPrevate(filter: Boolean = true) { imageView = true beforeQuery() - updateQuery(WorkersDb.getPrivate()) + updateQuery(WorkersDb.getPrivate(filter)) } fun queryVotes() { @@ -733,10 +760,28 @@ internal class RssHome : Fragment() { override fun onPause() { super.onPause() } - + var lOnTouchListener = object : View.OnTouchListener{ + override fun onTouch( + v: View, + event: MotionEvent + ): Boolean { + when(event.action) { + MotionEvent.ACTION_DOWN,MotionEvent.ACTION_MOVE->{ + v.alpha = Math.min(v.alpha + 0.01f, 1f) + } + else -> { + v.alpha = 0.05f + } + } + return true + } + } fun loadImage(imageView: ImageView, url: String?, retryCount: Int = 3) { - Picasso.get().cancelRequest(imageView) + with(imageView) { + Picasso.get().cancelRequest(this) + setOnTouchListener(null) + } url?.let { url -> if (url.length > 4) { try { @@ -747,7 +792,9 @@ internal class RssHome : Fragment() { .load(url) .into(imageView, object : com.squareup.picasso.Callback { override fun onSuccess() { + imageView.visibility = View.VISIBLE imageView.setAlpha(0.05f) + imageView.setOnTouchListener(lOnTouchListener) Blog.LOGE("Picasso load into onSuccess URL:$url") } diff --git a/app/src/main/kotlin/bums/lunatic/launcher/workers/WorkersDb.kt b/app/src/main/kotlin/bums/lunatic/launcher/workers/WorkersDb.kt index 941aca64..23f1b05d 100644 --- a/app/src/main/kotlin/bums/lunatic/launcher/workers/WorkersDb.kt +++ b/app/src/main/kotlin/bums/lunatic/launcher/workers/WorkersDb.kt @@ -216,6 +216,7 @@ object WorkersDb { } } } + fun prvClear() { getRealm().writeBlocking { var results = query().query("category == $0 ", @@ -223,8 +224,14 @@ object WorkersDb { delete(results) } } - fun getPrivate() = getRealm().query().query("category == $0 ", - RssDataType.PRIVATE.name).distinct("originPage", "title").query("read < $0", 5).query("vote != $0", true) + + fun getPrivate(filter : Boolean) : RealmQuery { + var rq = getRealm().query().query("category == $0 ",RssDataType.PRIVATE.name).distinct("originPage", "title") + if (filter) { + rq = rq.query("read < $0", 5).query("vote != $0", true) + } + return rq + } fun getVotedRss() = getRealm().query().query("vote == $0", true).distinct("originPage", "title") diff --git a/app/src/main/res/color/tabs_black.xml b/app/src/main/res/color/tabs_black.xml index 38e9ad9a..5642ec02 100644 --- a/app/src/main/res/color/tabs_black.xml +++ b/app/src/main/res/color/tabs_black.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/launcher_activity.xml b/app/src/main/res/layout/launcher_activity.xml index 0b380684..a7eed3ac 100644 --- a/app/src/main/res/layout/launcher_activity.xml +++ b/app/src/main/res/layout/launcher_activity.xml @@ -19,58 +19,51 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintBottom_toTopOf="@id/tabs"/> + app:layout_constraintBottom_toTopOf="@id/tabs_sc"/> - - - - - - - - + android:layout_height="35dp"> + + + + +