Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

emoji #114

Merged
merged 5 commits into from
Jan 20, 2024
Merged

emoji #114

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ dependencies {
implementation("com.sksamuel.scrimage:scrimage-webp:4.1.1")
implementation("com.google.code.gson:gson:2.10.1")
implementation("io.github.alexzhirkevich:qrose:1.0.0-beta3")
implementation("com.vanniktech:emoji-ios:0.18.0")
// implementation("io.github.theapache64:rebugger:1.0.0-rc02")
}

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ org.jetbrains.compose.experimental.uikit.enabled=true
android.defaults.buildfeatures.buildconfig=true
# Enable kotlin/native experimental memory model
kotlin.native.binary.memoryModel=experimental
compose.version=1.6.0-dev1357
compose.version=1.6.0-dev1369
kotlin.version=1.9.22
multiplatform.version=1.9.22
40 changes: 40 additions & 0 deletions src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,11 @@ import java.util.prefs.Preferences
import javax.swing.JPanel
import javax.swing.UIManager

import com.vanniktech.emoji.EmojiManager
import com.vanniktech.emoji.emojiInformation
import com.vanniktech.emoji.ios.IosEmojiProvider
import com.vanniktech.emoji.search.SearchEmojiManager

private const val TAG = "trifa.Main.kt"
var tox_running_state_wrapper = "start"
var start_button_text_wrapper = "stopped"
Expand Down Expand Up @@ -215,9 +220,13 @@ val SAVEDATA_PATH_WIDTH = 200.dp
val SAVEDATA_PATH_HEIGHT = 50.dp
val MYTOXID_WIDTH = 200.dp
val MYTOXID_HEIGHT = 50.dp
const val MSG_TEXT_FONT_SIZE_MIXED = 14.0f
const val MSG_TEXT_FONT_SIZE_EMOJI_ONLY = 55.0f
const val MAX_ONE_ON_ONE_MESSAGES_TO_SHOW = 20000
const val MAX_GROUP_MESSAGES_TO_SHOW = 20000
const val SNACKBAR_TOAST_MS_DURATION: Long = 1000
var emojis_cat_0_gropued: ArrayList<ArrayList<String>> = ArrayList()
val emojis_per_row = 6
val ImageloaderDispatcher = Executors.newFixedThreadPool(5).asCoroutineDispatcher()
var global_semaphore_contactlist_ui = CustomSemaphore(1)
var global_semaphore_grouppeerlist_ui = CustomSemaphore(1)
Expand Down Expand Up @@ -1342,6 +1351,37 @@ fun main() = application(exitProcessOnExit = true) {
set_resouces_dir(RESOURCESDIR.canonicalPath)
} catch(e: Exception) {}

try
{
EmojiManager.install(IosEmojiProvider())

val emojis_cat_0 = com.vanniktech.emoji.ios.IosEmojiProvider().categories[0].emojis
val grouped_entries = emojis_cat_0.size / emojis_per_row
val remain = emojis_cat_0.size - (grouped_entries * emojis_per_row)
for (i in 0..(grouped_entries - 1)) {
val pos = i * emojis_per_row
var e: ArrayList<String> = ArrayList()
for (j in 0..(emojis_per_row - 1)) {
e.add(emojis_cat_0[pos + j].unicode)
}
emojis_cat_0_gropued.add(e)
}
if (remain > 0)
{
val pos = grouped_entries * emojis_per_row
var e: ArrayList<String> = ArrayList()
for (j in 0..(remain - 1)) {
e.add(emojis_cat_0[pos + j].unicode)
}
emojis_cat_0_gropued.add(e)
}

}
catch (_: Exception)
{

}

// ------- set UI look and feel to "system" for java AWT ----------
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
// ------- set UI look and feel to "system" for java AWT ----------
Expand Down
27 changes: 27 additions & 0 deletions src/main/kotlin/com/zoffcc/applications/trifa/HelperGeneric.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import androidx.compose.ui.unit.Density
import avstatestore
import com.sksamuel.scrimage.ImmutableImage
import com.sksamuel.scrimage.webp.WebpWriter
import com.vanniktech.emoji.search.SearchEmojiManager
import com.zoffcc.applications.sorm.Filetransfer
import com.zoffcc.applications.sorm.Message
import com.zoffcc.applications.trifa.HelperFiletransfer.get_filetransfer_filenum_from_id
Expand Down Expand Up @@ -995,6 +996,32 @@ object HelperGeneric {
"_Datetime_ERROR_"
}
}

fun replace_emojis_in_text(input: String): String
{
var output = input
val strings = arrayOf<String>("smile", "sad", "thumbsup", "thumbsdown", "heart")
val emojis = arrayOf<String>("slightly_smiling_face", "slightly_frowning_face", "thumbsup", "thumbsdown", "heart")
for (i in 0..(strings.size - 1))
{
try
{
Log.i(TAG, "i=" + i + " s=" + strings[i])
if (strings[i].equals("thumbsup", ignoreCase = false))
{
output = output.replace(":" + strings[i] + ":", SearchEmojiManager().search(query = emojis[i]).first().emoji.variants.get(1).unicode, ignoreCase = true)
}
else
{
output = output.replace(":" + strings[i] + ":", SearchEmojiManager().search(query = emojis[i]).first().emoji.unicode, ignoreCase = true)
}
} catch (e: Exception)
{
e.printStackTrace()
}
}
return output
}
}

