...
This commit is contained in:
@@ -230,7 +230,8 @@ object BookmarkUploader {
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveImageToLocal(context: Context, imageData: ByteArray, imageUrl: String) {
|
||||
private fun saveImageToLocal(context: Context, imageData: ByteArray, imageUrl: String) : String {
|
||||
var fileName = android.net.Uri.parse(imageUrl).lastPathSegment ?: "img_${System.currentTimeMillis()}.jpg"
|
||||
try {
|
||||
val saveDir = File(context.getExternalFilesDir(null), "completed_torrents")
|
||||
if (!saveDir.exists()) {
|
||||
@@ -238,7 +239,7 @@ object BookmarkUploader {
|
||||
}
|
||||
|
||||
// URL에서 원본 파일명 추출 시도 (실패 시 타임스탬프로 대체)
|
||||
var fileName = android.net.Uri.parse(imageUrl).lastPathSegment ?: "img_${System.currentTimeMillis()}.jpg"
|
||||
|
||||
|
||||
// 이름이 중복되어 덮어써지는 것을 막기 위해 타임스탬프를 앞에 붙여줍니다.
|
||||
fileName = "${System.currentTimeMillis()}_$fileName"
|
||||
@@ -250,6 +251,7 @@ object BookmarkUploader {
|
||||
} catch (e: Exception) {
|
||||
println("🔥 로컬 보관함 저장 실패: ${e.message}")
|
||||
}
|
||||
return fileName
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -914,6 +914,13 @@ open class GeckoWeb @JvmOverloads constructor(
|
||||
session?.setActive(true)
|
||||
}
|
||||
|
||||
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
return false
|
||||
}
|
||||
// dp 변환 확장 함수
|
||||
private fun Int.dpToPx(): Int = (this * context.resources.displayMetrics.density).toInt()
|
||||
fun prev10() {
|
||||
|
||||
@@ -19,6 +19,8 @@ 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
|
||||
import android.view.KeyEvent.KEYCODE_DPAD_UP
|
||||
import android.view.KeyEvent.KEYCODE_MEDIA_PAUSE
|
||||
import android.view.KeyEvent.KEYCODE_MEDIA_PLAY
|
||||
@@ -195,74 +197,74 @@ open class NeoRssActivity : CommonActivity() {
|
||||
|
||||
if (ev?.device?.name?.contains("JX-05") == true) {
|
||||
if (ev.action?.equals(KeyEvent.ACTION_UP) == true) {
|
||||
when(ev.keyCode) {
|
||||
KEYCODE_MEDIA_PLAY_PAUSE->{
|
||||
onRemoteKeyDetected("RIGHT_ARROW", true)
|
||||
}
|
||||
KEYCODE_MEDIA_PAUSE->{
|
||||
when(ev.keyCode) {
|
||||
KEYCODE_MEDIA_PLAY_PAUSE->{
|
||||
onRemoteKeyDetected("RIGHT_ARROW", true)
|
||||
}
|
||||
KEYCODE_MEDIA_PAUSE->{
|
||||
// onRemoteKeyDetected("LEFT_ARROW", true)
|
||||
}
|
||||
KEYCODE_VOLUME_UP->{
|
||||
onRemoteKeyDetected("UP_ARROW", true)
|
||||
}
|
||||
KEYCODE_VOLUME_DOWN->{
|
||||
onRemoteKeyDetected("DOWN_ARROW", true)
|
||||
}
|
||||
}}
|
||||
}
|
||||
KEYCODE_VOLUME_UP->{
|
||||
onRemoteKeyDetected("UP_ARROW", true)
|
||||
}
|
||||
KEYCODE_VOLUME_DOWN->{
|
||||
onRemoteKeyDetected("DOWN_ARROW", true)
|
||||
}
|
||||
}}
|
||||
return true
|
||||
}else
|
||||
if (ev?.device?.name?.contains("SM-031N Mouse") == true) {
|
||||
when(ev.action) {
|
||||
ACTION_UP -> {
|
||||
when(ev.keyCode) {
|
||||
KEYCODE_BUTTON_Y->{
|
||||
when(ev.action) {
|
||||
ACTION_UP -> {
|
||||
when(ev.keyCode) {
|
||||
KEYCODE_BUTTON_Y->{
|
||||
|
||||
}
|
||||
KEYCODE_BUTTON_X->{
|
||||
}
|
||||
KEYCODE_BUTTON_X->{
|
||||
|
||||
}
|
||||
KEYCODE_BUTTON_A->{
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
}
|
||||
KEYCODE_BUTTON_A->{
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
KEYCODE_BUTTON_B->{
|
||||
KEYCODE_BUTTON_B->{
|
||||
|
||||
}
|
||||
KEYCODE_DPAD_DOWN->{
|
||||
}
|
||||
KEYCODE_DPAD_DOWN->{
|
||||
|
||||
}
|
||||
KEYCODE_DPAD_UP->{
|
||||
}
|
||||
KEYCODE_DPAD_UP->{
|
||||
|
||||
}
|
||||
KEYCODE_BUTTON_START->{
|
||||
onClickCenterButton()
|
||||
}
|
||||
KEYCODE_BUTTON_SELECT->{
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
}
|
||||
KEYCODE_BUTTON_START->{
|
||||
onClickCenterButton()
|
||||
}
|
||||
KEYCODE_BUTTON_SELECT->{
|
||||
WorkersDb.getRealm().apply {
|
||||
writeBlocking {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
else->{}
|
||||
}
|
||||
return true
|
||||
}
|
||||
else {
|
||||
|
||||
val currentFragment = targetFragment ?: supportFragmentManager.fragments.find { it.isAdded && (!it.isHidden || it.isVisible) }
|
||||
if (currentFragment is KeyEventHandler) {
|
||||
if (currentFragment.onKeyEvent(ev)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
else->{}
|
||||
else { return super.dispatchKeyEvent(ev) }
|
||||
}
|
||||
return true
|
||||
}
|
||||
else {
|
||||
|
||||
val currentFragment = targetFragment ?: supportFragmentManager.fragments.find { it.isAdded && (!it.isHidden || it.isVisible) }
|
||||
if (currentFragment is KeyEventHandler) {
|
||||
if (currentFragment.onKeyEvent(ev)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
else { return super.dispatchKeyEvent(ev) }
|
||||
}
|
||||
return super.dispatchKeyEvent(ev)
|
||||
}
|
||||
|
||||
@@ -342,7 +344,7 @@ open class NeoRssActivity : CommonActivity() {
|
||||
when(keyType) {
|
||||
"UP_ARROW"->{showContents(R.id.feeds)}
|
||||
"DOWN_ARROW"->{showContents(R.id.close)}
|
||||
"RIGHT_ARROW"->{showContents(R.id.books)}
|
||||
// "RIGHT_ARROW"->{showContents(R.id.books)}
|
||||
"LEFT_ARROW"->{ }
|
||||
"CENTER_SINGLE_TAP" -> { }
|
||||
"CENTER_DOUBLE_TAP" -> { showContents(R.id.btn_torrent) }
|
||||
@@ -380,9 +382,34 @@ open class NeoRssActivity : CommonActivity() {
|
||||
|
||||
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
Blog.LOGE("onKeyUp >> $keyCode $event")
|
||||
if ("Virtual".equals(event?.device?.name)) {
|
||||
val currentFragment = targetFragment ?: supportFragmentManager.fragments.find { it.isVisible }
|
||||
if (currentFragment is RemoteGestureFragment && currentFragment.isRemoteEnabled) {
|
||||
|
||||
|
||||
when (keyCode) {
|
||||
KEYCODE_DPAD_UP -> {
|
||||
currentFragment.onRemoteUp(false)
|
||||
}
|
||||
KEYCODE_DPAD_DOWN -> {
|
||||
currentFragment.onRemoteDown(false)
|
||||
}
|
||||
KEYCODE_DPAD_LEFT -> {
|
||||
currentFragment.onRemoteLeft(false)
|
||||
}
|
||||
KEYCODE_DPAD_RIGHT -> {
|
||||
currentFragment.onRemoteRight(false)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKeyUp(keyCode, event)
|
||||
}
|
||||
|
||||
|
||||
override fun dispatchGenericMotionEvent(ev: MotionEvent?): Boolean {
|
||||
// Blog.LOGE("keyEvent >>>>> dispatchGenericMotionEvent ${ev?.device?.name ?: ""}: ${ev} ")
|
||||
if ("Virtual".equals(ev?.device?.name)) return true
|
||||
Blog.LOGE("keyEvent >>>>> dispatchGenericMotionEvent ${ev?.device?.name ?: ""}: ${ev} ")
|
||||
if (ev?.device?.name?.contains("BLE-M3") == true) {
|
||||
@@ -603,8 +630,8 @@ open class NeoRssActivity : CommonActivity() {
|
||||
targetFragment = when(id) {
|
||||
R.id.feeds -> RssHome()
|
||||
R.id.books -> TokiFragment.newInstanceNovels()
|
||||
R.id.webtoons -> TokiFragment.newInstanceWebtoons()
|
||||
R.id.comics -> TokiFragment.newInstanceComics()
|
||||
// R.id.webtoons -> TokiFragment.newInstanceWebtoons()
|
||||
// R.id.comics -> TokiFragment.newInstanceComics()
|
||||
R.id.youtube -> TokiFragment.newInstanceYouTube()
|
||||
R.id.perplexity -> TokiFragment.newInstancePerplexity()
|
||||
R.id.zzalbang -> BookmarkPagerFragment()
|
||||
|
||||
@@ -169,7 +169,7 @@ internal class RssHome : RemoteGestureFragment() , KeyEventHandler {
|
||||
|
||||
val infoUpdate = Runnable { chooseAdpater() }
|
||||
var result: RealmResults<WeatherForcast>? = null
|
||||
val nomoreShowCount = 5
|
||||
val nomoreShowCount = 1
|
||||
fun rssStateVote() = (lasted?.filter { it.vote == true }?.size ?: -1) == (lasted?.size ?: 0)
|
||||
var lasted: ArrayList<RssData> = arrayListOf()
|
||||
var infosJob: Job? = null
|
||||
@@ -534,6 +534,7 @@ internal class RssHome : RemoteGestureFragment() , KeyEventHandler {
|
||||
}
|
||||
|
||||
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
|
||||
@@ -186,9 +186,9 @@ class TokiFragment : RemoteGestureFragment(), PagedTextViewInterface,KeyEventHan
|
||||
arguments = Bundle().apply {
|
||||
putString(ARG_TYPE, "book")
|
||||
putInt(ARG_LAST_NUM, 468)
|
||||
putString(ARG_NAME, "booktoki")
|
||||
putString(ARG_DOT, "com")
|
||||
putBoolean(ARG_USE_NUM_URL, true)
|
||||
putString(ARG_NAME, "ntk01")
|
||||
putString(ARG_DOT, "com/novel")
|
||||
putBoolean(ARG_USE_NUM_URL, false)
|
||||
putBoolean(ARG_ENABLE_GESTURE, true)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +211,7 @@ class TorrentService : Service() {
|
||||
|
||||
// 2. 파일 다운로드: 계산된 점수(finalScore)가 낮은 순으로 정렬
|
||||
if (isCharging) {
|
||||
val maxSlots = if (isWifiConnected) 6 else 2
|
||||
val maxSlots = if (isWifiConnected) 6 else 1
|
||||
val sortedByPriority = torrentsWithMetadata.sortedBy { it.second }
|
||||
|
||||
sortedByPriority.forEachIndexed { index, pair ->
|
||||
|
||||
Reference in New Issue
Block a user