diff --git a/.gitignore b/.gitignore index 25e1bf3919dec63d6ece33c935dd540897a2700e..b35af4d6a0d7d8b47c1afb18964e9612a83091f5 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ gradle* gradle.properties */version.properties *.sh +signing.gradle \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 44e183dac54170c16ad5ff8304ab57115e8fa3a3..63a2c2fbd1d30942ce556055a0354857cbe4dee3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,16 +2,54 @@ apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' apply plugin: 'me.tatarka.retrolambda' +if (project.hasProperty("storeFile")) { + android { + signingConfigs { + release { + storeFile file(project.property("storeFile")) + storePassword project.property("storePassword") + keyAlias project.property("keyAlias") + keyPassword project.property("keyPassword") + } + } + + buildTypes { + release { + signingConfig signingConfigs.release + } + } + } +} + +def versionPropsFile = file('version.properties') +def versionBuild = 0 +if (versionPropsFile.canRead()) { + def Properties versionProps = new Properties() + + versionProps.load(new FileInputStream(versionPropsFile)) + def runTasks = gradle.startParameter.taskNames + versionBuild = Integer.valueOf(versionProps['VERSION_BUILD']) + if ('assemble' in runTasks || 'assembleRelease' in runTasks || 'aR' in runTasks) { + versionBuild = versionBuild + 1 + } + versionProps['VERSION_BUILD'] = versionBuild.toString() + versionProps.store(versionPropsFile.newWriter(), null) +} else { + throw new GradleException("Could not read version.properties!"+versionPropsFile.toString()) +} + +def rawVersionName = "0.2.0" + android { - compileSdkVersion 'Google Inc.:Google APIs:23' + compileSdkVersion 23 buildToolsVersion "23.0.2" - + defaultConfig { applicationId "de.kuschku.quasseldroid_ng" minSdkVersion 16 targetSdkVersion 23 - versionCode 1 - versionName "0.1.0" + versionCode versionBuild + versionName rawVersionName + " Build #" + versionBuild } buildTypes { release { @@ -21,7 +59,9 @@ android { applicationVariants.all { variant -> variant.outputs.each { output -> - def fileName = output.outputFile.name.replace(".apk", String.format("-%s-build%d.apk", defaultConfig.versionName, versionCode)) + def fileName = output.outputFile.name + .replace(".apk", String.format("-%s-build%d.apk", rawVersionName, versionCode)) + .replace("app-", "QuasselDroidNG-") output.outputFile = new File(output.outputFile.parent, fileName) } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2be27dbc7ed0cc00dbf1bf327d707207494158f5..1b5240e8daa316fd5801f9f9a7bff99ed4aaafc9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,8 +8,7 @@ android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" - android:supportsRtl="true" - android:theme="@style/AppTheme.Light"> + android:supportsRtl="true"> <service android:name=".service.QuasselService" /> @@ -17,7 +16,7 @@ android:name=".ui.chat.ChatActivity" android:label="@string/app_name" android:launchMode="singleTask" - android:theme="@style/Quassel"> + android:theme="@style/AppTheme.Light"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/BacklogFilter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/BacklogFilter.java index ec15e0623d158ba05958ed4ffcae856cdb8fb33a..8890efa051ec1f9541488e20b5f8861444814e66 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/BacklogFilter.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/BacklogFilter.java @@ -1,25 +1,35 @@ package de.kuschku.libquassel.localtypes.backlogmanagers; import android.support.annotation.NonNull; +import android.util.Log; -import com.android.internal.util.Predicate; +import org.joda.time.DateTime; + +import java.util.HashSet; +import java.util.Set; import de.kuschku.libquassel.Client; import de.kuschku.libquassel.message.Message; -import de.kuschku.quasseldroid_ng.ui.AppContext; +import de.kuschku.libquassel.primitives.types.BufferInfo; import de.kuschku.util.observables.callbacks.UICallback; import de.kuschku.util.observables.lists.ObservableSortedList; public class BacklogFilter implements UICallback { @NonNull private final Client client; + private final int bufferId; @NonNull private final ObservableSortedList<Message> unfiltered; @NonNull private final ObservableSortedList<Message> filtered; - public BacklogFilter(@NonNull Client client, @NonNull ObservableSortedList<Message> unfiltered, @NonNull ObservableSortedList<Message> filtered) { + private final Set<Message.Type> filteredTypes = new HashSet<>(); + + private DateTime earliestMessage; + + public BacklogFilter(@NonNull Client client, int bufferId, @NonNull ObservableSortedList<Message> unfiltered, @NonNull ObservableSortedList<Message> filtered) { this.client = client; + this.bufferId = bufferId; this.unfiltered = unfiltered; this.filtered = filtered; } @@ -27,11 +37,66 @@ public class BacklogFilter implements UICallback { @Override public void notifyItemInserted(int position) { Message message = unfiltered.get(position); - if (filterItem(message)) filtered.add(message); + if (!filterItem(message)) filtered.add(message); + if (message.time.isBefore(earliestMessage)) earliestMessage = message.time; + updateDayChangeMessages(); + } + + private void updateDayChangeMessages() { + DateTime now = DateTime.now().withMillisOfDay(0); + int id = -1; + while (now.isAfter(earliestMessage)) { + filtered.add(new Message( + id, + now, + Message.Type.DayChange, + new Message.Flags(false, false, false, false, false), + new BufferInfo( + bufferId, + -1, + BufferInfo.Type.INVALID, + -1, + null + ), + "", + "" + )); + now = now.minusDays(1); + } } private boolean filterItem(Message message) { - return !client.getIgnoreListManager().matches(message); + return client.getIgnoreListManager().matches(message) || filteredTypes.contains(message.type); + } + + public void addFilter(Message.Type type) { + filteredTypes.add(type); + updateRemove(); + } + + public void removeFilter(Message.Type type) { + filteredTypes.remove(type); + updateAdd(); + } + + private void updateRemove() { + for (Message message : unfiltered) { + if (filterItem(message)) { + String simpleName = getClass().getSimpleName(); + Log.e(simpleName, "Filtered: "+message); + filtered.remove(message); + } + } + } + + private void updateAdd() { + for (Message message : unfiltered) { + if (!filterItem(message)) { + String simpleName = getClass().getSimpleName(); + Log.e(simpleName, "Unfiltered: "+message); + filtered.add(message); + } + } } @Override diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/SimpleBacklogManager.java b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/SimpleBacklogManager.java index edfee61b352576452a996e814d3b27cfd7c081e2..2abd74a6d6399ed95c775ae004b8a885bbf2cf0f 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/SimpleBacklogManager.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/SimpleBacklogManager.java @@ -19,11 +19,13 @@ import de.kuschku.libquassel.functions.types.InitDataFunction; import de.kuschku.libquassel.functions.types.SyncFunction; import de.kuschku.libquassel.message.Message; import de.kuschku.libquassel.primitives.types.QVariant; +import de.kuschku.util.AndroidAssert; import de.kuschku.util.observables.AutoScroller; import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper; import de.kuschku.util.observables.lists.ObservableComparableSortedList; import de.kuschku.util.observables.lists.ObservableSortedList; +import static de.kuschku.util.AndroidAssert.*; import static de.kuschku.util.AndroidAssert.assertNotNull; public class SimpleBacklogManager extends BacklogManager<SimpleBacklogManager> { @@ -107,10 +109,11 @@ public class SimpleBacklogManager extends BacklogManager<SimpleBacklogManager> { } private void ensureExisting(@IntRange(from = -1) int bufferId) { + assertNotNull(client); if (backlogs.get(bufferId) == null) { ObservableComparableSortedList<Message> messages = new ObservableComparableSortedList<>(Message.class, true); ObservableComparableSortedList<Message> filteredMessages = new ObservableComparableSortedList<>(Message.class, true); - BacklogFilter backlogFilter = new BacklogFilter(client, messages, filteredMessages); + BacklogFilter backlogFilter = new BacklogFilter(client, bufferId, messages, filteredMessages); messages.addCallback(backlogFilter); backlogs.put(bufferId, messages); filteredBacklogs.put(bufferId, filteredMessages); diff --git a/app/src/main/java/de/kuschku/libquassel/message/Message.java b/app/src/main/java/de/kuschku/libquassel/message/Message.java index cd62255891986c79e4e6cf3d880565cc32849b12..430442535bf36e7dbcb867a02fa3253bb6623e1b 100644 --- a/app/src/main/java/de/kuschku/libquassel/message/Message.java +++ b/app/src/main/java/de/kuschku/libquassel/message/Message.java @@ -75,7 +75,7 @@ public class Message implements ContentComparable<Message> { @Override public int compareTo(@NonNull Message another) { - return this.messageId - another.messageId; + return this.time.compareTo(another.time); } public enum Type { diff --git a/app/src/main/java/de/kuschku/libquassel/protocols/DatastreamPeer.java b/app/src/main/java/de/kuschku/libquassel/protocols/DatastreamPeer.java index ed1322d3fa4879a780ee57e02b3cf1b72925e4bf..b8cea4b7b5431d912e396698c69484b9d458f046 100644 --- a/app/src/main/java/de/kuschku/libquassel/protocols/DatastreamPeer.java +++ b/app/src/main/java/de/kuschku/libquassel/protocols/DatastreamPeer.java @@ -119,6 +119,8 @@ public class DatastreamPeer implements RemotePeer { } public void onEventBackgroundThread(@NonNull SyncFunction func) { + assertNotNull(func); + assertNotNull(connection.getOutputExecutor()); connection.getOutputExecutor().submit(new OutputRunnable<>( VariantVariantListSerializer.<SyncFunction>get(), @@ -127,6 +129,9 @@ public class DatastreamPeer implements RemotePeer { } public void onEventBackgroundThread(@NonNull RpcCallFunction func) { + assertNotNull(func); + + Log.e("TEST", String.valueOf(func)); assertNotNull(connection.getOutputExecutor()); connection.getOutputExecutor().submit(new OutputRunnable<>( VariantVariantListSerializer.<RpcCallFunction>get(), @@ -135,6 +140,8 @@ public class DatastreamPeer implements RemotePeer { } public void onEventBackgroundThread(@NonNull InitRequestFunction func) { + assertNotNull(func); + assertNotNull(connection.getOutputExecutor()); connection.getOutputExecutor().submit(new OutputRunnable<>( VariantVariantListSerializer.<InitRequestFunction>get(), @@ -143,6 +150,8 @@ public class DatastreamPeer implements RemotePeer { } public void onEventBackgroundThread(@NonNull InitDataFunction func) { + assertNotNull(func); + assertNotNull(connection.getOutputExecutor()); connection.getOutputExecutor().submit(new OutputRunnable<>( VariantVariantListSerializer.<InitDataFunction>get(), @@ -151,6 +160,8 @@ public class DatastreamPeer implements RemotePeer { } public void onEventBackgroundThread(@NonNull Heartbeat func) { + assertNotNull(func); + assertNotNull(connection.getOutputExecutor()); connection.getOutputExecutor().submit(new OutputRunnable<>( VariantVariantListSerializer.<InitDataFunction>get(), @@ -159,6 +170,8 @@ public class DatastreamPeer implements RemotePeer { } public void onEventBackgroundThread(@NonNull HeartbeatReply func) { + assertNotNull(func); + assertNotNull(connection.getOutputExecutor()); connection.getOutputExecutor().submit(new OutputRunnable<>( VariantVariantListSerializer.<InitDataFunction>get(), @@ -167,6 +180,8 @@ public class DatastreamPeer implements RemotePeer { } public void onEventBackgroundThread(@NonNull HandshakeFunction func) { + assertNotNull(func); + assertNotNull(connection.getOutputExecutor()); Map<String, QVariant> variantMap = MessageTypeRegistry.toVariantMap(func.data).data; assertNotNull(variantMap); diff --git a/app/src/main/java/de/kuschku/libquassel/protocols/RemotePeer.java b/app/src/main/java/de/kuschku/libquassel/protocols/RemotePeer.java index 95e3fc7fd444dfc2d86ea9a9409a6f183f618662..7abea3188f57478d00f3b10679f0b9ac13a59f1c 100644 --- a/app/src/main/java/de/kuschku/libquassel/protocols/RemotePeer.java +++ b/app/src/main/java/de/kuschku/libquassel/protocols/RemotePeer.java @@ -6,6 +6,8 @@ import java.io.IOException; import java.nio.ByteBuffer; import de.kuschku.libquassel.functions.types.HandshakeFunction; +import de.kuschku.libquassel.functions.types.Heartbeat; +import de.kuschku.libquassel.functions.types.HeartbeatReply; import de.kuschku.libquassel.functions.types.InitDataFunction; import de.kuschku.libquassel.functions.types.InitRequestFunction; import de.kuschku.libquassel.functions.types.RpcCallFunction; @@ -26,6 +28,10 @@ public interface RemotePeer { void onEventBackgroundThread(@NonNull HandshakeFunction func); + void onEventBackgroundThread(@NonNull Heartbeat func); + + void onEventBackgroundThread(@NonNull HeartbeatReply func); + void processMessage() throws IOException; @NonNull diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/AppTheme.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/AppTheme.java index c24ebeff6a3f1532eb58fa5ded378723bf7e45ec..6753fd6220dd3de7a8aaf34243ef4d9c3abd9c11 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/AppTheme.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/AppTheme.java @@ -5,7 +5,8 @@ import android.support.annotation.StyleRes; import de.kuschku.quasseldroid_ng.R; public enum AppTheme { - QUASSEL(R.style.Quassel), + QUASSEL_LIGHT(R.style.Quassel_Light), + QUASSEL_DARK(R.style.Quassel_Dark), MATERIAL_DARK(R.style.Material_Dark), MATERIAL_LIGHT(R.style.Material_Light); @@ -24,9 +25,10 @@ public enum AppTheme { switch (s) { case "MATERIAL_DARK": return MATERIAL_DARK; case "MATERIAL_LIGHT": return MATERIAL_LIGHT; + case "QUASSEL_DARK": return QUASSEL_DARK; default: - case "QUASSEL": return QUASSEL; + case "QUASSEL_LIGHT": return QUASSEL_LIGHT; } } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java index 50205398eaa4daac23467498a15f5136d0edee41..7b70ddd74acdfd5ba3462503b6f22a1523561023 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java @@ -1,7 +1,6 @@ package de.kuschku.quasseldroid_ng.ui.chat.chatview; import android.content.Context; -import android.content.SharedPreferences; import android.graphics.Typeface; import android.support.annotation.ColorInt; import android.support.annotation.NonNull; @@ -11,18 +10,15 @@ import android.util.Log; import org.joda.time.format.DateTimeFormatter; -import de.kuschku.libquassel.Client; import de.kuschku.libquassel.localtypes.Buffer; import de.kuschku.libquassel.message.Message; -import de.kuschku.quasseldroid_ng.BuildConfig; import de.kuschku.quasseldroid_ng.R; import de.kuschku.quasseldroid_ng.ui.AppContext; -import de.kuschku.quasseldroid_ng.ui.AppTheme; import de.kuschku.util.annotationbind.AutoBinder; import de.kuschku.util.annotationbind.AutoString; import de.kuschku.util.irc.IrcFormatHelper; import de.kuschku.util.irc.IrcUserUtils; -import de.kuschku.util.ui.DateFormatHelper; +import de.kuschku.util.ui.DateTimeFormatHelper; import de.kuschku.util.ui.SpanFormatter; import de.kuschku.util.ui.ThemeUtil; @@ -30,8 +26,6 @@ import static de.kuschku.util.AndroidAssert.assertNotNull; @UiThread public class ChatMessageRenderer { - @NonNull - private final DateTimeFormatter format; @NonNull private final FormatStrings strings; @@ -45,7 +39,6 @@ public class ChatMessageRenderer { private AppContext context; public ChatMessageRenderer(@NonNull Context ctx, @NonNull AppContext context) { - this.format = DateFormatHelper.getTimeFormatter(ctx); this.strings = new FormatStrings(ctx); this.context = context; setTheme(context.getThemeUtil()); @@ -211,7 +204,9 @@ public class ChatMessageRenderer { private void onBindDayChange(@NonNull MessageViewHolder holder, @NonNull Message message) { applyStyle(holder, serverStyle, highlightStyle, message.flags.Highlight); - holder.content.setText(message.toString()); + holder.content.setText(strings.formatDayChange( + context.getThemeUtil().formatter.getLongDateFormatter().print(message.time) + )); } private void onBindTopic(@NonNull MessageViewHolder holder, @NonNull Message message) { @@ -235,7 +230,7 @@ public class ChatMessageRenderer { } public void onBind(@NonNull MessageViewHolder holder, @NonNull Message message) { - holder.time.setText(format.print(message.time)); + holder.time.setText(context.getThemeUtil().formatter.getTimeFormatter().print(message.time)); switch (message.type) { case Plain: onBindPlain(holder, message); diff --git a/app/src/main/java/de/kuschku/util/ui/DateFormatHelper.java b/app/src/main/java/de/kuschku/util/ui/DateFormatHelper.java deleted file mode 100644 index 172e899b056511ed478b0f4eae6983bd6a2d3a73..0000000000000000000000000000000000000000 --- a/app/src/main/java/de/kuschku/util/ui/DateFormatHelper.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.kuschku.util.ui; - -import android.content.Context; -import android.support.annotation.NonNull; - -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; - -import java.text.SimpleDateFormat; - -public class DateFormatHelper { - private DateFormatHelper() { - - } - - @NonNull - public static DateTimeFormatter getTimeFormatter(Context ctx) { - return DateTimeFormat.forPattern(((SimpleDateFormat) android.text.format.DateFormat.getTimeFormat(ctx)).toLocalizedPattern()); - } -} diff --git a/app/src/main/java/de/kuschku/util/ui/DateTimeFormatHelper.java b/app/src/main/java/de/kuschku/util/ui/DateTimeFormatHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..bca319fadcc686c738b3bdfdfb8834d0c1707e2a --- /dev/null +++ b/app/src/main/java/de/kuschku/util/ui/DateTimeFormatHelper.java @@ -0,0 +1,58 @@ +package de.kuschku.util.ui; + +import android.content.Context; +import android.support.annotation.NonNull; + +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; + +import java.text.SimpleDateFormat; + +public class DateTimeFormatHelper { + @NonNull + private final Context context; + + public DateTimeFormatHelper(@NonNull Context context) { + this.context = context; + } + + @NonNull + public DateTimeFormatter getTimeFormatter() { + return getTimeFormatter(context); + } + + @NonNull + public DateTimeFormatter getDateFormatter() { + return getDateFormatter(context); + } + + @NonNull + public DateTimeFormatter getLongDateFormatter() { + return getLongDateFormatter(context); + } + + @NonNull + public DateTimeFormatter getMediumDateFormatter() { + return getMediumDateFormatter(context); + } + + @NonNull + public static DateTimeFormatter getTimeFormatter(Context ctx) { + return DateTimeFormat.forPattern(((SimpleDateFormat) android.text.format.DateFormat.getTimeFormat(ctx)).toLocalizedPattern()); + } + + @NonNull + public static DateTimeFormatter getDateFormatter(Context ctx) { + return DateTimeFormat.forPattern(((SimpleDateFormat) android.text.format.DateFormat.getDateFormat(ctx)).toLocalizedPattern()); + } + + @NonNull + public static DateTimeFormatter getLongDateFormatter(Context ctx) { + return DateTimeFormat.forPattern(((SimpleDateFormat) android.text.format.DateFormat.getLongDateFormat(ctx)).toLocalizedPattern()); + } + + @NonNull + public static DateTimeFormatter getMediumDateFormatter(Context ctx) { + return DateTimeFormat.forPattern(((SimpleDateFormat) android.text.format.DateFormat.getMediumDateFormat(ctx)).toLocalizedPattern()); + } +} diff --git a/app/src/main/java/de/kuschku/util/ui/ThemeUtil.java b/app/src/main/java/de/kuschku/util/ui/ThemeUtil.java index fe20887ee23fb75606361b44d8990aafa1f81ccc..8e4732d42000d57085953e1701da9c136ce3a3e8 100644 --- a/app/src/main/java/de/kuschku/util/ui/ThemeUtil.java +++ b/app/src/main/java/de/kuschku/util/ui/ThemeUtil.java @@ -14,13 +14,16 @@ import de.kuschku.util.annotationbind.AutoColor; public class ThemeUtil { @NonNull public final Colors colors = new Colors(); + public DateTimeFormatHelper formatter; public ThemeUtil(@NonNull Context ctx) { initColors(new ContextThemeWrapper(ctx, ctx.getTheme())); + formatter = new DateTimeFormatHelper(ctx); } public ThemeUtil(@NonNull Context ctx, @NonNull AppTheme theme) { initColors(new ContextThemeWrapper(ctx, theme.themeId)); + formatter = new DateTimeFormatHelper(ctx); } @UiThread @@ -37,6 +40,18 @@ public class ThemeUtil { @ColorInt public int transparent; + @AutoColor(R.attr.colorPrimary) + @ColorInt + public int colorPrimary; + + @AutoColor(R.attr.colorPrimaryDark) + @ColorInt + public int colorPrimaryDark; + + @AutoColor(R.attr.colorAccent) + @ColorInt + public int colorAccent; + @AutoColor({R.attr.senderColor0, R.attr.senderColor1, R.attr.senderColor2, R.attr.senderColor3, R.attr.senderColor4, R.attr.senderColor5, R.attr.senderColor6, R.attr.senderColor7, R.attr.senderColor8, R.attr.senderColor9, R.attr.senderColorA, R.attr.senderColorB, diff --git a/app/src/main/res/layout/slider_main.xml b/app/src/main/res/layout/slider_main.xml index bc50b355b83c97bda299a5733a7b2796160cf58c..4c7f5c4f76fe7098e780549e71000c79bbeb87c1 100644 --- a/app/src/main/res/layout/slider_main.xml +++ b/app/src/main/res/layout/slider_main.xml @@ -7,7 +7,7 @@ <LinearLayout android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" - android:background="?attr/chatlineBackground" + android:background="?attr/colorBackgroundCard" android:orientation="horizontal"> <android.support.v7.widget.AppCompatEditText @@ -40,5 +40,5 @@ android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" - android:background="?attr/chatlineBackground" /> + android:background="?attr/colorBackgroundSecondary" /> </LinearLayout> diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 7ae52ee34b11f17e80d3f5a0e5ff982c11edd8ef..6e98e96b5942fb6c04953f9f45806c8ea3b239c4 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -1,9 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <attr name="messagesBackground" format="reference" /> - <attr name="chatlineBackground" format="reference" /> - <attr name="dividerColor" format="reference" /> - <!-- sender colors --> <attr name="senderColor0" format="color" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 61e55ba3d51243f4e17e95c39a3888b6f435b536..d52c48ef3ce6f314e5b454e79dc779c87ecfcf54 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,9 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> <resources> + <!-- <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color> - - <color name="messagesBackgroundLight">#f5f5f5</color> - <color name="messagesBackgroundDark">@android:color/transparent</color> + --> + <color name="colorPrimary">#0271B3</color> + <color name="colorPrimaryDark">#02588c</color> + <color name="colorAccent">#ffeb3b</color> </resources> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 569a42b14eea0e4461fd1cd28b0643b39e2d803b..ef43644007a894a82a628aeb6b15011f346183ce 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -6,10 +6,6 @@ <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> - - <item name="dividerColor">@color/material_drawer_dark_divider</item> - <item name="messagesBackground">@color/messagesBackgroundDark</item> - <item name="chatlineBackground">@color/md_dark_cards</item> </style> <style name="AppTheme.Light" parent="MaterialDrawerTheme.Light.DarkToolbar.TranslucentStatus"> @@ -17,10 +13,6 @@ <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> - - <item name="dividerColor">@color/material_drawer_divider</item> - <item name="messagesBackground">@color/messagesBackgroundLight</item> - <item name="chatlineBackground">@color/md_light_cards</item> </style> <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 3c39fb034f85c8796f4245b39a9417ba066c25fb..e82a73a14b2c28bb52a57643951962213a410707 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - - <style name="Material_Dark" parent="AppTheme"> + <style name="Material_Light" parent="AppTheme.Light"> <item name="senderColor0">@color/md_pink_500</item> <item name="senderColor1">@color/md_purple_500</item> <item name="senderColor2">@color/md_red_500</item> @@ -19,22 +18,39 @@ <item name="senderColorE">@color/md_amber_500</item> <item name="senderColorF">@color/md_blue_500</item> - <item name="colorForeground">@color/md_dark_primary_text</item> - <item name="colorForegroundHighlight">@color/md_dark_primary_text</item> - <item name="colorForegroundSecondary">@color/md_dark_secondary</item> - <item name="colorForegroundAction">#7986cb</item> + <item name="mircColor0">#f2f2f2</item> + <item name="mircColor1">#2c2c2c</item> + <item name="mircColor2">#2467be</item> + <item name="mircColor3">#568a34</item> + <item name="mircColor4">#ec5354</item> + <item name="mircColor5">#c3282d</item> + <item name="mircColor6">#6a2398</item> + <item name="mircColor7">#fc8e23</item> + <item name="mircColor8">#fc9f25</item> + <item name="mircColor9">#8cc251</item> + <item name="mircColorA">#17838e</item> + <item name="mircColorB">#39c6d9</item> + <item name="mircColorC">#6bb6f4</item> + <item name="mircColorD">#b96ac6</item> + <item name="mircColorE">#545454</item> + <item name="mircColorF">#e0e0e0</item> - <item name="colorBackground">@color/md_dark_background</item> + <item name="colorForeground">@color/md_light_primary_text</item> + <item name="colorForegroundHighlight">@color/md_light_primary_text</item> + <item name="colorForegroundSecondary">@color/md_light_secondary</item> + <item name="colorForegroundAction">#1a237e</item> + + <item name="colorBackground">@color/md_light_background</item> <item name="colorBackgroundHighlight">#ff8811</item> <item name="colorBackgroundSecondary">@android:color/transparent</item> - <item name="colorBackgroundCard">@color/md_dark_cards</item> + <item name="colorBackgroundCard">@color/md_light_cards</item> <item name="colorTintActivity">#88cc33</item> <item name="colorTintMessage">#2277dd</item> <item name="colorTintHighlight">#ff8811</item> </style> - <style name="Material_Light" parent="AppTheme"> + <style name="Material_Dark" parent="AppTheme"> <item name="senderColor0">@color/md_pink_500</item> <item name="senderColor1">@color/md_purple_500</item> <item name="senderColor2">@color/md_red_500</item> @@ -52,22 +68,39 @@ <item name="senderColorE">@color/md_amber_500</item> <item name="senderColorF">@color/md_blue_500</item> - <item name="colorForeground">@color/md_light_primary_text</item> - <item name="colorForegroundHighlight">@color/md_light_primary_text</item> - <item name="colorForegroundSecondary">@color/md_light_secondary</item> - <item name="colorForegroundAction">#1a237e</item> + <item name="mircColor0">#f2f2f2</item> + <item name="mircColor1">#2c2c2c</item> + <item name="mircColor2">#2467be</item> + <item name="mircColor3">#568a34</item> + <item name="mircColor4">#ec5354</item> + <item name="mircColor5">#c3282d</item> + <item name="mircColor6">#6a2398</item> + <item name="mircColor7">#fc8e23</item> + <item name="mircColor8">#fc9f25</item> + <item name="mircColor9">#8cc251</item> + <item name="mircColorA">#17838e</item> + <item name="mircColorB">#39c6d9</item> + <item name="mircColorC">#6bb6f4</item> + <item name="mircColorD">#b96ac6</item> + <item name="mircColorE">#545454</item> + <item name="mircColorF">#e0e0e0</item> - <item name="colorBackground">@color/md_light_background</item> + <item name="colorForeground">@color/md_dark_primary_text</item> + <item name="colorForegroundHighlight">@color/md_dark_primary_text</item> + <item name="colorForegroundSecondary">@color/md_dark_secondary</item> + <item name="colorForegroundAction">#7986cb</item> + + <item name="colorBackground">@color/md_dark_background</item> <item name="colorBackgroundHighlight">#ff8811</item> <item name="colorBackgroundSecondary">@android:color/transparent</item> - <item name="colorBackgroundCard">@color/md_light_cards</item> + <item name="colorBackgroundCard">@color/md_dark_cards</item> <item name="colorTintActivity">#88cc33</item> <item name="colorTintMessage">#2277dd</item> <item name="colorTintHighlight">#ff8811</item> </style> - <style name="Quassel" parent="AppTheme.Light"> + <style name="Quassel_Light" parent="AppTheme.Light"> <item name="senderColor0">#e90d7f</item> <item name="senderColor1">#8e55e9</item> <item name="senderColor2">#b30e0e</item> @@ -116,4 +149,54 @@ <item name="colorTintMessage">#2277dd</item> <item name="colorTintHighlight">#ff8811</item> </style> + + <style name="Quassel_Dark" parent="AppTheme"> + <item name="senderColor0">#e90d7f</item> + <item name="senderColor1">#8e55e9</item> + <item name="senderColor2">#b30e0e</item> + <item name="senderColor3">#17b339</item> + <item name="senderColor4">#58afb3</item> + <item name="senderColor5">#9d54b3</item> + <item name="senderColor6">#b39775</item> + <item name="senderColor7">#3176b3</item> + <item name="senderColor8">#e90d7f</item> + <item name="senderColor9">#8e55e9</item> + <item name="senderColorA">#b30e0e</item> + <item name="senderColorB">#17b339</item> + <item name="senderColorC">#58afb3</item> + <item name="senderColorD">#9d54b3</item> + <item name="senderColorE">#b39775</item> + <item name="senderColorF">#3176b3</item> + + <item name="mircColor0">#ffffff</item> + <item name="mircColor1">#000000</item> + <item name="mircColor2">#000080</item> + <item name="mircColor3">#008000</item> + <item name="mircColor4">#ff0000</item> + <item name="mircColor5">#800000</item> + <item name="mircColor6">#800080</item> + <item name="mircColor7">#ffa500</item> + <item name="mircColor8">#ffff00</item> + <item name="mircColor9">#00ff00</item> + <item name="mircColorA">#008080</item> + <item name="mircColorB">#00ffff</item> + <item name="mircColorC">#4169e1</item> + <item name="mircColorD">#ff00ff</item> + <item name="mircColorE">#808080</item> + <item name="mircColorF">#c0c0c0</item> + + <item name="colorForeground">@color/md_dark_primary_text</item> + <item name="colorForegroundHighlight">@color/md_dark_primary_text</item> + <item name="colorForegroundSecondary">@color/md_dark_secondary</item> + <item name="colorForegroundAction">#7986cb</item> + + <item name="colorBackground">@color/md_dark_background</item> + <item name="colorBackgroundHighlight">#ff8811</item> + <item name="colorBackgroundSecondary">@android:color/transparent</item> + <item name="colorBackgroundCard">@color/md_dark_cards</item> + + <item name="colorTintActivity">#88cc33</item> + <item name="colorTintMessage">#2277dd</item> + <item name="colorTintHighlight">#ff8811</item> + </style> </resources>