From 00f62172c10ec78d2f0dfbb1341da64624a5f796 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Fri, 30 Mar 2018 22:32:08 +0200
Subject: [PATCH] Several minor bugfixes

---
 .../ui/chat/messages/MessageAdapter.kt        |  2 +-
 .../ui/chat/messages/MessageListFragment.kt   | 39 ++++++++++++++++---
 .../chat/messages/QuasselMessageRenderer.kt   |  4 +-
 .../main/res/values-de/strings_messages.xml   |  2 +-
 app/src/main/res/values/strings_messages.xml  |  2 +-
 5 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
index 2a4310464..a336d0f25 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
@@ -85,7 +85,7 @@ class MessageAdapter(
     const val SHIFT_FOLLOWUP = SHIFT_HIGHLIGHT - 1
     const val MASK_HIGHLIGHT = 0x01 shl SHIFT_HIGHLIGHT
     const val MASK_FOLLOWUP = 0x01 shl SHIFT_FOLLOWUP
-    const val MASK_TYPE = 0xFFFF
+    const val MASK_TYPE = 0xFFFFFF
   }
 
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QuasselMessageViewHolder {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
index 75fa1faf8..fe5e21bec 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
@@ -15,10 +15,15 @@ import android.text.SpannableStringBuilder
 import android.view.*
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.bumptech.glide.Glide
+import com.bumptech.glide.ListPreloader
+import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader
+import com.bumptech.glide.util.FixedPreloadSizeProvider
 import de.kuschku.libquassel.protocol.BufferId
 import de.kuschku.libquassel.protocol.MsgId
 import de.kuschku.libquassel.quassel.syncables.BufferSyncer
 import de.kuschku.libquassel.util.helpers.value
+import de.kuschku.quasseldroid.GlideApp
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.persistence.QuasselDatabase
 import de.kuschku.quasseldroid.persistence.findByBufferIdPagedWithDayChange
@@ -72,14 +77,26 @@ class MessageListFragment : ServiceBoundFragment() {
         viewModel.selectedMessages.value.values.sortedBy {
           it.id
         }.map {
-          SpanFormatter.format(getString(R.string.message_format_copy), it.time, it.content)
+          if (it.name != null && it.content != null) {
+            SpanFormatter.format(getString(R.string.message_format_copy_complex),
+                                 it.time,
+                                 it.name,
+                                 it.content)
+          } else {
+            SpanFormatter.format(getString(R.string.message_format_copy), it.time, it.combined)
+          }
         }.forEach {
           builder.append(it)
           builder.append("\n")
         }
 
+        val data = if (builder.endsWith('\n'))
+          builder.subSequence(0, builder.length - 1)
+        else
+          builder
+
         val clipboard = requireActivity().systemService<ClipboardManager>()
-        val clip = ClipData.newPlainText(null, builder)
+        val clip = ClipData.newPlainText(null, data)
         clipboard.primaryClip = clip
         actionMode?.finish()
         true
@@ -89,15 +106,27 @@ class MessageListFragment : ServiceBoundFragment() {
         viewModel.selectedMessages.value.values.sortedBy {
           it.id
         }.map {
-          SpanFormatter.format(getString(R.string.message_format_copy), it.time, it.content)
+          if (it.name != null && it.content != null) {
+            SpanFormatter.format(getString(R.string.message_format_copy_complex),
+                                 it.time,
+                                 it.name,
+                                 it.content)
+          } else {
+            SpanFormatter.format(getString(R.string.message_format_copy), it.time, it.combined)
+          }
         }.forEach {
           builder.append(it)
           builder.append("\n")
         }
 
+        val data = if (builder.endsWith('\n'))
+          builder.subSequence(0, builder.length - 1)
+        else
+          builder
+
         val intent = Intent(Intent.ACTION_SEND)
         intent.type = "text/plain"
-        intent.putExtra(Intent.EXTRA_TEXT, builder)
+        intent.putExtra(Intent.EXTRA_TEXT, data)
         requireContext().startActivity(
           Intent.createChooser(
             intent,
@@ -311,7 +340,6 @@ class MessageListFragment : ServiceBoundFragment() {
       messageList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
     }
 
-    /*
     val avatar_size = resources.getDimensionPixelSize(R.dimen.avatar_size)
 
     val sizeProvider = FixedPreloadSizeProvider<String>(avatar_size, avatar_size)
@@ -328,7 +356,6 @@ class MessageListFragment : ServiceBoundFragment() {
     val preloader = RecyclerViewPreloader(Glide.with(this), preloadModelProvider, sizeProvider, 10)
 
     messageList.addOnScrollListener(preloader)
-    */
 
     return view
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
index 105c4ed2b..aa2880588 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
@@ -359,7 +359,7 @@ class QuasselMessageRenderer @Inject constructor(
         val split = message.content.content.split("#:#")
         val (server1, server2) = split.last().split(' ')
         val usersAffected = split.size - 1
-        FormattedMessage(
+        val it = FormattedMessage(
           id = message.content.messageId,
           time = timeFormatter.format(message.content.time.atZone(zoneId)),
           combined = context.resources.getQuantityString(
@@ -369,6 +369,8 @@ class QuasselMessageRenderer @Inject constructor(
           isExpanded = message.isExpanded,
           isSelected = message.isSelected
         )
+        println("hi")
+        it
       }
       Message_Type.Server,
       Message_Type.Info,
diff --git a/app/src/main/res/values-de/strings_messages.xml b/app/src/main/res/values-de/strings_messages.xml
index a5d25ede6..7680a2ff3 100644
--- a/app/src/main/res/values-de/strings_messages.xml
+++ b/app/src/main/res/values-de/strings_messages.xml
@@ -8,8 +8,8 @@
   <string name="message_type_topic">Themenänderungen</string>
 
   <string name="message_format_copy">[%1$s] %2$s</string>
+  <string name="message_format_copy_complex">[%1$s] &lt;%2$s&gt; %3$s</string>
 
-  <string name="message_format_plain">%1$s%2$s: %3$s</string>
   <string name="message_format_action">— %1$s%2$s %3$s</string>
   <string name="message_format_notice">[%1$s%2$s] %3$s</string>
   <string name="message_format_nick">%1$s%2$s heißt jetzt %3$s%4$s</string>
diff --git a/app/src/main/res/values/strings_messages.xml b/app/src/main/res/values/strings_messages.xml
index ede83a7f7..1e28f646a 100644
--- a/app/src/main/res/values/strings_messages.xml
+++ b/app/src/main/res/values/strings_messages.xml
@@ -16,8 +16,8 @@
   </string-array>
 
   <string name="message_format_copy">[%1$s] %2$s</string>
+  <string name="message_format_copy_complex">[%1$s] &lt;%2$s&gt; %3$s</string>
 
-  <string name="message_format_plain">%1$s%2$s: %3$s</string>
   <string name="message_format_action">— %1$s%2$s %3$s</string>
   <string name="message_format_notice">[%1$s%2$s] %3$s</string>
   <string name="message_format_nick">%1$s%2$s is now known as %3$s%4$s</string>
-- 
GitLab