diff options
author | Steffen Keiper <github@crystal-mett.de> | 2016-05-12 20:00:18 +0200 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2016-06-08 20:07:40 +0200 |
commit | 7932244c51e7c5e6e5775d282e91ec223fe2a9bf (patch) | |
tree | d268d139d9de4dd24a29c19eabf3b7b9b6aea553 /src/main/java/eu/siacs | |
parent | b88128241eb7deb6599e946dc009fdc5dfd32974 (diff) |
Dark theme, theme switch, icons, style, strings
added some white icons,
changed hardcoded icons to theme attributes,
changed icon_edit_dark to icon_edit_body to reflect icons position,
grey message bubbles in dark theme,
misc
purged ic_action_chat as it wasn't used
preference use_white_background changed to use_green_background, default true
grey chat bubbles darker, text white
replaced all grey600 with black icons and 0.54 alpha attribute
highlightColor in dark grey chat bubble now darker than background
Diffstat (limited to 'src/main/java/eu/siacs')
8 files changed, 88 insertions, 28 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/AboutActivity.java b/src/main/java/eu/siacs/conversations/ui/AboutActivity.java index a61b872a..5d51e8b9 100644 --- a/src/main/java/eu/siacs/conversations/ui/AboutActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/AboutActivity.java @@ -1,7 +1,9 @@ package eu.siacs.conversations.ui; import android.app.Activity; +import android.content.res.Resources; import android.os.Bundle; +import android.preference.PreferenceManager; import eu.siacs.conversations.R; @@ -10,6 +12,12 @@ public class AboutActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + Boolean dark = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) + .getString("theme", "light").equals("dark"); + int mTheme = dark ? R.style.ConversationsTheme_Dark : R.style.ConversationsTheme; + setTheme(mTheme); + setContentView(R.layout.activity_about); } } diff --git a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java index a82f8245..a39f735e 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java @@ -559,18 +559,23 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers } } + int ic_notifications = getThemeResource(R.attr.icon_notifications, R.drawable.ic_notifications_black54_24dp); + int ic_notifications_off = getThemeResource(R.attr.icon_notifications_off, R.drawable.ic_notifications_off_black54_24dp); + int ic_notifications_paused = getThemeResource(R.attr.icon_notifications_paused, R.drawable.ic_notifications_paused_black54_24dp); + int ic_notifications_none = getThemeResource(R.attr.icon_notifications_none, R.drawable.ic_notifications_none_black54_24dp); + long mutedTill = mConversation.getLongAttribute(Conversation.ATTRIBUTE_MUTED_TILL,0); if (mutedTill == Long.MAX_VALUE) { mNotifyStatusText.setText(R.string.notify_never); - mNotifyStatusButton.setImageResource(R.drawable.ic_notifications_off_grey600_24dp); + mNotifyStatusButton.setImageResource(ic_notifications_off); } else if (System.currentTimeMillis() < mutedTill) { mNotifyStatusText.setText(R.string.notify_paused); - mNotifyStatusButton.setImageResource(R.drawable.ic_notifications_paused_grey600_24dp); + mNotifyStatusButton.setImageResource(ic_notifications_paused); } else if (mConversation.alwaysNotify()) { - mNotifyStatusButton.setImageResource(R.drawable.ic_notifications_grey600_24dp); + mNotifyStatusButton.setImageResource(ic_notifications); mNotifyStatusText.setText(R.string.notify_on_all_messages); } else { - mNotifyStatusButton.setImageResource(R.drawable.ic_notifications_none_grey600_24dp); + mNotifyStatusButton.setImageResource(ic_notifications_none); mNotifyStatusText.setText(R.string.notify_only_when_highlighted); } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index 2717aa3d..b0974713 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -1569,8 +1569,8 @@ public class ConversationActivity extends XmppActivity return getPreferences().getBoolean("indicate_received", false); } - public boolean useWhiteBackground() { - return getPreferences().getBoolean("use_white_background",false); + public boolean useGreenBackground() { + return getPreferences().getBoolean("use_green_background",true); } protected boolean trustKeysIfNeeded(int requestCode) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 8e0b30a8..53a36525 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -9,6 +9,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentSender.SendIntentException; +import android.content.res.TypedArray; import android.os.Bundle; import android.os.Handler; import android.support.annotation.Nullable; @@ -998,7 +999,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa case DND: return R.drawable.ic_send_text_dnd; default: - return R.drawable.ic_send_text_offline; + return activity.getThemeResource(R.attr.ic_send_text_offline, R.drawable.ic_send_text_offline); } case TAKE_PHOTO: switch (status) { @@ -1011,7 +1012,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa case DND: return R.drawable.ic_send_photo_dnd; default: - return R.drawable.ic_send_photo_offline; + return activity.getThemeResource(R.attr.ic_send_photo_offline, R.drawable.ic_send_photo_offline); } case RECORD_VOICE: switch (status) { @@ -1024,7 +1025,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa case DND: return R.drawable.ic_send_voice_dnd; default: - return R.drawable.ic_send_voice_offline; + return activity.getThemeResource(R.attr.ic_send_voice_offline, R.drawable.ic_send_voice_offline); } case SEND_LOCATION: switch (status) { @@ -1037,7 +1038,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa case DND: return R.drawable.ic_send_location_dnd; default: - return R.drawable.ic_send_location_offline; + return activity.getThemeResource(R.attr.ic_send_location_offline, R.drawable.ic_send_location_offline); } case CANCEL: switch (status) { @@ -1050,7 +1051,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa case DND: return R.drawable.ic_send_cancel_dnd; default: - return R.drawable.ic_send_cancel_offline; + return activity.getThemeResource(R.attr.ic_send_cancel_offline, R.drawable.ic_send_cancel_offline); } case CHOOSE_PICTURE: switch (status) { @@ -1063,10 +1064,10 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa case DND: return R.drawable.ic_send_picture_dnd; default: - return R.drawable.ic_send_picture_offline; + return activity.getThemeResource(R.attr.ic_send_picture_offline, R.drawable.ic_send_picture_offline); } } - return R.drawable.ic_send_text_offline; + return activity.getThemeResource(R.attr.ic_send_text_offline, R.drawable.ic_send_text_offline); } public void updateSendButton() { diff --git a/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java b/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java index 22e12633..17ade702 100644 --- a/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java @@ -14,7 +14,6 @@ import android.preference.Preference; import android.preference.PreferenceCategory; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; -import android.util.Log; import android.widget.Toast; import java.security.KeyStoreException; @@ -46,6 +45,13 @@ public class SettingsActivity extends XmppActivity implements mSettingsFragment = new SettingsFragment(); fm.beginTransaction().replace(android.R.id.content, mSettingsFragment).commit(); } + + this.mTheme = findTheme(); + setTheme(this.mTheme); + + int bgcolor = getPrimaryBackgroundColor(); + getWindow().getDecorView().setBackgroundColor(bgcolor); + } @Override diff --git a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java index c6301643..2d908ff8 100644 --- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java @@ -21,6 +21,7 @@ import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; +import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.Point; @@ -379,6 +380,7 @@ public abstract class XmppActivity extends Activity { super.onCreate(savedInstanceState); metrics = getResources().getDisplayMetrics(); ExceptionHelper.init(getApplicationContext()); + mPrimaryTextColor = getResources().getColor(R.color.black87); mSecondaryTextColor = getResources().getColor(R.color.black54); mTertiaryTextColor = getResources().getColor(R.color.black12); @@ -388,8 +390,18 @@ public abstract class XmppActivity extends Activity { mPrimaryColor = getResources().getColor(R.color.primary); mPrimaryBackgroundColor = getResources().getColor(R.color.grey50); mSecondaryBackgroundColor = getResources().getColor(R.color.grey200); + + if(isDarkTheme()) { + mPrimaryTextColor = getResources().getColor(R.color.white); + mSecondaryTextColor = getResources().getColor(R.color.white70); + mTertiaryTextColor = getResources().getColor(R.color.white12); + mPrimaryBackgroundColor = getResources().getColor(R.color.grey800); + mSecondaryBackgroundColor = getResources().getColor(R.color.grey900); + } + this.mTheme = findTheme(); setTheme(this.mTheme); + this.mUsingEnterKey = usingEnterKey(); mUseSubject = getPreferences().getBoolean("use_subject", true); final ActionBar ab = getActionBar(); @@ -398,6 +410,20 @@ public abstract class XmppActivity extends Activity { } } + public boolean isDarkTheme() { + return getPreferences().getString("theme", "light").equals("dark"); + } + + public int getThemeResource(int r_attr_name, int r_drawable_def) { + int[] attrs = { r_attr_name }; + TypedArray ta = this.getTheme().obtainStyledAttributes(attrs); + + int res = ta.getResourceId(0, r_drawable_def); + ta.recycle(); + + return res; + } + protected boolean isOptimizingBattery() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); @@ -1077,10 +1103,19 @@ public abstract class XmppActivity extends Activity { } protected int findTheme() { - if (getPreferences().getBoolean("use_larger_font", false)) { - return R.style.ConversationsTheme_LargerText; + Boolean dark = getPreferences().getString("theme", "light").equals("dark"); + Boolean larger = getPreferences().getBoolean("use_larger_font", false); + + if(dark) { + if(larger) + return R.style.ConversationsTheme_Dark_LargerText; + else + return R.style.ConversationsTheme_Dark; } else { - return R.style.ConversationsTheme; + if (larger) + return R.style.ConversationsTheme_LargerText; + else + return R.style.ConversationsTheme; } } @@ -1098,6 +1133,7 @@ public abstract class XmppActivity extends Activity { final int width = (size.x < size.y ? size.x : size.y); Bitmap bitmap = createQrCodeBitmap(uri, width); ImageView view = new ImageView(this); + view.setBackgroundColor(Color.WHITE); view.setImageBitmap(bitmap); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(view); diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java index 34c9d7b3..4576dea3 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java @@ -98,15 +98,18 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> { long muted_till = conversation.getLongAttribute(Conversation.ATTRIBUTE_MUTED_TILL,0); if (muted_till == Long.MAX_VALUE) { notificationStatus.setVisibility(View.VISIBLE); - notificationStatus.setImageResource(R.drawable.ic_notifications_off_grey600_24dp); + int ic_notifications_off = activity.getThemeResource(R.attr.icon_notifications_off, R.drawable.ic_notifications_off_black54_24dp); + notificationStatus.setImageResource(ic_notifications_off); } else if (muted_till >= System.currentTimeMillis()) { notificationStatus.setVisibility(View.VISIBLE); - notificationStatus.setImageResource(R.drawable.ic_notifications_paused_grey600_24dp); + int ic_notifications_paused = activity.getThemeResource(R.attr.icon_notifications_paused, R.drawable.ic_notifications_paused_black54_24dp); + notificationStatus.setImageResource(ic_notifications_paused); } else if (conversation.alwaysNotify()) { notificationStatus.setVisibility(View.GONE); } else { notificationStatus.setVisibility(View.VISIBLE); - notificationStatus.setImageResource(R.drawable.ic_notifications_none_grey600_24dp); + int ic_notifications_none = activity.getThemeResource(R.attr.icon_notifications_none, R.drawable.ic_notifications_none_black54_24dp); + notificationStatus.setImageResource(ic_notifications_none); } mTimestamp.setText(UIHelper.readableTimeDifference(activity,conversation.getLatestMessage().getTimeSent())); diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 5ba29802..1ea2c223 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -80,7 +80,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { } }; private boolean mIndicateReceived = false; - private boolean mUseWhiteBackground = false; + private boolean mUseGreenBackground = false; public MessageAdapter(ConversationActivity activity, List<Message> messages) { super(activity, 0, messages); @@ -294,7 +294,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { viewHolder.messageBody.setText(span); } - private void displayTextMessage(final ViewHolder viewHolder, final Message message, boolean darkBackground) { + private void displayTextMessage(final ViewHolder viewHolder, final Message message, boolean darkBackground, int type) { if (viewHolder.download_button != null) { viewHolder.download_button.setVisibility(View.GONE); } @@ -388,7 +388,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { } viewHolder.messageBody.setTextColor(this.getMessageTextColor(darkBackground, true)); viewHolder.messageBody.setLinkTextColor(this.getMessageTextColor(darkBackground, true)); - viewHolder.messageBody.setHighlightColor(activity.getResources().getColor(darkBackground ? R.color.grey800 : R.color.grey500)); + viewHolder.messageBody.setHighlightColor(activity.getResources().getColor(darkBackground ? (type == SENT || !mUseGreenBackground ? R.color.black26 : R.color.grey800) : R.color.grey500)); viewHolder.messageBody.setTypeface(null, Typeface.NORMAL); viewHolder.messageBody.setOnLongClickListener(openContextMenu); } @@ -556,7 +556,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { } } - boolean darkBackground = (type == RECEIVED && (!isInValidSession || !mUseWhiteBackground)); + boolean darkBackground = type == RECEIVED && (!isInValidSession || mUseGreenBackground) || activity.isDarkTheme(); if (type == STATUS) { if ("LOAD_MORE".equals(message.getBody())) { @@ -672,14 +672,15 @@ public class MessageAdapter extends ArrayAdapter<Message> { UIHelper.getFileDescriptionString(activity, message))); } } else { - displayTextMessage(viewHolder, message, darkBackground); + displayTextMessage(viewHolder, message, darkBackground, type); } } if (type == RECEIVED) { if(isInValidSession) { - if (mUseWhiteBackground) { - viewHolder.message_box.setBackgroundResource(R.drawable.message_bubble_received_white); + if (!mUseGreenBackground) { + int bubble = activity.getThemeResource(R.attr.message_bubble_received_monochrome, R.drawable.message_bubble_received_white); + viewHolder.message_box.setBackgroundResource(bubble); } else { viewHolder.message_box.setBackgroundResource(R.drawable.message_bubble_received); } @@ -734,7 +735,7 @@ public class MessageAdapter extends ArrayAdapter<Message> { public void updatePreferences() { this.mIndicateReceived = activity.indicateReceived(); - this.mUseWhiteBackground = activity.useWhiteBackground(); + this.mUseGreenBackground = activity.useGreenBackground(); } public interface OnContactPictureClicked { |