@ -5,10 +5,12 @@ import android.util.Log;
@@ -5,10 +5,12 @@ import android.util.Log;
import androidx.annotation.NonNull ;
import androidx.preference.EditTextPreference ;
import androidx.preference.MultiSelectListPreference ;
import androidx.preference.Preference ;
import androidx.preference.PreferenceCategory ;
import androidx.preference.PreferenceFragmentCompat ;
import java.util.HashSet ;
import java.util.List ;
import cc.niushuai.didicheck.R ;
@ -16,7 +18,6 @@ import cc.niushuai.didicheck.biz.entity.CheckProject;
@@ -16,7 +18,6 @@ import cc.niushuai.didicheck.biz.entity.CheckProject;
import cc.niushuai.didicheck.biz.room.DBManager ;
import cc.niushuai.didicheck.util.Toasts ;
import cn.hutool.core.collection.CollUtil ;
import cn.hutool.core.util.StrUtil ;
import io.reactivex.Completable ;
import io.reactivex.CompletableObserver ;
import io.reactivex.Flowable ;
@ -27,15 +28,20 @@ import io.reactivex.schedulers.Schedulers;
@@ -27,15 +28,20 @@ import io.reactivex.schedulers.Schedulers;
public class SettingsFragment extends PreferenceFragmentCompat {
private static final String TAG = SettingsFragment . class . getSimpleName ( ) ;
@Override
public void onCreatePreferences ( Bundle savedInstanceState , String rootKey ) {
setPreferencesFromResource ( R . xml . root_preferences , rootKey ) ;
addNewProjectListener ( ) ;
addRemoveProjectListener ( ) ;
resetRemoveProject ( ) ;
resetCheckProjectList ( ) ;
}
private void resetCheckProjectList ( ) {
// 重置选项卡
@ -97,8 +103,66 @@ public class SettingsFragment extends PreferenceFragmentCompat {
@@ -97,8 +103,66 @@ public class SettingsFragment extends PreferenceFragmentCompat {
} ) ;
}
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
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 ) {
@ -121,24 +185,25 @@ public class SettingsFragment extends PreferenceFragmentCompat {
@@ -121,24 +185,25 @@ public class SettingsFragment extends PreferenceFragmentCompat {
preference . setTitle ( item . getName ( ) ) ;
preference . setSummary ( item . getId ( ) . toString ( ) ) ;
preference . setDefaultValue ( item . getName ( ) ) ;
preference . setEnabled ( false ) ;
preference . setOnPreferenceChangeListener ( new Preference . OnPreferenceChangeListener ( ) {
@Override
public boolean onPreferenceChange ( @NonNull Preference preference , Object newValue ) {
return tru e;
return fals e;
}
} ) ;
preference . setOnPreferenceClickListener ( new Preference . OnPreferenceClickListener ( ) {
@Override
public boolean onPreferenceClick ( @NonNull Preference preference ) {
Log . d ( "SettingsFragment" , "clicked" + preference . getSummar y ( ) ) ;
Log . d ( "SettingsFragment" , "clicked " + preference . getKe y ( ) ) ;
Flowable < List < CheckProject > > listFlowable = DBManager . INSTANCE . checkProjectDao ( ) . testListAll ( ) ;
listFlowable . subscribeOn ( Schedulers . io ( ) ) . observeOn ( AndroidSchedulers . mainThread ( ) )
. subscribe ( new Consumer < List < CheckProject > > ( ) {
@Override
public void accept ( List < CheckProject > checkProjects ) throws Exception {
Log . d ( "SettingsFragment" , ":" + checkProjects . size ( ) ) ;
Log . d ( "SettingsFragment" , "每个item的onPreferenceClick : " + checkProjects . size ( ) ) ;
}
} ) ;