/*
Expand Down
30 changes: 18 additions & 12 deletions src/main/kotlin/com/zoffcc/applications/trifa/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -1715,7 +1715,10 @@ class MainActivity
{
timestamp_wrap = System.currentTimeMillis()
}
val msg_id_db = received_message_to_db(toxpk, timestamp_wrap, friend_message)
val msg_id_db = received_message_to_db(toxpk = toxpk,
sent_message_timestamp_ms = timestamp_wrap,
rcvd_message_timestamp_ms = System.currentTimeMillis(),
friend_message = friend_message)
val friendnum = tox_friend_by_public_key(toxpk)
val fname = tox_friend_get_name(friendnum)
val friend_user = User(fname!!, picture = "friend_avatar.png", toxpk = toxpk)
Expand All @@ -1733,7 +1736,10 @@ class MainActivity
{
timestamp_wrap = System.currentTimeMillis()
}
val msg_id_db = received_message_to_db(toxpk, timestamp_wrap, friend_message)
val msg_id_db = received_message_to_db(toxpk = toxpk,
sent_message_timestamp_ms = timestamp_wrap,
rcvd_message_timestamp_ms = timestamp_wrap,
friend_message = friend_message)
val friendnum = tox_friend_by_public_key(toxpk)
val fname = tox_friend_get_name(friendnum)
val friend_user = User(fname!!, picture = "friend_avatar.png", toxpk = toxpk!!)
Expand Down Expand Up @@ -1785,7 +1791,10 @@ class MainActivity
try
{
val message_timestamp = ts_sec * 1000
val msg_id_db = received_message_to_db(toxpk, message_timestamp, friend_message)
val msg_id_db = received_message_to_db(toxpk = toxpk,
sent_message_timestamp_ms = message_timestamp,
rcvd_message_timestamp_ms = pin_timestamp,
friend_message = friend_message)
val friendnum = tox_friend_by_public_key(toxpk)
val fname = tox_friend_get_name(friendnum)
val friend_user = User(fname!!, picture = "friend_avatar.png", toxpk = toxpk!!)
Expand Down Expand Up @@ -3009,7 +3018,10 @@ class MainActivity
/*
* put an incoming 1-on-1 text message into the database
*/
fun received_message_to_db(toxpk: String?, message_timestamp: Long, friend_message: String?): Long
fun received_message_to_db(toxpk: String?,
sent_message_timestamp_ms: Long,
rcvd_message_timestamp_ms: Long,
friend_message: String?): Long
{
val m = com.zoffcc.applications.sorm.Message()
m.tox_friendpubkey = toxpk
Expand All @@ -3023,15 +3035,9 @@ class MainActivity
m.is_new = false
}
m.TRIFA_MESSAGE_TYPE = TRIFA_MSG_TYPE.TRIFA_MSG_TYPE_TEXT.value
if (message_timestamp > 0)
{
m.rcvd_timestamp = message_timestamp
} else
{
m.rcvd_timestamp = System.currentTimeMillis()
}
m.rcvd_timestamp = rcvd_message_timestamp_ms
m.rcvd_timestamp_ms = 0
m.sent_timestamp = message_timestamp
m.sent_timestamp = sent_message_timestamp_ms
m.sent_timestamp_ms = 0
m.text = friend_message
m.msg_version = 0
Expand Down
1 change: 1 addition & 0 deletions src/main/kotlin/com/zoffcc/applications/trifa2/ChatApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AttachFile
import androidx.compose.material.icons.filled.Call
import androidx.compose.material.icons.filled.InsertEmoticon
import androidx.compose.material.icons.filled.Screenshot
import androidx.compose.material.icons.filled.Settings
import androidx.compose.material.icons.filled.Videocam
Expand Down
15 changes: 14 additions & 1 deletion src/main/kotlin/com/zoffcc/applications/trifa2/ChatMessage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.vanniktech.emoji.emojiInformation
import com.zoffcc.applications.trifa.HelperFiletransfer.check_filename_is_image
import com.zoffcc.applications.trifa.HelperGeneric
import com.zoffcc.applications.trifa.HelperGeneric.cancel_ft_from_ui
Expand Down Expand Up @@ -118,10 +119,22 @@ inline fun ChatMessage(isMyMessage: Boolean, message: UIMessage, ui_scale: Float
Spacer(Modifier.size(3.dp))
SelectionContainer()
{
var msg_fontsize = MSG_TEXT_FONT_SIZE_MIXED
try
{
val emojiInformation = message.text.emojiInformation()
if (emojiInformation.isOnlyEmojis)
{
msg_fontsize = MSG_TEXT_FONT_SIZE_EMOJI_ONLY
}
}
catch(_: Exception)
{
}
Text(
text = message.text,
style = MaterialTheme.typography.body1.copy(
fontSize = ((14.0 * ui_scale) as Double).sp,
fontSize = ((msg_fontsize * ui_scale).toDouble()).sp,
letterSpacing = 0.sp
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.vanniktech.emoji.emojiInformation
import com.zoffcc.applications.trifa.HelperFiletransfer
import com.zoffcc.applications.trifa.HelperGeneric.AsyncImage
import com.zoffcc.applications.trifa.HelperGeneric.loadImageBitmap
Expand Down Expand Up @@ -105,10 +106,22 @@ inline fun GroupChatMessage(isMyMessage: Boolean, groupmessage: UIGroupMessage,
Spacer(Modifier.size(3.dp))
SelectionContainer()
{
var msg_fontsize = MSG_TEXT_FONT_SIZE_MIXED
try
{
val emojiInformation = groupmessage.text.emojiInformation()
if (emojiInformation.isOnlyEmojis)
{
msg_fontsize = MSG_TEXT_FONT_SIZE_EMOJI_ONLY
}
}
catch(_: Exception)
{
}
Text(
text = groupmessage.text,
style = MaterialTheme.typography.body1.copy(
fontSize = ((14.0 * ui_scale) as Double).sp,
fontSize = ((msg_fontsize * ui_scale).toDouble()).sp,
letterSpacing = 0.sp
)
)
Expand Down
Loading
Loading