[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdeconnect-android/sms-history] src/org/kde/kdeconnect/Helpers: Add custom type for Message
From:       Simon Redman <null () kde ! org>
Date:       2018-03-31 22:52:51
Message-ID: E1f2PMh-0005hq-MJ () code ! kde ! org
[Download RAW message or body]

Git commit 10e43a93c92fe68f9512665e413d1cddd83e5c8c by Simon Redman.
Committed on 31/03/2018 at 22:52.
Pushed by sredman into branch 'sms-history'.

Add custom type for Message

M  +37   -23   src/org/kde/kdeconnect/Helpers/SMSHelper.java

https://commits.kde.org/kdeconnect-android/10e43a93c92fe68f9512665e413d1cddd83e5c8c

diff --git a/src/org/kde/kdeconnect/Helpers/SMSHelper.java \
b/src/org/kde/kdeconnect/Helpers/SMSHelper.java index 3c45011..ffbcccf 100644
--- a/src/org/kde/kdeconnect/Helpers/SMSHelper.java
+++ b/src/org/kde/kdeconnect/Helpers/SMSHelper.java
@@ -35,19 +35,6 @@ import java.util.Map;
 
 public class SMSHelper {
 
-    /**
-     * Define the columns which are extracted from the Android SMS database
-     */
-    protected static final String[] smsProjection = new String[]{
-            Telephony.Sms.ADDRESS,  // Phone number of the remote
-            Telephony.Sms.BODY,     // Body of the message
-            Telephony.Sms.DATE,     // Some date associated with the message \
                (Received?)
-            Telephony.Sms.TYPE,     // Compare with \
                Telephony.TextBasedSmsColumns.MESSAGE_TYPE_*
-            Telephony.Sms.PERSON,   // Some obscure value that corresponds to the \
                contact
-            Telephony.Sms.READ,     // Whether we have received a read report for \
                this message (int)
-            ThreadID.lookupColumn, // Magic number which binds (message) threads
-    };
-
     /**
      * Get the base address for the SMS content
      * <p>
@@ -98,14 +85,14 @@ public class SMSHelper {
      * @param context android.content.Context running the request
      * @return Mapping of thread ID to list of messages in that thread
      */
-    public static Map<ThreadID, List<Map<String, String>>> getSMS(Context context) {
-        HashMap<ThreadID, List<Map<String, String>>> toReturn = new HashMap<>();
+    public static Map<ThreadID, List<Message>> getSMS(Context context) {
+        HashMap<ThreadID, List<Message>> toReturn = new HashMap<>();
 
         Uri smsUri = getSMSUri();
 
         Cursor smsCursor = context.getContentResolver().query(
                 smsUri,
-                smsProjection,
+                Message.smsColumns,
                 null,
                 null,
                 null);
@@ -115,9 +102,9 @@ public class SMSHelper {
             do {
                 int thread = smsCursor.getInt(threadColumn);
                 if (!toReturn.containsKey(thread)) {
-                    toReturn.put(new ThreadID(thread), new ArrayList<Map<String, \
String>>()); +                    toReturn.put(new ThreadID(thread), new \
ArrayList<Message>());  }
-                Map<String, String> messageInfo = new HashMap<>();
+                Message messageInfo = new Message();
                 for (int columnIdx = 0; columnIdx < smsCursor.getColumnCount(); \
columnIdx++) {  String colName = smsCursor.getColumnName(columnIdx);
                     String body = smsCursor.getString(columnIdx);
@@ -141,16 +128,16 @@ public class SMSHelper {
      * messages in those conversations
      *
      * @param context android.content.Context running the request
-     * @return Mapping of thread_id to the interesting information from the first \
message in each thread +     * @return Mapping of thread_id to the first message in \
                each thread
      */
-    public static Map<ThreadID, Map<String, String>> getConversations(Context \
                context) {
-        HashMap<ThreadID, Map<String, String>> toReturn = new HashMap<>();
+    public static Map<ThreadID, Message> getConversations(Context context) {
+        HashMap<ThreadID, Message> toReturn = new HashMap<>();
 
         Uri conversationUri = getConversationUri();
 
         Cursor conversationsCursor = context.getContentResolver().query(
                 conversationUri,
-                smsProjection,
+                Message.smsColumns,
                 null,
                 null,
                 null);
@@ -160,7 +147,7 @@ public class SMSHelper {
             do {
                 int thread = conversationsCursor.getInt(threadColumn);
 
-                Map<String, String> messageInfo = new HashMap<>();
+                Message messageInfo = new Message();
                 for (int columnIdx = 0; columnIdx < \
                conversationsCursor.getColumnCount(); columnIdx++) {
                     String colName = conversationsCursor.getColumnName(columnIdx);
                     String body = conversationsCursor.getString(columnIdx);
@@ -208,5 +195,32 @@ public class SMSHelper {
             return false;
         }
     }
+
+    /**
+     * Represent a message and all of its interesting data columns
+     */
+    public static class Message extends HashMap<String, String> {
+        /**
+         * Define the columns which are extracted from the Android SMS database
+         */
+        public static final String[] smsColumns = new String[]{
+                Telephony.Sms.ADDRESS,  // Phone number of the remote
+                Telephony.Sms.BODY,     // Body of the message
+                Telephony.Sms.DATE,     // Some date associated with the message \
(Received?) +                Telephony.Sms.TYPE,     // Compare with \
Telephony.TextBasedSmsColumns.MESSAGE_TYPE_* +                Telephony.Sms.PERSON,   \
// Some obscure value that corresponds to the contact +                \
Telephony.Sms.READ,     // Whether we have received a read report for this message \
(int) +                ThreadID.lookupColumn, // Magic number which binds (message) \
threads +        };
+
+        @Override
+        public String toString() {
+            if (this.containsKey(Telephony.Sms.BODY)) {
+                return this.get(Telephony.Sms.BODY);
+            }
+
+            return super.toString();
+        }
+    }
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic