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

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/Application.java64
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/BrandedActivity.java (renamed from app/src/main/java/it/niedermann/nextcloud/deck/ui/AbstractThemableActivity.java)51
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java18
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutActivity.java12
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java10
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java12
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java13
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java23
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java33
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java10
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsActivity.java10
-rw-r--r--app/src/main/res/layout/activity_edit.xml2
-rw-r--r--app/src/main/res/values/customization.xml2
13 files changed, 169 insertions, 91 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/Application.java b/app/src/main/java/it/niedermann/nextcloud/deck/Application.java
index 2eaf5419e..1f3bc2e7b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/Application.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/Application.java
@@ -21,24 +21,24 @@ public class Application extends android.app.Application {
public static final long NO_BOARD_ID = -1L;
public static final long NO_STACK_ID = -1L;
- private static boolean enableNextcloudTheme;
+ private static boolean enableBrand;
- public interface NextcloudTheme {
- void applyNextcloudTheme(@ColorInt int mainColor, @ColorInt int textColor);
+ public interface Branded {
+ void applyBrand(@ColorInt int mainColor, @ColorInt int textColor);
}
@NonNull
- private static List<NextcloudTheme> themableComponents = new ArrayList<>();
+ private static List<Branded> brandedComponents = new ArrayList<>();
@Override
public void onCreate() {
setAppTheme(getAppTheme(getApplicationContext()));
- enableNextcloudTheme = getApplicationContext().getResources().getBoolean(R.bool.enable_nextcloud_theme);
- if (enableNextcloudTheme) {
- @ColorInt final int mainColor = readNextcloudThemeMainColor(getApplicationContext());
- @ColorInt final int textColor = readNextcloudThemeTextColor(getApplicationContext());
- applyNextcloudTheme(mainColor, textColor);
+ enableBrand = getApplicationContext().getResources().getBoolean(R.bool.enable_brand);
+ if (enableBrand) {
+ @ColorInt final int mainColor = readBrandMainColor(getApplicationContext());
+ @ColorInt final int textColor = readBrandTextColor(getApplicationContext());
+ applyBrand(mainColor, textColor);
}
super.onCreate();
}
@@ -66,56 +66,56 @@ public class Application extends android.app.Application {
return prefs.getBoolean(context.getString(R.string.pref_key_dark_theme), false);
}
- // -----------------
- // Nextcloud theming
- // -----------------
+ // --------
+ // Branding
+ // --------
- public static void registerThemableComponent(@NonNull Context context, @NonNull NextcloudTheme themableComponent) {
- if (enableNextcloudTheme && !themableComponents.contains(themableComponent)) {
- themableComponents.add(themableComponent);
+ public static void registerBrandedComponent(@NonNull Context context, @NonNull Branded brandedComponent) {
+ if (enableBrand && !brandedComponents.contains(brandedComponent)) {
+ brandedComponents.add(brandedComponent);
- @ColorInt final int mainColor = readNextcloudThemeMainColor(context);
- @ColorInt final int textColor = readNextcloudThemeTextColor(context);
- themableComponent.applyNextcloudTheme(mainColor, textColor);
+ @ColorInt final int mainColor = readBrandMainColor(context);
+ @ColorInt final int textColor = readBrandTextColor(context);
+ brandedComponent.applyBrand(mainColor, textColor);
}
}
- public static void deregisterThemableComponent(@NonNull NextcloudTheme themableComponent) {
- themableComponents.remove(themableComponent);
+ public static void deregisterBrandedComponent(@NonNull Branded brandedComponent) {
+ brandedComponents.remove(brandedComponent);
}
- public static void setNextcloudTheme(@NonNull Context context, @ColorInt int mainColor, @ColorInt int textColor) {
- @ColorInt final int currentMainColor = readNextcloudThemeMainColor(context);
- @ColorInt final int currentTextColor = readNextcloudThemeTextColor(context);
+ public static void setBrand(@NonNull Context context, @ColorInt int mainColor, @ColorInt int textColor) {
+ @ColorInt final int currentMainColor = readBrandMainColor(context);
+ @ColorInt final int currentTextColor = readBrandTextColor(context);
if (mainColor != currentMainColor || textColor != currentTextColor) {
- if (enableNextcloudTheme) {
- applyNextcloudTheme(mainColor, textColor);
+ if (enableBrand) {
+ applyBrand(mainColor, textColor);
}
- saveNextcloudThemeColors(context, mainColor, textColor);
+ saveBrandColors(context, mainColor, textColor);
}
}
- public static void applyNextcloudTheme(@ColorInt int mainColor, @ColorInt int textColor) {
- for (NextcloudTheme themableComponent : themableComponents) {
- themableComponent.applyNextcloudTheme(mainColor, textColor);
+ public static void applyBrand(@ColorInt int mainColor, @ColorInt int textColor) {
+ for (Branded themableComponent : brandedComponents) {
+ themableComponent.applyBrand(mainColor, textColor);
}
}
@ColorInt
- public static int readNextcloudThemeMainColor(@NonNull Context context) {
+ public static int readBrandMainColor(@NonNull Context context) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
DeckLog.log("--- Read: shared_preference_theme_main");
return sharedPreferences.getInt(context.getString(R.string.shared_preference_theme_main), context.getApplicationContext().getResources().getColor(R.color.primary));
}
@ColorInt
- public static int readNextcloudThemeTextColor(@NonNull Context context) {
+ public static int readBrandTextColor(@NonNull Context context) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
DeckLog.log("--- Read: shared_preference_theme_text");
return sharedPreferences.getInt(context.getString(R.string.shared_preference_theme_text), context.getApplicationContext().getResources().getColor(android.R.color.white));
}
- public static void saveNextcloudThemeColors(@NonNull Context context, @ColorInt int mainColor, @ColorInt int textColor) {
+ public static void saveBrandColors(@NonNull Context context, @ColorInt int mainColor, @ColorInt int textColor) {
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit();
DeckLog.log("--- Write: shared_preference_theme_main" + " | " + mainColor);
DeckLog.log("--- Write: shared_preference_theme_text" + " | " + textColor);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/AbstractThemableActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/BrandedActivity.java
index b0e0f2d6c..15fbc5d8c 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/AbstractThemableActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/BrandedActivity.java
@@ -1,11 +1,14 @@
package it.niedermann.nextcloud.deck.ui;
import android.content.res.ColorStateList;
+import android.graphics.Color;
+import android.graphics.ColorFilter;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.view.Menu;
import android.view.View;
import android.view.Window;
+import android.widget.EditText;
import androidx.annotation.CallSuper;
import androidx.annotation.ColorInt;
@@ -15,6 +18,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.graphics.drawable.DrawableCompat;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
import it.niedermann.nextcloud.deck.Application;
@@ -24,7 +28,7 @@ import static android.os.Build.VERSION_CODES.LOLLIPOP;
import static android.os.Build.VERSION_CODES.M;
import static it.niedermann.nextcloud.deck.util.ColorUtil.isColorDark;
-public abstract class AbstractThemableActivity extends AppCompatActivity implements Application.NextcloudTheme {
+public abstract class BrandedActivity extends AppCompatActivity implements Application.Branded {
/**
* Member variable needed for onCreateOptionsMenu()-callback
@@ -36,24 +40,24 @@ public abstract class AbstractThemableActivity extends AppCompatActivity impleme
@Override
protected void onResume() {
super.onResume();
- Application.registerThemableComponent(this, this);
+ Application.registerBrandedComponent(this, this);
}
@Override
protected void onPause() {
super.onPause();
- Application.deregisterThemableComponent(this);
+ Application.deregisterBrandedComponent(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
- Application.deregisterThemableComponent(this);
+ Application.deregisterBrandedComponent(this);
}
@CallSuper
@Override
- public void applyNextcloudTheme(@ColorInt int mainColor, @ColorInt int textColor) {
+ public void applyBrand(@ColorInt int mainColor, @ColorInt int textColor) {
this.textColor = textColor;
if (SDK_INT >= LOLLIPOP) { // Set status bar color
final Window window = getWindow();
@@ -86,7 +90,7 @@ public abstract class AbstractThemableActivity extends AppCompatActivity impleme
return super.onCreateOptionsMenu(menu);
}
- protected void applyNextcloudThemeToToolbar(@ColorInt int mainColor, @ColorInt int textColor, @NonNull Toolbar toolbar) {
+ protected static void applyBrandToPrimaryToolbar(@ColorInt int mainColor, @ColorInt int textColor, @NonNull Toolbar toolbar) {
toolbar.setBackgroundColor(mainColor);
toolbar.setTitleTextColor(textColor);
final Drawable overflowDrawable = toolbar.getOverflowIcon();
@@ -102,10 +106,43 @@ public abstract class AbstractThemableActivity extends AppCompatActivity impleme
}
}
- protected void applyNextcloudThemeToTablayout(@ColorInt int mainColor, @ColorInt int textColor, @NonNull TabLayout tabLayout) {
+ protected static void applyBrandToPrimaryTabLayout(@ColorInt int mainColor, @ColorInt int textColor, @NonNull TabLayout tabLayout) {
tabLayout.setBackgroundColor(mainColor);
tabLayout.setTabTextColors(textColor, textColor);
tabLayout.setTabIconTint(ColorStateList.valueOf(textColor));
tabLayout.setSelectedTabIndicatorColor(textColor);
}
+
+ public static void applyBrandToFAB(@ColorInt int mainColor, @ColorInt int textColor, @NonNull FloatingActionButton fab) {
+ fab.setSupportBackgroundTintList(ColorStateList.valueOf(mainColor));
+ fab.setColorFilter(textColor);
+ }
+
+ public static void applyBrandToEditText(@ColorInt int mainColor, @ColorInt int textColor, @NonNull EditText editText) {
+ final boolean isDarkTheme = Application.getAppTheme(editText.getContext());
+ final Drawable background = editText.getBackground();
+ final ColorFilter oldColorFilter = DrawableCompat.getColorFilter(background);
+ final View.OnFocusChangeListener oldOnFocusChangeListener = editText.getOnFocusChangeListener();
+
+ // Since we may collide with dark theme in this area, we have to make sure that the color is visible depending on the background
+ @ColorInt final int finalMainColor;
+ if (isDarkTheme && mainColor == Color.BLACK) {
+ finalMainColor = Color.WHITE;
+ } else if (!isDarkTheme && mainColor == Color.WHITE) {
+ finalMainColor = Color.BLACK;
+ } else {
+ finalMainColor = mainColor;
+ }
+
+ editText.setOnFocusChangeListener((v, hasFocus) -> {
+ if (hasFocus) {
+ background.setColorFilter(finalMainColor, PorterDuff.Mode.SRC_ATOP);
+ } else {
+ background.setColorFilter(oldColorFilter);
+ }
+ if (oldOnFocusChangeListener != null) {
+ oldOnFocusChangeListener.onFocusChange(v, hasFocus);
+ }
+ });
+ }
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
index 868523774..4aa2c5a78 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
@@ -3,7 +3,6 @@ package it.niedermann.nextcloud.deck.ui;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.content.res.ColorStateList;
import android.database.sqlite.SQLiteConstraintException;
import android.graphics.Color;
import android.graphics.PorterDuff;
@@ -104,7 +103,7 @@ import static it.niedermann.nextcloud.deck.util.DrawerMenuUtil.MENU_ID_ADD_ACCOU
import static it.niedermann.nextcloud.deck.util.DrawerMenuUtil.MENU_ID_ADD_BOARD;
import static it.niedermann.nextcloud.deck.util.DrawerMenuUtil.MENU_ID_SETTINGS;
-public class MainActivity extends AbstractThemableActivity implements EditStackListener, EditBoardListener, OnScrollListener, OnNavigationItemSelectedListener, DrawerAccountListener, DrawerBoardListener {
+public class MainActivity extends BrandedActivity implements EditStackListener, EditBoardListener, OnScrollListener, OnNavigationItemSelectedListener, DrawerAccountListener, DrawerBoardListener {
protected ActivityMainBinding binding;
protected NavHeaderMainBinding headerBinding;
@@ -309,7 +308,7 @@ public class MainActivity extends AbstractThemableActivity implements EditStackL
syncManager.refreshCapabilities(new IResponseCallback<Capabilities>(currentAccount) {
@Override
public void onResponse(Capabilities response) {
- runOnUiThread(() -> Application.setNextcloudTheme(MainActivity.this, Color.parseColor(response.getColor()), Color.parseColor(response.getTextColor())));
+ runOnUiThread(() -> Application.setBrand(MainActivity.this, Color.parseColor(response.getColor()), Color.parseColor(response.getTextColor())));
}
});
}).start();
@@ -336,15 +335,14 @@ public class MainActivity extends AbstractThemableActivity implements EditStackL
}
@Override
- public void applyNextcloudTheme(@ColorInt int mainColor, @ColorInt int textColor) {
- super.applyNextcloudTheme(mainColor, textColor);
- applyNextcloudThemeToToolbar(mainColor, textColor, binding.toolbar);
- applyNextcloudThemeToTablayout(mainColor, textColor, binding.stackTitles);
+ public void applyBrand(@ColorInt int mainColor, @ColorInt int textColor) {
+ super.applyBrand(mainColor, textColor);
+ applyBrandToPrimaryToolbar(mainColor, textColor, binding.toolbar);
+ applyBrandToPrimaryTabLayout(mainColor, textColor, binding.stackTitles);
+ applyBrandToFAB(mainColor, textColor, binding.fab);
binding.addStackButton.setBackgroundColor(mainColor);
binding.addStackButton.setColorFilter(textColor);
- binding.fab.setSupportBackgroundTintList(ColorStateList.valueOf(mainColor));
- binding.fab.setColorFilter(textColor);
headerBinding.drawerHeaderView.setBackgroundColor(mainColor);
headerBinding.drawerAppTitle.setTextColor(textColor);
@@ -420,7 +418,7 @@ public class MainActivity extends AbstractThemableActivity implements EditStackL
protected void setCurrentAccount(@NonNull Account account) {
this.currentAccount = account;
SingleAccountHelper.setCurrentAccount(getApplicationContext(), this.currentAccount.getName());
- Application.setNextcloudTheme(MainActivity.this, Color.parseColor(currentAccount.getColor()), Color.parseColor(currentAccount.getTextColor()));
+ Application.setBrand(MainActivity.this, Color.parseColor(currentAccount.getColor()), Color.parseColor(currentAccount.getTextColor()));
syncManager = new SyncManager(this);
Application.saveCurrentAccountId(this, this.currentAccount.getId());
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutActivity.java
index 9b226a300..cfd735cc0 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutActivity.java
@@ -15,12 +15,12 @@ import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ActivityAboutBinding;
import it.niedermann.nextcloud.deck.model.Account;
-import it.niedermann.nextcloud.deck.ui.AbstractThemableActivity;
+import it.niedermann.nextcloud.deck.ui.BrandedActivity;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT;
-public class AboutActivity extends AbstractThemableActivity {
+public class AboutActivity extends BrandedActivity {
private ActivityAboutBinding binding;
private final static int[] tabTitles = new int[]{
@@ -83,9 +83,9 @@ public class AboutActivity extends AbstractThemableActivity {
}
@Override
- public void applyNextcloudTheme(int mainColor, int textColor) {
- super.applyNextcloudTheme(mainColor, textColor);
- applyNextcloudThemeToToolbar(mainColor, textColor, binding.toolbar);
- applyNextcloudThemeToTablayout(mainColor, textColor, binding.tabLayout);
+ public void applyBrand(int mainColor, int textColor) {
+ super.applyBrand(mainColor, textColor);
+ applyBrandToPrimaryToolbar(mainColor, textColor, binding.toolbar);
+ applyBrandToPrimaryTabLayout(mainColor, textColor, binding.tabLayout);
}
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java
index 62398a90f..124b5d038 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentLicenseTab.java
@@ -16,14 +16,14 @@ import it.niedermann.nextcloud.deck.databinding.FragmentAboutLicenseTabBinding;
import static it.niedermann.nextcloud.deck.util.SpannableUtil.setTextWithURL;
-public class AboutFragmentLicenseTab extends Fragment implements Application.NextcloudTheme {
+public class AboutFragmentLicenseTab extends Fragment implements Application.Branded {
private FragmentAboutLicenseTabBinding binding;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
binding = FragmentAboutLicenseTabBinding.inflate(inflater, container, false);
- Application.registerThemableComponent(requireContext(), this);
+ Application.registerBrandedComponent(requireContext(), this);
setTextWithURL(binding.aboutIconsDisclaimerAppIcon, getResources(), R.string.about_icons_disclaimer_app_icon, R.string.about_app_icon_author_link_label, R.string.url_about_icon_author);
setTextWithURL(binding.aboutIconsDisclaimerMdiIcons, getResources(), R.string.about_icons_disclaimer_mdi_icons, R.string.about_icons_disclaimer_mdi, R.string.url_about_icons_disclaimer_mdi);
binding.aboutAppLicenseButton.setOnClickListener((v) -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.url_license)))));
@@ -32,18 +32,18 @@ public class AboutFragmentLicenseTab extends Fragment implements Application.Nex
@Override
public void onResume() {
- Application.registerThemableComponent(requireContext(), this);
+ Application.registerBrandedComponent(requireContext(), this);
super.onResume();
}
@Override
public void onPause() {
- Application.deregisterThemableComponent(this);
+ Application.deregisterBrandedComponent(this);
super.onPause();
}
@Override
- public void applyNextcloudTheme(int mainColor, int textColor) {
+ public void applyBrand(int mainColor, int textColor) {
binding.aboutAppLicenseButton.setBackgroundColor(mainColor);
binding.aboutAppLicenseButton.setTextColor(textColor);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java
index 7d498ef2d..b3070db4e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java
@@ -29,7 +29,7 @@ import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.model.ocs.Version;
import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
-import it.niedermann.nextcloud.deck.ui.AbstractThemableActivity;
+import it.niedermann.nextcloud.deck.ui.BrandedActivity;
import it.niedermann.nextcloud.deck.ui.card.attachments.NewCardAttachmentHandler;
import it.niedermann.nextcloud.deck.ui.card.comments.CommentAddedListener;
import it.niedermann.nextcloud.deck.ui.card.comments.CommentDeletedListener;
@@ -44,7 +44,7 @@ import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_LOCAL_
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_STACK_ID;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.NO_LOCAL_ID;
-public class EditActivity extends AbstractThemableActivity implements CardDetailsListener, CommentAddedListener, CommentDeletedListener, NewCardAttachmentHandler {
+public class EditActivity extends BrandedActivity implements CardDetailsListener, CommentAddedListener, CommentDeletedListener, NewCardAttachmentHandler {
private ActivityEditBinding binding;
private SyncManager syncManager;
@@ -339,10 +339,10 @@ public class EditActivity extends AbstractThemableActivity implements CardDetail
}
@Override
- public void applyNextcloudTheme(int mainColor, int textColor) {
- super.applyNextcloudTheme(mainColor, textColor);
- applyNextcloudThemeToToolbar(mainColor, textColor, binding.toolbar);
- applyNextcloudThemeToTablayout(mainColor, textColor, binding.tabLayout);
+ public void applyBrand(int mainColor, int textColor) {
+ super.applyBrand(mainColor, textColor);
+ applyBrandToPrimaryToolbar(mainColor, textColor, binding.toolbar);
+ applyBrandToPrimaryTabLayout(mainColor, textColor, binding.tabLayout);
binding.title.setTextColor(textColor);
DrawableCompat.setTint(binding.title.getBackground(), textColor);
binding.titleTextInputLayout.setDefaultHintTextColor(ColorStateList.valueOf(textColor));
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java
index 746b101d9..2395e7df0 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java
@@ -3,7 +3,6 @@ package it.niedermann.nextcloud.deck.ui.card.attachments;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
-import android.content.res.ColorStateList;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -34,6 +33,7 @@ import it.niedermann.nextcloud.deck.model.Attachment;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.util.FileUtils;
+import static it.niedermann.nextcloud.deck.ui.BrandedActivity.applyBrandToFAB;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT_ID;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_BOARD_ID;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_CAN_EDIT;
@@ -42,7 +42,7 @@ import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.NO_LOCAL_ID;
import static it.niedermann.nextcloud.deck.ui.card.attachments.CardAttachmentAdapter.VIEW_TYPE_DEFAULT;
import static it.niedermann.nextcloud.deck.ui.card.attachments.CardAttachmentAdapter.VIEW_TYPE_IMAGE;
-public class CardAttachmentsFragment extends Fragment implements AttachmentDeletedListener, AttachmentClickedListener, Application.NextcloudTheme {
+public class CardAttachmentsFragment extends Fragment implements AttachmentDeletedListener, AttachmentClickedListener, Application.Branded {
private FragmentCardEditTabAttachmentsBinding binding;
private static final int REQUEST_CODE_ADD_ATTACHMENT = 1;
@@ -154,12 +154,12 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentDelet
@Override
public void onResume() {
super.onResume();
- Application.registerThemableComponent(requireContext(), this);
+ Application.registerBrandedComponent(requireContext(), this);
}
@Override
public void onPause() {
- Application.deregisterThemableComponent(this);
+ Application.deregisterBrandedComponent(this);
super.onPause();
}
@@ -263,8 +263,7 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentDelet
}
@Override
- public void applyNextcloudTheme(int mainColor, int textColor) {
- binding.fab.setSupportBackgroundTintList(ColorStateList.valueOf(mainColor));
- binding.fab.setColorFilter(textColor);
+ public void applyBrand(int mainColor, int textColor) {
+ applyBrandToFAB(mainColor, textColor, binding.fab);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java
index 34aebb529..cbb6e53f3 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java
@@ -13,17 +13,20 @@ import androidx.fragment.app.Fragment;
import java.util.Date;
+import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.databinding.FragmentCardEditTabCommentsBinding;
import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
+import static it.niedermann.nextcloud.deck.ui.BrandedActivity.applyBrandToEditText;
+import static it.niedermann.nextcloud.deck.ui.BrandedActivity.applyBrandToFAB;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT_ID;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_CAN_EDIT;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_LOCAL_ID;
-public class CardCommentsFragment extends Fragment implements CommentEditedListener {
+public class CardCommentsFragment extends Fragment implements Application.Branded, CommentEditedListener {
private FragmentCardEditTabCommentsBinding binding;
private SyncManager syncManager;
@@ -110,4 +113,22 @@ public class CardCommentsFragment extends Fragment implements CommentEditedListe
public void onCommentEdited(Long id, String comment) {
syncManager.updateComment(accountId, localId, id, comment);
}
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ Application.registerBrandedComponent(requireContext(), this);
+ }
+
+ @Override
+ public void onPause() {
+ Application.deregisterBrandedComponent(this);
+ super.onPause();
+ }
+
+ @Override
+ public void applyBrand(int mainColor, int textColor) {
+ applyBrandToEditText(mainColor, textColor, binding.message);
+ applyBrandToFAB(mainColor, textColor, binding.fab);
+ }
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
index 512c347a3..1d168ea5a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
@@ -2,6 +2,7 @@ package it.niedermann.nextcloud.deck.ui.card.details;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
+import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
@@ -37,6 +38,7 @@ import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
+import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.FragmentCardEditTabDetailsBinding;
@@ -52,15 +54,17 @@ import it.niedermann.nextcloud.deck.util.DimensionUtil;
import it.niedermann.nextcloud.deck.util.MarkDownUtil;
import it.niedermann.nextcloud.deck.util.ViewUtil;
+import static android.app.DatePickerDialog.OnDateSetListener;
import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
+import static it.niedermann.nextcloud.deck.ui.BrandedActivity.applyBrandToEditText;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT_ID;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_BOARD_ID;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_CAN_EDIT;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_LOCAL_ID;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.NO_LOCAL_ID;
-public class CardDetailsFragment extends Fragment implements DatePickerDialog.OnDateSetListener,
- TimePickerDialog.OnTimeSetListener {
+public class CardDetailsFragment extends Fragment implements Application.Branded, OnDateSetListener,
+ OnTimeSetListener {
private FragmentCardEditTabDetailsBinding binding;
@@ -186,7 +190,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
private TimePickerDialog createTimePickerDialogFromDate(
@NonNull Context context,
- @Nullable TimePickerDialog.OnTimeSetListener listener,
+ @Nullable OnTimeSetListener listener,
@Nullable Date date
) {
int hourOfDay = 0;
@@ -201,7 +205,7 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
private DatePickerDialog createDatePickerDialogFromDate(
@NonNull Context context,
- @Nullable DatePickerDialog.OnDateSetListener listener,
+ @Nullable OnDateSetListener listener,
@Nullable Date date
) {
int year;
@@ -429,4 +433,25 @@ public class CardDetailsFragment extends Fragment implements DatePickerDialog.On
binding.clearDueDate.setVisibility(View.VISIBLE);
}
}
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ Application.registerBrandedComponent(requireContext(), this);
+ }
+
+ @Override
+ public void onPause() {
+ Application.deregisterBrandedComponent(this);
+ super.onPause();
+ }
+
+ @Override
+ public void applyBrand(int mainColor, int textColor) {
+ applyBrandToEditText(mainColor, textColor, binding.labels);
+ applyBrandToEditText(mainColor, textColor, binding.dueDateDate);
+ applyBrandToEditText(mainColor, textColor, binding.dueDateTime);
+ applyBrandToEditText(mainColor, textColor, binding.people);
+ applyBrandToEditText(mainColor, textColor, binding.description);
+ }
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java
index cf442fc6f..941cd0f31 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java
@@ -18,7 +18,7 @@ import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.Board;
import it.niedermann.nextcloud.deck.model.full.FullStack;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
-import it.niedermann.nextcloud.deck.ui.AbstractThemableActivity;
+import it.niedermann.nextcloud.deck.ui.BrandedActivity;
import it.niedermann.nextcloud.deck.ui.ImportAccountActivity;
import it.niedermann.nextcloud.deck.ui.card.EditActivity;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
@@ -30,7 +30,7 @@ import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_LOCAL_
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_STACK_ID;
import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.NO_LOCAL_ID;
-public class PrepareCreateActivity extends AbstractThemableActivity {
+public class PrepareCreateActivity extends BrandedActivity {
private ActivityPrepareCreateBinding binding;
@@ -188,9 +188,9 @@ public class PrepareCreateActivity extends AbstractThemableActivity {
}
@Override
- public void applyNextcloudTheme(int mainColor, int textColor) {
- super.applyNextcloudTheme(mainColor, textColor);
- applyNextcloudThemeToToolbar(mainColor, textColor, binding.toolbar);
+ public void applyBrand(int mainColor, int textColor) {
+ super.applyBrand(mainColor, textColor);
+ applyBrandToPrimaryToolbar(mainColor, textColor, binding.toolbar);
binding.submit.setBackgroundColor(mainColor);
binding.submit.setTextColor(textColor);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsActivity.java
index 1a3b03aad..0eaa7f1d4 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsActivity.java
@@ -7,10 +7,10 @@ import androidx.annotation.Nullable;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ActivitySettingsBinding;
-import it.niedermann.nextcloud.deck.ui.AbstractThemableActivity;
+import it.niedermann.nextcloud.deck.ui.BrandedActivity;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
-public class SettingsActivity extends AbstractThemableActivity {
+public class SettingsActivity extends BrandedActivity {
private ActivitySettingsBinding binding;
@@ -39,8 +39,8 @@ public class SettingsActivity extends AbstractThemableActivity {
}
@Override
- public void applyNextcloudTheme(int mainColor, int textColor) {
- super.applyNextcloudTheme(mainColor, textColor);
- applyNextcloudThemeToToolbar(mainColor, textColor, binding.toolbar);
+ public void applyBrand(int mainColor, int textColor) {
+ super.applyBrand(mainColor, textColor);
+ applyBrandToPrimaryToolbar(mainColor, textColor, binding.toolbar);
}
}
diff --git a/app/src/main/res/layout/activity_edit.xml b/app/src/main/res/layout/activity_edit.xml
index 410f98b31..83cd3f21f 100644
--- a/app/src/main/res/layout/activity_edit.xml
+++ b/app/src/main/res/layout/activity_edit.xml
@@ -19,7 +19,6 @@
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/titleTextInputLayout"
- style="@style/AppTheme.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:theme="@style/AppTheme.EditText"
@@ -27,7 +26,6 @@
<EditText
android:id="@+id/title"
- style="@style/AppTheme.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
diff --git a/app/src/main/res/values/customization.xml b/app/src/main/res/values/customization.xml
index d6ed6a3b3..769cff1ac 100644
--- a/app/src/main/res/values/customization.xml
+++ b/app/src/main/res/values/customization.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Apply the theme of the instance for each account to UI elements -->
- <bool name="enable_nextcloud_theme">true</bool>
+ <bool name="enable_brand">true</bool>
<!-- How many avatars should be displayed in the card list view -->
<integer name="max_avatar_count">3</integer>
<!-- How many users should be suggested when clicking on the assigned users input field -->