Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xabber-android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
xabber-android
Commits
237894da
Commit
237894da
authored
Apr 21, 2015
by
Grigory Fedorov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Chat messages onclick context menu returned. Link click not supported.
parent
4598fab9
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
71 additions
and
63 deletions
+71
-63
ChatViewerFragment.java
...c/main/java/com/xabber/android/ui/ChatViewerFragment.java
+19
-23
ChatMessageAdapter.java
...ava/com/xabber/android/ui/adapter/ChatMessageAdapter.java
+51
-33
chat_viewer_incoming_message.xml
app/src/main/res/layout/chat_viewer_incoming_message.xml
+0
-4
chat_viewer_outgoing_message.xml
app/src/main/res/layout/chat_viewer_outgoing_message.xml
+1
-3
No files found.
app/src/main/java/com/xabber/android/ui/ChatViewerFragment.java
View file @
237894da
...
@@ -23,7 +23,6 @@ import android.view.View;
...
@@ -23,7 +23,6 @@ import android.view.View;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.view.animation.Animation
;
import
android.view.animation.Animation
;
import
android.view.animation.AnimationUtils
;
import
android.view.animation.AnimationUtils
;
import
android.widget.AdapterView
;
import
android.widget.EditText
;
import
android.widget.EditText
;
import
android.widget.ImageButton
;
import
android.widget.ImageButton
;
import
android.widget.PopupMenu
;
import
android.widget.PopupMenu
;
...
@@ -56,7 +55,8 @@ import com.xabber.android.ui.helper.ContactTitleInflater;
...
@@ -56,7 +55,8 @@ import com.xabber.android.ui.helper.ContactTitleInflater;
import
com.xabber.android.ui.preferences.ChatEditor
;
import
com.xabber.android.ui.preferences.ChatEditor
;
import
com.xabber.androiddev.R
;
import
com.xabber.androiddev.R
;
public
class
ChatViewerFragment
extends
Fragment
implements
AdapterView
.
OnItemClickListener
,
PopupMenu
.
OnMenuItemClickListener
,
View
.
OnClickListener
,
Toolbar
.
OnMenuItemClickListener
{
public
class
ChatViewerFragment
extends
Fragment
implements
PopupMenu
.
OnMenuItemClickListener
,
View
.
OnClickListener
,
Toolbar
.
OnMenuItemClickListener
,
ChatMessageAdapter
.
Message
.
MessageClickListener
{
public
static
final
String
ARGUMENT_ACCOUNT
=
"ARGUMENT_ACCOUNT"
;
public
static
final
String
ARGUMENT_ACCOUNT
=
"ARGUMENT_ACCOUNT"
;
public
static
final
String
ARGUMENT_USER
=
"ARGUMENT_USER"
;
public
static
final
String
ARGUMENT_USER
=
"ARGUMENT_USER"
;
...
@@ -65,7 +65,6 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
...
@@ -65,7 +65,6 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
private
EditText
inputView
;
private
EditText
inputView
;
private
RecyclerView
recyclerView
;
private
ChatMessageAdapter
chatMessageAdapter
;
private
ChatMessageAdapter
chatMessageAdapter
;
private
boolean
skipOnTextChanges
;
private
boolean
skipOnTextChanges
;
...
@@ -80,6 +79,7 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
...
@@ -80,6 +79,7 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
private
ChatViewerFragmentListener
listener
;
private
ChatViewerFragmentListener
listener
;
private
Animation
shakeAnimation
=
null
;
private
Animation
shakeAnimation
=
null
;
private
int
contextMenuItemPosition
;
public
static
ChatViewerFragment
newInstance
(
String
account
,
String
user
)
{
public
static
ChatViewerFragment
newInstance
(
String
account
,
String
user
)
{
ChatViewerFragment
fragment
=
new
ChatViewerFragment
();
ChatViewerFragment
fragment
=
new
ChatViewerFragment
();
...
@@ -156,9 +156,9 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
...
@@ -156,9 +156,9 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
securityButton
.
setVisibility
(
View
.
GONE
);
securityButton
.
setVisibility
(
View
.
GONE
);
}
}
chatMessageAdapter
=
new
ChatMessageAdapter
(
getActivity
(),
account
,
user
);
chatMessageAdapter
=
new
ChatMessageAdapter
(
getActivity
(),
account
,
user
,
this
);
recyclerView
=
(
RecyclerView
)
view
.
findViewById
(
R
.
id
.
chat_messages_recycler_view
);
RecyclerView
recyclerView
=
(
RecyclerView
)
view
.
findViewById
(
R
.
id
.
chat_messages_recycler_view
);
recyclerView
.
setAdapter
(
chatMessageAdapter
);
recyclerView
.
setAdapter
(
chatMessageAdapter
);
LinearLayoutManager
layoutManager
=
new
LinearLayoutManager
(
getActivity
());
LinearLayoutManager
layoutManager
=
new
LinearLayoutManager
(
getActivity
());
...
@@ -271,7 +271,6 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
...
@@ -271,7 +271,6 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
sendButton
.
setImageResource
(
R
.
drawable
.
ic_button_send
);
sendButton
.
setImageResource
(
R
.
drawable
.
ic_button_send
);
sendButton
.
setImageLevel
(
AccountManager
.
getInstance
().
getColorLevel
(
account
));
sendButton
.
setImageLevel
(
AccountManager
.
getInstance
().
getColorLevel
(
account
));
}
}
}
}
}
}
...
@@ -368,14 +367,9 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
...
@@ -368,14 +367,9 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
}
}
@Override
@Override
public
void
onCreateContextMenu
(
ContextMenu
menu
,
View
view
,
public
void
onCreateContextMenu
(
ContextMenu
menu
,
View
view
,
ContextMenu
.
ContextMenuInfo
menuInfo
)
{
ContextMenu
.
ContextMenuInfo
menuInfo
)
{
super
.
onCreateContextMenu
(
menu
,
view
,
menuInfo
);
super
.
onCreateContextMenu
(
menu
,
view
,
menuInfo
);
AdapterView
.
AdapterContextMenuInfo
info
=
(
AdapterView
.
AdapterContextMenuInfo
)
menuInfo
;
int
itemViewType
=
chatMessageAdapter
.
getItemViewType
(
contextMenuItemPosition
);
ChatMessageAdapter
chatMessageAdapter
=
(
ChatMessageAdapter
)
recyclerView
.
getAdapter
();
int
itemViewType
=
chatMessageAdapter
.
getItemViewType
(
info
.
position
);
if
(
itemViewType
==
ChatMessageAdapter
.
VIEW_TYPE_INCOMING_MESSAGE
if
(
itemViewType
==
ChatMessageAdapter
.
VIEW_TYPE_INCOMING_MESSAGE
||
itemViewType
==
ChatMessageAdapter
.
VIEW_TYPE_OUTGOING_MESSAGE
)
{
||
itemViewType
==
ChatMessageAdapter
.
VIEW_TYPE_OUTGOING_MESSAGE
)
{
...
@@ -383,16 +377,16 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
...
@@ -383,16 +377,16 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
MenuInflater
inflater
=
getActivity
().
getMenuInflater
();
MenuInflater
inflater
=
getActivity
().
getMenuInflater
();
inflater
.
inflate
(
R
.
menu
.
chat_context_menu
,
menu
);
inflater
.
inflate
(
R
.
menu
.
chat_context_menu
,
menu
);
if
(
((
MessageItem
)
chatMessageAdapter
.
getItem
(
info
.
position
)
).
isError
())
{
if
(
chatMessageAdapter
.
getMessageItem
(
contextMenuItemPosition
).
isError
())
{
menu
.
findItem
(
R
.
id
.
action_message_repeat
).
setVisible
(
true
);
menu
.
findItem
(
R
.
id
.
action_message_repeat
).
setVisible
(
true
);
}
}
}
}
}
}
@Override
@Override
public
boolean
onContextItemSelected
(
MenuItem
item
)
{
public
boolean
onContextItemSelected
(
MenuItem
item
)
{
AdapterView
.
AdapterContextMenuInfo
info
=
(
AdapterView
.
AdapterContextMenuInfo
)
item
.
getMenuInfo
();
final
MessageItem
message
=
chatMessageAdapter
.
getMessageItem
(
contextMenuItemPosition
);
final
MessageItem
message
=
(
MessageItem
)
chatMessageAdapter
.
getItem
(
info
.
position
);
switch
(
item
.
getItemId
())
{
switch
(
item
.
getItemId
())
{
case
R
.
id
.
action_message_repeat
:
case
R
.
id
.
action_message_repeat
:
...
@@ -455,13 +449,6 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
...
@@ -455,13 +449,6 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
skipOnTextChanges
=
false
;
skipOnTextChanges
=
false
;
}
}
@Override
public
void
onItemClick
(
AdapterView
<?>
parent
,
View
view
,
int
position
,
long
id
)
{
registerForContextMenu
(
recyclerView
);
recyclerView
.
showContextMenuForChild
(
view
);
unregisterForContextMenu
(
recyclerView
);
}
@Override
@Override
public
boolean
onMenuItemClick
(
MenuItem
item
)
{
public
boolean
onMenuItemClick
(
MenuItem
item
)
{
switch
(
item
.
getItemId
())
{
switch
(
item
.
getItemId
())
{
...
@@ -616,6 +603,15 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
...
@@ -616,6 +603,15 @@ public class ChatViewerFragment extends Fragment implements AdapterView.OnItemCl
}
}
}
}
@Override
public
void
onMessageClick
(
View
caller
,
int
position
)
{
registerForContextMenu
(
caller
);
this
.
contextMenuItemPosition
=
position
;
caller
.
setOnCreateContextMenuListener
(
this
);
caller
.
showContextMenu
();
unregisterForContextMenu
(
caller
);
}
public
interface
ChatViewerFragmentListener
{
public
interface
ChatViewerFragmentListener
{
void
onCloseChat
();
void
onCloseChat
();
void
onMessageSent
();
void
onMessageSent
();
...
...
app/src/main/java/com/xabber/android/ui/adapter/ChatMessageAdapter.java
View file @
237894da
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
*/
*/
package
com
.
xabber
.
android
.
ui
.
adapter
;
package
com
.
xabber
.
android
.
ui
.
adapter
;
import
android.
app.Activity
;
import
android.
content.Context
;
import
android.support.v7.widget.RecyclerView
;
import
android.support.v7.widget.RecyclerView
;
import
android.text.Spannable
;
import
android.text.Spannable
;
import
android.text.SpannableStringBuilder
;
import
android.text.SpannableStringBuilder
;
...
@@ -53,7 +53,8 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
...
@@ -53,7 +53,8 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
public
static
final
int
VIEW_TYPE_OUTGOING_MESSAGE
=
3
;
public
static
final
int
VIEW_TYPE_OUTGOING_MESSAGE
=
3
;
private
static
final
int
VIEW_TYPE_ACTION_MESSAGE
=
4
;
private
static
final
int
VIEW_TYPE_ACTION_MESSAGE
=
4
;
private
final
Activity
activity
;
private
final
Context
context
;
private
final
Message
.
MessageClickListener
messageClickListener
;
private
String
account
;
private
String
account
;
private
String
user
;
private
String
user
;
private
boolean
isMUC
;
private
boolean
isMUC
;
...
@@ -94,24 +95,40 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
...
@@ -94,24 +95,40 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
}
}
}
}
public
static
abstract
class
Message
extends
RecyclerView
.
ViewHolder
{
public
static
abstract
class
Message
extends
RecyclerView
.
ViewHolder
implements
View
.
OnClickListener
{
public
TextView
messageText
;
public
TextView
messageText
;
public
TextView
messageTime
;
public
TextView
messageTime
;
public
Message
(
View
itemView
)
{
MessageClickListener
onClickListener
;
public
Message
(
View
itemView
,
MessageClickListener
onClickListener
)
{
super
(
itemView
);
super
(
itemView
);
this
.
onClickListener
=
onClickListener
;
messageText
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
message_text
);
messageText
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
message_text
);
messageTime
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
message_time
);
messageTime
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
message_time
);
itemView
.
setOnClickListener
(
this
);
}
@Override
public
void
onClick
(
View
v
)
{
onClickListener
.
onMessageClick
(
v
,
getPosition
());
}
public
interface
MessageClickListener
{
void
onMessageClick
(
View
caller
,
int
position
);
}
}
}
}
public
static
class
IncomingMessage
extends
Message
{
public
static
class
IncomingMessage
extends
Message
{
public
ImageView
avatar
;
public
ImageView
avatar
;
public
IncomingMessage
(
View
itemView
)
{
public
IncomingMessage
(
View
itemView
,
MessageClickListener
listener
)
{
super
(
itemView
);
super
(
itemView
,
listener
);
avatar
=
(
ImageView
)
itemView
.
findViewById
(
R
.
id
.
avatar
);
avatar
=
(
ImageView
)
itemView
.
findViewById
(
R
.
id
.
avatar
);
}
}
}
}
...
@@ -120,23 +137,25 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
...
@@ -120,23 +137,25 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
public
ImageView
statusIcon
;
public
ImageView
statusIcon
;
public
OutgoingMessage
(
View
itemView
)
{
public
OutgoingMessage
(
View
itemView
,
MessageClickListener
listener
)
{
super
(
itemView
);
super
(
itemView
,
listener
);
statusIcon
=
(
ImageView
)
itemView
.
findViewById
(
R
.
id
.
message_status_icon
);
statusIcon
=
(
ImageView
)
itemView
.
findViewById
(
R
.
id
.
message_status_icon
);
}
}
}
}
public
ChatMessageAdapter
(
Activity
activity
,
String
account
,
String
us
er
)
{
public
ChatMessageAdapter
(
Context
context
,
String
account
,
String
user
,
Message
.
MessageClickListener
messageClickListen
er
)
{
this
.
activity
=
activity
;
this
.
context
=
context
;
messages
=
Collections
.
emptyList
();
messages
=
Collections
.
emptyList
();
this
.
account
=
account
;
this
.
account
=
account
;
this
.
user
=
user
;
this
.
user
=
user
;
this
.
messageClickListener
=
messageClickListener
;
isMUC
=
MUCManager
.
getInstance
().
hasRoom
(
account
,
user
);
isMUC
=
MUCManager
.
getInstance
().
hasRoom
(
account
,
user
);
hint
=
null
;
hint
=
null
;
appearanceStyle
=
SettingsManager
.
chatsAppearanceStyle
();
appearanceStyle
=
SettingsManager
.
chatsAppearanceStyle
();
ChatsDivide
chatsDivide
=
SettingsManager
.
chatsDivide
();
ChatsDivide
chatsDivide
=
SettingsManager
.
chatsDivide
();
if
(
chatsDivide
==
ChatsDivide
.
always
||
(
chatsDivide
==
ChatsDivide
.
portial
if
(
chatsDivide
==
ChatsDivide
.
always
||
(
chatsDivide
==
ChatsDivide
.
portial
&&
!
activity
.
getResources
().
getBoolean
(
R
.
bool
.
landscape
)))
{
&&
!
context
.
getResources
().
getBoolean
(
R
.
bool
.
landscape
)))
{
divider
=
"\n"
;
divider
=
"\n"
;
}
else
{
}
else
{
divider
=
" "
;
divider
=
" "
;
...
@@ -156,11 +175,11 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
...
@@ -156,11 +175,11 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
case
VIEW_TYPE_INCOMING_MESSAGE:
case
VIEW_TYPE_INCOMING_MESSAGE:
return
new
IncomingMessage
(
LayoutInflater
.
from
(
parent
.
getContext
())
return
new
IncomingMessage
(
LayoutInflater
.
from
(
parent
.
getContext
())
.
inflate
(
R
.
layout
.
chat_viewer_incoming_message
,
parent
,
false
));
.
inflate
(
R
.
layout
.
chat_viewer_incoming_message
,
parent
,
false
)
,
messageClickListener
);
case
VIEW_TYPE_OUTGOING_MESSAGE:
case
VIEW_TYPE_OUTGOING_MESSAGE:
return
new
OutgoingMessage
(
LayoutInflater
.
from
(
parent
.
getContext
())
return
new
OutgoingMessage
(
LayoutInflater
.
from
(
parent
.
getContext
())
.
inflate
(
R
.
layout
.
chat_viewer_outgoing_message
,
parent
,
false
));
.
inflate
(
R
.
layout
.
chat_viewer_outgoing_message
,
parent
,
false
)
,
messageClickListener
);
default
:
default
:
return
null
;
return
null
;
}
}
...
@@ -171,7 +190,7 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
...
@@ -171,7 +190,7 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
public
void
onBindViewHolder
(
RecyclerView
.
ViewHolder
holder
,
int
position
)
{
public
void
onBindViewHolder
(
RecyclerView
.
ViewHolder
holder
,
int
position
)
{
final
int
viewType
=
getItemViewType
(
position
);
final
int
viewType
=
getItemViewType
(
position
);
MessageItem
messageItem
=
(
MessageItem
)
get
Item
(
position
);
MessageItem
messageItem
=
getMessage
Item
(
position
);
switch
(
viewType
)
{
switch
(
viewType
)
{
case
VIEW_TYPE_HINT:
case
VIEW_TYPE_HINT:
...
@@ -180,9 +199,9 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
...
@@ -180,9 +199,9 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
case
VIEW_TYPE_ACTION_MESSAGE:
case
VIEW_TYPE_ACTION_MESSAGE:
ChatAction
action
=
messageItem
.
getAction
();
ChatAction
action
=
messageItem
.
getAction
();
String
time
=
StringUtils
.
getSmartTimeText
(
activity
,
messageItem
.
getTimestamp
());
String
time
=
StringUtils
.
getSmartTimeText
(
context
,
messageItem
.
getTimestamp
());
((
ActionMessage
)
holder
).
actionMessage
.
setText
(
time
+
": "
((
ActionMessage
)
holder
).
actionMessage
.
setText
(
time
+
": "
+
action
.
getText
(
activity
,
messageItem
.
getResource
(),
messageItem
.
getSpannable
().
toString
()));
+
action
.
getText
(
context
,
messageItem
.
getResource
(),
messageItem
.
getSpannable
().
toString
()));
break
;
break
;
case
VIEW_TYPE_INCOMING_MESSAGE:
case
VIEW_TYPE_INCOMING_MESSAGE:
...
@@ -202,7 +221,7 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
...
@@ -202,7 +221,7 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
return
messages
.
size
()
+
1
;
return
messages
.
size
()
+
1
;
}
}
public
Object
get
Item
(
int
position
)
{
public
MessageItem
getMessage
Item
(
int
position
)
{
if
(
position
<
messages
.
size
())
{
if
(
position
<
messages
.
size
())
{
return
messages
.
get
(
position
);
return
messages
.
get
(
position
);
}
else
{
}
else
{
...
@@ -221,7 +240,7 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
...
@@ -221,7 +240,7 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
return
VIEW_TYPE_HINT
;
return
VIEW_TYPE_HINT
;
}
}
MessageItem
messageItem
=
(
MessageItem
)
get
Item
(
position
);
MessageItem
messageItem
=
getMessage
Item
(
position
);
if
(
messageItem
.
getAction
()
!=
null
)
{
if
(
messageItem
.
getAction
()
!=
null
)
{
return
VIEW_TYPE_ACTION_MESSAGE
;
return
VIEW_TYPE_ACTION_MESSAGE
;
}
}
...
@@ -234,35 +253,34 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
...
@@ -234,35 +253,34 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
final
String
resource
=
messageItem
.
getResource
();
final
String
resource
=
messageItem
.
getResource
();
if
(
isMUC
)
{
if
(
isMUC
)
{
append
(
builder
,
resource
,
new
TextAppearanceSpan
(
activity
,
R
.
style
.
ChatHeader_Time
));
append
(
builder
,
resource
,
new
TextAppearanceSpan
(
context
,
R
.
style
.
ChatHeader_Time
));
append
(
builder
,
divider
,
new
TextAppearanceSpan
(
activity
,
R
.
style
.
ChatHeader
));
append
(
builder
,
divider
,
new
TextAppearanceSpan
(
context
,
R
.
style
.
ChatHeader
));
}
}
Date
delayTimestamp
=
messageItem
.
getDelayTimestamp
();
Date
delayTimestamp
=
messageItem
.
getDelayTimestamp
();
if
(
messageItem
.
isUnencypted
())
{
if
(
messageItem
.
isUnencypted
())
{
append
(
builder
,
activity
.
getString
(
R
.
string
.
otr_unencrypted_message
),
append
(
builder
,
context
.
getString
(
R
.
string
.
otr_unencrypted_message
),
new
TextAppearanceSpan
(
activity
,
R
.
style
.
ChatHeader_Delay
));
new
TextAppearanceSpan
(
context
,
R
.
style
.
ChatHeader_Delay
));
append
(
builder
,
divider
,
new
TextAppearanceSpan
(
activity
,
R
.
style
.
ChatHeader
));
append
(
builder
,
divider
,
new
TextAppearanceSpan
(
context
,
R
.
style
.
ChatHeader
));
}
}
Spannable
text
=
messageItem
.
getSpannable
();
Spannable
text
=
messageItem
.
getSpannable
();
if
(
messageItem
.
getTag
()
==
null
)
{
if
(
messageItem
.
getTag
()
==
null
)
{
builder
.
append
(
text
);
builder
.
append
(
text
);
}
else
{
}
else
{
append
(
builder
,
text
,
new
TextAppearanceSpan
(
activity
,
R
.
style
.
ChatRead
));
append
(
builder
,
text
,
new
TextAppearanceSpan
(
context
,
R
.
style
.
ChatRead
));
}
}
message
.
messageText
.
setTextAppearance
(
activity
,
appearanceStyle
);
message
.
messageText
.
setTextAppearance
(
context
,
appearanceStyle
);
message
.
messageText
.
setText
(
builder
);
message
.
messageText
.
setText
(
builder
);
message
.
messageText
.
getBackground
().
setLevel
(
AccountManager
.
getInstance
().
getColorLevel
(
account
));
message
.
messageText
.
getBackground
().
setLevel
(
AccountManager
.
getInstance
().
getColorLevel
(
account
));
String
time
=
StringUtils
.
getSmartTimeText
(
activity
,
messageItem
.
getTimestamp
());
String
time
=
StringUtils
.
getSmartTimeText
(
context
,
messageItem
.
getTimestamp
());
if
(
delayTimestamp
!=
null
)
{
if
(
delayTimestamp
!=
null
)
{
String
delay
=
activity
.
getString
(
messageItem
.
isIncoming
()
?
R
.
string
.
chat_delay
:
R
.
string
.
chat_typed
,
String
delay
=
context
.
getString
(
messageItem
.
isIncoming
()
?
R
.
string
.
chat_delay
:
R
.
string
.
chat_typed
,
StringUtils
.
getSmartTimeText
(
activity
,
delayTimestamp
));
StringUtils
.
getSmartTimeText
(
context
,
delayTimestamp
));
time
+=
" ("
+
delay
+
")"
;
time
+=
" ("
+
delay
+
")"
;
}
}
...
@@ -331,15 +349,15 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
...
@@ -331,15 +349,15 @@ public class ChatMessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
final
AbstractContact
abstractContact
=
RosterManager
.
getInstance
().
getBestContact
(
account
,
user
);
final
AbstractContact
abstractContact
=
RosterManager
.
getInstance
().
getBestContact
(
account
,
user
);
if
(!
online
)
{
if
(!
online
)
{
if
(
abstractContact
instanceof
RoomContact
)
{
if
(
abstractContact
instanceof
RoomContact
)
{
return
activity
.
getString
(
R
.
string
.
muc_is_unavailable
);
return
context
.
getString
(
R
.
string
.
muc_is_unavailable
);
}
else
{
}
else
{
return
activity
.
getString
(
R
.
string
.
account_is_offline
);
return
context
.
getString
(
R
.
string
.
account_is_offline
);
}
}
}
else
if
(!
abstractContact
.
getStatusMode
().
isOnline
())
{
}
else
if
(!
abstractContact
.
getStatusMode
().
isOnline
())
{
if
(
abstractContact
instanceof
RoomContact
)
{
if
(
abstractContact
instanceof
RoomContact
)
{
return
activity
.
getString
(
R
.
string
.
muc_is_unavailable
);
return
context
.
getString
(
R
.
string
.
muc_is_unavailable
);
}
else
{
}
else
{
return
activity
.
getString
(
R
.
string
.
contact_is_offline
,
abstractContact
.
getName
());
return
context
.
getString
(
R
.
string
.
contact_is_offline
,
abstractContact
.
getName
());
}
}
}
}
return
null
;
return
null
;
...
...
app/src/main/res/layout/chat_viewer_incoming_message.xml
View file @
237894da
...
@@ -14,10 +14,8 @@
...
@@ -14,10 +14,8 @@
-->
-->
<RelativeLayout
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/chat_message_incoming"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:descendantFocusability=
"blocksDescendants"
>
>
<ImageView
<ImageView
android:id=
"@+id/avatar"
android:id=
"@+id/avatar"
...
@@ -42,8 +40,6 @@
...
@@ -42,8 +40,6 @@
android:layout_toRightOf=
"@id/avatar"
android:layout_toRightOf=
"@id/avatar"
android:layout_toEndOf=
"@id/avatar"
android:layout_toEndOf=
"@id/avatar"
android:autoLink=
"all"
android:minWidth=
"142dp"
android:minWidth=
"142dp"
android:paddingLeft=
"16dp"
android:paddingLeft=
"16dp"
...
...
app/src/main/res/layout/chat_viewer_outgoing_message.xml
View file @
237894da
...
@@ -14,10 +14,9 @@
...
@@ -14,10 +14,9 @@
-->
-->
<RelativeLayout
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/chat_message_
incom
ing"
android:id=
"@+id/chat_message_
outgo
ing"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:descendantFocusability=
"blocksDescendants"
>
>
<TextView
<TextView
...
@@ -37,7 +36,6 @@
...
@@ -37,7 +36,6 @@
android:layout_marginRight=
"6dp"
android:layout_marginRight=
"6dp"
android:layout_marginEnd=
"6dp"
android:layout_marginEnd=
"6dp"
android:autoLink=
"all"
android:minWidth=
"160dp"
android:minWidth=
"160dp"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment