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

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2020-10-28 17:33:18 +0300
committerStefan Niedermann <info@niedermann.it>2020-10-28 17:33:18 +0300
commit14cc414704fba83c9570d448b8d0f38c184a17ad (patch)
tree6f1b3f6ca2fbf133dd83aa6c7bb60e6e7df561c9 /app/src/main
parent9343be904e3daa3ead65bb79f0447bb017e884f5 (diff)
Use ColorUtil from android-commons where possible
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java45
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/json/JsonColorSerializer.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/model/Board.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/model/Label.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java74
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/PickStackActivity.java6
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/PushNotificationActivity.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java6
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsViewHolder.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDatePickerDialog.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedTimePickerDialog.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java11
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsAdapter.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/view/labelchip/LabelChip.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/util/ColorUtil.java186
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/util/DeckColorUtil.java59
21 files changed, 159 insertions, 284 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java
index 2add622f0..c552a7f9e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java
@@ -14,6 +14,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.exceptions.DeckException;
import it.niedermann.nextcloud.deck.model.AccessControl;
@@ -39,7 +40,6 @@ import it.niedermann.nextcloud.deck.model.ocs.projects.OcsProjectResource;
import it.niedermann.nextcloud.deck.model.ocs.user.GroupMemberUIDs;
import it.niedermann.nextcloud.deck.model.ocs.user.OcsUser;
import it.niedermann.nextcloud.deck.model.ocs.user.OcsUserList;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
import static it.niedermann.nextcloud.deck.exceptions.DeckException.Hint.CAPABILITIES_VERSION_NOT_PARSABLE;
import static it.niedermann.nextcloud.deck.exceptions.TraceableException.makeTraceableIfFails;
@@ -117,6 +117,7 @@ public class JsonToEntityParser {
}, obj);
return ocsUserList;
}
+
private static OcsUser parseSingleOcsUser(JsonObject obj) {
DeckLog.verbose(obj.toString());
OcsUser ocsUser = new OcsUser();
@@ -124,10 +125,10 @@ public class JsonToEntityParser {
JsonElement data = obj.get("ocs").getAsJsonObject().get("data");
if (!data.isJsonNull()) {
JsonObject user = data.getAsJsonObject();
- if (user.has("id")){
+ if (user.has("id")) {
ocsUser.setId(user.get("id").getAsString());
}
- if (user.has("displayname")){
+ if (user.has("displayname")) {
ocsUser.setDisplayName(user.get("displayname").getAsString());
}
}
@@ -135,6 +136,7 @@ public class JsonToEntityParser {
}, obj);
return ocsUser;
}
+
private static OcsProjectList parseOcsProjectList(JsonObject obj) {
DeckLog.verbose(obj.toString());
OcsProjectList projectList = new OcsProjectList();
@@ -150,10 +152,10 @@ public class JsonToEntityParser {
project.setName(getNullAsEmptyString(jsonObject.get("name")));
project.setResources(new ArrayList<>());
JsonElement jsonResources = jsonObject.get("resources");
- if (jsonResources != null && jsonResources.isJsonArray()){
+ if (jsonResources != null && jsonResources.isJsonArray()) {
JsonArray resourcesArray = jsonResources.getAsJsonArray();
for (JsonElement resourceElement : resourcesArray) {
- if (resourceElement.isJsonObject()){
+ if (resourceElement.isJsonObject()) {
OcsProjectResource resource = parseOcsProjectResource(resourceElement.getAsJsonObject());
resource.setProjectId(project.getId());
project.getResources().add(resource);
@@ -176,7 +178,7 @@ public class JsonToEntityParser {
if (obj.has("id")) {
String idString = obj.get("id").getAsString();
if (idString != null && idString.trim().length() > 0) {
- if (idString.matches("[0-9]+")){
+ if (idString.matches("[0-9]+")) {
resource.setId(Long.parseLong(idString.trim()));
} else {
resource.setIdString(idString);
@@ -196,15 +198,15 @@ public class JsonToEntityParser {
resource.setIconUrl(getNullAsEmptyString(obj.get("iconUrl")));
}
if (obj.has("path")) {
- resource.setPath(obj.get("path").getAsString());
+ resource.setPath(obj.get("path").getAsString());
}
if (obj.has("mimetype")) {
- resource.setMimetype(obj.get("mimetype").getAsString());
+ resource.setMimetype(obj.get("mimetype").getAsString());
}
if (obj.has("preview-available")) {
- resource.setPreviewAvailable(obj.get("preview-available").getAsBoolean());
+ resource.setPreviewAvailable(obj.get("preview-available").getAsBoolean());
} else {
- resource.setPreviewAvailable(false);
+ resource.setPreviewAvailable(false);
}
}, obj);
@@ -242,17 +244,18 @@ public class JsonToEntityParser {
deckComment.setActorType(commentJson.get("actorType").getAsString());
deckComment.setCreationDateTime(getTimestampFromString(commentJson.get("creationDateTime")));
- if (commentJson.has("replyTo")){
- JsonObject replyTo = commentJson.get("replyTo").getAsJsonObject();
- deckComment.setParentId(replyTo.get("id").getAsLong());
- }
+ if (commentJson.has("replyTo")) {
+ JsonObject replyTo = commentJson.get("replyTo").getAsJsonObject();
+ deckComment.setParentId(replyTo.get("id").getAsLong());
+ }
- JsonElement mentions = commentJson.get("mentions");
- if (mentions != null && mentions.isJsonArray()) {
- for (JsonElement mention : mentions.getAsJsonArray()) {
- deckComment.addMention(parseMention(mention));
+ JsonElement mentions = commentJson.get("mentions");
+ if (mentions != null && mentions.isJsonArray()) {
+ for (JsonElement mention : mentions.getAsJsonArray()) {
+ deckComment.addMention(parseMention(mention));
+ }
}
- }}, data);
+ }, data);
return deckComment;
}
@@ -480,7 +483,7 @@ public class JsonToEntityParser {
protected static User parseUser(JsonElement userElement) {
DeckLog.verbose(userElement.toString());
- if (userElement.isJsonNull()){
+ if (userElement.isJsonNull()) {
return null;
}
User user = new User();
@@ -560,7 +563,7 @@ public class JsonToEntityParser {
String rawString = getNullAsEmptyString(element.get(field));
try {
if (!rawString.trim().isEmpty()) {
- String colorAsString = ColorUtil.formatColorToParsableHexString(rawString);
+ String colorAsString = ColorUtil.INSTANCE.formatColorToParsableHexString(rawString);
return Color.parseColor(colorAsString);
}
} catch (Exception e) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/json/JsonColorSerializer.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/json/JsonColorSerializer.java
index 9ce238236..5169e7f5e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/api/json/JsonColorSerializer.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/json/JsonColorSerializer.java
@@ -6,7 +6,7 @@ import com.google.gson.stream.JsonWriter;
import java.io.IOException;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
+import it.niedermann.android.util.ColorUtil;
public class JsonColorSerializer extends TypeAdapter<Integer> {
@Override
@@ -14,7 +14,7 @@ public class JsonColorSerializer extends TypeAdapter<Integer> {
if (value == null) {
out.nullValue();
} else {
- out.value(ColorUtil.intColorToHexString(value));
+ out.value(ColorUtil.INSTANCE.intColorToHexString(value));
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/model/Board.java b/app/src/main/java/it/niedermann/nextcloud/deck/model/Board.java
index ba1abe3c1..c5cf7c843 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/model/Board.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/model/Board.java
@@ -13,11 +13,11 @@ import com.google.gson.annotations.JsonAdapter;
import java.io.Serializable;
import java.util.Date;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.api.json.JsonColorSerializer;
import it.niedermann.nextcloud.deck.model.enums.DBStatus;
import it.niedermann.nextcloud.deck.model.interfaces.AbstractRemoteEntity;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
@Entity(
inheritSuperIndices = true,
@@ -91,7 +91,7 @@ public class Board extends AbstractRemoteEntity implements Serializable {
public void setColor(String color) {
try {
- setColor(Color.parseColor(ColorUtil.formatColorToParsableHexString(color)));
+ setColor(Color.parseColor(ColorUtil.INSTANCE.formatColorToParsableHexString(color)));
} catch (Exception e) {
DeckLog.logError(e);
setColor(Color.GRAY);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/model/Label.java b/app/src/main/java/it/niedermann/nextcloud/deck/model/Label.java
index 6ae40a5ec..da24edb5a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/model/Label.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/model/Label.java
@@ -13,10 +13,10 @@ import com.google.gson.annotations.JsonAdapter;
import java.io.Serializable;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.api.json.JsonColorSerializer;
import it.niedermann.nextcloud.deck.model.interfaces.AbstractRemoteEntity;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
@Entity(inheritSuperIndices = true,
indices = {@Index("boardId"), @Index(value = {"boardId", "title"}, unique = true, name = "idx_label_title_unique")},
@@ -68,7 +68,7 @@ public class Label extends AbstractRemoteEntity implements Serializable {
public void setColor(String color) {
try {
- setColor(Color.parseColor(ColorUtil.formatColorToParsableHexString(color)));
+ setColor(Color.parseColor(ColorUtil.INSTANCE.formatColorToParsableHexString(color)));
} catch (Exception e) {
DeckLog.logError(e);
setColor(Color.GRAY);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java
index cb8bb558f..d2106f03b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java
@@ -14,6 +14,7 @@ import androidx.room.TypeConverters;
import androidx.room.migration.Migration;
import androidx.sqlite.db.SupportSQLiteDatabase;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.api.LastSyncUtil;
import it.niedermann.nextcloud.deck.model.AccessControl;
@@ -66,7 +67,6 @@ import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao.projects.Oc
import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao.projects.OcsProjectResourceDao;
import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao.widgets.SingleCardWidgetModelDao;
import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao.widgets.StackWidgetModelDao;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
@Database(
entities = {
@@ -275,9 +275,9 @@ public abstract class DeckDatabase extends RoomDatabase {
String suffix = "_new";
{
String tableName = "Account";
- database.execSQL("CREATE TABLE `"+tableName+suffix+"` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT NOT NULL, `userName` TEXT NOT NULL, `url` TEXT NOT NULL, " +
+ database.execSQL("CREATE TABLE `" + tableName + suffix + "` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT NOT NULL, `userName` TEXT NOT NULL, `url` TEXT NOT NULL, " +
"`color` INTEGER NOT NULL DEFAULT 0, `textColor` INTEGER NOT NULL DEFAULT 0, `serverDeckVersion` TEXT NOT NULL DEFAULT '0.6.4', `maintenanceEnabled` INTEGER NOT NULL DEFAULT 0, `etag` TEXT)");
- Cursor cursor = database.query("select * from `"+tableName+"`");
+ Cursor cursor = database.query("select * from `" + tableName + "`");
while (cursor.moveToNext()) {
String colorAsString1 = cursor.getString(4); // color
String colorAsString2 = cursor.getString(5); // textColor
@@ -285,44 +285,44 @@ public abstract class DeckDatabase extends RoomDatabase {
@ColorInt Integer color1 = null;
@ColorInt Integer color2 = null;
try {
- color1 = Color.parseColor(ColorUtil.formatColorToParsableHexString(colorAsString1));
- color2 = Color.parseColor(ColorUtil.formatColorToParsableHexString(colorAsString2));
+ color1 = Color.parseColor(ColorUtil.INSTANCE.formatColorToParsableHexString(colorAsString1));
+ color2 = Color.parseColor(ColorUtil.INSTANCE.formatColorToParsableHexString(colorAsString2));
} catch (Exception e) {
color1 = Color.GRAY;
color2 = Color.GRAY;
}
- database.execSQL("Insert into `"+tableName+suffix+"` VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", new Object[] {
+ database.execSQL("Insert into `" + tableName + suffix + "` VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", new Object[]{
cursor.getLong(0), cursor.getString(1), cursor.getString(2), cursor.getString(3),
- color1, color2, cursor.getString(6), cursor.getInt(7), cursor.getString(8)});
+ color1, color2, cursor.getString(6), cursor.getInt(7), cursor.getString(8)});
}
- database.execSQL("DROP TABLE `"+ tableName +"`");
- database.execSQL("ALTER TABLE `"+tableName+suffix+"` RENAME TO `"+tableName+"`");
- database.execSQL("CREATE UNIQUE INDEX `index_Account_name` ON `"+tableName+"` (`name`)");
- database.execSQL("UPDATE SQLITE_SEQUENCE SET seq = (select max(id) from "+tableName+") WHERE name = ?", new Object[] {tableName});
+ database.execSQL("DROP TABLE `" + tableName + "`");
+ database.execSQL("ALTER TABLE `" + tableName + suffix + "` RENAME TO `" + tableName + "`");
+ database.execSQL("CREATE UNIQUE INDEX `index_Account_name` ON `" + tableName + "` (`name`)");
+ database.execSQL("UPDATE SQLITE_SEQUENCE SET seq = (select max(id) from " + tableName + ") WHERE name = ?", new Object[]{tableName});
}
{
String tableName = "Board";
- database.execSQL("CREATE TABLE `"+tableName+suffix+"` (`localId` INTEGER PRIMARY KEY AUTOINCREMENT, `accountId` INTEGER NOT NULL, `id` INTEGER, `status` INTEGER NOT NULL, " +
+ database.execSQL("CREATE TABLE `" + tableName + suffix + "` (`localId` INTEGER PRIMARY KEY AUTOINCREMENT, `accountId` INTEGER NOT NULL, `id` INTEGER, `status` INTEGER NOT NULL, " +
"`lastModified` INTEGER, `lastModifiedLocal` INTEGER, `title` TEXT, `ownerId` INTEGER NOT NULL, `color` INTEGER, " +
"`archived` INTEGER NOT NULL, `shared` INTEGER NOT NULL, `deletedAt` INTEGER, `permissionRead` INTEGER NOT NULL, " +
"`permissionEdit` INTEGER NOT NULL, `permissionManage` INTEGER NOT NULL, `permissionShare` INTEGER NOT NULL, " +
"FOREIGN KEY(`ownerId`) REFERENCES `User`(`localId`) ON UPDATE NO ACTION ON DELETE SET NULL )");
- Cursor cursor = database.query("select * from `"+tableName+"`");
+ Cursor cursor = database.query("select * from `" + tableName + "`");
while (cursor.moveToNext()) {
String colorAsString1 = cursor.getString(8); // color
@ColorInt Integer color1 = null;
try {
- color1 = Color.parseColor(ColorUtil.formatColorToParsableHexString(colorAsString1));
+ color1 = Color.parseColor(ColorUtil.INSTANCE.formatColorToParsableHexString(colorAsString1));
} catch (Exception e) {
color1 = Color.GRAY;
}
- database.execSQL("Insert into `"+tableName+suffix+"` VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", new Object[] {
+ database.execSQL("Insert into `" + tableName + suffix + "` VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", new Object[]{
cursor.getLong(0), cursor.getLong(1), cursor.getLong(2), cursor.getInt(3),
- cursor.getLong(4), cursor.getLong(5), cursor.getString(6), cursor.getLong(7) , color1,
+ cursor.getLong(4), cursor.getLong(5), cursor.getString(6), cursor.getLong(7), color1,
cursor.getInt(9), cursor.getInt(10), cursor.getInt(11), cursor.getInt(12),
cursor.getInt(13), cursor.getInt(14), cursor.getInt(15)
});
@@ -330,46 +330,46 @@ public abstract class DeckDatabase extends RoomDatabase {
}
- database.execSQL("DROP TABLE `"+ tableName +"`");
- database.execSQL("ALTER TABLE `"+tableName+suffix+"` RENAME TO `"+tableName+"`");
- database.execSQL("CREATE INDEX `index_Board_accountId` ON `"+tableName+"` (`accountId`)");
- database.execSQL("CREATE UNIQUE INDEX `index_Board_accountId_id` ON `"+tableName+"` (`accountId`, `id`)");
- database.execSQL("CREATE INDEX `index_Board_id` ON `"+tableName+"` (`id`)");
- database.execSQL("CREATE INDEX `index_Board_ownerId` ON `"+tableName+"` (`ownerId`)");
- database.execSQL("CREATE INDEX `index_Board_lastModifiedLocal` ON `"+tableName+"` (`lastModifiedLocal`)");
- database.execSQL("UPDATE SQLITE_SEQUENCE SET seq = (select max(id) from "+tableName+") WHERE name = ?", new Object[] {tableName});
+ database.execSQL("DROP TABLE `" + tableName + "`");
+ database.execSQL("ALTER TABLE `" + tableName + suffix + "` RENAME TO `" + tableName + "`");
+ database.execSQL("CREATE INDEX `index_Board_accountId` ON `" + tableName + "` (`accountId`)");
+ database.execSQL("CREATE UNIQUE INDEX `index_Board_accountId_id` ON `" + tableName + "` (`accountId`, `id`)");
+ database.execSQL("CREATE INDEX `index_Board_id` ON `" + tableName + "` (`id`)");
+ database.execSQL("CREATE INDEX `index_Board_ownerId` ON `" + tableName + "` (`ownerId`)");
+ database.execSQL("CREATE INDEX `index_Board_lastModifiedLocal` ON `" + tableName + "` (`lastModifiedLocal`)");
+ database.execSQL("UPDATE SQLITE_SEQUENCE SET seq = (select max(id) from " + tableName + ") WHERE name = ?", new Object[]{tableName});
}
{
String tableName = "Label";
- database.execSQL("CREATE TABLE `"+tableName+suffix+"` (`localId` INTEGER PRIMARY KEY AUTOINCREMENT, `accountId` INTEGER NOT NULL, `id` INTEGER, `status` INTEGER NOT NULL, " +
+ database.execSQL("CREATE TABLE `" + tableName + suffix + "` (`localId` INTEGER PRIMARY KEY AUTOINCREMENT, `accountId` INTEGER NOT NULL, `id` INTEGER, `status` INTEGER NOT NULL, " +
"`lastModified` INTEGER, `lastModifiedLocal` INTEGER, `title` TEXT, `color` INTEGER NOT NULL DEFAULT 0, `boardId` INTEGER NOT NULL, " +
"FOREIGN KEY(`boardId`) REFERENCES `Board`(`localId`) ON UPDATE NO ACTION ON DELETE CASCADE )");
- Cursor cursor = database.query("select * from `"+tableName+"`");
+ Cursor cursor = database.query("select * from `" + tableName + "`");
while (cursor.moveToNext()) {
String colorAsString1 = cursor.getString(7); // color
@ColorInt Integer color1 = null;
try {
- color1 = Color.parseColor(ColorUtil.formatColorToParsableHexString(colorAsString1));
+ color1 = Color.parseColor(ColorUtil.INSTANCE.formatColorToParsableHexString(colorAsString1));
} catch (Exception e) {
color1 = Color.GRAY;
}
- database.execSQL("Insert into `"+tableName+suffix+"` VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", new Object[] {
+ database.execSQL("Insert into `" + tableName + suffix + "` VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", new Object[]{
cursor.getLong(0), cursor.getLong(1), cursor.getLong(2), cursor.getInt(3),
cursor.getLong(4), cursor.getLong(5), cursor.getString(6), color1, cursor.getLong(8)});
}
- database.execSQL("DROP TABLE `"+ tableName +"`");
- database.execSQL("ALTER TABLE `"+tableName+suffix+"` RENAME TO `"+tableName+"`");
- database.execSQL("CREATE UNIQUE INDEX `index_Label_accountId_id` ON `"+tableName+"` (`accountId`, `id`)");
- database.execSQL("CREATE INDEX `index_Label_boardId` ON `"+tableName+"` (`boardId`)");
- database.execSQL("CREATE INDEX `index_Label_accountId` ON `"+tableName+"` (`accountId`)");
- database.execSQL("CREATE UNIQUE INDEX `idx_label_title_unique` ON `"+tableName+"` (`boardId`, `title`)");
- database.execSQL("CREATE INDEX `index_Label_id` ON `"+tableName+"` (`id`)");
- database.execSQL("CREATE INDEX `index_Label_lastModifiedLocal` ON `"+tableName+"` (`lastModifiedLocal`)");
- database.execSQL("UPDATE SQLITE_SEQUENCE SET seq = (select max(id) from "+tableName+") WHERE name = ?", new Object[] {tableName});
+ database.execSQL("DROP TABLE `" + tableName + "`");
+ database.execSQL("ALTER TABLE `" + tableName + suffix + "` RENAME TO `" + tableName + "`");
+ database.execSQL("CREATE UNIQUE INDEX `index_Label_accountId_id` ON `" + tableName + "` (`accountId`, `id`)");
+ database.execSQL("CREATE INDEX `index_Label_boardId` ON `" + tableName + "` (`boardId`)");
+ database.execSQL("CREATE INDEX `index_Label_accountId` ON `" + tableName + "` (`accountId`)");
+ database.execSQL("CREATE UNIQUE INDEX `idx_label_title_unique` ON `" + tableName + "` (`boardId`, `title`)");
+ database.execSQL("CREATE INDEX `index_Label_id` ON `" + tableName + "` (`id`)");
+ database.execSQL("CREATE INDEX `index_Label_lastModifiedLocal` ON `" + tableName + "` (`lastModifiedLocal`)");
+ database.execSQL("UPDATE SQLITE_SEQUENCE SET seq = (select max(id) from " + tableName + ") WHERE name = ?", new Object[]{tableName});
}
}
};
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
index 6d9758174..91c08ffad 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
@@ -114,8 +114,8 @@ import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandTo
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.clearBrandColors;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.saveBrandColors;
-import static it.niedermann.nextcloud.deck.util.ColorUtil.contrastRatioIsSufficient;
-import static it.niedermann.nextcloud.deck.util.ColorUtil.contrastRatioIsSufficientBigAreas;
+import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficient;
+import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficientBigAreas;
import static it.niedermann.nextcloud.deck.util.DrawerMenuUtil.MENU_ID_ABOUT;
import static it.niedermann.nextcloud.deck.util.DrawerMenuUtil.MENU_ID_ADD_BOARD;
import static it.niedermann.nextcloud.deck.util.DrawerMenuUtil.MENU_ID_ARCHIVED_BOARDS;
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/PickStackActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/PickStackActivity.java
index b8d9946fc..e0a9b6a06 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/PickStackActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/PickStackActivity.java
@@ -14,6 +14,7 @@ import androidx.core.graphics.drawable.DrawableCompat;
import java.util.List;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ActivityPickStackBinding;
@@ -25,13 +26,12 @@ import it.niedermann.nextcloud.deck.ui.branding.Branded;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
import it.niedermann.nextcloud.deck.ui.pickstack.PickStackFragment;
import it.niedermann.nextcloud.deck.ui.pickstack.PickStackListener;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
import static androidx.lifecycle.Transformations.switchMap;
import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.isBrandingEnabled;
-import static it.niedermann.nextcloud.deck.util.ColorUtil.contrastRatioIsSufficientBigAreas;
+import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficientBigAreas;
public abstract class PickStackActivity extends AppCompatActivity implements Branded, PickStackListener {
@@ -105,7 +105,7 @@ public abstract class PickStackActivity extends AppCompatActivity implements Bra
? mainColor
: isDarkTheme(this) ? Color.WHITE : Color.BLACK;
DrawableCompat.setTintList(binding.submit.getBackground(), ColorStateList.valueOf(finalMainColor));
- binding.submit.setTextColor(ColorUtil.getForegroundColorForBackgroundColor(finalMainColor));
+ binding.submit.setTextColor(ColorUtil.INSTANCE.getForegroundColorForBackgroundColor(finalMainColor));
binding.cancel.setTextColor(getSecondaryForegroundColorDependingOnTheme(this, mainColor));
}
} catch (Throwable t) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/PushNotificationActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/PushNotificationActivity.java
index cf79bf511..a02f5aad3 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/PushNotificationActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/PushNotificationActivity.java
@@ -12,6 +12,7 @@ import androidx.appcompat.app.AppCompatActivity;
import com.nextcloud.android.sso.helper.SingleAccountHelper;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.api.IResponseCallback;
@@ -20,7 +21,6 @@ import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.ui.card.EditActivity;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
import it.niedermann.nextcloud.deck.util.ProjectUtil;
import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
@@ -200,7 +200,7 @@ public class PushNotificationActivity extends AppCompatActivity {
@ColorInt final int mainColor = account.getColor();
try {
binding.submit.setBackgroundColor(mainColor);
- binding.submit.setTextColor(ColorUtil.getForegroundColorForBackgroundColor(mainColor));
+ binding.submit.setTextColor(ColorUtil.INSTANCE.getForegroundColorForBackgroundColor(mainColor));
} catch (Throwable t) {
DeckLog.logError(t);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java
index c00ff212a..0bd92bc78 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java
@@ -14,13 +14,13 @@ import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.FragmentAboutLicenseTabBinding;
import it.niedermann.nextcloud.deck.ui.branding.BrandedFragment;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
-import static it.niedermann.nextcloud.deck.util.ColorUtil.contrastRatioIsSufficientBigAreas;
+import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficientBigAreas;
import static it.niedermann.nextcloud.deck.util.SpannableUtil.setTextWithURL;
public class AboutFragmentLicenseTab extends BrandedFragment {
@@ -42,6 +42,6 @@ public class AboutFragmentLicenseTab extends BrandedFragment {
? mainColor
: isDarkTheme(requireContext()) ? Color.WHITE : Color.BLACK;
DrawableCompat.setTintList(binding.aboutAppLicenseButton.getBackground(), ColorStateList.valueOf(finalMainColor));
- binding.aboutAppLicenseButton.setTextColor(ColorUtil.getForegroundColorForBackgroundColor(finalMainColor));
+ binding.aboutAppLicenseButton.setTextColor(ColorUtil.INSTANCE.getForegroundColorForBackgroundColor(finalMainColor));
}
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsViewHolder.java
index d5898334b..381a290e6 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsViewHolder.java
@@ -5,9 +5,9 @@ import android.content.res.ColorStateList;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.databinding.ItemManageLabelBinding;
import it.niedermann.nextcloud.deck.model.Label;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
public class ManageLabelsViewHolder extends RecyclerView.ViewHolder {
private ItemManageLabelBinding binding;
@@ -23,7 +23,7 @@ public class ManageLabelsViewHolder extends RecyclerView.ViewHolder {
binding.label.setText(label.getTitle());
final int labelColor = label.getColor();
binding.label.setChipBackgroundColor(ColorStateList.valueOf(labelColor));
- final int color = ColorUtil.getForegroundColorForBackgroundColor(labelColor);
+ final int color = ColorUtil.INSTANCE.getForegroundColorForBackgroundColor(labelColor);
binding.label.setTextColor(color);
binding.delete.setOnClickListener((v) -> listener.requestDelete(label));
binding.editText.setOnClickListener((v) -> listener.requestEdit(label));
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDatePickerDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDatePickerDialog.java
index 5bef66f2c..f429436a6 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDatePickerDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDatePickerDialog.java
@@ -17,7 +17,7 @@ import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
import java.util.Calendar;
import it.niedermann.nextcloud.deck.R;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
+import it.niedermann.nextcloud.deck.util.DeckColorUtil;
import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
@@ -44,7 +44,7 @@ public class BrandedDatePickerDialog extends DatePickerDialog implements Branded
setOkColor(buttonTextColor);
setCancelColor(buttonTextColor);
// Text in picker title is always white
- setAccentColor(ColorUtil.contrastRatioIsSufficientBigAreas(Color.WHITE, mainColor) ? mainColor : ContextCompat.getColor(requireContext(), R.color.accent));
+ setAccentColor(DeckColorUtil.contrastRatioIsSufficientBigAreas(Color.WHITE, mainColor) ? mainColor : ContextCompat.getColor(requireContext(), R.color.accent));
}
/**
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java
index 8f7219b11..0159a59dc 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java
@@ -11,8 +11,8 @@ import androidx.core.content.ContextCompat;
import com.google.android.material.snackbar.BaseTransientBottomBar;
import com.google.android.material.snackbar.Snackbar;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.R;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.isBrandingEnabled;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
@@ -25,7 +25,7 @@ public class BrandedSnackbar {
final Snackbar snackbar = Snackbar.make(view, text, duration);
if (isBrandingEnabled(view.getContext())) {
@ColorInt final int color = readBrandMainColor(view.getContext());
- snackbar.setActionTextColor(ColorUtil.isColorDark(color) ? Color.WHITE : color);
+ snackbar.setActionTextColor(ColorUtil.INSTANCE.isColorDark(color) ? Color.WHITE : color);
} else {
snackbar.setActionTextColor(ContextCompat.getColor(view.getContext(), R.color.defaultBrand));
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedTimePickerDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedTimePickerDialog.java
index a1963aa18..bd5e65ddd 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedTimePickerDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedTimePickerDialog.java
@@ -17,7 +17,7 @@ import com.wdullaer.materialdatetimepicker.time.TimePickerDialog;
import java.util.Calendar;
import it.niedermann.nextcloud.deck.R;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
+import it.niedermann.nextcloud.deck.util.DeckColorUtil;
import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
@@ -44,7 +44,7 @@ public class BrandedTimePickerDialog extends TimePickerDialog implements Branded
setOkColor(buttonTextColor);
setCancelColor(buttonTextColor);
// Text in picker title is always white
- setAccentColor(ColorUtil.contrastRatioIsSufficientBigAreas(Color.WHITE, mainColor) ? mainColor : ContextCompat.getColor(requireContext(), R.color.accent));
+ setAccentColor(DeckColorUtil.contrastRatioIsSufficientBigAreas(Color.WHITE, mainColor) ? mainColor : ContextCompat.getColor(requireContext(), R.color.accent));
}
/**
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java
index 11781e27b..b780efec5 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java
@@ -17,14 +17,13 @@ import androidx.preference.PreferenceManager;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
-import static it.niedermann.nextcloud.deck.util.ColorUtil.contrastRatioIsSufficient;
-import static it.niedermann.nextcloud.deck.util.ColorUtil.contrastRatioIsSufficientBigAreas;
-import static it.niedermann.nextcloud.deck.util.ColorUtil.getContrastRatio;
-import static it.niedermann.nextcloud.deck.util.ColorUtil.getForegroundColorForBackgroundColor;
+import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficient;
+import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficientBigAreas;
public abstract class BrandingUtil {
@@ -87,13 +86,13 @@ public abstract class BrandingUtil {
fab.setSupportBackgroundTintList(ColorStateList.valueOf(contrastRatioIsSufficient
? mainColor
: ContextCompat.getColor(fab.getContext(), R.color.accent)));
- fab.setColorFilter(contrastRatioIsSufficient ? getForegroundColorForBackgroundColor(mainColor) : mainColor);
+ fab.setColorFilter(contrastRatioIsSufficient ? ColorUtil.INSTANCE.getForegroundColorForBackgroundColor(mainColor) : mainColor);
}
public static void applyBrandToPrimaryTabLayout(@ColorInt int mainColor, @NonNull TabLayout tabLayout) {
@ColorInt final int finalMainColor = getSecondaryForegroundColorDependingOnTheme(tabLayout.getContext(), mainColor);
tabLayout.setBackgroundColor(ContextCompat.getColor(tabLayout.getContext(), R.color.primary));
- final boolean contrastRatioIsSufficient = getContrastRatio(mainColor, ContextCompat.getColor(tabLayout.getContext(), R.color.primary)) > 1.7d;
+ final boolean contrastRatioIsSufficient = ColorUtil.INSTANCE.getContrastRatio(mainColor, ContextCompat.getColor(tabLayout.getContext(), R.color.primary)) > 1.7d;
tabLayout.setSelectedTabIndicatorColor(contrastRatioIsSufficient ? mainColor : finalMainColor);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java
index cd6beae1d..fe974f2a0 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java
@@ -19,11 +19,11 @@ import java.util.Collection;
import java.util.List;
import java.util.Random;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ItemAutocompleteLabelBinding;
import it.niedermann.nextcloud.deck.model.Label;
import it.niedermann.nextcloud.deck.util.AutoCompleteAdapter;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
@@ -61,7 +61,7 @@ public class LabelAutoCompleteAdapter extends AutoCompleteAdapter<Label> {
final Label label = getItem(position);
final int labelColor = label.getColor();
- final int color = ColorUtil.getForegroundColorForBackgroundColor(labelColor);
+ final int color = ColorUtil.INSTANCE.getForegroundColorForBackgroundColor(labelColor);
binding.label.setText(label.getTitle());
binding.label.setChipBackgroundColor(ColorStateList.valueOf(labelColor));
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
index 3f2e8d580..361984fdb 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
@@ -37,6 +37,7 @@ import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.android.util.DimensionUtil;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
@@ -55,7 +56,6 @@ import it.niedermann.nextcloud.deck.ui.card.UserAutoCompleteAdapter;
import it.niedermann.nextcloud.deck.ui.card.assignee.CardAssigneeDialog;
import it.niedermann.nextcloud.deck.ui.card.assignee.CardAssigneeListener;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
import it.niedermann.nextcloud.deck.util.MarkDownUtil;
import static android.text.format.DateFormat.getDateFormat;
@@ -321,7 +321,7 @@ public class CardDetailsFragment extends BrandedFragment implements OnDateSetLis
try {
final int labelColor = label.getColor();
chip.setChipBackgroundColor(ColorStateList.valueOf(labelColor));
- final int color = ColorUtil.getForegroundColorForBackgroundColor(labelColor);
+ final int color = ColorUtil.INSTANCE.getForegroundColorForBackgroundColor(labelColor);
chip.setTextColor(color);
if (chip.getCloseIcon() != null) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
index 047b6c270..6aa03b811 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
@@ -20,6 +20,7 @@ import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayoutMediator;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogFilterBinding;
import it.niedermann.nextcloud.deck.model.enums.EDueType;
@@ -28,7 +29,6 @@ import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
-import static it.niedermann.nextcloud.deck.util.ColorUtil.getContrastRatio;
public class FilterDialogFragment extends BrandedDialogFragment {
@@ -107,7 +107,7 @@ public class FilterDialogFragment extends BrandedDialogFragment {
@Override
public void applyBrand(int mainColor) {
@ColorInt final int finalMainColor = getSecondaryForegroundColorDependingOnTheme(binding.tabLayout.getContext(), mainColor);
- final boolean contrastRatioIsSufficient = getContrastRatio(mainColor, ContextCompat.getColor(binding.tabLayout.getContext(), R.color.primary)) > 1.7d;
+ final boolean contrastRatioIsSufficient = ColorUtil.INSTANCE.getContrastRatio(mainColor, ContextCompat.getColor(binding.tabLayout.getContext(), R.color.primary)) > 1.7d;
binding.tabLayout.setSelectedTabIndicatorColor(contrastRatioIsSufficient ? mainColor : finalMainColor);
indicator.setColorFilter(contrastRatioIsSufficient ? mainColor : finalMainColor, PorterDuff.Mode.SRC_ATOP);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsAdapter.java
index 1dbf89d61..39fb791be 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsAdapter.java
@@ -12,10 +12,10 @@ import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ItemFilterLabelBinding;
import it.niedermann.nextcloud.deck.model.Label;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
@SuppressWarnings("WeakerAccess")
public class FilterLabelsAdapter extends RecyclerView.Adapter<FilterLabelsAdapter.LabelViewHolder> {
@@ -80,7 +80,7 @@ public class FilterLabelsAdapter extends RecyclerView.Adapter<FilterLabelsAdapte
binding.label.setText(label.getTitle());
final int labelColor = label.getColor();
binding.label.setChipBackgroundColor(ColorStateList.valueOf(labelColor));
- final int color = ColorUtil.getForegroundColorForBackgroundColor(labelColor);
+ final int color = ColorUtil.INSTANCE.getForegroundColorForBackgroundColor(labelColor);
binding.label.setTextColor(color);
itemView.setSelected(selectedLabels.contains(label));
bindClickListener(label);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/labelchip/LabelChip.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/labelchip/LabelChip.java
index 8980419b9..83853f0b2 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/labelchip/LabelChip.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/labelchip/LabelChip.java
@@ -11,9 +11,9 @@ import androidx.annotation.Px;
import com.google.android.flexbox.FlexboxLayout;
import com.google.android.material.chip.Chip;
+import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.model.Label;
-import it.niedermann.nextcloud.deck.util.ColorUtil;
@SuppressLint("ViewConstructor")
public class LabelChip extends Chip {
@@ -45,7 +45,7 @@ public class LabelChip extends Chip {
int labelColor = label.getColor();
ColorStateList c = ColorStateList.valueOf(labelColor);
setChipBackgroundColor(c);
- setTextColor(ColorUtil.getForegroundColorForBackgroundColor(labelColor));
+ setTextColor(ColorUtil.INSTANCE.getForegroundColorForBackgroundColor(labelColor));
} catch (IllegalArgumentException e) {
DeckLog.logError(e);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/ColorUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/ColorUtil.java
deleted file mode 100644
index c9a9fd922..000000000
--- a/app/src/main/java/it/niedermann/nextcloud/deck/util/ColorUtil.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package it.niedermann.nextcloud.deck.util;
-
-import android.graphics.Color;
-
-import androidx.annotation.ColorInt;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.core.util.Pair;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-public final class ColorUtil {
-
- private static final Map<ColorPair, Boolean> CONTRAST_RATIO_SUFFICIENT_CACHE = new HashMap<>();
- private static final Map<Integer, Integer> FOREGROUND_CACHE = new HashMap<>();
- private static final Map<Integer, Boolean> IS_DARK_COLOR_CACHE = new HashMap<>();
-
- private ColorUtil() {
- }
-
- @ColorInt
- public static int getForegroundColorForBackgroundColor(@ColorInt int color) {
- Integer ret = FOREGROUND_CACHE.get(color);
- if (ret == null) {
- if (Color.TRANSPARENT == color)
- ret = Color.BLACK;
- else if (isColorDark(color))
- ret = Color.WHITE;
- else
- ret = Color.BLACK;
-
- FOREGROUND_CACHE.put(color, ret);
- }
- return ret;
- }
-
- /**
- * @return well formatted string starting with a hash followed by 6 hex numbers that is parsable by {@link Color#parseColor(String)}.
- */
- public static String formatColorToParsableHexString(String input) {
- if (input == null) {
- throw new IllegalArgumentException("input color string is null");
- }
- if (isParsableValidHexColorString(input)) {
- return input;
- }
- final char[] chars = input.replaceAll("#", "").toCharArray();
- final StringBuilder sb = new StringBuilder(7).append("#");
- switch (chars.length) {
- case 8: { // Strip alpha channel
- sb.append(Arrays.copyOfRange(chars, 0, 6));
- break;
- }
- case 6: { // Default long
- sb.append(chars);
- break;
- }
- case 4: { // Strip alpha channel
- for (char c : Arrays.copyOfRange(chars, 0, 3)) {
- sb.append(c).append(c);
- }
- break;
- }
- case 3: { // Default short
- for (char c : chars) {
- sb.append(c).append(c);
- }
- break;
- }
- default: {
- throw new IllegalArgumentException("unparsable color string: \"" + input + "\"");
- }
- }
- final String formattedHexColor = sb.toString();
- if (isParsableValidHexColorString(formattedHexColor)) {
- return formattedHexColor;
- } else {
- throw new IllegalArgumentException("\"" + input + "\" is not a valid color string. Result of tried normalizing: " + formattedHexColor);
- }
- }
-
- /**
- * Checking for {@link Color#parseColor(String)} being able to parse the input is the important part because we don't know the implementation and rely on it to be able to parse the color.
- *
- * @return true, if the input starts with a hash followed by 6 characters of hex numbers and is parsable by {@link Color#parseColor(String)}.
- */
- private static boolean isParsableValidHexColorString(@NonNull String input) {
- try {
- Color.parseColor(input);
- return input.matches("#[a-fA-F0-9]{6}");
- } catch (Exception e) {
- return false;
- }
- }
-
- public static boolean isColorDark(@ColorInt int color) {
- Boolean ret = IS_DARK_COLOR_CACHE.get(color);
- if (ret == null) {
- ret = getBrightness(color) < 200;
- IS_DARK_COLOR_CACHE.put(color, ret);
- }
- return ret;
- }
-
- private static int getBrightness(@ColorInt int color) {
- final int[] rgb = {Color.red(color), Color.green(color), Color.blue(color)};
-
- return (int) Math.sqrt(rgb[0] * rgb[0] * .241 + rgb[1]
- * rgb[1] * .691 + rgb[2] * rgb[2] * .068);
- }
-
- // ---------------------------------------------------
- // Based on https://github.com/LeaVerou/contrast-ratio
- // ---------------------------------------------------
-
- public static boolean contrastRatioIsSufficient(@ColorInt int colorOne, @ColorInt int colorTwo) {
- ColorPair key = new ColorPair(colorOne, colorTwo);
- Boolean ret = CONTRAST_RATIO_SUFFICIENT_CACHE.get(key);
- if (ret == null) {
- ret = getContrastRatio(colorOne, colorTwo) > 3d;
- CONTRAST_RATIO_SUFFICIENT_CACHE.put(key, ret);
- return ret;
- }
- return ret;
- }
-
- public static boolean contrastRatioIsSufficientBigAreas(@ColorInt int colorOne, @ColorInt int colorTwo) {
- ColorPair key = new ColorPair(colorOne, colorTwo);
- Boolean ret = CONTRAST_RATIO_SUFFICIENT_CACHE.get(key);
- if (ret == null) {
- ret = getContrastRatio(colorOne, colorTwo) > 1.47d;
- CONTRAST_RATIO_SUFFICIENT_CACHE.put(key, ret);
- return ret;
- }
- return ret;
- }
-
- public static double getContrastRatio(@ColorInt int colorOne, @ColorInt int colorTwo) {
- final double lum1 = getLuminanace(colorOne);
- final double lum2 = getLuminanace(colorTwo);
- final double brightest = Math.max(lum1, lum2);
- final double darkest = Math.min(lum1, lum2);
- return (brightest + 0.05) / (darkest + 0.05);
- }
-
- private static double getLuminanace(@ColorInt int color) {
- final int[] rgb = {Color.red(color), Color.green(color), Color.blue(color)};
- return getSubcolorLuminance(rgb[0]) * 0.2126 + getSubcolorLuminance(rgb[1]) * 0.7152 + getSubcolorLuminance(rgb[2]) * 0.0722;
- }
-
- private static double getSubcolorLuminance(@ColorInt int color) {
- final double value = color / 255d;
- return value <= 0.03928
- ? value / 12.92
- : Math.pow((value + 0.055) / 1.055, 2.4);
- }
-
- private static class ColorPair extends Pair<Integer, Integer> {
-
- private ColorPair(@Nullable Integer first, @Nullable Integer second) {
- super(first, second);
- }
-
- @SuppressWarnings({"EqualsWhichDoesntCheckParameterClass", "NumberEquality"})
- @Override
- public boolean equals(Object o) {
- final ColorPair colorPair = (ColorPair) o;
- if (first != colorPair.first) return false;
- return second == colorPair.second;
- }
-
- @SuppressWarnings("ConstantConditions")
- @Override
- public int hashCode() {
- int result = first;
- result = 31 * result + second;
- return result;
- }
- }
-
- public static String intColorToHexString(int color) {
- return String.format("%06X", (0xFFFFFF & color));
- }
-}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/DeckColorUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/DeckColorUtil.java
new file mode 100644
index 000000000..e01d0ec29
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/DeckColorUtil.java
@@ -0,0 +1,59 @@
+package it.niedermann.nextcloud.deck.util;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.Nullable;
+import androidx.core.util.Pair;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import it.niedermann.android.util.ColorUtil;
+
+public final class DeckColorUtil {
+
+ private static final Map<ColorPair, Boolean> CONTRAST_RATIO_SUFFICIENT_CACHE = new HashMap<>();
+
+ public static boolean contrastRatioIsSufficient(@ColorInt int colorOne, @ColorInt int colorTwo) {
+ ColorPair key = new ColorPair(colorOne, colorTwo);
+ Boolean ret = CONTRAST_RATIO_SUFFICIENT_CACHE.get(key);
+ if (ret == null) {
+ ret = ColorUtil.INSTANCE.getContrastRatio(colorOne, colorTwo) > 3d;
+ CONTRAST_RATIO_SUFFICIENT_CACHE.put(key, ret);
+ return ret;
+ }
+ return ret;
+ }
+
+ public static boolean contrastRatioIsSufficientBigAreas(@ColorInt int colorOne, @ColorInt int colorTwo) {
+ ColorPair key = new ColorPair(colorOne, colorTwo);
+ Boolean ret = CONTRAST_RATIO_SUFFICIENT_CACHE.get(key);
+ if (ret == null) {
+ ret = ColorUtil.INSTANCE.getContrastRatio(colorOne, colorTwo) > 1.47d;
+ CONTRAST_RATIO_SUFFICIENT_CACHE.put(key, ret);
+ return ret;
+ }
+ return ret;
+ }
+
+ private static class ColorPair extends Pair<Integer, Integer> {
+
+ private ColorPair(@Nullable Integer first, @Nullable Integer second) {
+ super(first, second);
+ }
+
+ @SuppressWarnings({"EqualsWhichDoesntCheckParameterClass", "NumberEquality"})
+ @Override
+ public boolean equals(Object o) {
+ final ColorPair colorPair = (ColorPair) o;
+ if (first != colorPair.first) return false;
+ return second == colorPair.second;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = first;
+ result = 31 * result + second;
+ return result;
+ }
+ }
+}