Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/talk-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorDaniel Bailey <daniel.bailey@grappleIT.co.uk>2019-03-04 20:35:38 +0300
committerMario Đanić <mario.danic@gmail.com>2019-08-09 18:56:37 +0300
commit8a013cb83724c064ecdb169f47a72cbe321a012c (patch)
tree5b661f8b462f7711a2082e8c41210973491fe6fc /app/src
parent809a6b66ae9b6a475d6b85b6a7476ee13f0def2d (diff)
Base commit for dark theme v1.5
Signed-off-by: Daniel Bailey <daniel.bailey@grappleIT.co.uk>
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java19
-rw-r--r--app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.java23
-rw-r--r--app/src/main/java/com/nextcloud/talk/controllers/CallController.java2
-rw-r--r--app/src/main/java/com/nextcloud/talk/controllers/ChatController.java2
-rw-r--r--app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java2
-rw-r--r--app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java2
-rw-r--r--app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java19
-rw-r--r--app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java11
-rw-r--r--app/src/main/res/drawable/shape_incoming_message.xml2
-rw-r--r--app/src/main/res/drawable/shape_video_bubble.xml2
-rw-r--r--app/src/main/res/drawable/shape_voice_bubble.xml2
-rw-r--r--app/src/main/res/drawable/white_circle.xml2
-rw-r--r--app/src/main/res/layout/activity_main.xml3
-rw-r--r--app/src/main/res/layout/bottom_sheet.xml2
-rw-r--r--app/src/main/res/layout/controller_browser.xml4
-rw-r--r--app/src/main/res/layout/controller_call_notification.xml2
-rw-r--r--app/src/main/res/layout/controller_chat.xml10
-rw-r--r--app/src/main/res/layout/controller_conversation_info.xml7
-rw-r--r--app/src/main/res/layout/controller_conversations_rv.xml3
-rw-r--r--app/src/main/res/layout/controller_entry_menu.xml2
-rw-r--r--app/src/main/res/layout/controller_generic_rv.xml3
-rw-r--r--app/src/main/res/layout/controller_server_selection.xml7
-rw-r--r--app/src/main/res/layout/controller_settings.xml22
-rw-r--r--app/src/main/res/layout/rv_item_browser_file.xml2
-rw-r--r--app/src/main/res/layout/rv_item_conversation_with_last_message.xml8
-rw-r--r--app/src/main/res/layout/rv_item_menu.xml4
-rw-r--r--app/src/main/res/values-night/colors.xml40
-rw-r--r--app/src/main/res/values/colors.xml33
-rw-r--r--app/src/main/res/values/strings.xml5
-rw-r--r--app/src/main/res/values/styles.xml23
30 files changed, 215 insertions, 53 deletions
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java
index ba4db9aed..28fafa90b 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java
@@ -31,14 +31,22 @@ import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.json.chat.ChatMessage;
import com.nextcloud.talk.utils.DisplayUtils;
+import com.nextcloud.talk.utils.preferences.AppPreferences;
import com.stfalcon.chatkit.messages.MessageHolders;
import java.util.Map;
+import javax.inject.Inject;
+import autodagger.AutoInjector;
+@AutoInjector(NextcloudTalkApplication.class)
public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMessageViewHolder<ChatMessage> {
+ @Inject
+ AppPreferences appPreferences;
+
public MagicSystemMessageViewHolder(View itemView) {
super(itemView);
+ NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this);
}
@Override
@@ -47,9 +55,13 @@ public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMes
Resources resources = NextcloudTalkApplication.getSharedApplication().getResources();
- Drawable bubbleDrawable = DisplayUtils.getMessageSelector(resources.getColor(R.color.white_two),
- resources.getColor(R.color.transparent),
- resources.getColor(R.color.white_two), R.drawable.shape_grouped_incoming_message);
+ int normalColor = appPreferences.isDarkThemeEnabled() ? resources.getColor(R.color.bg_system_bubble_dark) :
+ resources.getColor(R.color.white_two);
+ int pressedColor = normalColor;
+
+ Drawable bubbleDrawable = DisplayUtils.getMessageSelector(normalColor,
+ resources.getColor(R.color.transparent), pressedColor,
+ R.drawable.shape_grouped_incoming_message);
ViewCompat.setBackground(bubble, bubbleDrawable);
Spannable messageString = new SpannableString(message.getText());
@@ -73,7 +85,6 @@ public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMes
}
}
}
-
text.setText(messageString);
}
}
diff --git a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.java b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.java
index af623a701..1ef9f7125 100644
--- a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.java
+++ b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.java
@@ -25,6 +25,8 @@ import android.os.Build;
import android.util.Log;
import androidx.emoji.bundled.BundledEmojiCompatConfig;
import androidx.emoji.text.EmojiCompat;
+
+import androidx.appcompat.app.AppCompatDelegate;
import androidx.lifecycle.LifecycleObserver;
import androidx.multidex.MultiDex;
import androidx.multidex.MultiDexApplication;
@@ -54,6 +56,7 @@ import com.nextcloud.talk.utils.OkHttpNetworkFetcherWithCache;
import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageModule;
import com.nextcloud.talk.utils.database.user.UserModule;
import com.nextcloud.talk.utils.singletons.MerlinTheWizard;
+import com.nextcloud.talk.utils.preferences.AppPreferences;
import com.nextcloud.talk.webrtc.MagicWebRTCUtils;
import com.vanniktech.emoji.EmojiManager;
import com.vanniktech.emoji.googlecompat.GoogleCompatEmojiProvider;
@@ -90,6 +93,9 @@ public class NextcloudTalkApplication extends MultiDexApplication implements Lif
protected static NextcloudTalkApplication sharedApplication;
//region Fields (components)
protected NextcloudTalkApplicationComponent componentApplication;
+
+ @Inject
+ AppPreferences appPreferences;
@Inject
OkHttpClient okHttpClient;
//endregion
@@ -124,8 +130,6 @@ public class NextcloudTalkApplication extends MultiDexApplication implements Lif
//region Overridden methods
@Override
public void onCreate() {
- super.onCreate();
-
sharedApplication = this;
SecurityKeyManager securityKeyManager = SecurityKeyManager.getInstance();
@@ -141,6 +145,9 @@ public class NextcloudTalkApplication extends MultiDexApplication implements Lif
componentApplication.inject(this);
+ setAppTheme(appPreferences.isDarkThemeEnabled());
+ super.onCreate();
+
ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(this)
.setNetworkFetcher(new OkHttpNetworkFetcherWithCache(okHttpClient))
.setMainDiskCacheConfig(DiskCacheConfig.newBuilder(this)
@@ -192,6 +199,18 @@ public class NextcloudTalkApplication extends MultiDexApplication implements Lif
}
//endregion
+ //region Setters
+ public static void setAppTheme(Boolean darkTheme) {
+ if (darkTheme) {
+ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
+ } else {
+ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
+ }
+ }
+ //endregion
+
+
+
//region Protected methods
protected void buildComponent() {
componentApplication = DaggerNextcloudTalkApplicationComponent.builder()
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java
index 10de3ae3c..817c9f098 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java
@@ -622,7 +622,7 @@ public class CallController extends BaseController {
.headingTvColor(getResources().getColor(R.color.colorPrimary))
.headingTvSize(20)
.headingTvText(getResources().getString(R.string.nc_push_to_talk))
- .subHeadingTvColor(getResources().getColor(R.color.white))
+ .subHeadingTvColor(getResources().getColor(R.color.bg_default))
.subHeadingTvSize(16)
.subHeadingTvText(getResources().getString(R.string.nc_push_to_talk_desc))
.maskColor(Color.parseColor("#dc000000"))
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java
index f130f25f5..48bb280a9 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java
@@ -511,7 +511,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
private void setupMentionAutocomplete() {
float elevation = 6f;
- Drawable backgroundDrawable = new ColorDrawable(Color.WHITE);
+ Drawable backgroundDrawable = new ColorDrawable(getResources().getColor(R.color.bg_default));
AutocompletePresenter<Mention> presenter = new MentionAutocompletePresenter(getApplicationContext(), roomToken);
AutocompleteCallback<Mention> callback = new MentionAutocompleteCallback(getActivity(),
conversationUser, messageInput);
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java
index 3cd1edf66..9c8127bf9 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java
@@ -189,7 +189,7 @@ public class ConversationInfoController extends BaseController {
new LovelyStandardDialog(getActivity(), LovelyStandardDialog.ButtonLayout.HORIZONTAL)
.setTopColorRes(R.color.nc_darkRed)
.setIcon(DisplayUtils.getTintedDrawable(context.getResources(),
- R.drawable.ic_delete_black_24dp, R.color.white))
+ R.drawable.ic_delete_black_24dp, R.color.bg_default))
.setPositiveButtonColor(context.getResources().getColor(R.color.nc_darkRed))
.setTitle(R.string.nc_delete_call)
.setMessage(conversation.getDeleteWarningMessage())
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java
index f4d8489be..97788bacb 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java
@@ -683,7 +683,7 @@ public class ConversationsListController extends BaseController implements Searc
new LovelyStandardDialog(getActivity(), LovelyStandardDialog.ButtonLayout.HORIZONTAL)
.setTopColorRes(R.color.nc_darkRed)
.setIcon(DisplayUtils.getTintedDrawable(context.getResources(),
- R.drawable.ic_delete_black_24dp, R.color.white))
+ R.drawable.ic_delete_black_24dp, R.color.bg_default))
.setPositiveButtonColor(context.getResources().getColor(R.color.nc_darkRed))
.setTitle(R.string.nc_delete_call)
.setMessage(conversation.getDeleteWarningMessage())
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java
index 056280ec0..2f0645692 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java
@@ -135,6 +135,10 @@ public class SettingsController extends BaseController {
MaterialSwitchPreference screenLockSwitchPreference;
@BindView(R.id.settings_screen_lock_timeout)
MaterialChoicePreference screenLockTimeoutChoicePreference;
+
+ @BindView(R.id.settings_theme)
+ MaterialSwitchPreference themeSwitchPreference;
+
@BindView(R.id.message_text)
TextView messageText;
@Inject
@@ -155,6 +159,8 @@ public class SettingsController extends BaseController {
private OnPreferenceValueChangedListener<Boolean> screenSecurityChangeListener;
private OnPreferenceValueChangedListener<Boolean> screenLockChangeListener;
private OnPreferenceValueChangedListener<String> screenLockTimeoutChangeListener;
+ private OnPreferenceValueChangedListener<Boolean> themeChangeListener;
+
private Disposable profileQueryDisposable;
private Disposable dbQueryDisposable;
@@ -187,6 +193,7 @@ public class SettingsController extends BaseController {
appPreferences.registerScreenSecurityListener(screenSecurityChangeListener = new ScreenSecurityChangeListener());
appPreferences.registerScreenLockListener(screenLockChangeListener = new ScreenLockListener());
appPreferences.registerScreenLockTimeoutListener(screenLockTimeoutChangeListener = new ScreenLockTimeoutListener());
+ appPreferences.registerThemeChangeListener(themeChangeListener = new ThemeChangeListener());
List<String> listWithIntFields = new ArrayList<>();
listWithIntFields.add("proxy_port");
@@ -347,7 +354,7 @@ public class SettingsController extends BaseController {
new LovelyStandardDialog(getActivity(), LovelyStandardDialog.ButtonLayout.HORIZONTAL)
.setTopColorRes(R.color.nc_darkRed)
.setIcon(DisplayUtils.getTintedDrawable(getResources(),
- R.drawable.ic_delete_black_24dp, R.color.white))
+ R.drawable.ic_delete_black_24dp, R.color.bg_default))
.setPositiveButtonColor(context.getResources().getColor(R.color.nc_darkRed))
.setTitle(R.string.nc_settings_remove_account)
.setMessage(R.string.nc_settings_remove_confirmation)
@@ -600,6 +607,7 @@ public class SettingsController extends BaseController {
messageView.setVisibility(View.GONE);
}
}
+ ((Checkable) themeSwitchPreference.findViewById(R.id.mp_checkable)).setChecked(appPreferences.isDarkThemeEnabled());
}
private void loadAvatarImage() {
@@ -627,6 +635,7 @@ public class SettingsController extends BaseController {
appPreferences.unregisterScreenSecurityListener(screenSecurityChangeListener);
appPreferences.unregisterScreenLockListener(screenLockChangeListener);
appPreferences.unregisterScreenLockTimeoutListener(screenLockTimeoutChangeListener);
+ appPreferences.unregisterThemeChangeListener(themeChangeListener);
}
super.onDestroy();
}
@@ -772,4 +781,12 @@ public class SettingsController extends BaseController {
}
}
}
+
+ private class ThemeChangeListener implements OnPreferenceValueChangedListener<Boolean> {
+ @Override
+ public void onChanged(Boolean newValue) {
+ NextcloudTalkApplication.setAppTheme(newValue);
+ getActivity().recreate();
+ }
+ }
}
diff --git a/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java b/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java
index b141ba523..5ae6d65d5 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java
+++ b/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java
@@ -265,6 +265,17 @@ public interface AppPreferences {
@UnregisterChangeListenerMethod
void unregisterScreenLockTimeoutListener(OnPreferenceValueChangedListener<String> listener);
+ @KeyByResource(R.string.nc_settings_theme_key)
+ @DefaultValue(R.bool.value_false)
+ boolean isDarkThemeEnabled();
+
+ @KeyByResource(R.string.nc_settings_theme_key)
+ @RegisterChangeListenerMethod
+ void registerThemeChangeListener(OnPreferenceValueChangedListener<Boolean> listener);
+
+ @KeyByResource(R.string.nc_settings_theme_key)
+ @UnregisterChangeListenerMethod
+ void unregisterThemeChangeListener(OnPreferenceValueChangedListener<Boolean> listener);
@ClearMethod
void clear();
diff --git a/app/src/main/res/drawable/shape_incoming_message.xml b/app/src/main/res/drawable/shape_incoming_message.xml
index b11a3f0b4..92559940b 100644
--- a/app/src/main/res/drawable/shape_incoming_message.xml
+++ b/app/src/main/res/drawable/shape_incoming_message.xml
@@ -28,6 +28,6 @@
android:bottomLeftRadius="@dimen/message_bubble_corners_radius"
android:topRightRadius="@dimen/message_bubble_corners_radius" />
- <solid android:color="@color/white" />
+ <solid android:color="@color/bg_default" />
</shape> \ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_video_bubble.xml b/app/src/main/res/drawable/shape_video_bubble.xml
index d02c78df9..eb35cfc2e 100644
--- a/app/src/main/res/drawable/shape_video_bubble.xml
+++ b/app/src/main/res/drawable/shape_video_bubble.xml
@@ -23,7 +23,7 @@
<item>
<shape
android:shape="oval">
- <solid android:color="@color/white"/>
+ <solid android:color="@color/bg_default"/>
</shape>
</item>
<item android:drawable="@drawable/ic_videocam_grey_600_24dp"/>
diff --git a/app/src/main/res/drawable/shape_voice_bubble.xml b/app/src/main/res/drawable/shape_voice_bubble.xml
index 618be4047..851328b2d 100644
--- a/app/src/main/res/drawable/shape_voice_bubble.xml
+++ b/app/src/main/res/drawable/shape_voice_bubble.xml
@@ -23,7 +23,7 @@
<item>
<shape
android:shape="oval">
- <solid android:color="@color/white"/>
+ <solid android:color="@color/bg_default"/>
</shape>
</item>
<item android:drawable="@drawable/ic_mic_grey_600_24dp"/>
diff --git a/app/src/main/res/drawable/white_circle.xml b/app/src/main/res/drawable/white_circle.xml
index 836510890..6085a1d00 100644
--- a/app/src/main/res/drawable/white_circle.xml
+++ b/app/src/main/res/drawable/white_circle.xml
@@ -22,5 +22,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
- android:color="@color/white"/>
+ android:color="@color/bg_default"/>
</shape>
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 0e770394a..56f47a903 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -36,7 +36,8 @@
android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
app:contentInsetStart="24dp"
app:contentInsetStartWithNavigation="0dp"
- app:titleMarginStart="0dp" />
+ app:titleMarginStart="0dp"
+ app:popupTheme="@style/appActionBarPopupMenu" />
</com.google.android.material.appbar.AppBarLayout>
<com.bluelinelabs.conductor.ChangeHandlerFrameLayout
diff --git a/app/src/main/res/layout/bottom_sheet.xml b/app/src/main/res/layout/bottom_sheet.xml
index 27fba38a9..0f278eedd 100644
--- a/app/src/main/res/layout/bottom_sheet.xml
+++ b/app/src/main/res/layout/bottom_sheet.xml
@@ -22,7 +22,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/white"
+ android:background="@color/bg_bottom_sheet"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
diff --git a/app/src/main/res/layout/controller_browser.xml b/app/src/main/res/layout/controller_browser.xml
index a078a3ba5..13f3b06c3 100644
--- a/app/src/main/res/layout/controller_browser.xml
+++ b/app/src/main/res/layout/controller_browser.xml
@@ -23,13 +23,14 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/background_color"
+ android:background="@color/bg_default"
android:orientation="vertical">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/path_navigation"
android:layout_width="match_parent"
android:layout_height="64dp"
+ android:background="@color/bg_default"
app:menu="@menu/file_browser_path" />
<androidx.recyclerview.widget.RecyclerView
@@ -45,6 +46,7 @@
android:layout_width="match_parent"
android:layout_height="64dp"
android:layout_alignParentBottom="true"
+ android:background="@color/bg_default"
app:menu="@menu/file_browser_bottom" />
<include
diff --git a/app/src/main/res/layout/controller_call_notification.xml b/app/src/main/res/layout/controller_call_notification.xml
index 836b4642d..72c427197 100644
--- a/app/src/main/res/layout/controller_call_notification.xml
+++ b/app/src/main/res/layout/controller_call_notification.xml
@@ -43,7 +43,7 @@
android:layout_marginTop="16dp"
android:text="@string/nc_incoming_call"
android:textAlignment="center"
- android:textColor="@color/white30"
+ android:textColor="@color/controller_call_incomingCallTextView"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/controller_chat.xml b/app/src/main/res/layout/controller_chat.xml
index ee6e1308a..dc844f811 100644
--- a/app/src/main/res/layout/controller_chat.xml
+++ b/app/src/main/res/layout/controller_chat.xml
@@ -48,8 +48,8 @@
app:incomingBubblePaddingLeft="@dimen/message_bubble_corners_padding"
app:incomingBubblePaddingRight="@dimen/message_bubble_corners_padding"
app:incomingBubblePaddingTop="@dimen/message_bubble_corners_padding"
- app:incomingDefaultBubbleColor="@color/white_two"
- app:incomingDefaultBubblePressedColor="@color/white_two"
+ app:incomingDefaultBubbleColor="@color/bg_message_list_incoming_bubble"
+ app:incomingDefaultBubblePressedColor="@color/bg_message_list_incoming_bubble"
app:incomingDefaultBubbleSelectedColor="@color/transparent"
app:incomingImageTimeTextSize="12sp"
app:incomingTextColor="@color/nc_incoming_text_default"
@@ -81,7 +81,7 @@
app:pb_backgroundColor="@color/colorPrimary"
app:pb_icon="@drawable/ic_baseline_arrow_downward_24px"
app:pb_text="@string/nc_new_messages"
- app:pb_textColor="@color/white" />
+ app:pb_textColor="@color/bg_default" />
<View
android:id="@+id/separator"
@@ -90,7 +90,7 @@
android:layout_above="@+id/messageInputView"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
- android:background="@color/nc_light_grey" />
+ android:background="@color/controller_chat_separator" />
<com.stfalcon.chatkit.messages.MessageInput
android:id="@+id/messageInputView"
@@ -108,7 +108,7 @@
app:inputButtonMargin="8dp"
app:inputButtonWidth="36dp"
app:inputHint="@string/nc_hint_enter_a_message"
- app:inputTextColor="@color/black"
+ app:inputTextColor="@color/fg_default"
app:inputTextSize="16sp"
app:showAttachmentButton="true" />
diff --git a/app/src/main/res/layout/controller_conversation_info.xml b/app/src/main/res/layout/controller_conversation_info.xml
index dc9a8895e..c5bb311a9 100644
--- a/app/src/main/res/layout/controller_conversation_info.xml
+++ b/app/src/main/res/layout/controller_conversation_info.xml
@@ -23,7 +23,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/nc_white_color"
+ android:background="@color/bg_controller_conv_info"
android:orientation="vertical">
<ProgressBar
@@ -71,7 +71,8 @@
android:layout_height="wrap_content"
android:layout_below="@id/avatar_image"
android:layout_centerHorizontal="true"
- android:layout_marginTop="@dimen/margin_between_elements" />
+ android:layout_marginTop="@dimen/margin_between_elements"
+ android:textColor="@color/fg_default" />
</RelativeLayout>
</com.yarolegovich.mp.MaterialPreferenceCategory>
@@ -116,7 +117,7 @@
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- tools:listitem="@layout/rv_item_contact"></androidx.recyclerview.widget.RecyclerView>
+ tools:listitem="@layout/rv_item_contact" />
</com.yarolegovich.mp.MaterialPreferenceCategory>
diff --git a/app/src/main/res/layout/controller_conversations_rv.xml b/app/src/main/res/layout/controller_conversations_rv.xml
index e077bc830..63989ce3e 100644
--- a/app/src/main/res/layout/controller_conversations_rv.xml
+++ b/app/src/main/res/layout/controller_conversations_rv.xml
@@ -23,8 +23,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/generic_rv_layout"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/nc_white_color">
+ android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar"
diff --git a/app/src/main/res/layout/controller_entry_menu.xml b/app/src/main/res/layout/controller_entry_menu.xml
index 5a1c7bd05..ca9da07b8 100644
--- a/app/src/main/res/layout/controller_entry_menu.xml
+++ b/app/src/main/res/layout/controller_entry_menu.xml
@@ -22,7 +22,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/nc_white_color">
+ android:background="@color/bg_bottom_sheet">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/text_input_layout"
diff --git a/app/src/main/res/layout/controller_generic_rv.xml b/app/src/main/res/layout/controller_generic_rv.xml
index 4d18cc970..7bd0ad51e 100644
--- a/app/src/main/res/layout/controller_generic_rv.xml
+++ b/app/src/main/res/layout/controller_generic_rv.xml
@@ -22,8 +22,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/generic_rv_layout"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/nc_white_color">
+ android:layout_height="match_parent">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
diff --git a/app/src/main/res/layout/controller_server_selection.xml b/app/src/main/res/layout/controller_server_selection.xml
index 5e7b54fcd..c98add44a 100644
--- a/app/src/main/res/layout/controller_server_selection.xml
+++ b/app/src/main/res/layout/controller_server_selection.xml
@@ -35,6 +35,8 @@
android:scaleType="fitXY"
app:srcCompat="@drawable/ic_logo" />
+ <!-- Server selection window should be ignorant of theme colour
+ thus colors are set statically -->
<studio.carbonylgroup.textfieldboxes.TextFieldBoxes
android:id="@+id/text_field_boxes"
android:layout_width="match_parent"
@@ -46,7 +48,8 @@
app:helperText=" "
app:labelText="@string/nc_server_url"
app:panelBackgroundColor="@color/colorPrimary"
- app:primaryColor="@android:color/white">
+ app:primaryColor="@android:color/white"
+ app:secondaryColor="@android:color/white">
<studio.carbonylgroup.textfieldboxes.ExtendedEditText
android:id="@+id/extended_edit_text"
@@ -55,7 +58,7 @@
android:imeOptions="actionDone"
android:inputType="textUri"
android:singleLine="true"
- android:textColor="@android:color/white" />
+ android:textColor="@color/fg_inverse" />
</studio.carbonylgroup.textfieldboxes.TextFieldBoxes>
diff --git a/app/src/main/res/layout/controller_settings.xml b/app/src/main/res/layout/controller_settings.xml
index f8f65afd8..5858e391f 100644
--- a/app/src/main/res/layout/controller_settings.xml
+++ b/app/src/main/res/layout/controller_settings.xml
@@ -60,7 +60,8 @@
android:layout_height="wrap_content"
android:layout_below="@id/avatar_image"
android:layout_centerHorizontal="true"
- android:layout_marginTop="@dimen/margin_between_elements" />
+ android:layout_marginTop="@dimen/margin_between_elements"
+ android:textColor="@color/fg_default" />
<TextView
android:id="@+id/base_url_text"
@@ -68,7 +69,8 @@
android:layout_height="wrap_content"
android:layout_below="@id/display_name_text"
android:layout_centerHorizontal="true"
- android:layout_margin="4dp" />
+ android:layout_margin="4dp"
+ android:textColor="@color/fg_default" />
<com.yarolegovich.mp.MaterialStandardPreference
@@ -115,6 +117,22 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
+ apc:mpc_title="@string/nc_settings_appearance"
+ apc:mpc_title_color="@color/colorPrimary">
+
+ <com.yarolegovich.mp.MaterialSwitchPreference
+ android:id="@+id/settings_theme"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ apc:mp_key="@string/nc_settings_theme_key"
+ apc:mp_title="@string/nc_settings_theme_title" />
+
+ </com.yarolegovich.mp.MaterialPreferenceCategory>
+
+ <com.yarolegovich.mp.MaterialPreferenceCategory
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:animateLayoutChanges="true"
apc:mpc_title="@string/nc_settings_notification_sounds"
apc:mpc_title_color="@color/colorPrimary">
diff --git a/app/src/main/res/layout/rv_item_browser_file.xml b/app/src/main/res/layout/rv_item_browser_file.xml
index 9bf333e69..e2053a12f 100644
--- a/app/src/main/res/layout/rv_item_browser_file.xml
+++ b/app/src/main/res/layout/rv_item_browser_file.xml
@@ -23,7 +23,7 @@
android:layout_width="match_parent"
android:layout_height="@dimen/rv_item_view_height"
android:layout_margin="@dimen/double_margin_between_elements"
- android:background="@color/background_color">
+ android:background="@color/bg_default">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/file_icon"
diff --git a/app/src/main/res/layout/rv_item_conversation_with_last_message.xml b/app/src/main/res/layout/rv_item_conversation_with_last_message.xml
index 8d3a46f7c..d112fdc64 100644
--- a/app/src/main/res/layout/rv_item_conversation_with_last_message.xml
+++ b/app/src/main/res/layout/rv_item_conversation_with_last_message.xml
@@ -75,7 +75,7 @@
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
- android:textColor="@color/nc_incoming_text_default"
+ android:textColor="@color/conversation_item_header"
android:textSize="16sp"
tools:text="Best conversation" />
@@ -86,7 +86,7 @@
android:layout_alignParentEnd="true"
android:ellipsize="end"
android:maxLines="1"
- android:textColor="@color/warm_grey_two" />
+ android:textColor="@color/conversation_date" />
<RelativeLayout
android:layout_width="match_parent"
@@ -115,7 +115,7 @@
android:gravity="top"
android:lines="1"
android:singleLine="true"
- android:textColor="@color/warm_grey_four"
+ android:textColor="@color/conversation_last_message"
tools:text="This is the last message\nof an incredibly long two line conversation text" />
<TextView
@@ -128,7 +128,7 @@
android:gravity="center"
android:lines="1"
android:textAlignment="center"
- android:textColor="@color/white"
+ android:textColor="@color/conversation_unread_bubble"
tools:text="1" />
</RelativeLayout>
diff --git a/app/src/main/res/layout/rv_item_menu.xml b/app/src/main/res/layout/rv_item_menu.xml
index 460565583..01853e756 100644
--- a/app/src/main/res/layout/rv_item_menu.xml
+++ b/app/src/main/res/layout/rv_item_menu.xml
@@ -24,7 +24,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/white">
+ android:background="@color/bg_default">
<TextView
android:id="@+id/menu_text"
@@ -34,7 +34,7 @@
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center_vertical"
- android:textColor="@color/black"
+ android:textColor="@color/fg_default"
android:textSize="16sp"
tools:drawableLeft="@drawable/ic_add_grey600_24px"
tools:drawablePadding="16dp"
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
new file mode 100644
index 000000000..f918d8e2e
--- /dev/null
+++ b/app/src/main/res/values-night/colors.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Nextcloud Talk application
+ ~
+ ~ @author Mario Danic
+ ~ Copyright (C) 2017-2019 Mario Danic <mario@lovelyhq.com>
+ ~ @author Daniel Bailey
+ ~ Copyright (C) 2019 Daniel Bailey <db@grappleIT.co.uk>
+ ~
+ ~ This program is free software: you can redistribute it and/or modify
+ ~ it under the terms of the GNU General Public License as published by
+ ~ the Free Software Foundation, either version 3 of the License, or
+ ~ at your option) any later version.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ~ GNU General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License
+ ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ -->
+
+<resources>
+ <color name="conversation_item_header">#6c94a8</color>
+
+ <color name="fg_default">#eeeeee</color>
+
+ <color name="bg_default">#333333</color>
+ <color name="bg_alt">#333333</color>
+
+ <!-- Chat window incoming message text & informational -->
+ <color name="nc_incoming_text_default">#8FADBD</color>
+ <color name="bg_message_list_incoming_bubble">#444444</color>
+ <color name="nc_grey">@android:color/holo_purple</color>
+ <color name="bg_bottom_sheet">#222222</color>
+
+ <color name="emoji_background">#313031</color>
+ <color name="emoji_divider">#15FFFFFF</color>
+</resources> \ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 20e824055..df85131f3 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -23,27 +23,44 @@
<color name="colorPrimary">#0082C9</color>
<color name="colorPrimaryDark">#006AA3</color>
<color name="colorAccent">#007CC2</color>
- <color name="nc_outcoming_text_default">@color/white</color>
+
+ <!-- Text color of sent messages -->
+ <color name="nc_outcoming_text_default">#FFFFFF</color>
+ <!-- Text color of received messages -->
<color name="nc_incoming_text_default">#37505D</color>
+
+ <!-- Name of person or group for the chat conversation -->
+ <color name="conversation_item_header">#37505D</color>
+ <color name="conversation_date">@color/warm_grey_two</color>
+ <color name="conversation_last_message">@color/warm_grey_four</color>
+ <color name="conversation_unread_bubble">#FFFFFF</color>
+
<color name="nc_incoming_text_mention_you">#C98879</color>
<color name="nc_incoming_text_mention_others">#37505D</color>
- <color name="nc_text_color">@color/black</color>
<color name="nc_darkRed">#D32F2F</color>
<color name="nc_darkGreen">#006400</color>
<color name="nc_white_color">@color/per70white</color>
<color name="nc_light_blue_color">#7FC0E3</color>
- <color name="nc_light_grey">#E8E8E8</color>
+ <color name="controller_chat_separator">#E8E8E8</color>
<color name="grey_600">#757575</color>
<color name="nc_grey">#D5D5D5</color>
- <color name="material_white_smoke">#F5F5F5</color>
- <color name="white30">#E9FFFFFF</color>
+ <color name="controller_call_incomingCallTextView">#E9FFFFFF</color>
<color name="grey950">#111111</color>
- <color name="emoji_background">#ECEFF1</color>
+ <!-- Emoji list in chat window -->
+ <color name="emoji_background">#eceff1</color>
<color name="emoji_icons">#61000000</color>
<color name="emoji_divider">#15000000</color>
- <color name="background_color">#FAFAFA</color>
-</resources>
+ <color name="fg_default">#000000</color>
+ <color name="fg_inverse">#FFFFFF</color>
+ <color name="bg_default">#FFFFFF</color>
+ <color name="bg_alt">@color/white60</color>
+ <color name="bg_system_bubble_dark">#444444</color>
+ <color name="bg_bottom_sheet">#46ffffff</color>
+ <!-- "Conversation Info" window -->
+ <color name="bg_controller_conv_info">@color/bg_default</color>
+ <color name="bg_message_list_incoming_bubble">#979797</color>
+</resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dd5d70683..9bdfaedf3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -88,6 +88,11 @@
<string name="nc_settings_vibrate_desc">Phone will vibrate unless it\'s silenced</string>
<string name="nc_settings_vibrate_key" translatable="false">notifications_vibrate</string>
+ <string name="nc_settings_appearance">Appearance</string>
+ <string name="nc_settings_theme_title">Theme</string>
+ <string name="nc_settings_theme_key">theme</string>
+ <string name="nc_settings_theme_light">Light</string>
+ <string name="nc_settings_theme_dark">Dark</string>
<string name="nc_settings_privacy">Privacy</string>
<string name="nc_settings_screen_lock_title">Screen lock</string>
<string name="nc_settings_screen_lock_desc">Lock %1$s with Android screen lock or supported biometric method</string>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index bf16733b8..d62164cb3 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -21,14 +21,17 @@
<resources>
<!-- Base application theme. -->
- <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
+ <style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="android:panelFullBackground">@color/colorPrimary</item>
<item name="android:itemBackground">@color/nc_outcoming_text_default</item>
- <item name="android:textColor">@color/nc_text_color</item>
+ <item name="android:textColor">@color/fg_default</item>
+ <item name="android:popupMenuStyle">@style/appActionBarPopupMenu</item>
+ <item name="actionOverflowMenuStyle">@style/appActionBarPopupMenu</item>
+ <item name="actionBarStyle">@style/appActionBarStyle</item>
</style>
<style name="ErrorAppearance" parent="@android:style/TextAppearance">
@@ -48,4 +51,20 @@
<item name="android:textColor">@color/colorAccent</item>
</style>
+ <style name="appActionBarStyle" parent="@style/Widget.MaterialComponents.ActionBar.Solid">
+ <item name="android:colorPrimary">@color/fg_inverse</item>
+ <item name="android:textColor">@color/fg_inverse</item>
+ </style>
+
+ <style name="Toolbar_TextAppearance" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
+ <item name="android:colorPrimary">@color/fg_inverse</item>
+ <item name="android:textColor">@color/fg_inverse</item>
+ </style>
+
+ <style name="appActionBarPopupMenu" parent="@style/Widget.AppCompat.PopupMenu.Overflow">
+ <item name="android:colorPrimary">@color/fg_inverse</item>
+ <item name="android:background">@color/bg_alt</item>
+ <item name="android:textColor">@color/fg_default</item>
+ </style>
+
</resources>