From 75b3485ab48fa0448c4912b60389d183f4687ce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sat, 20 Mar 2021 19:26:58 +0100 Subject: [PATCH] [Gradle] Extract cafebar dependency. --- app/build.gradle | 2 +- .../szczodrzynski/edziennik/MainActivity.kt | 4 +- app/src/main/res/values/strings.xml | 1 + cafebar/build.gradle | 64 -- cafebar/src/main/AndroidManifest.xml | 24 - .../com/danimahardhika/cafebar/CafeBar.java | 712 ------------------ .../cafebar/CafeBarCallback.java | 27 - .../cafebar/CafeBarGravity.java | 39 - .../danimahardhika/cafebar/CafeBarTheme.java | 70 -- .../danimahardhika/cafebar/CafeBarUtil.java | 593 --------------- .../com/danimahardhika/cafebar/LogUtil.java | 40 - cafebar/src/main/res-public/values/public.xml | 6 - .../cafebar_action_button_selector.xml | 6 - .../cafebar_action_button_selector_dark.xml | 6 - .../main/res/drawable/cafebar_shadow_top.xml | 8 - .../main/res/layout/cafebar_action_button.xml | 29 - .../res/layout/cafebar_action_button_dark.xml | 29 - .../main/res/values-sw600dp-land/dimens.xml | 7 - cafebar/src/main/res/values-sw600dp/bools.xml | 7 - .../src/main/res/values-sw600dp/dimens.xml | 11 - cafebar/src/main/res/values/bools.xml | 7 - cafebar/src/main/res/values/colors.xml | 7 - cafebar/src/main/res/values/dimens.xml | 21 - cafebar/src/main/res/values/ids.xml | 14 - cafebar/src/main/res/values/styles.xml | 12 - settings.gradle | 2 +- 26 files changed, 5 insertions(+), 1743 deletions(-) delete mode 100644 cafebar/build.gradle delete mode 100644 cafebar/src/main/AndroidManifest.xml delete mode 100644 cafebar/src/main/java/com/danimahardhika/cafebar/CafeBar.java delete mode 100644 cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarCallback.java delete mode 100644 cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarGravity.java delete mode 100644 cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarTheme.java delete mode 100644 cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarUtil.java delete mode 100644 cafebar/src/main/java/com/danimahardhika/cafebar/LogUtil.java delete mode 100644 cafebar/src/main/res-public/values/public.xml delete mode 100644 cafebar/src/main/res/drawable/cafebar_action_button_selector.xml delete mode 100644 cafebar/src/main/res/drawable/cafebar_action_button_selector_dark.xml delete mode 100644 cafebar/src/main/res/drawable/cafebar_shadow_top.xml delete mode 100644 cafebar/src/main/res/layout/cafebar_action_button.xml delete mode 100644 cafebar/src/main/res/layout/cafebar_action_button_dark.xml delete mode 100644 cafebar/src/main/res/values-sw600dp-land/dimens.xml delete mode 100644 cafebar/src/main/res/values-sw600dp/bools.xml delete mode 100644 cafebar/src/main/res/values-sw600dp/dimens.xml delete mode 100644 cafebar/src/main/res/values/bools.xml delete mode 100644 cafebar/src/main/res/values/colors.xml delete mode 100644 cafebar/src/main/res/values/dimens.xml delete mode 100644 cafebar/src/main/res/values/ids.xml delete mode 100644 cafebar/src/main/res/values/styles.xml diff --git a/app/build.gradle b/app/build.gradle index 0c95ebd6..56f5e4f4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -168,7 +168,7 @@ dependencies { implementation "uk.co.samuelwall:material-tap-target-prompt:2.14.0" implementation project(":agendacalendarview") - implementation project(":cafebar") + implementation "eu.szkolny:cafebar:5bf0c618de" implementation "eu.szkolny:material-about-library:0534abf316" implementation project(":mhttp") implementation project(":nachos") diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt index 1e73e267..084cace6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt @@ -532,12 +532,12 @@ class MainActivity : AppCompatActivity(), CoroutineScope { app.config.appRateSnackbarTime = 0 } .onNegative { cafeBar -> - Toast.makeText(this, "Szkoda, opinie innych pomagają mi rozwijać aplikację.", Toast.LENGTH_LONG).show() + Toast.makeText(this, R.string.rate_snackbar_negative_message, Toast.LENGTH_LONG).show() cafeBar.dismiss() app.config.appRateSnackbarTime = 0 } .onNeutral { cafeBar -> - Toast.makeText(this, "OK", Toast.LENGTH_LONG).show() + Toast.makeText(this, R.string.ok, Toast.LENGTH_LONG).show() cafeBar.dismiss() app.config.appRateSnackbarTime = System.currentTimeMillis() + 7 * 24 * 60 * 60 * 1000 } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a913914d..0ea45e49 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1386,4 +1386,5 @@ {cmd-alert-circle-outline} Wersja testowa {cmd-android-studio} Wersja deweloperska \??? + Szkoda, opinie innych pomagają mi rozwijać aplikację. diff --git a/cafebar/build.gradle b/cafebar/build.gradle deleted file mode 100644 index 4e992077..00000000 --- a/cafebar/build.gradle +++ /dev/null @@ -1,64 +0,0 @@ -apply plugin: 'com.android.library' - -/* - * CafeBar - * - * Copyright (c) 2017 Dani Mahardhika - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -group = 'com.github.danimahardhika' - -android { - compileSdkVersion setup.compileSdk - - defaultConfig { - minSdkVersion 16 - targetSdkVersion setup.targetSdk - versionCode 132 - versionName "1.3.2" - vectorDrawables.useSupportLibrary = true - - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - debugMinify { - debuggable = true - minifyEnabled = true - proguardFiles 'proguard-android.txt' - } - } - - lintOptions { - abortOnError false - } - - sourceSets { - main.res.srcDirs = [ - 'src/main/res', - 'src/main/res-public' - ] - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation "com.google.android.material:material:${versions.material}" - implementation "androidx.cardview:cardview:${versions.cardview}" - implementation "androidx.appcompat:appcompat:${versions.appcompat}" -} diff --git a/cafebar/src/main/AndroidManifest.xml b/cafebar/src/main/AndroidManifest.xml deleted file mode 100644 index e0513a98..00000000 --- a/cafebar/src/main/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - diff --git a/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBar.java b/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBar.java deleted file mode 100644 index 7c376733..00000000 --- a/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBar.java +++ /dev/null @@ -1,712 +0,0 @@ -package com.danimahardhika.cafebar; - -/* - * CafeBar - * - * Copyright (c) 2017 Dani Mahardhika - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import android.app.Activity; -import android.content.Context; -import android.content.res.Configuration; -import android.graphics.Bitmap; -import android.graphics.Typeface; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.text.SpannableStringBuilder; -import android.view.View; -import android.view.ViewTreeObserver; -import android.view.Window; -import android.view.WindowManager; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.google.android.material.snackbar.Snackbar; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.ref.WeakReference; -import java.util.HashMap; - -import androidx.annotation.BoolRes; -import androidx.annotation.ColorInt; -import androidx.annotation.DrawableRes; -import androidx.annotation.IntDef; -import androidx.annotation.IntRange; -import androidx.annotation.LayoutRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.StringRes; -import androidx.appcompat.view.ContextThemeWrapper; -import androidx.cardview.widget.CardView; -import androidx.coordinatorlayout.widget.CoordinatorLayout; - -@SuppressWarnings("unused") -public class CafeBar { - - static final String FONT_CONTENT = "content"; - static final String FONT_POSITIVE = "positive"; - static final String FONT_NEGATIVE = "negative"; - static final String FONT_NEUTRAL = "neutral"; - - private Builder mBuilder; - private Snackbar mSnackBar; - - private CafeBar(@NonNull Builder builder) { - mBuilder = builder; - - View baseLayout = mBuilder.mCustomView; - if (baseLayout == null) { - LogUtil.d("CafeBar doesn't have customView, preparing it ..."); - baseLayout = CafeBarUtil.getBaseCafeBarView(mBuilder); - } - - mSnackBar = CafeBarUtil.getBaseSnackBar(baseLayout, mBuilder); - if (mSnackBar == null) { - mBuilder = null; - throw new IllegalStateException("CafeBar base is null"); - } - - if (mBuilder.mCustomView != null) { - LogUtil.d("CafeBar has custom view, set buttons ignored"); - return; - } - - if (mBuilder.mPositiveText == null && mBuilder.mNegativeText == null) { - //Only contains neutral button - if (mBuilder.mNeutralText != null) { - int neutralColor = CafeBarUtil.getAccentColor(mBuilder.mContext, mBuilder.mNegativeColor); - setAction(mBuilder.mNeutralText, neutralColor, mBuilder.mNeutralCallback); - } - } else { - //Contains positive or negative button - LinearLayout root = (LinearLayout) getView(); - LinearLayout buttonBase = root.findViewById(R.id.cafebar_button_base); - - if (mBuilder.mNeutralText != null) { - TextView neutral = buttonBase.findViewById(R.id.cafebar_button_neutral); - neutral.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mBuilder.mNeutralCallback != null) { - mBuilder.mNeutralCallback.OnClick(getCafeBar()); - return; - } - - dismiss(); - } - }); - } - - if (mBuilder.mNegativeText != null) { - TextView negative = buttonBase.findViewById(R.id.cafebar_button_negative); - negative.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mBuilder.mNegativeCallback != null) { - mBuilder.mNegativeCallback.OnClick(getCafeBar()); - return; - } - - dismiss(); - } - }); - } - - if (mBuilder.mPositiveText != null) { - TextView positive = buttonBase.findViewById(R.id.cafebar_button_positive); - positive.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mBuilder.mPositiveCallback != null) { - mBuilder.mPositiveCallback.OnClick(getCafeBar()); - return; - } - - dismiss(); - } - }); - } - } - } - - public static void enableLogging(boolean enableLogging) { - LogUtil.sEnableLogging = enableLogging; - } - - @NonNull - public static CafeBar make(@NonNull Context context, @StringRes int res, @Snackbar.Duration int duration) { - String string = context.getResources().getString(res); - return create(context, null, string, duration); - } - - @NonNull - public static CafeBar make(@NonNull Context context, @NonNull String content, @Snackbar.Duration int duration) { - return create(context, null, content, duration); - } - - @NonNull - public static CafeBar make(@NonNull View to, @StringRes int res, @Snackbar.Duration int duration) { - Context context = to.getContext(); - if (context instanceof ContextThemeWrapper) { - context = ((ContextThemeWrapper) context).getBaseContext(); - } - String string = context.getResources().getString(res); - return create(context, to, string, duration); - } - - @NonNull - public static CafeBar make(@NonNull View to, @NonNull String content, @Snackbar.Duration int duration) { - Context context = to.getContext(); - if (context instanceof ContextThemeWrapper) { - context = ((ContextThemeWrapper) context).getBaseContext(); - } - return create(context, to, content, duration); - } - - @NonNull - private static CafeBar create(@NonNull Context context, @Nullable View to, @NonNull String content, @Snackbar.Duration int duration) { - CafeBar.Builder builder = new Builder(context); - builder.to(to); - builder.content(content); - builder.duration(duration); - if (duration == Snackbar.LENGTH_INDEFINITE) { - builder.autoDismiss(false); - } - return new CafeBar(builder); - } - - public CafeBar setAction(@StringRes int res, @Nullable CafeBarCallback callback) { - String string = mBuilder.mContext.getResources().getString(res); - int actionColor = CafeBarUtil.getAccentColor(mBuilder.mContext, mBuilder.mTheme.getTitleColor()); - setButtonAction(string, actionColor, callback); - return this; - } - - public CafeBar setAction(@NonNull String action, @Nullable CafeBarCallback callback) { - int actionColor = CafeBarUtil.getAccentColor(mBuilder.mContext, mBuilder.mTheme.getTitleColor()); - setButtonAction(action, actionColor, callback); - return this; - } - - public CafeBar setAction(@StringRes int res, int color, @Nullable CafeBarCallback callback) { - String string = mBuilder.mContext.getResources().getString(res); - setButtonAction(string, color, callback); - return this; - } - - public CafeBar setAction(@NonNull String action, int color, @Nullable CafeBarCallback callback) { - setButtonAction(action, color, callback); - return this; - } - - private void setButtonAction(@NonNull String action, int color, @Nullable final CafeBarCallback callback) { - if (mBuilder.mCustomView != null) { - LogUtil.d("CafeBar has customView, setAction ignored."); - return; - } - - LogUtil.d("preparing action view"); - mBuilder.mNeutralText = action; - mBuilder.mNeutralColor = color; - - LinearLayout root = (LinearLayout) getView(); - boolean longAction = CafeBarUtil.isLongAction(action); - - if (root.getChildCount() > 1) { - LogUtil.d("setAction already set from builder via neutralText"); - return; - } - - TextView content = root.findViewById(R.id.cafebar_content); - - int side = mBuilder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_content_padding_side); - int top = mBuilder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_content_padding_top); - int buttonPadding = mBuilder.mContext.getResources().getDimensionPixelSize( - R.dimen.cafebar_button_padding); - int bottom = 0; - - if (longAction) { - bottom = buttonPadding; - root.setOrientation(LinearLayout.VERTICAL); - content.setPadding(0, 0, buttonPadding, 0); - } else { - LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) content.getLayoutParams(); - params.width = 0; - params.weight = 1f; - content.setLayoutParams(params); - } - - int navBar = 0; - if (mBuilder.mFitSystemWindow && !mBuilder.mFloating) { - navBar = CafeBarUtil.getNavigationBarHeight(mBuilder.mContext); - } - - Configuration configuration = mBuilder.mContext.getResources().getConfiguration(); - boolean tabletMode = mBuilder.mContext.getResources().getBoolean(R.bool.cafebar_tablet_mode); - - if (tabletMode || configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { - if (mBuilder.mLongContent) { - LogUtil.d("content has multi lines"); - root.setPadding(side, side, (side - buttonPadding), (side - bottom + navBar)); - } else if (longAction){ - LogUtil.d("content only 1 line with longAction"); - root.setPadding(side, top, (side - buttonPadding), (top - buttonPadding + navBar)); - } else { - LogUtil.d("content only 1 line"); - root.setPadding(side, (top - buttonPadding), (side - buttonPadding), (top - buttonPadding + navBar)); - } - } else { - if (mBuilder.mLongContent) { - LogUtil.d("content has multi lines"); - root.setPadding(side, side, (side - buttonPadding + navBar), (side - bottom)); - } else if (longAction) { - LogUtil.d("content only 1 line with longAction"); - root.setPadding(side, top, (side - buttonPadding + navBar), (top - buttonPadding)); - } else { - LogUtil.d("content only 1 line"); - root.setPadding(side, (top - buttonPadding), (side - buttonPadding + navBar), (top - buttonPadding)); - } - } - - TextView button = CafeBarUtil.getActionView(mBuilder, action, color); - if (mBuilder.getTypeface(FONT_NEUTRAL) != null) { - button.setTypeface(mBuilder.getTypeface(FONT_NEUTRAL)); - } - - if (!longAction) { - boolean multiLines = CafeBarUtil.isContentMultiLines(mBuilder); - if (multiLines) { - if (mBuilder.mFitSystemWindow && !mBuilder.mFloating) { - if (tabletMode || configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { - root.setPadding(side, side, (side - buttonPadding), (side + navBar)); - } else { - root.setPadding(side, side, (side - buttonPadding + navBar), side); - } - } else { - root.setPadding(side, side, (side - buttonPadding), side); - } - } - } - - button.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View view) { - if (callback != null) { - callback.OnClick(getCafeBar()); - return; - } - - LogUtil.d("callback = null, CafeBar dismissed"); - dismiss(); - } - }); - - root.addView(button); - } - - - - @NonNull - private CafeBar getCafeBar() { - return this; - } - - @NonNull - public View getView() { - Snackbar.SnackbarLayout snackBarLayout = (Snackbar.SnackbarLayout) mSnackBar.getView(); - - boolean tabletMode = mBuilder.mContext.getResources().getBoolean(R.bool.cafebar_tablet_mode); - - if (tabletMode || mBuilder.mFloating) { - CardView cardView = (CardView) snackBarLayout.getChildAt(0); - return cardView.getChildAt(0); - } - - LinearLayout linearLayout = (LinearLayout) snackBarLayout.getChildAt(0); - if (mBuilder.mShowShadow) return linearLayout.getChildAt(1); - return linearLayout.getChildAt(0); - } - - public void dismiss() { - if (mSnackBar == null) return; - - mSnackBar.dismiss(); - } - - public void show() { - mSnackBar.show(); - - if (mBuilder.mSwipeToDismiss) return; - - if (mSnackBar.getView().getLayoutParams() instanceof CoordinatorLayout.LayoutParams) { - mSnackBar.getView().getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { - - @Override - public boolean onPreDraw() { - mSnackBar.getView().getViewTreeObserver().removeOnPreDrawListener(this); - ((CoordinatorLayout.LayoutParams) mSnackBar.getView().getLayoutParams()).setBehavior(null); - return true; - } - }); - } - } - - @NonNull - public static Builder builder(@NonNull Context context) { - return new Builder(context); - } - - @SuppressWarnings("unused") - public static class Builder { - - Context mContext; - - @NonNull View mTo; - @Nullable View mCustomView; - CafeBarTheme.Custom mTheme = CafeBarTheme.Custom(CafeBarTheme.DARK.getColor()); - CafeBarGravity mGravity = CafeBarGravity.CENTER; - - @Snackbar.Duration - int mDuration = Snackbar.LENGTH_SHORT; - int mMaxLines = 2; - @ColorInt - int mPositiveColor = mTheme.getTitleColor(); - @ColorInt int mNegativeColor = mTheme.getTitleColor(); - @ColorInt int mNeutralColor = mTheme.getTitleColor(); - - boolean mLongContent = false; - boolean mAutoDismiss = true; - boolean mShowShadow = true; - boolean mFitSystemWindow = false; - boolean mFloating = false; - boolean mTintIcon = true; - boolean mSwipeToDismiss = true; - - private HashMap> mTypefaces; - - @Nullable Drawable mIcon = null; - - String mContent = ""; - @Nullable String mPositiveText = null; - @Nullable String mNegativeText = null; - @Nullable String mNeutralText = null; - - @Nullable SpannableStringBuilder mSpannableBuilder = null; - - @Nullable CafeBarCallback mPositiveCallback; - @Nullable CafeBarCallback mNegativeCallback; - @Nullable CafeBarCallback mNeutralCallback; - - public Builder(@NonNull Context context) { - mContext = context; - mTypefaces = new HashMap<>(); - - mTo = ((Activity) mContext).getWindow().getDecorView() - .findViewById(android.R.id.content); - } - - public Builder to(@Nullable View view) { - if (view != null) { - mTo = view; - return this; - } - - LogUtil.e("to(View): view is null, ignored"); - return this; - } - - public Builder customView(@LayoutRes int res) { - View view = View.inflate(mContext, res, null); - return customView(view); - } - - public Builder customView(@Nullable View customView) { - mCustomView = customView; - return this; - } - - public Builder content(@StringRes int res) { - return content(mContext.getResources().getString(res)); - } - - public Builder content(@NonNull String content) { - mContent = content; - return this; - } - - public Builder content(@NonNull SpannableStringBuilder spannableBuilder) { - mSpannableBuilder = spannableBuilder; - return this; - } - - public Builder maxLines(@IntRange(from = 1, to = 6) int maxLines) { - mMaxLines = maxLines; - return this; - } - - public Builder duration(@Snackbar.Duration int duration) { - mDuration = duration; - return this; - } - - public Builder theme(@NonNull CafeBarTheme theme) { - return theme(CafeBarTheme.Custom(theme.getColor())); - } - - public Builder theme(@NonNull CafeBarTheme.Custom customTheme) { - mTheme = customTheme; - mPositiveColor = mTheme.getTitleColor(); - mNegativeColor = mNeutralColor = mTheme.getSubTitleColor(); - return this; - } - - public Builder icon(@Nullable Bitmap icon) { - return icon(CafeBarUtil.toDrawable(mContext, icon), true); - } - - public Builder icon(@DrawableRes int res) { - return icon(CafeBarUtil.getDrawable(mContext, res), true); - } - - public Builder icon(@Nullable Drawable icon) { - return icon(icon, true); - } - - public Builder icon(@Nullable Bitmap icon, boolean tintIcon) { - return icon(CafeBarUtil.toDrawable(mContext, icon), tintIcon); - } - - public Builder icon(@DrawableRes int res, boolean tintIcon) { - return icon(CafeBarUtil.getDrawable(mContext, res), tintIcon); - } - - public Builder icon(@Nullable Drawable icon, boolean tintIcon) { - mIcon = icon; - mTintIcon = tintIcon; - return this; - } - - public Builder showShadow(@BoolRes int res) { - return showShadow(mContext.getResources().getBoolean(res)); - } - - public Builder showShadow(boolean showShadow) { - mShowShadow = showShadow; - return this; - } - - public Builder autoDismiss(@BoolRes int res) { - return autoDismiss(mContext.getResources().getBoolean(res)); - } - - public Builder autoDismiss(boolean autoDismiss) { - mAutoDismiss = autoDismiss; - return this; - } - - public Builder swipeToDismiss(@BoolRes int res) { - return swipeToDismiss(mContext.getResources().getBoolean(res)); - } - - public Builder swipeToDismiss(boolean swipeToDismiss) { - mSwipeToDismiss = swipeToDismiss; - return this; - } - - public Builder floating(@BoolRes int res) { - return floating(mContext.getResources().getBoolean(res)); - } - - public Builder floating(boolean floating) { - mFloating = floating; - return this; - } - - public Builder gravity(@NonNull CafeBarGravity gravity) { - mGravity = gravity; - return this; - } - - public Builder fitSystemWindow() { - Activity activity = (Activity) mContext; - Window window = activity.getWindow(); - if (window == null) { - LogUtil.d("fitSystemWindow() window is null"); - return this; - } - - WindowManager.LayoutParams params = window.getAttributes(); - int navigationBarHeight = CafeBarUtil.getNavigationBarHeight(mContext); - - boolean isInMultiWindowMode = false; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - isInMultiWindowMode = activity.isInMultiWindowMode(); - } - - if ((params.flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) == - WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) { - mFitSystemWindow = navigationBarHeight > 0 && !isInMultiWindowMode; - } - return this; - } - - public Builder typeface(String contentFontName, String buttonFontName) { - return typeface(CafeBarUtil.getTypeface(mContext, contentFontName), - CafeBarUtil.getTypeface(mContext, buttonFontName)); - } - - public Builder typeface(@Nullable Typeface content, @Nullable Typeface button) { - addTypeface(FONT_CONTENT, content); - addTypeface(FONT_POSITIVE, button); - addTypeface(FONT_NEGATIVE, button); - addTypeface(FONT_NEUTRAL, button); - return this; - } - - public Builder contentTypeface(String fontName) { - return contentTypeface(CafeBarUtil.getTypeface(mContext, fontName)); - } - - public Builder contentTypeface(@Nullable Typeface typeface) { - addTypeface(FONT_CONTENT, typeface); - return this; - } - - public Builder positiveTypeface(String fontName) { - return positiveTypeface(CafeBarUtil.getTypeface(mContext, fontName)); - } - - public Builder positiveTypeface(@Nullable Typeface typeface) { - addTypeface(FONT_POSITIVE,typeface); - return this; - } - - public Builder negativeTypeface(String fontName) { - return negativeTypeface(CafeBarUtil.getTypeface(mContext, fontName)); - } - - public Builder negativeTypeface(@Nullable Typeface typeface) { - addTypeface(FONT_NEGATIVE, typeface); - return this; - } - - public Builder neutralTypeface(String fontName) { - return neutralTypeface(CafeBarUtil.getTypeface(mContext, fontName)); - } - - public Builder neutralTypeface(@Nullable Typeface typeface) { - addTypeface(FONT_NEUTRAL, typeface); - return this; - } - - public Builder buttonTypeface(String fontName) { - return buttonTypeface(CafeBarUtil.getTypeface(mContext, fontName)); - } - - public Builder buttonTypeface(@Nullable Typeface typeface) { - addTypeface(FONT_POSITIVE, typeface); - addTypeface(FONT_NEGATIVE, typeface); - addTypeface(FONT_NEUTRAL, typeface); - return this; - } - - public Builder positiveColor(int positiveColor) { - mPositiveColor = CafeBarUtil.getColor(mContext, positiveColor); - return this; - } - - public Builder negativeColor(int negativeColor) { - mNegativeColor = CafeBarUtil.getColor(mContext, negativeColor); - return this; - } - - public Builder neutralColor(int neutralColor) { - mNeutralColor = CafeBarUtil.getColor(mContext, neutralColor); - return this; - } - - public Builder buttonColor(int buttonColor) { - int color = CafeBarUtil.getColor(mContext, buttonColor); - mNeutralColor = mPositiveColor = mNegativeColor = color; - return this; - } - - public Builder positiveText(@StringRes int res) { - return positiveText(mContext.getResources().getString(res)); - } - - public Builder positiveText(@NonNull String positiveText) { - mPositiveText = positiveText; - return this; - } - - public Builder negativeText(@StringRes int res) { - return negativeText(mContext.getResources().getString(res)); - } - - public Builder negativeText(@NonNull String negativeText) { - mNegativeText = negativeText; - return this; - } - - public Builder neutralText(@StringRes int res) { - return neutralText(mContext.getResources().getString(res)); - } - - public Builder neutralText(@NonNull String neutralText) { - mNeutralText = neutralText; - return this; - } - - public Builder onPositive(@Nullable CafeBarCallback positiveCallback) { - mPositiveCallback = positiveCallback; - return this; - } - - public Builder onNegative(@Nullable CafeBarCallback negativeCallback) { - mNegativeCallback = negativeCallback; - return this; - } - - public Builder onNeutral(@Nullable CafeBarCallback neutralCallback) { - mNeutralCallback = neutralCallback; - return this; - } - - public CafeBar build() { - return new CafeBar(this); - } - - public void show() { - build().show(); - } - - private void addTypeface(String name, Typeface typeface) { - if (!mTypefaces.containsKey(name) || mTypefaces.get(name) == null) { - mTypefaces.put(name, new WeakReference<>(typeface)); - } - } - - @Nullable - Typeface getTypeface(String name) { - if (mTypefaces.get(name) != null) { - return mTypefaces.get(name).get(); - } - return null; - } - } -} diff --git a/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarCallback.java b/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarCallback.java deleted file mode 100644 index 4a25749a..00000000 --- a/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarCallback.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.danimahardhika.cafebar; - -/* - * CafeBar - * - * Copyright (c) 2017 Dani Mahardhika - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -import androidx.annotation.NonNull; - -public interface CafeBarCallback { - - void OnClick(@NonNull CafeBar cafeBar); -} diff --git a/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarGravity.java b/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarGravity.java deleted file mode 100644 index 9cd17023..00000000 --- a/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarGravity.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.danimahardhika.cafebar; - -/* - * CafeBar - * - * Copyright (c) 2017 Dani Mahardhika - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -import android.view.Gravity; - -@SuppressWarnings("unused") -public enum CafeBarGravity { - START(Gravity.START), - CENTER(Gravity.CENTER), - END(Gravity.END); - - private int mGravity; - - CafeBarGravity(int gravity) { - mGravity = gravity; - } - - int getGravity() { - return mGravity; - } -} diff --git a/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarTheme.java b/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarTheme.java deleted file mode 100644 index 2ec8f3c8..00000000 --- a/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarTheme.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.danimahardhika.cafebar; - -/* - * CafeBar - * - * Copyright (c) 2017 Dani Mahardhika - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import android.graphics.Color; - -import androidx.annotation.ColorInt; - -@SuppressWarnings("unused") -public enum CafeBarTheme { - - LIGHT(Color.parseColor("#F5F5F5")), - DARK(Color.parseColor("#323232")), - CLEAR_BLACK(Color.BLACK); - - private int mColor; - - CafeBarTheme(@ColorInt int color) { - mColor = color; - } - - @ColorInt - int getColor() { - return mColor; - } - - public static Custom Custom(@ColorInt int color) { - return new Custom(color); - } - - public static class Custom { - - private int mColor; - - private Custom(int color) { - mColor = color; - } - - @ColorInt - int getColor() { - return mColor; - } - - @ColorInt - int getTitleColor() { - return CafeBarUtil.getTitleTextColor(mColor); - } - - @ColorInt - int getSubTitleColor() { - return CafeBarUtil.getSubTitleTextColor(mColor); - } - } -} diff --git a/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarUtil.java b/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarUtil.java deleted file mode 100644 index 7a776342..00000000 --- a/cafebar/src/main/java/com/danimahardhika/cafebar/CafeBarUtil.java +++ /dev/null @@ -1,593 +0,0 @@ -package com.danimahardhika.cafebar; - -/* - * CafeBar - * - * Copyright (c) 2017 Dani Mahardhika - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -import android.app.Activity; -import android.content.Context; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Point; -import android.graphics.PorterDuff; -import android.graphics.Typeface; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.text.TextUtils; -import android.util.DisplayMetrics; -import android.util.Log; -import android.util.TypedValue; -import android.view.Display; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.google.android.material.snackbar.Snackbar; - -import java.util.Locale; - -import androidx.annotation.ColorInt; -import androidx.annotation.DrawableRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.cardview.widget.CardView; -import androidx.core.content.ContextCompat; - -class CafeBarUtil { - - @NonNull - static View getBaseCafeBarView(@NonNull CafeBar.Builder builder) { - int color = builder.mTheme.getColor(); - int titleColor = builder.mTheme.getTitleColor(); - - //Creating LinearLayout as rootView - LinearLayout root = new LinearLayout(builder.mContext); - root.setId(R.id.cafebar_root); - root.setOrientation(LinearLayout.HORIZONTAL); - root.setGravity(Gravity.CENTER_VERTICAL); - root.setBackgroundColor(color); - root.setLayoutParams(new LinearLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT)); - root.setClickable(true); - - //Creating TextView for content - TextView content = new TextView(builder.mContext); - content.setId(R.id.cafebar_content); - content.setMaxLines(builder.mMaxLines); - content.setEllipsize(TextUtils.TruncateAt.END); - content.setTextColor(titleColor); - content.setTextSize(TypedValue.COMPLEX_UNIT_PX, builder.mContext.getResources() - .getDimensionPixelSize(R.dimen.cafebar_content_text)); - if (builder.getTypeface(CafeBar.FONT_CONTENT) != null) { - content.setTypeface(builder.getTypeface(CafeBar.FONT_CONTENT)); - } - - content.setText(builder.mContent); - if (builder.mSpannableBuilder != null) { - content.setText(builder.mSpannableBuilder, TextView.BufferType.SPANNABLE); - } - - content.setLayoutParams(new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.WRAP_CONTENT)); - content.setGravity(Gravity.CENTER_VERTICAL); - - boolean tabletMode = builder.mContext.getResources().getBoolean(R.bool.cafebar_tablet_mode); - if (tabletMode || builder.mFloating) { - content.setLayoutParams(new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.WRAP_CONTENT, - LinearLayout.LayoutParams.WRAP_CONTENT)); - content.setMinWidth(builder.mContext.getResources() - .getDimensionPixelSize(R.dimen.cafebar_floating_min_width)); - content.setMaxWidth(builder.mContext.getResources() - .getDimensionPixelSize(R.dimen.cafebar_floating_max_width)); - } - - int side = builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_content_padding_side); - int top = builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_content_padding_top); - - if (builder.mIcon != null) { - Drawable drawable = getResizedDrawable( - builder.mContext, - builder.mIcon, - titleColor, - builder.mTintIcon); - if (drawable != null) { - content.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); - content.setCompoundDrawablePadding(top); - } - } - - boolean multiLines = isContentMultiLines(builder); - boolean containsPositive = builder.mPositiveText != null; - boolean containsNegative = builder.mNegativeText != null; - boolean longNeutralAction = isLongAction(builder.mNeutralText); - - if (multiLines || containsPositive || containsNegative || longNeutralAction) { - top = side; - builder.mLongContent = true; - } - - root.setPadding(side, top, side, top); - - if (builder.mPositiveText == null && builder.mNegativeText == null) { - if (builder.mFitSystemWindow && !builder.mFloating) { - Configuration configuration = builder.mContext.getResources().getConfiguration(); - int navBar = getNavigationBarHeight(builder.mContext); - - if (tabletMode || configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { - root.setPadding(side, top, side, (top + navBar)); - } else { - root.setPadding(side, top, (side + navBar), top); - } - } - - //Adding childView to rootView - root.addView(content); - - //Returning rootView - return root; - } - - //Change root orientation to vertical - root.setOrientation(LinearLayout.VERTICAL); - - //Creating another linear layout for button container - LinearLayout buttonBase = new LinearLayout(builder.mContext); - buttonBase.setId(R.id.cafebar_button_base); - buttonBase.setOrientation(LinearLayout.HORIZONTAL); - buttonBase.setGravity(Gravity.END); - buttonBase.setLayoutParams(new LinearLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT)); - - //Adding button - String neutralText = builder.mNeutralText; - if (neutralText != null) { - TextView neutral = getActionView(builder, neutralText, builder.mNeutralColor); - neutral.setId(R.id.cafebar_button_neutral); - - if (builder.getTypeface(CafeBar.FONT_NEUTRAL) != null) { - neutral.setTypeface(builder.getTypeface(CafeBar.FONT_NEUTRAL)); - } - - buttonBase.addView(neutral); - } - - String negativeText = builder.mNegativeText; - if (negativeText != null) { - TextView negative = getActionView(builder, negativeText, builder.mNegativeColor); - negative.setId(R.id.cafebar_button_negative); - - LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) negative.getLayoutParams(); - params.setMargins( - params.leftMargin + builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_button_margin), - params.topMargin, - params.rightMargin, - params.bottomMargin); - - if (builder.getTypeface(CafeBar.FONT_NEGATIVE) != null) { - negative.setTypeface(builder.getTypeface(CafeBar.FONT_NEGATIVE)); - } - - buttonBase.addView(negative); - } - - String positiveText = builder.mPositiveText; - if (positiveText != null) { - int positiveColor = CafeBarUtil.getAccentColor(builder.mContext, builder.mPositiveColor); - TextView positive = getActionView(builder, positiveText, positiveColor); - positive.setId(R.id.cafebar_button_positive); - - LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) positive.getLayoutParams(); - params.setMargins( - params.leftMargin + builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_button_margin), - params.topMargin, - params.rightMargin, - params.bottomMargin); - - if (builder.getTypeface(CafeBar.FONT_POSITIVE) != null) { - positive.setTypeface(builder.getTypeface(CafeBar.FONT_POSITIVE)); - } - - buttonBase.addView(positive); - } - - //Adjust padding - int buttonPadding = builder.mContext.getResources().getDimensionPixelSize( - R.dimen.cafebar_button_padding); - root.setPadding(side, top, (side - buttonPadding), (top - buttonPadding)); - - if (builder.mFitSystemWindow && !builder.mFloating) { - Configuration configuration = builder.mContext.getResources().getConfiguration(); - int navBar = getNavigationBarHeight(builder.mContext); - - if (tabletMode || configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { - root.setPadding(side, top, (side - buttonPadding), (top - buttonPadding + navBar)); - } else { - root.setPadding(side, top, (side - buttonPadding + navBar), top); - } - } - - //Adding content to container - content.setPadding(0, 0, buttonPadding, 0); - - //Adding childView to rootView - root.addView(content); - - //Adding button container to root - root.addView(buttonBase); - - //Returning rootView - return root; - } - - static Snackbar getBaseSnackBar(@NonNull View cafeBarLayout, - @NonNull CafeBar.Builder builder) { - View view = builder.mTo; - - Snackbar snackBar = Snackbar.make(view, "", builder.mAutoDismiss ? - builder.mDuration : Snackbar.LENGTH_INDEFINITE); - Snackbar.SnackbarLayout snackBarLayout = (Snackbar.SnackbarLayout) snackBar.getView(); - snackBarLayout.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT; - snackBarLayout.setPadding(0, 0, 0, 0); - snackBarLayout.setBackgroundColor(Color.TRANSPARENT); - snackBarLayout.setClickable(false); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - snackBarLayout.setElevation(0); - } - - TextView textView = snackBarLayout.findViewById( - R.id.snackbar_text); - if (textView != null) textView.setVisibility(View.INVISIBLE); - - boolean tabletMode = builder.mContext.getResources().getBoolean(R.bool.cafebar_tablet_mode); - if (tabletMode || builder.mFloating) { - int shadow = builder.mContext.getResources().getDimensionPixelSize(R.dimen.cardview_default_elevation); - int padding = builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_floating_padding); - - CardView cardView = new CardView(builder.mContext); - cardView.setUseCompatPadding(false); - Snackbar.SnackbarLayout.LayoutParams params = new Snackbar.SnackbarLayout.LayoutParams( - LinearLayout.LayoutParams.WRAP_CONTENT, - LinearLayout.LayoutParams.WRAP_CONTENT); - params.gravity = builder.mGravity.getGravity(); - - int bottom = builder.mFloating ? padding : 0; - snackBarLayout.setClipToPadding(false); - snackBarLayout.setPadding(padding, shadow, padding, bottom); - - if (builder.mFitSystemWindow && builder.mFloating) { - Configuration configuration = builder.mContext.getResources().getConfiguration(); - int navBar = getNavigationBarHeight(builder.mContext); - - if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { - snackBarLayout.setPadding(padding, shadow, padding, bottom + navBar); - } else { - snackBarLayout.setPadding(padding, shadow, padding + navBar, bottom); - } - } - - cardView.setLayoutParams(params); - cardView.setClickable(true); - if (!builder.mShowShadow) { - cardView.setCardElevation(0f); - } - - cardView.addView(cafeBarLayout); - snackBarLayout.addView(cardView, 0); - return snackBar; - } - - LinearLayout root = new LinearLayout(builder.mContext); - root.setOrientation(LinearLayout.VERTICAL); - root.setLayoutParams(new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.WRAP_CONTENT)); - - if (builder.mShowShadow) { - View shadow = new View(builder.mContext); - shadow.setLayoutParams(new LinearLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - builder.mContext.getResources().getDimensionPixelSize( - R.dimen.cafebar_shadow_top))); - shadow.setBackgroundResource(R.drawable.cafebar_shadow_top); - root.addView(shadow); - } - - root.addView(cafeBarLayout); - snackBarLayout.addView(root, 0); - return snackBar; - } - - @NonNull - static TextView getActionView(@NonNull CafeBar.Builder builder, @NonNull String action, int color) { - boolean longAction = isLongAction(action); - int res = R.layout.cafebar_action_button_dark; - - CafeBarTheme.Custom customTheme = builder.mTheme; - int titleColor = customTheme.getTitleColor(); - boolean dark = titleColor != Color.WHITE; - if (dark) { - res = R.layout.cafebar_action_button; - } - - int padding = builder.mContext.getResources().getDimensionPixelSize( - R.dimen.cafebar_button_padding); - - TextView button = (TextView) View.inflate(builder.mContext, res, null); - button.setText(action.toUpperCase(Locale.getDefault())); - button.setMaxLines(1); - button.setEllipsize(TextUtils.TruncateAt.END); - button.setTextColor(color); - button.setPadding(padding, padding, padding, padding); - - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.WRAP_CONTENT, - LinearLayout.LayoutParams.WRAP_CONTENT); - - int side = builder.mContext.getResources().getDimensionPixelSize( - R.dimen.cafebar_content_padding_side); - int margin = builder.mContext.getResources().getDimensionPixelSize( - R.dimen.cafebar_button_margin_start); - params.setMargins(margin, 0, 0, 0); - - if (longAction) { - params.setMargins(0, (side - padding), 0, 0); - } - - if (builder.mPositiveText != null || builder.mNegativeText != null) { - longAction = true; - params.setMargins(0, (side - padding), 0, 0); - } else { - params.gravity = Gravity.CENTER_VERTICAL | Gravity.END; - } - - button.setLayoutParams(params); - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - button.setBackgroundResource(dark ? R.drawable.cafebar_action_button_selector_dark : - R.drawable.cafebar_action_button_selector); - return button; - } - - TypedValue outValue = new TypedValue(); - builder.mContext.getTheme().resolveAttribute(longAction ? - R.attr.selectableItemBackground : R.attr.selectableItemBackgroundBorderless, - outValue, true); - button.setBackgroundResource(outValue.resourceId); - return button; - } - - static boolean isContentMultiLines(@NonNull CafeBar.Builder builder) { - DisplayMetrics metrics = new DisplayMetrics(); - ((Activity) builder.mContext).getWindowManager().getDefaultDisplay().getMetrics(metrics); - - boolean tabletMode = builder.mContext.getResources().getBoolean(R.bool.cafebar_tablet_mode); - int padding = (builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_content_padding_side) * 2); - - if (builder.mNeutralText != null && builder.mNegativeText == null && builder.mPositiveText == null && - !isLongAction(builder.mNeutralText)) { - padding += builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_button_margin_start); - - int actionPadding = builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_button_padding); - TextView action = new TextView(builder.mContext); - action.setTextSize(TypedValue.COMPLEX_UNIT_PX, builder.mContext.getResources() - .getDimensionPixelSize(R.dimen.cafebar_content_text)); - if (builder.getTypeface(CafeBar.FONT_NEUTRAL) != null) { - action.setTypeface(builder.getTypeface(CafeBar.FONT_CONTENT)); - } - action.setPadding(actionPadding, 0, actionPadding, 0); - action.setText(builder.mNeutralText.substring(0, - builder.mNeutralText.length() > 10 ? 10 : builder.mNeutralText.length())); - - int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(metrics.widthPixels, View.MeasureSpec.AT_MOST); - int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); - action.measure(widthMeasureSpec, heightMeasureSpec); - - LogUtil.d("measured action width: " +action.getMeasuredWidth()); - padding += action.getMeasuredWidth(); - } - - if (builder.mIcon != null) { - int icon = builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_icon_size); - icon += builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_content_padding_top); - padding += icon; - } - - TextView textView = new TextView(builder.mContext); - textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, builder.mContext.getResources() - .getDimension(R.dimen.cafebar_content_text)); - textView.setPadding(padding, 0, 0, 0); - if (builder.getTypeface(CafeBar.FONT_CONTENT) != null) { - textView.setTypeface(builder.getTypeface(CafeBar.FONT_CONTENT)); - } - - if (builder.mSpannableBuilder != null) { - textView.setText(builder.mSpannableBuilder, TextView.BufferType.SPANNABLE); - } else { - textView.setText(builder.mContent); - } - - int maxWidth = metrics.widthPixels; - if (builder.mFloating || tabletMode) { - maxWidth = builder.mContext.getResources().getDimensionPixelSize(R.dimen.cafebar_floating_max_width); - } - - int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(maxWidth, View.MeasureSpec.AT_MOST); - int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); - textView.measure(widthMeasureSpec, heightMeasureSpec); - return textView.getLineCount() > 1; - } - - @Nullable - static Drawable getDrawable(@NonNull Context context, @DrawableRes int res) { - try { - Drawable drawable = context.getResources().getDrawable(res); - return drawable.mutate(); - } catch (OutOfMemoryError e) { - return null; - } - } - - @Nullable - static Drawable toDrawable(@NonNull Context context, @Nullable Bitmap bitmap) { - try { - if (bitmap == null) return null; - return new BitmapDrawable(context.getResources(), bitmap); - } catch (OutOfMemoryError e) { - return null; - } - } - - @Nullable - private static Drawable getResizedDrawable(@NonNull Context context, @Nullable Drawable drawable, - int color, boolean tint) { - try { - if (drawable == null) { - LogUtil.d("drawable: null"); - return null; - } - - if (tint) { - drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN); - drawable.mutate(); - } - - int size = context.getResources().getDimensionPixelSize(R.dimen.cafebar_icon_size); - Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), - drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); - drawable.draw(canvas); - - return new BitmapDrawable(context.getResources(), - Bitmap.createScaledBitmap(bitmap, size, size, true)); - } catch (Exception | OutOfMemoryError e) { - LogUtil.e(Log.getStackTraceString(e)); - return null; - } - } - - static int getNavigationBarHeight(@NonNull Context context) { - Point appUsableSize = getAppUsableScreenSize(context); - Point realScreenSize = getRealScreenSize(context); - - if (appUsableSize.x < realScreenSize.x) { - Point point = new Point(realScreenSize.x - appUsableSize.x, appUsableSize.y); - return point.x; - } - - if (appUsableSize.y < realScreenSize.y) { - Point point = new Point(appUsableSize.x, realScreenSize.y - appUsableSize.y); - return point.y; - } - return 0; - } - - private static Point getAppUsableScreenSize(@NonNull Context context) { - WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); - Display display = windowManager.getDefaultDisplay(); - Point size = new Point(); - display.getSize(size); - return size; - } - - private static Point getRealScreenSize(@NonNull Context context) { - WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); - Display display = windowManager.getDefaultDisplay(); - Point size = new Point(); - - if (Build.VERSION.SDK_INT >= 17) { - display.getRealSize(size); - } else if (Build.VERSION.SDK_INT >= 14) { - try { - size.x = (Integer) Display.class.getMethod("getRawWidth").invoke(display); - size.y = (Integer) Display.class.getMethod("getRawHeight").invoke(display); - } catch (Exception e) { - LogUtil.e(Log.getStackTraceString(e)); - } - } - return size; - } - - static boolean isLongAction(@Nullable String action) { - return action != null && action.length() > 10; - } - - static int getAccentColor(Context context, int defaultColor) { - if (context == null) { - LogUtil.e("getAccentColor() context is null"); - return defaultColor; - } - - TypedValue typedValue = new TypedValue(); - Resources.Theme theme = context.getTheme(); - theme.resolveAttribute(R.attr.colorAccent, typedValue, true); - return typedValue.data; - } - - static int getTitleTextColor(@ColorInt int color) { - double darkness = 1-(0.299*Color.red(color) + 0.587*Color.green(color) + 0.114*Color.blue(color))/255; - return (darkness < 0.35) ? getDarkerColor(color) : Color.WHITE; - } - - static int getSubTitleTextColor(@ColorInt int color) { - int titleColor = getTitleTextColor(color); - int alpha2 = Math.round(Color.alpha(titleColor) * 0.7f); - int red = Color.red(titleColor); - int green = Color.green(titleColor); - int blue = Color.blue(titleColor); - return Color.argb(alpha2, red, green, blue); - } - - private static int getDarkerColor(@ColorInt int color) { - float[] hsv = new float[3]; - Color.colorToHSV(color, hsv); - hsv[2] *= 0.25f; - return Color.HSVToColor(hsv); - } - - static int getColor(@NonNull Context context, int color) { - try { - return ContextCompat.getColor(context, color); - } catch (Exception e) { - LogUtil.e(Log.getStackTraceString(e)); - return color; - } - } - - @Nullable - static Typeface getTypeface(@NonNull Context context, String fontName) { - try { - return Typeface.createFromAsset(context.getAssets(), "fonts/" +fontName); - } catch (Exception e) { - LogUtil.e(Log.getStackTraceString(e)); - } - return null; - } -} diff --git a/cafebar/src/main/java/com/danimahardhika/cafebar/LogUtil.java b/cafebar/src/main/java/com/danimahardhika/cafebar/LogUtil.java deleted file mode 100644 index 6a0aad64..00000000 --- a/cafebar/src/main/java/com/danimahardhika/cafebar/LogUtil.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.danimahardhika.cafebar; - -/* - * CafeBar - * - * Copyright (c) 2017 Dani Mahardhika - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import android.util.Log; - -import androidx.annotation.NonNull; - -class LogUtil { - - static boolean sEnableLogging = false; - - private static final String TAG = "CafeBar"; - - static void d(@NonNull String message) { - if (LogUtil.sEnableLogging) - Log.d(TAG, message); - } - - static void e(@NonNull String message) { - if (LogUtil.sEnableLogging) - Log.e(TAG, message); - } -} diff --git a/cafebar/src/main/res-public/values/public.xml b/cafebar/src/main/res-public/values/public.xml deleted file mode 100644 index 4705295e..00000000 --- a/cafebar/src/main/res-public/values/public.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/cafebar/src/main/res/drawable/cafebar_action_button_selector.xml b/cafebar/src/main/res/drawable/cafebar_action_button_selector.xml deleted file mode 100644 index ebca92b2..00000000 --- a/cafebar/src/main/res/drawable/cafebar_action_button_selector.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/cafebar/src/main/res/drawable/cafebar_action_button_selector_dark.xml b/cafebar/src/main/res/drawable/cafebar_action_button_selector_dark.xml deleted file mode 100644 index 075d3975..00000000 --- a/cafebar/src/main/res/drawable/cafebar_action_button_selector_dark.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/cafebar/src/main/res/drawable/cafebar_shadow_top.xml b/cafebar/src/main/res/drawable/cafebar_shadow_top.xml deleted file mode 100644 index eb6c9068..00000000 --- a/cafebar/src/main/res/drawable/cafebar_shadow_top.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/cafebar/src/main/res/layout/cafebar_action_button.xml b/cafebar/src/main/res/layout/cafebar_action_button.xml deleted file mode 100644 index 6f21978d..00000000 --- a/cafebar/src/main/res/layout/cafebar_action_button.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - \ No newline at end of file diff --git a/cafebar/src/main/res/layout/cafebar_action_button_dark.xml b/cafebar/src/main/res/layout/cafebar_action_button_dark.xml deleted file mode 100644 index 888a548d..00000000 --- a/cafebar/src/main/res/layout/cafebar_action_button_dark.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - \ No newline at end of file diff --git a/cafebar/src/main/res/values-sw600dp-land/dimens.xml b/cafebar/src/main/res/values-sw600dp-land/dimens.xml deleted file mode 100644 index 5799a6b2..00000000 --- a/cafebar/src/main/res/values-sw600dp-land/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - 288dp - - \ No newline at end of file diff --git a/cafebar/src/main/res/values-sw600dp/bools.xml b/cafebar/src/main/res/values-sw600dp/bools.xml deleted file mode 100644 index c203d3be..00000000 --- a/cafebar/src/main/res/values-sw600dp/bools.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - true - - \ No newline at end of file diff --git a/cafebar/src/main/res/values-sw600dp/dimens.xml b/cafebar/src/main/res/values-sw600dp/dimens.xml deleted file mode 100644 index a9a49daf..00000000 --- a/cafebar/src/main/res/values-sw600dp/dimens.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - 48dp - - - 188dp - 568dp - 24dp - - \ No newline at end of file diff --git a/cafebar/src/main/res/values/bools.xml b/cafebar/src/main/res/values/bools.xml deleted file mode 100644 index 944cf2a0..00000000 --- a/cafebar/src/main/res/values/bools.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - false - - \ No newline at end of file diff --git a/cafebar/src/main/res/values/colors.xml b/cafebar/src/main/res/values/colors.xml deleted file mode 100644 index eac88795..00000000 --- a/cafebar/src/main/res/values/colors.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - #44000000 - #44FFFFFF - - \ No newline at end of file diff --git a/cafebar/src/main/res/values/dimens.xml b/cafebar/src/main/res/values/dimens.xml deleted file mode 100644 index 6082bac0..00000000 --- a/cafebar/src/main/res/values/dimens.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 24dp - - 24dp - 14dp - - 24dp - 10dp - 8dp - - 4dp - 14sp - - - 108dp - 368dp - 16dp - - \ No newline at end of file diff --git a/cafebar/src/main/res/values/ids.xml b/cafebar/src/main/res/values/ids.xml deleted file mode 100644 index c5bb9f24..00000000 --- a/cafebar/src/main/res/values/ids.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cafebar/src/main/res/values/styles.xml b/cafebar/src/main/res/values/styles.xml deleted file mode 100644 index 2d8c8ae4..00000000 --- a/cafebar/src/main/res/values/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index ef628913..955021f9 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,7 +3,7 @@ include ':wear' include ':codegen' include ':annotation' rootProject.name='Szkolny.eu' -include ':app', ':agendacalendarview', ':mhttp', ':cafebar', ':szkolny-font', ':nachos' +include ':app', ':agendacalendarview', ':mhttp', ':szkolny-font', ':nachos' /* include ':Navigation' project(':Navigation').projectDir = new File(settingsDir, '../Navigation/navlib')*/