SettingsAccountsFragment.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package eu.kanade.mangafeed.ui.setting;
  2. import android.os.Bundle;
  3. import android.preference.PreferenceCategory;
  4. import android.preference.PreferenceFragment;
  5. import android.preference.PreferenceScreen;
  6. import java.util.List;
  7. import javax.inject.Inject;
  8. import eu.kanade.mangafeed.App;
  9. import eu.kanade.mangafeed.R;
  10. import eu.kanade.mangafeed.data.chaptersync.BaseChapterSync;
  11. import eu.kanade.mangafeed.data.chaptersync.ChapterSyncManager;
  12. import eu.kanade.mangafeed.data.preference.PreferencesHelper;
  13. import eu.kanade.mangafeed.data.source.SourceManager;
  14. import eu.kanade.mangafeed.data.source.base.Source;
  15. import eu.kanade.mangafeed.ui.base.activity.BaseActivity;
  16. import eu.kanade.mangafeed.ui.setting.dialog.ChapterSyncLoginDialog;
  17. import eu.kanade.mangafeed.ui.setting.dialog.SourceLoginDialog;
  18. import rx.Observable;
  19. public class SettingsAccountsFragment extends PreferenceFragment {
  20. @Inject PreferencesHelper preferences;
  21. @Inject SourceManager sourceManager;
  22. @Inject ChapterSyncManager syncManager;
  23. public static SettingsAccountsFragment newInstance() {
  24. return new SettingsAccountsFragment();
  25. }
  26. public void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. App.get(getActivity()).getComponent().inject(this);
  29. addPreferencesFromResource(R.xml.pref_accounts);
  30. PreferenceScreen screen = getPreferenceScreen();
  31. List<Source> sourceAccounts = getSourcesWithLogin();
  32. PreferenceCategory sourceCategory = new PreferenceCategory(screen.getContext());
  33. sourceCategory.setTitle("Sources");
  34. screen.addPreference(sourceCategory);
  35. for (Source source : sourceAccounts) {
  36. SourceLoginDialog dialog = new SourceLoginDialog(
  37. screen.getContext(), preferences, source);
  38. dialog.setTitle(source.getName());
  39. sourceCategory.addPreference(dialog);
  40. }
  41. PreferenceCategory chapterSyncCategory = new PreferenceCategory(screen.getContext());
  42. chapterSyncCategory.setTitle("Sync");
  43. screen.addPreference(chapterSyncCategory);
  44. for (BaseChapterSync sync : syncManager.getChapterSyncServices()) {
  45. ChapterSyncLoginDialog dialog = new ChapterSyncLoginDialog(
  46. screen.getContext(), preferences, sync);
  47. dialog.setTitle(sync.getName());
  48. chapterSyncCategory.addPreference(dialog);
  49. }
  50. }
  51. @Override
  52. public void onResume() {
  53. super.onResume();
  54. ((BaseActivity)getActivity())
  55. .setToolbarTitle(getString(R.string.pref_category_accounts));
  56. }
  57. private List<Source> getSourcesWithLogin() {
  58. return Observable.from(sourceManager.getSources())
  59. .filter(Source::isLoginRequired)
  60. .toList()
  61. .toBlocking()
  62. .single();
  63. }
  64. }