|
|
@ -5,10 +5,12 @@ import android.util.Log; |
|
|
|
|
|
|
|
|
|
|
|
import androidx.annotation.NonNull; |
|
|
|
import androidx.annotation.NonNull; |
|
|
|
import androidx.preference.EditTextPreference; |
|
|
|
import androidx.preference.EditTextPreference; |
|
|
|
|
|
|
|
import androidx.preference.MultiSelectListPreference; |
|
|
|
import androidx.preference.Preference; |
|
|
|
import androidx.preference.Preference; |
|
|
|
import androidx.preference.PreferenceCategory; |
|
|
|
import androidx.preference.PreferenceCategory; |
|
|
|
import androidx.preference.PreferenceFragmentCompat; |
|
|
|
import androidx.preference.PreferenceFragmentCompat; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.HashSet; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
|
import cc.niushuai.didicheck.R; |
|
|
|
import cc.niushuai.didicheck.R; |
|
|
@ -16,7 +18,6 @@ import cc.niushuai.didicheck.biz.entity.CheckProject; |
|
|
|
import cc.niushuai.didicheck.biz.room.DBManager; |
|
|
|
import cc.niushuai.didicheck.biz.room.DBManager; |
|
|
|
import cc.niushuai.didicheck.util.Toasts; |
|
|
|
import cc.niushuai.didicheck.util.Toasts; |
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
|
|
|
|
import io.reactivex.Completable; |
|
|
|
import io.reactivex.Completable; |
|
|
|
import io.reactivex.CompletableObserver; |
|
|
|
import io.reactivex.CompletableObserver; |
|
|
|
import io.reactivex.Flowable; |
|
|
|
import io.reactivex.Flowable; |
|
|
@ -27,15 +28,20 @@ import io.reactivex.schedulers.Schedulers; |
|
|
|
|
|
|
|
|
|
|
|
public class SettingsFragment extends PreferenceFragmentCompat { |
|
|
|
public class SettingsFragment extends PreferenceFragmentCompat { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final String TAG = SettingsFragment.class.getSimpleName(); |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { |
|
|
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { |
|
|
|
setPreferencesFromResource(R.xml.root_preferences, rootKey); |
|
|
|
setPreferencesFromResource(R.xml.root_preferences, rootKey); |
|
|
|
|
|
|
|
|
|
|
|
addNewProjectListener(); |
|
|
|
addNewProjectListener(); |
|
|
|
addRemoveProjectListener(); |
|
|
|
addRemoveProjectListener(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
resetRemoveProject(); |
|
|
|
resetCheckProjectList(); |
|
|
|
resetCheckProjectList(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void resetCheckProjectList() { |
|
|
|
private void resetCheckProjectList() { |
|
|
|
|
|
|
|
|
|
|
|
// 重置选项卡
|
|
|
|
// 重置选项卡
|
|
|
@ -97,8 +103,66 @@ public class SettingsFragment extends PreferenceFragmentCompat { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void addRemoveProjectListener() { |
|
|
|
private void addRemoveProjectListener() { |
|
|
|
|
|
|
|
MultiSelectListPreference preference = findPreference(getString(R.string.remove_old_check_record)); |
|
|
|
|
|
|
|
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public boolean onPreferenceClick(@NonNull Preference preference) { |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// newValue 选择的数据id 要更新这些数据id的delete 为0
|
|
|
|
|
|
|
|
Log.d(TAG, "onPreferenceChange: " + newValue.toString()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HashSet<String> arr = (HashSet) newValue; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (String id : arr) { |
|
|
|
|
|
|
|
DBManager.INSTANCE.checkProjectDao().deleteById(Long.valueOf(id)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 重置项目列表
|
|
|
|
|
|
|
|
resetCheckProjectList(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void resetRemoveProject() { |
|
|
|
// 使用ListPreference
|
|
|
|
// 使用ListPreference
|
|
|
|
|
|
|
|
MultiSelectListPreference preference = findPreference(getString(R.string.remove_old_check_record)); |
|
|
|
|
|
|
|
preference.setEntries(new CharSequence[0]); |
|
|
|
|
|
|
|
preference.setEntryValues(new CharSequence[0]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Flowable<List<CheckProject>> listFlowable = DBManager.INSTANCE.checkProjectDao().listAll(); |
|
|
|
|
|
|
|
listFlowable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) |
|
|
|
|
|
|
|
.subscribe(new Consumer<List<CheckProject>>() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void accept(List<CheckProject> checkProjects) throws Exception { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String[] entries = new String[checkProjects.size()]; |
|
|
|
|
|
|
|
String[] entryValues = new String[checkProjects.size()]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < checkProjects.size(); i++) { |
|
|
|
|
|
|
|
CheckProject item = checkProjects.get(i); |
|
|
|
|
|
|
|
entries[i] = item.getName(); |
|
|
|
|
|
|
|
entryValues[i] = item.getId().toString(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
preference.setEntries(entries); |
|
|
|
|
|
|
|
preference.setEntryValues(entryValues); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void dynamicAddCheckProjects(List<CheckProject> checkProjects) { |
|
|
|
private void dynamicAddCheckProjects(List<CheckProject> checkProjects) { |
|
|
@ -121,24 +185,25 @@ public class SettingsFragment extends PreferenceFragmentCompat { |
|
|
|
preference.setTitle(item.getName()); |
|
|
|
preference.setTitle(item.getName()); |
|
|
|
preference.setSummary(item.getId().toString()); |
|
|
|
preference.setSummary(item.getId().toString()); |
|
|
|
preference.setDefaultValue(item.getName()); |
|
|
|
preference.setDefaultValue(item.getName()); |
|
|
|
|
|
|
|
preference.setEnabled(false); |
|
|
|
|
|
|
|
|
|
|
|
preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { |
|
|
|
preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) { |
|
|
|
public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) { |
|
|
|
return true; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { |
|
|
|
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public boolean onPreferenceClick(@NonNull Preference preference) { |
|
|
|
public boolean onPreferenceClick(@NonNull Preference preference) { |
|
|
|
Log.d("SettingsFragment", "clicked" + preference.getSummary()); |
|
|
|
Log.d("SettingsFragment", "clicked " + preference.getKey()); |
|
|
|
|
|
|
|
|
|
|
|
Flowable<List<CheckProject>> listFlowable = DBManager.INSTANCE.checkProjectDao().testListAll(); |
|
|
|
Flowable<List<CheckProject>> listFlowable = DBManager.INSTANCE.checkProjectDao().testListAll(); |
|
|
|
listFlowable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) |
|
|
|
listFlowable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) |
|
|
|
.subscribe(new Consumer<List<CheckProject>>() { |
|
|
|
.subscribe(new Consumer<List<CheckProject>>() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void accept(List<CheckProject> checkProjects) throws Exception { |
|
|
|
public void accept(List<CheckProject> checkProjects) throws Exception { |
|
|
|
Log.d("SettingsFragment", ":" + checkProjects.size()); |
|
|
|
Log.d("SettingsFragment", "每个item的onPreferenceClick: " + checkProjects.size()); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|