Added create shortcut option (#598)

This commit is contained in:
Agnieszka C 2023-03-03 20:27:40 +01:00
parent fe1ed9e781
commit 7d95415ebe
3 changed files with 40 additions and 0 deletions

View File

@ -6,6 +6,7 @@ import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
import android.content.pm.ShortcutInfo
import android.content.pm.ShortcutManager
import android.graphics.drawable.Icon
import android.graphics.drawable.LayerDrawable
import android.net.Uri
@ -43,6 +44,7 @@ import com.simplemobiletools.notes.pro.fragments.TextFragment
import com.simplemobiletools.notes.pro.helpers.*
import com.simplemobiletools.notes.pro.models.Note
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.item_checklist.*
import java.io.File
import java.io.FileOutputStream
import java.io.OutputStream
@ -214,6 +216,7 @@ class MainActivity : SimpleActivity() {
R.id.new_note -> displayNewNoteDialog()
R.id.rename_note -> fragment?.handleUnlocking { displayRenameDialog() }
R.id.share -> fragment?.handleUnlocking { shareText() }
R.id.cab_create_shortcut -> createShortcut()
R.id.lock_note -> lockNote()
R.id.unlock_note -> unlockNote()
R.id.open_file -> tryOpenFile()
@ -1320,6 +1323,30 @@ class MainActivity : SimpleActivity() {
}
}
@SuppressLint("NewApi")
private fun createShortcut() {
val manager = getSystemService(ShortcutManager::class.java)
if (manager.isRequestPinShortcutSupported) {
val note = mCurrentNote
val drawable = resources.getDrawable(R.drawable.shortcut_note).mutate()
val appIconColor = baseConfig.appIconColor
(drawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_plus_background).applyColorFilter(appIconColor)
val intent = Intent(this, SplashActivity::class.java)
intent.action = Intent.ACTION_VIEW
intent.putExtra(OPEN_NOTE_ID, note.id)
intent.flags = intent.flags or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY
val shortcut = ShortcutInfo.Builder(this, note.hashCode().toString())
.setShortLabel(mCurrentNote.title)
.setIcon(Icon.createWithBitmap(drawable.convertToBitmap()))
.setIntent(intent)
.build()
manager.requestPinShortcut(shortcut, null)
}
}
private fun lockNote() {
ConfirmationDialog(this, "", R.string.locking_warning, R.string.ok, R.string.cancel) {
SecurityDialog(this, "", SHOW_ALL_TABS) { hash, type, success ->

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/shortcut_plus_background">
<shape android:shape="oval">
<solid android:color="@color/color_primary"/>
</shape>
</item>
<item android:bottom="@dimen/medium_margin" android:drawable="@drawable/ic_article_vector" android:left="@dimen/medium_margin" android:right="@dimen/medium_margin" android:top="@dimen/medium_margin" />
</layer-list>

View File

@ -50,6 +50,10 @@
android:icon="@drawable/ic_share_vector"
android:title="@string/share"
app:showAsAction="ifRoom" />
<item
android:id="@+id/cab_create_shortcut"
android:title="@string/create_shortcut"
app:showAsAction="never" />
<item
android:id="@+id/lock_note"
android:title="@string/lock_note"