package com.thomasdh.roosterpgplus.Settings; import android.annotation.TargetApi; import android.os.Build; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; import com.google.android.gms.analytics.HitBuilders; import com.google.android.gms.analytics.Tracker; import com.thomasdh.roosterpgplus.CustomUI.ListPreferenceMultiSelect; import com.thomasdh.roosterpgplus.Data.Account; import com.thomasdh.roosterpgplus.Helpers.ExceptionHandler; import com.thomasdh.roosterpgplus.MainApplication; import com.thomasdh.roosterpgplus.R; import java.util.ArrayList; @TargetApi(Build.VERSION_CODES.HONEYCOMB) public class UserFragment extends ThemedPreferenceFragment { private PreferenceScreen preferenceScreen; /* UserPrefs */ private PreferenceCategory userCategory; private Preference myAccountPreference; private Preference logInPreference; private Preference extendPreference; private Preference changeUsernamePreference; private Preference changePasswordPreference; /* LLPrefs */ private PreferenceCategory leerlingCategory; private Preference aboutLLPreference; private ListPreferenceMultiSelect setClusterklassenPreference; private Preference resetClusterklassenPreference; /* LeraarPrefs */ private PreferenceCategory leraarCategory; private Preference aboutLerPreference; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences_user); Tracker tracker = MainApplication.getTracker(MainApplication.TrackerName.APP_TRACKER, getActivity().getApplicationContext()); tracker.setScreenName(Constants.ANALYTICS_FRAGMENT_SETTINGS_USER); tracker.send(new HitBuilders.ScreenViewBuilder().build()); /* Get prefs */ preferenceScreen = getPreferenceScreen(); // User userCategory = (PreferenceCategory) findPreference("account_category"); myAccountPreference = findPreference("about_user"); logInPreference = findPreference("log_in"); extendPreference = findPreference("account_upgraden"); changeUsernamePreference = findPreference("change_username"); changePasswordPreference = findPreference("change_password"); // Leerling leerlingCategory = (PreferenceCategory) findPreference("leerling_category"); aboutLLPreference = findPreference("about_leerling"); setClusterklassenPreference = (ListPreferenceMultiSelect) findPreference("clusterklassen"); resetClusterklassenPreference = findPreference("clusterklassen_reload"); // Leraar leraarCategory = (PreferenceCategory) findPreference("leraar_category"); aboutLerPreference = findPreference("about_leraar"); if(!Account.isSet()) { /* Remove prefs */ userCategory.removePreference(extendPreference); userCategory.removePreference(changePasswordPreference); userCategory.removePreference(changeUsernamePreference); preferenceScreen.removePreference(leerlingCategory); preferenceScreen.removePreference(leraarCategory); /* Login listener */ logInPreference.setOnPreferenceClickListener(preference -> { Account.getInstance(getActivity()).login(getActivity(), callback -> getActivity().recreate()); return true; }); logInPreference.setTitle("Log in"); logInPreference.setSummary("Log in om je persoonlijke rooster te tonen"); myAccountPreference.setTitle("Je bent nog niet ingelogd"); myAccountPreference.setSummary(null); return; } // Leerling if(Account.getUserType() == Account.UserType.LEERLING) { // Set up stuff preferenceScreen.removePreference(leraarCategory); aboutLLPreference.setSummary("Naam: " + Account.getName() + ", " + "Klas: " + Account.getLeerlingKlas()); // Clusterklassen set setClusterklassenPreference.setOnPreferenceChangeListener((preference, newValue) -> { ArrayList<String> newSubklassen = (ArrayList<String>) newValue; Account.getInstance(getActivity()).setClusterklassen(false, newSubklassen, result -> ExceptionHandler.handleException(new Exception("Clusterklassen bijgewerkt!"), getActivity(), ExceptionHandler.HandleType.SIMPLE)); return true; }); // Clusterklassen get Account.getInstance(getActivity()).getClusterklassen(true, result -> { ArrayList<Account.Subklas> subklasArray = (ArrayList<Account.Subklas>) result; if (subklasArray != null) { ArrayList<String> strings = new ArrayList<>(); ArrayList<String> namen = new ArrayList<>(); ArrayList<Boolean> enabled = new ArrayList<>(); for (Account.Subklas subklas : subklasArray) { strings.add(subklas.naam + ": " + subklas.vak + " van " + subklas.leraar); namen.add(subklas.naam); enabled.add(subklas.isIn); } boolean[] enabledNew = new boolean[enabled.size()]; for (int i = 0; i < enabled.size(); i++) { enabledNew[i] = enabled.get(i); } setClusterklassenPreference.setEntries(strings.toArray(new String[strings.size()]), enabledNew); setClusterklassenPreference.setEntryValues(namen.toArray(new String[namen.size()])); } }); setClusterklassenPreference.setEnabled(!Account.isAppAccount()); resetClusterklassenPreference.setEnabled(!Account.isAppAccount()); resetClusterklassenPreference.setOnPreferenceClickListener(preference -> { Account.getInstance(getActivity()).setClusterklassen(true, null, result -> ExceptionHandler.handleException(new Exception("Clusterklassen opnieuw ingesteld!"), getActivity(), ExceptionHandler.HandleType.SIMPLE)); return true; }); } else { // Leraar preferenceScreen.removePreference(leerlingCategory); aboutLerPreference.setSummary("Naam: " + Account.getName() + ", " + Account.getLeraarCode()); } /* Account section */ myAccountPreference.setSummary("Gebruikersnaam: " + Account.getUsername()); // Configure login button logInPreference.setOnPreferenceClickListener(preference -> { Account.getInstance(getActivity()).login(getActivity(), callback -> getActivity().recreate()); return true; }); if(!Account.isAppAccount()) { /* Userpass change */ userCategory.removePreference(extendPreference); changeUsernamePreference.setOnPreferenceClickListener(preference -> { Account.getInstance(getActivity()).changeUsername(callback -> myAccountPreference.setSummary("Gebruikersnaam: " + Account.getUsername())); return true; }); changePasswordPreference.setOnPreferenceClickListener(preference -> { Account.getInstance(getActivity()).changePassword(); return true; }); } else { /* Account upgraden */ userCategory.removePreference(changePasswordPreference); userCategory.removePreference(changeUsernamePreference); extendPreference.setOnPreferenceClickListener(preference -> { Account.getInstance(getActivity()).extend(callback -> getActivity().recreate()); return true; }); } } }