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
a99b2e79
Commit
a99b2e79
authored
Mar 31, 2019
by
Filipe de Lima Brito
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changes the UI of the main view.
parent
8d2bc2c5
Changes
47
Hide whitespace changes
Inline
Side-by-side
Showing
47 changed files
with
798 additions
and
940 deletions
+798
-940
DrawableHelper.kt
app/src/main/java/chat/rocket/android/app/DrawableHelper.kt
+19
-4
RegisterUsernameFragment.kt
...ntication/registerusername/ui/RegisterUsernameFragment.kt
+1
-1
ChatDetailsFragment.kt
...chat/rocket/android/chatdetails/ui/ChatDetailsFragment.kt
+1
-1
ChatRoomsFragment.kt
...ava/chat/rocket/android/chatrooms/ui/ChatRoomsFragment.kt
+74
-121
SortByBottomSheetFragment.kt
.../rocket/android/chatrooms/ui/SortByBottomSheetFragment.kt
+124
-0
CreateChannelFragment.kt
.../rocket/android/createchannel/ui/CreateChannelFragment.kt
+9
-6
MainPresenter.kt
...va/chat/rocket/android/main/presentation/MainPresenter.kt
+58
-186
MainView.kt
...in/java/chat/rocket/android/main/presentation/MainView.kt
+7
-23
MainActivity.kt
...src/main/java/chat/rocket/android/main/ui/MainActivity.kt
+26
-217
Menu.kt
app/src/main/java/chat/rocket/android/main/ui/Menu.kt
+0
-69
NavHeaderUiModel.kt
...java/chat/rocket/android/main/uimodel/NavHeaderUiModel.kt
+0
-11
NavHeaderUiModelMapper.kt
...hat/rocket/android/main/uimodel/NavHeaderUiModelMapper.kt
+0
-32
ProfileFragment.kt
...in/java/chat/rocket/android/profile/ui/ProfileFragment.kt
+1
-1
SettingsFragment.kt
.../java/chat/rocket/android/settings/ui/SettingsFragment.kt
+0
-6
ic_activity_20dp.xml
app/src/main/res/drawable/ic_activity_20dp.xml
+19
-0
ic_arrow_expand_20dp.xml
app/src/main/res/drawable/ic_arrow_expand_20dp.xml
+13
-0
ic_check.xml
app/src/main/res/drawable/ic_check.xml
+14
-0
ic_check_read_24dp.xml
app/src/main/res/drawable/ic_check_read_24dp.xml
+3
-2
ic_favorites_20dp.xml
app/src/main/res/drawable/ic_favorites_20dp.xml
+13
-0
ic_filter_20dp.xml
app/src/main/res/drawable/ic_filter_20dp.xml
+40
-0
ic_group_by_type_20dp.xml
app/src/main/res/drawable/ic_group_by_type_20dp.xml
+13
-0
ic_navigation_24dp.xml
app/src/main/res/drawable/ic_navigation_24dp.xml
+13
-0
ic_new_channel_24dp.xml
app/src/main/res/drawable/ic_new_channel_24dp.xml
+13
-0
ic_unread_20dp.xml
app/src/main/res/drawable/ic_unread_20dp.xml
+25
-0
activity_main.xml
app/src/main/res/layout/activity_main.xml
+10
-40
app_bar_main.xml
app/src/main/res/layout/app_bar_main.xml
+30
-0
bottom_sheet_fragment_sort_by.xml
app/src/main/res/layout/bottom_sheet_fragment_sort_by.xml
+109
-0
chatroom_sort_dialog.xml
app/src/main/res/layout/chatroom_sort_dialog.xml
+0
-40
fragment_chat_rooms.xml
app/src/main/res/layout/fragment_chat_rooms.xml
+28
-41
item_account_delete.xml
app/src/main/res/layout/item_account_delete.xml
+0
-1
chatrooms.xml
app/src/main/res/menu/chatrooms.xml
+7
-10
strings.xml
app/src/main/res/values-ar/strings.xml
+8
-8
strings.xml
app/src/main/res/values-de/strings.xml
+8
-8
strings.xml
app/src/main/res/values-es/strings.xml
+8
-8
strings.xml
app/src/main/res/values-fa/strings.xml
+8
-8
strings.xml
app/src/main/res/values-fr/strings.xml
+8
-8
strings.xml
app/src/main/res/values-hi-rIN/strings.xml
+8
-8
strings.xml
app/src/main/res/values-it/strings.xml
+8
-8
strings.xml
app/src/main/res/values-ja/strings.xml
+8
-9
strings.xml
app/src/main/res/values-pt-rBR/strings.xml
+8
-7
strings.xml
app/src/main/res/values-pt-rPT/strings.xml
+8
-8
strings.xml
app/src/main/res/values-ru-rRU/strings.xml
+8
-8
strings.xml
app/src/main/res/values-tr/strings.xml
+8
-8
strings.xml
app/src/main/res/values-uk/strings.xml
+8
-8
strings.xml
app/src/main/res/values-zh-rCN/strings.xml
+8
-8
strings.xml
app/src/main/res/values-zh-rTW/strings.xml
+8
-8
strings.xml
app/src/main/res/values/strings.xml
+8
-8
No files found.
app/src/main/java/chat/rocket/android/app/DrawableHelper.kt
View file @
a99b2e79
import
android.content.Context
import
android.content.Context
import
android.graphics.drawable.Drawable
import
android.graphics.drawable.Drawable
import
android.widget.TextView
import
androidx.core.content.ContextCompat
import
androidx.core.content.ContextCompat
import
androidx.core.graphics.drawable.DrawableCompat
import
androidx.core.graphics.drawable.DrawableCompat
import
android.widget.TextView
import
chat.rocket.android.R
import
chat.rocket.android.R
import
chat.rocket.common.model.UserStatus
import
chat.rocket.common.model.UserStatus
...
@@ -78,7 +78,7 @@ object DrawableHelper {
...
@@ -78,7 +78,7 @@ object DrawableHelper {
*
*
* @param textView The array of TextView.
* @param textView The array of TextView.
* @param drawables The array of Drawable.
* @param drawables The array of Drawable.
* @see compoundDrawable
* @see compound
Left
Drawable
*/
*/
fun
compoundDrawables
(
textView
:
Array
<
TextView
>,
drawables
:
Array
<
Drawable
>)
{
fun
compoundDrawables
(
textView
:
Array
<
TextView
>,
drawables
:
Array
<
Drawable
>)
{
if
(
textView
.
size
!=
drawables
.
size
)
{
if
(
textView
.
size
!=
drawables
.
size
)
{
...
@@ -97,7 +97,7 @@ object DrawableHelper {
...
@@ -97,7 +97,7 @@ object DrawableHelper {
* @param drawable The Drawable.
* @param drawable The Drawable.
* @see compoundDrawables
* @see compoundDrawables
*/
*/
fun
compoundDrawable
(
textView
:
TextView
,
drawable
:
Drawable
)
=
fun
compound
Left
Drawable
(
textView
:
TextView
,
drawable
:
Drawable
)
=
textView
.
setCompoundDrawablesWithIntrinsicBounds
(
drawable
,
null
,
null
,
null
)
textView
.
setCompoundDrawablesWithIntrinsicBounds
(
drawable
,
null
,
null
,
null
)
/**
/**
...
@@ -105,11 +105,26 @@ object DrawableHelper {
...
@@ -105,11 +105,26 @@ object DrawableHelper {
*
*
* @param textView The TextView.
* @param textView The TextView.
* @param drawable The Drawable.
* @param drawable The Drawable.
* @see compoundDrawable
* @see compound
Left
Drawable
*/
*/
fun
compoundRightDrawable
(
textView
:
TextView
,
drawable
:
Drawable
)
=
fun
compoundRightDrawable
(
textView
:
TextView
,
drawable
:
Drawable
)
=
textView
.
setCompoundDrawablesWithIntrinsicBounds
(
null
,
null
,
drawable
,
null
)
textView
.
setCompoundDrawablesWithIntrinsicBounds
(
null
,
null
,
drawable
,
null
)
/**
* Compounds a Drawable (to appear on the left and right side of a text) into a TextView.
*
* @param textView The TextView.
* @param leftDrawable The left Drawable.
* @param rightDrawable The right Drawable.
* @see compoundLeftDrawable
*/
fun
compoundLeftAndRightDrawable
(
textView
:
TextView
,
leftDrawable
:
Drawable
,
rightDrawable
:
Drawable
)
=
textView
.
setCompoundDrawablesWithIntrinsicBounds
(
leftDrawable
,
null
,
rightDrawable
,
null
)
/**
/**
* Returns the user status drawable.
* Returns the user status drawable.
*
*
...
...
app/src/main/java/chat/rocket/android/authentication/registerusername/ui/RegisterUsernameFragment.kt
View file @
a99b2e79
...
@@ -140,7 +140,7 @@ class RegisterUsernameFragment : Fragment(), RegisterUsernameView {
...
@@ -140,7 +140,7 @@ class RegisterUsernameFragment : Fragment(), RegisterUsernameView {
val
atDrawable
=
DrawableHelper
.
getDrawableFromId
(
R
.
drawable
.
ic_at_black_20dp
,
it
)
val
atDrawable
=
DrawableHelper
.
getDrawableFromId
(
R
.
drawable
.
ic_at_black_20dp
,
it
)
DrawableHelper
.
wrapDrawable
(
atDrawable
)
DrawableHelper
.
wrapDrawable
(
atDrawable
)
DrawableHelper
.
tintDrawable
(
atDrawable
,
it
,
R
.
color
.
colorDrawableTintGrey
)
DrawableHelper
.
tintDrawable
(
atDrawable
,
it
,
R
.
color
.
colorDrawableTintGrey
)
DrawableHelper
.
compoundDrawable
(
text_username
,
atDrawable
)
DrawableHelper
.
compound
Left
Drawable
(
text_username
,
atDrawable
)
}
}
}
}
...
...
app/src/main/java/chat/rocket/android/chatdetails/ui/ChatDetailsFragment.kt
View file @
a99b2e79
...
@@ -200,7 +200,7 @@ class ChatDetailsFragment : Fragment(), ChatDetailsView {
...
@@ -200,7 +200,7 @@ class ChatDetailsFragment : Fragment(), ChatDetailsView {
val
wrappedDrawable
=
DrawableHelper
.
wrapDrawable
(
it
)
val
wrappedDrawable
=
DrawableHelper
.
wrapDrawable
(
it
)
val
mutableDrawable
=
wrappedDrawable
.
mutate
()
val
mutableDrawable
=
wrappedDrawable
.
mutate
()
DrawableHelper
.
tintDrawable
(
mutableDrawable
,
context
!!
,
R
.
color
.
colorPrimary
)
DrawableHelper
.
tintDrawable
(
mutableDrawable
,
context
!!
,
R
.
color
.
colorPrimary
)
DrawableHelper
.
compoundDrawable
(
name
,
mutableDrawable
)
DrawableHelper
.
compound
Left
Drawable
(
name
,
mutableDrawable
)
}
}
}
}
...
...
app/src/main/java/chat/rocket/android/chatrooms/ui/ChatRoomsFragment.kt
View file @
a99b2e79
package
chat.rocket.android.chatrooms.ui
package
chat.rocket.android.chatrooms.ui
import
androidx.appcompat.app.AlertDialog
import
android.app.ProgressDialog
import
android.app.ProgressDialog
import
android.os.Bundle
import
android.os.Bundle
import
android.os.Handler
import
android.os.Handler
...
@@ -10,8 +9,6 @@ import android.view.MenuInflater
...
@@ -10,8 +9,6 @@ import android.view.MenuInflater
import
android.view.MenuItem
import
android.view.MenuItem
import
android.view.View
import
android.view.View
import
android.view.ViewGroup
import
android.view.ViewGroup
import
android.widget.CheckBox
import
android.widget.RadioGroup
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.widget.SearchView
import
androidx.appcompat.widget.SearchView
import
androidx.core.view.isVisible
import
androidx.core.view.isVisible
...
@@ -34,8 +31,6 @@ import chat.rocket.android.helper.ChatRoomsSortOrder
...
@@ -34,8 +31,6 @@ import chat.rocket.android.helper.ChatRoomsSortOrder
import
chat.rocket.android.helper.Constants
import
chat.rocket.android.helper.Constants
import
chat.rocket.android.helper.SharedPreferenceHelper
import
chat.rocket.android.helper.SharedPreferenceHelper
import
chat.rocket.android.util.extension.onQueryTextListener
import
chat.rocket.android.util.extension.onQueryTextListener
import
chat.rocket.android.util.extensions.fadeIn
import
chat.rocket.android.util.extensions.fadeOut
import
chat.rocket.android.util.extensions.ifNotNullNotEmpty
import
chat.rocket.android.util.extensions.ifNotNullNotEmpty
import
chat.rocket.android.util.extensions.inflate
import
chat.rocket.android.util.extensions.inflate
import
chat.rocket.android.util.extensions.showToast
import
chat.rocket.android.util.extensions.showToast
...
@@ -58,11 +53,7 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
...
@@ -58,11 +53,7 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
lateinit
var
factory
:
ChatRoomsViewModelFactory
lateinit
var
factory
:
ChatRoomsViewModelFactory
@Inject
@Inject
lateinit
var
analyticsManager
:
AnalyticsManager
lateinit
var
analyticsManager
:
AnalyticsManager
private
lateinit
var
viewModel
:
ChatRoomsViewModel
private
lateinit
var
viewModel
:
ChatRoomsViewModel
private
var
searchView
:
SearchView
?
=
null
private
var
sortView
:
MenuItem
?
=
null
private
val
handler
=
Handler
()
private
val
handler
=
Handler
()
private
var
chatRoomId
:
String
?
=
null
private
var
chatRoomId
:
String
?
=
null
private
var
progressDialog
:
ProgressDialog
?
=
null
private
var
progressDialog
:
ProgressDialog
?
=
null
...
@@ -106,6 +97,7 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
...
@@ -106,6 +97,7 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
subscribeUi
()
subscribeUi
()
setupToolbar
()
setupToolbar
()
setupListeners
()
analyticsManager
.
logScreenView
(
ScreenViewEvent
.
ChatRooms
)
analyticsManager
.
logScreenView
(
ScreenViewEvent
.
ChatRooms
)
}
}
...
@@ -116,15 +108,17 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
...
@@ -116,15 +108,17 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
presenter
.
loadChatRoom
(
room
)
presenter
.
loadChatRoom
(
room
)
}
}
recycler_view
.
layoutManager
=
LinearLayoutManager
(
it
)
with
(
recycler_view
)
{
recycler_view
.
addItemDecoration
(
layoutManager
=
LinearLayoutManager
(
it
)
DividerItemDecoration
(
addItemDecoration
(
it
,
DividerItemDecoration
(
resources
.
getDimensionPixelSize
(
R
.
dimen
.
divider_item_decorator_bound_start
),
it
,
resources
.
getDimensionPixelSize
(
R
.
dimen
.
divider_item_decorator_bound_end
)
resources
.
getDimensionPixelSize
(
R
.
dimen
.
divider_item_decorator_bound_start
),
resources
.
getDimensionPixelSize
(
R
.
dimen
.
divider_item_decorator_bound_end
)
)
)
)
)
itemAnimator
=
DefaultItemAnimator
(
)
recycler_view
.
itemAnimator
=
DefaultItemAnimator
()
}
viewModel
.
getChatRooms
().
observe
(
viewLifecycleOwner
,
Observer
{
rooms
->
viewModel
.
getChatRooms
().
observe
(
viewLifecycleOwner
,
Observer
{
rooms
->
rooms
?.
let
{
rooms
?.
let
{
...
@@ -134,7 +128,7 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
...
@@ -134,7 +128,7 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
recycler_view
.
adapter
=
adapter
recycler_view
.
adapter
=
adapter
}
}
if
(
rooms
.
isNotEmpty
())
{
if
(
rooms
.
isNotEmpty
())
{
text_no_data_to_display
.
isVisible
=
false
//
text_no_data_to_display.isVisible = false
}
}
}
}
})
})
...
@@ -165,88 +159,29 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
...
@@ -165,88 +159,29 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
super
.
onCreateOptionsMenu
(
menu
,
inflater
)
super
.
onCreateOptionsMenu
(
menu
,
inflater
)
inflater
.
inflate
(
R
.
menu
.
chatrooms
,
menu
)
inflater
.
inflate
(
R
.
menu
.
chatrooms
,
menu
)
sortView
=
menu
.
findItem
(
R
.
id
.
action_sort
)
val
searchMenuItem
=
menu
.
findItem
(
R
.
id
.
action_search
)
val
searchView
=
searchMenuItem
?.
actionView
as
SearchView
val
searchItem
=
menu
.
findItem
(
R
.
id
.
action_search
)
with
(
searchView
)
{
searchView
=
searchItem
?.
actionView
as
?
SearchView
setIconifiedByDefault
(
false
)
searchView
?.
setIconifiedByDefault
(
false
)
maxWidth
=
Integer
.
MAX_VALUE
searchView
?.
maxWidth
=
Integer
.
MAX_VALUE
onQueryTextListener
{
queryChatRoomsByName
(
it
)
}
searchView
?.
onQueryTextListener
{
queryChatRoomsByName
(
it
)
}
}
val
expandListener
=
object
:
MenuItem
.
OnActionExpandListener
{
searchMenuItem
.
setOnActionExpandListener
(
object
:
MenuItem
.
OnActionExpandListener
{
override
fun
onMenuItemActionCollapse
(
item
:
MenuItem
):
Boolean
{
override
fun
onMenuItemActionCollapse
(
item
:
MenuItem
):
Boolean
{
// Simply setting sortView to visible won't work, so we invalidate the options
// We need to show all the menu items here by invalidating the options to recreate the entire menu.
// to recreate the entire menu...
viewModel
.
showLastMessage
=
true
activity
?.
invalidateOptionsMenu
()
activity
?.
invalidateOptionsMenu
()
queryChatRoomsByName
(
null
)
queryChatRoomsByName
(
null
)
return
true
return
true
}
}
override
fun
onMenuItemActionExpand
(
item
:
MenuItem
):
Boolean
{
override
fun
onMenuItemActionExpand
(
item
:
MenuItem
):
Boolean
{
viewModel
.
showLastMessage
=
false
// We need to hide the all the menu items here.
sortView
?
.
isVisible
=
false
menu
.
findItem
(
R
.
id
.
action_new_channel
)
.
isVisible
=
false
return
true
return
true
}
}
}
})
searchItem
?.
setOnActionExpandListener
(
expandListener
)
}
override
fun
onOptionsItemSelected
(
item
:
MenuItem
):
Boolean
{
when
(
item
.
itemId
)
{
// TODO - simplify this
R
.
id
.
action_sort
->
{
val
dialogLayout
=
layoutInflater
.
inflate
(
R
.
layout
.
chatroom_sort_dialog
,
null
)
val
sortType
=
SharedPreferenceHelper
.
getInt
(
Constants
.
CHATROOM_SORT_TYPE_KEY
,
ChatRoomsSortOrder
.
ACTIVITY
)
val
groupByType
=
SharedPreferenceHelper
.
getBoolean
(
Constants
.
CHATROOM_GROUP_BY_TYPE_KEY
,
false
)
val
radioGroup
=
dialogLayout
.
findViewById
<
RadioGroup
>(
R
.
id
.
radio_group_sort
)
val
groupByTypeCheckBox
=
dialogLayout
.
findViewById
<
CheckBox
>(
R
.
id
.
checkbox_group_by_type
)
radioGroup
.
check
(
when
(
sortType
)
{
0
->
R
.
id
.
radio_sort_alphabetical
else
->
R
.
id
.
radio_sort_activity
}
)
radioGroup
.
setOnCheckedChangeListener
{
_
,
checkedId
->
run
{
SharedPreferenceHelper
.
putInt
(
Constants
.
CHATROOM_SORT_TYPE_KEY
,
when
(
checkedId
)
{
R
.
id
.
radio_sort_alphabetical
->
0
R
.
id
.
radio_sort_activity
->
1
else
->
1
}
)
}
}
groupByTypeCheckBox
.
isChecked
=
groupByType
groupByTypeCheckBox
.
setOnCheckedChangeListener
{
_
,
isChecked
->
SharedPreferenceHelper
.
putBoolean
(
Constants
.
CHATROOM_GROUP_BY_TYPE_KEY
,
isChecked
)
}
context
?.
let
{
AlertDialog
.
Builder
(
it
)
.
setTitle
(
R
.
string
.
dialog_sort_title
)
.
setView
(
dialogLayout
)
.
setPositiveButton
(
R
.
string
.
msg_sort
)
{
dialog
,
_
->
invalidateQueryOnSearch
()
updateSort
()
dialog
.
dismiss
()
}.
show
()
}
}
}
return
super
.
onOptionsItemSelected
(
item
)
}
}
private
fun
updateSort
()
{
private
fun
updateSort
()
{
...
@@ -269,16 +204,8 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
...
@@ -269,16 +204,8 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
viewModel
.
setQuery
(
query
)
viewModel
.
setQuery
(
query
)
}
}
private
fun
invalidateQueryOnSearch
()
{
searchView
?.
let
{
if
(!
searchView
!!
.
isIconified
)
{
queryChatRoomsByName
(
searchView
!!
.
query
.
toString
())
}
}
}
private
fun
showNoChatRoomsToDisplay
()
{
private
fun
showNoChatRoomsToDisplay
()
{
ui
{
text_no_data_to_display
.
isVisible
=
true
}
//
ui { text_no_data_to_display.isVisible = true }
}
}
override
fun
showLoading
()
{
override
fun
showLoading
()
{
...
@@ -315,42 +242,68 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
...
@@ -315,42 +242,68 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
private
fun
showConnectionState
(
state
:
State
)
{
private
fun
showConnectionState
(
state
:
State
)
{
Timber
.
d
(
"Got new state: $state"
)
Timber
.
d
(
"Got new state: $state"
)
ui
{
//
ui {
text_connection_status
.
fadeIn
()
//
text_connection_status.fadeIn()
handler
.
removeCallbacks
(
dismissStatus
)
//
handler.removeCallbacks(dismissStatus)
text_connection_status
.
text
=
when
(
state
)
{
//
text_connection_status.text = when (state) {
is
State
.
Connected
->
{
//
is State.Connected -> {
handler
.
postDelayed
(
dismissStatus
,
2000
)
//
handler.postDelayed(dismissStatus, 2000)
getString
(
R
.
string
.
status_connected
)
//
getString(R.string.status_connected)
}
//
}
is
State
.
Disconnected
->
getString
(
R
.
string
.
status_disconnected
)
//
is State.Disconnected -> getString(R.string.status_disconnected)
is
State
.
Connecting
->
getString
(
R
.
string
.
status_connecting
)
//
is State.Connecting -> getString(R.string.status_connecting)
is
State
.
Authenticating
->
getString
(
R
.
string
.
status_authenticating
)
//
is State.Authenticating -> getString(R.string.status_authenticating)
is
State
.
Disconnecting
->
getString
(
R
.
string
.
status_disconnecting
)
//
is State.Disconnecting -> getString(R.string.status_disconnecting)
is
State
.
Waiting
->
getString
(
R
.
string
.
status_waiting
,
state
.
seconds
)
//
is State.Waiting -> getString(R.string.status_waiting, state.seconds)
else
->
{
//
else -> {
handler
.
postDelayed
(
dismissStatus
,
500
)
//
handler.postDelayed(dismissStatus, 500)
""
//
""
}
//
}
}
//
}
}
//
}
}
}
private
val
dismissStatus
=
{
private
val
dismissStatus
=
{
if
(
text_connection_status
!=
null
)
{
//
if (text_connection_status != null) {
text_connection_status
.
fadeOut
()
//
text_connection_status.fadeOut()
}
//
}
}
}
private
fun
setupToolbar
()
{
private
fun
setupToolbar
()
{
(
activity
as
AppCompatActivity
?)
?.
supportActionBar
?.
title
=
getString
(
R
.
string
.
title_chats
)
(
activity
as
AppCompatActivity
?)
?.
supportActionBar
?.
title
=
getString
(
R
.
string
.
title_chats
)
}
}
private
fun
setupListeners
()
{
text_sort_by
.
setOnClickListener
{
SortByBottomSheetFragment
()
.
show
(
activity
?.
supportFragmentManager
,
TAG
)
}
}
fun
sortChatRoomsList
(
isSortByName
:
Boolean
,
isUnreadOnTop
:
Boolean
,
isGroupByType
:
Boolean
,
isGroupByFavorites
:
Boolean
)
{
if
(
isSortByName
)
{
viewModel
.
setQuery
(
Query
.
ByName
(
isGroupByType
))
changeSortByTitle
(
getString
(
R
.
string
.
msg_sort_by_name
))
}
else
{
viewModel
.
setQuery
(
Query
.
ByActivity
(
isGroupByType
))
changeSortByTitle
(
getString
(
R
.
string
.
msg_sort_by_activity
))
}
}
private
fun
changeSortByTitle
(
text
:
String
)
{
text_sort_by
.
text
=
getString
(
R
.
string
.
msg_sort_by
,
text
.
toLowerCase
())
}
private
fun
queryChatRoomsByName
(
name
:
String
?):
Boolean
{
private
fun
queryChatRoomsByName
(
name
:
String
?):
Boolean
{
if
(
name
.
isNullOrEmpty
())
{
if
(
name
.
isNullOrEmpty
())
{
updateSort
()
updateSort
()
}
else
{
}
else
{
viewModel
.
setQuery
(
Query
.
Search
(
name
!!
))
viewModel
.
setQuery
(
Query
.
Search
(
name
))
}
}
return
true
return
true
}
}
...
...
app/src/main/java/chat/rocket/android/chatrooms/ui/SortByBottomSheetFragment.kt
0 → 100644
View file @
a99b2e79
package
chat.rocket.android.chatrooms.ui
import
DrawableHelper
import
android.os.Bundle
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.widget.TextView
import
androidx.annotation.DrawableRes
import
chat.rocket.android.R
import
com.google.android.material.bottomsheet.BottomSheetDialogFragment
import
kotlinx.android.synthetic.main.bottom_sheet_fragment_sort_by.*
internal
const
val
TAG
=
"SortByBottomSheetFragment"
class
SortByBottomSheetFragment
:
BottomSheetDialogFragment
()
{
private
var
isSortByName
=
false
private
var
isUnreadOnTop
=
false
private
var
isGroupByType
=
false
private
var
isGroupByFavorites
=
false
private
val
chatRoomFragment
by
lazy
{
activity
?.
supportFragmentManager
?.
findFragmentByTag
(
TAG_CHAT_ROOMS_FRAGMENT
)
as
ChatRoomsFragment
}
private
val
filterDrawable
by
lazy
{
R
.
drawable
.
ic_filter_20dp
}
private
val
activityDrawable
by
lazy
{
R
.
drawable
.
ic_activity_20dp
}
private
val
unreadOnTopDrawable
by
lazy
{
R
.
drawable
.
ic_unread_20dp
}
private
val
groupByTypeDrawable
by
lazy
{
R
.
drawable
.
ic_group_by_type_20dp
}
private
val
groupByFavoritesDrawable
by
lazy
{
R
.
drawable
.
ic_favorites_20dp
}
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?
):
View
?
=
inflater
.
inflate
(
R
.
layout
.
bottom_sheet_fragment_sort_by
,
container
,
false
)
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
setupListeners
()
}
private
fun
setupListeners
()
{
text_name
.
setOnClickListener
{
changeSortByTitle
(
getString
(
R
.
string
.
msg_sort_by_name
))
checkSelection
(
text_name
,
filterDrawable
)
uncheckSelection
(
text_activity
,
activityDrawable
)
isSortByName
=
true
sortChatRoomsList
()
}
text_activity
.
setOnClickListener
{
changeSortByTitle
(
getString
(
R
.
string
.
msg_sort_by_activity
))
checkSelection
(
text_activity
,
activityDrawable
)
uncheckSelection
(
text_name
,
filterDrawable
)
isSortByName
=
false
sortChatRoomsList
()
}
text_unread_on_top
.
setOnClickListener
{
isUnreadOnTop
=
if
(
isUnreadOnTop
)
{
uncheckSelection
(
text_unread_on_top
,
unreadOnTopDrawable
)
false
}
else
{
checkSelection
(
text_unread_on_top
,
unreadOnTopDrawable
)
true
}
sortChatRoomsList
()
}
text_group_by_type
.
setOnClickListener
{
isGroupByType
=
if
(
isGroupByType
)
{
uncheckSelection
(
text_group_by_type
,
groupByTypeDrawable
)
false
}
else
{
checkSelection
(
text_group_by_type
,
groupByTypeDrawable
)
true
}
sortChatRoomsList
()
}
text_group_by_favorites
.
setOnClickListener
{
isGroupByFavorites
=
if
(
isGroupByFavorites
)
{
uncheckSelection
(
text_group_by_favorites
,
groupByFavoritesDrawable
)
false
}
else
{
checkSelection
(
text_group_by_favorites
,
groupByFavoritesDrawable
)
true
}
sortChatRoomsList
()
}
}
private
fun
changeSortByTitle
(
text
:
String
)
{
text_sort_by
.
text
=
getString
(
R
.
string
.
msg_sort_by
,
text
.
toLowerCase
())
}
private
fun
checkSelection
(
textView
:
TextView
,
@DrawableRes
leftDrawable
:
Int
)
{
context
?.
let
{
DrawableHelper
.
compoundLeftAndRightDrawable
(
textView
,
DrawableHelper
.
getDrawableFromId
(
leftDrawable
,
it
),
DrawableHelper
.
getDrawableFromId
(
R
.
drawable
.
ic_check
,
it
)
)
}
}
private
fun
uncheckSelection
(
textView
:
TextView
,
@DrawableRes
leftDrawable
:
Int
)
{
context
?.
let
{
DrawableHelper
.
compoundLeftDrawable
(
textView
,
DrawableHelper
.
getDrawableFromId
(
leftDrawable
,
it
)
)
}
}
private
fun
sortChatRoomsList
()
{
chatRoomFragment
.
sortChatRoomsList
(
isSortByName
,
isUnreadOnTop
,
isGroupByType
,
isGroupByFavorites
)
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/createchannel/ui/CreateChannelFragment.kt
View file @
a99b2e79
...
@@ -167,13 +167,16 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback
...
@@ -167,13 +167,16 @@ class CreateChannelFragment : Fragment(), CreateChannelView, ActionMode.Callback
override
fun
prepareToShowChatList
()
{
override
fun
prepareToShowChatList
()
{
with
(
activity
as
MainActivity
)
{
with
(
activity
as
MainActivity
)
{
setCheckedNavDrawerItem
(
R
.
id
.
menu_action_chats
)
openDrawer
()
// setCheckedNavDrawerItem(R.id.menu_action_chats)
getDrawerLayout
().
postDelayed
(
1000
)
{
// openDrawer()
closeDrawer
()
// getDrawerLayout().postDelayed(1000) {
createChannelPresenter
.
toChatList
()
// closeDrawer()
}
// createChannelPresenter.toChatList()
// }
}
}
}
}
override
fun
showChannelCreatedSuccessfullyMessage
()
{
override
fun
showChannelCreatedSuccessfullyMessage
()
{
...
...
app/src/main/java/chat/rocket/android/main/presentation/MainPresenter.kt
View file @
a99b2e79
package
chat.rocket.android.main.presentation
package
chat.rocket.android.main.presentation
import
android.content.Context
import
chat.rocket.android.core.lifecycle.CancelStrategy
import
chat.rocket.android.core.lifecycle.CancelStrategy
import
chat.rocket.android.db.DatabaseManagerFactory
import
chat.rocket.android.db.DatabaseManagerFactory
import
chat.rocket.android.emoji.Emoji
import
chat.rocket.android.emoji.EmojiRepository
import
chat.rocket.android.emoji.Fitzpatrick
import
chat.rocket.android.emoji.internal.EmojiCategory
import
chat.rocket.android.infrastructure.LocalRepository
import
chat.rocket.android.infrastructure.LocalRepository
import
chat.rocket.android.main.uimodel.NavHeaderUiModel
import
chat.rocket.android.main.uimodel.NavHeaderUiModelMapper
import
chat.rocket.android.push.GroupedPush
import
chat.rocket.android.push.GroupedPush
import
chat.rocket.android.server.domain.GetAccountsInteractor
import
chat.rocket.android.server.domain.GetAccountsInteractor
import
chat.rocket.android.server.domain.GetCurrentServerInteractor
import
chat.rocket.android.server.domain.GetCurrentServerInteractor
import
chat.rocket.android.server.domain.GetSettingsInteractor
import
chat.rocket.android.server.domain.PublicSettings
import
chat.rocket.android.server.domain.RefreshSettingsInteractor
import
chat.rocket.android.server.domain.RefreshPermissionsInteractor
import
chat.rocket.android.server.domain.RefreshPermissionsInteractor
import
chat.rocket.android.server.domain.RefreshSettingsInteractor
import
chat.rocket.android.server.domain.RemoveAccountInteractor
import
chat.rocket.android.server.domain.RemoveAccountInteractor
import
chat.rocket.android.server.domain.SaveAccountInteractor
import
chat.rocket.android.server.domain.TokenRepository
import
chat.rocket.android.server.domain.TokenRepository
import
chat.rocket.android.server.domain.favicon
import
chat.rocket.android.server.domain.model.Account
import
chat.rocket.android.server.infraestructure.ConnectionManagerFactory
import
chat.rocket.android.server.infraestructure.ConnectionManagerFactory
import
chat.rocket.android.server.infraestructure.RocketChatClientFactory
import
chat.rocket.android.server.infraestructure.RocketChatClientFactory
import
chat.rocket.android.server.presentation.CheckServerPresenter
import
chat.rocket.android.server.presentation.CheckServerPresenter
import
chat.rocket.android.util.extension.launchUI
import
chat.rocket.android.util.extension.launchUI
import
chat.rocket.android.util.extensions.adminPanelUrl
import
chat.rocket.android.util.extensions.serverLogoUrl
import
chat.rocket.android.util.retryIO
import
chat.rocket.common.RocketChatAuthException
import
chat.rocket.common.RocketChatAuthException
import
chat.rocket.common.RocketChatException
import
chat.rocket.common.model.UserStatus
import
chat.rocket.common.util.ifNull
import
chat.rocket.common.util.ifNull
import
chat.rocket.core.RocketChatClient
import
chat.rocket.core.internal.rest.getCustomEmojis
import
chat.rocket.core.internal.rest.me
import
chat.rocket.core.model.Myself
import
kotlinx.coroutines.channels.Channel
import
timber.log.Timber
import
timber.log.Timber
import
javax.inject.Inject
import
javax.inject.Inject
class
MainPresenter
@Inject
constructor
(
class
MainPresenter
@Inject
constructor
(
private
val
view
:
MainView
,
private
val
mainView
:
MainView
,
private
val
strategy
:
CancelStrategy
,
private
val
cancelStrategy
:
CancelStrategy
,
private
val
navigator
:
MainNavigator
,
private
val
mainNavigator
:
MainNavigator
,
private
val
tokenRepository
:
TokenRepository
,
val
getCurrentServerInteractor
:
GetCurrentServerInteractor
,
private
val
groupedPush
:
GroupedPush
,
private
val
getAccountsInteractor
:
GetAccountsInteractor
,
rocketChatClientFactory
:
RocketChatClientFactory
,
localRepository
:
LocalRepository
,
removeAccountInteractor
:
RemoveAccountInteractor
,
tokenRepository
:
TokenRepository
,
private
val
connectionManagerFactory
:
ConnectionManagerFactory
,
databaseManagerFactory
:
DatabaseManagerFactory
,
private
val
refreshSettingsInteractor
:
RefreshSettingsInteractor
,
private
val
refreshSettingsInteractor
:
RefreshSettingsInteractor
,
private
val
refreshPermissionsInteractor
:
RefreshPermissionsInteractor
,
private
val
refreshPermissionsInteractor
:
RefreshPermissionsInteractor
/*
private val navHeaderMapper: NavHeaderUiModelMapper,
private val navHeaderMapper: NavHeaderUiModelMapper,
private val saveAccountInteractor: SaveAccountInteractor,
private val saveAccountInteractor: SaveAccountInteractor,
private val getAccountsInteractor: GetAccountsInteractor,
private val getAccountsInteractor: GetAccountsInteractor,
private val groupedPush: GroupedPush,
private val groupedPush: GroupedPush,
serverInteractor: GetCurrentServerInteractor,
serverInteractor: GetCurrentServerInteractor,
localRepository
:
LocalRepository
,
removeAccountInteractor
:
RemoveAccountInteractor
,
factory
:
RocketChatClientFactory
,
dbManagerFactory
:
DatabaseManagerFactory
,
getSettingsInteractor: GetSettingsInteractor,
getSettingsInteractor: GetSettingsInteractor,
managerFactory
:
ConnectionManagerFactory
*/
)
:
CheckServerPresenter
(
)
:
CheckServerPresenter
(
strategy
=
s
trategy
,
strategy
=
cancelS
trategy
,
factory
=
f
actory
,
factory
=
rocketChatClientF
actory
,
serverInteractor
=
s
erverInteractor
,
serverInteractor
=
getCurrentS
erverInteractor
,
localRepository
=
localRepository
,
localRepository
=
localRepository
,
removeAccountInteractor
=
removeAccountInteractor
,
removeAccountInteractor
=
removeAccountInteractor
,
tokenRepository
=
tokenRepository
,
tokenRepository
=
tokenRepository
,
managerFactory
=
m
anagerFactory
,
managerFactory
=
connectionM
anagerFactory
,
dbManagerFactory
=
d
b
ManagerFactory
,
dbManagerFactory
=
d
atabase
ManagerFactory
,
tokenView
=
v
iew
,
tokenView
=
mainV
iew
,
navigator
=
n
avigator
navigator
=
mainN
avigator
)
{
)
{
private
val
currentServer
=
serverInteractor
.
get
()
!!
private
val
manager
=
managerFactory
.
create
(
currentServer
)
private
val
client
:
RocketChatClient
=
factory
.
create
(
currentServer
)
private
var
settings
:
PublicSettings
=
getSettingsInteractor
.
get
(
serverInteractor
.
get
()
!!
)
private
val
userDataChannel
=
Channel
<
Myself
>()
fun
toChatList
(
chatRoomId
:
String
?
=
null
)
=
navigator
.
toChatList
(
chatRoomId
)
fun
toUserProfile
()
=
navigator
.
toUserProfile
()
fun
clearNotificationsForChatRoom
(
chatRoomId
:
String
?)
{
if
(
chatRoomId
==
null
)
return
fun
toSettings
()
=
navigator
.
toSettings
()
fun
toAdminPanel
()
=
tokenRepository
.
get
(
currentServer
)
?.
let
{
getCurrentServerInteractor
.
get
()
?.
let
{
currentServer
->
navigator
.
toAdminPanel
(
currentServer
.
adminPanelUrl
(),
it
.
authToken
)
groupedPush
.
hostToPushMessageList
[
currentServer
].
let
{
list
->
list
?.
removeAll
{
it
.
info
.
roomId
==
chatRoomId
}
}
}
}
}
fun
toCreateChannel
()
=
navigator
.
toCreateChannel
()
fun
connect
()
{
getCurrentServerInteractor
.
get
()
?.
let
{
currentServer
->
refreshSettingsInteractor
.
refreshAsync
(
currentServer
)
refreshPermissionsInteractor
.
refreshAsync
(
currentServer
)
connectionManagerFactory
.
create
(
currentServer
).
connect
()
}
}
fun
loadServerAccounts
()
{
fun
getCurrentServerName
()
{
launchUI
(
strategy
)
{
getCurrentServerInteractor
.
get
()
?.
let
{
currentServer
->
try
{
mainView
.
setupToolbar
(
currentServer
)
view
.
setupServerAccountList
(
getAccountsInteractor
.
get
())
}
catch
(
ex
:
Exception
)
{
when
(
ex
)
{
is
RocketChatAuthException
->
logout
()
else
->
{
Timber
.
d
(
ex
,
"Error loading serve accounts"
)
ex
.
message
?.
let
{
view
.
showMessage
(
it
)
}.
ifNull
{
view
.
showGenericErrorMessage
()
}
}
}
}
}
}
}
}
fun
loadCurrentInfo
()
{
fun
getAllServers
()
{
setupConnectionInfo
(
currentServer
)
launchUI
(
cancelStrategy
)
{
checkServerInfo
(
currentServer
)
launchUI
(
strategy
)
{
try
{
try
{
val
me
=
retryIO
(
"me"
)
{
client
.
me
()
}
mainView
.
setupServerListView
(
getAccountsInteractor
.
get
())
val
model
=
navHeaderMapper
.
mapToUiModel
(
me
)
}
catch
(
exception
:
Exception
)
{
saveAccount
(
model
)
Timber
.
e
(
exception
,
"Error while getting all servers"
)
view
.
setupUserAccountInfo
(
model
)
when
(
exception
)
{
}
catch
(
ex
:
Exception
)
{
when
(
ex
)
{
is
RocketChatAuthException
->
logout
()
is
RocketChatAuthException
->
logout
()
else
->
{
else
->
{
Timber
.
d
(
ex
,
"Error loading my information for navheader"
)
exception
.
message
?.
let
{
ex
.
message
?.
let
{
mainView
.
showMessage
(
it
)
view
.
showMessage
(
it
)
}.
ifNull
{
}.
ifNull
{
v
iew
.
showGenericErrorMessage
()
mainV
iew
.
showGenericErrorMessage
()
}
}
}
}
}
}
}
}
subscribeMyselfUpdates
()
}
}
}
}
/**
fun
showChatList
(
chatRoomId
:
String
?
=
null
)
=
mainNavigator
.
toChatList
(
chatRoomId
)
* Load all emojis for the current server. Simple emojis are always the same for every server,
* but custom emojis vary according to the its url.
*/
fun
loadEmojis
()
{
launchUI
(
strategy
)
{
EmojiRepository
.
setCurrentServerUrl
(
currentServer
)
val
customEmojiList
=
mutableListOf
<
Emoji
>()
try
{
for
(
customEmoji
in
retryIO
(
"getCustomEmojis()"
)
{
client
.
getCustomEmojis
()
})
{
customEmojiList
.
add
(
Emoji
(
shortname
=
":${customEmoji.name}:"
,
category
=
EmojiCategory
.
CUSTOM
.
name
,
url
=
"$currentServer/emoji-custom/${customEmoji.name}.${customEmoji.extension}"
,
count
=
0
,
fitzpatrick
=
Fitzpatrick
.
Default
.
type
,
keywords
=
customEmoji
.
aliases
,
shortnameAlternates
=
customEmoji
.
aliases
,
siblings
=
mutableListOf
(),
unicode
=
""
,
isDefault
=
true
))
}
EmojiRepository
.
load
(
view
as
Context
,
customEmojis
=
customEmojiList
)
fun
showSettings
()
=
mainNavigator
.
toSettings
()
}
catch
(
ex
:
RocketChatException
)
{
Timber
.
e
(
ex
)
EmojiRepository
.
load
(
view
as
Context
)
}
}
}
fun
logout
()
{
fun
logout
()
{
setupConnectionInfo
(
currentServer
)
getCurrentServerInteractor
.
get
()
?.
let
{
currentServer
->
super
.
logout
(
userDataChannel
)
setupConnectionInfo
(
currentServer
)
}
fun
connect
()
{
refreshSettingsInteractor
.
refreshAsync
(
currentServer
)
refreshPermissionsInteractor
.
refreshAsync
(
currentServer
)
manager
.
connect
()
}
fun
disconnect
()
{
setupConnectionInfo
(
currentServer
)
super
.
disconnect
(
userDataChannel
)
}
fun
changeServer
(
serverUrl
:
String
)
{
if
(
currentServer
!=
serverUrl
)
{
navigator
.
switchOrAddNewServer
(
serverUrl
)
}
else
{
view
.
closeServerSelection
()
}
}
fun
addNewServer
()
{
navigator
.
toServerScreen
()
}
fun
changeDefaultStatus
(
userStatus
:
UserStatus
)
{
launchUI
(
strategy
)
{
try
{
manager
.
setDefaultStatus
(
userStatus
)
view
.
showUserStatus
(
userStatus
)
}
catch
(
ex
:
RocketChatException
)
{
ex
.
message
?.
let
{
view
.
showMessage
(
it
)
}.
ifNull
{
view
.
showGenericErrorMessage
()
}
}
}
}
private
fun
saveAccount
(
uiModel
:
NavHeaderUiModel
)
{
val
icon
=
settings
.
favicon
()
?.
let
{
currentServer
.
serverLogoUrl
(
it
)
}
val
account
=
Account
(
currentServer
,
icon
,
uiModel
.
serverLogo
,
uiModel
.
userDisplayName
!!
,
uiModel
.
userAvatar
)
saveAccountInteractor
.
save
(
account
)
}
private
suspend
fun
subscribeMyselfUpdates
()
{
manager
.
addUserDataChannel
(
userDataChannel
)
for
(
myself
in
userDataChannel
)
{
updateMyself
(
myself
)
}
}
private
fun
updateMyself
(
myself
:
Myself
)
=
view
.
setupUserAccountInfo
(
navHeaderMapper
.
mapToUiModel
(
myself
))
fun
clearNotificationsForChatroom
(
chatRoomId
:
String
?)
{
if
(
chatRoomId
==
null
)
return
groupedPush
.
hostToPushMessageList
[
currentServer
]
?.
let
{
list
->
list
.
removeAll
{
it
.
info
.
roomId
==
chatRoomId
}
}
}
}
}
}
}
app/src/main/java/chat/rocket/android/main/presentation/MainView.kt
View file @
a99b2e79
package
chat.rocket.android.main.presentation
package
chat.rocket.android.main.presentation
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.uimodel.NavHeaderUiModel
import
chat.rocket.android.server.domain.model.Account
import
chat.rocket.android.server.domain.model.Account
import
chat.rocket.android.server.presentation.TokenView
import
chat.rocket.android.server.presentation.TokenView
import
chat.rocket.common.model.UserStatus
interface
MainView
:
MessageView
,
VersionCheckView
,
Token
View
{
interface
MainView
:
TokenView
,
Message
View
{
/**
/**
* S
hows the current user status
.
* S
etups the toolbar with the current logged in server name
.
*
*
* @
see [UserStatus]
* @
param serverName The current logged in server name to show on Toolbar.
*/
*/
fun
s
howUserStatus
(
userStatus
:
UserStatus
)
fun
s
etupToolbar
(
serverName
:
String
)
/**
/**
* Setups the
user account info (displayed in the nav. header)
* Setups the
server list view with all server list.
*
*
* @param
uiModel The [NavHeaderUiModel]
.
* @param
serverList The server list to show on server list
.
*/
*/
fun
setupUserAccountInfo
(
uiModel
:
NavHeaderUiModel
)
fun
setupServerListView
(
serverList
:
List
<
Account
>)
/**
* Setups the server account list.
*
* @param serverAccountList The list of server accounts.
*/
fun
setupServerAccountList
(
serverAccountList
:
List
<
Account
>)
fun
closeServerSelection
()
fun
showProgress
()
fun
hideProgress
()
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/main/ui/MainActivity.kt
View file @
a99b2e79
package
chat.rocket.android.main.ui
package
chat.rocket.android.main.ui
import
DrawableHelper
import
android.app.Activity
import
android.app.Activity
import
android
x.appcompat.app.AlertDialog
import
android
.app.NotificationManager
import
android.
app.ProgressDialog
import
android.
content.Context
import
android.os.Bundle
import
android.os.Bundle
import
androidx.annotation.IdRes
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.view.GravityCompat
import
androidx.drawerlayout.widget.DrawerLayout
import
androidx.fragment.app.Fragment
import
androidx.fragment.app.Fragment
import
androidx.recyclerview.widget.LinearLayoutManager
import
chat.rocket.android.BuildConfig
import
chat.rocket.android.R
import
chat.rocket.android.R
import
chat.rocket.android.chatrooms.ui.ChatRoomsFragment
import
chat.rocket.android.main.adapter.AccountsAdapter
import
chat.rocket.android.main.adapter.Selector
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
import
chat.rocket.android.main.uimodel.NavHeaderUiModel
import
chat.rocket.android.push.refreshPushToken
import
chat.rocket.android.push.refreshPushToken
import
chat.rocket.android.server.domain.PermissionsInteractor
import
chat.rocket.android.server.domain.model.Account
import
chat.rocket.android.server.domain.model.Account
import
chat.rocket.android.server.ui.INTENT_CHAT_ROOM_ID
import
chat.rocket.android.server.ui.INTENT_CHAT_ROOM_ID
import
chat.rocket.android.util.extensions.fadeIn
import
chat.rocket.android.util.extensions.fadeOut
import
chat.rocket.android.util.extensions.rotateBy
import
chat.rocket.android.util.extensions.showToast
import
chat.rocket.android.util.extensions.showToast
import
chat.rocket.android.util.invalidateFirebaseToken
import
chat.rocket.android.util.invalidateFirebaseToken
import
chat.rocket.common.model.UserStatus
import
dagger.android.AndroidInjection
import
dagger.android.AndroidInjection
import
dagger.android.AndroidInjector
import
dagger.android.AndroidInjector
import
dagger.android.DispatchingAndroidInjector
import
dagger.android.DispatchingAndroidInjector
import
dagger.android.HasActivityInjector
import
dagger.android.HasActivityInjector
import
dagger.android.support.HasSupportFragmentInjector
import
dagger.android.support.HasSupportFragmentInjector
import
kotlinx.android.synthetic.main.activity_main.*
import
kotlinx.android.synthetic.main.app_bar_main.*
import
kotlinx.android.synthetic.main.app_bar.*
import
kotlinx.android.synthetic.main.nav_header.view.*
import
javax.inject.Inject
import
javax.inject.Inject
import
android.app.NotificationManager
import
android.content.Context
private
const
val
CURRENT_STATE
=
"current_state"
class
MainActivity
:
AppCompatActivity
(),
MainView
,
HasActivityInjector
,
class
MainActivity
:
AppCompatActivity
(),
MainView
,
HasActivityInjector
,
HasSupportFragmentInjector
{
HasSupportFragmentInjector
{
@Inject
@Inject
lateinit
var
activityDispatchingAndroidInjector
:
DispatchingAndroidInjector
<
Activity
>
lateinit
var
activityDispatchingAndroidInjector
:
DispatchingAndroidInjector
<
Activity
>
@Inject
@Inject
lateinit
var
f
r
agmentDispatchingAndroidInjector
:
DispatchingAndroidInjector
<
Fragment
>
lateinit
var
fagmentDispatchingAndroidInjector
:
DispatchingAndroidInjector
<
Fragment
>
@Inject
@Inject
lateinit
var
presenter
:
MainPresenter
lateinit
var
presenter
:
MainPresenter
@Inject
lateinit
var
permissions
:
PermissionsInteractor
private
var
isFragmentAdded
:
Boolean
=
false
private
var
expanded
=
false
private
val
headerLayout
by
lazy
{
view_navigation
.
getHeaderView
(
0
)
}
private
var
chatRoomId
:
String
?
=
null
private
var
chatRoomId
:
String
?
=
null
private
var
progressDialog
:
ProgressDialog
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
AndroidInjection
.
inject
(
this
)
AndroidInjection
.
inject
(
this
)
...
@@ -67,158 +39,36 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector,
...
@@ -67,158 +39,36 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector,
refreshPushToken
()
refreshPushToken
()
chatRoomId
=
intent
.
getStringExtra
(
INTENT_CHAT_ROOM_ID
)
chatRoomId
=
intent
.
getStringExtra
(
INTENT_CHAT_ROOM_ID
)
presenter
.
clearNotificationsForChatroom
(
chatRoomId
)
presenter
.
connect
()
with
(
presenter
)
{
presenter
.
loadServerAccounts
()
clearNotificationsForChatRoom
(
chatRoomId
)
presenter
.
loadCurrentInfo
()
connect
()
presenter
.
loadEmojis
()
getCurrentServerName
()
setupToolbar
()
getAllServers
()
setupNavigationView
()
showChatList
(
chatRoomId
)
}
}
override
fun
onSaveInstanceState
(
outState
:
Bundle
?)
{
super
.
onSaveInstanceState
(
outState
)
outState
?.
putBoolean
(
CURRENT_STATE
,
isFragmentAdded
)
}
override
fun
onRestoreInstanceState
(
savedInstanceState
:
Bundle
?)
{
setupListeners
()
super
.
onRestoreInstanceState
(
savedInstanceState
)
isFragmentAdded
=
savedInstanceState
?.
getBoolean
(
CURRENT_STATE
)
?:
false
}
}
override
fun
onResume
()
{
override
fun
onResume
()
{
super
.
onResume
()
super
.
onResume
()
if
(!
isFragmentAdded
)
{
clearAppNotifications
()
presenter
.
toChatList
(
chatRoomId
)
isFragmentAdded
=
true
}
val
notificationManager
=
getSystemService
(
Context
.
NOTIFICATION_SERVICE
)
as
NotificationManager
notificationManager
.
cancelAll
()
}
}
override
fun
onDestroy
()
{
override
fun
activityInjector
():
AndroidInjector
<
Activity
>
=
super
.
onDestroy
()
activityDispatchingAndroidInjector
if
(
isFinishing
)
{
presenter
.
disconnect
()
}
}
override
fun
onBackPressed
()
{
if
(
drawer_layout
.
isDrawerOpen
(
GravityCompat
.
START
))
{
closeDrawer
()
}
else
{
supportFragmentManager
.
findFragmentById
(
R
.
id
.
fragment_container
)
?.
let
{
if
(
it
!
is
ChatRoomsFragment
&&
supportFragmentManager
.
backStackEntryCount
==
0
)
{
presenter
.
toChatList
(
chatRoomId
)
setCheckedNavDrawerItem
(
R
.
id
.
menu_action_chats
)
}
else
{
super
.
onBackPressed
()
}
}
}
}
override
fun
activityInjector
():
AndroidInjector
<
Activity
>
=
activityDispatchingAndroidInjector
override
fun
supportFragmentInjector
():
AndroidInjector
<
Fragment
>
=
override
fun
supportFragmentInjector
():
AndroidInjector
<
Fragment
>
=
fragmentDispatchingAndroidInjector
fagmentDispatchingAndroidInjector
override
fun
showUserStatus
(
userStatus
:
UserStatus
)
{
headerLayout
.
apply
{
image_user_status
.
setImageDrawable
(
DrawableHelper
.
getUserStatusDrawable
(
userStatus
,
this
.
context
)
)
}
}
override
fun
setupUserAccountInfo
(
uiModel
:
NavHeaderUiModel
)
{
with
(
headerLayout
)
{
with
(
uiModel
)
{
if
(
userStatus
!=
null
)
{
image_user_status
.
setImageDrawable
(
DrawableHelper
.
getUserStatusDrawable
(
userStatus
,
context
)
)
}
if
(
userDisplayName
!=
null
)
{
text_user_name
.
text
=
userDisplayName
}
if
(
userAvatar
!=
null
)
{
setAvatar
(
userAvatar
)
}
if
(
serverLogo
!=
null
)
{
server_logo
.
setImageURI
(
serverLogo
)
}
text_server_url
.
text
=
uiModel
.
serverUrl
}
}
}
override
fun
setupServerAccountList
(
serverAccountList
:
List
<
Account
>)
{
accounts_list
.
layoutManager
=
LinearLayoutManager
(
this
)
accounts_list
.
adapter
=
AccountsAdapter
(
serverAccountList
,
object
:
Selector
{
override
fun
onStatusSelected
(
userStatus
:
UserStatus
)
{
presenter
.
changeDefaultStatus
(
userStatus
)
}
override
fun
onAccountSelected
(
serverUrl
:
String
)
{
presenter
.
changeServer
(
serverUrl
)
}
override
fun
onAddedAccountSelected
()
{
override
fun
setupToolbar
(
serverName
:
String
)
{
presenter
.
addNewServer
()
setSupportActionBar
(
toolbar
)
}
text_server_name
.
text
=
serverName
})
headerLayout
.
account_container
.
setOnClickListener
{
it
.
image_account_expand
.
rotateBy
(
180f
)
if
(
expanded
)
{
accounts_list
.
fadeOut
()
}
else
{
accounts_list
.
fadeIn
()
}
expanded
=
!
expanded
}
headerLayout
.
image_avatar
.
setOnClickListener
{
view_navigation
.
menu
.
findItem
(
R
.
id
.
menu_action_profile
).
isChecked
=
true
presenter
.
toUserProfile
()
drawer_layout
.
closeDrawer
(
GravityCompat
.
START
)
}
}
override
fun
closeServerSelection
()
{
view_navigation
.
getHeaderView
(
0
).
account_container
.
performClick
()
}
override
fun
alertNotRecommendedVersion
()
{
AlertDialog
.
Builder
(
this
)
.
setMessage
(
getString
(
R
.
string
.
msg_ver_not_recommended
,
BuildConfig
.
RECOMMENDED_SERVER_VERSION
)
)
.
setPositiveButton
(
android
.
R
.
string
.
ok
,
null
)
.
create
()
.
show
()
}
}
override
fun
blockAndAlertNotRequiredVersion
()
{
override
fun
setupServerListView
(
serverList
:
List
<
Account
>)
{
AlertDialog
.
Builder
(
this
)
// TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
.
setMessage
(
getString
(
R
.
string
.
msg_ver_not_minimum
,
BuildConfig
.
REQUIRED_SERVER_VERSION
)
)
.
setOnDismissListener
{
presenter
.
logout
()
}
.
setPositiveButton
(
android
.
R
.
string
.
ok
,
null
)
.
create
()
.
show
()
}
}
override
fun
invalidateToken
(
token
:
String
)
=
invalidateFirebaseToken
(
token
)
override
fun
invalidateToken
(
token
:
String
)
=
invalidateFirebaseToken
(
token
)
...
@@ -229,54 +79,13 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector,
...
@@ -229,54 +79,13 @@ class MainActivity : AppCompatActivity(), MainView, HasActivityInjector,
override
fun
showGenericErrorMessage
()
=
showMessage
(
getString
(
R
.
string
.
msg_generic_error
))
override
fun
showGenericErrorMessage
()
=
showMessage
(
getString
(
R
.
string
.
msg_generic_error
))
private
fun
setupToolbar
()
{
private
fun
clearAppNotifications
()
=
setSupportActionBar
(
toolbar
)
(
getSystemService
(
Context
.
NOTIFICATION_SERVICE
)
as
NotificationManager
).
cancelAll
()
}
fun
setupNavigationView
()
{
with
(
view_navigation
.
menu
)
{
clear
()
setupMenu
(
this
)
}
view_navigation
.
setNavigationItemSelectedListener
{
private
fun
setupListeners
()
{
it
.
isChecked
=
true
text_server_name
.
setOnClickListener
{
closeDrawer
()
// SortByBottomSheetFragment().show(supportFragmentManager, TAG)
onNavDrawerItemSelected
(
it
)
true
}
}
toolbar
.
setNavigationIcon
(
R
.
drawable
.
ic_menu_white_24dp
)
toolbar
.
setNavigationOnClickListener
{
openDrawer
()
}
}
fun
showLogoutDialog
()
{
val
builder
=
AlertDialog
.
Builder
(
this
)
builder
.
setTitle
(
R
.
string
.
title_are_you_sure
)
.
setPositiveButton
(
R
.
string
.
action_logout
)
{
_
,
_
->
presenter
.
logout
()}
.
setNegativeButton
(
android
.
R
.
string
.
no
)
{
dialog
,
_
->
dialog
.
cancel
()
}
.
create
()
.
show
()
}
}
fun
setAvatar
(
avatarUrl
:
String
)
{
headerLayout
.
image_avatar
.
setImageURI
(
avatarUrl
)
}
fun
getDrawerLayout
():
DrawerLayout
=
drawer_layout
fun
openDrawer
()
=
drawer_layout
.
openDrawer
(
GravityCompat
.
START
)
fun
closeDrawer
()
=
drawer_layout
.
closeDrawer
(
GravityCompat
.
START
)
fun
setCheckedNavDrawerItem
(
@IdRes
item
:
Int
)
=
view_navigation
.
setCheckedItem
(
item
)
override
fun
showProgress
()
{
progressDialog
=
ProgressDialog
.
show
(
this
,
getString
(
R
.
string
.
app_name
),
getString
(
R
.
string
.
msg_log_out
),
true
,
false
)
}
override
fun
hideProgress
()
{
progressDialog
?.
dismiss
()
progressDialog
=
null
}
}
}
app/src/main/java/chat/rocket/android/main/ui/Menu.kt
deleted
100644 → 0
View file @
8d2bc2c5
package
chat.rocket.android.main.ui
import
android.view.Menu
import
android.view.MenuItem
import
chat.rocket.android.R
internal
fun
MainActivity
.
setupMenu
(
menu
:
Menu
)
{
with
(
menu
)
{
add
(
R
.
id
.
menu_section_one
,
R
.
id
.
menu_action_chats
,
Menu
.
NONE
,
R
.
string
.
title_chats
).
setIcon
(
R
.
drawable
.
ic_chat_bubble_black_24dp
)
.
isChecked
=
true
add
(
R
.
id
.
menu_section_one
,
R
.
id
.
menu_action_create_channel
,
Menu
.
NONE
,
R
.
string
.
action_create_channel
).
setIcon
(
R
.
drawable
.
ic_create_black_24dp
)
add
(
R
.
id
.
menu_section_two
,
R
.
id
.
menu_action_profile
,
Menu
.
NONE
,
R
.
string
.
title_profile
).
setIcon
(
R
.
drawable
.
ic_person_black_20dp
)
add
(
R
.
id
.
menu_section_two
,
R
.
id
.
menu_action_settings
,
Menu
.
NONE
,
R
.
string
.
title_settings
).
setIcon
(
R
.
drawable
.
ic_settings_black_24dp
)
if
(
permissions
.
canSeeTheAdminPanel
())
{
add
(
R
.
id
.
menu_section_two
,
R
.
id
.
menu_action_admin_panel
,
Menu
.
NONE
,
R
.
string
.
title_admin_panel
).
setIcon
(
R
.
drawable
.
ic_settings_black_24dp
)
}
add
(
R
.
id
.
menu_section_three
,
R
.
id
.
menu_action_logout
,
Menu
.
NONE
,
R
.
string
.
action_logout
).
setIcon
(
R
.
drawable
.
ic_logout_black_24dp
)
setGroupCheckable
(
R
.
id
.
menu_section_one
,
true
,
true
)
setGroupCheckable
(
R
.
id
.
menu_section_two
,
true
,
true
)
setGroupCheckable
(
R
.
id
.
menu_section_three
,
true
,
true
)
}
}
internal
fun
MainActivity
.
onNavDrawerItemSelected
(
menuItem
:
MenuItem
)
{
when
(
menuItem
.
itemId
)
{
R
.
id
.
menu_action_chats
->
presenter
.
toChatList
()
R
.
id
.
menu_action_create_channel
->
presenter
.
toCreateChannel
()
R
.
id
.
menu_action_profile
->
presenter
.
toUserProfile
()
R
.
id
.
menu_action_settings
->
presenter
.
toSettings
()
R
.
id
.
menu_action_admin_panel
->
presenter
.
toAdminPanel
()
R
.
id
.
menu_action_logout
->
showLogoutDialog
()
}
}
app/src/main/java/chat/rocket/android/main/uimodel/NavHeaderUiModel.kt
deleted
100644 → 0
View file @
8d2bc2c5
package
chat.rocket.android.main.uimodel
import
chat.rocket.common.model.UserStatus
data class
NavHeaderUiModel
(
val
userDisplayName
:
String
?,
val
userStatus
:
UserStatus
?,
val
userAvatar
:
String
?,
val
serverUrl
:
String
,
val
serverLogo
:
String
?
)
\ No newline at end of file
app/src/main/java/chat/rocket/android/main/uimodel/NavHeaderUiModelMapper.kt
deleted
100644 → 0
View file @
8d2bc2c5
package
chat.rocket.android.main.uimodel
import
chat.rocket.android.server.domain.*
import
chat.rocket.android.util.extensions.avatarUrl
import
chat.rocket.android.util.extensions.serverLogoUrl
import
chat.rocket.core.model.Myself
import
javax.inject.Inject
class
NavHeaderUiModelMapper
@Inject
constructor
(
serverInteractor
:
GetCurrentServerInteractor
,
getSettingsInteractor
:
GetSettingsInteractor
)
{
private
val
currentServer
=
serverInteractor
.
get
()
!!
private
var
settings
:
PublicSettings
=
getSettingsInteractor
.
get
(
currentServer
)
fun
mapToUiModel
(
me
:
Myself
):
NavHeaderUiModel
{
val
displayName
=
mapDisplayName
(
me
)
val
status
=
me
.
status
val
avatar
=
me
.
username
?.
let
{
currentServer
.
avatarUrl
(
it
)
}
val
image
=
settings
.
wideTile
()
?:
settings
.
faviconLarge
()
val
logo
=
image
?.
let
{
currentServer
.
serverLogoUrl
(
it
)
}
return
NavHeaderUiModel
(
displayName
,
status
,
avatar
,
currentServer
,
logo
)
}
private
fun
mapDisplayName
(
me
:
Myself
):
String
?
{
val
username
=
me
.
username
val
realName
=
me
.
name
val
senderName
=
if
(
settings
.
useRealName
())
realName
else
username
return
senderName
?:
username
}
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/profile/ui/ProfileFragment.kt
View file @
a99b2e79
...
@@ -142,7 +142,7 @@ class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback {
...
@@ -142,7 +142,7 @@ class ProfileFragment : Fragment(), ProfileView, ActionMode.Callback {
override
fun
reloadUserAvatar
(
avatarUrl
:
String
)
{
override
fun
reloadUserAvatar
(
avatarUrl
:
String
)
{
Fresco
.
getImagePipeline
().
evictFromCache
(
avatarUrl
.
toUri
())
Fresco
.
getImagePipeline
().
evictFromCache
(
avatarUrl
.
toUri
())
image_avatar
.
setImageURI
(
avatarUrl
)
image_avatar
.
setImageURI
(
avatarUrl
)
(
activity
as
MainActivity
).
setAvatar
(
avatarUrl
)
//
(activity as MainActivity).setAvatar(avatarUrl)
}
}
override
fun
showProfileUpdateSuccessfullyMessage
()
{
override
fun
showProfileUpdateSuccessfullyMessage
()
{
...
...
app/src/main/java/chat/rocket/android/settings/ui/SettingsFragment.kt
View file @
a99b2e79
...
@@ -55,12 +55,6 @@ class SettingsFragment : Fragment(), SettingsView, AdapterView.OnItemClickListen
...
@@ -55,12 +55,6 @@ class SettingsFragment : Fragment(), SettingsView, AdapterView.OnItemClickListen
analyticsManager
.
logScreenView
(
ScreenViewEvent
.
Settings
)
analyticsManager
.
logScreenView
(
ScreenViewEvent
.
Settings
)
}
}
override
fun
onResume
()
{
// FIXME - gambiarra ahead. will fix when moving to new androidx Navigation
(
activity
as
?
MainActivity
)
?.
setupNavigationView
()
super
.
onResume
()
}
override
fun
onItemClick
(
parent
:
AdapterView
<
*
>?,
view
:
View
?,
position
:
Int
,
id
:
Long
)
{
override
fun
onItemClick
(
parent
:
AdapterView
<
*
>?,
view
:
View
?,
position
:
Int
,
id
:
Long
)
{
when
(
parent
?.
getItemAtPosition
(
position
).
toString
())
{
when
(
parent
?.
getItemAtPosition
(
position
).
toString
())
{
resources
.
getStringArray
(
R
.
array
.
settings_actions
)[
0
]
->
{
resources
.
getStringArray
(
R
.
array
.
settings_actions
)[
0
]
->
{
...
...
app/src/main/res/drawable/ic_activity_20dp.xml
0 → 100644
View file @
a99b2e79
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"20dp"
android:height=
"20dp"
android:viewportWidth=
"20"
android:viewportHeight=
"20"
>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M10,10m-9.25,0a9.25,9.25 0,1 1,18.5 0a9.25,9.25 0,1 1,-18.5 0"
android:strokeWidth=
"1.5"
android:strokeColor=
"#9EA2A8"
/>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M10,4.004V10l4,4"
android:strokeWidth=
"1.5"
android:strokeColor=
"#9EA2A8"
/>
</vector>
app/src/main/res/drawable/ic_arrow_expand_20dp.xml
0 → 100644
View file @
a99b2e79
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"8dp"
android:height=
"4dp"
android:viewportWidth=
"8"
android:viewportHeight=
"4"
>
<path
android:fillColor=
"#FFFFFF"
android:fillType=
"evenOdd"
android:pathData=
"M1.20711,0L6.79289,0C7.06904,0 7.29289,0.22386 7.29289,0.5C7.29289,0.63261 7.24021,0.75979 7.14645,0.85355L4.35355,3.64645C4.15829,3.84171 3.84171,3.84171 3.64645,3.64645L0.85355,0.85355C0.65829,0.65829 0.65829,0.34171 0.85355,0.14645C0.94732,0.05268 1.0745,0 1.20711,0Z"
android:strokeWidth=
"1"
android:strokeColor=
"#00000000"
/>
</vector>
app/src/main/res/drawable/ic_check.xml
0 → 100644
View file @
a99b2e79
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"17dp"
android:height=
"12dp"
android:viewportWidth=
"17"
android:viewportHeight=
"12"
>
<path
android:fillColor=
"#1D74F5"
android:fillType=
"nonZero"
android:pathData=
"M5.5875,9.7331L14.7078,0.6128C15.0463,0.2744 15.595,0.2744 15.9335,0.6128L15.9335,0.6128C16.2719,0.9513 16.2719,1.5 15.9335,1.8385L6.2225,11.5494C5.832,11.9399 5.1989,11.9399 4.8083,11.5494L0.6489,7.39C0.2905,7.0316 0.2905,6.4506 0.6489,6.0922L0.6489,6.0922C1.0072,5.7338 1.5883,5.7338 1.9466,6.0922L5.5875,9.7331Z"
android:strokeWidth=
"1"
android:strokeColor=
"#00000000"
/>
</vector>
app/src/main/res/drawable/ic_check_read_24dp.xml
View file @
a99b2e79
...
@@ -2,8 +2,9 @@
...
@@ -2,8 +2,9 @@
android:width=
"24dp"
android:width=
"24dp"
android:height=
"24dp"
android:height=
"24dp"
android:tint=
"#1D74F5"
android:tint=
"#1D74F5"
android:viewportHeight=
"24.0"
android:viewportWidth=
"24"
android:viewportWidth=
"24.0"
>
android:viewportHeight=
"24"
>
<path
<path
android:fillColor=
"#FF1D74F5"
android:fillColor=
"#FF1D74F5"
android:pathData=
"M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"
/>
android:pathData=
"M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"
/>
...
...
app/src/main/res/drawable/ic_favorites_20dp.xml
0 → 100644
View file @
a99b2e79
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"20dp"
android:height=
"20dp"
android:viewportWidth=
"20"
android:viewportHeight=
"19"
>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M14.882,16.72l-0.933,-5.437 3.95,-3.85 -5.458,-0.793L10,1.695 7.56,6.64 2.1,7.434l3.95,3.85 -0.933,5.435L10,14.153l4.882,2.566z"
android:strokeWidth=
"1.5"
android:strokeColor=
"#9EA2A8"
/>
</vector>
app/src/main/res/drawable/ic_filter_20dp.xml
0 → 100644
View file @
a99b2e79
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"20dp"
android:height=
"20dp"
android:viewportWidth=
"24"
android:viewportHeight=
"24"
>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M5,4L5,18"
android:strokeWidth=
"1.5"
android:strokeColor=
"#9EA2A8"
android:strokeLineCap=
"round"
/>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M2,16L5,19"
android:strokeWidth=
"1.5"
android:strokeColor=
"#9EA2A8"
android:strokeLineCap=
"round"
/>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M8,16L5,19"
android:strokeWidth=
"1.5"
android:strokeColor=
"#9EA2A8"
android:strokeLineCap=
"round"
/>
<path
android:fillColor=
"#9EA2A8"
android:fillType=
"evenOdd"
android:pathData=
"M17.4434,7.0605L16.3545,3.8916L15.1973,7.0605L17.4434,7.0605ZM15.8467,2.8271L16.9453,2.8271L19.5479,10L18.4834,10L17.7559,7.8516L14.9189,7.8516L14.1426,10L13.1465,10L15.8467,2.8271Z"
android:strokeWidth=
"1"
android:strokeColor=
"#00000000"
/>
<path
android:fillColor=
"#9EA2A8"
android:fillType=
"evenOdd"
android:pathData=
"M13.2295,19.1943l4.3994,-5.5127l-4.0771,0l0,-0.8545l5.3271,0l0,0.835l-4.4238,5.4834l4.4238,0l0,0.8545l-5.6494,0z"
android:strokeWidth=
"1"
android:strokeColor=
"#00000000"
/>
</vector>
app/src/main/res/drawable/ic_group_by_type_20dp.xml
0 → 100644
View file @
a99b2e79
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"20dp"
android:height=
"20dp"
android:viewportWidth=
"24"
android:viewportHeight=
"24"
>
<path
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:pathData=
"M5,4v14M12,5h10.88M12,10h8.88M12,15h5.88M2,16l3,3M8,16l-3,3"
android:strokeWidth=
"1.5"
android:strokeColor=
"#9EA2A8"
android:strokeLineCap=
"round"
/>
</vector>
app/src/main/res/drawable/ic_navigation_24dp.xml
0 → 100644
View file @
a99b2e79
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"24dp"
android:height=
"24dp"
android:viewportWidth=
"24"
android:viewportHeight=
"24"
>
<path
android:fillColor=
"#FFFFFF"
android:fillType=
"nonZero"
android:pathData=
"M12.0455,10.4052C12.5308,8.6894 14.1082,7.4323 15.9794,7.4323C17.8505,7.4323 19.428,8.6894 19.9132,10.4052L22.04,10.4052C22.5923,10.4052 23.04,10.8529 23.04,11.4052L23.04,11.6348C23.04,12.1871 22.5923,12.6348 22.04,12.6348L19.9132,12.6348C19.428,14.3506 17.8505,15.6077 15.9794,15.6077C14.1082,15.6077 12.5308,14.3506 12.0455,12.6348L1,12.6348C0.4477,12.6348 0,12.1871 0,11.6348L0,11.4052C0,10.8529 0.4477,10.4052 1,10.4052L12.0455,10.4052ZM15.9794,13.3781C17.0055,13.3781 17.8374,12.5462 17.8374,11.52C17.8374,10.4938 17.0055,9.6619 15.9794,9.6619C14.9532,9.6619 14.1213,10.4938 14.1213,11.52C14.1213,12.5462 14.9532,13.3781 15.9794,13.3781ZM8.5471,14.8645C10.4182,14.8645 11.9957,16.1217 12.481,17.8374L22.04,17.8374C22.5923,17.8374 23.04,18.2851 23.04,18.8374L23.04,19.0671C23.04,19.6194 22.5923,20.0671 22.04,20.0671L12.481,20.0671C11.9957,21.7828 10.4182,23.04 8.5471,23.04C6.676,23.04 5.0985,21.7828 4.6132,20.0671L1,20.0671C0.4477,20.0671 0,19.6194 0,19.0671L0,18.8374C-0,18.2851 0.4477,17.8374 1,17.8374L4.6132,17.8374C5.0985,16.1217 6.676,14.8645 8.5471,14.8645ZM8.5471,20.8103C9.5733,20.8103 10.4052,19.9784 10.4052,18.9523C10.4052,17.9261 9.5733,17.0942 8.5471,17.0942C7.5209,17.0942 6.689,17.9261 6.689,18.9523C6.689,19.9784 7.5209,20.8103 8.5471,20.8103ZM7.0606,0C8.9318,0 10.5092,1.2572 10.9945,2.9729L22.04,2.9729C22.5923,2.9729 23.04,3.4206 23.04,3.9729L23.04,4.2026C23.04,4.7549 22.5923,5.2026 22.04,5.2026L10.9945,5.2026C10.5092,6.9183 8.9318,8.1755 7.0606,8.1755C5.1895,8.1755 3.612,6.9183 3.1268,5.2026L1,5.2026C0.4477,5.2026 0,4.7549 0,4.2026L0,3.9729C-0,3.4206 0.4477,2.9729 1,2.9729L3.1268,2.9729C3.612,1.2572 5.1895,0 7.0606,0ZM7.0606,5.9458C8.0868,5.9458 8.9187,5.1139 8.9187,4.0877C8.9187,3.0616 8.0868,2.2297 7.0606,2.2297C6.0345,2.2297 5.2026,3.0616 5.2026,4.0877C5.2026,5.1139 6.0345,5.9458 7.0606,5.9458Z"
android:strokeWidth=
"1"
android:strokeColor=
"#00000000"
/>
</vector>
app/src/main/res/drawable/ic_new_channel_24dp.xml
0 → 100644
View file @
a99b2e79
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"24dp"
android:height=
"24dp"
android:viewportWidth=
"20"
android:viewportHeight=
"20"
>
<path
android:fillColor=
"#FFFFFF"
android:fillType=
"evenOdd"
android:pathData=
"M16.523,11.0833C16.907,11.0833 17.218,11.3942 17.218,11.7782L17.218,16.6582C17.218,17.9513 16.169,19.0002 14.876,19.0002L3.343,19.0002C2.049,19.0002 1,17.9513 1,16.6582L1,5.1263C1,3.8333 2.049,2.7843 3.343,2.7843L8.149,2.7843C8.533,2.7843 8.845,3.0953 8.845,3.4792C8.845,3.8623 8.533,4.1743 8.149,4.1743L3.343,4.1743C2.816,4.1743 2.39,4.6003 2.39,5.1263L2.39,16.6582C2.39,17.1842 2.816,17.6103 3.343,17.6103L14.876,17.6103C15.401,17.6103 15.828,17.1842 15.828,16.6582L15.828,11.7782C15.828,11.3942 16.139,11.0833 16.523,11.0833ZM18.256,2.1318C19.25,3.1248 19.247,4.7428 18.256,5.7337L9.501,14.4877L5.5647,15.6828C5.0363,15.8432 4.4778,15.5449 4.3173,15.0164C4.2598,14.8269 4.2598,14.6246 4.3174,14.4352L5.513,10.5007L14.268,1.7468C15.263,0.7518 16.876,0.7508 17.87,1.7458L18.256,2.1318ZM17.273,4.7508C17.722,4.3028 17.723,3.5638 17.273,3.1147L16.887,2.7288C16.436,2.2768 15.703,2.2768 15.251,2.7298L14.599,3.3808L16.656,5.3678L17.273,4.7508ZM8.764,13.2587L15.673,6.3507L13.616,4.3637L6.742,11.2367L5.86,14.1407L8.764,13.2587Z"
android:strokeWidth=
"0.1"
android:strokeColor=
"#FFFFFF"
/>
</vector>
app/src/main/res/drawable/ic_unread_20dp.xml
0 → 100644
View file @
a99b2e79
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"20dp"
android:height=
"20dp"
android:viewportWidth=
"20"
android:viewportHeight=
"20"
>
<path
android:pathData=
"M18.976,9.783C15.808,6.408 12.812,4.75 10,4.75c-2.812,0 -5.808,1.658 -8.976,5.033C4.28,13.166 7.278,14.829 10,14.829c2.722,0 5.72,-1.663 8.976,-5.046z"
android:strokeWidth=
"1.5"
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:strokeColor=
"#9EA2A8"
/>
<path
android:pathData=
"M7.965,11.783a2.75,2.75 0,0 0,3.915 -3.661l-3.915,3.66z"
android:strokeWidth=
"1.5"
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:strokeColor=
"#9EA2A8"
/>
<path
android:pathData=
"M3.025,15.047L16.105,3.14"
android:strokeWidth=
"1.5"
android:fillColor=
"#00000000"
android:fillType=
"evenOdd"
android:strokeColor=
"#9EA2A8"
android:strokeLineCap=
"round"
/>
</vector>
app/src/main/res/layout/activity_main.xml
View file @
a99b2e79
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<LinearLayout
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"
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/drawer_layout"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
android:theme=
"@style/AppTheme"
tools:context=
".main.ui.MainActivity"
>
tools:context=
".main.ui.MainActivity"
>
<LinearLayout
<include
android:layout_width=
"match_parent"
android:id=
"@+id/layout_app_bar_main"
android:layout_height=
"match_parent"
layout=
"@layout/app_bar_main"
/>
android:orientation=
"vertical"
>
<include
android:id=
"@+id/layout_app_bar"
layout=
"@layout/app_bar"
/>
<FrameLayout
android:id=
"@+id/fragment_container"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</LinearLayout>
<FrameLayout
<FrameLayout
android:id=
"@+id/navigation_container"
android:id=
"@+id/fragment_container"
android:layout_width=
"wrap_content"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_gravity=
"start"
>
</LinearLayout>
\ No newline at end of file
<com.google.android.material.navigation.NavigationView
android:id=
"@+id/view_navigation"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
app:headerLayout=
"@layout/nav_header"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/accounts_list"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_marginTop=
"@dimen/nav_header_height"
android:alpha=
"0"
android:background=
"@color/colorWhite"
android:elevation=
"20dp"
android:visibility=
"gone"
/>
</FrameLayout>
</androidx.drawerlayout.widget.DrawerLayout>
\ No newline at end of file
app/src/main/res/layout/app_bar_main.xml
0 → 100644
View file @
a99b2e79
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.appbar.AppBarLayout
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:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/colorPrimary"
android:theme=
"@style/Theme.AppCompat.Light.NoActionBar"
>
<androidx.appcompat.widget.Toolbar
android:id=
"@+id/toolbar"
android:layout_width=
"match_parent"
android:layout_height=
"?attr/actionBarSize"
app:navigationIcon=
"@drawable/ic_navigation_24dp"
app:popupTheme=
"@style/ThemeOverlay.AppCompat.Light"
app:theme=
"@style/ThemeOverlay.AppCompat.Dark.ActionBar"
>
<TextView
android:id=
"@+id/text_server_name"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:drawableEnd=
"@drawable/ic_arrow_expand_20dp"
android:drawablePadding=
"10dp"
android:fontFamily=
"sans-serif-medium"
android:textColor=
"#FFFFFF"
android:textSize=
"20sp"
android:textStyle=
"normal"
tools:text=
"Server Name"
/>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
\ No newline at end of file
app/src/main/res/layout/
layout_sorting
_by.xml
→
app/src/main/res/layout/
bottom_sheet_fragment_sort
_by.xml
View file @
a99b2e79
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"
match_par
ent"
android:layout_height=
"
wrap_cont
ent"
android:orientation=
"vertical"
android:orientation=
"vertical"
android:padding=
"@dimen/screen_edge_left_and_right_margins
"
>
tools:context=
".chatrooms.ui.SortByBottomSheetFragment
"
>
<TextView
<TextView
android:id=
"@+id/text_activity"
android:id=
"@+id/text_sort_by"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"16dp"
android:layout_marginEnd=
"16dp"
android:text=
"@string/msg_sort_by"
android:textColor=
"#9EA2A8"
android:textSize=
"17sp"
android:textStyle=
"normal"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
android:layout_marginTop=
"16dp"
android:background=
"#1F000000"
/>
<TextView
android:id=
"@+id/text_name"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:drawableStart=
"@drawable/ic_
action_message_star_24
dp"
android:drawableStart=
"@drawable/ic_
filter_20
dp"
android:drawablePadding=
"16dp"
android:drawablePadding=
"16dp"
android:text=
"@string/msg_sort_by_activity"
/>
android:paddingStart=
"16dp"
android:paddingTop=
"16dp"
android:paddingEnd=
"16dp"
android:paddingBottom=
"16dp"
android:text=
"@string/msg_sort_by_name"
android:textColor=
"#2F343D"
android:textSize=
"16sp"
android:textStyle=
"normal"
/>
<TextView
<TextView
android:id=
"@+id/text_
name
"
android:id=
"@+id/text_
activity
"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:drawableStart=
"@drawable/ic_activity_20dp"
android:drawableStart=
"@drawable/ic_action_message_star_24dp"
android:drawablePadding=
"16dp"
android:drawablePadding=
"16dp"
android:text=
"@string/msg_sort_by_name"
/>
android:paddingStart=
"16dp"
android:paddingTop=
"16dp"
android:paddingEnd=
"16dp"
android:paddingBottom=
"16dp"
android:text=
"@string/msg_sort_by_activity"
android:textColor=
"#2F343D"
android:textSize=
"16sp"
android:textStyle=
"normal"
/>
<View
<View
android:id=
"@+id/view_divider"
android:id=
"@+id/view_divider"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
android:layout_height=
"1dp"
android:layout_marginTop=
"16dp"
android:layout_marginStart=
"16dp"
android:background=
"@color/colorDividerMessageComposer"
/>
android:layout_marginEnd=
"16dp"
android:background=
"#1F000000"
/>
<TextView
<TextView
android:id=
"@+id/text_unread_on_top"
android:id=
"@+id/text_unread_on_top"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:drawableStart=
"@drawable/ic_unread_20dp"
android:drawableStart=
"@drawable/ic_action_message_star_24dp"
android:drawablePadding=
"16dp"
android:drawablePadding=
"16dp"
android:text=
"@string/msg_group_by_unread_on_top"
/>
android:paddingStart=
"16dp"
android:paddingTop=
"16dp"
android:paddingEnd=
"16dp"
android:paddingBottom=
"16dp"
android:text=
"@string/msg_group_by_unread_on_top"
android:textColor=
"#2F343D"
android:textSize=
"16sp"
android:textStyle=
"normal"
/>
<TextView
<TextView
android:id=
"@+id/text_group_by_type"
android:id=
"@+id/text_group_by_type"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:drawableStart=
"@drawable/ic_group_by_type_20dp"
android:drawableStart=
"@drawable/ic_action_message_star_24dp"
android:drawablePadding=
"16dp"
android:drawablePadding=
"16dp"
android:text=
"@string/msg_group_by_type"
/>
android:paddingStart=
"16dp"
android:paddingTop=
"16dp"
android:paddingEnd=
"16dp"
android:paddingBottom=
"16dp"
android:text=
"@string/msg_group_by_type"
android:textColor=
"#2F343D"
android:textSize=
"16sp"
android:textStyle=
"normal"
/>
<TextView
<TextView
android:id=
"@+id/text_group_by_favorites"
android:id=
"@+id/text_group_by_favorites"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:drawableStart=
"@drawable/ic_favorites_20dp"
android:drawableStart=
"@drawable/ic_action_message_star_24dp"
android:drawablePadding=
"16dp"
android:drawablePadding=
"16dp"
android:text=
"@string/msg_group_by_favorites"
/>
android:paddingStart=
"16dp"
android:paddingTop=
"16dp"
android:paddingEnd=
"16dp"
android:paddingBottom=
"16dp"
android:text=
"@string/msg_group_by_favorites"
android:textColor=
"#2F343D"
android:textSize=
"16sp"
android:textStyle=
"normal"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/chatroom_sort_dialog.xml
deleted
100644 → 0
View file @
8d2bc2c5
<?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=
"match_parent"
android:orientation=
"vertical"
android:padding=
"24dp"
>
<RadioGroup
android:id=
"@+id/radio_group_sort"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<RadioButton
android:id=
"@+id/radio_sort_alphabetical"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:padding=
"8dp"
android:text=
"@string/dialog_sort_by_alphabet"
android:textSize=
"18sp"
/>
<RadioButton
android:id=
"@+id/radio_sort_activity"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:padding=
"8dp"
android:text=
"@string/dialog_sort_by_activity"
android:textSize=
"18sp"
/>
</RadioGroup>
<CheckBox
android:id=
"@+id/checkbox_group_by_type"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"6dp"
android:padding=
"8dp"
android:text=
"@string/dialog_group_by_type"
android:textSize=
"18sp"
/>
<!--TODO Add checkbox for "Group favourites after sdk support"-->
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_chat_rooms.xml
View file @
a99b2e79
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<
Relative
Layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<
androidx.constraintlayout.widget.Constraint
Layout
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=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".chatrooms.ui.ChatRoomsFragment"
>
tools:context=
".chatrooms.ui.ChatRoomsFragment"
>
<TextView
android:id=
"@+id/text_sort_by"
android:layout_width=
"match_parent"
android:layout_height=
"42dp"
android:background=
"#54585E"
android:drawableEnd=
"@drawable/ic_group_by_type_20dp"
android:fontFamily=
"sans-serif-medium"
android:gravity=
"center_vertical"
android:paddingStart=
"@dimen/screen_edge_left_and_right_margins"
android:paddingEnd=
"@dimen/screen_edge_left_and_right_margins"
android:text=
"@string/msg_sort_by"
android:textColor=
"#CBCED1"
android:textSize=
"14sp"
android:textStyle=
"normal"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<androidx.recyclerview.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/recycler_view"
android:id=
"@+id/recycler_view"
android:layout_below=
"@+id/text_connection_status"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"0dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/text_sort_by"
/>
<com.wang.avi.AVLoadingIndicatorView
<com.wang.avi.AVLoadingIndicatorView
android:id=
"@+id/view_loading"
android:id=
"@+id/view_loading"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerInParent=
"true"
android:visibility=
"gone"
android:visibility=
"gone"
app:indicatorColor=
"@color/colorBlack"
app:indicatorColor=
"@color/colorBlack"
app:indicatorName=
"BallPulseIndicator"
/>
app:indicatorName=
"BallPulseIndicator"
app:layout_constraintBottom_toBottomOf=
"parent"
<TextView
app:layout_constraintEnd_toEndOf=
"parent"
android:id=
"@+id/text_no_data_to_display"
app:layout_constraintStart_toStartOf=
"parent"
style=
"@style/TextAppearance.AppCompat.Subhead"
app:layout_constraintTop_toTopOf=
"parent"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerInParent=
"true"
android:text=
"@string/msg_no_data_to_display"
android:visibility=
"gone"
tools:visibility=
"visible"
/>
<TextView
android:id=
"@+id/text_connection_status"
android:layout_width=
"match_parent"
android:layout_height=
"32dp"
android:alpha=
"0"
android:background=
"@color/colorPrimary"
android:elevation=
"4dp"
android:gravity=
"center"
android:textAppearance=
"@style/TextAppearance.AppCompat.Body2"
android:textColor=
"@color/colorWhite"
android:visibility=
"gone"
tools:alpha=
"1"
tools:text=
"connected"
tools:visibility=
"visible"
/>
<TextView
android:id=
"@+id/text_no_result_found"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerHorizontal=
"true"
android:layout_marginTop=
"56dp"
android:text=
"@string/msg_no_search_found"
android:textSize=
"20sp"
android:visibility=
"gone"
tools:visibility=
"visible"
/>
tools:visibility=
"visible"
/>
</
Relative
Layout>
</
androidx.constraintlayout.widget.Constraint
Layout>
app/src/main/res/layout/item_account_delete.xml
View file @
a99b2e79
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout
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=
"match_parent"
android:layout_height=
"match_parent"
android:padding=
"@dimen/screen_edge_left_and_right_margins"
>
android:padding=
"@dimen/screen_edge_left_and_right_margins"
>
...
...
app/src/main/res/menu/chatrooms.xml
View file @
a99b2e79
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android=
"http://schemas.android.com/apk/res/android"
<menu
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"
tools:ignore=
"AppCompatResource"
>
<item
android:id=
"@+id/action_new_channel"
android:icon=
"@drawable/ic_new_channel_24dp"
android:title=
"@string/action_new_channel"
app:showAsAction=
"ifRoom"
/>
<item
<item
android:id=
"@+id/action_search"
android:id=
"@+id/action_search"
...
@@ -10,11 +14,4 @@
...
@@ -10,11 +14,4 @@
android:title=
"@string/action_search"
android:title=
"@string/action_search"
app:actionViewClass=
"androidx.appcompat.widget.SearchView"
app:actionViewClass=
"androidx.appcompat.widget.SearchView"
app:showAsAction=
"ifRoom|collapseActionView"
/>
app:showAsAction=
"ifRoom|collapseActionView"
/>
<item
android:id=
"@+id/action_sort"
android:icon=
"@drawable/ic_sort"
android:title=
"@string/msg_sort"
app:showAsAction=
"ifRoom"
/>
</menu>
</menu>
app/src/main/res/values-ar/strings.xml
View file @
a99b2e79
...
@@ -35,6 +35,7 @@
...
@@ -35,6 +35,7 @@
<string
name=
"action_use_this_username"
>
استخدم هذا الاسم
</string>
<string
name=
"action_use_this_username"
>
استخدم هذا الاسم
</string>
<string
name=
"action_terms_of_service"
>
شروط الخدمة
</string>
<string
name=
"action_terms_of_service"
>
شروط الخدمة
</string>
<string
name=
"action_privacy_policy"
>
شروط الخدمة
</string>
<string
name=
"action_privacy_policy"
>
شروط الخدمة
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
بحث
</string>
<string
name=
"action_search"
>
بحث
</string>
<string
name=
"action_update"
>
تحديث
</string>
<string
name=
"action_update"
>
تحديث
</string>
<string
name=
"action_settings"
>
الإعدادات
</string>
<string
name=
"action_settings"
>
الإعدادات
</string>
...
@@ -314,14 +315,13 @@
...
@@ -314,14 +315,13 @@
<string
name=
"msg_no_recent_emoji"
>
لا يوجد ايموجيز
</string>
<string
name=
"msg_no_recent_emoji"
>
لا يوجد ايموجيز
</string>
<string
name=
"alert_title_default_skin_tone"
>
نغمة الجلد الافتراضية
</string>
<string
name=
"alert_title_default_skin_tone"
>
نغمة الجلد الافتراضية
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
ترتيب
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
ترتيب حسب
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
أبجدي
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
النشاط
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
تجميع حسب النوع
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
تجميع المفصلات
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
العناوين
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO Translate -->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO Translate -->
...
...
app/src/main/res/values-de/strings.xml
View file @
a99b2e79
...
@@ -37,6 +37,7 @@
...
@@ -37,6 +37,7 @@
<string
name=
"action_use_this_username"
>
Benutze den Benutzernamen
</string>
<string
name=
"action_use_this_username"
>
Benutze den Benutzernamen
</string>
<string
name=
"action_terms_of_service"
>
Nutzungsbedingungen
</string>
<string
name=
"action_terms_of_service"
>
Nutzungsbedingungen
</string>
<string
name=
"action_privacy_policy"
>
Datenschutz
</string>
<string
name=
"action_privacy_policy"
>
Datenschutz
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
Suche
</string>
<string
name=
"action_search"
>
Suche
</string>
<string
name=
"action_update"
>
Updaten
</string>
<string
name=
"action_update"
>
Updaten
</string>
<string
name=
"action_settings"
>
Einstellungen
</string>
<string
name=
"action_settings"
>
Einstellungen
</string>
...
@@ -315,14 +316,13 @@
...
@@ -315,14 +316,13 @@
<string
name=
"msg_no_recent_emoji"
>
Keine letzten Emojis
</string>
<string
name=
"msg_no_recent_emoji"
>
Keine letzten Emojis
</string>
<string
name=
"alert_title_default_skin_tone"
>
Standard Hautton
</string>
<string
name=
"alert_title_default_skin_tone"
>
Standard Hautton
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
Sortiere
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
Sortieren nach
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
Alphabetisch
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
Aktivität
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
Räume nach Typ
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
Räume nach Favoriten
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
Kopf
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favoriten
</string>
<string
name=
"header_favorite"
>
Favoriten
</string>
...
...
app/src/main/res/values-es/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
Usa este nombre de usuario
</string>
<string
name=
"action_use_this_username"
>
Usa este nombre de usuario
</string>
<string
name=
"action_terms_of_service"
>
Términos de Servicio
</string>
<string
name=
"action_terms_of_service"
>
Términos de Servicio
</string>
<string
name=
"action_privacy_policy"
>
Política de Privacidad
</string>
<string
name=
"action_privacy_policy"
>
Política de Privacidad
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
Buscar
</string>
<string
name=
"action_search"
>
Buscar
</string>
<string
name=
"action_update"
>
Actualizar
</string>
<string
name=
"action_update"
>
Actualizar
</string>
<string
name=
"action_settings"
>
Configuraciones
</string>
<string
name=
"action_settings"
>
Configuraciones
</string>
...
@@ -306,14 +307,13 @@
...
@@ -306,14 +307,13 @@
<string
name=
"msg_no_recent_emoji"
>
Sin emojis recientes
</string>
<string
name=
"msg_no_recent_emoji"
>
Sin emojis recientes
</string>
<string
name=
"alert_title_default_skin_tone"
>
Tono de piel predeterminado
</string>
<string
name=
"alert_title_default_skin_tone"
>
Tono de piel predeterminado
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
Ordenar
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
Ordenar por
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
Alfabético
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
Actividad
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
Agrupar por tipo
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
Agrupar favoritos
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
Cabezazo
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
...
...
app/src/main/res/values-fa/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
از این شناسهی کاربری استفاده کنید
</string>
<string
name=
"action_use_this_username"
>
از این شناسهی کاربری استفاده کنید
</string>
<string
name=
"action_terms_of_service"
>
شرایط خدمات رسانی
</string>
<string
name=
"action_terms_of_service"
>
شرایط خدمات رسانی
</string>
<string
name=
"action_privacy_policy"
>
سیاست حفظ جریم خصوصی
</string>
<string
name=
"action_privacy_policy"
>
سیاست حفظ جریم خصوصی
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
جستوجو
</string>
<string
name=
"action_search"
>
جستوجو
</string>
<string
name=
"action_update"
>
به روزرسانی
</string>
<string
name=
"action_update"
>
به روزرسانی
</string>
<string
name=
"action_settings"
>
تنظیمات
</string>
<string
name=
"action_settings"
>
تنظیمات
</string>
...
@@ -309,14 +310,13 @@
...
@@ -309,14 +310,13 @@
<string
name=
"msg_no_recent_emoji"
>
هیچ ایموجی اخیری موجود نیست
</string>
<string
name=
"msg_no_recent_emoji"
>
هیچ ایموجی اخیری موجود نیست
</string>
<string
name=
"alert_title_default_skin_tone"
>
مدل پوستهی پیشفرض
</string>
<string
name=
"alert_title_default_skin_tone"
>
مدل پوستهی پیشفرض
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
دسته بندی
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
دسته بندی بر اساس
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
الفبا
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
فعالیت
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
گروه کردن بر اساس نوع
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
گروه کردن موردعلاقهها
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
سرپیام
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
...
...
app/src/main/res/values-fr/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
Utilisez ce nom d\'utilisateur
</string>
<string
name=
"action_use_this_username"
>
Utilisez ce nom d\'utilisateur
</string>
<string
name=
"action_terms_of_service"
>
Conditions d\'utilisation
</string>
<string
name=
"action_terms_of_service"
>
Conditions d\'utilisation
</string>
<string
name=
"action_privacy_policy"
>
Politique de confidentialité
</string>
<string
name=
"action_privacy_policy"
>
Politique de confidentialité
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
Chercher
</string>
<string
name=
"action_search"
>
Chercher
</string>
<string
name=
"action_update"
>
Mettre à jour
</string>
<string
name=
"action_update"
>
Mettre à jour
</string>
<string
name=
"action_settings"
>
Paramètres
</string>
<string
name=
"action_settings"
>
Paramètres
</string>
...
@@ -307,14 +308,13 @@
...
@@ -307,14 +308,13 @@
<string
name=
"msg_no_recent_emoji"
>
Aucun emoji récent
</string>
<string
name=
"msg_no_recent_emoji"
>
Aucun emoji récent
</string>
<string
name=
"alert_title_default_skin_tone"
>
Tonalité de peau par défaut
</string>
<string
name=
"alert_title_default_skin_tone"
>
Tonalité de peau par défaut
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
Trier
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
Trier par
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
Alphabétique
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
Activité
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
Grouper par type
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
Grouper favoris
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
Entête
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favoris
</string>
<string
name=
"header_favorite"
>
Favoris
</string>
...
...
app/src/main/res/values-hi-rIN/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
इस उपयोगकर्ता नाम का उपयोग करें
</string>
<string
name=
"action_use_this_username"
>
इस उपयोगकर्ता नाम का उपयोग करें
</string>
<string
name=
"action_terms_of_service"
>
सेवा की शर्तें
</string>
<string
name=
"action_terms_of_service"
>
सेवा की शर्तें
</string>
<string
name=
"action_privacy_policy"
>
गोपनीयता नीति
</string>
<string
name=
"action_privacy_policy"
>
गोपनीयता नीति
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
खोजें
</string>
<string
name=
"action_search"
>
खोजें
</string>
<string
name=
"action_update"
>
अद्यतन करें
</string>
<string
name=
"action_update"
>
अद्यतन करें
</string>
<string
name=
"action_settings"
>
सेटिंग्स
</string>
<string
name=
"action_settings"
>
सेटिंग्स
</string>
...
@@ -310,14 +311,13 @@
...
@@ -310,14 +311,13 @@
<string
name=
"msg_no_recent_emoji"
>
कोई नया इमोजी नहीं
</string>
<string
name=
"msg_no_recent_emoji"
>
कोई नया इमोजी नहीं
</string>
<string
name=
"alert_title_default_skin_tone"
>
डिफ़ॉल्ट त्वचा टोन
</string>
<string
name=
"alert_title_default_skin_tone"
>
डिफ़ॉल्ट त्वचा टोन
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
क्रम
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
द्वारा सॉर्ट करें
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
वर्णानुक्रम
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
गतिविधि
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
प्रकार के आधार पर समूह
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
पसंदीदा समूह
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
हैडर
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
पसंदीदा
</string>
<string
name=
"header_favorite"
>
पसंदीदा
</string>
...
...
app/src/main/res/values-it/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
Usa questo nome utente
</string>
<string
name=
"action_use_this_username"
>
Usa questo nome utente
</string>
<string
name=
"action_terms_of_service"
>
Termini di Servizio
</string>
<string
name=
"action_terms_of_service"
>
Termini di Servizio
</string>
<string
name=
"action_privacy_policy"
>
Politica sulla Riservatezza
</string>
<string
name=
"action_privacy_policy"
>
Politica sulla Riservatezza
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
Cerca
</string>
<string
name=
"action_search"
>
Cerca
</string>
<string
name=
"action_update"
>
Aggiorna
</string>
<string
name=
"action_update"
>
Aggiorna
</string>
<string
name=
"action_settings"
>
Parametri
</string>
<string
name=
"action_settings"
>
Parametri
</string>
...
@@ -306,14 +307,13 @@
...
@@ -306,14 +307,13 @@
<string
name=
"msg_no_recent_emoji"
>
No recent emojis
</string>
<string
name=
"msg_no_recent_emoji"
>
No recent emojis
</string>
<string
name=
"alert_title_default_skin_tone"
>
Default skin tone
</string>
<string
name=
"alert_title_default_skin_tone"
>
Default skin tone
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
Ordinare
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
Ordinare per
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
Alfabeto
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
Attività
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
Raggruppa per tipo
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
Raggruppa preferiti
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
Intestazione
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
...
...
app/src/main/res/values-ja/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
このユーザー名を使用する
</string>
<string
name=
"action_use_this_username"
>
このユーザー名を使用する
</string>
<string
name=
"action_terms_of_service"
>
サービス利用規約
</string>
<string
name=
"action_terms_of_service"
>
サービス利用規約
</string>
<string
name=
"action_privacy_policy"
>
プライバシーポリシー
</string>
<string
name=
"action_privacy_policy"
>
プライバシーポリシー
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
検索
</string>
<string
name=
"action_search"
>
検索
</string>
<string
name=
"action_update"
>
更新
</string>
<string
name=
"action_update"
>
更新
</string>
<string
name=
"action_settings"
>
設定
</string>
<string
name=
"action_settings"
>
設定
</string>
...
@@ -309,15 +310,13 @@
...
@@ -309,15 +310,13 @@
<string
name=
"msg_no_recent_emoji"
>
最近の絵文字はありません
</string>
<string
name=
"msg_no_recent_emoji"
>
最近の絵文字はありません
</string>
<string
name=
"alert_title_default_skin_tone"
>
デフォルトスキントークン
</string>
<string
name=
"alert_title_default_skin_tone"
>
デフォルトスキントークン
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
ソート
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
ソート
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
アルファベット順
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
アクティビティ順
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
グループ別
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
お気に入りのグループ
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
ヘッダ
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
...
...
app/src/main/res/values-pt-rBR/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
Usar este nome de usuário
</string>
<string
name=
"action_use_this_username"
>
Usar este nome de usuário
</string>
<string
name=
"action_terms_of_service"
>
Termos de Serviço
</string>
<string
name=
"action_terms_of_service"
>
Termos de Serviço
</string>
<string
name=
"action_privacy_policy"
>
Política de Privacidade
</string>
<string
name=
"action_privacy_policy"
>
Política de Privacidade
</string>
<string
name=
"action_new_channel"
>
Novo canal
</string>
<string
name=
"action_search"
>
Pesquisar
</string>
<string
name=
"action_search"
>
Pesquisar
</string>
<string
name=
"action_update"
>
Atualizar
</string>
<string
name=
"action_update"
>
Atualizar
</string>
<string
name=
"action_settings"
>
Configurações
</string>
<string
name=
"action_settings"
>
Configurações
</string>
...
@@ -309,13 +310,13 @@
...
@@ -309,13 +310,13 @@
<string
name=
"msg_no_recent_emoji"
>
Nenhum emoji recente
</string>
<string
name=
"msg_no_recent_emoji"
>
Nenhum emoji recente
</string>
<string
name=
"alert_title_default_skin_tone"
>
Tom de pele padrão
</string>
<string
name=
"alert_title_default_skin_tone"
>
Tom de pele padrão
</string>
<!-- Sort
ing and grouping
-->
<!-- Sort
and group
-->
<string
name=
"
dialog_sort_title"
>
Ordenar por
</string>
<string
name=
"
msg_sort_by"
>
Ordenar por %1$s
</string>
<string
name=
"
dialog_sort_by_alphabet"
>
Alfabeticament
e
</string>
<string
name=
"
msg_sort_by_activity"
>
Atividad
e
</string>
<string
name=
"
dialog_sort_by_activity"
>
Atividad
e
</string>
<string
name=
"
msg_sort_by_name"
>
Nom
e
</string>
<string
name=
"
dialog_group_by_type"
>
Agrupar por ti
po
</string>
<string
name=
"
msg_group_by_unread_on_top"
>
Não lidas no to
po
</string>
<string
name=
"
dialog_group_favourites"
>
Grupos favoritos
</string>
<string
name=
"
msg_group_by_type"
>
Agrupar por tipo
</string>
<string
name=
"
chatroom_header"
>
Cabeçalho
</string>
<string
name=
"
msg_group_by_favorites"
>
Agrupar por favoritos
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favoritos
</string>
<string
name=
"header_favorite"
>
Favoritos
</string>
...
...
app/src/main/res/values-pt-rPT/strings.xml
View file @
a99b2e79
...
@@ -35,6 +35,7 @@
...
@@ -35,6 +35,7 @@
<string
name=
"action_terms_of_service"
>
Termos do Serviço
</string>
<string
name=
"action_terms_of_service"
>
Termos do Serviço
</string>
<string
name=
"action_privacy_policy"
>
Política de Privacidade
</string>
<string
name=
"action_privacy_policy"
>
Política de Privacidade
</string>
<string
name=
"action_search"
>
Pesquisar
</string>
<string
name=
"action_search"
>
Pesquisar
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_update"
>
Actualizar
</string>
<string
name=
"action_update"
>
Actualizar
</string>
<string
name=
"action_settings"
>
Definições
</string>
<string
name=
"action_settings"
>
Definições
</string>
<string
name=
"action_create_channel"
>
Criar canal
</string>
<string
name=
"action_create_channel"
>
Criar canal
</string>
...
@@ -306,14 +307,13 @@
...
@@ -306,14 +307,13 @@
<string
name=
"msg_no_recent_emoji"
>
Nenhum emojis recente
</string>
<string
name=
"msg_no_recent_emoji"
>
Nenhum emojis recente
</string>
<string
name=
"alert_title_default_skin_tone"
>
Tom de pele padrão
</string>
<string
name=
"alert_title_default_skin_tone"
>
Tom de pele padrão
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
Ordenar
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
Ordenar por
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
Alfabeticamente
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
Actividade
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
Agrupar por tipo
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
Agrupar favoritos
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
Cabeçalho
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favoritos
</string>
<string
name=
"header_favorite"
>
Favoritos
</string>
...
...
app/src/main/res/values-ru-rRU/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
Использовать это имя
</string>
<string
name=
"action_use_this_username"
>
Использовать это имя
</string>
<string
name=
"action_terms_of_service"
>
Условия использования
</string>
<string
name=
"action_terms_of_service"
>
Условия использования
</string>
<string
name=
"action_privacy_policy"
>
Политика конфиденциальности
</string>
<string
name=
"action_privacy_policy"
>
Политика конфиденциальности
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
Поиск
</string>
<string
name=
"action_search"
>
Поиск
</string>
<string
name=
"action_update"
>
Обновить
</string>
<string
name=
"action_update"
>
Обновить
</string>
<string
name=
"action_settings"
>
Настройки
</string>
<string
name=
"action_settings"
>
Настройки
</string>
...
@@ -306,14 +307,13 @@
...
@@ -306,14 +307,13 @@
<string
name=
"msg_no_recent_emoji"
>
Пусто
</string>
<string
name=
"msg_no_recent_emoji"
>
Пусто
</string>
<string
name=
"alert_title_default_skin_tone"
>
Тон кожи по умолчанию
</string>
<string
name=
"alert_title_default_skin_tone"
>
Тон кожи по умолчанию
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
Сортировать
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
Сортировать по
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
По алфавиту
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
По активности
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
Группировать по типу
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
Группировать избранное
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
Заголовок
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Избранные
</string>
<string
name=
"header_favorite"
>
Избранные
</string>
...
...
app/src/main/res/values-tr/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
Bu kullanıcı adını kullan
</string>
<string
name=
"action_use_this_username"
>
Bu kullanıcı adını kullan
</string>
<string
name=
"action_terms_of_service"
>
Kullanım Şartları
</string>
<string
name=
"action_terms_of_service"
>
Kullanım Şartları
</string>
<string
name=
"action_privacy_policy"
>
Gizlilik Sözleşmesi
</string>
<string
name=
"action_privacy_policy"
>
Gizlilik Sözleşmesi
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
Ara
</string>
<string
name=
"action_search"
>
Ara
</string>
<string
name=
"action_update"
>
Güncelle
</string>
<string
name=
"action_update"
>
Güncelle
</string>
<string
name=
"action_settings"
>
Ayarlar
</string>
<string
name=
"action_settings"
>
Ayarlar
</string>
...
@@ -310,14 +311,13 @@
...
@@ -310,14 +311,13 @@
<string
name=
"msg_no_recent_emoji"
>
Son kullanılan emoji bulunmamaktadır
</string>
<string
name=
"msg_no_recent_emoji"
>
Son kullanılan emoji bulunmamaktadır
</string>
<string
name=
"alert_title_default_skin_tone"
>
Varsayılan tasarım tonu
</string>
<string
name=
"alert_title_default_skin_tone"
>
Varsayılan tasarım tonu
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
Sırala
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
Sırala
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
Alfabetik
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
Aktiviteye Göre
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
Türüne göre grupla
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
Favorileri grupla
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
Başlık
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
...
...
app/src/main/res/values-uk/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
Використати це ім\'я
</string>
<string
name=
"action_use_this_username"
>
Використати це ім\'я
</string>
<string
name=
"action_terms_of_service"
>
Умови використання
</string>
<string
name=
"action_terms_of_service"
>
Умови використання
</string>
<string
name=
"action_privacy_policy"
>
Політика конфіденційності
</string>
<string
name=
"action_privacy_policy"
>
Політика конфіденційності
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
Пошук
</string>
<string
name=
"action_search"
>
Пошук
</string>
<string
name=
"action_update"
>
Оновити
</string>
<string
name=
"action_update"
>
Оновити
</string>
<string
name=
"action_settings"
>
Налаштування
</string>
<string
name=
"action_settings"
>
Налаштування
</string>
...
@@ -305,14 +306,13 @@
...
@@ -305,14 +306,13 @@
<string
name=
"msg_no_recent_emoji"
>
Пусто
</string>
<string
name=
"msg_no_recent_emoji"
>
Пусто
</string>
<string
name=
"alert_title_default_skin_tone"
>
Тон шкіри за замовчуванням
</string>
<string
name=
"alert_title_default_skin_tone"
>
Тон шкіри за замовчуванням
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
Сортувати
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
Сортувати за
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
За алфавітом
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
За активністю
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
Групувати за типом
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
Групувати обране
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
Заголовок
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
...
...
app/src/main/res/values-zh-rCN/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
使用这个用户名
</string>
<string
name=
"action_use_this_username"
>
使用这个用户名
</string>
<string
name=
"action_terms_of_service"
>
服务条款
</string>
<string
name=
"action_terms_of_service"
>
服务条款
</string>
<string
name=
"action_privacy_policy"
>
隐私政策
</string>
<string
name=
"action_privacy_policy"
>
隐私政策
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
搜索
</string>
<string
name=
"action_search"
>
搜索
</string>
<string
name=
"action_update"
>
更新
</string>
<string
name=
"action_update"
>
更新
</string>
<string
name=
"action_settings"
>
设置
</string>
<string
name=
"action_settings"
>
设置
</string>
...
@@ -306,14 +307,13 @@
...
@@ -306,14 +307,13 @@
<string
name=
"msg_no_recent_emoji"
>
没有最近的emojis
</string>
<string
name=
"msg_no_recent_emoji"
>
没有最近的emojis
</string>
<string
name=
"alert_title_default_skin_tone"
>
默认皮肤颜色
</string>
<string
name=
"alert_title_default_skin_tone"
>
默认皮肤颜色
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
排序
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
排序按
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
字母
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
活跃
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
按类型分组
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
收藏分组
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
头部
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
...
...
app/src/main/res/values-zh-rTW/strings.xml
View file @
a99b2e79
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<string
name=
"action_use_this_username"
>
使用這個名稱
</string>
<string
name=
"action_use_this_username"
>
使用這個名稱
</string>
<string
name=
"action_terms_of_service"
>
服務條款
</string>
<string
name=
"action_terms_of_service"
>
服務條款
</string>
<string
name=
"action_privacy_policy"
>
隱私政策
</string>
<string
name=
"action_privacy_policy"
>
隱私政策
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<!-- TODO Translate -->
<string
name=
"action_search"
>
搜尋
</string>
<string
name=
"action_search"
>
搜尋
</string>
<string
name=
"action_update"
>
更新
</string>
<string
name=
"action_update"
>
更新
</string>
<string
name=
"action_settings"
>
設定
</string>
<string
name=
"action_settings"
>
設定
</string>
...
@@ -306,14 +307,13 @@
...
@@ -306,14 +307,13 @@
<string
name=
"msg_no_recent_emoji"
>
最近沒有使用emojis
</string>
<string
name=
"msg_no_recent_emoji"
>
最近沒有使用emojis
</string>
<string
name=
"alert_title_default_skin_tone"
>
預設主題顏色
</string>
<string
name=
"alert_title_default_skin_tone"
>
預設主題顏色
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
排序
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_title"
>
根據開頭排序
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_alphabet"
>
根據字母排序
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<!-- TODO Translate -->
<string
name=
"dialog_sort_by_activity"
>
根據活躍度排序
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_by_type"
>
根據類型分組
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<!-- TODO Translate -->
<string
name=
"dialog_group_favourites"
>
根據蒐藏分组
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<!-- TODO Translate -->
<string
name=
"chatroom_header"
>
聊天室頭貼
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
<string
name=
"header_favorite"
>
Favorites
</string>
<!-- TODO - Add proper translation -->
...
...
app/src/main/res/values/strings.xml
View file @
a99b2e79
...
@@ -46,6 +46,7 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
...
@@ -46,6 +46,7 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<string
name=
"action_use_this_username"
>
Use this username
</string>
<string
name=
"action_use_this_username"
>
Use this username
</string>
<string
name=
"action_terms_of_service"
>
Terms of Service
</string>
<string
name=
"action_terms_of_service"
>
Terms of Service
</string>
<string
name=
"action_privacy_policy"
>
Privacy Policy
</string>
<string
name=
"action_privacy_policy"
>
Privacy Policy
</string>
<string
name=
"action_new_channel"
>
New channel
</string>
<string
name=
"action_search"
>
Search
</string>
<string
name=
"action_search"
>
Search
</string>
<string
name=
"action_update"
>
Update
</string>
<string
name=
"action_update"
>
Update
</string>
<string
name=
"action_settings"
>
Settings
</string>
<string
name=
"action_settings"
>
Settings
</string>
...
@@ -322,14 +323,13 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
...
@@ -322,14 +323,13 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin
<string
name=
"msg_no_recent_emoji"
>
No recent emojis
</string>
<string
name=
"msg_no_recent_emoji"
>
No recent emojis
</string>
<string
name=
"alert_title_default_skin_tone"
>
Default skin tone
</string>
<string
name=
"alert_title_default_skin_tone"
>
Default skin tone
</string>
<!-- Sorting and grouping-->
<!-- Sort and group -->
<string
name=
"msg_sort"
>
Sort
</string>
<string
name=
"msg_sort_by"
>
Sort by %1$s
</string>
<string
name=
"dialog_sort_title"
>
Sort by
</string>
<string
name=
"msg_sort_by_activity"
>
Activity
</string>
<string
name=
"dialog_sort_by_alphabet"
>
Alphabetical
</string>
<string
name=
"msg_sort_by_name"
>
Name
</string>
<string
name=
"dialog_sort_by_activity"
>
Activity
</string>
<string
name=
"msg_group_by_unread_on_top"
>
Unread on top
</string>
<string
name=
"dialog_group_by_type"
>
Group by type
</string>
<string
name=
"msg_group_by_type"
>
Group by type
</string>
<string
name=
"dialog_group_favourites"
>
Group favourites
</string>
<string
name=
"msg_group_by_favorites"
>
Group by favorites
</string>
<string
name=
"chatroom_header"
>
Header
</string>
<!--ChatRooms Headers-->
<!--ChatRooms Headers-->
<string
name=
"header_favorite"
>
Favorites
</string>
<string
name=
"header_favorite"
>
Favorites
</string>
...
...
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