diff --git a/art/md_switch_thumb_disable.svg b/art/md_switch_thumb_disable.svg new file mode 100644 index 0000000000000000000000000000000000000000..efd83c2d00ba30b32a4c4927d64e05162734e793 --- /dev/null +++ b/art/md_switch_thumb_disable.svg @@ -0,0 +1,156 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/art/md_switch_thumb_off_normal.svg b/art/md_switch_thumb_off_normal.svg new file mode 100644 index 0000000000000000000000000000000000000000..25d1761db7e28bcfb8d87e0d261d750e7ec9f91a --- /dev/null +++ b/art/md_switch_thumb_off_normal.svg @@ -0,0 +1,153 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/art/md_switch_thumb_off_pressed.svg b/art/md_switch_thumb_off_pressed.svg new file mode 100644 index 0000000000000000000000000000000000000000..002b478156548d6185dc3f097548248ad4ed592e --- /dev/null +++ b/art/md_switch_thumb_off_pressed.svg @@ -0,0 +1,159 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/art/md_switch_thumb_on_normal.svg b/art/md_switch_thumb_on_normal.svg new file mode 100644 index 0000000000000000000000000000000000000000..5e8f90f39a2101c26d8fa945bf34df8c2876a019 --- /dev/null +++ b/art/md_switch_thumb_on_normal.svg @@ -0,0 +1,146 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/art/md_switch_thumb_on_pressed.svg b/art/md_switch_thumb_on_pressed.svg new file mode 100644 index 0000000000000000000000000000000000000000..e0331e7b77d6003d1a7c0215a10052822e895506 --- /dev/null +++ b/art/md_switch_thumb_on_pressed.svg @@ -0,0 +1,162 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/art/render.rb b/art/render.rb index 698abea5b05f19cdae288881f4e83c1cc09e10c7..312dd06b1a292084e9a0992f634c92a1b715d8e3 100755 --- a/art/render.rb +++ b/art/render.rb @@ -33,7 +33,12 @@ images = { 'ic_send_picture_online.svg' => ['ic_send_picture_online', 36], 'ic_send_picture_offline.svg' => ['ic_send_picture_offline', 36], 'ic_send_picture_away.svg' => ['ic_send_picture_away', 36], - 'ic_send_picture_dnd.svg' => ['ic_send_picture_dnd', 36] + 'ic_send_picture_dnd.svg' => ['ic_send_picture_dnd', 36], + 'md_switch_thumb_disable.svg' => ['switch_thumb_disable', 48], + 'md_switch_thumb_off_normal.svg' => ['switch_thumb_off_normal', 48], + 'md_switch_thumb_off_pressed.svg' => ['switch_thumb_off_pressed', 48], + 'md_switch_thumb_on_normal.svg' => ['switch_thumb_on_normal', 48], + 'md_switch_thumb_on_pressed.svg' => ['switch_thumb_on_pressed', 48], } images.each do |source, result| resolutions.each do |name, factor| diff --git a/build.gradle b/build.gradle index 4e23c5224d8678680396d0a25f1d1d6b37002612..09ad7161f1da679c18e06b3d08d1efb67da8178b 100644 --- a/build.gradle +++ b/build.gradle @@ -36,6 +36,7 @@ dependencies { compile 'de.measite.minidns:minidns:0.1.3' compile 'de.timroes.android:EnhancedListView:0.3.4' compile 'me.leolin:ShortcutBadger:1.1.1@aar' + compile 'com.kyleduo.switchbutton:library:1.2.8' } android { diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java index 782a1231b6ff8dc2f62d9f40495fbd31515598f3..226b1920e27560c890e169871cb507580e7976d9 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java @@ -6,6 +6,8 @@ import eu.siacs.conversations.R; import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.ui.XmppActivity; import eu.siacs.conversations.ui.ManageAccountActivity; +import eu.siacs.conversations.ui.widget.Switch; + import android.content.Context; import android.view.LayoutInflater; import android.view.View; @@ -14,7 +16,6 @@ import android.widget.ArrayAdapter; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.TextView; -import android.widget.Switch; public class AccountAdapter extends ArrayAdapter { @@ -53,8 +54,7 @@ public class AccountAdapter extends ArrayAdapter { } final Switch tglAccountState = (Switch) view.findViewById(R.id.tgl_account_status); final boolean isDisabled = (account.getStatus() == Account.State.DISABLED); - tglAccountState.setOnCheckedChangeListener(null); - tglAccountState.setChecked(!isDisabled); + tglAccountState.setChecked(!isDisabled,false); tglAccountState.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { diff --git a/src/main/java/eu/siacs/conversations/ui/widget/Switch.java b/src/main/java/eu/siacs/conversations/ui/widget/Switch.java new file mode 100644 index 0000000000000000000000000000000000000000..c72e760efe43ad803023ccad424beeb62fe6c05b --- /dev/null +++ b/src/main/java/eu/siacs/conversations/ui/widget/Switch.java @@ -0,0 +1,70 @@ +package eu.siacs.conversations.ui.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.ViewConfiguration; + +import com.kyleduo.switchbutton.SwitchButton; + +import eu.siacs.conversations.Config; + +public class Switch extends SwitchButton { + + private int mTouchSlop; + private int mClickTimeout; + private float mStartX; + private float mStartY; + private OnClickListener mOnClickListener; + + public Switch(Context context) { + super(context); + mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop(); + mClickTimeout = ViewConfiguration.getPressedStateDuration() + ViewConfiguration.getTapTimeout(); + } + + public Switch(Context context, AttributeSet attrs) { + super(context, attrs); + mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop(); + mClickTimeout = ViewConfiguration.getPressedStateDuration() + ViewConfiguration.getTapTimeout(); + } + + public Switch(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop(); + mClickTimeout = ViewConfiguration.getPressedStateDuration() + ViewConfiguration.getTapTimeout(); + } + + @Override + public void setOnClickListener(OnClickListener onClickListener) { + this.mOnClickListener = onClickListener; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (!isEnabled()) { + float deltaX = event.getX() - mStartX; + float deltaY = event.getY() - mStartY; + int action = event.getAction(); + switch (action) { + case MotionEvent.ACTION_DOWN: + mStartX = event.getX(); + mStartY = event.getY(); + break; + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: + float time = event.getEventTime() - event.getDownTime(); + if (deltaX < mTouchSlop && deltaY < mTouchSlop && time < mClickTimeout) { + if (mOnClickListener != null) { + this.mOnClickListener.onClick(this); + } + } + break; + default: + break; + } + return true; + } + return super.onTouchEvent(event); + } +} diff --git a/src/main/res/drawable-hdpi/switch_thumb_disable.png b/src/main/res/drawable-hdpi/switch_thumb_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..1e9b151b665024f4fc06544e6a40d93e1f5b6f1a Binary files /dev/null and b/src/main/res/drawable-hdpi/switch_thumb_disable.png differ diff --git a/src/main/res/drawable-hdpi/switch_thumb_off_normal.png b/src/main/res/drawable-hdpi/switch_thumb_off_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c1fc11ac5b50084e552596a8c7a6e4c3f64113 Binary files /dev/null and b/src/main/res/drawable-hdpi/switch_thumb_off_normal.png differ diff --git a/src/main/res/drawable-hdpi/switch_thumb_off_pressed.png b/src/main/res/drawable-hdpi/switch_thumb_off_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6e490962adf2e24f5e2d9c9b04a093c2747261 Binary files /dev/null and b/src/main/res/drawable-hdpi/switch_thumb_off_pressed.png differ diff --git a/src/main/res/drawable-hdpi/switch_thumb_on_normal.png b/src/main/res/drawable-hdpi/switch_thumb_on_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..cbcda5d478f3e326a637242886dee86e76b4649d Binary files /dev/null and b/src/main/res/drawable-hdpi/switch_thumb_on_normal.png differ diff --git a/src/main/res/drawable-hdpi/switch_thumb_on_pressed.png b/src/main/res/drawable-hdpi/switch_thumb_on_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..234b12dc4b93946d4522dca7fb09e8eb600fb7e6 Binary files /dev/null and b/src/main/res/drawable-hdpi/switch_thumb_on_pressed.png differ diff --git a/src/main/res/drawable-mdpi/switch_thumb_disable.png b/src/main/res/drawable-mdpi/switch_thumb_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..968de345d7720405f0c465edac55a45e11167aac Binary files /dev/null and b/src/main/res/drawable-mdpi/switch_thumb_disable.png differ diff --git a/src/main/res/drawable-mdpi/switch_thumb_off_normal.png b/src/main/res/drawable-mdpi/switch_thumb_off_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..51fb4d7a28e49d5cc120a57d05adf757a77a362a Binary files /dev/null and b/src/main/res/drawable-mdpi/switch_thumb_off_normal.png differ diff --git a/src/main/res/drawable-mdpi/switch_thumb_off_pressed.png b/src/main/res/drawable-mdpi/switch_thumb_off_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..ca788445301ed3f69d4fc8a5176f842845a171e7 Binary files /dev/null and b/src/main/res/drawable-mdpi/switch_thumb_off_pressed.png differ diff --git a/src/main/res/drawable-mdpi/switch_thumb_on_normal.png b/src/main/res/drawable-mdpi/switch_thumb_on_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..6a93d5f759083e47f0c7fba11c2f87d82174d8e3 Binary files /dev/null and b/src/main/res/drawable-mdpi/switch_thumb_on_normal.png differ diff --git a/src/main/res/drawable-mdpi/switch_thumb_on_pressed.png b/src/main/res/drawable-mdpi/switch_thumb_on_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d7bd0f0db67e3074f1b519a3ec5482a70f51a3 Binary files /dev/null and b/src/main/res/drawable-mdpi/switch_thumb_on_pressed.png differ diff --git a/src/main/res/drawable-xhdpi/switch_thumb_disable.png b/src/main/res/drawable-xhdpi/switch_thumb_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..7f6773248428bb2bf3d2660202eef8e1318f07d5 Binary files /dev/null and b/src/main/res/drawable-xhdpi/switch_thumb_disable.png differ diff --git a/src/main/res/drawable-xhdpi/switch_thumb_off_normal.png b/src/main/res/drawable-xhdpi/switch_thumb_off_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..4199d322b86c67cd1e6a8c1e2adce45d0102c4d7 Binary files /dev/null and b/src/main/res/drawable-xhdpi/switch_thumb_off_normal.png differ diff --git a/src/main/res/drawable-xhdpi/switch_thumb_off_pressed.png b/src/main/res/drawable-xhdpi/switch_thumb_off_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..2b86888f300e1150aa12366ef29dd5a757dc4216 Binary files /dev/null and b/src/main/res/drawable-xhdpi/switch_thumb_off_pressed.png differ diff --git a/src/main/res/drawable-xhdpi/switch_thumb_on_normal.png b/src/main/res/drawable-xhdpi/switch_thumb_on_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..daa3099009e501f08ce4c35d8be610b14d39348e Binary files /dev/null and b/src/main/res/drawable-xhdpi/switch_thumb_on_normal.png differ diff --git a/src/main/res/drawable-xhdpi/switch_thumb_on_pressed.png b/src/main/res/drawable-xhdpi/switch_thumb_on_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..6aab47c991d275c8e3c116db4ee47b5a7dd11963 Binary files /dev/null and b/src/main/res/drawable-xhdpi/switch_thumb_on_pressed.png differ diff --git a/src/main/res/drawable-xxhdpi/switch_thumb_disable.png b/src/main/res/drawable-xxhdpi/switch_thumb_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..db7c1df41490860e6d3840f0084f8b6d618979a3 Binary files /dev/null and b/src/main/res/drawable-xxhdpi/switch_thumb_disable.png differ diff --git a/src/main/res/drawable-xxhdpi/switch_thumb_off_normal.png b/src/main/res/drawable-xxhdpi/switch_thumb_off_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..f747b5596a60a401759eb3411e15683eea1993d0 Binary files /dev/null and b/src/main/res/drawable-xxhdpi/switch_thumb_off_normal.png differ diff --git a/src/main/res/drawable-xxhdpi/switch_thumb_off_pressed.png b/src/main/res/drawable-xxhdpi/switch_thumb_off_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..b9fe6d469eb5b139988b9074a51bec0d2bb1a85d Binary files /dev/null and b/src/main/res/drawable-xxhdpi/switch_thumb_off_pressed.png differ diff --git a/src/main/res/drawable-xxhdpi/switch_thumb_on_normal.png b/src/main/res/drawable-xxhdpi/switch_thumb_on_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..881990248d52d76dee2b3280dffbc670e80a7cb1 Binary files /dev/null and b/src/main/res/drawable-xxhdpi/switch_thumb_on_normal.png differ diff --git a/src/main/res/drawable-xxhdpi/switch_thumb_on_pressed.png b/src/main/res/drawable-xxhdpi/switch_thumb_on_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4fed5405ae19947ab4a73e43d231931f712377 Binary files /dev/null and b/src/main/res/drawable-xxhdpi/switch_thumb_on_pressed.png differ diff --git a/src/main/res/drawable-xxxhdpi/switch_thumb_disable.png b/src/main/res/drawable-xxxhdpi/switch_thumb_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..3970168ca2dd45cba89a2c295751ba5de593de78 Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/switch_thumb_disable.png differ diff --git a/src/main/res/drawable-xxxhdpi/switch_thumb_off_normal.png b/src/main/res/drawable-xxxhdpi/switch_thumb_off_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8d4f8940c3c30d4ddd84b1292c085e0c4bc1e2 Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/switch_thumb_off_normal.png differ diff --git a/src/main/res/drawable-xxxhdpi/switch_thumb_off_pressed.png b/src/main/res/drawable-xxxhdpi/switch_thumb_off_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..84d667b131a0af9f19e1ca95ab0e0ae3a3eedede Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/switch_thumb_off_pressed.png differ diff --git a/src/main/res/drawable-xxxhdpi/switch_thumb_on_normal.png b/src/main/res/drawable-xxxhdpi/switch_thumb_on_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..06b190eb930ad601d98ea40fd36bdba9c06b2cc3 Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/switch_thumb_on_normal.png differ diff --git a/src/main/res/drawable-xxxhdpi/switch_thumb_on_pressed.png b/src/main/res/drawable-xxxhdpi/switch_thumb_on_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..79c30d1e549127d1848f6ea901a7213506eb8a79 Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/switch_thumb_on_pressed.png differ diff --git a/src/main/res/drawable/switch_back_off.xml b/src/main/res/drawable/switch_back_off.xml new file mode 100644 index 0000000000000000000000000000000000000000..20d2fb1460754c9fd8642a43b5e8750573d0f55c --- /dev/null +++ b/src/main/res/drawable/switch_back_off.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/switch_back_on.xml b/src/main/res/drawable/switch_back_on.xml new file mode 100644 index 0000000000000000000000000000000000000000..45117a98e0d8c8a91b28de3a0bef59fb96654aca --- /dev/null +++ b/src/main/res/drawable/switch_back_on.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/switch_thumb.xml b/src/main/res/drawable/switch_thumb.xml new file mode 100644 index 0000000000000000000000000000000000000000..ba3d1c45620adbd72b2c0e06246b7f3ef5fa1220 --- /dev/null +++ b/src/main/res/drawable/switch_thumb.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/account_row.xml b/src/main/res/layout/account_row.xml index 06716a10a857d1ab0bcb00a61b2d937ba133441b..077170b2940079319c376f5052e898c4d83e177a 100644 --- a/src/main/res/layout/account_row.xml +++ b/src/main/res/layout/account_row.xml @@ -45,13 +45,14 @@ android:textStyle="bold" /> - \ No newline at end of file diff --git a/src/main/res/values/styles.xml b/src/main/res/values/styles.xml index b98a37fcb3dbfe2ff866103c3619d0b34b39cc53..e8572d9d46899156151733bd66ded20569d53482 100644 --- a/src/main/res/values/styles.xml +++ b/src/main/res/values/styles.xml @@ -4,8 +4,18 @@ 1.5dp @color/black12 - \ No newline at end of file