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:
@@ -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) {
|
||||||
|
@@ -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) {
|
||||||
|
Reference in New Issue
Block a user