diff --git a/.github/workflows/shell/count_download.sh b/.github/workflows/shell/count_download.sh deleted file mode 100644 index 0926008eb..000000000 --- a/.github/workflows/shell/count_download.sh +++ /dev/null @@ -1,131 +0,0 @@ -#!/bin/bash - - - -readonly WORKING_DIR_PATH=$(pwd) -readonly STATISTICS_DIR_PATH="${WORKING_DIR_PATH}/statistics" -mkdir -p "${STATISTICS_DIR_PATH}" -readonly CC_DOWNLOAD_COUNT_CSV_PATH="${STATISTICS_DIR_PATH}/download_count.csv" - -# readonly release_res="$( -# echo '{ -# "url": "https://api.github.com/repos/puutaro/CommandClick/releases/175259467", -# "assets_url": "https://api.github.com/repos/puutaro/CommandClick/releases/175259467/assets", -# "upload_url": "https://uploads.github.com/repos/puutaro/CommandClick/releases/175259467/assets{?name,label}", -# "html_url": "https://github.com/puutaro/CommandClick/releases/tag/v1.4.1", -# "id": 175259467, -# "author": { -# "login": "puutaro", -# "id": 55217593, -# "node_id": "MDQ6VXNlcjU1MjE3NTkz", -# "avatar_url": "https://avatars.githubusercontent.com/u/55217593?v=4", -# "gravatar_id": "", -# "url": "https://api.github.com/users/puutaro", -# "html_url": "https://github.com/puutaro", -# "followers_url": "https://api.github.com/users/puutaro/followers", -# "following_url": "https://api.github.com/users/puutaro/following{/other_user}", -# "gists_url": "https://api.github.com/users/puutaro/gists{/gist_id}", -# "starred_url": "https://api.github.com/users/puutaro/starred{/owner}{/repo}", -# "subscriptions_url": "https://api.github.com/users/puutaro/subscriptions", -# "organizations_url": "https://api.github.com/users/puutaro/orgs", -# "repos_url": "https://api.github.com/users/puutaro/repos", -# "events_url": "https://api.github.com/users/puutaro/events{/privacy}", -# "received_events_url": "https://api.github.com/users/puutaro/received_events", -# "type": "User", -# "site_admin": false -# }, -# "node_id": "RE_kwDOI5NAFs4Kcj9L", -# "tag_name": "v1.4.1", -# "target_commitish": "master", -# "name": "[Big update] Adopt historical UI", -# "draft": false, -# "prerelease": false, -# "created_at": "2024-09-16T14:30:09Z", -# "published_at": "2024-09-16T14:47:16Z", -# "assets": [ -# { -# "url": "https://api.github.com/repos/puutaro/CommandClick/releases/assets/192980858", -# "id": 192980858, -# "node_id": "RA_kwDOI5NAFs4LgKd6", -# "name": "CommandClick-1.4.1-release.apk", -# "label": null, -# "uploader": { -# "login": "puutaro", -# "id": 55217593, -# "node_id": "MDQ6VXNlcjU1MjE3NTkz", -# "avatar_url": "https://avatars.githubusercontent.com/u/55217593?v=4", -# "gravatar_id": "", -# "url": "https://api.github.com/users/puutaro", -# "html_url": "https://github.com/puutaro", -# "followers_url": "https://api.github.com/users/puutaro/followers", -# "following_url": "https://api.github.com/users/puutaro/following{/other_user}", -# "gists_url": "https://api.github.com/users/puutaro/gists{/gist_id}", -# "starred_url": "https://api.github.com/users/puutaro/starred{/owner}{/repo}", -# "subscriptions_url": "https://api.github.com/users/puutaro/subscriptions", -# "organizations_url": "https://api.github.com/users/puutaro/orgs", -# "repos_url": "https://api.github.com/users/puutaro/repos", -# "events_url": "https://api.github.com/users/puutaro/events{/privacy}", -# "received_events_url": "https://api.github.com/users/puutaro/received_events", -# "type": "User", -# "site_admin": false -# }, -# "content_type": "application/vnd.android.package-archive", -# "state": "uploaded", -# "size": 21654944, -# "download_count": 30, -# "created_at": "2024-09-16T17:12:18Z", -# "updated_at": "2024-09-16T17:12:25Z", -# "browser_download_url": "https://github.com/puutaro/CommandClick/releases/download/v1.4.1/CommandClick-1.4.1-release.apk" -# } -# ], -# "tarball_url": "https://api.github.com/repos/puutaro/CommandClick/tarball/v1.4.1", -# "zipball_url": "https://api.github.com/repos/puutaro/CommandClick/zipball/v1.4.1", -# "body": "[Changes]\r\n- Url history by gif\r\n- Fannel center by gif\r\n- UI by URL history captrue\r\n- Extra menu by art\r\n- Text selection system by URL catpture\r\n- Update search system \r\n- Integrate fannel install system to fannel center\r\n- Remove app manger , js manger\r\n- Remove scroll regiter menu, etx..\r\n- Integrate fannel management to fannel center\r\n- Apply original gif art to multiple functions\r\n- Adopt pin system\r\n" -# }')" -readonly release_res=$(\ - curl \ - --silent \ - --header "Accept: application/vnd.github.v3+json" \ - https://api.github.com/repos/puutaro/CommandClick/releases/latest \ -) -readonly cc_donwload_count="$(\ - echo "${release_res}" \ - | jq -r '.assets[] |.download_count' \ -)" -readonly version="$(\ - echo "${release_res}" \ - | jq -r '.tag_name' \ -)" -readonly insert_line=$(echo "${version},$(date +%Y-%m-%d),${cc_donwload_count}") -readonly cc_count_csv_con=$(\ - cat "${CC_DOWNLOAD_COUNT_CSV_PATH}"\ - | sed '1d' \ - 2>/dev/null \ -) -readonly header="version,date,download_count" -readonly body=$(cat \ - <(echo "${cc_count_csv_con}") \ - <(echo "${insert_line}") \ - | awk '{ - gsub(/^[ \t]*/, "", $0) - gsub(/[ \t]*$/, "", $0) - if(!$0) next - print $0 - }'\ - | sort -r \ - | uniq \ -) -readonly update_csv_con=$(awk \ - -v header="${header}" \ - -v body="${body}" \ -'BEGIN { - print header - print body -}') -echo "${update_csv_con}" \ - > "${CC_DOWNLOAD_COUNT_CSV_PATH}" - -echo "${CC_DOWNLOAD_COUNT_CSV_PATH}" -cat "${CC_DOWNLOAD_COUNT_CSV_PATH}" \ -| column -t -s ',' \ -| sed -r '1s/(.*)/\x1b[1;38;5;14m\1\x1b[0m/' \ No newline at end of file diff --git a/.github/workflows/shell/list/thanks_image_list.tsv b/.github/workflows/shell/list/thanks_image_list.tsv index e333de464..a0cbae784 100644 --- a/.github/workflows/shell/list/thanks_image_list.tsv +++ b/.github/workflows/shell/list/thanks_image_list.tsv @@ -16,4 +16,5 @@ c_background2_90 https://github.com/user-attachments/assets/a3665585-629b-4961-8 c_background https://github.com/user-attachments/assets/c5ce5b7f-be32-4978-8f6d-9b917eacaed9 bloom_cc_wave_bk_suisei_flip https://github.com/user-attachments/assets/b6fc3fab-0387-4c48-91fb-5de3e0b9bf7e bloom_cc_wave_bk_bottom https://github.com/user-attachments/assets/ffba7d64-9f61-4615-ba61-5142cfb12b12 -bloom_cc_wave_bk https://github.com/user-attachments/assets/f29070a5-1142-4db1-8a34-d705fd98e1a3 \ No newline at end of file +bloom_cc_wave_bk https://github.com/user-attachments/assets/f29070a5-1142-4db1-8a34-d705fd98e1a3 +internet_bk https://github.com/user-attachments/assets/ecb163ee-9c9f-421b-a36b-8127122c7903 \ No newline at end of file diff --git a/README.md b/README.md index e1b3eb30d..093cc7cd0 100755 --- a/README.md +++ b/README.md @@ -155,8 +155,8 @@ Thanks for watching by end -------- - - - - + + + + diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 56cefd630..adb0b75a8 100755 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,13 +12,19 @@ val versionPatch = 2 android { namespace = "com.puutaro.commandclick" - compileSdk = 33 - - packagingOptions { - resources.excludes.add("META-INF/INDEX.LIST") - resources.excludes.add("META-INF/io.netty.versions.properties") + compileSdk = 35 + + packaging { + resources { + excludes.add("META-INF/INDEX.LIST") + excludes.add("META-INF/io.netty.versions.properties") + jniLibs { + useLegacyPackaging = false + } + } } + buildFeatures { buildConfig = true } @@ -60,11 +66,14 @@ android { compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + //JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_17 + //JavaVersion.VERSION_1_8 } kotlinOptions { - jvmTarget = "1.8" + jvmTarget = JavaVersion.VERSION_17.toString() + //"1.8" } // buildFeatures.compose = true dataBinding { @@ -94,31 +103,31 @@ extra["libDir"] = "${project.projectDir}/src/main/jniLibs" dependencies { - implementation("androidx.core:core-ktx:1.10.1") - implementation("androidx.appcompat:appcompat:1.6.1") + implementation("androidx.core:core-ktx:1.15.0") + implementation("androidx.appcompat:appcompat:1.7.0") - - implementation("androidx.constraintlayout:constraintlayout:2.1.4") - implementation("androidx.test:core-ktx:1.5.0") - implementation("androidx.fragment:fragment-ktx:1.6.2") - implementation("androidx.activity:activity-ktx:1.7.2") + implementation("androidx.constraintlayout:constraintlayout:2.2.0") + implementation("androidx.test:core-ktx:1.6.1") + implementation("androidx.fragment:fragment-ktx:1.8.5") + implementation("androidx.activity:activity-ktx:1.9.3") implementation("androidx.lifecycle:lifecycle-extensions:2.2.0") - implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") - implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") - implementation("androidx.media:media:1.6.0") - implementation("androidx.navigation:navigation-fragment-ktx:2.6.0") +// implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") + implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7") + implementation("androidx.media:media:1.7.0") + implementation("androidx.navigation:navigation-fragment-ktx:2.8.5") implementation("androidx.recyclerview:recyclerview:1.3.2") - implementation("com.google.android.material:material:1.9.0") + implementation("com.google.android.material:material:1.12.0") testImplementation("junit:junit:4.13.2") - androidTestImplementation("androidx.test.ext:junit:1.1.5") - androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") - implementation("com.termux.termux-app:termux-shared:0.117") - implementation("com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava") + androidTestImplementation("androidx.test.ext:junit:1.2.1") + androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1") +// implementation("com.termux.termux-app:termux-shared:0.117") + implementation("com.google.guava:guava:33.3.1-android") +// implementation("com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava") implementation("net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:3.0.0-RC3") implementation("com.jakewharton.threetenabp:threetenabp:1.2.1") - implementation("commons-io:commons-io:2.11.0") - implementation("com.github.omadahealth:swipy:1.2.3@aar") + implementation("commons-io:commons-io:2.13.0") +// implementation("com.github.omadahealth:swipy:1.2.3@aar") implementation("com.github.skydoves:colorpickerview:2.2.4") implementation("com.anggrayudi:storage:1.5.5") implementation("com.github.sya-ri:kgit:1.0.5") @@ -127,7 +136,7 @@ dependencies { implementation("org.jsoup:jsoup:1.7.3") implementation("com.itextpdf:itextg:5.5.10") implementation("com.github.bumptech.glide:glide:4.16.0") - annotationProcessor("com.github.bumptech.glide:compiler:4.11.0") + annotationProcessor("com.github.bumptech.glide:compiler:4.16.0") implementation("com.github.bachors:Android-Img2Ascii:1.1") implementation("org.rauschig:jarchivelib:0.8.0") // implementation("org.apache.commons:commons-compress:1.26.2") @@ -138,7 +147,7 @@ dependencies { implementation ("com.github.alexzhirkevich:custom-qr-generator:2.0.0-alpha01") - implementation("io.coil-kt:coil:2.4.0") +// implementation("io.coil-kt:coil:2.4.0") // implementation("com.github.maxrave-dev:kotlin-youtubeExtractor:0.0.7") implementation("com.blankj:utilcodex:1.31.1") @@ -148,16 +157,31 @@ dependencies { implementation("ch.qos.logback:logback-classic:1.2.3") implementation("androidx.documentfile:documentfile:1.0.1") implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") + implementation("com.github.gleb8k:Android-PathShapeView:1.3.2") + implementation("com.daimajia.androidanimations:library:2.4@aar") +// val htextview_version = "0.1.2" +// implementation("com.github.kibotu:htextview:0.1.28") +// implementation("com.github.takusemba:spotlight:2.0.5") +// implementation("jp.co.cyberagent.android:gpuimage:2.1.0") + implementation("jp.wasabeef:glide-transformations:4.3.0") + implementation("net.objecthunter:exp4j:0.4.8") + implementation("jp.wasabeef:blurry:4.0.1") +// as 3.0 use implementation +// implementation ("com.hanks:htextview-base:0.1.6" ) // base library + +// implementation( "com.hanks:htextview-fade:$htextview_version") // optional +// implementation ("com.hanks:htextview-line:$htextview_version") // optional +// implementation ("com.hanks:htextview-rainbow:$htextview_version") // optional +// implementation ("com.hanks:htextview-typer:$htextview_version") // optional +// +//// implementation ("com.hanks:htextview-scale:$htextview_version") // optional +// implementation ("com.hanks:htextview-evaporate:$htextview_version") // optional +// implementation ("com.hanks:htextview-fall:$htextview_version" ) // optional testImplementation("org.jetbrains.kotlin:kotlin-test") testImplementation("org.jetbrains.kotlin:kotlin-test-junit") debugImplementation("com.squareup.leakcanary:leakcanary-android:2.14") - -// implementation("androidx.camera:camera-camera2:1.2.2") -// implementation("androidx.camera:camera-lifecycle:1.2.2") -// implementation("androidx.camera:camera-view:1.2.2") - // implementation("org.nanohttpd:nanohttpd:2.2.0") } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0af295487..a8653f1a7 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,7 +8,6 @@ - diff --git a/app/src/main/assets/html/edit_urls_template.html b/app/src/main/assets/html/edit_urls_template.html index 74df7d264..c6479a27a 100755 --- a/app/src/main/assets/html/edit_urls_template.html +++ b/app/src/main/assets/html/edit_urls_template.html @@ -340,7 +340,7 @@

.replace(/^file:\/\//, '') .replace(/^\/\/*/, '/'); itemTitle = item.querySelector(".url-launch").textContent - var result = window.confirm("delete ok?\n\t" + itemTitle); + var result = jsDialog.confirm("delete ok?", itemTitle); if(!result) { location.reload() return diff --git a/app/src/main/assets/res/gif/folda.gif b/app/src/main/assets/res/gif/folda.gif index a1e434504..8aab2c5c5 100644 Binary files a/app/src/main/assets/res/gif/folda.gif and b/app/src/main/assets/res/gif/folda.gif differ diff --git a/app/src/main/assets/res/png/button/c.png b/app/src/main/assets/res/png/button/c.png new file mode 100644 index 000000000..4b91b938a Binary files /dev/null and b/app/src/main/assets/res/png/button/c.png differ diff --git a/app/src/main/assets/res/png/button/rect.png b/app/src/main/assets/res/png/button/rect.png new file mode 100644 index 000000000..a6a45f21e Binary files /dev/null and b/app/src/main/assets/res/png/button/rect.png differ diff --git a/app/src/main/assets/res/png/button/round_rect.png b/app/src/main/assets/res/png/button/round_rect.png new file mode 100644 index 000000000..4cc5f9abe Binary files /dev/null and b/app/src/main/assets/res/png/button/round_rect.png differ diff --git a/app/src/main/assets/res/png/button/triangle_right.png b/app/src/main/assets/res/png/button/triangle_right.png new file mode 100644 index 000000000..4a0dc6930 Binary files /dev/null and b/app/src/main/assets/res/png/button/triangle_right.png differ diff --git a/app/src/main/assets/res/png/confirm_dialog/o32.png b/app/src/main/assets/res/png/confirm_dialog/o32.png new file mode 100644 index 000000000..bda511b06 Binary files /dev/null and b/app/src/main/assets/res/png/confirm_dialog/o32.png differ diff --git a/app/src/main/assets/res/png/confirm_dialog/x3.png b/app/src/main/assets/res/png/confirm_dialog/x3.png new file mode 100644 index 000000000..43ebca674 Binary files /dev/null and b/app/src/main/assets/res/png/confirm_dialog/x3.png differ diff --git a/app/src/main/assets/res/png/grid_dialog/sibuki.png b/app/src/main/assets/res/png/grid_dialog/sibuki.png new file mode 100644 index 000000000..d8035e69c Binary files /dev/null and b/app/src/main/assets/res/png/grid_dialog/sibuki.png differ diff --git a/app/src/main/java/com/puutaro/commandclick/activity/MainActivity.kt b/app/src/main/java/com/puutaro/commandclick/activity/MainActivity.kt index b8bd4b047..3c9ea738c 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity/MainActivity.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity/MainActivity.kt @@ -31,7 +31,6 @@ import com.puutaro.commandclick.activity_lib.event.lib.common.ExecUpdateNoSaveUr import com.puutaro.commandclick.activity_lib.event.lib.common.ExecWifiSet import com.puutaro.commandclick.activity_lib.event.lib.common.RestartWhenPreferenceCheckErr import com.puutaro.commandclick.activity_lib.event.lib.edit.ExecFileChooser -import com.puutaro.commandclick.activity_lib.event.lib.edit.ExecOnLongPressPlayOrEditButton import com.puutaro.commandclick.activity_lib.event.lib.edit.ExecOnLongTermKeyBoardOpenAdjustForEdit import com.puutaro.commandclick.activity_lib.event.lib.edit.ExecOnToolBarVisibleChangeForEdit import com.puutaro.commandclick.activity_lib.event.lib.edit.ExecTermMinimumForEdit @@ -61,10 +60,10 @@ import com.puutaro.commandclick.fragment_lib.command_index_fragment.variable.Lon import com.puutaro.commandclick.fragment_lib.command_index_fragment.variable.ToolbarMenuCategoriesVariantForCmdIndex import com.puutaro.commandclick.fragment_lib.edit_fragment.common.ToolbarButtonBariantForEdit import com.puutaro.commandclick.fragment_lib.edit_fragment.variable.EditInitType +import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.lib.dialog.EditListDialog import com.puutaro.commandclick.proccess.broadcast.BroadcastRegister import com.puutaro.commandclick.proccess.edit.lib.FilePickerTool import com.puutaro.commandclick.proccess.history.fannel_history.FannelHistoryCaptureTool -import com.puutaro.commandclick.proccess.js_macro_libs.toolbar_libs.EditLongPressType import com.puutaro.commandclick.proccess.pin.PinFannelHideShow import com.puutaro.commandclick.proccess.setting_menu_for_cmdindex.page_search.PageSearchManager import com.puutaro.commandclick.service.FannelRepoDownloadService @@ -72,6 +71,7 @@ import com.puutaro.commandclick.util.Intent.UbuntuServiceManager import com.puutaro.commandclick.util.state.EditFragmentArgs import com.puutaro.commandclick.util.state.FannelInfoTool import com.puutaro.commandclick.util.state.FragmentTagManager +import com.puutaro.commandclick.util.state.TargetFragmentInstance import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -90,8 +90,11 @@ class MainActivity: TerminalFragment.OnPageLoadPageSearchDisableListener, TerminalFragment.OnFindPageSearchResultListener, TerminalFragment.OnFileChooseListener, - TerminalFragment.OnEditTextUpdateListenerForTermFragment, - TerminalFragment.OnSpinnerUpdateListenerForTermFragment, + TerminalFragment.OnTextViewAndFannelUpdateListenerForTerm, + TerminalFragment.OnImageViewUpdateListenerForTerm, + TerminalFragment.OnFrameLayoutUpdateListenerForTerm, + TerminalFragment.OnTextViewAndMapListUpdateListenerForTerm, +// TerminalFragment.OnSpinnerUpdateListenerForTermFragment, TerminalFragment.OnEditableSpinnerUpdateListenerForTermFragment, TerminalFragment.OnMultiSelectListenerForTerm, TerminalFragment.OnTermSizeMinimumListenerForTerm, @@ -102,7 +105,7 @@ class MainActivity: TerminalFragment.OnMonitorSizeChangingForTerm, TerminalFragment.OnPopStackImmediateListenerForTerm, TerminalFragment.OnCmdValSaveAndBackListenerForTerm, - TerminalFragment.OnGetFileListenerForTerm, +// TerminalFragment.OnGetFileListenerForTerm, TerminalFragment.OnGetFileListListenerForTerm, TerminalFragment.GetSdcardDirListenerForTerm, TerminalFragment.OnRestartListenerForTerm, @@ -141,7 +144,7 @@ class MainActivity: EditFragment.OnFileChooserListenerForEdit, EditFragment.OnTermSizeLongListenerForEdit, EditFragment.OnMultiSelectListenerForEdit, - EditFragment.OnLongPressPlayOrEditButtonListener, +// EditFragment.OnLongPressPlayOrEditButtonListener, EditFragment.OnLongTermKeyBoardOpenAjustListenerForEdit, EditFragment.OnUpdateNoSaveUrlPathsListenerForEdit, EditFragment.OnGetPermissionListenerForEdit, @@ -547,11 +550,11 @@ class MainActivity: activeMatchOrdinal: Int, numberOfMatches: Int ) { - ExecPageSearchResult.reflect( - this, - activeMatchOrdinal, - numberOfMatches - ) +// ExecPageSearchResult.reflect( +// this, +// activeMatchOrdinal, +// numberOfMatches +// ) } override fun onFileCoose( @@ -600,15 +603,76 @@ class MainActivity: ) } - override fun onEditTextUpdateForTermFragment( - editTextId: Int?, - variableValue: String + override fun onTextViewAndFannelForTermFragment( + indexOrParentTagName: String, + srcFragment: String, + tagNameList: List, + updateText: String, + overrideTextMap: Map?, + textPropertyMap: Map< String, String>?, + isSave: Boolean, ) { - EditTextUpdaterForTerminalFragment.update( - this, - editTextId, - variableValue - ) + CoroutineScope(Dispatchers.Main).launch { + TextViewAndFannelUpdaterForTerm.update( + this@MainActivity, + indexOrParentTagName, + srcFragment, + tagNameList, + updateText, + overrideTextMap, + textPropertyMap, + isSave + ) + } + } + + override fun onImageViewUpdateForTerm( + indexOrParentTagName: String, + srcFragment: String, + tagNameList: List, + imageMap: Map, + imagePropertyMap: Map + ) { + CoroutineScope(Dispatchers.Main).launch { + ImageViewAndFannelUpdaterForTerm.update( + this@MainActivity, + indexOrParentTagName, + srcFragment, + tagNameList, + imageMap, + imagePropertyMap + ) + } + } + + override fun onFrameLayoutUpdateForTerm( + indexOrParentTagName: String, + srcFragment: String, + tagNameList: List, + frameKeyPairList: List>?, + ) { + CoroutineScope(Dispatchers.Main).launch { + FrameLayoutUpdaterForTerm.update( + this@MainActivity, + indexOrParentTagName, + srcFragment, + tagNameList, + frameKeyPairList + ) + } + } + + override fun onTextViewAndMapListUpdateForTerm( + editListIndex: Int, + srcFragmentStr: String + ) { + CoroutineScope(Dispatchers.Main).launch { + EditTextAndMapListForTerm.update( + this@MainActivity, + editListIndex, + srcFragmentStr, + ) + } } override fun onEditableSpinnerUpdateForTermFragment(spinnerId: Int?, variableValue: String) { @@ -619,13 +683,13 @@ class MainActivity: ) } - override fun onSpinnerUpdateForTermFragment(spinnerId: Int?, variableValue: String) { - SpinnerUpdaterForTerminalFragment.update( - this, - spinnerId, - variableValue - ) - } +// override fun onSpinnerUpdateForTermFragment(spinnerId: Int?, variableValue: String) { +// SpinnerUpdaterForTerminalFragment.update( +// this, +// spinnerId, +// variableValue +// ) +// } override fun onMultiSelectForEdit( variableName: String, @@ -655,20 +719,20 @@ class MainActivity: ) } - override fun onLongPressPlayOrEditButton( - editLongPressType: EditLongPressType, - tag: String?, - searchText: String, - pageSearchToolbarButtonVariant: PageSearchToolbarButtonVariant? - ) { - ExecOnLongPressPlayOrEditButton.handle( - this, - editLongPressType, - tag, - searchText, - pageSearchToolbarButtonVariant - ) - } +// override fun onLongPressPlayOrEditButton( +// editLongPressType: EditLongPressType, +// tag: String?, +// searchText: String, +// pageSearchToolbarButtonVariant: PageSearchToolbarButtonVariant? +// ) { +// ExecOnLongPressPlayOrEditButton.handle( +// this, +// editLongPressType, +// tag, +// searchText, +// pageSearchToolbarButtonVariant +// ) +// } override fun onLongTermKeyBoardOpenAjustForEdit( weight: Float @@ -782,29 +846,29 @@ class MainActivity: ExecSettingOkButton.handle(this) } - override fun onGetFileForTerm( - parentDirPathSrc: String, - onDirectoryPickSrc: Boolean, - filterPrefixListCon: String, - filterSuffixListCon: String, - filterShellCon: String, - initialPath: String, - pickerMacro: FilePickerTool.PickerMacro?, - currentFannelName: String, - tag: String, - ) { - getFileForEdit.get( - parentDirPathSrc, - filterPrefixListCon, - filterSuffixListCon, - filterShellCon, - initialPath, - onDirectoryPickSrc, - pickerMacro, - currentFannelName, - tag, - ) - } +// override fun onGetFileForTerm( +// parentDirPathSrc: String, +// onDirectoryPickSrc: Boolean, +// filterPrefixListCon: String, +// filterSuffixListCon: String, +// filterShellCon: String, +// initialPath: String, +// pickerMacro: FilePickerTool.PickerMacro?, +// currentFannelName: String, +// tag: String, +// ) { +// getFileForEdit.get( +// parentDirPathSrc, +// filterPrefixListCon, +// filterSuffixListCon, +// filterShellCon, +// initialPath, +// onDirectoryPickSrc, +// pickerMacro, +// currentFannelName, +// tag, +// ) +// } override fun onGetFileListForTerm( onDirectoryPickSrc: Boolean, @@ -957,5 +1021,4 @@ class MainActivity: this ) } - } diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecLongClickMenuItemsforCmdIndex.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecLongClickMenuItemsforCmdIndex.kt index b4bb82a88..f0f7dd5d5 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecLongClickMenuItemsforCmdIndex.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecLongClickMenuItemsforCmdIndex.kt @@ -1,6 +1,7 @@ package com.puutaro.commandclick.activity_lib.event import android.content.Intent +import com.blankj.utilcode.util.ToastUtils import com.puutaro.commandclick.activity.MainActivity import com.puutaro.commandclick.activity_lib.event.lib.cmdIndex.ExecCommandEdit import com.puutaro.commandclick.fragment_lib.command_index_fragment.variable.LongClickMenuItemsforCmdIndex diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecTermLongChangeHandlerForTerm.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecTermLongChangeHandlerForTerm.kt index cc9050f25..ba2595f0f 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecTermLongChangeHandlerForTerm.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecTermLongChangeHandlerForTerm.kt @@ -16,10 +16,10 @@ object ExecTermLongChangeHandlerForTerm { ExecUrlLoadFragmentProccess.execUrlLoadCmdIndexFragment( activity, ) - is EditFragment -> - ExecUrlLoadFragmentProccess.execUrlLoadCmdVriableEditFragment( - activity, - ) + is EditFragment -> {} +// ExecUrlLoadFragmentProccess.execUrlLoadCmdVriableEditFragment( +// activity, +// ) else -> {} } } diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecToolBarButtonClickForEdit.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecToolBarButtonClickForEdit.kt index 8fc8b4b2e..ca1d4d5c2 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecToolBarButtonClickForEdit.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/ExecToolBarButtonClickForEdit.kt @@ -35,34 +35,34 @@ object ExecToolBarButtonClickForEdit { enableCmdEdit ) ToolbarButtonBariantForEdit.EDIT -> { - val onShortcutOff = EditFragmentArgs.Companion.OnShortcutSettingKey.OFF.key -// val currentAppDirPath = FannelInfoTool.getCurrentAppDirPath( +// val onShortcutOff = EditFragmentArgs.Companion.OnShortcutSettingKey.OFF.key +//// val currentAppDirPath = FannelInfoTool.getCurrentAppDirPath( +//// fannelInfoMap +//// ) +// +// val currentFannelName = FannelInfoTool.getCurrentFannelName( // fannelInfoMap // ) - - val currentFannelName = FannelInfoTool.getCurrentFannelName( - fannelInfoMap - ) - - val settingEditFragmentTag = FragmentTagManager.makeSettingValEditTag( -// currentAppDirPath, - currentFannelName, - ) - val fannelInfoMapForNext = EditFragmentArgs.createFannelInfoMap( -// currentAppDirPath, - currentFannelName, - onShortcutOff, - FannelInfoSetting.current_fannel_state.defalutStr, - ) - ExecCommandEdit.execCommandEdit( - activity, - settingEditFragmentTag, - EditFragmentArgs( - fannelInfoMapForNext, - EditFragmentArgs.Companion.EditTypeSettingsKey.SETTING_VAL_EDIT, - ), - activity.getString(R.string.edit_terminal_fragment) - ) +// +// val settingEditFragmentTag = FragmentTagManager.makeSettingValEditTag( +//// currentAppDirPath, +// currentFannelName, +// ) +// val fannelInfoMapForNext = EditFragmentArgs.createFannelInfoMap( +//// currentAppDirPath, +// currentFannelName, +// onShortcutOff, +// FannelInfoSetting.current_fannel_state.defalutStr, +// ) +// ExecCommandEdit.execCommandEdit( +// activity, +// settingEditFragmentTag, +// EditFragmentArgs( +// fannelInfoMapForNext, +// EditFragmentArgs.Companion.EditTypeSettingsKey.SETTING_VAL_EDIT, +// ), +// activity.getString(R.string.edit_terminal_fragment) +// ) } ToolbarButtonBariantForEdit.CANCEL -> { activity.supportFragmentManager.popBackStackImmediate() diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/cmdIndex/ExecCommandEdit.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/cmdIndex/ExecCommandEdit.kt index 710ce289e..98e95a77a 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/cmdIndex/ExecCommandEdit.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/cmdIndex/ExecCommandEdit.kt @@ -1,5 +1,6 @@ package com.puutaro.commandclick.activity_lib.event.lib.cmdIndex +import com.blankj.utilcode.util.ToastUtils import com.puutaro.commandclick.activity.MainActivity import com.puutaro.commandclick.activity_lib.manager.WrapFragmentManager import com.puutaro.commandclick.util.state.EditFragmentArgs diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/cmdIndex/ExecUrlLoadFragmentProccess.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/cmdIndex/ExecUrlLoadFragmentProccess.kt index 9fd71bbfd..71b6eb1cc 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/cmdIndex/ExecUrlLoadFragmentProccess.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/cmdIndex/ExecUrlLoadFragmentProccess.kt @@ -11,11 +11,6 @@ import com.puutaro.commandclick.activity_lib.event.lib.common.ExecTerminalLongOr import com.puutaro.commandclick.common.variable.variant.ReadLines import com.puutaro.commandclick.common.variable.settings.FannelInfoSetting import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.command_index_fragment.variable.SearchSwichImage -import com.puutaro.commandclick.fragment_lib.edit_fragment.common.EditLayoutViewHideShow -import com.puutaro.commandclick.util.state.FragmentTagManager -import com.puutaro.commandclick.util.state.FannelInfoTool object ExecUrlLoadFragmentProccess { fun execUrlLoadCmdIndexFragment ( @@ -54,50 +49,50 @@ object ExecUrlLoadFragmentProccess { } - fun execUrlLoadCmdVriableEditFragment ( - activity: MainActivity, - ){ - val sharePref = FannelInfoTool.getSharePref(activity) -// val currentAppDirPath = FannelInfoTool.getStringFromFannelInfo( +// fun execUrlLoadCmdVriableEditFragment ( +// activity: MainActivity, +// ){ +// val sharePref = FannelInfoTool.getSharePref(activity) +//// val currentAppDirPath = FannelInfoTool.getStringFromFannelInfo( +//// sharePref, +//// FannelInfoSetting.current_app_dir +//// ) +// val currentFannelName = FannelInfoTool.getStringFromFannelInfo( // sharePref, -// FannelInfoSetting.current_app_dir +// FannelInfoSetting.current_fannel_name // ) - val currentFannelName = FannelInfoTool.getStringFromFannelInfo( - sharePref, - FannelInfoSetting.current_fannel_name - ) - val currentFannelState = FannelInfoTool.getStringFromFannelInfo( - sharePref, - FannelInfoSetting.current_fannel_state - ) - val cmdEditFragmentTag = FragmentTagManager.makeCmdValEditTag( -// currentAppDirPath, - currentFannelName, - currentFannelState - ) - val supportFragmentManager = activity.supportFragmentManager - val editFragment = try { - supportFragmentManager.findFragmentByTag( - cmdEditFragmentTag - ) as EditFragment - } catch(e: java.lang.Exception){ - Log.d(this.toString(), "not exist ${cmdEditFragmentTag}") - return - } - if(!editFragment.isVisible) return - EditLayoutViewHideShow.exec( - editFragment, - false - ) - val linearLayoutParam = - editFragment.binding.editFragment.layoutParams as LinearLayoutCompat.LayoutParams - if( - linearLayoutParam.weight != ReadLines.LONGTH - ) return - ExecTerminalLongOrShort.open( - cmdEditFragmentTag, - supportFragmentManager, - ) - - } +// val currentFannelState = FannelInfoTool.getStringFromFannelInfo( +// sharePref, +// FannelInfoSetting.current_fannel_state +// ) +// val cmdEditFragmentTag = FragmentTagManager.makeCmdValEditTag( +//// currentAppDirPath, +// currentFannelName, +// currentFannelState +// ) +// val supportFragmentManager = activity.supportFragmentManager +// val editFragment = try { +// supportFragmentManager.findFragmentByTag( +// cmdEditFragmentTag +// ) as EditFragment +// } catch(e: java.lang.Exception){ +// Log.d(this.toString(), "not exist ${cmdEditFragmentTag}") +// return +// } +// if(!editFragment.isVisible) return +// EditLayoutViewHideShow.exec( +// editFragment, +// false +// ) +// val linearLayoutParam = +// editFragment.binding.editFragment.layoutParams as LinearLayoutCompat.LayoutParams +// if( +// linearLayoutParam.weight != ReadLines.LONGTH +// ) return +// ExecTerminalLongOrShort.open( +// cmdEditFragmentTag, +// supportFragmentManager, +// ) +// +// } } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/ExecFileChooser.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/ExecFileChooser.kt index b977b9f61..8bcc5ffeb 100644 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/ExecFileChooser.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/ExecFileChooser.kt @@ -9,7 +9,7 @@ import com.puutaro.commandclick.activity.MainActivity import com.puutaro.commandclick.common.variable.variant.RequestCode import com.puutaro.commandclick.proccess.edit.lib.FilePickerTool import com.puutaro.commandclick.proccess.js_macro_libs.edit_setting_extra.EditSettingExtraArgsTool -import com.puutaro.commandclick.proccess.js_macro_libs.edit_setting_extra.FilterPathTool +import com.puutaro.commandclick.proccess.js_macro_libs.edit_setting_extra.CcFilterTool object ExecFileChooser { @@ -129,7 +129,7 @@ object ExecFileChooser { ){ val absolutePath = file.getOrNull(0) ?.getAbsolutePath(activity)?.split("\n")?.filter{ - FilterPathTool.isFilterByFile( + CcFilterTool.isFilterByFile( it, String(), filterPrefixListCon, @@ -200,7 +200,7 @@ object ExecFileChooser { ){ val absolutePath = folder.getAbsolutePath(activity) .split("\n").firstOrNull { - FilterPathTool.isFilterByDir( + CcFilterTool.isFilterByDir( it, String(), filterPrefixListCon, diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/ExecOnLongPressPlayOrEditButton.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/ExecOnLongPressPlayOrEditButton.kt index 933984789..ee1258759 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/ExecOnLongPressPlayOrEditButton.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/ExecOnLongPressPlayOrEditButton.kt @@ -3,33 +3,32 @@ package com.puutaro.commandclick.activity_lib.event.lib.edit import com.puutaro.commandclick.activity.MainActivity import com.puutaro.commandclick.activity_lib.event.PageSearchToolbarHandler import com.puutaro.commandclick.common.variable.variant.PageSearchToolbarButtonVariant -import com.puutaro.commandclick.proccess.js_macro_libs.toolbar_libs.EditLongPressType object ExecOnLongPressPlayOrEditButton { - fun handle( - activity: MainActivity, - editLongPressType: EditLongPressType, - tag: String?, - searchText: String, - pageSearchToolbarButtonVariant: PageSearchToolbarButtonVariant? - ){ - when(editLongPressType){ - EditLongPressType.PAGE_SEARCH -> { - if( - pageSearchToolbarButtonVariant == null - ) return - PageSearchToolbarHandler.handle( - activity, - pageSearchToolbarButtonVariant, - tag, - searchText, - - ) - } - EditLongPressType.WEB_SEARCH -> { - - } - else -> {} - } - } +// fun handle( +// activity: MainActivity, +// editLongPressType: EditLongPressType, +// tag: String?, +// searchText: String, +// pageSearchToolbarButtonVariant: PageSearchToolbarButtonVariant? +// ){ +// when(editLongPressType){ +// EditLongPressType.PAGE_SEARCH -> { +// if( +// pageSearchToolbarButtonVariant == null +// ) return +// PageSearchToolbarHandler.handle( +// activity, +// pageSearchToolbarButtonVariant, +// tag, +// searchText, +// +// ) +// } +// EditLongPressType.WEB_SEARCH -> { +// +// } +// else -> {} +// } +// } } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/GetFileForEdit.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/GetFileForEdit.kt index 706b88316..95c3026d4 100644 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/GetFileForEdit.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/GetFileForEdit.kt @@ -1,17 +1,17 @@ package com.puutaro.commandclick.activity_lib.event.lib.edit -import android.content.Context +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.RecyclerView import com.anggrayudi.storage.SimpleStorageHelper import com.anggrayudi.storage.file.FileFullPath import com.anggrayudi.storage.file.getAbsolutePath import com.puutaro.commandclick.activity.MainActivity import com.puutaro.commandclick.common.variable.variant.RequestCode -import com.puutaro.commandclick.component.adapter.lib.list_index_adapter.ExecAddForListIndexAdapter +import com.puutaro.commandclick.component.adapter.lib.edit_list_adapter.ExecAddForEditListAdapter import com.puutaro.commandclick.fragment.EditFragment import com.puutaro.commandclick.proccess.edit.lib.FilePickerTool -import com.puutaro.commandclick.proccess.js_macro_libs.edit_setting_extra.FilterPathTool -import com.puutaro.commandclick.proccess.list_index_for_edit.ListIndexEditConfig -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.TypeSettingsForListIndex +import com.puutaro.commandclick.proccess.js_macro_libs.edit_setting_extra.CcFilterTool +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList import com.puutaro.commandclick.util.state.FannelInfoTool import com.puutaro.commandclick.util.state.TargetFragmentInstance import java.io.File @@ -23,6 +23,10 @@ class GetFileForEdit( private var prefixSuffixSeparator = "&" fun get( + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + editListRecyclerView: RecyclerView, parentDirPath: String, filterPrefixListCon: String, filterSuffixListCon: String, @@ -35,6 +39,10 @@ class GetFileForEdit( ){ when (onDirectoryPick) { true -> execGetDir( + fragment, + fannelInfoMap, + setReplaceVariableMap, + editListRecyclerView, parentDirPath, filterPrefixListCon, filterSuffixListCon, @@ -45,6 +53,10 @@ class GetFileForEdit( tag, ) else -> execGetFile( + fragment, + fannelInfoMap, + setReplaceVariableMap, + editListRecyclerView, parentDirPath, filterPrefixListCon, filterSuffixListCon, @@ -58,6 +70,10 @@ class GetFileForEdit( } private fun execGetDir( + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + editListRecyclerView: RecyclerView, parentDirPath: String, filterPrefixListCon: String, filterSuffixListCon: String, @@ -82,7 +98,7 @@ class GetFileForEdit( requestCode, folder -> val absolutePath = folder.getAbsolutePath(activity) .split("\n").filter { - FilterPathTool.isFilterByDir( + CcFilterTool.isFilterByDir( it, parentDirPath, filterPrefixListCon, @@ -98,6 +114,10 @@ class GetFileForEdit( absolutePath, ) registerFileHandler( + fragment, + fannelInfoMap, + setReplaceVariableMap, + editListRecyclerView, absolutePath, true, ) @@ -105,6 +125,10 @@ class GetFileForEdit( } private fun execGetFile( + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + editListRecyclerView: RecyclerView, parentDirPath: String, filterPrefixListCon: String, filterSuffixListCon: String, @@ -134,7 +158,7 @@ class GetFileForEdit( requestCode, file -> file.getOrNull(0) ?.getAbsolutePath(activity)?.split("\n")?.filter{ - FilterPathTool.isFilterByFile( + CcFilterTool.isFilterByFile( it, parentDirPath, filterPrefixListCon, @@ -150,6 +174,10 @@ class GetFileForEdit( it, ) registerFileHandler( + fragment, + fannelInfoMap, + setReplaceVariableMap, + editListRecyclerView, it, false, ) @@ -158,26 +186,35 @@ class GetFileForEdit( } } - private fun execGetForNormal( - editFragment: EditFragment, - sourceFilePath: String, - ){ - ExecAddForListIndexAdapter.execAddByCopyFileHere( - editFragment, - sourceFilePath, - ) - } +// private fun execGetForNormal( +// editFragment: EditFragment, +// sourceFilePath: String, +// ){ +// ExecAddForListIndexAdapter.execAddByCopyFileHere( +// editFragment, +// sourceFilePath, +// ) +// } private fun execGetForTsv( - editFragment: EditFragment, + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + editListRecyclerView: RecyclerView, sourceFilePath: String, ){ val sourceScriptFilePathObj = File(sourceFilePath) val sourceScriptName = sourceScriptFilePathObj.name - val insertLine = "${sourceScriptName}\t${sourceFilePath}" - ExecAddForListIndexAdapter.execAddForTsv( - editFragment, - insertLine + val insertLineMap = mapOf( + ListSettingsForEditList.MapListPathManager.Key.SRC_TITLE.key to sourceScriptName, + ListSettingsForEditList.MapListPathManager.Key.SRC_CON.key to sourceFilePath, + ) + ExecAddForEditListAdapter.execAddForEditList( + fragment.context, + fannelInfoMap, + setReplaceVariableMap, + editListRecyclerView, + insertLineMap ) } @@ -205,30 +242,41 @@ class GetFileForEdit( } private fun registerFileHandler( + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + editListRecyclerView: RecyclerView, sourceFileOrDirPath: String, onDirectoryPick: Boolean, ){ val editFragment = getEditFragment() ?: return - val type = ListIndexEditConfig.getListIndexType( - editFragment +// val type = ListIndexEditConfig.getListIndexType( +// editFragment +// ) + execGetForTsv( + fragment, + fannelInfoMap, + setReplaceVariableMap, + editListRecyclerView, + sourceFileOrDirPath, ) - when(type){ -// TypeSettingsForListIndex.ListIndexTypeKey.INSTALL_FANNEL -// -> {} - TypeSettingsForListIndex.ListIndexTypeKey.NORMAL - -> { - if(onDirectoryPick) return - execGetForNormal( - editFragment, - sourceFileOrDirPath, - ) - } - TypeSettingsForListIndex.ListIndexTypeKey.TSV_EDIT - -> execGetForTsv( - editFragment, - sourceFileOrDirPath, - ) - } +// when(type){ +//// TypeSettingsForListIndex.ListIndexTypeKey.INSTALL_FANNEL +//// -> {} +// TypeSettingsForListIndex.ListIndexTypeKey.NORMAL +// -> { +// if(onDirectoryPick) return +// execGetForNormal( +// editFragment, +// sourceFileOrDirPath, +// ) +// } +// TypeSettingsForListIndex.ListIndexTypeKey.TSV_EDIT +// -> execGetForTsv( +// editFragment, +// sourceFileOrDirPath, +// ) +// } } } diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/GetFileListForEdit.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/GetFileListForEdit.kt index 36400aa1f..8de435f88 100644 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/GetFileListForEdit.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/GetFileListForEdit.kt @@ -1,17 +1,14 @@ package com.puutaro.commandclick.activity_lib.event.lib.edit -import android.content.Context import com.anggrayudi.storage.SimpleStorageHelper import com.anggrayudi.storage.file.FileFullPath import com.anggrayudi.storage.file.getAbsolutePath import com.puutaro.commandclick.activity.MainActivity import com.puutaro.commandclick.common.variable.variant.RequestCode -import com.puutaro.commandclick.component.adapter.lib.list_index_adapter.ExecAddForListIndexAdapter +import com.puutaro.commandclick.component.adapter.lib.edit_list_adapter.ExecAddForEditListAdapter import com.puutaro.commandclick.fragment.EditFragment import com.puutaro.commandclick.proccess.edit.lib.FilePickerTool -import com.puutaro.commandclick.proccess.js_macro_libs.edit_setting_extra.FilterPathTool -import com.puutaro.commandclick.proccess.list_index_for_edit.ListIndexEditConfig -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.TypeSettingsForListIndex +import com.puutaro.commandclick.proccess.js_macro_libs.edit_setting_extra.CcFilterTool import com.puutaro.commandclick.util.file.FileSystems import com.puutaro.commandclick.util.state.FannelInfoTool import com.puutaro.commandclick.util.state.TargetFragmentInstance @@ -94,7 +91,7 @@ class GetFileListForEdit ( ): List { val dirList = FileSystems.showDirList(srcDirPath) return dirList.filter { - FilterPathTool.isFilterByDir( + CcFilterTool.isFilterByDir( it, srcDirPath, filterPrefixListCon, @@ -113,7 +110,7 @@ class GetFileListForEdit ( ): List { val fileList = FileSystems.sortedFiles(srcDirPath) return fileList.filter { - FilterPathTool.isFilterByFile( + CcFilterTool.isFilterByFile( it, srcDirPath, filterPrefixListCon, @@ -132,7 +129,7 @@ class GetFileListForEdit ( val insertFileObj = File(it) "${insertFileObj.name}\t${insertFileObj.absolutePath}" } - ExecAddForListIndexAdapter.execAddListForTsv( + ExecAddForEditListAdapter.execAddListForTsv( editFragment, updateInsertLineList ) @@ -169,9 +166,9 @@ class GetFileListForEdit ( ){ val editFragment = getEditFragment() ?: return - val type = ListIndexEditConfig.getListIndexType( - editFragment - ) +// val type = ListIndexEditConfig.getListIndexType( +// editFragment +// ) // FileSystems.writeFile( // File(UsePath.cmdclickDefaultAppDirPath, "getfile_registerFileHandler.txt").absolutePath, // listOf( @@ -181,28 +178,32 @@ class GetFileListForEdit ( // "type: ${type}", // ).joinToString("\n") // ) - when(type){ -// TypeSettingsForListIndex.ListIndexTypeKey.INSTALL_FANNEL -// -> {} - TypeSettingsForListIndex.ListIndexTypeKey.NORMAL - -> { - if(onDirectoryPick) { - ExecAddForListIndexAdapter.execAddByCopyDirListHere( - editFragment, - srcFileOrDirList - ) - return - } - ExecAddForListIndexAdapter.execAddByCopyFileListHere( - editFragment, - srcFileOrDirList - ) - } - TypeSettingsForListIndex.ListIndexTypeKey.TSV_EDIT - -> execGetFileOrDirListForTsv( - editFragment, - srcFileOrDirList, - ) - } + execGetFileOrDirListForTsv( + editFragment, + srcFileOrDirList, + ) +// when(type){ +//// TypeSettingsForListIndex.ListIndexTypeKey.INSTALL_FANNEL +//// -> {} +// TypeSettingsForListIndex.ListIndexTypeKey.NORMAL +// -> { +// if(onDirectoryPick) { +// ExecAddForListIndexAdapter.execAddByCopyDirListHere( +// editFragment, +// srcFileOrDirList +// ) +// return +// } +// ExecAddForListIndexAdapter.execAddByCopyFileListHere( +// editFragment, +// srcFileOrDirList +// ) +// } +// TypeSettingsForListIndex.ListIndexTypeKey.TSV_EDIT +// -> execGetFileOrDirListForTsv( +// editFragment, +// srcFileOrDirList, +// ) +// } } } diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/MultiSelectDialogForEdit.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/MultiSelectDialogForEdit.kt index 32897ec55..045ebc986 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/MultiSelectDialogForEdit.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/edit/MultiSelectDialogForEdit.kt @@ -70,13 +70,13 @@ object MultiSelectDialogForEdit { } else editFragmentSource if(editFragment == null) return val editBinding = editFragment.binding - val editLinearLayout = editBinding.editLinearLayout - val editTextInEditFragment = editLinearLayout.findViewById(editTextId) +// val editLinearLayout = editBinding.editLinearLayout +// val editTextInEditFragment = editLinearLayout.findViewById(editTextId) val selectString = selectedIds.map { updatedMultiModelArray[it].name }.joinToString(",") - editTextInEditFragment.setText(selectString) +// editTextInEditFragment.setText(selectString) } override fun onCancel() {} diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/EditTextAndMapListForTerm.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/EditTextAndMapListForTerm.kt new file mode 100644 index 000000000..7698b43d0 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/EditTextAndMapListForTerm.kt @@ -0,0 +1,81 @@ +package com.puutaro.commandclick.activity_lib.event.lib.terminal + +import android.content.Context +import androidx.recyclerview.widget.RecyclerView +import com.blankj.utilcode.util.ToastUtils +import com.puutaro.commandclick.activity.MainActivity +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.fragment_lib.terminal_fragment.proccess.EditListRecyclerViewGetter +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList +import com.puutaro.commandclick.util.file.MapListFileRenamer +import com.puutaro.commandclick.util.file.ReadText +import com.puutaro.commandclick.util.map.CmdClickMap +import com.puutaro.commandclick.util.map.FilePrefixGetter +import com.puutaro.commandclick.util.state.TargetFragmentInstance + +object EditTextAndMapListForTerm { + + fun update( + activity: MainActivity, + editListIndex: Int, + srcFragmentStr: String, + ) { + if( + editListIndex < 0 + ) return + val terminalFragment = TargetFragmentInstance.getCurrentTerminalFragment( + activity + ) ?: return + val editListRecyclerView = EditListRecyclerViewGetter.get( + terminalFragment, + srcFragmentStr + ) ?: return + ExecRenameFile.rename( + activity, + editListRecyclerView, + editListIndex, + ) + return + } + + + private object ExecRenameFile { + fun rename( + context: Context?, + editListRecyclerView: RecyclerView, + listIndexPosition: Int, + ) { + val editConstraintListAdapter = + editListRecyclerView.adapter as EditConstraintListAdapter + val mapListSeparator = ListSettingsForEditList.MapListPathManager.mapListSeparator + val selectedLineMap = + editConstraintListAdapter.lineMapList.getOrNull( + listIndexPosition + ) ?: return + val mapListPath = FilePrefixGetter.get( + editConstraintListAdapter.fannelInfoMap, + editConstraintListAdapter.setReplaceVariableMap, + editConstraintListAdapter.indexListMap, + ListSettingsForEditList.ListSettingKey.MAP_LIST_PATH.key, + ) ?: String() + val isExist = ReadText( + mapListPath + ).textToList().map { + CmdClickMap.createMap( + it, + mapListSeparator + ).toMap() + }.contains(selectedLineMap) + if(!isExist){ + ToastUtils.showShort("No exist") + return + } + MapListFileRenamer.rename( + context, + editListRecyclerView, + mapListPath, + selectedLineMap + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/EditTextUpdaterForTerminalFragment.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/EditTextUpdaterForTerminalFragment.kt deleted file mode 100755 index ed2ed79b3..000000000 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/EditTextUpdaterForTerminalFragment.kt +++ /dev/null @@ -1,53 +0,0 @@ -package com.puutaro.commandclick.activity_lib.event.lib.terminal - -import android.content.Context -import android.util.Log -import com.puutaro.commandclick.activity.MainActivity -import com.puutaro.commandclick.common.variable.settings.FannelInfoSetting -import com.puutaro.commandclick.util.edit_tool.CcEditComponent -import com.puutaro.commandclick.util.state.FannelInfoTool -import com.puutaro.commandclick.util.state.TargetFragmentInstance -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch - -object EditTextUpdaterForTerminalFragment { - fun update( - activity: MainActivity, - editTextId: Int?, - variableValue: String - ) { - if(editTextId == null) return - val sharePref = FannelInfoTool.getSharePref(activity) -// val currentAppDirPath = FannelInfoTool.getStringFromFannelInfo( -// sharePref, -// FannelInfoSetting.current_app_dir -// ) - val currentFannelName = FannelInfoTool.getStringFromFannelInfo( - sharePref, - FannelInfoSetting.current_fannel_name - ) - val fannelState = FannelInfoTool.getStringFromFannelInfo( - sharePref, - FannelInfoSetting.current_fannel_state - ) - val editExecuteFragment = TargetFragmentInstance.getCurrentEditFragmentFromActivity( - activity, -// currentAppDirPath, - currentFannelName, - fannelState - ) ?: return - try { - CoroutineScope(Dispatchers.Main).launch { - val editTextInEditFragment = - CcEditComponent.findEditTextView( - editTextId, - CcEditComponent.makeEditLinearLayoutList(editExecuteFragment) - ) ?: return@launch - editTextInEditFragment.setText(variableValue) - } - } catch(e: Exception){ - Log.e("edit", e.toString()) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/EditableSpinnerUpdaterForTerminalFragment.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/EditableSpinnerUpdaterForTerminalFragment.kt index da3910b1a..a038b2cf8 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/EditableSpinnerUpdaterForTerminalFragment.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/EditableSpinnerUpdaterForTerminalFragment.kt @@ -41,7 +41,8 @@ object EditableSpinnerUpdaterForTerminalFragment { fannelState ) val binding = editExecuteFragment?.binding ?: return - val editLinearLayout = binding.editLinearLayout + val editLinearLayout = binding.editFragment +// binding.editLinearLayout try { val spinnerInEditFragment = editLinearLayout.findViewById(spinnerId) val adapter = spinnerInEditFragment.adapter as ArrayAdapter diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/ExecPageSearchResult.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/ExecPageSearchResult.kt deleted file mode 100755 index 778d109d7..000000000 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/ExecPageSearchResult.kt +++ /dev/null @@ -1,123 +0,0 @@ -package com.puutaro.commandclick.activity_lib.event.lib.terminal - -import android.content.Context -import com.puutaro.commandclick.R -import com.puutaro.commandclick.activity.MainActivity -import com.puutaro.commandclick.common.variable.settings.FannelInfoSetting -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.util.state.FragmentTagManager -import com.puutaro.commandclick.util.state.FannelInfoTool - -object ExecPageSearchResult { - fun reflect( - activity: MainActivity, - activeMatchOrdinal: Int, - numberOfMatches: Int - ) { - val cmdIndexFragment = try { - activity.supportFragmentManager.findFragmentByTag( - activity.getString(R.string.command_index_fragment) - ) as CommandIndexFragment - } catch (e: Exception) { - null - } - val sharePref = FannelInfoTool.getSharePref(activity) -// val currentAppDirPath = FannelInfoTool.getStringFromFannelInfo( -// sharePref, -// FannelInfoSetting.current_app_dir -// ) - val currentFannelName = FannelInfoTool.getStringFromFannelInfo( - sharePref, - FannelInfoSetting.current_fannel_name - ) - val currentFannelState = FannelInfoTool.getStringFromFannelInfo( - sharePref, - FannelInfoSetting.current_fannel_state - ) - val cmdEditFragmentTag = FragmentTagManager.makeCmdValEditTag( -// currentAppDirPath, - currentFannelName, - currentFannelState - ) - val cmdEditFragment = try { - activity.supportFragmentManager.findFragmentByTag( - cmdEditFragmentTag - ) as EditFragment - } catch (e: Exception) { - null - } - val isVisibleCommandIndexFragment = cmdIndexFragment?.isVisible == true - val isVisibleCmdEditFragment = cmdEditFragment?.isVisible == true - if( - isVisibleCommandIndexFragment - && isVisibleCmdEditFragment - ) return - if( - isVisibleCommandIndexFragment - && cmdIndexFragment != null - ){ - execReflectForCmdIndex( - activity, - activeMatchOrdinal, - numberOfMatches, - cmdIndexFragment, - ) - return - } - if( - cmdEditFragment == null - ) return - execReflectForCmdEdit( - activity, - activeMatchOrdinal, - numberOfMatches, - cmdEditFragment, - ) - - } -} - -private fun execReflectForCmdIndex( - activity: MainActivity, - activeMatchOrdinal: Int, - numberOfMatches: Int, - cmdIndexFragment: CommandIndexFragment, -){ - val binding = cmdIndexFragment.binding - val pageSearch = binding.pageSearch - val cmdindexSearchTotal = pageSearch.cmdindexSearchTotal - val displayActivePerTotal = "${activeMatchOrdinal}/${numberOfMatches}" - cmdindexSearchTotal.setText(displayActivePerTotal) - if (numberOfMatches == 0) { - cmdindexSearchTotal.setTextColor( - activity.getColor(com.termux.shared.R.color.dark_red) - ) - } else { - cmdindexSearchTotal.setTextColor( - activity.getColor(R.color.fill_gray) - ) - } -} - -private fun execReflectForCmdEdit( - activity: MainActivity, - activeMatchOrdinal: Int, - numberOfMatches: Int, - cmdEditFragment: EditFragment, -){ - val binding = cmdEditFragment.binding - val pageSearch = binding.pageSearch - val cmdEditSearchTotal = pageSearch.cmdindexSearchTotal - val displayActivePerTotal = "${activeMatchOrdinal}/${numberOfMatches}" - cmdEditSearchTotal.setText(displayActivePerTotal) - if (numberOfMatches == 0) { - cmdEditSearchTotal.setTextColor( - activity.getColor(com.termux.shared.R.color.dark_red) - ) - } else { - cmdEditSearchTotal.setTextColor( - activity.getColor(R.color.fill_gray) - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/ExecSetToolbarButtonImage.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/ExecSetToolbarButtonImage.kt index 10d1824d5..de7a2ebbb 100644 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/ExecSetToolbarButtonImage.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/ExecSetToolbarButtonImage.kt @@ -6,10 +6,8 @@ import android.graphics.Color import android.graphics.drawable.AnimationDrawable import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable -import android.widget.FrameLayout import android.widget.ImageView import androidx.appcompat.widget.AppCompatImageView -import androidx.core.view.children import com.bumptech.glide.Glide import com.bumptech.glide.RequestBuilder import com.bumptech.glide.load.engine.DiskCacheStrategy @@ -20,7 +18,6 @@ import com.puutaro.commandclick.common.variable.res.CmdClickIcons import com.puutaro.commandclick.databinding.CommandIndexFragmentBinding import com.puutaro.commandclick.fragment.CommandIndexFragment import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.edit_fragment.common.ToolbarButtonBariantForEdit import com.puutaro.commandclick.fragment_lib.terminal_fragment.ButtonImageCreator import com.puutaro.commandclick.proccess.history.url_history.UrlHistoryPath import com.puutaro.commandclick.util.file.FileSystems @@ -50,10 +47,10 @@ object ExecSetToolbarButtonImage { ) setForTerminalFragment(activity) } - is EditFragment -> - setForEditFragment( - bottomFragment, - ) + is EditFragment -> {} +// setForEditFragment( +// bottomFragment, +// ) } } @@ -67,7 +64,7 @@ object ExecSetToolbarButtonImage { }?.let { icon -> setImageButton( - binding.cmdindexHistoryButtonImage, + binding.cmdindexFannelCenterButtonImage, icon ) } @@ -175,7 +172,7 @@ object ExecSetToolbarButtonImage { imageButton.setImageDrawable(animation) imageButton.scaleType = ImageView.ScaleType.FIT_XY animation.start() - imageButton.backgroundTintList = ColorStateList.valueOf(Color.parseColor("#ff8800")) + imageButton.backgroundTintList = ColorStateList.valueOf(Color.parseColor("#ff8800")) } private fun setIconForSelectionBarActiveGBar( @@ -243,7 +240,7 @@ object ExecSetToolbarButtonImage { if( colorRepeatTimes == 0 ) return gOutBitmap - val colorRect = BitmapTool.ImageRemaker.makeRect( + val colorRect = BitmapTool.ImageTransformer.makeRect( rectColor, gBitmap.width, gBitmap.height @@ -347,37 +344,37 @@ object ExecSetToolbarButtonImage { } } - fun setForEditFragment( - editFragment: EditFragment, - ){ - CoroutineScope(Dispatchers.IO).launch { - ToolbarButtonBariantForEdit.values().forEach { - val frameLayout = withContext(Dispatchers.Main) { - editFragment.binding.editToolbarLinearLayout.findViewWithTag( - it.str - ) - } ?: return@forEach - val imageView = withContext(Dispatchers.Main) { - frameLayout.children.forEach imageSet@{ - view -> - if ( - view !is AppCompatImageView - ) return@imageSet - return@withContext view - } - return@withContext null - } ?: return@forEach - val imageMacro = TagManager.getIconMacroFromTag(imageView.tag) - val icon = cmdClickIconList.firstOrNull { - it.str == imageMacro - } ?: return@forEach - setImageButton( - imageView, - icon - ) - } - } - } +// fun setForEditFragment( +// editFragment: EditFragment, +// ){ +// CoroutineScope(Dispatchers.IO).launch { +// ToolbarButtonBariantForEdit.entries.forEach { +// val frameLayout = withContext(Dispatchers.Main) { +// editFragment.binding.editToolBarLinearLayout.findViewWithTag( +// it.str +// ) +// } ?: return@forEach +// val imageView = withContext(Dispatchers.Main) { +// frameLayout.children.forEach imageSet@{ +// view -> +// if ( +// view !is AppCompatImageView +// ) return@imageSet +// return@withContext view +// } +// return@withContext null +// } ?: return@forEach +// val imageMacro = TagManager.getIconMacroFromTag(imageView.tag) +// val icon = cmdClickIconList.firstOrNull { +// it.str == imageMacro +// } ?: return@forEach +// setImageButton( +// imageView, +// icon +// ) +// } +// } +// } suspend fun setImageButton( imageView: AppCompatImageView?, @@ -421,17 +418,24 @@ object ExecSetToolbarButtonImage { FileSystems.checkSum(imagePath) } withContext(Dispatchers.Main) { - val beforeChecksum = TagManager.getChecksumFromTag(imageButton.tag) + val beforeChecksum = TagManager.getChecksumFromTag( + imageButton.autofillHints?.firstOrNull() + ) if( beforeChecksum == checksum ) return@withContext withContext(Dispatchers.Main) { imageButton.imageTintList = null } - imageButton.tag = TagManager.make( + val iconSignal = TagManager.make( iconMacro, checksum ) + imageButton.setAutofillHints(iconSignal) +// imageButton.tag = TagManager.make( +// iconMacro, +// checksum +// ) // imageButton.background = // AppCompatResources.getDrawable(context, R.color.terminal_color) val requestBuilder: RequestBuilder = @@ -443,6 +447,7 @@ object ExecSetToolbarButtonImage { .load(imagePath) .transition(DrawableTransitionOptions.withCrossFade()) .skipMemoryCache(true) + .dontAnimate() .diskCacheStrategy(DiskCacheStrategy.NONE) .thumbnail(requestBuilder) .into(imageButton) diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/FrameLayoutUpdaterForTerm.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/FrameLayoutUpdaterForTerm.kt new file mode 100644 index 000000000..a3c4a3b1a --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/FrameLayoutUpdaterForTerm.kt @@ -0,0 +1,129 @@ +package com.puutaro.commandclick.activity_lib.event.lib.terminal + +import android.widget.FrameLayout +import androidx.constraintlayout.widget.ConstraintLayout +import com.puutaro.commandclick.R +import com.puutaro.commandclick.activity.MainActivity +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.fragment.EditFragment +import com.puutaro.commandclick.fragment_lib.terminal_fragment.proccess.EditListRecyclerViewGetter +import com.puutaro.commandclick.proccess.edit_list.EditConstraintFrameMaker +import com.puutaro.commandclick.util.image_tools.ScreenSizeCalculator +import com.puutaro.commandclick.util.state.TargetFragmentInstance +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +object FrameLayoutUpdaterForTerm { + fun update( + activity: MainActivity, + indexOrParentTagName: String, + srcFragmentStr: String, + tagNameList: List, + frameKeyPairList: List>? + ) { + if( + indexOrParentTagName.isEmpty() + || tagNameList.isEmpty() + ) return + val editListIndex = try { + val editListSrc = indexOrParentTagName.toInt() + when(editListSrc < 0){ + true -> null + else -> editListSrc + } + } catch (e: Exception){ + null + } + val terminalFragment = TargetFragmentInstance.getCurrentTerminalFragment( + activity + ) ?: return + val editListRecyclerView = EditListRecyclerViewGetter.get( + terminalFragment, + srcFragmentStr + ) ?: return + val density = ScreenSizeCalculator.getDensity(activity) + if(editListIndex is Int) { + val holder = editListRecyclerView.findViewHolderForAdapterPosition( + editListIndex + ) as EditConstraintListAdapter.EditListViewHolder + val materialCardView = holder.materialCardView + val frameLayoutList = tagNameList.map { + tagName -> + materialCardView.findViewWithTag( + tagName + ) + } + frameLayoutList.forEach { + frameLayout -> + if(frameLayout == null) return@forEach +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "editListIndex.txt").absolutePath, +// listOf( +// "textView: ${textView?.text}", +// "updateText: ${updateText}", +// "holder.keyPairListConMap: ${holder.keyPairListConMap}", +// "", +// ).joinToString("\n") +// ) + CoroutineScope(Dispatchers.Main).launch { + EditConstraintFrameMaker.setButtonFrameLayoutByDynamic( + activity, + frameLayout, + frameKeyPairList, + density + ) + } + } + return + } + val srcFragmentEnum = EditListRecyclerViewGetter.RecyclerViewFragment.entries.firstOrNull { + it.frag == srcFragmentStr + } ?: return + val constraintLayout = when(srcFragmentEnum){ + EditListRecyclerViewGetter.RecyclerViewFragment.EDIT + -> { + val cmdEditFragmentTag = TargetFragmentInstance.getCmdEditFragmentTag( + activity + ) + val editFragment = TargetFragmentInstance.getCurrentBottomFragment( + activity, + cmdEditFragmentTag + ).let { + fragment -> + if( + fragment !is EditFragment + ) return@let null + fragment + } + editFragment?.binding?.editListFooterConstraintLayout + } + EditListRecyclerViewGetter.RecyclerViewFragment.WEB + -> { + terminalFragment.editListDialogForOrdinaryRevolver + ?.getActiveEditListOrdinaryDialog() + ?.findViewById( + R.id.edit_list_dialog_footer_constraint_layout + ) + } + } + val frameLayoutList = tagNameList.map { + tagName -> + constraintLayout?.findViewWithTag( + tagName + ) + } + frameLayoutList.forEach { + frameLayout -> + if(frameLayout == null) return@forEach + CoroutineScope(Dispatchers.Main).launch { + EditConstraintFrameMaker.setButtonFrameLayoutByDynamic( + activity, + frameLayout, + frameKeyPairList, + density + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/ImageViewAndFannelUpdaterForTerm.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/ImageViewAndFannelUpdaterForTerm.kt new file mode 100644 index 000000000..f84acc086 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/ImageViewAndFannelUpdaterForTerm.kt @@ -0,0 +1,143 @@ +package com.puutaro.commandclick.activity_lib.event.lib.terminal + +import android.widget.FrameLayout +import androidx.appcompat.widget.AppCompatImageView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.children +import com.puutaro.commandclick.R +import com.puutaro.commandclick.activity.MainActivity +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.fragment.EditFragment +import com.puutaro.commandclick.fragment_lib.terminal_fragment.proccess.EditListRecyclerViewGetter +import com.puutaro.commandclick.proccess.edit_list.EditConstraintFrameMaker +import com.puutaro.commandclick.util.image_tools.ScreenSizeCalculator +import com.puutaro.commandclick.util.state.TargetFragmentInstance +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +object ImageViewAndFannelUpdaterForTerm { + fun update( + activity: MainActivity, + indexOrParentTagName: String, + srcFragmentStr: String, + tagNameList: List, + imageMap: Map, + imagePropertyMap: Map + ) { + if( + indexOrParentTagName.isEmpty() + || tagNameList.isEmpty() + ) return + val editListIndex = try { + val editListSrc = indexOrParentTagName.toInt() + when(editListSrc < 0){ + true -> null + else -> editListSrc + } + } catch (e: Exception){ + null + } + val terminalFragment = TargetFragmentInstance.getCurrentTerminalFragment( + activity + ) ?: return + val editListRecyclerView = EditListRecyclerViewGetter.get( + terminalFragment, + srcFragmentStr + ) ?: return + val density = ScreenSizeCalculator.getDensity(activity) + if(editListIndex is Int) { + val holder = editListRecyclerView.findViewHolderForAdapterPosition( + editListIndex + ) as EditConstraintListAdapter.EditListViewHolder + val materialCardView = holder.materialCardView + val frameLayoutList = tagNameList.map { + tagName -> + materialCardView.findViewWithTag( + tagName + ) + } + frameLayoutList.forEach { + frameLayout -> + if(frameLayout == null) return@forEach + val imageView = frameLayout.children.firstOrNull { view -> + view is AppCompatImageView + } as? AppCompatImageView + ?: return@forEach +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "editListIndex.txt").absolutePath, +// listOf( +// "textView: ${textView?.text}", +// "updateText: ${updateText}", +// "holder.keyPairListConMap: ${holder.keyPairListConMap}", +// "", +// ).joinToString("\n") +// ) + CoroutineScope(Dispatchers.Main).launch { + EditConstraintFrameMaker.setImageViewForDynamic( + imageView, + imageMap, + imagePropertyMap, + density, + ) + } + } + return + } + + val editToolbarTag = activity.getString( + R.string.edit_toolbar_tag + ) + val srcFragmentEnum = EditListRecyclerViewGetter.RecyclerViewFragment.entries.firstOrNull { + it.frag == srcFragmentStr + } ?: return + val constraintLayout = when(srcFragmentEnum){ + EditListRecyclerViewGetter.RecyclerViewFragment.EDIT + -> { + val cmdEditFragmentTag = TargetFragmentInstance.getCmdEditFragmentTag( + activity + ) + val editFragment = TargetFragmentInstance.getCurrentBottomFragment( + activity, + cmdEditFragmentTag + ).let { + fragment -> + if( + fragment !is EditFragment + ) return@let null + fragment + } + editFragment?.binding?.editListFooterConstraintLayout + } + EditListRecyclerViewGetter.RecyclerViewFragment.WEB + -> { + terminalFragment.editListDialogForOrdinaryRevolver + ?.getActiveEditListOrdinaryDialog() + ?.findViewById( + R.id.edit_list_dialog_footer_constraint_layout + ) + } + } + val frameLayoutList = tagNameList.map { + tagName -> + constraintLayout?.findViewWithTag( + tagName + ) + } + frameLayoutList.forEach { + frameLayout -> + val imageView = frameLayout?.children?.firstOrNull { view -> + view is AppCompatImageView + } as? AppCompatImageView + ?: return@forEach + CoroutineScope(Dispatchers.Main).launch { + EditConstraintFrameMaker.setImageViewForDynamic( + imageView, + imageMap, + imagePropertyMap, + density, + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/SpinnerUpdaterForTerminalFragment.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/SpinnerUpdaterForTerminalFragment.kt index ee0828b72..e1ea70a41 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/SpinnerUpdaterForTerminalFragment.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/SpinnerUpdaterForTerminalFragment.kt @@ -7,7 +7,7 @@ import android.widget.Spinner import com.puutaro.commandclick.activity.MainActivity import com.puutaro.commandclick.common.variable.settings.FannelInfoSetting import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.util.edit_tool.CcEditComponent +import com.puutaro.commandclick.fragment_lib.edit_fragment.common.EditComponent import com.puutaro.commandclick.util.state.FragmentTagManager import com.puutaro.commandclick.util.state.FannelInfoTool import com.puutaro.commandclick.util.state.TargetFragmentInstance @@ -16,70 +16,70 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch object SpinnerUpdaterForTerminalFragment { - fun update( - activity: MainActivity, - spinnerId: Int?, - variableValue: String - ) { - if(spinnerId == null) return - val sharePref = FannelInfoTool.getSharePref(activity) -// val currentAppDirPath = FannelInfoTool.getStringFromFannelInfo( +// fun update( +// activity: MainActivity, +// spinnerId: Int?, +// variableValue: String +// ) { +// if(spinnerId == null) return +// val sharePref = FannelInfoTool.getSharePref(activity) +//// val currentAppDirPath = FannelInfoTool.getStringFromFannelInfo( +//// sharePref, +//// FannelInfoSetting.current_app_dir +//// ) +// val currentFannelName = FannelInfoTool.getStringFromFannelInfo( // sharePref, -// FannelInfoSetting.current_app_dir +// FannelInfoSetting.current_fannel_name // ) - val currentFannelName = FannelInfoTool.getStringFromFannelInfo( - sharePref, - FannelInfoSetting.current_fannel_name - ) - val currentFannelState = FannelInfoTool.getStringFromFannelInfo( - sharePref, - FannelInfoSetting.current_fannel_state - ) - val cmdEditFragmentTag = FragmentTagManager.makeCmdValEditTag( -// currentAppDirPath, - currentFannelName, - currentFannelState - ) - val cmdEditFragment = TargetFragmentInstance.getFromActivity( - activity, - cmdEditFragmentTag - ) ?: return - try { - val spinnerInEditFragment = CcEditComponent.findSpinnerView( - spinnerId, - CcEditComponent.makeEditLinearLayoutList(cmdEditFragment) - ) ?: return - val adapter = spinnerInEditFragment.adapter as ArrayAdapter - - val adapterSize = adapter.count - val adapterList = - (0 until adapterSize).map { - adapter.getItem(it).toString() - } - - val selectUpdatedSpinnerList = listOf( - variableValue, - ) + adapterList.filter { it != variableValue } - CoroutineScope(Dispatchers.Main).launch { - execSpinnerUpdate( - spinnerInEditFragment, - selectUpdatedSpinnerList, - adapter - ) - } - } catch(e: Exception){ - Log.e("edit", e.toString()) - } - } - - private fun execSpinnerUpdate( - spinnerInEditFragment: Spinner, - selectUpdatedSpinnerList: List, - adapter: ArrayAdapter - ){ - adapter.clear() - adapter.addAll(selectUpdatedSpinnerList) - adapter.notifyDataSetChanged() - spinnerInEditFragment.setSelection(0) - } +// val currentFannelState = FannelInfoTool.getStringFromFannelInfo( +// sharePref, +// FannelInfoSetting.current_fannel_state +// ) +// val cmdEditFragmentTag = FragmentTagManager.makeCmdValEditTag( +//// currentAppDirPath, +// currentFannelName, +// currentFannelState +// ) +// val cmdEditFragment = TargetFragmentInstance.getFromActivity( +// activity, +// cmdEditFragmentTag +// ) ?: return +// try { +// val spinnerInEditFragment = EditComponent.findSpinnerView( +// spinnerId, +// EditComponent.makeEditLinearLayoutList(cmdEditFragment) +// ) ?: return +// val adapter = spinnerInEditFragment.adapter as ArrayAdapter +// +// val adapterSize = adapter.count +// val adapterList = +// (0 until adapterSize).map { +// adapter.getItem(it).toString() +// } +// +// val selectUpdatedSpinnerList = listOf( +// variableValue, +// ) + adapterList.filter { it != variableValue } +// CoroutineScope(Dispatchers.Main).launch { +// execSpinnerUpdate( +// spinnerInEditFragment, +// selectUpdatedSpinnerList, +// adapter +// ) +// } +// } catch(e: Exception){ +// Log.e("edit", e.toString()) +// } +// } +// +// private fun execSpinnerUpdate( +// spinnerInEditFragment: Spinner, +// selectUpdatedSpinnerList: List, +// adapter: ArrayAdapter +// ){ +// adapter.clear() +// adapter.addAll(selectUpdatedSpinnerList) +// adapter.notifyDataSetChanged() +// spinnerInEditFragment.setSelection(0) +// } } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/TextViewAndFannelUpdaterForTerm.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/TextViewAndFannelUpdaterForTerm.kt new file mode 100755 index 000000000..1f7b966d3 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/event/lib/terminal/TextViewAndFannelUpdaterForTerm.kt @@ -0,0 +1,310 @@ +package com.puutaro.commandclick.activity_lib.event.lib.terminal + +import android.widget.FrameLayout +import androidx.appcompat.widget.AppCompatTextView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.children +import com.puutaro.commandclick.R +import com.puutaro.commandclick.activity.MainActivity +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.custom_view.OutlineTextView +import com.puutaro.commandclick.fragment.EditFragment +import com.puutaro.commandclick.fragment_lib.edit_fragment.common.EditComponent +import com.puutaro.commandclick.fragment_lib.terminal_fragment.proccess.EditListRecyclerViewGetter +import com.puutaro.commandclick.proccess.edit_list.EditConstraintFrameMaker +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList +import com.puutaro.commandclick.util.map.CmdClickMap +import com.puutaro.commandclick.util.state.TargetFragmentInstance +import com.puutaro.commandclick.util.str.PairListTool +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking + +object TextViewAndFannelUpdaterForTerm { + fun update( + activity: MainActivity, + indexOrParentTagName: String, + srcFragmentStr: String, + tagNameList: List, + updateText: String, + overrideTextMap: Map?, + textPropertyMap: Map< String, String>?, + isSave: Boolean, + ) { + if( + indexOrParentTagName.isEmpty() + || tagNameList.isEmpty() + ) return + val editListIndex = try { + val editListSrc = indexOrParentTagName.toInt() + when(editListSrc < 0){ + true -> null + else -> editListSrc + } + } catch (e: Exception){ + null + } + val terminalFragment = TargetFragmentInstance.getCurrentTerminalFragment( + activity + ) ?: return + val editListRecyclerView = EditListRecyclerViewGetter.get( + terminalFragment, + srcFragmentStr + ) ?: return + val editConstraintListAdapter = + editListRecyclerView.adapter as EditConstraintListAdapter + if(editListIndex is Int) { + val holder = editListRecyclerView.findViewHolderForAdapterPosition( + editListIndex + ) as EditConstraintListAdapter.EditListViewHolder + val materialCardView = holder.materialCardView + val tagNameToFrameLayoutList = tagNameList.map { + tagName -> + tagName to materialCardView.findViewWithTag( + tagName + ) + } + tagNameToFrameLayoutList.forEach { + tagNameToFrameLayout -> + val tagName = tagNameToFrameLayout.first + val frameLayout = tagNameToFrameLayout.second + ?: return@forEach + val textView = frameLayout.children.firstOrNull { view -> + view is OutlineTextView + } as? OutlineTextView + + val lineMap = editConstraintListAdapter.lineMapList.get(editListIndex) + holder.srcTitle = lineMap.get( + ListSettingsForEditList.MapListPathManager.Key.SRC_TITLE.key + ) ?: String() + holder.srcCon = lineMap.get( + ListSettingsForEditList.MapListPathManager.Key.SRC_CON.key + ) ?: String() + holder.srcImage = lineMap.get( + ListSettingsForEditList.MapListPathManager.Key.SRC_IMAGE.key + ) ?: String() +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "editListIndex.txt").absolutePath, +// listOf( +// "textView: ${textView?.text}", +// "updateText: ${updateText}", +// "holder.keyPairListConMap: ${holder.keyPairListConMap}", +// "", +// ).joinToString("\n") +// ) + val keyPairListConMap = runBlocking { + holder.getKeyPairListConMap() + } + UpdateAndSaveMainFannel.updateAndSave( + editConstraintListAdapter, + keyPairListConMap, + tagName, + holder.srcTitle, + holder.srcCon, + holder.srcImage, + editListIndex, + updateText, + overrideTextMap, + textPropertyMap, + textView, + isSave, + ) + } + return + } + +// val editToolbarTag = activity.getString( +// R.string.edit_toolbar_tag +// ) + val srcFragmentEnum = EditListRecyclerViewGetter.RecyclerViewFragment.entries.firstOrNull { + it.frag == srcFragmentStr + } ?: return + val constraintLayout = when(srcFragmentEnum){ + EditListRecyclerViewGetter.RecyclerViewFragment.EDIT + -> { + val cmdEditFragmentTag = TargetFragmentInstance.getCmdEditFragmentTag( + activity + ) + val editFragment = TargetFragmentInstance.getCurrentBottomFragment( + activity, + cmdEditFragmentTag + ).let { + fragment -> + if( + fragment !is EditFragment + ) return@let null + fragment + } + editFragment?.binding?.editListFooterConstraintLayout?.findViewWithTag( + indexOrParentTagName + ) + } + EditListRecyclerViewGetter.RecyclerViewFragment.WEB + -> { + terminalFragment.editListDialogForOrdinaryRevolver + ?.getActiveEditListOrdinaryDialog()?.findViewById( + R.id.edit_list_dialog_footer_constraint_layout + ) + } + } + val noSignIndex = -1 + val frameLayoutList = tagNameList.map { + tagName -> + constraintLayout?.findViewWithTag( + tagName + ) + } + frameLayoutList.forEach { + frameLayout -> + if(frameLayout == null) return@forEach + val textView = frameLayout.children.firstOrNull { view -> + view is OutlineTextView + } as? OutlineTextView + UpdateAndSaveMainFannel.updateAndSave( + editConstraintListAdapter, + editConstraintListAdapter.footerKeyPairListConMap, + String(), + String(), + String(), + String(), + noSignIndex, + updateText, + overrideTextMap, + textPropertyMap, + textView, + isSave, + ) + } + } + + object UpdateAndSaveMainFannel { + fun updateAndSave( + editConstraintListAdapter: EditConstraintListAdapter, + keyPairListConMap: Map, + tagName: String, + srcTitle: String, + srcCon: String, + srcImage: String, + editListIndex: Int, + updateText: String, + overrideTextMap: Map?, + textPropertyMap: Map< String, String>?, + textView: OutlineTextView?, + isSave: Boolean, + ) { + val linearFrameKeyPairsListConSrc = keyPairListConMap.get( + tagName + ) + val linearFrameKeyPairsListCon = EditComponent.Template.ReplaceHolder.replaceHolder( + linearFrameKeyPairsListConSrc, + srcTitle, + srcCon, + srcImage, + editListIndex, + ) + val linearFrameKeyPairsList = EditConstraintListAdapter.makeLinearFrameKeyPairsList( + linearFrameKeyPairsListCon, + ) + val textMap = PairListTool.getValue( + linearFrameKeyPairsList, + EditComponent.Template.EditComponentKey.TEXT.key + ).let { + CmdClickMap.createMap( + it, + EditComponent.Template.keySeparator, + ).toMap() + } + val text = EditComponent.Template.TextManager.makeText( + editConstraintListAdapter.fannelInfoMap, + editConstraintListAdapter.setReplaceVariableMap, + editConstraintListAdapter.busyboxExecutor, + textMap, + updateText + ) +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "editListIndex_updateAndSave.txt").absolutePath, +// listOf( +// "textView: ${textView?.text}", +// "updateText: ${updateText}", +// "text: ${text}", +// "tagName: ${tagName}", +// "keyPairListConMap: ${keyPairListConMap}", +// "linearFrameKeyPairsListCon: ${linearFrameKeyPairsListCon}", +// "linearFrameKeyPairsList: ${linearFrameKeyPairsList}", +// "textMap: ${textMap}", +// "textPropertyMap: ${textPropertyMap}", +// "overrideTextMap: ${overrideTextMap}" +// ).joinToString("\n\n") +// ) + textView?.let { + CoroutineScope(Dispatchers.Main).launch { + EditConstraintFrameMaker.setCaptionByDynamic( + it, + overrideTextMap, + textPropertyMap, + text, + ) + } + } +// textView?.text = text + execUpdateAndSave( + textView, + editConstraintListAdapter, + tagName, + updateText, + isSave, + ) + } + + private fun execUpdateAndSave( + textView: AppCompatTextView?, + editConstraintListAdapter: EditConstraintListAdapter, + tagName: String, + updateText: String, + isSave: Boolean, + ) { + val isNotUpdate = + editConstraintListAdapter.totalSettingValMap.get(tagName).isNullOrEmpty() +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "lUpdatetextView.txt").absolutePath, +// listOf( +// "totalSettingValMap: ${editComponentListAdapter.totalSettingValMap}", +// "tagName: ${tagName}", +// "isNotUpdate: ${isNotUpdate}", +// ).joinToString("\n") +// ) + if ( + isNotUpdate + ) return + editConstraintListAdapter.updateMainFannelList( + tagName, + updateText + ) + editConstraintListAdapter.totalSettingValMap.get(tagName).let { + textView?.setAutofillHints(updateText) + } +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "lUpdatetextView_saved00.txt").absolutePath, +// listOf( +// "totalSettingValMap: ${editComponentListAdapter.totalSettingValMap}", +// "tagName: ${tagName}", +// "isUpdate: ${isNotUpdate}", +// "fannelContentsList: ${editComponentListAdapter.fannelContentsList}", +// "isSave: ${isSave}", +// ).joinToString("\n") +// ) + if (!isSave) return + editConstraintListAdapter.saveFannelCon() +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "lUpdatetextView_saved.txt").absolutePath, +// listOf( +// "totalSettingValMap: ${editComponentListAdapter.totalSettingValMap}", +// "tagName: ${tagName}", +// "isUpdate: ${isNotUpdate}", +// "fannelContentsList: ${editComponentListAdapter.fannelContentsList}" +// ).joinToString("\n") +// ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/RunCommandSetter.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/RunCommandSetter.kt deleted file mode 100755 index edebe2b00..000000000 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/RunCommandSetter.kt +++ /dev/null @@ -1,177 +0,0 @@ -package com.puutaro.commandclick.activity_lib.permission - -import android.app.Dialog -import android.content.ClipData -import android.content.ClipboardManager -import android.content.Context -import android.content.pm.PackageManager -import android.view.Gravity -import android.view.ViewGroup -import android.widget.Toast -import androidx.activity.result.ActivityResultLauncher -import androidx.activity.result.contract.ActivityResultContracts -import androidx.appcompat.widget.AppCompatImageButton -import androidx.appcompat.widget.AppCompatTextView -import androidx.core.content.ContextCompat -import com.puutaro.commandclick.R -import com.puutaro.commandclick.activity.MainActivity -import com.puutaro.commandclick.util.dialog.DialogObject -import com.termux.shared.termux.TermuxConstants - -object RunCommandSetter { - - - private var termuxSetupDialogObj: Dialog? = null - -// fun getPermissionAndSet( -// activity: MainActivity -// ){ -// val runCommandPermissionName = "com.termux.permission.RUN_COMMAND" -// -// val checkingRunCommandPermission = -// ContextCompat.checkSelfPermission( -// activity, -// runCommandPermissionName -// ) -// if( -// checkingRunCommandPermission == -// PackageManager.PERMISSION_GRANTED -// ) { -// termuxSetupAndStorageAccessPermissionProcessLauncher( -// activity -// ) -// return -// } -// try { -// activity.getRunCommandPermissionAndStartFragmentLauncher.launch( -// runCommandPermissionName -// ) -// } catch (e: Exception){ -// launchDialogTitleMessageOnly( -// activity, -// "termux not installed" -// ) -// } -// } - - private fun launchDialogTitleMessageOnly( - activity: MainActivity, - title: String - ){ - DialogObject.simpleTextShow( - activity, - title, - String() - ) - } - - fun set( - activity: MainActivity - ): ActivityResultLauncher { - return activity.registerForActivityResult( - ActivityResultContracts.RequestPermission() - ) { isGranted: Boolean -> - if (isGranted) { - termuxSetupAndStorageAccessPermissionProcessLauncher(activity) - return@registerForActivityResult - } - startFragmentWithAlert(activity) - } - } - - - private fun termuxSetupAndStorageAccessPermissionProcessLauncher( - activity: MainActivity - ){ - val termuxSetUpCommand = "termux-change-repo \\\n" + - "&& pkg update -y && pkg upgrade -y \\\n" + - "&& yes | termux-setup-storage \\\n" + - "&& pkg install -y termux-api \\\n" + - "&& sed -r 's/^\\#\\s(allow-external-apps.*)/\\1/' \\\n" + - "-i \"\$HOME/.termux/termux.properties\" \n" - val refContents = - "\n\n( clipboard contents:\n\n${termuxSetUpCommand} )" - .replace( - "\n", - "\t\n" - ) - val clipboard = - activity.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE) - as ClipboardManager - val clipData = ClipData.newPlainText( - "termux_setup", - termuxSetUpCommand - ) - clipboard.setPrimaryClip(clipData) - - termuxSetupDialogObj = Dialog( - activity - ) - termuxSetupDialogObj?.setContentView( - R.layout.text_simple_dialog_layout - ) - val titleTextView = - termuxSetupDialogObj?.findViewById( - R.id.text_simple_dialog_title - ) - titleTextView?.text = "To setup termux" - val descriptionTextView = - termuxSetupDialogObj?.findViewById( - R.id.text_simple_dialog_text_view - ) - descriptionTextView?.text = - "\n1. Long press on termux \n2. Click paste popup on termux\n" + - "3. Continue pressing Enter on termux" + "\n\n" + refContents - - val cancelImageButton = - termuxSetupDialogObj?.findViewById( - R.id.text_simple_dialog_cancel - ) - cancelImageButton?.setOnClickListener { - termuxSetupDialogObj?.dismiss() - termuxSetupDialogObj = null - execTermuxSetupAndStorageAccessPermissionProcessLauncher(activity) - } - cancelImageButton?.setImageResource(R.drawable.icons8_check_ok) - termuxSetupDialogObj?.setOnCancelListener { - termuxSetupDialogObj?.dismiss() - termuxSetupDialogObj = null - execTermuxSetupAndStorageAccessPermissionProcessLauncher(activity) - } - termuxSetupDialogObj?.window?.setLayout( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT - ) - termuxSetupDialogObj?.window?.setGravity( - Gravity.BOTTOM - ) - termuxSetupDialogObj?.show() - } - - - private fun startFragmentWithAlert( - activity: MainActivity - ){ - DialogObject.simpleTextShow( - activity, - "not exist run_command permission or termux app", - String() - ) - } - - private fun execTermuxSetupAndStorageAccessPermissionProcessLauncher( - activity: MainActivity - ){ - val launchIntent = - activity.packageManager.getLaunchIntentForPackage( - TermuxConstants.TERMUX_PACKAGE_NAME - ) ?: return - Toast.makeText( - activity, - "Long press and click paste popup on termux", - Toast.LENGTH_LONG - ).show() - activity.startActivity(launchIntent) - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/SdCardDirGetter.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/SdCardDirGetter.kt index 18538d2a4..0ec694382 100644 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/SdCardDirGetter.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/SdCardDirGetter.kt @@ -147,7 +147,7 @@ class SdCardDirGetter( getSdcardTreeUriConfirmDialog?.findViewById( R.id.confirm_text_gif_dialog_text_view ) - confirmContentTextView?.outlineWidthSrc = 5 + confirmContentTextView?.strokeWidthSrc = 5 confirmContentTextView?.text = "\n".repeat(4) + "Specify use dir in sd card, ok?" val confirmCancelButton = diff --git a/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/StorageAccessSetter.kt b/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/StorageAccessSetter.kt index 6d62d49e3..95bd29181 100755 --- a/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/StorageAccessSetter.kt +++ b/app/src/main/java/com/puutaro/commandclick/activity_lib/permission/StorageAccessSetter.kt @@ -141,7 +141,7 @@ object StorageAccessSetter { getPermissionConfirmDialog?.findViewById( R.id.confirm_text_gif_dialog_text_view ) - confirmContentTextView?.outlineWidthSrc = 5 + confirmContentTextView?.strokeWidthSrc = 5 confirmContentTextView?.text = "\n".repeat(4) + "Enable manage all storage permission, ok?" val confirmCancelButton = @@ -189,7 +189,7 @@ object StorageAccessSetter { ): ActivityResultLauncher { return activity.registerForActivityResult( ActivityResultContracts.StartActivityForResult(), - ActivityResultCallback { + ActivityResultCallback { if ( Environment.isExternalStorageManager() ) { diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/CheckTool.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/CheckTool.kt index cd845300e..c0aae1141 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/CheckTool.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/CheckTool.kt @@ -21,6 +21,8 @@ object CheckTool { const val separator = "----------" const val errMark = "ERROR" const val errRedCode = "#ff0000" + const val errBrown = "#804903" + const val ligthBlue = "#0cadf2" enum class JsOrActionMark( val mark: String diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/broadcast/SettingActionFuncExtra.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/broadcast/SettingActionFuncExtra.kt new file mode 100644 index 000000000..67d4a9015 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/broadcast/SettingActionFuncExtra.kt @@ -0,0 +1,9 @@ +package com.puutaro.commandclick.common.variable.broadcast + +enum class SettingActionFuncExtra( + val schema: String +) { + FUNC_NAME("func_name"), + METHOD_NAME("method_name"), + ARGS("args"), +} diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/broadcast/extra/ErrLogExtraForTerm.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/broadcast/extra/ErrLogExtraForTerm.kt new file mode 100644 index 000000000..9c5af2693 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/broadcast/extra/ErrLogExtraForTerm.kt @@ -0,0 +1,12 @@ +package com.puutaro.commandclick.common.variable.broadcast.extra + +enum class ErrLogExtraForTerm ( + val schema: String +) { +// errContents: String, +// debugNotiJanre: String = BroadCastIntentExtraForJsDebug.DebugGenre.SYS_ERR.type, +// notiLevelSrc: String = BroadCastIntentExtraForJsDebug.NotiLevelType.HIGH.level + ERR_CONTENTS("err_contents"), + DEBUG_NOTI_JANRE("err_contents"), + NOTI_LEVEL("noti_level"), +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/broadcast/scheme/BroadCastIntentSchemeTerm.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/broadcast/scheme/BroadCastIntentSchemeTerm.kt index 7729606ba..b0d4bdd89 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/broadcast/scheme/BroadCastIntentSchemeTerm.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/broadcast/scheme/BroadCastIntentSchemeTerm.kt @@ -59,5 +59,17 @@ enum class BroadCastIntentSchemeTerm( FANNEL_PIN_BAR_UPDATE( "com.puutaro.commandclick.fannel_pin_bar_update.update", String() - ) + ), + EDIT_INDEX_LIST_UPDATE( + "com.puutaro.commandclick.edit_index_list.update", + String() + ), + SETING_ACTION_FUNC( + "com.puutaro.commandclick.setting_action.func", + String() + ), + ERR_LOG( + "com.puutaro.commandclick.err_log", + String() + ), } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/edit/EditParameters.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/edit/EditParameters.kt index 905ef158c..615fc9fee 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/edit/EditParameters.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/edit/EditParameters.kt @@ -6,19 +6,19 @@ import androidx.fragment.app.Fragment data class EditParameters( // val currentFragment: Fragment, val currentShellContentsList: List, - val recordNumToMapNameValueInCommandHolder: Map?>?, - val recordNumToMapNameValueInSettingHolder: Map?>?, +// val recordNumToMapNameValueInCommandHolder: Map?>?, +// val recordNumToMapNameValueInSettingHolder: Map?>?, val fannelInfoMap: Map, val setReplaceVariableMap: Map?, val onFixNormalSpinner: Boolean, - val hideSettingVariableList: List +// val hideSettingVariableList: List ) { // val context = currentFragment.context - var currentId: Int = 0 - var currentVariableName: String? = null - var currentVariableValue: String? = null - var setVariableMap: Map? = null - var variableTypeList: List = emptyList() +// var currentId: Int = 0 +// var currentVariableName: String? = null +// var currentVariableValue: String? = null +// var setVariableMap: Map? = null +// var variableTypeList: List = emptyList() var onDirectoryPick: Boolean = false var isReturnOnlyFileName: Boolean = false } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/edit/EditTextType.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/edit/EditTextType.kt deleted file mode 100755 index 153aa597e..000000000 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/edit/EditTextType.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.puutaro.commandclick.common.variable.edit - -enum class EditTextType { - PASSWORD, - PLAIN, - READ_ONLY, -} diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/edit/RecordNumToMapNameValueInHolderColumn.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/edit/RecordNumToMapNameValueInHolderColumn.kt deleted file mode 100755 index 3ca48e85b..000000000 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/edit/RecordNumToMapNameValueInHolderColumn.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.puutaro.commandclick.common.variable.edit - -enum class RecordNumToMapNameValueInHolderColumn { - VARIABLE_NAME, - VARIABLE_VALUE, -} diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/edit/SetVariableTypeColumn.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/edit/SetVariableTypeColumn.kt deleted file mode 100755 index 131d3e38e..000000000 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/edit/SetVariableTypeColumn.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.puutaro.commandclick.common.variable.edit - -enum class SetVariableTypeColumn { - VARIABLE_NAME, - VARIABLE_TYPE, - VARIABLE_TYPE_VALUE, -} diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/extra/WaitQuizPair.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/extra/WaitQuizPair.kt index 17ad85222..56cdbfa5e 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/extra/WaitQuizPair.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/extra/WaitQuizPair.kt @@ -20,8 +20,7 @@ object WaitQuizPair { }.joinToString("\n") } private val UBUNTU_EXEC_MODE = CommandClickScriptVariable.UBUNTU_EXEC_MODE - private val SHELL_EXEC_ENV = CommandClickScriptVariable.SHELL_EXEC_ENV - private val HIDE_SETTING_VARIABLES = CommandClickScriptVariable.HIDE_SETTING_VARIABLES +// private val HIDE_SETTING_VARIABLES = CommandClickScriptVariable.HIDE_SETTING_VARIABLES private val SET_VARIABLE_TYPE = CommandClickScriptVariable.SET_VARIABLE_TYPE private val SET_REPLACE_VARIABLE = CommandClickScriptVariable.SET_REPLACE_VARIABLE private val EDIT_EXECUTE = CommandClickScriptVariable.EDIT_EXECUTE @@ -81,21 +80,21 @@ object WaitQuizPair { "-> Trigger from config", ), Pair( - "What's ${CommandClickScriptVariable.LIST_INDEX_CONFIG}?", + "What's ${CommandClickScriptVariable.EDIT_LIST_CONFIG}?", "-> List config in fannel", ), Pair( - "How to specify ${CommandClickScriptVariable.LIST_INDEX_CONFIG}?", - "-> Use ${CommandClickScriptVariable.LIST_INDEX_CONFIG} in setting vars", - ), - Pair( - "What's ${CommandClickScriptVariable.QR_DIALOG_CONFIG}?", - "-> Logo config in ${CommandClickScriptVariable.LIST_INDEX_CONFIG}", - ), - Pair( - "How to specify ${CommandClickScriptVariable.QR_DIALOG_CONFIG}?", - "-> Use ${CommandClickScriptVariable.QR_DIALOG_CONFIG} in setting vars", + "How to specify ${CommandClickScriptVariable.EDIT_LIST_CONFIG}?", + "-> Use ${CommandClickScriptVariable.EDIT_LIST_CONFIG} in setting vars", ), +// Pair( +// "What's ${CommandClickScriptVariable.QR_DIALOG_CONFIG}?", +// "-> Logo config in ${CommandClickScriptVariable.LIST_INDEX_CONFIG}", +// ), +// Pair( +// "How to specify ${CommandClickScriptVariable.QR_DIALOG_CONFIG}?", +// "-> Use ${CommandClickScriptVariable.QR_DIALOG_CONFIG} in setting vars", +// ), Pair( "What's ${CommandClickScriptVariable.PLAY_BUTTON_CONFIG}?", "-> Play button config in fannel", @@ -525,19 +524,6 @@ object WaitQuizPair { "How to switch exec mode?", "-> Use \"${UBUNTU_EXEC_MODE}\"" ), - - Pair( - "Where's \"${SHELL_EXEC_ENV}\"?", - "-> \"setting variables section\" in fannel script" - ), - Pair( - "What's \"${SHELL_EXEC_ENV}\"?", - "-> Switch ubuntu to termux as shell env" - ), - Pair( - "How to switch ubuntu to termux as shell env?", - "-> Use \"${SHELL_EXEC_ENV}\"" - ), Pair( "Where's \"${EDIT_EXECUTE}\"?", "-> \"setting variables section\" in fannel script" @@ -550,14 +536,14 @@ object WaitQuizPair { "How to convert edit box to gui app?", "-> Use \"${EDIT_EXECUTE}\"" ), - Pair( - "Where's \"${HIDE_SETTING_VARIABLES}\"?", - "-> \"setting variables section\" in fannel script" - ), - Pair( - "How to hid seldom use \"setting variables\" ?", - "-> Use \"${HIDE_SETTING_VARIABLES}\"" - ), +// Pair( +// "Where's \"${HIDE_SETTING_VARIABLES}\"?", +// "-> \"setting variables section\" in fannel script" +// ), +// Pair( +// "How to hid seldom use \"setting variables\" ?", +// "-> Use \"${HIDE_SETTING_VARIABLES}\"" +// ), Pair( "Where's \"${SET_VARIABLE_TYPE}\"?", "-> \"setting variables section\" in fannel script" diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/path/UsePath.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/path/UsePath.kt index 39a3f42aa..be6265df8 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/path/UsePath.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/path/UsePath.kt @@ -1,6 +1,7 @@ package com.puutaro.commandclick.common.variable.path import android.os.Environment +import java.io.File object UsePath { @@ -155,6 +156,8 @@ object UsePath { const val cmdclickDefaultAppDirName = "default" private val cmdclickDefaultAppRelativePath = "$cmdclickAppDirRelativePath/$cmdclickDefaultAppDirName" val cmdclickDefaultAppDirPath = "$rootPath/$cmdclickDefaultAppRelativePath" + val cmdclickDefaultSDebugAppDirPath = File(cmdclickDefaultAppDirPath, "SDebug").absolutePath + val cmdclickDefaultIDebugAppDirPath = File(cmdclickDefaultAppDirPath, "iDebug").absolutePath // const val cmdclickSystemAppDirName = "system" // private val cmdclickSystemAppRelativePath = "$cmdclickAppDirRelativePath/$cmdclickSystemAppDirName" // val cmdclickSystemAppDirPath = "$rootPath/$cmdclickSystemAppRelativePath" @@ -170,7 +173,9 @@ object UsePath { val ignoreHistoryPathsConfig = "ignoreHistoryPaths.js" val replaceVariablesTsvRelativePath = "$settingVariablesDirName/$replaceVariablesTsv" val fannelSettingsDirPath = "${cmdclickDefaultAppDirPath}/\${001}/settings" - val fannelSystemDirPath = "${cmdclickDefaultAppDirPath}/\${001}/system" + const val fannelSystemDirName = "system" + val fannelSystemDirPath = "${cmdclickDefaultAppDirPath}/\${001}/${fannelSystemDirName}" + const val fannelSystemScrollPosiDirName = "${fannelSystemDirName}/yScrollPosi" // val homeFannelsFilePath = // "${fannelSettingsDirPath}/homeFannelsFilePaths.txt" val settingImagesDirName = "settingImages" @@ -185,7 +190,6 @@ object UsePath { val fannelReadmeName = "README.md" val fannelReadmePath = "${cmdclickDefaultAppDirPath}/\${001}/${fannelReadmeName}" - const val cmdclickAppDirSystemFannelName = "system" private const val cmdclickSystemDirName = "${cmdclickAppDirSystemFannelName}Dir" private const val cmdclickJsSystemDirName = "js" @@ -223,8 +227,8 @@ object UsePath { val fannelStateRootTableFilePath = "$fannelSettingsDirPath/${fannelStateRootTableFileName}" // private val homeScriptUrlsFileName = "homeScriptUrlsPath.txt" // val homeScriptUrlsFilePath = "$fannelSettingsDirPath/${homeScriptUrlsFileName}" - private val listIndexForEditConfigName = "listIndexConfig.js" - val listIndexForEditConfigPath = "$fannelSettingsDirPath/${listIndexForEditConfigName}" + private val editListForEditConfigName = "editListConfig.js" + val editListForEditConfigPath = "$fannelSettingsDirPath/${editListForEditConfigName}" private val qrDialogConfigName = "qrDialogConfig.js" val qrDialogConfigPath = "$fannelSettingsDirPath/${qrDialogConfigName}" private val settingButtonConfigName = "settingButtonConfig.js" diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickBkImageInfo.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickBkImageInfo.kt new file mode 100644 index 000000000..f7375bf13 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickBkImageInfo.kt @@ -0,0 +1,13 @@ +package com.puutaro.commandclick.common.variable.res + +import com.puutaro.commandclick.common.variable.path.UsePath +import java.io.File + +object CmdClickBkImageInfo { + enum class CmdClickAutoCreateImage { + AUTO_MATRIX_STORM, + AUTO_RND_ICONS, + AUTO_RND_STRINGS, + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickColor.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickColor.kt index 96d7502f7..dc451fe3c 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickColor.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickColor.kt @@ -6,7 +6,7 @@ enum class CmdClickColor( val str: String, val id: Int, ) { - LIGTH_BLUE("ligthBlue", R.color.ligthBlue), + LIGTH_BLUE("lightBlue", R.color.ligthBlue), BLUE("blue", R.color.web_icon_color), NABY("navy", R.color.navy), GRAY("gray", R.color.gray_out), @@ -20,6 +20,7 @@ enum class CmdClickColor( LIGHT_ORANGE("ligthOrange", R.color.light_orange), BROWN("brown", R.color.brown), WHITE("white", R.color.white), + TRANSPARENT("trans", R.color.trans), YELLOW("yellow", R.color.yellow), BLACK("black", R.color.black), } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickIcons.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickIcons.kt index 0a79c822a..193d844fe 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickIcons.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/res/CmdClickIcons.kt @@ -11,6 +11,7 @@ enum class CmdClickIcons( ABOUT("about", R.drawable.icons8_about, ButtonAssetsImage.aboutPingPath), BACK("back", R.drawable.back, ButtonAssetsImage.backPingPath), CANCEL("cancel", R.drawable.icons8_cancel, ButtonAssetsImage.cancelPingPath), + CC("cc", R.drawable.cc, ButtonAssetsImage.cPingPath), COPY("copy", androidx.appcompat.R.drawable.abc_ic_menu_copy_mtrl_am_alpha, ButtonAssetsImage.copyPingPath), DOWN("down", R.drawable.ic_down_allow, ButtonAssetsImage.downPingPath), DOWNLOAD("download", android.R.drawable.stat_sys_download, ButtonAssetsImage.downloadDonePingPath), @@ -46,7 +47,10 @@ enum class CmdClickIcons( PUZZLE("puzzle", R.drawable.icons8_puzzle, ButtonAssetsImage.puzzlePingPath), PLUS("plus", R.drawable.icons8_plus, ButtonAssetsImage.plusPingPath), QR("qr", R.drawable.icons_qr_code, ButtonAssetsImage.qrPingPath), + ROUND_RECT("round_rect", R.drawable.round_rect, ButtonAssetsImage.roundRectPath), + RECT("rect", R.drawable.rect, ButtonAssetsImage.rectPingPath), REFLESH("reflesh", R.drawable.icons8_refresh, ButtonAssetsImage.refleshPingPath), + RIGHT_TRIANGLE("triangle_right", R.drawable.right_triangle, ButtonAssetsImage.triangleRightPingPath), RING("ring", R.drawable.icons8_wheel, ButtonAssetsImage.wheelPingPath), SET_UP("setup", R.drawable.icons8_setup, ButtonAssetsImage.setupPingPath), SEARCH("search", R.drawable.icons8_search, ButtonAssetsImage.searchPingPath), diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/res/FannelIcons.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/res/FannelIcons.kt index d287d67f3..e3a098bac 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/res/FannelIcons.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/res/FannelIcons.kt @@ -18,10 +18,10 @@ enum class FannelIcons( "airphane", R.drawable.fannel_at_mark ), - AWARD( - "award", - R.drawable.fannel_award - ), +// AWARD( +// "award", +// R.drawable.fannel_award +// ), BALLOON( "balloon", R.drawable.fannel_balloon @@ -48,7 +48,7 @@ enum class FannelIcons( ), CORSAIR( "corsair", - R.drawable.fannel_corsair + R.drawable.fannel_cosair ), CROCODILE( "crocodile", @@ -58,6 +58,10 @@ enum class FannelIcons( "crown", R.drawable.fannel_crown ), + BRAIN( + "brain", + R.drawable.fannel_brain + ), DOG_FACE( "dog_face", R.drawable.fannel_dog_face @@ -124,7 +128,7 @@ enum class FannelIcons( ), HIME( "hime", - R.drawable.fannel_hime + R.drawable.fannel_hime1 ), HIME2( "hime2", @@ -140,7 +144,7 @@ enum class FannelIcons( ), JINJA( "jinja", - R.drawable.fannel_jinja + R.drawable.fannel_jinja1 ), JINJA2( "jinja2", @@ -218,9 +222,17 @@ enum class FannelIcons( "other_moon", R.drawable.fannel_other_moon ), + ROBOT( + "robot", + R.drawable.fannel_robot + ), + PHANTOM( + "phantom", + R.drawable.fannel_phantom + ), PHENIX( "phenix", - R.drawable.fannel_phenix + R.drawable.fannel_phenix1 ), PHENIX2( "phenix2", @@ -266,6 +278,14 @@ enum class FannelIcons( "siro", R.drawable.fannel_siro ), + SKULL( + "skull", + R.drawable.fannel_skull + ), + SKULL_HORIZON( + "skull", + R.drawable.fannel_skull_horizon + ), SNAKE( "snake", R.drawable.fannel_snake @@ -302,6 +322,10 @@ enum class FannelIcons( "train", R.drawable.fannel_train ), + TREX( + "trex", + R.drawable.fannel_trex + ), TROPHY( "trophy", R.drawable.fannel_trophy @@ -310,6 +334,4 @@ enum class FannelIcons( "wind", R.drawable.fannel_wind ), - - } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/variables/CommandClickScriptVariable.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/variables/CommandClickScriptVariable.kt index e26402b8a..3200c9d8c 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/variables/CommandClickScriptVariable.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/variables/CommandClickScriptVariable.kt @@ -1,28 +1,15 @@ package com.puutaro.commandclick.common.variable.variables import com.puutaro.commandclick.common.variable.fannel.SystemFannel -//import com.puutaro.commandclick.common.variable.variant.LanguageTypeSelects -import com.puutaro.commandclick.common.variable.variant.SettingCmdArgs import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.proccess.edit.edit_text_support_view.lib.ButtonViewProducer -import com.puutaro.commandclick.proccess.edit.edit_text_support_view.lib.ListContentsSelectSpinnerViewProducer -import com.puutaro.commandclick.proccess.edit.lib.ProducerMacro import com.puutaro.commandclick.util.CcPathTool import com.puutaro.commandclick.util.file.FileSystems import java.io.File object CommandClickScriptVariable { -// enum class HolderTypeName { -// LABELING_SEC_START, -// LABELING_SEC_END, -// SETTING_SEC_START, -// SETTING_SEC_END, -// CMD_SEC_START, -// CMD_SEC_END, -// SCRIPT_START -// } + val EMPTY_STRING = "COMMAND_CLICK_EMPTY_STRING" const val LABELING_SEC_START = "/// LABELING_SECTION_START" const val LABELING_SEC_END = "/// LABELING_SECTION_END" @@ -31,28 +18,7 @@ object CommandClickScriptVariable { const val CMD_SEC_START = "/// CMD_VARIABLE_SECTION_START" const val CMD_SEC_END = "/// CMD_VARIABLE_SECTION_END" const val SCRIPT_START = "/// Please write bellow with javascript" -// val LANGUAGE_TYPE_TO_SECTION_HOLDER_MAP = mapOf( -// LanguageTypeSelects.SHELL_SCRIPT to mapOf( -// HolderTypeName.LABELING_SEC_START to "### $labelingSectionStartSentence", -// HolderTypeName.LABELING_SEC_END to "### $labelingSectionEndSentence", -// HolderTypeName.SETTING_SEC_START to "### $settingSectionStartSentence", -// HolderTypeName.SETTING_SEC_END to "### $settingSectionEndSentence", -// HolderTypeName.CMD_SEC_START to "### $commandSectionStartSentence", -// HolderTypeName.CMD_SEC_END to "### $commandSectionEndSentence", -// HolderTypeName.SCRIPT_START to "### Please write bellow with shell script", -// -// ), -// LanguageTypeSelects.JAVA_SCRIPT to mapOf( -// HolderTypeName.LABELING_SEC_START to "/// $labelingSectionStartSentence", -// HolderTypeName.LABELING_SEC_END to "/// $labelingSectionEndSentence", -// HolderTypeName.SETTING_SEC_START to "/// $settingSectionStartSentence", -// HolderTypeName.SETTING_SEC_END to "/// $settingSectionEndSentence", -// HolderTypeName.CMD_SEC_START to "/// $commandSectionStartSentence", -// HolderTypeName.CMD_SEC_END to "/// $commandSectionEndSentence", -// HolderTypeName.SCRIPT_START to "/// Please write bellow with javascript", -// ) -// ) - val SHELL_EXEC_ENV = "shellExecEnv" + val UBUNTU_EXEC_MODE = "ubuntuExecMode" val UBUNTU_OUTPUT_FILE = "ubuntuOutputFile" val TERMINAL_DO = "terminalDo" @@ -72,8 +38,8 @@ object CommandClickScriptVariable { val ON_TERM_BACKEND_WHEN_START = "onTermBackendWhenStart" val ON_TERM_VISIBLE_WHEN_KEYBOARD = "onTermVisibleWhenKeyboard" val ON_TERM_SHORT_WHEN_LOAD = "onTermShortWhenLoad" - val CMDCLICK_HISTORY_SWITCH = "historySwitch" - val CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC = "urlHistoryOrButtonExec" +// val CMDCLICK_HISTORY_SWITCH = "historySwitch" +// val CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC = "urlHistoryOrButtonExec" val ON_URL_HISTORY_REGISTER = "onUrlHistoryRegister" val IGNORE_HISTORY_PATHS = "ignoreHistoryPaths" val ON_ADBLOCK = "onAdBlock" @@ -85,17 +51,17 @@ object CommandClickScriptVariable { val TERMINAL_FONT_COLOR = "terminalFontColor" // val HOME_SCRIPT_URLS_PATH = "homeScriptUrlsPath" val CMDCLICK_SHIBAN_DEFAULT_VALUE = "#!/bin/bash" - val CMDCLICK_RUN_SHELL_DEFAULT_VALUE = "bash" +// val CMDCLICK_RUN_SHELL_DEFAULT_VALUE = "bash" // val CMDCLICK_HOME_FANNELS_PATH = "homeFannelsPath" - val PASS_CMDVARIABLE_EDIT = "passCmdVariableEdit" +// val PASS_CMDVARIABLE_EDIT = "passCmdVariableEdit" val SETTING_BUTTON_CONFIG = "settingButtonConfig" val EDIT_BUTTON_CONFIG = "editButtonConfig" val PLAY_BUTTON_CONFIG = "playButtonConfig" val EXTRA_BUTTON_CONFIG = "extraButtonConfig" - val LIST_INDEX_CONFIG = "listIndexConfig" - val QR_DIALOG_CONFIG = "qrDialogConfig" - val HIDE_SETTING_VARIABLES = "hideSettingVariables" - val NO_SCROLL_SAVE_URLS = "noScrollSaveUrls" + val EDIT_LIST_CONFIG = "editListConfig" +// val QR_DIALOG_CONFIG = "qrDialogConfig" +// val HIDE_SETTING_VARIABLES = "hideSettingVariables" +// val NO_SCROLL_SAVE_URLS = "noScrollSaveUrls" val DISABLE_SETTING_VALS_EDIT = "disableSettingValsEdit" val SRC_IMAGE_ANCHOR_LONG_PRESS_MENU_FILE_PATH = "srcImageAnchorLongPressMenuFilePath" val SRC_ANCHOR_LONG_PRESS_MENU_FILE_PATH = "srcAnchorLongPressMenuFilePath" @@ -117,7 +83,6 @@ object CommandClickScriptVariable { val CMDDLICK_EXTERNAL_EXEC_REPLACE_TXT = "EXTERNAL_EXEC_REPLACE_TXT" val SETTING_VARIABLE_NAMES_LIST = listOf( - SHELL_EXEC_ENV, UBUNTU_EXEC_MODE, UBUNTU_OUTPUT_FILE, TERMINAL_DO, @@ -125,14 +90,14 @@ object CommandClickScriptVariable { TERMINAL_OUTPUT_MODE, SET_VARIABLE_TYPE, SET_REPLACE_VARIABLE, - CMDCLICK_HISTORY_SWITCH, +// CMDCLICK_HISTORY_SWITCH, CMDCLICK_ON_AUTO_EXEC, AUTO_EXEC_PATH, NO_ARG_JS_PATH, ON_UPDATE_LAST_MODIFY, TERMINAL_COLOR, TERMINAL_FONT_COLOR, - CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC, +// CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC, ON_ADBLOCK, ON_TERM_BACKEND_WHEN_START, ON_TERM_VISIBLE_WHEN_KEYBOARD, @@ -156,9 +121,9 @@ object CommandClickScriptVariable { EDIT_BUTTON_CONFIG, EXTRA_BUTTON_CONFIG, SETTING_BUTTON_CONFIG, - LIST_INDEX_CONFIG, - QR_DIALOG_CONFIG, - NO_SCROLL_SAVE_URLS, + EDIT_LIST_CONFIG, +// QR_DIALOG_CONFIG, +// NO_SCROLL_SAVE_URLS, SRC_IMAGE_ANCHOR_LONG_PRESS_MENU_FILE_PATH, SRC_ANCHOR_LONG_PRESS_MENU_FILE_PATH, IMAGE_LONG_PRESS_MENU_FILE_PATH, @@ -166,7 +131,7 @@ object CommandClickScriptVariable { FANNEL_STATE_CONFIG, ) private val terminalOn = SettingVariableSelects.TerminalDoSelects.ON.name - private val terminalTermux = SettingVariableSelects.TerminalDoSelects.TERMUX.name +// private val terminalTermux = SettingVariableSelects.TerminalDoSelects.TERMUX.name private val terminalOff = SettingVariableSelects.TerminalDoSelects.OFF.name private val editExecuteNo = SettingVariableSelects.EditExecuteSelects.NO.name // private val editExecuteOnce = SettingVariableSelects.EditExecuteSelects.ONCE.name @@ -180,12 +145,12 @@ object CommandClickScriptVariable { private val terminalOutPutModeReflashAndFirstRow = SettingVariableSelects.TerminalOutPutModeSelects.REFLASH_AND_FIRST_ROW.name private val terminalOutPutModeDebug = SettingVariableSelects.TerminalOutPutModeSelects.DEBUG.name private val terminalOutPutModeNo = SettingVariableSelects.TerminalOutPutModeSelects.NO.name - private val historySwitchOff = SettingVariableSelects.HistorySwitchSelects.OFF.name - private val historySwitchOn = SettingVariableSelects.HistorySwitchSelects.ON.name - private val historySwitchInherit = SettingVariableSelects.HistorySwitchSelects.INHERIT.name - private val urlHistoryOrButtonExecUrlHistory = SettingVariableSelects.UrlHistoryOrButtonExecSelects.URL_HISTORY.name - private val urlHistoryOrButtonExecUrlButtonExec = SettingVariableSelects.UrlHistoryOrButtonExecSelects.BUTTON_EXEC.name - private val urlHistoryOrButtonExecUrlInherit = SettingVariableSelects.UrlHistoryOrButtonExecSelects.INHERIT.name +// private val historySwitchOff = SettingVariableSelects.HistorySwitchSelects.OFF.name +// private val historySwitchOn = SettingVariableSelects.HistorySwitchSelects.ON.name +// private val historySwitchInherit = SettingVariableSelects.HistorySwitchSelects.INHERIT.name +// private val urlHistoryOrButtonExecUrlHistory = SettingVariableSelects.UrlHistoryOrButtonExecSelects.URL_HISTORY.name +// private val urlHistoryOrButtonExecUrlButtonExec = SettingVariableSelects.UrlHistoryOrButtonExecSelects.BUTTON_EXEC.name +// private val urlHistoryOrButtonExecUrlInherit = SettingVariableSelects.UrlHistoryOrButtonExecSelects.INHERIT.name private val onUpdateLastModifyOn = SettingVariableSelects.OnUpdateLastModifySelects.ON.name private val onUpdateLastModifyOff = SettingVariableSelects.OnUpdateLastModifySelects.OFF.name private val onUrlLaunchMacroRecent = SettingVariableSelects.OnUrlLaunchMacroSelects.RECENT.name @@ -196,8 +161,6 @@ object CommandClickScriptVariable { private val onAdBlockOff = SettingVariableSelects.OnAdblockSelects.OFF.name private val onLaunchUrlHistoryByBackstackOn = SettingVariableSelects.OnLaunchUrlHistoryByBackstack.ON private val onLaunchUrlHistoryByBackstackOff = SettingVariableSelects.OnLaunchUrlHistoryByBackstack.OFF - private val shellExecEnvUbuntu = SettingVariableSelects.ShellExecEnvSelects.UBUNTU.name - private val shellExecEnvTermux = SettingVariableSelects.ShellExecEnvSelects.TERMUX.name private val ubuntuExecModeSelectsBackground = SettingVariableSelects.UbuntuExecModeSelects.background.name private val ubuntuExecModeSelectsForeground = SettingVariableSelects.UbuntuExecModeSelects.foreground.name private val onTermVisibleWhenKeyboardSelectsInherit = SettingVariableSelects.OnTermVisibleWhenKeyboardSelects.INHERIT.name @@ -218,24 +181,23 @@ object CommandClickScriptVariable { private val ubuntuAutoSetupOff = SettingVariableSelects.UbuntuAutoSetup.OFF.name private val ubuntuAutoSetupSetup = SettingVariableSelects.UbuntuAutoSetup.SETUP.name private val ubuntuAutoSetupRestore = SettingVariableSelects.UbuntuAutoSetup.RESTORE.name - val SHELL_EXEC_ENV_DEFAULT_VALUE = shellExecEnvUbuntu val UBUNTU_EXEC_MODE_DEFAULT_VALUE = ubuntuExecModeSelectsBackground val UBUNTU_OUTPUT_FILE_DEFAULT_VALUE = UsePath.cmdClickMonitorFileName_1 val TERMINAL_DO_DEFAULT_VALUE = terminalOn val EDIT_EXECUTE_DEFAULT_VALUE = editExecuteNo val TERMINAL_OUTPUT_MODE_DEFAULT_VALUE = terminalOutPutModeNormal - val HISTORY_SWITCH_DEFAULT_VALUE = historySwitchOff +// val HISTORY_SWITCH_DEFAULT_VALUE = historySwitchOff val ON_UPDATE_LAST_MODIFY_DEFAULT_VALUE = onUpdateLastModifyOn val TERMINAL_COLOR_DEFAULT_VALUE = "#043d02" val TERMINAL_FONT_COLOR_DEFAULT_VALUE = "#f2f2f2" val ON_URL_LAUNCH_MACRO_DEFAULT_VALUE = onUrlLaunchMacroOff val ON_URL_HISTORY_REGISTER_DEFAULT_VALUE = onUrlHistoryRegisterOn - val PASS_CMDVARIABLE_EDIT_ON_VALUE = "ON" +// val PASS_CMDVARIABLE_EDIT_ON_VALUE = "ON" val ON_TERM_BACKEND_WHEN_START_DEFAULT_VALUE = onTermBackendWhenStartSelectsOff val ON_TERM_SHORT_WHEN_LOAD_DEFAULT_VALUE = onTermShortWhenLoadSelectsOff val CMDCLICK_TERMINAL_FONT_ZOOM_DEFAULT_VALUE = 100 - val CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE = SettingVariableSelects.UrlHistoryOrButtonExecSelects.URL_HISTORY.name +// val CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE = SettingVariableSelects.UrlHistoryOrButtonExecSelects.URL_HISTORY.name val ON_ADBLOCK_DEFAULT_VALUE = SettingVariableSelects.OnAdblockSelects.OFF.name val ON_LAUNCH_URL_HISTORY_BY_BACKSTACK_DEFAULT_VALUE = SettingVariableSelects.OnLaunchUrlHistoryByBackstack.OFF.name val CMDCLICK_ON_AUTO_EXEC_DEFAULT_VALUE = SettingVariableSelects.AutoExecSelects.ON.name @@ -248,22 +210,22 @@ object CommandClickScriptVariable { // private val homeScriptUrlsFilePath = UsePath.homeScriptUrlsFilePath // private val homeFannelsFilePath = // UsePath.homeFannelsFilePath - private val macroStrForDragSortGetListPathFromVar = - ProducerMacro.macroStrForDragSortGetListPathFromVar - private val buttonCmd = ButtonViewProducer.ButtonEditKey.cmd.name - private val buttonLabel = ButtonViewProducer.ButtonEditKey.label.name - private val buttonSetfType = - ButtonViewProducer.SET_F_OPTION_MAP_KEY.type - private val buttonSetfListAddSuffix = - ButtonViewProducer.SET_F_OPTION_MAP_KEY.ListAdd.suffix.name - private val buttonSetfListAddSourceDirPath = - ButtonViewProducer.SET_F_OPTION_MAP_KEY.ListAdd.dirPath.name +// private val macroStrForDragSortGetListPathFromVar = +// ProducerMacro.macroStrForDragSortGetListPathFromVar +// private val buttonCmd = ButtonViewProducer.ButtonEditKey.cmd.name +// private val buttonLabel = ButtonViewProducer.ButtonEditKey.label.name +// private val buttonSetfType = +// ButtonViewProducer.SET_F_OPTION_MAP_KEY.type +// private val buttonSetfListAddSuffix = +// ButtonViewProducer.SET_F_OPTION_MAP_KEY.ListAdd.suffix.name +// private val buttonSetfListAddSourceDirPath = +// ButtonViewProducer.SET_F_OPTION_MAP_KEY.ListAdd.dirPath.name // private val buttonSetfListAddHowFull = // ButtonViewProducer.SET_F_OPTION_MAP_KEY.ListAdd.howFull.name - private val listPathForListConSlSpi = - ListContentsSelectSpinnerViewProducer.ListContentsEditKey.listPath.name - private val limitNumForListConSlSpi = - ListContentsSelectSpinnerViewProducer.ListContentsEditKey.limitNum.name +// private val listPathForListConSlSpi = +// ListContentsSelectSpinnerViewProducer.ListContentsEditKey.listPath.name +// private val limitNumForListConSlSpi = +// ListContentsSelectSpinnerViewProducer.ListContentsEditKey.limitNum.name // private val setVaraibleValueForHomeScriptUrlsPath = // "$listPathForListConSlSpi=" + // "$macroStrForDragSortGetListPathFromVar:${homeScriptUrlsFilePath}" + @@ -286,90 +248,90 @@ object CommandClickScriptVariable { // "$buttonSetfListAddSourceDirPath=${UsePath.cmdclickAppHistoryDirAdminPath}" + // "?$buttonLabel=ADD" // ).joinToString(" ") - private val srcImageAnchorLongPressMenuFilePath = - UsePath.srcImageAnchorLongPressMenuFilePath - private val srcAnchorLongPressMenuFilePath = - UsePath.srcAnchorLongPressMenuFilePath - private val imageLongPressMenuFilePath = - UsePath.imageLongPressMenuFilePath - private val noScrollSaveUrlsFilePath = - UsePath.noScrollSaveUrlsFilePath - private val setVariableValueForSrcImageAnchorLongPressMenuFilePath = - "$listPathForListConSlSpi=" + - "$macroStrForDragSortGetListPathFromVar:$srcImageAnchorLongPressMenuFilePath" + - "?$limitNumForListConSlSpi=20" + - "|$buttonCmd=" + - listOf( - "setf $buttonSetfType=${SettingCmdArgs.ListAdd.name}", - "$buttonSetfListAddSuffix=${UsePath.JS_FILE_SUFFIX}", - "$buttonSetfListAddSourceDirPath=\${01}" + - "?$buttonLabel=ADD" - ).joinToString(" ") - private val setVariableValueForSrcAnchorLongPressMenuFilePath = - "$listPathForListConSlSpi=" + - "$macroStrForDragSortGetListPathFromVar:$srcAnchorLongPressMenuFilePath" + - "?$limitNumForListConSlSpi=20" + - "|$buttonCmd=" + - listOf( - "setf $buttonSetfType=${SettingCmdArgs.ListAdd.name}", - "$buttonSetfListAddSuffix=${UsePath.JS_FILE_SUFFIX}", - "$buttonSetfListAddSourceDirPath=\${01}" + - "?$buttonLabel=ADD" - ).joinToString(" ") - private val setVariableValueForImageLongPressMenuFilePath = - "$listPathForListConSlSpi=" + - "$macroStrForDragSortGetListPathFromVar:$imageLongPressMenuFilePath" + - "?$limitNumForListConSlSpi=20" + - "|$buttonCmd=" + - listOf( - "setf $buttonSetfType=${SettingCmdArgs.ListAdd.name}", - "$buttonSetfListAddSuffix=${UsePath.JS_FILE_SUFFIX}", - "$buttonSetfListAddSourceDirPath=\${01}" + - "?$buttonLabel=ADD" - ).joinToString(" ") +// private val srcImageAnchorLongPressMenuFilePath = +// UsePath.srcImageAnchorLongPressMenuFilePath +// private val srcAnchorLongPressMenuFilePath = +// UsePath.srcAnchorLongPressMenuFilePath +// private val imageLongPressMenuFilePath = +// UsePath.imageLongPressMenuFilePath +// private val noScrollSaveUrlsFilePath = +// UsePath.noScrollSaveUrlsFilePath +// private val setVariableValueForSrcImageAnchorLongPressMenuFilePath = +// "$listPathForListConSlSpi=" + +// "$macroStrForDragSortGetListPathFromVar:$srcImageAnchorLongPressMenuFilePath" + +// "?$limitNumForListConSlSpi=20" + +// "|$buttonCmd=" + +// listOf( +// "setf $buttonSetfType=${SettingCmdArgs.ListAdd.name}", +// "$buttonSetfListAddSuffix=${UsePath.JS_FILE_SUFFIX}", +// "$buttonSetfListAddSourceDirPath=\${01}" + +// "?$buttonLabel=ADD" +// ).joinToString(" ") +// private val setVariableValueForSrcAnchorLongPressMenuFilePath = +// "$listPathForListConSlSpi=" + +// "$macroStrForDragSortGetListPathFromVar:$srcAnchorLongPressMenuFilePath" + +// "?$limitNumForListConSlSpi=20" + +// "|$buttonCmd=" + +// listOf( +// "setf $buttonSetfType=${SettingCmdArgs.ListAdd.name}", +// "$buttonSetfListAddSuffix=${UsePath.JS_FILE_SUFFIX}", +// "$buttonSetfListAddSourceDirPath=\${01}" + +// "?$buttonLabel=ADD" +// ).joinToString(" ") +// private val setVariableValueForImageLongPressMenuFilePath = +// "$listPathForListConSlSpi=" + +// "$macroStrForDragSortGetListPathFromVar:$imageLongPressMenuFilePath" + +// "?$limitNumForListConSlSpi=20" + +// "|$buttonCmd=" + +// listOf( +// "setf $buttonSetfType=${SettingCmdArgs.ListAdd.name}", +// "$buttonSetfListAddSuffix=${UsePath.JS_FILE_SUFFIX}", +// "$buttonSetfListAddSourceDirPath=\${01}" + +// "?$buttonLabel=ADD" +// ).joinToString(" ") // val buttonIconSeparator = JsPathForEditButton.buttonIconSeparator // val buttonIconNameIdSeparator = JsPathForEditButton.buttonIconNameIdSeparator // val buttonIconNameIdPairListStr = CmdClickIcons.values().reversed().map { // "${it.str}${buttonIconNameIdSeparator}${it.str}" // }.joinToString(buttonIconSeparator) - private val setVariableValueForNoScrollSaveUrlsFilePath = - "$listPathForListConSlSpi=$noScrollSaveUrlsFilePath" - val setVariableForSettingHolder: List = listOf( - "$SHELL_EXEC_ENV:CB=$shellExecEnvUbuntu?$shellExecEnvTermux", - "$UBUNTU_EXEC_MODE:CB=$ubuntuExecModeSelectsBackground?$ubuntuExecModeSelectsForeground", - "$UBUNTU_OUTPUT_FILE:CB=${UsePath.cmdClickMonitorFileName_1}?${UsePath.cmdClickMonitorFileName_2}?${UsePath.cmdClickMonitorFileName_3}?${UsePath.cmdClickMonitorFileName_4}", - "$TERMINAL_DO:CB=$terminalOn?$terminalTermux?$terminalOff", - "$EDIT_EXECUTE:CB=$editExecuteNo?$editExecuteAlways", -// "$TERMINAL_SIZE_TYPE:CB=$terminalSizeTypeOff?$terminalSizeTypeShort?$terminalSizeTypeLong", - "$TERMINAL_OUTPUT_MODE:CB=$terminalOutPutModeNormal?$terminalOutPutModeReflash?$terminalOutPutModeReflashAndFirstRow?$terminalOutPutModeDebug?$terminalOutPutModeNo", - "$ON_UPDATE_LAST_MODIFY:CB=$onUpdateLastModifyOn?$onUpdateLastModifyOff", - "$CMDCLICK_ON_AUTO_EXEC:CB=$autoExecSelectsOn?$autoExecSelectsOff", - "$CMDCLICK_HISTORY_SWITCH:CB=$historySwitchOff?$historySwitchOn?$historySwitchInherit", - "$CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC:CB=$urlHistoryOrButtonExecUrlHistory?$urlHistoryOrButtonExecUrlButtonExec?$urlHistoryOrButtonExecUrlInherit", - "$ON_URL_LAUNCH_MACRO:TXT:ECB=$onUrlLaunchMacroOff?$onUrlLaunchMacroRecent?$onUrlLaunchMacroFrequency", - "$ON_ADBLOCK:CB=$onAdBlockInherit?$onAdBlockOff?$onAdBlockOn", - "${ON_LAUNCH_URL_HISTORY_BY_BACKSTACK}:CB=${onLaunchUrlHistoryByBackstackOff}?${onLaunchUrlHistoryByBackstackOn}", - "$ON_TERM_BACKEND_WHEN_START:CB=$onTermBackendWhenStartSelectsInherit?$onTermBackendWhenStartSelectsOff?$onTermBackendWhenStartSelectsOn", - "$ON_TERM_VISIBLE_WHEN_KEYBOARD:CB=$onTermVisibleWhenKeyboardSelectsInherit?$onTermVisibleWhenKeyboardSelectsOn?$onTermVisibleWhenKeyboardSelectsOff", - "$ON_TERM_SHORT_WHEN_LOAD:CB=$onTermShortWhenLoadSelectsInherit?$onTermShortWhenLoadSelectsOn?$onTermShortWhenLoadSelectsOff", - "$DISABLE_SHOW_TOOLBAR_WHEN_HIGHLIGHT:CB=$disableShowToolbarWhenHighlightOn?$disableShowToolbarWhenHighlightOff", - "$ON_URL_HISTORY_REGISTER:CB=$onUrlHistoryRegisterOn?$onUrlHistoryRegisterOff", - "$DEFAULT_MONITOR_FILE:CB=${UsePath.cmdClickMonitorFileName_1}?${UsePath.cmdClickMonitorFileName_2}?${UsePath.cmdClickMonitorFileName_3}?${UsePath.cmdClickMonitorFileName_4}", - "${ON_ROOTFS_SDCARD_SAVE}:CB=${onRootfsSdcardSaveOn}?${onRootfsSdcardSaveOff}", - "${UBUNTU_AUTO_SETUP}:CB=${ubuntuAutoSetupOff}?${ubuntuAutoSetupSetup}?${ubuntuAutoSetupRestore}", - "$CMDCLICK_TERMINAL_FONT_ZOOM:TXT:NUM=0..1000?1", - "$TERMINAL_COLOR:TXT:CLR=", - "$TERMINAL_FONT_COLOR:TXT:CLR=", - "$EXEC_JS_OR_HTML_PATH:TXT:FL=", -// "$HOME_SCRIPT_URLS_PATH:DSL:BTN=$setVaraibleValueForHomeScriptUrlsPath", -// "$CMDCLICK_HOME_FANNELS_PATH:DSL:BTN=$setVariableValueForHomeFannelsPath", - "$SRC_IMAGE_ANCHOR_LONG_PRESS_MENU_FILE_PATH:DSL:BTN=$setVariableValueForSrcImageAnchorLongPressMenuFilePath", - "$SRC_ANCHOR_LONG_PRESS_MENU_FILE_PATH:DSL:BTN=$setVariableValueForSrcAnchorLongPressMenuFilePath", - "$IMAGE_LONG_PRESS_MENU_FILE_PATH:DSL:BTN=$setVariableValueForImageLongPressMenuFilePath", - "$NO_SCROLL_SAVE_URLS:DSL=$setVariableValueForNoScrollSaveUrlsFilePath", - "$UBUNTU_SLEEP_DELAY_MIN_IN_SCREEN_OFF:TXT:NUM=0..60?10" - ) +// private val setVariableValueForNoScrollSaveUrlsFilePath = +// "$listPathForListConSlSpi=$noScrollSaveUrlsFilePath" +// val setVariableForSettingHolder: List = listOf( +// "$SHELL_EXEC_ENV:CB=$shellExecEnvUbuntu?$shellExecEnvTermux", +// "$UBUNTU_EXEC_MODE:CB=$ubuntuExecModeSelectsBackground?$ubuntuExecModeSelectsForeground", +// "$UBUNTU_OUTPUT_FILE:CB=${UsePath.cmdClickMonitorFileName_1}?${UsePath.cmdClickMonitorFileName_2}?${UsePath.cmdClickMonitorFileName_3}?${UsePath.cmdClickMonitorFileName_4}", +// "$TERMINAL_DO:CB=$terminalOn?$terminalTermux?$terminalOff", +// "$EDIT_EXECUTE:CB=$editExecuteNo?$editExecuteAlways", +//// "$TERMINAL_SIZE_TYPE:CB=$terminalSizeTypeOff?$terminalSizeTypeShort?$terminalSizeTypeLong", +// "$TERMINAL_OUTPUT_MODE:CB=$terminalOutPutModeNormal?$terminalOutPutModeReflash?$terminalOutPutModeReflashAndFirstRow?$terminalOutPutModeDebug?$terminalOutPutModeNo", +// "$ON_UPDATE_LAST_MODIFY:CB=$onUpdateLastModifyOn?$onUpdateLastModifyOff", +// "$CMDCLICK_ON_AUTO_EXEC:CB=$autoExecSelectsOn?$autoExecSelectsOff", +// "$CMDCLICK_HISTORY_SWITCH:CB=$historySwitchOff?$historySwitchOn?$historySwitchInherit", +// "$CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC:CB=$urlHistoryOrButtonExecUrlHistory?$urlHistoryOrButtonExecUrlButtonExec?$urlHistoryOrButtonExecUrlInherit", +// "$ON_URL_LAUNCH_MACRO:TXT:ECB=$onUrlLaunchMacroOff?$onUrlLaunchMacroRecent?$onUrlLaunchMacroFrequency", +// "$ON_ADBLOCK:CB=$onAdBlockInherit?$onAdBlockOff?$onAdBlockOn", +// "${ON_LAUNCH_URL_HISTORY_BY_BACKSTACK}:CB=${onLaunchUrlHistoryByBackstackOff}?${onLaunchUrlHistoryByBackstackOn}", +// "$ON_TERM_BACKEND_WHEN_START:CB=$onTermBackendWhenStartSelectsInherit?$onTermBackendWhenStartSelectsOff?$onTermBackendWhenStartSelectsOn", +// "$ON_TERM_VISIBLE_WHEN_KEYBOARD:CB=$onTermVisibleWhenKeyboardSelectsInherit?$onTermVisibleWhenKeyboardSelectsOn?$onTermVisibleWhenKeyboardSelectsOff", +// "$ON_TERM_SHORT_WHEN_LOAD:CB=$onTermShortWhenLoadSelectsInherit?$onTermShortWhenLoadSelectsOn?$onTermShortWhenLoadSelectsOff", +// "$DISABLE_SHOW_TOOLBAR_WHEN_HIGHLIGHT:CB=$disableShowToolbarWhenHighlightOn?$disableShowToolbarWhenHighlightOff", +// "$ON_URL_HISTORY_REGISTER:CB=$onUrlHistoryRegisterOn?$onUrlHistoryRegisterOff", +// "$DEFAULT_MONITOR_FILE:CB=${UsePath.cmdClickMonitorFileName_1}?${UsePath.cmdClickMonitorFileName_2}?${UsePath.cmdClickMonitorFileName_3}?${UsePath.cmdClickMonitorFileName_4}", +// "${ON_ROOTFS_SDCARD_SAVE}:CB=${onRootfsSdcardSaveOn}?${onRootfsSdcardSaveOff}", +// "${UBUNTU_AUTO_SETUP}:CB=${ubuntuAutoSetupOff}?${ubuntuAutoSetupSetup}?${ubuntuAutoSetupRestore}", +// "$CMDCLICK_TERMINAL_FONT_ZOOM:TXT:NUM=0..1000?1", +// "$TERMINAL_COLOR:TXT:CLR=", +// "$TERMINAL_FONT_COLOR:TXT:CLR=", +// "$EXEC_JS_OR_HTML_PATH:TXT:FL=", +//// "$HOME_SCRIPT_URLS_PATH:DSL:BTN=$setVaraibleValueForHomeScriptUrlsPath", +//// "$CMDCLICK_HOME_FANNELS_PATH:DSL:BTN=$setVariableValueForHomeFannelsPath", +// "$SRC_IMAGE_ANCHOR_LONG_PRESS_MENU_FILE_PATH:DSL:BTN=$setVariableValueForSrcImageAnchorLongPressMenuFilePath", +// "$SRC_ANCHOR_LONG_PRESS_MENU_FILE_PATH:DSL:BTN=$setVariableValueForSrcAnchorLongPressMenuFilePath", +// "$IMAGE_LONG_PRESS_MENU_FILE_PATH:DSL:BTN=$setVariableValueForImageLongPressMenuFilePath", +// "$NO_SCROLL_SAVE_URLS:DSL=$setVariableValueForNoScrollSaveUrlsFilePath", +// "$UBUNTU_SLEEP_DELAY_MIN_IN_SCREEN_OFF:TXT:NUM=0..60?10" +// ) fun makeShellScriptName( // shellOrJs: LanguageTypeSelects = LanguageTypeSelects.JAVA_SCRIPT @@ -390,18 +352,39 @@ object CommandClickScriptVariable { private val mdDash = "-------" private val mdDescription = "description" +// |# * [$CMDCLICK_HISTORY_SWITCH](#${replaceLowerAdnBlankDash(CMDCLICK_HISTORY_SWITCH)}) +// |# * [$CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC](#${ +// replaceLowerAdnBlankDash(CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC)}) +// |# ### $CMDCLICK_HISTORY_SWITCH +// |# Switch app history with url history +// | +// |# | switch | $mdDescription | +// |# | $mdDash | $mdDash | +// |# | `$historySwitchOn` | switch | +// |# | `$historySwitchOff` | no switch | +// |# | `$historySwitchInherit` | inherit config setting (default) | +// | +// |# ### $CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC +// |# Switch url history or button script exec +// | +// |# | switch | description | +// |# | $mdDash | $mdDash | +// |# | `$urlHistoryOrButtonExecUrlInherit` | inherit config setting | +// |# | `$urlHistoryOrButtonExecUrlHistory` | switch url history | +// |# | `$urlHistoryOrButtonExecUrlButtonExec` | switch url button script exec | +// | + fun makeDescription(): String { return """# Table of Contents |# $mdDash |# * [$settingVariableStr](#${replaceLowerAdnBlankDash(settingVariableStr)}) - |# * [$SHELL_EXEC_ENV](#${replaceLowerAdnBlankDash(SHELL_EXEC_ENV)}) + |# * [$UBUNTU_EXEC_MODE](#${replaceLowerAdnBlankDash(UBUNTU_EXEC_MODE)}) |# * [$UBUNTU_OUTPUT_FILE](#${replaceLowerAdnBlankDash(UBUNTU_OUTPUT_FILE)}) |# * [$TERMINAL_OUTPUT_MODE](#${replaceLowerAdnBlankDash(TERMINAL_OUTPUT_MODE)}) |# * [$CMDCLICK_ON_AUTO_EXEC](#${replaceLowerAdnBlankDash(CMDCLICK_ON_AUTO_EXEC)}) |# * [$ON_UPDATE_LAST_MODIFY](#${replaceLowerAdnBlankDash(ON_UPDATE_LAST_MODIFY)}) |# * [$IGNORE_HISTORY_PATHS](#${replaceLowerAdnBlankDash(IGNORE_HISTORY_PATHS)}) - |# * [$CMDCLICK_HISTORY_SWITCH](#${replaceLowerAdnBlankDash(CMDCLICK_HISTORY_SWITCH)}) |# * [$EDIT_BOX_TITLE_CONFIG](#${replaceLowerAdnBlankDash(EDIT_BOX_TITLE_CONFIG)}) |# * [$SRC_IMAGE_ANCHOR_LONG_PRESS_MENU_FILE_PATH](#${ replaceLowerAdnBlankDash( @@ -410,8 +393,6 @@ object CommandClickScriptVariable { replaceLowerAdnBlankDash(SRC_ANCHOR_LONG_PRESS_MENU_FILE_PATH)}) |# * [$IMAGE_LONG_PRESS_MENU_FILE_PATH](#${ replaceLowerAdnBlankDash(IMAGE_LONG_PRESS_MENU_FILE_PATH)}) - |# * [$CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC](#${ - replaceLowerAdnBlankDash(CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC)}) |# * [$ON_ADBLOCK](#${replaceLowerAdnBlankDash(ON_ADBLOCK)}) |# * [$ON_TERM_BACKEND_WHEN_START](#${ replaceLowerAdnBlankDash(ON_TERM_BACKEND_WHEN_START)}) @@ -434,14 +415,6 @@ object CommandClickScriptVariable { |# ## $settingVariableStr |# $mdDash | - |# ### $SHELL_EXEC_ENV - |# Set shell exec enviroment - | - |# | option | description | - |# | $mdDash | $mdDash | - |# | `$shellExecEnvUbuntu` | ubuntu | - |# | `$shellExecEnvTermux` | termux | - | |# ### $UBUNTU_EXEC_MODE |# Set shell exec mode | @@ -490,15 +463,6 @@ object CommandClickScriptVariable { |# ### $IGNORE_HISTORY_PATHS |# Ignore history path like grep -v | - |# ### $CMDCLICK_HISTORY_SWITCH - |# Switch app history with url history - | - |# | switch | $mdDescription | - |# | $mdDash | $mdDash | - |# | `$historySwitchOn` | switch | - |# | `$historySwitchOff` | no switch | - |# | `$historySwitchInherit` | inherit config setting (default) | - | |# ### $EDIT_BOX_TITLE_CONFIG |# Edit box title | @@ -531,15 +495,6 @@ object CommandClickScriptVariable { |# | DSL button | Drag and sort home url script List | |# | ADD button | Add fannel to home url script list | | - |# ### $CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC - |# Switch url history or button script exec - | - |# | switch | description | - |# | $mdDash | $mdDash | - |# | `$urlHistoryOrButtonExecUrlInherit` | inherit config setting | - |# | `$urlHistoryOrButtonExecUrlHistory` | switch url history | - |# | `$urlHistoryOrButtonExecUrlButtonExec` | switch url button script exec | - | |# ### $ON_ADBLOCK |# Adblock switch | @@ -648,6 +603,10 @@ object CommandClickScriptVariable { .replace(" ", "-") } +// // |$NO_SCROLL_SAVE_URLS="" +// |$CMDCLICK_HISTORY_SWITCH="$historySwitchInherit" +// |$CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC="$urlHistoryOrButtonExecUrlInherit" + fun makeScriptContents( onUpdateLastModifyValue: String, // shellOrJs: LanguageTypeSelects = LanguageTypeSelects.JAVA_SCRIPT, @@ -663,15 +622,12 @@ object CommandClickScriptVariable { | | |${SETTING_SEC_START} - |$SHELL_EXEC_ENV="$SHELL_EXEC_ENV_DEFAULT_VALUE" |$UBUNTU_EXEC_MODE="$UBUNTU_EXEC_MODE_DEFAULT_VALUE" |$UBUNTU_OUTPUT_FILE="$UBUNTU_OUTPUT_FILE_DEFAULT_VALUE" |$TERMINAL_DO="$TERMINAL_DO_DEFAULT_VALUE" |$EDIT_EXECUTE="$EDIT_EXECUTE_DEFAULT_VALUE" |$TERMINAL_OUTPUT_MODE="$TERMINAL_OUTPUT_MODE_DEFAULT_VALUE" |$ON_UPDATE_LAST_MODIFY="${onUpdateLastModifyValue}" - |$CMDCLICK_HISTORY_SWITCH="$historySwitchInherit" - |$CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC="$urlHistoryOrButtonExecUrlInherit" |$ON_ADBLOCK="$onAdBlockInherit" |$ON_TERM_BACKEND_WHEN_START="$ON_TERM_BACKEND_WHEN_START_DEFAULT_VALUE" |$ON_TERM_VISIBLE_WHEN_KEYBOARD="$ON_TERM_VISIBLE_WHEN_KEYBOARD_DEFAULT_VALUE" @@ -679,7 +635,6 @@ object CommandClickScriptVariable { |$SRC_IMAGE_ANCHOR_LONG_PRESS_MENU_FILE_PATH="" |$SRC_ANCHOR_LONG_PRESS_MENU_FILE_PATH="" |$IMAGE_LONG_PRESS_MENU_FILE_PATH="" - |$NO_SCROLL_SAVE_URLS="" |$ON_URL_HISTORY_REGISTER="$ON_URL_HISTORY_REGISTER_DEFAULT_VALUE" |$DEFAULT_MONITOR_FILE="$DEFAULT_MONITOR_FILE_DEFAULT_VALUE" |$IGNORE_HISTORY_PATHS="" diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/variables/SettingFileVariables.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/variables/SettingFileVariables.kt index 86245b5ca..f5878b126 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/variables/SettingFileVariables.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/variables/SettingFileVariables.kt @@ -2,6 +2,6 @@ package com.puutaro.commandclick.common.variable.variables object SettingFileVariables { - const val importPreWord = "settingimport" + const val importPreWord = "settingImport" } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/common/variable/variant/SettingVariableSelects.kt b/app/src/main/java/com/puutaro/commandclick/common/variable/variant/SettingVariableSelects.kt index d841f2bd4..beab728fb 100755 --- a/app/src/main/java/com/puutaro/commandclick/common/variable/variant/SettingVariableSelects.kt +++ b/app/src/main/java/com/puutaro/commandclick/common/variable/variant/SettingVariableSelects.kt @@ -4,7 +4,7 @@ object SettingVariableSelects { enum class TerminalDoSelects { ON, OFF, - TERMUX +// TERMUX } enum class EditExecuteSelects { @@ -26,17 +26,17 @@ object SettingVariableSelects { NO, } - enum class HistorySwitchSelects { - OFF, - ON, - INHERIT - } +// enum class HistorySwitchSelects { +// OFF, +// ON, +// INHERIT +// } - enum class UrlHistoryOrButtonExecSelects { - URL_HISTORY, - BUTTON_EXEC, - INHERIT - } +// enum class UrlHistoryOrButtonExecSelects { +// URL_HISTORY, +// BUTTON_EXEC, +// INHERIT +// } enum class OnUpdateLastModifySelects { ON, @@ -87,10 +87,6 @@ object SettingVariableSelects { ON, OFF } - enum class ShellExecEnvSelects { - UBUNTU, - TERMUX - } enum class UbuntuExecModeSelects { foreground, background, diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/DragSortRecyclerAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/DragSortRecyclerAdapter.kt index f65b776c7..ad81ed1ab 100755 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/DragSortRecyclerAdapter.kt +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/DragSortRecyclerAdapter.kt @@ -1,14 +1,21 @@ package com.puutaro.commandclick.component.adapter +import android.content.Context +import android.graphics.drawable.Drawable import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.RequestBuilder +import com.puutaro.commandclick.R +import com.puutaro.commandclick.custom_view.OutlineTextView class DragSortRecyclerAdapter( - val dratSortList: MutableList + private val context: Context, + val dragSortList: MutableList, +// private val screenWidth: Float, ) : RecyclerView.Adapter() { // Provide a reference to the views for each data item @@ -16,15 +23,23 @@ class DragSortRecyclerAdapter( // you provide access to all the views for a data item in a view holder class ViewHolder(v: View) : RecyclerView.ViewHolder(v) { // each data item is just a string in this case - var textView: TextView - +// var textView: TextView + val itemTitleView = v.findViewById( + R.id.drag_sort_adapter_item_title + ) init { - textView = v.findViewById( - com.puutaro.commandclick.R.id.text_view_in_recycler_view - ) +// textView = v.findViewById( +// R.id.text_view_in_recycler_view +// ) + } } + val requestBuilder: RequestBuilder = + Glide.with(context) + .asDrawable() + .sizeMultiplier(0.1f) + @@ -62,12 +77,68 @@ class DragSortRecyclerAdapter( // - get element from your dataset at this position // - replace the contents of the view with that element // holder.imageView.setImageResource(iImages[position]) - holder.textView.text = dratSortList[position] + val titleText = dragSortList[position] +// text.chunked(10).map { +// partText -> +// BitmapTool.DrawText.drawTextToBitmap( +// context, +// partText +// ) +// }.let { +// partTextBitmap -> +// BitmapTool.concatByHorizon() +// } +// holder.textView.text = text +// val imageWidth = screenWidth - screenWidthPadding +// val imageHeight = (imageWidth * 10) / 25 +// FileSystems.updateFile( +// File(UsePath.cmdclickDefaultAppDirPath, "ldraw.txt").absolutePath, +// listOf( +// "text: ${titleText}", +// "imageWidth: ${imageWidth}", +// "imageHeight: ${imageHeight}", +// ).joinToString("\n") +// ) +// val bitmap = BitmapTool.DrawText.drawTextToBitmap( +// titleText, +// imageWidth, +// imageHeight +// ) +// if(position == 0){ +// bitmap?.let { +// FileSystems.writeFromByteArray( +// File(UsePath.cmdclickDefaultAppDirPath, "ltext.png").absolutePath, +// BitmapTool.convertBitmapToByteArray(it) +// ) +// } +// } + val itemTitleView = holder.itemTitleView + itemTitleView.apply { + text = titleText + setFillColor(R.color.ao) + setStrokeColor(R.color.white) + strokeWidthSrc = 3 + } +// itemTitleView.imageTintList = null +//// AppCompatResources.getColorStateList( +//// context, +//// R.color.terminal_color +//// ) +// Glide.with(context) +// .load(bitmap) +// .skipMemoryCache(true) +// .diskCacheStrategy(DiskCacheStrategy.NONE) +// .thumbnail(requestBuilder) +// .into(itemTitleView) +// YoYo.with(Techniques.FadeInRight) +// .duration(700) +// .repeat(5) +// .playOn(itemTitleView) // holder?.emailView.text = iEmails[position] } // Return the size of your dataset (invoked by the layout manager) override fun getItemCount(): Int { - return dratSortList.size + return dragSortList.size } } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/EditConstraintListAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/EditConstraintListAdapter.kt new file mode 100644 index 000000000..d1fe90f97 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/EditConstraintListAdapter.kt @@ -0,0 +1,1399 @@ +package com.puutaro.commandclick.component.adapter + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.drawable.Drawable +import android.util.TypedValue +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.FrameLayout +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.children +import androidx.core.view.setMargins +import androidx.core.view.setPadding +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.RequestBuilder +import com.google.android.material.card.MaterialCardView +import com.puutaro.commandclick.R +import com.puutaro.commandclick.common.variable.broadcast.scheme.BroadCastIntentSchemeForEdit +import com.puutaro.commandclick.common.variable.broadcast.scheme.BroadCastIntentSchemeTerm +import com.puutaro.commandclick.common.variable.path.UsePath +import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable +import com.puutaro.commandclick.fragment.EditFragment +import com.puutaro.commandclick.fragment.TerminalFragment +import com.puutaro.commandclick.fragment_lib.edit_fragment.common.EditComponent +import com.puutaro.commandclick.proccess.broadcast.BroadcastSender +import com.puutaro.commandclick.proccess.edit.image_action.ImageActionAsyncCoroutine +import com.puutaro.commandclick.proccess.edit.image_action.ImageActionManager +import com.puutaro.commandclick.proccess.edit.setting_action.SettingActionAsyncCoroutine +import com.puutaro.commandclick.proccess.edit.setting_action.SettingActionManager2 +import com.puutaro.commandclick.proccess.edit_list.EditConstraintFrameMaker +import com.puutaro.commandclick.proccess.edit_list.EditListConfig +import com.puutaro.commandclick.proccess.edit_list.config_settings.LayoutSettingsForEditList +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList +import com.puutaro.commandclick.proccess.ubuntu.BusyboxExecutor +import com.puutaro.commandclick.util.CommandClickVariables +import com.puutaro.commandclick.util.RecordNumToMapNameValueInHolder +import com.puutaro.commandclick.util.file.FileSystems +import com.puutaro.commandclick.util.file.MapListFileTool +import com.puutaro.commandclick.util.file.ReadText +import com.puutaro.commandclick.util.image_tools.ScreenSizeCalculator +import com.puutaro.commandclick.util.map.CmdClickMap +import com.puutaro.commandclick.util.map.FilePrefixGetter +import com.puutaro.commandclick.util.state.FannelInfoTool +import com.puutaro.commandclick.util.str.PairListTool +import com.puutaro.commandclick.util.str.SnakeCamelTool +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext +import java.io.File +import java.lang.ref.WeakReference + + +class EditConstraintListAdapter( + private val fragmentRef: WeakReference, + private val layoutInflater: LayoutInflater, + val fannelInfoMap: Map, + val setReplaceVariableMap: Map?, + private val settingActionAsyncCoroutine: SettingActionAsyncCoroutine, + private val imageActionAsyncCoroutine: ImageActionAsyncCoroutine, + private val globalVarNameToValueMap: Map?, + private val globalVarNameToBitmapMap: Map, + frameMapAndFrameTagToContentsMapListToTagIdList: Triple< + Map, + Map>>, + Map + >?, + val editListConfigMap: Map?, + val busyboxExecutor: BusyboxExecutor?, + val indexListMap: Map, + var lineMapList: MutableList>, + var fannelContentsList: List?, + private val density: Float, +): RecyclerView.Adapter() +{ + private val context = fragmentRef.get()?.context + private val listLimitSize = 300 + private val initSettingValMap = RecordNumToMapNameValueInHolder.parse( + fannelContentsList, + CommandClickScriptVariable.SETTING_SEC_START, + CommandClickScriptVariable.SETTING_SEC_END, + ) + private val initCmdValMap = RecordNumToMapNameValueInHolder.parse( + fannelContentsList, + CommandClickScriptVariable.CMD_SEC_START, + CommandClickScriptVariable.CMD_SEC_END, + ) + val totalSettingValMap = + (initSettingValMap ?: emptyMap()) + (initCmdValMap ?: emptyMap()) + val footerKeyPairListConMap: MutableMap = mutableMapOf() + private val layoutConfigMap = LayoutSettingsForEditList.getLayoutConfigMap( + editListConfigMap, + setReplaceVariableMap, + ) + private val layoutMargin = layoutConfigMap.get( + LayoutSettingsForEditList.LayoutSettingKey.MARGIN.key + ).let { + try{ + it?.toInt()?.let { + ScreenSizeCalculator.toDpByDensity( + it, + density, + ) + } + } catch (e: Exception){ + null + } + } + private val innerPadding = layoutConfigMap.get( + LayoutSettingsForEditList.LayoutSettingKey.INNER_PADDING.key + ).let { + try{ + it?.toInt()?.let { + ScreenSizeCalculator.toDpByDensity( + it, + density, + ) + } + } catch (e: Exception){ + null + } + } + private val innerMargin = layoutConfigMap.get( + LayoutSettingsForEditList.LayoutSettingKey.INNER_MARGIN.key + ).let { + try{ + it?.toInt()?.let { + ScreenSizeCalculator.toDpByDensity( + it, + density, + ) + } + } catch (e: Exception){ + null + } + } + private val layoutElevation = layoutConfigMap.get( + LayoutSettingsForEditList.LayoutSettingKey.ELEVATION.key + ).let { + try{ + it?.toFloat()?.let { + ScreenSizeCalculator.toDpForFloatByDensity( + it, + density, + ) + } + } catch (e: Exception){ + null + } + } + + private val layoutRadius = layoutConfigMap.get( + LayoutSettingsForEditList.LayoutSettingKey.RADIUS.key + ).let { + try{ + it?.toFloat()?.let { + ScreenSizeCalculator.toDpForFloatByDensity( + it, + density, + ) + } + } catch (e: Exception){ + null + } + } + + fun getCurrentSettingVals( + context: Context?, + settingValName: String, + ): String? { + val curSettingValsMap = RecordNumToMapNameValueInHolder.parse( + fannelContentsList, + CommandClickScriptVariable.SETTING_SEC_START, + CommandClickScriptVariable.SETTING_SEC_END, + ) ?: emptyMap() + val curCmdValsMap = RecordNumToMapNameValueInHolder.parse( + fannelContentsList, + CommandClickScriptVariable.CMD_SEC_START, + CommandClickScriptVariable.CMD_SEC_END, + ) ?: emptyMap() + val totalSettingValsMap = curSettingValsMap + curCmdValsMap + return totalSettingValsMap.get(settingValName) + } + private val frameMap = + frameMapAndFrameTagToContentsMapListToTagIdList?.first ?: emptyMap() + private val frameTagToContentsMapList = + frameMapAndFrameTagToContentsMapListToTagIdList?.second + private val tagToIdListSrc = + frameMapAndFrameTagToContentsMapListToTagIdList?.third +// .let { +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "leframeMapListToLinearMapList.txt").absolutePath, +// listOf( +// "lineMapList: ${lineMapList}", +// "frameMap: ${frameMap}", +// "frameTagToContentsMapList: ${frameTagToContentsMapList}", +// "tagToIdListSrc: ${it}", +// ).joinToString("\n\n\n") +// ) +// it +// } + private val plusKeyToSubKeyConWhere = + fannelInfoMap.map { + val key = SnakeCamelTool.snakeToCamel(it.key) + "${key}: ${it.value}" + }.joinToString(", ") + var deleteConfigMap: Map = mapOf() + private var recentAppDirPath = String() + private var filterPrefix = String() + private var filterSuffix = String() + + init { + if(lineMapList.size == 0) { + setListProperty() + } + } + + private val enableKey = EditComponent.Template.EditComponentKey.ENABLE.key + private val tagKey = EditComponent.Template.EditComponentKey.TAG.key + + private class KeyPairListConMapUpdater { + private var keyPairListConMap: MutableMap = mutableMapOf() + private val mutex = Mutex() + + suspend fun update( + tagKey: String, + keyToSubKeyCon: String? + ) { + if( + keyToSubKeyCon.isNullOrEmpty() + ) return + mutex.withLock { + keyPairListConMap.put(tagKey, keyToSubKeyCon) + } + } + + suspend fun get(): Map { + mutex.withLock { + return keyPairListConMap + } + } + } + + class EditListViewHolder( + val view: View + ): RecyclerView.ViewHolder(view) { + val materialCardView = + view.findViewById( + R.id.edit_constraint_adapter_mterial_card_view + ) + val bkFrameLayout = materialCardView.findViewById( + R.id.edit_constraint_adapter_bk_frame_layout + ) + val totalConstraintLayout = materialCardView.findViewById( + R.id.edit_constraint_adapter_constraint, + ) + val contentsLayoutList = listOf( + R.id.button_frame_layout1, + R.id.button_frame_layout2, + R.id.button_frame_layout3, + R.id.button_frame_layout4, + ).map { + totalConstraintLayout.findViewById(it) + } + private val keyPairListConMapUpdater = KeyPairListConMapUpdater() + suspend fun updateKeyPairListConMap( + tagKey: String, + keyToSubKeyCon: String? + ){ + keyPairListConMapUpdater.update( + tagKey, + keyToSubKeyCon + ) + } + + + suspend fun getKeyPairListConMap( + ): Map { + return keyPairListConMapUpdater.get() + } +// var keyPairListConMap: MutableMap = mutableMapOf() + var srcTitle = String() + var srcCon = String() + var srcImage = String() + } + + override fun getItemId(position: Int): Long { + setHasStableIds(true) + return super.getItemId(position) + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): EditListViewHolder { + val itemView = layoutInflater.inflate( + R.layout.edit_list_constraint_adapter_layout, + parent, + false + ) + return EditListViewHolder( + itemView + ) + } + + override fun getItemCount(): Int = lineMapList.size + + companion object { + + private val typeSeparator = EditComponent.Template.typeSeparator + private val onConsecKey = EditComponent.Template.EditComponentKey.ON_CONSEC.key + private val onClickViewsKey = + EditComponent.Template.EditComponentKey.CLICK_VIEWS.key + fun makeLinearFrameKeyPairsList( + linearFrameKeyPairsListCon: String? + ): List> { + return CmdClickMap.createMap( + linearFrameKeyPairsListCon, + typeSeparator + ) + } + } + + private val switchOn = EditComponent.Template.switchOn + private val switchOff = EditComponent.Template.switchOff + private val requestBuilderSrc: RequestBuilder? = + context?.let { + Glide.with(it) + .asDrawable() + .sizeMultiplier(0.1f) + } + private val delayTime = 1000L + private val outValue = let { + val outValueSrc = TypedValue() + context?.theme?.resolveAttribute( + android.R.attr.selectableItemBackground, + outValueSrc, + true + ) + outValueSrc + } + + override fun onBindViewHolder( + holder: EditListViewHolder, + editListPosition: Int + ) { + if( + editListPosition > listLimitSize + ) return + CoroutineScope(Dispatchers.IO).launch { + initListProperty(editListPosition) + if( + context == null + ) return@launch + val fragment = withContext(Dispatchers.IO) { + fragmentRef.get() + } ?: return@launch + val lineMap = lineMapList[editListPosition] + val initLineMapEl = async { + holder.srcTitle = withContext(Dispatchers.IO) { + lineMap.get( + ListSettingsForEditList.MapListPathManager.Key.SRC_TITLE.key + ) + } ?: String() + holder.srcCon = withContext(Dispatchers.IO) { + lineMap.get( + ListSettingsForEditList.MapListPathManager.Key.SRC_CON.key + ) + } ?: String() + holder.srcImage = withContext(Dispatchers.IO) { + lineMap.get( + ListSettingsForEditList.MapListPathManager.Key.SRC_IMAGE.key + ) + } ?: String() + } + val alreadyUseTagListMutex = Mutex() + val alreadyUseTagList = mutableListOf() + val frameTag = withContext(Dispatchers.IO) { + lineMap.get( + ListSettingsForEditList.MapListPathManager.Key.VIEW_LAYOUT_TAG.key + ).let { + if ( + !it.isNullOrEmpty() + ) return@let it + indexListMap.get( + ListSettingsForEditList.ListSettingKey.DEFAULT_FRAME_TAG.key + ) + } + } + if( + frameTag.isNullOrEmpty() + ) return@launch + initLineMapEl.await() + val viewInitJob = async { + withContext(Dispatchers.Main) { + val materialCardView = holder.materialCardView + val totalConstraintLayout = holder.totalConstraintLayout + val contentsLayoutList = totalConstraintLayout.children.filter { + it is FrameLayout + }.toList() as List + val cardViewSettingJob = async { + materialCardView.apply { + layoutElevation?.let { + elevation = it + } + layoutRadius?.let { + radius = it + } + val cardLinearParams = + layoutParams as GridLayoutManager.LayoutParams + layoutMargin?.let { + cardLinearParams.setMargins(it) + } + } + } + totalConstraintLayout.apply { + innerPadding?.let { + setPadding(it) + } + } + val hideContentsLayoutListJob = async { + contentsLayoutList.forEach { + it.visibility = View.GONE + } + } + listOf( + cardViewSettingJob, + hideContentsLayoutListJob, + ).forEach { it.await() } + } + } + val mapListElInfo = withContext(Dispatchers.IO) { + listOf( + "srcTitle: ${holder.srcTitle}", + "srcCon: ${holder.srcCon}", + "srcImage: ${holder.srcImage}", + "bindingAdapterPosition: ${holder.bindingAdapterPosition}", + ).joinToString(" ") + } + val isFrameTagDulidateErrJob = async { + withContext(Dispatchers.IO) frameTagCheck@{ + val alreadyUseTagListSrc = + EditComponent.AdapterSetter.AlreadyUseTagListHandler.get( + alreadyUseTagList, + alreadyUseTagListMutex + ) + val correctFrameTag = EditComponent.AdapterSetter.tagDuplicateErrHandler( + context, + EditComponent.Template.TagManager.TagGenre.FRAME_TAG, + frameTag, + alreadyUseTagListSrc, + mapListElInfo, + plusKeyToSubKeyConWhere, + ) + correctFrameTag?.let { + alreadyUseTagListMutex.withLock { + alreadyUseTagList.add(it) + } + } + val isDuplicateTagErr = correctFrameTag.isNullOrEmpty() + if ( + isDuplicateTagErr + ) return@frameTagCheck true + false + } + } + val totalMapListElInfo = + listOf( + "frameTag: ${frameTag}", + "mapListElInfo: ${mapListElInfo}", + plusKeyToSubKeyConWhere + ).joinToString(", ") + val frameKeyPairsConToVarNameValueMap = withContext(Dispatchers.IO) { + val frameKeyPairsConSrc = frameMap.get(frameTag) + EditComponent.Template.ReplaceHolder.replaceHolder( + frameKeyPairsConSrc, + holder.srcTitle, + holder.srcCon, + holder.srcImage, + holder.bindingAdapterPosition, + ).let { + innerFrameKeyPairsConSrc -> + if( + innerFrameKeyPairsConSrc.isNullOrEmpty() + ) return@let String() to emptyMap() + val settingActionManager = SettingActionManager2() + val varNameToValueMap = settingActionManager.exec( + fragment, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + settingActionAsyncCoroutine, + globalVarNameToValueMap?.map{ + it.key + }, + innerFrameKeyPairsConSrc, + totalMapListElInfo, + editConstraintListAdapterArg = this@EditConstraintListAdapter + ) + (globalVarNameToValueMap ?: emptyMap()) + CmdClickMap.replace( + innerFrameKeyPairsConSrc, + varNameToValueMap + ) to varNameToValueMap + } + } + val frameKeyPairsCon = frameKeyPairsConToVarNameValueMap.first + val frameVarNameValueMap = frameKeyPairsConToVarNameValueMap.second + val tagIdMap = withContext(Dispatchers.IO){ + tagToIdListSrc?.map { + val key = CmdClickMap.replace( + it.key, + frameVarNameValueMap + ) + key to it.value + }?.toMap() ?: emptyMap() + } + val varNameToBitmapMapInFrame = withContext(Dispatchers.IO){ + ImageActionManager().exec( + fragment, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + imageActionAsyncCoroutine, + globalVarNameToBitmapMap.map { + it.key + }, + globalVarNameToBitmapMap, + frameKeyPairsCon, + totalMapListElInfo, + ) + } +// FileSystems.updateFile( +// File( +// UsePath.cmdclickDefaultAppDirPath, +// "ltagIdMap.txt" +// ).absolutePath, +// listOf( +// "tagIdMap: ${tagIdMap}", +// ).joinToString("\n") + "\n\n============\n\n\n" +// ) + val frameKeyPairsList = withContext(Dispatchers.IO) { + makeLinearFrameKeyPairsList( + frameKeyPairsCon, + ) + } + +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "lviewLayout_inadapter${editListPosition}.txt").absolutePath, +// listOf( +// "frameTag: ${frameTag}", +// "indexListMap: ${indexListMap}", +// "frameMap: ${frameMap}", +// "frameKeyPairsList: ${frameKeyPairsList}", +// ).joinToString("\n\n") + "\n\n============\n\n" +// ) + val isClickEnable = withContext(Dispatchers.IO) { + EditComponent.Template.ClickManager.isClickEnable(frameKeyPairsList) + } + CoroutineScope(Dispatchers.IO).launch{ + withContext(Dispatchers.IO) { + if ( + !isClickEnable + ) return@withContext + holder.updateKeyPairListConMap( + frameTag, + frameKeyPairsCon, + ) + } + } + viewInitJob.await() + if( + isFrameTagDulidateErrJob.await() + ) return@launch + CoroutineScope(Dispatchers.IO).launch { +// FileSystems.updateFile( +// File(UsePath.cmdclickDefaultAppDirPath, "lframeTag.txt").absolutePath, +// listOf( +// "frameTag: ${frameTag}", +// "editListPosition: ${editListPosition}", +// "holder.bindingAdapterPosition: ${holder.bindingAdapterPosition}", +// "frameKeyPairsList: ${frameKeyPairsList}", +// ).joinToString("\n") +// ) + val frameId = 10000 + withContext(Dispatchers.Main) execSetFrame@{ + EditConstraintFrameMaker.make( + context, + frameId, + null, + holder.bkFrameLayout, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + frameKeyPairsList, + ViewGroup.LayoutParams.MATCH_PARENT, + frameTag, + totalSettingValMap, + totalMapListElInfo, + requestBuilderSrc, + density, + ) + } + frameClickHandle( + holder, + editListPosition, + holder.materialCardView, +// frameFrameLayout, + frameKeyPairsList, + isClickEnable, + ) + } + + val contentsChannel = Channel< + List>, + >(100) + if( + frameTagToContentsMapList.isNullOrEmpty() + ) return@launch + CoroutineScope(Dispatchers.IO).launch { + withContext(Dispatchers.IO) { + publishContents( + frameTag, + frameTagToContentsMapList, + frameVarNameValueMap, + holder.srcTitle, + holder.srcCon, + holder.srcImage, + holder.bindingAdapterPosition, + contentsChannel, + mapListElInfo, + ) + } + withContext(Dispatchers.IO) { + contentsChannel.close() + } + } + + CoroutineScope(Dispatchers.IO).launch { + val totalConstraintLayout = + holder.totalConstraintLayout + val contentsLayoutList = + holder.contentsLayoutList + for (contentsTagToKeyPairsList in contentsChannel) { +// FileSystems.updateFile( +// File(UsePath.cmdclickDefaultAppDirPath, "lcontentsTag.txt").absolutePath, +// listOf( +// "frameTag: ${frameTag}", +// "editListPosition: ${editListPosition}", +// "holder.bindingAdapterPosition: ${holder.bindingAdapterPosition}", +// "mapListElInfoForContentsTag: ${mapListElInfoForContentsTag}", +// "layoutWeight: ${layoutWeight}", +// "contentsTagToKeyPairsList: ${contentsTagToKeyPairsList}", +// ).joinToString("\n") +// ) + contentsTagToKeyPairsList.mapIndexed execSetContents@{ execSetContentsIndex, contentsTagToKeyPairs -> + async { + val contentsTagSrc = contentsTagToKeyPairs.first + val contentsKeyPairsListConSrc = + contentsTagToKeyPairs.second + val varNameToValueMap = + withContext(Dispatchers.IO) updateLinearKeyParsListCon@{ + EditComponent.AdapterSetter.makeFrameVarNameToValueMap( + fragment, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + settingActionAsyncCoroutine, + this@EditConstraintListAdapter, + ((globalVarNameToValueMap ?: emptyMap()) + frameVarNameValueMap).map{ + it.key + }, + frameVarNameValueMap, + "contentsTagSrc: ${contentsTagSrc}, ${totalMapListElInfo}", + contentsKeyPairsListConSrc, + holder.srcTitle, + holder.srcCon, + holder.srcImage, + holder.bindingAdapterPosition, + ) + } + val contentsVarNameToValueMap = + frameVarNameValueMap + varNameToValueMap + val contentsTag = CmdClickMap.replace( + contentsTagSrc, + contentsVarNameToValueMap + ) + val isContentsTagErrJob = + async { + val tagGenre = + EditComponent.Template.TagManager.TagGenre.CONTENTS_TAG + val isDuplicateTagErrJob = async { + withContext(Dispatchers.IO) { + val alreadyUseTagListSrc = + EditComponent.AdapterSetter.AlreadyUseTagListHandler.get( + alreadyUseTagList, + alreadyUseTagListMutex + ) + val correctContentsTag = + EditComponent.AdapterSetter.tagDuplicateErrHandler( + context, + tagGenre, + contentsTag, + alreadyUseTagListSrc, + totalMapListElInfo, + String(), + ) + correctContentsTag?.let { + alreadyUseTagListMutex.withLock { + alreadyUseTagList.add(it) + } + } + val isDuplicateTagErr = + correctContentsTag.isNullOrEmpty() + isDuplicateTagErr + } + } + isDuplicateTagErrJob.await() + } + val contentsKeyPairsListCon = + contentsKeyPairsListConSrc?.let { + CmdClickMap.replace( + it, + contentsVarNameToValueMap + ) + } + val contentsKeyPairsList = + withContext(Dispatchers.IO) { + makeLinearFrameKeyPairsList( + contentsKeyPairsListCon + ) + } + if( + isContentsTagErrJob.await() + ) return@async + withContext(Dispatchers.Main) setLinearFrameLayout@{ + withContext(Dispatchers.IO) { + PairListTool.getValue( + contentsKeyPairsList, + enableKey, + ) + }.let { enableStr -> + if ( + enableStr == switchOff + ) return@setLinearFrameLayout null + } + val idInt = withContext(Dispatchers.IO){ + tagIdMap.get( + contentsTag + ) + } +// FileSystems.updateFile( +// File( +// UsePath.cmdclickDefaultAppDirPath, +// "ltagIdMap_idInt.txt" +// ).absolutePath, +// listOf( +// "tagIdMap: ${tagIdMap}", +// "contentsTag: ${contentsTag}", +// "idInt: ${idInt}", +// ).joinToString("\n") + "\n\n============\n\n\n" +// ) + val extractContentsFrameLayout = + contentsLayoutList.getOrNull(execSetContentsIndex) + ?: idInt?.let { + totalConstraintLayout + ?.findViewById(it) + } + val contentsFrameLayout = let { + extractContentsFrameLayout + ?: withContext(Dispatchers.Main) { + EditComponent.AdapterSetter.makeContentsFrameLayout( + context + ) + } + }.apply { + id = idInt ?: id + } + CoroutineScope(Dispatchers.IO).launch { +// val varNameToBitmapMapInContents = + withContext(Dispatchers.IO){ + val topLevelVarNameToBitmapMap = + globalVarNameToBitmapMap + varNameToBitmapMapInFrame + ImageActionManager().exec( + fragment, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + imageActionAsyncCoroutine, + topLevelVarNameToBitmapMap.map { + it.key + }, + topLevelVarNameToBitmapMap, + contentsKeyPairsListCon, + "contentsTag: ${contentsTag}, ${totalMapListElInfo}", + ) + } + } + if (extractContentsFrameLayout == null) { + withContext(Dispatchers.Main) { + totalConstraintLayout?.addView( + contentsFrameLayout + ) + } + } + CoroutineScope(Dispatchers.Main).launch { +// withContext(Dispatchers.IO) { +// if(idInt == 10100) { +// FileSystems.updateFile( +// File( +// UsePath.cmdclickDefaultAppDirPath, +// "lcontentsTagBerore.txt" +// ).absolutePath, +// listOf( +// "frameTag: ${frameTag}", +// "editListPosition: ${editListPosition}", +// "holder.bindingAdapterPosition: ${holder.bindingAdapterPosition}", +// "mapListElInfoForContentsTag: ${mapListElInfoForContentsTag}", +// "layoutWeight: ${layoutWeight}", +// "contentsTag: ${contentsTag}", +// "\n\ncontentsKeyPairsListConSrc: ${contentsKeyPairsListConSrc}\n\n", +// "\n\ncontentsKeyPairsList: ${contentsKeyPairsList}\n\n", +// ).joinToString("\n") + "\n\n==============\n\n\n" +// ) +// } +// } + EditConstraintFrameMaker.make( + context, + idInt, + tagIdMap, + contentsFrameLayout, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + contentsKeyPairsList, + 0, + contentsTag, + totalSettingValMap, + "contentsTag: ${contentsTag}, ${totalMapListElInfo}", + requestBuilderSrc, + density, + ) + } + CoroutineScope(Dispatchers.Main).launch { + clickHandler( + holder, + editListPosition, + contentsKeyPairsList, + contentsTag, + contentsKeyPairsListCon, + contentsFrameLayout, + ) + } + } + if ( + isContentsTagErrJob.await() + ) { + return@async + } + } + } + } + } + } + } + + var editAdapterClickListener: OnEditAdapterClickListener? = null + interface OnEditAdapterClickListener { + fun onEditAdapterClick( + itemView: View, + holder: EditListViewHolder, + editListPosition: Int, + ) + } + + var editAdapterTouchDownListener: OnEditAdapterTouchDownListener? = null + interface OnEditAdapterTouchDownListener { + fun onEditAdapterTouchDown( + itemView: View, + holder: EditListViewHolder, + editListPosition: Int, + ) + } + + var editAdapterTouchUpListener: OnEditAdapterTouchUpListener? = null + interface OnEditAdapterTouchUpListener { + fun onEditAdapterTouchUp( + itemView: View, + holder: EditListViewHolder, + editListPosition: Int, + ) + } + + fun handleClickEvent( + fragment: Fragment, + editListRecyclerView: RecyclerView, + tag: String, + settingValue: String?, + indexListPosition: Int, + frameOrLinearCon: String, + ){ + updateAndSaveMainFannel( + tag, + settingValue, + frameOrLinearCon, + ) + MapListUpdater.updateLineMapList( + fragment, + fannelInfoMap, + setReplaceVariableMap, + editListRecyclerView, + indexListMap, + layoutConfigMap, +// lineMapList, + indexListPosition, + ) + } + + private object MapListUpdater { + fun updateLineMapList( + fragment: Fragment?, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + editListRecyclerView: RecyclerView, + indexListMap: Map, + layoutConfigMap: Map, +// lineMapList: List>, + indexListPosition: Int, + ) { + if ( + indexListPosition == 0 + || fragment == null + ) return + val enableClickUpdate = + LayoutSettingsForEditList.howClickUpdate( + fannelInfoMap, + setReplaceVariableMap, + layoutConfigMap + ) + if ( + !enableClickUpdate + ) return + execUpdateLineMapList( + fragment, + fannelInfoMap, + setReplaceVariableMap, + editListRecyclerView, + indexListMap, + indexListPosition + ) + } + + private fun execUpdateLineMapList( + fragment: Fragment?, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + editRecyclerView: RecyclerView, + indexListMap: Map, + bindingAdapterPosition: Int, + ) { + val sortType = ListSettingsForEditList.getSortType( + fannelInfoMap, + setReplaceVariableMap, + indexListMap + ) + when (sortType) { + ListSettingsForEditList.SortByKey.SORT, + ListSettingsForEditList.SortByKey.REVERSE + -> return + + ListSettingsForEditList.SortByKey.LAST_UPDATE, + -> { + } + } + val editConstraintListAdapter = editRecyclerView.adapter as EditConstraintListAdapter + val lineMap = + editConstraintListAdapter.lineMapList.getOrNull( + bindingAdapterPosition + ) ?: return + val mapListPath = FilePrefixGetter.get( + fannelInfoMap, + setReplaceVariableMap, + indexListMap, + ListSettingsForEditList.ListSettingKey.MAP_LIST_PATH.key, + ) + MapListFileTool.insertMapFileInFirst( + mapListPath, + lineMap + ) + when(fragment){ + is EditFragment -> BroadcastSender.normalSend( + fragment.context, + BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action + ) + is TerminalFragment -> BroadcastSender.normalSend( + fragment.context, + BroadCastIntentSchemeTerm.EDIT_INDEX_LIST_UPDATE.action + ) + } + + } + } + + private fun updateAndSaveMainFannel( + tag: String, + settingValue: String?, + frameOrLinearCon: String, + ){ + updateMainFannelList( + tag, + settingValue, + ) + MainFannelUpdater.saveFannelCon( + fannelContentsList, + fannelInfoMap, + frameOrLinearCon, + ) + } + + + fun updateMainFannelList( + tag: String, + settingValue: String?, + ){ + val updateSettingValsCon = settingValue?.let { + listOf( + "${tag}=${settingValue}" + ).joinToString("\n") + } ?: String() + initSettingValMap?.contains(tag)?.let{ + if(!it) return@let + MainFannelUpdater.makeUpdateMainFannelList( + fannelContentsList, + updateSettingValsCon, + CommandClickScriptVariable.SETTING_SEC_START, + CommandClickScriptVariable.SETTING_SEC_END, + ).let updateFannel@ { + updateFannelList -> + if( + updateFannelList.isNullOrEmpty() + || fannelContentsList == updateFannelList + ) return@updateFannel + fannelContentsList = updateFannelList + } + } + initCmdValMap?.contains(tag)?.let{ + if(!it) return@let + MainFannelUpdater.makeUpdateMainFannelList( + fannelContentsList, + updateSettingValsCon, + CommandClickScriptVariable.CMD_SEC_START, + CommandClickScriptVariable.CMD_SEC_END, + ).let updateFannel@ { + updateFannelList -> + if( + updateFannelList.isNullOrEmpty() + || fannelContentsList == updateFannelList + ) return@updateFannel + fannelContentsList = updateFannelList + } + } + } + + fun saveFannelCon() { + MainFannelUpdater.execSaveFannelCon( + fannelInfoMap, + fannelContentsList + ) + } + + private suspend fun frameClickHandle( + holder: EditListViewHolder, + editListPosition: Int, + frameFrameLayout: MaterialCardView?, + frameKeyPairsList: List>, + enableClick: Boolean, + ){ + if ( + frameFrameLayout == null + ) return + val isConsec = + withContext(Dispatchers.IO) { + PairListTool.getValue( + frameKeyPairsList, + onConsecKey, + ) == switchOn + } + + withContext(Dispatchers.Main) { + frameFrameLayout.isClickable = enableClick +// rippleColor = context.getColorStateList(R.color.trans) +// setBackgroundResource(0) + } + if(!enableClick) return + withContext(Dispatchers.Main) { + when (isConsec) { + true -> with(frameFrameLayout) { + setOnTouchListener(android.view.View.OnTouchListener { v, event -> + when (event.action) { + android.view.MotionEvent.ACTION_DOWN -> { + editAdapterTouchDownListener?.onEditAdapterTouchDown( + frameFrameLayout, + holder, + editListPosition + ) + } + + android.view.MotionEvent.ACTION_UP, + android.view.MotionEvent.ACTION_CANCEL, + -> { + editAdapterTouchUpListener?.onEditAdapterTouchUp( + frameFrameLayout, + holder, + editListPosition + ) + v.performClick() + } + } + true + }) + } + + else -> frameFrameLayout.setOnClickListener { + editAdapterClickListener?.onEditAdapterClick( + frameFrameLayout, + holder, + editListPosition, + ) + } + } + } + } + + private suspend fun publishContents( + frameTag: String, + frameTagToContentsMapList: Map>>, + frameVarNameToValueMap: Map, + srcTitle: String, + srcCon: String, + srcImage: String, + bindingAdapterPosition: Int, + contentsChannel: Channel< + List>, + >, + mapListElInfo: String, + ){ + val frameTagToContentsKeysListMapWithReplace = + withContext(Dispatchers.IO) { + frameTagToContentsMapList.map { + val key = CmdClickMap.replace( + it.key, + frameVarNameToValueMap, + ) + key to it.value + }.toMap() + } + withContext(Dispatchers.IO) { + val contentsKeysListMapWithReplace = + frameTagToContentsKeysListMapWithReplace.get(frameTag) + ?: return@withContext + val jobList = contentsKeysListMapWithReplace.mapIndexed setContents@{ contentsIndex, contentsKeyValues -> + async { + val contentsTagToKeyPairsList = withContext(Dispatchers.IO) { + EditComponent.AdapterSetter.makeContentsTagToKeyPairsList( + context, + contentsKeyValues, + frameVarNameToValueMap, + srcTitle, + srcCon, + srcImage, + bindingAdapterPosition, + mapListElInfo, + ) + } + contentsChannel.send( + contentsTagToKeyPairsList + ) + } + } + jobList.forEach { it.await() } + } + } + + private suspend fun clickHandler( + holder: EditListViewHolder, + editListPosition: Int, + contentsKeyPairsList: List>, + contentsTag: String, + contentsKeyPairsListCon: String?, + contentsFrameLayout: FrameLayout, + ){ + if( + context == null + ) return + val enableClick = + EditComponent.Template.ClickManager.isClickEnable(contentsKeyPairsList) + + CoroutineScope(Dispatchers.IO).launch { + holder.updateKeyPairListConMap( + contentsTag, + contentsKeyPairsListCon + ) + } +// FileSystems.updateFile( +// File(UsePath.cmdclickDefaultAppDirPath, "lclicllll.txt").absolutePath, +// listOf( +// "onClick: ${onClick}", +// "isJsAc: ${isJsAc}", +// "disableClick: ${disableClick}", +// "contentsKeyPairsListCon: ${contentsKeyPairsListCon}" +// ).joinToString("\n") + "\n==========\n\n" +// ) + val clickViewList = + withContext(Dispatchers.IO) { + EditComponent.Template.ClickViewManager.makeClickViewList( + contentsFrameLayout.children, + PairListTool.getValue( + contentsKeyPairsList, + onClickViewsKey, + ) + ) + } + val isConsec = withContext(Dispatchers.IO) { + PairListTool.getValue( + contentsKeyPairsList, + onConsecKey, + ) == EditComponent.Template.switchOn + } + clickViewList.forEach { clickView -> + withContext(Dispatchers.Main) { + clickView.isClickable = enableClick + } + CoroutineScope(Dispatchers.IO).launch { + withContext(Dispatchers.IO){ + delay(delayTime) + } + withContext(Dispatchers.Main){ + when(enableClick) { + false -> clickView.setBackgroundResource(0) + else -> clickView.setBackgroundResource(outValue.resourceId) + } + } + } + if(!enableClick) return@forEach + withContext(Dispatchers.Main) { + clickView.setBackgroundResource(outValue.resourceId) + clickView.isClickable = true + when (isConsec) { + true -> + with(clickView) { + setOnTouchListener(android.view.View.OnTouchListener { v, event -> + when (event.action) { + android.view.MotionEvent.ACTION_DOWN -> { + editAdapterTouchDownListener?.onEditAdapterTouchDown( + contentsFrameLayout, + holder, + editListPosition + ) + } + + android.view.MotionEvent.ACTION_UP, + android.view.MotionEvent.ACTION_CANCEL, + -> { + editAdapterTouchUpListener?.onEditAdapterTouchUp( + contentsFrameLayout, + holder, + editListPosition + ) + v.performClick() + } + } + true + }) + } + + else -> clickView.setOnClickListener { + editAdapterClickListener?.onEditAdapterClick( + contentsFrameLayout, + holder, + editListPosition, + ) + } + } + } + } + } + + + object MainFannelUpdater { + + fun saveFannelCon( + saveFannelConList: List?, + fannelInfoMap: Map, + frameOrLinearCon: String, + ) { + if ( + saveFannelConList.isNullOrEmpty() + ) return + val isSave = PairListTool.getValue( + makeLinearFrameKeyPairsList( + frameOrLinearCon, + ), + EditComponent.Template.EditComponentKey.ON_SAVE.key, + ) == EditComponent.Template.switchOn + if (!isSave) return + execSaveFannelCon( + fannelInfoMap, + saveFannelConList, + ) + } + + fun execSaveFannelCon( + fannelInfoMap: Map, + saveFannelConList: List?, + ){ + if( + saveFannelConList.isNullOrEmpty() + ) return + val fannelFile = FannelInfoTool.getCurrentFannelName(fannelInfoMap).let { + File(UsePath.cmdclickDefaultAppDirPath, it) + } + if( + ReadText(fannelFile.absolutePath).textToList() == saveFannelConList + ) return + FileSystems.writeFile( + fannelFile.absolutePath, + saveFannelConList.joinToString("\n") + ) + } + fun makeUpdateMainFannelList( + fannelContentsListSrc: List?, + updateSettingValsCon: String?, + startHolder: String, + endHolder: String, + ): List? { + if ( + updateSettingValsCon.isNullOrEmpty() + || fannelContentsListSrc.isNullOrEmpty() + ) return null + return CommandClickVariables.replaceVariableInHolder( + fannelContentsListSrc, + updateSettingValsCon, + startHolder, + endHolder, + ) + } + } + + private fun initListProperty( + editListPosition: Int, + ){ + if( + editListPosition != 0 + ) return +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "layout.txt").absolutePath, +// listOf( +// "frameMapListToLinearMapList: ${frameMapListToLinearMapList}", +// "frameMap: ${frameMap}", +// "linearMapList: ${frameTagToLinearKeysListMap}", +// ).joinToString("\n\n") +// ) + setListProperty() + } + + private fun setListProperty(){ + recentAppDirPath = UsePath.cmdclickDefaultAppDirPath + deleteConfigMap = EditListConfig.getConfigKeyMap( + editListConfigMap, + EditListConfig.EditListConfigKey.DELETE.key, + setReplaceVariableMap, + ) + filterPrefix = + FilePrefixGetter.get( + fannelInfoMap, + setReplaceVariableMap, + indexListMap, + ListSettingsForEditList.ListSettingKey.PREFIX.key + ) ?: String() + filterSuffix = + FilePrefixGetter.get( + fannelInfoMap, + setReplaceVariableMap, + indexListMap, + ListSettingsForEditList.ListSettingKey.SUFFIX.key + ) ?: String() + } + fun getLayoutConfigMap(): Map { + return layoutConfigMap + } +} diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/FannelIndexListAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/FannelIndexListAdapter.kt deleted file mode 100755 index 2fe0d7d3e..000000000 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/FannelIndexListAdapter.kt +++ /dev/null @@ -1,228 +0,0 @@ -package com.puutaro.commandclick.component.adapter - -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.appcompat.widget.AppCompatImageView -import androidx.appcompat.widget.AppCompatTextView -import androidx.fragment.app.FragmentActivity -import androidx.recyclerview.widget.RecyclerView -import coil.load -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.util.CcPathTool -import com.puutaro.commandclick.util.CommandClickVariables -import com.puutaro.commandclick.proccess.qr.QrLogo -import com.puutaro.commandclick.util.file.ReadText -import com.puutaro.commandclick.util.SettingVariableReader -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext -import java.io.File -import java.lang.ref.WeakReference - - -class FannelIndexListAdapter( - val cmdIndexFragmentRef: WeakReference, -// val currentAppDirPath: String, - var fannelIndexList: MutableList -): RecyclerView.Adapter() -{ - val context = cmdIndexFragmentRef.get()?.context - val activity = cmdIndexFragmentRef.get()?.activity - private val maxTakeSize = 150 - private val qrPngNameRelativePath = UsePath.qrPngRelativePath - - class FannelIndexListViewHolder( - val activity: FragmentActivity?, - val view: View - ): RecyclerView.ViewHolder(view) { - - val fannelContentsQrLogoView = - view.findViewById( - com.puutaro.commandclick.R.id.fannel_index_list_qr_log - ) - val fannelNameTextView = - view.findViewById( - com.puutaro.commandclick.R.id.fannel_index_list_adapter_name - ) - } - - override fun getItemId(position: Int): Long { - setHasStableIds(true) - return super.getItemId(position) - } - - override fun onCreateViewHolder( - parent: ViewGroup, - viewType: Int - ): FannelIndexListViewHolder { - val layoutInflater = LayoutInflater.from(parent.context) - val itemView = layoutInflater.inflate( - com.puutaro.commandclick.R.layout.fannel_index_list_adapter_layout, - parent, - false - ) - val fannelIndexListViewHolder = FannelIndexListViewHolder( - activity, - itemView - ) - return fannelIndexListViewHolder - } - - override fun getItemCount(): Int = fannelIndexList.size - - override fun onBindViewHolder( - holder: FannelIndexListViewHolder, - position: Int - ) { - val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath - CoroutineScope(Dispatchers.IO).launch { - val fannelName = fannelIndexList[position] - withContext(Dispatchers.Main) { - holder.fannelNameTextView.text = fannelName - } - val fannelConList = withContext(Dispatchers.IO) { - ReadText( - File(cmdclickDefaultAppDirPath, fannelName).absolutePath, - ).textToList().take(maxTakeSize) - } - val fannelDirName = CcPathTool.makeFannelDirName(fannelName) - val qrPngPath = "${cmdclickDefaultAppDirPath}/${fannelDirName}/${qrPngNameRelativePath}" - val qrPngPathObj = File(qrPngPath) - - withContext(Dispatchers.Main) { - if(qrPngPathObj.isFile){ - holder.fannelContentsQrLogoView.load(qrPngPath) - return@withContext - } - QrLogo.createAndSaveWithGitCloneOrFileCon( -// currentAppDirPath, - context, - fannelName, - false, - )?.let { - holder.fannelContentsQrLogoView.setImageDrawable(it) - } - } - val fannelConBackGroundColorInt = withContext(Dispatchers.IO) { - setFannelContentsBackColor( - fannelConList, - fannelName, - ) - } - withContext(Dispatchers.Main){ - holder.fannelContentsQrLogoView.setBackgroundColor( - context?.getColor(fannelConBackGroundColorInt) as Int - ) - withContext(Dispatchers.Main) { - val itemView = holder.itemView - - itemView.setOnLongClickListener { - itemLongClickListener?.onItemLongClick( - itemView, - holder, - position - ) - true - } - itemView.setOnClickListener { - fannelNameClickListener?.onFannelNameClick( - itemView, - holder - ) - } - val fannelContentsQrLogo = holder.fannelContentsQrLogoView - fannelContentsQrLogo.setOnClickListener { - fannelQrLogoClickListener?.onFannelContentsClick( - itemView, - holder - ) - } - fannelContentsQrLogo.setOnLongClickListener { - qrLongClickListener?.onQrLongClick( - fannelContentsQrLogo, - holder, - position - ) - true - } - } - } - } - } - - var fannelNameClickListener: OnFannelNameItemClickListener? = null - interface OnFannelNameItemClickListener { - fun onFannelNameClick( - itemView: View, - holder: FannelIndexListViewHolder - ) - } - - var fannelQrLogoClickListener: OnFannelQrLogoItemClickListener? = null - interface OnFannelQrLogoItemClickListener { - fun onFannelContentsClick( - itemView: View, - holder: FannelIndexListViewHolder - ) - } - - var itemLongClickListener: OnItemLongClickListener? = null - var qrLongClickListener: OnQrLongClickListener? = null - interface OnItemLongClickListener { - fun onItemLongClick( - itemView: View, - holder: FannelIndexListViewHolder, - position: Int - ) - } - - interface OnQrLongClickListener { - fun onQrLongClick( - imageView: AppCompatImageView, - holder: FannelIndexListViewHolder, - position: Int - ) - } - - private fun setFannelContentsBackColor( - fannelConList: List, - fannelName: String, - ): Int { - if( - context == null - ) return com.puutaro.commandclick.R.color.fannel_icon_color -// val languageType = -// CommandClickVariables.judgeJsOrShellFromSuffix(fannelName) - -// val languageTypeToSectionHolderMap = -// CommandClickScriptVariable.LANGUAGE_TYPE_TO_SECTION_HOLDER_MAP.get(languageType) -// val settingSectionStart = languageTypeToSectionHolderMap?.get( -// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_START -// ) as String -// val settingSectionEnd = languageTypeToSectionHolderMap.get( -// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_END -// ) as String - val settingVariableList = CommandClickVariables.extractValListFromHolder( - fannelConList, - CommandClickScriptVariable.SETTING_SEC_START, - CommandClickScriptVariable.SETTING_SEC_END, -// settingSectionStart, -// settingSectionEnd - ) - val editExecuteValue = SettingVariableReader.getStrValue( - settingVariableList, - CommandClickScriptVariable.EDIT_EXECUTE, - CommandClickScriptVariable.EDIT_EXECUTE_DEFAULT_VALUE - ) - if( - editExecuteValue - == SettingVariableSelects.EditExecuteSelects.ALWAYS.name - ) return com.puutaro.commandclick.R.color.terminal_color - return com.puutaro.commandclick.R.color.fannel_icon_color - } -} diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/FannelManageAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/FannelManageAdapter.kt index 16c86a6cc..b583ef55b 100755 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/FannelManageAdapter.kt +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/FannelManageAdapter.kt @@ -217,7 +217,7 @@ class FannelManageAdapter( holder.fannelNameTextView.text = displayFannelName } withContext(Dispatchers.Main) { - holder.titleTextView.outlineWidthSrc = 5 + holder.titleTextView.strokeWidthSrc = 5 when(fannelName == homeFannel){ true -> { holder.titleTextView.text = "\uD83C\uDFE0" diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/GridListAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/GridListAdapter.kt new file mode 100644 index 000000000..b80ec24a1 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/GridListAdapter.kt @@ -0,0 +1,291 @@ +package com.puutaro.commandclick.component.adapter + +import android.animation.AnimatorSet +import android.animation.ValueAnimator +import android.graphics.drawable.Drawable +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.ViewTreeObserver +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.RequestBuilder +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.daimajia.androidanimations.library.Techniques +import com.daimajia.androidanimations.library.YoYo +import com.google.android.material.imageview.ShapeableImageView +import com.puutaro.commandclick.R +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class GridListAdapter( + val imagePathList: List, +): RecyclerView.Adapter() { + + class GridListViewHolder(val view: View): RecyclerView.ViewHolder(view) { + val itemImageView = view.findViewById(R.id.grid_list_v2_adapter_image) + } + + override fun getItemCount(): Int = imagePathList.size + + override fun getItemId(position: Int): Long { + //return super.getItemId(position) + return position.toLong() + } + + override fun getItemViewType(position: Int): Int { + //return super.getItemViewType(position) + return position + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): GridListViewHolder { + val layoutInflater = LayoutInflater.from(parent.context) + val itemView = layoutInflater.inflate( + R.layout.grid_list_v2_adapter_layout, + parent, + false + ) + val promptListViewHolder = + GridListViewHolder(itemView) + itemView.setOnClickListener { + itemClickListener?.onItemClick(promptListViewHolder) + } + return promptListViewHolder + } + + private val cornerRateMap = makeCornerRateMap() + + override fun onBindViewHolder( + holder: GridListViewHolder, + position: Int + ) { + CoroutineScope(Dispatchers.IO).launch { + val imagePath = withContext(Dispatchers.IO){ + imagePathList.get(position) + } ?: return@launch + withContext(Dispatchers.Main){ + val itemImageView = holder.itemImageView + val itemImageContext = itemImageView.context + itemImageView.apply { + viewTreeObserver?.addOnPreDrawListener(object : + ViewTreeObserver.OnPreDrawListener { + override fun onPreDraw(): Boolean { + viewTreeObserver?.removeOnPreDrawListener(this) + CoroutineScope(Dispatchers.Main).launch { + // Remove listener because we don't want this called before _every_ frame +// val cornerFirstStopAnimator = withContext(Dispatchers.IO) { +// makeCornerAnimation( +// itemImageView, +// cornerRateMap, +// 100L, +// 0f, +// ) +// } +// val cornerChangeAnimator = withContext(Dispatchers.IO) { +// makeCornerAnimation( +// +// itemImageView, +// cornerRateMap, +// 1L, +// null, +// ) +// } + // アニメーションセットを作成し、順に再生 + withContext(Dispatchers.Main) { + setShape( + itemImageView, + cornerRateMap, + ) +// val animatorSet = AnimatorSet().apply { +// playSequentially( +// cornerFirstStopAnimator, +// cornerChangeAnimator +// ) +// } +// animatorSet.start() + } + } + return true // true because we don't want to skip this frame + } + }) + } +// withContext(Dispatchers.IO){ +// delay(200) +// } + + val requestBuilder: RequestBuilder = + Glide.with(itemImageContext) + .asDrawable() + .sizeMultiplier(0.1f) + Glide + .with(itemImageContext) + .load(imagePath) + .skipMemoryCache( true ) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .thumbnail( requestBuilder ) + .into(itemImageView) +// YoYo.with(Techniques.RotateInUpRight) +// .duration(150) +// .repeat(0) +// .playOn(itemImageView) + } + withContext(Dispatchers.Main){ + holder.itemView.setOnClickListener { + itemClickListener?.onItemClick( + holder + ) + } + } + } + } + + var itemClickListener: OnItemClickListener? = null + interface OnItemClickListener { + fun onItemClick(holder: GridListViewHolder) + } + + private fun makeCornerAnimation( + itemImageView: ShapeableImageView, + curCornerRateMap: Map, + duration: Long, + fixAnimateValue: Float? = null + ): ValueAnimator { + val curWidth = itemImageView.width + val cornerChangeAnimator = ValueAnimator.ofFloat(0f, duration.toFloat()).apply setCornerChange@{ + this.duration = duration + this.addUpdateListener { valueAnimator -> +// val radius = valueAnimator.animatedValue as Float + val shapeAppearanceModel = + itemImageView.shapeAppearanceModel.toBuilder() + .setTopLeftCornerSize( + culcRadius( + curWidth, + makeValueFunc( + duration, + fixAnimateValue ?: valueAnimator.animatedValue as Float, + curCornerRateMap[CornerKey.TOP_LEFT] as Float, + ) +// ((2 * duration - cornerChangeAnimator.animatedValue as Float) * 0.5f) / duration + ) + ) + .setTopRightCornerSize( + culcRadius( + curWidth, + makeValueFunc( + duration, + fixAnimateValue ?: valueAnimator.animatedValue as Float, + curCornerRateMap[CornerKey.TOP_RIGHT] as Float, + ) +// ((2 * duration - cornerChangeAnimator.animatedValue as Float) * 0.05f) / duration + ) + ) + .setBottomRightCornerSize( + culcRadius( + curWidth, + makeValueFunc( + duration, + fixAnimateValue ?: valueAnimator.animatedValue as Float, + curCornerRateMap[CornerKey.BOTTOM_RIGHT] as Float, + ) +// ((2 * duration - cornerChangeAnimator.animatedValue as Float) * 0.5f) / duration + ) + ) + .setBottomLeftCornerSize( + culcRadius( + curWidth, + makeValueFunc( + duration, + fixAnimateValue ?: valueAnimator.animatedValue as Float, + curCornerRateMap[CornerKey.BOTTOM_LEFT] as Float, + ) +// ((2 * duration - cornerChangeAnimator.animatedValue as Float) * 0.05f) / duration + ) + ) + .build() + itemImageView.shapeAppearanceModel = shapeAppearanceModel + } + } + return cornerChangeAnimator + } + + private fun setShape( + itemImageView: ShapeableImageView, + curCornerRateMap: Map, + ){ + val curWidth = itemImageView.width + val shapeAppearanceModel = + itemImageView.shapeAppearanceModel.toBuilder() + .setTopLeftCornerSize( + culcRadius( + curWidth, + curCornerRateMap[CornerKey.TOP_LEFT] as Float + ) + ) + .setTopRightCornerSize( + culcRadius( + curWidth, + curCornerRateMap[CornerKey.TOP_RIGHT] as Float + ) + ) + .setBottomRightCornerSize( + culcRadius( + curWidth, + curCornerRateMap[CornerKey.BOTTOM_RIGHT] as Float, + ) + ) + .setBottomLeftCornerSize( + culcRadius( + curWidth, + curCornerRateMap[CornerKey.BOTTOM_LEFT] as Float, + ) + ) + .build() + itemImageView.shapeAppearanceModel = shapeAppearanceModel + } + + private enum class CornerKey{ + TOP_LEFT, + TOP_RIGHT, + BOTTOM_RIGHT, + BOTTOM_LEFT, + } + + private fun makeValueFunc( + duration: Long, + curDuration: Float, + goalRRate: Float, + ): Float { + val value = let { + val start = 3000F + val end = duration.toFloat() + start - ( (start - end) * curDuration / duration ) + } + return (value * goalRRate) / duration + } + + private fun makeCornerRateMap(): Map { + val surplus = (0..1).random() + val cornerRateList = (1..4).map { + if (it % 2 == surplus) 0.4f else 0.02f + } + return mapOf( + CornerKey.TOP_LEFT to cornerRateList[0], + CornerKey.TOP_RIGHT to cornerRateList[1], + CornerKey.BOTTOM_RIGHT to cornerRateList[2], + CornerKey.BOTTOM_LEFT to cornerRateList[3], + ) + } + + private fun culcRadius( + width: Int, + rate: Float, + ): Float { + return width * rate + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/HistoryListAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/HistoryListAdapter.kt index 7b570c24c..0b2877439 100644 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/HistoryListAdapter.kt +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/HistoryListAdapter.kt @@ -45,33 +45,33 @@ class HistoryListAdapter( companion object { val listHistoryPath = File(UsePath.fannelSystemDirPath, "listHistory.tsv").absolutePath - fun saveItemToList( - context: Context?, - menuName: String - ) { - val sharePref = FannelInfoTool.getSharePref(context) - CoroutineScope(Dispatchers.IO).launch { - val currentFannelName = withContext(Dispatchers.IO) { - FannelInfoTool.getStringFromFannelInfo( - sharePref, - FannelInfoSetting.current_fannel_name - ) - } - val listHistoryPath = withContext(Dispatchers.IO) { - ScriptPreWordReplacer.replace( - listHistoryPath, - currentFannelName, - ) - } - withContext(Dispatchers.IO) { - val insertLine = "${menuName}\t${LocalDateTime.now()}" - TsvTool.insertByLastUpdate( - listHistoryPath, - insertLine - ) - } - } - } +// fun saveItemToList( +// context: Context?, +// menuName: String +// ) { +// val sharePref = FannelInfoTool.getSharePref(context) +// CoroutineScope(Dispatchers.IO).launch { +// val currentFannelName = withContext(Dispatchers.IO) { +// FannelInfoTool.getStringFromFannelInfo( +// sharePref, +// FannelInfoSetting.current_fannel_name +// ) +// } +// val listHistoryPath = withContext(Dispatchers.IO) { +// ScriptPreWordReplacer.replace( +// listHistoryPath, +// currentFannelName, +// ) +// } +// withContext(Dispatchers.IO) { +// val insertLine = "${menuName}\t${LocalDateTime.now()}" +// TsvTool.insertByLastUpdate( +// listHistoryPath, +// insertLine +// ) +// } +// } +// } } override fun getView( diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/ListIndexAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/ListIndexAdapter.kt deleted file mode 100644 index 0ce055b26..000000000 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/ListIndexAdapter.kt +++ /dev/null @@ -1,526 +0,0 @@ -package com.puutaro.commandclick.component.adapter - -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.RelativeLayout -import androidx.appcompat.widget.AppCompatImageView -import androidx.appcompat.widget.AppCompatTextView -import androidx.appcompat.widget.LinearLayoutCompat -import androidx.core.view.isVisible -import androidx.recyclerview.widget.RecyclerView -import com.google.android.material.card.MaterialCardView -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.common.variable.variables.FannelListVariable -import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects -import com.puutaro.commandclick.component.adapter.lib.ImageAdapterTool -import com.puutaro.commandclick.custom_view.MagicTextView -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.proccess.list_index_for_edit.ListIndexEditConfig -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.LayoutSettingsForListIndex -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.ListSettingsForListIndex -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.PerformSettingForListIndex -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.TypeSettingsForListIndex -import com.puutaro.commandclick.proccess.qr.QrDialogConfig -import com.puutaro.commandclick.proccess.qr.qr_dialog_config.config_settings.QrLogoSettingsForQrDialog -import com.puutaro.commandclick.proccess.qr.qr_dialog_config.config_settings.QrModeSettingKeysForQrDialog -import com.puutaro.commandclick.util.CommandClickVariables -import com.puutaro.commandclick.util.SettingVariableReader -import com.puutaro.commandclick.util.file.AssetsFileManager -import com.puutaro.commandclick.util.file.ReadText -import com.puutaro.commandclick.util.map.CmdClickMap -import com.puutaro.commandclick.util.map.FilePrefixGetter -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext -import java.io.File -import java.lang.ref.WeakReference - - -class ListIndexAdapter( - private val editFragmentRef: WeakReference, - var listIndexList: MutableList, -): RecyclerView.Adapter() -{ - private val fannelInfoMap = editFragmentRef.get()?.fannelInfoMap - private val context = editFragmentRef.get()?.context -// private val activity = editFragment.activity - private val maxTakeSize = 150 - private val listLimitSize = 300 - private val editExecuteAlways = SettingVariableSelects.EditExecuteSelects.ALWAYS.name - private val busyboxExecutor = editFragmentRef.get()?.busyboxExecutor - - private val listIndexConfigMap = editFragmentRef.get()?.listIndexConfigMap - private val layoutConfigMap = LayoutSettingsForListIndex.getLayoutConfigMap( - listIndexConfigMap - ) - private val layoutType = LayoutSettingsForListIndex.decideLayoutType( - layoutConfigMap - ) - private var performMap: Map = mapOf() - - val checkItemConfigMap = CmdClickMap.createMap( - listIndexConfigMap?.get( - ListIndexEditConfig.ListIndexConfigKey.CHECK_ITEM.key - ), - '|' - ).toMap() - private val qrDialogConfigMap = - editFragmentRef.get()?.qrDialogConfig ?: mapOf() - private val textImagePngBitMap = ImageAdapterTool.makeFileMarkBitMap( - editFragmentRef.get()?.context, - AssetsFileManager.textImagePingPath - ) - private val qrLogoConfigMap = QrLogoSettingsForQrDialog.makeLogoConfigMap( - qrDialogConfigMap - ) - private val iconConfigMap = - QrLogoSettingsForQrDialog.QrIconSettingKeysForQrDialog.makeIconConfigMap( - qrLogoConfigMap - ) - private val itemNameToNameColorConfigMap = - QrLogoSettingsForQrDialog.QrIconSettingKeysForQrDialog.makeIconNameConfigMap( - editFragmentRef.get()?.setReplaceVariableMap, - fannelInfoMap, - iconConfigMap, - ) - private var recentAppDirPath = String() - private var filterDir = String() - private var filterPrefix = String() - private var filterSuffix = String() - - init { - if(listIndexList.size == 0) { - setListProperty() - } - } - - companion object { - var indexListMap: Map = mapOf() - var deleteConfigMap: Map = mapOf() - var listIndexTypeKey = TypeSettingsForListIndex.ListIndexTypeKey.NORMAL - } - class ListIndexListViewHolder( -// val activity: FragmentActivity?, - val view: View - ): RecyclerView.ViewHolder(view) { - val baseLinearLayout = - view.findViewById( - com.puutaro.commandclick.R.id.list_index_edit_adapter_horizontal_linearlayout - ) - val materialCardView = - view.findViewById( - com.puutaro.commandclick.R.id.list_index_edit_adapter_mterial_card_view - ) - val fileContentsQrLogoLinearLayout = - view.findViewById( - com.puutaro.commandclick.R.id.list_index_edit_adapter_logo_linearlayout - ) - val fileContentsQrLogoView = - view.findViewById( - com.puutaro.commandclick.R.id.list_index_edit_adapter_contents - ) - val qrLogoImageCaptionTextView = - view.findViewById( - com.puutaro.commandclick.R.id.list_index_edit_adapter_image_caption - ) - - val rightLinearlayout = - view.findViewById( - com.puutaro.commandclick.R.id.list_index_edit_adapter_vertical_linearlayout - ) - val fileNameTextView = - view.findViewById( - com.puutaro.commandclick.R.id.list_index_edit_adapter_file_name - ) - val fileDescTextView = - view.findViewById( - com.puutaro.commandclick.R.id.list_index_edit_adapter_file_desc - ) - var fileName = String() - } - - override fun getItemId(position: Int): Long { - setHasStableIds(true) - return super.getItemId(position) - } - - override fun onCreateViewHolder( - parent: ViewGroup, - viewType: Int - ): ListIndexListViewHolder { - val layoutInflater = LayoutInflater.from(parent.context) - val itemView = layoutInflater.inflate( - com.puutaro.commandclick.R.layout.list_index_edit_adapter_layout, - parent, - false - ) - return ListIndexListViewHolder( -// activity, - itemView - ) - } - - override fun getItemCount(): Int = listIndexList.size - - override fun onBindViewHolder( - holder: ListIndexListViewHolder, - listIndexPosition: Int - ) { - if( - listIndexPosition > listLimitSize - ) return - initListProperty(listIndexPosition) - CoroutineScope(Dispatchers.IO).launch { - withContext(Dispatchers.Main) { - ListIndexEditConfig.setCheckToMaterialCardView( - holder.materialCardView, - checkItemConfigMap, - listIndexList, - listIndexPosition, - ) - } - - val fileNameOrInstallFannelLine = - listIndexList.getOrNull(listIndexPosition) - ?: return@launch - holder.fileName = FannelListVariable.getFannelName( - fileNameOrInstallFannelLine - ) - val fileNameText = withContext(Dispatchers.Main) { - ListIndexEditConfig.makeFileNameText( - listIndexTypeKey, - holder.fileNameTextView, - holder.fileName, - listIndexConfigMap, - busyboxExecutor, - ) - } - val fileConList = makeFileConList(holder.fileName) - when(layoutType){ - LayoutSettingsForListIndex.LayoutTypeValueStr.LINEAR -> { - withContext(Dispatchers.Main){ - if( - fileNameText.isNullOrEmpty() - ) return@withContext - holder.fileNameTextView?.text = fileNameText - } - setDescView( - holder.fileDescTextView, - fileNameOrInstallFannelLine, - fileConList.joinToString("\n"), - ) - } - LayoutSettingsForListIndex.LayoutTypeValueStr.GRID -> { - withContext(Dispatchers.Main){ - holder.rightLinearlayout.isVisible = false - if( - fileNameText.isNullOrEmpty() - ) return@withContext - holder.qrLogoImageCaptionTextView.isVisible = true - holder.qrLogoImageCaptionTextView.text = fileNameText - } - } - } - val fileConBackGroundColorInt = withContext(Dispatchers.IO) { - val editExecuteValueForInstallFannel = String() -// when( -// listIndexTypeKey -// ){ -// TypeSettingsForListIndex.ListIndexTypeKey.INSTALL_FANNEL -// -> FannelListVariable.getEditExecute( -// fileNameOrInstallFannelLine -// ) -// else -> String() -// } - setFileContentsBackColor( - fileConList, -// fileNameOrInstallFannelLine, - editExecuteValueForInstallFannel, - ) - } - - withContext(Dispatchers.Main) { - context?.let { - holder.fileContentsQrLogoLinearLayout.backgroundTintList = - it.getColorStateList(fileConBackGroundColorInt) - } - } - withContext(Dispatchers.Main) { - QrLogoSettingsForQrDialog.OneSideLength.setLayout( - editFragmentRef.get(), - holder.baseLinearLayout, - holder.materialCardView, - holder.fileContentsQrLogoLinearLayout, - qrLogoConfigMap, - layoutType - ) - } - withContext(Dispatchers.Main) { - val disableQrLogo = - QrLogoSettingsForQrDialog.Disable.how(qrLogoConfigMap) - if( - disableQrLogo - ) return@withContext - qrLogoSetHandler( - holder, - recentAppDirPath, - ) - } - withContext(Dispatchers.Main) { - val itemView = holder.itemView - itemView.setOnLongClickListener { - itemLongClickListener?.onItemLongClick( - itemView, - holder, - listIndexPosition - ) - true - } - itemView.setOnClickListener { - fileNameClickListener?.onFileNameClick( - itemView, - holder, - listIndexPosition, - ) - } - val fileContentsQrLogoView = holder.fileContentsQrLogoView - fileContentsQrLogoView.setOnClickListener { - fileQrLogoClickListener?.onFileQrLogoClick( - itemView, - holder, - listIndexPosition - ) - } - fileContentsQrLogoView.setOnLongClickListener { - qrLongClickListener?.onQrLongClick( - fileContentsQrLogoView, - holder, - listIndexPosition - ) - true - } - } - } - } - - var fileNameClickListener: OnFileNameItemClickListener? = null - var qrLongClickListener: OnQrLogoLongClickListener? = null - interface OnFileNameItemClickListener { - fun onFileNameClick( - itemView: View, - holder: ListIndexListViewHolder, - listIndexPosition: Int, - ) - } - - interface OnQrLogoLongClickListener { - fun onQrLongClick( - imageView: AppCompatImageView, - holder: ListIndexListViewHolder, - listIndexPosition: Int - ) - } - - var fileQrLogoClickListener: OnFileQrLogoItemClickListener? = null - interface OnFileQrLogoItemClickListener { - fun onFileQrLogoClick( - itemView: View, - holder: ListIndexListViewHolder, - listIndexPosition: Int, - ) - } - - var itemLongClickListener: OnItemLongClickListener? = null - interface OnItemLongClickListener { - fun onItemLongClick( - itemView: View, - holder: ListIndexListViewHolder, - listIndexPosition: Int - ) - } - - private fun makeFileConList( - fileName: String, - ): List { - if ( - listIndexConfigMap.isNullOrEmpty() - ) return emptyList() - if( - PerformSettingForListIndex.howFastMode(performMap) - || listIndexTypeKey == TypeSettingsForListIndex.ListIndexTypeKey.TSV_EDIT - ) return emptyList() - return ReadText( - File(filterDir, fileName).absolutePath, - ).textToList().take(maxTakeSize) - } - - private suspend fun setDescView( - fileDescTextView: AppCompatTextView, - fileNameOrInstallFannelLine: String, - fileCon: String, - ){ - val makeFileDescArgsMaker = ListIndexEditConfig.MakeFileDescArgsMaker( - filterDir, - fileNameOrInstallFannelLine, - fileCon, - listIndexConfigMap, - busyboxExecutor, - ) - val descCon = ListIndexEditConfig.makeFileDesc( - makeFileDescArgsMaker, - ) - withContext(Dispatchers.Main) { - when (descCon.isNullOrEmpty()) { - true -> fileDescTextView.isVisible = false - else -> fileDescTextView.text = descCon - } - } - } - - private fun setFileContentsBackColor( - fileConList: List, -// fileName: String, - editExecuteValueForInstallFannel: String, - ): Int { - if( - context == null - ) return com.puutaro.commandclick.R.color.fannel_icon_color - if( - editExecuteValueForInstallFannel == editExecuteAlways - ) return com.puutaro.commandclick.R.color.terminal_color -// val languageType = -// CommandClickVariables.judgeJsOrShellFromSuffix(fileName) - -// val languageTypeToSectionHolderMap = -// CommandClickScriptVariable.LANGUAGE_TYPE_TO_SECTION_HOLDER_MAP.get(languageType) -// val settingSectionStart = languageTypeToSectionHolderMap?.get( -// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_START -// ) as String -// val settingSectionEnd = languageTypeToSectionHolderMap.get( -// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_END -// ) as String - val settingVariableList = CommandClickVariables.extractValListFromHolder( - fileConList, - CommandClickScriptVariable.SETTING_SEC_START, - CommandClickScriptVariable.SETTING_SEC_END, -// settingSectionStart, -// settingSectionEnd - ) - val editExecuteValue = SettingVariableReader.getStrValue( - settingVariableList, - CommandClickScriptVariable.EDIT_EXECUTE, - CommandClickScriptVariable.EDIT_EXECUTE_DEFAULT_VALUE - ) - if( - editExecuteValue - == SettingVariableSelects.EditExecuteSelects.ALWAYS.name - ) return com.puutaro.commandclick.R.color.terminal_color - return com.puutaro.commandclick.R.color.fannel_icon_color - } - - private suspend fun qrLogoSetHandler( - holder: ListIndexListViewHolder, - recentAppDirPath: String, - ){ - val itemName = holder.fileName.split("\t").lastOrNull() ?: String() - val okSetIcon = QrLogoSettingsForQrDialog.QrIconSettingKeysForQrDialog.set( - context, - filterDir, - listIndexTypeKey, - itemName, - holder.fileContentsQrLogoView, - holder.fileContentsQrLogoLinearLayout, - qrLogoConfigMap, - iconConfigMap, - itemNameToNameColorConfigMap, - textImagePngBitMap - ) - if(okSetIcon) return - val qrMode = QrModeSettingKeysForQrDialog.getQrMode(qrDialogConfigMap) - when(qrMode){ - QrModeSettingKeysForQrDialog.QrMode.TSV_EDIT -> {} - QrModeSettingKeysForQrDialog.QrMode.NORMAL, - QrModeSettingKeysForQrDialog.QrMode.FANNEL_REPO -> { - val qrLogoHandlerArgsMaker = withContext(Dispatchers.IO) { - QrDialogConfig.QrLogoHandlerArgsMaker( -// editFragmentRef.get(), - recentAppDirPath, - qrLogoConfigMap, - filterDir, - holder.fileName, - holder.fileContentsQrLogoView, - ) - } - withContext(Dispatchers.Main) { - QrLogoSettingsForQrDialog.setQrLogoHandler( - context, - qrLogoHandlerArgsMaker - ) - } - } - } - } - - private fun initListProperty( - listIndexPosition: Int, - ){ - if( - listIndexPosition != 0 - ) return - setListProperty() - } - - private fun setListProperty(){ - recentAppDirPath = UsePath.cmdclickDefaultAppDirPath - performMap = PerformSettingForListIndex.makePerformMap( - listIndexConfigMap - ) - indexListMap = ListIndexEditConfig.getConfigKeyMap( - listIndexConfigMap, - ListIndexEditConfig.ListIndexConfigKey.LIST.key - ) -// FileSystems.writeFile( -// File(UsePath.cmdclickDefaultAppDirPath, "getfile_index_list.txt").absolutePath, -// listOf( -// "listIndexConfigMap: ${listIndexConfigMap}", -// "indexListMap: ${indexListMap}", -// ).joinToString("\n\n\n") -// ) - deleteConfigMap = ListIndexEditConfig.getConfigKeyMap( - listIndexConfigMap, - ListIndexEditConfig.ListIndexConfigKey.DELETE.key - ) - listIndexTypeKey = editFragmentRef.get()?.let { - ListIndexEditConfig.getListIndexType( - it - ) - } ?: TypeSettingsForListIndex.ListIndexTypeKey.NORMAL - filterDir = editFragmentRef.get()?.let { - ListSettingsForListIndex.ListIndexListMaker.getFilterDir( - it, - indexListMap, - listIndexTypeKey - ) - } ?: String() - filterPrefix = editFragmentRef.get()?.let { - FilePrefixGetter.get( - it, - indexListMap, - ListSettingsForListIndex.ListSettingKey.PREFIX.key - ) - } ?: String() - filterSuffix = editFragmentRef.get()?.let { - FilePrefixGetter.get( - it, - indexListMap, - ListSettingsForListIndex.ListSettingKey.SUFFIX.key - ) - } ?: String() - } - fun getLayoutConfigMap(): Map { - return layoutConfigMap - } -} diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/PinFannelAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/PinFannelAdapter.kt index c282b0748..8a146275a 100644 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/PinFannelAdapter.kt +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/PinFannelAdapter.kt @@ -6,7 +6,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.appcompat.widget.AppCompatImageView -import androidx.cardview.widget.CardView import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide @@ -96,7 +95,7 @@ class PinFannelAdapter( holder.fannelPinAdapterNameView.setFillColor(R.color.fill_gray) } } - holder.fannelPinAdapterNameView.outlineWidthSrc = 2 + holder.fannelPinAdapterNameView.strokeWidthSrc = 2 holder.fannelPinAdapterNameView.text = CcPathTool.trimAllExtend(fannelName) } val fannelLogoPngPath = withContext(Dispatchers.IO) { diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/PromptListAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/PromptListAdapter.kt new file mode 100644 index 000000000..42737d014 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/PromptListAdapter.kt @@ -0,0 +1,267 @@ +package com.puutaro.commandclick.component.adapter + +import android.content.Context +import android.graphics.drawable.Drawable +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.content.res.AppCompatResources +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.LinearLayoutCompat +import androidx.core.view.isVisible +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.RequestBuilder +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.google.android.material.imageview.ShapeableImageView +import com.puutaro.commandclick.R +import com.puutaro.commandclick.activity_lib.event.lib.terminal.ExecSetToolbarButtonImage +import com.puutaro.commandclick.common.variable.res.CmdClickIcons +import com.puutaro.commandclick.custom_view.OutlineTextView +import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.lib.dialog.PromptWithListDialog +import com.puutaro.commandclick.proccess.history.url_history.UrlHistoryPath +import com.puutaro.commandclick.util.file.FileSystems +import com.puutaro.commandclick.util.image_tools.BitmapTool +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.io.File + + +class PromptListAdapter( + val context: Context?, + var prompMapList: MutableList>, + private val focusItemTitleList: List?, + private val isWhiteBackgrond: Boolean, + private val disableIconRotate: Boolean, +): RecyclerView.Adapter() { + + class PromptListViewHolder(val view: View): RecyclerView.ViewHolder(view) { + val promptListAdapterLinear = view.findViewById(R.id.prompt_list_linear) + val promptListAdapterTitleBk = view.findViewById(R.id.prompt_list_adapter_thumbnail_bk) + val promptListAdapterThumnail = view.findViewById(R.id.prompt_list_adapter_thumbnail) + val promptListAdapterTitle = view.findViewById(R.id.prompt_list_adapter_title) + var itemMap: Map = emptyMap() + } + + override fun getItemCount(): Int = prompMapList.size + + override fun getItemId(position: Int): Long { + //return super.getItemId(position) + return position.toLong() + } + + override fun getItemViewType(position: Int): Int { + //return super.getItemViewType(position) + return position + } +// +// private val defaultUrlCapBitmap = AssetsFileManager.assetsByteArray( +// context, +// AssetsFileManager.firstUrlCapPngPath +// )?.let { +// BitmapFactory.decodeByteArray(it, 0, it.size) +// } + +// private val centerWhiteColor = when(isWhiteBackgrond) { +// true -> null +// else -> "#ffffff" +// } + private val rotateList = listOf(45, 135, 225, 315) + + private val thumbnailByteArray = ExecSetToolbarButtonImage.getImageFile( + CmdClickIcons.CC.assetsPath + ).let { + BitmapTool.convertFileToByteArray(it.absolutePath) + } +// ButtonImageCreator.ExecButtonImageCreator.create( +// context, +// ButtonAssetsImage.cPingPath, +// makeCapturePartPngDirPathList(), +// defaultUrlCapBitmap, +// centerWhiteColor, +// BitmapTool.GradientBitmap.GradOrient.DIAGONAL, +// ) + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): PromptListViewHolder { + val layoutInflater = LayoutInflater.from(parent.context) + val itemView = layoutInflater.inflate( + R.layout.prompt_list_adapter_layout, + parent, + false + ) + val promptListViewHolder = + PromptListViewHolder(itemView) + itemView.setOnClickListener { + itemClickListener?.onItemClick(promptListViewHolder) + } + return promptListViewHolder + } + + private val titleKey = PromptWithListDialog.Companion.PromptMapList.PromptListKey.TITLE.key + private val iconKey = PromptWithListDialog.Companion.PromptMapList.PromptListKey.ICON.key + + override fun onBindViewHolder( + holder: PromptListViewHolder, + position: Int + ) { + if( + context == null + ) return + CoroutineScope(Dispatchers.IO).launch { + val lineMap = prompMapList[position] + val title = withContext(Dispatchers.IO) { + lineMap.get(titleKey) + } + withContext(Dispatchers.Main){ + val isFocus = + withContext(Dispatchers.IO) { + !focusItemTitleList.isNullOrEmpty() + && focusItemTitleList.contains(title) + } + if(!isFocus) return@withContext + holder.promptListAdapterLinear.background = AppCompatResources.getDrawable( + context, + R.drawable.focus_dark_green + ) + } + withContext(Dispatchers.Main){ + holder.promptListAdapterTitle.apply { + setFillColor(R.color.ao) + strokeWidthSrc = 3 + text = title +// viewTreeObserver?.addOnPreDrawListener(object : ViewTreeObserver.OnPreDrawListener { +// override fun onPreDraw(): Boolean { +// // Remove listener because we don't want this called before _every_ frame +// viewTreeObserver?.removeOnPreDrawListener(this) +// minWidth = width + (width * 0.1f).toInt() +// return true // true because we don't want to skip this frame +// } +// }) + } + } + holder.itemMap = lineMap + withContext(Dispatchers.Main){ + val iconStr = lineMap.get(iconKey) + val icon = CmdClickIcons.entries.firstOrNull { + it.str == iconStr + } + val isSetWhiteGradBk = when (true) { + (!iconStr.isNullOrEmpty() && File(iconStr).isFile) + -> true && !isWhiteBackgrond + else -> false + } + val promptListAdapterTitleBk = holder.promptListAdapterTitleBk + if(isSetWhiteGradBk){ + promptListAdapterTitleBk.isVisible = true + val titleBkContext = promptListAdapterTitleBk.context + val bkTitleDrawable = AppCompatResources.getDrawable( + titleBkContext, + R.drawable.white_grad + ) + val requestBuilder: RequestBuilder = + Glide.with(titleBkContext) + .asDrawable() + .sizeMultiplier(0.1f) + Glide + .with(titleBkContext) + .load(bkTitleDrawable) + .skipMemoryCache( true ) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .thumbnail( requestBuilder ) + .into(promptListAdapterTitleBk) + + val nextRotate = rotateList.random().toFloat() + val curRotation = holder.promptListAdapterTitleBk.rotation + val nextRotaionAngle = + when(disableIconRotate) { + false -> 0f + else -> { + if (curRotation % 45f == 0f) nextRotate + else 45f + nextRotate + } + } + holder.promptListAdapterTitleBk.rotation = nextRotaionAngle + } + val byteArray = withContext(Dispatchers.IO) { + when (true) { + (icon != null) + -> { + ExecSetToolbarButtonImage.getImageFile( + icon.assetsPath + ).let { + BitmapTool.convertFileToByteArray(it.absolutePath) + } +// ButtonImageCreator.ExecButtonImageCreator.create( +// context, +// icon.assetsPath, +// makeCapturePartPngDirPathList(), +// defaultUrlCapBitmap, +// centerWhiteColor, +// BitmapTool.GradientBitmap.GradOrient.DIAGONAL, +// ) + } + (!iconStr.isNullOrEmpty() && File(iconStr).isFile) + -> BitmapTool.convertFileToByteArray(iconStr) + else -> thumbnailByteArray + } + } ?: return@withContext + val promptListAdapterThumbnail = holder.promptListAdapterThumnail + val curRotation = promptListAdapterThumbnail.rotation + val nextRotate = rotateList.random().toFloat() + val nextRotaionAngle = when(disableIconRotate) { + false -> 0f + else -> { + if (curRotation % 45f == 0f) nextRotate + else 45f + nextRotate + } + } + promptListAdapterThumbnail.rotation = nextRotaionAngle + val logoViewContext = promptListAdapterThumbnail.context + val requestBuilder: RequestBuilder = + Glide.with(logoViewContext) + .asDrawable() + .sizeMultiplier(0.1f) + Glide + .with(logoViewContext) + .load(byteArray) + .skipMemoryCache( true ) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .thumbnail( requestBuilder ) + .into(promptListAdapterThumbnail) + } + withContext(Dispatchers.Main){ + holder.itemView.setOnClickListener { + itemClickListener?.onItemClick( + holder + ) + } + } + } + } + + var itemClickListener: OnItemClickListener? = null + interface OnItemClickListener { + fun onItemClick(holder: PromptListViewHolder) + } + + private fun makeCapturePartPngDirPathList(): List { + val lastModifyExtend = UrlHistoryPath.lastModifyExtend + val partPngDirName = UrlHistoryPath.partPngDirName + val captureDirPath = UrlHistoryPath.makeCaptureHistoryDirPath() + return FileSystems.sortedFiles( + captureDirPath + ).map { + val dirName = it.removeSuffix(lastModifyExtend) + listOf( + captureDirPath, + dirName, + partPngDirName + ).joinToString("/") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/UrlHistoryAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/UrlHistoryAdapter.kt index 4f62905cc..d5f5f75d6 100644 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/UrlHistoryAdapter.kt +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/UrlHistoryAdapter.kt @@ -325,7 +325,7 @@ class UrlHistoryAdapter( withContext(Dispatchers.Main) { holder.urlTitleTextView.text = title holder.urlTitleTextView.setFillColor(R.color.ao) - holder.urlTitleTextView.outlineWidthSrc = 5 + holder.urlTitleTextView.strokeWidthSrc = 5 } } } diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ClickScriptSaver.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ClickScriptSaver.kt new file mode 100644 index 000000000..1dede4cb0 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ClickScriptSaver.kt @@ -0,0 +1,15 @@ +package com.puutaro.commandclick.component.adapter.lib.edit_list_adapter + +object ClickScriptSaver { +// fun save( +// listIndexArgsMaker: ListIndexArgsMaker, +// ){ +// val clickConfigMap = listIndexArgsMaker.clickConfigPairList +// val enableClickSave = +// ClickSettingsForListIndex.howEnableClickSave( +// clickConfigMap +// ) +// if(!enableClickSave) return +//// ScriptFileSaver.save(editFragment) +// } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecAddForEditListAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecAddForEditListAdapter.kt new file mode 100755 index 000000000..54516fefb --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecAddForEditListAdapter.kt @@ -0,0 +1,399 @@ +package com.puutaro.commandclick.component.adapter.lib.edit_list_adapter + +import android.content.Context +import androidx.recyclerview.widget.RecyclerView +import com.blankj.utilcode.util.ToastUtils +import com.puutaro.commandclick.common.variable.broadcast.scheme.BroadCastIntentSchemeForEdit +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.fragment.EditFragment +import com.puutaro.commandclick.proccess.broadcast.BroadcastSender +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList +import com.puutaro.commandclick.util.file.MapListFileTool +import com.puutaro.commandclick.util.file.ReadText +import com.puutaro.commandclick.util.map.FilePrefixGetter +import com.puutaro.commandclick.util.tsv.TsvTool +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +object ExecAddForEditListAdapter { + + private fun getInsertIndex( + sortType: ListSettingsForEditList.SortByKey, + listIndexForEditAdapter: EditConstraintListAdapter, + addLineMap: Map, + ): Int { +// val addLineMap = CmdClickMap.createMap( +// addLine, +// ListSettingsForListIndex.MapListPathManager.mapListSeparator +// ).toMap() + val virtualListIndexList = + listIndexForEditAdapter.lineMapList + + listOf(addLineMap) +// val isReverseLayout = ListSettingsForListIndex.howReverseLayout( +// listIndexForEditAdapter.fannelInfoMap, +// listIndexForEditAdapter.setReplaceVariablesMap, +// listIndexForEditAdapter.indexListMap +// ) + return ListSettingsForEditList.EditListMaker.sortList( + sortType, + virtualListIndexList, +// isReverseLayout + ).indexOf(addLineMap) + } + + private fun listUpdateByInsertItem( +// editFragment: EditFragment, + editListRecyclerView: RecyclerView, +// editComponentListAdapter: EditComponentListAdapter, + addLineMap: Map, + insertIndex: Int, + ){ +// val binding = editFragment.binding +// val editListRecyclerView = binding.editListRecyclerView + val editConstraintListAdapter = + editListRecyclerView.adapter as EditConstraintListAdapter +// val addLineMap = CmdClickMap.createMap( +// addLineMap, +// ListSettingsForListIndex.MapListPathManager.mapListSeparator +// ).toMap() + editConstraintListAdapter.lineMapList.add(insertIndex, addLineMap) + CoroutineScope(Dispatchers.IO).launch { + withContext(Dispatchers.Main) { + editConstraintListAdapter.notifyItemInserted(insertIndex) + } + withContext(Dispatchers.IO) { + val listInsertWaitTime = 200L + delay(listInsertWaitTime) + } + withContext(Dispatchers.Main){ + editListRecyclerView.layoutManager?.scrollToPosition( + insertIndex + ) + } + } + } + +// fun execAddByCopyFileHere( +// editFragment: EditFragment, +// sourceFilePath: String, +// ){ +// val indexListMap = ListIndexAdapter.indexListMap +//// val parentDirPath = +//// ListSettingsForListIndex.ListIndexListMaker.getFilterDir( +//// editFragment, +//// indexListMap, +//// ListIndexAdapter.listIndexTypeKey +//// ) +// val sourceFilePathObj = File(sourceFilePath) +// val srcParentDirPath = sourceFilePathObj.parent +// ?: return +// val srcFileName = sourceFilePathObj.name +// if( +// NoFileChecker.isNoFile( +// srcParentDirPath, +// srcFileName, +// ) +// ) return +// val destiFilePath = "${parentDirPath}/${srcFileName}" +// val insertFilePath = FileSystems.execCopyFileWithDir( +// File(sourceFilePath), +// File(destiFilePath), +// ) +// sortInAddFile( +// editFragment, +// insertFilePath, +// ) +// } + +// fun execAddByCopyFileListHere( +// editFragment: EditFragment, +// sourceFilePathList: List, +// ){ +// val indexListMap = ListIndexAdapter.indexListMap +//// val parentDirPath = +//// ListSettingsForListIndex.ListIndexListMaker.getFilterDir( +//// editFragment, +//// indexListMap, +//// ListIndexAdapter.listIndexTypeKey +//// ) +// sourceFilePathList.forEach { +// sourceFilePath -> +// val sourceFilePathObj = File(sourceFilePath) +// if( +// !sourceFilePathObj.isFile +// ) return@forEach +// val srcFileName = sourceFilePathObj.name +// val destiFilePath = "${parentDirPath}/${srcFileName}" +// FileSystems.execCopyFileWithDir( +// File(sourceFilePath), +// File(destiFilePath), +// ) +// } +// BroadcastSender.normalSend( +// editFragment.context, +// BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action +// ) +// } + +// fun execAddByCopyDirListHere( +// editFragment: EditFragment, +// sourceFilePathList: List, +// ){ +// val indexListMap = ListIndexAdapter.indexListMap +// val parentDirPath = +// ListSettingsForListIndex.ListIndexListMaker.getFilterDir( +// editFragment, +// indexListMap, +// ListIndexAdapter.listIndexTypeKey +// ) +// sourceFilePathList.forEach { +// sourceFilePath -> +// val sourceFilePathObj = File(sourceFilePath) +// if( +// !sourceFilePathObj.isDirectory +// ) return@forEach +// val srcDirName = sourceFilePathObj.name +// val destiDirPath = "${parentDirPath}/${srcDirName}" +// FileSystems.copyDirectory( +// sourceFilePath, +// destiDirPath, +// ) +// } +// BroadcastSender.normalSend( +// editFragment.context, +// BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action +// ) +// } + + fun execAddListForTsv( + editFragment: EditFragment, + insertLineListSrc: List + ){ + val editComponentAdapter = + editFragment.binding.editListRecyclerView.adapter as EditConstraintListAdapter + val tsvPath = + FilePrefixGetter.get( + editFragment.fannelInfoMap, + editFragment.setReplaceVariableMap, + editComponentAdapter.indexListMap, + ListSettingsForEditList.ListSettingKey.MAP_LIST_PATH.key, + ) ?: String() + if( + tsvPath.trim().isEmpty() + ) { + ToastUtils.showShort("Retry unexpected err") + return + } + val currentTsvConList = ReadText( + tsvPath + ).textToList() + val insertLineList = insertLineListSrc.filter { + !currentTsvConList.contains(it) + } + val updateTsvConList = insertLineList + currentTsvConList +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "getfileList.txt").absolutePath, +// listOf( +// "indexListMap ${ListIndexForEditAdapter.indexListMap}", +// "insertLineListSrc: ${insertLineListSrc}", +// "tsvPath: ${tsvPath}", +// "insertLineList: ${insertLineList}", +// "updateTsvConList: ${updateTsvConList}", +// ).joinToString("\n\n\n") +// ) + TsvTool.updateTsv( + tsvPath, + updateTsvConList + ) + } + + + fun execAddForEditList( + context: Context?, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + editListRecyclerView: RecyclerView, +// editComponentListAdapter: EditComponentListAdapter, + insertLineMap: Map, + ){ +// val context = editFragment.context + val editConstraintListAdapter = + editListRecyclerView.adapter as EditConstraintListAdapter + val mapListPath = + FilePrefixGetter.get( + fannelInfoMap, + setReplaceVariableMap, + editConstraintListAdapter.indexListMap, + ListSettingsForEditList.ListSettingKey.MAP_LIST_PATH.key, + ) ?: String() +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "getFile.txt").absolutePath, +// listOf( +// "indexListMap ${ListIndexForEditAdapter.indexListMap}", +// "tsvPath: ${tsvPath}", +// "currentTsvConList: ${currentTsvConList}", +// ).joinToString("\n\n\n") +// ) + if( + mapListPath.trim().isEmpty() + ) { + ToastUtils.showShort("Retry unexpected err") + return + } + if( + mapListPath.trim().isEmpty() + ) { + ToastUtils.showShort("Already exist") + return + } +// val title = insertLineMap.get( +// ListSettingsForListIndex.MapListPathManager.Key.SRC_TITLE.key +// ) ?: String() +// val con = insertLineMap.get( +// ListSettingsForListIndex.MapListPathManager.Key.SRC_CON.key +// ) ?: String() + editConstraintListAdapter.lineMapList.contains(insertLineMap).let { + isDuplidate -> + if( + isDuplidate + ) return + } +// ListIndexDuplicate.isTsvDetect( +// mapListPath, +// title, +// con +// ).let { +// isDetect -> +// if( +// isDetect +// ) return +// } +// val editComponentAdapter = +// editFragment.binding.editListRecyclerView.adapter as EditComponentListAdapter + val sortType = ListSettingsForEditList.getSortType( + editConstraintListAdapter.fannelInfoMap, + editConstraintListAdapter.setReplaceVariableMap, + editConstraintListAdapter.indexListMap + ) + val insertIndex = getInsertIndex( + sortType, + editConstraintListAdapter, + insertLineMap, + ) + MapListFileTool.insertByLastUpdate( + mapListPath, + insertLineMap, + ) +// TsvTool.insertByLastUpdate( +// mapListPath, +// insertLine +// ) + when(sortType){ + ListSettingsForEditList.SortByKey.LAST_UPDATE -> + CoroutineScope(Dispatchers.Main).launch { + withContext(Dispatchers.IO){ + delay(200) + } + withContext(Dispatchers.IO) { + BroadcastSender.normalSend( + context, + BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action + ) + } + } + ListSettingsForEditList.SortByKey.SORT, + ListSettingsForEditList.SortByKey.REVERSE -> + listUpdateByInsertItem( + editListRecyclerView, + insertLineMap, + insertIndex + ) + } + } + +// fun sortInAddFile( +// editFragment: EditFragment, +// insertFilePath: String, +// ){ +// val sortType = ListSettingsForListIndex.getSortType( +// editFragment, +// ListIndexAdapter.indexListMap +// ) +// when(sortType){ +// ListSettingsForListIndex.SortByKey.LAST_UPDATE -> +// ListViewToolForListIndexAdapter.listIndexListUpdateFileList( +// editFragment, +// ListSettingsForListIndex.ListIndexListMaker.makeFileListHandler( +// editFragment, +// ListIndexAdapter.indexListMap, +// ListIndexAdapter.listIndexTypeKey +// ) +// ) +// ListSettingsForListIndex.SortByKey.SORT, +// ListSettingsForListIndex.SortByKey.REVERSE -> { +// addFileNameLineForSort( +// editFragment, +// insertFilePath, +// ) +// } +// } +// } + +// private fun addFileNameLineForSort( +// editFragment: EditFragment, +// insertFilePath: String, +// ){ +// val indexListMap = ListIndexAdapter.indexListMap +// val parentDirPath = +// ListSettingsForListIndex.ListIndexListMaker.getFilterDir( +// editFragment, +// indexListMap, +// ListIndexAdapter.listIndexTypeKey +// ) +// val filterPrefix = FilePrefixGetter.get( +// editFragment, +// indexListMap, +// ListSettingsForListIndex.ListSettingKey.PREFIX.key +// ) ?: String() +// val filterSuffix = FilePrefixGetter.get( +// editFragment, +// indexListMap, +// ListSettingsForListIndex.ListSettingKey.SUFFIX.key +// ) ?: String() +// val filterShellCon = ListSettingsForListIndex.ListIndexListMaker.getFilterShellCon( +// editFragment, +// indexListMap, +// ) +// val insertFileName = File(insertFilePath) +// val fileNameElement = ListSettingsForListIndex.ListIndexListMaker.makeFileListElement( +// listOf(insertFileName.name), +// editFragment.busyboxExecutor, +// parentDirPath, +// filterPrefix, +// filterSuffix, +// filterShellCon, +// ).firstOrNull() +// if( +// fileNameElement.isNullOrEmpty() +// ) return +// val listIndexForEditAdapter = +// editFragment.binding.editListRecyclerView.adapter as ListIndexAdapter +// val sortType = ListSettingsForListIndex.getSortType( +// editFragment, +// ListIndexAdapter.indexListMap +// ) +// val insertIndex = getInsertIndex( +// sortType, +// listIndexForEditAdapter, +// fileNameElement, +// ) +// listUpdateByInsertItem( +// editFragment, +// fileNameElement, +// insertIndex +// ) +// } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecClickUpdate.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecClickUpdate.kt new file mode 100755 index 000000000..a54aeaeee --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecClickUpdate.kt @@ -0,0 +1,115 @@ +package com.puutaro.commandclick.component.adapter.lib.edit_list_adapter + +import androidx.fragment.app.Fragment +import com.puutaro.commandclick.common.variable.broadcast.scheme.BroadCastIntentSchemeForEdit +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.proccess.broadcast.BroadcastSender +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList +import com.puutaro.commandclick.util.file.MapListFileTool +import com.puutaro.commandclick.util.map.FilePrefixGetter + +object ExecClickUpdate { + +// fun update( +// fragment: Fragment, +// fannelInfoMap: Map, +// setReplaceVariableMap: Map?, +// editComponentListAdapter: EditComponentListAdapter, +// listIndexArgsMaker: ListIndexArgsMaker, +// bindingAdapterPosition: Int, +// ){ +// val clickConfigMap = listIndexArgsMaker.clickConfigPairList +// val enableClickUpdate = +// ClickSettingsForListIndex.howEnableClickUpdate( +// clickConfigMap +// ) +// if(!enableClickUpdate) return +// updateForTsv( +// fragment, +// fannelInfoMap, +// setReplaceVariableMap, +// editComponentListAdapter, +// bindingAdapterPosition +// ) +//// when(ListIndexAdapter.listIndexTypeKey) { +////// TypeSettingsForListIndex.ListIndexTypeKey.INSTALL_FANNEL +////// -> {} +//// TypeSettingsForListIndex.ListIndexTypeKey.NORMAL +//// -> updateForNormal( +//// editFragment, +//// listIndexListViewHolder.fileName, +//// ) +//// TypeSettingsForListIndex.ListIndexTypeKey.TSV_EDIT +//// -> updateForTsv( +//// editFragment, +//// listIndexListViewHolder +//// ) +//// } +// +// } + + private fun updateForTsv( + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + editConstraintListAdapter: EditConstraintListAdapter, + bindingAdapterPosition: Int, + ){ +// val editComponentAdapter = +// editFragment.binding.editListRecyclerView.adapter as EditComponentListAdapter + val sortType = ListSettingsForEditList.getSortType( + fannelInfoMap, + setReplaceVariableMap, + editConstraintListAdapter.indexListMap + ) + when(sortType){ + ListSettingsForEditList.SortByKey.SORT, + ListSettingsForEditList.SortByKey.REVERSE + -> return + ListSettingsForEditList.SortByKey.LAST_UPDATE, + -> {} + } +// val binding = editFragment.binding +// val editListRecyclerView = binding.editListRecyclerView +// val editComponentListAdapter = editListRecyclerView.adapter as EditComponentListAdapter + val lineMap = + editConstraintListAdapter.lineMapList.getOrNull( + bindingAdapterPosition + ) ?: return + val mapListPath = FilePrefixGetter.get( + fannelInfoMap, + setReplaceVariableMap, + editConstraintListAdapter.indexListMap, + ListSettingsForEditList.ListSettingKey.MAP_LIST_PATH.key, + ) + MapListFileTool.insertMapFileInFirst( + mapListPath, + lineMap + ) + BroadcastSender.normalSend( + fragment.context, + BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action + ) + } + +// private fun updateForNormal( +// editFragment: EditFragment, +// selectedItem: String, +// ){ +// val filterDir = ListSettingsForListIndex.ListIndexListMaker.getFilterDir( +// editFragment, +// ListIndexAdapter.indexListMap, +// ListIndexAdapter.listIndexTypeKey +// ) +// FileSystems.updateLastModified( +// File( +// filterDir, +// selectedItem +// ).absolutePath +// ) +// BroadcastSender.normalSend( +// editFragment.context, +// BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action +// ) +// } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecReWriteForListIndexAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecReWriteForListIndexAdapter.kt new file mode 100755 index 000000000..118d44539 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecReWriteForListIndexAdapter.kt @@ -0,0 +1,41 @@ +package com.puutaro.commandclick.component.adapter.lib.edit_list_adapter + +import androidx.recyclerview.widget.RecyclerView +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +object ExecReWriteForListIndexAdapter { + fun replaceListElementForTsv( +// fragment: Fragment, + editListRecyclerView: RecyclerView, + srcAndRepLineMapPairList: List, Map>>, + ){ +// val binding = fragment.binding + val editConstraintListAdapter = + editListRecyclerView.adapter as EditConstraintListAdapter + val srcAndRepLinePairListSize = srcAndRepLineMapPairList.size + CoroutineScope(Dispatchers.IO).launch { + srcAndRepLineMapPairList.forEach { + val replaceItemIndex = withContext(Dispatchers.IO) { + val srcTsvLine = it.first + editConstraintListAdapter.lineMapList.indexOf(srcTsvLine) + } + if (replaceItemIndex < 0) return@forEach + withContext(Dispatchers.IO) { + editConstraintListAdapter.lineMapList[replaceItemIndex] = it.second + } + withContext(Dispatchers.Main) { + editConstraintListAdapter.notifyItemChanged(replaceItemIndex) + } + if (srcAndRepLinePairListSize != 1) return@forEach +// val editListRecyclerView = binding.editListRecyclerView + withContext(Dispatchers.Main) { + editListRecyclerView.layoutManager?.scrollToPosition(replaceItemIndex) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecRemoveForListIndexAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecRemoveForListIndexAdapter.kt new file mode 100755 index 000000000..f2ac05e40 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecRemoveForListIndexAdapter.kt @@ -0,0 +1,68 @@ +package com.puutaro.commandclick.component.adapter.lib.edit_list_adapter + +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.proccess.js_macro_libs.edit_list_libs.ExecItemDelete +import com.puutaro.commandclick.proccess.edit_list.config_settings.DeleteSettingsForListIndex +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList +import com.puutaro.commandclick.util.file.MapListFileTool +import com.puutaro.commandclick.util.map.FilePrefixGetter +import java.io.File + +object ExecRemoveForListIndexAdapter { + + fun updateTsv( + editConstraintListAdapter: EditConstraintListAdapter, + removeItemLineList: List>, + ){ + val mapListPath = FilePrefixGetter.get( + editConstraintListAdapter.fannelInfoMap, + editConstraintListAdapter.setReplaceVariableMap, + editConstraintListAdapter.indexListMap, + ListSettingsForEditList.ListSettingKey.MAP_LIST_PATH.key, + ) + if( + mapListPath.isNullOrEmpty() + ) return + MapListFileTool.updateMapListFileByRemove( + mapListPath, + removeItemLineList, + ) + } + + fun removeCon( + editConstraintListAdapter: EditConstraintListAdapter, +// listIndexType: TypeSettingsForListIndex.ListIndexTypeKey, + removeItemLineMap: Map, + ){ +// when(listIndexType) { +//// TypeSettingsForListIndex.ListIndexTypeKey.INSTALL_FANNEL, +// TypeSettingsForListIndex.ListIndexTypeKey.NORMAL +// -> return +// TypeSettingsForListIndex.ListIndexTypeKey.TSV_EDIT +// -> {} +// } + val onDeleteConFile = DeleteSettingsForListIndex.howOnDeleteConFileValue( + editConstraintListAdapter.deleteConfigMap + ) + if( + !onDeleteConFile + ) return +// val removeTitleConList = removeItemLineMap.split("\t") +// if( +// removeTitleConList.size != 2 +// ) return + val filePath = removeItemLineMap.get( + ListSettingsForEditList.MapListPathManager.Key.SRC_CON.key + ) ?: String() +// removeTitleConList.last() + val filePathObj = File(filePath) + val fileName = filePathObj.name + val parentDirPath = filePathObj.parent + ?: return + ExecItemDelete.DeleteAfterConfirm.execDeleteAfterConfirm( + editConstraintListAdapter, + parentDirPath, + fileName, + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecSwitcherForListIndexAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecSwitcherForListIndexAdapter.kt new file mode 100755 index 000000000..9259d230c --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ExecSwitcherForListIndexAdapter.kt @@ -0,0 +1,52 @@ +package com.puutaro.commandclick.component.adapter.lib.edit_list_adapter + +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList +import com.puutaro.commandclick.util.file.MapListFileTool +import com.puutaro.commandclick.util.file.ReadText +import com.puutaro.commandclick.util.map.FilePrefixGetter + +object ExecSwitcherForListIndexAdapter { + + fun updateTsv( + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + editConstraintListAdapter: EditConstraintListAdapter, + lineMapList: List>, + ){ +// val editComponentListAdapter = +// editFragment.binding.editListRecyclerView.adapter as EditComponentListAdapter + val tsvPath = FilePrefixGetter.get( + fannelInfoMap, + setReplaceVariableMap, + editConstraintListAdapter.indexListMap, + ListSettingsForEditList.ListSettingKey.MAP_LIST_PATH.key, + ) + if( + tsvPath.isNullOrEmpty() + ) return + val sortType = ListSettingsForEditList.getSortType( + fannelInfoMap, + setReplaceVariableMap, + editConstraintListAdapter.indexListMap + ) + val sortListIndexListForTsvSave = + ListSettingsForEditList.EditListMaker.sortListForTsvSave( + sortType, + lineMapList + ) + val curTsvConList = ReadText( + tsvPath + ).textToList().filter { + it.isNotEmpty() + } + if( + curTsvConList.size != sortListIndexListForTsvSave.size + ) return + MapListFileTool.update( + tsvPath, + sortListIndexListForTsvSave, + ListSettingsForEditList.MapListPathManager.mapListSeparator + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ListIndexDuplicate.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ListIndexDuplicate.kt similarity index 95% rename from app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ListIndexDuplicate.kt rename to app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ListIndexDuplicate.kt index 5db112bb9..c7d1dc9b6 100644 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ListIndexDuplicate.kt +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ListIndexDuplicate.kt @@ -1,4 +1,4 @@ -package com.puutaro.commandclick.component.adapter.lib.list_index_adapter +package com.puutaro.commandclick.component.adapter.lib.edit_list_adapter import com.blankj.utilcode.util.ToastUtils import com.puutaro.commandclick.common.variable.path.UsePath diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ListViewToolForEditListAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ListViewToolForEditListAdapter.kt new file mode 100755 index 000000000..548b174fb --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/ListViewToolForEditListAdapter.kt @@ -0,0 +1,83 @@ +package com.puutaro.commandclick.component.adapter.lib.edit_list_adapter + +import androidx.recyclerview.widget.LinearLayoutManager +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter + +object ListViewToolForEditListAdapter { + +// private var listIndexScrollToBottomJob: Job? = null + + fun editListUpdateFileList( + editConstraintListAdapter: EditConstraintListAdapter, + updateLineMapList: List>, + ){ + if( + editConstraintListAdapter.lineMapList == + updateLineMapList + ) return + editConstraintListAdapter.lineMapList.clear() + editConstraintListAdapter.lineMapList.addAll(updateLineMapList) + editConstraintListAdapter.notifyDataSetChanged() + } + + fun editConstraintListUpdateFileList( + editConstraintListAdapter: EditConstraintListAdapter, + updateLineMapList: List>, + ){ + if( + editConstraintListAdapter.lineMapList == + updateLineMapList + ) return + editConstraintListAdapter.lineMapList.clear() + editConstraintListAdapter.lineMapList.addAll(updateLineMapList) + editConstraintListAdapter.notifyDataSetChanged() + } + +// fun scrollToBottom( +// editListRecyclerView: RecyclerView, +// editComponentListAdapter: EditComponentListAdapter, +// ){ +// return +// listIndexScrollToBottomJob?.cancel() +// listIndexScrollToBottomJob = CoroutineScope(Dispatchers.Main).launch { +// val layoutManager = +// editListRecyclerView.layoutManager as? LinearLayoutManager +// val scrollToPosi = editComponentListAdapter.itemCount - 1 +// withContext(Dispatchers.Main){ +// for(i in 1..30){ +// val prePosi = layoutManager?.findLastCompletelyVisibleItemPosition() +// if( +// prePosi == scrollToPosi +// ) break +// execScroll( +// layoutManager, +// scrollToPosi, +// ) +// delay(150) +// } +// } +// withContext(Dispatchers.Main){ +// for(i in 1..3){ +// delay(150) +// execScroll( +// layoutManager, +// scrollToPosi, +// ) +// } +// } +// } +// } + + private fun execScroll( + layoutManager: LinearLayoutManager?, + scrollToPosi: Int, + ){ + try { + layoutManager?.scrollToPosition( + scrollToPosi + ) + }catch (e: Exception){ + return + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/TitleFileNameAndPathConPairForListIndexAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/TitleFileNameAndPathConPairForListIndexAdapter.kt similarity index 84% rename from app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/TitleFileNameAndPathConPairForListIndexAdapter.kt rename to app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/TitleFileNameAndPathConPairForListIndexAdapter.kt index f9c5db274..ed430dda3 100755 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/TitleFileNameAndPathConPairForListIndexAdapter.kt +++ b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/edit_list_adapter/TitleFileNameAndPathConPairForListIndexAdapter.kt @@ -1,4 +1,4 @@ -package com.puutaro.commandclick.component.adapter.lib.list_index_adapter +package com.puutaro.commandclick.component.adapter.lib.edit_list_adapter object TitleFileNameAndPathConPairForListIndexAdapter { fun get( diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ClickScriptSaver.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ClickScriptSaver.kt deleted file mode 100644 index 51a9ab92e..000000000 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ClickScriptSaver.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.puutaro.commandclick.component.adapter.lib.list_index_adapter - -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.ScriptFileSaver -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.ClickSettingsForListIndex -import com.puutaro.commandclick.proccess.list_index_for_edit.libs.ListIndexArgsMaker - -object ClickScriptSaver { - fun save( - editFragment: EditFragment, - listIndexArgsMaker: ListIndexArgsMaker, - ){ - val clickConfigMap = listIndexArgsMaker.clickConfigPairList - val enableClickSave = - ClickSettingsForListIndex.howEnableClickSave( - clickConfigMap - ) - if(!enableClickSave) return - ScriptFileSaver.save(editFragment) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecAddForListIndexAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecAddForListIndexAdapter.kt deleted file mode 100755 index 09c24eaa1..000000000 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecAddForListIndexAdapter.kt +++ /dev/null @@ -1,358 +0,0 @@ -package com.puutaro.commandclick.component.adapter.lib.list_index_adapter - -import com.blankj.utilcode.util.ToastUtils -import com.puutaro.commandclick.common.variable.broadcast.scheme.BroadCastIntentSchemeForEdit -import com.puutaro.commandclick.component.adapter.ListIndexAdapter -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.proccess.broadcast.BroadcastSender -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.ListSettingsForListIndex -import com.puutaro.commandclick.util.file.FileSystems -import com.puutaro.commandclick.util.file.NoFileChecker -import com.puutaro.commandclick.util.file.ReadText -import com.puutaro.commandclick.util.map.FilePrefixGetter -import com.puutaro.commandclick.util.tsv.TsvTool -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext -import java.io.File - -object ExecAddForListIndexAdapter { - - private fun getInsertIndex( - sortType: ListSettingsForListIndex.SortByKey, - listIndexForEditAdapter: ListIndexAdapter, - addLine: String, - ): Int { - val virtualListIndexList = listIndexForEditAdapter.listIndexList + listOf(addLine) - return ListSettingsForListIndex.ListIndexListMaker.sortList( - sortType, - virtualListIndexList, - ).indexOf(addLine) - } - - private fun listUpdateByInsertItem( - editFragment: EditFragment, - addLine: String, - insertIndex: Int, - ){ - val binding = editFragment.binding - val editListRecyclerView = binding.editListRecyclerView - val listIndexAdapter = - binding.editListRecyclerView.adapter as ListIndexAdapter - listIndexAdapter.listIndexList.add(insertIndex, addLine) - CoroutineScope(Dispatchers.IO).launch { - withContext(Dispatchers.Main) { - listIndexAdapter.notifyItemInserted(insertIndex) - } - withContext(Dispatchers.IO) { - val listInsertWaitTime = 200L - delay(listInsertWaitTime) - } - withContext(Dispatchers.Main){ - editListRecyclerView.layoutManager?.scrollToPosition( - insertIndex - ) - } - } - } - - fun execAddByCopyFileHere( - editFragment: EditFragment, - sourceFilePath: String, - ){ - val indexListMap = ListIndexAdapter.indexListMap - val parentDirPath = - ListSettingsForListIndex.ListIndexListMaker.getFilterDir( - editFragment, - indexListMap, - ListIndexAdapter.listIndexTypeKey - ) - val sourceFilePathObj = File(sourceFilePath) - val srcParentDirPath = sourceFilePathObj.parent - ?: return - val srcFileName = sourceFilePathObj.name - if( - NoFileChecker.isNoFile( - srcParentDirPath, - srcFileName, - ) - ) return - val destiFilePath = "${parentDirPath}/${srcFileName}" - val insertFilePath = FileSystems.execCopyFileWithDir( - File(sourceFilePath), - File(destiFilePath), - ) - sortInAddFile( - editFragment, - insertFilePath, - ) - } - - fun execAddByCopyFileListHere( - editFragment: EditFragment, - sourceFilePathList: List, - ){ - val indexListMap = ListIndexAdapter.indexListMap - val parentDirPath = - ListSettingsForListIndex.ListIndexListMaker.getFilterDir( - editFragment, - indexListMap, - ListIndexAdapter.listIndexTypeKey - ) - sourceFilePathList.forEach { - sourceFilePath -> - val sourceFilePathObj = File(sourceFilePath) - if( - !sourceFilePathObj.isFile - ) return@forEach - val srcFileName = sourceFilePathObj.name - val destiFilePath = "${parentDirPath}/${srcFileName}" - FileSystems.execCopyFileWithDir( - File(sourceFilePath), - File(destiFilePath), - ) - } - BroadcastSender.normalSend( - editFragment.context, - BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action - ) - } - - fun execAddByCopyDirListHere( - editFragment: EditFragment, - sourceFilePathList: List, - ){ - val indexListMap = ListIndexAdapter.indexListMap - val parentDirPath = - ListSettingsForListIndex.ListIndexListMaker.getFilterDir( - editFragment, - indexListMap, - ListIndexAdapter.listIndexTypeKey - ) - sourceFilePathList.forEach { - sourceFilePath -> - val sourceFilePathObj = File(sourceFilePath) - if( - !sourceFilePathObj.isDirectory - ) return@forEach - val srcDirName = sourceFilePathObj.name - val destiDirPath = "${parentDirPath}/${srcDirName}" - FileSystems.copyDirectory( - sourceFilePath, - destiDirPath, - ) - } - BroadcastSender.normalSend( - editFragment.context, - BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action - ) - } - - fun execAddListForTsv( - editFragment: EditFragment, - insertLineListSrc: List - ){ - val tsvPath = - FilePrefixGetter.get( - editFragment, - ListIndexAdapter.indexListMap, - ListSettingsForListIndex.ListSettingKey.LIST_DIR.key, - ) ?: String() - if( - tsvPath.trim().isEmpty() - ) { - ToastUtils.showShort("Retry unexpected err") - return - } - val currentTsvConList = ReadText( - tsvPath - ).textToList() - val insertLineList = insertLineListSrc.filter { - !currentTsvConList.contains(it) - } - val updateTsvConList = insertLineList + currentTsvConList -// FileSystems.writeFile( -// File(UsePath.cmdclickDefaultAppDirPath, "getfileList.txt").absolutePath, -// listOf( -// "indexListMap ${ListIndexForEditAdapter.indexListMap}", -// "insertLineListSrc: ${insertLineListSrc}", -// "tsvPath: ${tsvPath}", -// "insertLineList: ${insertLineList}", -// "updateTsvConList: ${updateTsvConList}", -// ).joinToString("\n\n\n") -// ) - TsvTool.updateTsv( - tsvPath, - updateTsvConList - ) - } - - - fun execAddForTsv( - editFragment: EditFragment, - insertLine: String, - ){ - val context = editFragment.context - val listIndexForEditAdapter = - editFragment.binding.editListRecyclerView.adapter as ListIndexAdapter - val tsvPath = - FilePrefixGetter.get( - editFragment, - ListIndexAdapter.indexListMap, - ListSettingsForListIndex.ListSettingKey.LIST_DIR.key, - ) ?: String() -// FileSystems.writeFile( -// File(UsePath.cmdclickDefaultAppDirPath, "getFile.txt").absolutePath, -// listOf( -// "indexListMap ${ListIndexForEditAdapter.indexListMap}", -// "tsvPath: ${tsvPath}", -// "currentTsvConList: ${currentTsvConList}", -// ).joinToString("\n\n\n") -// ) - if( - tsvPath.trim().isEmpty() - ) { - ToastUtils.showShort("Retry unexpected err") - return - } - if( - tsvPath.trim().isEmpty() - ) { - ToastUtils.showShort("Already exist") - return - } - val titleAndCon = insertLine.split("\t") - val title = titleAndCon.firstOrNull()?.trim() ?: String() - val con = titleAndCon.getOrNull(1)?.trim() ?: String() - ListIndexDuplicate.isTsvDetect( - tsvPath, - title, - con - ).let { - isDetect -> - if( - isDetect - ) return - } - val sortType = ListSettingsForListIndex.getSortType( - editFragment, - ListIndexAdapter.indexListMap - ) - val insertIndex = getInsertIndex( - sortType, - listIndexForEditAdapter, - insertLine, - ) - - TsvTool.insertByLastUpdate( - tsvPath, - insertLine - ) - when(sortType){ - ListSettingsForListIndex.SortByKey.LAST_UPDATE -> - CoroutineScope(Dispatchers.Main).launch { - withContext(Dispatchers.IO){ - delay(200) - } - withContext(Dispatchers.IO) { - BroadcastSender.normalSend( - context, - BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action - ) - } - } - ListSettingsForListIndex.SortByKey.SORT, - ListSettingsForListIndex.SortByKey.REVERSE -> - listUpdateByInsertItem( - editFragment, - insertLine, - insertIndex - ) - } - } - - fun sortInAddFile( - editFragment: EditFragment, - insertFilePath: String, - ){ - val sortType = ListSettingsForListIndex.getSortType( - editFragment, - ListIndexAdapter.indexListMap - ) - when(sortType){ - ListSettingsForListIndex.SortByKey.LAST_UPDATE -> - ListViewToolForListIndexAdapter.listIndexListUpdateFileList( - editFragment, - ListSettingsForListIndex.ListIndexListMaker.makeFileListHandler( - editFragment, - ListIndexAdapter.indexListMap, - ListIndexAdapter.listIndexTypeKey - ) - ) - ListSettingsForListIndex.SortByKey.SORT, - ListSettingsForListIndex.SortByKey.REVERSE -> { - addFileNameLineForSort( - editFragment, - insertFilePath, - ) - } - } - } - - private fun addFileNameLineForSort( - editFragment: EditFragment, - insertFilePath: String, - ){ - val indexListMap = ListIndexAdapter.indexListMap - val parentDirPath = - ListSettingsForListIndex.ListIndexListMaker.getFilterDir( - editFragment, - indexListMap, - ListIndexAdapter.listIndexTypeKey - ) - val filterPrefix = FilePrefixGetter.get( - editFragment, - indexListMap, - ListSettingsForListIndex.ListSettingKey.PREFIX.key - ) ?: String() - val filterSuffix = FilePrefixGetter.get( - editFragment, - indexListMap, - ListSettingsForListIndex.ListSettingKey.SUFFIX.key - ) ?: String() - val filterShellCon = ListSettingsForListIndex.ListIndexListMaker.getFilterShellCon( - editFragment, - indexListMap, - ) - val insertFileName = File(insertFilePath) - val fileNameElement = ListSettingsForListIndex.ListIndexListMaker.makeFileListElement( - listOf(insertFileName.name), - editFragment.busyboxExecutor, - parentDirPath, - filterPrefix, - filterSuffix, - filterShellCon, - ).firstOrNull() - if( - fileNameElement.isNullOrEmpty() - ) return - val listIndexForEditAdapter = - editFragment.binding.editListRecyclerView.adapter as ListIndexAdapter - val sortType = ListSettingsForListIndex.getSortType( - editFragment, - ListIndexAdapter.indexListMap - ) - val insertIndex = getInsertIndex( - sortType, - listIndexForEditAdapter, - fileNameElement, - ) - listUpdateByInsertItem( - editFragment, - fileNameElement, - insertIndex - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecClickUpdate.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecClickUpdate.kt deleted file mode 100755 index cfad34036..000000000 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecClickUpdate.kt +++ /dev/null @@ -1,103 +0,0 @@ -package com.puutaro.commandclick.component.adapter.lib.list_index_adapter - -import com.puutaro.commandclick.common.variable.broadcast.scheme.BroadCastIntentSchemeForEdit -import com.puutaro.commandclick.component.adapter.ListIndexAdapter -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.proccess.broadcast.BroadcastSender -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.ClickSettingsForListIndex -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.ListSettingsForListIndex -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.TypeSettingsForListIndex -import com.puutaro.commandclick.proccess.list_index_for_edit.libs.ListIndexArgsMaker -import com.puutaro.commandclick.util.file.FileSystems -import com.puutaro.commandclick.util.map.FilePrefixGetter -import com.puutaro.commandclick.util.tsv.TsvTool -import java.io.File - -object ExecClickUpdate { - - fun update( - editFragment: EditFragment, - listIndexArgsMaker: ListIndexArgsMaker, - listIndexListViewHolder: ListIndexAdapter.ListIndexListViewHolder, - ){ - val clickConfigMap = listIndexArgsMaker.clickConfigPairList - val enableClickUpdate = - ClickSettingsForListIndex.howEnableClickUpdate( - clickConfigMap - ) - if(!enableClickUpdate) return - when(ListIndexAdapter.listIndexTypeKey) { -// TypeSettingsForListIndex.ListIndexTypeKey.INSTALL_FANNEL -// -> {} - TypeSettingsForListIndex.ListIndexTypeKey.NORMAL - -> updateForNormal( - editFragment, - listIndexListViewHolder.fileName, - ) - TypeSettingsForListIndex.ListIndexTypeKey.TSV_EDIT - -> updateForTsv( - editFragment, - listIndexListViewHolder - ) - } - - } - - private fun updateForTsv( - editFragment: EditFragment, - listIndexListViewHolder: ListIndexAdapter.ListIndexListViewHolder, - ){ - val sortType = ListSettingsForListIndex.getSortType( - editFragment, - ListIndexAdapter.indexListMap - ) - when(sortType){ - ListSettingsForListIndex.SortByKey.SORT, - ListSettingsForListIndex.SortByKey.REVERSE - -> return - ListSettingsForListIndex.SortByKey.LAST_UPDATE, - -> {} - } - val binding = editFragment.binding - val editListRecyclerView = binding.editListRecyclerView - val listIndexForEditAdapter = editListRecyclerView.adapter as ListIndexAdapter - val tsvLine = - listIndexForEditAdapter.listIndexList.getOrNull( - listIndexListViewHolder.bindingAdapterPosition - ) ?: return - val tsvPath = FilePrefixGetter.get( - editFragment, - ListIndexAdapter.indexListMap, - ListSettingsForListIndex.ListSettingKey.LIST_DIR.key, - ) - TsvTool.insertTsvInFirst( - tsvPath, - tsvLine - ) - BroadcastSender.normalSend( - editFragment.context, - BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action - ) - } - - private fun updateForNormal( - editFragment: EditFragment, - selectedItem: String, - ){ - val filterDir = ListSettingsForListIndex.ListIndexListMaker.getFilterDir( - editFragment, - ListIndexAdapter.indexListMap, - ListIndexAdapter.listIndexTypeKey - ) - FileSystems.updateLastModified( - File( - filterDir, - selectedItem - ).absolutePath - ) - BroadcastSender.normalSend( - editFragment.context, - BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecReWriteForListIndexAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecReWriteForListIndexAdapter.kt deleted file mode 100755 index 8d1c55ffe..000000000 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecReWriteForListIndexAdapter.kt +++ /dev/null @@ -1,40 +0,0 @@ -package com.puutaro.commandclick.component.adapter.lib.list_index_adapter - -import com.puutaro.commandclick.component.adapter.ListIndexAdapter -import com.puutaro.commandclick.fragment.EditFragment -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext - -object ExecReWriteForListIndexAdapter { - fun replaceListElementForTsv( - editFragment: EditFragment, - srcAndRepLinePairList: List>, - ){ - val binding = editFragment.binding - val listIndexAdapter = - binding.editListRecyclerView.adapter as ListIndexAdapter - val srcAndRepLinePairListSize = srcAndRepLinePairList.size - CoroutineScope(Dispatchers.IO).launch { - srcAndRepLinePairList.forEach { - val replaceItemIndex = withContext(Dispatchers.IO) { - val srcTsvLine = it.first - listIndexAdapter.listIndexList.indexOf(srcTsvLine) - } - if (replaceItemIndex < 0) return@forEach - withContext(Dispatchers.IO) { - listIndexAdapter.listIndexList[replaceItemIndex] = it.second - } - withContext(Dispatchers.Main) { - listIndexAdapter.notifyItemChanged(replaceItemIndex) - } - if (srcAndRepLinePairListSize != 1) return@forEach - val editListRecyclerView = binding.editListRecyclerView - withContext(Dispatchers.Main) { - editListRecyclerView.layoutManager?.scrollToPosition(replaceItemIndex) - } - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecRemoveForListIndexAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecRemoveForListIndexAdapter.kt deleted file mode 100755 index 09bb91298..000000000 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecRemoveForListIndexAdapter.kt +++ /dev/null @@ -1,66 +0,0 @@ -package com.puutaro.commandclick.component.adapter.lib.list_index_adapter - -import com.puutaro.commandclick.component.adapter.ListIndexAdapter -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.proccess.js_macro_libs.list_index_libs.ExecItemDelete -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.DeleteSettingsForListIndex -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.ListSettingsForListIndex -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.TypeSettingsForListIndex -import com.puutaro.commandclick.util.map.FilePrefixGetter -import com.puutaro.commandclick.util.tsv.TsvTool -import java.io.File - -object ExecRemoveForListIndexAdapter { - - fun updateTsv( - editFragment: EditFragment, - removeItemLineList: List, - ){ - val tsvPath = FilePrefixGetter.get( - editFragment, - ListIndexAdapter.indexListMap, - ListSettingsForListIndex.ListSettingKey.LIST_DIR.key, - ) - if( - tsvPath.isNullOrEmpty() - ) return - TsvTool.updateTsvByRemove( - tsvPath, - removeItemLineList, - ) - } - - fun removeCon( - editFragment: EditFragment, - listIndexType: TypeSettingsForListIndex.ListIndexTypeKey, - removeItemLine: String, - ){ - when(listIndexType) { -// TypeSettingsForListIndex.ListIndexTypeKey.INSTALL_FANNEL, - TypeSettingsForListIndex.ListIndexTypeKey.NORMAL - -> return - TypeSettingsForListIndex.ListIndexTypeKey.TSV_EDIT - -> {} - } - val onDeleteConFile = DeleteSettingsForListIndex.howOnDeleteConFileValue( - ListIndexAdapter.deleteConfigMap - ) - if( - !onDeleteConFile - ) return - val removeTitleConList = removeItemLine.split("\t") - if( - removeTitleConList.size != 2 - ) return - val filePath = removeTitleConList.last() - val filePathObj = File(filePath) - val fileName = filePathObj.name - val parentDirPath = filePathObj.parent - ?: return - ExecItemDelete.DeleteAfterConfirm.execDeleteAfterConfirm( - editFragment, - parentDirPath, - fileName, - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecSwitcherForListIndexAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecSwitcherForListIndexAdapter.kt deleted file mode 100755 index 6525f63a4..000000000 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ExecSwitcherForListIndexAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.puutaro.commandclick.component.adapter.lib.list_index_adapter - -import com.puutaro.commandclick.component.adapter.ListIndexAdapter -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.ListSettingsForListIndex -import com.puutaro.commandclick.util.file.ReadText -import com.puutaro.commandclick.util.map.FilePrefixGetter -import com.puutaro.commandclick.util.tsv.TsvTool - -object ExecSwitcherForListIndexAdapter { - - fun updateTsv( - editFragment: EditFragment, - listIndexList: List, - ){ - val tsvPath = FilePrefixGetter.get( - editFragment, - ListIndexAdapter.indexListMap, - ListSettingsForListIndex.ListSettingKey.LIST_DIR.key, - ) - if( - tsvPath.isNullOrEmpty() - ) return - val sortType = ListSettingsForListIndex.getSortType( - editFragment, - ListIndexAdapter.indexListMap - ) - val sortListIndexListForTsvSave = - ListSettingsForListIndex.ListIndexListMaker.sortListForTsvSave( - sortType, - listIndexList - ) - val curTsvConList = ReadText( - tsvPath - ).textToList().filter { - it.isNotEmpty() - } - if( - curTsvConList.size != sortListIndexListForTsvSave.size - ) return - TsvTool.updateTsv( - tsvPath, - sortListIndexListForTsvSave, - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ListViewToolForListIndexAdapter.kt b/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ListViewToolForListIndexAdapter.kt deleted file mode 100755 index 2d7644671..000000000 --- a/app/src/main/java/com/puutaro/commandclick/component/adapter/lib/list_index_adapter/ListViewToolForListIndexAdapter.kt +++ /dev/null @@ -1,89 +0,0 @@ -package com.puutaro.commandclick.component.adapter.lib.list_index_adapter - -import androidx.core.view.isVisible -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.puutaro.commandclick.component.adapter.ListIndexAdapter -import com.puutaro.commandclick.fragment.EditFragment -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.Job -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext - -object ListViewToolForListIndexAdapter { - - private var listIndexScrollToBottomJob: Job? = null - - fun listIndexListUpdateFileList( - editFragment: EditFragment, - updateList: List, - ){ - val editListRecyclerView = editFragment.binding.editListRecyclerView - if( - !editListRecyclerView.isVisible - ) return - val listIndexForEditAdapter = - editListRecyclerView.adapter as? ListIndexAdapter - ?: return - if( - listIndexForEditAdapter.listIndexList == - updateList - ) return - listIndexForEditAdapter.listIndexList.clear() - listIndexForEditAdapter.listIndexList.addAll(updateList) - listIndexForEditAdapter.notifyDataSetChanged() - scrollToBottom( - editListRecyclerView, - listIndexForEditAdapter, - ) - } - - fun scrollToBottom( - editListRecyclerView: RecyclerView, - listIndexForEditAdapter: ListIndexAdapter, - ){ - listIndexScrollToBottomJob?.cancel() - listIndexScrollToBottomJob = CoroutineScope(Dispatchers.Main).launch { - val layoutManager = - editListRecyclerView.layoutManager as? LinearLayoutManager - val scrollToPosi = listIndexForEditAdapter.itemCount - 1 - withContext(Dispatchers.Main){ - for(i in 1..30){ - val prePosi = layoutManager?.findLastCompletelyVisibleItemPosition() - if( - prePosi == scrollToPosi - ) break - execScroll( - layoutManager, - scrollToPosi, - ) - delay(150) - } - } - withContext(Dispatchers.Main){ - for(i in 1..3){ - delay(150) - execScroll( - layoutManager, - scrollToPosi, - ) - } - } - } - } - - private fun execScroll( - layoutManager: LinearLayoutManager?, - scrollToPosi: Int, - ){ - try { - layoutManager?.scrollToPosition( - scrollToPosi - ) - }catch (e: Exception){ - return - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/custom_manager/GridNoScrollManager.kt b/app/src/main/java/com/puutaro/commandclick/custom_manager/GridNoScrollManager.kt new file mode 100644 index 000000000..720d28b09 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/custom_manager/GridNoScrollManager.kt @@ -0,0 +1,27 @@ +package com.puutaro.commandclick.custom_manager + +import android.content.Context +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager + +class GridNoScrollManager( + context: Context?, + col: Int, + reverseLayout: Boolean = false +) : GridLayoutManager( + context, + col, + LinearLayoutManager.VERTICAL, + reverseLayout +) { + private var isScrollEnabled = true + + fun setScrollEnabled(flag: Boolean) { + this.isScrollEnabled = flag + } + + override fun canScrollVertically(): Boolean { + //Similarly you can customize "canScrollHorizontally()" for managing horizontal scroll + return isScrollEnabled && super.canScrollVertically() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/custom_view/ColorPickerFlag.kt b/app/src/main/java/com/puutaro/commandclick/custom_view/ColorPickerFlag.kt new file mode 100644 index 000000000..e66af0fa5 --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/custom_view/ColorPickerFlag.kt @@ -0,0 +1,19 @@ +package com.puutaro.commandclick.custom_view + +import android.content.Context +import android.widget.TextView +import com.puutaro.commandclick.R +import com.skydoves.colorpickerview.AlphaTileView +import com.skydoves.colorpickerview.ColorEnvelope +import com.skydoves.colorpickerview.flag.FlagView + + +class ColorPickerFlag(context: Context?, layout: Int) : FlagView(context, layout) { + private val textView: TextView = findViewById(R.id.flag_color_code) + private val alphaTileView: AlphaTileView = findViewById(R.id.flag_color_layout) + + override fun onRefresh(colorEnvelope: ColorEnvelope) { + textView.text = "#" + colorEnvelope.hexCode + alphaTileView.setPaintColor(colorEnvelope.color) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/custom_view/MagicTextView.kt b/app/src/main/java/com/puutaro/commandclick/custom_view/MagicTextView.kt index eff4a81ff..286b69956 100644 --- a/app/src/main/java/com/puutaro/commandclick/custom_view/MagicTextView.kt +++ b/app/src/main/java/com/puutaro/commandclick/custom_view/MagicTextView.kt @@ -18,327 +18,327 @@ import android.util.Pair import java.util.WeakHashMap -class MagicTextView : androidx.appcompat.widget.AppCompatTextView { - private var outerShadows: ArrayList? = null - private var innerShadows: ArrayList? = null - private var canvasStore: WeakHashMap>? = null - private var tempCanvas: Canvas? = null - private var tempBitmap: Bitmap? = null - private var foregroundDrawable: Drawable? = null - private var strokeWidth = 0f - private var strokeColor: Int? = null - private var strokeJoin: Paint.Join? = null - private var strokeMiter = 0f - private lateinit var lockedCompoundPadding: IntArray - private var frozen = false - private val porterDuffXferModeSrcTop = PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP) - private val porterDuffXfermodeDstTop = PorterDuffXfermode(PorterDuff.Mode.DST_OUT) - - constructor(context: Context) : super(context) { - init(null) - } - - constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { - init(attrs) - } - - constructor(context: Context, attrs: AttributeSet?, defStyle: Int) : super( - context, - attrs, - defStyle - ) { - init(attrs) - } - - fun init(attrs: AttributeSet?) { - outerShadows = ArrayList() - innerShadows = ArrayList() - if (canvasStore == null) { - canvasStore = WeakHashMap() - } - attrs?.let { - val a = context.obtainStyledAttributes(it, R.styleable.MagicTextView) - val typefaceName = a.getString(R.styleable.MagicTextView_typeface) - typefaceName?.let { - val tf = Typeface.createFromAsset( - context.assets, - String.format("fonts/%s.ttf", it) - ) - setTypeface(tf) - } - if ( - a.hasValue(R.styleable.MagicTextView_foreground) - ) { - val foreground = a.getDrawable(R.styleable.MagicTextView_foreground) - foreground?.let { - setForegroundDrawable(it) - } ?: let { - this.setTextColor(a.getColor(R.styleable.MagicTextView_foreground, -0x1000000)) - } - } - if ( - a.hasValue(R.styleable.MagicTextView_mBackground) - ) { - val background = a.getDrawable(R.styleable.MagicTextView_mBackground) - background?.let { - setBackground(background) - } ?: let { - setBackgroundColor(a.getColor(R.styleable.MagicTextView_mBackground, -0x1000000)) - } - } - if ( - a.hasValue(R.styleable.MagicTextView_innerShadowColor) - ) { - addInnerShadow( - a.getDimensionPixelSize(R.styleable.MagicTextView_innerShadowRadius, 0) - .toFloat(), - a.getDimensionPixelOffset(R.styleable.MagicTextView_innerShadowDx, 0).toFloat(), - a.getDimensionPixelOffset(R.styleable.MagicTextView_innerShadowDy, 0).toFloat(), - a.getColor(R.styleable.MagicTextView_innerShadowColor, -0x1000000) - ) - } - if ( - a.hasValue(R.styleable.MagicTextView_outerShadowColor) - ) { - addOuterShadow( - a.getDimensionPixelSize(R.styleable.MagicTextView_outerShadowRadius, 0) - .toFloat(), - a.getDimensionPixelOffset(R.styleable.MagicTextView_outerShadowDx, 0).toFloat(), - a.getDimensionPixelOffset(R.styleable.MagicTextView_outerShadowDy, 0).toFloat(), - a.getColor(R.styleable.MagicTextView_outerShadowColor, -0x1000000) - ) - } - if ( - a.hasValue(R.styleable.MagicTextView_strokeColor) - ) { - val strokeWidth = - a.getDimensionPixelSize(R.styleable.MagicTextView_strokeWidth, 1).toFloat() - val strokeColor = a.getColor(R.styleable.MagicTextView_strokeColor, -0x1000000) - val strokeMiter = - a.getDimensionPixelSize(R.styleable.MagicTextView_strokeMiter, 10).toFloat() - var strokeJoin: Paint.Join? = null - when (a.getInt(R.styleable.MagicTextView_strokeJoinStyle, 0)) { - 0 -> strokeJoin = Paint.Join.MITER - 1 -> strokeJoin = Paint.Join.BEVEL - 2 -> strokeJoin = Paint.Join.ROUND - } - this.setStroke(strokeWidth, strokeColor, strokeJoin, strokeMiter) - } - a.recycle() - } - val innerShadowList = innerShadows - val isInnerShadowList = - innerShadowList != null - && innerShadowList.size > 0 - if ( - isInnerShadowList - || foregroundDrawable != null - ) { - setLayerType(LAYER_TYPE_SOFTWARE, null) - } - } - - private fun setStroke(width: Float, color: Int, join: Paint.Join?, miter: Float) { - strokeWidth = width - strokeColor = color - strokeJoin = join - strokeMiter = miter - } - -// fun setStroke(width: Float, color: Int) { -// setStroke(width, color, Paint.Join.MITER, 10f) +//class MagicTextView : androidx.appcompat.widget.AppCompatTextView { +// private var outerShadows: ArrayList? = null +// private var innerShadows: ArrayList? = null +// private var canvasStore: WeakHashMap>? = null +// private var tempCanvas: Canvas? = null +// private var tempBitmap: Bitmap? = null +// private var foregroundDrawable: Drawable? = null +// private var strokeWidth = 0f +// private var strokeColor: Int? = null +// private var strokeJoin: Paint.Join? = null +// private var strokeMiter = 0f +// private lateinit var lockedCompoundPadding: IntArray +// private var frozen = false +// private val porterDuffXferModeSrcTop = PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP) +// private val porterDuffXfermodeDstTop = PorterDuffXfermode(PorterDuff.Mode.DST_OUT) +// +// constructor(context: Context) : super(context) { +// init(null) // } - - fun addOuterShadow(r: Float, dx: Float, dy: Float, color: Int) { - val rVal = when (r == 0f) { - true -> 0.0001f - else -> r - } - outerShadows?.add(Shadow(rVal, dx, dy, color)) - } - - private fun addInnerShadow(r: Float, dx: Float, dy: Float, color: Int) { - val rVal = when (r == 0f) { - true -> 0.0001f - else -> r - } - innerShadows?.add(Shadow(rVal, dx, dy, color)) - } - -// fun clearInnerShadows() { -// innerShadows!!.clear() +// +// constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { +// init(attrs) // } // -// fun clearOuterShadows() { -// outerShadows!!.clear() +// constructor(context: Context, attrs: AttributeSet?, defStyle: Int) : super( +// context, +// attrs, +// defStyle +// ) { +// init(attrs) // } - - private fun setForegroundDrawable(d: Drawable?) { - foregroundDrawable = d - } - - override fun getForeground(): Drawable? { - return if ( - foregroundDrawable == null - ) foregroundDrawable - else ColorDrawable(this.currentTextColor) - } - - public override fun onDraw(canvas: Canvas) { - super.onDraw(canvas) - freeze() - val restoreBackground = this.background - val restoreDrawables = this.compoundDrawables - val restoreColor = this.currentTextColor - setCompoundDrawables(null, null, null, null) - outerShadows?.forEach { - shadow -> - setShadowLayer(shadow.r, shadow.dx, shadow.dy, shadow.color) - super.onDraw(canvas) - } - setShadowLayer(0f, 0f, 0f, 0) - this.setTextColor(restoreColor) - if ( - foregroundDrawable != null - && foregroundDrawable is BitmapDrawable - ) { - generateTempCanvas() - super.onDraw(tempCanvas) - val paint = (foregroundDrawable as BitmapDrawable).paint - paint.xfermode = porterDuffXferModeSrcTop - foregroundDrawable?.bounds = canvas.clipBounds - tempCanvas?.let { - foregroundDrawable?.draw(it) - } - tempBitmap?.let { - canvas.drawBitmap(it, 0f, 0f, null) - } - tempCanvas?.let { - tempCanvas?.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR) - } - - } - strokeColor?.let { - val paint = this.paint - paint.style = Paint.Style.STROKE - paint.strokeJoin = strokeJoin - paint.strokeMiter = strokeMiter - this.setTextColor(it) - paint.strokeWidth = strokeWidth - super.onDraw(canvas) - paint.style = Paint.Style.FILL - this.setTextColor(restoreColor) - } - val innerShadowList = innerShadows - if ( - innerShadowList != null - && innerShadowList.size > 0 - ) { - generateTempCanvas() - val paint = this.paint - for (shadow in innerShadowList) { - this.setTextColor(shadow.color) - super.onDraw(tempCanvas) - this.setTextColor(-0x1000000) - paint.xfermode = porterDuffXfermodeDstTop - paint.maskFilter = BlurMaskFilter(shadow.r, BlurMaskFilter.Blur.NORMAL) - tempCanvas?.save() - tempCanvas?.translate(shadow.dx, shadow.dy) - super.onDraw(tempCanvas) - tempCanvas?.restore() - tempBitmap?.let { - canvas.drawBitmap(it, 0f, 0f, null) - } - tempCanvas?.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR) - paint.xfermode = null - paint.maskFilter = null - this.setTextColor(restoreColor) - setShadowLayer(0f, 0f, 0f, 0) - } - } - this.setCompoundDrawablesWithIntrinsicBounds( - restoreDrawables[0], - restoreDrawables[1], - restoreDrawables[2], - restoreDrawables[3] - ) - background = restoreBackground -// setBackgroundDrawable(restoreBackground) - this.setTextColor(restoreColor) - unfreeze() - } - - private fun generateTempCanvas() { - val key = String.format("%dx%d", width, height) - val stored = canvasStore?.get(key) - when (stored != null) { - true -> { - tempCanvas = stored.first - tempBitmap = stored.second - } - else -> { - tempCanvas = Canvas() - tempBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) - tempCanvas?.setBitmap(tempBitmap) - canvasStore?.put(key, Pair(tempCanvas, tempBitmap)) - } - } - } - - // Keep these things locked while onDraw in processing - private fun freeze() { - lockedCompoundPadding = intArrayOf( - compoundPaddingLeft, - compoundPaddingRight, - compoundPaddingTop, - compoundPaddingBottom - ) - frozen = true - } - - private fun unfreeze() { - frozen = false - } - - override fun requestLayout() { - if (!frozen) super.requestLayout() - } - - override fun postInvalidate() { - if (!frozen) super.postInvalidate() - } - - override fun postInvalidate(left: Int, top: Int, right: Int, bottom: Int) { - if (!frozen) super.postInvalidate(left, top, right, bottom) - } - - override fun invalidate() { - if (!frozen) super.invalidate() - } - -// override fun invalidate(rect: Rect) { -// if (!frozen) super.invalidate(rect) +// +// fun init(attrs: AttributeSet?) { +// outerShadows = ArrayList() +// innerShadows = ArrayList() +// if (canvasStore == null) { +// canvasStore = WeakHashMap() +// } +// attrs?.let { +// val a = context.obtainStyledAttributes(it, R.styleable.MagicTextView) +// val typefaceName = a.getString(R.styleable.MagicTextView_typeface) +// typefaceName?.let { +// val tf = Typeface.createFromAsset( +// context.assets, +// String.format("fonts/%s.ttf", it) +// ) +// setTypeface(tf) +// } +// if ( +// a.hasValue(R.styleable.MagicTextView_foreground) +// ) { +// val foreground = a.getDrawable(R.styleable.MagicTextView_foreground) +// foreground?.let { +// setForegroundDrawable(it) +// } ?: let { +// this.setTextColor(a.getColor(R.styleable.MagicTextView_foreground, -0x1000000)) +// } +// } +// if ( +// a.hasValue(R.styleable.MagicTextView_mBackground) +// ) { +// val background = a.getDrawable(R.styleable.MagicTextView_mBackground) +// background?.let { +// setBackground(background) +// } ?: let { +// setBackgroundColor(a.getColor(R.styleable.MagicTextView_mBackground, -0x1000000)) +// } +// } +// if ( +// a.hasValue(R.styleable.MagicTextView_innerShadowColor) +// ) { +// addInnerShadow( +// a.getDimensionPixelSize(R.styleable.MagicTextView_innerShadowRadius, 0) +// .toFloat(), +// a.getDimensionPixelOffset(R.styleable.MagicTextView_innerShadowDx, 0).toFloat(), +// a.getDimensionPixelOffset(R.styleable.MagicTextView_innerShadowDy, 0).toFloat(), +// a.getColor(R.styleable.MagicTextView_innerShadowColor, -0x1000000) +// ) +// } +// if ( +// a.hasValue(R.styleable.MagicTextView_outerShadowColor) +// ) { +// addOuterShadow( +// a.getDimensionPixelSize(R.styleable.MagicTextView_outerShadowRadius, 0) +// .toFloat(), +// a.getDimensionPixelOffset(R.styleable.MagicTextView_outerShadowDx, 0).toFloat(), +// a.getDimensionPixelOffset(R.styleable.MagicTextView_outerShadowDy, 0).toFloat(), +// a.getColor(R.styleable.MagicTextView_outerShadowColor, -0x1000000) +// ) +// } +// if ( +// a.hasValue(R.styleable.MagicTextView_strokeColor) +// ) { +// val strokeWidth = +// a.getDimensionPixelSize(R.styleable.MagicTextView_strokeWidth, 1).toFloat() +// val strokeColor = a.getColor(R.styleable.MagicTextView_strokeColor, -0x1000000) +// val strokeMiter = +// a.getDimensionPixelSize(R.styleable.MagicTextView_strokeMiter, 10).toFloat() +// var strokeJoin: Paint.Join? = null +// when (a.getInt(R.styleable.MagicTextView_strokeJoinStyle, 0)) { +// 0 -> strokeJoin = Paint.Join.MITER +// 1 -> strokeJoin = Paint.Join.BEVEL +// 2 -> strokeJoin = Paint.Join.ROUND +// } +// this.setStroke(strokeWidth, strokeColor, strokeJoin, strokeMiter) +// } +// a.recycle() +// } +// val innerShadowList = innerShadows +// val isInnerShadowList = +// innerShadowList != null +// && innerShadowList.size > 0 +// if ( +// isInnerShadowList +// || foregroundDrawable != null +// ) { +// setLayerType(LAYER_TYPE_SOFTWARE, null) +// } // } // -// override fun invalidate(l: Int, t: Int, r: Int, b: Int) { -// if (!frozen) super.invalidate(l, t, r, b) +// private fun setStroke(width: Float, color: Int, join: Paint.Join?, miter: Float) { +// strokeWidth = width +// strokeColor = color +// strokeJoin = join +// strokeMiter = miter // } - - override fun getCompoundPaddingLeft(): Int { - return if (!frozen) super.getCompoundPaddingLeft() else lockedCompoundPadding[0] - } - - override fun getCompoundPaddingRight(): Int { - return if (!frozen) super.getCompoundPaddingRight() else lockedCompoundPadding[1] - } - - override fun getCompoundPaddingTop(): Int { - return if (!frozen) super.getCompoundPaddingTop() else lockedCompoundPadding[2] - } - - override fun getCompoundPaddingBottom(): Int { - return if (!frozen) super.getCompoundPaddingBottom() else lockedCompoundPadding[3] - } - - class Shadow(var r: Float, var dx: Float, var dy: Float, var color: Int) -} \ No newline at end of file +// +//// fun setStroke(width: Float, color: Int) { +//// setStroke(width, color, Paint.Join.MITER, 10f) +//// } +// +// fun addOuterShadow(r: Float, dx: Float, dy: Float, color: Int) { +// val rVal = when (r == 0f) { +// true -> 0.0001f +// else -> r +// } +// outerShadows?.add(Shadow(rVal, dx, dy, color)) +// } +// +// private fun addInnerShadow(r: Float, dx: Float, dy: Float, color: Int) { +// val rVal = when (r == 0f) { +// true -> 0.0001f +// else -> r +// } +// innerShadows?.add(Shadow(rVal, dx, dy, color)) +// } +// +//// fun clearInnerShadows() { +//// innerShadows!!.clear() +//// } +//// +//// fun clearOuterShadows() { +//// outerShadows!!.clear() +//// } +// +// private fun setForegroundDrawable(d: Drawable?) { +// foregroundDrawable = d +// } +// +// override fun getForeground(): Drawable? { +// return if ( +// foregroundDrawable == null +// ) foregroundDrawable +// else ColorDrawable(this.currentTextColor) +// } +// +// public override fun onDraw(canvas: Canvas) { +// super.onDraw(canvas) +// freeze() +// val restoreBackground = this.background +// val restoreDrawables = this.compoundDrawables +// val restoreColor = this.currentTextColor +// setCompoundDrawables(null, null, null, null) +// outerShadows?.forEach { +// shadow -> +// setShadowLayer(shadow.r, shadow.dx, shadow.dy, shadow.color) +// super.onDraw(canvas) +// } +// setShadowLayer(0f, 0f, 0f, 0) +// this.setTextColor(restoreColor) +// if ( +// foregroundDrawable != null +// && foregroundDrawable is BitmapDrawable +// ) { +// generateTempCanvas() +// super.onDraw(tempCanvas) +// val paint = (foregroundDrawable as BitmapDrawable).paint +// paint.xfermode = porterDuffXferModeSrcTop +// foregroundDrawable?.bounds = canvas.clipBounds +// tempCanvas?.let { +// foregroundDrawable?.draw(it) +// } +// tempBitmap?.let { +// canvas.drawBitmap(it, 0f, 0f, null) +// } +// tempCanvas?.let { +// tempCanvas?.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR) +// } +// +// } +// strokeColor?.let { +// val paint = this.paint +// paint.style = Paint.Style.STROKE +// paint.strokeJoin = strokeJoin +// paint.strokeMiter = strokeMiter +// this.setTextColor(it) +// paint.strokeWidth = strokeWidth +// super.onDraw(canvas) +// paint.style = Paint.Style.FILL +// this.setTextColor(restoreColor) +// } +// val innerShadowList = innerShadows +// if ( +// innerShadowList != null +// && innerShadowList.size > 0 +// ) { +// generateTempCanvas() +// val paint = this.paint +// for (shadow in innerShadowList) { +// this.setTextColor(shadow.color) +// super.onDraw(tempCanvas) +// this.setTextColor(-0x1000000) +// paint.xfermode = porterDuffXfermodeDstTop +// paint.maskFilter = BlurMaskFilter(shadow.r, BlurMaskFilter.Blur.NORMAL) +// tempCanvas?.save() +// tempCanvas?.translate(shadow.dx, shadow.dy) +// super.onDraw(tempCanvas) +// tempCanvas?.restore() +// tempBitmap?.let { +// canvas.drawBitmap(it, 0f, 0f, null) +// } +// tempCanvas?.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR) +// paint.xfermode = null +// paint.maskFilter = null +// this.setTextColor(restoreColor) +// setShadowLayer(0f, 0f, 0f, 0) +// } +// } +// this.setCompoundDrawablesWithIntrinsicBounds( +// restoreDrawables[0], +// restoreDrawables[1], +// restoreDrawables[2], +// restoreDrawables[3] +// ) +// background = restoreBackground +//// setBackgroundDrawable(restoreBackground) +// this.setTextColor(restoreColor) +// unfreeze() +// } +// +// private fun generateTempCanvas() { +// val key = String.format("%dx%d", width, height) +// val stored = canvasStore?.get(key) +// when (stored != null) { +// true -> { +// tempCanvas = stored.first +// tempBitmap = stored.second +// } +// else -> { +// tempCanvas = Canvas() +// tempBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) +// tempCanvas?.setBitmap(tempBitmap) +// canvasStore?.put(key, Pair(tempCanvas, tempBitmap)) +// } +// } +// } +// +// // Keep these things locked while onDraw in processing +// private fun freeze() { +// lockedCompoundPadding = intArrayOf( +// compoundPaddingLeft, +// compoundPaddingRight, +// compoundPaddingTop, +// compoundPaddingBottom +// ) +// frozen = true +// } +// +// private fun unfreeze() { +// frozen = false +// } +// +// override fun requestLayout() { +// if (!frozen) super.requestLayout() +// } +// +// override fun postInvalidate() { +// if (!frozen) super.postInvalidate() +// } +// +// override fun postInvalidate(left: Int, top: Int, right: Int, bottom: Int) { +// if (!frozen) super.postInvalidate(left, top, right, bottom) +// } +// +// override fun invalidate() { +// if (!frozen) super.invalidate() +// } +// +//// override fun invalidate(rect: Rect) { +//// if (!frozen) super.invalidate(rect) +//// } +//// +//// override fun invalidate(l: Int, t: Int, r: Int, b: Int) { +//// if (!frozen) super.invalidate(l, t, r, b) +//// } +// +// override fun getCompoundPaddingLeft(): Int { +// return if (!frozen) super.getCompoundPaddingLeft() else lockedCompoundPadding[0] +// } +// +// override fun getCompoundPaddingRight(): Int { +// return if (!frozen) super.getCompoundPaddingRight() else lockedCompoundPadding[1] +// } +// +// override fun getCompoundPaddingTop(): Int { +// return if (!frozen) super.getCompoundPaddingTop() else lockedCompoundPadding[2] +// } +// +// override fun getCompoundPaddingBottom(): Int { +// return if (!frozen) super.getCompoundPaddingBottom() else lockedCompoundPadding[3] +// } +// +// class Shadow(var r: Float, var dx: Float, var dy: Float, var color: Int) +//} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/custom_view/OutlineTextView.kt b/app/src/main/java/com/puutaro/commandclick/custom_view/OutlineTextView.kt index e041cfa05..415014a7f 100644 --- a/app/src/main/java/com/puutaro/commandclick/custom_view/OutlineTextView.kt +++ b/app/src/main/java/com/puutaro/commandclick/custom_view/OutlineTextView.kt @@ -6,6 +6,7 @@ import android.graphics.Color import android.graphics.Paint import android.util.AttributeSet import androidx.appcompat.widget.AppCompatTextView +import androidx.core.content.ContextCompat import com.puutaro.commandclick.R @@ -21,48 +22,59 @@ class OutlineTextView : AppCompatTextView { // private var isRevOutLine = false - var outlineWidthSrc = 2 + var strokeWidthSrc = 2 private var strokeColor = Color.WHITE private var fillColor = context.getColor(R.color.fill_gray) private val densityForOutline = context.resources.displayMetrics.density fun setStrokeColor(id: Int){ - strokeColor = context.getColor(id) + strokeColor = try { + ContextCompat.getColor(context, id) + } catch (e: Exception){ + id + } } fun setFillColor(id: Int){ - fillColor = context.getColor(id) + fillColor = try { + ContextCompat.getColor(context, id) + } catch (e: Exception){ + id + } + } - override fun onDraw(canvas: Canvas?) { -// val strokeColor = when( -// isRevOutLine -// ){ -// true -> Color.BLACK -// else -> Color.WHITE -// } + override fun onDraw(canvas: Canvas) { setTextColor(strokeColor) paint.apply { - style = Paint.Style.FILL_AND_STROKE - strokeWidth = outlineWidthSrc * densityForOutline + style = Paint.Style.STROKE + strokeWidth = strokeWidthSrc * densityForOutline } super.onDraw(canvas) -// val fillColor = when( -// isRevOutLine -// ){ -// true -> Color.WHITE -// else -> Color.BLACK -// } setTextColor(fillColor) paint.apply { style = Paint.Style.FILL strokeWidth = 0f } super.onDraw(canvas) - } -// fun revOutline(isRev: Boolean){ -// isRevOutLine = isRev + +// paint.isAntiAlias = true // -// } +// // グラデーションの設定 (例: 赤から青へのグラデーション) +// val gradient = LinearGradient(0f, 0f, width.toFloat(), 0f, Color.RED, Color.BLUE, Shader.TileMode.CLAMP) +// paint.shader = gradient +// +// // 最初の文字の幅を取得 +// val firstCharSrc = text.toString().firstOrNull()?.toString() ?: return +// val firstCharWidth = paint.measureText(firstCharSrc) +// +// // 最初の文字をグラデーションで描画 +// paint.shader = gradient +// canvas?.drawText(firstCharSrc, 0f, baseline.toFloat(), paint) + +// // 残りの文字を通常のテキストで描画 +// paint.shader = null +// canvas.drawText(text.toString().substring(1), firstCharWidth, baseline, paint) + } } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment/CommandIndexFragment.kt b/app/src/main/java/com/puutaro/commandclick/fragment/CommandIndexFragment.kt index 7029a3b40..b278a86af 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment/CommandIndexFragment.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment/CommandIndexFragment.kt @@ -1,8 +1,5 @@ package com.puutaro.commandclick.fragment -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent import android.graphics.Color import android.media.AudioManager import android.os.Bundle @@ -15,7 +12,6 @@ import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.RecyclerView import com.puutaro.commandclick.R import com.puutaro.commandclick.activity_lib.event.lib.terminal.ExecSetToolbarButtonImage -import com.puutaro.commandclick.common.variable.broadcast.scheme.BroadCastIntentSchemeForCmdIndex import com.puutaro.commandclick.common.variable.path.UsePath import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable import com.puutaro.commandclick.common.variable.variant.PageSearchToolbarButtonVariant @@ -23,10 +19,10 @@ import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects import com.puutaro.commandclick.databinding.CommandIndexFragmentBinding import com.puutaro.commandclick.fragment_lib.command_index_fragment.* import com.puutaro.commandclick.fragment_lib.command_index_fragment.variable.* -import com.puutaro.commandclick.proccess.broadcast.BroadcastRegister import com.puutaro.commandclick.proccess.pin.PinFannelHideShow import com.puutaro.commandclick.proccess.setting_menu_for_cmdindex.ExtraMenuForCmdIndex import com.puutaro.commandclick.proccess.setting_menu_for_cmdindex.page_search.PageSearchManager +import com.puutaro.commandclick.util.Intent.CurlManager import com.puutaro.commandclick.util.file.FileSystems import com.puutaro.commandclick.util.state.EditFragmentArgs import com.puutaro.commandclick.util.state.FannelInfoTool @@ -35,6 +31,7 @@ import com.puutaro.commandclick.view_model.activity.TerminalViewModel import kotlinx.coroutines.* import net.yslibrary.android.keyboardvisibilityevent.KeyboardVisibilityEvent import net.yslibrary.android.keyboardvisibilityevent.KeyboardVisibilityEventListener +import java.io.File class CommandIndexFragment: Fragment() { @@ -43,28 +40,15 @@ class CommandIndexFragment: Fragment() { private var _binding: CommandIndexFragmentBinding? = null val binding get() = _binding!! var WebSearchSwitch = WebSearchSwich.ON.bool - var historySwitch = SettingVariableSelects.HistorySwitchSelects.OFF.name +// var historySwitch = SettingVariableSelects.HistorySwitchSelects.OFF.name var onTermVisibleWhenKeyboard = CommandClickScriptVariable.ON_TERM_VISIBLE_WHEN_KEYBOARD_DEFAULT_VALUE - var urlHistoryOrButtonExec = CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE +// var urlHistoryOrButtonExec = CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE var fannelInfoMap: Map = mapOf() var terminalColor = CommandClickScriptVariable.TERMINAL_COLOR_DEFAULT_VALUE var jsExecuteJob: Job? = null var suggestJob: Job? = null var showTerminalJobWhenReuse: Job? = null - var savedEditTextContents = String() -// var extraMapBitmapList: List = emptyList() -// var homeFannelHistoryNameList: List? = null -// var bottomScriptUrlList = emptyList() - - private var broadcastReceiverForCmdIndex: BroadcastReceiver = object : BroadcastReceiver() { - override fun onReceive(context: Context, intent: Intent) { -// BroadcastReceiveHandlerForCmdIndex.handle( -// this@CommandIndexFragment, -// intent, -// ) - } - } override fun onCreateView( inflater: LayoutInflater, @@ -86,8 +70,6 @@ class CommandIndexFragment: Fragment() { super.onViewCreated(view, savedInstanceState) val terminalViewModel: TerminalViewModel by activityViewModels() terminalViewModel.onDialog = false - val cmdIndexViewModel: CommandIndexViewModel by activityViewModels() - cmdIndexViewModel.onFocusSearchText = false val startUpPref = FannelInfoTool.getSharePref(context) binding.pageSearch.cmdclickPageSearchToolBar.isVisible = false val defaultSystemPath = @@ -146,14 +128,9 @@ class CommandIndexFragment: Fragment() { override fun onDestroyView() { super.onDestroyView() - val cmdIndexViewModel: CommandIndexViewModel by activityViewModels() -// exitDialog( -//// binding.cmdList -// ) ExtraMenuGifCreator.exit() - UrlImageDownloader.exit() +// UrlImageDownloader.exit() PreInstallFannel.exit() - cmdIndexViewModel.onFocusSearchText = false jsExecuteJob?.cancel() IndexInitHandler.exit() _binding = null @@ -166,10 +143,6 @@ class CommandIndexFragment: Fragment() { showTerminalJobWhenReuse?.cancel() // ExtraMenuGifCreator.exit() // PreInstallFannel.exit() - BroadcastRegister.unregisterBroadcastReceiver( - this, - broadcastReceiverForCmdIndex, - ) super.onPause() } @@ -178,13 +151,6 @@ class CommandIndexFragment: Fragment() { TerminalShower.show(this) // EditTextWhenReuse.focus(this) activity?.volumeControlStream = AudioManager.STREAM_MUSIC - BroadcastRegister.registerBroadcastReceiverMultiActions( - this, - broadcastReceiverForCmdIndex, - listOf( - BroadCastIntentSchemeForCmdIndex.UPDATE_INDEX_FANNEL_LIST.action, - ) - ) // PreInstallFannel.install(this) // ExtraMenuGifCreator.create(this) } diff --git a/app/src/main/java/com/puutaro/commandclick/fragment/EditFragment.kt b/app/src/main/java/com/puutaro/commandclick/fragment/EditFragment.kt index f150d48f1..c764b0a20 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment/EditFragment.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment/EditFragment.kt @@ -10,40 +10,31 @@ import android.view.View import android.view.ViewGroup import android.view.WindowManager import android.widget.EditText -import androidx.appcompat.widget.LinearLayoutCompat -import androidx.core.view.isVisible import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment -import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.RecyclerView import com.abdeveloper.library.MultiSelectModel import com.puutaro.commandclick.R import com.puutaro.commandclick.common.variable.broadcast.scheme.BroadCastIntentSchemeForEdit import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.common.variable.variant.PageSearchToolbarButtonVariant -import com.puutaro.commandclick.common.variable.variant.ReadLines -import com.puutaro.commandclick.component.adapter.ListIndexAdapter -import com.puutaro.commandclick.component.adapter.lib.list_index_adapter.ListViewToolForListIndexAdapter +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.component.adapter.lib.edit_list_adapter.ListViewToolForEditListAdapter import com.puutaro.commandclick.fragment_lib.edit_fragment.common.UpdateLastModifyForEdit import com.puutaro.commandclick.databinding.EditFragmentBinding import com.puutaro.commandclick.fragment_lib.command_index_fragment.variable.ToolbarMenuCategoriesVariantForCmdIndex import com.puutaro.commandclick.fragment_lib.edit_fragment.* import com.puutaro.commandclick.fragment_lib.edit_fragment.broadcast.receiver.BroadcastReceiveHandlerForEdit import com.puutaro.commandclick.fragment_lib.edit_fragment.common.TerminalShowByTerminalDoWhenReuse -import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.KeyboardWhenTermLongForEdit -import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.ListIndexSizingToKeyboard -import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.PageSearchToolbarManagerForEdit -import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.WebSearchToolbarManagerForEdit import com.puutaro.commandclick.fragment_lib.edit_fragment.variable.EditInitType import com.puutaro.commandclick.fragment_lib.edit_fragment.common.ToolbarButtonBariantForEdit import com.puutaro.commandclick.fragment_lib.edit_fragment.common.ToolbarButtonToolForEdit import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.CurrentFannelConListMaker -import com.puutaro.commandclick.proccess.js_macro_libs.toolbar_libs.EditLongPressType import com.puutaro.commandclick.proccess.broadcast.BroadcastRegister -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.ListSettingsForListIndex -import com.puutaro.commandclick.proccess.js_macro_libs.list_index_libs.DirectoryAndCopyGetter +import com.puutaro.commandclick.proccess.edit.image_action.ImageActionAsyncCoroutine +import com.puutaro.commandclick.proccess.edit.setting_action.SettingActionAsyncCoroutine +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList +import com.puutaro.commandclick.proccess.js_macro_libs.edit_list_libs.DirectoryAndCopyGetter import com.puutaro.commandclick.proccess.ubuntu.BusyboxExecutor import com.puutaro.commandclick.proccess.ubuntu.UbuntuFiles import com.puutaro.commandclick.util.* @@ -54,7 +45,6 @@ import com.puutaro.commandclick.util.state.FannelStateManager import com.puutaro.commandclick.util.state.FannelStateRooterManager import com.puutaro.commandclick.util.state.SettingFannelConHandlerForEdit import com.puutaro.commandclick.util.state.FannelInfoTool -import com.puutaro.commandclick.view_model.activity.CommandIndexViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -70,16 +60,16 @@ class EditFragment: Fragment() { private var _binding: EditFragmentBinding? = null val binding get() = _binding!! var busyboxExecutor: BusyboxExecutor? = null - var historySwitch = SettingVariableSelects.HistorySwitchSelects.OFF.name +// var historySwitch = SettingVariableSelects.HistorySwitchSelects.OFF.name var onTermVisibleWhenKeyboard = CommandClickScriptVariable.ON_TERM_VISIBLE_WHEN_KEYBOARD_DEFAULT_VALUE - var urlHistoryOrButtonExec = - CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE +// var urlHistoryOrButtonExec = +// CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE var fontZoomPercent = CommandClickScriptVariable.CMDCLICK_TERMINAL_FONT_ZOOM_DEFAULT_VALUE var terminalOn = CommandClickScriptVariable.TERMINAL_DO_DEFAULT_VALUE var terminalColor = CommandClickScriptVariable.TERMINAL_COLOR_DEFAULT_VALUE var jsExecuteJob: Job? = null - var popBackStackToIndexImmediateJob: Job? = null +// var popBackStackToIndexImmediateJob: Job? = null var suggestJob: Job? = null var fannelInfoMap: Map = mapOf() var srcFannelInfoMap: Map? = null @@ -87,33 +77,35 @@ class EditFragment: Fragment() { EditFragmentArgs.Companion.EditTypeSettingsKey.CMD_VAL_EDIT var setReplaceVariableMap: Map? = null var settingFannelPath: String = String() - var setVariableTypeList: List? = null - var hideSettingVariableList: List = emptyList() - var enableCmdEdit = false +// var setVariableTypeList: List? = null +// var hideSettingVariableList: List = emptyList() +// var enableCmdEdit = false var editExecuteValue = CommandClickScriptVariable.EDIT_EXECUTE_DEFAULT_VALUE var enableEditExecute = false + var mainFannelConList = emptyList() var currentFannelConList = emptyList() var settingFannelConList: List? = null - var existIndexList: Boolean = false - var passCmdVariableEdit = String() +// var existIndexList: Boolean = false +// var passCmdVariableEdit = String() var toolbarButtonConfigMap: Map?>? = null - var listIndexConfigMap: Map? = null - var qrDialogConfig: Map? = null + var editListConfigMap: Map? = null +// var qrDialogConfig: Map? = null var directoryAndCopyGetter: DirectoryAndCopyGetter? = null val toolBarButtonVisibleMap = ToolbarButtonToolForEdit.createInitButtonDisableMap() val toolBarButtonIconMap: MutableMap> = ToolbarButtonToolForEdit.createInitButtonIconMap() var editBoxTitleConfig: Map = emptyMap() - var filterDir = String() +// var filterDir = String() var buttonWeight = 0.25f - var onNoUrlSaveMenu = false +// var onNoUrlSaveMenu = false var onUpdateLastModify = false var disableKeyboardFragmentChange = false val listConSelectBoxMapList: MutableList?> = mutableListOf() - var recordNumToMapNameValueInCommandHolder: Map?>? = null - var recordNumToMapNameValueInSettingHolder: Map?>? = null +// var recordNumToMapNameValueInCommandHolder: Map?>? = null +// var recordNumToMapNameValueInSettingHolder: Map?>? = null var firstUpdate = false val alterIfShellResultMap: MutableMap = mutableMapOf() - + val imageActionAsyncCoroutine = ImageActionAsyncCoroutine() + val settingActionAsyncCoroutine = SettingActionAsyncCoroutine() private var broadcastReceiverForEdit: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { @@ -142,9 +134,9 @@ class EditFragment: Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - binding.pageSearch.cmdclickPageSearchToolBar.isVisible = false - binding.webSearch.webSearchToolbar.isVisible = false - binding.editListLinearLayout.isVisible = false +// binding.pageSearch.cmdclickPageSearchToolBar.isVisible = false +// binding.webSearch.webSearchToolbar.isVisible = false +// binding.editToolBarLinearLayout.isVisible = false directoryAndCopyGetter = DirectoryAndCopyGetter(this) val sharePref = FannelInfoTool.getSharePref(context) fannelInfoMap = @@ -165,9 +157,9 @@ class EditFragment: Fragment() { ) editTypeSettingKey = EditFragmentArgs.getEditType(arguments) - enableCmdEdit = - editTypeSettingKey == - EditFragmentArgs.Companion.EditTypeSettingsKey.CMD_VAL_EDIT +// enableCmdEdit = +// editTypeSettingKey == +// EditFragmentArgs.Companion.EditTypeSettingsKey.CMD_VAL_EDIT Keyboard.hiddenKeyboardForFragment( this ) @@ -189,7 +181,7 @@ class EditFragment: Fragment() { val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath val currentFannelPath = File(cmdclickDefaultAppDirPath, currentFannelName).absolutePath - val mainFannelConList = + mainFannelConList = ReadText(currentFannelPath).textToList() setReplaceVariableMap = JavaScriptLoadUrl.createMakeReplaceVariableMapHandler( @@ -207,6 +199,7 @@ class EditFragment: Fragment() { settingFannelPath, ) FannelStateManager.updateState( + context, currentFannelState, fannelInfoMap, setReplaceVariableMap, @@ -236,15 +229,15 @@ class EditFragment: Fragment() { ).absolutePath, ) // val pageSearchToolbarManagerForEdit = -// PageSearchToolbarManagerForEdit(this) - PageSearchToolbarManagerForEdit.cancleButtonClickListener(this) - PageSearchToolbarManagerForEdit.onKeyListner(this) - PageSearchToolbarManagerForEdit.pageSearchTextChangeListner(this) - PageSearchToolbarManagerForEdit.searchTopClickLisnter(this) - PageSearchToolbarManagerForEdit.searchDownClickLisnter(this) - WebSearchToolbarManagerForEdit.setKeyListener(this) - WebSearchToolbarManagerForEdit.setCancelListener(this) - WebSearchToolbarManagerForEdit.setGoogleSuggest(this) +//// PageSearchToolbarManagerForEdit(this) +// PageSearchToolbarManagerForEdit.cancleButtonClickListener(this) +// PageSearchToolbarManagerForEdit.onKeyListner(this) +// PageSearchToolbarManagerForEdit.pageSearchTextChangeListner(this) +// PageSearchToolbarManagerForEdit.searchTopClickLisnter(this) +// PageSearchToolbarManagerForEdit.searchDownClickLisnter(this) +// WebSearchToolbarManagerForEdit.setKeyListener(this) +// WebSearchToolbarManagerForEdit.setCancelListener(this) +// WebSearchToolbarManagerForEdit.setGoogleSuggest(this) } val window = activity?.window @@ -270,8 +263,6 @@ class EditFragment: Fragment() { // ).joinToString("\n\n") // ) EditModeHandler.execByHowFullEdit(this) - val cmdIndexViewModel: CommandIndexViewModel by activityViewModels() - cmdIndexViewModel.onFocusSearchText = false context?.let { busyboxExecutor = BusyboxExecutor( it, @@ -288,47 +279,47 @@ class EditFragment: Fragment() { if( !this.isVisible ) return@KeyboardVisibilityEventListener - if( - disableKeyboardFragmentChange - ) return@KeyboardVisibilityEventListener -// if(terminalViewModel.onDialog) return@setEventListener - binding.editTitleLinearlayout.isVisible = !isOpen - val linearLayoutParam = - binding.editFragment.layoutParams as LinearLayoutCompat.LayoutParams - val editFragmentWeight = linearLayoutParam.weight - if( - editFragmentWeight != ReadLines.LONGTH - ) { - KeyboardWhenTermLongForEdit.handle( - this, - isOpen - ) - return@KeyboardVisibilityEventListener - } - ListIndexSizingToKeyboard.handle( - this, - isOpen - ) - binding.editToolBarLinearLayout.isVisible = - when(isOpen) { - true -> { - val isNotSearchTextWhenIndexList = - (existIndexList && !binding.editListSearchEditText.isVisible) - !existIndexList - || isNotSearchTextWhenIndexList - } - else -> true - } - val isOpenKeyboard = - when(isOpen) { - true -> onTermVisibleWhenKeyboard != - SettingVariableSelects.OnTermVisibleWhenKeyboardSelects.ON.name - else -> isOpen - } - listener?.onKeyBoardVisibleChangeForEditFragment( - isOpenKeyboard, - this.isVisible - ) +// if( +// disableKeyboardFragmentChange +// ) return@KeyboardVisibilityEventListener +//// if(terminalViewModel.onDialog) return@setEventListener +// binding.editToolBarLinearLayout.isVisible = !isOpen +// val linearLayoutParam = +// binding.editFragment.layoutParams as LinearLayoutCompat.LayoutParams +// val editFragmentWeight = linearLayoutParam.weight +// if( +// editFragmentWeight != ReadLines.LONGTH +// ) { +// KeyboardWhenTermLongForEdit.handle( +// this, +// isOpen +// ) +// return@KeyboardVisibilityEventListener +// } +// ListIndexSizingToKeyboard.handle( +// this, +// isOpen +// ) +// binding.editToolBarLinearLayout.isVisible = +// when(isOpen) { +// true -> { +// val isNotSearchTextWhenIndexList = +// (existIndexList && !binding.editListSearchEditText.isVisible) +// !existIndexList +// || isNotSearchTextWhenIndexList +// } +// else -> true +// } +// val isOpenKeyboard = +// when(isOpen) { +// true -> onTermVisibleWhenKeyboard != +// SettingVariableSelects.OnTermVisibleWhenKeyboardSelects.ON.name +// else -> isOpen +// } +// listener?.onKeyBoardVisibleChangeForEditFragment( +// isOpenKeyboard, +// this.isVisible +// ) } ) } @@ -362,21 +353,24 @@ class EditFragment: Fragment() { override fun onStart() { super.onStart() - if( - !existIndexList - ) return +// if( +// !existIndexList +// ) return if(!firstUpdate){ firstUpdate = true return } CoroutineScope(Dispatchers.Main).launch { delay(100) - ListViewToolForListIndexAdapter.listIndexListUpdateFileList( - this@EditFragment, - ListSettingsForListIndex.ListIndexListMaker.makeFileListHandler( - this@EditFragment, - ListIndexAdapter.indexListMap, - ListIndexAdapter.listIndexTypeKey + val editConstraintListAdapter = binding.editListRecyclerView.adapter as EditConstraintListAdapter + ListViewToolForEditListAdapter.editListUpdateFileList( + editConstraintListAdapter, + ListSettingsForEditList.EditListMaker.makeLineMapListHandler( + this@EditFragment.fannelInfoMap, + this@EditFragment.setReplaceVariableMap, + editConstraintListAdapter.indexListMap, + this@EditFragment.busyboxExecutor, +// ListIndexAdapter.listIndexTypeKey ) ) } @@ -385,6 +379,10 @@ class EditFragment: Fragment() { override fun onDestroyView() { super.onDestroyView() + CoroutineScope(Dispatchers.IO).launch { + settingActionAsyncCoroutine.clean() + imageActionAsyncCoroutine.clean() + } jsExecuteJob?.cancel() alterIfShellResultMap.clear() destroyViews() @@ -393,11 +391,11 @@ class EditFragment: Fragment() { private fun destroyViews(){ exitDialog(binding.editListRecyclerView) - binding.editLinearLayout.removeAllViews() - binding.editListInnerTopLinearLayout.removeAllViews() - binding.editListInnerBottomLinearLayout.removeAllViews() - binding.editListLinearLayout.removeAllViews() - binding.editToolBarLinearLayout.removeAllViews() +// binding.editToolBarHorizonLayout.removeAllViews() +// binding.editListInnerTopLinearLayout.removeAllViews() +// binding.editListInnerBottomLinearLayout.removeAllViews() +// binding.editListLinearLayout.removeAllViews() +// binding.editToolBarLinearLayout.removeAllViews() } interface OnToolBarButtonClickListenerForEditFragment { @@ -464,14 +462,14 @@ class EditFragment: Fragment() { ) } - interface OnLongPressPlayOrEditButtonListener { - fun onLongPressPlayOrEditButton( - editLongPressType: EditLongPressType, - tag: String?, - searchText: String, - pageSearchToolbarButtonVariant: PageSearchToolbarButtonVariant? = null, - ) - } +// interface OnLongPressPlayOrEditButtonListener { +// fun onLongPressPlayOrEditButton( +// editLongPressType: EditLongPressType, +// tag: String?, +// searchText: String, +// pageSearchToolbarButtonVariant: PageSearchToolbarButtonVariant? = null, +// ) +// } interface OnLongTermKeyBoardOpenAjustListenerForEdit { fun onLongTermKeyBoardOpenAjustForEdit( diff --git a/app/src/main/java/com/puutaro/commandclick/fragment/TerminalFragment.kt b/app/src/main/java/com/puutaro/commandclick/fragment/TerminalFragment.kt index b7597b1bd..6308a3883 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment/TerminalFragment.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment/TerminalFragment.kt @@ -1,6 +1,7 @@ package com.puutaro.commandclick.fragment import android.app.AlertDialog +import android.app.Dialog import android.content.* import android.media.AudioManager import android.net.Uri @@ -28,7 +29,10 @@ import com.puutaro.commandclick.fragment_lib.command_index_fragment.variable.Lon import com.puutaro.commandclick.fragment_lib.terminal_fragment.* import com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.receiver.JsDebugger import com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.register.BroadcastRegisterForTerm +import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.lib.dialog.EditListDialogForOrdinaryRevolver +import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.lib.dialog.EditListDialogOrdinary import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.lib.dialog.GgleSchDialog +import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.lib.dialog.PromptWithListDialog import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.lib.dialog.WebViewJsDialog import com.puutaro.commandclick.fragment_lib.terminal_fragment.proccess.InitCurrentMonitorFile import com.puutaro.commandclick.fragment_lib.terminal_fragment.proccess.TerminalOnHandlerForEdit @@ -103,6 +107,9 @@ class TerminalFragment: var rowsMap: MutableMap>> = mutableMapOf() var headerMap: MutableMap> = mutableMapOf() var alertDialogInstance: AlertDialog? = null +// var editListDialog: Dialog? = null +// var editListDialogOrdinaly: EditListDialogOrdinary? = null + var editListDialogForOrdinaryRevolver: EditListDialogForOrdinaryRevolver? = null // var webViewDialogInstance: Dialog? = null var goBackFlag = false var pocketWebViewManager: WebViewJsDialog? = null @@ -238,8 +245,11 @@ class TerminalFragment: MonitorFileManager.trim(terminalViewModel) BroadcastRegisterForTerm.register(this) FannelHistoryGifCreator.watch(this) - ButtonImageCreator.create(this) - +// editListDialogOrdinaly = EditListDialogOrdinary(WeakReference(this)) + editListDialogForOrdinaryRevolver = + EditListDialogForOrdinaryRevolver( + WeakReference(this) + ) } override fun onStart() { @@ -248,6 +258,7 @@ class TerminalFragment: TerminalOnHandlerForEdit.handle(this) JsDebugger.stockLogSender(this) GifCreateMonitor.watch(this) + ButtonImageCreator.create(this) } @@ -274,6 +285,7 @@ class TerminalFragment: displayUpdateCoroutineJob?.cancel() UrlCaptureWatcher.exit() GifCreateMonitor.exit() + ButtonImageCreator.exit() // FannelHistoryGifCreator.exit() // GifCreateMonitor.exit() // ButtonImageCreator.exit() @@ -373,20 +385,51 @@ class TerminalFragment: ) } - interface OnEditTextUpdateListenerForTermFragment { - fun onEditTextUpdateForTermFragment( - editTextId: Int?, - variableValue: String + interface OnTextViewAndFannelUpdateListenerForTerm { + fun onTextViewAndFannelForTermFragment( + indexOrParentTagName: String, + srcFragment: String, + tagNameList: List, + updateText: String, + overrideTextMap: Map?, + textPropertyMap: Map< String, String>?, + isSave: Boolean, ) } - interface OnSpinnerUpdateListenerForTermFragment { - fun onSpinnerUpdateForTermFragment( - spinnerId: Int?, - variableValue: String + interface OnImageViewUpdateListenerForTerm { + fun onImageViewUpdateForTerm( + indexOrParentTagName: String, + srcFragment: String, + tagNameList: List, + imageMap: Map, + imagePropertyMap: Map, ) } + interface OnFrameLayoutUpdateListenerForTerm { + fun onFrameLayoutUpdateForTerm( + indexOrParentTagName: String, + srcFragment: String, + tagNameList: List, + frameKeyPairList: List>? + ) + } + + interface OnTextViewAndMapListUpdateListenerForTerm { + fun onTextViewAndMapListUpdateForTerm( + editListIndex: Int, + srcFragmentStr: String, + ) + } + +// interface OnSpinnerUpdateListenerForTermFragment { +// fun onSpinnerUpdateForTermFragment( +// spinnerId: Int?, +// variableValue: String +// ) +// } + interface OnEditableSpinnerUpdateListenerForTermFragment { fun onEditableSpinnerUpdateForTermFragment( spinnerId: Int?, @@ -401,6 +444,7 @@ class TerminalFragment: this, broadcastReceiverForTerm ) + PromptWithListDialog.exit() UrlCaptureWatcher.exit() PinFannelBarManager.clear(binding.fannelPinRecyclerView) FannelHistoryGifCreator.exit() @@ -430,6 +474,12 @@ class TerminalFragment: // webViewDialogInstance = null alertDialogInstance?.dismiss() alertDialogInstance = null +// editListDialog?.dismiss() +// editListDialog = null + editListDialogForOrdinaryRevolver?.destroy() + editListDialogForOrdinaryRevolver = null +// editListDialogOrdinaly?.dismiss() +// editListDialogOrdinaly = null firstDisplayUpdate = true } @@ -486,7 +536,7 @@ class TerminalFragment: interface OnGetFileListenerForTerm { fun onGetFileForTerm( - parentDirPathSrc: String, +// parentDirPathSrc: String, onDirectoryPickSrc: Boolean = false, filterPrefixListCon: String, filterSuffixListCon: String, diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ConfigFromConfigFileSetter.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ConfigFromConfigFileSetter.kt deleted file mode 100755 index 79ac755f3..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ConfigFromConfigFileSetter.kt +++ /dev/null @@ -1,91 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment - -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -//import com.puutaro.commandclick.common.variable.variant.LanguageTypeSelects -import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.util.* -import com.puutaro.commandclick.util.str.ScriptPreWordReplacer - -//object ConfigFromConfigFileSetter { -// fun set( -// cmdIndexFragment: CommandIndexFragment -// ){ -// val languageType = LanguageTypeSelects.JAVA_SCRIPT -// val languageTypeToSectionHolderMap = -// CommandClickScriptVariable.LANGUAGE_TYPE_TO_SECTION_HOLDER_MAP.get( -// languageType -// ) -// val settingSectionStart = languageTypeToSectionHolderMap?.get( -// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_START -// ) as String -// -// val settingSectionEnd = languageTypeToSectionHolderMap.get( -// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_END -// ) as String -// val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath -// val cmdclickConfigFileName = UsePath.cmdclickConfigFileName -// val settingVariableList = CommandClickVariables.extractValListFromHolder( -// CommandClickVariables.makeMainFannelConList( -//// cmdclickDefaultAppDirPath, -// cmdclickConfigFileName -// ), -// settingSectionStart, -// settingSectionEnd -// ) -// -// cmdIndexFragment.onTermVisibleWhenKeyboard = SettingVariableReader.getCbValue( -// settingVariableList, -// CommandClickScriptVariable.ON_TERM_VISIBLE_WHEN_KEYBOARD, -// CommandClickScriptVariable.ON_TERM_VISIBLE_WHEN_KEYBOARD_DEFAULT_VALUE, -// SettingVariableSelects.OnTermVisibleWhenKeyboardSelects.INHERIT.name, -// CommandClickScriptVariable.ON_TERM_VISIBLE_WHEN_KEYBOARD_DEFAULT_VALUE, -// listOf( -// SettingVariableSelects.OnTermVisibleWhenKeyboardSelects.OFF.name, -// SettingVariableSelects.OnTermVisibleWhenKeyboardSelects.ON.name -// ), -// ) -// -// cmdIndexFragment.historySwitch = SettingVariableReader.getCbValue( -// settingVariableList, -// CommandClickScriptVariable.CMDCLICK_HISTORY_SWITCH, -// CommandClickScriptVariable.HISTORY_SWITCH_DEFAULT_VALUE, -// SettingVariableSelects.HistorySwitchSelects.INHERIT.name, -// CommandClickScriptVariable.HISTORY_SWITCH_DEFAULT_VALUE, -// listOf( -// SettingVariableSelects.HistorySwitchSelects.OFF.name, -// SettingVariableSelects.HistorySwitchSelects.ON.name -// ), -// ) -// -// cmdIndexFragment.urlHistoryOrButtonExec = SettingVariableReader.getCbValue( -// settingVariableList, -// CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC, -// CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE, -// SettingVariableSelects.UrlHistoryOrButtonExecSelects.INHERIT.name, -// CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE, -// listOf( -// SettingVariableSelects.UrlHistoryOrButtonExecSelects.URL_HISTORY.name, -// SettingVariableSelects.UrlHistoryOrButtonExecSelects.BUTTON_EXEC.name, -// ), -// ) -// -// val homeFannelHistoryNameList = SettingVariableReader.setListFromPath( -// ScriptPreWordReplacer.replace( -// UsePath.homeFannelsFilePath, -//// cmdclickDefaultAppDirPath, -// cmdclickConfigFileName, -// ) -// ) -// if( -// homeFannelHistoryNameList.isNotEmpty() -// ) cmdIndexFragment.homeFannelHistoryNameList = homeFannelHistoryNameList -// -// cmdIndexFragment.terminalColor = SettingVariableReader.getStrValue( -// settingVariableList, -// CommandClickScriptVariable.TERMINAL_COLOR, -// CommandClickScriptVariable.TERMINAL_DO_DEFAULT_VALUE -// ) -// } -//} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/EditTextWhenReuse.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/EditTextWhenReuse.kt deleted file mode 100755 index d113022ff..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/EditTextWhenReuse.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment - -import androidx.fragment.app.activityViewModels -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.util.Keyboard -import com.puutaro.commandclick.view_model.activity.CommandIndexViewModel -import kotlinx.coroutines.* - -//object EditTextWhenReuse { -// fun focus( -// cmdIndexFragment: CommandIndexFragment -// ){ -// val cmdIndexViewModel: CommandIndexViewModel by cmdIndexFragment.activityViewModels() -// val binding = cmdIndexFragment.binding -// cmdIndexFragment.showTerminalJobWhenReuse = -// CoroutineScope(Dispatchers.IO).launch { -// withContext(Dispatchers.IO) { -// delay(100) -// } -// withContext(Dispatchers.Main) { -// if (!cmdIndexViewModel.onFocusSearchText) return@withContext -// val cmdSearchEditText = binding.cmdSearchEditText -// cmdSearchEditText.requestFocus() -// Keyboard.showKeyboardForFragment( -// cmdIndexFragment, -// cmdSearchEditText -// ) -// cmdSearchEditText.setText(cmdIndexFragment.savedEditTextContents) -// cmdSearchEditText.setSelection(cmdSearchEditText.length()) -// } -// } -// } -//} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ExtraMenuGifCreator.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ExtraMenuGifCreator.kt index aaf61fb87..ca2df0a9f 100644 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ExtraMenuGifCreator.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ExtraMenuGifCreator.kt @@ -150,7 +150,7 @@ object ExtraMenuGifCreator { val bkBitmap = createBk( imageWidth ) - val fg = BitmapTool.ImageRemaker.mask( + val fg = BitmapTool.ImageTransformer.mask( bkBitmap, maskBitmap, ) @@ -161,7 +161,7 @@ object ExtraMenuGifCreator { private fun createBk( imageWidth: Int ): Bitmap { - return BitmapTool.ImageRemaker.makeRect( + return BitmapTool.ImageTransformer.makeRect( "#0a6161", imageWidth, imageHeight @@ -201,14 +201,14 @@ object ExtraMenuGifCreator { val rndInt = (1..4).random() return when(rndInt){ 1 -> { - BitmapTool.ImageRemaker.flipHorizontally(bitmap) + BitmapTool.ImageTransformer.flipHorizontally(bitmap) } 2 -> { - BitmapTool.ImageRemaker.flipVertically(bitmap) + BitmapTool.ImageTransformer.flipVertically(bitmap) } 3 -> { - BitmapTool.ImageRemaker.flipVertically(bitmap).let { - BitmapTool.ImageRemaker.flipHorizontally(it) + BitmapTool.ImageTransformer.flipVertically(bitmap).let { + BitmapTool.ImageTransformer.flipHorizontally(it) } } else -> bitmap diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/IndexInitHandler.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/IndexInitHandler.kt index af1b95377..cdc7191f7 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/IndexInitHandler.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/IndexInitHandler.kt @@ -9,7 +9,6 @@ import com.puutaro.commandclick.fragment_lib.command_index_fragment.init.ConfigF import com.puutaro.commandclick.fragment_lib.command_index_fragment.init.PageSearchToolbarManager import com.puutaro.commandclick.proccess.UrlLaunchIntentAction import com.puutaro.commandclick.proccess.ubuntu.UbuntuFiles -import com.puutaro.commandclick.proccess.history.fannel_history.FannelHistoryManager import com.puutaro.commandclick.util.file.AssetsFileManager import com.puutaro.commandclick.util.file.FileSystems import com.puutaro.commandclick.util.state.FannelInfoTool @@ -33,7 +32,6 @@ object IndexInitHandler { ) { val context = cmdIndexFragment.context ?: return - val activity = cmdIndexFragment.activity val startUpPref = FannelInfoTool.getSharePref(context) TerminalShower.show( diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ListViewUpdaterOnStart.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ListViewUpdaterOnStart.kt deleted file mode 100755 index 8f1ca1289..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ListViewUpdaterOnStart.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment - -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.fragment_lib.command_index_fragment.common.CommandListManager -import com.puutaro.commandclick.util.state.FannelInfoTool - -object ListViewUpdaterOnStart { -// fun update( -// cmdIndexFragment: CommandIndexFragment -// ){ -// val binding = cmdIndexFragment.binding -//// val fannelInfoMap = cmdIndexFragment.fannelInfoMap -// val cmdList = binding.cmdList -// CommandListManager.execListUpdateForCmdIndex( -//// FannelInfoTool.getCurrentAppDirPath( -//// fannelInfoMap -//// ), -// cmdList, -// ) -// } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/MakeChangeDirView.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/MakeChangeDirView.kt deleted file mode 100755 index 9034d48f0..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/MakeChangeDirView.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment - - - - -//class MakeChangeDirView( -// commandIndexFragment: CommandIndexFragment, -// private val binding: CommandIndexFragmentBinding, -//) { -// -// val context = commandIndexFragment.context -// -// fun addHeaderPrompt( -// promptString: String -// ){ -// val textView = TextView(context) -// textView.setText("\t${promptString}") -// textView.textSize = 20F -// textView.setBackgroundColor(context?.getColor(R.color.white) as Int) -// textView.setTextColor(context.getColor(R.color.black) as Int) -// textView.setPadding(0, 40, 0, 30) -// val innerLayout = LinearLayout(context) -// innerLayout.layoutParams = LinearLayout.LayoutParams( -// ViewGroup.LayoutParams.MATCH_PARENT, -// ViewGroup.LayoutParams.WRAP_CONTENT, -// ) -// innerLayout.orientation = LinearLayout.VERTICAL -// innerLayout.setBackgroundColor(context.getColor(R.color.black)) -// innerLayout.addView(textView) -// binding.commandIndexFragment.addView(innerLayout) -// } -// -//// fun hideToolbar(){ -//// val cmdindexAllToolbarLinearLayout = binding.cmdindexAllToolbarLinearLayout -//// cmdindexAllToolbarLinearLayout.layoutParams.height = 0 -//// cmdindexAllToolbarLinearLayout.isInvisible = true -//// } -// -//} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/PreInstallFannel.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/PreInstallFannel.kt index 31152b1ab..e55fa3e42 100644 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/PreInstallFannel.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/PreInstallFannel.kt @@ -150,9 +150,14 @@ object PreInstallFannel { if ( isNotUpdateFannelInfo ) return@withContext + val jsFileSuffix = UsePath.JS_FILE_SUFFIX + val existFannelList = FileSystems.sortedFiles(cmdclickDefaultAppDirPath).filter { + it.endsWith(jsFileSuffix) + } val fannelSettingMapList = FannelSettingMapMaker.make( context, - fannelNameToDownloadList.map { it.first } + existFannelList +// fannelNameToDownloadList.map { it.first } ) FileSystems.writeFile( fannelSettingMapTsvPath, @@ -541,7 +546,7 @@ object PreInstallFannel { ?.trim() ?: String() val urlsVersion = relativePathAndVersion.getOrNull(1) - val curVersion = TsvTool.getKeyValue( + val curVersion = TsvTool.getKeyValueFromFile( curEscapeTsvPath, relativePath ).let { QuoteTool.trimBothEdgeQuote(it) } diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/TextSelectionBarCtrl.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/TextSelectionBarCtrl.kt index a92f5601e..7ddcb27cb 100644 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/TextSelectionBarCtrl.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/TextSelectionBarCtrl.kt @@ -29,12 +29,12 @@ object TextSelectionBarCtrl { ) binding.cmdindexSelectionSearchCaption.apply { // setFillColor(R.color.file_dark_green_color) - outlineWidthSrc = 5 + strokeWidthSrc = 5 // text = "\uD83D\uDD0D Search" } binding.cmdindexSelectionSearchCurText.apply { isVisible = false - outlineWidthSrc = 3 + strokeWidthSrc = 3 setFillColor(R.color.white) setStrokeColor(R.color.fill_gray) } diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ToolBarHistoryButtonControl.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ToolBarHistoryButtonControl.kt index 59ea24625..bcb412907 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ToolBarHistoryButtonControl.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/ToolBarHistoryButtonControl.kt @@ -11,9 +11,9 @@ object ToolBarHistoryButtonControl { cmdIndexFragment: CommandIndexFragment ) { val binding = cmdIndexFragment.binding - val historyButtonView = binding.cmdindexHistoryButton + val cmdindexFannelCenterButton = binding.cmdindexFannelCenterButton val cmdindexUrlHistoryButton = binding.cmdindexUrlHistoryButton - historyButtonView.setOnClickListener { + cmdindexFannelCenterButton.setOnClickListener { historyButtonInnerView -> FannelHistoryButtonEvent.invoke(cmdIndexFragment) } diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/UrlImageDownloader.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/UrlImageDownloader.kt index 6b5deb645..711b3f72f 100644 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/UrlImageDownloader.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/UrlImageDownloader.kt @@ -8,7 +8,10 @@ import com.puutaro.commandclick.common.variable.path.UsePath import com.puutaro.commandclick.fragment.CommandIndexFragment import com.puutaro.commandclick.util.Intent.CurlManager import com.puutaro.commandclick.util.file.FileSystems +import com.puutaro.commandclick.util.file.ReadText import com.puutaro.commandclick.util.file.UrlFileSystems +import com.puutaro.commandclick.util.gz.GzTool +import com.puutaro.commandclick.util.map.CmdClickMap import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.async @@ -20,14 +23,27 @@ import java.io.File object UrlImageDownloader { - private val downloadImageUrlPrefix = "${UrlFileSystems.cmdClickAssetsRepoPrefix}/master" - const val ubuntuAlertGifSuffix = "ubuntu/setup_alert/ubuntuSetupAlert.gif" - private val downloadSuffixList = listOf( - ubuntuAlertGifSuffix, - ) - val imageDirPrefix = File(UsePath.cmdclickFannelSystemDirPath, "images") + private val downloadImageUrlPrefix = + "${UrlFileSystems.cmdClickAssetsRepoPrefix}/master" + private val imageListMapLineTextUrl = + "${downloadImageUrlPrefix}/image_compress/tar/image_tar_list.txt" + private val mapListSeparator = ',' +// private val downloadSuffixList = listOf( +// ubuntuAlertGifSuffix, +// ) + + val imageDirObj = File(UsePath.cmdclickFannelSystemDirPath, "images") + val fannelWallDirPath = File( + imageDirObj.absolutePath, + "WALL_DIR" + ).absolutePath + val ubuntuAlertGifPath = File( + imageDirObj.absolutePath, + "ubuntu/setup_alert/ubuntuSetupAlert.gif" + ).absolutePath + private val imageTempDirPath = File(imageDirObj.absolutePath, "temp").absolutePath private var downloadJob: Job? = null -// private val ubuntuSetupAlertGifPath = File(imageDirPrefix, ubuntuAlertGifSuffix) +// private val ubuntuSetupAlertGifPath = File(imageDirObj.absolutePath, ubuntuAlertGifSuffix) fun exit(){ downloadJob?.cancel() @@ -36,7 +52,7 @@ object UrlImageDownloader { fun save( cmdIndexFragment: CommandIndexFragment, ) { - exit() +// exit() val context = cmdIndexFragment.context ?: return val concurrentLimit = 5 @@ -44,18 +60,73 @@ object UrlImageDownloader { downloadJob = cmdIndexFragment.lifecycleScope.launch { cmdIndexFragment.repeatOnLifecycle(Lifecycle.State.STARTED) { withContext(Dispatchers.IO) { - val jobList = downloadSuffixList.map { imagePathSuffix -> - val imageUrl = "${downloadImageUrlPrefix}/${imagePathSuffix}" + FileSystems.removeAndCreateDir( + imageTempDirPath + ) + } + val downLoadInfoMapList = withContext(Dispatchers.IO) { + CurlManager.get( + context, + imageListMapLineTextUrl, + String(), + String(), + 2000, + ).let { + val isConnOk = CurlManager.isConnOk(it) + if (!isConnOk) return@let emptyList() +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "ldownlaod.txt").absolutePath, +// listOf( +// "imageListMapLineTextUrl: ${imageListMapLineTextUrl}", +// "list: ${String(it)}" +// ).joinToString("\n") +// ) + String(it).split("\n").map { lineMapCon -> + CmdClickMap.createMap( + lineMapCon, + mapListSeparator + ).toMap() + } + } + } +// FileSystems.writeFile( +// File( +// UsePath.cmdclickDefaultAppDirPath, +// "ldownlaod_downLoadMapList.txt" +// ).absolutePath, +// listOf( +// "imageListMapLineTextUrl: ${imageListMapLineTextUrl}", +// "downLoadMapList: ${downLoadInfoMapList}" +// ).joinToString("\n") +// ) + withContext(Dispatchers.IO) { + val jobList = downLoadInfoMapList.map { downloadInfoMap -> async { + val relativeTarPath = InfoMapTool.getRelativeTarPath( + downloadInfoMap, + ) ?: return@async + val relativeDirPath = InfoMapTool.getRelativeDirPath( + downloadInfoMap + ) ?: return@async + val urlTarSize = InfoMapTool.getTarSize( + downloadInfoMap + ) semaphore.withPermit { execSave( context, - imageUrl, + relativeTarPath, + urlTarSize, + relativeDirPath, ) } } } jobList.forEach { it.await() } + withContext(Dispatchers.IO) { + FileSystems.removeDir( + imageTempDirPath + ) + } } } } @@ -63,22 +134,42 @@ object UrlImageDownloader { private suspend fun execSave( context: Context?, - imageUrl: String, + relativeTarPath: String, + urlTarSize: Int?, + relativeDirPath: String, ) { - - val urlImageLength = withContext(Dispatchers.IO){ - CurlManager.getLength( - context, - imageUrl - ) - } - val imageFile = File( - imageDirPrefix, - imageUrl.replace(downloadImageUrlPrefix, String()).removePrefix("/") + val imageUrl = + "${downloadImageUrlPrefix}/${relativeTarPath}" + val infoTxtPath = InfoMapTool.makeInfoPath( + relativeDirPath, + ) + val infoMap = InfoMapTool.read( + infoTxtPath + ) + val savedTarSize = InfoMapTool.getTarSize( + infoMap ) + val isSaveDirPath = + FileSystems.sortedFiles( + File(imageDirObj.absolutePath, relativeDirPath).absolutePath + ).isNotEmpty() + val tarName = File(imageUrl).name +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "ldownlaod_${tarName}.txt").absolutePath, +// listOf( +// "imageUrl: ${imageUrl}", +// "imageListMapLineTextUrl: ${imageListMapLineTextUrl}", +// "urlTarSize: ${urlTarSize}", +// "savedTarSize: ${savedTarSize}", +// "relativeDirPath: ${relativeDirPath}", +// "isSaveDirPath: ${isSaveDirPath}", +// ).joinToString("\n") +// ) + val downloadTarPath = File(imageTempDirPath, tarName).absolutePath if( - imageFile.isFile - && imageFile.length().toInt() == urlImageLength + isSaveDirPath + && urlTarSize == savedTarSize + && savedTarSize != null ) { return } @@ -94,9 +185,98 @@ object UrlImageDownloader { it } ?: return FileSystems.writeFromByteArray( - imageFile.absolutePath, + downloadTarPath, byteArray ) - return + GzTool.extractTarWithoutOwnership( + downloadTarPath, + imageDirObj.absolutePath, + false, + ) + InfoMapTool.save( + infoTxtPath, + relativeTarPath, + urlTarSize + ) + } + + private object InfoMapTool { + + + private enum class DownloadMapListKey(val key: String) { + RELATIVE_DIR_PATH("relativeDirPath"), + RELATIVE_TAR_PATH("relativeTarPath"), + TAR_SIZE("tarSize"), + } + + fun makeInfoPath( + relativeDirPath: String, + ): String { + val pathSeparator = "___" + return listOf( + imageDirObj.absolutePath, + relativeDirPath, + "info.txt", + ).joinToString("/").replace( + Regex("[/]+"), + "/", + ) + } + + fun getTarSize( + infoMap: Map + ): Int? { + return try { + infoMap.get( + DownloadMapListKey.TAR_SIZE.key + )?.toInt() + }catch(e: Exception){ + null + } + } + + fun getRelativeTarPath( + infoMap: Map + ): String? { + return infoMap.get( + DownloadMapListKey.RELATIVE_TAR_PATH.key + ) + } + + fun getRelativeDirPath( + infoMap: Map + ): String? { + return infoMap.get( + DownloadMapListKey.RELATIVE_DIR_PATH.key + ) + } + + fun read( + infoTxtPath: String, + ): Map { + return CmdClickMap.createMap( + ReadText( + infoTxtPath, + ).readText(), + mapListSeparator + ).toMap() + } + + fun save( + path: String, + relativeTarPath: String, + urlTarSize: Int?, + ){ + val mapCon = mapOf( + DownloadMapListKey.RELATIVE_TAR_PATH.key to relativeTarPath, + DownloadMapListKey.TAR_SIZE.key to (urlTarSize ?: 0) + ).map { + "${it.key}=${it.value}" + }.joinToString(mapListSeparator.toString()) + FileSystems.writeFile( + path, + mapCon + ) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/common/CommandListManager.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/common/CommandListManager.kt index b71cfb0bf..cb112df61 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/common/CommandListManager.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/common/CommandListManager.kt @@ -4,39 +4,38 @@ import android.widget.ArrayAdapter import android.widget.ListView import androidx.recyclerview.widget.RecyclerView import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.component.adapter.FannelIndexListAdapter import com.puutaro.commandclick.util.file.FileSystems object CommandListManager { - fun makeListSource( -// currentAppDirPath: String - ): List { - val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath - FileSystems.createDirs(UsePath.cmdclickDefaultAppDirPath) - return FileSystems.filterSuffixShellOrJsOrHtmlFiles( - cmdclickDefaultAppDirPath - ) - } - - fun execListUpdateForCmdIndex( -// currentAppDirPath: String, - cmdListView: RecyclerView, - ){ - val fannelIndexListAdapter = cmdListView.adapter as FannelIndexListAdapter - val updateList = makeListSource( +// fun makeListSource( +//// currentAppDirPath: String +// ): List { +// val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath +// FileSystems.createDirs(UsePath.cmdclickDefaultAppDirPath) +// return FileSystems.filterSuffixShellOrJsOrHtmlFiles( // cmdclickDefaultAppDirPath - ) - if( - fannelIndexListAdapter.fannelIndexList == updateList - ) return - fannelIndexListAdapter.fannelIndexList.clear() - fannelIndexListAdapter.fannelIndexList.addAll(updateList) - fannelIndexListAdapter.notifyDataSetChanged() - cmdListView.scrollToPosition( - fannelIndexListAdapter.itemCount - 1 - ) - } +// ) +// } + +// fun execListUpdateForCmdIndex( +//// currentAppDirPath: String, +// cmdListView: RecyclerView, +// ){ +// val fannelIndexListAdapter = cmdListView.adapter as FannelIndexListAdapter +// val updateList = makeListSource( +//// cmdclickDefaultAppDirPath +// ) +// if( +// fannelIndexListAdapter.fannelIndexList == updateList +// ) return +// fannelIndexListAdapter.fannelIndexList.clear() +// fannelIndexListAdapter.fannelIndexList.addAll(updateList) +// fannelIndexListAdapter.notifyDataSetChanged() +// cmdListView.scrollToPosition( +// fannelIndexListAdapter.itemCount - 1 +// ) +// } fun execListUpdateByEditText( cmdStrList: List, @@ -49,16 +48,16 @@ object CommandListManager { cmdListAdapter.notifyDataSetChanged() } - fun execListUpdateByEditTextForCmdIndex( - cmdStrList: List, - fannelIndexListAdapter: FannelIndexListAdapter, - cmdListView: RecyclerView - ){ - fannelIndexListAdapter.fannelIndexList.clear() - fannelIndexListAdapter.fannelIndexList.addAll(cmdStrList) - fannelIndexListAdapter.notifyDataSetChanged() - cmdListView.scrollToPosition( - fannelIndexListAdapter.itemCount - 1 - ) - } +// fun execListUpdateByEditTextForCmdIndex( +// cmdStrList: List, +// fannelIndexListAdapter: FannelIndexListAdapter, +// cmdListView: RecyclerView +// ){ +// fannelIndexListAdapter.fannelIndexList.clear() +// fannelIndexListAdapter.fannelIndexList.addAll(cmdStrList) +// fannelIndexListAdapter.notifyDataSetChanged() +// cmdListView.scrollToPosition( +// fannelIndexListAdapter.itemCount - 1 +// ) +// } } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/init/CmdClickSystemFannelManager.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/init/CmdClickSystemFannelManager.kt index 82d83b5fe..24104f180 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/init/CmdClickSystemFannelManager.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/init/CmdClickSystemFannelManager.kt @@ -1,21 +1,9 @@ package com.puutaro.commandclick.fragment_lib.command_index_fragment.init import android.content.Context -import com.puutaro.commandclick.common.variable.fannel.SystemFannel -import com.puutaro.commandclick.common.variable.path.UsePath import com.puutaro.commandclick.util.file.AssetsFileManager -import com.puutaro.commandclick.util.file.FileSystems -import com.puutaro.commandclick.util.file.ReadText -import com.puutaro.commandclick.util.file.UrlFileSystems -import com.puutaro.commandclick.util.state.FannelInfoTool import com.puutaro.commandclick.util.str.QuoteTool import com.puutaro.commandclick.util.tsv.TsvTool -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking -import kotlinx.coroutines.withContext -import java.io.File object CmdClickSystemFannelManager { @@ -215,7 +203,7 @@ object CmdClickSystemFannelManager { ?.trim() ?: String() val assetsVersion = relativePathAndVersion.getOrNull(1) - val curVersion = TsvTool.getKeyValue( + val curVersion = TsvTool.getKeyValueFromFile( curEscapeTsvPath, relativePath ).let { QuoteTool.trimBothEdgeQuote(it) } diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/init/ConfigFromPreferenceFileSetter.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/init/ConfigFromPreferenceFileSetter.kt index 5ef5cb790..e6019bf38 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/init/ConfigFromPreferenceFileSetter.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/init/ConfigFromPreferenceFileSetter.kt @@ -13,23 +13,9 @@ import java.io.File object ConfigFromPreferenceFileSetter { fun set( cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, ){ -// val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath val cmdclickPreferenceJsName = SystemFannel.preference -// val languageType = LanguageTypeSelects.JAVA_SCRIPT -// val languageTypeToSectionHolderMap = -// CommandClickScriptVariable.LANGUAGE_TYPE_TO_SECTION_HOLDER_MAP.get( -// languageType -// ) -// val settingSectionStart = languageTypeToSectionHolderMap?.get( -// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_START -// ) as String -// -// val settingSectionEnd = languageTypeToSectionHolderMap.get( -// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_END -// ) as String val preferenceConList = when( File(UsePath.cmdclickDefaultAppDirPath, cmdclickPreferenceJsName).isFile @@ -41,7 +27,6 @@ object ConfigFromPreferenceFileSetter { ) else -> CommandClickVariables.makeMainFannelConList( -// currentAppDirPath, cmdclickPreferenceJsName ) @@ -51,8 +36,6 @@ object ConfigFromPreferenceFileSetter { preferenceConList, CommandClickScriptVariable.SETTING_SEC_START, CommandClickScriptVariable.SETTING_SEC_END, -// settingSectionStart, -// settingSectionEnd ) cmdIndexFragment.onTermVisibleWhenKeyboard = SettingVariableReader.getCbValue( @@ -67,56 +50,10 @@ object ConfigFromPreferenceFileSetter { ), ) - cmdIndexFragment.historySwitch = SettingVariableReader.getCbValue( - settingVariableList, - CommandClickScriptVariable.CMDCLICK_HISTORY_SWITCH, - CommandClickScriptVariable.HISTORY_SWITCH_DEFAULT_VALUE, - SettingVariableSelects.HistorySwitchSelects.INHERIT.name, - CommandClickScriptVariable.HISTORY_SWITCH_DEFAULT_VALUE, - listOf( - SettingVariableSelects.HistorySwitchSelects.OFF.name, - SettingVariableSelects.HistorySwitchSelects.ON.name - ), - ) - - cmdIndexFragment.urlHistoryOrButtonExec = SettingVariableReader.getCbValue( - settingVariableList, - CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC, - CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE, - SettingVariableSelects.UrlHistoryOrButtonExecSelects.INHERIT.name, - CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE, - listOf( - SettingVariableSelects.UrlHistoryOrButtonExecSelects.URL_HISTORY.name, - SettingVariableSelects.UrlHistoryOrButtonExecSelects.BUTTON_EXEC.name, - ), - ) - cmdIndexFragment.terminalColor = SettingVariableReader.getStrValue( settingVariableList, CommandClickScriptVariable.TERMINAL_COLOR, CommandClickScriptVariable.TERMINAL_DO_DEFAULT_VALUE ) -// val bottomScriptUrlList = SettingVariableReader.setListFromPath( -// ScriptPreWordReplacer.replace( -// UsePath.homeScriptUrlsFilePath, -//// currentAppDirPath, -// cmdclickPreferenceJsName, -// ) -// ) -// if( -// bottomScriptUrlList.isNotEmpty() -// ) cmdIndexFragment.bottomScriptUrlList = bottomScriptUrlList - -// val homeFannelHistoryNameList = SettingVariableReader.setListFromPath( -// ScriptPreWordReplacer.replace( -// UsePath.homeFannelsFilePath, -//// currentAppDirPath, -// cmdclickPreferenceJsName, -// ) -// ) -// if( -// homeFannelHistoryNameList.isNotEmpty() -// ) cmdIndexFragment.homeFannelHistoryNameList = homeFannelHistoryNameList - } } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/FannelNameClickListenerSetter.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/FannelNameClickListenerSetter.kt deleted file mode 100755 index 7267929df..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/FannelNameClickListenerSetter.kt +++ /dev/null @@ -1,196 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.click - -import android.view.View -import androidx.recyclerview.widget.RecyclerView -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.component.adapter.FannelIndexListAdapter -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.fragment_lib.command_index_fragment.common.CommandListManager -import com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.click.lib.OnEditExecuteEvent -import com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.common.DecideEditTag -import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.ValidateShell -import com.puutaro.commandclick.proccess.CmdIndexToolbarSwitcher -import com.puutaro.commandclick.proccess.broadcast.BroadCastIntent -import com.puutaro.commandclick.proccess.edit.lib.SetReplaceVariabler -import com.puutaro.commandclick.proccess.intent.ExecJsOrSellHandler -import com.puutaro.commandclick.proccess.lib.VariationErrDialog -import com.puutaro.commandclick.util.* -import com.puutaro.commandclick.util.file.FileSystems -import com.puutaro.commandclick.util.file.ReadText -import com.puutaro.commandclick.util.state.FannelStateManager -import java.io.File - - -//object FannelNameClickListenerSetter { -// fun set( -// cmdIndexFragment: CommandIndexFragment, -//// currentAppDirPath: String, -// fannelIndexListAdapter: FannelIndexListAdapter -// ){ -// val context = cmdIndexFragment.context -// val activity = cmdIndexFragment.activity -// val binding = cmdIndexFragment.binding -// val cmdSearchEditText = binding.cmdSearchEditText -//// val cmdListView = binding.cmdList -// val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath -// -// fannelIndexListAdapter.fannelNameClickListener = object: FannelIndexListAdapter.OnFannelNameItemClickListener { -// override fun onFannelNameClick( -// itemView: View, -// holder: FannelIndexListAdapter.FannelIndexListViewHolder -// ) { -//// if ( -//// binding.cmdListSwipeToRefresh.isRefreshing -//// ) return -// val selectedShellFileName = holder.fannelNameTextView.text.toString() -// Keyboard.hiddenKeyboard( -// activity, -// itemView -// ) -// cmdSearchEditText.setText(String()) -// CmdIndexToolbarSwitcher.switch( -// cmdIndexFragment, -// false -// ) -// if( -// selectedShellFileName.endsWith( -// UsePath.HTML_FILE_SUFFIX -// ) -// ) { -// BroadCastIntent.sendUrlCon( -// context, -// "${cmdclickDefaultAppDirPath}/$selectedShellFileName" -// ) -//// updateLastModifiedListView( -//// cmdListView, -////// currentAppDirPath, -//// selectedShellFileName -//// ) -// return -// } -// if ( -// selectedShellFileName.contains( -// CommandClickScriptVariable.EMPTY_STRING -// ) -// ) return -// val currentFragmentTag = -// cmdIndexFragment.tag ?: String() -// -// val mainFannelContentsList = ReadText( -// File(cmdclickDefaultAppDirPath, selectedShellFileName).absolutePath -// ).textToList() -// val validateErrMessage = ValidateShell.correct( -// cmdIndexFragment, -// mainFannelContentsList, -// selectedShellFileName -// ) -// if (validateErrMessage.isNotEmpty()) { -// val shellScriptPath = -// "${cmdclickDefaultAppDirPath}/${selectedShellFileName}" -// VariationErrDialog.show( -// cmdIndexFragment, -// shellScriptPath, -// validateErrMessage -// ) -// return -// } -// val setReplaceVariableMap = -// JavaScriptLoadUrl.createMakeReplaceVariableMapHandler( -// context, -// mainFannelContentsList, -//// currentAppDirPath, -// selectedShellFileName, -// ) -//// val languageType = -//// CommandClickVariables.judgeJsOrShellFromSuffix(selectedShellFileName) -//// val languageTypeToSectionHolderMap = -//// CommandClickScriptVariable.LANGUAGE_TYPE_TO_SECTION_HOLDER_MAP.get(languageType) -//// val settingSectionStart = languageTypeToSectionHolderMap?.get( -//// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_START -//// ) as String -//// val settingSectionEnd = languageTypeToSectionHolderMap.get( -//// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_END -//// ) as String -// val settingSectionVariableList = CommandClickVariables.extractValListFromHolder( -// mainFannelContentsList, -// CommandClickScriptVariable.SETTING_SEC_START, -// CommandClickScriptVariable.SETTING_SEC_END, -//// settingSectionStart, -//// settingSectionEnd -// ).let { -// SetReplaceVariabler.execReplaceByReplaceVariables( -// it?.joinToString("\n") ?: String(), -// setReplaceVariableMap, -//// currentAppDirPath, -// selectedShellFileName, -// ).split("\n") -// } -// -// val editExecuteValue = -// CommandClickVariables.substituteCmdClickVariable( -// settingSectionVariableList, -// CommandClickScriptVariable.EDIT_EXECUTE, -// ) ?: SettingVariableSelects.EditExecuteSelects.NO.name -// when (editExecuteValue) { -// SettingVariableSelects.EditExecuteSelects.ALWAYS.name -> { -// val fannelState = FannelStateManager.getState( -//// currentAppDirPath, -// selectedShellFileName, -// settingSectionVariableList, -// setReplaceVariableMap, -// ) -// val editFragmentTag = DecideEditTag( -// mainFannelContentsList, -//// currentAppDirPath, -// selectedShellFileName, -// fannelState -// ).decide() ?: return -// OnEditExecuteEvent.invoke( -// cmdIndexFragment, -// editFragmentTag, -//// currentAppDirPath, -// selectedShellFileName, -// fannelState -// ) -// return -// } -// } -// ExecJsOrSellHandler.handle( -// cmdIndexFragment, -//// currentAppDirPath, -// selectedShellFileName, -// mainFannelContentsList, -// ) -//// CommandListManager.execListUpdateForCmdIndex( -////// currentAppDirPath, -//// cmdListView, -//// ) -// -// val listener = cmdIndexFragment.context as? CommandIndexFragment.OnListItemClickListener -// listener?.onListItemClicked( -// currentFragmentTag -// ) -// return -// } -// } -// } -//} - -private fun updateLastModifiedListView ( - cmdListView: RecyclerView, -// currentAppDirPath: String, - selectecJsFileName: String -) { - FileSystems.updateLastModified( - File( - UsePath.cmdclickDefaultAppDirPath, - selectecJsFileName - ).absolutePath - ) - CommandListManager.execListUpdateForCmdIndex( -// currentAppDirPath, - cmdListView, - ) -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/FannelQrLogoClickListener.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/FannelQrLogoClickListener.kt deleted file mode 100755 index c7bb2d255..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/FannelQrLogoClickListener.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.click - -import android.view.View -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.component.adapter.FannelIndexListAdapter -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.proccess.ScriptFileDescription -import com.puutaro.commandclick.util.file.ReadText -import java.io.File - -object FannelQrLogoClickListener { - fun set( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - fannelIndexListAdapter: FannelIndexListAdapter - ){ - fannelIndexListAdapter.fannelQrLogoClickListener = object: FannelIndexListAdapter.OnFannelQrLogoItemClickListener { - override fun onFannelContentsClick( - itemView: View, - holder: FannelIndexListAdapter.FannelIndexListViewHolder - ) { - val fannelNameTextView = holder.fannelNameTextView -// val itemContext = itemView.context - val fannelName = fannelNameTextView.text.toString() - ScriptFileDescription.show( - cmdIndexFragment, - ReadText( - File( - UsePath.cmdclickDefaultAppDirPath, - fannelName - ).absolutePath - ).textToList(), -// currentAppDirPath, - fannelName - ) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/lib/OnEditExecuteEvent.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/lib/OnEditExecuteEvent.kt old mode 100755 new mode 100644 index a4c5cf6dd..8655f596e --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/lib/OnEditExecuteEvent.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/lib/OnEditExecuteEvent.kt @@ -1,6 +1,7 @@ package com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.click.lib import androidx.fragment.app.Fragment +import com.blankj.utilcode.util.ToastUtils import com.puutaro.commandclick.R import com.puutaro.commandclick.fragment.CommandIndexFragment import com.puutaro.commandclick.fragment.EditFragment @@ -34,14 +35,14 @@ object OnEditExecuteEvent { shortcutOnMark, fannelState, ) - val cmdValEditPrefix = FragmentTagPrefix.Prefix.CMD_VAL_EDIT_PREFIX.str - val cmdValEdit = - when( - editFragmentTag.startsWith(cmdValEditPrefix) - ) { - false -> EditFragmentArgs.Companion.EditTypeSettingsKey.SETTING_VAL_EDIT - else -> EditFragmentArgs.Companion.EditTypeSettingsKey.CMD_VAL_EDIT - } +// val cmdValEditPrefix = FragmentTagPrefix.Prefix.CMD_VAL_EDIT_PREFIX.str + val cmdValEdit = EditFragmentArgs.Companion.EditTypeSettingsKey.CMD_VAL_EDIT +// when( +// editFragmentTag.startsWith(cmdValEditPrefix) +// ) { +// false -> EditFragmentArgs.Companion.EditTypeSettingsKey.SETTING_VAL_EDIT +// else -> EditFragmentArgs.Companion.EditTypeSettingsKey.CMD_VAL_EDIT +// } when(fragment){ is CommandIndexFragment -> { val listener = context diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/lib/OnOnceEditExecuteEvent.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/lib/OnOnceEditExecuteEvent.kt deleted file mode 100755 index df83b58e3..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/click/lib/OnOnceEditExecuteEvent.kt +++ /dev/null @@ -1,49 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.click.lib - -import android.content.SharedPreferences -import com.puutaro.commandclick.R -import com.puutaro.commandclick.common.variable.settings.FannelInfoSetting -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.fragment_lib.command_index_fragment.variable.LongClickMenuItemsforCmdIndex -import com.puutaro.commandclick.util.SharePrefTool -import com.puutaro.commandclick.util.state.EditFragmentArgs -import com.puutaro.commandclick.util.state.FannelInfoTool - -object OnOnceEditExecuteEvent { - fun invoke( - cmdIndexFragment: CommandIndexFragment, - sharedPref: FannelInfoTool.FannelInfoSharePref?, - selectedShellFileName: String, - editFragmentTag: String, - ) { - val context = cmdIndexFragment.context ?: return - FannelInfoTool.putAllFannelInfo( - sharedPref, -// currentAppDirPath = null, - currentFannelName = selectedShellFileName, - onShortcutValue = null, - currentFannelState = null - ) -// val currentAppDirPath = FannelInfoTool.getStringFromFannelInfo( -// sharedPref, -// FannelInfoSetting.current_app_dir -// ) - val fannelInfoMap = EditFragmentArgs.createFannelInfoMap( -// currentAppDirPath, - selectedShellFileName, - String(), - FannelInfoSetting.current_fannel_state.defalutStr, - ) - val listener = context - as CommandIndexFragment.OnLongClickMenuItemsForCmdIndexListener - listener.onLongClickMenuItemsforCmdIndex( - LongClickMenuItemsforCmdIndex.EDIT, - EditFragmentArgs( - fannelInfoMap, - EditFragmentArgs.Companion.EditTypeSettingsKey.CMD_VAL_EDIT, - ), - editFragmentTag, - context.getString(R.string.edit_terminal_fragment) - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/common/DecideEditTag.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/common/DecideEditTag.kt index 663aff03f..31d85aad0 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/common/DecideEditTag.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/common/DecideEditTag.kt @@ -1,6 +1,5 @@ package com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.common -import com.puutaro.commandclick.common.variable.path.UsePath import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable import com.puutaro.commandclick.util.CommandClickVariables import com.puutaro.commandclick.util.state.FragmentTagManager diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/ExecOnLongClickDo.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/ExecOnLongClickDo.kt deleted file mode 100755 index 6399388aa..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/ExecOnLongClickDo.kt +++ /dev/null @@ -1,499 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.long_click - -import android.app.Dialog -import android.content.ClipData -import android.content.ClipboardManager -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ListView -import androidx.appcompat.widget.AppCompatEditText -import androidx.appcompat.widget.AppCompatImageButton -import androidx.appcompat.widget.AppCompatImageView -import androidx.appcompat.widget.AppCompatTextView -import androidx.core.view.isVisible -import com.blankj.utilcode.util.ToastUtils -import com.puutaro.commandclick.R -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.component.adapter.FannelIndexListAdapter -import com.puutaro.commandclick.component.adapter.SubMenuAdapter -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.long_click.lib.* -import com.puutaro.commandclick.proccess.AppProcessManager -import com.puutaro.commandclick.proccess.filer.FileRenamer -import com.puutaro.commandclick.proccess.qr.QrLogo -import com.puutaro.commandclick.util.editor.EditorByIntent - - -object ExecOnLongClickDo { - - private var contextMenuDialog: Dialog? = null - - fun invoke( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - fannelIndexListAdapter: FannelIndexListAdapter - ) { - val context = cmdIndexFragment.context - ?: return - - fannelIndexListAdapter.itemLongClickListener = - object : FannelIndexListAdapter.OnItemLongClickListener { - override fun onItemLongClick( - itemView: View, - holder: FannelIndexListAdapter.FannelIndexListViewHolder, - position: Int - ) { - val selectedFannelName = holder.fannelNameTextView.text.toString() - contextMenuDialog = Dialog( - context - ) - contextMenuDialog?.setContentView( - R.layout.list_dialog_layout - ) - QrLogo.setTitleFannelLogo( - cmdIndexFragment, - contextMenuDialog?.findViewById( - R.id.list_dialog_title_image - ), -// currentAppDirPath, - selectedFannelName, - ) - val listDialogTitle = contextMenuDialog?.findViewById( - R.id.list_dialog_title - ) - listDialogTitle?.text = selectedFannelName - val listDialogMessage = contextMenuDialog?.findViewById( - R.id.list_dialog_message - ) - listDialogMessage?.isVisible = false - val listDialogSearchEditText = contextMenuDialog?.findViewById( - R.id.list_dialog_search_edit_text - ) - listDialogSearchEditText?.isVisible = false - val cancelButton = contextMenuDialog?.findViewById( - R.id.list_dialog_cancel - ) - cancelButton?.setOnClickListener { - contextMenuDialog?.dismiss() - contextMenuDialog = null - } - - setContextMenuListView( - cmdIndexFragment, -// currentAppDirPath, - selectedFannelName, - ) - contextMenuDialog?.setOnCancelListener { - contextMenuDialog?.dismiss() - contextMenuDialog = null - } - contextMenuDialog?.window?.setLayout( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT - ) - contextMenuDialog?.window?.setGravity(Gravity.BOTTOM) - contextMenuDialog?.show() - - } - } - } - - private fun setContextMenuListView( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - selectedScriptName: String - ) { - val context = cmdIndexFragment.context - ?: return - val menuPairList = ContextMenuEnums.values().map { - it.itemName to it.imageId - } - val contextMenuListView = - contextMenuDialog?.findViewById( - R.id.list_dialog_list_view - ) ?: return - val subMenuAdapter = SubMenuAdapter( - context, - menuPairList.toMutableList() - ) - contextMenuListView.adapter = subMenuAdapter - invokeItemSetClickListnerForContextMenuList( - cmdIndexFragment, -// currentAppDirPath, - contextMenuListView, - selectedScriptName - ) - } - - private fun invokeItemSetClickListnerForContextMenuList( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - contextMenuListView: ListView, - selectedScriptName: String, - ) { - contextMenuListView.setOnItemClickListener { - parent, View, pos, id -> - contextMenuDialog?.dismiss() - contextMenuDialog = null - val menuListAdapter = contextMenuListView.adapter as SubMenuAdapter - val selectedMenuName = menuListAdapter.getItem(pos) - ?: return@setOnItemClickListener - - when(selectedMenuName){ - ContextMenuEnums.KILL.itemName - -> AppProcessManager.killDialog( - cmdIndexFragment, -// currentAppDirPath, - selectedScriptName - ) - ContextMenuEnums.DELETE.itemName - -> ConfirmDialogForDelete.show( - cmdIndexFragment, -// currentAppDirPath, - selectedScriptName, -// cmdIndexFragment.binding.cmdList - ) - ContextMenuEnums.EDIT.itemName - -> ScriptFileEdit.edit( - cmdIndexFragment, -// currentAppDirPath, - selectedScriptName, - ) - -// ContextMenuEnums.COPY.itemName -// -> CopySubMenuDialog.launch( -// cmdIndexFragment, -// currentAppDirPath, -// selectedScriptName -// ) - ContextMenuEnums.UTILITY.itemName - -> UtilitySubMenuDialog.launch( - cmdIndexFragment, -// currentAppDirPath, - selectedScriptName - ) - - } - return@setOnItemClickListener - } - } -} - -// -//private object CopySubMenuDialog { -// -// private var copySubMenuDialog: Dialog? = null -// fun launch( -// cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, -// selectedScriptName: String, -// ){ -// val context = cmdIndexFragment.context -// ?: return -// copySubMenuDialog = Dialog( -// context -// ) -// copySubMenuDialog?.setContentView( -// R.layout.list_dialog_layout -// ) -// QrLogo(cmdIndexFragment).setTitleQrLogo( -// copySubMenuDialog?.findViewById( -// R.id.list_dialog_title_image -// ), -// currentAppDirPath, -// selectedScriptName, -// ) -// val listDialogTitle = copySubMenuDialog?.findViewById( -// R.id.list_dialog_title -// ) -// listDialogTitle?.text = "Copy: $selectedScriptName" -// val listDialogMessage = copySubMenuDialog?.findViewById( -// R.id.list_dialog_message -// ) -// listDialogMessage?.isVisible = false -// val listDialogSearchEditText = copySubMenuDialog?.findViewById( -// R.id.list_dialog_search_edit_text -// ) -// listDialogSearchEditText?.isVisible = false -// val cancelButton = copySubMenuDialog?.findViewById( -// R.id.list_dialog_cancel -// ) -// cancelButton?.setOnClickListener { -// copySubMenuDialog?.dismiss() -// } -// -// copySubMenuListView( -// cmdIndexFragment, -// currentAppDirPath, -// selectedScriptName, -// ) -// copySubMenuDialog?.setOnCancelListener { -// copySubMenuDialog?.dismiss() -// } -// copySubMenuDialog?.window?.setLayout( -// ViewGroup.LayoutParams.MATCH_PARENT, -// ViewGroup.LayoutParams.WRAP_CONTENT -// ) -// copySubMenuDialog?.window?.setGravity(Gravity.BOTTOM) -// copySubMenuDialog?.show() -// } -// -// private fun copySubMenuListView( -// cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, -// selectedScriptName: String, -// ) { -// val context = cmdIndexFragment.context -// ?: return -// val copyMenePairList = CopySubMenuEnums.values().map { -// it.itemName to it.imageId -// } -// val copyMenuListView = -// copySubMenuDialog?.findViewById( -// R.id.list_dialog_list_view -// ) ?: return -// val subMenuAdapter = SubMenuAdapter( -// context, -// copyMenePairList.toMutableList() -// ) -// copyMenuListView.adapter = subMenuAdapter -// invokeItemSetClickListnerForCopy( -// cmdIndexFragment, -// copyMenuListView, -// currentAppDirPath, -// selectedScriptName -// ) -// } -// -// private fun invokeItemSetClickListnerForCopy( -// cmdIndexFragment: CommandIndexFragment, -// copyMenuListView: ListView, -// currentAppDirPath: String, -// selectedScriptName: String, -// ){ -// val context = cmdIndexFragment.context -// copyMenuListView.setOnItemClickListener { -// parent, View, pos, id -> -// copySubMenuDialog?.dismiss() -// val menuListAdapter = copyMenuListView.adapter as SubMenuAdapter -// val selectedMenuName = menuListAdapter.getItem(pos) -// ?: return@setOnItemClickListener -// -// when(selectedMenuName){ -// CopySubMenuEnums.COPY_PATH.itemName -// -> { -// val shellFilePathByTermux = "${currentAppDirPath}/${selectedScriptName}" -// val clipboard = context?.getSystemService( -// Context.CLIPBOARD_SERVICE) as ClipboardManager -// val clip: ClipData = ClipData.newPlainText( -// "cmdclick path", -// shellFilePathByTermux -// ) -// clipboard.setPrimaryClip(clip) -// Toast.makeText( -// context, -// "copy ok", -// Toast.LENGTH_SHORT -// ).show() -// } -// -// CopySubMenuEnums.COPY_FILE.itemName -// -> CopyFileEvent( -// cmdIndexFragment, -// currentAppDirPath, -// selectedScriptName, -// ).invoke() -// } -// return@setOnItemClickListener -// } -// } -//} - -private object UtilitySubMenuDialog { - - private var utilitySubMenuDialog: Dialog? = null - fun launch( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - selectedScriptName: String, - ){ - val context = cmdIndexFragment.context - ?: return - utilitySubMenuDialog = Dialog( - context - ) - utilitySubMenuDialog?.setContentView( - R.layout.list_dialog_layout - ) - QrLogo.setTitleFannelLogo( - cmdIndexFragment, - utilitySubMenuDialog?.findViewById( - R.id.list_dialog_title_image - ), -// currentAppDirPath, - selectedScriptName, - ) - val listDialogTitle = utilitySubMenuDialog?.findViewById( - R.id.list_dialog_title - ) - listDialogTitle?.text = "Utility: $selectedScriptName" - val listDialogMessage = utilitySubMenuDialog?.findViewById( - R.id.list_dialog_message - ) - listDialogMessage?.isVisible = false - val listDialogSearchEditText = utilitySubMenuDialog?.findViewById( - R.id.list_dialog_search_edit_text - ) - listDialogSearchEditText?.isVisible = false - val cancelButton = utilitySubMenuDialog?.findViewById( - R.id.list_dialog_cancel - ) - cancelButton?.setOnClickListener { - utilitySubMenuDialog?.dismiss() - utilitySubMenuDialog = null - } - - utilitySubMenuListView( - cmdIndexFragment, -// currentAppDirPath, - selectedScriptName, - ) - utilitySubMenuDialog?.setOnCancelListener { - utilitySubMenuDialog?.dismiss() - utilitySubMenuDialog = null - } - utilitySubMenuDialog?.window?.setLayout( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT - ) - utilitySubMenuDialog?.window?.setGravity(Gravity.BOTTOM) - utilitySubMenuDialog?.show() - } - - private fun utilitySubMenuListView( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - selectedScriptName: String, - ) { - val context = cmdIndexFragment.context - ?: return - val utilityMenePairList = UtilitySubMenuEnums.values().map { - it.itemName to it.imageId - } - val utilityMenuListView = - utilitySubMenuDialog?.findViewById( - R.id.list_dialog_list_view - ) ?: return - val subMenuAdapter = SubMenuAdapter( - context, - utilityMenePairList.toMutableList() - ) - utilityMenuListView.adapter = subMenuAdapter - invokeItemSetClickListnerForUtility( - cmdIndexFragment, - utilityMenuListView, -// currentAppDirPath, - selectedScriptName - ) - } - - private fun invokeItemSetClickListnerForUtility( - cmdIndexFragment: CommandIndexFragment, - copyMenuListView: ListView, -// currentAppDirPath: String, - selectedScriptName: String, - ){ - val context = cmdIndexFragment.context - ?: return - copyMenuListView.setOnItemClickListener { - parent, View, pos, id -> - utilitySubMenuDialog?.dismiss() - utilitySubMenuDialog = null - val menuListAdapter = copyMenuListView.adapter as SubMenuAdapter - val selectedMenuName = menuListAdapter.getItem(pos) - ?: return@setOnItemClickListener - val utilitySubMenuEnums = UtilitySubMenuEnums.values().firstOrNull{ - it.itemName == selectedMenuName - } ?: UtilitySubMenuEnums.COPY_PATH - when(utilitySubMenuEnums){ - UtilitySubMenuEnums.WRITE - -> EditorByIntent( -// currentAppDirPath, - selectedScriptName, - context - ).byIntent() -// UtilitySubMenuEnums.DELETE.itemName -// -> ConfirmDialogForDelete.show( -// cmdIndexFragment, -// currentAppDirPath, -// selectedScriptName, -// cmdIndexFragment.binding.cmdList -// ) - UtilitySubMenuEnums.RENAME - -> FileRenamer.rename( - cmdIndexFragment, -// currentAppDirPath, - selectedScriptName - ) - UtilitySubMenuEnums.COPY_PATH - -> { - val shellFilePathByTermux = "${UsePath.cmdclickDefaultAppDirPath}/${selectedScriptName}" - val clipboard = context.getSystemService( - Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip: ClipData = ClipData.newPlainText( - "cmdclick path", - shellFilePathByTermux - ) - clipboard.setPrimaryClip(clip) - ToastUtils.showShort("copy ok ${shellFilePathByTermux}") - } - - UtilitySubMenuEnums.COPY_FILE - -> CopyFileEvent.execInvokeItemSetClickListnerForCopyFile( -// cmdIndexFragment.binding.cmdList, - selectedScriptName, - ) -// UtilitySubMenuEnums.KILL.itemName -// -> AppProcessManager.killDialog( -// cmdIndexFragment, -// currentAppDirPath, -// selectedScriptName -// ) - } - return@setOnItemClickListener - } - } - -} - -private enum class ContextMenuEnums( - val itemName: String, - val imageId: Int -){ - KILL("Kill", R.drawable.icons8_cancel), - DELETE("Delete", R.drawable.icons8_refresh), - EDIT("Edit", R.drawable.icons8_edit), -// COPY("Copy", com.termux.shared.R.drawable.ic_copy), - UTILITY("Utility", R.drawable.icons8_support), -} - -//private enum class CopySubMenuEnums( -// val itemName: String, -// val imageId: Int -//){ -// COPY_PATH("Copy path", com.termux.shared.R.drawable.ic_copy), -// COPY_FILE("Copy file", R.drawable.icons8_file) -//} - -private enum class UtilitySubMenuEnums( - val itemName: String, - val imageId: Int -){ - RENAME("Rename", R.drawable.icons8_update), - WRITE("Write", R.drawable.icons8_support), - COPY_PATH("Copy path", com.termux.shared.R.drawable.ic_copy), - COPY_FILE("Copy file", R.drawable.icons8_file) -} - diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/ExecOnQrLongClickDo.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/ExecOnQrLongClickDo.kt deleted file mode 100755 index 5635d3c94..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/ExecOnQrLongClickDo.kt +++ /dev/null @@ -1,149 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.long_click - -import android.app.Dialog -import android.graphics.BitmapFactory -import android.view.Gravity -import androidx.appcompat.widget.AppCompatImageButton -import androidx.appcompat.widget.AppCompatImageView -import androidx.appcompat.widget.AppCompatTextView -import coil.load -import com.puutaro.commandclick.R -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.component.adapter.FannelIndexListAdapter -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.proccess.qr.QrDialogMethod -import com.puutaro.commandclick.util.CcPathTool - -object ExecOnQrLongClickDo { - - private var qrLogoDialogObj: Dialog? = null - - fun invoke( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - fannelIndexListAdapter: FannelIndexListAdapter - ) { - - val context = cmdIndexFragment.context - ?: return - val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath - fannelIndexListAdapter.qrLongClickListener = - object: FannelIndexListAdapter.OnQrLongClickListener { - override fun onQrLongClick( - imageView: AppCompatImageView, - holder: FannelIndexListAdapter.FannelIndexListViewHolder, - position: Int - ) { - val fannelName = holder.fannelNameTextView.text.toString() - val fannelDirName = CcPathTool.makeFannelDirName(fannelName) - val qrLogoPath = "${cmdclickDefaultAppDirPath}/$fannelDirName/${UsePath.qrPngRelativePath}" - qrLogoDialogObj = Dialog( - context - ) - qrLogoDialogObj?.setContentView( - R.layout.qr_logo_dialog_layout - ) - val titleTextView = qrLogoDialogObj?.findViewById( - R.id.qr_logo_dialog_title - ) - - titleTextView?.text = fannelName - qrLogoDialogObj?.findViewById( - R.id.qr_logo_dialog_top_image - )?.load(qrLogoPath) - - setPassButton( - cmdIndexFragment, -// currentAppDirPath, - fannelName, - ) - setShareButton( - cmdIndexFragment, - qrLogoPath - ) - setChangeButton( - cmdIndexFragment, -// currentAppDirPath, - fannelName, - ) - val cancelButton = qrLogoDialogObj?.findViewById( - R.id.qr_logo_dialog_cancel - ) - cancelButton?.setOnClickListener { - qrLogoDialogObj?.dismiss() - qrLogoDialogObj = null - } - qrLogoDialogObj?.setOnCancelListener { - qrLogoDialogObj?.dismiss() - qrLogoDialogObj = null - } -// qrLogoDialogObj?.window?.setLayout( -// ViewGroup.LayoutParams.MATCH_PARENT, -// ViewGroup.LayoutParams.WRAP_CONTENT -// ) - qrLogoDialogObj?.window?.setGravity(Gravity.BOTTOM) - qrLogoDialogObj?.show() - } - } - } - - private fun setShareButton( - cmdIndexFragment: CommandIndexFragment, - qrLogoPath: String, - ){ - val shareButton = qrLogoDialogObj?.findViewById( - R.id.qr_logo_dialog_share - ) - shareButton?.setOnClickListener { - qrLogoDialogObj?.dismiss() - qrLogoDialogObj = null - val myBitmap = - BitmapFactory.decodeFile( - qrLogoPath - ) - QrDialogMethod.execShare( - cmdIndexFragment, - myBitmap - ) - } - } - - private fun setPassButton( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - fannelName: String, - ){ - val passButton = qrLogoDialogObj?.findViewById( - R.id.qr_logo_dialog_pass - ) - passButton?.setOnClickListener { - qrLogoDialogObj?.dismiss() - qrLogoDialogObj = null - QrDialogMethod.launchPassDialog( - cmdIndexFragment, -// currentAppDirPath, - fannelName, - ) - } - } - - private fun setChangeButton( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - fannelName: String, - ){ - val changeButton = qrLogoDialogObj?.findViewById( - R.id.qr_logo_dialog_change - ) - changeButton?.setOnClickListener { - QrDialogMethod.execChange( - cmdIndexFragment, -// currentAppDirPath, - fannelName, - qrLogoDialogObj, - R.id.qr_logo_dialog_top_image - ) - } - } -} - diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/lib/ConfirmDialogForDelete.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/lib/ConfirmDialogForDelete.kt deleted file mode 100755 index f0f287c85..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/lib/ConfirmDialogForDelete.kt +++ /dev/null @@ -1,115 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.long_click.lib - -import android.app.Dialog -import android.view.Gravity -import android.view.ViewGroup -import androidx.appcompat.widget.AppCompatImageButton -import androidx.appcompat.widget.AppCompatTextView -import androidx.recyclerview.widget.RecyclerView -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.fragment_lib.command_index_fragment.common.CommandListManager -import com.puutaro.commandclick.util.file.FileSystems -import com.puutaro.commandclick.util.file.ReadText -import java.io.File - - -object ConfirmDialogForDelete { - - private var addConfirmDialog: Dialog? = null - fun show( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - scriptFileName: String, -// cmdListView: RecyclerView - ){ - val context = - cmdIndexFragment.context - ?: return - val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath - val currentAppDirPathTermux = UsePath.makeTermuxPathByReplace() - val shellContents = ReadText( - File(cmdclickDefaultAppDirPath, scriptFileName).absolutePath - ).readText() - val displayContents = "\tpath: ${currentAppDirPathTermux}/${scriptFileName}" + - "\n---\n${shellContents}" - addConfirmDialog = Dialog( - context - ) - addConfirmDialog?.setContentView( - com.puutaro.commandclick.R.layout.confirm_text_dialog - ) - val confirmTitleTextView = - addConfirmDialog?.findViewById( - com.puutaro.commandclick.R.id.confirm_text_dialog_title - ) - confirmTitleTextView?.text = "Delete bellow contents, ok?" - val confirmContentTextView = - addConfirmDialog?.findViewById( - com.puutaro.commandclick.R.id.confirm_text_dialog_text_view - ) - confirmContentTextView?.text = displayContents - val confirmCancelButton = - addConfirmDialog?.findViewById( - com.puutaro.commandclick.R.id.confirm_text_dialog_cancel - ) - confirmCancelButton?.setOnClickListener { - addConfirmDialog?.dismiss() - addConfirmDialog = null - } - deleteOkListener( -// currentAppDirPath, - scriptFileName, -// cmdListView - ) - addConfirmDialog?.setOnCancelListener { - addConfirmDialog?.dismiss() - addConfirmDialog = null - } - addConfirmDialog?.window?.setLayout( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT - ) - addConfirmDialog?.window?.setGravity( - Gravity.BOTTOM - ) - addConfirmDialog?.show() - } - - private fun deleteOkListener( -// currentAppDirPath: String, - scriptFileName: String, -// cmdListView: RecyclerView - ){ - val confirmOkButtonView = - addConfirmDialog?.findViewById( - com.puutaro.commandclick.R.id.confirm_text_dialog_ok - ) - val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath - confirmOkButtonView?.setOnClickListener { - addConfirmDialog?.dismiss() - addConfirmDialog = null - FileSystems.removeFiles( - File( - cmdclickDefaultAppDirPath, - scriptFileName, - ).absolutePath - ) - val fannelDirName = scriptFileName - .removeSuffix( - UsePath.SHELL_FILE_SUFFIX - ) - .removeSuffix( - UsePath.JS_FILE_SUFFIX - ) + UsePath.fannelDirSuffix - FileSystems.removeDir( - "${cmdclickDefaultAppDirPath}/${fannelDirName}" - ) - -// CommandListManager.execListUpdateForCmdIndex( -//// currentAppDirPath, -// cmdListView, -// ) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/lib/CopyFileEvent.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/lib/CopyFileEvent.kt deleted file mode 100755 index 48b4cc897..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/lib/CopyFileEvent.kt +++ /dev/null @@ -1,156 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.long_click.lib - -import androidx.recyclerview.widget.RecyclerView -import com.blankj.utilcode.util.ToastUtils -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.fragment_lib.command_index_fragment.common.CommandListManager -import com.puutaro.commandclick.util.file.FileSystems -import java.io.File - - -object CopyFileEvent{ - -// private val context = cmdIndexFragment.context -// private val binding = cmdIndexFragment.binding -// private val cmdListView = binding.cmdList -// private val cmdclickAppDirAdminPath = UsePath.cmdclickAppDirAdminPath -// private var copyFileDialog: Dialog? = null -// private val icons8Wheel = com.puutaro.commandclick.R.drawable.icons8_wheel - -// fun invoke(){ -// if( -// context == null -// ) return -// copyFileDialog = Dialog( -// context -// ) -// copyFileDialog?.setContentView( -// com.puutaro.commandclick.R.layout.list_dialog_layout -// ) -// val listDialogTitle = copyFileDialog?.findViewById( -// com.puutaro.commandclick.R.id.list_dialog_title -// ) -// listDialogTitle?.text = "Select app dir name" -// val listDialogMessage = copyFileDialog?.findViewById( -// com.puutaro.commandclick.R.id.list_dialog_message -// ) -// listDialogMessage?.isVisible = false -// val listDialogSearchEditText = copyFileDialog?.findViewById( -// com.puutaro.commandclick.R.id.list_dialog_search_edit_text -// ) -// listDialogSearchEditText?.isVisible = false -// val cancelButton = copyFileDialog?.findViewById( -// com.puutaro.commandclick.R.id.list_dialog_cancel -// ) -// cancelButton?.setOnClickListener { -// copyFileDialog?.dismiss() -// copyFileDialog = null -// } -// -// setListView() -// copyFileDialog?.setOnCancelListener { -// copyFileDialog?.dismiss() -// copyFileDialog = null -// } -// copyFileDialog?.window?.setLayout( -// ViewGroup.LayoutParams.MATCH_PARENT, -// ViewGroup.LayoutParams.WRAP_CONTENT -// ) -// copyFileDialog?.window?.setGravity(Gravity.BOTTOM) -// copyFileDialog?.show() -// } -// -// private fun setListView() { -// if( -// context == null -// ) return -// val subMenuListView = -// copyFileDialog?.findViewById( -// com.puutaro.commandclick.R.id.list_dialog_list_view -// ) ?: return -// val subMenuAdapter = SubMenuAdapter( -// context, -// makeAppDirNameList().toMutableList() -// ) -// subMenuListView.adapter = subMenuAdapter -// invokeItemSetClickListnerForCopyFile( -// subMenuListView, -// ) -// } -// -// private fun makeAppDirNameList(): List> { -// val jsSuffix = UsePath.JS_FILE_SUFFIX -// val systemAppDirName = UsePath.cmdclickDefaultAppDirPath -// return FileSystems.filterSuffixJsFiles( -// cmdclickAppDirAdminPath -// ).map { -// val appDirName = it.removeSuffix( -// jsSuffix -// ) -// appDirName to icons8Wheel -// }.filter { -// it.first != systemAppDirName -// } -// } -// -// -// private fun invokeItemSetClickListnerForCopyFile( -// appDirListView: ListView, -// ) { -// appDirListView.setOnItemClickListener { -// parent, View, pos, id -> -// val menuListAdapter = appDirListView.adapter as SubMenuAdapter -// val selectedAppDirName = menuListAdapter.getItem(pos) -// ?: return@setOnItemClickListener -// execInvokeItemSetClickListnerForCopyFile( -// sourceAppDirPath, -// sourceFannelName, -// UsePath.cmdclickDefaultAppDirName -// ) -// copyFileDialog?.dismiss() -// copyFileDialog = null -// return@setOnItemClickListener -// } -// } - - fun execInvokeItemSetClickListnerForCopyFile( -// cmdListView: RecyclerView, - sourceFannelName: String, - ) { - val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath - val sourceFannelPath = - "${cmdclickDefaultAppDirPath}/${sourceFannelName}" - FileSystems.execCopyFileWithDir( - File(sourceFannelPath), - File(sourceFannelPath), - ) - copyResultToast( - sourceFannelPath - ) -// CommandListManager.execListUpdateForCmdIndex( -//// cmdclickDefaultAppDirPath, -// cmdListView, -// ) - - } -} - -private fun copyResultToast( - selectedShellFilePath: String -){ - if( - File( - selectedShellFilePath - ).isFile - ){ - ToastUtils.showShort( - "copy, ok\n" + - "file: ${selectedShellFilePath}" - ) - return - } - ToastUtils.showLong( - "copy, failure\n" + - "file: ${selectedShellFilePath}" - ) -} diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/lib/ScriptFileEdit.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/lib/ScriptFileEdit.kt old mode 100755 new mode 100644 index 0cef4a122..77f102d0e --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/lib/ScriptFileEdit.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/list_view_lib/long_click/lib/ScriptFileEdit.kt @@ -7,8 +7,6 @@ import com.puutaro.commandclick.common.variable.settings.FannelInfoSetting import com.puutaro.commandclick.fragment.CommandIndexFragment import com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.common.DecideEditTag import com.puutaro.commandclick.fragment_lib.command_index_fragment.variable.LongClickMenuItemsforCmdIndex -import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.ValidateShell -import com.puutaro.commandclick.proccess.lib.VariationErrDialog import com.puutaro.commandclick.util.file.ReadText import com.puutaro.commandclick.util.state.EditFragmentArgs import com.puutaro.commandclick.util.state.FannelInfoTool @@ -36,20 +34,20 @@ object ScriptFileEdit { fannelName ).absolutePath, ).textToList() - val validateErrMessage = ValidateShell.correct( - fragment, - shellContentsList, - fannelName - ) - if(validateErrMessage.isNotEmpty()){ - val shellScriptPath = "${cmdclickDefaultAppDirPath}/${fannelName}" - VariationErrDialog.show( - fragment, - shellScriptPath, - validateErrMessage - ) - return - } +// val validateErrMessage = ValidateShell.correct( +// fragment, +// shellContentsList, +// fannelName +// ) +// if(validateErrMessage.isNotEmpty()){ +// val shellScriptPath = "${cmdclickDefaultAppDirPath}/${fannelName}" +// VariationErrDialog.show( +// fragment, +// shellScriptPath, +// validateErrMessage +// ) +// return +// } val editFragmentTag = DecideEditTag( shellContentsList, // currentAppDirPath, diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/setting_button/AddConfirmDialogForSettingButton.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/setting_button/AddConfirmDialogForSettingButton.kt deleted file mode 100755 index 0ed6ea025..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/setting_button/AddConfirmDialogForSettingButton.kt +++ /dev/null @@ -1,221 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.setting_button - -import android.app.Dialog -import android.view.Gravity -import android.view.ViewGroup -import androidx.appcompat.widget.AppCompatImageButton -import androidx.appcompat.widget.AppCompatTextView -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.common.variable.edit.RecordNumToMapNameValueInHolderColumn -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.databinding.CommandIndexFragmentBinding -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.proccess.CommentOutLabelingSection -import com.puutaro.commandclick.util.* -import com.puutaro.commandclick.util.file.FileSystems -import com.puutaro.commandclick.util.file.ReadText -import java.io.File - - -object AddConfirmDialogForSettingButton { - - private var addConfirmDialog: Dialog? = null - fun invoke( - cmdIndexFragment: CommandIndexFragment, -// currentAppDirPath: String, - shellScriptName: String, -// languageTypeSelects: LanguageTypeSelects - ){ - val context = cmdIndexFragment.context - ?: return - val binding = cmdIndexFragment.binding - val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath - val shellScriptPath = "${cmdclickDefaultAppDirPath}/${shellScriptName}" -// val languageTypeToSectionHolderMap = -// CommandClickScriptVariable.LANGUAGE_TYPE_TO_SECTION_HOLDER_MAP -// .get(languageTypeSelects) - - - addConfirmDialog = Dialog( - context - ) - addConfirmDialog?.setContentView( - com.puutaro.commandclick.R.layout.confirm_text_dialog - ) - val confirmTitleTextView = - addConfirmDialog?.findViewById( - com.puutaro.commandclick.R.id.confirm_text_dialog_title - ) - confirmTitleTextView?.text = "Add bellow contents, ok?" - val confirmContentTextView = - addConfirmDialog?.findViewById( - com.puutaro.commandclick.R.id.confirm_text_dialog_text_view - ) - confirmContentTextView?.text = "\tpath: path: ${shellScriptPath}" - cancelButtonListener( - binding, -// currentAppDirPath, - shellScriptName - ) - okButtonListener( - binding, -// languageTypeToSectionHolderMap, -// currentAppDirPath, - shellScriptName, - ) - addConfirmDialog?.setOnCancelListener { - addConfirmDialog?.dismiss() - addConfirmDialog = null - } - addConfirmDialog?.window?.setLayout( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT - ) - addConfirmDialog?.window?.setGravity( - Gravity.BOTTOM - ) - addConfirmDialog?.show() - } - - private fun cancelButtonListener( - binding: CommandIndexFragmentBinding, -// currentAppDirPath: String, - shellScriptName: String - ){ - val confirmCancelButton = - addConfirmDialog?.findViewById( - com.puutaro.commandclick.R.id.confirm_text_dialog_cancel - ) - confirmCancelButton?.setOnClickListener { - addConfirmDialog?.dismiss() - addConfirmDialog = null - val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath - FileSystems.removeFiles( - File( - cmdclickDefaultAppDirPath, - shellScriptName, - ).absolutePath - ) -// CommandListManager.execListUpdateForCmdIndex( -// binding.cmdList, -// ) - } - } - - private fun okButtonListener( - binding: CommandIndexFragmentBinding, -// languageTypeToSectionHolderMap: Map?, -// currentAppDirPath: String, - shellScriptName: String, - ){ - val confirmOkButton = - addConfirmDialog?.findViewById( - com.puutaro.commandclick.R.id.confirm_text_dialog_ok - ) - confirmOkButton?.setOnClickListener { - addConfirmDialog?.dismiss() - addConfirmDialog = null - confirmOkExecutor( - binding, -// languageTypeToSectionHolderMap, -// currentAppDirPath, - shellScriptName, - ) - } - } - - private fun confirmOkExecutor( - binding: CommandIndexFragmentBinding, -// languageTypeToSectionHolderMap: Map?, -// currentAppDirPath: String, - shellScriptName: String, - ){ - val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath - val shellContentsList = ReadText( - File( - cmdclickDefaultAppDirPath, - shellScriptName - ).absolutePath - ).textToList() - - val shellScriptContentsLabelCommentOut = CommentOutLabelingSection.commentOut( - shellContentsList, -// shellScriptName - ) - val shellScriptContentsQuoteComp = makeShellScriptContentsQuoteComp( - shellScriptContentsLabelCommentOut, -// languageTypeToSectionHolderMap - ) - FileSystems.writeFile( - File( - cmdclickDefaultAppDirPath, - shellScriptName, - ).absolutePath, - shellScriptContentsQuoteComp - ) -// CommandListManager.execListUpdateForCmdIndex( -//// currentAppDirPath, -// binding.cmdList, -// ) - } -} - - -private fun makeShellScriptContentsQuoteComp( - shellContentsList: List, -// languageTypeToSectionHolderMap: Map? -): String { - val recordNumToMapNameValueInCommandHolder = - RecordNumToMapNameValueInHolder.parse( - shellContentsList, - CommandClickScriptVariable.CMD_SEC_START, - CommandClickScriptVariable.CMD_SEC_END, -// languageTypeToSectionHolderMap?.get( -// CommandClickScriptVariable.HolderTypeName.CMD_SEC_START -// ) as String, -// languageTypeToSectionHolderMap[ -// CommandClickScriptVariable.HolderTypeName.CMD_SEC_END -// ] as String, - ) - val recordNumToMapNameValueInSettingHolder = - RecordNumToMapNameValueInHolder.parse( - shellContentsList, - CommandClickScriptVariable.SETTING_SEC_START, - CommandClickScriptVariable.SETTING_SEC_END, -// languageTypeToSectionHolderMap.get(CommandClickScriptVariable.HolderTypeName.SETTING_SEC_START) as String, -// languageTypeToSectionHolderMap[CommandClickScriptVariable.HolderTypeName.SETTING_SEC_END] as String, - true, - ) - val shellScriptListQuoteCompForCmdVariables = quoteCompShellScriptListVariables( - shellContentsList, - recordNumToMapNameValueInCommandHolder - ) - return quoteCompShellScriptListVariables( - shellScriptListQuoteCompForCmdVariables, - recordNumToMapNameValueInSettingHolder, - ).joinToString("\n") -} - - - -private fun quoteCompShellScriptListVariables( - shellContentsList: List, - recordNumToMapNameValueInHolder: Map?>? -): List { - if(recordNumToMapNameValueInHolder == null) return shellContentsList - return (shellContentsList.indices).map { - currentOrder -> - val getReplaceValue = recordNumToMapNameValueInHolder.get(currentOrder) - if(getReplaceValue.isNullOrEmpty()){ - shellContentsList[currentOrder] - } else { - val currentVariableName = getReplaceValue.get( - RecordNumToMapNameValueInHolderColumn.VARIABLE_NAME.name - ) - val currentVariableValue = getReplaceValue.get( - RecordNumToMapNameValueInHolderColumn.VARIABLE_VALUE.name - ) ?: String() - "${currentVariableName}=${CompleteQuote.comp(currentVariableValue)}" - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/setting_button/AddHandler.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/setting_button/AddHandler.kt deleted file mode 100755 index aa70e84fc..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/setting_button/AddHandler.kt +++ /dev/null @@ -1,131 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.setting_button - -import android.app.Dialog -import android.view.Gravity -import android.view.ViewGroup -import android.widget.ListView -import androidx.appcompat.widget.AppCompatEditText -import androidx.appcompat.widget.AppCompatImageButton -import androidx.appcompat.widget.AppCompatTextView -import androidx.core.view.isVisible -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -//import com.puutaro.commandclick.common.variable.variant.LanguageTypeSelects -import com.puutaro.commandclick.component.adapter.SubMenuAdapter -import com.puutaro.commandclick.fragment.CommandIndexFragment - -//class AddScriptHandler( -// private val cmdIndexFragment: CommandIndexFragment, -//// private val currentAppDirPath: String, -//) { -// val context = cmdIndexFragment.context -// val binding = cmdIndexFragment.binding -// private var languageSelectDialog: Dialog? = null -// private val icons8Wheel = com.puutaro.commandclick.R.drawable.icons8_wheel -// -// fun handle(){ -// if(context == null) return -// -//// val languageSelectList = LanguageTypeSelects.values().map { -//// it.str -//// }.map { -//// it to icons8Wheel -//// } -// -// languageSelectDialog = Dialog( -// context -// ) -// languageSelectDialog?.setContentView( -// com.puutaro.commandclick.R.layout.list_dialog_layout -// ) -// val listDialogTitle = languageSelectDialog?.findViewById( -// com.puutaro.commandclick.R.id.list_dialog_title -// ) -// listDialogTitle?.text = "Select add script language" -// val listDialogMessage = languageSelectDialog?.findViewById( -// com.puutaro.commandclick.R.id.list_dialog_message -// ) -// listDialogMessage?.isVisible = false -// val listDialogSearchEditText = languageSelectDialog?.findViewById( -// com.puutaro.commandclick.R.id.list_dialog_search_edit_text -// ) -// listDialogSearchEditText?.isVisible = false -// val cancelButton = languageSelectDialog?.findViewById( -// com.puutaro.commandclick.R.id.list_dialog_cancel -// ) -// cancelButton?.setOnClickListener { -// languageSelectDialog?.dismiss() -// languageSelectDialog = null -// } -// setListView( -// languageSelectList -// ) -// -// languageSelectDialog?.setOnCancelListener { -// languageSelectDialog?.dismiss() -// languageSelectDialog = null -// } -// languageSelectDialog?.window?.setLayout( -// ViewGroup.LayoutParams.MATCH_PARENT, -// ViewGroup.LayoutParams.WRAP_CONTENT -// ) -// languageSelectDialog?.window?.setGravity(Gravity.BOTTOM) -// languageSelectDialog?.show() -// } -// -// private fun setListView( -// languageSelectList: List>, -// ) { -// val context = cmdIndexFragment.context -// ?: return -// val subMenuListView = -// languageSelectDialog?.findViewById( -// com.puutaro.commandclick.R.id.list_dialog_list_view -// ) ?: return -// val subMenuAdapter = SubMenuAdapter( -// context, -// languageSelectList.toMutableList() -// ) -// subMenuListView.adapter = subMenuAdapter -// invokeItemSetClickListenerForLanguageType( -// subMenuListView, -// ) -// } -// -// private fun invokeItemSetClickListenerForLanguageType( -// subMenuListView: ListView, -// ){ -// subMenuListView.setOnItemClickListener { -// parent, View, pos, id -// -> -// languageSelectDialog?.dismiss() -// languageSelectDialog = null -// val menuListAdapter = subMenuListView.adapter as SubMenuAdapter -// val selectedLanguage = menuListAdapter.getItem(pos) -// ?: return@setOnItemClickListener -// val languageTypeSelects = when( -// selectedLanguage -// ){ -// LanguageTypeSelects.SHELL_SCRIPT.str -> { -// LanguageTypeSelects.SHELL_SCRIPT -// } -// else -> LanguageTypeSelects.JAVA_SCRIPT -// } -// val shellScriptName = -// CommandClickScriptVariable.makeShellScriptName( -// languageTypeSelects -// ) -// AddShellScript.addShellOrJavaScript ( -// cmdIndexFragment, -//// currentAppDirPath, -// shellScriptName, -// languageTypeSelects -// ) -// AddConfirmDialogForSettingButton.invoke( -// cmdIndexFragment, -//// currentAppDirPath, -// shellScriptName, -// languageTypeSelects -// ) -// } -// } -//} diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/setting_button/AddShellScript.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/setting_button/AddShellScript.kt deleted file mode 100755 index 27696121b..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/setting_button/AddShellScript.kt +++ /dev/null @@ -1,50 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.setting_button - -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.fragment.CommandIndexFragment -import com.puutaro.commandclick.util.editor.EditorByIntent - - -//object AddShellScript { -// fun addShellOrJavaScript ( -// cmdIndexFragment: CommandIndexFragment, -//// currentAppDirPath: String, -// shellScriptName: String, -// languageTypeSelects: LanguageTypeSelects -// ){ -// -// val context = cmdIndexFragment.context -// CommandClickScriptVariable.makeShellOrJsFile( -//// currentAppDirPath, -// shellScriptName, -// shellOrJs = languageTypeSelects -// ) -// val editorByIntent = EditorByIntent( -//// currentAppDirPath, -// shellScriptName, -// context -// ) -// editorByIntent.byIntent() -// } -//}object AddShellScript { -// fun addShellOrJavaScript ( -// cmdIndexFragment: CommandIndexFragment, -//// currentAppDirPath: String, -// shellScriptName: String, -// languageTypeSelects: LanguageTypeSelects -// ){ -// -// val context = cmdIndexFragment.context -// CommandClickScriptVariable.makeShellOrJsFile( -//// currentAppDirPath, -// shellScriptName, -// shellOrJs = languageTypeSelects -// ) -// val editorByIntent = EditorByIntent( -//// currentAppDirPath, -// shellScriptName, -// context -// ) -// editorByIntent.byIntent() -// } -//} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/CmdIndexLinearWeightParam.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/CmdIndexLinearWeightParam.kt deleted file mode 100755 index 060dba7fd..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/CmdIndexLinearWeightParam.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.variable - -import android.view.ViewGroup -import android.widget.LinearLayout - -//class CmdIndexLinearWeightParam( -//) { -// companion object { -// private val listViewLongWeightNum = 0.6F -// private val listViewShortWeightNum = 0.07F -// -// -// val listViewLongWeight = returnLayoutPram(listViewLongWeightNum) -// val listViewShortWeight = returnLayoutPram(listViewShortWeightNum) -// -// -// private fun returnLayoutPram( -// weight: Float -// ): LinearLayout.LayoutParams { -// val linearLayoutParam = LinearLayout.LayoutParams( -// ViewGroup.LayoutParams.MATCH_PARENT, -// 0 -// ) -// linearLayoutParam.weight = weight -// return linearLayoutParam -// } -// } -//} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/SearchEditTextWideAjustWeight.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/SearchEditTextWideAjustWeight.kt deleted file mode 100755 index f8768b2c4..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/SearchEditTextWideAjustWeight.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.variable - -enum class SearchEditTextWideAjustWeight( - val weight: Float -) { - WIDE(0.9F), - SHURINK(0.5F) -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/SearchSwichImage.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/SearchSwichImage.kt deleted file mode 100755 index 9fe1afddf..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/SearchSwichImage.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.variable - -import com.puutaro.commandclick.R - -enum class SearchSwichImage( - val image: Int - ) { - - TERMINAL(R.drawable.ic_terminal), - WEB(R.drawable.internet) -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/TerminalInitType.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/TerminalInitType.kt deleted file mode 100755 index 38dd84e41..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/TerminalInitType.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.variable - -enum class TerminalInitType { - ZOOM, - COLOR - -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/ToolbarWidgetWeightForLinearLayout.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/ToolbarWidgetWeightForLinearLayout.kt deleted file mode 100755 index b4f6105d6..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/command_index_fragment/variable/ToolbarWidgetWeightForLinearLayout.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.command_index_fragment.variable - -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.appcompat.widget.LinearLayoutCompat - -object ToolbarWidgetWeightForLinearLayout { - private val buttonWideWeightNum = 0.2F -// private val buttonWideWeightForPageSearchNum = 0.1F - private val buttonShurinkWeightNum = 0F - - -// private val searchEditTextWideWeightNum = 0.9F -// private val searchEditTextShurinkWeightNum = 0.5F -// private val searchEditTextShurinkWeightNumForPageSearch = 0F -// -// private val searchEditTextWideWeightNumForPageSearch = 0.6F - - val buttonWideWeight = returnLayoutPram(buttonWideWeightNum) - val buttonShrinkWeight = returnLayoutPram(buttonShurinkWeightNum) -// val searchEditTextWideWeight = returnLayoutPram(searchEditTextWideWeightNum) -// val searchEditTextShrinkWeight = returnLayoutPram(searchEditTextShurinkWeightNum) -// -// val buttonWideWeightForPageSearch = returnLayoutPram( -// buttonWideWeightForPageSearchNum -// ) -// val searchEditTextWideWeightForPageSearch = returnLayoutPram( -// searchEditTextWideWeightNumForPageSearch -// ) -// val searchEditTextShrinkWeightForPageSearch = returnLayoutPram( -// searchEditTextShurinkWeightNumForPageSearch -// ) - - - - private fun returnLayoutPram( - weight: Float - ): LinearLayoutCompat.LayoutParams { - val linearLayoutParam = LinearLayoutCompat.LayoutParams( - 0, - ViewGroup.LayoutParams.MATCH_PARENT - ) - linearLayoutParam.weight = weight - return linearLayoutParam - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/ConfigFromScriptFileSetter.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/ConfigFromScriptFileSetter.kt index 538f7e9ea..c9f5cfdaf 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/ConfigFromScriptFileSetter.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/ConfigFromScriptFileSetter.kt @@ -2,20 +2,14 @@ package com.puutaro.commandclick.fragment_lib.edit_fragment import android.content.Context import com.puutaro.commandclick.R -import com.puutaro.commandclick.common.variable.edit.EditTextSupportViewName import com.puutaro.commandclick.common.variable.res.CmdClickIcons import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.edit_fragment.common.IsCmdEdit -import com.puutaro.commandclick.fragment_lib.edit_fragment.common.TitleImageAndViewSetter import com.puutaro.commandclick.fragment_lib.edit_fragment.common.ToolbarButtonBariantForEdit -import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.RecordNumToMapNameValueInHolderMaker import com.puutaro.commandclick.proccess.edit.lib.ListSettingVariableListMaker import com.puutaro.commandclick.proccess.edit.lib.SetReplaceVariabler -import com.puutaro.commandclick.proccess.js_macro_libs.common_libs.JsActionKeyManager import com.puutaro.commandclick.proccess.js_macro_libs.edit_setting_extra.JsAcAlterIfTool -import com.puutaro.commandclick.proccess.js_macro_libs.macros.MacroForToolbarButton import com.puutaro.commandclick.proccess.tool_bar_button.SettingButtonConfigMapKey import com.puutaro.commandclick.proccess.tool_bar_button.config_settings.ButtonIconSettingsForToolbarButton import com.puutaro.commandclick.proccess.tool_bar_button.config_settings.ButtonVisibleSettingForToolbarButton @@ -34,6 +28,8 @@ object ConfigFromScriptFileSetter { editFragment: EditFragment, mainFannelConList: List ){ + val context = editFragment.context + ?: return val settingSectionStart = CommandClickScriptVariable.SETTING_SEC_START val settingSectionEnd = CommandClickScriptVariable.SETTING_SEC_END val fannelInfoMap = editFragment.fannelInfoMap @@ -42,6 +38,7 @@ object ConfigFromScriptFileSetter { fannelInfoMap ) == EditFragmentArgs.Companion.OnShortcutSettingKey.ON.key val settingVariableList = FannelStateRooterManager.makeSettingVariableList( + context, fannelInfoMap, setReplaceVariableMap, settingSectionStart, @@ -50,32 +47,8 @@ object ConfigFromScriptFileSetter { ) editFragment.settingFannelConList = settingVariableList - editFragment.setVariableTypeList = - SetVariableTypesSetterForEdit.set( - editFragment, - fannelInfoMap, - settingVariableList, - ) - editFragment.hideSettingVariableList = - ListSettingVariableListMaker.makeFromSettingVariableList( - CommandClickScriptVariable.HIDE_SETTING_VARIABLES, - fannelInfoMap, - editFragment.setReplaceVariableMap, - settingVariableList - ) - editFragment.recordNumToMapNameValueInSettingHolder = - RecordNumToMapNameValueInHolderMaker.makeForSetting(editFragment) - editFragment.recordNumToMapNameValueInCommandHolder = - RecordNumToMapNameValueInHolderMaker.makeForCmdHolder( - editFragment, - mainFannelConList - ) - editFragment.existIndexList = - judgeExistListIndex( - editFragment, - ) - editFragment.editBoxTitleConfig = ListSettingVariableListMaker.makeConfigMapFromSettingValList( + context, CommandClickScriptVariable.EDIT_BOX_TITLE_CONFIG, settingVariableList, fannelInfoMap, @@ -89,21 +62,12 @@ object ConfigFromScriptFileSetter { setReplaceVariableMap ) } - TitleImageAndViewSetter.set( - editFragment - ) - - val isSettingEdit = !editFragment.enableCmdEdit - || editFragment.passCmdVariableEdit == - CommandClickScriptVariable.PASS_CMDVARIABLE_EDIT_ON_VALUE - setToolbarButtonConfigMapFromSettingValList( editFragment, editFragment.busyboxExecutor, settingVariableList, onShortcut, - isSettingEdit, ) editFragment.editExecuteValue = SettingVariableReader.getStrValue( @@ -111,29 +75,9 @@ object ConfigFromScriptFileSetter { CommandClickScriptVariable.EDIT_EXECUTE, CommandClickScriptVariable.EDIT_EXECUTE_DEFAULT_VALUE ) - editFragment.listIndexConfigMap = ListSettingVariableListMaker.makeConfigMapFromSettingValList( - CommandClickScriptVariable.LIST_INDEX_CONFIG, - settingVariableList, - fannelInfoMap, - setReplaceVariableMap, - String(), - ).let { - AlterToolForSetValType.updateConfigMapByAlter( - editFragment.context, - it, - editFragment.busyboxExecutor, - setReplaceVariableMap - ) - } -// FileSystems.writeFile( -// File(UsePath.cmdclickDefaultAppDirPath, "getfile_index_list_config_in_init.txt").absolutePath, -// listOf( -// "", -// "listIndexConfigMap: ${editFragment.listIndexConfigMap}", -// ).joinToString("\n\n\n") -// ) - editFragment.qrDialogConfig = ListSettingVariableListMaker.makeConfigMapFromSettingValList( - CommandClickScriptVariable.QR_DIALOG_CONFIG, + editFragment.editListConfigMap = ListSettingVariableListMaker.makeConfigMapFromSettingValList( + context, + CommandClickScriptVariable.EDIT_LIST_CONFIG, settingVariableList, fannelInfoMap, setReplaceVariableMap, @@ -146,20 +90,12 @@ object ConfigFromScriptFileSetter { setReplaceVariableMap ) } -// FileSystems.writeFile( -// File(UsePath.cmdclickDefaultAppDirPath, "jsAcAlter.txt").absolutePath, -// listOf( -// "qrDialogConfig: ${editFragment.qrDialogConfig}" -// ).joinToString("\n") -// ) - editFragment.enableEditExecute = (editFragment.editExecuteValue == SettingVariableSelects.EditExecuteSelects.ALWAYS.name ) && onShortcut - val isOnlyCmdEdit = editFragment.enableCmdEdit - && !editFragment.enableEditExecute + val isOnlyCmdEdit = !editFragment.enableEditExecute if ( !onShortcut @@ -167,8 +103,6 @@ object ConfigFromScriptFileSetter { setButtonVisible( editFragment, editFragment.enableEditExecute, - editFragment.enableCmdEdit, - isSettingEdit, isOnlyCmdEdit, ) return @@ -186,31 +120,6 @@ object ConfigFromScriptFileSetter { ), ) - editFragment.historySwitch = SettingVariableReader.getCbValue( - settingVariableList, - CommandClickScriptVariable.CMDCLICK_HISTORY_SWITCH, - CommandClickScriptVariable.HISTORY_SWITCH_DEFAULT_VALUE, - SettingVariableSelects.HistorySwitchSelects.INHERIT.name, - CommandClickScriptVariable.HISTORY_SWITCH_DEFAULT_VALUE, - listOf( - SettingVariableSelects.HistorySwitchSelects.OFF.name, - SettingVariableSelects.HistorySwitchSelects.ON.name - ), - ) - - editFragment.urlHistoryOrButtonExec = SettingVariableReader.getCbValue( - settingVariableList, - CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC, - CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE, - SettingVariableSelects.UrlHistoryOrButtonExecSelects.INHERIT.name, - CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE, - listOf( - SettingVariableSelects.UrlHistoryOrButtonExecSelects.URL_HISTORY.name, - SettingVariableSelects.UrlHistoryOrButtonExecSelects.BUTTON_EXEC.name, - ), - ) - - editFragment.terminalColor = SettingVariableReader.getStrValue( settingVariableList, CommandClickScriptVariable.TERMINAL_COLOR, @@ -224,78 +133,21 @@ object ConfigFromScriptFileSetter { "1" ) - editFragment.passCmdVariableEdit = SettingVariableReader.getStrValue( - settingVariableList, - CommandClickScriptVariable.PASS_CMDVARIABLE_EDIT, - String(), - ) - editFragment.enableEditExecute = (editFragment.editExecuteValue == SettingVariableSelects.EditExecuteSelects.ALWAYS.name ) && onShortcut - val isSettingEditForOnShortcut = !editFragment.enableCmdEdit - || editFragment.passCmdVariableEdit == - CommandClickScriptVariable.PASS_CMDVARIABLE_EDIT_ON_VALUE - val isOnlyCmdEditForShortcut = editFragment.enableCmdEdit - && !editFragment.enableEditExecute + val isOnlyCmdEditForShortcut = !editFragment.enableEditExecute setButtonVisible( editFragment, editFragment.enableEditExecute, - editFragment.enableCmdEdit, - isSettingEditForOnShortcut, isOnlyCmdEditForShortcut, ) setEditToolBarButtonIcon( editFragment, - isSettingEditForOnShortcut, isOnlyCmdEditForShortcut, ) -// FileSystems.writeFile( -// File(UsePath.cmdclickDefaultAppDirPath, "state.txt").absolutePath, -// listOf( -// "readSharePreferenceMap: ${readSharePreferenceMap}", -// "setReplaceVariableMap: ${setReplaceVariableMap}", -// "settingVariableList: ${settingVariableList}", -// "setVariableTypeList: ${SetVariableTypesSetterForEdit.set( -// editFragment, -// readSharePreferenceMap, -// settingVariableList, -// )}", -// "hideSettingVariableList: ${editFragment.hideSettingVariableList}", -// "onShortcut: ${onShortcut}", -// "isToolbarBtnCustomInSettingSelects: ${editFragment.isToolbarBtnCustomInSettingSelects}", -// "enableEditExecute: ${editFragment.enableEditExecute}", -// "editFragment.enableCmdEdit: ${editFragment.enableCmdEdit}", -// "isSettingEditForOnShortcut: ${isSettingEditForOnShortcut}", -// "isOnlyCmdEditForShortcut: ${isOnlyCmdEditForShortcut}", -// "toolBarButtonVisibleMap: ${editFragment.toolBarButtonVisibleMap}", -// "toolBarButtonIconMap: ${editFragment.toolBarButtonIconMap}", -// "toolbarButtonConfigMap: ${editFragment.toolbarButtonConfigMap}", -// ).joinToString("\n\n") -// ) - -// val bottomScriptUrlList = makeListFromSettingPath( -// editFragment, -// settingVariableList, -// CommandClickScriptVariable.HOME_SCRIPT_URLS_PATH, -// UsePath.homeScriptUrlsFilePath, -// ) -// if( -// bottomScriptUrlList.isNotEmpty() -// ) editFragment.bottomScriptUrlList = bottomScriptUrlList - -// -// val homeFannelHistoryNameList = makeListFromSettingPath( -// editFragment, -// settingVariableList, -// CommandClickScriptVariable.CMDCLICK_HOME_FANNELS_PATH, -// UsePath.homeFannelsFilePath, -// ) -// if( -// homeFannelHistoryNameList.isNotEmpty() -// ) editFragment.homeFannelHistoryNameList = homeFannelHistoryNameList if( editFragment.tag?.startsWith( @@ -309,72 +161,21 @@ object ConfigFromScriptFileSetter { ) - editFragment.onNoUrlSaveMenu = SettingVariableReader.getStrValue( + editFragment.onUpdateLastModify = SettingVariableReader.getStrValue( settingVariableList, - CommandClickScriptVariable.NO_SCROLL_SAVE_URLS, + CommandClickScriptVariable.ON_UPDATE_LAST_MODIFY, String() - ).isNotEmpty() - - editFragment.onUpdateLastModify = !( - SettingVariableReader.getStrValue( - settingVariableList, - CommandClickScriptVariable.ON_UPDATE_LAST_MODIFY, - String() - ) == SettingVariableSelects.OnUpdateLastModifySelects.OFF.name - ) - } - - private fun judgeExistListIndex( - editFragment: EditFragment, - ): Boolean { - val isSetting = !IsCmdEdit.judge(editFragment) - - if( - isSetting - ) return false -// FileSystems.writeFile( -// File(UsePath.cmdclickDefaultAppDirPath, "setVal.txt").absolutePath, -// listOf( -// "recordNumToMapNameValueInSettingHolder: ${editFragment.recordNumToMapNameValueInSettingHolder}", -// "setVariableTypeList: ${editFragment.setVariableTypeList?.joinToString("\n")}" -// ).joinToString("\n\n") -// ) - - val setVariableTypeList = - editFragment.setVariableTypeList - ?: return false - val setVariableTypeListCon = - "\n" + setVariableTypeList.joinToString("\n") - val listIndexNewlineRegex = Regex( - "\n[a-zA-Z0-9]{1,}:${EditTextSupportViewName.LIST_INDEX.str}=" - ) - return listIndexNewlineRegex.containsMatchIn(setVariableTypeListCon) + ) != SettingVariableSelects.OnUpdateLastModifySelects.OFF.name } private fun setButtonVisible( editFragment: EditFragment, enableEditExecute: Boolean, - enableCmdEdit: Boolean, - isSettingEdit: Boolean, isOnlyCmdEdit: Boolean, ){ -// editFragment.enableEditExecute = -// (editFragment.editExecuteValue == -// SettingVariableSelects.EditExecuteSelects.ALWAYS.name -// ) && onShortcut - -// val enableCmdEdit = editFragment.enableCmdEdit - -// val isSettingEdit = !enableCmdEdit -// || editFragment.passCmdVariableEdit == -// CommandClickScriptVariable.PASS_CMDVARIABLE_EDIT_ON_VALUE -// val isOnlyCmdEdit = enableCmdEdit -// && !enableEditExecute - val isCmdEditExecute = enableCmdEdit - && enableEditExecute editFragment.toolBarButtonVisibleMap.put( ToolbarButtonBariantForEdit.HISTORY, - isCmdEditExecute + enableEditExecute ) val buttonVisibleOn = ButtonVisibleSettingForToolbarButton.ButtonVisibleValue.ON.name @@ -382,7 +183,6 @@ object ConfigFromScriptFileSetter { editFragment.toolBarButtonVisibleMap.put( settingButtonVariant, when(true) { - isSettingEdit -> false isOnlyCmdEdit -> false else -> { val settingButtonConfigMap = @@ -404,7 +204,6 @@ object ConfigFromScriptFileSetter { editFragment.toolBarButtonVisibleMap.put( editButtonVariant, when (true) { - isSettingEdit -> false isOnlyCmdEdit -> false else -> { val editButtonConfigMap = @@ -426,7 +225,6 @@ object ConfigFromScriptFileSetter { editFragment.toolBarButtonVisibleMap.put( okButtonVariant, when(true) { - isSettingEdit -> true isOnlyCmdEdit -> true else -> { val okButtonConfigMap = @@ -448,7 +246,6 @@ object ConfigFromScriptFileSetter { editFragment.toolBarButtonVisibleMap.put( extraButtonVariant, when(true) { - isSettingEdit -> false isOnlyCmdEdit -> false else -> { val settingButtonConfigMap = @@ -473,7 +270,6 @@ object ConfigFromScriptFileSetter { busyboxExecutor: BusyboxExecutor?, settingVariableList: List?, onShortcut: Boolean, - isSettingEdit: Boolean, ){ val setReplaceVariableMap = editFragment.setReplaceVariableMap editFragment.toolbarButtonConfigMap = @@ -524,7 +320,6 @@ object ConfigFromScriptFileSetter { editFragment, settingVariableList, onShortcut, - isSettingEdit, ).let { AlterToolForSetValType.updateConfigMapByAlter( editFragment.context, @@ -538,29 +333,15 @@ object ConfigFromScriptFileSetter { private fun setEditToolBarButtonIcon( editFragment: EditFragment, - isSettingEdit: Boolean, isOnlyCmdEdit: Boolean, ){ -// editFragment.enableEditExecute = -// (editFragment.editExecuteValue == -// SettingVariableSelects.EditExecuteSelects.ALWAYS.name -// ) && onShortcut - -// val enableCmdEdit = editFragment.enableCmdEdit - -// val isSettingEdit = !enableCmdEdit -// || editFragment.passCmdVariableEdit == -// CommandClickScriptVariable.PASS_CMDVARIABLE_EDIT_ON_VALUE -// val isOnlyCmdEdit = enableCmdEdit -// && !enableEditExecute - val iconNameIdPairList = CmdClickIcons.values() + val iconNameIdPairList = CmdClickIcons.entries.toTypedArray() val defaultIconId = R.drawable.icons8_setting val defaultSettingButtonIconIdToCaption = Pair(defaultIconId, "setting") editFragment.toolBarButtonIconMap.put( ToolbarButtonBariantForEdit.SETTING, when(true) { - isSettingEdit, isOnlyCmdEdit -> defaultSettingButtonIconIdToCaption else -> { @@ -601,8 +382,6 @@ object ConfigFromScriptFileSetter { editFragment.toolBarButtonIconMap.put( ToolbarButtonBariantForEdit.OK, when(true) { - isSettingEdit -> - defaultOkButtonIconIdToCaption isOnlyCmdEdit -> defaultOkButtonIconIdToCaption else -> { @@ -629,8 +408,6 @@ object ConfigFromScriptFileSetter { editFragment.toolBarButtonIconMap.put( ToolbarButtonBariantForEdit.EDIT, when(true) { - isSettingEdit -> - defaultEditButtonIconIdToCaption isOnlyCmdEdit -> defaultEditButtonIconIdToCaption else -> { @@ -663,7 +440,9 @@ object ConfigFromScriptFileSetter { if( !onShortcut ) return mapOf() + val context = editFragment.context return ListSettingVariableListMaker.makeConfigMapFromSettingValList( + context, targetSettingConfigValName, settingVariableList, editFragment.fannelInfoMap, @@ -676,67 +455,20 @@ object ConfigFromScriptFileSetter { editFragment: EditFragment, settingVariableList: List?, onShortcut: Boolean, - isSettingEdit: Boolean, ): Map { if(!onShortcut){ return mapOf() } -// val isSettingEdit = !editFragment.enableCmdEdit -// || editFragment.passCmdVariableEdit == -// CommandClickScriptVariable.PASS_CMDVARIABLE_EDIT_ON_VALUE - return when(isSettingEdit) { - true -> mapOf( - SettingButtonConfigMapKey.CLICK.key to - listOf( - JsActionKeyManager.JsActionsKey.JS_FUNC.key, - MacroForToolbarButton.Macro.OK.name - ).joinToString("=") - ) - else -> { - ListSettingVariableListMaker.makeConfigMapFromSettingValList( - CommandClickScriptVariable.PLAY_BUTTON_CONFIG, - settingVariableList, - editFragment.fannelInfoMap, - editFragment.setReplaceVariableMap, - String(), - ) - } - } + val context = editFragment.context + return ListSettingVariableListMaker.makeConfigMapFromSettingValList( + context, + CommandClickScriptVariable.PLAY_BUTTON_CONFIG, + settingVariableList, + editFragment.fannelInfoMap, + editFragment.setReplaceVariableMap, + String(), + ) } - -// private fun makeListFromSettingPath( -// editFragment: EditFragment, -// settingVariableList: List?, -// settingValName: String, -// defaultPath: String, -// ): List { -// val fannelInfoMap = editFragment.fannelInfoMap -//// val currentAppDirPath = FannelInfoTool.getCurrentAppDirPath( -//// fannelInfoMap -//// ) -// val currentFannelName = FannelInfoTool.getCurrentFannelName( -// fannelInfoMap -// ) -// val bottomScriptUrlPath = SettingVariableReader.getStrValue( -// settingVariableList, -// settingValName, -// defaultPath, -// ).let { -// val repPath = when(it.isEmpty()){ -// true -> defaultPath -// else -> it -// } -// SetReplaceVariabler.execReplaceByReplaceVariables( -// repPath, -// editFragment.setReplaceVariableMap, -//// currentAppDirPath, -// currentFannelName, -// ) -// } -// return SettingVariableReader.setListFromPath( -// bottomScriptUrlPath -// ) -// } } private object AlterToolForSetValType { @@ -833,7 +565,6 @@ private object AlterToolForSetValType { return SetReplaceVariabler.execReplaceByReplaceVariables( alterValue, replaceVariableMap, -// String(), String() ).let { CmdClickMap.createMap( diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/EditModeHandler.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/EditModeHandler.kt index 1cd8fa75d..21e8a6d81 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/EditModeHandler.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/EditModeHandler.kt @@ -1,11 +1,8 @@ package com.puutaro.commandclick.fragment_lib.edit_fragment -import com.blankj.utilcode.util.ToastUtils import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.edit_fragment.common.IsCmdEdit import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.EditTextProducerForEdit -import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.ToolbarButtonProducerForEdit import com.puutaro.commandclick.fragment_lib.edit_fragment.common.ToolbarButtonBariantForEdit import kotlinx.coroutines.* @@ -15,114 +12,115 @@ object EditModeHandler{ const val settingSectionEnd = CommandClickScriptVariable.SETTING_SEC_END fun execByHowFullEdit(editFragment: EditFragment){ - when( - IsCmdEdit.judge(editFragment) - ) { - false -> editSettingVariable(editFragment) - else -> editCommandVariable(editFragment) - } + editCommandVariable(editFragment) +// when( +// IsCmdEdit.judge(editFragment) +// ) { +// false -> editSettingVariable(editFragment) +// else -> editCommandVariable(editFragment) +// } } private fun editCommandVariable( editFragment: EditFragment ) { - val recordNumToMapNameValueInCommandHolder = - editFragment.recordNumToMapNameValueInCommandHolder - if( - recordNumToMapNameValueInCommandHolder.isNullOrEmpty() - ) { - backToCmdIndex(editFragment) - return - } +// val recordNumToMapNameValueInCommandHolder = +// editFragment.recordNumToMapNameValueInCommandHolder +// if( +// recordNumToMapNameValueInCommandHolder.isNullOrEmpty() +// ) { +// backToCmdIndex(editFragment) +// return +// } CoroutineScope(Dispatchers.Main).launch { EditTextProducerForEdit.adds( editFragment, ) } - buttonCreate( - editFragment, - ToolbarButtonBariantForEdit.HISTORY, - ) - - buttonCreate( - editFragment, - ToolbarButtonBariantForEdit.OK, - ) +// buttonCreate( +// editFragment, +// ToolbarButtonBariantForEdit.HISTORY, +// ) - buttonCreate( - editFragment, - ToolbarButtonBariantForEdit.EDIT, - ) - buttonCreate( - editFragment, - ToolbarButtonBariantForEdit.SETTING, - ) - buttonCreate( - editFragment, - ToolbarButtonBariantForEdit.EXTRA, - ) +// buttonCreate( +// editFragment, +// ToolbarButtonBariantForEdit.OK, +// ) +// +// buttonCreate( +// editFragment, +// ToolbarButtonBariantForEdit.EDIT, +// ) +// buttonCreate( +// editFragment, +// ToolbarButtonBariantForEdit.SETTING, +// ) +// buttonCreate( +// editFragment, +// ToolbarButtonBariantForEdit.EXTRA, +// ) } - private fun editSettingVariable( - editFragment: EditFragment - ) { - val recordNumToMapNameValueInCommandHolder = - editFragment.recordNumToMapNameValueInCommandHolder - val recordNumToMapNameValueInSettingHolder = - editFragment.recordNumToMapNameValueInSettingHolder - if( - recordNumToMapNameValueInCommandHolder.isNullOrEmpty() - && recordNumToMapNameValueInSettingHolder.isNullOrEmpty() - ) { - backToCmdIndex(editFragment) - return - } - buttonCreate( - editFragment, - ToolbarButtonBariantForEdit.OK, - ) - CoroutineScope(Dispatchers.Main).launch { - EditTextProducerForEdit.adds( - editFragment, - true - ) - } -// if(editFragment.isToolbarBtnCustomInSettingSelects) { -// buttonCreate( -// ToolbarButtonBariantForEdit.EDIT, -// ) -// buttonCreate( -// ToolbarButtonBariantForEdit.SETTING, -// ) -// buttonCreate( -// ToolbarButtonBariantForEdit.EXTRA, +// private fun buttonCreate( +// editFragment: EditFragment, +// toolbarButtonVariantForEdit: ToolbarButtonBariantForEdit, +// ){ +// ToolbarButtonProducerForEdit.make( +// editFragment, +// toolbarButtonVariantForEdit, +// ) +// } + +// private fun editSettingVariable( +// editFragment: EditFragment +// ) { +// val recordNumToMapNameValueInCommandHolder = +// editFragment.recordNumToMapNameValueInCommandHolder +// val recordNumToMapNameValueInSettingHolder = +// editFragment.recordNumToMapNameValueInSettingHolder +// if( +// recordNumToMapNameValueInCommandHolder.isNullOrEmpty() +// && recordNumToMapNameValueInSettingHolder.isNullOrEmpty() +// ) { +// backToCmdIndex(editFragment) +// return +// } +// buttonCreate( +// editFragment, +// ToolbarButtonBariantForEdit.OK, +// ) +// CoroutineScope(Dispatchers.Main).launch { +// EditTextProducerForEdit.adds( +// editFragment, +//// true // ) // } - } +//// if(editFragment.isToolbarBtnCustomInSettingSelects) { +//// buttonCreate( +//// ToolbarButtonBariantForEdit.EDIT, +//// ) +//// buttonCreate( +//// ToolbarButtonBariantForEdit.SETTING, +//// ) +//// buttonCreate( +//// ToolbarButtonBariantForEdit.EXTRA, +//// ) +//// } +// } - private fun buttonCreate( - editFragment: EditFragment, - toolbarButtonVariantForEdit: ToolbarButtonBariantForEdit, - ){ - ToolbarButtonProducerForEdit.make( - editFragment, - toolbarButtonVariantForEdit, - ) - } - - private fun backToCmdIndex(editFragment: EditFragment){ - val context = editFragment.context - editFragment.popBackStackToIndexImmediateJob?.cancel() - editFragment.popBackStackToIndexImmediateJob = CoroutineScope(Dispatchers.IO).launch { - withContext(Dispatchers.IO){ - delay(200) - } - withContext(Dispatchers.Main){ - ToastUtils.showLong("No editable variable therefore, go back") - val listener = context - as? EditFragment.OnInitEditFragmentListener - listener?.onInitEditFragment() - } - } - } +// private fun backToCmdIndex(editFragment: EditFragment){ +// val context = editFragment.context +// editFragment.popBackStackToIndexImmediateJob?.cancel() +// editFragment.popBackStackToIndexImmediateJob = CoroutineScope(Dispatchers.IO).launch { +// withContext(Dispatchers.IO){ +// delay(200) +// } +// withContext(Dispatchers.Main){ +// ToastUtils.showLong("No editable variable therefore, go back") +// val listener = context +// as? EditFragment.OnInitEditFragmentListener +// listener?.onInitEditFragment() +// } +// } +// } } diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/SetConfigInfo.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/SetConfigInfo.kt deleted file mode 100755 index 4c56edca4..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/SetConfigInfo.kt +++ /dev/null @@ -1,81 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment - -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.util.CommandClickVariables -import com.puutaro.commandclick.util.str.ScriptPreWordReplacer -import com.puutaro.commandclick.util.SettingVariableReader - -object SetConfigInfo { -// fun set( -// editFragment: EditFragment -// ){ -// val cmdclickDefaultAppDirPath = UsePath.cmdclickDefaultAppDirPath -// val cmdclickConfigFileName = UsePath.cmdclickConfigFileName -// val configConList = CommandClickVariables.makeMainFannelConList( -//// cmdclickDefaultAppDirPath, -// UsePath.cmdclickConfigFileName -// ) -// val settingVariableList = CommandClickVariables.extractValListFromHolder( -// configConList, -// editFragment.settingSectionStart, -// editFragment.settingSectionEnd -// ) -// -// editFragment.onTermVisibleWhenKeyboard = SettingVariableReader.getCbValue( -// settingVariableList, -// CommandClickScriptVariable.ON_TERM_VISIBLE_WHEN_KEYBOARD, -// CommandClickScriptVariable.ON_TERM_VISIBLE_WHEN_KEYBOARD_DEFAULT_VALUE, -// SettingVariableSelects.OnTermVisibleWhenKeyboardSelects.INHERIT.name, -// CommandClickScriptVariable.ON_TERM_VISIBLE_WHEN_KEYBOARD_DEFAULT_VALUE, -// listOf( -// SettingVariableSelects.OnTermVisibleWhenKeyboardSelects.OFF.name, -// SettingVariableSelects.OnTermVisibleWhenKeyboardSelects.ON.name -// ), -// ) -// -// editFragment.historySwitch = SettingVariableReader.getCbValue( -// settingVariableList, -// CommandClickScriptVariable.CMDCLICK_HISTORY_SWITCH, -// CommandClickScriptVariable.HISTORY_SWITCH_DEFAULT_VALUE, -// SettingVariableSelects.HistorySwitchSelects.INHERIT.name, -// CommandClickScriptVariable.HISTORY_SWITCH_DEFAULT_VALUE, -// listOf( -// SettingVariableSelects.HistorySwitchSelects.OFF.name, -// SettingVariableSelects.HistorySwitchSelects.ON.name -// ), -// ) -// -// editFragment.urlHistoryOrButtonExec = SettingVariableReader.getCbValue( -// settingVariableList, -// CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC, -// CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE, -// SettingVariableSelects.UrlHistoryOrButtonExecSelects.INHERIT.name, -// CommandClickScriptVariable.CMDCLICK_URL_HISTOTY_OR_BUTTON_EXEC_DEFAULT_VALUE, -// listOf( -// SettingVariableSelects.UrlHistoryOrButtonExecSelects.URL_HISTORY.name, -// SettingVariableSelects.UrlHistoryOrButtonExecSelects.BUTTON_EXEC.name, -// ), -// ) -// -// val homeFannelHistoryNameList = SettingVariableReader.setListFromPath( -// ScriptPreWordReplacer.replace( -// UsePath.homeFannelsFilePath, -//// cmdclickDefaultAppDirPath, -// cmdclickConfigFileName, -// ) -// ) -// if( -// homeFannelHistoryNameList.isNotEmpty() -// ) editFragment.homeFannelHistoryNameList = homeFannelHistoryNameList -// -// editFragment.terminalColor = SettingVariableReader.getStrValue( -// settingVariableList, -// CommandClickScriptVariable.TERMINAL_COLOR, -// CommandClickScriptVariable.TERMINAL_COLOR_DEFAULT_VALUE -// ) -// -// } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/SetVariableTypesSetter.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/SetVariableTypesSetter.kt deleted file mode 100755 index 7ffc7afb4..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/SetVariableTypesSetter.kt +++ /dev/null @@ -1,52 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment - -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.edit_fragment.common.IsCmdEdit -import com.puutaro.commandclick.proccess.edit.lib.ListSettingVariableListMaker -import com.puutaro.commandclick.proccess.edit.lib.SetReplaceVariabler -import com.puutaro.commandclick.util.state.FannelInfoTool - -object SetVariableTypesSetterForEdit { - - fun set( - editFragment: EditFragment, - fannelInfoMap: Map, - settingVariableList: List?, - ): List { -// val currentAppDirPath = FannelInfoTool.getCurrentAppDirPath( -// fannelInfoMap -// ) - val currentFannelName = FannelInfoTool.getCurrentFannelName( - fannelInfoMap - ) - - val setVariableTypeListSrc = ListSettingVariableListMaker.makeFromSettingVariableList( - CommandClickScriptVariable.SET_VARIABLE_TYPE, - fannelInfoMap, - editFragment.setReplaceVariableMap, - settingVariableList, - ) - val setVariableForSettingHolder = - CommandClickScriptVariable.setVariableForSettingHolder - val isCmdEdit = IsCmdEdit.judge(editFragment) - return when(isCmdEdit) { - false -> setVariableForSettingHolder - else -> setVariableTypeListSrc.let { - if ( - it.isEmpty() - ) return@let setVariableForSettingHolder - setVariableForSettingHolder + it - } - }.joinToString("\n").let { - SetReplaceVariabler.execReplaceByReplaceVariables( - it, - editFragment.setReplaceVariableMap, -// currentAppDirPath, - currentFannelName - ) - }.split("\n").filter { - it.trim().isNotEmpty() - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/broadcast/receiver/BroadcastReceiveHandlerForEdit.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/broadcast/receiver/BroadcastReceiveHandlerForEdit.kt index 3125d3ef9..bd971b51c 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/broadcast/receiver/BroadcastReceiveHandlerForEdit.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/broadcast/receiver/BroadcastReceiveHandlerForEdit.kt @@ -3,10 +3,10 @@ package com.puutaro.commandclick.fragment_lib.edit_fragment.broadcast.receiver import android.content.Intent import androidx.core.view.isVisible import com.puutaro.commandclick.common.variable.broadcast.scheme.BroadCastIntentSchemeForEdit -import com.puutaro.commandclick.component.adapter.ListIndexAdapter -import com.puutaro.commandclick.component.adapter.lib.list_index_adapter.ListViewToolForListIndexAdapter +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.component.adapter.lib.edit_list_adapter.ListViewToolForEditListAdapter import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.ListSettingsForListIndex +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList object BroadcastReceiveHandlerForEdit { fun handle( @@ -17,18 +17,20 @@ object BroadcastReceiveHandlerForEdit { !editFragment.isVisible ) return val action = intent.action + val editConstraintListAdapter = editFragment.binding.editListRecyclerView.adapter as EditConstraintListAdapter when(action){ BroadCastIntentSchemeForEdit.UPDATE_INDEX_LIST.action -> { val editListSearchEditText = editFragment.binding.editListSearchEditText if(editListSearchEditText.isVisible) { editListSearchEditText.setText(String()) } - ListViewToolForListIndexAdapter.listIndexListUpdateFileList( - editFragment, - ListSettingsForListIndex.ListIndexListMaker.makeFileListHandler( - editFragment, - ListIndexAdapter.indexListMap, - ListIndexAdapter.listIndexTypeKey + ListViewToolForEditListAdapter.editListUpdateFileList( + editConstraintListAdapter, + ListSettingsForEditList.EditListMaker.makeLineMapListHandler( + editFragment.fannelInfoMap, + editFragment.setReplaceVariableMap, + editConstraintListAdapter.indexListMap, + editFragment.busyboxExecutor, ) ) } diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/EditComponent.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/EditComponent.kt new file mode 100644 index 000000000..92ffd57ae --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/EditComponent.kt @@ -0,0 +1,1622 @@ +package com.puutaro.commandclick.fragment_lib.edit_fragment.common + +import android.content.Context +import android.graphics.Typeface +import android.view.Gravity +import android.view.View +import android.widget.FrameLayout +import android.widget.ImageView +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.LinearLayoutCompat +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.fragment.app.Fragment +import com.puutaro.commandclick.R +import com.puutaro.commandclick.common.variable.CheckTool +import com.puutaro.commandclick.common.variable.res.CmdClickIcons +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.custom_view.OutlineTextView +import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.text.libs.FilterAndMapModule +import com.puutaro.commandclick.proccess.edit.lib.SetReplaceVariabler +import com.puutaro.commandclick.proccess.edit.setting_action.SettingActionAsyncCoroutine +import com.puutaro.commandclick.proccess.edit.setting_action.SettingActionManager +import com.puutaro.commandclick.proccess.edit.setting_action.SettingActionManager2 +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList.LogErrLabel +import com.puutaro.commandclick.proccess.js_macro_libs.common_libs.JsActionKeyManager +import com.puutaro.commandclick.proccess.ubuntu.BusyboxExecutor +import com.puutaro.commandclick.util.LogSystems +import com.puutaro.commandclick.util.file.ReadText +import com.puutaro.commandclick.util.image_tools.ColorTool +import com.puutaro.commandclick.util.image_tools.ScreenSizeCalculator +import com.puutaro.commandclick.util.map.CmdClickMap +import com.puutaro.commandclick.util.state.FannelInfoTool +import com.puutaro.commandclick.util.str.PairListTool +import com.puutaro.commandclick.util.str.QuoteTool +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext +import org.jsoup.Jsoup + +object EditComponent { + + enum class Font( + val key: String, + val typeface: Typeface, + ){ + DEFAULT("monospace", Typeface.DEFAULT), + MONOSPACE("monospace", Typeface.MONOSPACE), + SANS_SERIF("sansSerif", Typeface.SANS_SERIF), + SERIF("serif", Typeface.SERIF), + } + + enum class IconType{ + IMAGE, + SVG, + } + + object Template { + + const val sectionSeparator = ',' + const val typeSeparator = '|' + const val keySeparator = '?' + const val valueSeparator = '&' + + const val switchOn = "ON" + const val switchOff = "OFF" + + object ReplaceHolder { + fun replaceHolder( + con: String?, + srcTitle: String, + srcCon: String, + srcImage: String, + srcPosition: Int, + ): String? { + if(con == null) return null + return con.replace( + SrcReplaceHolders.SRC_TITLE.key, + srcTitle + ).replace( + SrcReplaceHolders.SRC_CON.key, + srcCon + ).replace( + SrcReplaceHolders.SRC_IMAGE.key, + srcImage + ).replace( + SrcReplaceHolders.EDIT_LIST_POSITION.key, + srcPosition.toString() + ) + + } + + enum class SrcReplaceHolders(val key: String){ + SHELL_SRC("\${SHELL_SRC}"), + SRC_TITLE("\${SRC_TITLE}"), + SRC_CON("\${SRC_CON}"), + SRC_IMAGE("\${SRC_IMAGE}"), + EDIT_LIST_POSITION("\${EDIT_LIST_POSITION}"), + SRC_STR("\${SRC_STR}"), + SETTING_VALUE("\${SETTING_VALUE}"), + } + } + + enum class LayoutKey(val key: String){ + FRAME("frame"), + CONTENTS("contents") + } + + fun makeKeyMap( + mapCon: String? + ): Map? { + if( + mapCon.isNullOrEmpty() + ) return null + return CmdClickMap.createMap( + mapCon, + keySeparator, + ).toMap().filter { + it.key.isNotEmpty() + } + } + + enum class EditComponentKey(val key: String){ + TAG("tag"), + TEXT("text"), + TEXT_PROPERTY("textProperty"), + IMAGE("image"), + IMAGE_PROPERTY("imageProperty"), + ON_CLICK("onClick"), + ON_SAVE("onSave"), + ON_CONSEC("onConsec"), + ALPHA("alpha"), + DISABLE_KEYBOARD_HIDDEN("disableKeyboardHidden"), + HEIGHT("height"), + WIDTH("width"), + PADDING_TOP("paddingTop"), + PADDING_BOTTOM("paddingBottom"), + PADDING_START("paddingStart"), + PADDING_END("paddingEnd"), + MARGIN_TOP("marginTop"), + MARGIN_BOTTOM("marginBottom"), + MARGIN_START("marginStart"), + MARGIN_END("marginEnd"), + GRAVITI("gravity"), + LAYOUT_GRAVITY("layoutGravity"), + BK_COLOR("bkColor"), + VISIBLE("visible"), + ENABLE("enable"), + ELEVATION("elevation"), + CLICK_VIEWS("clickViews"), + + TOP_TO_TOP("topToTop"), + TOP_TO_BOTTOM("topToBottom"), + START_TO_START("startToStart"), + START_TO_END("startToEnd"), + END_TO_END("endToEnd"), + END_TO_START("endToStart"), + BOTTOM_TO_BOTTOM("bottomToBottom"), + BOTTOM_TO_TOP("bottomToTop"), + HORIZONTAL_BIAS("horizontalBias"), + HORIZONTAL_WEIGHT("horizontalWeight"), + VERTICAL_WEIGHT("verticalWeight"), + PERCENTAGE_WIDTH("percentageWidth"), + PERCENTAGE_HEIGHT("percentageHeight"), + DIMENSION_RATIO("dimensionRatio"), + HORIZONTAL_CHAIN_STYLE("horizontalChainStyle"), + VERTICAL_CHAIN_STYLE("verticalChainStyle"), + } + + object ClickManager { + private val jsActionKeyList = JsActionKeyManager.JsActionsKey.entries.map{ + it.key + } + fun isClickEnable( + frameKeyPairsList: List> + ): Boolean { + val isJsAcForFrame = + jsActionKeyList.any { + !PairListTool.getValue( + frameKeyPairsList, + it, + ).isNullOrEmpty() + } + val onClickForFrame = + PairListTool.getValue( + frameKeyPairsList, + EditComponentKey.ON_CLICK.key, + ) != switchOff + return isJsAcForFrame + && onClickForFrame + } + } + + object ClickViewManager { + enum class ClickViews( + val str: String + ){ + TEXT("text"), + IMAGE("image"), + } + + fun makeClickViewList( + children: Sequence, + clickViewsListStr: String?, + ): Sequence { + if( + clickViewsListStr.isNullOrEmpty() + ){ + return children + } + val clickViewsList = + clickViewsListStr.split(valueSeparator).filter { + it.isNotEmpty() + } + val clickTextViewStr = ClickViews.TEXT.str + val clickImageViewStr = ClickViews.IMAGE.str + val isClickViewsListEmpty = clickViewsList.isEmpty() + return children.filter { + childView -> + when(true) { + (childView is OutlineTextView) -> { + isClickViewsListEmpty + || clickViewsList.contains(clickTextViewStr) + } + (childView is AppCompatImageView) -> { + isClickViewsListEmpty + || clickViewsList.contains(clickImageViewStr) + } + else -> false + } + } + } + } + + object ConstraintManager { + + enum class ConstraintParameter( + val str: String, + val int: Int, + ){ + UNSET("UNSET", ConstraintLayout.LayoutParams.UNSET), + PARENT_ID("PARENT", ConstraintLayout.LayoutParams.PARENT_ID), + } + + fun makeFloat( + biasFloatStr: String? + ): Float? { + if( + biasFloatStr.isNullOrEmpty() + ) return null + return try { + biasFloatStr.toFloat() + } catch (e: Exception){ + null + } + } + + fun getChainStyleInt( + chainStyleStr: String, + ): Int? { + return ChainStyle.entries.firstOrNull { + it.str == chainStyleStr + }?.chainStyle + } + + enum class ChainStyle( + val str: String, + val chainStyle: Int, + ){ + PACKED("packed", ConstraintLayout.LayoutParams.CHAIN_PACKED), + SPREAD("spread", ConstraintLayout.LayoutParams.CHAIN_SPREAD), + } + } + + object LayoutIdMap { + enum class LayoutName { + TITLE, + LIST, + SEARCH, + FOOTER, + TOOLBAR, + } + fun makeMap( + titleId: Int?, + listId: Int?, + searchId: Int?, + footerId: Int?, + toolbarId: Int?, + ): Map { + val unsetInt = + ConstraintLayout.LayoutParams.UNSET + return mapOf( + LayoutName.TITLE.name to (titleId ?: unsetInt), + LayoutName.LIST.name to (listId ?: unsetInt), + LayoutName.SEARCH.name to (searchId ?: unsetInt), + LayoutName.FOOTER.name to (footerId ?: unsetInt), + LayoutName.TOOLBAR.name to (toolbarId ?: unsetInt), + ) + + } + } + + object GravityManager { + enum class Graviti( + val key: String, + val gravity: Int, + ){ + CENTER("center", Gravity.CENTER), + START("start", Gravity.START), + END("end", Gravity.END), + BOTTOM("bottom", Gravity.BOTTOM), + CENTER_VERTICAL("centerVertical", Gravity.CENTER_VERTICAL), + CENTER_HORIZONTAL("centerHorizontal", Gravity.CENTER_HORIZONTAL), + } + } + + + object ImageManager { + enum class ImageKey(val key: String) { + PATHS("paths"), + DELAY("delay"), + FADE_IN_MILLI("fadeInMilli"), + MATRIX_STORM_CONFIG_MAP_CON("matrixStormConfigMapCon"), + AUTO_RND_ICONS_CONFIG_MAP_CON("autoRndIconsConfigMapCon"), + AUTO_RND_STRINGS_CONFIG_MAP_CON("autoRndStringsConfigMapCon"), + } + + object MatrixStormManager { + + private const val keySeparator = '|' + enum class MatrixStormKey( + val key: String + ){ + WIDTH("width"), + HEIGHT("height"), + X_MULTI("xMulti"), + Y_MULTI("yMulti"), + SHAPE("shape"), + COLOR("color"), + ICON_TYPE("iconType"), + LAYOUT("layout") + + } + + fun getIconType( + matrixStormConfigMap: Map, + ): IconType { + return matrixStormConfigMap.get( + MatrixStormKey.ICON_TYPE.key + )?.let { + iconTypeStr -> + IconType.entries.firstOrNull { + it.name == iconTypeStr + } + } ?: IconType.SVG + } + + + fun getColor( + context: Context?, + matrixStormConfigMap: Map, + where: String, + ): String? { + val colorKey = MatrixStormKey.COLOR.key + return matrixStormConfigMap.get( + colorKey + )?.let { + colorStr -> + ColorTool.parseColorStr( + context, + colorStr, + colorKey, + where, + ) + } + } + + fun getShape( + matrixStormConfigMap: Map + ): String { + return matrixStormConfigMap.get( + MatrixStormKey.SHAPE.key + ) ?: CmdClickIcons.RECT.str + } + + fun getWidth( + matrixStormConfigMap: Map + ): Int? { + return matrixStormConfigMap.get( + MatrixStormKey.WIDTH.key + )?.let { + toInt( + it, + ) + } + } + + + fun getHeight( + matrixStormConfigMap: Map + ): Int? { + return matrixStormConfigMap.get( + MatrixStormKey.HEIGHT.key + )?.let { + toInt( + it, + ) + } + } + + fun getXMulti( + matrixStormConfigMap: Map + ): Int? { + return matrixStormConfigMap.get( + MatrixStormKey.X_MULTI.key + )?.let { + toInt( + it, + ) + } + } + + fun getYMulti( + matrixStormConfigMap: Map + ): Int? { + return matrixStormConfigMap.get( + MatrixStormKey.Y_MULTI.key + )?.let { + toInt( + it, + ) + } + } + + fun makeConfigMap( + imageMap: Map?, + ): Map { + return imageMap?.get( + ImageKey.MATRIX_STORM_CONFIG_MAP_CON.key + ).let { + CmdClickMap.createMap( + it, + keySeparator + ).toMap() + } + } + } + + object AutoRndIconsManager { + + private const val keySeparator = '|' + enum class AutoRndIconsKey( + val key: String + ){ + WIDTH("width"), + HEIGHT("height"), + PIECE_WIDTH("pieceWidth"), + PIECE_HEIGHT("pieceHeight"), + TIMES("times"), + SHAPE("shape"), + COLOR("color"), + ICON_TYPE("iconType"), + BK_COLOR("bkColor"), + LAYOUT("layout") + } + + enum class Layout { + LEFT, + RND, + } + +// enum class IconType { +// IMAGE, +// SVG +// } + + fun getLayout ( + autoRndIconsConfigMap: Map, + ): Layout { + return autoRndIconsConfigMap.get( + AutoRndIconsKey.LAYOUT.key + )?.let { + layoutStr -> + Layout.entries.firstOrNull { + it.name == layoutStr + } + } ?: Layout.LEFT + } + + fun getBkColor( + context: Context?, + autoRndIconsConfigMap: Map, + where: String, + ): String? { + val bkColorKey = AutoRndIconsKey.BK_COLOR.key + return autoRndIconsConfigMap.get( + bkColorKey + )?.let { + bkColorStr -> + ColorTool.parseColorStr( + context, + bkColorStr, + bkColorKey, + where, + ) + } + } + + fun getColor( + context: Context?, + autoRndIconsConfigMap: Map, + where: String, + ): String? { + val colorKey = AutoRndIconsKey.COLOR.key + return autoRndIconsConfigMap.get( + colorKey + )?.let { + colorStr -> + ColorTool.parseColorStr( + context, + colorStr, + colorKey, + where, + ) + } + } + + fun getIconType( + autoRndIconsConfigMap: Map, + ): IconType { + return autoRndIconsConfigMap.get( + AutoRndIconsKey.ICON_TYPE.key + )?.let { + iconTypeStr -> + IconType.entries.firstOrNull { + it.name == iconTypeStr + } + } ?: IconType.IMAGE + } + + fun getWidth( + autoRndIconsConfigMap: Map + ): Int? { + return autoRndIconsConfigMap.get( + AutoRndIconsKey.WIDTH.key + )?.let { + toInt( + it, + ) + } + } + + + fun getHeight( + autoRndIconsConfigMap: Map + ): Int? { + return autoRndIconsConfigMap.get( + AutoRndIconsKey.HEIGHT.key + )?.let { + toInt( + it, + ) + } + } + + fun getPieceWidth( + autoRndIconsConfigMap: Map + ): Int? { + return autoRndIconsConfigMap.get( + AutoRndIconsKey.PIECE_WIDTH.key + )?.let { + toInt( + it, + ) + } + } + + fun getPieceHeight( + autoRndIconsConfigMap: Map + ): Int? { + return autoRndIconsConfigMap.get( + AutoRndIconsKey.PIECE_HEIGHT.key + )?.let { + toInt( + it, + ) + } + } + + fun getTimes( + autoRndIconsConfigMap: Map + ): Int? { + return autoRndIconsConfigMap.get( + AutoRndIconsKey.TIMES.key + )?.let { + toInt( + it, + ) + } + } + + fun getShape( + autoRndIconsConfigMap: Map + ): String { + return autoRndIconsConfigMap.get( + AutoRndIconsKey.SHAPE.key + ) ?: CmdClickIcons.RECT.str + } + + fun makeConfigMap( + imageMap: Map?, + ): Map { + return imageMap?.get( + ImageKey.AUTO_RND_ICONS_CONFIG_MAP_CON.key + ).let { + CmdClickMap.createMap( + it, + keySeparator + ).toMap() + } + } + } + + object AutoRndStringsManager { + + private const val keySeparator = '|' + enum class AutoRndStringsKey( + val key: String + ){ + WIDTH("width"), + HEIGHT("height"), + PIECE_WIDTH("pieceWidth"), + PIECE_HEIGHT("pieceHeight"), + TIMES("times"), + STRING("string"), + FONT_SIZE("fontSize"), + FONT_TYPE("fontType"), + FONT_STYLE("fontStyle"), + COLOR("color"), + BK_COLOR("bkColor"), + STROKE_COLOR("strokeColor"), + STROKE_WIDTH("strokeWidth"), + LAYOUT("layout"), + LETTER_SPACING("letterSpacing") + + } + + enum class Layout { + LEFT, + RND, + } + + fun getLetterSpacing( + autoRndStringsConfigMap: Map, + ): Float? { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.LETTER_SPACING.key + )?.let { + toFloat( + it, + ) + } + } + fun getStrokeWidth( + autoRndStringsConfigMap: Map, + ): Float? { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.STROKE_WIDTH.key + )?.let { + toFloat( + it, + ) + } + } + + fun getStrokeColor( + context: Context?, + autoRndStringsConfigMap: Map, + where: String, + ): String? { + val bkColorKey = AutoRndStringsKey.STROKE_COLOR.key + return autoRndStringsConfigMap.get( + bkColorKey + )?.let { + bkColorStr -> + ColorTool.parseColorStr( + context, + bkColorStr, + bkColorKey, + where, + ) + } + } + fun getBkColor( + context: Context?, + autoRndStringsConfigMap: Map, + where: String, + ): String? { + val bkColorKey = AutoRndStringsKey.BK_COLOR.key + return autoRndStringsConfigMap.get( + bkColorKey + )?.let { + bkColorStr -> + ColorTool.parseColorStr( + context, + bkColorStr, + bkColorKey, + where, + ) + } + } + + fun getColor( + context: Context?, + autoRndStringsConfigMap: Map, + where: String, + ): String? { + val colorKey = AutoRndStringsKey.COLOR.key + return autoRndStringsConfigMap.get( + colorKey + )?.let { + colorStr -> + ColorTool.parseColorStr( + context, + colorStr, + colorKey, + where, + ) + } + } + + fun getLayout ( + autoRndStringsConfigMap: Map, + ): Layout { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.LAYOUT.key + )?.let { + layoutStr -> + Layout.entries.firstOrNull { + it.name == layoutStr + } + } ?: Layout.LEFT + } + + fun getWidth( + autoRndStringsConfigMap: Map + ): Int? { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.WIDTH.key + )?.let { + toInt( + it, + ) + } + } + + + fun getHeight( + autoRndStringsConfigMap: Map + ): Int? { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.HEIGHT.key + )?.let { + toInt( + it, + ) + } + } + + fun getPieceWidth( + autoRndStringsConfigMap: Map + ): Float? { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.PIECE_WIDTH.key + )?.let { + toFloat( + it, + ) + } + } + + fun getPieceHeight( + autoRndStringsConfigMap: Map + ): Float? { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.PIECE_HEIGHT.key + )?.let { + toFloat( + it, + ) + } + } + + fun getTimes( + autoRndStringsConfigMap: Map + ): Int? { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.TIMES.key + )?.let { + toInt( + it, + ) + } + } + + fun getString( + autoRndStringsConfigMap: Map + ): String? { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.STRING.key + ) + } + + fun getFontSize( + autoRndStringsConfigMap: Map + ): Float? { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.FONT_SIZE.key + )?.let { + toFloat(it) + } + } + + + + fun getFontType( + autoRndStringsConfigMap: Map + ): Typeface { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.FONT_TYPE.key, + )?.let { + fontTypeStr -> + EditComponent.Font.entries.firstOrNull { + it.key == fontTypeStr + } + }?.typeface ?: Font.SANS_SERIF.typeface + } + + fun getFontStyle( + autoRndStringsConfigMap: Map + ): Int { + return autoRndStringsConfigMap.get( + AutoRndStringsKey.FONT_STYLE.key, + )?.let { + fontStyleStr -> + EditComponent.Template.TextPropertyManager.TextStyle.entries.firstOrNull { + it.key == fontStyleStr + } + }?.style ?: EditComponent.Template.TextPropertyManager.TextStyle.NORMAL.style + } + + fun makeConfigMap( + imageMap: Map?, + ): Map { + return imageMap?.get( + ImageKey.AUTO_RND_STRINGS_CONFIG_MAP_CON.key + ).let { + CmdClickMap.createMap( + it, + keySeparator + ).toMap() + } + } + } + + private const val iconMacroSeprator = ":" + + fun makeIconAndTypePair(macroStr: String): Pair{ + val macroStrList = macroStr.split(iconMacroSeprator) + return Pair( + macroStrList.firstOrNull() ?: String(), + macroStrList.getOrNull(1) ?: String(), + ) + } + } + + object ImagePropertyManager { + + enum class PropertyKey(val key: String) { + TAG("tag"), + ALPHA("alpha"), + SCALE("scale"), + COLOR("color"), + BK_COLOR("bkColor"), + BK_TINT_COLOR("bkTintColor"), + HEIGHT("height"), + WIDTH("width"), + LAYOUT_GRAVITY("layoutGravity"), + GRAVITI("gravity"), + PADDING_TOP("paddingTop"), + PADDING_BOTTOM("paddingBottom"), + PADDING_START("paddingStart"), + PADDING_END("paddingEnd"), + MARGIN_TOP("marginTop"), + MARGIN_BOTTOM("marginBottom"), + MARGIN_START("marginStart"), + MARGIN_END("marginEnd"), + VISIBLE("visible"), + BLUR_MAP_CON("blurMapCon"), + ROTATE("rotate"), + SCALE_X("scaleX"), + SCALE_Y("scaleY"), + + } + + object BlurManager { + + private val keySeparator = '|' + + enum class BlurKey( + val key: String, + ) { + RADIUS("radius"), + SAMPLING("sampling"), + } + fun getBlueRadiusToSampling( + imagePropertyMap: Map? + ): Pair? { + if( + imagePropertyMap.isNullOrEmpty() + ) return null + val blurMap = imagePropertyMap.get( + PropertyKey.BLUR_MAP_CON.key + ).let { + CmdClickMap.createMap( + it, + keySeparator, + ).toMap() + } + val radius = + blurMap.get( + BlurKey.RADIUS.key + )?.let { + toInt(it) + } ?: return null + val sampling = blurMap.get( + BlurKey.SAMPLING.key + )?.let { + toInt(it) + } ?: return null + return Pair( + radius, + sampling, + ) + + } + } + + enum class ImageScale( + val str: String, + val scale: ImageView.ScaleType + ){ + FIT_CENTER("fitCenter", ImageView.ScaleType.FIT_CENTER), + FIT_XY("fitXy", ImageView.ScaleType.FIT_XY), + CENTER_CROP("centerCrop", ImageView.ScaleType.CENTER_CROP), + } + } + + object TextPropertyManager { + enum class Property(val key: String){ + TAG("tag"), + MAX_LINES("maxLines"), + SIZE("size"), + STYLE("style"), + FONT("font"), + COLOR("color"), + STROKE_COLOR("strokeColor"), + STROKE_WIDTH("strokeWidth"), + ALPHA("alpha"), + HEIGHT("height"), + WIDTH("width"), + LAYOUT_GRAVITY("layoutGravity"), + GRAVITI("gravity"), + PADDING_TOP("paddingTop"), + PADDING_BOTTOM("paddingBottom"), + PADDING_START("paddingStart"), + PADDING_END("paddingEnd"), + MARGIN_TOP("marginTop"), + MARGIN_BOTTOM("marginBottom"), + MARGIN_START("marginStart"), + MARGIN_END("marginEnd"), + BK_COLOR("bkColor"), + VISIBLE("visible"), + LETTER_SPACING("letterSpacing"), + SHADOW_RADIUS("shadowRadius"), + SHADOW_COLOR("shadowColor"), + SHADOW_X("shadowX"), + SHADOW_Y("shadowY"), +// DISABLE_TEXT_SELECT("disableTextSelect"), + } + + enum class TextStyle( + val key: String, + val style: Int, + ){ + NORMAL("normal", Typeface.NORMAL), + BOLD("bold", Typeface.BOLD), + BOLD_ITALIC("boldItalic", Typeface.BOLD_ITALIC), + ITALIC("bold", Typeface.ITALIC), + } + } + + class MarginData( + marginTopStr: String?, + marginBottomStr: String?, + marginStartStr: String?, + marginEndStr: String?, + density: Float, + ) { + val marginTop = convertStrToInt(marginTopStr, density) + val marginBottom = convertStrToInt(marginBottomStr, density) + val marginStart = convertStrToInt(marginStartStr, density) + val marginEnd = convertStrToInt(marginEndStr, density) + } + class PaddingData( + paddingTopStr: String?, + paddingBottomStr: String?, + paddingStartStr: String?, + paddingEndStr: String?, + density: Float, + ) { + val paddingTop = convertStrToInt(paddingTopStr, density) + val paddingBottom = convertStrToInt(paddingBottomStr, density) + val paddingStart = convertStrToInt(paddingStartStr, density) + val paddingEnd = convertStrToInt(paddingEndStr, density) + + + } + + private fun convertStrToInt( + numStr: String?, + density: Float, + ): Int? { + return numStr?.let { + try { + ScreenSizeCalculator.toDpByDensity( + it.toInt(), + density, + ) + } catch(e: Exception){ + null + } + } + } + object TagManager { + + private const val curFrameTagAndCurVerticalTagSeparator = "___" + + enum class TagGenre(val str: String){ + FRAME_TAG("frameTag"), + VERTICAL_TAG("verticalTag"), + HORIZON_TAG("horizonTag"), + CONTENTS_TAG("contentsTag"), + } + + fun makeVerticalTag( + curFrameTag: String, + partVerticalTag: String, + ): String { + return listOf( + curFrameTag, + partVerticalTag + ).joinToString(curFrameTagAndCurVerticalTagSeparator) + } + + fun makeHorizonTag( + curVerticalTag: String, + partHorizonTag: String, + ): String { + return listOf( + curVerticalTag, + partHorizonTag + ).joinToString(curFrameTagAndCurVerticalTagSeparator) + } + } + + object HeightManager { + enum class HeightMacro( + val macroInt: Int, + ){ + WRAP(LinearLayoutCompat.LayoutParams.WRAP_CONTENT), + MATCH(LinearLayoutCompat.LayoutParams.MATCH_PARENT), + } + } + + object WidthManager { + enum class WidthMacro( + val macroInt: Int, + ){ + WRAP(LinearLayoutCompat.LayoutParams.WRAP_CONTENT), + MATCH(LinearLayoutCompat.LayoutParams.MATCH_PARENT), + } + } + + object LinearLayoutUpdater { + fun update( + context: Context?, + linearLayoutParam: LinearLayoutCompat.LayoutParams, + linearFrameKeyPairsList: List>, + defaultWidth: Int, + defaultHeight: Int, + density: Float, + ): LinearLayoutCompat.LayoutParams { + val width = PairListTool.getValue( + linearFrameKeyPairsList, + EditComponentKey.WIDTH.key, + )?.let { + widthStr -> + EditComponent.Template.WidthManager.WidthMacro.entries.firstOrNull { + it.name == widthStr + }?.macroInt ?: try { + ScreenSizeCalculator.toDpByDensity( + widthStr.toInt(), + density + ) + } catch (e: Exception){ + null + } + }?: defaultWidth + val height = PairListTool.getValue( + linearFrameKeyPairsList, + EditComponentKey.HEIGHT.key, + )?.let { + heightStr -> + EditComponent.Template.HeightManager.HeightMacro.entries.firstOrNull { + it.name == heightStr + }?.macroInt ?: try { + ScreenSizeCalculator.toDpByDensity( + heightStr.toInt(), + density, + ) + } catch (e: Exception){ + null + } + }?: defaultHeight + linearLayoutParam.width = width + linearLayoutParam.height = height +// FileSystems.updateFile( +// File(UsePath.cmdclickDefaultAppDirPath, "layout_update.txt").absolutePath, +// listOf( +// "linearFrameKeyPairsList: ${linearFrameKeyPairsList}", +// "width: ${width}", +// "height: ${height}", +// "defaultHeight: ${defaultHeight}", +// "defaultWidth: ${defaultWidth}", +// ).joinToString("\n") +// ) + return linearLayoutParam + } + + fun convertWidth( + widthSrcStr: String?, + defaultWidth: Int, + density: Float, + ): Int { + return widthSrcStr?.let { + widthStr -> + EditComponent.Template.WidthManager.WidthMacro.entries.firstOrNull { + it.name == widthStr + }?.macroInt ?: try { + ScreenSizeCalculator.toDpByDensity( + widthStr.toInt(), + density + ) + } catch (e: Exception){ + null + } + }?: defaultWidth + } + + fun convertHeight( + heightSrcStr: String?, + defaultHeight: Int, + density: Float, + ): Int { + return heightSrcStr?.let { + heightStr -> + EditComponent.Template.HeightManager.HeightMacro.entries.firstOrNull { + it.name == heightStr + }?.macroInt ?: try { + ScreenSizeCalculator.toDpByDensity( + heightStr.toInt(), + density, + ) + } catch (e: Exception){ + null + } + }?: defaultHeight + } + } + + + object TextManager { + enum class TextKey(val key: String) { + REMOVE_REGEX("removeRegex"), + REPLACE_STR("replaceStr"), + FILTER_SHELL_PATH("filterShellPath"), + DISPLAY_TEXT("displayText"), + SRC_STR("srcStr"), + SETTING_VALUE("settingValue"), + LENGTH("length"), + ON_UPDATE("onUpdate"), + } + + fun createTextMap( + textMapCon: String?, + settingValue: String?, + ): Map { + val textMapSrc = CmdClickMap.createMap( + textMapCon, + keySeparator + ).toMap() + return when(settingValue.isNullOrEmpty()){ + true -> textMapSrc + else -> textMapSrc + mapOf( + TextKey.SETTING_VALUE.key to settingValue + ) + } + } + + fun makeText( + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + busyboxExecutor: BusyboxExecutor?, + textMap: Map?, + settingValueSrc: String?, + ): String? { +// FileSystems.updateFile( +// File(UsePath.cmdclickDefaultAppDirPath, "label.txt").absolutePath, +// listOf( +// "labelMap: ${labelMap}", +// "---settingValue: ${settingValue}\n", +// ).joinToString("\n") +// +// ) + if( + textMap.isNullOrEmpty() + ) return String() + val settingValue = settingValueSrc?.let { + QuoteTool.trimBothEdgeQuote(it) + }?: String() + val displayTextSrc = makeDisplayTextByRemoveRegex( + textMap, + settingValue, + )?: return null + val filterShellCon = textMap.get( + TextKey.FILTER_SHELL_PATH.key + )?.let { + ReadText(it).readText().replace( + ReplaceHolder.SrcReplaceHolders.SHELL_SRC.key, + displayTextSrc, + ) + } + val length = textMap.get( + TextKey.LENGTH.key + )?.let { + try{ + it.toInt() + }catch (e: Exception){ + null + } + } + if( + filterShellCon.isNullOrEmpty() + ) return displayTextSrc.let { + if( + length == null + ) return it + it.take(length) + } + val fannelName = FannelInfoTool.getCurrentFannelName( + fannelInfoMap + ) + return getOutputByShellCon( + setReplaceVariableMap, + busyboxExecutor, + filterShellCon, + fannelName + )?.let { + if( + length == null + ) return it + it.take(length) + } + } + + private fun makeDisplayTextByRemoveRegex( + textMap: Map, + settingValue: String, + ): String? { + val displayTextSrc = textMap.get( + TextKey.DISPLAY_TEXT.key + )?.replace( + ReplaceHolder.SrcReplaceHolders.SETTING_VALUE.key, + settingValue + ) ?: return null + val srcStrBeforeRemove = textMap.get( + TextKey.SRC_STR.key + )?.replace( + ReplaceHolder.SrcReplaceHolders.SETTING_VALUE.key, + settingValue + ) ?: return displayTextSrc + val removeRegexToReplaceKeyList = + FilterAndMapModule.makeRemoveRegexToReplaceKeyPairList( + textMap, + FilterAndMapModule.ExtraMapBaseKey.REMOVE_REGEX.key + ) + val srcStr = FilterAndMapModule.applyRemoveRegex( + srcStrBeforeRemove, + removeRegexToReplaceKeyList, + textMap, + ) +// FileSystems.updateFile( +// File(UsePath.cmdclickDefaultAppDirPath, "ldispalyText2.txt").absolutePath, +// listOf( +// "displayLabelSrc: ${displayLabelSrc}", +// "srcStrBeforeRemove: ${srcStrBeforeRemove}", +// "srcStr: ${srcStr}" +// ).joinToString("\n") +// ) + return displayTextSrc.replace( + ReplaceHolder.SrcReplaceHolders.SRC_STR.key, + srcStr + ) + } + + private fun getOutputByShellCon( + setReplaceVariableMap: Map?, + busyboxExecutor: BusyboxExecutor?, + shellConSrc: String, + currentFannelName: String, + ): String? { + val shellCon = SetReplaceVariabler.execReplaceByReplaceVariables( + shellConSrc, + setReplaceVariableMap, + currentFannelName + ) + if( + shellCon.isEmpty() + ) return null + return busyboxExecutor?.getCmdOutput( + shellCon, + null + ) + } + } + + object VisibleManager { + private enum class VisibleType( + val str: String, + val visible: Int, + ){ + GONE("gone", View.GONE), + INVISIBLE("invisible", View.INVISIBLE), + VISIBLE("visible", View.VISIBLE), + } + + fun getVisible(visibleStr: String?): Int { + return VisibleType.entries.firstOrNull { + it.str == visibleStr + }?.visible ?: VisibleType.VISIBLE.visible + + } + + } + } + + + object AdapterSetter { + + object AlreadyUseTagListHandler { + + suspend fun get( + alreadyUseTagList: MutableList, + alreadyUseTagListMutex: Mutex, + ): List { + return alreadyUseTagListMutex.withLock { + alreadyUseTagList + }.toList() + + } + } + + + fun tagDuplicateErrHandler( + context: Context?, + tagJanre: Template.TagManager.TagGenre, + tagName: String, + alreadyUseTagList: List, + mapListElInfo: String, + plusKeyToSubKeyConWhere: String, + ): String? { +// FileSystems.updateFile( +// File(UsePath.cmdclickDefaultAppDirPath, "stagDup.txt").absolutePath, +// listOf( +// "alreadyUseTagList: ${alreadyUseTagList}", +// "tagName: ${tagName}", +// ).joinToString("\n") +// ) + if( + !alreadyUseTagList.contains(tagName) + ) return tagName + val tagKeyName = + Template.EditComponentKey.TAG.key + val spanTagGenre = CheckTool.LogVisualManager.execMakeSpanTagHolder( + CheckTool.ligthBlue, + tagJanre.str + ) + val spanTagNameKey = CheckTool.LogVisualManager.execMakeSpanTagHolder( + CheckTool.errRedCode, + tagName + ) + val spanWhereForLog = CheckTool.LogVisualManager.execMakeSpanTagHolder( + CheckTool.errBrown, + "${mapListElInfo} in ${plusKeyToSubKeyConWhere}" + ) + val errSrcMessage = + "Forbidden to duplicate ${tagKeyName}: ${spanTagGenre}: ${spanTagNameKey}" + val errMessage = + "[${LogErrLabel.VIEW_LAYOUT.label}] ${errSrcMessage} about ${spanWhereForLog}" + LogSystems.broadErrLog( + context, + Jsoup.parse(errSrcMessage).text(), + errMessage + ) + return null + } + + suspend fun makeFrameVarNameToValueMap( + fragment: Fragment?, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + busyboxExecutor: BusyboxExecutor?, + settingActionAsyncCoroutine: SettingActionAsyncCoroutine, + editConstraintListAdapter: EditConstraintListAdapter?, + topLevelVarStrKeyNameList: List?, + verticalVarNameValueMap: Map, + keyToSubKeyConWhere: String, + linearFrameKeyPairsListConSrc: String?, + srcTitle: String, + srcCon: String, + srcImage: String, + srcPosition: Int, + ): Map { + if ( + linearFrameKeyPairsListConSrc.isNullOrEmpty() + ) return emptyMap() + return Template.ReplaceHolder.replaceHolder( + linearFrameKeyPairsListConSrc, + srcTitle, + srcCon, + srcImage, + srcPosition, + ).let { + linearFrameKeyPairsListConSrcWithReplace -> + if( + linearFrameKeyPairsListConSrcWithReplace.isNullOrEmpty() + ) return@let emptyMap() + val settingActionManager = SettingActionManager2() + settingActionManager.exec( + fragment, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + settingActionAsyncCoroutine, + topLevelVarStrKeyNameList, + CmdClickMap.replace( + linearFrameKeyPairsListConSrcWithReplace, + verticalVarNameValueMap, + ), + keyToSubKeyConWhere, + editConstraintListAdapterArg = editConstraintListAdapter + ).let updateVarNameToValueMap@ { + if( + it.isEmpty() + ) return@updateVarNameToValueMap emptyMap() + it + } + } + } + + suspend fun makeContentsTagToKeyPairsList( + context: Context?, + contentsKeyValues: List, + horizonVarNameToValueMap: Map?, + srcTitle: String, + srcCon: String, + srcImage: String, + bindingAdapterPosition: Int, + mapListElInfo: String, + ): List< + Pair< + String, + String? + > + > { + return withContext(Dispatchers.IO) { + val jobList = contentsKeyValues.mapIndexed { index, contentsKeyPairsListConSrc -> + async { + if ( + contentsKeyPairsListConSrc.isEmpty() + ) return@async index to Pair(String(), null) + val contentsKeyPairsListCon = + Template.ReplaceHolder.replaceHolder( + contentsKeyPairsListConSrc, + srcTitle, + srcCon, + srcImage, + bindingAdapterPosition, + )?.let { + CmdClickMap.replace( + it, + horizonVarNameToValueMap, + ) + } + val linearFrameKeyPairsList = + EditConstraintListAdapter.makeLinearFrameKeyPairsList( + contentsKeyPairsListCon, + ) + val contentsTag = + PairListTool.getValue( + linearFrameKeyPairsList, + Template.EditComponentKey.TAG.key, + ) ?: String() + when( + contentsTag.isEmpty() + && !contentsKeyPairsListCon.isNullOrEmpty() + ) { + true -> { + ListSettingsForEditList.ViewLayoutCheck.isTagBlankErr( + context, + contentsTag, + mapListElInfo, + EditComponent.Template.TagManager.TagGenre.CONTENTS_TAG + ).let { + isTagBlankErrJob -> + if (!isTagBlankErrJob) return@let + return@async index to Pair( + String(), + String() + ) + } + } + else -> {} + } + index to Pair( + contentsTag, + contentsKeyPairsListCon + ) + } + } + jobList.awaitAll().sortedBy { + val index = it.first + index + }.map { + val linearFrameTagToKeyPairsList = it.second + linearFrameTagToKeyPairsList + }.filter { + it.first.isNotEmpty() + && !it.second.isNullOrEmpty() + } + } + } + + fun makeContentsFrameLayout( + context: Context, + ): FrameLayout { + val dp50 = + context.resources.getDimension(R.dimen.toolbar_layout_height) + val contentsLayout = + FrameLayout(context).apply { + layoutParams = + ConstraintLayout.LayoutParams( + 0, + dp50.toInt() + ) + } + val imageView = + AppCompatImageView(context).apply { + layoutParams = + FrameLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.MATCH_PARENT + ) + } + val textView = + OutlineTextView(context).apply { + layoutParams = + FrameLayout.LayoutParams( + FrameLayout.LayoutParams.WRAP_CONTENT, + FrameLayout.LayoutParams.WRAP_CONTENT + ) + } + return contentsLayout.apply { + addView(imageView) + addView(textView) + } + } + } + + private fun toInt( + numString: String? + ): Int? { + return try { + numString?.toInt() + } catch (e: Exception){ + null + } + } + + private fun toFloat( + numString: String? + ): Float? { + return try { + numString?.toFloat() + } catch (e: Exception){ + null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/EditLayoutViewHideShow.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/EditLayoutViewHideShow.kt deleted file mode 100755 index 16ed749ff..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/EditLayoutViewHideShow.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment.common - -import androidx.core.view.isVisible -import com.puutaro.commandclick.fragment.EditFragment - -object EditLayoutViewHideShow { - fun exec( - editFragment: EditFragment, - onShow: Boolean - ){ - val binding = editFragment.binding - when(editFragment.existIndexList){ - true -> { -// binding.editListInnerTopLinearLayout.isVisible = onShow -// binding.editListInnerBottomLinearLayout.isVisible = !onShow - binding.editListLinearLayout.isVisible = - onShow - } - else -> { - binding.editTextScroll.isVisible = - onShow - binding.editTextView.isVisible = - onShow - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/IsCmdEdit.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/IsCmdEdit.kt deleted file mode 100755 index f5dcc8e48..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/IsCmdEdit.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment.common - -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.util.state.FragmentTagPrefix - -object IsCmdEdit { - fun judge( - editFragment: EditFragment, - ): Boolean { - val onPassCmdVariableEdit = - editFragment.passCmdVariableEdit == - CommandClickScriptVariable.PASS_CMDVARIABLE_EDIT_ON_VALUE - val currentEditFragmentTag = editFragment.tag - return currentEditFragmentTag?.startsWith( - FragmentTagPrefix.Prefix.SETTING_VAL_EDIT_PREFIX.str - ) != true - && !onPassCmdVariableEdit - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TerminalShowByTerminalDo.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TerminalShowByTerminalDo.kt index 1e622ef81..4024b781f 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TerminalShowByTerminalDo.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TerminalShowByTerminalDo.kt @@ -44,7 +44,7 @@ object TerminalShowByTerminalDo { ) val onTerminalDoOffAndTermux = ( terminalDo == SettingVariableSelects.TerminalDoSelects.OFF.name - || terminalDo == SettingVariableSelects.TerminalDoSelects.TERMUX.name +// || terminalDo == SettingVariableSelects.TerminalDoSelects.TERMUX.name ) if( onTerminalDoOffAndTermux diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TerminalShowByTerminalDoWhenReuse.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TerminalShowByTerminalDoWhenReuse.kt index 9a9d32a59..491dc44eb 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TerminalShowByTerminalDoWhenReuse.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TerminalShowByTerminalDoWhenReuse.kt @@ -37,7 +37,7 @@ object TerminalShowByTerminalDoWhenReuse { ) val onTerminalDoOffAndTermux = ( terminalDo == SettingVariableSelects.TerminalDoSelects.OFF.name - || terminalDo == SettingVariableSelects.TerminalDoSelects.TERMUX.name +// || terminalDo == SettingVariableSelects.TerminalDoSelects.TERMUX.name ) if( // editFragment.languageType != LanguageTypeSelects.JAVA_SCRIPT diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TitleImageAndViewSetter.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TitleImageAndViewSetter.kt index 286dbb9a1..313635168 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TitleImageAndViewSetter.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/common/TitleImageAndViewSetter.kt @@ -1,105 +1,1253 @@ package com.puutaro.commandclick.fragment_lib.edit_fragment.common +import android.content.Context +import android.content.res.ColorStateList +import android.graphics.Bitmap +import android.graphics.Color +import android.graphics.Typeface import android.graphics.drawable.Drawable +import android.view.View +import android.widget.FrameLayout +import android.widget.ImageView +import androidx.appcompat.content.res.AppCompatResources import androidx.appcompat.widget.AppCompatImageView -import androidx.core.view.isVisible +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.graphics.drawable.toBitmap import androidx.fragment.app.Fragment import com.bumptech.glide.Glide import com.bumptech.glide.RequestBuilder import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.google.android.material.imageview.ShapeableImageView +import com.puutaro.commandclick.R +import com.puutaro.commandclick.activity_lib.event.lib.terminal.ExecSetToolbarButtonImage import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.fragment.EditFragment +import com.puutaro.commandclick.common.variable.res.CmdClickColorStr +import com.puutaro.commandclick.common.variable.res.CmdClickIcons +import com.puutaro.commandclick.custom_view.OutlineTextView +import com.puutaro.commandclick.proccess.edit.edit_text_support_view.WithEditConstraintListView import com.puutaro.commandclick.proccess.edit.lib.SetReplaceVariabler -import com.puutaro.commandclick.proccess.list_index_for_edit.config_settings.SearchBoxSettingsForListIndex +import com.puutaro.commandclick.proccess.edit_list.config_settings.SearchBoxSettingsForEditList import com.puutaro.commandclick.proccess.shell_macro.ShellMacroHandler +import com.puutaro.commandclick.proccess.ubuntu.BusyboxExecutor import com.puutaro.commandclick.util.CcPathTool +import com.puutaro.commandclick.util.file.FileSystems +import com.puutaro.commandclick.util.image_tools.BitmapTool +import com.puutaro.commandclick.util.image_tools.ColorTool +import com.puutaro.commandclick.util.image_tools.ScreenSizeCalculator import com.puutaro.commandclick.util.map.CmdClickMap import com.puutaro.commandclick.util.state.FannelInfoTool import com.puutaro.commandclick.util.str.ScriptPreWordReplacer +import jp.wasabeef.blurry.Blurry +import jp.wasabeef.glide.transformations.BlurTransformation +import jp.wasabeef.glide.transformations.GrayscaleTransformation +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.io.File object TitleImageAndViewSetter { private const val backstackCountSeparator = " " private const val switchOff = "OFF" - fun set( - editFragment: EditFragment, + private const val switchOn = "ON" + private const val keySeparator = '|' + private const val valueSeparator = '&' + private const val errWhere = "editTitle" + + private fun parseColors( + context: Context?, + titleTextMap: Map?, + colorsKey: String + ): List? { + if( + titleTextMap.isNullOrEmpty() + ) return null + return titleTextMap.get( + colorsKey + )?.split(valueSeparator)?.map { + colorStr -> + ColorTool.parseColorStr( + context, + colorStr, + colorsKey, + ErrType.FANNEL_TITLE.str, + ) +// ColorTool.parseColorStr( +// context, +// colorStr +// ) + } + } + + private enum class EditBoxTitleKey( + val key: String, + ){ + TEXT("text"), + IMAGE("image"), + } + + enum class TitleType( + val str: String + ){ + LINEAR("linear"), + FRAG("frag"), + } + + enum class TitleTextSettingKey( + val key: String + ){ + // SIZE("size"), + HEIGHT("height"), + TYPE("type"), + BK_HEX_ALPHA("bkHexAlpha"), + STROKE_WIDTH("strokeWidth"), + STROKE_COLORS("strokeColors"), + BACKSTACK_COLORS("backstackColors"), + FORE_FILL_COLORS("foreFillColors"), + BK_FILL_COLORS("bkFillColors"), + ON_FORE_BK_DIFF_COLOR("onForeBkDiffColor"), + VISIBLE("visible"), + SHELL_PATH("shellPath"), + SHELL_CON("shellCon"), + ARGS("args"), + SHADOW_RADIUS("shadowRadius"), + SHADOW_COLOR("shadowColor"), + SHADOW_X("shadowX"), + SHADOW_Y("shadowY"), + } + + + private enum class ErrType( + val str: String ) { - val titleTextMap = editFragment.editBoxTitleConfig.get( - EditBoxTitleKey.TEXT.key - ).let { - CmdClickMap.createMap( - it, - '|' + FANNEL_TITLE("[FANNEL TITLE]") + } + + suspend fun set( + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + busyboxExecutor: BusyboxExecutor?, + editListTitleFrame: FrameLayout?, + editListLinearAlignTitleLayout: FrameLayout?, + editListFragAlignTitleLayout: FrameLayout?, + titleSettingMap: Map?, + requestBuilder: RequestBuilder?, + ) { + return + val titleTextMap = withContext(Dispatchers.IO) { + titleSettingMap?.get( + EditBoxTitleKey.TEXT.key + ).let { + CmdClickMap.createMap( + it, + keySeparator + ) + }.toMap() + } + withContext(Dispatchers.IO) { + titleTextMap.get( + TitleTextSettingKey.VISIBLE.key ) - }.toMap() - val titleImageMap = editFragment.editBoxTitleConfig.get( - EditBoxTitleKey.IMAGE.key - ).let { - CmdClickMap.createMap( - it, - '|' + }.let { + val onTitleSwitch = + it != switchOff + if (onTitleSwitch) return@let + withContext(Dispatchers.Main) { + editListTitleFrame?.apply { + visibility = View.VISIBLE + } + } + return + } + val titleType = withContext(Dispatchers.IO) { + titleTextMap.get( + TitleTextSettingKey.TYPE.key + )?.let { titleTypeSrc -> + TitleType.entries.firstOrNull { + it.str == titleTypeSrc + } + } + } ?: TitleType.LINEAR + val titleLayoutElevation = + WithEditConstraintListView.titleLayoutElevation + when(titleType) { + TitleType.LINEAR -> { + withContext(Dispatchers.Main) { + editListLinearAlignTitleLayout?.apply { + visibility = View.VISIBLE + (layoutParams as ConstraintLayout.LayoutParams).apply { + elevation = titleLayoutElevation + } + } + } + val titleBkImageView = + editListLinearAlignTitleLayout + ?.findViewById( + R.id.edit_list_linear_align_title_bk_image + ) + val fragImageFrame = editListLinearAlignTitleLayout?.findViewById( + R.id.edit_list_linear_align_title_backstack_count_frame + ) + val editBackstackCountView = + editListLinearAlignTitleLayout + ?.findViewById( + R.id.edit_list_linear_align_title_backstack_count + ) + val editBackstackCountShadowView = + editListLinearAlignTitleLayout + ?.findViewById( + R.id.edit_list_linear_align_title_backstack_count_shaddow + ) + val editTextView = + editListLinearAlignTitleLayout + ?.findViewById( + R.id.edit_list_linear_align_title_text + ) + setLinearAlignTitle( + fragment, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + fragImageFrame, + titleBkImageView, + editBackstackCountView, + editBackstackCountShadowView, + editTextView, + titleTextMap, + requestBuilder + ) + } + TitleType.FRAG -> { + withContext(Dispatchers.Main) { + editListFragAlignTitleLayout?.apply { + visibility = View.VISIBLE + (layoutParams as ConstraintLayout.LayoutParams).apply { + elevation = titleLayoutElevation + } + } + } + val fragBkImageView = editListFragAlignTitleLayout?.findViewById( + R.id.edit_list_dialog_frag_bk_image + ) + val titleView = editListFragAlignTitleLayout?.findViewById( + R.id.edit_list_dialog_title_text + ) + FragAlignBk.set( + fragment, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + fragBkImageView, + titleView, + titleTextMap, + requestBuilder + ) + } + } + } + + private object FragAlignBk { + suspend fun set( + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + busyboxExecutor: BusyboxExecutor?, + fragBkImageView: AppCompatImageView?, + titleView: OutlineTextView?, + titleTextMap: Map?, + requestBuilderSrc: RequestBuilder? + ) { + val context = fragment.context + ?: return + val bkCountAndOverrideText = withContext(Dispatchers.IO) { + EditTextMaker.make( + fragment, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + titleTextMap + ) + } + val bkCountAndOverrideTextList = withContext(Dispatchers.IO) { + EditTextMaker.makeBkCountAndOverrideTextList( + bkCountAndOverrideText + ) + } + val overrideText = withContext(Dispatchers.IO) { + EditTextMaker.extractText( + bkCountAndOverrideTextList + ) + } + val fillColorStr = withContext(Dispatchers.IO) { + val foreFillColorsKey = TitleTextSettingKey.FORE_FILL_COLORS.key + parseColors( + context, + titleTextMap, + foreFillColorsKey + )?.random() ?: fillColorStrList.random() + } + val strokeWidthInt = let { + val strokeWidthKey = TitleTextSettingKey.STROKE_WIDTH.key + try { + titleTextMap?.get( + strokeWidthKey + )?.toInt() + } catch (e: Exception){ + null + } + } + val strokeColorStr = let { + val strokeColorKey = TitleTextSettingKey.STROKE_COLORS.key + parseColors( + context, + titleTextMap, + strokeColorKey + )?.random() ?: makeWhiteColor() + } + val backstackColorKey = TitleTextSettingKey.BACKSTACK_COLORS.key + val backstackColorStrListSrc = parseColors( + context, + titleTextMap, + backstackColorKey + ) ?: listOf(backStackStrListForFragBackStack.random()) + if( + backstackColorStrListSrc.isNullOrEmpty() + || backstackColorStrListSrc.any { + it.isNullOrEmpty() + } + ) return + val escapeColorStrList = listOf( + fillColorStr, + strokeColorStr, ) - }.toMap() - titleTextMap.get( - TitleTextSettingKey.VISIBLE.key - ).let { - val onTitleSwitch = - it != switchOff - if (onTitleSwitch) return@let - editFragment.binding.editTitleLinearlayout.isVisible = false - return - } + val backstackColorStr = + backstackColorStrListSrc.random() + ?: backStackStrListForFragBackStack.filter { + !escapeColorStrList.contains(it) + }.random() + val escapeColorListForBkArgbColor = listOf( + backstackColorStr, + ) + escapeColorStrList + val bkArgbColor = makeArgbBkColor( + context, + titleTextMap ?: emptyMap(), + escapeColorListForBkArgbColor, + fillColorStr, + ) ?: return + val shadowColorStr = let { + val shadowColorKey = TitleTextSettingKey.SHADOW_COLOR.key + parseColors( + context, + titleTextMap, + shadowColorKey + )?.random() ?: makeWhiteColor() + } + val shadowRadiusFloat = let { + val shadowRadiusKey = TitleTextSettingKey.SHADOW_RADIUS.key + try { + titleTextMap?.get(shadowRadiusKey)?.toFloat() + } catch (e: Exception){ + null + } + } ?: 0f + val shadowXFloat = let { + val shadowXKey = TitleTextSettingKey.SHADOW_X.key + try { + titleTextMap?.get(shadowXKey)?.toFloat() + } catch (e: Exception){ + null + } + } ?: 0f + val shadowYFloat = let { + val shadowYKey = TitleTextSettingKey.SHADOW_Y.key + try { + titleTextMap?.get(shadowYKey)?.toFloat() + } catch (e: Exception){ + null + } + } ?: 0f + CoroutineScope(Dispatchers.IO).launch { + setTitleText( + titleView, + overrideText, + fillColorStr, + strokeWidthInt, + strokeColorStr, + shadowColorStr, + shadowRadiusFloat, + shadowXFloat, + shadowYFloat, + ) + } + FileSystems.writeFile( + File(UsePath.cmdclickDefaultAppDirPath, "ldefault.txt").absolutePath, + listOf( + "fillColorStr: ${fillColorStr}", + "strokeColorStr: ${strokeColorStr}", + "backstackColorStr: ${backstackColorStr}", + "bkArgbColor: ${bkArgbColor }", + ).joinToString("\n") + ) + CoroutineScope(Dispatchers.IO).launch { + val bkCount = withContext(Dispatchers.IO) { + bkCountAndOverrideTextList.first() + } + setBackstackCountAndLogoImage( + context, + fannelInfoMap, + fragBkImageView, + bkCount, + overrideText, + backstackColorStr, + bkArgbColor, + requestBuilderSrc, + ) + } + } + + private suspend fun setTitleText( + titleView: OutlineTextView?, + overrideText: String, + fillColorStr: String, + strokeWidthInt: Int?, + strokeColorStr: String, + shadowColorStr: String, + shadowRadiusFloat: Float, + shadowXFloat: Float, + shadowYFloat: Float, + ){ + titleView?.apply { + if ( + overrideText.isEmpty() + ) return@apply + withContext(Dispatchers.Main) { + visibility = View.VISIBLE + letterSpacing = 0.2f + text = overrideText + setShadowLayer( + shadowRadiusFloat, + shadowXFloat, + shadowYFloat, + Color.parseColor(shadowColorStr) + ) + strokeWidthSrc = strokeWidthInt ?: strokeWidthSrc + setFillColor(Color.parseColor(fillColorStr)) + setStrokeColor( + Color.parseColor( + strokeColorStr + ) + ) + } + } + } + + private enum class PutImageType { + LOGO, + BACKSTACK_COUNT + } + + private suspend fun setBackstackCountAndLogoImage( + context: Context?, + fannelInfoMap: Map, + fragBkImageView: AppCompatImageView?, + bkCount: String, + overrideText: String, + backstackColorStr: String, + bkArgbColor: String, + requestBuilderSrc: RequestBuilder?, + ){ + if( + context == null + ) return + fragBkImageView?.apply { + withContext(Dispatchers.Main) { + scaleType = ImageView.ScaleType.FIT_XY + } + + val logoPngPath = withContext(Dispatchers.IO) { + val fannelName = FannelInfoTool.getCurrentFannelName(fannelInfoMap) + listOf( + UsePath.fannelLogoPngPath, + ).joinToString("/").let { + ScriptPreWordReplacer.replace( + it, + fannelName + ) + } + } + val logoBitmap = withContext(Dispatchers.IO) { + when (File(logoPngPath).isFile) { + true -> BitmapTool.convertFileToBitmap(logoPngPath) + else -> BitmapTool.convertFileToBitmap( + ExecSetToolbarButtonImage.getImageFile( + CmdClickIcons.CC.assetsPath + ).absolutePath + ) + } + } ?: return + val shrinkRate = 0.5f //0.5f + val oneSideLength = withContext(Dispatchers.IO) { + (context.resources.getDimension(R.dimen.twenty_dp) * 2).let { + it * shrinkRate + }.toFloat() + } + val screenWidth = withContext(Dispatchers.Main) { + ScreenSizeCalculator.toDp( + context, + 300 + ) + } + val rectWidth = withContext(Dispatchers.Main) { + val rectWidthSrc = let { + val baseWidth = 720f + val minSize = 200f + val maxSize = 250f + val incline = (maxSize - minSize) / (1080f - baseWidth) + val culcSize = incline * (screenWidth - baseWidth) + minSize + if ( + culcSize <= minSize + ) return@let minSize + culcSize + }.toInt() + ScreenSizeCalculator.toDp( + context, + rectWidthSrc + ).let { + it * shrinkRate + }.toInt() + } + val rectHeight = withContext(Dispatchers.Main) { + ScreenSizeCalculator.toDp( + context, + 55 + ).let { + it * shrinkRate + }.toInt() + } + val backstackCountBitmap = withContext(Dispatchers.IO) { + val boldOfNormalList = listOf( + Typeface.BOLD, + Typeface.NORMAL, + ) + val fontType = listOf( + Typeface.SANS_SERIF, + Typeface.SERIF, + Typeface.MONOSPACE, + Typeface.DEFAULT, + ) + var bkRect = BitmapTool.ImageTransformer.makeRect( + bkArgbColor, + rectWidth, + rectHeight + ) + val bkRectWidth = bkRect.width + val bkRectHeight = bkRect.height +// FileSystems.writeFromByteArray( +// File(UsePath.cmdclickDefaultAppDirPath, "lbkRect.png").absolutePath, +// BitmapTool.convertBitmapToByteArray(bkRect) +// ) + val fontSize = let { + val baseWidth = 720f + val minSize = 70f //60f + // (40..60).random().toFloat() + val maxSize = minSize + 10f //70f + val incline = (maxSize - minSize) / (1080f - baseWidth) + val culcSize = incline * (screenWidth - baseWidth) + minSize + if ( + culcSize <= minSize + ) return@let minSize + culcSize + }.let { + it * shrinkRate + }.toFloat() + val imagePutTimes = 100 + val backstackCountRotateList = listOf(90, 180, -90, 0) + val backstackCountBitmapListForOverlay = withContext(Dispatchers.IO) { + val imageTypeTobackstackCountBitmapListForOverlayJobList = (0.. { + val backstackCountBitmapSrc = + BitmapTool.DrawText.drawTextToBitmap( + bkCount, + oneSideLength, + oneSideLength, + null, + fontSize, + Color.parseColor(backstackColorStr), + Color.parseColor(backstackColorStr), + 0f, + null, + null, + font = Typeface.create( + fontType.random(), + boldOfNormalList.random() + ), + isAntiAlias = true, + ).let { + val shurinkOnesideLength = + (oneSideLength * 0.8).toInt() + BitmapTool.ImageTransformer.cutCenter2( + it, + shurinkOnesideLength, + shurinkOnesideLength + ) + }.let { + BitmapTool.rotate( + it, + backstackCountRotateList.random().toFloat() + ) + } + PutImageType.BACKSTACK_COUNT to backstackCountBitmapSrc + } + + else -> { + val logoBitmapRate = (1..5).random() / 5f + PutImageType.LOGO to Bitmap.createScaledBitmap( + logoBitmap, + (logoBitmap.width * logoBitmapRate).let { + it * shrinkRate + }.toInt(), + (logoBitmap.height * logoBitmapRate).let { + it * shrinkRate + }.toInt(), + false, + ).let { + BitmapTool.rotate( + it, + (0..180).random().toFloat() + ) + } + } + } + val hexOpacity = when (overrideText.isNotEmpty()) { + true -> (50..100).random() + //(10..60).random() + else -> (100..255).random() + } + + val backstackCountBitmapForOverlay = + BitmapTool.ImageTransformer.ajustOpacity( + imageTypeToBackstackCountBitmap.second, + hexOpacity + //(10..60).random() + ) + imageTypeToBackstackCountBitmap.first to backstackCountBitmapForOverlay + } + } + imageTypeTobackstackCountBitmapListForOverlayJobList.awaitAll() + } + withContext(Dispatchers.IO) { + val overrideTextLength = overrideText.length + val maxTextLength = 22 + val marginDivideInt = let { + val maxRate = 10 //14 + if( + overrideTextLength >= maxTextLength + ) return@let maxRate + ((maxRate * overrideTextLength) / maxTextLength.toFloat()).toInt() + } +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "lrate.txt").absolutePath, +// listOf( +// "marginDivideInt: ${marginDivideInt}" +// ).joinToString("\n") +// ) + backstackCountBitmapListForOverlay.forEachIndexed { index, imageTypeTobackstackCountBitmap -> + val imageType = imageTypeTobackstackCountBitmap.first + val backstackCountBitmap = imageTypeTobackstackCountBitmap.second + bkRect = when(imageType) { + PutImageType.LOGO -> BitmapTool.ImageTransformer.overlayOnBkBitmap( + bkRect, + backstackCountBitmap, + ) + PutImageType.BACKSTACK_COUNT -> { + val pivotX = let { + val marginWidth = + bkRectWidth - backstackCountBitmap.width + val inFreqAreaWidth = marginWidth / marginDivideInt + //marginWidth / 8 + when ((1..6).random() == 1) { + true -> (0..marginWidth).random() + .toFloat() + + else -> (inFreqAreaWidth..(marginWidth - inFreqAreaWidth)).random() + .toFloat() + } + } + val pivotY = let { + val marginHeight = + bkRectHeight - backstackCountBitmap.height + val inFreqAreaHeight = marginHeight / 5 + when ((1..6).random() == 1) { + true -> (0..marginHeight).random() + .toFloat() + + else -> (inFreqAreaHeight..(marginHeight - inFreqAreaHeight)).random() + .toFloat() + } + } + BitmapTool.ImageTransformer.overlayOnBkBitmapByPivot( + bkRect, + backstackCountBitmap, + pivotX, + pivotY + ) + } + } + } + } + val trimWidth = let { + val baseWidth = 720f + val minSize = 100f + val maxSize = 200f //70f + val incline = (maxSize - minSize) / (1080f - baseWidth) + val culcSize = incline * (screenWidth - baseWidth) + minSize + if ( + culcSize <= minSize + ) return@let minSize + culcSize + }.let { + it * shrinkRate + }.toInt() + val trimHeight = let { + val baseWidth = 720f + val minSize = 70f + val maxSize = 100f //70f + val incline = (maxSize - minSize) / (1080f - baseWidth) + val culcSize = incline * (screenWidth - baseWidth) + minSize + if ( + culcSize <= minSize + ) return@let minSize + culcSize + }.let { + it * shrinkRate + }.toInt() + BitmapTool.ImageTransformer.cutCenter2( + bkRect, + bkRect.width - trimWidth, + bkRect.height - trimHeight + ) + } + withContext(Dispatchers.Main) { + val requestBuilder: RequestBuilder = + requestBuilderSrc ?: Glide.with(context) + .asDrawable() + .sizeMultiplier(0.1f) + Glide + .with(context) + .load(backstackCountBitmap) + .skipMemoryCache(true) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .dontAnimate() + .thumbnail(requestBuilder) + .into(this@apply) + } + + } + } + } + + private suspend fun setLinearAlignTitle( + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + busyboxExecutor: BusyboxExecutor?, + fragImageFrame: FrameLayout?, + titleBkImageView: AppCompatImageView?, + editBackstackCountView: ShapeableImageView?, + editBackstackCountShadowView: ShapeableImageView?, + editTextView: OutlineTextView?, + titleTextMap: Map, + requestBuilder: RequestBuilder?, + + ){ + val context = fragment.context + val whiteColorStr = + withContext(Dispatchers.IO) { + makeWhiteColor() + } + val fillColorStr = withContext(Dispatchers.IO) { + val foreFillColorsKey = TitleTextSettingKey.FORE_FILL_COLORS.key + parseColors( + context, + titleTextMap, + foreFillColorsKey + )?.random() ?: fillColorStrList.random() + } + val strokeWidthInt = let { + val strokeWidthKey = TitleTextSettingKey.STROKE_WIDTH.key + try { + titleTextMap.get( + strokeWidthKey + )?.toInt() + } catch (e: Exception){ + null + } + } + val strokeColorStr = let { + val strokeColorKey = TitleTextSettingKey.STROKE_COLORS.key + parseColors( + context, + titleTextMap, + strokeColorKey + )?.random() ?: whiteColorStr + } + val shadowColorStr = let { + val shadowColorKey = TitleTextSettingKey.SHADOW_COLOR.key + parseColors( + context, + titleTextMap, + shadowColorKey + )?.random() ?: makeWhiteColor() + } + val shadowRadiusFloat = let { + val shadowRadiusKey = TitleTextSettingKey.SHADOW_RADIUS.key + try { + titleTextMap.get(shadowRadiusKey)?.toFloat() + } catch (e: Exception){ + null + } + } ?: 0f + val shadowXFloat = let { + val shadowXKey = TitleTextSettingKey.SHADOW_X.key + try { + titleTextMap.get(shadowXKey)?.toFloat() + } catch (e: Exception){ + null + } + } ?: 0f + val shadowYFloat = let { + val shadowYKey = TitleTextSettingKey.SHADOW_Y.key + try { + titleTextMap.get(shadowYKey)?.toFloat() + } catch (e: Exception){ + null + } + } ?: 0f + val backstackColorStr = let { + val backstackColorsKey = TitleTextSettingKey.BACKSTACK_COLORS.key + parseColors( + context, + titleTextMap, + backstackColorsKey + )?.random() ?: whiteColorStr + } setTitleText( - editFragment, - titleTextMap + fragment, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + fragImageFrame, + editBackstackCountView, + editBackstackCountShadowView, + editTextView, + titleTextMap, + fillColorStr, + backstackColorStr, + strokeWidthInt, + strokeColorStr, + shadowColorStr, + shadowRadiusFloat, + shadowXFloat, + shadowYFloat, + requestBuilder, ) + val bkArgbColorStr = makeArgbBkColor( + fragment.context, + titleTextMap, + listOf( + fillColorStr, + backstackColorStr, + strokeColorStr + ), + fillColorStr, + ) ?: return setTitleImage( - editFragment, - titleImageMap + fragment, + titleBkImageView, + fannelInfoMap, + bkArgbColorStr, + requestBuilder, ) } - private fun setTitleText( - editFragment: EditFragment, - titleTextMap: Map? +// private fun colorChecker( +// context: Context?, +// colorStr: String, +// colorKey: String, +// ): String? { +// return try { +// Color.parseColor( +// colorStr +// ) +// colorStr +// } catch (e: Exception){ +// val spanColorKey = +// CheckTool.LogVisualManager.execMakeSpanTagHolder( +// CheckTool.errBrown, +// colorKey +// ) +// val spanSrcColorStr =CheckTool.LogVisualManager.execMakeSpanTagHolder( +// CheckTool.errRedCode, +// colorStr +// ) +// LogSystems.stdErr( +// context, +// "${ErrType.FANNEL_TITLE.str} ${spanColorKey} parse err: ${spanSrcColorStr}", +// ) +// null +// } +// } + + private fun makeArgbBkColor( + context: Context?, + titleTextMap: Map, + escapeColorListWhenDiff: List, + fillColorStr: String, + ): String? { + val fillColorStrListForBk = listOf( +// blackGreen, + CmdClickColorStr.GREEN.str, +// CmdClickColorStr.THICK_GREEN.str, +// CmdClickColorStr.CARKI.str, +// CmdClickColorStr.GOLD_YELLOW.str, +// CmdClickColorStr.DARK_GREEN.str, + CmdClickColorStr.THICK_AO.str, +// CmdClickColorStr.BLACK_AO.str, +// CmdClickColorStr.NAVY.str, + CmdClickColorStr.BLUE.str, +// CmdClickColorStr.BLUE_DARK_PURPLE.str, + CmdClickColorStr.PURPLE.str, + CmdClickColorStr.BROWN.str, +// CmdClickColorStr.DARK_BROWN.str, + CmdClickColorStr.SKERLET.str, + ) + val onForeBkDiffColor = titleTextMap.get( + TitleTextSettingKey.ON_FORE_BK_DIFF_COLOR.key + ) == switchOn + val bkFillColorsKey = + TitleTextSettingKey.BK_FILL_COLORS.key + val bkColorStr = parseColors( + context, + titleTextMap, + bkFillColorsKey + )?.random() ?: let { + when (onForeBkDiffColor) { + true -> { + fillColorStrListForBk.filter { + !escapeColorListWhenDiff.contains(it) + }.random() + } + + else -> fillColorStr + } + } +// val bkColorStr = when(bkColorStrListSrc.isNullOrEmpty()) { +// false -> colorChecker( +// context, +// bkColorStrListSrc.random(), +// bkFillColorsKey, +// ) ?: return null +// else -> when (onForeBkDiffColor) { +// true -> { +// fillColorStrListForBk.filter { +// !escapeColorListWhenDiff.contains(it) +// }.random() +// } +// +// else -> fillColorStr +// } +// } + val bkHexAlphaKey = + TitleTextSettingKey.BK_HEX_ALPHA.key + val bkAlphaIntPrefixStr = titleTextMap.get( + bkHexAlphaKey + ) + val bkAlphaInt = bkAlphaIntPrefixStr?.let { + try { + val bkAlphaIntSrc = it.toInt() + val maxAlpha = 255 + when(bkAlphaIntSrc >= maxAlpha){ + true -> maxAlpha + else -> bkAlphaIntSrc + } + } catch (e: Exception){ + null + } + } ?: (3..9).random() + val bkArgbColorSrc = let { + val bkAlphaIntStr = "#%02x".format(bkAlphaInt) + bkColorStr.replace( + "#", + bkAlphaIntStr, + ) + } + +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "lbkArgbColorSrc.txt").absolutePath, +// listOf( +// "bkArgbColorSrc: ${bkArgbColorSrc}", +// "bkAlphaIntPrefixStr: ${bkAlphaIntPrefixStr}", +// "titleTextMap: ${titleTextMap}", +// ).joinToString("\n") +// ) + ColorTool.parseColorStr( + context, + bkArgbColorSrc, + bkHexAlphaKey, + ErrType.FANNEL_TITLE.str, + ) ?: return null +// colorChecker( +// context, +// bkArgbColorSrc, +// bkHexAlphaKey +// ) ?: return null + return bkArgbColorSrc + } + + private val blackGreen = "#0f1419" +// private val fillGray = "#808080" + + private val backStackStrListForFragBackStack = listOf( +// blackGreen, +// fillGray, + CmdClickColorStr.GREEN.str, + CmdClickColorStr.WHITE_GREEN.str, + CmdClickColorStr.LIGHT_GREEN.str, + CmdClickColorStr.ANDROID_GREEN.str, + CmdClickColorStr.YELLOW_GREEN.str, + CmdClickColorStr.YELLOW.str, +// CmdClickColorStr.THICK_GREEN.str, +// CmdClickColorStr.CARKI.str, + CmdClickColorStr.GOLD_YELLOW.str, +// CmdClickColorStr.DARK_GREEN.str, +// CmdClickColorStr.THICK_AO.str, +// CmdClickColorStr.BLACK_AO.str, +// CmdClickColorStr.NAVY.str, + CmdClickColorStr.WHITE_BLUE.str, + CmdClickColorStr.WHITE_BLUE_PURPLE.str, + CmdClickColorStr.BLUE.str, +// CmdClickColorStr.BLUE_DARK_PURPLE.str, +// CmdClickColorStr.PURPLE.str, +// CmdClickColorStr.BROWN.str, +// CmdClickColorStr.DARK_BROWN.str, + CmdClickColorStr.SKERLET.str, + ) + + private val fillColorStrList = listOf( +// blackGreen, +// fillGray, + CmdClickColorStr.GREEN.str, +// CmdClickColorStr.THICK_GREEN.str, + CmdClickColorStr.CARKI.str, + CmdClickColorStr.GOLD_YELLOW.str, +// CmdClickColorStr.DARK_GREEN.str, + CmdClickColorStr.THICK_AO.str, +// CmdClickColorStr.BLACK_AO.str, +// CmdClickColorStr.NAVY.str, + CmdClickColorStr.BLUE.str, +// CmdClickColorStr.BLUE_DARK_PURPLE.str, + CmdClickColorStr.PURPLE.str, + CmdClickColorStr.BROWN.str, +// CmdClickColorStr.DARK_BROWN.str, + CmdClickColorStr.SKERLET.str, + ) + private suspend fun setTitleText( + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + busyboxExecutor: BusyboxExecutor?, + fragImageFrame: FrameLayout?, + editBackstackCountView: ShapeableImageView?, + editBackstackCountShadowView: ShapeableImageView?, + editTextView: OutlineTextView ?, + titleTextMap: Map?, + fillColorStr: String, + backstackColorStr: String, + strokeWidthInt: Int?, + strokeColorStr: String, + shadowColorStr: String, + shadowRadiusFloat: Float, + shadowXFloat: Float, + shadowYFloat: Float, + requestBuilderSrc: RequestBuilder?, ){ - val binding = editFragment.binding - val editTextView = binding.editTextView + val context = fragment.context ?: return + val bkCountAndOverrideText = withContext(Dispatchers.IO) { + EditTextMaker.make( + fragment, + fannelInfoMap, + setReplaceVariableMap, + busyboxExecutor, + titleTextMap + ) + } + val bkCountAndOverrideTextList = withContext(Dispatchers.IO) { + EditTextMaker.makeBkCountAndOverrideTextList( + bkCountAndOverrideText + ) + } + val bkCount = withContext(Dispatchers.IO) { bkCountAndOverrideTextList.first() } + val overrideText = withContext(Dispatchers.IO) { + EditTextMaker.extractText( + bkCountAndOverrideTextList + ) + } + editBackstackCountShadowView?.apply { + withContext(Dispatchers.Main) { + imageTintList = + ColorStateList.valueOf(Color.parseColor(shadowColorStr)) + val bitmap = AppCompatResources.getDrawable( + context, + R.drawable.rect + )?.toBitmap() + Blurry.with(context) + .radius(25) + .sampling(2) + .async() + .animate(500) + .from(bitmap) + .into( this@apply) +// val requestBuilder: RequestBuilder = +// requestBuilderSrc ?: Glide.with(context) +// .asDrawable() +// .sizeMultiplier(0.1f) +// Glide +// .with(context) +// .load(R.drawable.rect) +// .transform( +// GrayscaleTransformation(), +// BlurTransformation(50, ) +// ) +// .skipMemoryCache(true) +// .diskCacheStrategy(DiskCacheStrategy.NONE) +// .dontAnimate() +// .thumbnail(requestBuilder) +// .into(this@apply) + } + } + editBackstackCountView?.apply { + CoroutineScope(Dispatchers.IO).launch { + val oneSideLength = withContext(Dispatchers.IO){ + context.resources.getDimension(R.dimen.twenty_dp) * 2 + } + val screenWidth = withContext(Dispatchers.Main) { + ScreenSizeCalculator.pxWidth( + fragment + ) + } + val backstackCountBitmap = withContext(Dispatchers.IO) { + val fontSize = let { + val baseWidth = 720f + val minSize = 60f + val maxSize = 70f + val incline = (maxSize - minSize) / (1080f - baseWidth) + val culcSize = incline * (screenWidth - baseWidth) + minSize + if( + culcSize <= minSize + ) return@let minSize + culcSize + } + val backstackCountBitmap = BitmapTool.DrawText.drawTextToBitmap( + bkCount, + oneSideLength, + oneSideLength, + null, + fontSize, + Color.parseColor(backstackColorStr), + Color.parseColor(backstackColorStr), + null, + null, + null, + font = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD), + isAntiAlias = true, + ) + backstackCountBitmap + } + withContext(Dispatchers.Main) { + setBackgroundColor(Color.parseColor(fillColorStr)) + val requestBuilder: RequestBuilder = + requestBuilderSrc ?: Glide.with(context) + .asDrawable() + .sizeMultiplier(0.1f) + Glide + .with(context) + .load(backstackCountBitmap) + .skipMemoryCache(true) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .dontAnimate() + .thumbnail(requestBuilder) + .into(this@apply) + } + + } + } + withContext(Dispatchers.Main){ + editTextView?.apply { + letterSpacing = 0.2f + strokeWidthSrc = + strokeWidthInt ?: strokeWidthSrc + setFillColor( + Color.parseColor( + fillColorStr + ) + ) + setStrokeColor( + Color.parseColor( + strokeColorStr + ) + ) + setShadowLayer( + shadowRadiusFloat, + shadowXFloat, + shadowYFloat, + Color.parseColor(shadowColorStr) + ) + text = overrideText + } + } + } - editTextView.text = EditTextMaker.make( - editFragment, - titleTextMap + private fun makeWhiteColor( + ): String { + val pink = "#faf0f9" + val whiteColorList = listOf( + CmdClickColorStr.WHITE_GREEN.str, + CmdClickColorStr.WHITE_BLUE.str, + CmdClickColorStr.WHITE_BLUE_PURPLE.str, + pink, ) -// editFragment.editBoxTitleConfig + return whiteColorList.random() } fun makeDefaultTitle( - editFragment: EditFragment, + fragment: Fragment, + fannelInfoMap: Map, + isBackstackEmoji: Boolean, ): String { - val fannelInfoMap = - editFragment.fannelInfoMap - -// val currentAppDirPath = FannelInfoTool.getCurrentAppDirPath( -// fannelInfoMap -// ) val currentFannelName = FannelInfoTool.getCurrentFannelName( fannelInfoMap ) val backstackOrder = makeBackstackCount( - editFragment + fragment, + isBackstackEmoji, ) return listOf( - "(${backstackOrder})", + backstackOrder, makeCompressFannelPath( -// currentAppDirPath, currentFannelName ), ).joinToString(backstackCountSeparator) } fun makeCompressFannelPath( -// currentAppDirPath: String, currentScriptFileName: String ): String { return CcPathTool.trimAllExtend( @@ -108,143 +1256,177 @@ object TitleImageAndViewSetter { } fun makeBackstackCount( - fragment: Fragment - ): Int { + fragment: Fragment, + isBackstackEmoji: Boolean + ): String { return execMakeBackstackCount( - fragment + fragment, + isBackstackEmoji ) } - private fun setTitleImage( - editFragment: EditFragment, - titleImageMap: Map, + private suspend fun setTitleImage( + fragment: Fragment, + editTitleImageView: AppCompatImageView?, + fannelInfoMap: Map, + bkArgbColorStr: String, + requestBuilder: RequestBuilder? ){ - val isNotSet = titleImageMap.get( - TitleImageSettingKey.VISIBLE.key - ) == switchOff - if(isNotSet) return - val fannelInfoMap = - editFragment.fannelInfoMap - -// val currentAppDirPath = FannelInfoTool.getCurrentAppDirPath( -// fannelInfoMap -// ) - val currentFannelName = FannelInfoTool.getCurrentFannelName( - fannelInfoMap - ) - val binding = editFragment.binding - val editTitleImageView = binding.editTitleImage + val currentFannelName = withContext(Dispatchers.IO) { + FannelInfoTool.getCurrentFannelName( + fannelInfoMap + ) + } FannelLogoSetter.setTitleFannelLogo( - editFragment, + fragment, editTitleImageView, -// currentAppDirPath: String, currentFannelName, + bkArgbColorStr, + requestBuilder ) -// QrLogo(editFragment).setTitleFannelLogo( -// editTitleImageView, -//// currentAppDirPath, -// currentFannelName -// ) } } private object FannelLogoSetter { - fun setTitleFannelLogo( - editFragment: EditFragment, + + suspend fun setTitleFannelLogo( + fragment: Fragment, titleImageView: AppCompatImageView?, -// currentAppDirPath: String, selectedScriptName: String, + bkArgbColorStr: String, + requestBuilderSrc: RequestBuilder?, ){ - val context = editFragment.context + val context = fragment.context ?: return if( titleImageView == null ) return -// val fannelDirName = CcPathTool.makeFannelDirName(selectedScriptName) - val logoPngPath = listOf( - UsePath.fannelLogoPngPath, - ).joinToString("/").let { - ScriptPreWordReplacer.replace( - it, - selectedScriptName - ) + val logoPngPath = withContext(Dispatchers.IO) { + listOf( + UsePath.fannelLogoPngPath, + ).joinToString("/").let { + ScriptPreWordReplacer.replace( + it, + selectedScriptName + ) + } } -// "${UsePath.cmdclickDefaultAppDirPath}/$fannelDirName/${UsePath.qrPngRelativePath}" - if(!File(logoPngPath).isFile) return + CoroutineScope(Dispatchers.IO).launch { + val logoBitmap = withContext(Dispatchers.IO) { + when (File(logoPngPath).isFile) { + true -> BitmapTool.convertFileToBitmap(logoPngPath) + else -> BitmapTool.convertFileToBitmap( + ExecSetToolbarButtonImage.getImageFile( + CmdClickIcons.CC.assetsPath + ).absolutePath + ) + } + }?: return@launch + val rectHeight = withContext(Dispatchers.IO) { logoBitmap.height * 2 } + val rectWidth = withContext(Dispatchers.IO) { rectHeight * 5 } + val updatedRectBitmap = withContext(Dispatchers.IO) { + val rectBitmap = BitmapTool.ImageTransformer.makeRect( + bkArgbColorStr, +// "#bbedc9", //"#0000000000" + rectWidth, + rectHeight, + ) + var updatedRectBitmap = rectBitmap + val addTimes = (4..7).random() + for (i in 1..addTimes) { + val logoBitmapRate = (1..5).random() / 5f + val rateLogoBitmap = Bitmap.createScaledBitmap( + logoBitmap, + (logoBitmap.width * logoBitmapRate).toInt(), + (logoBitmap.height * logoBitmapRate).toInt(), + false, + ).let { + BitmapTool.rotate( + it, + (0..180).random().toFloat() + ) + }.let { + BitmapTool.ImageTransformer.ajustOpacity( + it, + (10..60).random() + ) + } + updatedRectBitmap = BitmapTool.ImageTransformer.overlayOnBkBitmap( + updatedRectBitmap, + rateLogoBitmap + ) + } + updatedRectBitmap + } -// val isEditExecute = checkEditExecute( -//// currentAppDirPath, -// selectedScriptName, -// ) - titleImageView.setPadding(2, 2,2,2) -// titleImageView.background = if(isEditExecute) { -// AppCompatResources.getDrawable(context, R.color.terminal_color) -// } else AppCompatResources.getDrawable(context, R.color.fannel_icon_color) - val requestBuilder: RequestBuilder = - Glide.with(context) - .asDrawable() - .sizeMultiplier(0.1f) - Glide - .with(context) - .load(logoPngPath) - .skipMemoryCache( true ) - .diskCacheStrategy(DiskCacheStrategy.NONE) - .thumbnail( requestBuilder ) - .into(titleImageView) -// titleImageView.load(logoPngPath) + withContext(Dispatchers.Main) { + val requestBuilder = + requestBuilderSrc + ?: Glide.with(context).asDrawable().sizeMultiplier(0.1f) + Glide + .with(context) + .load(updatedRectBitmap) + .skipMemoryCache(true) + .dontAnimate() + .diskCacheStrategy(DiskCacheStrategy.NONE) + .thumbnail(requestBuilder) + .into(titleImageView) + } + } } } private object EditTextMaker { fun make( - editFragment: EditFragment, + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, + busyboxExecutor: BusyboxExecutor?, titleTextMap: Map?, ): String { val defaultEditBoxTitle = TitleImageAndViewSetter.makeDefaultTitle( - editFragment, + fragment, + fannelInfoMap, + true, ) val shellConText = makeByShellCon( - editFragment, + fragment, + fannelInfoMap, + setReplaceVariableMap, titleTextMap, + busyboxExecutor, defaultEditBoxTitle, ) return when(shellConText.isNullOrEmpty()) { false -> shellConText - else -> SearchBoxSettingsForListIndex.makeCurrentVariableValueInEditText( - editFragment, + else -> SearchBoxSettingsForEditList.makeCurrentVariableValueInEditText( + fragment, + fannelInfoMap, defaultEditBoxTitle ) } } private fun makeByShellCon( - editFragment: EditFragment, + fragment: Fragment, + fannelInfoMap: Map, + setReplaceVariableMap: Map?, editTextPropertyMap: Map?, + busyboxExecutor: BusyboxExecutor?, currentVariableValue: String?, ): String? { if( editTextPropertyMap.isNullOrEmpty() + || busyboxExecutor == null ) return null - val busyboxExecutor = - editFragment.busyboxExecutor - ?: return null - val setReplaceVariableMap = - editFragment.setReplaceVariableMap - - val fannelInfoMap = - editFragment.fannelInfoMap - -// val currentAppDirPath = FannelInfoTool.getCurrentAppDirPath( -// fannelInfoMap -// ) val currentFannelName = FannelInfoTool.getCurrentFannelName( fannelInfoMap ) val shellConSrc = editTextPropertyMap.get( - TitleTextSettingKey.SHELL_CON.key + TitleImageAndViewSetter.TitleTextSettingKey.SHELL_CON.key ) val repValMap = editTextPropertyMap.get( - TitleTextSettingKey.ARGS.key + TitleImageAndViewSetter.TitleTextSettingKey.ARGS.key ).let { CmdClickMap.createMap( it, @@ -254,7 +1436,9 @@ private object EditTextMaker { if( !shellConSrc.isNullOrEmpty() ) return getOutputByShellCon( - editFragment, + fragment, + setReplaceVariableMap, + busyboxExecutor, repValMap, shellConSrc, // currentAppDirPath, @@ -262,18 +1446,19 @@ private object EditTextMaker { currentVariableValue ) val backstackCountKey = - SearchBoxSettingsForListIndex.backstackCountMarkForInsertEditText + SearchBoxSettingsForEditList.backstackCountMarkForInsertEditText val backstackCountMap = mapOf( backstackCountKey to execMakeBackstackCount( - editFragment - ).toString() + fragment, + true, + ) ) val updateRepValMap = repValMap + backstackCountMap return ShellMacroHandler.handle( - editFragment.context, + fragment.context, busyboxExecutor, editTextPropertyMap.get( - TitleTextSettingKey.SHELL_PATH.key + TitleImageAndViewSetter.TitleTextSettingKey.SHELL_PATH.key ) ?: String(), setReplaceVariableMap, updateRepValMap @@ -282,67 +1467,80 @@ private object EditTextMaker { } private fun getOutputByShellCon( - editFragment: EditFragment, + fragment: Fragment, + setReplaceVariableMap: Map?, + busyboxExecutor: BusyboxExecutor?, repValMap: Map?, shellConSrc: String, -// currentAppDirPath: String, currentFannelName: String, currentVariableValue: String? ): String? { val shellCon = SetReplaceVariabler.execReplaceByReplaceVariables( shellConSrc, - editFragment.setReplaceVariableMap, + setReplaceVariableMap, // currentAppDirPath, currentFannelName ).replace( "\${defaultEditBoxTitle}", currentVariableValue ?: String(), ).let { - SearchBoxSettingsForListIndex.backStackMarkReplace( - editFragment, + SearchBoxSettingsForEditList.backStackMarkReplace( + fragment, it ) } if( shellCon.isEmpty() ) return null - return editFragment.busyboxExecutor?.getCmdOutput( + return busyboxExecutor?.getCmdOutput( shellCon, repValMap ) } + + private val space = " " + fun makeBkCountAndOverrideTextList( + bkCountAndOverrideText: String + ): List { + return bkCountAndOverrideText.split( + space + ) + } + + fun extractText( + bkCountAndOverrideTextList: List + ): String { + return bkCountAndOverrideTextList.filterIndexed { index, _ -> + index > 0 + }.joinToString(space).trim() + } } + private fun execMakeBackstackCount( - fragment: Fragment -): Int { - return fragment + fragment: Fragment, + isBackstackEmoji: Boolean +): String { + val backstackCount = fragment .activity ?.supportFragmentManager ?.backStackEntryCount ?: 0 + if( + !isBackstackEmoji + ) return "(${backstackCount})" + val numberStrMap = mapOf( + 0.toString() to "0\uFE0F⃣", + 1.toString() to "1\uFE0F⃣", + 2.toString() to "2\uFE0F⃣", + 3.toString() to "3\uFE0F⃣", + 4.toString() to "4\uFE0F⃣", + 5.toString() to "5\uFE0F⃣", + 6.toString() to "6\uFE0F⃣", + 7.toString() to "7\uFE0F⃣", + 8.toString() to "8\uFE0F⃣", + 9.toString() to "9\uFE0F⃣", + ) + return backstackCount.toString() } -private enum class EditBoxTitleKey( - val key: String, -){ - TEXT("text"), - IMAGE("image"), -} - -enum class TitleTextSettingKey( - val key: String -){ -// SIZE("size"), - HEIGHT("height"), - VISIBLE("visible"), - SHELL_PATH("shellPath"), - SHELL_CON("shellCon"), - ARGS("args"), -} - -enum class TitleImageSettingKey( - val key: String -){ - VISIBLE("visible"), -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/EditTextProducerForEdit.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/EditTextProducerForEdit.kt index 412bb25c1..c20f072ab 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/EditTextProducerForEdit.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/EditTextProducerForEdit.kt @@ -1,131 +1,38 @@ package com.puutaro.commandclick.fragment_lib.edit_fragment.processor -import android.R -import android.widget.* -import androidx.appcompat.widget.LinearLayoutCompat +import android.graphics.drawable.Drawable +import android.widget.FrameLayout +import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import com.puutaro.commandclick.common.variable.edit.* +import com.bumptech.glide.Glide +import com.bumptech.glide.RequestBuilder import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.edit_fragment.variable.* -import com.puutaro.commandclick.proccess.ScriptFileDescription +import com.puutaro.commandclick.fragment_lib.edit_fragment.common.EditComponent import com.puutaro.commandclick.proccess.edit.edit_text_support_view.* -import com.puutaro.commandclick.proccess.edit.lib.SetVariableTyper -import com.puutaro.commandclick.util.LogSystems -import com.puutaro.commandclick.util.state.FannelInfoTool +import com.puutaro.commandclick.proccess.edit_list.EditListConfig +import com.puutaro.commandclick.util.image_tools.ScreenSizeCalculator import com.puutaro.commandclick.view_model.activity.EditViewModel -import java.lang.ref.WeakReference - +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext object EditTextProducerForEdit { -// private val binding = editFragment.binding -// private val context = editFragment.context -// private val currentScriptContentsList = editFragment.currentFannelConList -// private val editViewModel: EditViewModel by editFragment.activityViewModels() -// -// private val fannelInfoMap = editFragment.fannelInfoMap -//// private val currentAppDirPath = FannelInfoTool.getCurrentAppDirPath( -//// fannelInfoMap -//// ) - -// private val setReplaceVariableMap = editFragment.setReplaceVariableMap - private val descriptionHidValName = "description" - - -// private val editParameters = EditParameters( -//// editFragment, -// currentScriptContentsList, -// editFragment.recordNumToMapNameValueInCommandHolder, -// editFragment.recordNumToMapNameValueInSettingHolder, -// fannelInfoMap, -// setReplaceVariableMap, -// false, -// editFragment.hideSettingVariableList, -// ) - -// private val withEditComponent = WithEditComponent( -// editFragment, -// ) -// -// private val withIndexListView = WithIndexListView( -// editFragment, -// ) fun adds( editFragment: EditFragment, - onSettingEdit: Boolean = false ) { - val binding = editFragment.binding - val currentScriptContentsList = editFragment.currentFannelConList val editViewModel: EditViewModel by editFragment.activityViewModels() - - val fannelInfoMap = editFragment.fannelInfoMap -// private val currentAppDirPath = FannelInfoTool.getCurrentAppDirPath( -// fannelInfoMap -// ) - - val setReplaceVariableMap = editFragment.setReplaceVariableMap - val descriptionHidValName = "description" - - - val editParameters = EditParameters( -// editFragment, - currentScriptContentsList, - editFragment.recordNumToMapNameValueInCommandHolder, - editFragment.recordNumToMapNameValueInSettingHolder, - fannelInfoMap, - setReplaceVariableMap, - false, - editFragment.hideSettingVariableList, - ) - -// val withEditComponent = WithEditComponent( -// editFragment, -// ) -// -// val withIndexListView = WithIndexListView( -// editFragment, -// ) editViewModel.variableNameToEditTextIdMap.clear() editFragment.listConSelectBoxMapList.clear() - when (onSettingEdit) { - true -> execAddEditComponent( - editFragment, - editParameters, - editFragment.recordNumToMapNameValueInSettingHolder, - EditTextIdForEdit.SETTING_VARIABLE.id, - ) - false -> execAddEditComponent( - editFragment, - editParameters, - editFragment.recordNumToMapNameValueInCommandHolder, - EditTextIdForEdit.COMMAND_VARIABLE.id, - ) - } - val disableDesc = - editFragment.hideSettingVariableList - .contains(descriptionHidValName) - if(disableDesc) return - binding.editLinearLayout.addView( - makeDescriptionButton( - editFragment, - ) + execAddEditComponent( + editFragment, ) } private fun execAddEditComponent( editFragment: EditFragment, - editParameters: EditParameters, - recordNumToMapNameValueInCommandOrSettingHolder: Map?>?, - editTextStartId: Int, ){ - val recordNumToSetVariableMaps = - SetVariableTyper.makeRecordNumToSetVariableMaps( - editFragment, - editFragment.setVariableTypeList, - recordNumToMapNameValueInCommandOrSettingHolder, - editFragment.setReplaceVariableMap, - editFragment.busyboxExecutor, - ) // FileSystems.writeFile( // File(UsePath.cmdclickDefaultAppDirPath, "setValMap.txt").absolutePath, // listOf( @@ -135,164 +42,94 @@ object EditTextProducerForEdit { // ) execAdd( editFragment, - editParameters, - recordNumToMapNameValueInCommandOrSettingHolder, - recordNumToSetVariableMaps, - editTextStartId ) } private fun execAdd( editFragment: EditFragment, - editParameters: EditParameters, - recordNumToMapNameValueInHolder: Map?>?, - recordNumToSetVariableMaps: Map?>?, - editTextStartId: Int, ) { - val context = editFragment.context - val binding = editFragment.binding - val existIndexList = editFragment.existIndexList - val recordNumToNameToValueInHolderSize = recordNumToMapNameValueInHolder?.size ?: return - (1..recordNumToNameToValueInHolderSize).forEach { - seedNum -> - val currentOrder = seedNum - 1 - val currentRecordNumToMapNameValueInHolder = - recordNumToMapNameValueInHolder.entries.elementAt( - currentOrder - ) - val currentRecordNumToNameToValueInHolder = - currentRecordNumToMapNameValueInHolder.value - val insertTextView = TextView(context) - val currentVariableName = currentRecordNumToNameToValueInHolder?.get( - RecordNumToMapNameValueInHolderColumn.VARIABLE_NAME.name - ) - if ( - currentVariableName.isNullOrEmpty() - ) return - insertTextView.text = currentVariableName - binding.editLinearLayout.addView(insertTextView) - val currentVariableValue = currentRecordNumToNameToValueInHolder.get( - RecordNumToMapNameValueInHolderColumn.VARIABLE_VALUE.name - ) - val currentId = editTextStartId + currentOrder - val currentRecordNum = - currentRecordNumToMapNameValueInHolder.key - editParameters.currentId = currentId - editParameters.currentVariableName = currentVariableName - editParameters.currentVariableValue = currentVariableValue - editParameters.setVariableMap = recordNumToSetVariableMaps?.get( - currentRecordNum - ) - val editTextSupportViewNameList = EditTextSupportViewName.values().map { - it.str - } - val variableTypeList = editParameters.setVariableMap?.get( - SetVariableTypeColumn.VARIABLE_TYPE.name - )?.split(":")?.filter { - val isContain = editTextSupportViewNameList.contains(it) - if ( - isContain - ) return@filter isContain - LogSystems.stdWarn("Irregular option: ${it}") - false - } ?: emptyList() - editParameters.variableTypeList = variableTypeList - if(existIndexList){ - setListIndexLayoutComponent( - editFragment, - editParameters, - recordNumToSetVariableMaps, - currentRecordNum, - insertTextView, - ) - return@forEach - } - if(editFragment.existIndexList) return@forEach - WithEditComponent.insert( - editFragment, - insertTextView, - editParameters, - ).let { - binding.editLinearLayout.addView(it) - } - } + setListIndexLayoutComponent( + editFragment, + ) } private fun setListIndexLayoutComponent( editFragment: EditFragment, - editParameters: EditParameters, - recordNumToSetVariableMaps: Map?>?, - currentRecordNum: Int, - insertTextView: TextView, ){ val binding = editFragment.binding - val listIndexOrder = recordNumToSetVariableMaps?.filter { - val setValTypeEl = it.value - val variableType = setValTypeEl?.get(SetVariableTypeColumn.VARIABLE_TYPE.name) - variableType?.contains( - EditTextSupportViewName.LIST_INDEX.str - ) ?: false - }?.keys?.firstOrNull() ?: 0 - when(true){ - (currentRecordNum < listIndexOrder) -> - WithEditComponent.insert( - editFragment, - insertTextView, - editParameters, - ).let { - binding.editListInnerTopLinearLayout.addView(it) - } - (currentRecordNum == listIndexOrder) -> - WithIndexListView.create( - editFragment, - editParameters + val isOnlyCmdValEdit = !editFragment.enableEditExecute + when(isOnlyCmdValEdit) { + true -> { + val toolbarLayoutMap = mapOf( + EditListConfig.EditListConfigKey.TOOLBAR_LAYOUT_PATH.key to + EditListConfig.ToolbarLayoutPath.ToolbarLayoutMacro.FOR_ONLY_CMD_VAL_EDIT.name, ) - else -> - WithEditComponent.insert( - editFragment, - insertTextView, - editParameters, - ).let { - binding.editListInnerBottomLinearLayout.addView(it) - } + editFragment.editListConfigMap = editFragment.editListConfigMap?.let { + it + toolbarLayoutMap + } ?: toolbarLayoutMap + } + else -> { +// CoroutineScope(Dispatchers.Main).launch { +// ExecSetToolbarButtonImage.setImageButton( +// binding.editToolbarFannelCenterButtonImage, +// CmdClickIcons.HISTORY +// ) +// binding.editListToolbarFannelCenterButton.setOnClickListener { +// FannelHistoryButtonEvent.invoke(editFragment) +// } +// } + } } + val editListToolbarConstraintLayout = + binding.editListToolbarConstraintLayout - } - +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "editList.txt").absolutePath, +// listOf( +// "editFragment.editListConfigMap: ${editFragment.editListConfigMap}" +// ).joinToString("\n") +// ) + val editListFooterConstraintLayout = binding.editListFooterConstraintLayout - private fun makeDescriptionButton( - editFragment: EditFragment, - ): Button { - val context = editFragment.context - val fannelInfoMap = editFragment.fannelInfoMap - val descriptionButton = Button(context) - val buttonLabel = "Description" - descriptionButton.text = buttonLabel - val linearParamsForButton = LinearLayoutCompat.LayoutParams( - LinearLayoutCompat.LayoutParams.MATCH_PARENT, - LinearLayoutCompat.LayoutParams.MATCH_PARENT, - ) - descriptionButton.layoutParams = linearParamsForButton - context?.let { - descriptionButton.setTextColor( - it.getColor(R.color.white) + CoroutineScope(Dispatchers.IO).launch { + val context = editFragment.context + val density = withContext(Dispatchers.Main) { + ScreenSizeCalculator.getDensity(editFragment.context) + } + val requestBuilderSrc: RequestBuilder? = withContext(Dispatchers.IO){ + context?.let { + Glide.with(it) + .asDrawable() + .sizeMultiplier(0.1f) + } + } + val eachLayoutIdMap = EditComponent.Template.LayoutIdMap.makeMap( + binding.editListTitleConstraintLayout.id, + binding.editListRecyclerView.id, + binding.editListSearchEditText.id, + binding.editListFooterConstraintLayout.id, + binding.editListToolbarConstraintLayout.id, ) - descriptionButton.backgroundTintList = - it.getColorStateList( - com.puutaro.commandclick.R.color.terminal_color - ) - } - descriptionButton.setOnClickListener { innerButtonView -> - ScriptFileDescription.show( + WithEditConstraintListView.create( editFragment, - editFragment.currentFannelConList, -// currentAppDirPath, - FannelInfoTool.getCurrentFannelName( - fannelInfoMap - ) + editFragment.fannelInfoMap, + editFragment.setReplaceVariableMap, + editFragment.busyboxExecutor, + editFragment.settingActionAsyncCoroutine, + editFragment.imageActionAsyncCoroutine, + editFragment.editListConfigMap, + binding.editListTitleConstraintLayout, + binding.editListRecyclerView, + binding.editListSearchEditText, + binding.editFragment, + editListFooterConstraintLayout, + editListToolbarConstraintLayout, + eachLayoutIdMap, + editFragment.mainFannelConList, + density, + requestBuilderSrc, ) } - return descriptionButton } } diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/KeyboardWhenTermLongForEdit.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/KeyboardWhenTermLongForEdit.kt deleted file mode 100755 index 3decb946f..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/KeyboardWhenTermLongForEdit.kt +++ /dev/null @@ -1,65 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment.processor - -import android.widget.LinearLayout -import androidx.appcompat.widget.LinearLayoutCompat -import androidx.core.view.isVisible -import com.puutaro.commandclick.R -import com.puutaro.commandclick.common.variable.variant.ReadLines -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment.TerminalFragment -import com.puutaro.commandclick.util.state.TargetFragmentInstance - -object KeyboardWhenTermLongForEdit { - fun handle( - editFragment: EditFragment, - isOpen: Boolean - ){ - val context = editFragment.context - val activity = editFragment.activity - val editExecuteTerminal = TargetFragmentInstance.getFromFragment( - activity, - context?.getString( - R.string.edit_terminal_fragment - ) - ) ?: return - if(!editExecuteTerminal.isVisible) return - val listenerForEditSizeWhenLong = - context as? EditFragment.OnLongTermKeyBoardOpenAjustListenerForEdit - val binding = editFragment.binding - when(editFragment.existIndexList) { - true -> { - binding.editListInnerTopLinearLayout.isVisible = !isOpen - binding.editListInnerBottomLinearLayout.isVisible = !isOpen - } - else -> { - val linearLayoutParam = - editFragment.binding.editFragment.layoutParams as LinearLayoutCompat.LayoutParams - val isShow = linearLayoutParam.weight == ReadLines.LONGTH - binding.editTextScroll.isVisible = !isOpen && isShow - } - } - binding.editToolBar.isVisible = !isOpen - binding.pageSearch.cmdindexSearchCancel.isVisible = !isOpen - val isNotVisiblePageOrWebSearch = - !binding.pageSearch.cmdclickPageSearchToolBar.isVisible - && !binding.webSearch.webSearchToolbar.isVisible - val editWeight = if( - isOpen - && isNotVisiblePageOrWebSearch - ) editBodySize.HIDE.size - else if(isOpen) editBodySize.OPEN.size - else editBodySize.SHRINK.size - listenerForEditSizeWhenLong?.onLongTermKeyBoardOpenAjustForEdit( - editWeight - ) - if(!isOpen) activity?.currentFocus?.clearFocus() - } -} - -private enum class editBodySize( - val size: Float -){ - HIDE(0F), - OPEN(0.07F), - SHRINK(0.04F) -} diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/ListIndexSizingToKeyboard.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/ListIndexSizingToKeyboard.kt deleted file mode 100755 index c23ef5568..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/ListIndexSizingToKeyboard.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment.processor - -import android.widget.RelativeLayout -import androidx.core.view.isVisible -import com.puutaro.commandclick.databinding.EditFragmentBinding -import com.puutaro.commandclick.fragment.EditFragment -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch - -object ListIndexSizingToKeyboard { - fun handle( - editFragment: EditFragment, - isOpen: Boolean - ){ - if( - !editFragment.existIndexList - ) return - val binding = editFragment.binding - val editListRecyclerView = binding.editListRecyclerView - val listIndexForEditAdapter = editListRecyclerView.adapter - ?: return - alignBottomLinearlayoutToBottom( - isOpen, - binding, - ) - binding.editListInnerTopLinearLayout.isVisible = !isOpen - CoroutineScope(Dispatchers.Main).launch { - delay(300) - editListRecyclerView.scrollToPosition( - listIndexForEditAdapter.itemCount - 1 - ) - } - } - - private fun alignBottomLinearlayoutToBottom( - isOpen: Boolean, - binding: EditFragmentBinding, - ){ - val editListSearchEditText = - binding.editListSearchEditText - if( - !editListSearchEditText.isVisible - ) return - val editListLinearLayout = - binding.editListLinearLayout - val layoutParams = - editListLinearLayout.layoutParams - as RelativeLayout.LayoutParams - when(isOpen) { - true -> layoutParams.addRule( - RelativeLayout.ALIGN_PARENT_BOTTOM - ) - else -> layoutParams.removeRule( - RelativeLayout.ALIGN_PARENT_BOTTOM - ) - } - } -} diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/PageSearchToolbarManagerForEdit.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/PageSearchToolbarManagerForEdit.kt deleted file mode 100755 index 1be6968f8..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/PageSearchToolbarManagerForEdit.kt +++ /dev/null @@ -1,163 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment.processor - -import android.text.Editable -import android.text.TextWatcher -import android.view.KeyEvent -import android.view.View -import android.view.ViewGroup -import android.widget.LinearLayout -import androidx.appcompat.widget.LinearLayoutCompat -import com.blankj.utilcode.util.ToastUtils -import com.puutaro.commandclick.R -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.common.variable.variant.PageSearchToolbarButtonVariant -import com.puutaro.commandclick.proccess.js_macro_libs.toolbar_libs.EditLongPressType -import com.puutaro.commandclick.proccess.js_macro_libs.toolbar_libs.EditToolbarSwitcher - -object PageSearchToolbarManagerForEdit{ - fun cancleButtonClickListener( - cmdEditFragment: EditFragment - ){ - val context = cmdEditFragment.context - val binding = cmdEditFragment.binding - val pageSearch = binding.pageSearch - val cmdindexSearchCancel = pageSearch.cmdindexSearchCancel - - cmdindexSearchCancel.setOnClickListener { - cancelView -> - EditToolbarSwitcher.switch( - cmdEditFragment, - EditLongPressType.NORMAL.jsMacro - ) - } - } - - fun pageSearchTextChangeListner( - cmdEditFragment: EditFragment - ){ - val context = cmdEditFragment.context - val binding = cmdEditFragment.binding - val pageSearch = binding.pageSearch - val cmdPageSearchEditText = pageSearch.cmdPageSearchEditText - val listener = context as? EditFragment.OnLongPressPlayOrEditButtonListener - val pageSearchLongPressType = EditLongPressType.PAGE_SEARCH - val editExecuteTerminalTag = context?.getString(R.string.edit_terminal_fragment) - try { - val linearWeightParamWide = LinearLayoutCompat.LayoutParams( - 0, - ViewGroup.LayoutParams.MATCH_PARENT, - ) - linearWeightParamWide.weight = 0.67F - val linearWeightParamShrink = LinearLayoutCompat.LayoutParams( - 0, - ViewGroup.LayoutParams.MATCH_PARENT, - ) - linearWeightParamShrink.weight = 0.56F - val searchText = PageSearchToolbarButtonVariant.SEARCH_TEXT - cmdPageSearchEditText.addTextChangedListener(object : TextWatcher { - override fun beforeTextChanged( - s: CharSequence?, - start: Int, - count: Int, - after: Int - ) { - } - - override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {} - override fun afterTextChanged(s: Editable?) { - if (s.isNullOrEmpty()) { - pageSearch.cmdindexSearchTotal.visibility = View.GONE - pageSearch.cmdPageSearchEditText.layoutParams = linearWeightParamWide - } else { - pageSearch.cmdindexSearchTotal.visibility = View.VISIBLE - pageSearch.cmdPageSearchEditText.layoutParams = linearWeightParamShrink - } - try { - listener?.onLongPressPlayOrEditButton( - pageSearchLongPressType, - editExecuteTerminalTag, - s.toString(), - searchText, - ) - }catch(e: Exception){ - ToastUtils.showLong(e.toString()) - } - } - }) - } catch(e: Exception){ - ToastUtils.showLong(e.toString()) - } - } - - fun onKeyListner( - cmdEditFragment: EditFragment - ){ - val context = cmdEditFragment.context - val binding = cmdEditFragment.binding - val pageSearch = binding.pageSearch - val cmdPageSearchEditText = pageSearch.cmdPageSearchEditText - val listener = context as? EditFragment.OnLongPressPlayOrEditButtonListener - val pageSearchLongPressType = EditLongPressType.PAGE_SEARCH - val editExecuteTerminalTag = context?.getString(R.string.edit_terminal_fragment) - cmdPageSearchEditText.setOnKeyListener(object : View.OnKeyListener { - override fun onKey(v: View?, keyCode: Int, event: KeyEvent): Boolean { - if (event.getAction() != KeyEvent.ACTION_DOWN || - keyCode != KeyEvent.KEYCODE_ENTER - ) return false - listener?.onLongPressPlayOrEditButton( - pageSearchLongPressType, - editExecuteTerminalTag, - "", - PageSearchToolbarButtonVariant.DOWN, - ) - return false - } - }) - } - - fun searchTopClickLisnter( - cmdEditFragment: EditFragment - ){ - val context = cmdEditFragment.context - val binding = cmdEditFragment.binding - val pageSearch = binding.pageSearch - val cmdindexSearchTopAllow = pageSearch.cmdindexSearchTopAllow - val listener = context as? EditFragment.OnLongPressPlayOrEditButtonListener - val pageSearchLongPressType = EditLongPressType.PAGE_SEARCH - val editExecuteTerminalTag = context?.getString(R.string.edit_terminal_fragment) - cmdindexSearchTopAllow.setOnClickListener { - TopAllowButtonView -> - if(!cmdEditFragment.isVisible) return@setOnClickListener - listener?.onLongPressPlayOrEditButton( - pageSearchLongPressType, - editExecuteTerminalTag, - "", - PageSearchToolbarButtonVariant.TOP, - ) - return@setOnClickListener - } - } - - fun searchDownClickLisnter( - cmdEditFragment: EditFragment - ){ - val context = cmdEditFragment.context - val binding = cmdEditFragment.binding - val pageSearch = binding.pageSearch - val cmdindexSearchDownAllow = pageSearch.cmdindexSearchDownAllow - val listener = context as? EditFragment.OnLongPressPlayOrEditButtonListener - val pageSearchLongPressType = EditLongPressType.PAGE_SEARCH - val editExecuteTerminalTag = context?.getString(R.string.edit_terminal_fragment) - cmdindexSearchDownAllow.setOnClickListener { - DownAllowButtonView -> - if(!cmdEditFragment.isVisible) return@setOnClickListener - listener?.onLongPressPlayOrEditButton( - pageSearchLongPressType, - editExecuteTerminalTag, - "", - PageSearchToolbarButtonVariant.DOWN, - ) - } - } -} - diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/RecordNumtoMapNameValueInHolderMaker.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/RecordNumtoMapNameValueInHolderMaker.kt deleted file mode 100755 index 8c31f0713..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/RecordNumtoMapNameValueInHolderMaker.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment.processor - -import com.puutaro.commandclick.common.variable.edit.RecordNumToMapNameValueInHolderColumn -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.util.RecordNumToMapNameValueInHolder -import com.puutaro.commandclick.util.state.SettingFannelConHandlerForEdit - -object RecordNumToMapNameValueInHolderMaker { - - private const val settingSectionStart = CommandClickScriptVariable.SETTING_SEC_START - private const val settingSectionEnd = CommandClickScriptVariable.SETTING_SEC_END - private const val commandSectionStart = CommandClickScriptVariable.CMD_SEC_START - private const val commandSectionEnd = CommandClickScriptVariable.CMD_SEC_END - - fun makeForSetting( - editFragment: EditFragment, - ): Map?>? { - val settingFannelConList = SettingFannelConHandlerForEdit.handle( - editFragment - ) - val recordNumToMapNameValueInSettingHolderSrc = - RecordNumToMapNameValueInHolder.parse( - settingFannelConList, - settingSectionStart, - settingSectionEnd, - true, - ) - return filterRecordNumToMapNameValueInHolderByHideVariable( - editFragment, - recordNumToMapNameValueInSettingHolderSrc - ) -// return when( -// IsCmdEdit.judge(editFragment) -// ) { -// false -> { -//// editSettingVariable() -// filterRecordNumToMapNameValueInHolderByHideVariable( -// editFragment, -// recordNumToMapNameValueInSettingHolderSrc -// ) -// } -// else -> { -//// editCommandVariable() -// recordNumToMapNameValueInSettingHolderSrc -// } -// } - } - - fun makeForCmdHolder( - editFragment: EditFragment, - mainFannelSettingConList: List, - ): Map?>? { - val recordNumToMapNameValueInCommandHolderSrc = - RecordNumToMapNameValueInHolder.parse( - mainFannelSettingConList, - commandSectionStart, - commandSectionEnd - ) - return filterRecordNumToMapNameValueInHolderByHideVariable( - editFragment, - recordNumToMapNameValueInCommandHolderSrc - ) -// return when( -// IsCmdEdit.judge(editFragment) -// ) { -// false -> { -//// editSettingVariable() -// recordNumToMapNameValueInCommandHolderSrc -// } -// else -> { -//// editCommandVariable() -// filterRecordNumToMapNameValueInHolderByHideVariable( -// editFragment, -// recordNumToMapNameValueInCommandHolderSrc -// ) -// } -// } - } - - private fun filterRecordNumToMapNameValueInHolderByHideVariable( - editFragment: EditFragment, - recordNumToMapNameValueInHolder: Map?>?, - ): Map?>? { - val hideSettingVariableList = editFragment.hideSettingVariableList - return recordNumToMapNameValueInHolder?.filter { - currentRecordNumToMapNameValueInHolder -> - val currentRecordNumToNameToValueInHolder = - currentRecordNumToMapNameValueInHolder.value - val currentVariableName = currentRecordNumToNameToValueInHolder?.get( - RecordNumToMapNameValueInHolderColumn.VARIABLE_NAME.name - ) - if ( - currentVariableName.isNullOrEmpty() - ) return@filter false - !hideSettingVariableList.contains( - currentVariableName - ) - } - } -} diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/ScriptFileSaver.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/ScriptFileSaver.kt deleted file mode 100755 index e39d9fb3f..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/ScriptFileSaver.kt +++ /dev/null @@ -1,59 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment.processor - -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.edit_fragment.common.IsCmdEdit -import com.puutaro.commandclick.fragment_lib.edit_fragment.processor.lib.EditedTextContents -import com.puutaro.commandclick.util.file.ReadText -import com.puutaro.commandclick.util.state.SettingFannelConHandlerForEdit -import com.puutaro.commandclick.util.state.FannelInfoTool -import java.io.File - -object ScriptFileSaver{ -// private val currentAppDirPath = FannelInfoTool.getCurrentAppDirPath( -// fannelInfoMap -// ) - fun save( - editFragment: EditFragment - ){ - val fannelInfoMap = editFragment.fannelInfoMap - val currentFannelName = FannelInfoTool.getCurrentFannelName( - fannelInfoMap - ) -// val editedTextContents = EditedTextContents( -// editFragment, -// ) - val isSettingEdit = !IsCmdEdit.judge(editFragment) - val editedShellContentsList = when( - isSettingEdit - ) { - true -> { - val settingFannelConList = SettingFannelConHandlerForEdit.handle( - editFragment - ) - EditedTextContents.updateBySettingVariables( - editFragment, - settingFannelConList, - editFragment.recordNumToMapNameValueInSettingHolder, - ) - } - - else -> { - val currentFannelConList = ReadText( - File(UsePath.cmdclickDefaultAppDirPath, currentFannelName).absolutePath - ).textToList() - EditedTextContents.updateByCommandVariables( - editFragment, - currentFannelConList, - editFragment.recordNumToMapNameValueInCommandHolder, - ) - } - } - EditedTextContents.save( - editFragment, - currentFannelName, - editedShellContentsList, - isSettingEdit - ) - } -} diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/ToolbarButtonProducerForEdit.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/ToolbarButtonProducerForEdit.kt deleted file mode 100755 index 9396688d9..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/ToolbarButtonProducerForEdit.kt +++ /dev/null @@ -1,342 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment.processor - -import android.content.Context -import android.graphics.drawable.Drawable -import android.view.Gravity -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.* -import androidx.appcompat.widget.AppCompatImageView -import androidx.appcompat.widget.LinearLayoutCompat -import com.bumptech.glide.Glide -import com.bumptech.glide.RequestBuilder -import com.bumptech.glide.load.engine.DiskCacheStrategy -import com.puutaro.commandclick.R -import com.puutaro.commandclick.activity_lib.event.lib.terminal.ExecSetToolbarButtonImage -import com.puutaro.commandclick.common.variable.res.CmdClickIcons -import com.puutaro.commandclick.custom_view.OutlineTextView -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.edit_fragment.common.ToolbarButtonBariantForEdit -import com.puutaro.commandclick.proccess.history.fannel_history.FannelHistoryButtonEvent -import com.puutaro.commandclick.proccess.tool_bar_button.ToolbarButtonHandler -import com.puutaro.commandclick.util.image_tools.ScreenSizeCalculator - - -object ToolbarButtonProducerForEdit { - -// var languageType = LanguageTypeSelects.JAVA_SCRIPT -// var languageTypeToSectionHolderMap = -// CommandClickScriptVariable.LANGUAGE_TYPE_TO_SECTION_HOLDER_MAP.get( -// languageType -// ) -// var settingSectionStart = languageTypeToSectionHolderMap?.get( -// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_START -// ) as String -// -// var settingSectionEnd = languageTypeToSectionHolderMap?.get( -// CommandClickScriptVariable.HolderTypeName.SETTING_SEC_END -// ) as String - - fun make( - editFragment: EditFragment, - toolbarButtonBariantForEdit: ToolbarButtonBariantForEdit, - ) { - val context = editFragment.context -// val toolbarButtonHandler = ToolbarButtonHandler( -// editFragment, -// ) - if( - !howSetButton( - editFragment, - toolbarButtonBariantForEdit - ) - || context == null - ) return - - - val buttonLayout = makeButtonLayout( - editFragment, - toolbarButtonBariantForEdit, - ) - val iconIdToCaption = editFragment.toolBarButtonIconMap[toolbarButtonBariantForEdit] - ?: Pair(R.drawable.icons8_ok, String()) - - - buttonLayout.findViewById(R.id.icon_caption_layout_image)?.let { - imageButtonView -> - setImageView( - editFragment, - imageButtonView, - toolbarButtonBariantForEdit, - iconIdToCaption - ) - } -// val imageView = makeImageView( -// editFragment, -// toolbarButtonBariantForEdit, -// iconIdToCaption -// ) - buttonLayout.findViewById(R.id.icon_caption_layout_caption)?.let { - captionTextView -> - setCaption( - captionTextView, - iconIdToCaption, - ) - } -// val textView = makeTextView( -// context, -// iconIdToCaption -// ) -// buttonLayout.addView(imageButtonView) -// buttonLayout.addView(captionTextView) - - - - -// insertImageButtonParam.weight = editFragment.buttonWeight -// val makeButtonView = ImageButton(context) -// ButtonColorSettingForToolbarButton.set( -// editFragment, -// toolbarButtonBariantForEdit, -// makeButtonView -// ) -//// makeButtonView.imageTintList = -//// context?.getColorStateList(R.color.terminal_color) -// makeButtonView.setBackgroundResource(android.R.drawable.list_selector_background) -// makeButtonView.setImageResource( -// editFragment.toolBarButtonIconMap[toolbarButtonBariantForEdit] -// ?: R.drawable.icons8_ok -// ) -// makeButtonView.backgroundTintList = -// context?.getColorStateList(R.color.white) -//// it.getColorStateList(R.color.terminal_color) -// -// ButtonStatusSettingsForToolbarButton.set( -// editFragment, -// toolbarButtonBariantForEdit, -// makeButtonView -// ) -// makeButtonView.layoutParams = insertImageButtonParam -// makeButtonView.tag = toolbarButtonBariantForEdit.str - buttonLayout.setOnLongClickListener { - buttonInnerView -> - onLongClickHandler( - editFragment, - buttonLayout, -// makeButtonView, - toolbarButtonBariantForEdit, -// recordNumToMapNameValueInCommandHolder, -// recordNumToMapNameValueInSettingHolder, - ) - true - } - - buttonLayout.setOnClickListener { view -> - when (toolbarButtonBariantForEdit) { - ToolbarButtonBariantForEdit.HISTORY -> { - FannelHistoryButtonEvent.invoke(editFragment) -// val editExecuteTerminalFragment = TargetFragmentInstance() -// .getFromFragment( -// editFragment.activity, -// context.getString(R.string.edit_terminal_fragment) -// ) -// if( -// editExecuteTerminalFragment != null -// ){ -// val listener = context as? EditFragment.OnKeyboardVisibleListenerForEditFragment -// listener?.onKeyBoardVisibleChangeForEditFragment( -// false, -// true -// ) -// } -// HistoryButtonSwitcher.switch( -// editFragment, -// editFragment.context?.getString( -// R.string.edit_terminal_fragment -// ), -// editFragment.historySwitch, -// urlHistoryButtonEvent, -// CLICLTYPE.SHORT -// ) - return@setOnClickListener - } - ToolbarButtonBariantForEdit.SETTING, - ToolbarButtonBariantForEdit.OK, - ToolbarButtonBariantForEdit.EDIT, - ToolbarButtonBariantForEdit.EXTRA, - -> { - ToolbarButtonHandler.handle( - editFragment, - false, - toolbarButtonBariantForEdit, - buttonLayout -// makeButtonView, - ) - } - ToolbarButtonBariantForEdit.CANCEL -> {} - } - } - editFragment.binding.editToolbarLinearLayout.addView( - buttonLayout -// makeButtonView - ) - } - - private fun makeButtonLayout( - editFragment: EditFragment, - toolbarButtonBariantForEdit: ToolbarButtonBariantForEdit, - ): FrameLayout { - val context = editFragment.context - val inflater = LayoutInflater.from(context) - val buttonLayout = inflater.inflate( - R.layout.icon_caption_layout, - null - ) as FrameLayout -// val buttonLayout = FrameLayout(context as Context) - buttonLayout.tag = toolbarButtonBariantForEdit.str -// val outValue = TypedValue() -// context.theme -// .resolveAttribute(android.R.attr.selectableItemBackground, outValue, true) -// buttonLayout.setBackgroundResource(outValue.resourceId) -// buttonLayout.setBackgroundResource(android.R.drawable.list_selector_background) - val param = LinearLayoutCompat.LayoutParams( - 0, - LinearLayoutCompat.LayoutParams.MATCH_PARENT, - ) - val marginDp = ScreenSizeCalculator.toDp( - context, - context?.resources?.getDimension(R.dimen.toolbar_button_horizon_margin) ?: 0 - ) - param.marginStart = marginDp - param.marginEnd = marginDp - param.gravity = Gravity.CENTER - param.weight = editFragment.buttonWeight - buttonLayout.layoutParams = param -// buttonLayout.orientation = LinearLayoutCompat.VERTICAL - return buttonLayout - } - - private fun setCaption( - captionTextView: OutlineTextView, - iconIdToCaption: Pair - ) { - captionTextView.text =iconIdToCaption.second.ifEmpty { - val iconId = iconIdToCaption.first - CmdClickIcons.values().firstOrNull { - it.id == iconId - }?.str ?: String() - } - captionTextView.setStrokeColor(R.color.white) - captionTextView.setFillColor(R.color.fill_gray) - } - -// private fun makeTextView( -// context: Context, -// iconIdToCaption: Pair -// ): AppCompatTextView { -// val textView = AppCompatTextView(context) -// val paramForTextView = LinearLayoutCompat.LayoutParams( -// ViewGroup.LayoutParams.MATCH_PARENT, -// ViewGroup.LayoutParams.MATCH_PARENT, -// ) -// val horizonMargin = ScreenSizeCalculator.toDp(context, 4) -// paramForTextView.marginStart = horizonMargin -// paramForTextView.marginEnd = horizonMargin -// paramForTextView.gravity = Gravity.CENTER -// textView.layoutParams = paramForTextView -// textView.gravity = Gravity.CENTER -// textView.text = iconIdToCaption.second.ifEmpty { -// val iconId = iconIdToCaption.first -// CmdClickIcons.values().firstOrNull { -// it.id == iconId -// }?.str ?: String() -// } -// textView.textSize = 12f -// textView.inputType = InputType.TYPE_CLASS_TEXT -// textView.maxLines = 1 -// textView.setTypeface(null, Typeface.BOLD) -// textView.ellipsize = TextUtils.TruncateAt.END -// return textView -// } - - private fun setImageView( - editFragment: EditFragment, - imageView: AppCompatImageView, - toolbarButtonBariantForEdit: ToolbarButtonBariantForEdit, - iconIdToCaption: Pair - ): AppCompatImageView{ -// val dpSize = ScreenSizeCalculator.toDp(context, 40) - val imageViewContext = imageView.context - val iconId = iconIdToCaption.first - imageView.tag = CmdClickIcons.values().firstOrNull { - it.id == iconId - }?.str ?: toolbarButtonBariantForEdit.str -// imageView.imageTintList = null -// imageView.backgroundTintList = imageViewContext.getColorStateList(R.color.white) -// imageView.scaleType = ImageView.ScaleType.FIT_CENTER - val icon = CmdClickIcons.values().firstOrNull { - it.id == iconId - } - val requestBuilder: RequestBuilder = - Glide.with(imageViewContext) - .asDrawable() - .sizeMultiplier(0.1f) - val isImageFile = - ExecSetToolbarButtonImage.isImageFile(icon?.assetsPath) - when(isImageFile && icon != null) { - true -> ExecSetToolbarButtonImage.setForEditFragment( - editFragment, - ) - else -> Glide.with(imageViewContext) - .load(iconId) - .skipMemoryCache(true) - .diskCacheStrategy(DiskCacheStrategy.NONE) - .thumbnail(requestBuilder) - .into(imageView) - } - return imageView - } - - private fun howSetButton( - editFragment: EditFragment, - toolbarButtonBariantForEdit: ToolbarButtonBariantForEdit - ): Boolean { - return editFragment.toolBarButtonVisibleMap.filter { - it.key == toolbarButtonBariantForEdit - }.values.firstOrNull() ?: true - } - - private fun onLongClickHandler( - editFragment: EditFragment, - buttonLayout: FrameLayout, -// settingButtonView: ImageButton, - toolbarButtonBariantForEdit: ToolbarButtonBariantForEdit, - ){ - when (toolbarButtonBariantForEdit) { - ToolbarButtonBariantForEdit.HISTORY -> { -// HistoryButtonSwitcher.switch( -// editFragment, -// editFragment.context?.getString( -// R.string.edit_terminal_fragment -// ), -// editFragment.historySwitch, -// urlHistoryButtonEvent, -// CLICLTYPE.LONG -// ) - } - ToolbarButtonBariantForEdit.SETTING, - ToolbarButtonBariantForEdit.OK, - ToolbarButtonBariantForEdit.EDIT, - ToolbarButtonBariantForEdit.EXTRA -> { - ToolbarButtonHandler.handle( - editFragment, - true, - toolbarButtonBariantForEdit, - buttonLayout -// settingButtonView, - ) - } - ToolbarButtonBariantForEdit.CANCEL -> {} - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/WebSearchToolbarManagerForEdit.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/WebSearchToolbarManagerForEdit.kt deleted file mode 100755 index b975fa9b2..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/WebSearchToolbarManagerForEdit.kt +++ /dev/null @@ -1,97 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment.processor - -import android.text.Editable -import android.text.TextWatcher -import android.view.KeyEvent -import android.view.View -import androidx.appcompat.widget.LinearLayoutCompat -import com.puutaro.commandclick.common.variable.variant.ReadLines -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.command_index_fragment.list_view_lib.internet_button.GoogleSuggest -import com.puutaro.commandclick.proccess.js_macro_libs.toolbar_libs.EditLongPressType -import com.puutaro.commandclick.proccess.js_macro_libs.toolbar_libs.EditToolbarSwitcher -import com.puutaro.commandclick.proccess.UrlTexter -import com.puutaro.commandclick.util.Keyboard - -object WebSearchToolbarManagerForEdit { - - fun setKeyListener( - cmdEditFragment: EditFragment - ){ - - val binding = cmdEditFragment.binding - val webSearch = binding.webSearch - val cmdWebSearchEditText = webSearch.cmdWebSearchEditText - cmdWebSearchEditText.setOnKeyListener(object : View.OnKeyListener { - override fun onKey(v: View?, keyCode: Int, event: KeyEvent): Boolean { - if (event.getAction() != KeyEvent.ACTION_DOWN || - keyCode != KeyEvent.KEYCODE_ENTER - ) return false - Keyboard.hiddenKeyboardForFragment( - cmdEditFragment - ) - if( - cmdWebSearchEditText.text.isNullOrEmpty() - ) return false - UrlTexter.launch( - cmdEditFragment, - cmdWebSearchEditText, - cmdWebSearchEditText.text.toString() - ) - return false - } - }) - } - - fun setGoogleSuggest( - cmdEditFragment: EditFragment - ){ - val binding = cmdEditFragment.binding - val webSearch = binding.webSearch - val cmdWebSearchEditText = webSearch.cmdWebSearchEditText - val googleSuggest = GoogleSuggest( - cmdEditFragment, - cmdWebSearchEditText - ) - cmdWebSearchEditText.addTextChangedListener(object : TextWatcher { - override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} - override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { - if( - !cmdWebSearchEditText.hasFocus() - ) return - val linearLayoutParam = - cmdEditFragment.binding.editFragment.layoutParams as LinearLayoutCompat.LayoutParams - val editFragmentWeight = linearLayoutParam.weight - if( - editFragmentWeight == ReadLines.LONGTH - ) { - cmdWebSearchEditText.threshold = 100000 - return - } - try { - googleSuggest.set(cmdWebSearchEditText.text) - } catch (e: Exception){ - print("pass") - } - } - override fun afterTextChanged(s: Editable?) { - if(!cmdWebSearchEditText.hasFocus()) return - } - }) - } - - fun setCancelListener( - cmdEditFragment: EditFragment - ){ - val binding = cmdEditFragment.binding - val webSearch = binding.webSearch - val webSearchCancel = webSearch.webSearchCancel - webSearchCancel.setOnClickListener { - cancelView -> - EditToolbarSwitcher.switch( - cmdEditFragment, - EditLongPressType.NORMAL.jsMacro - ) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/lib/EditedTextContents.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/lib/EditedTextContents.kt deleted file mode 100755 index b680b9564..000000000 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/processor/lib/EditedTextContents.kt +++ /dev/null @@ -1,141 +0,0 @@ -package com.puutaro.commandclick.fragment_lib.edit_fragment.processor.lib - -import com.puutaro.commandclick.common.variable.path.UsePath -import com.puutaro.commandclick.common.variable.variables.CommandClickScriptVariable -import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects -import com.puutaro.commandclick.common.variable.settings.FannelInfoSetting -import com.puutaro.commandclick.fragment.EditFragment -import com.puutaro.commandclick.fragment_lib.edit_fragment.variable.EditTextIdForEdit -import com.puutaro.commandclick.proccess.CommentOutLabelingSection -import com.puutaro.commandclick.proccess.edit.lib.ScriptContentsLister -import com.puutaro.commandclick.util.CommandClickVariables.substituteCmdClickVariable -import com.puutaro.commandclick.util.CommandClickVariables.extractValListFromHolder -import com.puutaro.commandclick.util.file.FileSystems -import com.puutaro.commandclick.util.str.ScriptPreWordReplacer -import com.puutaro.commandclick.util.edit_tool.CcEditComponent -import com.puutaro.commandclick.util.state.FannelStateRooterManager -import java.io.File - - -object EditedTextContents { - - val settingSectionStart = CommandClickScriptVariable.SETTING_SEC_START - val settingSectionEnd = CommandClickScriptVariable.SETTING_SEC_END - - fun updateByCommandVariables( - editFragment: EditFragment, - scriptContentsList: List, - recordNumToMapNameValueInCommandHolder: Map?>?, - ): List { - val fannelInfoMap = editFragment.fannelInfoMap - val currentScriptFileName = fannelInfoMap.get( - FannelInfoSetting.current_fannel_name.name - ) ?: FannelInfoSetting.current_fannel_name.defalutStr - return if( - recordNumToMapNameValueInCommandHolder.isNullOrEmpty() -// || editFragment.existIndexList - ) { - scriptContentsList - } else { - ScriptContentsLister.update( - CcEditComponent.makeEditLinearLayoutList(editFragment), - recordNumToMapNameValueInCommandHolder, - scriptContentsList, - EditTextIdForEdit.COMMAND_VARIABLE.id - ) - } - } - - fun updateBySettingVariables( - editFragment: EditFragment, - editedScriptContentsList: List, - recordNumToMapNameValueInSettingHolder: Map?>? = null - ): List { - return if (recordNumToMapNameValueInSettingHolder == null) { - editedScriptContentsList - } else { - ScriptContentsLister.update( - CcEditComponent.makeEditLinearLayoutList(editFragment), - recordNumToMapNameValueInSettingHolder, - editedScriptContentsList, - EditTextIdForEdit.SETTING_VARIABLE.id - ) - } - } - - fun save( - editFragment: EditFragment, - currentScriptFileName: String, - lastScriptContentsList: List, - isSettingEdit: Boolean - ){ - if( - lastScriptContentsList.isEmpty() - ) return - - val submitScriptContentsList = CommentOutLabelingSection.commentOut( - lastScriptContentsList, -// currentScriptFileName - ) - val settingFannelPath = when( - isSettingEdit - ){ - true -> FannelStateRooterManager.getSettingFannelPath( - editFragment.fannelInfoMap, - editFragment.setReplaceVariableMap - ) - else -> File( - UsePath.cmdclickDefaultAppDirPath, - currentScriptFileName, - ).absolutePath - } - FileSystems.writeFile( - settingFannelPath, - submitScriptContentsList.joinToString("\n") - ) - judgeAndUpdateWeekAgoLastModify( - submitScriptContentsList, - currentScriptFileName, - ) - } - - private fun judgeAndUpdateWeekAgoLastModify( - submitScriptContentsList: List, - currentScriptFileName: String, - ){ - if( - howUpdateLastModify( - submitScriptContentsList, - currentScriptFileName, - ) - ) return - FileSystems.updateWeekPastLastModified( - File( - UsePath.cmdclickDefaultAppDirPath, - currentScriptFileName - ).absolutePath - ) - } - - private fun howUpdateLastModify( - submitScriptContentsList: List, - currentScriptFileName: String, - ): Boolean { - val settingVariableList = extractValListFromHolder( - submitScriptContentsList, - settingSectionStart, - settingSectionEnd - )?.joinToString("\n")?.let { - ScriptPreWordReplacer.replace( - it, -// cmdclickDefaultAppDirPath, - currentScriptFileName, - ) - }?.split("\n") - return substituteCmdClickVariable( - settingVariableList, - CommandClickScriptVariable.ON_UPDATE_LAST_MODIFY - ) != SettingVariableSelects.OnUpdateLastModifySelects.OFF.name - } - -} diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/variable/EditTextIdForEdit.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/variable/EditTextIdForEdit.kt index 9e6783769..46487cf57 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/variable/EditTextIdForEdit.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/edit_fragment/variable/EditTextIdForEdit.kt @@ -1,8 +1,8 @@ package com.puutaro.commandclick.fragment_lib.edit_fragment.variable -enum class EditTextIdForEdit( - val id: Int - ) { - SETTING_VARIABLE(20000), - COMMAND_VARIABLE(30000) -} \ No newline at end of file +//enum class EditTextIdForEdit( +// val id: Int +// ) { +// SETTING_VARIABLE(20000), +// COMMAND_VARIABLE(30000) +//} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/BroadcastHandlerForTerm.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/BroadcastHandlerForTerm.kt index 1e17030bc..e96d6ef88 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/BroadcastHandlerForTerm.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/BroadcastHandlerForTerm.kt @@ -1,17 +1,25 @@ package com.puutaro.commandclick.fragment_lib.terminal_fragment import android.content.Intent +import androidx.appcompat.widget.AppCompatEditText +import androidx.core.view.isVisible +import androidx.recyclerview.widget.RecyclerView +import com.puutaro.commandclick.R import com.puutaro.commandclick.common.variable.broadcast.extra.PocketWebviewLaunchExtra import com.puutaro.commandclick.common.variable.broadcast.extra.PocketWebviewLoadUrlExtra import com.puutaro.commandclick.common.variable.broadcast.scheme.BroadCastIntentSchemeTerm +import com.puutaro.commandclick.component.adapter.EditConstraintListAdapter +import com.puutaro.commandclick.component.adapter.lib.edit_list_adapter.ListViewToolForEditListAdapter import com.puutaro.commandclick.fragment.TerminalFragment import com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.receiver.BroadcastHtmlReceiveHandler +import com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.receiver.ErrLogBroadcastManagerForTerm import com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.receiver.HtmlLauncher import com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.receiver.JsDebugger import com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.receiver.MonitorBroadcastManager import com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.receiver.MonitorTextLauncher import com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.receiver.MonitorToast import com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.receiver.PocketWebViewLancher +import com.puutaro.commandclick.proccess.edit_list.config_settings.ListSettingsForEditList import com.puutaro.commandclick.util.state.TargetFragmentInstance object BroadcastHandlerForTerm { @@ -20,7 +28,7 @@ object BroadcastHandlerForTerm { intent: Intent, ){ val action = intent.action - val termBroadcastType = BroadCastIntentSchemeTerm.values().firstOrNull { + val termBroadcastType = BroadCastIntentSchemeTerm.entries.firstOrNull { it.action == action } ?: return when(termBroadcastType){ @@ -98,6 +106,42 @@ object BroadcastHandlerForTerm { cmdindexSelectionSearchButton, ) } + BroadCastIntentSchemeTerm.EDIT_INDEX_LIST_UPDATE -> { + val editListRecyclerView = + terminalFragment.editListDialogForOrdinaryRevolver + ?.getActiveEditListOrdinaryDialog()?.findViewById( + R.id.edit_list_dialog_recycler_view + ) ?: return + val editListSearchEditText = + terminalFragment.editListDialogForOrdinaryRevolver + ?.getActiveEditListOrdinaryDialog()?.findViewById( + R.id.edit_list_dialog_search_edit_text + ) + val editConstraintListAdapter = editListRecyclerView.adapter as EditConstraintListAdapter + if(editListSearchEditText?.isVisible == true) { + editListSearchEditText.setText(String()) + } + ListViewToolForEditListAdapter.editListUpdateFileList( + editConstraintListAdapter, + ListSettingsForEditList.EditListMaker.makeLineMapListHandler( + editConstraintListAdapter.fannelInfoMap, + editConstraintListAdapter.setReplaceVariableMap, + editConstraintListAdapter.indexListMap, + editConstraintListAdapter.busyboxExecutor, + ) + ) + } + BroadCastIntentSchemeTerm.SETING_ACTION_FUNC -> { +// SettingActionFuncBroadcastManager.handle( +// intent +// ) + } + BroadCastIntentSchemeTerm.ERR_LOG -> { + ErrLogBroadcastManagerForTerm.handle( + terminalFragment.context, + intent, + ) + } } } } \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/ButtonImageCreator.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/ButtonImageCreator.kt index 8fa58feeb..73cb4f9e9 100644 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/ButtonImageCreator.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/ButtonImageCreator.kt @@ -5,7 +5,6 @@ import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.Color -import android.graphics.Matrix import android.graphics.Paint import android.graphics.PorterDuff import android.graphics.PorterDuffXfermode @@ -66,7 +65,7 @@ object ButtonImageCreator { BitmapFactory.decodeByteArray(it, 0, it.size) } } - val assetsPathList = CmdClickIcons.values().map { + val assetsPathList = CmdClickIcons.entries.map { it.assetsPath } execCreate( @@ -84,6 +83,7 @@ object ButtonImageCreator { context, listOf(CmdClickIcons.GOOGLE.assetsPath), defaultUrlCapBitmap, + null, ) // withContext(Dispatchers.IO){ // FileSystems.updateFile( @@ -118,26 +118,34 @@ object ButtonImageCreator { (1..4).random() % 4 <= 2 ) return@async } - val originalImagePath = capturePartPngDirPathList.shuffled().firstOrNull()?.let { - dirPath -> - if( - dirPath.isEmpty() - ) return@let null - FileSystems.sortedFiles(dirPath).shuffled().firstOrNull()?.let fileList@ { - if( - it.isEmpty() - ) return@fileList null - File(dirPath, it).absolutePath - } - } - val byteArray = cropImage( + val byteArray = ExecButtonImageCreator.create( context, assetsPath, - originalImagePath, + capturePartPngDirPathList, defaultUrlCapBitmap, null, - null, + BitmapTool.GradientBitmap.GradOrient.BOTH, ) ?: return@async +// val originalImagePath = capturePartPngDirPathList.shuffled().firstOrNull()?.let { +// dirPath -> +// if( +// dirPath.isEmpty() +// ) return@let null +// FileSystems.sortedFiles(dirPath).shuffled().firstOrNull()?.let fileList@ { +// if( +// it.isEmpty() +// ) return@fileList null +// File(dirPath, it).absolutePath +// } +// } +// val byteArray = cropImage( +// context, +// assetsPath, +// originalImagePath, +// defaultUrlCapBitmap, +// null, +// null, +// ) ?: return@async FileSystems.writeFromByteArray( toolbarButtonImageFile.absolutePath, @@ -150,6 +158,38 @@ object ButtonImageCreator { } } + object ExecButtonImageCreator{ + fun create( + context: Context?, + assetsPath: String, + capturePartPngDirPathList: List, + defaultUrlCapBitmap: Bitmap?, + centerColorStr: String?, + gradOrient: BitmapTool.GradientBitmap.GradOrient, + ): ByteArray? { + val originalImagePath = capturePartPngDirPathList.shuffled().firstOrNull()?.let { + dirPath -> + if( + dirPath.isEmpty() + ) return@let null + FileSystems.sortedFiles(dirPath).shuffled().firstOrNull()?.let fileList@ { + if( + it.isEmpty() + ) return@fileList null + File(dirPath, it).absolutePath + } + } + return cropImage( + context, + assetsPath, + originalImagePath, + defaultUrlCapBitmap, + centerColorStr, + gradOrient, + ) + } + } + object SelectionBarButton { @@ -173,6 +213,7 @@ object ButtonImageCreator { context: Context?, assetsPathList: List, defaultUrlCapBitmap: Bitmap?, + centerColorStr: String?, ) { val capturePartPngDirPathList = makeCapturePartPngDirPathList() val concurrentLimit = 5 @@ -218,8 +259,8 @@ object ButtonImageCreator { assetsPath, originalImagePath, defaultUrlCapBitmap, - ccGradColorList.random(), - ccGradColorList.random(), + centerColorStr, + BitmapTool.GradientBitmap.GradOrient.BOTH, ) ?: return@async FileSystems.writeFromByteArray( selectionBarImageFile.absolutePath, @@ -271,16 +312,15 @@ object ButtonImageCreator { } } - private suspend fun cropImage( + private fun cropImage( context: Context?, maskAssetsPath: String, originalImagePath: String?, defaultUrlCapBitmap: Bitmap?, - startGradColor: String?, - endGradColor: String? + centerColorStr: String?, + gradOrient: BitmapTool.GradientBitmap.GradOrient, ): ByteArray? { - val original = withContext(Dispatchers.IO) { - when(originalImagePath.isNullOrEmpty()){ + val original = when(originalImagePath.isNullOrEmpty()){ true -> defaultUrlCapBitmap else -> BitmapTool.convertFileToBitmap( originalImagePath @@ -292,57 +332,62 @@ object ButtonImageCreator { 300.0 ) ) - } - } ?: return null - val maskByteArray = withContext(Dispatchers.IO) { - AssetsFileManager.assetsByteArray( + } ?: return null + val maskByteArray = AssetsFileManager.assetsByteArray( context, maskAssetsPath - ) - }?: return null - val src = withContext(Dispatchers.IO) { - BitmapFactory.decodeByteArray( + ) ?: return null + val src = BitmapFactory.decodeByteArray( maskByteArray, 0, maskByteArray.size ) - } - val output = withContext(Dispatchers.IO) { - Bitmap.createBitmap( + val output = Bitmap.createBitmap( src.width, src.height, Bitmap.Config.ARGB_8888 ) - } - val outBitmap = withContext(Dispatchers.IO) { + val outBitmap = let { val paint = Paint(Paint.ANTI_ALIAS_FLAG) paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.DST_IN) val canvas = Canvas(output) canvas.drawBitmap(original, 0f, 0f, null) paint.color = -0x1000000 canvas.drawBitmap(src, 0f, 0f, paint) - return@withContext output + return@let output } val cornerDips = (2..8).random() + val colorIntArray = listOf( + colorList.random(), + centerColorStr ?: colorList.random(), + colorList.random() + ).map { + Color.parseColor(it) + }.toIntArray() val bkBitmapSrc = BitmapTool.GradientBitmap.makeGradientBitmap2( original.width, original.height, - startGradColor ?: colorList.random(), - endGradColor ?: colorList.random(), + colorIntArray, + gradOrient, ) - val overBitmap = overlayBitmap( + val overBitmap = BitmapTool.ImageTransformer.overlayBitmap( bkBitmapSrc, outBitmap, - ) ?: return null - val resultBitmap = getRoundedCornerBitmap( + ) + val resultBitmap = BitmapTool.ImageTransformer.roundCorner( context, overBitmap, cornerDips, ) ?: return null +// getRoundedCornerBitmap( +// context, +// overBitmap, +// cornerDips, +// ) ?: return null return BitmapTool.convertBitmapToByteArray(resultBitmap) } - private fun makeCapturePartPngDirPathList(): List { + fun makeCapturePartPngDirPathList(): List { val lastModifyExtend = UrlHistoryPath.lastModifyExtend val partPngDirName = UrlHistoryPath.partPngDirName val captureDirPath = UrlHistoryPath.makeCaptureHistoryDirPath() @@ -373,20 +418,6 @@ object ButtonImageCreator { return Bitmap.createBitmap(bitmap, startX, startY, widthPx, heightPx, null, false) } - - private fun overlayBitmap(bitmapBackground: Bitmap, bitmapImage: Bitmap): Bitmap? { - val bitmap2Width = bitmapImage.width - val bitmap2Height = bitmapImage.height - val marginLeft = (bitmapBackground.width * 0.5 - bitmap2Width * 0.5).toFloat() - val marginTop = (bitmapBackground.height * 0.5 - bitmap2Height * 0.5).toFloat() - val overlayBitmap = - Bitmap.createBitmap(bitmap2Width, bitmap2Height, bitmapBackground.config) - val canvas = Canvas(overlayBitmap) - canvas.drawBitmap(bitmapBackground, Matrix(), null) - canvas.drawBitmap(bitmapImage, marginLeft, marginTop, null) - return overlayBitmap - } - private fun getRoundedCornerBitmap( context: Context?, bitmap: Bitmap, diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/ConfigFromPreferenceFileSetterForTerm.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/ConfigFromPreferenceFileSetterForTerm.kt index ac7543448..e38457766 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/ConfigFromPreferenceFileSetterForTerm.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/ConfigFromPreferenceFileSetterForTerm.kt @@ -217,6 +217,7 @@ object ConfigFromPreferenceFileSetterForTerm { CommandClickScriptVariable.TERMINAL_DO_DEFAULT_VALUE ) terminalFragment.ignoreHistoryPathList = ListSettingVariableListMaker.makeFromSettingVariableList( + context, CommandClickScriptVariable.IGNORE_HISTORY_PATHS, terminalFragment.fannelInfoMap, terminalFragment.setReplaceVariableMap, @@ -349,6 +350,7 @@ object ConfigFromPreferenceFileSetterForTerm { CommandClickScriptVariable.TERMINAL_DO_DEFAULT_VALUE ) terminalFragment.ignoreHistoryPathList = ListSettingVariableListMaker.makeFromSettingVariableList( + context, CommandClickScriptVariable.IGNORE_HISTORY_PATHS, terminalFragment.fannelInfoMap, terminalFragment.setReplaceVariableMap, @@ -545,6 +547,7 @@ private fun makeSettingVariableListForTerm( settingSectionEnd ) return FannelStateRooterManager.makeSettingVariableList( + terminalFragment.context, terminalFragment.fannelInfoMap, terminalFragment.setReplaceVariableMap, settingSectionStart, diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/DisplaySwitch.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/DisplaySwitch.kt index e23c1fe7b..82a197a5c 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/DisplaySwitch.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/DisplaySwitch.kt @@ -182,8 +182,8 @@ private fun setWebView( webView.loadDataWithBaseURL( "", TxtHtmlDescriber.make( + terminalFragment, launchUrl, - terminalFragment ), "text/html", "utf-8", diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/FannelHistoryGifCreator.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/FannelHistoryGifCreator.kt index 3db32582e..180872999 100644 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/FannelHistoryGifCreator.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/FannelHistoryGifCreator.kt @@ -14,6 +14,7 @@ import com.puutaro.commandclick.util.file.FileSystems import com.puutaro.commandclick.util.file.ReadText import com.puutaro.commandclick.util.file.UrlFileSystems import com.puutaro.commandclick.util.image_tools.BitmapTool +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.async @@ -44,28 +45,27 @@ object FannelHistoryGifCreator { val concurrentLimit = 5 val semaphore = Semaphore(concurrentLimit) val tag = terminalFragment.tag - gifCreateJob = terminalFragment.lifecycleScope.launch { - terminalFragment.repeatOnLifecycle(Lifecycle.State.STARTED) { - if( - !tag.isNullOrEmpty() - && tag != terminalFragment.context?.getString(R.string.index_terminal_fragment) - ) return@repeatOnLifecycle - val fannelList = withContext(Dispatchers.IO) { - UrlFileSystems.getFannelList( - context - ).split("\n").filter { - it.isNotEmpty() - } - } - val fannelNameList = withContext(Dispatchers.IO) { - UrlFileSystems.extractFannelNameList(fannelList) - } - val urlPrtPngMap = withContext(Dispatchers.IO) { - makeUrlPrtPngMapList( - fannelNameList, - fannelList, - ) + gifCreateJob = CoroutineScope(Dispatchers.IO).launch { + if( + !tag.isNullOrEmpty() + && tag != terminalFragment.context?.getString(R.string.index_terminal_fragment) + ) return@launch + val fannelList = withContext(Dispatchers.IO) { + UrlFileSystems.getFannelList( + context + ).split("\n").filter { + it.isNotEmpty() } + } + val fannelNameList = withContext(Dispatchers.IO) { + UrlFileSystems.extractFannelNameList(fannelList) + } + val urlPrtPngMap = withContext(Dispatchers.IO) { + makeUrlPrtPngMapList( + fannelNameList, + fannelList, + ) + } // FileSystems.writeFile( // File(UsePath.cmdclickDefaultAppDirPath, "gifList.txt").absolutePath, // listOf( @@ -75,46 +75,46 @@ object FannelHistoryGifCreator { //// "partPngMap: ${partPngMap}", // ).joinToString("\n############\n") + "\n----------------\n" // ) - withContext(Dispatchers.IO) { - val jobList = urlPrtPngMap.map { - map -> + withContext(Dispatchers.IO) { + val jobList = urlPrtPngMap.map { + map -> // if( // !isActive() // ) return@withContext - async { + async { // if( // !isActive() // ) return@async - semaphore.withPermit { + semaphore.withPermit { // if( // !isActive() // ) return@withPermit - val fannelName = map.key - val urlPngPathList = map.value + val fannelName = map.key + val urlPngPathList = map.value // val appDirName = withContext(Dispatchers.IO) { // FannelHistoryManager.getAppDirNameFromAppHistoryFileName( // historyName // ) // } // val appDirPath = File(cmdclickAppDirPath, appDirName).absolutePath - val designList = makeDesignConList( - fannelName, + val designList = makeDesignConList( + fannelName, // appDirName, - urlPngPathList, - ) - val captureGifDesignConList = FannelHistoryPath.getCaptureGifDesignPath( + urlPngPathList, + ) + val captureGifDesignConList = FannelHistoryPath.getCaptureGifDesignPath( // appDirPath, - fannelName, - ).let { - ReadText(it).textToList() - } - val gifPath = FannelHistoryPath.getCaptureGifPath( + fannelName, + ).let { + ReadText(it).textToList() + } + val gifPath = FannelHistoryPath.getCaptureGifPath( // appDirPath, - fannelName, - ) - val isRecreateGif = - !File(gifPath).isFile - || captureGifDesignConList != designList + fannelName, + ) + val isRecreateGif = + !File(gifPath).isFile + || captureGifDesignConList != designList // if(historyName.contains("newsSpeecher")) { // FileSystems.updateFile( // File( @@ -130,20 +130,19 @@ object FannelHistoryGifCreator { // ).joinToString("\n") + "\n-----------\n" // ) // } - if ( - !isRecreateGif + if ( + !isRecreateGif // || !isActive() - ) return@withPermit - GifCreator.create( - context, - fannelName, - urlPngPathList, - ) - } + ) return@withPermit + GifCreator.create( + context, + fannelName, + urlPngPathList, + ) } } - jobList.forEach { it.await() } } + jobList.forEach { it.await() } } } } diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/GifCreateMonitor.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/GifCreateMonitor.kt index ae130f2d9..ac958fd73 100644 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/GifCreateMonitor.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/GifCreateMonitor.kt @@ -57,13 +57,13 @@ object GifCreateMonitor { if( firstUpdateDirName.isNullOrEmpty() ) { - FileSystems.writeFile( - File(UsePath.cmdclickDefaultAppDirPath, "urlHIsgif.txt").absolutePath, - listOf( - "${LocalDateTime.now()}}", - "firstUpdateDirName ${firstUpdateDirName}", - ).joinToString("\n") - ) +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "urlHIsgif.txt").absolutePath, +// listOf( +// "${LocalDateTime.now()}}", +// "firstUpdateDirName ${firstUpdateDirName}", +// ).joinToString("\n") +// ) continue } // val captureUniqueDirPath = getCaptureUniqueDirPath( @@ -90,16 +90,16 @@ object GifCreateMonitor { } val isDuplicate = curPngPathList.size == 1 || curPngPathList == previousPngList - FileSystems.writeFile( - File(UsePath.cmdclickDefaultAppDirPath, "urlHIsgif.txt").absolutePath, - listOf( - "${LocalDateTime.now()}", - "isDuplicate ${isDuplicate}", - "capturePartsPngDirPath ${capturePartsPngDirPath}", - "curPngPathList ${curPngPathList}", - "previousPngList ${previousPngList}", - ).joinToString("\n") - ) +// FileSystems.writeFile( +// File(UsePath.cmdclickDefaultAppDirPath, "urlHIsgif.txt").absolutePath, +// listOf( +// "${LocalDateTime.now()}", +// "isDuplicate ${isDuplicate}", +// "capturePartsPngDirPath ${capturePartsPngDirPath}", +// "curPngPathList ${curPngPathList}", +// "previousPngList ${previousPngList}", +// ).joinToString("\n") +// ) if( previousPngList.isEmpty() ){ diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/PinFannelBarManager.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/PinFannelBarManager.kt index f058d975d..db3a65375 100644 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/PinFannelBarManager.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/PinFannelBarManager.kt @@ -2,10 +2,7 @@ package com.puutaro.commandclick.fragment_lib.terminal_fragment import android.app.Dialog import android.content.Context -import android.view.Gravity -import android.view.ViewGroup -import androidx.appcompat.widget.AppCompatImageButton -import androidx.appcompat.widget.AppCompatTextView +import android.webkit.ValueCallback import androidx.cardview.widget.CardView import androidx.core.view.isVisible import androidx.fragment.app.Fragment @@ -17,6 +14,9 @@ import com.puutaro.commandclick.common.variable.fannel.SystemFannel import com.puutaro.commandclick.common.variable.path.UsePath import com.puutaro.commandclick.component.adapter.PinFannelAdapter import com.puutaro.commandclick.fragment.TerminalFragment +import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.dialog.JsDialog +import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.system.JsFannelInfo +import com.puutaro.commandclick.fragment_lib.terminal_fragment.proccess.libs.ExecJsInterfaceAdder import com.puutaro.commandclick.proccess.intent.EditExecuteOrElse import com.puutaro.commandclick.proccess.pin.PinFannelManager import com.puutaro.commandclick.util.FactFannel @@ -25,6 +25,7 @@ import com.puutaro.commandclick.util.file.ReadText import com.puutaro.commandclick.util.list.ListTool import com.puutaro.commandclick.util.map.CmdClickMap import com.puutaro.commandclick.util.map.FannelSettingMap +import com.puutaro.commandclick.util.state.FannelInfoTool import com.puutaro.commandclick.util.state.TargetFragmentInstance import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -142,9 +143,21 @@ object PinFannelBarManager { FactFannel.creatingToast() return } - FileSystems.updateLastModified( - File(cmdclickDefaultAppDirPath, fannelName).absolutePath + CoroutineScope(Dispatchers.IO).launch { + FileSystems.updateLastModified( + File(cmdclickDefaultAppDirPath, fannelName).absolutePath + ) + } + terminalFragment.editListDialogForOrdinaryRevolver?.show( + FannelInfoTool.makeFannelInfoMapByString( + fannelName, + String() + ).map { + "${it.key}=${it.value}" + }.joinToString(JsFannelInfo.fannelInfoMapSeparator.toString()), + "/storage/emulated/0/Documents/cmdclick/AppDir/default/textToSpeech2Dir/settings/editListConfig.js" ) + return EditExecuteOrElse.handle( terminalFragment, fannelName, @@ -247,7 +260,7 @@ object PinFannelBarManager { CoroutineScope(Dispatchers.Main).launch { withContext(Dispatchers.Main) { execLaunch( - fragment.context, + fragment, fannelName, recyclerView, pinFannelAdapter, @@ -257,73 +270,104 @@ object PinFannelBarManager { } } private fun execLaunch( - context: Context?, + fragment: Fragment, fannelName: String, recyclerView: RecyclerView, pinFannelAdapter: PinFannelAdapter, position: Int, ){ - if( - context == null - ) return - deleteConfirmDialog = Dialog( - context - ) - deleteConfirmDialog?.setContentView( - R.layout.confirm_text_dialog - ) - val confirmTitleTextView = - deleteConfirmDialog?.findViewById( - R.id.confirm_text_dialog_title - ) - val confirmTitle = "Delete pin ok?" - confirmTitleTextView?.text = confirmTitle - val confirmContentTextView = - deleteConfirmDialog?.findViewById( - R.id.confirm_text_dialog_text_view - ) - confirmContentTextView?.text = - SystemFannel.convertDisplayNameToFannelName(fannelName) - val confirmCancelButton = - deleteConfirmDialog?.findViewById( - R.id.confirm_text_dialog_cancel - ) - confirmCancelButton?.setOnClickListener { - deleteConfirmDialog?.dismiss() - deleteConfirmDialog = null - cancelProcess( - recyclerView, - position, - ) - } - deleteConfirmDialog?.setOnCancelListener { - deleteConfirmDialog?.dismiss() - deleteConfirmDialog = null - cancelProcess( - recyclerView, - position, - ) - } - val confirmOkButton = - deleteConfirmDialog?.findViewById( - R.id.confirm_text_dialog_ok - ) - confirmOkButton?.setOnClickListener { - deleteConfirmDialog?.dismiss() - deleteConfirmDialog = null - execDeleteFannel( - pinFannelAdapter, - position, + val context = fragment.context ?: return + + val terminalFragment = when(fragment){ + is TerminalFragment -> fragment + else -> TargetFragmentInstance.getCurrentTerminalFragmentFromFrag( + fragment.activity, ) - } - deleteConfirmDialog?.window?.setLayout( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT - ) - deleteConfirmDialog?.window?.setGravity( - Gravity.CENTER + } ?: return + val message = SystemFannel.convertDisplayNameToFannelName(fannelName) + val jsDialogStr = ExecJsInterfaceAdder.convertUseJsInterfaceName( + JsDialog::class.java.simpleName ) - deleteConfirmDialog?.show() + val confirmScript = """ + ${jsDialogStr}.confirm( + "Delete pin ok?", + "${message}", + ); + """.trimIndent() + terminalFragment.binding.terminalWebView.evaluateJavascript( + confirmScript, + ValueCallback { isDelete -> + when(isDelete){ + true.toString() -> execDeleteFannel( + pinFannelAdapter, + position, + ) + else -> cancelProcess( + recyclerView, + position, + ) + } + }) + + +// deleteConfirmDialog = Dialog( +// context +// ) +// deleteConfirmDialog?.setContentView( +// R.layout.confirm_text_dialog +// ) +// val confirmTitleTextView = +// deleteConfirmDialog?.findViewById( +// R.id.confirm_text_dialog_title +// ) +// val confirmTitle = "Delete pin ok?" +// confirmTitleTextView?.text = confirmTitle +// val confirmContentTextView = +// deleteConfirmDialog?.findViewById( +// R.id.confirm_text_dialog_text_view +// ) +// confirmContentTextView?.text = +// SystemFannel.convertDisplayNameToFannelName(fannelName) +// val confirmCancelButton = +// deleteConfirmDialog?.findViewById( +// R.id.confirm_text_dialog_cancel +// ) +// confirmCancelButton?.setOnClickListener { +// deleteConfirmDialog?.dismiss() +// deleteConfirmDialog = null +// cancelProcess( +// recyclerView, +// position, +// ) +// } +// deleteConfirmDialog?.setOnCancelListener { +// deleteConfirmDialog?.dismiss() +// deleteConfirmDialog = null +// cancelProcess( +// recyclerView, +// position, +// ) +// } +// val confirmOkButton = +// deleteConfirmDialog?.findViewById( +// R.id.confirm_text_dialog_ok +// ) +// confirmOkButton?.setOnClickListener { +// deleteConfirmDialog?.dismiss() +// deleteConfirmDialog = null +// execDeleteFannel( +// pinFannelAdapter, +// position, +// ) +// } +// deleteConfirmDialog?.window?.setLayout( +// ViewGroup.LayoutParams.MATCH_PARENT, +// ViewGroup.LayoutParams.WRAP_CONTENT +// ) +// deleteConfirmDialog?.window?.setGravity( +// Gravity.CENTER +// ) +// deleteConfirmDialog?.show() } private fun cancelProcess( diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/TermOnLongClickListener.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/TermOnLongClickListener.kt index f28c200ff..c0172b969 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/TermOnLongClickListener.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/TermOnLongClickListener.kt @@ -4,7 +4,7 @@ import android.os.Handler import android.os.Looper import android.webkit.WebView import androidx.core.view.isVisible -import com.blankj.utilcode.util.ToastUtils +import com.puutaro.commandclick.common.variable.path.UsePath import com.puutaro.commandclick.common.variable.variant.SettingVariableSelects import com.puutaro.commandclick.fragment.TerminalFragment import com.puutaro.commandclick.fragment_lib.terminal_fragment.proccess.LongPressForImage @@ -13,12 +13,14 @@ import com.puutaro.commandclick.fragment_lib.terminal_fragment.proccess.LongPres import com.puutaro.commandclick.proccess.broadcast.BroadCastIntent import com.puutaro.commandclick.util.JavaScriptLoadUrl import com.puutaro.commandclick.util.file.AssetsFileManager +import com.puutaro.commandclick.util.file.FileSystems import com.puutaro.commandclick.util.state.TargetFragmentInstance import com.puutaro.commandclick.util.url.WebUrlVariables import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import java.io.File import java.lang.ref.WeakReference @@ -134,12 +136,17 @@ object TermOnLongClickListener { ?: return@setOnLongClickListener false val longPressImageUrl = message.data.getString("src") ?: return@setOnLongClickListener false + val longPressImageText = message.data.getString("title") + ?.replace( + "(https?|ftp|file)://[^  \t]*".toRegex(), + String() + ) ?: return@setOnLongClickListener false if ( currentPageUrl?.startsWith(httpsStartStr) == true || currentPageUrl?.startsWith(httpStartStr) == true ) { longPressForSrcImageAnchor.launch( - terminalWebView.title, + longPressImageText, longPressLinkUrl, longPressImageUrl, currentUrl @@ -150,12 +157,16 @@ object TermOnLongClickListener { WebView.HitTestResult.SRC_ANCHOR_TYPE -> { val longPressLinkUrl = hitTestResult.extra ?: return@setOnLongClickListener false + val message = Handler(Looper.getMainLooper()).obtainMessage() + terminalWebView.requestFocusNodeHref(message) + val srcText = message.data.getString("title") + ?: return@setOnLongClickListener false if ( currentPageUrl?.startsWith(httpsStartStr) == true || currentPageUrl?.startsWith(httpStartStr) == true ) { longPressForSrcAnchor.launch( - terminalWebView.title, + srcText, longPressLinkUrl, currentUrl ) diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/manager/TxtHtmlLauncher.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/manager/TxtHtmlLauncher.kt index f0b7becc5..0d8577fd8 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/manager/TxtHtmlLauncher.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/manager/TxtHtmlLauncher.kt @@ -15,8 +15,8 @@ object TxtHtmlLauncher { binding.terminalWebView.loadDataWithBaseURL( "", TxtHtmlDescriber.make( + terminalFragment, urlStr, - terminalFragment ), "text/html", "utf-8", diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/receiver/ErrLogBroadcastManagerForTerm.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/receiver/ErrLogBroadcastManagerForTerm.kt new file mode 100644 index 000000000..b8ec93d0e --- /dev/null +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/receiver/ErrLogBroadcastManagerForTerm.kt @@ -0,0 +1,94 @@ +package com.puutaro.commandclick.fragment_lib.terminal_fragment.broadcast.receiver + +import android.content.Context +import android.content.Intent +import com.puutaro.commandclick.common.variable.broadcast.extra.BroadCastIntentExtraForJsDebug +import com.puutaro.commandclick.common.variable.broadcast.extra.ErrLogExtraForTerm +import com.puutaro.commandclick.util.LogSystems +import com.puutaro.commandclick.util.datetime.LocalDatetimeTool +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext +import java.time.LocalDateTime + +object ErrLogBroadcastManagerForTerm { + + object LogDatetime { + private var beforeOutputTime = LocalDateTime.parse("2020-02-15T21:30:50") + private val mutex = Mutex() + + suspend fun update( + datetime: LocalDateTime + ) { + mutex.withLock { + beforeOutputTime = datetime + } + } + + suspend fun get(): LocalDateTime { + mutex.withLock { + return beforeOutputTime + } + } + } + + fun handle( + context: Context?, + intent: Intent, + ){ + val errContents = intent.getStringExtra( + ErrLogExtraForTerm.ERR_CONTENTS.schema + ) ?: return + val debugNotiJanre = intent.getStringExtra( + ErrLogExtraForTerm.DEBUG_NOTI_JANRE.schema + )?.let { + debugNotiJanreStr -> + BroadCastIntentExtraForJsDebug.DebugGenre.entries.firstOrNull { + it.type == debugNotiJanreStr + } + } ?: BroadCastIntentExtraForJsDebug.DebugGenre.SYS_ERR + val notiLevel = intent.getStringExtra( + ErrLogExtraForTerm.NOTI_LEVEL.schema + )?.let { + notilevel -> + BroadCastIntentExtraForJsDebug.NotiLevelType.entries.firstOrNull { + it.level == notilevel + } + } ?: BroadCastIntentExtraForJsDebug.NotiLevelType.HIGH + + val durationSec = 5 + CoroutineScope(Dispatchers.IO).launch { + val currentDatetime = withContext(Dispatchers.IO) { + LocalDateTime.now() + } + val beforeOutputTime = withContext(Dispatchers.IO) { + LogDatetime.get() + } + val diffSec = withContext(Dispatchers.IO) { + LocalDatetimeTool.getDurationSec( + beforeOutputTime, + currentDatetime + ) + } + if(diffSec < durationSec) return@launch + withContext(Dispatchers.IO) { + LogDatetime.update( + currentDatetime + ) + } + withContext(Dispatchers.IO) { + LogSystems.stdErr( + context, + errContents, + debugNotiJanre.type, + notiLevel.level + ) + } + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/receiver/JsDebugger.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/receiver/JsDebugger.kt index 24beeb095..3c4ec4704 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/receiver/JsDebugger.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/receiver/JsDebugger.kt @@ -53,11 +53,11 @@ object JsDebugger { context == null ) return val notiLevel = - BroadCastIntentExtraForJsDebug.NotiLevelType.values().firstOrNull { + BroadCastIntentExtraForJsDebug.NotiLevelType.entries.firstOrNull { it.level == notiLevelStr } ?: BroadCastIntentExtraForJsDebug.NotiLevelType.HIGH val debugNotiJanre = - BroadCastIntentExtraForJsDebug.DebugGenre.values().firstOrNull { + BroadCastIntentExtraForJsDebug.DebugGenre.entries.firstOrNull { it.type == debugNotiJanreStr } ?: BroadCastIntentExtraForJsDebug.DebugGenre.SYS_ERR val notiDatetime = LocalDateTime.now().toString() @@ -154,11 +154,11 @@ object JsDebugger { val debugGenreStr = intent.getStringExtra( BroadCastIntentExtraForJsDebug.BroadcastSchema.DEBUG_GENRE.scheme ) - val debugGenre = BroadCastIntentExtraForJsDebug.DebugGenre.values().firstOrNull { + val debugGenre = BroadCastIntentExtraForJsDebug.DebugGenre.entries.firstOrNull { it.type == debugGenreStr } ?: BroadCastIntentExtraForJsDebug.DebugGenre.ERR val debugLevel = - BroadCastIntentExtraForJsDebug.NotiLevelType.values().firstOrNull { + BroadCastIntentExtraForJsDebug.NotiLevelType.entries.firstOrNull { it.level == debugLevelStr } ?: BroadCastIntentExtraForJsDebug.NotiLevelType.LOW val notificationIdToImportance = when(debugLevel){ @@ -236,6 +236,7 @@ object JsDebugger { CheckTool.FinalSaver.saveJsConDebugReport() val launchUrlCon = TxtHtmlDescriber.makeTxtHtmlUrl( UsePath.jsDebugReportPath, + onFormat = TxtHtmlDescriber.switchOff ) launchLogDialog( terminalFragment, @@ -257,9 +258,13 @@ object JsDebugger { editDebugLogPath, sysOrErrLogCon ) - val launchUrlCon = makeTxtHtmlUrlForDebug( + val launchUrlCon = TxtHtmlDescriber.makeTxtHtmlUrl( editDebugLogPath, + onFormat = TxtHtmlDescriber.switchOff ) +// makeTxtHtmlUrlForDebug( +// editDebugLogPath, +// ) launchLogDialog( terminalFragment, launchUrlCon @@ -269,9 +274,15 @@ object JsDebugger { private fun makeTxtHtmlUrlForDebug( logPath: String, ): String { - return WevViewDialogUriPrefix.TEXT_CON.prefix + - logPath + - TxtHtmlDescriber.searchQuerySuffix + val queryParameter = listOf( + "${TxtHtmlDescriber.TxtHtmlQueryKey.ON_FORMAT}=${TxtHtmlDescriber.switchOff}" + ).joinToString(TxtHtmlDescriber.qerySeparator.toString()) + return listOf( + WevViewDialogUriPrefix.TEXT_CON.prefix, + logPath, + TxtHtmlDescriber.searchQuerySuffix, + queryParameter, + ).joinToString(String()) // listOf( // TxtHtmlDescriber.TxtHtmlQueryKey.DISABLE_SCROLL.key, // TxtHtmlDescriber.DisableScroll.disableScrollMemoryOn @@ -289,6 +300,7 @@ object JsDebugger { ) val launchUrl = TxtHtmlDescriber.makeTxtHtmlUrl( UsePath.jsSrcAcDebugReportPath, + onFormat = TxtHtmlDescriber.switchOff, ) val sectionSeparator = WebViewJsDialog.sectionSeparator.toString() val typeSeparator = WebViewJsDialog.typeSeparator.toString() diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/register/BroadcastRegisterForTerm.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/register/BroadcastRegisterForTerm.kt index 9ff876c07..c9c9e42ff 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/register/BroadcastRegisterForTerm.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/broadcast/register/BroadcastRegisterForTerm.kt @@ -25,6 +25,9 @@ object BroadcastRegisterForTerm { // BroadCastIntentSchemeTerm.POCKET_WEBVIEW_PRELOAD_URL.action, BroadCastIntentSchemeTerm.POCKET_WEBVIEW_LOAD_URL.action, BroadCastIntentSchemeTerm.FANNEL_PIN_BAR_UPDATE.action, + BroadCastIntentSchemeTerm.EDIT_INDEX_LIST_UPDATE.action, + BroadCastIntentSchemeTerm.SETING_ACTION_FUNC.action, + BroadCastIntentSchemeTerm.ERR_LOG.action, ) ) } diff --git a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/html/TxtHtmlDescriber.kt b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/html/TxtHtmlDescriber.kt index 30a9d2250..f736947ef 100755 --- a/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/html/TxtHtmlDescriber.kt +++ b/app/src/main/java/com/puutaro/commandclick/fragment_lib/terminal_fragment/html/TxtHtmlDescriber.kt @@ -5,6 +5,7 @@ import com.puutaro.commandclick.common.variable.settings.FannelInfoSetting import com.puutaro.commandclick.common.variable.path.UsePath import com.puutaro.commandclick.util.url.WebUrlVariables import com.puutaro.commandclick.fragment.TerminalFragment +import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.lib.dialog.TextJsDialogV2.BodyTextViewMaker.separatorList import com.puutaro.commandclick.fragment_lib.terminal_fragment.js_interface.lib.dialog.WevViewDialogUriPrefix import com.puutaro.commandclick.util.CcPathTool import com.puutaro.commandclick.util.str.QuoteTool @@ -18,28 +19,47 @@ object TxtHtmlDescriber { private val indexDirName = "index" val searchQuerySuffix = "?q=" - private val qerySeparator = '&' + val qerySeparator = '&' + private val switchOn = "ON" + val switchOff = "OFF" + fun makeTxtHtmlUrl( txtPath: String, - queryConWithNewline: String? = null, + onFormat: String = switchOn, + disableScroll: String = switchOff, + fannelPath: String? = null, + saveTag: String? = null, ): String { - val queryParameter = when(queryConWithNewline.isNullOrEmpty()){ - true -> String() - else -> searchQuerySuffix + queryConWithNewline.replace("\n", qerySeparator.toString()) - } + val queryParameter = listOf( + "${TxtHtmlQueryKey.ON_FORMAT.key}=${onFormat}", + "${TxtHtmlQueryKey.DISABLE_SCROLL.key}=${disableScroll}", + fannelPath?.let { + "${TxtHtmlQueryKey.FANNEL_PATH.key}=${it}" + } ?: String(), + saveTag?.let { + "${TxtHtmlQueryKey.SAVE_TAG.key}=${it}" + } ?: String(), + ).filter { + it.isNotEmpty() + }.joinToString(qerySeparator.toString()) +// val queryParameter = when(queryConWithNewline.isNullOrEmpty()){ +// true -> String() +// else -> searchQuerySuffix + queryConWithNewline.replace("\n", qerySeparator.toString()) +// } return listOf( WevViewDialogUriPrefix.TEXT_CON.prefix, txtPath, + searchQuerySuffix, queryParameter, ).joinToString(String()) } fun make( - urlStr: String, - terminalFragment: TerminalFragment + terminalFragment: TerminalFragment, + savePath: String, ): String { FileSystems.createDirs(UsePath.cmdclickScrollPosiDirPath) - val basePath = urlStr.removePrefix( + val basePath = savePath.removePrefix( WebUrlVariables.filePrefix ) val pathAndQueryMapCon = basePath.split(searchQuerySuffix) @@ -51,17 +71,6 @@ object TxtHtmlDescriber { qerySeparator ).toMap() val disableScroll = DisableScroll.how(queryMap) -// FileSystems.writeFile( -// File(UsePath.cmdclickDefaultAppDirPath, "txtHtml.txt").absolutePath, -// listOf( -// "basePath: ${basePath}", -// "pathAndQueryMapCon: ${pathAndQueryMapCon}", -// "filePath: ${filePath}", -// "queryMapCon: ${queryMapCon}", -// "queryMap: ${queryMap}", -// "disableScroll: ${disableScroll}" -// ).joinToString("\n\n") -// ) val contents = ReadText( filePath ).readText() @@ -70,9 +79,52 @@ object TxtHtmlDescriber { FileSystems.createDirs(currentFannelHtmlPosiDirPath) val fileObj = File(filePath) val fileName = fileObj.name - val htmlPosiFilePath = - "${currentFannelHtmlPosiDirPath}/${fileName}" - val insertContents = contents + val saveTag = queryMap.get( + TxtHtmlQueryKey.SAVE_TAG.key + )?.let { + QuoteTool.trimBothEdgeQuote(it) + } + val fannelPath = queryMap.get( + TxtHtmlQueryKey.FANNEL_PATH.key + )?.let { + QuoteTool.trimBothEdgeQuote(it) + } + val htmlPosiFilePath = when( + saveTag.isNullOrEmpty() + || fannelPath.isNullOrEmpty() + ) { + true -> "${currentFannelHtmlPosiDirPath}/${fileName}" + else -> makeCurrentFannelHtmlPosiDirPath( + terminalFragment.activity, + FannelInfoTool.makeFannelInfoMapByString( + File(fannelPath).name + ) + ).let { + File( + it, + UsePath.compExtend(saveTag, ".txt") + ) + } + } + val onFormat = queryMap.get( + TxtHtmlQueryKey.ON_FORMAT.key + )?.let { + QuoteTool.trimBothEdgeQuote(it) + } != switchOff + val insertContents = when(onFormat) { + false -> contents + else -> TextFormater.format(contents) + } + val compHyphen = when( + insertContents + .replace("\n", String()) + .trim() + .isEmpty() + ){ + true -> "

---

" + else -> String() + } + // .replace("<", "<") // .replace(">", ">") // .replace(" ", " ") @@ -93,6 +145,11 @@ object TxtHtmlDescriber { #background-color: yellow; } pre { + font-family: "sans-serif"; + font-size: 20px; + color: #1e2e1c; + letter-spacing: 0.1em; + line-height: 1.7em; white-space: pre-wrap; word-wrap: break-word; overflow: auto; @@ -102,10 +159,8 @@ object TxtHtmlDescriber {
-

---

-
-        ${insertContents}
-        
+ ${compHyphen} +
${insertContents}