Skip to content

Commit

Permalink
expandable start with adb/root card
Browse files Browse the repository at this point in the history
  • Loading branch information
RikkaW committed Jul 30, 2019
1 parent 2abac0f commit 1bc0981
Show file tree
Hide file tree
Showing 6 changed files with 168 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,33 @@
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.Checkable;
import android.widget.Toast;

import moe.shizuku.manager.Helps;
import moe.shizuku.manager.R;
import moe.shizuku.manager.ServerLauncher;
import moe.shizuku.manager.ShizukuManagerSettings;
import moe.shizuku.manager.utils.CustomTabsHelper;
import moe.shizuku.manager.widget.ExpandableLayout;
import moe.shizuku.support.recyclerview.BaseViewHolder;
import moe.shizuku.support.text.HtmlCompat;
import moe.shizuku.support.utils.ClipboardUtils;

public class StartAdbViewHolder extends BaseViewHolder<Object> {
public class StartAdbViewHolder extends BaseViewHolder<Object> implements View.OnClickListener, Checkable {

public static final Creator<Object> CREATOR = (inflater, parent) -> new StartAdbViewHolder(inflater.inflate(R.layout.item_home_start_adb, parent, false));

private Checkable expandableButton;
private ExpandableLayout expandableLayout;

public StartAdbViewHolder(View itemView) {
super(itemView);

expandableButton = itemView.findViewById(android.R.id.text2);
((View) expandableButton).setOnClickListener(this);
expandableLayout = itemView.findViewById(R.id.expandable);

itemView.findViewById(android.R.id.button1).setOnClickListener(v -> CustomTabsHelper.launchUrlOrCopy(v.getContext(), Helps.ADB.get()));

itemView.findViewById(android.R.id.button2).setOnClickListener(v -> {
Expand All @@ -44,4 +54,35 @@ public StartAdbViewHolder(View itemView) {
.show();
});
}

@Override
public void onClick(View v) {
setChecked(!isChecked());
syncViewState();
}

@Override
public void onBind() {
syncViewState();
}

@Override
public void setChecked(boolean checked) {
ShizukuManagerSettings.getPreferences().edit().putBoolean("adb_help_expanded", checked).apply();
}

@Override
public boolean isChecked() {
return ShizukuManagerSettings.getPreferences().getBoolean("adb_help_expanded", true);
}

@Override
public void toggle() {
setChecked(!isChecked());
}

private void syncViewState() {
expandableButton.setChecked(isChecked());
expandableLayout.setExpanded(isChecked());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,27 @@
import android.content.Context;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.widget.Checkable;
import android.widget.TextView;

import androidx.core.app.ShareCompat;
import moe.shizuku.manager.R;
import moe.shizuku.manager.ServerLauncher;
import moe.shizuku.manager.ShizukuManagerSettings;
import moe.shizuku.manager.service.ShellService;
import moe.shizuku.manager.utils.BindServiceHelper;
import moe.shizuku.manager.widget.ExpandableLayout;
import moe.shizuku.support.recyclerview.BaseViewHolder;
import moe.shizuku.support.utils.ContextUtils;
import moe.shizuku.support.widget.HtmlCompatTextView;

public class StartRootViewHolder extends BaseViewHolder<Boolean> {
public class StartRootViewHolder extends BaseViewHolder<Boolean> implements View.OnClickListener, Checkable {

public static final Creator<Boolean> CREATOR = (inflater, parent) -> new StartRootViewHolder(inflater.inflate(R.layout.item_home_start_root, parent, false));

private Checkable expandableButton;
private ExpandableLayout expandableLayout;

private View start;
private View restart;

Expand All @@ -30,6 +36,10 @@ public class StartRootViewHolder extends BaseViewHolder<Boolean> {
public StartRootViewHolder(View itemView) {
super(itemView);

expandableButton = itemView.findViewById(android.R.id.text2);
((View) expandableButton).setOnClickListener(this);
expandableLayout = itemView.findViewById(R.id.expandable);

mBindServiceHelper = new BindServiceHelper(itemView.getContext(), ShellService.class);

View.OnClickListener listener = this::onStartClicked;
Expand Down Expand Up @@ -160,6 +170,8 @@ public void onBind() {
start.setVisibility(View.VISIBLE);
restart.setVisibility(View.GONE);
}

syncViewState();
}

@Override
Expand All @@ -168,4 +180,30 @@ public void onRecycle() {

mAlertDialog = null;
}

@Override
public void onClick(View v) {
setChecked(!isChecked());
syncViewState();
}

@Override
public void setChecked(boolean checked) {
ShizukuManagerSettings.getPreferences().edit().putBoolean("root_help_expanded", checked).apply();
}

@Override
public boolean isChecked() {
return ShizukuManagerSettings.getPreferences().getBoolean("root_help_expanded", true);
}

@Override
public void toggle() {
setChecked(!isChecked());
}

private void syncViewState() {
expandableButton.setChecked(isChecked());
expandableLayout.setExpanded(isChecked());
}
}
62 changes: 41 additions & 21 deletions manager/src/main/res/layout/item_home_start_adb.xml
Original file line number Diff line number Diff line change
@@ -1,63 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="?homeCardStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
style="?homeCardStyle"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:paddingBottom="8dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:gravity="center_vertical">
android:paddingEnd="16dp">

<moe.shizuku.manager.widget.MaterialCircleIconView
android:id="@android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:importantForAccessibility="no"
android:src="@drawable/ic_adb_24dp"
android:duplicateParentState="true"
app:iconColorName="teal"/>
app:iconColorName="teal" />

<moe.shizuku.support.widget.HtmlCompatTextView
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textAppearance="@android:style/TextAppearance.Material.Body2"
android:layout_marginStart="16dp"
android:layout_weight="1"
android:textAppearance="@android:style/TextAppearance.Material.Body2"
android:textSize="16sp"
app:htmlText="@string/start_service_title_adb" />

<moe.shizuku.manager.widget.CheckedImageView
android:id="@android:id/text2"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="8dp"
android:background="?android:selectableItemBackgroundBorderless"
android:scaleType="centerInside"
android:src="@drawable/btn_expand_material_anim_24dp"
android:tint="?android:textColorSecondary"
android:tintMode="src_in" />

</LinearLayout>

<moe.shizuku.support.widget.HtmlCompatTextView
android:id="@android:id/text1"
<moe.shizuku.manager.widget.ExpandableLayout
android:id="@+id/expandable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:textColor="?android:textColorSecondary"
app:htmlFlags="trim_whitespace"
app:htmlText="@string/start_service_summary_adb" />
android:layout_marginBottom="16dp"
app:isExpanded="true">

<moe.shizuku.support.widget.HtmlCompatTextView
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:textColor="?android:textColorSecondary"
app:htmlFlags="trim_whitespace"
app:htmlText="@string/start_service_summary_adb" />

</moe.shizuku.manager.widget.ExpandableLayout>

<TextView
android:id="@android:id/button1"
android:text="@string/view_online_help"
style="@style/CardButton"
android:drawableStart="@drawable/ic_help_outline_24dp"
style="@style/CardButton" />
android:text="@string/view_online_help" />

<TextView
android:id="@android:id/button2"
android:text="@string/view_command"
style="@style/CardButton"
android:drawableStart="@drawable/ic_code_24dp"
style="@style/CardButton" />
android:text="@string/view_command" />

</LinearLayout>
64 changes: 42 additions & 22 deletions manager/src/main/res/layout/item_home_start_root.xml
Original file line number Diff line number Diff line change
@@ -1,66 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="?homeCardStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
style="?homeCardStyle"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:paddingBottom="8dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:gravity="center_vertical">
android:paddingEnd="16dp">

<moe.shizuku.manager.widget.MaterialCircleIconView
android:id="@android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:importantForAccessibility="no"
android:src="@drawable/ic_play_arrow_outline_24dp"
android:duplicateParentState="true"
app:iconColorName="orange"/>
app:iconColorName="orange" />

<moe.shizuku.support.widget.HtmlCompatTextView
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textAppearance="@android:style/TextAppearance.Material.Body2"
android:layout_marginStart="16dp"
android:layout_weight="1"
android:textAppearance="@android:style/TextAppearance.Material.Body2"
android:textSize="16sp"
app:htmlText="@string/start_service_title_root" />

<moe.shizuku.manager.widget.CheckedImageView
android:id="@android:id/text2"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="8dp"
android:background="?android:selectableItemBackgroundBorderless"
android:scaleType="centerInside"
android:src="@drawable/btn_expand_material_anim_24dp"
android:tint="?android:textColorSecondary"
android:tintMode="src_in" />

</LinearLayout>

<moe.shizuku.support.widget.HtmlCompatTextView
android:id="@android:id/text1"
<moe.shizuku.manager.widget.ExpandableLayout
android:id="@+id/expandable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:textColor="?android:textColorSecondary"
app:htmlFlags="trim_whitespace"
app:htmlText="@string/start_service_summary_root" />
android:layout_marginBottom="16dp"
app:isExpanded="true">

<moe.shizuku.support.widget.HtmlCompatTextView
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:textColor="?android:textColorSecondary"
app:htmlFlags="trim_whitespace"
app:htmlText="@string/start_service_summary_root" />

</moe.shizuku.manager.widget.ExpandableLayout>

<TextView
android:id="@android:id/button1"
android:text="@string/service_start"
android:drawableStart="@drawable/ic_server_start_24dp"
style="@style/CardButton"
android:enabled="false" />
android:drawableStart="@drawable/ic_server_start_24dp"
android:enabled="false"
android:text="@string/service_start" />

<TextView
android:id="@android:id/button2"
android:text="@string/service_restart"
android:drawableStart="@drawable/ic_server_restart"
style="@style/CardButton"
android:drawableStart="@drawable/ic_server_restart"
android:enabled="false"
android:text="@string/service_restart"
android:visibility="gone" />

</LinearLayout>
4 changes: 4 additions & 0 deletions manager/src/main/res/values/attrs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,8 @@
<attr name="iconForegroundChroma" format="string"/>
<attr name="iconColorName" format="string"/>
</declare-styleable>

<declare-styleable name="ExpandableLayout">
<attr name="isExpanded" format="boolean"/>
</declare-styleable>
</resources>
1 change: 0 additions & 1 deletion manager/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -73,5 +73,4 @@
<string name="dialog_cannot_open_browser_title">Can\'t start browser</string>
<string name="toast_copied_to_clipboard_with_text"><![CDATA[<b>%s</b> has been copied to clipboard.]]></string>
<string name="get_more_summary">View apps using Shizuku</string>

</resources>

0 comments on commit 1bc0981

Please sign in to comment.