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
236f3b02
Commit
236f3b02
authored
Apr 05, 2018
by
Filipe de Lima Brito
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add the posibility to change own status.
parent
0c9fb9cf
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
340 additions
and
82 deletions
+340
-82
DrawableHelper.kt
app/src/main/java/chat/rocket/android/app/DrawableHelper.kt
+28
-0
AccountViewHolder.kt
...ava/chat/rocket/android/main/adapter/AccountViewHolder.kt
+1
-0
AccountsAdapter.kt
.../java/chat/rocket/android/main/adapter/AccountsAdapter.kt
+26
-12
StatusViewHolder.kt
...java/chat/rocket/android/main/adapter/StatusViewHolder.kt
+18
-0
MainPresenter.kt
...va/chat/rocket/android/main/presentation/MainPresenter.kt
+17
-0
MainView.kt
...in/java/chat/rocket/android/main/presentation/MainView.kt
+16
-0
MainActivity.kt
...src/main/java/chat/rocket/android/main/ui/MainActivity.kt
+27
-10
black_gradient.xml
app/src/main/res/drawable/black_gradient.xml
+2
-3
ic_status_away_24dp.xml
app/src/main/res/drawable/ic_status_away_24dp.xml
+19
-0
ic_status_busy_24dp.xml
app/src/main/res/drawable/ic_status_busy_24dp.xml
+19
-0
ic_status_invisible_24dp.xml
app/src/main/res/drawable/ic_status_invisible_24dp.xml
+19
-0
ic_status_online_24dp.xml
app/src/main/res/drawable/ic_status_online_24dp.xml
+19
-0
activity_main.xml
app/src/main/res/layout/activity_main.xml
+7
-5
item_account.xml
app/src/main/res/layout/item_account.xml
+16
-15
item_add_account.xml
app/src/main/res/layout/item_add_account.xml
+4
-9
item_change_status.xml
app/src/main/res/layout/item_change_status.xml
+54
-0
nav_header.xml
app/src/main/res/layout/nav_header.xml
+32
-25
strings.xml
app/src/main/res/values-hi-rIN/strings.xml
+4
-0
strings.xml
app/src/main/res/values-pt-rBR/strings.xml
+5
-1
dimens.xml
app/src/main/res/values/dimens.xml
+2
-1
strings.xml
app/src/main/res/values/strings.xml
+5
-1
No files found.
app/src/main/java/chat/rocket/android/app/DrawableHelper.kt
View file @
236f3b02
...
@@ -117,4 +117,32 @@ object DrawableHelper {
...
@@ -117,4 +117,32 @@ object DrawableHelper {
}
}
return
userStatusDrawable
return
userStatusDrawable
}
}
// TODO Why we need to UserStatus?
/**
* Returns the user status drawable.
*
* @param userStatus The user status.
* @param context The context.
* @sse [chat.rocket.core.internal.realtime.UserStatus]
* @return The user status drawable.
*/
fun
getUserStatusDrawable
(
userStatus
:
chat
.
rocket
.
core
.
internal
.
realtime
.
UserStatus
,
context
:
Context
):
Drawable
{
return
when
(
userStatus
)
{
is
chat
.
rocket
.
core
.
internal
.
realtime
.
UserStatus
.
Online
->
{
getDrawableFromId
(
R
.
drawable
.
ic_status_online_24dp
,
context
)
}
is
chat
.
rocket
.
core
.
internal
.
realtime
.
UserStatus
.
Away
->
{
getDrawableFromId
(
R
.
drawable
.
ic_status_away_24dp
,
context
)
}
is
chat
.
rocket
.
core
.
internal
.
realtime
.
UserStatus
.
Busy
->
{
getDrawableFromId
(
R
.
drawable
.
ic_status_busy_24dp
,
context
)
}
else
->
getDrawableFromId
(
R
.
drawable
.
ic_status_invisible_24dp
,
context
)
}
}
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/main/adapter/AccountViewHolder.kt
View file @
236f3b02
...
@@ -6,6 +6,7 @@ import chat.rocket.android.server.domain.model.Account
...
@@ -6,6 +6,7 @@ import chat.rocket.android.server.domain.model.Account
import
kotlinx.android.synthetic.main.item_account.view.*
import
kotlinx.android.synthetic.main.item_account.view.*
class
AccountViewHolder
(
itemView
:
View
)
:
RecyclerView
.
ViewHolder
(
itemView
)
{
class
AccountViewHolder
(
itemView
:
View
)
:
RecyclerView
.
ViewHolder
(
itemView
)
{
fun
bind
(
account
:
Account
)
{
fun
bind
(
account
:
Account
)
{
with
(
itemView
)
{
with
(
itemView
)
{
server_logo
.
setImageURI
(
account
.
serverLogo
)
server_logo
.
setImageURI
(
account
.
serverLogo
)
...
...
app/src/main/java/chat/rocket/android/main/adapter/AccountsAdapter.kt
View file @
236f3b02
...
@@ -5,50 +5,64 @@ import android.view.ViewGroup
...
@@ -5,50 +5,64 @@ import android.view.ViewGroup
import
chat.rocket.android.R
import
chat.rocket.android.R
import
chat.rocket.android.server.domain.model.Account
import
chat.rocket.android.server.domain.model.Account
import
chat.rocket.android.util.extensions.inflate
import
chat.rocket.android.util.extensions.inflate
import
chat.rocket.core.internal.realtime.UserStatus
private
const
val
VIEW_TYPE_CHANGE_STATUS
=
0
private
const
val
VIEW_TYPE_ACCOUNT
=
1
private
const
val
VIEW_TYPE_ADD_ACCOUNT
=
2
class
AccountsAdapter
(
class
AccountsAdapter
(
private
val
accounts
:
List
<
Account
>,
private
val
accounts
:
List
<
Account
>,
private
val
selector
:
Account
Selector
private
val
selector
:
Selector
)
:
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>()
{
)
:
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>()
{
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
RecyclerView
.
ViewHolder
{
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
RecyclerView
.
ViewHolder
{
return
when
(
viewType
)
{
return
when
(
viewType
)
{
VIEW_TYPE_CHANGE_STATUS
->
StatusViewHolder
(
parent
.
inflate
(
R
.
layout
.
item_change_status
))
VIEW_TYPE_ACCOUNT
->
AccountViewHolder
(
parent
.
inflate
(
R
.
layout
.
item_account
))
VIEW_TYPE_ACCOUNT
->
AccountViewHolder
(
parent
.
inflate
(
R
.
layout
.
item_account
))
else
->
AddAccountViewHolder
(
parent
.
inflate
(
R
.
layout
.
item_add_account
))
else
->
AddAccountViewHolder
(
parent
.
inflate
(
R
.
layout
.
item_add_account
))
}
}
}
}
override
fun
getItemCount
()
=
accounts
.
size
+
1
override
fun
getItemCount
()
=
accounts
.
size
+
2
override
fun
getItemViewType
(
position
:
Int
)
=
override
fun
getItemViewType
(
position
:
Int
):
Int
{
if
(
position
==
accounts
.
size
)
VIEW_TYPE_ADD_ACCOUNT
else
VIEW_TYPE_ACCOUNT
return
when
{
position
==
0
->
VIEW_TYPE_CHANGE_STATUS
position
<=
accounts
.
size
->
VIEW_TYPE_ACCOUNT
else
->
VIEW_TYPE_ADD_ACCOUNT
}
}
override
fun
onBindViewHolder
(
holder
:
RecyclerView
.
ViewHolder
,
position
:
Int
)
{
override
fun
onBindViewHolder
(
holder
:
RecyclerView
.
ViewHolder
,
position
:
Int
)
{
when
(
holder
)
{
when
(
holder
)
{
is
StatusViewHolder
->
bindStatusViewHolder
(
holder
)
is
AccountViewHolder
->
bindAccountViewHolder
(
holder
,
position
)
is
AccountViewHolder
->
bindAccountViewHolder
(
holder
,
position
)
is
AddAccountViewHolder
->
bindAddAccountViewHolder
(
holder
,
position
)
is
AddAccountViewHolder
->
bindAddAccountViewHolder
(
holder
)
}
}
}
}
private
fun
bindStatusViewHolder
(
holder
:
StatusViewHolder
)
{
holder
.
bind
{
userStatus
->
selector
.
onStatusSelected
(
userStatus
)
}
}
private
fun
bindAccountViewHolder
(
holder
:
AccountViewHolder
,
position
:
Int
)
{
private
fun
bindAccountViewHolder
(
holder
:
AccountViewHolder
,
position
:
Int
)
{
val
account
=
accounts
[
position
]
val
account
=
accounts
[
position
-
1
]
holder
.
bind
(
account
)
holder
.
bind
(
account
)
holder
.
itemView
.
setOnClickListener
{
holder
.
itemView
.
setOnClickListener
{
selector
.
onAccountSelected
(
account
.
serverUrl
)
selector
.
onAccountSelected
(
account
.
serverUrl
)
}
}
}
}
private
fun
bindAddAccountViewHolder
(
holder
:
AddAccountViewHolder
,
position
:
Int
)
{
private
fun
bindAddAccountViewHolder
(
holder
:
AddAccountViewHolder
)
{
holder
.
itemView
.
setOnClickListener
{
holder
.
itemView
.
setOnClickListener
{
selector
.
onAddedAccountSelected
()
selector
.
onAddedAccountSelected
()
}
}
}
}
}
}
interface
AccountSelector
{
interface
Selector
{
fun
onStatusSelected
(
userStatus
:
UserStatus
)
fun
onAccountSelected
(
serverUrl
:
String
)
fun
onAccountSelected
(
serverUrl
:
String
)
fun
onAddedAccountSelected
()
fun
onAddedAccountSelected
()
}
}
\ No newline at end of file
private
const
val
VIEW_TYPE_ACCOUNT
=
0
private
const
val
VIEW_TYPE_ADD_ACCOUNT
=
1
\ No newline at end of file
app/src/main/java/chat/rocket/android/main/adapter/StatusViewHolder.kt
0 → 100644
View file @
236f3b02
package
chat.rocket.android.main.adapter
import
android.support.v7.widget.RecyclerView
import
android.view.View
import
chat.rocket.core.internal.realtime.UserStatus
import
kotlinx.android.synthetic.main.item_change_status.view.*
class
StatusViewHolder
(
itemView
:
View
)
:
RecyclerView
.
ViewHolder
(
itemView
)
{
fun
bind
(
listener
:
(
UserStatus
)
->
Unit
)
{
with
(
itemView
)
{
text_online
.
setOnClickListener
{
listener
(
UserStatus
.
Online
)
}
text_away
.
setOnClickListener
{
listener
(
UserStatus
.
Away
)
}
text_busy
.
setOnClickListener
{
listener
(
UserStatus
.
Busy
)
}
text_invisible
.
setOnClickListener
{
listener
(
UserStatus
.
Offline
)
}
}
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/main/presentation/MainPresenter.kt
View file @
236f3b02
...
@@ -16,6 +16,8 @@ import chat.rocket.common.RocketChatAuthException
...
@@ -16,6 +16,8 @@ import chat.rocket.common.RocketChatAuthException
import
chat.rocket.common.RocketChatException
import
chat.rocket.common.RocketChatException
import
chat.rocket.common.util.ifNull
import
chat.rocket.common.util.ifNull
import
chat.rocket.core.RocketChatClient
import
chat.rocket.core.RocketChatClient
import
chat.rocket.core.internal.realtime.UserStatus
import
chat.rocket.core.internal.realtime.setDefaultStatus
import
chat.rocket.core.internal.rest.logout
import
chat.rocket.core.internal.rest.logout
import
chat.rocket.core.internal.rest.me
import
chat.rocket.core.internal.rest.me
import
chat.rocket.core.internal.rest.unregisterPushToken
import
chat.rocket.core.internal.rest.unregisterPushToken
...
@@ -142,6 +144,21 @@ class MainPresenter @Inject constructor(
...
@@ -142,6 +144,21 @@ class MainPresenter @Inject constructor(
navigator
.
toServerScreen
()
navigator
.
toServerScreen
()
}
}
fun
changeStatus
(
userStatus
:
UserStatus
)
{
launchUI
(
strategy
)
{
try
{
client
.
setDefaultStatus
(
userStatus
)
view
.
showUserStatus
(
userStatus
)
}
catch
(
ex
:
RocketChatException
)
{
ex
.
message
?.
let
{
view
.
showMessage
(
it
)
}.
ifNull
{
view
.
showGenericErrorMessage
()
}
}
}
}
suspend
fun
refreshToken
(
token
:
String
?)
{
suspend
fun
refreshToken
(
token
:
String
?)
{
token
?.
let
{
token
?.
let
{
localRepository
.
save
(
LocalRepository
.
KEY_PUSH_TOKEN
,
token
)
localRepository
.
save
(
LocalRepository
.
KEY_PUSH_TOKEN
,
token
)
...
...
app/src/main/java/chat/rocket/android/main/presentation/MainView.kt
View file @
236f3b02
...
@@ -4,8 +4,24 @@ import chat.rocket.android.authentication.server.presentation.VersionCheckView
...
@@ -4,8 +4,24 @@ import chat.rocket.android.authentication.server.presentation.VersionCheckView
import
chat.rocket.android.core.behaviours.MessageView
import
chat.rocket.android.core.behaviours.MessageView
import
chat.rocket.android.main.viewmodel.NavHeaderViewModel
import
chat.rocket.android.main.viewmodel.NavHeaderViewModel
import
chat.rocket.android.server.domain.model.Account
import
chat.rocket.android.server.domain.model.Account
import
chat.rocket.core.internal.realtime.UserStatus
interface
MainView
:
MessageView
,
VersionCheckView
{
interface
MainView
:
MessageView
,
VersionCheckView
{
/**
* Shows the current user status.
*
* @see [UserStatus]
*/
fun
showUserStatus
(
userStatus
:
UserStatus
)
/**
* Setups the navigation header.
*
* @param model The [NavHeaderViewModel].
* @param accounts The list of accounts.
*/
fun
setupNavHeader
(
model
:
NavHeaderViewModel
,
accounts
:
List
<
Account
>)
fun
setupNavHeader
(
model
:
NavHeaderViewModel
,
accounts
:
List
<
Account
>)
fun
closeServerSelection
()
fun
closeServerSelection
()
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/main/ui/MainActivity.kt
View file @
236f3b02
...
@@ -11,7 +11,7 @@ import android.view.MenuItem
...
@@ -11,7 +11,7 @@ import android.view.MenuItem
import
android.view.View
import
android.view.View
import
chat.rocket.android.BuildConfig
import
chat.rocket.android.BuildConfig
import
chat.rocket.android.R
import
chat.rocket.android.R
import
chat.rocket.android.main.adapter.
Account
Selector
import
chat.rocket.android.main.adapter.Selector
import
chat.rocket.android.main.adapter.AccountsAdapter
import
chat.rocket.android.main.adapter.AccountsAdapter
import
chat.rocket.android.main.presentation.MainPresenter
import
chat.rocket.android.main.presentation.MainPresenter
import
chat.rocket.android.main.presentation.MainView
import
chat.rocket.android.main.presentation.MainView
...
@@ -21,6 +21,7 @@ import chat.rocket.android.util.extensions.fadeIn
...
@@ -21,6 +21,7 @@ import chat.rocket.android.util.extensions.fadeIn
import
chat.rocket.android.util.extensions.fadeOut
import
chat.rocket.android.util.extensions.fadeOut
import
chat.rocket.android.util.extensions.rotateBy
import
chat.rocket.android.util.extensions.rotateBy
import
chat.rocket.android.util.extensions.showToast
import
chat.rocket.android.util.extensions.showToast
import
chat.rocket.core.internal.realtime.UserStatus
import
com.google.android.gms.gcm.GoogleCloudMessaging
import
com.google.android.gms.gcm.GoogleCloudMessaging
import
com.google.android.gms.iid.InstanceID
import
com.google.android.gms.iid.InstanceID
import
dagger.android.AndroidInjection
import
dagger.android.AndroidInjection
...
@@ -42,6 +43,7 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector, HasSupp
...
@@ -42,6 +43,7 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector, HasSupp
@Inject
lateinit
var
presenter
:
MainPresenter
@Inject
lateinit
var
presenter
:
MainPresenter
private
var
isFragmentAdded
:
Boolean
=
false
private
var
isFragmentAdded
:
Boolean
=
false
private
var
expanded
=
false
private
var
expanded
=
false
private
val
headerLayout
by
lazy
{
view_navigation
.
getHeaderView
(
0
)
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
AndroidInjection
.
inject
(
this
)
AndroidInjection
.
inject
(
this
)
...
@@ -79,15 +81,27 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector, HasSupp
...
@@ -79,15 +81,27 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector, HasSupp
}
}
}
}
override
fun
showUserStatus
(
userStatus
:
UserStatus
)
{
headerLayout
.
apply
{
image_user_status
.
setImageDrawable
(
DrawableHelper
.
getUserStatusDrawable
(
userStatus
,
this
.
context
)
)
}
}
override
fun
setupNavHeader
(
model
:
NavHeaderViewModel
,
accounts
:
List
<
Account
>)
{
override
fun
setupNavHeader
(
model
:
NavHeaderViewModel
,
accounts
:
List
<
Account
>)
{
Timber
.
d
(
"Setting up nav header: $model"
)
Timber
.
d
(
"Setting up nav header: $model"
)
val
headerLayout
=
view_navigation
.
getHeaderView
(
0
)
with
(
headerLayout
)
{
headerLayout
.
text
_name
.
text
=
model
.
username
text_user
_name
.
text
=
model
.
username
headerLayout
.
text_server
.
text
=
model
.
server
text_server_url
.
text
=
model
.
server
headerLayout
.
image_avatar
.
setImageURI
(
model
.
avatar
)
image_avatar
.
setImageURI
(
model
.
avatar
)
headerLayout
.
server_logo
.
setImageURI
(
model
.
serverLogo
)
server_logo
.
setImageURI
(
model
.
serverLogo
)
setupAccountsList
(
headerLayout
,
accounts
)
setupAccountsList
(
headerLayout
,
accounts
)
}
}
}
override
fun
closeServerSelection
()
{
override
fun
closeServerSelection
()
{
view_navigation
.
getHeaderView
(
0
).
account_container
.
performClick
()
view_navigation
.
getHeaderView
(
0
).
account_container
.
performClick
()
...
@@ -112,7 +126,11 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector, HasSupp
...
@@ -112,7 +126,11 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector, HasSupp
private
fun
setupAccountsList
(
header
:
View
,
accounts
:
List
<
Account
>)
{
private
fun
setupAccountsList
(
header
:
View
,
accounts
:
List
<
Account
>)
{
accounts_list
.
layoutManager
=
LinearLayoutManager
(
this
)
accounts_list
.
layoutManager
=
LinearLayoutManager
(
this
)
accounts_list
.
adapter
=
AccountsAdapter
(
accounts
,
object
:
AccountSelector
{
accounts_list
.
adapter
=
AccountsAdapter
(
accounts
,
object
:
Selector
{
override
fun
onStatusSelected
(
userStatus
:
UserStatus
)
{
presenter
.
changeStatus
(
userStatus
)
}
override
fun
onAccountSelected
(
serverUrl
:
String
)
{
override
fun
onAccountSelected
(
serverUrl
:
String
)
{
presenter
.
changeServer
(
serverUrl
)
presenter
.
changeServer
(
serverUrl
)
}
}
...
@@ -120,11 +138,10 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector, HasSupp
...
@@ -120,11 +138,10 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector, HasSupp
override
fun
onAddedAccountSelected
()
{
override
fun
onAddedAccountSelected
()
{
presenter
.
addNewServer
()
presenter
.
addNewServer
()
}
}
})
})
header
.
account_container
.
setOnClickListener
{
header
.
account_container
.
setOnClickListener
{
header
.
account_expand
.
rotateBy
(
180f
)
header
.
image_
account_expand
.
rotateBy
(
180f
)
if
(
expanded
)
{
if
(
expanded
)
{
accounts_list
.
fadeOut
()
accounts_list
.
fadeOut
()
}
else
{
}
else
{
...
...
app/src/main/res/drawable/black_gradient.xml
View file @
236f3b02
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<shape
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
android:shape=
"rectangle"
>
<gradient
<gradient
android:angle=
"90"
android:angle=
"90"
android:endColor=
"#00000000"
android:centerColor=
"#30000000"
android:centerColor=
"#30000000"
android:endColor=
"#00000000"
android:startColor=
"#C0000000"
android:startColor=
"#C0000000"
android:type=
"linear"
/>
android:type=
"linear"
/>
</shape>
</shape>
\ No newline at end of file
app/src/main/res/drawable/ic_status_away_24dp.xml
0 → 100644
View file @
236f3b02
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"24dp"
android:height=
"24dp"
android:viewportHeight=
"24"
android:viewportWidth=
"24"
>
<path
android:fillColor=
"#FFFFD100"
android:fillType=
"evenOdd"
android:pathData=
"M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0"
android:strokeColor=
"#00000000"
android:strokeWidth=
"1"
/>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M12,12m-11,0a11,11 0,1 1,22 0a11,11 0,1 1,-22 0"
android:strokeColor=
"#FFFFFFFF"
android:strokeWidth=
"2"
/>
</vector>
app/src/main/res/drawable/ic_status_busy_24dp.xml
0 → 100644
View file @
236f3b02
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"24dp"
android:height=
"24dp"
android:viewportHeight=
"24"
android:viewportWidth=
"24"
>
<path
android:fillColor=
"#FFFF2A57"
android:fillType=
"evenOdd"
android:pathData=
"M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0"
android:strokeColor=
"#00000000"
android:strokeWidth=
"1"
/>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M12,12m-11,0a11,11 0,1 1,22 0a11,11 0,1 1,-22 0"
android:strokeColor=
"#FFFFFFFF"
android:strokeWidth=
"2"
/>
</vector>
app/src/main/res/drawable/ic_status_invisible_24dp.xml
0 → 100644
View file @
236f3b02
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"24dp"
android:height=
"24dp"
android:viewportHeight=
"24"
android:viewportWidth=
"24"
>
<path
android:fillColor=
"#FFCBCED1"
android:fillType=
"evenOdd"
android:pathData=
"M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0"
android:strokeColor=
"#00000000"
android:strokeWidth=
"1"
/>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M12,12m-11,0a11,11 0,1 1,22 0a11,11 0,1 1,-22 0"
android:strokeColor=
"#FFFFFFFF"
android:strokeWidth=
"2"
/>
</vector>
app/src/main/res/drawable/ic_status_online_24dp.xml
0 → 100644
View file @
236f3b02
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"24dp"
android:height=
"24dp"
android:viewportHeight=
"24"
android:viewportWidth=
"24"
>
<path
android:fillColor=
"#FF2DE0A5"
android:fillType=
"evenOdd"
android:pathData=
"M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0"
android:strokeColor=
"#00000000"
android:strokeWidth=
"1"
/>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M12,12m-11,0a11,11 0,1 1,22 0a11,11 0,1 1,-22 0"
android:strokeColor=
"#FFFFFFFF"
android:strokeWidth=
"2"
/>
</vector>
app/src/main/res/layout/activity_main.xml
View file @
236f3b02
...
@@ -28,21 +28,23 @@
...
@@ -28,21 +28,23 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:layout_gravity=
"start"
>
android:layout_gravity=
"start"
>
<android.support.design.widget.NavigationView
<android.support.design.widget.NavigationView
android:id=
"@+id/view_navigation"
android:id=
"@+id/view_navigation"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
app:menu=
"@menu/navigation"
app:headerLayout=
"@layout/nav_header"
app:headerLayout=
"@layout/nav_header"
/>
app:menu=
"@menu/navigation"
/>
<android.support.v7.widget.RecyclerView
<android.support.v7.widget.RecyclerView
android:id=
"@+id/accounts_list"
android:id=
"@+id/accounts_list"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:layout_marginTop=
"@dimen/nav_header_height"
android:layout_marginTop=
"@dimen/nav_header_height"
android:elevation=
"20dp"
android:background=
"@color/white"
android:alpha=
"0"
android:alpha=
"0"
android:visibility=
"gone"
/>
android:background=
"@color/white"
android:elevation=
"20dp"
android:visibility=
"gone"
/>
</FrameLayout>
</FrameLayout>
</android.support.v4.widget.DrawerLayout>
</android.support.v4.widget.DrawerLayout>
\ No newline at end of file
app/src/main/res/layout/item_account.xml
View file @
236f3b02
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
<android.support.constraint.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"?selectableItemBackground"
>
android:paddingEnd=
"16dp"
android:paddingStart=
"16dp"
android:paddingTop=
"16dp"
android:background=
"?selectableItemBackground"
>
<com.facebook.drawee.view.SimpleDraweeView
<com.facebook.drawee.view.SimpleDraweeView
android:id=
"@+id/server_logo"
android:id=
"@+id/server_logo"
android:layout_width=
"40dp"
android:layout_width=
"40dp"
android:layout_height=
"40dp"
android:layout_height=
"40dp"
android:layout_marginTop=
"8dp"
app:actualImageScaleType=
"centerInside"
android:layout_marginStart=
"16dp"
android:layout_marginBottom=
"8dp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:actualImageScaleType=
"centerInside"
/>
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
<TextView
android:id=
"@+id/text_server_url"
android:id=
"@+id/text_server_url"
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"8dp"
android:layout_marginStart=
"8dp"
android:layout_marginEnd=
"16dp"
android:ellipsize=
"end"
android:maxLines=
"1"
android:textStyle=
"bold"
android:textStyle=
"bold"
app:layout_constraintTop_toTopOf=
"@id/server_logo"
app:layout_constraintStart_toEndOf=
"@id/server_logo"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@id/server_logo"
app:layout_constraintTop_toTopOf=
"@id/server_logo"
tools:text=
"https://open.rocket.chat"
/>
tools:text=
"https://open.rocket.chat"
/>
<TextView
<TextView
...
@@ -36,10 +36,11 @@
...
@@ -36,10 +36,11 @@
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"8dp"
android:layout_marginStart=
"8dp"
android:layout_marginEnd=
"16dp"
android:ellipsize=
"end"
android:maxLines=
"1"
app:layout_constraintBottom_toBottomOf=
"@id/server_logo"
app:layout_constraintBottom_toBottomOf=
"@id/server_logo"
app:layout_constraintStart_toEndOf=
"@id/server_logo"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
tools:text=
"Lucio Maciel"
/>
app:layout_constraintStart_toEndOf=
"@id/server_logo"
tools:text=
"Lucio Maciel"
/>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/item_add_account.xml
View file @
236f3b02
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
<android.support.constraint.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"?selectableItemBackground"
>
android:padding=
"16dp"
android:background=
"?selectableItemBackground"
>
<ImageView
<ImageView
android:id=
"@+id/server_logo"
android:id=
"@+id/server_logo"
android:layout_width=
"40dp"
android:layout_width=
"40dp"
android:layout_height=
"40dp"
android:layout_height=
"40dp"
android:layout_marginTop=
"8dp"
android:layout_marginStart=
"16dp"
android:layout_marginBottom=
"8dp"
android:src=
"@drawable/ic_add_24dp"
android:src=
"@drawable/ic_add_24dp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
...
@@ -23,8 +19,7 @@
...
@@ -23,8 +19,7 @@
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"8dp"
android:layout_marginStart=
"8dp"
android:layout_marginEnd=
"16dp"
android:textAppearance=
"@style/TextAppearance.AppCompat.Body2"
android:textAppearance=
"@style/TextAppearance.AppCompat.Medium"
android:text=
"@string/action_add_account"
android:text=
"@string/action_add_account"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
...
...
app/src/main/res/layout/item_change_status.xml
0 → 100644
View file @
236f3b02
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:divider=
"?android:dividerHorizontal"
android:orientation=
"vertical"
android:showDividers=
"end"
>
<TextView
android:id=
"@+id/text_online"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"10dp"
android:layout_marginEnd=
"16dp"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"16dp"
android:drawablePadding=
"10dp"
android:drawableStart=
"@drawable/ic_status_online_24dp"
android:text=
"@string/action_online"
/>
<TextView
android:id=
"@+id/text_away"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"10dp"
android:layout_marginEnd=
"16dp"
android:layout_marginStart=
"16dp"
android:drawablePadding=
"10dp"
android:drawableStart=
"@drawable/ic_status_away_24dp"
android:text=
"@string/action_away"
/>
<TextView
android:id=
"@+id/text_busy"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"10dp"
android:layout_marginEnd=
"16dp"
android:layout_marginStart=
"16dp"
android:drawablePadding=
"10dp"
android:drawableStart=
"@drawable/ic_status_busy_24dp"
android:text=
"@string/action_busy"
/>
<TextView
android:id=
"@+id/text_invisible"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_marginStart=
"16dp"
android:drawablePadding=
"10dp"
android:drawableStart=
"@drawable/ic_status_invisible_24dp"
android:text=
"@string/action_invisible"
/>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/nav_header.xml
View file @
236f3b02
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
<android.support.constraint.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
@@ -11,11 +10,11 @@
...
@@ -11,11 +10,11 @@
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
android:layout_height=
"0dp"
android:foreground=
"@drawable/black_gradient"
android:foreground=
"@drawable/black_gradient"
app:actualImageScaleType=
"centerCrop"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:actualImageScaleType=
"centerCrop"
tools:src=
"@tools:sample/backgrounds/scenic"
/>
tools:src=
"@tools:sample/backgrounds/scenic"
/>
<com.facebook.drawee.view.SimpleDraweeView
<com.facebook.drawee.view.SimpleDraweeView
...
@@ -33,50 +32,58 @@
...
@@ -33,50 +32,58 @@
android:id=
"@+id/account_container"
android:id=
"@+id/account_container"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"8dp"
android:layout_marginStart=
"12dp"
android:layout_marginEnd=
"12dp"
android:layout_marginTop=
"16dp"
android:layout_marginTop=
"16dp"
android:padding=
"4dp"
android:elevation=
"2dp"
android:background=
"?selectableItemBackground"
android:background=
"?selectableItemBackground"
app:layout_constraintBottom_toBottomOf=
"parent"
android:elevation=
"2dp"
app:layout_constraintStart_toStartOf=
"@+id/image_avatar"
android:paddingBottom=
"4dp"
android:paddingEnd=
"12dp"
android:paddingStart=
"12dp"
android:paddingTop=
"4dp"
app:layout_constraintTop_toBottomOf=
"@+id/image_avatar"
>
app:layout_constraintTop_toBottomOf=
"@+id/image_avatar"
>
<ImageView
android:id=
"@+id/image_user_status"
android:layout_width=
"14dp"
android:layout_height=
"14dp"
android:src=
"@drawable/ic_status_online_24dp"
app:layout_constraintStart_toStartOf=
"parent"
/>
<TextView
<TextView
android:id=
"@+id/text_name"
android:id=
"@+id/text_user_name"
style=
"@style/Sender.Name.TextView"
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"
8
dp"
android:layout_marginEnd=
"
10
dp"
android:
textAppearance=
"@style/TextAppearance.AppCompat.Medium
"
android:
layout_marginStart=
"10dp
"
android:textColor=
"@color/white"
android:textColor=
"@color/white"
app:layout_constraintEnd_toStartOf=
"@+id/account_expand"
app:layout_constraintBottom_toBottomOf=
"@+id/image_user_status"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@+id/image_account_expand"
app:layout_constraintStart_toEndOf=
"@+id/image_user_status"
app:layout_constraintTop_toTopOf=
"@+id/image_user_status"
tools:text=
"Lucio Maciel"
/>
tools:text=
"Lucio Maciel"
/>
<TextView
<TextView
android:id=
"@+id/text_server"
android:id=
"@+id/text_server
_url
"
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"8dp"
android:layout_marginEnd=
"10dp"
android:ellipsize=
"end"
android:maxLines=
"1"
android:textAppearance=
"@style/TextAppearance.AppCompat.Small"
android:textAppearance=
"@style/TextAppearance.AppCompat.Small"
android:textColor=
"@color/white"
android:textColor=
"@color/white"
app:layout_constraintEnd_toStartOf=
"@+id/account_expand"
app:layout_constraintEnd_toStartOf=
"@+id/
image_
account_expand"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/text_name"
app:layout_constraintTop_toBottomOf=
"@+id/text_
user_
name"
tools:text=
"https://open.rocket.chat"
/>
tools:text=
"https://open.rocket.chat"
/>
<ImageView
<ImageView
android:id=
"@+id/account_expand"
android:id=
"@+id/
image_
account_expand"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"8dp"
android:src=
"@drawable/ic_expand_more_24dp"
android:src=
"@drawable/ic_expand_more_24dp"
android:tint=
"@color/whitesmoke"
android:tint=
"@color/white"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"@+id/text_server_url"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
\ No newline at end of file
app/src/main/res/values-hi-rIN/strings.xml
View file @
236f3b02
...
@@ -28,6 +28,10 @@
...
@@ -28,6 +28,10 @@
<string
name=
"action_confirm_password"
>
पासवर्ड परिवर्तन की पुष्टि करें
</string>
<string
name=
"action_confirm_password"
>
पासवर्ड परिवर्तन की पुष्टि करें
</string>
<string
name=
"action_join_chat"
>
चैट में शामिल हों
</string>
<string
name=
"action_join_chat"
>
चैट में शामिल हों
</string>
<string
name=
"action_add_account"
>
खाता जोड़ो
</string>
<string
name=
"action_add_account"
>
खाता जोड़ो
</string>
<string
name=
"action_online"
>
ऑनलाइन
</string>
<string
name=
"action_away"
>
दूर
</string>
<string
name=
"action_busy"
>
व्यस्त
</string>
<string
name=
"action_invisible"
>
अदृश्य
</string>
<!-- Settings List -->
<!-- Settings List -->
<string-array
name=
"settings_actions"
>
<string-array
name=
"settings_actions"
>
...
...
app/src/main/res/values-pt-rBR/strings.xml
View file @
236f3b02
...
@@ -27,7 +27,11 @@
...
@@ -27,7 +27,11 @@
<string
name=
"action_files"
>
Arquivos
</string>
<string
name=
"action_files"
>
Arquivos
</string>
<string
name=
"action_confirm_password"
>
Confirme a nova senha
</string>
<string
name=
"action_confirm_password"
>
Confirme a nova senha
</string>
<string
name=
"action_join_chat"
>
Entrar no Chat
</string>
<string
name=
"action_join_chat"
>
Entrar no Chat
</string>
<string
name=
"action_add_account"
>
Adicionar Conta
</string>
<string
name=
"action_add_account"
>
Adicionar conta
</string>
<string
name=
"action_online"
>
Online
</string>
<string
name=
"action_away"
>
Ausente
</string>
<string
name=
"action_busy"
>
Ocupado
</string>
<string
name=
"action_invisible"
>
Invisível
</string>
<!-- Settings List -->
<!-- Settings List -->
<string-array
name=
"settings_actions"
>
<string-array
name=
"settings_actions"
>
...
...
app/src/main/res/values/dimens.xml
View file @
236f3b02
...
@@ -21,6 +21,8 @@
...
@@ -21,6 +21,8 @@
<dimen
name=
"message_time_text_size"
>
12sp
</dimen>
<dimen
name=
"message_time_text_size"
>
12sp
</dimen>
<dimen
name=
"nav_header_height"
>
140dp
</dimen>
<!-- Emoji -->
<!-- Emoji -->
<dimen
name=
"picker_padding_bottom"
>
16dp
</dimen>
<dimen
name=
"picker_padding_bottom"
>
16dp
</dimen>
<dimen
name=
"supposed_keyboard_height"
>
252dp
</dimen>
<dimen
name=
"supposed_keyboard_height"
>
252dp
</dimen>
...
@@ -35,6 +37,5 @@
...
@@ -35,6 +37,5 @@
<!-- Autocomplete Popup -->
<!-- Autocomplete Popup -->
<dimen
name=
"popup_max_height"
>
150dp
</dimen>
<dimen
name=
"popup_max_height"
>
150dp
</dimen>
<dimen
name=
"suggestions_box_max_height"
>
250dp
</dimen>
<dimen
name=
"suggestions_box_max_height"
>
250dp
</dimen>
<dimen
name=
"nav_header_height"
>
160dp
</dimen>
</resources>
</resources>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
236f3b02
...
@@ -28,7 +28,11 @@
...
@@ -28,7 +28,11 @@
<string
name=
"action_files"
>
Files
</string>
<string
name=
"action_files"
>
Files
</string>
<string
name=
"action_confirm_password"
>
Confirm Password Change
</string>
<string
name=
"action_confirm_password"
>
Confirm Password Change
</string>
<string
name=
"action_join_chat"
>
Join Chat
</string>
<string
name=
"action_join_chat"
>
Join Chat
</string>
<string
name=
"action_add_account"
>
Add Account
</string>
<string
name=
"action_add_account"
>
Add account
</string>
<string
name=
"action_online"
>
Online
</string>
<string
name=
"action_away"
>
Away
</string>
<string
name=
"action_busy"
>
Busy
</string>
<string
name=
"action_invisible"
>
Invisible
</string>
<!-- Settings List -->
<!-- Settings List -->
<string-array
name=
"settings_actions"
>
<string-array
name=
"settings_actions"
>
...
...
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