Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
AloqaIM-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
AloqaIM-Android
Commits
a1b6268b
Commit
a1b6268b
authored
Jun 18, 2018
by
divyanshu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Send message with attachments
parent
bf16b6f9
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
155 additions
and
15 deletions
+155
-15
ChatRoomView.kt
...chat/rocket/android/chatroom/presentation/ChatRoomView.kt
+2
-1
ChatRoomFragment.kt
.../java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
+48
-14
rounded_color_accent.xml
app/src/main/res/drawable/rounded_color_accent.xml
+6
-0
file_attachments_dialog.xml
app/src/main/res/layout/file_attachments_dialog.xml
+99
-0
No files found.
app/src/main/java/chat/rocket/android/chatroom/presentation/ChatRoomView.kt
View file @
a1b6268b
...
@@ -47,8 +47,9 @@ interface ChatRoomView : LoadingView, MessageView {
...
@@ -47,8 +47,9 @@ interface ChatRoomView : LoadingView, MessageView {
* Uploads a file to a chat room.
* Uploads a file to a chat room.
*
*
* @param uri The file URI to send.
* @param uri The file URI to send.
* @param msg Message to send with attachments
*/
*/
fun
uploadFile
(
uri
:
Uri
)
fun
uploadFile
(
uri
:
Uri
,
msg
:
String
)
/**
/**
* Shows a invalid file message.
* Shows a invalid file message.
...
...
app/src/main/java/chat/rocket/android/chatroom/ui/ChatRoomFragment.kt
View file @
a1b6268b
package
chat.rocket.android.chatroom.ui
package
chat.rocket.android.chatroom.ui
import
android.app.Activity
import
android.app.Activity
import
android.app.AlertDialog
import
android.content.ClipData
import
android.content.ClipData
import
android.content.ClipboardManager
import
android.content.ClipboardManager
import
android.content.Context
import
android.content.Context
...
@@ -15,6 +16,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
...
@@ -15,6 +16,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
androidx.recyclerview.widget.RecyclerView
import
android.text.SpannableStringBuilder
import
android.text.SpannableStringBuilder
import
android.view.*
import
android.view.*
import
android.widget.*
import
androidx.core.text.bold
import
androidx.core.text.bold
import
androidx.core.view.isVisible
import
androidx.core.view.isVisible
import
chat.rocket.android.R
import
chat.rocket.android.R
...
@@ -29,16 +31,7 @@ import chat.rocket.android.chatroom.uimodel.suggestion.PeopleSuggestionUiModel
...
@@ -29,16 +31,7 @@ import chat.rocket.android.chatroom.uimodel.suggestion.PeopleSuggestionUiModel
import
chat.rocket.android.helper.EndlessRecyclerViewScrollListener
import
chat.rocket.android.helper.EndlessRecyclerViewScrollListener
import
chat.rocket.android.helper.KeyboardHelper
import
chat.rocket.android.helper.KeyboardHelper
import
chat.rocket.android.helper.MessageParser
import
chat.rocket.android.helper.MessageParser
import
chat.rocket.android.util.extensions.asObservable
import
chat.rocket.android.util.extensions.*
import
chat.rocket.android.util.extensions.circularRevealOrUnreveal
import
chat.rocket.android.util.extensions.fadeIn
import
chat.rocket.android.util.extensions.fadeOut
import
chat.rocket.android.util.extensions.hideKeyboard
import
chat.rocket.android.util.extensions.inflate
import
chat.rocket.android.util.extensions.rotateBy
import
chat.rocket.android.util.extensions.showToast
import
chat.rocket.android.util.extensions.textContent
import
chat.rocket.android.util.extensions.ui
import
chat.rocket.android.widget.emoji.*
import
chat.rocket.android.widget.emoji.*
import
chat.rocket.common.model.RoomType
import
chat.rocket.common.model.RoomType
import
chat.rocket.common.model.roomTypeOf
import
chat.rocket.common.model.roomTypeOf
...
@@ -200,11 +193,53 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
...
@@ -200,11 +193,53 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
resultData
:
Intent
?)
{
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
resultData
:
Intent
?)
{
if
(
requestCode
==
REQUEST_CODE_FOR_PERFORM_SAF
&&
resultCode
==
Activity
.
RESULT_OK
)
{
if
(
requestCode
==
REQUEST_CODE_FOR_PERFORM_SAF
&&
resultCode
==
Activity
.
RESULT_OK
)
{
if
(
resultData
!=
null
)
{
if
(
resultData
!=
null
)
{
uploadFile
(
resultData
.
data
)
fileAttachmentDialog
(
resultData
.
data
)
}
}
}
}
}
}
private
fun
fileAttachmentDialog
(
data
:
Uri
)
{
val
builder
=
AlertDialog
.
Builder
(
activity
)
val
dialogView
=
View
.
inflate
(
context
,
R
.
layout
.
file_attachments_dialog
,
null
)
builder
.
setView
(
dialogView
)
val
alertDialog
=
builder
.
create
()
dialogView
?.
let
{
val
imagePreview
:
ImageView
=
it
.
findViewById
(
R
.
id
.
image_preview
)
val
sendButton
:
Button
=
it
.
findViewById
(
R
.
id
.
button_send
)
val
cancelButton
:
Button
=
it
.
findViewById
(
R
.
id
.
button_cancel
)
val
description
:
EditText
=
it
.
findViewById
(
R
.
id
.
text_file_description
)
val
audioVideoAttachment
:
FrameLayout
=
it
.
findViewById
(
R
.
id
.
audio_video_attachment
)
val
textFile
:
TextView
=
it
.
findViewById
(
R
.
id
.
text_file_name
)
activity
?.
let
{
data
.
getMimeType
(
it
).
apply
{
when
{
this
.
startsWith
(
"image"
)
->
{
imagePreview
.
isVisible
=
true
imagePreview
.
setImageURI
(
data
)
}
this
.
startsWith
(
"video"
)
->
{
audioVideoAttachment
.
isVisible
=
true
}
else
->
{
textFile
.
isVisible
=
true
textFile
.
text
=
data
.
getFileName
(
it
)
}
}
}
}
sendButton
.
setOnClickListener
{
uploadFile
(
data
,
description
.
text
.
toString
())
alertDialog
.
dismiss
()
}
cancelButton
.
setOnClickListener
{
alertDialog
.
dismiss
()
}
}
alertDialog
.
show
()
}
override
fun
onCreateOptionsMenu
(
menu
:
Menu
,
inflater
:
MenuInflater
)
{
override
fun
onCreateOptionsMenu
(
menu
:
Menu
,
inflater
:
MenuInflater
)
{
super
.
onCreateOptionsMenu
(
menu
,
inflater
)
super
.
onCreateOptionsMenu
(
menu
,
inflater
)
inflater
.
inflate
(
R
.
menu
.
chatroom_actions
,
menu
)
inflater
.
inflate
(
R
.
menu
.
chatroom_actions
,
menu
)
...
@@ -399,9 +434,8 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
...
@@ -399,9 +434,8 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
}
}
}
}
override
fun
uploadFile
(
uri
:
Uri
)
{
override
fun
uploadFile
(
uri
:
Uri
,
msg
:
String
)
{
// TODO Just leaving a blank message that comes with the file for now. In the future lets add the possibility to add a message with the file to be uploaded.
presenter
.
uploadFile
(
chatRoomId
,
uri
,
msg
)
presenter
.
uploadFile
(
chatRoomId
,
uri
,
""
)
}
}
override
fun
showInvalidFileMessage
()
{
override
fun
showInvalidFileMessage
()
{
...
...
app/src/main/res/drawable/rounded_color_accent.xml
0 → 100644
View file @
a1b6268b
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<solid
android:color=
"@color/colorAccent"
/>
<corners
android:radius=
"4dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/layout/file_attachments_dialog.xml
0 → 100644
View file @
a1b6268b
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:paddingBottom=
"16dp"
>
<TextView
android:id=
"@+id/text_dialog_title"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/msg_upload_file"
style=
"@style/Base.DialogWindowTitle.AppCompat"
android:layout_margin=
"16dp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/text_file_name"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:textColor=
"@color/colorAccent"
android:textAppearance=
"@style/TextAppearance.AppCompat.Body2"
android:drawableStart=
"@drawable/ic_files_24dp"
android:drawablePadding=
"6dp"
app:layout_constraintTop_toBottomOf=
"@id/text_dialog_title"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
android:layout_margin=
"16dp"
android:textDirection=
"locale"
android:visibility=
"gone"
tools:text=
"This is a very, very, very long filename, to test how the layout will work on very very very long filenames.pdf"
/>
<FrameLayout
android:id=
"@+id/audio_video_attachment"
android:layout_width=
"0dp"
android:layout_height=
"150dp"
android:background=
"@color/colorBlack"
android:visibility=
"gone"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/text_file_name"
android:layout_margin=
"16dp"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:src=
"@drawable/exo_controls_play"
/>
</FrameLayout>
<ImageView
android:id=
"@+id/image_preview"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
app:layout_constraintHeight_max=
"240dp"
app:layout_constrainedHeight=
"true"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/audio_video_attachment"
android:layout_margin=
"16dp"
android:adjustViewBounds=
"true"
android:visibility=
"gone"
tools:visibility=
"visible"
/>
<EditText
android:id=
"@+id/text_file_description"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/image_preview"
android:layout_margin=
"16dp"
android:hint=
"@string/msg_file_description"
/>
<Button
android:id=
"@+id/button_send"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/text_file_description"
android:layout_margin=
"16dp"
android:background=
"@drawable/rounded_color_accent"
android:text=
"@string/msg_send"
android:textColor=
"@color/colorWhite"
/>
<Button
android:id=
"@+id/button_cancel"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
app:layout_constraintTop_toBottomOf=
"@+id/text_file_description"
app:layout_constraintEnd_toStartOf=
"@id/button_send"
android:layout_margin=
"16dp"
style=
"@style/Base.Widget.AppCompat.Button.Borderless"
android:text=
"@string/msg_cancel"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
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