// Path: app/src/main/java/com/ftinc/showcase/ui/lock/LockType.java
// public enum LockType{
//     NONE("None"),
//     PIN("PIN"),
//     PATTERN("Pattern"),
//     PASSWORD("Password");
// 
//     // The proper name
//     private final String mName;
// 
//     /**
//      * Constructor
//      * @param name      the proper name for this enum
//      */
//     LockType(String name){
//         mName = name;
//     }
// 
//     public static LockType from(int ordinal){
//         return LockType.values()[ordinal];
//     }
// 
//     /**
//      * Create the lockscreen for this given type
//      * @return      the lockscreen implementation for this type
//      */
//     public Lockscreen create(Context ctx){
//         switch (this){
//             case PIN:
//                 return new Lockscreen.Builder(ctx, this)
//                         .ui(new PinUI())
//                         .storage(new SecurePrefStorage(ctx))
//                         .authenticator(new BasicAuth())
//                         .build();
// 
//             case PATTERN:
//                 return new Lockscreen.Builder(ctx, this)
//                         .ui(new PatternUI())
//                         .storage(new SecurePrefStorage(ctx))
//                         .authenticator(new BasicAuth())
//                         .build();
// 
//             case PASSWORD:
//                 return null;
//             default:
//                 return null;
//         }
//     }
// 
//     /**
//      * Get this lockscreen's storage key
//      */
//     public String getKey(){
//         return String.format("lockscreen_key_%s", toString());
//     }
// 
//     /**
//      * Get the proper name for this enum
//      * @return      the enum's proper name
//      */
//     public String getName(){
//         return mName;
//     }
// 
// }


