diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-01-29 21:14:57 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-01-29 21:14:57 +0900 |
commit | 2cf839b649d99cc1c31b330fcabdb2c356fb84fd (patch) | |
tree | 72f6ba545c45e6a45670c5de2f5e31cd6b8d5474 | |
parent | aa3cad7f082b1d3c80d2c4b0a3e4c06fd40ce49a (diff) | |
download | SmileEssence-2cf839b649d99cc1c31b330fcabdb2c356fb84fd.tar.gz |
Kill Themes
13 files changed, 141 insertions, 122 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/Application.java b/app/src/main/java/net/lacolaco/smileessence/Application.java index 674bc499..e5563706 100644 --- a/app/src/main/java/net/lacolaco/smileessence/Application.java +++ b/app/src/main/java/net/lacolaco/smileessence/Application.java @@ -33,7 +33,6 @@ import net.lacolaco.smileessence.data.Account; import net.lacolaco.smileessence.data.OrmaHolder; import net.lacolaco.smileessence.logging.Logger; import net.lacolaco.smileessence.preference.UserPreferenceHelper; -import net.lacolaco.smileessence.util.Themes; import net.lacolaco.smileessence.util.UIHandler; import java.util.Collections; @@ -84,7 +83,7 @@ public class Application extends android.app.Application { public int getThemeResId() { if (resId == -1) { Logger.debug("setting theme index: " + UserPreferenceHelper.getInstance().getThemeIndex()); - resId = Themes.getThemeResId(UserPreferenceHelper.getInstance().getThemeIndex()); + resId = UserPreferenceHelper.getInstance().getThemeIndex() == 0 ? R.style.theme_dark : R.style.theme_light; } return resId; } diff --git a/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.java b/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.java index de580b88..584a3474 100644 --- a/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.java +++ b/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.java @@ -28,7 +28,6 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; import net.lacolaco.smileessence.Application; import net.lacolaco.smileessence.R; -import net.lacolaco.smileessence.util.Themes; public class UserPreferenceHelper extends SharedPreferenceHelper { // --------------------------- CONSTRUCTORS --------------------------- @@ -50,7 +49,7 @@ public class UserPreferenceHelper extends SharedPreferenceHelper { // --------------------- HELPER METHODS --------------------- public int getThemeIndex() { - return get(R.string.key_setting_theme, Themes.THEME_DARK); + return get(R.string.key_setting_theme, 0); } public int getTextSize() { diff --git a/app/src/main/java/net/lacolaco/smileessence/util/Themes.java b/app/src/main/java/net/lacolaco/smileessence/util/Themes.java deleted file mode 100644 index 13f49835..00000000 --- a/app/src/main/java/net/lacolaco/smileessence/util/Themes.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2012-2014 lacolaco.net - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package net.lacolaco.smileessence.util; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; -import net.lacolaco.smileessence.Application; -import net.lacolaco.smileessence.R; - -public class Themes { - - // ------------------------------ FIELDS ------------------------------ - - public static final int THEME_DARK = 0; - public static final int THEME_LIGHT = 1; - - // -------------------------- STATIC METHODS -------------------------- - - public static int getThemeResId(int index) { - switch (index) { - case THEME_DARK: { - return R.style.theme_dark; - } - case THEME_LIGHT: { - return R.style.theme_light; - } - default: { - return R.style.theme_dark; - } - } - } - - public static Drawable getStyledDrawable(Context context, int attribute) { - TypedArray array = context.obtainStyledAttributes(Application.getInstance().getThemeResId(), new int[]{attribute}); - Drawable drawable = array.getDrawable(0); - array.recycle(); - return drawable; - } -} diff --git a/app/src/main/java/net/lacolaco/smileessence/view/ThreeStateButton.java b/app/src/main/java/net/lacolaco/smileessence/view/ThreeStateButton.java new file mode 100644 index 00000000..7554e2fb --- /dev/null +++ b/app/src/main/java/net/lacolaco/smileessence/view/ThreeStateButton.java @@ -0,0 +1,56 @@ +package net.lacolaco.smileessence.view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.widget.Button; +import net.lacolaco.smileessence.R; + +public class ThreeStateButton extends Button { + public static final int STATE_OFF = 0; + public static final int STATE_ON = 1; + public static final int STATE_LOCKED = 2; + + private int state = STATE_OFF; + private String texts[] = new String[3]; + private Drawable backgrounds[] = new Drawable[3]; + + public ThreeStateButton(Context context) { + this(context, null); + } + + public ThreeStateButton(Context context, AttributeSet attrs) { + this(context, attrs, android.R.attr.buttonStyle); + } + + public ThreeStateButton(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs, defStyleAttr, 0); + } + + public ThreeStateButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ThreeStateButton); + texts[STATE_OFF] = ta.getString(R.styleable.ThreeStateButton_off_text); + texts[STATE_ON] = ta.getString(R.styleable.ThreeStateButton_on_text); + texts[STATE_LOCKED] = ta.getString(R.styleable.ThreeStateButton_locked_text); + backgrounds[STATE_OFF] = ta.getDrawable(R.styleable.ThreeStateButton_off_background); + backgrounds[STATE_ON] = ta.getDrawable(R.styleable.ThreeStateButton_on_background); + backgrounds[STATE_LOCKED] = ta.getDrawable(R.styleable.ThreeStateButton_locked_background); + ta.recycle(); + + setState(STATE_OFF); + } + + public void setState(int s) { + state = s; + setText(texts[state]); + setBackground(backgrounds[state]); + setEnabled(state != STATE_LOCKED); + } + + public int getState() { + return state; + } +} diff --git a/app/src/main/java/net/lacolaco/smileessence/view/ToggleableImageButton.java b/app/src/main/java/net/lacolaco/smileessence/view/ToggleableImageButton.java new file mode 100644 index 00000000..b7b2d174 --- /dev/null +++ b/app/src/main/java/net/lacolaco/smileessence/view/ToggleableImageButton.java @@ -0,0 +1,37 @@ +package net.lacolaco.smileessence.view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.widget.ImageButton; +import net.lacolaco.smileessence.R; + +public class ToggleableImageButton extends ImageButton { + private Drawable onSrc, offSrc; + + public ToggleableImageButton(Context context) { + this(context, null); + } + + public ToggleableImageButton(Context context, AttributeSet attrs) { + this(context, attrs, android.R.attr.imageButtonStyle); + } + + public ToggleableImageButton(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs, defStyleAttr, 0); + } + + public ToggleableImageButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ToggleableImageButton); + offSrc = ta.getDrawable(R.styleable.ToggleableImageButton_offSrc); + onSrc = ta.getDrawable(R.styleable.ToggleableImageButton_onSrc); + ta.recycle(); + } + + public void setState(boolean isOn) { + setImageDrawable(isOn ? onSrc : offSrc); + } +} diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java index 8f5c7225..7d2e5dbd 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java @@ -29,7 +29,6 @@ import android.app.AlertDialog; import android.app.Dialog; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; -import android.support.v4.content.ContextCompat; import android.view.View; import android.widget.ImageButton; import android.widget.ImageView; @@ -49,9 +48,9 @@ import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.notification.Notificator; import net.lacolaco.smileessence.twitter.task.TweetReactions; import net.lacolaco.smileessence.twitter.task.Tweets; -import net.lacolaco.smileessence.util.Themes; import net.lacolaco.smileessence.util.UIObserverBundle; import net.lacolaco.smileessence.view.DialogHelper; +import net.lacolaco.smileessence.view.ToggleableImageButton; import net.lacolaco.smileessence.view.adapter.StatusListAdapter; import net.lacolaco.smileessence.view.adapter.UnorderedCustomListAdapter; import net.lacolaco.smileessence.viewmodel.StatusViewModel; @@ -217,27 +216,13 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen ImageButton reply = (ImageButton) view.findViewById(R.id.button_status_detail_reply); reply.setOnClickListener(this); - ImageButton retweet = (ImageButton) view.findViewById(R.id.button_status_detail_retweet); + ToggleableImageButton retweet = (ToggleableImageButton) view.findViewById(R.id.button_status_detail_retweet); retweet.setOnClickListener(this); - if (tweet.getOriginalTweet().getUser().isProtected() || - tweet.getOriginalTweet().getUser().getId() == account.getUserId()) { - retweet.setVisibility(View.GONE); - } else { - retweet.setVisibility(View.VISIBLE); - if (tweet.isRetweetedBy(account.getUserId())) { - retweet.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.icon_retweet_on)); - } else { - retweet.setImageDrawable(Themes.getStyledDrawable(getActivity(), R.attr.icon_retweet_off)); - } - } + retweet.setState(tweet.isRetweetedBy(account.getUserId())); - ImageButton favorite = (ImageButton) view.findViewById(R.id.button_status_detail_favorite); + ToggleableImageButton favorite = (ToggleableImageButton) view.findViewById(R.id.button_status_detail_favorite); favorite.setOnClickListener(this); - if (tweet.isFavoritedBy(account.getUserId())) { - favorite.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.icon_favorite_on)); - } else { - favorite.setImageDrawable(Themes.getStyledDrawable(getActivity(), R.attr.icon_favorite_off)); - } + favorite.setState(tweet.isFavoritedBy(account.getUserId())); ImageButton delete = (ImageButton) view.findViewById(R.id.button_status_detail_delete); delete.setOnClickListener(this); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java index e1867519..f7f69947 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java @@ -26,9 +26,7 @@ package net.lacolaco.smileessence.view.dialog; import android.app.AlertDialog; import android.app.Dialog; -import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.support.v4.content.ContextCompat; import android.text.Html; import android.text.TextUtils; import android.text.method.LinkMovementMethod; @@ -50,10 +48,10 @@ import net.lacolaco.smileessence.notification.Notificator; import net.lacolaco.smileessence.twitter.task.Timelines; import net.lacolaco.smileessence.twitter.task.Users; import net.lacolaco.smileessence.util.IntentUtils; -import net.lacolaco.smileessence.util.Themes; import net.lacolaco.smileessence.util.UIHandler; import net.lacolaco.smileessence.util.UIObserverBundle; import net.lacolaco.smileessence.view.DialogHelper; +import net.lacolaco.smileessence.view.ThreeStateButton; import net.lacolaco.smileessence.view.adapter.OrderedCustomListAdapter; import net.lacolaco.smileessence.view.adapter.StatusListAdapter; import net.lacolaco.smileessence.viewmodel.StatusViewModel; @@ -78,7 +76,7 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements private TextView textViewFavoriteCount; private NetworkImageView imageViewIcon; private NetworkImageView imageViewHeader; - private Button buttonFollow; + private ThreeStateButton buttonFollow; private PullToRefreshListView listViewTimeline; private TabHost tabHost; private UIObserverBundle observerBundle; @@ -218,7 +216,7 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements imageViewIcon = (NetworkImageView) v.findViewById(R.id.imageview_user_detail_icon); imageViewIcon.setOnClickListener(this); imageViewHeader = (NetworkImageView) v.findViewById(R.id.imageview_user_detail_header); - buttonFollow = (Button) v.findViewById(R.id.button_user_detail_follow); + buttonFollow = (ThreeStateButton) v.findViewById(R.id.button_user_detail_follow); buttonFollow.setOnClickListener(this); listViewTimeline = (PullToRefreshListView) v.findViewById(R.id.listview_user_detail_timeline); listViewTimeline.setOnRefreshListener(this); @@ -317,12 +315,6 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements }); } - private void lockFollowButton() { - buttonFollow.setText(R.string.user_detail_loading); - buttonFollow.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.button_round_gray)); - buttonFollow.setEnabled(false); - } - private void openUserMenu() { UserMenuDialogFragment menuFragment = new UserMenuDialogFragment() { @Override @@ -342,25 +334,19 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements private void setFollowButtonState(boolean isFollowing) { MainActivity mainActivity = (MainActivity) getActivity(); if (mainActivity != null) { - final Drawable unfollowColor = Themes.getStyledDrawable(mainActivity, R.attr.button_round_red); - final Drawable followColor = Themes.getStyledDrawable(mainActivity, R.attr.button_round_blue); - buttonFollow.setText(isFollowing ? R.string.user_detail_unfollow : R.string.user_detail_follow); - buttonFollow.setBackground(isFollowing ? unfollowColor : followColor); - buttonFollow.setTag(isFollowing); - buttonFollow.setEnabled(true); + buttonFollow.setState(isFollowing ? ThreeStateButton.STATE_ON : ThreeStateButton.STATE_OFF); } } private void toggleFollowing() { Account account = Application.getInstance().getCurrentAccount(); - lockFollowButton(); - Boolean isFollowing = buttonFollow.getTag() != null ? (Boolean) buttonFollow.getTag() : false; + Boolean isFollowing = buttonFollow.getState() == ThreeStateButton.STATE_ON; + buttonFollow.setState(ThreeStateButton.STATE_LOCKED); if (isFollowing) { new Users.UnfollowTask(account, user.getId()) .onDoneUI(result -> { Notificator.getInstance().publish(R.string.notice_unfollow_succeeded); updateRelationship(); - buttonFollow.setEnabled(true); }) .onFail(x -> Notificator.getInstance().alert(R.string.notice_unfollow_failed)) @@ -370,7 +356,6 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements .onDoneUI(result -> { Notificator.getInstance().publish(R.string.notice_follow_succeeded); updateRelationship(); - buttonFollow.setEnabled(true); }) .onFail(x -> Notificator.getInstance().alert(R.string.notice_follow_failed)) .execute(); @@ -399,7 +384,7 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements textViewFollowed.setText(R.string.user_detail_followed_is_me); buttonFollow.setVisibility(View.GONE); } else { - lockFollowButton(); + buttonFollow.setState(ThreeStateButton.STATE_LOCKED); textViewFollowed.setText(R.string.user_detail_loading); new Users.ShowFriendshipTask(account, user.getId()).onDoneUI(relationship -> { boolean isFollowing = relationship.isSourceFollowingTarget(); diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java index d9c84595..ae53d0fb 100644 --- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java +++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java @@ -38,7 +38,6 @@ import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.entity.User; import net.lacolaco.smileessence.preference.UserPreferenceHelper; import net.lacolaco.smileessence.util.StringUtils; -import net.lacolaco.smileessence.util.Themes; import net.lacolaco.smileessence.util.UIObserverBundle; import net.lacolaco.smileessence.view.DialogHelper; import net.lacolaco.smileessence.view.dialog.UserDetailDialogFragment; diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java index 0b0705cc..ae8f667b 100644 --- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java +++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java @@ -40,7 +40,6 @@ import net.lacolaco.smileessence.entity.IdObject; import net.lacolaco.smileessence.entity.RBinding; import net.lacolaco.smileessence.preference.UserPreferenceHelper; import net.lacolaco.smileessence.util.StringUtils; -import net.lacolaco.smileessence.util.Themes; import net.lacolaco.smileessence.util.UIObserverBundle; import net.lacolaco.smileessence.view.ColoredRelativeLayout; import net.lacolaco.smileessence.view.DialogHelper; diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java index 5a8aa6f1..cd0f8c07 100644 --- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java +++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java @@ -41,7 +41,6 @@ import net.lacolaco.smileessence.entity.RBinding; import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.preference.UserPreferenceHelper; import net.lacolaco.smileessence.util.StringUtils; -import net.lacolaco.smileessence.util.Themes; import net.lacolaco.smileessence.util.UIObserverBundle; import net.lacolaco.smileessence.view.ColoredRelativeLayout; import net.lacolaco.smileessence.view.DialogHelper; diff --git a/app/src/main/res/layout/dialog_status_detail.xml b/app/src/main/res/layout/dialog_status_detail.xml index 42270c36..95da1045 100644 --- a/app/src/main/res/layout/dialog_status_detail.xml +++ b/app/src/main/res/layout/dialog_status_detail.xml @@ -24,12 +24,13 @@ ~ SOFTWARE. --> -<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" +<ScrollView + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout - android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> @@ -116,7 +117,7 @@ android:scaleType="fitCenter" android:src="?attr/icon_message" /> - <ImageButton + <net.lacolaco.smileessence.view.ToggleableImageButton android:id="@+id/button_status_detail_retweet" style="?attr/custom_button_transparent" android:layout_width="45dp" @@ -125,9 +126,10 @@ android:contentDescription="" android:padding="0dp" android:scaleType="fitCenter" - android:src="?attr/icon_retweet_off" /> + app:offSrc="?attr/icon_retweet_off" + app:onSrc="@drawable/icon_retweet_on" /> - <ImageButton + <net.lacolaco.smileessence.view.ToggleableImageButton android:id="@+id/button_status_detail_favorite" style="?attr/custom_button_transparent" android:layout_width="45dp" @@ -136,7 +138,8 @@ android:contentDescription="" android:padding="0dp" android:scaleType="fitCenter" - android:src="?attr/icon_favorite_off" /> + app:offSrc="?attr/icon_favorite_off" + app:onSrc="@drawable/icon_favorite_on" /> <ImageButton android:id="@+id/button_status_detail_delete" diff --git a/app/src/main/res/layout/dialog_user_detail.xml b/app/src/main/res/layout/dialog_user_detail.xml index 7454d3df..0fb8c7b0 100644 --- a/app/src/main/res/layout/dialog_user_detail.xml +++ b/app/src/main/res/layout/dialog_user_detail.xml @@ -24,7 +24,9 @@ ~ SOFTWARE. --> -<TabHost xmlns:android="http://schemas.android.com/apk/res/android" +<TabHost + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -276,7 +278,7 @@ android:text="@string/user_detail_protected" /> </LinearLayout> - <Button + <net.lacolaco.smileessence.view.ThreeStateButton android:id="@+id/button_user_detail_follow" style="?attr/custom_button_transparent" android:layout_width="wrap_content" @@ -284,12 +286,16 @@ android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginTop="15dp" - android:background="?attr/button_round_blue" android:paddingLeft="15dp" android:paddingRight="15dp" - android:text="@string/user_detail_follow" android:textColor="@color/white" - android:textSize="15sp" /> + android:textSize="15sp" + app:off_text="@string/user_detail_follow" + app:off_background="?attr/button_round_blue" + app:on_text="@string/user_detail_unfollow" + app:on_background="?attr/button_round_red" + app:locked_text="@string/user_detail_loading" + app:locked_background="@drawable/button_round_gray" /> </RelativeLayout> diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index bec13795..dd690cda 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -61,4 +61,18 @@ <attr name="highlight_type2" format="reference" /> <attr name="highlight_type3" format="reference" /> </declare-styleable> + + <declare-styleable name="ThreeStateButton"> + <attr name="off_text" format="reference" /> + <attr name="off_background" format="reference" /> + <attr name="on_text" format="reference" /> + <attr name="on_background" format="reference" /> + <attr name="locked_text" format="reference" /> + <attr name="locked_background" format="reference" /> + </declare-styleable> + + <declare-styleable name="ToggleableImageButton"> + <attr name="offSrc" format="reference" /> + <attr name="onSrc" format="reference" /> + </declare-styleable> </resources>
\ No newline at end of file |