Use SwitchBar for Print Settings

- follow up CL to 4193776698

Related to bug #14898161 On/Off switches must move down from Action Bar

Change-Id: Ife4990a52ef282563267dc0bff6d3a7f354b0bd0
This commit is contained in:
Fabrice Di Meglio
2014-05-15 19:53:08 -07:00
parent 105947d0a9
commit 7ba17ab12c
2 changed files with 23 additions and 70 deletions

View File

@@ -16,7 +16,6 @@
package com.android.settings.print; package com.android.settings.print;
import android.app.ActionBar;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
@@ -45,7 +44,6 @@ import android.print.PrinterId;
import android.print.PrinterInfo; import android.print.PrinterInfo;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.Gravity;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
@@ -53,30 +51,31 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.CompoundButton;
import android.widget.Filter; import android.widget.Filter;
import android.widget.Filterable; import android.widget.Filterable;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.SearchView; import android.widget.SearchView;
import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.print.PrintSettingsFragment.ToggleSwitch;
import com.android.settings.print.PrintSettingsFragment.ToggleSwitch.OnBeforeCheckedChangeListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import android.widget.CompoundButton.OnCheckedChangeListener; import com.android.settings.widget.SwitchBar;
import com.android.settings.widget.ToggleSwitch;
/** /**
* Fragment with print service settings. * Fragment with print service settings.
*/ */
public class PrintServiceSettingsFragment extends SettingsPreferenceFragment public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
implements DialogInterface.OnClickListener { implements DialogInterface.OnClickListener, SwitchBar.OnSwitchChangeListener {
private static final int LOADER_ID_PRINTERS_LOADER = 1; private static final int LOADER_ID_PRINTERS_LOADER = 1;
@@ -112,6 +111,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
} }
}; };
private SwitchBar mSwitchBar;
private ToggleSwitch mToggleSwitch; private ToggleSwitch mToggleSwitch;
private String mPreferenceKey; private String mPreferenceKey;
@@ -161,16 +161,17 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
@Override @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
setupActionBarToggleSwitch(getActivity(), mToggleSwitch); mSwitchBar.addOnSwitchChangeListener(this);
mSwitchBar.show();
} }
@Override @Override
public void onDestroyView() { public void onDestroyView() {
removeActionBarToggleSwitch(getActivity());
if (mOldActivityTitle != null) { if (mOldActivityTitle != null) {
getActivity().getActionBar().setTitle(mOldActivityTitle); getActivity().getActionBar().setTitle(mOldActivityTitle);
} }
mToggleSwitch.setOnBeforeCheckedChangeListener(null); mSwitchBar.removeOnSwitchChangeListener(this);
mSwitchBar.hide();
super.onDestroyView(); super.onDestroyView();
} }
@@ -294,8 +295,12 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
mPrintersAdapter = new PrintersAdapter(); mPrintersAdapter = new PrintersAdapter();
mPrintersAdapter.registerDataSetObserver(mDataObserver); mPrintersAdapter.registerDataSetObserver(mDataObserver);
mToggleSwitch = createActionBarToggleSwitch(getActivity().getActionBar().getThemedContext()); final SettingsActivity activity = (SettingsActivity) getActivity();
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
mSwitchBar = activity.getSwitchBar();
mToggleSwitch = mSwitchBar.getSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new ToggleSwitch.OnBeforeCheckedChangeListener() {
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
if (checked) { if (checked) {
@@ -312,17 +317,17 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
return false; return false;
} }
}); });
mToggleSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
updateEmptyView();
}
});
getListView().setSelector(new ColorDrawable(Color.TRANSPARENT)); getListView().setSelector(new ColorDrawable(Color.TRANSPARENT));
getListView().setAdapter(mPrintersAdapter); getListView().setAdapter(mPrintersAdapter);
} }
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
updateEmptyView();
}
private void updateUiForArguments() { private void updateUiForArguments() {
Bundle arguments = getArguments(); Bundle arguments = getArguments();
@@ -445,27 +450,6 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
} }
} }
private ToggleSwitch createActionBarToggleSwitch(Context context) {
ToggleSwitch toggleSwitch = new ToggleSwitch(context);
final int padding = context.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
toggleSwitch.setPaddingRelative(0, 0, padding, 0);
return toggleSwitch;
}
private void setupActionBarToggleSwitch(Activity activity, ToggleSwitch toggleSwitch) {
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(toggleSwitch,
new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.END));
}
private void removeActionBarToggleSwitch(Activity activity) {
activity.getActionBar().setCustomView(null);
}
private static abstract class SettingsContentObserver extends ContentObserver { private static abstract class SettingsContentObserver extends ContentObserver {
public SettingsContentObserver(Handler handler) { public SettingsContentObserver(Handler handler) {

View File

@@ -50,7 +50,6 @@ import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import com.android.internal.content.PackageMonitor; import com.android.internal.content.PackageMonitor;
@@ -294,36 +293,6 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment
} }
} }
public static class ToggleSwitch extends Switch {
private OnBeforeCheckedChangeListener mOnBeforeListener;
public static interface OnBeforeCheckedChangeListener {
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked);
}
public ToggleSwitch(Context context) {
super(context);
}
public void setOnBeforeCheckedChangeListener(OnBeforeCheckedChangeListener listener) {
mOnBeforeListener = listener;
}
@Override
public void setChecked(boolean checked) {
if (mOnBeforeListener != null
&& mOnBeforeListener.onBeforeCheckedChanged(this, checked)) {
return;
}
super.setChecked(checked);
}
public void setCheckedInternal(boolean checked) {
super.setChecked(checked);
}
}
private static abstract class SettingsContentObserver extends ContentObserver { private static abstract class SettingsContentObserver extends ContentObserver {
public SettingsContentObserver(Handler handler) { public SettingsContentObserver(Handler handler) {