import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import com.ftinc.kit.preferences.BooleanPreference;
import com.ftinc.kit.preferences.IntPreference;
import com.ftinc.kit.preferences.SecurePreferences;
import com.ftinc.kit.preferences.StringPreference;
import com.ftinc.showcase.BuildConfig;
import com.ftinc.showcase.ui.lock.LockType;
import javax.inject.Singleton;
import com.ftinc.showcase.utils.qualifiers.AlarmSoundName;
import com.ftinc.showcase.utils.qualifiers.AlarmSoundPath;
import com.ftinc.showcase.utils.qualifiers.LockTimeout;
import com.ftinc.showcase.utils.qualifiers.Onboarding;
import com.ftinc.showcase.utils.qualifiers.SirenEnabled;
import com.ftinc.showcase.utils.qualifiers.SirenMessage;
import com.ftinc.showcase.utils.qualifiers.VideoAudio;
import com.ftinc.showcase.utils.qualifiers.VideoConstraints;
import com.ftinc.showcase.utils.qualifiers.VideoLock;
import dagger.Module;
import dagger.Provides;
    private static final String SAUCE = BuildConfig.SECURE_KEY;
    private static final String FLAVOR = BuildConfig.SECURE_SALT;

    @Provides @Singleton
    SecurePreferences provideSecurePreferences(Context ctx){
        return new SecurePreferences(ctx, PREFS_SECURE_NAME, SAUCE, FLAVOR, true);
    }

    @Provides @Singleton
    SharedPreferences provideDefaultPrefs(Context ctx){
        return PreferenceManager.getDefaultSharedPreferences(ctx);
    }

    @Provides @Singleton @Onboarding
    BooleanPreference provideShowOnboardingPreference(SharedPreferences prefs){
        return new BooleanPreference(prefs, PREF_SHOW_ONBOARDING, true);
    }

    @Provides @Singleton @AlarmSoundName
    StringPreference provideAlarmSoundNamePreference(SharedPreferences prefs){
        return new StringPreference(prefs, PREF_ALARM_SOUND_NAME);
    }

    @Provides @Singleton @AlarmSoundPath
    StringPreference provideAlarmSoundPathPreference(SharedPreferences prefs){
        return new StringPreference(prefs, PREF_ALARM_SOUND_PATH);
    }

    @Provides @Singleton @VideoLock
    IntPreference provideVideoLockPreference(SharedPreferences prefs){
// Path: app/src/main/java/com/ftinc/showcase/ui/lock/LockType.java
// public enum LockType{
//     NONE("None"),
//     PIN("PIN"),
//     PATTERN("Pattern"),
//     PASSWORD("Password");
// 
//     // The proper name
//     private final String mName;
// 
//     /**
//      * Constructor
//      * @param name      the proper name for this enum
//      */
//     LockType(String name){
//         mName = name;
//     }
// 
//     public static LockType from(int ordinal){
//         return LockType.values()[ordinal];
//     }
// 
//     /**
//      * Create the lockscreen for this given type
//      * @return      the lockscreen implementation for this type
//      */
//     public Lockscreen create(Context ctx){
//         switch (this){
//             case PIN:
//                 return new Lockscreen.Builder(ctx, this)
//                         .ui(new PinUI())
//                         .storage(new SecurePrefStorage(ctx))
//                         .authenticator(new BasicAuth())
//                         .build();
// 
//             case PATTERN:
//                 return new Lockscreen.Builder(ctx, this)
//                         .ui(new PatternUI())
//                         .storage(new SecurePrefStorage(ctx))
//                         .authenticator(new BasicAuth())
//                         .build();
// 
//             case PASSWORD:
//                 return null;
//             default:
//                 return null;
//         }
//     }
// 
//     /**
//      * Get this lockscreen's storage key
//      */
//     public String getKey(){
//         return String.format("lockscreen_key_%s", toString());
//     }
// 
//     /**
//      * Get the proper name for this enum
//      * @return      the enum's proper name
//      */
//     public String getName(){
//         return mName;
//     }
// 
// }


// Path: app/src/main/java/com/ftinc/showcase/data/DataModule.java
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import com.ftinc.kit.preferences.BooleanPreference;
import com.ftinc.kit.preferences.IntPreference;
import com.ftinc.kit.preferences.SecurePreferences;
import com.ftinc.kit.preferences.StringPreference;
import com.ftinc.showcase.BuildConfig;
import com.ftinc.showcase.ui.lock.LockType;
import javax.inject.Singleton;
import com.ftinc.showcase.utils.qualifiers.AlarmSoundName;
import com.ftinc.showcase.utils.qualifiers.AlarmSoundPath;
import com.ftinc.showcase.utils.qualifiers.LockTimeout;
import com.ftinc.showcase.utils.qualifiers.Onboarding;
import com.ftinc.showcase.utils.qualifiers.SirenEnabled;
import com.ftinc.showcase.utils.qualifiers.SirenMessage;
import com.ftinc.showcase.utils.qualifiers.VideoAudio;
import com.ftinc.showcase.utils.qualifiers.VideoConstraints;
import com.ftinc.showcase.utils.qualifiers.VideoLock;
import dagger.Module;
import dagger.Provides;

    private static final String SAUCE = BuildConfig.SECURE_KEY;
    private static final String FLAVOR = BuildConfig.SECURE_SALT;

    @Provides @Singleton
    SecurePreferences provideSecurePreferences(Context ctx){
        return new SecurePreferences(ctx, PREFS_SECURE_NAME, SAUCE, FLAVOR, true);
    }

    @Provides @Singleton
    SharedPreferences provideDefaultPrefs(Context ctx){
        return PreferenceManager.getDefaultSharedPreferences(ctx);
    }

    @Provides @Singleton @Onboarding
    BooleanPreference provideShowOnboardingPreference(SharedPreferences prefs){
        return new BooleanPreference(prefs, PREF_SHOW_ONBOARDING, true);
    }

    @Provides @Singleton @AlarmSoundName
    StringPreference provideAlarmSoundNamePreference(SharedPreferences prefs){
        return new StringPreference(prefs, PREF_ALARM_SOUND_NAME);
    }

    @Provides @Singleton @AlarmSoundPath
    StringPreference provideAlarmSoundPathPreference(SharedPreferences prefs){
        return new StringPreference(prefs, PREF_ALARM_SOUND_PATH);
    }

    @Provides @Singleton @VideoLock
    IntPreference provideVideoLockPreference(SharedPreferences prefs){
        return new IntPreference(prefs, PREF_VIDEO_LOCK, LockType.NONE.ordinal());