// Path: lovelyinput/src/main/java/com/yarolegovich/lovelyuserinput/LovelyInput.java
// public class LovelyInput implements UserInputModule.Factory {
// 
//     private Map<String, Integer> keyIconMappings;
//     private Map<String, CharSequence> keyTitleMappings;
//     private Map<String, CharSequence> keyMessageMappings;
// 
//     private int color;
// 
//     private LovelyInput() {
//         keyIconMappings = Collections.emptyMap();
//         keyTitleMappings = Collections.emptyMap();
//         keyMessageMappings = Collections.emptyMap();
//     }
// 
//     @Override
//     public UserInputModule create(Context context) {
//         return new LovelyInputModule(context)
//                 .setKeyMessageMapping(keyMessageMappings)
//                 .setKeyTitleMapping(keyTitleMappings)
//                 .setKeyIconMappings(keyIconMappings)
//                 .setTopColor(color);
//     }
// 
//     public static class Builder {
// 
//         private LovelyInput factory;
// 
//         public Builder() {
//             factory = new LovelyInput();
//         }
// 
//         public Builder setTopColor(@ColorInt int color) {
//             factory.color = color;
//             return this;
//         }
// 
//         public Builder setKeyTitleMappings(Map<String, CharSequence> mappings) {
//             factory.keyTitleMappings = mappings;
//             return this;
//         }
// 
//         public Builder setKeyMessageMappings(Map<String, CharSequence> mappings) {
//             factory.keyMessageMappings = mappings;
//             return this;
//         }
// 
//         public Builder setKeyIconMappings(Map<String, Integer> mappings) {
//             factory.keyIconMappings = mappings;
//             return this;
//         }
// 
//         public LovelyInput build() {
//             return factory;
//         }
// 
//     }
// }
// 
// Path: library/src/main/java/com/yarolegovich/mp/io/MaterialPreferences.java
// public class MaterialPreferences {
// 
//     private static final MaterialPreferences instance = new MaterialPreferences();
// 
//     public static MaterialPreferences instance() {
//         return instance;
//     }
// 
//     public static UserInputModule getUserInputModule(Context context) {
//         return instance.userInputModuleFactory.create(context);
//     }
// 
//     public static StorageModule getStorageModule(Context context) {
//         return instance.storageModuleFactory.create(context);
//     }
// 
//     private UserInputModule.Factory userInputModuleFactory;
//     private StorageModule.Factory storageModuleFactory;
// 
//     private MaterialPreferences() {
//         userInputModuleFactory = new StandardUserInputFactory();
//         storageModuleFactory = new SharedPrefsStorageFactory(null);
//     }
// 
//     public MaterialPreferences setUserInputModule(UserInputModule.Factory factory) {
//         userInputModuleFactory = factory;
//         return this;
//     }
// 
//     public MaterialPreferences setStorageModule(StorageModule.Factory factory) {
//         storageModuleFactory = factory;
//         return this;
//     }
// 
//     public void setDefault() {
//         userInputModuleFactory = new StandardUserInputFactory();
//         storageModuleFactory = new SharedPrefsStorageFactory(null);
//     }
// 
// 
//     private static class StandardUserInputFactory implements UserInputModule.Factory {
//         @Override
//         public UserInputModule create(Context context) {
//             return new StandardUserInputModule(context);
//         }
//     }
// }


