diff --git a/LICENSE b/LICENSE index e06d20818..76a637894 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Apache License + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -178,7 +178,7 @@ Apache License APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" + boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a @@ -186,7 +186,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright {yyyy} {name of copyright owner} + Copyright 2016 Mike Penz Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -199,4 +199,3 @@ Apache License 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. - diff --git a/README.md b/README.md index 602786672..0a754d729 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ There is a Header with profiles (**AccountHeader**), a **MiniDrawer** for Table ###A quick overview what's in - **the easiest possible integration** -- integrate in less then **5 minutes** +- integrate in less than **5 minutes** - compatible down to **API Level 10** - includes an **AccountSwitcher** - quick and simple api @@ -52,7 +52,7 @@ You can find some frequently asked questions and other resources in the [WIKI / ##1. Provide the gradle dependency ```gradle -compile('com.mikepenz:materialdrawer:5.2.0@aar') { +compile('com.mikepenz:materialdrawer:5.2.1@aar') { transitive = true } ``` diff --git a/app/build.gradle b/app/build.gradle index 345937483..4a443d5c7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,22 +6,16 @@ try { } android { - compileSdkVersion rootProject.ext.compileSdkVersion - buildToolsVersion rootProject.ext.buildToolsVersion + compileSdkVersion setup.compileSdk + buildToolsVersion setup.buildTools defaultConfig { - minSdkVersion 10 - targetSdkVersion 23 - versionCode 520 - versionName "5.2.0" + minSdkVersion setup.minSdk + targetSdkVersion setup.targetSdk + versionCode 521 + versionName "5.2.1" - applicationVariants.all { variant -> - variant.outputs.each { output -> - def file = output.outputFile - def fileName = file.name.replace(".apk", "-v" + versionName + "-c" + versionCode + ".apk") - output.outputFile = new File(file.parentFile, fileName) - } - } + setProperty("archivesBaseName", "-v$versionName-c$versionCode") } buildTypes { debug { @@ -50,8 +44,8 @@ android { dependencies { compile project(':library') - compile "com.android.support:design:${rootProject.ext.supportLibVersion}" - compile "com.android.support:cardview-v7:${rootProject.ext.supportLibVersion}" + compile "com.android.support:design:${versions.supportLib}" + compile "com.android.support:cardview-v7:${versions.supportLib}" // used to showcase how to load images compile 'com.squareup.picasso:picasso:2.5.2' diff --git a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlBasePrimaryDrawerItem.java b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlBasePrimaryDrawerItem.java index 7ec2faf4a..7650cc0ff 100644 --- a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlBasePrimaryDrawerItem.java +++ b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlBasePrimaryDrawerItem.java @@ -11,6 +11,7 @@ import com.mikepenz.materialdrawer.holder.ImageHolder; import com.mikepenz.materialdrawer.holder.StringHolder; import com.mikepenz.materialdrawer.model.BaseDrawerItem; +import com.mikepenz.materialdrawer.util.DrawerImageLoader; import com.mikepenz.materialdrawer.util.DrawerUIUtils; import com.mikepenz.materialize.util.UIUtils; @@ -103,6 +104,9 @@ protected void bindViewHelper(CustomBaseViewHolder viewHolder) { viewHolder.description.setTypeface(getTypeface()); } + //we make sure we reset the image first before setting the new one in case there is an empty one + DrawerImageLoader.getInstance().cancelImage(viewHolder.icon); + viewHolder.icon.setImageBitmap(null); //get the drawables for our icon and set it ImageHolder.applyTo(icon, viewHolder.icon, "customUrlItem"); diff --git a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlPrimaryDrawerItem.java b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlPrimaryDrawerItem.java index ed206d908..f517c2dc1 100644 --- a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlPrimaryDrawerItem.java +++ b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlPrimaryDrawerItem.java @@ -99,7 +99,7 @@ public ViewHolder create(View v) { } } - static class ViewHolder extends CustomBaseViewHolder { + public static class ViewHolder extends CustomBaseViewHolder { private View badgeContainer; private TextView badge; diff --git a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/IconDrawerItem.java b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/IconDrawerItem.java index 10a680b59..7ed01cb18 100644 --- a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/IconDrawerItem.java +++ b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/IconDrawerItem.java @@ -201,7 +201,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; protected ImageView icon; diff --git a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/OverflowMenuDrawerItem.java b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/OverflowMenuDrawerItem.java index 2bc9c6988..6cd6b2e02 100644 --- a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/OverflowMenuDrawerItem.java +++ b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/OverflowMenuDrawerItem.java @@ -103,7 +103,7 @@ public ViewHolder create(View v) { } } - static class ViewHolder extends BaseViewHolder { + public static class ViewHolder extends BaseViewHolder { //protected ImageButton ibOverflow; private ImageButton menu; diff --git a/build.gradle b/build.gradle index c16ec5c17..9b199616b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,13 @@ buildscript { + ext { + setup = [compileSdk: 23, + buildTools: "23.0.3", + minSdk : 10, + targetSdk : 23] + + versions = [supportLib: "23.3.0"] + } + repositories { jcenter() mavenCentral() @@ -17,12 +26,6 @@ allprojects { } } -ext { - compileSdkVersion = 23 - buildToolsVersion = "23.0.3" - supportLibVersion = "23.3.0" -} - task wrapper(type: Wrapper) { gradleVersion = '2.12' } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 32d5acc22..418ec8ea0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ # Maven stuff -VERSION_NAME=5.2.0 -VERSION_CODE=520 +VERSION_NAME=5.2.1 +VERSION_CODE=521 GROUP=com.mikepenz POM_DESCRIPTION=MaterialDrawer Library diff --git a/library/build.gradle b/library/build.gradle index 133a66a83..d06f42162 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -2,14 +2,14 @@ apply plugin: 'com.android.library' apply plugin: 'com.novoda.bintray-release' android { - compileSdkVersion rootProject.ext.compileSdkVersion - buildToolsVersion rootProject.ext.buildToolsVersion + compileSdkVersion setup.compileSdk + buildToolsVersion setup.buildTools defaultConfig { - minSdkVersion 10 - targetSdkVersion 23 - versionCode 520 - versionName '5.2.0' + minSdkVersion setup.minSdk + targetSdkVersion setup.targetSdk + versionCode 521 + versionName '5.2.1' } buildTypes { release { @@ -28,10 +28,10 @@ apply from: 'gradle-mvn-push.gradle' apply from: 'gradle-jcenter-push.gradle' dependencies { - compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" - compile "com.android.support:recyclerview-v7:${rootProject.ext.supportLibVersion}" - compile "com.android.support:support-annotations:${rootProject.ext.supportLibVersion}" - compile "com.android.support:design:${rootProject.ext.supportLibVersion}" + compile "com.android.support:appcompat-v7:${versions.supportLib}" + compile "com.android.support:recyclerview-v7:${versions.supportLib}" + compile "com.android.support:support-annotations:${versions.supportLib}" + compile "com.android.support:design:${versions.supportLib}" // used to base on some backwards compatible themes // contains util classes to support various android versions, and clean up code @@ -47,5 +47,5 @@ dependencies { // used to fill the RecyclerView with the DrawerItems // and provides single and multi selection, expandable items // https://github.com/mikepenz/FastAdapter - compile 'com.mikepenz:fastadapter:1.4.1@aar' + compile 'com.mikepenz:fastadapter:1.4.4@aar' } diff --git a/library/src/main/java/com/mikepenz/materialdrawer/AccountHeader.java b/library/src/main/java/com/mikepenz/materialdrawer/AccountHeader.java index 1797dff4c..5423da07f 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/AccountHeader.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/AccountHeader.java @@ -30,6 +30,15 @@ protected AccountHeader(AccountHeaderBuilder accountHeaderBuilder) { this.mAccountHeaderBuilder = accountHeaderBuilder; } + /** + * the protected getter for the AccountHeaderBuilder + * + * @return the AccountHeaderBuilder + */ + protected AccountHeaderBuilder getAccountHeaderBuilder() { + return mAccountHeaderBuilder; + } + /** * Get the Root view for the Header * diff --git a/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java b/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java index 0a20c3fe2..c3ecdf6ae 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java @@ -15,6 +15,7 @@ import com.mikepenz.fastadapter.adapters.FooterAdapter; import com.mikepenz.fastadapter.adapters.HeaderAdapter; import com.mikepenz.fastadapter.adapters.ItemAdapter; +import com.mikepenz.materialdrawer.holder.DimenHolder; import com.mikepenz.materialdrawer.holder.ImageHolder; import com.mikepenz.materialdrawer.holder.StringHolder; import com.mikepenz.materialdrawer.model.ContainerDrawerItem; @@ -304,12 +305,26 @@ public void setHeader(@NonNull View view, boolean divider) { * @param divider */ public void setHeader(@NonNull View view, boolean padding, boolean divider) { + setHeader(view, padding, divider, null); + } + + /** + * method to replace a previous set header + * + * @param view + * @param padding + * @param divider + * @param height + */ + public void setHeader(@NonNull View view, boolean padding, boolean divider, DimenHolder height) { mDrawerBuilder.getHeaderAdapter().clear(); if (padding) { - mDrawerBuilder.getHeaderAdapter().add(new ContainerDrawerItem().withView(view).withDivider(divider).withViewPosition(ContainerDrawerItem.Position.TOP)); + mDrawerBuilder.getHeaderAdapter().add(new ContainerDrawerItem().withView(view).withDivider(divider).withHeight(height).withViewPosition(ContainerDrawerItem.Position.TOP)); } else { - mDrawerBuilder.getHeaderAdapter().add(new ContainerDrawerItem().withView(view).withDivider(divider).withViewPosition(ContainerDrawerItem.Position.NONE)); + mDrawerBuilder.getHeaderAdapter().add(new ContainerDrawerItem().withView(view).withDivider(divider).withHeight(height).withViewPosition(ContainerDrawerItem.Position.NONE)); } + //we need to set the padding so the header starts on top + mDrawerBuilder.mRecyclerView.setPadding(mDrawerBuilder.mRecyclerView.getPaddingLeft(), 0, mDrawerBuilder.mRecyclerView.getPaddingRight(), mDrawerBuilder.mRecyclerView.getPaddingBottom()); } /** @@ -317,6 +332,7 @@ public void setHeader(@NonNull View view, boolean padding, boolean divider) { */ public void removeHeader() { mDrawerBuilder.getHeaderAdapter().clear(); + //possibly there should be also a reset of the padding so the first item starts below the toolbar } /** @@ -541,6 +557,9 @@ public boolean setSelectionAtPosition(int position, boolean fireOnClick) { if (mDrawerBuilder.mOnDrawerItemClickListener != null && fireOnClick && position >= 0) { mDrawerBuilder.mOnDrawerItemClickListener.onItemClick(null, position, mDrawerBuilder.mAdapter.getItem(position)); } + + //we set the selection on a normal item in the drawer so we have to deselect the items in the StickyDrawer + mDrawerBuilder.resetStickyFooterSelection(); } return false; } diff --git a/library/src/main/java/com/mikepenz/materialdrawer/DrawerBuilder.java b/library/src/main/java/com/mikepenz/materialdrawer/DrawerBuilder.java index fea7cd3c1..75f918697 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/DrawerBuilder.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/DrawerBuilder.java @@ -1601,7 +1601,7 @@ private void createContent() { } else if (mSliderBackgroundDrawable != null) { UIUtils.setBackground(mSliderLayout, mSliderBackgroundDrawable); } else if (mSliderBackgroundDrawableRes != -1) { - UIUtils.setBackground(mSliderLayout, mSliderBackgroundColorRes); + UIUtils.setBackground(mSliderLayout, mSliderBackgroundDrawableRes); } //handle the header diff --git a/library/src/main/java/com/mikepenz/materialdrawer/MiniDrawer.java b/library/src/main/java/com/mikepenz/materialdrawer/MiniDrawer.java index 11913fd88..534d25664 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/MiniDrawer.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/MiniDrawer.java @@ -402,7 +402,7 @@ public void createItems() { mAdapter.clear(); int profileOffset = 0; - if (mAccountHeader != null) { + if (mAccountHeader != null && mAccountHeader.getAccountHeaderBuilder().mProfileImagesVisible) { IProfile profile = mAccountHeader.getActiveProfile(); if (profile instanceof IDrawerItem) { mAdapter.add(generateMiniDrawerItem((IDrawerItem) profile)); diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/BaseSecondaryDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/BaseSecondaryDrawerItem.java deleted file mode 100644 index 2232e68be..000000000 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/BaseSecondaryDrawerItem.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.mikepenz.materialdrawer.model; - -import android.content.Context; -import android.content.res.ColorStateList; -import android.graphics.drawable.Drawable; -import android.support.annotation.ColorInt; -import android.support.annotation.ColorRes; -import android.support.annotation.StringRes; - -import com.mikepenz.materialdrawer.R; -import com.mikepenz.materialdrawer.holder.ColorHolder; -import com.mikepenz.materialdrawer.holder.ImageHolder; -import com.mikepenz.materialdrawer.holder.StringHolder; -import com.mikepenz.materialdrawer.util.DrawerUIUtils; -import com.mikepenz.materialize.util.UIUtils; - -/** - * Created by mikepenz on 03.02.15. - */ -public abstract class BaseSecondaryDrawerItem extends BaseDrawerItem { - private StringHolder description; - private ColorHolder descriptionTextColor; - - public T withDescription(String description) { - this.description = new StringHolder(description); - return (T) this; - } - - public T withDescription(@StringRes int descriptionRes) { - this.description = new StringHolder(descriptionRes); - return (T) this; - } - - public T withDescriptionTextColor(@ColorInt int color) { - this.descriptionTextColor = ColorHolder.fromColor(color); - return (T) this; - } - - public T withDescriptionTextColorRes(@ColorRes int colorRes) { - this.descriptionTextColor = ColorHolder.fromColorRes(colorRes); - return (T) this; - } - - public StringHolder getDescription() { - return description; - } - - public ColorHolder getDescriptionTextColor() { - return descriptionTextColor; - } - - /** - * helper method to decide for the correct color - * OVERWRITE to get the correct secondary color - * - * @param ctx - * @return - */ - @Override - protected int getColor(Context ctx) { - int color; - if (this.isEnabled()) { - color = ColorHolder.color(getTextColor(), ctx, R.attr.material_drawer_secondary_text, R.color.material_drawer_secondary_text); - } else { - color = ColorHolder.color(getDisabledTextColor(), ctx, R.attr.material_drawer_hint_text, R.color.material_drawer_hint_text); - } - return color; - } - - /** - * a helper method to have the logic for all secondaryDrawerItems only once - * - * @param viewHolder - */ - protected void bindViewHelper(BaseViewHolder viewHolder) { - Context ctx = viewHolder.itemView.getContext(); - - //set the identifier from the drawerItem here. It can be used to run tests - viewHolder.itemView.setId(hashCode()); - - //set the item selected if it is - viewHolder.itemView.setSelected(isSelected()); - - // - viewHolder.itemView.setTag(this); - - //get the correct color for the background - int selectedColor = getSelectedColor(ctx); - //get the correct color for the text - int color = getColor(ctx); - ColorStateList selectedTextColor = getTextColorStateList(color, getSelectedTextColor(ctx)); - //get the correct color for the icon - int iconColor = getIconColor(ctx); - int selectedIconColor = getSelectedIconColor(ctx); - - //set the background for the item - UIUtils.setBackground(viewHolder.view, UIUtils.getSelectableBackground(ctx, selectedColor, true)); - //set the text for the name - StringHolder.applyTo(this.getName(), viewHolder.name); - - //set the text for the description or hide - StringHolder.applyToOrHide(this.getDescription(), viewHolder.description); - - //set the colors for textViews - viewHolder.name.setTextColor(selectedTextColor); - - //set the description text color - ColorHolder.applyToOr(getDescriptionTextColor(), viewHolder.description, selectedTextColor); - - //define the typeface for our textViews - if (getTypeface() != null) { - viewHolder.name.setTypeface(getTypeface()); - viewHolder.description.setTypeface(getTypeface()); - } - - //get the drawables for our icon and set it - Drawable icon = ImageHolder.decideIcon(getIcon(), ctx, iconColor, isIconTinted(), 1); - Drawable selectedIcon = ImageHolder.decideIcon(getSelectedIcon(), ctx, selectedIconColor, isIconTinted(), 1); - ImageHolder.applyMultiIconTo(icon, iconColor, selectedIcon, selectedIconColor, isIconTinted(), viewHolder.icon); - - //for android API 17 --> Padding not applied via xml - DrawerUIUtils.setDrawerVerticalPadding(viewHolder.view, level); - } -} diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java index d3fad2081..d89e62582 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java @@ -9,12 +9,25 @@ import com.mikepenz.fastadapter.utils.ViewHolderFactory; import com.mikepenz.materialdrawer.R; +import com.mikepenz.materialdrawer.holder.DimenHolder; import com.mikepenz.materialize.util.UIUtils; /** * Created by mikepenz on 03.02.15. */ public class ContainerDrawerItem extends AbstractDrawerItem { + + private DimenHolder mHeight; + + public ContainerDrawerItem withHeight(DimenHolder height) { + mHeight = height; + return this; + } + + public DimenHolder getHeight() { + return mHeight; + } + private View mView; public ContainerDrawerItem withView(View view) { @@ -76,6 +89,13 @@ public void bindView(ViewHolder viewHolder) { ((ViewGroup) mView.getParent()).removeView(mView); } + //set the height + if (mHeight != null) { + RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) viewHolder.view.getLayoutParams(); + lp.height = mHeight.asPixel(ctx); + viewHolder.view.setLayoutParams(lp); + } + //make sure the header view is empty ((ViewGroup) viewHolder.view).removeAllViews(); @@ -118,7 +138,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private ViewHolder(View view) { diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/DividerDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/DividerDrawerItem.java index 8849637f4..8239b2aa7 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/DividerDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/DividerDrawerItem.java @@ -57,7 +57,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private View divider; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ExpandableDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ExpandableDrawerItem.java index 149d64f40..db3bdc4ca 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ExpandableDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ExpandableDrawerItem.java @@ -110,7 +110,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends BaseViewHolder { + public static class ViewHolder extends BaseViewHolder { public IconicsImageView arrow; public ViewHolder(View view) { diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/MiniDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/MiniDrawerItem.java index 54b1fcec7..9ac6f0616 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/MiniDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/MiniDrawerItem.java @@ -176,7 +176,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private ImageView icon; private TextView badge; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/MiniProfileDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/MiniProfileDrawerItem.java index 95a18e723..9b07ed3ed 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/MiniProfileDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/MiniProfileDrawerItem.java @@ -158,7 +158,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private ImageView icon; public ViewHolder(View view) { diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/PrimaryDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/PrimaryDrawerItem.java index 6e0c0a620..57411c5ca 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/PrimaryDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/PrimaryDrawerItem.java @@ -98,7 +98,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends BaseViewHolder { + public static class ViewHolder extends BaseViewHolder { private View badgeContainer; private TextView badge; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileDrawerItem.java index aeac7f04b..eb7d5f9a0 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileDrawerItem.java @@ -259,7 +259,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private ImageView profileIcon; private TextView name; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileSettingDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileSettingDrawerItem.java index 952939011..5c56c9d1f 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileSettingDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileSettingDrawerItem.java @@ -245,7 +245,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private ImageView icon; private TextView name; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryDrawerItem.java index ba5ed8d56..b0bd3ce67 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryDrawerItem.java @@ -2,54 +2,14 @@ import android.content.Context; import android.support.annotation.LayoutRes; -import android.support.annotation.StringRes; -import android.view.View; -import android.widget.TextView; -import com.mikepenz.fastadapter.utils.ViewHolderFactory; import com.mikepenz.materialdrawer.R; -import com.mikepenz.materialdrawer.holder.BadgeStyle; -import com.mikepenz.materialdrawer.holder.StringHolder; -import com.mikepenz.materialdrawer.model.interfaces.ColorfulBadgeable; +import com.mikepenz.materialdrawer.holder.ColorHolder; /** * Created by mikepenz on 03.02.15. */ -public class SecondaryDrawerItem extends BaseSecondaryDrawerItem implements ColorfulBadgeable { - protected StringHolder mBadge; - protected BadgeStyle mBadgeStyle = new BadgeStyle(); - - @Override - public SecondaryDrawerItem withBadge(StringHolder badge) { - this.mBadge = badge; - return this; - } - - @Override - public SecondaryDrawerItem withBadge(String badge) { - this.mBadge = new StringHolder(badge); - return this; - } - - @Override - public SecondaryDrawerItem withBadge(@StringRes int badgeRes) { - this.mBadge = new StringHolder(badgeRes); - return this; - } - - @Override - public SecondaryDrawerItem withBadgeStyle(BadgeStyle badgeStyle) { - this.mBadgeStyle = badgeStyle; - return this; - } - - public StringHolder getBadge() { - return mBadge; - } - - public BadgeStyle getBadgeStyle() { - return mBadgeStyle; - } +public class SecondaryDrawerItem extends PrimaryDrawerItem { @Override public int getType() { @@ -62,51 +22,21 @@ public int getLayoutRes() { return R.layout.material_drawer_item_secondary; } + /** + * helper method to decide for the correct color + * OVERWRITE to get the correct secondary color + * + * @param ctx + * @return + */ @Override - public void bindView(ViewHolder viewHolder) { - Context ctx = viewHolder.itemView.getContext(); - - //bind the basic view parts - bindViewHelper(viewHolder); - - //set the text for the badge or hide - boolean badgeVisible = StringHolder.applyToOrHide(mBadge, viewHolder.badge); - //style the badge if it is visible - if (badgeVisible) { - mBadgeStyle.style(viewHolder.badge, getTextColorStateList(getColor(ctx), getSelectedTextColor(ctx))); - viewHolder.badgeContainer.setVisibility(View.VISIBLE); + protected int getColor(Context ctx) { + int color; + if (this.isEnabled()) { + color = ColorHolder.color(getTextColor(), ctx, R.attr.material_drawer_secondary_text, R.color.material_drawer_secondary_text); } else { - viewHolder.badgeContainer.setVisibility(View.GONE); - } - - //define the typeface for our textViews - if (getTypeface() != null) { - viewHolder.badge.setTypeface(getTypeface()); - } - - //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) - onPostBindView(this, viewHolder.itemView); - } - - @Override - public ViewHolderFactory getFactory() { - return new ItemFactory(); - } - - public static class ItemFactory implements ViewHolderFactory { - public ViewHolder create(View v) { - return new ViewHolder(v); - } - } - - protected static class ViewHolder extends BaseViewHolder { - private View badgeContainer; - private TextView badge; - - private ViewHolder(View view) { - super(view); - this.badgeContainer = view.findViewById(R.id.material_drawer_badge_container); - this.badge = (TextView) view.findViewById(R.id.material_drawer_badge); + color = ColorHolder.color(getDisabledTextColor(), ctx, R.attr.material_drawer_hint_text, R.color.material_drawer_hint_text); } + return color; } } diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondarySwitchDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondarySwitchDrawerItem.java index c347fe201..790a81843 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondarySwitchDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondarySwitchDrawerItem.java @@ -1,56 +1,15 @@ package com.mikepenz.materialdrawer.model; +import android.content.Context; import android.support.annotation.LayoutRes; -import android.support.v7.widget.SwitchCompat; -import android.view.View; -import android.widget.CompoundButton; -import com.mikepenz.fastadapter.utils.ViewHolderFactory; -import com.mikepenz.materialdrawer.Drawer; import com.mikepenz.materialdrawer.R; -import com.mikepenz.materialdrawer.interfaces.OnCheckedChangeListener; -import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; +import com.mikepenz.materialdrawer.holder.ColorHolder; /** * Created by mikepenz on 03.02.15. */ -public class SecondarySwitchDrawerItem extends BaseSecondaryDrawerItem { - - private boolean switchEnabled = true; - - private boolean checked = false; - private OnCheckedChangeListener onCheckedChangeListener = null; - - public SecondarySwitchDrawerItem withChecked(boolean checked) { - this.checked = checked; - return this; - } - - public SecondarySwitchDrawerItem withSwitchEnabled(boolean switchEnabled) { - this.switchEnabled = switchEnabled; - return this; - } - - public SecondarySwitchDrawerItem withOnCheckedChangeListener(OnCheckedChangeListener onCheckedChangeListener) { - this.onCheckedChangeListener = onCheckedChangeListener; - return this; - } - - public SecondarySwitchDrawerItem withCheckable(boolean checkable) { - return withSelectable(checkable); - } - - public boolean isChecked() { - return checked; - } - - public boolean isSwitchEnabled() { - return switchEnabled; - } - - public OnCheckedChangeListener getOnCheckedChangeListener() { - return onCheckedChangeListener; - } +public class SecondarySwitchDrawerItem extends SwitchDrawerItem { @Override public int getType() { @@ -63,67 +22,21 @@ public int getLayoutRes() { return R.layout.material_drawer_item_secondary_switch; } + /** + * helper method to decide for the correct color + * OVERWRITE to get the correct secondary color + * + * @param ctx + * @return + */ @Override - public void bindView(final ViewHolder viewHolder) { - //bind the basic view parts - bindViewHelper(viewHolder); - - //handle the switch - viewHolder.switchView.setOnCheckedChangeListener(null); - viewHolder.switchView.setChecked(checked); - viewHolder.switchView.setOnCheckedChangeListener(checkedChangeListener); - viewHolder.switchView.setEnabled(switchEnabled); - - //add a onDrawerItemClickListener here to be able to check / uncheck if the drawerItem can't be selected - withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { - @Override - public boolean onItemClick(View view, int position, IDrawerItem drawerItem) { - if (!isSelectable()) { - checked = !checked; - viewHolder.switchView.setChecked(checked); - } - - return false; - } - }); - - //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) - onPostBindView(this, viewHolder.itemView); - } - - @Override - public ViewHolderFactory getFactory() { - return new ItemFactory(); - } - - public static class ItemFactory implements ViewHolderFactory { - public ViewHolder create(View v) { - return new ViewHolder(v); + protected int getColor(Context ctx) { + int color; + if (this.isEnabled()) { + color = ColorHolder.color(getTextColor(), ctx, R.attr.material_drawer_secondary_text, R.color.material_drawer_secondary_text); + } else { + color = ColorHolder.color(getDisabledTextColor(), ctx, R.attr.material_drawer_hint_text, R.color.material_drawer_hint_text); } + return color; } - - protected static class ViewHolder extends BaseViewHolder { - private SwitchCompat switchView; - - private ViewHolder(View view) { - super(view); - this.switchView = (SwitchCompat) view.findViewById(R.id.material_drawer_switch); - } - } - - private CompoundButton.OnCheckedChangeListener checkedChangeListener = new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isEnabled()) { - checked = isChecked; - if (getOnCheckedChangeListener() != null) { - getOnCheckedChangeListener().onCheckedChanged(SecondarySwitchDrawerItem.this, buttonView, isChecked); - } - } else { - buttonView.setOnCheckedChangeListener(null); - buttonView.setChecked(!isChecked); - buttonView.setOnCheckedChangeListener(checkedChangeListener); - } - } - }; } diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryToggleDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryToggleDrawerItem.java index d432d0b73..1c532b83e 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryToggleDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryToggleDrawerItem.java @@ -1,63 +1,15 @@ package com.mikepenz.materialdrawer.model; +import android.content.Context; import android.support.annotation.LayoutRes; -import android.view.View; -import android.widget.CompoundButton; -import android.widget.ToggleButton; -import com.mikepenz.fastadapter.utils.ViewHolderFactory; -import com.mikepenz.materialdrawer.Drawer; import com.mikepenz.materialdrawer.R; -import com.mikepenz.materialdrawer.interfaces.OnCheckedChangeListener; -import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; +import com.mikepenz.materialdrawer.holder.ColorHolder; /** * Created by mikepenz on 03.02.15. */ -public class SecondaryToggleDrawerItem extends BaseSecondaryDrawerItem { - private boolean toggleEnabled = true; - - private boolean checked = false; - private OnCheckedChangeListener onCheckedChangeListener = null; - - public SecondaryToggleDrawerItem withChecked(boolean checked) { - this.checked = checked; - return this; - } - - public SecondaryToggleDrawerItem withToggleEnabled(boolean toggleEnabled) { - this.toggleEnabled = toggleEnabled; - return this; - } - - public SecondaryToggleDrawerItem withOnCheckedChangeListener(OnCheckedChangeListener onCheckedChangeListener) { - this.onCheckedChangeListener = onCheckedChangeListener; - return this; - } - - public boolean isChecked() { - return checked; - } - - public void setChecked(boolean checked) { - this.checked = checked; - } - - public boolean isToggleEnabled() { - return toggleEnabled; - } - - public void setToggleEnabled(boolean toggleEnabled) { - this.toggleEnabled = toggleEnabled; - } - - public OnCheckedChangeListener getOnCheckedChangeListener() { - return onCheckedChangeListener; - } - - public void setOnCheckedChangeListener(OnCheckedChangeListener onCheckedChangeListener) { - this.onCheckedChangeListener = onCheckedChangeListener; - } +public class SecondaryToggleDrawerItem extends ToggleDrawerItem { @Override public int getType() { @@ -70,67 +22,21 @@ public int getLayoutRes() { return R.layout.material_drawer_item_secondary_toggle; } + /** + * helper method to decide for the correct color + * OVERWRITE to get the correct secondary color + * + * @param ctx + * @return + */ @Override - public void bindView(final ViewHolder viewHolder) { - //bind the basic view parts - bindViewHelper(viewHolder); - - //handle the toggle - viewHolder.toggle.setOnCheckedChangeListener(null); - viewHolder.toggle.setChecked(checked); - viewHolder.toggle.setOnCheckedChangeListener(checkedChangeListener); - viewHolder.toggle.setEnabled(toggleEnabled); - - //add a onDrawerItemClickListener here to be able to check / uncheck if the drawerItem can't be selected - withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { - @Override - public boolean onItemClick(View view, int position, IDrawerItem drawerItem) { - if (!isSelectable()) { - checked = !checked; - viewHolder.toggle.setChecked(checked); - } - - return false; - } - }); - - //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) - onPostBindView(this, viewHolder.itemView); - } - - @Override - public ViewHolderFactory getFactory() { - return new ItemFactory(); - } - - public static class ItemFactory implements ViewHolderFactory { - public ViewHolder create(View v) { - return new ViewHolder(v); - } - } - - protected static class ViewHolder extends BaseViewHolder { - private ToggleButton toggle; - - private ViewHolder(View view) { - super(view); - this.toggle = (ToggleButton) view.findViewById(R.id.material_drawer_toggle); + protected int getColor(Context ctx) { + int color; + if (this.isEnabled()) { + color = ColorHolder.color(getTextColor(), ctx, R.attr.material_drawer_secondary_text, R.color.material_drawer_secondary_text); + } else { + color = ColorHolder.color(getDisabledTextColor(), ctx, R.attr.material_drawer_hint_text, R.color.material_drawer_hint_text); } + return color; } - - private CompoundButton.OnCheckedChangeListener checkedChangeListener = new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isEnabled()) { - checked = isChecked; - if (getOnCheckedChangeListener() != null) { - getOnCheckedChangeListener().onCheckedChanged(SecondaryToggleDrawerItem.this, buttonView, isChecked); - } - } else { - buttonView.setOnCheckedChangeListener(null); - buttonView.setChecked(!isChecked); - buttonView.setOnCheckedChangeListener(checkedChangeListener); - } - } - }; } diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/SectionDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/SectionDrawerItem.java index f17735f52..c0c9b4dfc 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/SectionDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/SectionDrawerItem.java @@ -148,7 +148,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private View divider; private TextView name; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/SwitchDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/SwitchDrawerItem.java index 149d3a3f8..16d46508b 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/SwitchDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/SwitchDrawerItem.java @@ -102,7 +102,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends BaseViewHolder { + public static class ViewHolder extends BaseViewHolder { private SwitchCompat switchView; private ViewHolder(View view) { diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ToggleDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ToggleDrawerItem.java index 65edbbb30..f03ff1b05 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ToggleDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ToggleDrawerItem.java @@ -109,7 +109,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends BaseViewHolder { + public static class ViewHolder extends BaseViewHolder { private ToggleButton toggle; private ViewHolder(View view) { diff --git a/library/src/main/res/values/library_materialdrawer_strings.xml b/library/src/main/res/values/library_materialdrawer_strings.xml index 0e328054a..b4a741822 100755 --- a/library/src/main/res/values/library_materialdrawer_strings.xml +++ b/library/src/main/res/values/library_materialdrawer_strings.xml @@ -10,7 +10,7 @@ MaterialDrawer the flexible, easy to use, all in one drawer library for your Android project. ]]> - 5.2.0 + 5.2.1 https://github.com/mikepenz/MaterialDrawer apache_2_0 true