open-camera/app/src/main/java/net/sourceforge/opencamera/PreferenceSubProcessing.java
2025-11-22 13:52:14 +01:00

96 lines
5.8 KiB
Java

package net.sourceforge.opencamera;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceManager;
import android.util.Log;
import net.sourceforge.opencamera.cameracontroller.CameraController;
public class PreferenceSubProcessing extends PreferenceSubScreen {
private static final String TAG = "PreferenceSubProcessing";
@Override
public void onCreate(Bundle savedInstanceState) {
if( MyDebug.LOG )
Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_sub_processing);
final Bundle bundle = getArguments();
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this.getActivity());
final boolean camera_open = bundle.getBoolean("camera_open");
if( MyDebug.LOG )
Log.d(TAG, "camera_open: " + camera_open);
boolean has_antibanding = false;
String [] antibanding_values = bundle.getStringArray("antibanding");
if( antibanding_values != null && antibanding_values.length > 0 ) {
String [] antibanding_entries = bundle.getStringArray("antibanding_entries");
if( antibanding_entries != null && antibanding_entries.length == antibanding_values.length ) { // should always be true here, but just in case
MyPreferenceFragment.readFromBundle(this, antibanding_values, antibanding_entries, PreferenceKeys.AntiBandingPreferenceKey, CameraController.ANTIBANDING_DEFAULT, "preferences_root");
has_antibanding = true;
}
}
if( MyDebug.LOG )
Log.d(TAG, "has_antibanding?: " + has_antibanding);
if( !has_antibanding && ( camera_open || sharedPreferences.getString(PreferenceKeys.AntiBandingPreferenceKey, CameraController.ANTIBANDING_DEFAULT).equals(CameraController.ANTIBANDING_DEFAULT) ) ) {
// if camera not open, we'll think this setting isn't supported - but should only remove
// this preference if it's set to the default (otherwise if user sets to a non-default
// value that causes camera to not open, user won't be able to put it back to the
// default!)
Preference pref = findPreference(PreferenceKeys.AntiBandingPreferenceKey);
PreferenceGroup pg = (PreferenceGroup)this.findPreference("preferences_root");
pg.removePreference(pref);
}
boolean has_edge_mode = false;
String [] edge_mode_values = bundle.getStringArray("edge_modes");
if( edge_mode_values != null && edge_mode_values.length > 0 ) {
String [] edge_mode_entries = bundle.getStringArray("edge_modes_entries");
if( edge_mode_entries != null && edge_mode_entries.length == edge_mode_values.length ) { // should always be true here, but just in case
MyPreferenceFragment.readFromBundle(this, edge_mode_values, edge_mode_entries, PreferenceKeys.EdgeModePreferenceKey, CameraController.EDGE_MODE_DEFAULT, "preferences_root");
has_edge_mode = true;
}
}
if( MyDebug.LOG )
Log.d(TAG, "has_edge_mode?: " + has_edge_mode);
if( !has_edge_mode && ( camera_open || sharedPreferences.getString(PreferenceKeys.EdgeModePreferenceKey, CameraController.EDGE_MODE_DEFAULT).equals(CameraController.EDGE_MODE_DEFAULT) ) ) {
// if camera not open, we'll think this setting isn't supported - but should only remove
// this preference if it's set to the default (otherwise if user sets to a non-default
// value that causes camera to not open, user won't be able to put it back to the
// default!)
Preference pref = findPreference(PreferenceKeys.EdgeModePreferenceKey);
PreferenceGroup pg = (PreferenceGroup)this.findPreference("preferences_root");
pg.removePreference(pref);
}
boolean has_noise_reduction_mode = false;
String [] noise_reduction_mode_values = bundle.getStringArray("noise_reduction_modes");
if( noise_reduction_mode_values != null && noise_reduction_mode_values.length > 0 ) {
String [] noise_reduction_mode_entries = bundle.getStringArray("noise_reduction_modes_entries");
if( noise_reduction_mode_entries != null && noise_reduction_mode_entries.length == noise_reduction_mode_values.length ) { // should always be true here, but just in case
MyPreferenceFragment.readFromBundle(this, noise_reduction_mode_values, noise_reduction_mode_entries, PreferenceKeys.CameraNoiseReductionModePreferenceKey, CameraController.NOISE_REDUCTION_MODE_DEFAULT, "preferences_root");
has_noise_reduction_mode = true;
}
}
if( MyDebug.LOG )
Log.d(TAG, "has_noise_reduction_mode?: " + has_noise_reduction_mode);
if( !has_noise_reduction_mode && ( camera_open || sharedPreferences.getString(PreferenceKeys.CameraNoiseReductionModePreferenceKey, CameraController.NOISE_REDUCTION_MODE_DEFAULT).equals(CameraController.NOISE_REDUCTION_MODE_DEFAULT) ) ) {
// if camera not open, we'll think this setting isn't supported - but should only remove
// this preference if it's set to the default (otherwise if user sets to a non-default
// value that causes camera to not open, user won't be able to put it back to the
// default!)
Preference pref = findPreference(PreferenceKeys.CameraNoiseReductionModePreferenceKey);
PreferenceGroup pg = (PreferenceGroup)this.findPreference("preferences_root");
pg.removePreference(pref);
}
if( MyDebug.LOG )
Log.d(TAG, "onCreate done");
}
}