Theme experiments

This commit is contained in:
Paul Schaub 2019-09-10 18:24:47 +02:00
parent f414f3a6d5
commit 74f9f79dd3
18 changed files with 64 additions and 125 deletions

View File

@ -16,15 +16,13 @@
android:label="@string/app_name"
android:roundIcon="@drawable/ic_mercury_icon"
android:supportsRtl="true"
android:theme="@style/AppTheme.Light">
android:theme="@style/AppTheme">
<activity
android:name=".ui.chat.ChatActivity"
android:label="Chat"
android:theme="@style/AppTheme.Light.NoActionBar" />
android:label="Chat"/>
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.Light.NoActionBar">
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

View File

@ -9,7 +9,7 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import org.mercury_im.messenger.R;
import org.mercury_im.messenger.persistence.model.ChatModel;
import org.mercury_im.messenger.persistence.pojo.Chat;
import org.mercury_im.messenger.ui.util.AbstractRecyclerViewAdapter;
import butterknife.BindView;
@ -17,7 +17,7 @@ import butterknife.ButterKnife;
import de.hdodenhof.circleimageview.CircleImageView;
public class ChatListRecyclerViewAdapter
extends AbstractRecyclerViewAdapter<ChatModel, ChatListRecyclerViewAdapter.ChatHolder> {
extends AbstractRecyclerViewAdapter<Chat, ChatListRecyclerViewAdapter.ChatHolder> {
public ChatListRecyclerViewAdapter() {
super(new ChatMessageDiffCallback(true));
@ -33,7 +33,8 @@ public class ChatListRecyclerViewAdapter
@Override
public void onBindViewHolder(@NonNull ChatHolder holder, int position) {
ChatModel model = getModelAt(position);
Chat model = getModelAt(position);
holder.nameView.setText(model.jid.toString());
// TODO: Better bindable model pls
}
@ -57,19 +58,19 @@ public class ChatListRecyclerViewAdapter
}
}
private static class ChatMessageDiffCallback extends AbstractDiffCallback<ChatModel> {
private static class ChatMessageDiffCallback extends AbstractDiffCallback<Chat> {
public ChatMessageDiffCallback(boolean detectMoves) {
super(detectMoves);
}
@Override
public boolean areItemsTheSame(ChatModel oldItem, ChatModel newItem) {
return oldItem.getId() == newItem.getId();
public boolean areItemsTheSame(Chat oldItem, Chat newItem) {
return oldItem.chatId == newItem.chatId;
}
@Override
public boolean areContentsTheSame(ChatModel oldItem, ChatModel newItem) {
public boolean areContentsTheSame(Chat oldItem, Chat newItem) {
return areItemsTheSame(oldItem, newItem);
}
}

View File

@ -9,6 +9,7 @@ import org.mercury_im.messenger.persistence.model.ChatModel;
import org.mercury_im.messenger.persistence.model.MessageModel;
import org.mercury_im.messenger.persistence.repository.ChatRepository;
import org.mercury_im.messenger.persistence.repository.MessageRepository;
import org.mercury_im.messenger.persistence.pojo.Chat;
import java.util.List;
@ -29,20 +30,15 @@ public class ChatListViewModel extends ViewModel {
private CompositeDisposable disposable = new CompositeDisposable();
private final MutableLiveData<List<ChatModel>> chats = new MutableLiveData<>();
private final MutableLiveData<List<Chat>> chats = new MutableLiveData<>();
public ChatListViewModel() {
MercuryImApplication.getApplication().getAppComponent().inject(this);
disposable.add(chatRepository.getAllChats()
disposable.add(chatRepository.getDisplayableChats()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe((Consumer<List<ChatModel>>) chatModels -> {
chats.setValue(chatModels);
//for (ChatModel chat : chatModels) {
// messageRepository.getLastMessageFrom(chat.ge)
//}
}));
.subscribe((Consumer<List<Chat>>) chats::setValue));
disposable.add(messageRepository.getAllMessages()
.subscribeOn(Schedulers.io())
@ -54,7 +50,7 @@ public class ChatListViewModel extends ViewModel {
}));
}
public LiveData<List<ChatModel>> getChats() {
public LiveData<List<Chat>> getChats() {
return chats;
}

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M16,11c1.66,0 2.99,-1.34 2.99,-3S17.66,5 16,5c-1.66,0 -3,1.34 -3,3s1.34,3 3,3zM8,11c1.66,0 2.99,-1.34 2.99,-3S9.66,5 8,5C6.34,5 5,6.34 5,8s1.34,3 3,3zM8,13c-2.33,0 -7,1.17 -7,3.5L1,19h14v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5zM16,13c-0.29,0 -0.62,0.02 -0.97,0.05 1.16,0.84 1.97,1.97 1.97,3.45L17,19h6v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5z"/>
</vector>

View File

@ -25,7 +25,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/colorAccent"
app:itemIconTint="?attr/colorAccent"
app:itemTextColor="?attr/colorAccent"
app:itemBackground="?attr/colorPrimary"
app:menu="@menu/bottom_menu_main" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -22,7 +22,6 @@
android:layout_height="wrap_content"
tools:text="@tools:sample/full_names"
android:textSize="20sp"
android:textColor="@android:color/black"
app:layout_constraintTop_toTopOf="@+id/chat_avatar"
app:layout_constraintStart_toEndOf="@+id/chat_avatar"
android:layout_marginStart="8dp"

View File

@ -26,7 +26,6 @@
android:layout_height="wrap_content"
tools:text="@tools:sample/full_names"
android:textSize="20sp"
android:textColor="@android:color/black"
app:layout_constraintTop_toTopOf="@+id/roster_entry__avatar"
app:layout_constraintStart_toEndOf="@+id/roster_entry__avatar"
android:layout_marginStart="8dp"

View File

@ -1,66 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@null">
<androidx.cardview.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:cardUseCompatPadding="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
card_view:cardCornerRadius="28dp"
card_view:cardElevation="6dp"
card_view:layout_constraintStart_toStartOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="56dp">
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/btn_media"
android:layout_width="56dp"
android:layout_height="56dp"
android:background="@null"
android:tint="?attr/colorAccent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:srcCompat="@drawable/ic_add_white_24dp" />
<EditText
android:id="@+id/text_body"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:inputType="textMultiLine|textAutoCorrect"
android:maxLines="6"
card_view:layout_constraintBottom_toBottomOf="parent"
card_view:layout_constraintEnd_toStartOf="@+id/btn_send"
card_view:layout_constraintStart_toEndOf="@+id/btn_media"
card_view:layout_constraintTop_toTopOf="parent"
tools:text="Open Protocols!" />
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/btn_send"
android:layout_width="56dp"
android:layout_height="56dp"
android:background="@null"
android:tint="?attr/colorAccent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/ic_send_black_24dp"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -43,6 +43,8 @@
android:background="@null"
android:hint="@string/hint_type_your_message"
android:inputType="textMultiLine|textAutoCorrect|textCapSentences"
android:textColor="@android:color/primary_text_light"
android:textColorHint="@android:color/secondary_text_light"
android:maxLines="6"
android:padding="8dp"
app:layout_constraintBottom_toBottomOf="parent"

View File

@ -23,6 +23,7 @@
android:id="@+id/msg_body"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@android:color/primary_text_light"
android:lineSpacingExtra="2dp"
android:paddingStart="@dimen/msg_padding_start"

View File

@ -18,6 +18,7 @@
android:paddingTop="@dimen/msg_padding_top"
android:paddingEnd="@dimen/msg_padding_end"
android:paddingBottom="@dimen/msg_padding_bottom"
android:textColor="@android:color/primary_text_light"
android:elevation="@dimen/msg_elevation"
android:layout_marginTop="@dimen/msg_spacing_vertical"

View File

@ -7,7 +7,7 @@
<item android:id="@+id/entry_contacts"
android:title="@string/entry_contacts"
android:icon="@drawable/ic_people_outline_black_24dp" />
android:icon="@drawable/ic_group_black_24dp" />
<item android:id="@+id/entry_accounts"
android:title="@string/entry_accounts"

View File

@ -2,11 +2,16 @@
<resources>
<color name="white">#FFF</color>
<color name="colorPrimary">#38445e</color>
<color name="colorPrimaryDark">#0f1d34</color>
<color name="colorAccent">#636f8b</color>
<color name="primaryColor">#005959</color>
<color name="primaryLightColor">#356a6a</color>
<color name="primaryDarkColor">#001a19</color>
<color name="secondaryColor">#85bb00</color>
<color name="secondaryLightColor">#b9ee49</color>
<color name="secondaryDarkColor">#528b00</color>
<color name="primaryTextColor">#ffffff</color>
<color name="secondaryTextColor">#000000</color>
<color name="background">#EDF0F2</color>
<!--<color name="background">#EDF0F2</color>-->
<color name="bg_msg_in">#FFF</color>
<color name="bg_msg_out">#FFF</color>

View File

@ -1,34 +1,18 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
</style>
<style name="AppTheme.Light" parent="Theme.AppCompat.Light">
</style>
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.NoActionBar">
</style>
<style name="AppTheme.Light.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat">
</style>
<style name="AppTheme.Light.AppBarOverlay" parent="ThemeOverlay.AppCompat.Light">
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="colorAccent">@color/secondaryColor</item>
</style>
<style name="AppTheme.Message" parent="AppTheme">
<item name="android:background">@drawable/bg_msg_single</item>
</style>
<style name="AppTheme.Light" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">@color/secondaryColor</item>
</style>
<style name="AppTheme.Light.Message" parent="AppTheme.Light">
</style>

View File

@ -6,14 +6,13 @@ import androidx.room.TypeConverters;
import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.persistence.room.model.RoomChatModel;
import org.mercury_im.messenger.persistence.room.pojo.Chat;
import org.mercury_im.messenger.persistence.pojo.Chat;
import org.mercury_im.messenger.persistence.room.type_converter.EntityBareJidConverter;
import java.util.List;
import io.reactivex.Maybe;
import io.reactivex.Observable;
import io.reactivex.Single;
@Dao
@TypeConverters(EntityBareJidConverter.class)
@ -42,4 +41,10 @@ public interface ChatDao extends BaseDao<RoomChatModel> {
@Query("SELECT chats.* FROM chats JOIN contacts WHERE contacts.pk_contact_id = :contactId")
Observable<RoomChatModel> getChatWithContact(long contactId);
@Query("SELECT chats.pk_chat_id as chatId, " +
"chats.fk_entity_id as entityId, " +
"jid, active " +
"from chats LEFT JOIN entities ON chats.fk_entity_id = entities.pk_entity_id")
Observable<List<Chat>> getChatPojos();
}

View File

@ -4,6 +4,7 @@ import android.util.Log;
import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.persistence.model.EntityModel;
import org.mercury_im.messenger.persistence.pojo.Chat;
import org.mercury_im.messenger.persistence.repository.ChatRepository;
import org.mercury_im.messenger.persistence.repository.RosterRepository;
import org.mercury_im.messenger.persistence.room.dao.ChatDao;
@ -111,4 +112,9 @@ public class IChatRepository implements ChatRepository<RoomChatModel> {
return chatDao.delete(chat);
}
@Override
public Observable<List<Chat>> getDisplayableChats() {
return chatDao.getChatPojos();
}
}

View File

@ -1,4 +1,4 @@
package org.mercury_im.messenger.persistence.room.pojo;
package org.mercury_im.messenger.persistence.pojo;
import org.jxmpp.jid.EntityBareJid;

View File

@ -5,6 +5,7 @@ import org.mercury_im.messenger.persistence.model.AccountModel;
import org.mercury_im.messenger.persistence.model.ChatModel;
import org.mercury_im.messenger.persistence.model.ContactModel;
import org.mercury_im.messenger.persistence.model.EntityModel;
import org.mercury_im.messenger.persistence.pojo.Chat;
import java.util.List;
@ -69,10 +70,6 @@ public interface ChatRepository<E extends ChatModel> {
Completable closeChat(E chat);
Observable<List<Chat>> getDisplayableChats();
}