import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import com.yarolegovich.lovelyuserinput.LovelyInput;
import com.yarolegovich.mp.io.MaterialPreferences;
import java.util.HashMap;
import java.util.Map;
        switch (v.getId()) {
            case R.id.pref_form:
                startActivity(new Intent(this, FillTheFormActivity.class));
                break;
            case R.id.pref_configs:
                startActivity(new Intent(this, AppConfigsActivity.class));
                break;
        }
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (key.equals(Prefs.keys().KEY_USE_LOVELY)) {
            setUserInputModule(sharedPreferences.getBoolean(key, false));
        }
    }

    private void setUserInputModule(boolean shouldUseLovelyModule) {
        if (shouldUseLovelyModule) {
            MaterialPreferences.instance().setUserInputModule(createLovelyInputModule());
        } else {
            MaterialPreferences.instance().setDefault();
        }
    }

    private LovelyInput createLovelyInputModule() {
        Map<String, Integer> iconMappings = new HashMap<>();
        Prefs keys = Prefs.keys();
        iconMappings.put(keys.KEY_UPDATE_INTERVAL, R.drawable.ic_access_time_white_36dp);
        iconMappings.put(keys.KEY_LOCATION, R.drawable.ic_location_on_white_36dp);
// Path: lovelyinput/src/main/java/com/yarolegovich/lovelyuserinput/LovelyInput.java
// public class LovelyInput implements UserInputModule.Factory {
// 
//     private Map<String, Integer> keyIconMappings;
//     private Map<String, CharSequence> keyTitleMappings;
//     private Map<String, CharSequence> keyMessageMappings;
// 
//     private int color;
// 
//     private LovelyInput() {
//         keyIconMappings = Collections.emptyMap();
//         keyTitleMappings = Collections.emptyMap();
//         keyMessageMappings = Collections.emptyMap();
//     }
// 
//     @Override
//     public UserInputModule create(Context context) {
//         return new LovelyInputModule(context)
//                 .setKeyMessageMapping(keyMessageMappings)
//                 .setKeyTitleMapping(keyTitleMappings)
//                 .setKeyIconMappings(keyIconMappings)
//                 .setTopColor(color);
//     }
// 
//     public static class Builder {
// 
//         private LovelyInput factory;
// 
//         public Builder() {
//             factory = new LovelyInput();
//         }
// 
//         public Builder setTopColor(@ColorInt int color) {
//             factory.color = color;
//             return this;
//         }
// 
//         public Builder setKeyTitleMappings(Map<String, CharSequence> mappings) {
//             factory.keyTitleMappings = mappings;
//             return this;
//         }
// 
//         public Builder setKeyMessageMappings(Map<String, CharSequence> mappings) {
//             factory.keyMessageMappings = mappings;
//             return this;
//         }
// 
//         public Builder setKeyIconMappings(Map<String, Integer> mappings) {
//             factory.keyIconMappings = mappings;
//             return this;
//         }
// 
//         public LovelyInput build() {
//             return factory;
//         }
// 
//     }
// }
// 
// Path: library/src/main/java/com/yarolegovich/mp/io/MaterialPreferences.java
// public class MaterialPreferences {
// 
//     private static final MaterialPreferences instance = new MaterialPreferences();
// 
//     public static MaterialPreferences instance() {
//         return instance;
//     }
// 
//     public static UserInputModule getUserInputModule(Context context) {
//         return instance.userInputModuleFactory.create(context);
//     }
// 
//     public static StorageModule getStorageModule(Context context) {
//         return instance.storageModuleFactory.create(context);
//     }
// 
//     private UserInputModule.Factory userInputModuleFactory;
//     private StorageModule.Factory storageModuleFactory;
// 
//     private MaterialPreferences() {
//         userInputModuleFactory = new StandardUserInputFactory();
//         storageModuleFactory = new SharedPrefsStorageFactory(null);
//     }
// 
//     public MaterialPreferences setUserInputModule(UserInputModule.Factory factory) {
//         userInputModuleFactory = factory;
//         return this;
//     }
// 
//     public MaterialPreferences setStorageModule(StorageModule.Factory factory) {
//         storageModuleFactory = factory;
//         return this;
//     }
// 
//     public void setDefault() {
//         userInputModuleFactory = new StandardUserInputFactory();
//         storageModuleFactory = new SharedPrefsStorageFactory(null);
//     }
// 
// 
//     private static class StandardUserInputFactory implements UserInputModule.Factory {
//         @Override
//         public UserInputModule create(Context context) {
//             return new StandardUserInputModule(context);
//         }
//     }
// }


// Path: sample/src/main/java/com/yarolegovich/materialprefsample/MainActivity.java
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import com.yarolegovich.lovelyuserinput.LovelyInput;
import com.yarolegovich.mp.io.MaterialPreferences;
import java.util.HashMap;
import java.util.Map;

        switch (v.getId()) {
            case R.id.pref_form:
                startActivity(new Intent(this, FillTheFormActivity.class));
                break;
            case R.id.pref_configs:
                startActivity(new Intent(this, AppConfigsActivity.class));
                break;
        }
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (key.equals(Prefs.keys().KEY_USE_LOVELY)) {
            setUserInputModule(sharedPreferences.getBoolean(key, false));
        }
    }

    private void setUserInputModule(boolean shouldUseLovelyModule) {
        if (shouldUseLovelyModule) {
            MaterialPreferences.instance().setUserInputModule(createLovelyInputModule());
        } else {
            MaterialPreferences.instance().setDefault();
        }
    }

    private LovelyInput createLovelyInputModule() {
        Map<String, Integer> iconMappings = new HashMap<>();
        Prefs keys = Prefs.keys();
        iconMappings.put(keys.KEY_UPDATE_INTERVAL, R.drawable.ic_access_time_white_36dp);
        iconMappings.put(keys.KEY_LOCATION, R.drawable.ic_location_on_white_36dp);
        iconMappings.put(keys.KEY_TEMPERATURE, R.drawable.ic_thermometer_lines_white_36dp);