mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 21:28:34 +00:00
Add the ability to re-order sticker packs.
This commit is contained in:
parent
7d70ea78cd
commit
f7a3bb2ae8
@ -5,6 +5,7 @@ import android.content.Context;
|
|||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
@ -29,6 +30,7 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class StickerDatabase extends Database {
|
public class StickerDatabase extends Database {
|
||||||
|
|
||||||
@ -43,6 +45,7 @@ public class StickerDatabase extends Database {
|
|||||||
private static final String STICKER_ID = "sticker_id";
|
private static final String STICKER_ID = "sticker_id";
|
||||||
private static final String EMOJI = "emoji";
|
private static final String EMOJI = "emoji";
|
||||||
private static final String COVER = "cover";
|
private static final String COVER = "cover";
|
||||||
|
private static final String PACK_ORDER = "pack_order";
|
||||||
private static final String INSTALLED = "installed";
|
private static final String INSTALLED = "installed";
|
||||||
private static final String LAST_USED = "last_used";
|
private static final String LAST_USED = "last_used";
|
||||||
public static final String FILE_PATH = "file_path";
|
public static final String FILE_PATH = "file_path";
|
||||||
@ -56,6 +59,7 @@ public class StickerDatabase extends Database {
|
|||||||
PACK_AUTHOR + " TEXT NOT NULL, " +
|
PACK_AUTHOR + " TEXT NOT NULL, " +
|
||||||
STICKER_ID + " INTEGER, " +
|
STICKER_ID + " INTEGER, " +
|
||||||
COVER + " INTEGER, " +
|
COVER + " INTEGER, " +
|
||||||
|
PACK_ORDER + " INTEGER, " +
|
||||||
EMOJI + " TEXT NOT NULL, " +
|
EMOJI + " TEXT NOT NULL, " +
|
||||||
LAST_USED + " INTEGER, " +
|
LAST_USED + " INTEGER, " +
|
||||||
INSTALLED + " INTEGER," +
|
INSTALLED + " INTEGER," +
|
||||||
@ -130,7 +134,7 @@ public class StickerDatabase extends Database {
|
|||||||
public @Nullable Cursor getInstalledStickerPacks() {
|
public @Nullable Cursor getInstalledStickerPacks() {
|
||||||
String selection = COVER + " = ? AND " + INSTALLED + " = ?";
|
String selection = COVER + " = ? AND " + INSTALLED + " = ?";
|
||||||
String[] args = new String[] { "1", "1" };
|
String[] args = new String[] { "1", "1" };
|
||||||
Cursor cursor = databaseHelper.getReadableDatabase().query(TABLE_NAME, null, selection, args, null, null, null);
|
Cursor cursor = databaseHelper.getReadableDatabase().query(TABLE_NAME, null, selection, args, null, null, PACK_ORDER + " ASC");
|
||||||
|
|
||||||
setNotifyStickerPackListeners(cursor);
|
setNotifyStickerPackListeners(cursor);
|
||||||
return cursor;
|
return cursor;
|
||||||
@ -153,7 +157,7 @@ public class StickerDatabase extends Database {
|
|||||||
public @Nullable Cursor getAllStickerPacks(@Nullable String limit) {
|
public @Nullable Cursor getAllStickerPacks(@Nullable String limit) {
|
||||||
String query = COVER + " = ?";
|
String query = COVER + " = ?";
|
||||||
String[] args = new String[] { "1" };
|
String[] args = new String[] { "1" };
|
||||||
Cursor cursor = databaseHelper.getReadableDatabase().query(TABLE_NAME, null, query, args, null, null, null, limit);
|
Cursor cursor = databaseHelper.getReadableDatabase().query(TABLE_NAME, null, query, args, null, null, PACK_ORDER + " ASC", limit);
|
||||||
setNotifyStickerPackListeners(cursor);
|
setNotifyStickerPackListeners(cursor);
|
||||||
|
|
||||||
return cursor;
|
return cursor;
|
||||||
@ -272,7 +276,6 @@ public class StickerDatabase extends Database {
|
|||||||
|
|
||||||
db.beginTransaction();
|
db.beginTransaction();
|
||||||
try {
|
try {
|
||||||
|
|
||||||
updatePackInstalled(db, packId, false, false);
|
updatePackInstalled(db, packId, false, false);
|
||||||
deleteStickersInPackExceptCover(db, packId);
|
deleteStickersInPackExceptCover(db, packId);
|
||||||
|
|
||||||
@ -284,6 +287,29 @@ public class StickerDatabase extends Database {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updatePackOrder(@NonNull List<StickerPackRecord> packsInOrder) {
|
||||||
|
SQLiteDatabase db = databaseHelper.getWritableDatabase();
|
||||||
|
|
||||||
|
db.beginTransaction();
|
||||||
|
try {
|
||||||
|
String selection = PACK_ID + " = ? AND " + COVER + " = ?";
|
||||||
|
|
||||||
|
for (int i = 0; i < packsInOrder.size(); i++) {
|
||||||
|
String[] args = new String[]{ packsInOrder.get(i).getPackId(), "1" };
|
||||||
|
ContentValues values = new ContentValues();
|
||||||
|
|
||||||
|
values.put(PACK_ORDER, i);
|
||||||
|
|
||||||
|
db.update(TABLE_NAME, values, selection, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
db.setTransactionSuccessful();
|
||||||
|
notifyStickerPackListeners();
|
||||||
|
} finally {
|
||||||
|
db.endTransaction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void updatePackInstalled(@NonNull SQLiteDatabase db, @NonNull String packId, boolean installed, boolean notify) {
|
private void updatePackInstalled(@NonNull SQLiteDatabase db, @NonNull String packId, boolean installed, boolean notify) {
|
||||||
StickerPackRecord existing = getStickerPack(packId);
|
StickerPackRecord existing = getStickerPack(packId);
|
||||||
|
|
||||||
|
@ -101,8 +101,9 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper {
|
|||||||
private static final int KEY_VALUE_STORE = 41;
|
private static final int KEY_VALUE_STORE = 41;
|
||||||
private static final int ATTACHMENT_DISPLAY_ORDER = 42;
|
private static final int ATTACHMENT_DISPLAY_ORDER = 42;
|
||||||
private static final int SPLIT_PROFILE_NAMES = 43;
|
private static final int SPLIT_PROFILE_NAMES = 43;
|
||||||
|
private static final int STICKER_PACK_ORDER = 44;
|
||||||
|
|
||||||
private static final int DATABASE_VERSION = 43;
|
private static final int DATABASE_VERSION = 44;
|
||||||
private static final String DATABASE_NAME = "signal.db";
|
private static final String DATABASE_NAME = "signal.db";
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
@ -703,6 +704,10 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper {
|
|||||||
db.execSQL("ALTER TABLE recipient ADD COLUMN profile_joined_name TEXT DEFAULT NULL");
|
db.execSQL("ALTER TABLE recipient ADD COLUMN profile_joined_name TEXT DEFAULT NULL");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (oldVersion < STICKER_PACK_ORDER) {
|
||||||
|
db.execSQL("ALTER TABLE sticker ADD COLUMN pack_order INTEGER DEFAULT 0");
|
||||||
|
}
|
||||||
|
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
} finally {
|
} finally {
|
||||||
db.endTransaction();
|
db.endTransaction();
|
||||||
|
@ -5,6 +5,7 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
@ -12,6 +13,7 @@ import android.view.MenuItem;
|
|||||||
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity;
|
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity;
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.ShareActivity;
|
import org.thoughtcrime.securesms.ShareActivity;
|
||||||
|
import org.thoughtcrime.securesms.logging.Log;
|
||||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||||
import org.thoughtcrime.securesms.util.DynamicTheme;
|
import org.thoughtcrime.securesms.util.DynamicTheme;
|
||||||
|
|
||||||
@ -22,9 +24,8 @@ public final class StickerManagementActivity extends PassphraseRequiredActionBar
|
|||||||
|
|
||||||
private final DynamicTheme dynamicTheme = new DynamicTheme();
|
private final DynamicTheme dynamicTheme = new DynamicTheme();
|
||||||
|
|
||||||
private RecyclerView list;
|
private RecyclerView list;
|
||||||
private StickerManagementAdapter adapter;
|
private StickerManagementAdapter adapter;
|
||||||
|
|
||||||
private StickerManagementViewModel viewModel;
|
private StickerManagementViewModel viewModel;
|
||||||
|
|
||||||
public static Intent getIntent(@NonNull Context context) {
|
public static Intent getIntent(@NonNull Context context) {
|
||||||
@ -96,6 +97,7 @@ public final class StickerManagementActivity extends PassphraseRequiredActionBar
|
|||||||
|
|
||||||
list.setLayoutManager(new LinearLayoutManager(this));
|
list.setLayoutManager(new LinearLayoutManager(this));
|
||||||
list.setAdapter(adapter);
|
list.setAdapter(adapter);
|
||||||
|
new ItemTouchHelper(new StickerManagementItemTouchHelper(new ItemTouchCallback())).attachToRecyclerView(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initToolbar() {
|
private void initToolbar() {
|
||||||
@ -114,4 +116,21 @@ public final class StickerManagementActivity extends PassphraseRequiredActionBar
|
|||||||
adapter.setPackLists(packResult.getInstalledPacks(), packResult.getAvailablePacks(), packResult.getBlessedPacks());
|
adapter.setPackLists(packResult.getInstalledPacks(), packResult.getAvailablePacks(), packResult.getBlessedPacks());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class ItemTouchCallback implements StickerManagementItemTouchHelper.Callback {
|
||||||
|
@Override
|
||||||
|
public boolean onMove(int start, int end) {
|
||||||
|
return adapter.onMove(start, end);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isMovable(int position) {
|
||||||
|
return adapter.isMovable(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMoveCommitted() {
|
||||||
|
viewModel.onOrderChanged(adapter.getInstalledPacksInOrder());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,7 @@ import org.thoughtcrime.securesms.util.adapter.SectionedRecyclerViewAdapter;
|
|||||||
import org.thoughtcrime.securesms.util.adapter.StableIdGenerator;
|
import org.thoughtcrime.securesms.util.adapter.StableIdGenerator;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
final class StickerManagementAdapter extends SectionedRecyclerViewAdapter<String, StickerManagementAdapter.StickerSection> {
|
final class StickerManagementAdapter extends SectionedRecyclerViewAdapter<String, StickerManagementAdapter.StickerSection> {
|
||||||
@ -93,6 +94,30 @@ final class StickerManagementAdapter extends SectionedRecyclerViewAdapter<String
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean onMove(int start, int end) {
|
||||||
|
StickerSection installed = sections.get(0);
|
||||||
|
|
||||||
|
if (!installed.isContent(start)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!installed.isContent(end)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
installed.swap(start, end);
|
||||||
|
notifyItemMoved(start, end);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isMovable(int position) {
|
||||||
|
return sections.get(0).isContent(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull List<StickerPackRecord> getInstalledPacksInOrder() {
|
||||||
|
return sections.get(0).records;
|
||||||
|
}
|
||||||
|
|
||||||
void setPackLists(@NonNull List<StickerPackRecord> installedPacks,
|
void setPackLists(@NonNull List<StickerPackRecord> installedPacks,
|
||||||
@NonNull List<StickerPackRecord> availablePacks,
|
@NonNull List<StickerPackRecord> availablePacks,
|
||||||
@NonNull List<StickerPackRecord> blessedPacks)
|
@NonNull List<StickerPackRecord> blessedPacks)
|
||||||
@ -185,6 +210,21 @@ final class StickerManagementAdapter extends SectionedRecyclerViewAdapter<String
|
|||||||
((StickerViewHolder) viewHolder).bind(glideRequests, eventListener, records.get(localPosition - 1), localPosition == records.size());
|
((StickerViewHolder) viewHolder).bind(glideRequests, eventListener, records.get(localPosition - 1), localPosition == records.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void swap(int start, int end) {
|
||||||
|
int localStart = getLocalPosition(start) - 1;
|
||||||
|
int localEnd = getLocalPosition(end) - 1;
|
||||||
|
|
||||||
|
if (localStart < localEnd) {
|
||||||
|
for (int i = localStart; i < localEnd; i++) {
|
||||||
|
Collections.swap(records, i, i + 1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (int i = localStart; i > localEnd; i--) {
|
||||||
|
Collections.swap(records, i, i - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static class StickerViewHolder extends RecyclerView.ViewHolder {
|
static class StickerViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
package org.thoughtcrime.securesms.stickers;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
public class StickerManagementItemTouchHelper extends ItemTouchHelper.Callback {
|
||||||
|
|
||||||
|
private final Callback callback;
|
||||||
|
|
||||||
|
public StickerManagementItemTouchHelper(Callback callback) {
|
||||||
|
this.callback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isLongPressDragEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isItemViewSwipeEnabled() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
|
||||||
|
if (callback.isMovable(viewHolder.getAdapterPosition())) {
|
||||||
|
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
|
||||||
|
return makeMovementFlags(dragFlags, 0);
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
|
||||||
|
return callback.onMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearView(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
|
||||||
|
super.clearView(recyclerView, viewHolder);
|
||||||
|
callback.onMoveCommitted();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface Callback {
|
||||||
|
/**
|
||||||
|
* @return True if both the start and end positions are valid, and therefore the move will occur.
|
||||||
|
*/
|
||||||
|
boolean onMove(int start, int end);
|
||||||
|
void onMoveCommitted();
|
||||||
|
boolean isMovable(int position);
|
||||||
|
}
|
||||||
|
}
|
@ -100,6 +100,12 @@ final class StickerManagementRepository {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setPackOrder(@NonNull List<StickerPackRecord> packsInOrder) {
|
||||||
|
SignalExecutors.SERIAL.execute(() -> {
|
||||||
|
stickerDatabase.updatePackOrder(packsInOrder);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
static class PackResult {
|
static class PackResult {
|
||||||
|
|
||||||
private final List<StickerPackRecord> installedPacks;
|
private final List<StickerPackRecord> installedPacks;
|
||||||
|
@ -10,8 +10,12 @@ import android.os.Handler;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.database.DatabaseContentProviders;
|
import org.thoughtcrime.securesms.database.DatabaseContentProviders;
|
||||||
|
import org.thoughtcrime.securesms.database.model.StickerPackRecord;
|
||||||
|
import org.thoughtcrime.securesms.database.model.StickerRecord;
|
||||||
import org.thoughtcrime.securesms.stickers.StickerManagementRepository.PackResult;
|
import org.thoughtcrime.securesms.stickers.StickerManagementRepository.PackResult;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
final class StickerManagementViewModel extends ViewModel {
|
final class StickerManagementViewModel extends ViewModel {
|
||||||
|
|
||||||
private final Application application;
|
private final Application application;
|
||||||
@ -56,6 +60,10 @@ final class StickerManagementViewModel extends ViewModel {
|
|||||||
repository.installStickerPack(packId, packKey, false);
|
repository.installStickerPack(packId, packKey, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void onOrderChanged(List<StickerPackRecord> packsInOrder) {
|
||||||
|
repository.setPackOrder(packsInOrder);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCleared() {
|
protected void onCleared() {
|
||||||
application.getContentResolver().unregisterContentObserver(observer);
|
application.getContentResolver().unregisterContentObserver(observer);
|
||||||
|
@ -127,6 +127,10 @@ public abstract class SectionedRecyclerViewAdapter<IdType, SectionImpl extends S
|
|||||||
return localPosition >= 0 && localPosition < size();
|
return localPosition >= 0 && localPosition < size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isContent(int globalPosition) {
|
||||||
|
return handles(globalPosition) && getViewType(globalPosition) == TYPE_CONTENT;
|
||||||
|
}
|
||||||
|
|
||||||
public final int size() {
|
public final int size() {
|
||||||
if (getContentSize() == 0 && hasEmptyState()) {
|
if (getContentSize() == 0 && hasEmptyState()) {
|
||||||
return 2;
|
return 2;
|
||||||
|
17
app/src/main/res/drawable-v21/selectable_background_dark.xml
Normal file
17
app/src/main/res/drawable-v21/selectable_background_dark.xml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ripple
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="@color/transparent_white_20">
|
||||||
|
|
||||||
|
<item android:id="@+id/mask">
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/transparent_black" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle" >
|
||||||
|
<solid android:color="@color/core_grey_95"/>
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</ripple>
|
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ripple
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:color="@color/transparent_black_20">
|
||||||
|
|
||||||
|
<item android:id="@+id/mask">
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/transparent_black" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle" >
|
||||||
|
<solid android:color="@color/core_white"/>
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</ripple>
|
@ -8,7 +8,7 @@
|
|||||||
android:layout_marginBottom="8dp"
|
android:layout_marginBottom="8dp"
|
||||||
android:paddingStart="@dimen/sticker_management_horizontal_margin"
|
android:paddingStart="@dimen/sticker_management_horizontal_margin"
|
||||||
android:paddingEnd="@dimen/sticker_management_horizontal_margin"
|
android:paddingEnd="@dimen/sticker_management_horizontal_margin"
|
||||||
android:background="?selectableItemBackground">
|
android:background="?sticker_management_item_background">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/sticker_management_cover"
|
android:id="@+id/sticker_management_cover"
|
||||||
|
@ -232,6 +232,7 @@
|
|||||||
<attr name="sticker_management_divider_color" format="color" />
|
<attr name="sticker_management_divider_color" format="color" />
|
||||||
<attr name="sticker_management_empty_background_color" format="color" />
|
<attr name="sticker_management_empty_background_color" format="color" />
|
||||||
<attr name="sticker_management_action_button_color" format="color" />
|
<attr name="sticker_management_action_button_color" format="color" />
|
||||||
|
<attr name="sticker_management_item_background" format="color" />
|
||||||
<attr name="sticker_popup_background" format="color" />
|
<attr name="sticker_popup_background" format="color" />
|
||||||
<attr name="sticker_preview_toolbar_background" format="color" />
|
<attr name="sticker_preview_toolbar_background" format="color" />
|
||||||
<attr name="sticker_preview_status_bar_color" format="color" />
|
<attr name="sticker_preview_status_bar_color" format="color" />
|
||||||
|
@ -358,6 +358,7 @@
|
|||||||
<item name="sticker_management_divider_color">@color/core_grey_15</item>
|
<item name="sticker_management_divider_color">@color/core_grey_15</item>
|
||||||
<item name="sticker_management_empty_background_color">@color/core_grey_05</item>
|
<item name="sticker_management_empty_background_color">@color/core_grey_05</item>
|
||||||
<item name="sticker_management_action_button_color">@color/core_grey_90</item>
|
<item name="sticker_management_action_button_color">@color/core_grey_90</item>
|
||||||
|
<item name="sticker_management_item_background">@drawable/selectable_background_light</item>
|
||||||
<item name="sticker_popup_background">@color/transparent_white_60</item>
|
<item name="sticker_popup_background">@color/transparent_white_60</item>
|
||||||
<item name="sticker_preview_toolbar_background">@color/core_white</item>
|
<item name="sticker_preview_toolbar_background">@color/core_white</item>
|
||||||
<item name="sticker_preview_status_bar_color">@color/core_grey_05</item>
|
<item name="sticker_preview_status_bar_color">@color/core_grey_05</item>
|
||||||
@ -600,6 +601,7 @@
|
|||||||
<item name="sticker_management_divider_color">@color/core_grey_75</item>
|
<item name="sticker_management_divider_color">@color/core_grey_75</item>
|
||||||
<item name="sticker_management_empty_background_color">@color/core_grey_85</item>
|
<item name="sticker_management_empty_background_color">@color/core_grey_85</item>
|
||||||
<item name="sticker_management_action_button_color">@color/core_grey_25</item>
|
<item name="sticker_management_action_button_color">@color/core_grey_25</item>
|
||||||
|
<item name="sticker_management_item_background">@drawable/selectable_background_dark</item>
|
||||||
<item name="sticker_popup_background">@color/transparent_black_60</item>
|
<item name="sticker_popup_background">@color/transparent_black_60</item>
|
||||||
<item name="sticker_preview_toolbar_background">@color/core_grey_95</item>
|
<item name="sticker_preview_toolbar_background">@color/core_grey_95</item>
|
||||||
<item name="sticker_preview_status_bar_color">@color/core_grey_85</item>
|
<item name="sticker_preview_status_bar_color">@color/core_grey_85</item>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user