From 3301194e75c526fd127768337312a88edd9e3600 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Thu, 14 Sep 2017 10:15:14 +0200 Subject: [PATCH] Consolidate duplicate Mi2 / Bip icon definition Also handle some more recently added icons --- .../devices/amazfitbip/AmazfitBipIcon.java | 97 --------------- .../devices/miband/MiBand2Service.java | 33 ----- .../devices/miband2/MiBand2Icon.java | 113 ++++++++++++++++++ .../profiles/alertnotification/NewAlert.java | 6 +- .../devices/amazfitbip/AmazfitBipSupport.java | 4 +- .../miband2/Mi2TextNotificationStrategy.java | 5 +- 6 files changed, 121 insertions(+), 137 deletions(-) delete mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/amazfitbip/AmazfitBipIcon.java create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2Icon.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/amazfitbip/AmazfitBipIcon.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/amazfitbip/AmazfitBipIcon.java deleted file mode 100644 index 8f952c27..00000000 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/amazfitbip/AmazfitBipIcon.java +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (C) 2017 Andreas Shimokawa - - This file is part of Gadgetbridge. - - Gadgetbridge is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Gadgetbridge 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . */ - -package nodomain.freeyourgadget.gadgetbridge.devices.amazfitbip; - - -import nodomain.freeyourgadget.gadgetbridge.model.NotificationType; - -public class AmazfitBipIcon { - // icons which are unsure which app they are for are suffixed with _NN - public static final int CHAT = 0; - public static final int PENGUIN_1 = 1; - public static final int MI_CHAT_2 = 2; - public static final int FACEBOOK = 3; - public static final int TWITTER = 4; - public static final int MI_APP_5 = 5; - public static final int SNAPCHAT = 6; - public static final int WHATSAPP = 7; - public static final int RED_WHITE_FIRE_8 = 8; - public static final int CHINESE_9 = 9; - public static final int ALARM_CLOCK = 10; - public static final int APP_11 = 11; - public static final int CAMERA_12 = 12; - public static final int CHAT_BLUE_13 = 13; - public static final int COW_14 = 14; - public static final int CHINESE_15 = 15; - public static final int CHINESE_16 = 16; - public static final int STAR_17 = 17; - public static final int APP_18 = 18; - public static final int CHINESE_19 = 19; - public static final int CHINESE_20 = 20; - public static final int CALENDAR = 21; - public static final int FACEBOOK_MESSENGER = 22; - public static final int WHATSAPP_CALL_23 = 23; - public static final int LINE = 24; - public static final int TELEGRAM = 25; - public static final int KAKAOTALK = 26; - public static final int SKYPE = 27; - public static final int VKONTAKTE = 28; - public static final int POKEMONGO = 29; - public static final int HANGOUTS = 30; - public static final int MI_31 = 31; - public static final int CHINESE_32 = 32; - public static final int CHINESE_33 = 33; - public static final int EMAIL = 34; - public static final int WEATHER = 35; - public static final int HR_WARNING_36 = 36; - - - public static int mapToIconId(NotificationType type) { - switch (type) { - case UNKNOWN: - return APP_11; - case CONVERSATIONS: - return CHAT; - case GENERIC_EMAIL: - return EMAIL; - case GENERIC_NAVIGATION: - return APP_11; - case GENERIC_SMS: - return CHAT; - case GENERIC_CALENDAR: - return CALENDAR; - case FACEBOOK: - return FACEBOOK; - case FACEBOOK_MESSENGER: - return FACEBOOK_MESSENGER; - case RIOT: - return CHAT; - case SIGNAL: - return CHAT_BLUE_13; - case TWITTER: - return TWITTER; - case TELEGRAM: - return TELEGRAM; - case WHATSAPP: - return WHATSAPP; - case GENERIC_ALARM_CLOCK: - return ALARM_CLOCK; - } - return APP_11; - } -} \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Service.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Service.java index 3c4561c4..ccb540cd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Service.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Service.java @@ -110,39 +110,6 @@ public class MiBand2Service { public static final byte[] COMMAND_SET_FITNESS_GOAL_START = new byte[] { 0x10, 0x0, 0x0 }; public static final byte[] COMMAND_SET_FITNESS_GOAL_END = new byte[] { 0, 0 }; - public static final byte ICON_CHAT = 0x00; - public static final byte ICON_PENGUIN = 0x01; - public static final byte ICON_CHAT_MI = 0x02; - public static final byte ICON_FB = 0x03; - public static final byte ICON_TWITTER = 0x04; - public static final byte ICON_MIBAND = 0x05; - public static final byte ICON_SNAPCHAT = 0x06; - public static final byte ICON_WHATSAPP = 0x07; - public static final byte ICON_MANTA = 0x08; - public static final byte ICON_XX0 = 0x09; - public static final byte ICON_ALARM = 0x10; - public static final byte ICON_SHATTERED_GLASS = 0x11; - public static final byte ICON_INSTAGRAM = 0x12; - public static final byte ICON_CHAT_GHOST = 0x13; - public static final byte ICON_COW = 0x14; - public static final byte ICON_XX2 = 0x15; - public static final byte ICON_XX3 = 0x16; - public static final byte ICON_XX4 = 0x17; - public static final byte ICON_XX5 = 0x18; - public static final byte ICON_XX6 = 0x19; - public static final byte ICON_EGALE = 0x1a; - public static final byte ICON_CALENDAR = 0x1b; - public static final byte ICON_XX7 = 0x1c; - public static final byte ICON_PHONE_CALL = 0x1d; - public static final byte ICON_CHAT_LINE = 0x1e; - public static final byte ICON_TELEGRAM = 0x1f; - public static final byte ICON_CHAT_TALK = 0x20; - public static final byte ICON_SKYPE = 0x21; - public static final byte ICON_VK = 0x22; - public static final byte ICON_CIRCLES = 0x23; - public static final byte ICON_HANGOUTS = 0x24; - public static final byte ICON_MI = 0x25; - public static final byte ICON_HIGH_PRIORITY = 0x7; public static byte ENDPOINT_DISPLAY_ITEMS = 0x0a; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2Icon.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2Icon.java new file mode 100644 index 00000000..41518407 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2Icon.java @@ -0,0 +1,113 @@ +/* Copyright (C) 2017 Andreas Shimokawa + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ + +package nodomain.freeyourgadget.gadgetbridge.devices.miband2; + + +import nodomain.freeyourgadget.gadgetbridge.model.NotificationType; + +public class MiBand2Icon { + // icons which are unsure which app they are for are suffixed with _NN + public static final byte WECHAT = 0; + public static final byte PENGUIN_1 = 1; + public static final byte MI_CHAT_2 = 2; + public static final byte FACEBOOK = 3; + public static final byte TWITTER = 4; + public static final byte MI_APP_5 = 5; + public static final byte SNAPCHAT = 6; + public static final byte WHATSAPP = 7; + public static final byte RED_WHITE_FIRE_8 = 8; + public static final byte CHINESE_9 = 9; + public static final byte ALARM_CLOCK = 10; + public static final byte APP_11 = 11; + public static final byte INSTAGRAM = 12; + public static final byte CHAT_BLUE_13 = 13; + public static final byte COW_14 = 14; + public static final byte CHINESE_15 = 15; + public static final byte CHINESE_16 = 16; + public static final byte STAR_17 = 17; + public static final byte APP_18 = 18; + public static final byte CHINESE_19 = 19; + public static final byte CHINESE_20 = 20; + public static final byte CALENDAR = 21; + public static final byte FACEBOOK_MESSENGER = 22; + public static final byte VIBER = 23; + public static final byte LINE = 24; + public static final byte TELEGRAM = 25; + public static final byte KAKAOTALK = 26; + public static final byte SKYPE = 27; + public static final byte VKONTAKTE = 28; + public static final byte POKEMONGO = 29; + public static final byte HANGOUTS = 30; + public static final byte MI_31 = 31; + public static final byte CHINESE_32 = 32; + public static final byte CHINESE_33 = 33; + public static final byte EMAIL = 34; + public static final byte WEATHER = 35; + public static final byte HR_WARNING_36 = 36; + + + public static byte mapToIconId(NotificationType type) { + switch (type) { + case UNKNOWN: + return APP_11; + case CONVERSATIONS: + return WECHAT; + case GENERIC_EMAIL: + return EMAIL; + case GENERIC_NAVIGATION: + return APP_11; + case GENERIC_SMS: + return WECHAT; + case GENERIC_CALENDAR: + return CALENDAR; + case FACEBOOK: + return FACEBOOK; + case FACEBOOK_MESSENGER: + return FACEBOOK_MESSENGER; + case GOOGLE_HANGOUTS: + return HANGOUTS; + case INSTAGRAM: + return INSTAGRAM; + case KAKAO_TALK: + return KAKAOTALK; + case LINE: + return LINE; + case RIOT: + return WECHAT; + case SIGNAL: + return CHAT_BLUE_13; + case TWITTER: + return TWITTER; + case SKYPE: + return SKYPE; + case SNAPCHAT: + return SNAPCHAT; + case TELEGRAM: + return TELEGRAM; + case VIBER: + return VIBER; + case WECHAT: + return WECHAT; + case WHATSAPP: + return WHATSAPP; + case GENERIC_ALARM_CLOCK: + return ALARM_CLOCK; + } + return APP_11; + } +} \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/profiles/alertnotification/NewAlert.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/profiles/alertnotification/NewAlert.java index 3aa43dba..f61ebc06 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/profiles/alertnotification/NewAlert.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/profiles/alertnotification/NewAlert.java @@ -49,7 +49,7 @@ public class NewAlert { private final AlertCategory category; private final int numAlerts; private final String message; - private int customIcon = -1; + private byte customIcon = -1; public NewAlert(AlertCategory category, int /*uint8*/ numAlerts, String /*utf8s*/ message) { this.category = category; @@ -57,7 +57,7 @@ public class NewAlert { this.message = message; } - public NewAlert(AlertCategory category, int /*uint8*/ numAlerts, String /*utf8s*/ message, int customIcon) { + public NewAlert(AlertCategory category, int /*uint8*/ numAlerts, String /*utf8s*/ message, byte customIcon) { this.category = category; this.numAlerts = numAlerts; this.message = message; @@ -76,7 +76,7 @@ public class NewAlert { return message; } - public int getCustomIcon() { + public byte getCustomIcon() { return customIcon; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java index af877879..1c456853 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java @@ -32,7 +32,7 @@ import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.Logging; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl; -import nodomain.freeyourgadget.gadgetbridge.devices.amazfitbip.AmazfitBipIcon; +import nodomain.freeyourgadget.gadgetbridge.devices.miband2.MiBand2Icon; import nodomain.freeyourgadget.gadgetbridge.devices.amazfitbip.AmazfitBipService; import nodomain.freeyourgadget.gadgetbridge.devices.amazfitbip.AmazfitBipWeatherConditions; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBand2Service; @@ -82,7 +82,7 @@ public class AmazfitBipSupport extends MiBand2Support { AlertNotificationProfile profile = new AlertNotificationProfile(this); profile.setMaxLength(230); - int customIconId = AmazfitBipIcon.mapToIconId(notificationSpec.type); + byte customIconId = MiBand2Icon.mapToIconId(notificationSpec.type); AlertCategory alertCategory = AlertCategory.CustomMiBand2; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2TextNotificationStrategy.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2TextNotificationStrategy.java index 8b6d11f6..3affdd36 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2TextNotificationStrategy.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2TextNotificationStrategy.java @@ -21,6 +21,7 @@ import android.support.annotation.NonNull; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBand2Service; import nodomain.freeyourgadget.gadgetbridge.devices.miband.VibrationProfile; +import nodomain.freeyourgadget.gadgetbridge.devices.miband2.MiBand2Icon; import nodomain.freeyourgadget.gadgetbridge.service.btle.BLETypeConversions; import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.GattCharacteristic; @@ -68,9 +69,9 @@ public class Mi2TextNotificationStrategy extends Mi2NotificationStrategy { case Email: return new byte[] { BLETypeConversions.fromUint8(AlertCategory.Email.getId()), BLETypeConversions.fromUint8(numAlerts)}; case InstantMessage: - return new byte[] { BLETypeConversions.fromUint8(AlertCategory.CustomMiBand2.getId()), BLETypeConversions.fromUint8(numAlerts), MiBand2Service.ICON_CHAT}; + return new byte[] { BLETypeConversions.fromUint8(AlertCategory.CustomMiBand2.getId()), BLETypeConversions.fromUint8(numAlerts), MiBand2Icon.WECHAT}; case News: - return new byte[] { BLETypeConversions.fromUint8(AlertCategory.CustomMiBand2.getId()), BLETypeConversions.fromUint8(numAlerts), MiBand2Service.ICON_PENGUIN}; + return new byte[] { BLETypeConversions.fromUint8(AlertCategory.CustomMiBand2.getId()), BLETypeConversions.fromUint8(numAlerts), MiBand2Icon.PENGUIN_1}; } } return new byte[] { BLETypeConversions.fromUint8(AlertCategory.SMS.getId()), BLETypeConversions.fromUint8(numAlerts)};