Compare commits

..

55 Commits

Author SHA1 Message Date
LucasGGamerM
338d8405c0 Bump version number 2022-12-22 18:00:31 -03:00
LucasGGamerM
2169afa8e7 Merge remote-tracking branch 'origin/master' 2022-12-22 15:49:09 -03:00
LucasGGamerM
508ec06d93 Bump version number 2022-12-22 15:48:38 -03:00
LucasGGamerM
9fb39d9403 Making it compile again 2022-12-22 15:46:09 -03:00
sk
4879d74f80 implement followed hashtags list
closes sk22/megalodon#162
2022-12-22 15:36:02 -03:00
LucasGGamerM
ba3f6c4f95 Changing stuff back to moshidon again 2022-12-22 15:32:32 -03:00
LucasGGamerM
481241c4f6 Using fluent icon instead of normal icon for the color picker 2022-12-22 14:58:16 -03:00
LucasGGamerM
5798587dc6 merge branch 'feature/more_html_tags' 2022-12-22 14:50:15 -03:00
sk
066e3e08a2 disable boost button if disabled
closes #180
2022-12-22 14:49:21 -03:00
sk
16d6c14633 try to open link previews in app 2022-12-22 14:49:16 -03:00
sk
80a4a3551c match navigation bar color with toolbar 2022-12-22 14:47:57 -03:00
LucasGGamerM
74f3bb8708 Adding notification icons for different stuff, and fixing the color of the compose_shortcut thing 2022-12-22 14:46:06 -03:00
sk
c3e398b3c2 use color attributes instead of fixed colors 2022-12-22 14:33:46 -03:00
sk
dcfa812c83 fix media upload colors 2022-12-22 14:30:41 -03:00
sk
065e65d708 reset state on boost long click 2022-12-22 14:30:37 -03:00
sk
bca0dab381 add long-click to "quote" 2022-12-22 14:29:34 -03:00
sk
4a45c1055e only perform fedi lookup if looks like fedi url 2022-12-22 14:19:04 -03:00
sk
7c789746ce resolve fediverse links in app
closes sk22#177
closes sk22#96
2022-12-22 14:19:03 -03:00
sk
f46ce5576c reuse old brownish gray and move colors 2022-12-22 14:15:36 -03:00
sk
730e6fc1fa fix wrong default visibility in popup
closes sk22#174
2022-12-22 14:15:18 -03:00
sk
cb36cc042c move button text/background to styles 2022-12-22 14:15:05 -03:00
sk
5d586418f9 add toolbar background color 2022-12-22 14:15:05 -03:00
sk22
44f1d026d6 Translated using Weblate (German)
Currently translated at 100.0% (70 of 70 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2022-12-22 14:14:41 -03:00
jonta
defaa1095c Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (62 of 62 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2022-12-22 14:14:34 -03:00
gallegonovato
c67f2f8027 Translated using Weblate (Spanish)
Currently translated at 100.0% (62 of 62 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2022-12-22 14:14:28 -03:00
Radiquum
452128565f Translated using Weblate (Russian)
Currently translated at 100.0% (62 of 62 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2022-12-22 14:14:23 -03:00
Linerly
6322d3c984 Translated using Weblate (Indonesian)
Currently translated at 100.0% (62 of 62 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2022-12-22 14:14:18 -03:00
Choukajohn
d68c820e58 Translated using Weblate (French)
Currently translated at 100.0% (62 of 62 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2022-12-22 14:14:13 -03:00
AiOO
79f37b4813 Translated using Weblate (Korean)
Currently translated at 100.0% (62 of 62 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2022-12-22 14:14:07 -03:00
LucasGGamerM
87460a2fb6 Making it work again just in case idk 2022-12-22 11:52:43 -03:00
LucasGGamerM
6774a642d9 Setting purple as default and making it work idk 2022-12-22 11:49:07 -03:00
LucasGGamerM
f0bd9233b7 IT FINALLY FUCKING COMPILES 2022-12-22 11:27:52 -03:00
LucasGGamerM
66efe750a8 Trying to make it compile properly idek wtf to do anymore 2022-12-22 11:24:36 -03:00
sk
3658fc423b simplify themes 2022-12-22 11:08:26 -03:00
sk
3c3ad7447e only load default visibility if not editing
fix mastodon#306
2022-12-22 09:07:41 -03:00
LucasGGamerM
b570064b99 Fixing missing error toast message 2022-12-22 09:03:14 -03:00
LucasGGamerM
d9f6ef69fe Revert "Whatever the fuck this is. Hopefully it compiles on the first try"
This reverts commit bdac1d5bb4.
2022-12-22 09:01:30 -03:00
sk
bdac1d5bb4 Whatever the fuck this is. Hopefully it compiles on the first try 2022-12-22 09:00:51 -03:00
sk
1eee1ead5e merge miui fix for copying text 2022-12-22 08:58:08 -03:00
sk
0ec51f5b34 set pivot point once 2022-12-22 08:57:13 -03:00
sk
6c6fb05a7a fix broken long click 2022-12-22 08:57:08 -03:00
sk
09a0faacba fix bug in bookmark button
closes #167
2022-12-22 08:51:32 -03:00
sk
d0d1d15de5 add option to disable swiping
closes sk22#165
2022-12-22 08:50:25 -03:00
sk
e4e9516d5d copy post URL on long click 2022-12-22 08:48:05 -03:00
sk
05eceecbea move copy text to UiUtils 2022-12-22 08:48:01 -03:00
sk
71ba1bb0d5 restore toast message for android 13+ 2022-12-22 08:47:56 -03:00
sk
2160a26648 add vibration when copying username 2022-12-22 08:47:52 -03:00
sk
5433eac9c9 fix updating wrong status when interacting with reblog
see mastodon#467
2022-12-22 08:45:55 -03:00
LucasGGamerM
0a68f86200 Update default.html 2022-12-21 19:50:47 -03:00
LucasGGamerM
c91dae0346 Update README.md 2022-12-21 18:04:21 -03:00
LucasGGamerM
e1df7e5077 Update README.md 2022-12-21 18:03:52 -03:00
LucasGGamerM
0560b54559 Bump version number 2022-12-21 17:19:55 -03:00
LucasGGamerM
c78db7e835 Fixing the visibility of the translate button... again. This time I scrolled a lot, so i know its not broken 2022-12-21 17:19:28 -03:00
LucasGGamerM
c837a2d4b6 Bumping version number 2022-12-21 09:28:19 -03:00
LucasGGamerM
70b91b7a9a Fixing npe on timeline 2022-12-21 09:27:16 -03:00
67 changed files with 1327 additions and 1281 deletions

View File

@@ -5,7 +5,7 @@
> A fork of [megalodon](https://github.com/sk22/megalodon) which is a fork of [official Mastodon Android app](https://github.com/mastodon/mastodon-android) adding important features that are missing in the official app and possibly wont ever be implemented, such as the federated timeline, unlisted posting, bookmarks and an image description viewer.
[![Download latest release](https://img.shields.io/badge/dynamic/json?color=d92aad&label=download%20apk&query=%24.tag_name&url=https%3A%2F%2Fapi.github.com%2Frepos%2Fsk22%2Fmastodon-android-fork%2Freleases%2Flatest&style=for-the-badge)](https://github.com/LucasGGamerM/moshidon/releases/latest/download/moshidon.apk)
[![Download latest release](https://img.shields.io/badge/dynamic/json?color=d92aad&label=download%20apk&query=%24.tag_name&url=https%3A%2F%2Fapi.github.com%2Frepos%2FLucasGGamerM%2Fmoshidon%2Freleases%2Flatest&style=for-the-badge)](https://github.com/LucasGGamerM/moshidon/releases/latest/download/moshidon.apk)
---

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Megalodon</title>
<title>Moshidon</title>
<link rel="icon" href="mastodon/src/main/res/mipmap-mdpi/ic_launcher_round.png">
<link rel="me" href="https://floss.social/@mastodon">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.1.0/github-markdown.min.css">
@@ -14,4 +14,4 @@
{{ content }}
</div>
</body>
</html>
</html>

View File

@@ -9,8 +9,8 @@ android {
applicationId "org.joinmastodon.android.moshinda"
minSdk 23
targetSdk 33
versionCode 69
versionName "1.1.4+fork.69.moshinda"
versionCode 72
versionName "1.1.4+fork.72.moshinda"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "nl-rNL", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "vi-rVN", "zh-rCN", "zh-rTW"
}

View File

@@ -4,7 +4,8 @@
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/>
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
@@ -19,7 +20,7 @@
android:localeConfig="@xml/locales_config"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/Theme.Mastodon.AutoLightDark.Original"
android:theme="@style/Theme.Mastodon.AutoLightDark"
android:largeHeap="true">
<activity android:name=".MainActivity" android:exported="true" android:configChanges="orientation|screenSize" android:windowSoftInputMode="adjustResize" android:launchMode="singleTask">

View File

@@ -52,7 +52,8 @@ public class ExternalShareActivity extends FragmentStackActivity{
Intent intent=getIntent();
StringBuilder builder=new StringBuilder();
if (intent.hasExtra(Intent.EXTRA_SUBJECT)) builder.append(intent.getStringExtra(Intent.EXTRA_SUBJECT)).append("\n");
String subject = "";
if (intent.hasExtra(Intent.EXTRA_SUBJECT)) builder.append(subject = intent.getStringExtra(Intent.EXTRA_SUBJECT)).append("\n\n");
if (intent.hasExtra(Intent.EXTRA_TEXT)) builder.append(intent.getStringExtra(Intent.EXTRA_TEXT)).append("\n");
String text=builder.toString();
List<Uri> mediaUris;
@@ -80,6 +81,8 @@ public class ExternalShareActivity extends FragmentStackActivity{
args.putString("account", accountID);
if(!TextUtils.isEmpty(text))
args.putString("prefilledText", text);
if(!subject.isBlank())
args.putInt("selectionEnd", subject.length());
if(mediaUris!=null && !mediaUris.isEmpty())
args.putParcelableArrayList("mediaAttachments", toArrayList(mediaUris));
Fragment fragment=new ComposeFragment();

View File

@@ -25,13 +25,13 @@ public class GlobalUserPreferences{
public static boolean showInteractionCounts;
public static boolean alwaysExpandContentWarnings;
public static boolean disableMarquee;
public static boolean disableSwipe;
public static boolean voteButtonForSingleChoice;
public static ThemePreference theme;
public static ColorPreference color;
private final static Type recentLanguagesType = new TypeToken<Map<String, List<String>>>() {}.getType();
public static Map<String, List<String>> recentLanguages;
public static Map<String, String> defaultLanguages;
private static SharedPreferences getPrefs(){
return MastodonApp.context.getSharedPreferences("global", Context.MODE_PRIVATE);
@@ -54,15 +54,21 @@ public class GlobalUserPreferences{
showInteractionCounts=prefs.getBoolean("showInteractionCounts", false);
alwaysExpandContentWarnings=prefs.getBoolean("alwaysExpandContentWarnings", false);
disableMarquee=prefs.getBoolean("disableMarquee", false);
disableSwipe=prefs.getBoolean("disableSwipe", false);
voteButtonForSingleChoice=prefs.getBoolean("voteButtonForSingleChoice", true);
theme=ThemePreference.values()[prefs.getInt("theme", 0)];
recentLanguages=fromJson(prefs.getString("recentLanguages", "{}"), recentLanguagesType, new HashMap<>());
if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){
color=ColorPreference.values()[prefs.getInt("color", 0)];
}else{
color=ColorPreference.values()[prefs.getInt("color", 1)];
}
try {
if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){
color=ColorPreference.valueOf(prefs.getString("color", ColorPreference.MATERIAL3.name()));
}else{
color=ColorPreference.PURPLE;
}
} catch (IllegalArgumentException|ClassCastException ignored) {
// invalid color name or color was previously saved as integer
color=ColorPreference.PURPLE;
}
}
public static void save(){
@@ -77,21 +83,22 @@ public class GlobalUserPreferences{
.putBoolean("showInteractionCounts", showInteractionCounts)
.putBoolean("alwaysExpandContentWarnings", alwaysExpandContentWarnings)
.putBoolean("disableMarquee", disableMarquee)
.putBoolean("disableSwipe", disableSwipe)
.putInt("theme", theme.ordinal())
.putString("color", color.name())
.putString("recentLanguages", gson.toJson(recentLanguages))
.putInt("color", color.ordinal())
.apply();
}
public enum ColorPreference{
MATERIAL3,
PURPLE,
PINK,
PURPLE,
GREEN,
BLUE,
ORANGE,
YELLOW,
RED
BROWN,
RED,
YELLOW
}
public enum ThemePreference{
@@ -100,3 +107,4 @@ public class GlobalUserPreferences{
DARK
}
}

View File

@@ -137,13 +137,20 @@ public class PushNotificationReceiver extends BroadcastReceiver{
builder.setContentTitle(pn.title)
.setContentText(pn.body)
.setStyle(new Notification.BigTextStyle().bigText(pn.body))
.setSmallIcon(R.drawable.ic_ntf_logo)
.setContentIntent(PendingIntent.getActivity(context, accountID.hashCode() & 0xFFFF, contentIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT))
.setWhen(notification==null ? System.currentTimeMillis() : notification.createdAt.toEpochMilli())
.setShowWhen(true)
.setCategory(Notification.CATEGORY_SOCIAL)
.setAutoCancel(true)
.setColor(context.getColor(R.color.shortcut_icon_background));
switch (pn.notificationType) {
case FAVORITE -> builder.setSmallIcon(R.drawable.ic_fluent_star_24_filled);
case REBLOG -> builder.setSmallIcon(R.drawable.ic_fluent_arrow_repeat_all_24_filled);
case FOLLOW -> builder.setSmallIcon(R.drawable.ic_fluent_person_add_24_filled);
case MENTION -> builder.setSmallIcon(R.drawable.ic_fluent_mention_24_filled);
case POLL -> builder.setSmallIcon(R.drawable.ic_fluent_poll_24_filled);
default -> builder.setSmallIcon(R.drawable.ic_ntf_logo);
}
if(avatar!=null){
builder.setLargeIcon(UiUtils.getBitmapFromDrawable(avatar));
}

View File

@@ -20,6 +20,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import androidx.annotation.CallSuper;
import androidx.annotation.StringRes;
@@ -101,9 +102,14 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
}
public MastodonAPIRequest<T> wrapProgress(Activity activity, @StringRes int message, boolean cancelable){
return wrapProgress(activity, message, cancelable, null);
}
public MastodonAPIRequest<T> wrapProgress(Activity activity, @StringRes int message, boolean cancelable, Consumer<ProgressDialog> transform){
progressDialog=new ProgressDialog(activity);
progressDialog.setMessage(activity.getString(message));
progressDialog.setCancelable(cancelable);
if (transform != null) transform.accept(progressDialog);
if(cancelable){
progressDialog.setOnCancelListener(dialog->cancel());
}

View File

@@ -0,0 +1,24 @@
package org.joinmastodon.android.api.requests.tags;
import com.google.gson.reflect.TypeToken;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.api.requests.HeaderPaginationRequest;
import org.joinmastodon.android.model.Hashtag;
import java.util.List;
public class GetFollowedHashtags extends HeaderPaginationRequest<Hashtag> {
public GetFollowedHashtags(String maxID, String minID, int limit, String sinceID){
super(HttpMethod.GET, "/followed_tags", new TypeToken<>(){});
if(maxID!=null)
addQueryParameter("max_id", maxID);
if(minID!=null)
addQueryParameter("min_id", minID);
if(sinceID!=null)
addQueryParameter("since_id", sinceID);
if(limit>0)
addQueryParameter("limit", ""+limit);
}
}

View File

@@ -787,7 +787,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
currentMediaHiddenLayoutsWidth=width;
String title=getString(R.string.sensitive_content);
TextPaint titlePaint=new TextPaint(Paint.ANTI_ALIAS_FLAG);
titlePaint.setColor(getResources().getColor(R.color.gray_50));
titlePaint.setColor(UiUtils.getThemeColor(getContext(), R.attr.colorGray50));
titlePaint.setTextSize(V.dp(22));
titlePaint.setTypeface(mediumTypeface);
mediaHiddenTitleLayout=StaticLayout.Builder.obtain(title, 0, title.length(), titlePaint, width)
@@ -798,7 +798,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
.setAlignment(Layout.Alignment.ALIGN_CENTER)
.build();
TextPaint textPaint=new TextPaint(Paint.ANTI_ALIAS_FLAG);
textPaint.setColor(getResources().getColor(R.color.gray_200));
textPaint.setColor(UiUtils.getThemeColor(getContext(), R.attr.colorGray200));
textPaint.setTextSize(V.dp(16));
String text=getString(R.string.sensitive_content_explain);
mediaHiddenTextLayout=StaticLayout.Builder.obtain(text, 0, text.length(), textPaint, width)

View File

@@ -203,10 +203,14 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
private String language;
private MastodonLanguage.LanguageResolver languageResolver;
private int navigationBarColorBefore;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setRetainInstance(true);
navigationBarColorBefore = getActivity().getWindow().getNavigationBarColor();
getActivity().getWindow().setNavigationBarColor(UiUtils.getThemeColor(getActivity(), R.attr.colorBackgroundLightest));
accountID=getArguments().getString("account");
AccountSession session=AccountSessionManager.getInstance().getAccount(accountID);
@@ -233,6 +237,8 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
charLimit=instance.configuration.statuses.maxCharacters;
else
charLimit=500;
if (editingStatus == null) loadDefaultStatusVisibility(savedInstanceState);
}
@Override
@@ -246,6 +252,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
UiUtils.removeCallbacks(updateUploadEtaRunnable);
updateUploadEtaRunnable=null;
}
getActivity().getWindow().setNavigationBarColor(navigationBarColorBefore);
}
@Override
@@ -392,6 +399,12 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
loadDefaultStatusVisibility(savedInstanceState);
updateVisibilityIcon();
visibilityPopup.getMenu().findItem(switch(statusVisibility){
case PUBLIC -> R.id.vis_public;
case UNLISTED -> R.id.vis_unlisted;
case PRIVATE -> R.id.vis_followers;
case DIRECT -> R.id.vis_private;
}).setChecked(true);
autocompleteViewController=new ComposeAutocompleteViewController(getActivity(), accountID);
autocompleteViewController.setCompletionSelectedListener(this::onAutocompleteOptionSelected);
@@ -595,6 +608,11 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
ignoreSelectionChanges=false;
initialText=prefilledText;
}
if (getArguments().containsKey("selectionStart") || getArguments().containsKey("selectionEnd")) {
int selectionStart=getArguments().getInt("selectionStart", 0);
int selectionEnd=getArguments().getInt("selectionEnd", selectionStart);
mainEditText.setSelection(selectionStart, selectionEnd);
}
ArrayList<Uri> mediaUris=getArguments().getParcelableArrayList("mediaAttachments");
if(mediaUris!=null && !mediaUris.isEmpty()){
for(Uri uri:mediaUris){
@@ -1405,12 +1423,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
Menu m=visibilityPopup.getMenu();
UiUtils.enablePopupMenuIcons(getActivity(), visibilityPopup);
m.setGroupCheckable(0, true, true);
m.findItem(switch(statusVisibility){
case PUBLIC -> R.id.vis_public;
case UNLISTED -> R.id.vis_unlisted;
case PRIVATE -> R.id.vis_followers;
case DIRECT -> R.id.vis_private;
}).setChecked(true);
visibilityPopup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){
@Override
public boolean onMenuItemClick(MenuItem item){

View File

@@ -0,0 +1,107 @@
package org.joinmastodon.android.fragments;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.requests.tags.GetFollowedHashtags;
import org.joinmastodon.android.model.Hashtag;
import org.joinmastodon.android.model.HeaderPaginationList;
import org.joinmastodon.android.ui.utils.UiUtils;
import me.grishka.appkit.api.SimpleCallback;
import me.grishka.appkit.fragments.BaseRecyclerFragment;
import me.grishka.appkit.utils.BindableViewHolder;
import me.grishka.appkit.views.UsableRecyclerView;
public class FollowedHashtagsFragment extends BaseRecyclerFragment<Hashtag> implements ScrollableToTop {
private String nextMaxID;
private String accountId;
public FollowedHashtagsFragment() {
super(20);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args=getArguments();
accountId=args.getString("account");
setTitle(R.string.sk_hashtags_you_follow);
}
@Override
protected void onShown(){
super.onShown();
if(!getArguments().getBoolean("noAutoLoad") && !loaded && !dataLoading)
loadData();
}
@Override
protected void doLoadData(int offset, int count){
currentRequest=new GetFollowedHashtags(offset==0 ? null : nextMaxID, null, count, null)
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(HeaderPaginationList<Hashtag> result){
if(result.nextPageUri!=null)
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
else
nextMaxID=null;
onDataLoaded(result, nextMaxID!=null);
}
})
.exec(accountId);
}
@Override
protected RecyclerView.Adapter getAdapter() {
return new HashtagsAdapter();
}
@Override
public void scrollToTop() {
smoothScrollRecyclerViewToTop(list);
}
private class HashtagsAdapter extends RecyclerView.Adapter<HashtagViewHolder>{
@NonNull
@Override
public HashtagViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
return new HashtagViewHolder();
}
@Override
public void onBindViewHolder(@NonNull HashtagViewHolder holder, int position) {
holder.bind(data.get(position));
}
@Override
public int getItemCount() {
return data.size();
}
}
private class HashtagViewHolder extends BindableViewHolder<Hashtag> implements UsableRecyclerView.Clickable{
private final TextView title;
public HashtagViewHolder(){
super(getActivity(), R.layout.item_text, list);
title=findViewById(R.id.title);
}
@Override
public void onBind(Hashtag item) {
title.setText(item.name);
title.setCompoundDrawablesRelativeWithIntrinsicBounds(itemView.getContext().getDrawable(R.drawable.ic_fluent_number_symbol_24_regular), null, null, null);
}
@Override
public void onClick() {
UiUtils.openHashtagTimeline(getActivity(), accountId, item.name, item.following);
}
}
}

View File

@@ -1,14 +1,9 @@
package org.joinmastodon.android.fragments;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -23,17 +18,13 @@ import org.joinmastodon.android.model.ListTimeline;
import org.joinmastodon.android.ui.utils.UiUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import me.grishka.appkit.api.ErrorResponse;
import me.grishka.appkit.api.SimpleCallback;
import me.grishka.appkit.fragments.BaseRecyclerFragment;
import me.grishka.appkit.utils.BindableViewHolder;
import me.grishka.appkit.utils.V;
import me.grishka.appkit.views.UsableRecyclerView;
public class ListTimelinesFragment extends BaseRecyclerFragment<ListTimeline> implements ScrollableToTop {
@@ -159,7 +150,7 @@ public class ListTimelinesFragment extends BaseRecyclerFragment<ListTimeline> im
private final CheckBox listToggle;
public ListViewHolder(){
super(getActivity(), R.layout.item_list_timeline, list);
super(getActivity(), R.layout.item_text, list);
title=findViewById(R.id.title);
listToggle=findViewById(R.id.list_toggle);
}
@@ -167,8 +158,10 @@ public class ListTimelinesFragment extends BaseRecyclerFragment<ListTimeline> im
@Override
public void onBind(ListTimeline item) {
title.setText(item.title);
title.setCompoundDrawablesRelativeWithIntrinsicBounds(itemView.getContext().getDrawable(R.drawable.ic_fluent_people_community_24_regular), null, null, null);
if (profileAccountId != null) {
Boolean checked = userInList.get(item.id);
listToggle.setVisibility(View.VISIBLE);
listToggle.setChecked(userInList.containsKey(item.id) && checked != null && checked);
listToggle.setOnClickListener(this::onClickToggle);
} else {

View File

@@ -14,6 +14,7 @@ import android.widget.FrameLayout;
import android.widget.LinearLayout;
import org.joinmastodon.android.E;
import org.joinmastodon.android.GlobalUserPreferences;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.requests.accounts.GetFollowRequests;
import org.joinmastodon.android.events.FollowRequestHandledEvent;
@@ -109,6 +110,7 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc
tabLayout.setTabTextColors(UiUtils.getThemeColor(getActivity(), R.attr.colorTabInactive), UiUtils.getThemeColor(getActivity(), android.R.attr.textColorPrimary));
pager.setOffscreenPageLimit(4);
pager.setUserInputEnabled(!GlobalUserPreferences.disableSwipe);
pager.setAdapter(new DiscoverPagerAdapter());
pager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback(){
@Override

View File

@@ -10,6 +10,7 @@ import android.app.Activity;
import android.app.Fragment;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Outline;
@@ -18,6 +19,8 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.ImageSpan;
@@ -234,6 +237,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
}
pager.setOffscreenPageLimit(5);
pager.setUserInputEnabled(!GlobalUserPreferences.disableSwipe);
pager.setAdapter(new ProfilePagerAdapter());
pager.getLayoutParams().height=getResources().getDisplayMetrics().heightPixels;
@@ -288,10 +292,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
if(!username.contains("@")){
username+="@"+AccountSessionManager.getInstance().getAccount(accountID).domain;
}
getActivity().getSystemService(ClipboardManager.class).setPrimaryClip(ClipData.newPlainText(null, "@"+username));
if(Build.VERSION.SDK_INT<Build.VERSION_CODES.TIRAMISU){ // Android 13+ SystemUI shows its own thing when you put things into the clipboard
Toast.makeText(getActivity(), R.string.text_copied, Toast.LENGTH_SHORT).show();
}
UiUtils.copyText(getActivity(), '@'+username);
return true;
});
@@ -623,6 +624,10 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
args.putString("profileAccount", profileAccountID);
args.putString("profileDisplayUsername", account.getDisplayUsername());
Nav.go(getActivity(), ListTimelinesFragment.class, args);
}else if(id==R.id.followed_hashtags){
Bundle args=new Bundle();
args.putString("account", accountID);
Nav.go(getActivity(), FollowedHashtagsFragment.class, args);
}
return true;
}

View File

@@ -121,6 +121,11 @@ public class SettingsFragment extends MastodonToolbarFragment{
GlobalUserPreferences.alwaysExpandContentWarnings=i.checked;
GlobalUserPreferences.save();
}));
items.add(new SwitchItem(R.string.sk_tabs_disable_swipe, R.drawable.ic_fluent_swipe_right_24_regular, GlobalUserPreferences.disableSwipe, i->{
GlobalUserPreferences.disableSwipe=i.checked;
GlobalUserPreferences.save();
needAppRestart=true;
}));
items.add(new HeaderItem(R.string.home_timeline));
items.add(new SwitchItem(R.string.sk_settings_show_replies, R.drawable.ic_fluent_chat_multiple_24_regular, GlobalUserPreferences.showReplies, i->{
@@ -705,7 +710,7 @@ public class SettingsFragment extends MastodonToolbarFragment{
onColorPreferenceClick(pref);
}
else if(id==R.id.orange_color) {
pref = GlobalUserPreferences.ColorPreference.ORANGE;
pref = ColorPreference.BROWN;
onColorPreferenceClick(pref);
}
else if(id==R.id.yellow_color) {
@@ -720,9 +725,6 @@ public class SettingsFragment extends MastodonToolbarFragment{
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
pref = GlobalUserPreferences.ColorPreference.MATERIAL3;
onColorPreferenceClick(pref);
}else{
Toast.makeText(getActivity(), R.string.sk_not_supported,
Toast.LENGTH_LONG).show();
}
}
else
@@ -737,16 +739,16 @@ public class SettingsFragment extends MastodonToolbarFragment{
@Override
public void onBind(ColorPicker item){
icon.setImageResource(R.drawable.ic_color_theme_preference);
icon.setImageResource(R.drawable.ic_fluent_color_24_regular);
button.setText(switch(GlobalUserPreferences.color){
case PINK -> R.string.sk_color_theme_pink;
case PURPLE -> R.string.sk_color_theme_purple;
case GREEN -> R.string.sk_color_theme_green;
case BLUE -> R.string.sk_color_theme_blue;
case ORANGE -> R.string.sk_color_theme_brown;
case YELLOW -> R.string.sk_color_theme_yellow;
case RED -> R.string.sk_color_theme_red;
case MATERIAL3 -> R.string.sk_color_theme_material3;
case PINK -> R.string.sk_color_palette_pink;
case PURPLE -> R.string.sk_color_palette_purple;
case GREEN -> R.string.sk_color_palette_green;
case BLUE -> R.string.sk_color_palette_blue;
case BROWN -> R.string.sk_color_palette_brown;
case YELLOW -> R.string.sk_color_palette_yellow;
case RED -> R.string.sk_color_palette_red;
case MATERIAL3 -> R.string.sk_color_palette_material3;
});
}
}

View File

@@ -177,7 +177,7 @@ public abstract class StatusListFragment extends BaseStatusListFragment<Status>{
public void onStatusCountersUpdated(StatusCountersUpdatedEvent ev){
for(Status s:data){
if(s.getContentStatus().id.equals(ev.id)){
s.update(ev);
s.getContentStatus().update(ev);
for(int i=0;i<list.getChildCount();i++){
RecyclerView.ViewHolder holder=list.getChildViewHolder(list.getChildAt(i));
if(holder instanceof FooterStatusDisplayItem.Holder footer && footer.getItem().status==s.getContentStatus()){

View File

@@ -104,6 +104,7 @@ public class DiscoverFragment extends AppKitFragment implements ScrollableToTop,
tabLayout.setTabTextColors(UiUtils.getThemeColor(getActivity(), R.attr.colorTabInactive), UiUtils.getThemeColor(getActivity(), android.R.attr.textColorPrimary));
pager.setOffscreenPageLimit(4);
pager.setUserInputEnabled(!GlobalUserPreferences.disableSwipe);
pager.setAdapter(new DiscoverPagerAdapter());
pager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback(){
@Override

View File

@@ -6,13 +6,13 @@ import android.os.Build;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
@@ -26,8 +26,6 @@ import org.joinmastodon.android.model.StatusPrivacy;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.parceler.Parcels;
import java.text.DecimalFormat;
import me.grishka.appkit.Nav;
import me.grishka.appkit.utils.CubicBezierInterpolator;
import me.grishka.appkit.utils.V;
@@ -53,6 +51,9 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
private final ImageView share;
private static final Animation opacityOut, opacityIn;
private View touchingView = null;
private final Runnable longClickRunnable = () -> { if (touchingView != null) touchingView.performLongClick(); };
private final View.AccessibilityDelegate buttonAccessibilityDelegate=new View.AccessibilityDelegate(){
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info){
@@ -63,12 +64,12 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
};
static {
opacityOut = new AlphaAnimation(1, 0.5f);
opacityOut = new AlphaAnimation(1, 0.7f);
opacityOut.setDuration(200);
opacityOut.setInterpolator(CubicBezierInterpolator.DEFAULT);
opacityOut.setFillAfter(true);
opacityIn = new AlphaAnimation(0.5f, 1);
opacityIn.setDuration(150);
opacityIn = new AlphaAnimation(0.7f, 1);
opacityIn.setDuration(300);
opacityIn.setInterpolator(CubicBezierInterpolator.DEFAULT);
}
@@ -95,6 +96,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
reply.setAccessibilityDelegate(buttonAccessibilityDelegate);
boost.setOnTouchListener(this::onButtonTouch);
boost.setOnClickListener(this::onBoostClick);
boost.setOnLongClickListener(this::onBoostLongClick);
boost.setAccessibilityDelegate(buttonAccessibilityDelegate);
favorite.setOnTouchListener(this::onButtonTouch);
favorite.setOnClickListener(this::onFavoriteClick);
@@ -104,6 +106,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
bookmark.setAccessibilityDelegate(buttonAccessibilityDelegate);
share.setOnTouchListener(this::onButtonTouch);
share.setOnClickListener(this::onShareClick);
share.setOnLongClickListener(this::onShareLongClick);
share.setAccessibilityDelegate(buttonAccessibilityDelegate);
}
@@ -129,28 +132,39 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
}
}
private boolean onButtonTouch(View v, MotionEvent event){
boolean disabled = !v.isEnabled() || (v instanceof FrameLayout parentFrame &&
parentFrame.getChildCount() > 0 && !parentFrame.getChildAt(0).isEnabled());
int action = event.getAction();
long eventDuration = event.getEventTime() - event.getDownTime();
if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
touchingView = null;
v.removeCallbacks(longClickRunnable);
v.animate().scaleX(1).scaleY(1).setInterpolator(CubicBezierInterpolator.DEFAULT).setDuration(150).start();
if (disabled) return true;
if (action == MotionEvent.ACTION_UP && eventDuration < ViewConfiguration.getLongPressTimeout()) v.performClick();
else v.startAnimation(opacityIn);
} else if (action == MotionEvent.ACTION_DOWN) {
touchingView = v;
// 20dp to center in middle of icon, because: (icon width = 24dp) / 2 + (paddingStart = 8dp)
v.setPivotX(V.dp(20));
v.animate().scaleX(0.85f).scaleY(0.85f).setInterpolator(CubicBezierInterpolator.DEFAULT).setDuration(75).start();
if (disabled) return true;
v.postDelayed(longClickRunnable, ViewConfiguration.getLongPressTimeout());
v.startAnimation(opacityOut);
}
return true;
}
private void onReplyClick(View v){
v.startAnimation(opacityIn);
Bundle args=new Bundle();
args.putString("account", item.accountID);
args.putParcelable("replyTo", Parcels.wrap(item.status));
Nav.go(item.parentFragment.getActivity(), ComposeFragment.class, args);
}
private boolean onButtonTouch(View v, MotionEvent event){
int action = event.getAction();
// 20dp to center in middle of icon, because: (icon width = 24dp) / 2 + (paddingStart = 8dp)
v.setPivotX(V.dp(20));
if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
v.animate().scaleX(1).scaleY(1).setInterpolator(CubicBezierInterpolator.DEFAULT).setDuration(100).start();
if (action == MotionEvent.ACTION_UP) v.performClick();
} else if (action == MotionEvent.ACTION_DOWN) {
v.animate().scaleX(0.85f).scaleY(0.85f).setInterpolator(CubicBezierInterpolator.DEFAULT).setDuration(50).start();
}
return true;
}
private void onBoostClick(View v){
v.startAnimation(opacityOut);
boost.setSelected(!item.status.reblogged);
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setReblogged(item.status, !item.status.reblogged, r->{
v.startAnimation(opacityIn);
@@ -158,8 +172,19 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
});
}
private boolean onBoostLongClick(View v){
v.setAlpha(1);
v.setScaleX(1);
v.setScaleY(1);
Bundle args=new Bundle();
args.putString("account", item.accountID);
args.putString("prefilledText", "\n\n" + item.status.url);
args.putInt("selectionStart", 0);
Nav.go(item.parentFragment.getActivity(), ComposeFragment.class, args);
return true;
}
private void onFavoriteClick(View v){
v.startAnimation(opacityOut);
favorite.setSelected(!item.status.favourited);
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setFavorited(item.status, !item.status.favourited, r->{
v.startAnimation(opacityIn);
@@ -168,7 +193,6 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
}
private void onBookmarkClick(View v){
v.startAnimation(opacityOut);
bookmark.setSelected(item.status.bookmarked);
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setBookmarked(item.status, !item.status.bookmarked, r->{
v.startAnimation(opacityIn);
@@ -176,12 +200,18 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
}
private void onShareClick(View v){
v.startAnimation(opacityIn);
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, item.status.url);
v.getContext().startActivity(Intent.createChooser(intent, v.getContext().getString(R.string.share_toot_title)));
}
private boolean onShareLongClick(View v){
UiUtils.copyText(v.getContext(), item.status.url);
return true;
}
private int descriptionForId(int id){
if(id==R.id.reply_btn)
return R.string.button_reply;

View File

@@ -95,7 +95,7 @@ public class LinkCardStatusDisplayItem extends StatusDisplayItem{
}
private void onClick(View v){
UiUtils.launchWebBrowser(itemView.getContext(), item.status.card.url);
UiUtils.openURL(itemView.getContext(), item.parentFragment.getAccountID(), item.status.card.url);
}
}
}

View File

@@ -146,6 +146,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
translateWrap.setVisibility(translateEnabled &&
!item.status.visibility.isLessVisibleThan(StatusPrivacy.UNLISTED) &&
item.status.language != null &&
(item.session.preferences == null || !item.status.language.equalsIgnoreCase(item.session.preferences.postingDefaultLanguage))
? View.VISIBLE : View.GONE);
translateButton.setText(item.translated ? R.string.sk_translate_show_original : R.string.sk_translate_post);

View File

@@ -182,7 +182,7 @@ public class HtmlParser{
ssb.append("", new DeleteWhenCopiedSpan(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}else if(blockElements.contains(el.nodeName()) && node.nextSibling()!=null){
ssb.append("\n"); // line end
ssb.append("\n", new RelativeSizeSpan(0.75f), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // margin after block
ssb.append("\n", new RelativeSizeSpan(0.65f), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // margin after block
}
}
}

View File

@@ -0,0 +1,68 @@
package org.joinmastodon.android.ui.utils;
import static org.joinmastodon.android.GlobalUserPreferences.ColorPreference;
import static org.joinmastodon.android.GlobalUserPreferences.ThemePreference;
import static org.joinmastodon.android.GlobalUserPreferences.theme;
import static org.joinmastodon.android.GlobalUserPreferences.trueBlackTheme;
import android.content.Context;
import android.content.res.Resources;
import androidx.annotation.StyleRes;
import org.joinmastodon.android.GlobalUserPreferences;
import org.joinmastodon.android.R;
import java.util.Map;
public class ColorPalette {
public static final Map<GlobalUserPreferences.ColorPreference, ColorPalette> palettes = Map.of(
ColorPreference.MATERIAL3, new ColorPalette(R.style.ColorPalette_Material3)
.dark(R.style.ColorPalette_Material3_Dark, R.style.ColorPalette_Material3_AutoLightDark),
ColorPreference.PINK, new ColorPalette(R.style.ColorPalette_Pink),
ColorPreference.PURPLE, new ColorPalette(R.style.ColorPalette_Purple),
ColorPreference.GREEN, new ColorPalette(R.style.ColorPalette_Green),
ColorPreference.BLUE, new ColorPalette(R.style.ColorPalette_Blue),
ColorPreference.BROWN, new ColorPalette(R.style.ColorPalette_Brown),
ColorPreference.RED, new ColorPalette(R.style.ColorPalette_Red),
ColorPreference.YELLOW, new ColorPalette(R.style.ColorPalette_Yellow)
);
private @StyleRes int base;
private @StyleRes int autoDark;
private @StyleRes int light;
private @StyleRes int dark;
private @StyleRes int black;
private @StyleRes int autoBlack;
public ColorPalette(@StyleRes int baseRes) { base = baseRes; }
public ColorPalette(@StyleRes int lightRes, @StyleRes int darkRes, @StyleRes int autoDarkRes, @StyleRes int blackRes, @StyleRes int autoBlackRes) {
light = lightRes;
dark = darkRes;
autoDark = autoDarkRes;
black = blackRes;
autoBlack = autoBlackRes;
}
public ColorPalette light(@StyleRes int res) { light = res; return this; }
public ColorPalette dark(@StyleRes int res, @StyleRes int auto) { dark = res; autoDark = auto; return this; }
public ColorPalette black(@StyleRes int res, @StyleRes int auto) { dark = res; autoBlack = auto; return this; }
public void apply(Context context) {
if (!((dark != 0 && autoDark != 0) || (black != 0 && autoBlack != 0) || light != 0 || base != 0)) {
throw new IllegalStateException("Invalid color scheme definition");
}
Resources.Theme t = context.getTheme();
if (base != 0) t.applyStyle(base, true);
if (light != 0 && theme.equals(ThemePreference.LIGHT)) t.applyStyle(light, true);
else if (theme.equals(ThemePreference.DARK)) {
if (dark != 0 && !trueBlackTheme) t.applyStyle(dark, true);
else if (black != 0 && trueBlackTheme) t.applyStyle(black, true);
} else if (theme.equals(ThemePreference.AUTO)) {
if (autoDark != 0 && !trueBlackTheme) t.applyStyle(autoDark, true);
else if (autoBlack != 0 && trueBlackTheme) t.applyStyle(autoBlack, true);
}
}
}

View File

@@ -1,9 +1,16 @@
package org.joinmastodon.android.ui.utils;
import static org.joinmastodon.android.GlobalUserPreferences.theme;
import static org.joinmastodon.android.GlobalUserPreferences.trueBlackTheme;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.ActivityNotFoundException;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
@@ -11,6 +18,7 @@ import android.content.res.TypedArray;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
@@ -19,10 +27,12 @@ import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.provider.OpenableColumns;
import android.provider.Settings;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -42,6 +52,7 @@ import org.joinmastodon.android.api.requests.accounts.SetAccountMuted;
import org.joinmastodon.android.api.requests.accounts.SetDomainBlocked;
import org.joinmastodon.android.api.requests.accounts.AuthorizeFollowRequest;
import org.joinmastodon.android.api.requests.accounts.RejectFollowRequest;
import org.joinmastodon.android.api.requests.search.GetSearchResults;
import org.joinmastodon.android.api.requests.statuses.DeleteStatus;
import org.joinmastodon.android.api.requests.statuses.GetStatusByID;
import org.joinmastodon.android.api.requests.statuses.SetStatusPinned;
@@ -52,8 +63,6 @@ import org.joinmastodon.android.events.NotificationDeletedEvent;
import org.joinmastodon.android.events.RemoveAccountPostsEvent;
import org.joinmastodon.android.events.StatusDeletedEvent;
import org.joinmastodon.android.events.StatusUnpinnedEvent;
import org.joinmastodon.android.fragments.BaseStatusListFragment;
import org.joinmastodon.android.fragments.ComposeFragment;
import org.joinmastodon.android.fragments.HashtagTimelineFragment;
import org.joinmastodon.android.fragments.ListTimelineFragment;
import org.joinmastodon.android.fragments.ProfileFragment;
@@ -62,6 +71,7 @@ import org.joinmastodon.android.model.Account;
import org.joinmastodon.android.model.Emoji;
import org.joinmastodon.android.model.ListTimeline;
import org.joinmastodon.android.model.Relationship;
import org.joinmastodon.android.model.SearchResults;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
import org.joinmastodon.android.ui.text.CustomEmojiSpan;
@@ -70,6 +80,8 @@ import org.parceler.Parcels;
import java.io.File;
import java.lang.reflect.Method;
import java.net.URI;
import java.net.URISyntaxException;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
@@ -656,103 +668,76 @@ public class UiUtils{
}
public static void setUserPreferredTheme(Context context){
// boolean isDarkTheme = isDarkTheme();
switch(GlobalUserPreferences.color){
case PINK:
context.setTheme(switch(GlobalUserPreferences.theme){
case AUTO ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack : R.style.Theme_Mastodon_AutoLightDark;
case LIGHT ->
R.style.Theme_Mastodon_Light;
case DARK ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_Dark_TrueBlack : R.style.Theme_Mastodon_Dark;
});
break;
case PURPLE:
context.setTheme(switch(GlobalUserPreferences.theme){
case AUTO ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack_Original : R.style.Theme_Mastodon_AutoLightDark_Original;
case LIGHT ->
R.style.Theme_Mastodon_Light_Original;
case DARK ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_Dark_TrueBlack_Original : R.style.Theme_Mastodon_Dark_Original;
});
break;
case GREEN:
context.setTheme(switch(GlobalUserPreferences.theme){
case AUTO ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack_Green : R.style.Theme_Mastodon_AutoLightDark_Green;
case LIGHT ->
R.style.Theme_Mastodon_Light_Green;
case DARK ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_Dark_TrueBlack_Green : R.style.Theme_Mastodon_Dark_Green;
});
break;
case BLUE:
context.setTheme(switch(GlobalUserPreferences.theme){
case AUTO ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack_Blue : R.style.Theme_Mastodon_AutoLightDark_Blue;
case LIGHT ->
R.style.Theme_Mastodon_Light_Blue;
case DARK ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_Dark_TrueBlack_Blue : R.style.Theme_Mastodon_Dark_Blue;
});
break;
case ORANGE:
context.setTheme(switch(GlobalUserPreferences.theme){
case AUTO ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack_Orange : R.style.Theme_Mastodon_AutoLightDark_Orange;
case LIGHT ->
R.style.Theme_Mastodon_Light_Orange;
case DARK ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_Dark_TrueBlack_Orange : R.style.Theme_Mastodon_Dark_Orange;
});
break;
case YELLOW:
context.setTheme(switch(GlobalUserPreferences.theme){
case AUTO ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack_Yellow : R.style.Theme_Mastodon_AutoLightDark_Yellow;
case LIGHT ->
R.style.Theme_Mastodon_Light_Yellow;
case DARK ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_Dark_TrueBlack_Yellow : R.style.Theme_Mastodon_Dark_Yellow;
});
break;
case RED:
context.setTheme(switch(GlobalUserPreferences.theme){
case AUTO ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack_Red : R.style.Theme_Mastodon_AutoLightDark_Red;
case LIGHT ->
R.style.Theme_Mastodon_Light_Red;
case DARK ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_Dark_TrueBlack_Red : R.style.Theme_Mastodon_Dark_Red;
});
break;
case MATERIAL3:
context.setTheme(switch(GlobalUserPreferences.theme){
case AUTO ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack_Material3 : R.style.Theme_Mastodon_AutoLightDark_Material3;
case LIGHT ->
R.style.Theme_Mastodon_Light_Material3;
case DARK ->
GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_Dark_TrueBlack_Material3 : R.style.Theme_Mastodon_Dark_Material3;
});
break;
}
context.setTheme(switch (theme) {
case LIGHT -> R.style.Theme_Mastodon_Light;
case DARK -> trueBlackTheme ? R.style.Theme_Mastodon_Dark_TrueBlack : R.style.Theme_Mastodon_Dark;
default -> trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack : R.style.Theme_Mastodon_AutoLightDark;
});
ColorPalette palette = ColorPalette.palettes.get(GlobalUserPreferences.color);
if (palette != null) palette.apply(context);
}
public static boolean isDarkTheme(){
if(GlobalUserPreferences.theme==GlobalUserPreferences.ThemePreference.AUTO)
if(theme==GlobalUserPreferences.ThemePreference.AUTO)
return (MastodonApp.context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK)==Configuration.UI_MODE_NIGHT_YES;
return GlobalUserPreferences.theme==GlobalUserPreferences.ThemePreference.DARK;
return theme==GlobalUserPreferences.ThemePreference.DARK;
}
public static void openURL(Context context, @Nullable String accountID, String url){
// https://mastodon.foo.bar/@User
// https://mastodon.foo.bar/@User/43456787654678
// https://pleroma.foo.bar/users/User
// https://pleroma.foo.bar/users/9qTHT2ANWUdXzENqC0
// https://pleroma.foo.bar/notice/9sBHWIlwwGZi5QGlHc
// https://pleroma.foo.bar/objects/d4643c42-3ae0-4b73-b8b0-c725f5819207
// https://friendica.foo.bar/profile/user
// https://friendica.foo.bar/display/d4643c42-3ae0-4b73-b8b0-c725f5819207
// https://misskey.foo.bar/notes/83w6r388br (always lowercase)
// https://pixelfed.social/p/connyduck/391263492998670833
// https://pixelfed.social/connyduck
// https://gts.foo.bar/@goblin/statuses/01GH9XANCJ0TA8Y95VE9H3Y0Q2
// https://gts.foo.bar/@goblin
// https://foo.microblog.pub/o/5b64045effd24f48a27d7059f6cb38f5
//
// COPIED FROM https://github.com/tuskyapp/Tusky/blob/develop/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt
public static boolean looksLikeMastodonUrl(String urlString) {
URI uri;
try {
uri = new URI(urlString);
} catch (URISyntaxException e) {
return false;
}
if (uri.getQuery() != null || uri.getFragment() != null || uri.getPath() == null) return false;
String it = uri.getPath();
return it.matches("^/@[^/]+$") ||
it.matches("^/@[^/]+/\\d+$") ||
it.matches("^/users/\\w+$") ||
it.matches("^/notice/[a-zA-Z0-9]+$") ||
it.matches("^/objects/[-a-f0-9]+$") ||
it.matches("^/notes/[a-z0-9]+$") ||
it.matches("^/display/[-a-f0-9]+$") ||
it.matches("^/profile/\\w+$") ||
it.matches("^/p/\\w+/\\d+$") ||
it.matches("^/\\w+$") ||
it.matches("^/@[^/]+/statuses/[a-zA-Z0-9]+$") ||
it.matches("^/o/[a-f0-9]+$");
}
public static void openURL(Context context, String accountID, String url){
Consumer<ProgressDialog> transformDialogForLookup = dialog -> {
dialog.setTitle(R.string.loading_fediverse_resource_title);
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, context.getString(R.string.cancel), (d, which) -> d.cancel());
dialog.setButton(DialogInterface.BUTTON_POSITIVE, context.getString(R.string.open_in_browser), (d, which) -> {
d.cancel();
launchWebBrowser(context, url);
});
};
Uri uri=Uri.parse(url);
if(accountID!=null && "https".equals(uri.getScheme()) && AccountSessionManager.getInstance().getAccount(accountID).domain.equalsIgnoreCase(uri.getAuthority())){
List<String> path=uri.getPathSegments();
// Match URLs like https://mastodon.social/@Gargron/108132679274083591
if(path.size()==2 && path.get(0).matches("^@[a-zA-Z0-9_]+$") && path.get(1).matches("^[0-9]+$")){
List<String> path=uri.getPathSegments();
if(accountID!=null && "https".equals(uri.getScheme())){
if(path.size()==2 && path.get(0).matches("^@[a-zA-Z0-9_]+$") && path.get(1).matches("^[0-9]+$") && AccountSessionManager.getInstance().getAccount(accountID).domain.equalsIgnoreCase(uri.getAuthority())){
new GetStatusByID(path.get(1))
.setCallback(new Callback<>(){
@Override
@@ -769,11 +754,61 @@ public class UiUtils{
launchWebBrowser(context, url);
}
})
.wrapProgress((Activity)context, R.string.loading, true)
.wrapProgress((Activity)context, R.string.loading, true, transformDialogForLookup)
.exec(accountID);
return;
} else if (looksLikeMastodonUrl(url)) {
new GetSearchResults(url, null, true)
.setCallback(new Callback<>() {
@Override
public void onSuccess(SearchResults results) {
Bundle args=new Bundle();
args.putString("account", accountID);
if (!results.statuses.isEmpty()) {
args.putParcelable("status", Parcels.wrap(results.statuses.get(0)));
Nav.go((Activity) context, ThreadFragment.class, args);
} else if (!results.accounts.isEmpty()) {
args.putParcelable("profileAccount", Parcels.wrap(results.accounts.get(0)));
Nav.go((Activity) context, ProfileFragment.class, args);
} else {
launchWebBrowser(context, url);
}
}
@Override
public void onError(ErrorResponse error) {
error.showToast(context);
launchWebBrowser(context, url);
}
})
.wrapProgress((Activity)context, R.string.loading, true, transformDialogForLookup)
.exec(accountID);
return;
}
}
launchWebBrowser(context, url);
}
public static void copyText(Context context, String text) {
context.getSystemService(ClipboardManager.class).setPrimaryClip(ClipData.newPlainText(null, text));
if(Build.VERSION.SDK_INT<Build.VERSION_CODES.TIRAMISU || UiUtils.isMIUI()){ // Android 13+ SystemUI shows its own thing when you put things into the clipboard
Toast.makeText(context, R.string.text_copied, Toast.LENGTH_SHORT).show();
}
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) vibrator.vibrate(VibrationEffect.createOneShot(50, VibrationEffect.DEFAULT_AMPLITUDE));
else vibrator.vibrate(50);
}
private static String getSystemProperty(String key){
try{
Class<?> props=Class.forName("android.os.SystemProperties");
Method get=props.getMethod("get", String.class);
return (String)get.invoke(null, key);
}catch(Exception ignore){}
return null;
}
public static boolean isMIUI(){
return !TextUtils.isEmpty(getSystemProperty("ro.miui.ui.version.code"));
}
}

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?colorSecondary"/>
<item android:color="?colorGray50"/>
</selector>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="?colorWindowBackground"/>
<solid android:color="?colorGray800"/>
<corners android:radius="10dp"/>
<padding android:top="16dp" android:left="16dp" android:right="16dp" android:bottom="16dp"/>
</shape>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/gray_25"/>
<solid android:color="?colorGray25"/>
<corners android:radius="10dp"/>
<padding android:top="16dp" android:left="16dp" android:right="16dp" android:bottom="16dp"/>
</shape>

View File

@@ -2,7 +2,7 @@
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/highlight_over_dark">
<item>
<shape android:shape="oval">
<solid android:color="?colorSearchHint"/>
<solid android:color="?colorGray600"/>
</shape>
</item>
</ripple>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:tint="@color/gray_800">
<shape android:tint="?colorGray800">
<solid android:color="#CC000000"/>
</shape>
</item>

View File

@@ -1,23 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M12,22C6.49,22 2,17.51 2,12S6.49,2 12,2s10,4.04 10,9c0,3.31 -2.69,6 -6,6h-1.77c-0.28,0 -0.5,0.22 -0.5,0.5 0,0.12 0.05,0.23 0.13,0.33 0.41,0.47 0.64,1.06 0.64,1.67 0,1.38 -1.12,2.5 -2.5,2.5zM12,4c-4.41,0 -8,3.59 -8,8s3.59,8 8,8c0.28,0 0.5,-0.22 0.5,-0.5 0,-0.16 -0.08,-0.28 -0.14,-0.35 -0.41,-0.46 -0.63,-1.05 -0.63,-1.65 0,-1.38 1.12,-2.5 2.5,-2.5L16,15c2.21,0 4,-1.79 4,-4 0,-3.86 -3.59,-7 -8,-7z"/>
<path
android:fillColor="#FF000000"
android:pathData="M6.5,11.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
<path
android:fillColor="#FF000000"
android:pathData="M9.5,7.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
<path
android:fillColor="#FF000000"
android:pathData="M14.5,7.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
<path
android:fillColor="#FF000000"
android:pathData="M17.5,11.5m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
</vector>

View File

@@ -1,3 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M20.998 6.25c0-1.795-1.454-3.25-3.25-3.25H6.25C4.455 3 3 4.455 3 6.25v11.499c0 1.795 1.455 3.25 3.25 3.25h4.914l0.356-1.424 0.02-0.076H6.25c-0.204 0-0.4-0.035-0.582-0.1l5.807-5.685 0.083-0.07c0.291-0.213 0.7-0.19 0.966 0.07l2.079 2.036 1.06-1.06-2.09-2.048-0.128-0.116c-0.878-0.738-2.187-0.7-3.02 0.116l-5.822 5.7C4.536 18.157 4.5 17.957 4.5 17.75V6.25c0-0.966 0.783-1.75 1.75-1.75h11.499c0.966 0 1.75 0.784 1.75 1.75v4.983c0.478-0.19 0.993-0.264 1.5-0.22V6.25zm-3.495 2.502c0-1.244-1.008-2.252-2.252-2.252-1.244 0-2.252 1.008-2.252 2.252 0 1.243 1.008 2.252 2.252 2.252 1.244 0 2.252-1.009 2.252-2.252zm-3.004 0C14.499 8.336 14.836 8 15.251 8s0.752 0.336 0.752 0.752c0 0.415-0.337 0.752-0.752 0.752s-0.752-0.337-0.752-0.752zm4.6 3.917l-5.902 5.901c-0.345 0.345-0.589 0.776-0.707 1.248l-0.457 1.83c-0.2 0.797 0.522 1.518 1.318 1.319l1.83-0.458c0.472-0.118 0.904-0.362 1.248-0.706L22.33 15.9c0.892-0.893 0.892-2.34 0-3.232-0.893-0.893-2.34-0.893-3.233 0z" android:fillColor="@color/gray_25"/>
<path android:pathData="M20.998 6.25c0-1.795-1.454-3.25-3.25-3.25H6.25C4.455 3 3 4.455 3 6.25v11.499c0 1.795 1.455 3.25 3.25 3.25h4.914l0.356-1.424 0.02-0.076H6.25c-0.204 0-0.4-0.035-0.582-0.1l5.807-5.685 0.083-0.07c0.291-0.213 0.7-0.19 0.966 0.07l2.079 2.036 1.06-1.06-2.09-2.048-0.128-0.116c-0.878-0.738-2.187-0.7-3.02 0.116l-5.822 5.7C4.536 18.157 4.5 17.957 4.5 17.75V6.25c0-0.966 0.783-1.75 1.75-1.75h11.499c0.966 0 1.75 0.784 1.75 1.75v4.983c0.478-0.19 0.993-0.264 1.5-0.22V6.25zm-3.495 2.502c0-1.244-1.008-2.252-2.252-2.252-1.244 0-2.252 1.008-2.252 2.252 0 1.243 1.008 2.252 2.252 2.252 1.244 0 2.252-1.009 2.252-2.252zm-3.004 0C14.499 8.336 14.836 8 15.251 8s0.752 0.336 0.752 0.752c0 0.415-0.337 0.752-0.752 0.752s-0.752-0.337-0.752-0.752zm4.6 3.917l-5.902 5.901c-0.345 0.345-0.589 0.776-0.707 1.248l-0.457 1.83c-0.2 0.797 0.522 1.518 1.318 1.319l1.83-0.458c0.472-0.118 0.904-0.362 1.248-0.706L22.33 15.9c0.892-0.893 0.892-2.34 0-3.232-0.893-0.893-2.34-0.893-3.233 0z" android:fillColor="?colorGray25"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M12 2c5.43 0 9.848 4.327 9.996 9.72L22 12v1.525c-0.014 2.198-1.8 3.975-4 3.975-1.446 0-2.712-0.767-3.415-1.916-0.8 0.834-1.882 1.35-3.085 1.35-2.515 0-4.5-2.25-4.5-4.967C7 9.25 8.985 7 11.5 7c0.937 0 1.8 0.312 2.514 0.844C14.087 7.366 14.501 7 15 7c0.513 0 0.935 0.386 0.993 0.883L16 8v5.5c0 1.105 0.895 2 2 2 1.054 0 1.918-0.816 1.994-1.85L20 13.474V12c0-4.418-3.582-8-8-8s-8 3.582-8 8 3.582 8 8 8c0.921 0 1.82-0.155 2.67-0.456 0.52-0.184 1.092 0.089 1.276 0.61 0.184 0.52-0.089 1.091-0.61 1.276C14.275 21.806 13.15 22 12 22 6.477 22 2 17.523 2 12S6.477 2 12 2zm-0.35 7.005L11.5 9C10.15 9 9 10.302 9 11.967c0 1.664 1.15 2.966 2.5 2.966 1.3 0 2.415-1.207 2.495-2.783L14 11.93c-0.017-1.586-1.075-2.834-2.35-2.925L11.5 9l0.15 0.005z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M10.987 2.89c0.077-0.408-0.19-0.8-0.598-0.877-0.407-0.077-0.799 0.19-0.876 0.598L8.494 7.998 3.75 8C3.335 8 3 8.336 3 8.75 3 9.166 3.336 9.5 3.75 9.5l4.46-0.002-0.946 5L2.75 14.5C2.335 14.5 2 14.836 2 15.25 2 15.665 2.336 16 2.75 16l4.23-0.002-0.967 5.116c-0.077 0.407 0.19 0.8 0.598 0.876 0.407 0.077 0.799-0.19 0.876-0.598l1.02-5.395 5.474-0.002-0.968 5.119c-0.077 0.407 0.19 0.8 0.598 0.876 0.407 0.077 0.799-0.19 0.876-0.598l1.021-5.398 4.742-0.002c0.415 0 0.75-0.336 0.75-0.75 0-0.415-0.336-0.75-0.75-0.75l-4.458 0.002 0.946-5 4.512-0.002c0.415 0 0.75-0.336 0.75-0.75s-0.336-0.75-0.75-0.75l-4.23 0.002 0.966-5.104c0.077-0.408-0.19-0.8-0.598-0.877-0.407-0.077-0.799 0.19-0.876 0.598l-1.018 5.384-5.474 0.002 0.966-5.107zm-1.25 6.608l5.474-0.003-0.946 5-5.474 0.002 0.946-5z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M11 17.5c0-1.289 0.376-2.49 1.023-3.5h-7.77c-1.242 0-2.25 1.007-2.25 2.25v0.919c0 0.572 0.18 1.13 0.511 1.596C4.056 20.929 6.58 22 10 22c0.932 0 1.797-0.08 2.592-0.24C11.601 20.62 11 19.13 11 17.5zm4-10.495c0-2.761-2.238-5-5-5-2.761 0-5 2.239-5 5s2.239 5 5 5c2.762 0 5-2.239 5-5zM23 17.5c0-3.037-2.462-5.5-5.5-5.5-3.037 0-5.5 2.463-5.5 5.5 0 3.038 2.463 5.5 5.5 5.5 3.038 0 5.5-2.462 5.5-5.5zm-5.59-3.492L17.5 14l0.09 0.008c0.204 0.037 0.365 0.198 0.402 0.402L18 14.5V17h2.504l0.09 0.008c0.204 0.037 0.365 0.198 0.402 0.402l0.008 0.09-0.008 0.09c-0.037 0.204-0.198 0.365-0.402 0.402L20.504 18H18v2.5l-0.008 0.09c-0.037 0.204-0.198 0.365-0.402 0.402L17.5 21l-0.09-0.008c-0.204-0.037-0.364-0.198-0.402-0.402L17 20.5V18h-2.496l-0.09-0.008c-0.204-0.037-0.365-0.198-0.402-0.402l-0.008-0.09 0.008-0.09c0.037-0.204 0.198-0.365 0.402-0.402L14.504 17H17v-2.5l0.008-0.09c0.038-0.204 0.198-0.365 0.402-0.402z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M5.997 12c0 0.38 0.282 0.694 0.647 0.743l0.102 0.007H19.44l-2.216 2.22c-0.266 0.266-0.29 0.683-0.073 0.976l0.073 0.084c0.266 0.267 0.682 0.29 0.975 0.073l0.084-0.073 3.497-3.5c0.267-0.266 0.29-0.683 0.073-0.976L21.78 11.47l-3.497-3.5c-0.292-0.293-0.767-0.293-1.06 0-0.265 0.266-0.29 0.683-0.072 0.976l0.073 0.084 2.216 2.22H6.746c-0.414 0-0.75 0.336-0.75 0.75zM2 12c0 2.761 2.237 5 4.996 5 2.143 0 3.972-1.351 4.68-3.25h-1.651C9.42 14.797 8.29 15.5 6.995 15.5 5.066 15.5 3.5 13.933 3.5 12s1.565-3.5 3.497-3.5c1.294 0 2.425 0.704 3.03 1.75h1.651C10.968 8.352 9.14 7 6.996 7 4.236 7 2 9.239 2 12z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -5,5 +5,5 @@
android:viewportHeight="4">
<path
android:pathData="M4,2C4,3.1046 3.1046,4 2,4C0.8954,4 0,3.1046 0,2C0,0.8954 0.8954,0 2,0C3.1046,0 4,0.8954 4,2ZM10,2C10,3.1046 9.1046,4 8,4C6.8954,4 6,3.1046 6,2C6,0.8954 6.8954,0 8,0C9.1046,0 10,0.8954 10,2ZM14,4C15.1046,4 16,3.1046 16,2C16,0.8954 15.1046,0 14,0C12.8954,0 12,0.8954 12,2C12,3.1046 12.8954,4 14,4Z"
android:fillColor="@color/gray_500"/>
android:fillColor="?colorGray500"/>
</vector>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="27dp"/>
<stroke android:width="2dp" android:color="@color/gray_25"/>
<stroke android:width="2dp" android:color="?colorGray25"/>
</shape>

View File

@@ -2,14 +2,14 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:gravity="center_vertical">
<shape>
<solid android:color="@color/gray_500"/>
<solid android:color="?colorGray500"/>
<corners android:radius="1dp"/>
<size android:height="2dp"/>
</shape>
</item>
<item android:gravity="center_vertical" android:id="@android:id/secondaryProgress">
<clip>
<shape android:tint="@color/gray_50">
<shape android:tint="?colorGray50">
<solid android:color="#40000000"/>
<corners android:radius="1dp"/>
<size android:height="2dp"/>
@@ -19,7 +19,7 @@
<item android:gravity="center_vertical" android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="@color/gray_50"/>
<solid android:color="?colorGray50"/>
<corners android:radius="1dp"/>
<size android:height="2dp"/>
</shape>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@color/gray_25"/>
<solid android:color="?colorGray25"/>
<size android:width="18dp" android:height="18dp"/>
</shape>

View File

@@ -6,7 +6,7 @@
android:shape="ring"
android:thickness="4dp"
android:useLevel="true">
<solid android:color="@color/gray_100"/>
<solid android:color="?colorGray100"/>
</shape>
</item>
</layer-list>

View File

@@ -83,7 +83,7 @@
android:layout_alignParentTop="true"
android:src="@drawable/ic_fluent_dismiss_24_filled"
android:contentDescription="@string/cancel"
android:tint="@color/gray_100"
android:tint="?colorGray100"
android:background="@drawable/bg_upload_progress"/>
<ProgressBar
@@ -104,7 +104,7 @@
android:layout_height="16dp"
android:layout_below="@id/retry_or_cancel_upload"
android:layout_marginTop="16dp"
android:textColor="@color/gray_200"
android:textColor="?colorGray200"
android:textSize="14dp"
android:gravity="center_horizontal"
android:singleLine="true"
@@ -119,7 +119,7 @@
android:layout_height="32dp"
android:layout_below="@id/state_title"
android:includeFontPadding="false"
android:textColor="@color/gray_200"
android:textColor="?colorGray200"
android:gravity="center_horizontal|top"
android:lines="2"
android:maxLines="2"

View File

@@ -42,7 +42,7 @@
android:layout_margin="16dp"
android:paddingRight="8dp"
android:paddingLeft="8dp"
android:textColor="@color/gray_50t"
android:textColor="?colorGray50t"
android:textAllCaps="true"
android:fontFamily="sans-serif-medium"
android:textSize="14dp"

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="48dp"
android:paddingHorizontal="16dp"
android:gravity="center_vertical"
android:layoutDirection="locale">
<ImageView
android:id="@+id/icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="32dp"
android:importantForAccessibility="no"
android:tint="?android:textColorPrimary"
tools:src="@drawable/ic_fluent_color_24_regular"/>
<TextView
android:id="@+id/text"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginEnd="8dp"
android:gravity="center_vertical"
android:textColor="?android:textColorPrimary"
android:textSize="16sp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="32dp"
android:background="@drawable/bg_inline_button"
android:elevation="0dp"
android:ellipsize="middle"
android:fontFamily="sans-serif-medium"
android:singleLine="true"
android:stateListAnimator="@null"
android:textColor="?android:textColorPrimary"
android:textSize="16sp"
tools:text="@string/sk_color_palette_pink" />
</LinearLayout>

View File

@@ -15,7 +15,7 @@
android:layout_marginEnd="32dp"
android:importantForAccessibility="no"
android:tint="?android:textColorPrimary"
tools:src="@drawable/ic_color_theme_preference"/>
tools:src="@drawable/ic_fluent_color_24_regular"/>
<TextView
@@ -27,7 +27,7 @@
android:textSize="16sp"
android:singleLine="true"
android:ellipsize="end"
android:text="@string/sk_settings_color_picker"/>
android:text="@string/sk_settings_color_palette"/>
<Button
android:id="@+id/color_picker_button"

View File

@@ -12,7 +12,6 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingHorizontal="16dp"
android:drawableLeft="@drawable/ic_fluent_people_community_24_regular"
android:drawableTint="?android:textColorSecondary"
android:drawablePadding="16dp"
android:textAppearance="@style/m3_title_medium"
@@ -26,6 +25,7 @@
android:clickable="false"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:visibility="gone"
android:paddingRight="16dp"/>
<!-- <ImageView-->

View File

@@ -55,7 +55,7 @@
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:src="@drawable/ic_pause_24"
android:tint="@color/gray_50"
android:tint="?colorGray50"
android:contentDescription="@string/pause"
android:background="?android:selectableItemBackgroundBorderless"/>

View File

@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/m3_color" android:title="@string/sk_color_theme_material3"/>
<item android:id="@+id/purple_color" android:title="@string/sk_color_theme_purple"/>
<item android:id="@+id/pink_color" android:title="@string/sk_color_theme_pink"/>
<item android:id="@+id/green_color" android:title="@string/sk_color_theme_green"/>
<item android:id="@+id/blue_color" android:title="@string/sk_color_theme_blue"/>
<item android:id="@+id/orange_color" android:title="@string/sk_color_theme_brown"/>
<item android:id="@+id/yellow_color" android:title="@string/sk_color_theme_yellow"/>
<item android:id="@+id/red_color" android:title="@string/sk_color_theme_red"/>
<item android:id="@+id/m3_color" android:title="@string/sk_color_palette_material3"/>
<item android:id="@+id/purple_color" android:title="@string/sk_color_palette_purple"/>
<item android:id="@+id/pink_color" android:title="@string/sk_color_palette_pink"/>
<item android:id="@+id/green_color" android:title="@string/sk_color_palette_green"/>
<item android:id="@+id/blue_color" android:title="@string/sk_color_palette_blue"/>
<item android:id="@+id/brown_color" android:title="@string/sk_color_palette_brown"/>
<item android:id="@+id/yellow_color" android:title="@string/sk_color_palette_yellow"/>
<item android:id="@+id/red_color" android:title="@string/sk_color_palette_red"/>
<item android:id="@+id/nord_color" android:title="@string/sk_color_palette_nord"/>
</menu>

View File

@@ -2,5 +2,6 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/bookmarks" android:title="@string/bookmarks" android:icon="@drawable/ic_fluent_bookmark_24_regular" android:showAsAction="always"/>
<item android:id="@+id/favorites" android:title="@string/your_favorites" android:icon="@drawable/ic_fluent_star_24_regular" android:showAsAction="always"/>
<item android:id="@+id/followed_hashtags" android:title="@string/sk_hashtags_you_follow" android:icon="@drawable/ic_fluent_number_symbol_24_regular" android:showAsAction="always"/>
<item android:id="@+id/share" android:title="@string/share_user" android:icon="@drawable/ic_fluent_share_24_regular" android:showAsAction="always"/>
</menu>

View File

@@ -39,7 +39,7 @@
<string name="sk_settings_contribute">Zu Moshidon beitragen</string>
<string name="sk_settings_show_federated_timeline">Föderierte Timeline anzeigen</string>
<string name="sk_notify_posts">Beitrags-Benachrichtigungen</string>
<string name="sk_settings_color_palette">Farbschema</string>
<string name="sk_settings_color_picker">Farbschema</string>
<string name="sk_color_palette_pink">Pink</string>
<string name="sk_color_palette_purple">Violett</string>
<string name="sk_color_palette_green">Grün</string>
@@ -59,8 +59,8 @@
<string name="sk_welcome_title">Willkommen!</string>
<string name="sk_example_domain">beispiel.social</string>
<string name="sk_welcome_text">Der Hai sagt Hi! Um anzufangen, bitte gib den Domain-Namen deiner Heim-Instanz unten ein.</string>
<string name="sk_color_palette_material3">System</string>
<string name="sk_color_palette_red">Rot</string>
<string name="sk_color_theme_material3">System</string>
<string name="sk_color_theme_red">Rot</string>
<string name="sk_settings_profile">Profil einrichten</string>
<string name="sk_settings_posting">Einstellungen für Beiträge</string>
<string name="sk_settings_filters">Filter konfigurieren</string>

View File

@@ -40,13 +40,13 @@
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_notification_type_status">Publicaciones</string>
<string name="sk_notify_posts">Publicar notificaciones</string>
<string name="sk_settings_color_palette">Colores para los temas</string>
<string name="sk_color_palette_pink">Rosa</string>
<string name="sk_color_palette_purple">Violeta</string>
<string name="sk_color_palette_green">Verde</string>
<string name="sk_color_palette_blue">Azul</string>
<string name="sk_color_palette_brown">Marrón</string>
<string name="sk_color_palette_yellow">Amarillo</string>
<string name="sk_settings_color_picker">Colores para los temas</string>
<string name="sk_color_theme_pink">Rosa</string>
<string name="sk_color_theme_purple">Violeta</string>
<string name="sk_color_theme_green">Verde</string>
<string name="sk_color_theme_blue">Azul</string>
<string name="sk_color_theme_brown">Marrón</string>
<string name="sk_color_theme_yellow">Amarillo</string>
<string name="sk_poll_allow_multiple">Permitir respuesta múltiple</string>
<string name="sk_translate_post">Traducir</string>
<string name="sk_translate_show_original">Mostrar original</string>
@@ -59,6 +59,6 @@
<string name="sk_welcome_text">¡El tiburón te saluda! Para empezar, introduzca a continuación el nombre del dominio de su instancia de origen.</string>
<string name="sk_example_domain">example.social</string>
<string name="sk_welcome_title">¡Bienvenidos!</string>
<string name="sk_color_palette_material3">Sistema</string>
<string name="sk_color_palette_red">Rojo</string>
<string name="sk_color_theme_material3">Sistema</string>
<string name="sk_color_theme_red">Rojo</string>
</resources>

View File

@@ -40,13 +40,13 @@
<string name="sk_federated_timeline_info_banner">Ce sont les messages les plus récents des membres de votre fédération.</string>
<string name="sk_notification_type_status">Messages</string>
<string name="sk_notify_posts">Notifications des messages</string>
<string name="sk_color_palette_pink">Rose</string>
<string name="sk_color_palette_purple">Violet</string>
<string name="sk_color_palette_green">Vert</string>
<string name="sk_color_palette_blue">Bleu</string>
<string name="sk_color_palette_brown">Marron</string>
<string name="sk_color_palette_yellow">Jaune</string>
<string name="sk_settings_color_palette">Couleur d\'accentuation</string>
<string name="sk_color_theme_pink">Rose</string>
<string name="sk_color_theme_purple">Violet</string>
<string name="sk_color_theme_green">Vert</string>
<string name="sk_color_theme_blue">Bleu</string>
<string name="sk_color_theme_brown">Marron</string>
<string name="sk_color_theme_yellow">Jaune</string>
<string name="sk_settings_color_picker">Couleur d\'accentuation</string>
<string name="sk_poll_allow_multiple">Autoriser plusieurs choix</string>
<string name="sk_translate_post">Traduire</string>
<string name="sk_translate_show_original">Afficher l\'original</string>
@@ -59,6 +59,6 @@
<string name="sk_example_domain">exemple.social</string>
<string name="sk_welcome_title">Bienvenue !</string>
<string name="sk_welcome_text">Le requin vous salue ! Pour commencer, veuillez entrer le nom de domaine de votre instance personnelle ci-dessous.</string>
<string name="sk_color_palette_material3">Système</string>
<string name="sk_color_palette_red">Rouge</string>
<string name="sk_color_theme_material3">Système</string>
<string name="sk_color_theme_red">Rouge</string>
</resources>

View File

@@ -40,25 +40,25 @@
<string name="sk_settings_show_federated_timeline">Tampilkan lini masa federasi</string>
<string name="sk_notification_type_status">Kiriman</string>
<string name="sk_notify_posts">Notifikasi kiriman</string>
<string name="sk_settings_color_palette">Warna tema</string>
<string name="sk_color_palette_pink">Merah Muda</string>
<string name="sk_color_palette_purple">Ungu</string>
<string name="sk_color_palette_green">Hijau</string>
<string name="sk_color_palette_blue">Biru</string>
<string name="sk_color_palette_brown">Cokelat</string>
<string name="sk_color_palette_yellow">Kuning</string>
<string name="sk_settings_color_picker">Warna tema</string>
<string name="sk_color_theme_pink">Merah Muda</string>
<string name="sk_color_theme_purple">Ungu</string>
<string name="sk_color_theme_green">Hijau</string>
<string name="sk_color_theme_blue">Biru</string>
<string name="sk_color_theme_brown">Cokelat</string>
<string name="sk_color_theme_yellow">Kuning</string>
<string name="sk_poll_allow_multiple">Perbolehkan beberapa pilihan</string>
<string name="sk_clear_recent_languages">Hapus bahasa terkini yang digunakan</string>
<string name="sk_welcome_title">Selamat datang!</string>
<string name="sk_confirm_clear_recent_languages">Apakah Anda yakin ingin menghapus bahasa terkini yang Anda gunakan\?</string>
<string name="sk_color_palette_material3">Sistem</string>
<string name="sk_color_theme_material3">Sistem</string>
<string name="sk_available_languages">Bahasa yang tersedia</string>
<string name="sk_language_name">%s (%s)</string>
<string name="sk_translate_post">Terjemahkan</string>
<string name="sk_translate_show_original">Tampilkan yang asli</string>
<string name="sk_post_language">Bahasa: %s</string>
<string name="sk_example_domain">contoh.social</string>
<string name="sk_color_palette_red">Merah</string>
<string name="sk_color_theme_red">Merah</string>
<string name="sk_translated_using">Diterjemahkan menggunakan %s</string>
<string name="sk_welcome_text">Hiu menyapamu! Untuk memulai, silakan memasukkan nama domain instansi Anda di bawah.</string>
</resources>

View File

@@ -39,13 +39,13 @@
<string name="sk_settings_show_federated_timeline">연합 타임라인 표시</string>
<string name="sk_notification_type_status">게시물</string>
<string name="sk_notify_posts">게시물 알림</string>
<string name="sk_settings_color_palette">테마 색상</string>
<string name="sk_color_palette_pink">분홍색</string>
<string name="sk_color_palette_purple">보라색</string>
<string name="sk_color_palette_green">초록색</string>
<string name="sk_color_palette_blue">파란색</string>
<string name="sk_color_palette_brown">갈색</string>
<string name="sk_color_palette_yellow">노란색</string>
<string name="sk_settings_color_picker">테마 색상</string>
<string name="sk_color_theme_pink">분홍색</string>
<string name="sk_color_theme_purple">보라색</string>
<string name="sk_color_theme_green">초록색</string>
<string name="sk_color_theme_blue">파란색</string>
<string name="sk_color_theme_brown">갈색</string>
<string name="sk_color_theme_yellow">노란색</string>
<string name="sk_settings_contribute">Moshidon에 기여</string>
<string name="sk_poll_allow_multiple">다중 선택 허용</string>
<string name="sk_translate_post">번역하기</string>
@@ -59,6 +59,6 @@
<string name="sk_example_domain">example.social</string>
<string name="sk_welcome_title">환영합니다!</string>
<string name="sk_welcome_text">상어가 당신을 맞이합니다! 시작하기 위해, 아래에 사용하시는 인스턴스의 도메인 이름을 입력해주세요.</string>
<string name="sk_color_palette_material3">시스템</string>
<string name="sk_color_palette_red">빨간색</string>
<string name="sk_color_theme_material3">시스템</string>
<string name="sk_color_theme_red">빨간색</string>
</resources>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="shortcut_icon_background">@color/gray_700</color>
<color name="shortcut_icon_foreground">@color/original_primary_600</color>
<color name="shortcut_icon_background">#282C37</color>
<!-- <color name="shortcut_icon_foreground">@color/purple_primary_600</color>-->
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="ColorPalette.Material3.AutoLightDark" parent="ColorPalette.Material3.Dark"/>
</resources>

View File

@@ -2,25 +2,4 @@
<resources>
<style name="Theme.Mastodon.AutoLightDark" parent="Theme.Mastodon.Dark"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack" parent="Theme.Mastodon.Dark.TrueBlack"/>
<style name="Theme.Mastodon.AutoLightDark.Original" parent="Theme.Mastodon.Dark.Original"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Original" parent="Theme.Mastodon.Dark.TrueBlack.Original"/>
<style name="Theme.Mastodon.AutoLightDark.Green" parent="Theme.Mastodon.Dark.Green"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Green" parent="Theme.Mastodon.Dark.TrueBlack.Green"/>
<style name="Theme.Mastodon.AutoLightDark.Blue" parent="Theme.Mastodon.Dark.Blue"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Blue" parent="Theme.Mastodon.Dark.TrueBlack.Blue"/>
<style name="Theme.Mastodon.AutoLightDark.Orange" parent="Theme.Mastodon.Dark.Orange"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Orange" parent="Theme.Mastodon.Dark.TrueBlack.Orange"/>
<style name="Theme.Mastodon.AutoLightDark.Yellow" parent="Theme.Mastodon.Dark.Yellow"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Yellow" parent="Theme.Mastodon.Dark.TrueBlack.Yellow"/>
<style name="Theme.Mastodon.AutoLightDark.Red" parent="Theme.Mastodon.Dark.Red"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Red" parent="Theme.Mastodon.Dark.TrueBlack.Red"/>
<style name="Theme.Mastodon.AutoLightDark.Material3" parent="Theme.Mastodon.Dark.Material3"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Material3" parent="Theme.Mastodon.Dark.TrueBlack.Material3"/>
</resources>

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -38,14 +38,14 @@
<string name="sk_settings_show_federated_timeline">Mostre a linha do tempo federada</string>
<string name="sk_visibility_unlisted">Não-listado</string>
<string name="sk_settings_show_interaction_counts">Mostrar contagens de interação</string>
<string name="sk_color_palette_purple">Roxo</string>
<string name="sk_color_palette_green">Verde</string>
<string name="sk_color_palette_blue">Azul</string>
<string name="sk_color_palette_brown">Marrom</string>
<string name="sk_color_palette_yellow">Amarelo</string>
<string name="sk_color_palette_pink">Rosa</string>
<string name="sk_color_theme_purple">Roxo</string>
<string name="sk_color_theme_green">Verde</string>
<string name="sk_color_theme_blue">Azul</string>
<string name="sk_color_theme_brown">Marrom</string>
<string name="sk_color_theme_yellow">Amarelo</string>
<string name="sk_color_theme_pink">Rosa</string>
<string name="sk_notification_type_status">Postagens</string>
<string name="sk_settings_color_palette">Cor do tema</string>
<string name="sk_settings_color_picker">Cor do tema</string>
<string name="sk_translate_post">Traduzir</string>
<string name="sk_translate_show_original">Mostrar original</string>
<string name="sk_translated_using">Traduzido usando %s</string>
@@ -59,6 +59,6 @@
<string name="sk_welcome_text">O tubarão te cumprimenta! Para começar, por favor, digite abaixo o nome de domínio de sua instância de origem.</string>
<string name="sk_example_domain">exemplo.social</string>
<string name="sk_welcome_title">Bem vindo!</string>
<string name="sk_color_palette_material3">Sistema</string>
<string name="sk_color_palette_red">Vermelho</string>
<string name="sk_color_theme_material3">Sistema</string>
<string name="sk_color_theme_red">Vermelho</string>
</resources>

View File

@@ -17,11 +17,11 @@
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_notification_type_status">Публикации</string>
<string name="sk_notify_posts">Отправляет публикацию</string>
<string name="sk_settings_color_palette">Цветовая схема</string>
<string name="sk_color_palette_pink">Розовый</string>
<string name="sk_color_palette_purple">Фиолетовый</string>
<string name="sk_color_palette_brown">Коричневый</string>
<string name="sk_color_palette_yellow">Жёлтый</string>
<string name="sk_settings_color_picker">Цветовая схема</string>
<string name="sk_color_theme_pink">Розовый</string>
<string name="sk_color_theme_purple">Фиолетовый</string>
<string name="sk_color_theme_brown">Коричневый</string>
<string name="sk_color_theme_yellow">Жёлтый</string>
<string name="sk_translate_show_original">Показать оригинальную публикацию</string>
<string name="sk_translated_using">Переведено через %s</string>
<string name="sk_available_languages">Доступные языки</string>
@@ -46,8 +46,8 @@
<string name="sk_settings_always_reveal_content_warnings">Всегда раскрывать предупреждения о непристойном контенте</string>
<string name="sk_settings_contribute">Внести свой код в Moshidon</string>
<string name="sk_settings_show_federated_timeline">Показывать федеративную временную шкалу</string>
<string name="sk_color_palette_green">Зелёный</string>
<string name="sk_color_palette_blue">Синий</string>
<string name="sk_color_theme_green">Зелёный</string>
<string name="sk_color_theme_blue">Синий</string>
<string name="sk_translate_post">Перевести</string>
<string name="sk_post_language">Язык: %s</string>
<string name="sk_clear_recent_languages">Очистить недавно использованные языки</string>
@@ -56,9 +56,9 @@
<string name="sk_poll_allow_multiple">Разрешить несколько вариантов ответа</string>
<string name="sk_user_post_notifications_on">Уведомления о постах %s включены</string>
<string name="sk_user_post_notifications_off">Уведомления о новых постах %s отключены</string>
<string name="sk_color_palette_material3">Система</string>
<string name="sk_color_theme_material3">Система</string>
<string name="sk_settings_show_boosts">Показать репосты</string>
<string name="sk_settings_show_interaction_counts">Показывать количество взаимодействий</string>
<string name="sk_disable_marquee">Отключить прокручиваемый текст в заголовках</string>
<string name="sk_color_palette_red">Красный</string>
<string name="sk_color_theme_red">Красный</string>
</resources>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Widget.Mastodon.Toolbar" parent="android:Widget.Material.Toolbar">
<item name="android:contentInsetStartWithNavigation">0dp</item>
<item name="android:titleMarginEnd">0dp</item>
<item name="android:titleMarginStart">0dp</item>
</style>
</resources>

View File

@@ -1,9 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="navigation_bar_bg">@color/gray_50</color>
<color name="green_navigation_bar_bg">@color/green_gray_50</color>
<color name="blue_navigation_bar_bg">@color/blue_gray_50</color>
<color name="orange_navigation_bar_bg">@color/orange_gray_50</color>
<color name="yellow_navigation_bar_bg">@color/yellow_gray_50</color>
<color name="red_navigation_bar_bg">@color/red_gray_50</color>
</resources>

View File

@@ -17,7 +17,28 @@
<attr name="colorTabInactive" format="color"/>
<attr name="colorAccentLightest" format="color"/>
<attr name="profileHeaderBackground" format="color"/>
<attr name="toolbarBackground" format="color"/>
<attr name="colorButtonBackgroundPrimaryDarkOnLight" format="color"/>
<attr name="colorButtonBackgroundPrimaryDarkOnLightDisabled" format="color"/>
<attr name="colorButtonTextPrimaryDarkOnLight" format="color"/>
<attr name="colorButtonTextPrimaryDarkOnLightDisabled" format="color"/>
<attr name="colorButtonBackgroundPrimaryLightOnDark" format="color"/>
<attr name="colorButtonBackgroundPrimaryLightOnDarkDisabled" format="color"/>
<attr name="colorButtonTextPrimaryLightOnDark" format="color"/>
<attr name="colorButtonTextPrimaryLightOnDarkDisabled" format="color"/>
<attr name="colorButtonBackgroundSecondaryDarkOnLight" format="color"/>
<attr name="colorButtonBackgroundSecondaryDarkOnLightDisabled" format="color"/>
<attr name="colorButtonTextSecondaryDarkOnLight" format="color"/>
<attr name="colorButtonTextSecondaryDarkOnLightDisabled" format="color"/>
<attr name="colorButtonBackgroundSecondaryLightOnDark" format="color"/>
<attr name="colorButtonBackgroundSecondaryLightOnDarkDisabled" format="color"/>
<attr name="colorButtonTextSecondaryLightOnDark" format="color"/>
<attr name="colorButtonTextSecondaryLightOnDarkDisabled" format="color"/>
<attr name="colorM3Primary" format="color"/>
<attr name="colorM3OnPrimary" format="color"/>
<attr name="colorM3PrimaryContainer" format="color"/>
@@ -56,4 +77,30 @@
<attr name="android:labelTextSize" format="dimension"/>
<attr name="labelTextColor" format="color"/>
</declare-styleable>
<attr name="colorPrimary25" format="color" />
<attr name="colorPrimary50" format="color" />
<attr name="colorPrimary100" format="color" />
<attr name="colorPrimary200" format="color" />
<attr name="colorPrimary300" format="color" />
<attr name="colorPrimary400" format="color" />
<attr name="colorPrimary500" format="color" />
<attr name="colorPrimary600" format="color" />
<attr name="colorPrimary700" format="color" />
<attr name="colorPrimary800" format="color" />
<attr name="colorPrimary900" format="color" />
<attr name="colorGray25" format="color" />
<attr name="colorGray50" format="color" />
<attr name="colorGray50t" format="color" />
<attr name="colorGray100" format="color" />
<attr name="colorGray200" format="color" />
<attr name="colorGray300" format="color" />
<attr name="colorGray400" format="color" />
<attr name="colorGray500" format="color" />
<attr name="colorGray600" format="color" />
<attr name="colorGray700" format="color" />
<attr name="colorGray800" format="color" />
<attr name="colorGray800t" format="color" />
<attr name="colorGray900" format="color" />
</resources>

View File

@@ -5,12 +5,13 @@
<color name="fluent_default_icon_tint">?android:textColorPrimary</color>
<color name="gray_900">#121029</color>
<color name="gray_800t">#cc2b2938</color>
<color name="gray_800">#2b2938</color>
<color name="gray_700">#353454</color>
<color name="gray_600">#464666</color>
<color name="gray_500">#696685</color>
<color name="gray_900">#110c10</color>
<color name="gray_800t">#cc191417</color>
<color name="gray_800">#191417</color>
<color name="gray_700">#231f22</color>
<color name="gray_600">#3b373a</color>
<color name="gray_500">#625d60</color>
<color name="gray_400">#9998b3</color>
<color name="gray_300">#d1d1de</color>
<color name="gray_200">#e6e6ed</color>
@@ -31,141 +32,6 @@
<color name="primary_800">#ae218a</color>
<color name="primary_900">#6d1556</color>
<color name="original_primary_25">#fafaff</color>
<color name="original_primary_50">#f4f3ff</color>
<color name="original_primary_100">#ebebff</color>
<color name="original_primary_200">#d7d7ff</color>
<color name="original_primary_300">#c2c2ff</color>
<color name="original_primary_400">#9999ff</color>
<color name="original_primary_500">#6364ff</color>
<color name="original_primary_600">#562cfc</color>
<color name="original_primary_700">#431cbb</color>
<color name="original_primary_800">#2f0c7a</color>
<color name="original_primary_900">#17063b</color>
<color name="green_primary_25">#fafaff</color>
<color name="green_primary_50">#d1feaf</color>
<color name="green_primary_100">#bbf294</color>
<color name="green_primary_200">#a0d57b</color>
<color name="green_primary_300">#85b962</color>
<color name="green_primary_400">#6c9e4b</color>
<color name="green_primary_500">#528232</color>
<color name="green_primary_600">#3b6a1c</color>
<color name="green_primary_700">#245103</color>
<color name="green_primary_800">#163800</color>
<color name="green_primary_900">#0a2100</color>
<color name="blue_primary_25">#fafaff</color>
<color name="blue_primary_50">#e8f2ff</color>
<color name="blue_primary_100">#cee5ff</color>
<color name="blue_primary_200">#97cbff</color>
<color name="blue_primary_300">#65b1f4</color>
<color name="blue_primary_400">#4796d7</color>
<color name="blue_primary_500">#227bba</color>
<color name="blue_primary_600">#00639b</color>
<color name="blue_primary_700">#004a76</color>
<color name="blue_primary_800">#003354</color>
<color name="blue_primary_900">#001d33</color>
<color name="orange_primary_25">#fafaff</color>
<color name="orange_primary_50">#ffeedf</color>
<color name="orange_primary_100">#ffdcbb</color>
<color name="orange_primary_200">#ffb869</color>
<color name="orange_primary_300">#e89a3b</color>
<color name="orange_primary_400">#c98121</color>
<color name="orange_primary_500">#a96700</color>
<color name="orange_primary_600">#885200</color>
<color name="orange_primary_700">#673d00</color>
<color name="orange_primary_800">#482900</color>
<color name="orange_primary_900">#2b1700</color>
<color name="yellow_primary_25">#fafaff</color>
<color name="yellow_primary_50">#fff0ca</color>
<color name="yellow_primary_100">#ffe084</color>
<color name="yellow_primary_200">#e8c349</color>
<color name="yellow_primary_300">#cba82f</color>
<color name="yellow_primary_400">#ae8d10</color>
<color name="yellow_primary_500">#8f7300</color>
<color name="yellow_primary_600">#735c00</color>
<color name="yellow_primary_700">#574500</color>
<color name="yellow_primary_800">#3c2f00</color>
<color name="yellow_primary_900">#231b00</color>
<color name="red_primary_25">#FFFBFA</color>
<color name="red_primary_50">#FEF3F2</color>
<color name="red_primary_100">#FEE4E2</color>
<color name="red_primary_200">#FECDCA</color>
<color name="red_primary_300">#FDA29B</color>
<color name="red_primary_400">#F97066</color>
<color name="red_primary_500">#F04438</color>
<color name="red_primary_600">#D92D20</color>
<color name="red_primary_700">#B42318</color>
<color name="red_primary_800">#912018</color>
<color name="red_primary_900">#7A271A</color>
<color name="custom_gray_900">#000000</color>
<color name="custom_gray_800t">#cc171717</color>
<color name="custom_gray_800">#171717</color>
<color name="custom_gray_700">#191919</color>
<color name="custom_gray_600">#212121</color>
<color name="custom_gray_500">#242424</color>
<!-- Old Colors:-->
<!-- <color name="green_gray_400">#8f918e</color>-->
<!-- <color name="green_gray_300">#a9aca8</color>-->
<!-- <color name="green_gray_200">#c5c7c3</color>-->
<!-- <color name="green_gray_100">#e1e3df</color>-->
<!-- <color name="green_gray_50t">#eff1ed</color>-->
<!-- <color name="green_gray_50">#eff1ed</color>-->
<!-- <color name="green_gray_25">#f7f8fa</color>-->
<!-- <color name="blue_gray_400">#919191</color>-->
<!-- <color name="blue_gray_300">#ababab</color>-->
<!-- <color name="blue_gray_200">#c6c6c6</color>-->
<!-- <color name="blue_gray_100">#e2e2e2</color>-->
<!-- <color name="blue_gray_50t">#f1f1f1</color>-->
<!-- <color name="blue_gray_50">#f1f1f1</color>-->
<!-- <color name="blue_gray_25">#f7f8fa</color>-->
<color name="green_gray_400">#a2b095</color>
<color name="green_gray_300">#bdcbaf</color>
<color name="green_gray_200">#d9e7ca</color>
<color name="green_gray_100">#d9e7ca</color>
<color name="green_gray_50t">#cce8f8d8</color>
<color name="green_gray_50">#e8f5d8</color>
<color name="green_gray_25">#f7f8fa</color>
<color name="blue_gray_400">#9eadbe</color>
<color name="blue_gray_300">#b9c8da</color>
<color name="blue_gray_200">#d5e4f7</color>
<color name="blue_gray_100">#e8f2ff</color>
<color name="blue_gray_50t">#cce8f2ff</color>
<color name="blue_gray_50">#e8f2ff</color>
<color name="blue_gray_25">#f7f8fa</color>
<color name="orange_gray_400">#c3a689</color>
<color name="orange_gray_300">#e0c1a3</color>
<color name="orange_gray_200">#feddbd</color>
<color name="orange_gray_100">#ffeedf</color>
<color name="orange_gray_50t">#ccffeedf</color>
<color name="orange_gray_50">#ffeedf</color>
<color name="orange_gray_25">#f7f8fa</color>
<color name="yellow_gray_400">#b8aa87</color>
<color name="yellow_gray_300">#d4c5a1</color>
<color name="yellow_gray_200">#f1e1bb</color>
<color name="yellow_gray_100">#fff0ca</color>
<color name="yellow_gray_50t">#ccfff0ca</color>
<color name="yellow_gray_50">#fff0ca</color>
<color name="yellow_gray_25">#f7f8fa</color>
<color name="red_gray_400">#d69f84</color>
<color name="red_gray_300">#f4ba9e</color>
<color name="red_gray_200">#ffdbcb</color>
<color name="red_gray_100">#ffedea</color>
<color name="red_gray_50t">#ffede6ca</color>
<color name="red_gray_50">#ffede6</color>
<color name="red_gray_25">#f7f8fa</color>
<color name="error_25">#FFFBFA</color>
<color name="error_50">#FEF3F2</color>
@@ -230,13 +96,39 @@
<color name="favorite_selected">@color/warning_500</color>
<color name="bookmark_selected">@color/success_500</color>
<color name="boost_selected">?android:colorPrimary</color>
<color name="translate_selected">?android:colorPrimary</color>
<color name="boost_selected">@color/primary_500</color>
<color name="shortcut_icon_background">#282C37</color>
<!-- <color name="shortcut_icon_foreground">@color/primary_700</color>-->
<color name="shortcut_icon_foreground">@color/purple_primary_700</color>
<!-- M3 dynamic colors -->
<color name="m3_navigation_bar_bg">@color/gray_50</color>
<color name="m3_gray_900">@color/gray_900</color>
<color name="m3_gray_800t">@color/gray_800t</color>
<color name="m3_gray_800">@color/gray_800</color>
<color name="m3_gray_700">@color/gray_700</color>
<color name="m3_gray_600">@color/gray_600</color>
<color name="m3_gray_500">@color/gray_500</color>
<color name="m3_gray_400">@color/gray_400</color>
<color name="m3_gray_300">@color/gray_300</color>
<color name="m3_gray_200">@color/gray_200</color>
<color name="m3_gray_100">@color/gray_100</color>
<color name="m3_gray_50t">@color/gray_50t</color>
<color name="m3_gray_50">@color/gray_50</color>
<color name="m3_gray_25">@color/gray_25</color>
<color name="m3_primary_25">@color/purple_primary_25</color>
<color name="m3_primary_50">@color/purple_primary_50</color>
<color name="m3_primary_100">@color/purple_primary_100</color>
<color name="m3_primary_200">@color/purple_primary_200</color>
<color name="m3_primary_300">@color/purple_primary_300</color>
<color name="m3_primary_400">@color/purple_primary_400</color>
<color name="m3_primary_500">@color/purple_primary_500</color>
<color name="m3_primary_600">@color/purple_primary_600</color>
<color name="m3_primary_700">@color/purple_primary_700</color>
<color name="m3_primary_800">@color/purple_primary_800</color>
<color name="m3_primary_900">@color/purple_primary_900</color>
<!-- light theme -->
<color name="m3_sys_light_primary">#6750A4</color>
@@ -280,4 +172,144 @@
<color name="m3_sys_dark_on_surface_variant">#CAC4D0</color>
<color name="m3_sys_dark_outline">#938F99</color>
<!-- PALETTE COLORS -->
<color name="purple_primary_25">#fafaff</color>
<color name="purple_primary_50">#f4f3ff</color>
<color name="purple_primary_100">#ebebff</color>
<color name="purple_primary_200">#d7d7ff</color>
<color name="purple_primary_300">#c2c2ff</color>
<color name="purple_primary_400">#9999ff</color>
<color name="purple_primary_500">#6364ff</color>
<color name="purple_primary_600">#562cfc</color>
<color name="purple_primary_700">#431cbb</color>
<color name="purple_primary_800">#2f0c7a</color>
<color name="purple_primary_900">#17063b</color>
<color name="green_primary_25">#fafaff</color>
<color name="green_primary_50">#d1feaf</color>
<color name="green_primary_100">#bbf294</color>
<color name="green_primary_200">#a0d57b</color>
<color name="green_primary_300">#85b962</color>
<color name="green_primary_400">#6c9e4b</color>
<color name="green_primary_500">#528232</color>
<color name="green_primary_600">#3b6a1c</color>
<color name="green_primary_700">#245103</color>
<color name="green_primary_800">#163800</color>
<color name="green_primary_900">#0a2100</color>
<color name="brownish_gray_900">#110c10</color>
<color name="brownish_gray_800">#191417</color>
<color name="brownish_gray_800t">#cc191417</color>
<color name="brownish_gray_700">#231f22</color>
<color name="brownish_gray_600">#3b373a</color>
<color name="brownish_gray_500">#625d60</color>
<color name="green_gray_400">#a2b095</color>
<color name="green_gray_300">#bdcbaf</color>
<color name="green_gray_200">#d9e7ca</color>
<color name="green_gray_100">#d9e7ca</color>
<color name="green_gray_50t">#cce8f8d8</color>
<color name="green_gray_50">#e8f5d8</color>
<color name="green_gray_25">#f7f8fa</color>
<color name="blue_primary_25">#fafaff</color>
<color name="blue_primary_50">#e8f2ff</color>
<color name="blue_primary_100">#cee5ff</color>
<color name="blue_primary_200">#97cbff</color>
<color name="blue_primary_300">#65b1f4</color>
<color name="blue_primary_400">#4796d7</color>
<color name="blue_primary_500">#227bba</color>
<color name="blue_primary_600">#00639b</color>
<color name="blue_primary_700">#004a76</color>
<color name="blue_primary_800">#003354</color>
<color name="blue_primary_900">#001d33</color>
<color name="blue_gray_400">#9eadbe</color>
<color name="blue_gray_300">#b9c8da</color>
<color name="blue_gray_200">#d5e4f7</color>
<color name="blue_gray_100">#e8f2ff</color>
<color name="blue_gray_50t">#cce8f2ff</color>
<color name="blue_gray_50">#e8f2ff</color>
<color name="blue_gray_25">#f7f8fa</color>
<color name="brown_primary_25">#fafaff</color>
<color name="brown_primary_50">#ffeedf</color>
<color name="brown_primary_100">#ffdcbb</color>
<color name="brown_primary_200">#ffb869</color>
<color name="brown_primary_300">#e89a3b</color>
<color name="brown_primary_400">#c98121</color>
<color name="brown_primary_500">#a96700</color>
<color name="brown_primary_600">#885200</color>
<color name="brown_primary_700">#673d00</color>
<color name="brown_primary_800">#482900</color>
<color name="brown_primary_900">#2b1700</color>
<color name="brown_gray_400">#c3a689</color>
<color name="brown_gray_300">#e0c1a3</color>
<color name="brown_gray_200">#feddbd</color>
<color name="brown_gray_100">#ffeedf</color>
<color name="brown_gray_50t">#ccffeedf</color>
<color name="brown_gray_50">#ffeedf</color>
<color name="brown_gray_25">#f7f8fa</color>
<color name="yellow_primary_25">#fafaff</color>
<color name="yellow_primary_50">#fff0ca</color>
<color name="yellow_primary_100">#ffe084</color>
<color name="yellow_primary_200">#e8c349</color>
<color name="yellow_primary_300">#cba82f</color>
<color name="yellow_primary_400">#ae8d10</color>
<color name="yellow_primary_500">#8f7300</color>
<color name="yellow_primary_600">#735c00</color>
<color name="yellow_primary_700">#574500</color>
<color name="yellow_primary_800">#3c2f00</color>
<color name="yellow_primary_900">#231b00</color>
<color name="yellow_gray_400">#b8aa87</color>
<color name="yellow_gray_300">#d4c5a1</color>
<color name="yellow_gray_200">#f1e1bb</color>
<color name="yellow_gray_100">#fff0ca</color>
<color name="yellow_gray_50t">#ccfff0ca</color>
<color name="yellow_gray_50">#fff0ca</color>
<color name="yellow_gray_25">#f7f8fa</color>
<color name="red_primary_25">#FFFBFA</color>
<color name="red_primary_50">#FEF3F2</color>
<color name="red_primary_100">#FEE4E2</color>
<color name="red_primary_200">#FECDCA</color>
<color name="red_primary_300">#FDA29B</color>
<color name="red_primary_400">#F97066</color>
<color name="red_primary_500">#F04438</color>
<color name="red_primary_600">#D92D20</color>
<color name="red_primary_700">#B42318</color>
<color name="red_primary_800">#912018</color>
<color name="red_primary_900">#7A271A</color>
<color name="red_gray_400">#d69f84</color>
<color name="red_gray_300">#f4ba9e</color>
<color name="red_gray_200">#ffdbcb</color>
<color name="red_gray_100">#ffedea</color>
<color name="red_gray_50t">#ffede6ca</color>
<color name="red_gray_50">#ffede6</color>
<color name="red_gray_25">#f7f8fa</color>
<color name="nord_primary_25">#fafaff</color>
<color name="nord_primary_50">#eff0ff</color>
<color name="nord_primary_100">#dfe1f2</color>
<color name="nord_primary_200">#c3c6d6</color>
<color name="nord_primary_300">#a8aaba</color>
<color name="nord_primary_400">#8f909f</color>
<color name="nord_primary_500">#727584</color>
<color name="nord_primary_600">#5b5e6c</color>
<color name="nord_primary_700">#434654</color>
<color name="nord_primary_800">#2d303d</color>
<color name="nord_primary_900">#181b27</color>
<color name="nord_gray_400">#aaaab4</color>
<color name="nord_gray_300">#c5c6d0</color>
<color name="nord_gray_200">#e2e2ec</color>
<color name="nord_gray_100">#eff0ff</color>
<color name="nord_gray_50t">#f0f0faca</color>
<color name="nord_gray_50">#f0f0fa</color>
<color name="nord_gray_25">#f7f8fa</color>
</resources>

View File

@@ -0,0 +1,265 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="ColorPalette">
<item name="colorPrimary25">@color/primary_25</item>
<item name="colorPrimary50">@color/primary_50</item>
<item name="colorPrimary100">@color/primary_100</item>
<item name="colorPrimary200">@color/primary_200</item>
<item name="colorPrimary300">@color/primary_300</item>
<item name="colorPrimary400">@color/primary_400</item>
<item name="colorPrimary500">@color/primary_500</item>
<item name="colorPrimary600">@color/primary_600</item>
<item name="colorPrimary700">@color/primary_700</item>
<item name="colorPrimary800">@color/primary_800</item>
<item name="colorPrimary900">@color/primary_900</item>
<item name="colorGray900">@color/gray_900</item>
<item name="colorGray800t">@color/gray_800t</item>
<item name="colorGray800">@color/gray_800</item>
<item name="colorGray700">@color/gray_700</item>
<item name="colorGray600">@color/gray_600</item>
<item name="colorGray500">@color/gray_500</item>
<item name="colorGray400">@color/gray_400</item>
<item name="colorGray300">@color/gray_300</item>
<item name="colorGray200">@color/gray_200</item>
<item name="colorGray100">@color/gray_100</item>
<item name="colorGray50t">@color/gray_50t</item>
<item name="colorGray50">@color/gray_50</item>
<item name="colorGray25">@color/gray_25</item>
</style>
<style name="ColorPalette.Material3">
<item name="colorPrimary25">@color/m3_primary_25</item>
<item name="colorPrimary50">@color/m3_primary_50</item>
<item name="colorPrimary100">@color/m3_primary_100</item>
<item name="colorPrimary200">@color/m3_primary_200</item>
<item name="colorPrimary300">@color/m3_primary_300</item>
<item name="colorPrimary400">@color/m3_primary_400</item>
<item name="colorPrimary500">@color/m3_primary_500</item>
<item name="colorPrimary600">@color/m3_primary_600</item>
<item name="colorPrimary700">@color/m3_primary_700</item>
<item name="colorPrimary800">@color/m3_primary_800</item>
<item name="colorPrimary900">@color/m3_primary_900</item>
<item name="colorGray900">@color/m3_gray_900</item>
<item name="colorGray800t">@color/m3_gray_800t</item>
<item name="colorGray800">@color/m3_gray_800</item>
<item name="colorGray700">@color/m3_gray_700</item>
<item name="colorGray600">@color/m3_gray_600</item>
<item name="colorGray500">@color/m3_gray_500</item>
<item name="colorGray400">@color/m3_gray_400</item>
<item name="colorGray300">@color/m3_gray_300</item>
<item name="colorGray200">@color/m3_gray_200</item>
<item name="colorGray100">@color/m3_gray_100</item>
<item name="colorGray50t">@color/m3_gray_50t</item>
<item name="colorGray50">@color/m3_gray_50</item>
<item name="colorGray25">@color/m3_gray_25</item>
</style>
<style name="ColorPalette.Material3.Dark">
<item name="colorPollVoted">?colorGray700</item>
<item name="colorWindowBackground">?colorGray900</item>
<item name="colorBackgroundLight">?colorGray800</item>
<item name="colorBackgroundLightest">?colorGray900</item>
<item name="android:colorBackground">?colorGray800</item>
<item name="android:statusBarColor">?colorGray900</item>
<item name="toolbarBackground">?colorGray900</item>
</style>
<style name="ColorPalette.Pink">
<item name="colorPrimary25">@color/primary_25</item>
<item name="colorPrimary50">@color/primary_50</item>
<item name="colorPrimary100">@color/primary_100</item>
<item name="colorPrimary200">@color/primary_200</item>
<item name="colorPrimary300">@color/primary_300</item>
<item name="colorPrimary400">@color/primary_400</item>
<item name="colorPrimary500">@color/primary_500</item>
<item name="colorPrimary600">@color/primary_600</item>
<item name="colorPrimary700">@color/primary_700</item>
<item name="colorPrimary800">@color/primary_800</item>
<item name="colorPrimary900">@color/primary_900</item>
</style>
<style name="ColorPalette.Purple">
<item name="colorPrimary25">@color/purple_primary_25</item>
<item name="colorPrimary50">@color/purple_primary_50</item>
<item name="colorPrimary100">@color/purple_primary_100</item>
<item name="colorPrimary200">@color/purple_primary_200</item>
<item name="colorPrimary300">@color/purple_primary_300</item>
<item name="colorPrimary400">@color/purple_primary_400</item>
<item name="colorPrimary500">@color/purple_primary_500</item>
<item name="colorPrimary600">@color/purple_primary_600</item>
<item name="colorPrimary700">@color/purple_primary_700</item>
<item name="colorPrimary800">@color/purple_primary_800</item>
<item name="colorPrimary900">@color/purple_primary_900</item>
</style>
<style name="ColorPalette.Green">
<item name="colorPrimary25">@color/green_primary_25</item>
<item name="colorPrimary50">@color/green_primary_50</item>
<item name="colorPrimary100">@color/green_primary_100</item>
<item name="colorPrimary200">@color/green_primary_200</item>
<item name="colorPrimary300">@color/green_primary_300</item>
<item name="colorPrimary400">@color/green_primary_400</item>
<item name="colorPrimary500">@color/green_primary_500</item>
<item name="colorPrimary600">@color/green_primary_600</item>
<item name="colorPrimary700">@color/green_primary_700</item>
<item name="colorPrimary800">@color/green_primary_800</item>
<item name="colorPrimary900">@color/green_primary_900</item>
<item name="colorGray900">@color/brownish_gray_900</item>
<item name="colorGray800t">@color/brownish_gray_800t</item>
<item name="colorGray800">@color/brownish_gray_800</item>
<item name="colorGray700">@color/brownish_gray_700</item>
<item name="colorGray600">@color/brownish_gray_600</item>
<item name="colorGray500">@color/brownish_gray_500</item>
<item name="colorGray400">@color/green_gray_400</item>
<item name="colorGray300">@color/green_gray_300</item>
<item name="colorGray200">@color/green_gray_200</item>
<item name="colorGray100">@color/green_gray_100</item>
<item name="colorGray50t">@color/green_gray_50t</item>
<item name="colorGray50">@color/green_gray_50</item>
<item name="colorGray25">@color/green_gray_25</item>
</style>
<style name="ColorPalette.Blue">
<item name="colorPrimary25">@color/blue_primary_25</item>
<item name="colorPrimary50">@color/blue_primary_50</item>
<item name="colorPrimary100">@color/blue_primary_100</item>
<item name="colorPrimary200">@color/blue_primary_200</item>
<item name="colorPrimary300">@color/blue_primary_300</item>
<item name="colorPrimary400">@color/blue_primary_400</item>
<item name="colorPrimary500">@color/blue_primary_500</item>
<item name="colorPrimary600">@color/blue_primary_600</item>
<item name="colorPrimary700">@color/blue_primary_700</item>
<item name="colorPrimary800">@color/blue_primary_800</item>
<item name="colorPrimary900">@color/blue_primary_900</item>
<item name="colorGray400">@color/blue_gray_400</item>
<item name="colorGray300">@color/blue_gray_300</item>
<item name="colorGray200">@color/blue_gray_200</item>
<item name="colorGray100">@color/blue_gray_100</item>
<item name="colorGray50t">@color/blue_gray_50t</item>
<item name="colorGray50">@color/blue_gray_50</item>
<item name="colorGray25">@color/blue_gray_25</item>
</style>
<style name="ColorPalette.Brown">
<item name="colorPrimary25">@color/brown_primary_25</item>
<item name="colorPrimary50">@color/brown_primary_50</item>
<item name="colorPrimary100">@color/brown_primary_100</item>
<item name="colorPrimary200">@color/brown_primary_200</item>
<item name="colorPrimary300">@color/brown_primary_300</item>
<item name="colorPrimary400">@color/brown_primary_400</item>
<item name="colorPrimary500">@color/brown_primary_500</item>
<item name="colorPrimary600">@color/brown_primary_600</item>
<item name="colorPrimary700">@color/brown_primary_700</item>
<item name="colorPrimary800">@color/brown_primary_800</item>
<item name="colorPrimary900">@color/brown_primary_900</item>
<item name="colorGray900">@color/brownish_gray_900</item>
<item name="colorGray800t">@color/brownish_gray_800t</item>
<item name="colorGray800">@color/brownish_gray_800</item>
<item name="colorGray700">@color/brownish_gray_700</item>
<item name="colorGray600">@color/brownish_gray_600</item>
<item name="colorGray500">@color/brownish_gray_500</item>
<item name="colorGray400">@color/brown_gray_400</item>
<item name="colorGray300">@color/brown_gray_300</item>
<item name="colorGray200">@color/brown_gray_200</item>
<item name="colorGray100">@color/brown_gray_100</item>
<item name="colorGray50t">@color/brown_gray_50t</item>
<item name="colorGray50">@color/brown_gray_50</item>
<item name="colorGray25">@color/brown_gray_25</item>
</style>
<style name="ColorPalette.Yellow">
<item name="colorPrimary25">@color/yellow_primary_25</item>
<item name="colorPrimary50">@color/yellow_primary_50</item>
<item name="colorPrimary100">@color/yellow_primary_100</item>
<item name="colorPrimary200">@color/yellow_primary_200</item>
<item name="colorPrimary300">@color/yellow_primary_300</item>
<item name="colorPrimary400">@color/yellow_primary_400</item>
<item name="colorPrimary500">@color/yellow_primary_500</item>
<item name="colorPrimary600">@color/yellow_primary_600</item>
<item name="colorPrimary700">@color/yellow_primary_700</item>
<item name="colorPrimary800">@color/yellow_primary_800</item>
<item name="colorPrimary900">@color/yellow_primary_900</item>
<item name="colorGray900">@color/brownish_gray_900</item>
<item name="colorGray800t">@color/brownish_gray_800t</item>
<item name="colorGray800">@color/brownish_gray_800</item>
<item name="colorGray700">@color/brownish_gray_700</item>
<item name="colorGray600">@color/brownish_gray_600</item>
<item name="colorGray500">@color/brownish_gray_500</item>
<item name="colorGray400">@color/yellow_gray_400</item>
<item name="colorGray300">@color/yellow_gray_300</item>
<item name="colorGray200">@color/yellow_gray_200</item>
<item name="colorGray100">@color/yellow_gray_100</item>
<item name="colorGray50t">@color/yellow_gray_50t</item>
<item name="colorGray50">@color/yellow_gray_50</item>
<item name="colorGray25">@color/yellow_gray_25</item>
</style>
<style name="ColorPalette.Red">
<item name="colorPrimary25">@color/red_primary_25</item>
<item name="colorPrimary50">@color/red_primary_50</item>
<item name="colorPrimary100">@color/red_primary_100</item>
<item name="colorPrimary200">@color/red_primary_200</item>
<item name="colorPrimary300">@color/red_primary_300</item>
<item name="colorPrimary400">@color/red_primary_400</item>
<item name="colorPrimary500">@color/red_primary_500</item>
<item name="colorPrimary600">@color/red_primary_600</item>
<item name="colorPrimary700">@color/red_primary_700</item>
<item name="colorPrimary800">@color/red_primary_800</item>
<item name="colorPrimary900">@color/red_primary_900</item>
<item name="colorGray900">@color/brownish_gray_900</item>
<item name="colorGray800t">@color/brownish_gray_800t</item>
<item name="colorGray800">@color/brownish_gray_800</item>
<item name="colorGray700">@color/brownish_gray_700</item>
<item name="colorGray600">@color/brownish_gray_600</item>
<item name="colorGray500">@color/brownish_gray_500</item>
<item name="colorGray400">@color/red_gray_400</item>
<item name="colorGray300">@color/red_gray_300</item>
<item name="colorGray200">@color/red_gray_200</item>
<item name="colorGray100">@color/red_gray_100</item>
<item name="colorGray50t">@color/red_gray_50t</item>
<item name="colorGray50">@color/red_gray_50</item>
<item name="colorGray25">@color/red_gray_25</item>
</style>
<style name="ColorPalette.Blueish">
<item name="colorPrimary25">@color/nord_primary_25</item>
<item name="colorPrimary50">@color/nord_primary_50</item>
<item name="colorPrimary100">@color/nord_primary_100</item>
<item name="colorPrimary200">@color/nord_primary_200</item>
<item name="colorPrimary300">@color/nord_primary_300</item>
<item name="colorPrimary400">@color/nord_primary_400</item>
<item name="colorPrimary500">@color/nord_primary_500</item>
<item name="colorPrimary600">@color/nord_primary_600</item>
<item name="colorPrimary700">@color/nord_primary_700</item>
<item name="colorPrimary800">@color/nord_primary_800</item>
<item name="colorPrimary900">@color/nord_primary_900</item>
<item name="colorGray900">@color/brownish_gray_900</item>
<item name="colorGray800t">@color/brownish_gray_800t</item>
<item name="colorGray800">@color/brownish_gray_800</item>
<item name="colorGray700">@color/brownish_gray_700</item>
<item name="colorGray600">@color/brownish_gray_600</item>
<item name="colorGray500">@color/brownish_gray_500</item>
<item name="colorGray400">@color/nord_gray_400</item>
<item name="colorGray300">@color/nord_gray_300</item>
<item name="colorGray200">@color/nord_gray_200</item>
<item name="colorGray100">@color/nord_gray_100</item>
<item name="colorGray50t">@color/nord_gray_50t</item>
<item name="colorGray50">@color/nord_gray_50</item>
<item name="colorGray25">@color/nord_gray_25</item>
</style>
</resources>

View File

@@ -2,7 +2,7 @@
<resources>
<string name="app_name" translatable="false">Moshidon</string>
<string name="get_started">Get started</string>
<string name="get_started">Create account</string>
<string name="already_have_account">I already have an account</string>
<string name="log_in">Log in</string>
<string name="next">Next</string>
@@ -398,17 +398,6 @@
<string name="remove_bookmark">Remove bookmark</string>
<string name="bookmarks">Bookmarks</string>
<string name="your_favorites">Your Favorites</string>
<string name="settings_always_reveal_content_warnings">Always reveal content warnings</string>
<string name="disable_marquee">Disable scrolling text in title bars</string>
<string name="settings_contribute_fork">Contribute to Moshidon</string>
<!-- <string name="settings_color_picker">Color theme:</string>-->
<!-- <string name="pink_color">Pink</string>-->
<!-- <string name="purple_color">Purple</string>-->
<!-- <string name="green_color">Green</string>-->
<!-- <string name="blue_color">Blue</string>-->
<!-- <string name="orange_color">Orange</string>-->
<!-- <string name="yellow_color">Yellow</string>-->
<string name="translate">Translate</string>
<string name="login_title">Welcome Back</string>
<string name="login_subtitle">Log in with the server where you created your account.</string>
<string name="server_url">Server URL</string>
@@ -433,9 +422,5 @@
<string name="not_accepting_new_members">Not accepting new members</string>
<string name="category_special_interests">Special Interests</string>
<string name="signup_passwords_dont_match">Passwords don\'t match</string>
<string name="post_language">Language: %s</string>
<string name="available_languages">Available languages</string>
<string name="language_name">%s (%s)</string>
<string name="clear_recent_languages">Clear recent languages</string>
<string name="confirm_clear_recent_languages">Are you sure you want to clear your recently used languages?</string>
<string name="loading_fediverse_resource_title">Looking it up on the Fediverse…</string>
</resources>

View File

@@ -1,65 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sk_app_name" translatable="false">Moshidon</string>
<string name="sk_pinned_posts">Pinned</string>
<string name="sk_delete_and_redraft">Delete and re-draft</string>
<string name="sk_confirm_delete_and_redraft_title">Delete and re-draft Post</string>
<string name="sk_confirm_delete_and_redraft">Are you sure you want to delete and re-draft this post?</string>
<string name="sk_pin_post">Pin to profile</string>
<string name="sk_confirm_pin_post_title">Pin post to profile</string>
<string name="sk_confirm_pin_post">Do you want to pin this post to your profile?</string>
<string name="sk_pinning">Pinning post…</string>
<string name="sk_unpin_post">Unpin from profile</string>
<string name="sk_confirm_unpin_post_title">Unpin post from profile</string>
<string name="sk_confirm_unpin_post">Are you sure you want to unpin this post?</string>
<string name="sk_unpinning">Unpinning post…</string>
<string name="sk_image_description">Image description</string>
<string name="sk_visibility_unlisted">Unlisted</string>
<string name="sk_settings_show_replies">Show replies</string>
<string name="sk_settings_show_boosts">Show boosts</string>
<string name="sk_settings_load_new_posts">Automatically load new posts</string>
<string name="sk_settings_show_interaction_counts">Show interaction counts</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">Mark media as sensitive</string>
<string name="sk_user_post_notifications_on">Turned on post notifications for %s</string>
<string name="sk_user_post_notifications_off">Turned off post notifications for %s</string>
<string name="sk_federated_timeline">Federation</string>
<string name="sk_federated_timeline_info_banner">These are the most recent posts by the people in your federation.</string>
<string name="sk_update_available">Moshidon %s is ready to download.</string>
<string name="sk_update_ready">Moshidon %s is downloaded and ready to install.</string>
<string name="sk_check_for_update">Check for update</string>
<string name="sk_no_update_available">No update available</string>
<string name="sk_list_timelines">Lists</string>
<string name="sk_follow_requests">Follow requests</string>
<string name="sk_accept_follow_request">Accept follow request</string>
<string name="sk_reject_follow_request">Reject follow request</string>
<string name="sk_lists_with_user">Lists with %s</string>
<string name="sk_settings_always_reveal_content_warnings">Always reveal content warnings</string>
<string name="sk_disable_marquee">Disable scrolling text in title bars</string>
<string name="sk_settings_contribute">Contribute to Moshidon</string>
<string name="sk_settings_show_federated_timeline">Show federated timeline</string>
<string name="sk_notification_type_status">Posts</string>
<string name="sk_notify_posts">Post notifications</string>
<string name="sk_settings_color_picker">Color theme</string>
<string name="sk_color_theme_pink">Pink</string>
<string name="sk_color_theme_purple">Purple</string>
<string name="sk_color_theme_green">Green</string>
<string name="sk_color_theme_blue">Blue</string>
<string name="sk_color_theme_brown">Orange</string>
<string name="sk_color_theme_yellow">Yellow</string>
<string name="sk_color_theme_red">Red</string>
<string name="sk_color_theme_material3">Material You</string>
<string name="sk_not_supported">Not supported on your device</string>
<string name="sk_poll_allow_multiple">Allow multiple choices</string>
<string name="sk_translate_post">Translate</string>
<string name="sk_translate_show_original">Show original</string>
<string name="sk_translated_using">Translated using %s</string>
<string name="sk_post_language">Language: %s</string>
<string name="sk_available_languages">Available languages</string>
<string name="sk_language_name">%s (%s)</string>
<string name="sk_clear_recent_languages">Clear recent languages</string>
<string name="sk_confirm_clear_recent_languages">Are you sure you want to clear your recently used languages?</string>
<string name="sk_welcome_title">Welcome to Moshidon!</string>
<string name="sk_welcome_text">To get started, please enter your home instances domain name below.</string>
<string name="sk_example_domain">example.social</string>
</resources>
<string name="sk_app_name">Moshidon</string>
<string name="sk_pinned_posts">Pinned</string>
<string name="sk_delete_and_redraft">Delete and re-draft</string>
<string name="sk_confirm_delete_and_redraft_title">Delete and re-draft Post</string>
<string name="sk_confirm_delete_and_redraft">Are you sure you want to delete and re-draft this post?</string>
<string name="sk_pin_post">Pin to profile</string>
<string name="sk_confirm_pin_post_title">Pin post to profile</string>
<string name="sk_confirm_pin_post">Do you want to pin this post to your profile?</string>
<string name="sk_pinning">Pinning post…</string>
<string name="sk_unpin_post">Unpin from profile</string>
<string name="sk_confirm_unpin_post_title">Unpin post from profile</string>
<string name="sk_confirm_unpin_post">Are you sure you want to unpin this post?</string>
<string name="sk_unpinning">Unpinning post…</string>
<string name="sk_image_description">Image description</string>
<string name="sk_visibility_unlisted">Unlisted</string>
<string name="sk_settings_show_replies">Show replies</string>
<string name="sk_settings_show_boosts">Show boosts</string>
<string name="sk_settings_load_new_posts">Automatically load new posts</string>
<string name="sk_settings_show_interaction_counts">Show interaction counts</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">Mark media as sensitive</string>
<string name="sk_user_post_notifications_on">Turned on post notifications for %s</string>
<string name="sk_user_post_notifications_off">Turned off post notifications for %s</string>
<string name="sk_federated_timeline">Federation</string>
<string name="sk_federated_timeline_info_banner">These are the most recent posts by the people in your federation.</string>
<string name="sk_update_available">Moshidon %s is ready to download.</string>
<string name="sk_update_ready">Moshidon %s is downloaded and ready to install.</string>
<string name="sk_check_for_update">Check for update</string>
<string name="sk_no_update_available">No update available</string>
<string name="sk_list_timelines">Lists</string>
<string name="sk_follow_requests">Follow requests</string>
<string name="sk_accept_follow_request">Accept follow request</string>
<string name="sk_reject_follow_request">Reject follow request</string>
<string name="sk_lists_with_user">Lists with %s</string>
<string name="sk_settings_always_reveal_content_warnings">Always reveal content warnings</string>
<string name="sk_disable_marquee">Disable scrolling text in title bars</string>
<string name="sk_settings_contribute">Contribute to Moshidon</string>
<string name="sk_settings_show_federated_timeline">Show federated timeline</string>
<string name="sk_notification_type_status">Posts</string>
<string name="sk_notify_posts">Post notifications</string>
<string name="sk_settings_color_palette">Color palette</string>
<string name="sk_color_palette_material3">System</string>
<string name="sk_color_palette_pink">Pink</string>
<string name="sk_color_palette_purple">Purple</string>
<string name="sk_color_palette_green">Green</string>
<string name="sk_color_palette_blue">Blue</string>
<string name="sk_color_palette_brown">Brown</string>
<string name="sk_color_palette_red">Red</string>
<string name="sk_color_palette_yellow">Yellow</string>
<string name="sk_color_palette_nord">Nord</string>
<string name="sk_poll_allow_multiple">Allow multiple choices</string>
<string name="sk_translate_post">Translate</string>
<string name="sk_translate_show_original">Show original</string>
<string name="sk_translated_using">Translated using %s</string>
<string name="sk_post_language">Language: %s</string>
<string name="sk_available_languages">Available languages</string>
<string name="sk_language_name">%s (%s)</string>
<string name="sk_clear_recent_languages">Clear recently used languages</string>
<string name="sk_confirm_clear_recent_languages">Are you sure you want to clear your recently used languages?</string>
<string name="sk_welcome_title">Welcome!</string>
<string name="sk_welcome_text">The shark salutes you! To get started, please enter your home instances domain name below.</string>
<string name="sk_example_domain">example.social</string>
<string name="sk_app_username" translatable="false">\@megalodon</string>
<string name="sk_tabs_disable_swipe">Disable swiping between tabs</string>
<string name="sk_settings_profile">Set up profile</string>
<string name="sk_settings_posting">Posting preferences</string>
<string name="sk_settings_filters">Configure filters</string>
<string name="sk_settings_auth">Security settings</string>
<string name="sk_settings_rules">Rules</string>
<string name="sk_settings_about">About the app</string>
<string name="sk_settings_donate">Donate</string>
<string name="sk_delete_notification">Delete notification</string>
<string name="sk_delete_notification_confirm_action">Delete notification</string>
<string name="sk_delete_notification_confirm">Are you sure you want to delete this notification?</string>
<string name="sk_clear_all_notifications">Clear all notifications</string>
<string name="sk_clear_all_notifications_confirm_action">Delete all</string>
<string name="sk_clear_all_notifications_confirm">Are you sure you want to clear all notifications\?</string>
<string name="sk_enable_delete_notifications">Enable deleting notifications</string>
<string name="sk_settings_publish_button_text">Publish button text</string>
<string name="sk_settings_publish_button_text_title">Customize Publish button text</string>
<string name="sk_settings_hide_translate_in_timeline">Hide translate button in timeline</string>
<string name="sk_settings_translation_availability_note_available">%s supports translation!</string>
<string name="sk_settings_translation_availability_note_unavailable">%s does not appear to support translation.</string>
<string name="sk_loading_fediverse_resource_title">Looking it up on the Fediverse…</string>
<string name="sk_undo_reblog">Undo reblog</string>
<string name="sk_reblog_with_visibility">Reblog with visibility</string>
<string name="sk_quote_post">Post about this</string>
<string name="sk_hashtags_you_follow">Hashtags you follow</string>
</resources>

View File

@@ -13,30 +13,31 @@
<item name="secondaryButtonStyle">@style/Widget.Mastodon.Button.Secondary_DarkOnLight</item>
<item name="primaryLargeButtonStyle">@style/Widget.Mastodon.Button.Large.Primary_DarkOnLight</item>
<item name="secondaryLargeButtonStyle">@style/Widget.Mastodon.Button.Large.Secondary_DarkOnLight</item>
<item name="android:colorAccent">@color/primary_700</item>
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:colorBackground">@color/gray_100</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_500</item>
<item name="colorButtonText">@color/gray_50</item>
<item name="android:colorAccent">?colorPrimary700</item>
<item name="android:colorPrimary">?colorGray800</item>
<item name="android:colorBackground">?colorGray100</item>
<item name="android:textColorPrimary">?colorGray800</item>
<item name="android:textColorSecondary">?colorGray500</item>
<item name="colorButtonText">?colorGray50</item>
<item name="colorSecondary">#E9EDF2</item>
<item name="colorBackgroundLight">@color/gray_50</item>
<item name="colorBackgroundLightest">@color/gray_25</item>
<item name="colorBackgroundLight">?colorGray50</item>
<item name="colorBackgroundLightest">?colorGray25</item>
<item name="colorBackgroundPopup">?colorBackgroundLightest</item>
<item name="colorDarkIcon">@color/custom_gray_900</item>
<item name="colorDarkIcon">?colorGray900</item>
<item name="colorWindowBackground">@color/white</item>
<item name="android:statusBarColor">@color/gray_50</item>
<item name="android:navigationBarColor">@color/navigation_bar_bg</item>
<item name="android:statusBarColor">?colorGray50</item>
<item name="android:navigationBarColor">?android:statusBarColor</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert</item>
<item name="colorPollMostVoted">@color/primary_500</item>
<item name="colorPollVoted">@color/gray_300</item>
<item name="colorAccentLight">@color/primary_600</item>
<item name="colorSearchField">@color/gray_200</item>
<item name="colorSearchHint">@color/custom_gray_600</item>
<item name="colorTabInactive">@color/gray_400</item>
<item name="colorAccentLightest">@color/primary_100</item>
<item name="profileHeaderBackground">@color/custom_gray_500</item>
<item name="colorPollMostVoted">?colorPrimary500</item>
<item name="colorPollVoted">?colorGray300</item>
<item name="colorAccentLight">?colorPrimary600</item>
<item name="colorSearchField">?colorGray200</item>
<item name="colorSearchHint">?colorGray600</item>
<item name="colorTabInactive">?colorGray400</item>
<item name="colorAccentLightest">?colorPrimary100</item>
<item name="profileHeaderBackground">?colorGray500</item>
<item name="toolbarBackground">?colorGray50</item>
<item name="buttonBackground">@drawable/bg_button_primary_dark_on_light</item>
<item name="android:editTextBackground">@drawable/bg_edittext_light</item>
@@ -72,8 +73,27 @@
<item name="colorM3OnError">#FFF</item>
<item name="colorM3ErrorContainer">#F9DEDC</item>
<item name="colorM3OnErrorContainer">#410E0B</item>
<!-- colors for button_bg|text_primary|secondary_dark|light_on_light|dark.xml -->
<item name="colorButtonBackgroundPrimaryDarkOnLight">?colorGray800</item>
<item name="colorButtonBackgroundPrimaryDarkOnLightDisabled">?colorGray300</item>
<item name="colorButtonTextPrimaryDarkOnLight">?colorGray50</item>
<item name="colorButtonTextPrimaryDarkOnLightDisabled">?colorGray400</item>
<item name="colorButtonBackgroundPrimaryLightOnDark">?colorGray100</item>
<item name="colorButtonBackgroundPrimaryLightOnDarkDisabled">?colorGray500</item>
<item name="colorButtonTextPrimaryLightOnDark">?colorGray800</item>
<item name="colorButtonTextPrimaryLightOnDarkDisabled">?colorGray400</item>
<item name="colorButtonBackgroundSecondaryDarkOnLight">?colorGray25</item>
<item name="colorButtonBackgroundSecondaryDarkOnLightDisabled">?colorGray100</item>
<item name="colorButtonTextSecondaryDarkOnLight">?colorGray800</item>
<item name="colorButtonTextSecondaryDarkOnLightDisabled">?colorGray400</item>
<item name="colorButtonBackgroundSecondaryLightOnDark">?colorGray600</item>
<item name="colorButtonBackgroundSecondaryLightOnDarkDisabled">?colorGray300</item>
<item name="colorButtonTextSecondaryLightOnDark">?colorGray50</item>
<item name="colorButtonTextSecondaryLightOnDarkDisabled">?colorGray400</item>
</style>
<style name="Theme.Mastodon.Dark" parent="Theme.AppKit">
<!-- needed to disable scrim on API 29+ -->
<item name="android:enforceNavigationBarContrast" tools:ignore="NewApi">false</item>
@@ -87,32 +107,31 @@
<item name="secondaryButtonStyle">@style/Widget.Mastodon.Button.Secondary_LightOnDark</item>
<item name="primaryLargeButtonStyle">@style/Widget.Mastodon.Button.Large.Primary_LightOnDark</item>
<item name="secondaryLargeButtonStyle">@style/Widget.Mastodon.Button.Large.Secondary_LightOnDark</item>
<item name="android:colorAccent">@color/primary_400</item>
<item name="android:colorPrimary">@color/gray_50</item>
<item name="android:colorBackground">@color/custom_gray_700</item>
<item name="android:textColorPrimary">@color/gray_50</item>
<item name="android:textColorSecondary">@color/gray_400</item>
<item name="colorButtonText">@color/custom_gray_800</item>
<item name="android:colorAccent">?colorPrimary400</item>
<item name="android:colorPrimary">?colorGray50</item>
<item name="android:colorBackground">?colorGray700</item>
<item name="android:textColorPrimary">?colorGray50</item>
<item name="android:textColorSecondary">?colorGray400</item>
<item name="colorButtonText">?colorGray800</item>
<item name="colorSecondary">#E9EDF2</item>
<item name="colorBackgroundLight">@color/custom_gray_700</item>
<item name="colorBackgroundLightest">@color/custom_gray_900</item>
<item name="colorBackgroundLight">?colorGray700</item>
<item name="colorBackgroundLightest">?colorGray900</item>
<item name="colorBackgroundPopup">?colorBackgroundLightest</item>
<item name="colorDarkIcon">@color/gray_25</item>
<item name="colorWindowBackground">@color/custom_gray_800</item>
<item name="android:statusBarColor">@color/custom_gray_800</item>
<item name="android:navigationBarColor">@color/custom_gray_800</item>
<item name="colorDarkIcon">?colorGray25</item>
<item name="colorWindowBackground">?colorGray800</item>
<item name="android:statusBarColor">?colorGray800</item>
<item name="android:navigationBarColor">?android:statusBarColor</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Dark</item>
<item name="colorPollMostVoted">@color/primary_700</item>
<item name="colorPollVoted">@color/custom_gray_600</item>
<item name="colorAccentLight">@color/primary_600</item>
<item name="colorAccentLightest">@color/primary_800</item>
<item name="colorTabInactive">@color/gray_400</item>
<item name="colorPollMostVoted">?colorPrimary700</item>
<item name="colorPollVoted">?colorGray600</item>
<item name="colorAccentLight">?colorPrimary600</item>
<item name="colorAccentLightest">?colorPrimary800</item>
<item name="colorTabInactive">?colorGray400</item>
<item name="profileHeaderBackground">?colorWindowBackground</item>
<!-- TODO dark colors -->
<item name="colorSearchField">@color/custom_gray_700</item>
<item name="colorSearchHint">@color/gray_300</item>
<item name="colorSearchField">?colorGray700</item>
<item name="colorSearchHint">?colorGray300</item>
<item name="toolbarBackground">?colorGray800</item>
<item name="buttonBackground">@drawable/bg_button_primary_light_on_dark</item>
<item name="android:editTextBackground">@drawable/bg_edittext_dark</item>
@@ -148,6 +167,24 @@
<item name="colorM3OnError">#601410</item>
<item name="colorM3ErrorContainer">#8C1D18</item>
<item name="colorM3OnErrorContainer">#F9DEDC</item>
<!-- colors for button_bg|text_primary|secondary_dark|light_on_light|dark.xml -->
<item name="colorButtonBackgroundPrimaryDarkOnLight">?colorGray800</item>
<item name="colorButtonBackgroundPrimaryDarkOnLightDisabled">?colorGray300</item>
<item name="colorButtonTextPrimaryDarkOnLight">?colorGray50</item>
<item name="colorButtonTextPrimaryDarkOnLightDisabled">?colorGray400</item>
<item name="colorButtonBackgroundPrimaryLightOnDark">?colorGray100</item>
<item name="colorButtonBackgroundPrimaryLightOnDarkDisabled">?colorGray500</item>
<item name="colorButtonTextPrimaryLightOnDark">?colorGray800</item>
<item name="colorButtonTextPrimaryLightOnDarkDisabled">?colorGray400</item>
<item name="colorButtonBackgroundSecondaryDarkOnLight">?colorGray25</item>
<item name="colorButtonBackgroundSecondaryDarkOnLightDisabled">?colorGray100</item>
<item name="colorButtonTextSecondaryDarkOnLight">?colorGray800</item>
<item name="colorButtonTextSecondaryDarkOnLightDisabled">?colorGray400</item>
<item name="colorButtonBackgroundSecondaryLightOnDark">?colorGray600</item>
<item name="colorButtonBackgroundSecondaryLightOnDarkDisabled">?colorGray300</item>
<item name="colorButtonTextSecondaryLightOnDark">?colorGray50</item>
<item name="colorButtonTextSecondaryLightOnDarkDisabled">?colorGray400</item>
</style>
<style name="Theme.Mastodon.Dark.TrueBlack">
@@ -157,708 +194,31 @@
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.TrueBlack</item>
<item name="colorBackgroundLight">@color/black</item>
<item name="colorButtonText">@color/black</item>
<item name="colorPollVoted">@color/custom_gray_800</item>
<item name="colorSearchField">@color/custom_gray_900</item>
<item name="colorPollVoted">?colorGray700</item>
<item name="colorSearchField">?colorGray900</item>
<item name="colorBackgroundLightest">@color/black</item>
<item name="colorBackgroundPopup">@color/custom_gray_900</item>
<item name="colorBackgroundPopup">?colorGray900</item>
<item name="colorWindowBackground">@color/black</item>
<item name="colorM3Background">#000</item>
<!-- <item name="colorButtonBackgroundPrimaryLightOnDarkDisabled">?colorGray900</item>-->
</style>
<style name="Theme.Mastodon.AutoLightDark" parent="Theme.Mastodon.Light"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack" parent="Theme.Mastodon.Light"/>
<style name="Theme.Mastodon.Light.CustomBase" parent="Theme.Mastodon.Light">
<!-- needed to disable scrim on API 29+ -->
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_500</item>
<item name="colorDarkIcon">@color/custom_gray_900</item>
<item name="colorSearchHint">@color/custom_gray_600</item>
<item name="profileHeaderBackground">@color/custom_gray_500</item>
</style>
<style name="Theme.Mastodon.Dark.CustomBase" parent="Theme.Mastodon.Dark">
<!-- needed to disable scrim on API 29+ -->
<item name="android:colorBackground">@color/custom_gray_700</item>
<item name="colorButtonText">@color/custom_gray_800</item>
<item name="colorBackgroundLight">@color/custom_gray_700</item>
<item name="colorBackgroundLightest">@color/custom_gray_900</item>
<item name="colorBackgroundPopup">@color/custom_gray_900</item>
<item name="colorDarkIcon">@color/gray_25</item>
<item name="colorWindowBackground">@color/custom_gray_800</item>
<item name="android:statusBarColor">@color/custom_gray_800</item>
<item name="android:navigationBarColor">@color/custom_gray_800</item>
<item name="colorPollVoted">@color/custom_gray_600</item>
<item name="profileHeaderBackground">?colorWindowBackground</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.CustomBase</item>
<!-- TODO dark colors -->
<item name="colorSearchField">@color/custom_gray_700</item>
</style>
<style name="Theme.Mastodon.Dark.TrueBlack.CustomBase">
<item name="colorPollVoted">@color/custom_gray_800</item>
<item name="colorSearchField">@color/custom_gray_900</item>
<item name="colorBackgroundPopup">@color/custom_gray_900</item>
<item name="android:navigationBarColor">@color/black</item>
<item name="android:colorBackground">@color/black</item>
<item name="android:statusBarColor">@color/black</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.TrueBlack</item>
<item name="colorBackgroundLight">@color/black</item>
<item name="colorWindowBackground">@color/black</item>
<item name="colorButtonText">@color/black</item>
<item name="colorBackgroundLightest">@color/black</item>
</style>
<style name="Theme.Mastodon.Light.Material3" parent="Theme.Mastodon.Light.CustomBase">
<!-- needed to disable scrim on API 29+ -->
<item name="android:colorPrimary">@color/m3_gray_800</item>
<item name="android:textColorPrimary">@color/m3_gray_800</item>
<item name="android:textColorSecondary">@color/m3_gray_500</item>
<item name="colorDarkIcon">@color/m3_gray_900</item>
<item name="colorSearchHint">@color/m3_gray_600</item>
<item name="profileHeaderBackground">@color/m3_gray_500</item>
<item name="android:colorAccent">@color/m3_primary_700</item>
<item name="android:colorBackground">@color/m3_gray_100</item>
<item name="colorButtonText">@color/m3_gray_50</item>
<item name="colorBackgroundLight">@color/m3_gray_50</item>
<item name="colorBackgroundLightest">@color/m3_gray_25</item>
<item name="android:statusBarColor">@color/m3_gray_50</item>
<item name="android:navigationBarColor">@color/m3_navigation_bar_bg</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.M3</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.M3</item>
<item name="colorPollMostVoted">@color/m3_primary_500</item>
<item name="colorPollVoted">@color/m3_gray_300</item>
<item name="colorAccentLight">@color/m3_primary_600</item>
<item name="colorSearchField">@color/m3_gray_200</item>
<item name="colorTabInactive">@color/m3_gray_400</item>
<item name="colorAccentLightest">@color/m3_primary_100</item>
<item name="colorSecondary">@color/m3_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.Material3" parent="Theme.Mastodon.Dark.CustomBase">
<!-- needed to disable scrim on API 29+ -->
<item name="android:colorBackground">@color/m3_gray_800</item>
<item name="colorButtonText">@color/m3_gray_900</item>
<item name="colorBackgroundLight">@color/m3_gray_800</item>
<item name="colorBackgroundLightest">@color/m3_gray_900</item>
<item name="colorBackgroundPopup">@color/m3_gray_900</item>
<item name="colorDarkIcon">@color/m3_gray_25</item>
<item name="colorWindowBackground">@color/m3_gray_900</item>
<item name="android:statusBarColor">@color/m3_gray_900</item>
<item name="android:navigationBarColor">@color/m3_gray_900</item>
<item name="colorPollVoted">@color/m3_gray_700</item>
<item name="profileHeaderBackground">?colorWindowBackground</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.Material3</item>
<item name="android:colorAccent">@color/m3_primary_400</item>
<item name="android:colorPrimary">@color/m3_gray_50</item>
<item name="android:textColorPrimary">@color/m3_gray_50</item>
<item name="android:textColorSecondary">@color/m3_gray_400</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Dark.M3</item>
<item name="colorPollMostVoted">@color/m3_primary_700</item>
<item name="colorAccentLight">@color/m3_primary_600</item>
<item name="colorAccentLightest">@color/m3_primary_800</item>
<item name="colorTabInactive">@color/m3_gray_400</item>
<item name="colorSearchHint">@color/m3_gray_300</item>
<item name="colorSecondary">@color/m3_gray_50</item>
<!-- TODO dark colors -->
<item name="colorSearchField">@color/m3_gray_700</item>
</style>
<style name="Theme.Mastodon.Dark.TrueBlack.Material3" parent="Theme.Mastodon.Dark.Material3">
<item name="android:colorAccent">@color/m3_primary_400</item>
<item name="colorPollMostVoted">@color/m3_primary_700</item>
<item name="colorAccentLight">@color/m3_primary_600</item>
<item name="colorAccentLightest">@color/m3_primary_800</item>
<item name="colorSecondary">@color/m3_gray_50</item>
<item name="colorPollVoted">@color/m3_gray_800</item>
<item name="colorSearchField">@color/m3_gray_900</item>
<item name="colorBackgroundPopup">@color/m3_gray_900</item>
<item name="android:navigationBarColor">@color/black</item>
<item name="android:colorBackground">@color/black</item>
<item name="android:statusBarColor">@color/black</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.TrueBlack</item>
<item name="colorBackgroundLight">@color/black</item>
<item name="colorWindowBackground">@color/black</item>
<item name="colorButtonText">@color/black</item>
<item name="colorBackgroundLightest">@color/black</item>
</style>
<style name="Theme.Mastodon.AutoLightDark.Material3" parent="Theme.Mastodon.Light.Material3"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Material3" parent="Theme.Mastodon.Light.Material3"/>
<style name="Theme.Mastodon.Dialog.Alert.Dark.M3" parent="android:Theme.Material.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/m3_primary_600</item>
<item name="android:colorPrimary">@color/m3_gray_50</item>
<item name="android:colorBackground">@color/m3_gray_700</item>
<item name="android:textColorPrimary">@color/m3_gray_50</item>
<item name="android:textColorSecondary">@color/m3_gray_400</item>
</style>
<style name="Theme.Mastodon.Dialog.Alert.M3" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/m3_primary_700</item>
<item name="android:colorPrimary">@color/m3_gray_800</item>
<item name="android:colorBackground">@color/m3_gray_100</item>
<item name="android:textColorPrimary">@color/m3_gray_800</item>
<item name="android:textColorSecondary">@color/m3_gray_500</item>
</style>
<style name="Theme.Mastodon.Toolbar.M3" parent="android:ThemeOverlay.Material.ActionBar">
<item name="android:colorPrimary">@color/m3_gray_50</item>
<item name="android:textColorPrimary">@color/m3_gray_800</item>
<item name="android:textColorSecondary">@color/m3_gray_800</item>
</style>
<style name="Theme.Mastodon.Light.Green" parent="Theme.Mastodon.Light.CustomBase">
<item name="android:colorAccent">@color/green_primary_700</item>
<item name="android:colorBackground">@color/green_gray_100</item>
<item name="colorButtonText">@color/green_gray_50</item>
<item name="colorBackgroundLight">@color/green_gray_50</item>
<item name="colorBackgroundLightest">@color/green_gray_25</item>
<item name="android:statusBarColor">@color/green_gray_50</item>
<item name="android:navigationBarColor">@color/green_navigation_bar_bg</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Green</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Green</item>
<item name="colorPollMostVoted">@color/green_primary_500</item>
<item name="colorPollVoted">@color/green_gray_300</item>
<item name="colorAccentLight">@color/green_primary_600</item>
<item name="colorSearchField">@color/green_gray_200</item>
<item name="colorTabInactive">@color/green_gray_400</item>
<item name="colorAccentLightest">@color/green_primary_100</item>
<item name="colorSecondary">@color/green_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.Green" parent="Theme.Mastodon.Dark.CustomBase">
<item name="android:colorAccent">@color/green_primary_400</item>
<item name="android:colorPrimary">@color/green_gray_50</item>
<item name="android:textColorPrimary">@color/green_gray_50</item>
<item name="android:textColorSecondary">@color/green_gray_400</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Dark.Green</item>
<item name="colorPollMostVoted">@color/green_primary_700</item>
<item name="colorAccentLight">@color/green_primary_600</item>
<item name="colorAccentLightest">@color/green_primary_800</item>
<item name="colorTabInactive">@color/green_gray_400</item>
<item name="colorSearchHint">@color/green_gray_300</item>
<item name="colorSecondary">@color/green_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.TrueBlack.Green" parent="Theme.Mastodon.Dark.Green">
<item name="android:colorAccent">@color/green_primary_400</item>
<item name="colorPollMostVoted">@color/green_primary_700</item>
<item name="colorAccentLight">@color/green_primary_600</item>
<item name="colorAccentLightest">@color/green_primary_800</item>
<item name="colorSecondary">@color/green_gray_50</item>
<item name="colorPollVoted">@color/custom_gray_800</item>
<item name="colorSearchField">@color/custom_gray_900</item>
<item name="colorBackgroundPopup">@color/custom_gray_900</item>
<item name="android:navigationBarColor">@color/black</item>
<item name="android:colorBackground">@color/black</item>
<item name="android:statusBarColor">@color/black</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.TrueBlack</item>
<item name="colorBackgroundLight">@color/black</item>
<item name="colorWindowBackground">@color/black</item>
<item name="colorButtonText">@color/black</item>
<item name="colorBackgroundLightest">@color/black</item>
</style>
<style name="Theme.Mastodon.AutoLightDark.Green" parent="Theme.Mastodon.Light.Green"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Green" parent="Theme.Mastodon.Light.Green"/>
<style name="Theme.Mastodon.Dialog.Alert.Dark.Green" parent="android:Theme.Material.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/green_primary_600</item>
<item name="android:colorPrimary">@color/green_gray_50</item>
<item name="android:colorBackground">@color/custom_gray_700</item>
<item name="android:textColorPrimary">@color/green_gray_50</item>
<item name="android:textColorSecondary">@color/green_gray_400</item>
</style>
<style name="Theme.Mastodon.Dialog.Alert.Green" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/green_primary_700</item>
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:colorBackground">@color/green_gray_100</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_500</item>
</style>
<style name="Theme.Mastodon.Toolbar.Green" parent="android:ThemeOverlay.Material.ActionBar">
<item name="android:colorPrimary">@color/green_gray_50</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_800</item>
</style>
<style name="Theme.Mastodon.Light.Blue" parent="Theme.Mastodon.Light.CustomBase">
<item name="android:colorAccent">@color/blue_primary_700</item>
<item name="android:colorBackground">@color/blue_gray_100</item>
<item name="colorButtonText">@color/blue_gray_50</item>
<item name="colorBackgroundLight">@color/blue_gray_50</item>
<item name="colorBackgroundLightest">@color/blue_gray_25</item>
<item name="android:statusBarColor">@color/blue_gray_50</item>
<item name="android:navigationBarColor">@color/blue_navigation_bar_bg</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Blue</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Blue</item>
<item name="colorPollMostVoted">@color/blue_primary_500</item>
<item name="colorPollVoted">@color/blue_gray_300</item>
<item name="colorAccentLight">@color/blue_primary_600</item>
<item name="colorSearchField">@color/blue_gray_200</item>
<item name="colorTabInactive">@color/blue_gray_400</item>
<item name="colorAccentLightest">@color/blue_primary_100</item>
<item name="colorSecondary">@color/blue_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.Blue" parent="Theme.Mastodon.Dark.CustomBase">
<item name="android:colorAccent">@color/blue_primary_400</item>
<item name="android:colorPrimary">@color/blue_gray_50</item>
<item name="android:textColorPrimary">@color/blue_gray_50</item>
<item name="android:textColorSecondary">@color/blue_gray_400</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Dark.Blue</item>
<item name="colorPollMostVoted">@color/blue_primary_700</item>
<item name="colorAccentLight">@color/blue_primary_600</item>
<item name="colorAccentLightest">@color/blue_primary_800</item>
<item name="colorTabInactive">@color/blue_gray_400</item>
<item name="colorSearchHint">@color/blue_gray_300</item>
<item name="colorSecondary">@color/blue_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.TrueBlack.Blue" parent="Theme.Mastodon.Dark.Blue">
<item name="android:colorAccent">@color/blue_primary_400</item>
<item name="colorPollMostVoted">@color/blue_primary_700</item>
<item name="colorAccentLight">@color/blue_primary_600</item>
<item name="colorAccentLightest">@color/blue_primary_800</item>
<item name="colorSecondary">@color/blue_gray_50</item>
<item name="colorPollVoted">@color/custom_gray_800</item>
<item name="colorSearchField">@color/custom_gray_900</item>
<item name="colorBackgroundPopup">@color/custom_gray_900</item>
<item name="android:navigationBarColor">@color/black</item>
<item name="android:colorBackground">@color/black</item>
<item name="android:statusBarColor">@color/black</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.TrueBlack</item>
<item name="colorBackgroundLight">@color/black</item>
<item name="colorWindowBackground">@color/black</item>
<item name="colorButtonText">@color/black</item>
<item name="colorBackgroundLightest">@color/black</item>
</style>
<style name="Theme.Mastodon.AutoLightDark.Blue" parent="Theme.Mastodon.Light.Blue"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Blue" parent="Theme.Mastodon.Light.Blue"/>
<style name="Theme.Mastodon.Dialog.Alert.Dark.Blue" parent="android:Theme.Material.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/blue_primary_600</item>
<item name="android:colorPrimary">@color/blue_gray_50</item>
<item name="android:colorBackground">@color/custom_gray_700</item>
<item name="android:textColorPrimary">@color/blue_gray_50</item>
<item name="android:textColorSecondary">@color/blue_gray_400</item>
</style>
<style name="Theme.Mastodon.Dialog.Alert.Blue" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/blue_primary_700</item>
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:colorBackground">@color/blue_gray_100</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_500</item>
</style>
<style name="Theme.Mastodon.Toolbar.Blue" parent="android:ThemeOverlay.Material.ActionBar">
<item name="android:colorPrimary">@color/blue_gray_50</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_800</item>
</style>
<style name="Theme.Mastodon.Light.Orange" parent="Theme.Mastodon.Light.CustomBase">
<item name="android:colorAccent">@color/orange_primary_700</item>
<item name="android:colorBackground">@color/orange_gray_100</item>
<item name="colorButtonText">@color/orange_gray_50</item>
<item name="colorBackgroundLight">@color/orange_gray_50</item>
<item name="colorBackgroundLightest">@color/orange_gray_25</item>
<item name="android:statusBarColor">@color/orange_gray_50</item>
<item name="android:navigationBarColor">@color/orange_navigation_bar_bg</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Orange</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Orange</item>
<item name="colorPollMostVoted">@color/orange_primary_500</item>
<item name="colorPollVoted">@color/orange_gray_300</item>
<item name="colorAccentLight">@color/orange_primary_600</item>
<item name="colorSearchField">@color/orange_gray_200</item>
<item name="colorTabInactive">@color/orange_gray_400</item>
<item name="colorAccentLightest">@color/orange_primary_100</item>
<item name="colorSecondary">@color/orange_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.Orange" parent="Theme.Mastodon.Dark.CustomBase">
<item name="android:colorAccent">@color/orange_primary_400</item>
<item name="android:colorPrimary">@color/orange_gray_50</item>
<item name="android:textColorPrimary">@color/orange_gray_50</item>
<item name="android:textColorSecondary">@color/orange_gray_400</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Dark.Orange</item>
<item name="colorPollMostVoted">@color/orange_primary_700</item>
<item name="colorAccentLight">@color/orange_primary_600</item>
<item name="colorAccentLightest">@color/orange_primary_800</item>
<item name="colorTabInactive">@color/orange_gray_400</item>
<item name="colorSearchHint">@color/orange_gray_300</item>
<item name="colorSecondary">@color/orange_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.TrueBlack.Orange" parent="Theme.Mastodon.Dark.Orange">
<item name="android:colorAccent">@color/orange_primary_400</item>
<item name="colorPollMostVoted">@color/orange_primary_700</item>
<item name="colorAccentLight">@color/orange_primary_600</item>
<item name="colorAccentLightest">@color/orange_primary_800</item>
<item name="colorSecondary">@color/orange_gray_50</item>
<item name="colorPollVoted">@color/custom_gray_800</item>
<item name="colorSearchField">@color/custom_gray_900</item>
<item name="colorBackgroundPopup">@color/custom_gray_900</item>
<item name="android:navigationBarColor">@color/black</item>
<item name="android:colorBackground">@color/black</item>
<item name="android:statusBarColor">@color/black</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.TrueBlack</item>
<item name="colorBackgroundLight">@color/black</item>
<item name="colorWindowBackground">@color/black</item>
<item name="colorButtonText">@color/black</item>
<item name="colorBackgroundLightest">@color/black</item>
</style>
<style name="Theme.Mastodon.AutoLightDark.Orange" parent="Theme.Mastodon.Light.Orange"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Orange" parent="Theme.Mastodon.Light.Orange"/>
<style name="Theme.Mastodon.Dialog.Alert.Dark.Orange" parent="android:Theme.Material.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/orange_primary_600</item>
<item name="android:colorPrimary">@color/orange_gray_50</item>
<item name="android:colorBackground">@color/custom_gray_700</item>
<item name="android:textColorPrimary">@color/orange_gray_50</item>
<item name="android:textColorSecondary">@color/orange_gray_400</item>
</style>
<style name="Theme.Mastodon.Dialog.Alert.Orange" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/orange_primary_700</item>
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:colorBackground">@color/orange_gray_100</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_500</item>
</style>
<style name="Theme.Mastodon.Toolbar.Orange" parent="android:ThemeOverlay.Material.ActionBar">
<item name="android:colorPrimary">@color/orange_gray_50</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_800</item>
</style>
<style name="Theme.Mastodon.Light.Yellow" parent="Theme.Mastodon.Light.CustomBase">
<item name="android:colorAccent">@color/yellow_primary_700</item>
<item name="android:colorBackground">@color/yellow_gray_100</item>
<item name="colorButtonText">@color/yellow_gray_50</item>
<item name="colorBackgroundLight">@color/yellow_gray_50</item>
<item name="colorBackgroundLightest">@color/yellow_gray_25</item>
<item name="android:statusBarColor">@color/yellow_gray_50</item>
<item name="android:navigationBarColor">@color/yellow_navigation_bar_bg</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Yellow</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Yellow</item>
<item name="colorPollMostVoted">@color/yellow_primary_500</item>
<item name="colorPollVoted">@color/yellow_gray_300</item>
<item name="colorAccentLight">@color/yellow_primary_600</item>
<item name="colorSearchField">@color/yellow_gray_200</item>
<item name="colorTabInactive">@color/yellow_gray_400</item>
<item name="colorAccentLightest">@color/yellow_primary_100</item>
<item name="colorSecondary">@color/yellow_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.Yellow" parent="Theme.Mastodon.Dark.CustomBase">
<item name="android:colorAccent">@color/yellow_primary_400</item>
<item name="android:colorPrimary">@color/yellow_gray_50</item>
<item name="android:textColorPrimary">@color/yellow_gray_50</item>
<item name="android:textColorSecondary">@color/yellow_gray_400</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Dark.Yellow</item>
<item name="colorPollMostVoted">@color/yellow_primary_700</item>
<item name="colorAccentLight">@color/yellow_primary_600</item>
<item name="colorAccentLightest">@color/yellow_primary_800</item>
<item name="colorTabInactive">@color/yellow_gray_400</item>
<item name="colorSearchHint">@color/yellow_gray_300</item>
<item name="colorSecondary">@color/yellow_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.TrueBlack.Yellow" parent="Theme.Mastodon.Dark.Yellow">
<item name="android:colorAccent">@color/yellow_primary_400</item>
<item name="colorPollMostVoted">@color/yellow_primary_700</item>
<item name="colorAccentLight">@color/yellow_primary_600</item>
<item name="colorAccentLightest">@color/yellow_primary_800</item>
<item name="colorSecondary">@color/yellow_gray_50</item>
<item name="colorPollVoted">@color/custom_gray_800</item>
<item name="colorSearchField">@color/custom_gray_900</item>
<item name="colorBackgroundPopup">@color/custom_gray_900</item>
<item name="android:navigationBarColor">@color/black</item>
<item name="android:colorBackground">@color/black</item>
<item name="android:statusBarColor">@color/black</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.TrueBlack</item>
<item name="colorBackgroundLight">@color/black</item>
<item name="colorWindowBackground">@color/black</item>
<item name="colorButtonText">@color/black</item>
<item name="colorBackgroundLightest">@color/black</item>
</style>
<style name="Theme.Mastodon.AutoLightDark.Yellow" parent="Theme.Mastodon.Light.Yellow"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Yellow" parent="Theme.Mastodon.Light.Yellow"/>
<style name="Theme.Mastodon.Dialog.Alert.Dark.Yellow" parent="android:Theme.Material.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/yellow_primary_600</item>
<item name="android:colorPrimary">@color/yellow_gray_50</item>
<item name="android:colorBackground">@color/custom_gray_700</item>
<item name="android:textColorPrimary">@color/yellow_gray_50</item>
<item name="android:textColorSecondary">@color/yellow_gray_400</item>
</style>
<style name="Theme.Mastodon.Dialog.Alert.Yellow" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/yellow_primary_700</item>
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:colorBackground">@color/yellow_gray_100</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_500</item>
</style>
<style name="Theme.Mastodon.Toolbar.Yellow" parent="android:ThemeOverlay.Material.ActionBar">
<item name="android:colorPrimary">@color/yellow_gray_50</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_800</item>
</style>
<style name="Theme.Mastodon.Light.Red" parent="Theme.Mastodon.Light.CustomBase">
<item name="android:colorAccent">@color/red_primary_700</item>
<item name="android:colorBackground">@color/red_gray_100</item>
<item name="colorButtonText">@color/red_gray_50</item>
<item name="colorBackgroundLight">@color/red_gray_50</item>
<item name="colorBackgroundLightest">@color/red_gray_25</item>
<item name="android:statusBarColor">@color/red_gray_50</item>
<item name="android:navigationBarColor">@color/red_navigation_bar_bg</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Red</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Red</item>
<item name="colorPollMostVoted">@color/red_primary_500</item>
<item name="colorPollVoted">@color/red_gray_300</item>
<item name="colorAccentLight">@color/red_primary_600</item>
<item name="colorSearchField">@color/red_gray_200</item>
<item name="colorTabInactive">@color/red_gray_400</item>
<item name="colorAccentLightest">@color/red_primary_100</item>
<item name="colorSecondary">@color/red_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.Red" parent="Theme.Mastodon.Dark.CustomBase">
<item name="android:colorAccent">@color/red_primary_400</item>
<item name="android:colorPrimary">@color/red_gray_50</item>
<item name="android:textColorPrimary">@color/red_gray_50</item>
<item name="android:textColorSecondary">@color/red_gray_400</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Dark.Red</item>
<item name="colorPollMostVoted">@color/red_primary_700</item>
<item name="colorAccentLight">@color/red_primary_600</item>
<item name="colorAccentLightest">@color/red_primary_800</item>
<item name="colorTabInactive">@color/red_gray_400</item>
<item name="colorSearchHint">@color/red_gray_300</item>
<item name="colorSecondary">@color/red_gray_50</item>
</style>
<style name="Theme.Mastodon.Dark.TrueBlack.Red" parent="Theme.Mastodon.Dark.Red">
<item name="android:colorAccent">@color/red_primary_400</item>
<item name="colorPollMostVoted">@color/red_primary_700</item>
<item name="colorAccentLight">@color/red_primary_600</item>
<item name="colorAccentLightest">@color/red_primary_800</item>
<item name="colorSecondary">@color/red_gray_50</item>
<item name="colorPollVoted">@color/custom_gray_800</item>
<item name="colorSearchField">@color/custom_gray_900</item>
<item name="colorBackgroundPopup">@color/custom_gray_900</item>
<item name="android:navigationBarColor">@color/black</item>
<item name="android:colorBackground">@color/black</item>
<item name="android:statusBarColor">@color/black</item>
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.TrueBlack</item>
<item name="colorBackgroundLight">@color/black</item>
<item name="colorWindowBackground">@color/black</item>
<item name="colorButtonText">@color/black</item>
<item name="colorBackgroundLightest">@color/black</item>
</style>
<style name="Theme.Mastodon.AutoLightDark.Red" parent="Theme.Mastodon.Light.Red"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Red" parent="Theme.Mastodon.Light.Red"/>
<style name="Theme.Mastodon.Dialog.Alert.Dark.Red" parent="android:Theme.Material.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/red_primary_600</item>
<item name="android:colorPrimary">@color/red_gray_50</item>
<item name="android:colorBackground">@color/custom_gray_700</item>
<item name="android:textColorPrimary">@color/red_gray_50</item>
<item name="android:textColorSecondary">@color/red_gray_400</item>
</style>
<style name="Theme.Mastodon.Dialog.Alert.Red" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/red_primary_700</item>
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:colorBackground">@color/red_gray_100</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_500</item>
</style>
<style name="Theme.Mastodon.Toolbar.Red" parent="android:ThemeOverlay.Material.ActionBar">
<item name="android:colorPrimary">@color/red_gray_50</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_800</item>
</style>
<style name="Theme.Mastodon.Dark.Original" parent="Theme.Mastodon.Dark">
<item name="android:colorAccent">@color/original_primary_400</item>
<item name="colorPollMostVoted">@color/original_primary_700</item>
<item name="colorAccentLight">@color/original_primary_600</item>
<item name="colorAccentLightest">@color/original_primary_800</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Dark.Original</item>
</style>
<style name="Theme.Mastodon.Dark.TrueBlack.Original" parent="Theme.Mastodon.Dark.TrueBlack">
<item name="android:colorAccent">@color/original_primary_400</item>
<item name="colorPollMostVoted">@color/original_primary_700</item>
<item name="colorAccentLight">@color/original_primary_600</item>
<item name="colorAccentLightest">@color/original_primary_800</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Dark.Original</item>
</style>
<style name="Theme.Mastodon.Light.Original" parent="Theme.Mastodon.Light">
<item name="android:colorAccent">@color/original_primary_400</item>
<item name="colorPollMostVoted">@color/original_primary_700</item>
<item name="colorAccentLight">@color/original_primary_600</item>
<item name="colorAccentLightest">@color/original_primary_800</item>
<item name="android:alertDialogTheme">@style/Theme.Mastodon.Dialog.Alert.Original</item>
</style>
<style name="Theme.Mastodon.AutoLightDark.Original" parent="Theme.Mastodon.Light.Original"/>
<style name="Theme.Mastodon.AutoLightDark.TrueBlack.Original" parent="Theme.Mastodon.Light.Original"/>
<style name="Theme.Mastodon.Dialog.Alert.Dark.Original" parent="android:Theme.Material.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/original_primary_600</item>
<item name="android:colorPrimary">@color/gray_50</item>
<item name="android:colorBackground">@color/custom_gray_700</item>
<item name="android:textColorPrimary">@color/gray_50</item>
<item name="android:textColorSecondary">@color/gray_400</item>
</style>
<style name="Theme.Mastodon.Dialog.Alert.Original" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:windowTitleStyle">@style/alert_title</item>
<item name="android:dialogPreferredPadding">24dp</item>
<item name="android:windowBackground">@drawable/bg_alert</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/original_primary_700</item>
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:colorBackground">@color/gray_100</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_500</item>
</style>
<style name="Theme.Mastodon.Toolbar" parent="android:ThemeOverlay.Material.ActionBar">
<item name="android:colorPrimary">@color/gray_50</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_800</item>
<item name="android:colorPrimary">?toolbarBackground</item>
<item name="android:toolbarStyle">@style/Widget.Mastodon.Toolbar</item>
<item name="android:textColorPrimary">?colorGray800</item>
<item name="android:textColorSecondary">?colorGray800</item>
</style>
<style name="Theme.Mastodon.Toolbar.Dark" parent="android:ThemeOverlay.Material.Dark.ActionBar">
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:textColorPrimary">@color/gray_50</item>
<item name="android:textColorSecondary">@color/gray_50</item>
</style>
<style name="Theme.Mastodon.Toolbar.Dark.CustomBase" parent="android:ThemeOverlay.Material.Dark.ActionBar">
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:textColorPrimary">@color/gray_50</item>
<item name="android:textColorSecondary">@color/gray_50</item>
</style>
<style name="Theme.Mastodon.Toolbar.Dark.Material3" parent="android:ThemeOverlay.Material.Dark.ActionBar">
<item name="android:colorPrimary">@color/m3_gray_900</item>
<item name="android:textColorPrimary">@color/m3_gray_50</item>
<item name="android:textColorSecondary">@color/m3_gray_50</item>
<item name="android:colorPrimary">?toolbarBackground</item>
<item name="android:textColorPrimary">?colorGray50</item>
<item name="android:textColorSecondary">?colorGray50</item>
<item name="android:toolbarStyle">@style/Widget.Mastodon.Toolbar</item>
</style>
<style name="Theme.Mastodon.Toolbar.Dark.TrueBlack" parent="android:ThemeOverlay.Material.Dark.ActionBar">
@@ -866,14 +226,14 @@
</style>
<style name="Theme.Mastodon.Toolbar.Profile">
<item name="android:textColorPrimary">?android:colorPrimary</item>
<item name="android:textColorSecondary">?android:colorPrimary</item>
<item name="android:drawableTint">?android:colorPrimary</item>
<item name="android:textColorPrimary">?colorGray25</item>
<item name="android:textColorSecondary">?colorGray25</item>
<item name="android:drawableTint">?colorGray25</item>
<item name="android:popupTheme">?android:actionBarTheme</item>
<item name="android:titleTextAppearance">@style/m3_title_medium</item>
<item name="android:titleTextColor">?android:colorPrimary</item>
<item name="android:titleTextColor">?colorGray25</item>
<item name="android:subtitleTextAppearance">@style/m3_body_medium</item>
<item name="android:subtitleTextColor">?android:colorPrimary</item>
<item name="android:subtitleTextColor">?colorGray25</item>
</style>
<style name="Widget.Mastodon.Button" parent="android:Widget.Material.Button">
@@ -945,11 +305,11 @@
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/primary_700</item>
<item name="android:colorPrimary">@color/custom_gray_800</item>
<item name="android:colorBackground">@color/gray_100</item>
<item name="android:textColorPrimary">@color/custom_gray_800</item>
<item name="android:textColorSecondary">@color/custom_gray_500</item>
<item name="android:colorAccent">?colorPrimary700</item>
<item name="android:colorPrimary">?colorGray800</item>
<item name="android:colorBackground">?colorGray100</item>
<item name="android:textColorPrimary">?colorGray800</item>
<item name="android:textColorSecondary">?colorGray500</item>
</style>
<style name="Theme.Mastodon.Dialog.Alert.Dark" parent="android:Theme.Material.Dialog.Alert">
@@ -959,11 +319,11 @@
<item name="android:buttonBarButtonStyle">@style/Widget.Mastodon.ButtonBarButton</item>
<!-- colors -->
<item name="android:colorAccent">@color/primary_600</item>
<item name="android:colorPrimary">@color/gray_50</item>
<item name="android:colorBackground">@color/custom_gray_700</item>
<item name="android:textColorPrimary">@color/gray_50</item>
<item name="android:textColorSecondary">@color/gray_400</item>
<item name="android:colorAccent">?colorPrimary600</item>
<item name="android:colorPrimary">?colorGray50</item>
<item name="android:colorBackground">?colorGray700</item>
<item name="android:textColorPrimary">?colorGray50</item>
<item name="android:textColorSecondary">?colorGray400</item>
</style>
<style name="Widget.Mastodon.ButtonBarButton" parent="android:Widget.Material.Button.Borderless">