Skip to content

Commit

Permalink
feat: support process text query for chatgpt.
Browse files Browse the repository at this point in the history
  • Loading branch information
plateaukao committed May 15, 2023
1 parent 6b6aace commit 185d5fb
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 32 deletions.
18 changes: 9 additions & 9 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,15 @@
<action android:name="colordict.intent.action.PICK_RESULT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter
android:order="1"
android:priority="1">
<action android:name="android.intent.action.PROCESS_TEXT" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="text/plain" />
</intent-filter>
</activity>
<activity
android:name=".activity.SettingActivity"
Expand Down Expand Up @@ -126,15 +135,6 @@
<action android:name="sc_history" />
<action android:name="notification" />
</intent-filter>
<intent-filter
android:order="1"
android:priority="1">
<action android:name="android.intent.action.PROCESS_TEXT" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1955,7 +1955,9 @@ open class BrowserActivity : FragmentActivity(), BrowserController {
}

private fun hideSearchPanel() {
ninjaWebView.clearMatches()
if (this::ninjaWebView.isInitialized) {
ninjaWebView.clearMatches()
}
searchOnSite = false
hideKeyboard()
showToolbar()
Expand Down
70 changes: 48 additions & 22 deletions app/src/main/java/info/plateaukao/einkbro/activity/DictActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,35 +20,61 @@ class DictActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dict)

if (intent.action in
listOf("colordict.intent.action.PICK_RESULT", "colordict.intent.action.SEARCH")
) {
if (!config.externalSearchWithGpt) {
val newIntent = Intent(this, BrowserActivity::class.java).apply {
action = ACTION_DICT
putExtra("EXTRA_QUERY", intent.getStringExtra("EXTRA_QUERY"))
when (intent.action) {
in listOf("colordict.intent.action.PICK_RESULT", "colordict.intent.action.SEARCH") -> {
if (!config.externalSearchWithGpt) {
forwardDictIntentAndFinish()
} else {
val text = intent.getStringExtra("EXTRA_QUERY") ?: return
searchWithGpt(text)
}
startActivity(newIntent)
finish()
} else {
val text = intent.getStringExtra("EXTRA_QUERY") ?: return
gptViewModel.updateInputMessage(text)
if (gptViewModel.hasApiKey()) {
GPTDialogFragment(
gptViewModel,
Point(50, 50),
hasBackgroundColor = true,
onDismissed = { finish(); overridePendingTransition(0, 0) }
)
.show(supportFragmentManager, "contextMenu")
monitorFragmentStack()
}

Intent.ACTION_PROCESS_TEXT -> {
if (!config.externalSearchWithGpt) {
forwardProcessTextIntentAndFinish()
} else {
NinjaToast.show(this, R.string.gpt_api_key_not_set)
val text = intent.getStringExtra(Intent.EXTRA_PROCESS_TEXT) ?: return
searchWithGpt(text)
}
}
}
}

private fun searchWithGpt(text: String) {
gptViewModel.updateInputMessage(text)
if (gptViewModel.hasApiKey()) {
GPTDialogFragment(
gptViewModel,
Point(50, 50),
hasBackgroundColor = true,
onDismissed = { finish(); overridePendingTransition(0, 0) }
)
.show(supportFragmentManager, "contextMenu")
monitorFragmentStack()
} else {
NinjaToast.show(this, R.string.gpt_api_key_not_set)
}
}

private fun forwardDictIntentAndFinish() {
val newIntent = Intent(this, BrowserActivity::class.java).apply {
action = ACTION_DICT
putExtra("EXTRA_QUERY", intent.getStringExtra("EXTRA_QUERY"))
}
startActivity(newIntent)
finish()
}

private fun forwardProcessTextIntentAndFinish() {
val newIntent = Intent(this, BrowserActivity::class.java).apply {
action = Intent.ACTION_PROCESS_TEXT
putExtra(Intent.EXTRA_PROCESS_TEXT, intent.getStringExtra(Intent.EXTRA_PROCESS_TEXT))
}
startActivity(newIntent)
finish()
}

private fun monitorFragmentStack() {
supportFragmentManager.addOnBackStackChangedListener {
if (supportFragmentManager.backStackEntryCount == 0) {
Expand Down

0 comments on commit 185d5fb

Please sign in to comment.