Browse Source

Catalogue now has a dropdown menu to select or change the source

inorichi 9 years ago
parent
commit
4630a5ed1a
20 changed files with 233 additions and 205 deletions
  1. 4 4
      app/src/main/java/eu/kanade/mangafeed/data/preference/PreferencesHelper.java
  2. 10 10
      app/src/main/java/eu/kanade/mangafeed/data/source/SourceManager.java
  3. 5 1
      app/src/main/java/eu/kanade/mangafeed/data/source/base/BaseSource.java
  4. 3 1
      app/src/main/java/eu/kanade/mangafeed/data/source/base/Source.java
  5. 2 2
      app/src/main/java/eu/kanade/mangafeed/data/source/online/english/Batoto.java
  6. 2 2
      app/src/main/java/eu/kanade/mangafeed/data/source/online/english/Kissmanga.java
  7. 3 3
      app/src/main/java/eu/kanade/mangafeed/data/source/online/english/Mangafox.java
  8. 3 3
      app/src/main/java/eu/kanade/mangafeed/data/source/online/english/Mangahere.java
  9. 2 4
      app/src/main/java/eu/kanade/mangafeed/injection/component/AppComponent.java
  10. 53 13
      app/src/main/java/eu/kanade/mangafeed/ui/catalogue/CatalogueFragment.java
  11. 18 3
      app/src/main/java/eu/kanade/mangafeed/ui/catalogue/CataloguePresenter.java
  12. 120 0
      app/src/main/java/eu/kanade/mangafeed/ui/catalogue/CatalogueSpinnerAdapter.java
  13. 0 69
      app/src/main/java/eu/kanade/mangafeed/ui/catalogue/SourceFragment.java
  14. 0 28
      app/src/main/java/eu/kanade/mangafeed/ui/catalogue/SourceHolder.java
  15. 0 30
      app/src/main/java/eu/kanade/mangafeed/ui/catalogue/SourcePresenter.java
  16. 6 2
      app/src/main/java/eu/kanade/mangafeed/ui/main/MainActivity.java
  17. 1 1
      app/src/main/java/eu/kanade/mangafeed/ui/reader/ReaderPresenter.java
  18. 0 13
      app/src/main/res/layout/fragment_source.xml
  19. 0 16
      app/src/main/res/layout/item_source.xml
  20. 1 0
      app/src/main/res/values/strings.xml

+ 4 - 4
app/src/main/java/eu/kanade/mangafeed/data/preference/PreferencesHelper.java

@@ -88,17 +88,17 @@ public class PreferencesHelper {
     }
 
     public String getSourceUsername(Source source) {
-        return prefs.getString(SOURCE_ACCOUNT_USERNAME + source.getSourceId(), "");
+        return prefs.getString(SOURCE_ACCOUNT_USERNAME + source.getId(), "");
     }
 
     public String getSourcePassword(Source source) {
-        return prefs.getString(SOURCE_ACCOUNT_PASSWORD + source.getSourceId(), "");
+        return prefs.getString(SOURCE_ACCOUNT_PASSWORD + source.getId(), "");
     }
 
     public void setSourceCredentials(Source source, String username, String password) {
         prefs.edit()
-                .putString(SOURCE_ACCOUNT_USERNAME + source.getSourceId(), username)
-                .putString(SOURCE_ACCOUNT_PASSWORD + source.getSourceId(), password)
+                .putString(SOURCE_ACCOUNT_USERNAME + source.getId(), username)
+                .putString(SOURCE_ACCOUNT_PASSWORD + source.getId(), password)
                 .apply();
     }
 

+ 10 - 10
app/src/main/java/eu/kanade/mangafeed/data/source/SourceManager.java

@@ -19,21 +19,21 @@ public class SourceManager {
     public static final int MANGAFOX = 3;
     public static final int KISSMANGA = 4;
 
-    private HashMap<Integer, Source> mSourcesMap;
+    private HashMap<Integer, Source> sourcesMap;
     private Context context;
 
     public SourceManager(Context context) {
-        mSourcesMap = new HashMap<>();
+        sourcesMap = new HashMap<>();
         this.context = context;
 
         initializeSources();
     }
 
     public Source get(int sourceKey) {
-        if (!mSourcesMap.containsKey(sourceKey)) {
-            mSourcesMap.put(sourceKey, createSource(sourceKey));
+        if (!sourcesMap.containsKey(sourceKey)) {
+            sourcesMap.put(sourceKey, createSource(sourceKey));
         }
-        return mSourcesMap.get(sourceKey);
+        return sourcesMap.get(sourceKey);
     }
 
     private Source createSource(int sourceKey) {
@@ -52,14 +52,14 @@ public class SourceManager {
     }
 
     private void initializeSources() {
-        mSourcesMap.put(BATOTO, createSource(BATOTO));
-        mSourcesMap.put(MANGAHERE, createSource(MANGAHERE));
-        mSourcesMap.put(MANGAFOX, createSource(MANGAFOX));
-        mSourcesMap.put(KISSMANGA, createSource(KISSMANGA));
+        sourcesMap.put(BATOTO, createSource(BATOTO));
+        sourcesMap.put(MANGAHERE, createSource(MANGAHERE));
+        sourcesMap.put(MANGAFOX, createSource(MANGAFOX));
+        sourcesMap.put(KISSMANGA, createSource(KISSMANGA));
     }
 
     public List<Source> getSources() {
-        return new ArrayList<>(mSourcesMap.values());
+        return new ArrayList<>(sourcesMap.values());
     }
 
 }

+ 5 - 1
app/src/main/java/eu/kanade/mangafeed/data/source/base/BaseSource.java

@@ -18,7 +18,7 @@ public abstract class BaseSource {
     public abstract String getName();
 
     // Id of the source (must be declared and obtained from SourceManager to avoid conflicts)
-    public abstract int getSourceId();
+    public abstract int getId();
 
     // Base url of the source, like: http://example.com
     public abstract String getBaseUrl();
@@ -95,4 +95,8 @@ public abstract class BaseSource {
         return builder;
     }
 
+    @Override
+    public String toString() {
+        return getName();
+    }
 }

+ 3 - 1
app/src/main/java/eu/kanade/mangafeed/data/source/base/Source.java

@@ -34,6 +34,8 @@ public abstract class Source extends BaseSource {
     protected Headers requestHeaders;
     protected LazyHeaders glideHeaders;
 
+    public Source() {}
+
     public Source(Context context) {
         App.get(context).getComponent().inject(this);
         requestHeaders = headersBuilder().build();
@@ -188,7 +190,7 @@ public abstract class Source extends BaseSource {
     }
 
     protected String getChapterCacheKey(String chapterUrl) {
-        return getSourceId() + chapterUrl;
+        return getId() + chapterUrl;
     }
 
     protected LazyHeaders.Builder glideHeadersBuilder() {

+ 2 - 2
app/src/main/java/eu/kanade/mangafeed/data/source/online/english/Batoto.java

@@ -70,7 +70,7 @@ public class Batoto extends Source {
     }
 
     @Override
-    public int getSourceId() {
+    public int getId() {
         return SourceManager.BATOTO;
     }
 
@@ -218,7 +218,7 @@ public class Batoto extends Source {
         Element urlElement = htmlBlock.select("a[href^=http://bato.to]").first();
         Element updateElement = htmlBlock.select("td").get(5);
 
-        mangaFromHtmlBlock.source = getSourceId();
+        mangaFromHtmlBlock.source = getId();
 
         if (urlElement != null) {
             mangaFromHtmlBlock.setUrl(urlElement.attr("href"));

+ 2 - 2
app/src/main/java/eu/kanade/mangafeed/data/source/online/english/Kissmanga.java

@@ -55,7 +55,7 @@ public class Kissmanga extends Source {
     }
 
     @Override
-    public int getSourceId() {
+    public int getId() {
         return SourceManager.KISSMANGA;
     }
 
@@ -94,7 +94,7 @@ public class Kissmanga extends Source {
 
     private Manga constructPopularMangaFromHtmlBlock(Element htmlBlock) {
         Manga mangaFromHtmlBlock = new Manga();
-        mangaFromHtmlBlock.source = getSourceId();
+        mangaFromHtmlBlock.source = getId();
 
         Element urlElement = htmlBlock.select("td a:eq(0)").first();
 

+ 3 - 3
app/src/main/java/eu/kanade/mangafeed/data/source/online/english/Mangafox.java

@@ -40,7 +40,7 @@ public class Mangafox extends Source {
     }
 
     @Override
-    public int getSourceId() {
+    public int getId() {
         return SourceManager.MANGAFOX;
     }
 
@@ -79,7 +79,7 @@ public class Mangafox extends Source {
 
     private Manga constructPopularMangaFromHtmlBlock(Element htmlBlock) {
         Manga mangaFromHtmlBlock = new Manga();
-        mangaFromHtmlBlock.source = getSourceId();
+        mangaFromHtmlBlock.source = getId();
 
         Element urlElement = htmlBlock.select("a.title").first();
 
@@ -115,7 +115,7 @@ public class Mangafox extends Source {
 
     private Manga constructSearchMangaFromHtmlBlock(Element htmlBlock) {
         Manga mangaFromHtmlBlock = new Manga();
-        mangaFromHtmlBlock.source = getSourceId();
+        mangaFromHtmlBlock.source = getId();
 
         Element urlElement = htmlBlock.select("a.series_preview").first();
 

+ 3 - 3
app/src/main/java/eu/kanade/mangafeed/data/source/online/english/Mangahere.java

@@ -40,7 +40,7 @@ public class Mangahere extends Source {
     }
 
     @Override
-    public int getSourceId() {
+    public int getId() {
         return SourceManager.MANGAHERE;
     }
 
@@ -117,7 +117,7 @@ public class Mangahere extends Source {
 
     private Manga constructPopularMangaFromHtmlBlock(Element htmlBlock) {
         Manga mangaFromHtmlBlock = new Manga();
-        mangaFromHtmlBlock.source = getSourceId();
+        mangaFromHtmlBlock.source = getId();
 
         Element urlElement = htmlBlock.select("div.title > a").first();
 
@@ -153,7 +153,7 @@ public class Mangahere extends Source {
 
     private Manga constructSearchMangaFromHtmlBlock(Element htmlBlock) {
         Manga mangaFromHtmlBlock = new Manga();
-        mangaFromHtmlBlock.source = getSourceId();
+        mangaFromHtmlBlock.source = getId();
 
         Element urlElement = htmlBlock.select("a.manga_info").first();
 

+ 2 - 4
app/src/main/java/eu/kanade/mangafeed/injection/component/AppComponent.java

@@ -5,15 +5,14 @@ import android.app.Application;
 import javax.inject.Singleton;
 
 import dagger.Component;
-import eu.kanade.mangafeed.data.mangasync.services.MyAnimeList;
-import eu.kanade.mangafeed.data.sync.UpdateMangaSyncService;
 import eu.kanade.mangafeed.data.download.DownloadService;
+import eu.kanade.mangafeed.data.mangasync.services.MyAnimeList;
 import eu.kanade.mangafeed.data.source.base.Source;
 import eu.kanade.mangafeed.data.sync.LibraryUpdateService;
+import eu.kanade.mangafeed.data.sync.UpdateMangaSyncService;
 import eu.kanade.mangafeed.injection.module.AppModule;
 import eu.kanade.mangafeed.injection.module.DataModule;
 import eu.kanade.mangafeed.ui.catalogue.CataloguePresenter;
-import eu.kanade.mangafeed.ui.catalogue.SourcePresenter;
 import eu.kanade.mangafeed.ui.download.DownloadPresenter;
 import eu.kanade.mangafeed.ui.library.LibraryPresenter;
 import eu.kanade.mangafeed.ui.manga.MangaActivity;
@@ -37,7 +36,6 @@ public interface AppComponent {
 
     void inject(LibraryPresenter libraryPresenter);
     void inject(MangaPresenter mangaPresenter);
-    void inject(SourcePresenter sourcePresenter);
     void inject(CataloguePresenter cataloguePresenter);
     void inject(MangaInfoPresenter mangaInfoPresenter);
     void inject(ChaptersPresenter chaptersPresenter);

+ 53 - 13
app/src/main/java/eu/kanade/mangafeed/ui/catalogue/CatalogueFragment.java

@@ -1,8 +1,10 @@
 package eu.kanade.mangafeed.ui.catalogue;
 
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.widget.SearchView;
+import android.support.v7.widget.Toolbar;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -10,9 +12,11 @@ import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.AdapterView;
 import android.widget.GridView;
 import android.widget.ImageView;
 import android.widget.ProgressBar;
+import android.widget.Spinner;
 
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -22,9 +26,12 @@ import butterknife.ButterKnife;
 import butterknife.OnItemClick;
 import eu.kanade.mangafeed.R;
 import eu.kanade.mangafeed.data.database.models.Manga;
+import eu.kanade.mangafeed.data.source.base.Source;
 import eu.kanade.mangafeed.ui.base.fragment.BaseRxFragment;
+import eu.kanade.mangafeed.ui.main.MainActivity;
 import eu.kanade.mangafeed.ui.manga.MangaActivity;
 import eu.kanade.mangafeed.util.PageBundle;
+import eu.kanade.mangafeed.util.ToastUtil;
 import eu.kanade.mangafeed.widget.EndlessScrollListener;
 import icepick.Icepick;
 import icepick.State;
@@ -40,23 +47,20 @@ public class CatalogueFragment extends BaseRxFragment<CataloguePresenter> {
     @Bind(R.id.progress) ProgressBar progress;
     @Bind(R.id.progress_grid) ProgressBar progressGrid;
 
+    private Toolbar toolbar;
+    private Spinner spinner;
     private CatalogueAdapter adapter;
     private EndlessScrollListener scrollListener;
 
     @State String query = "";
+    @State int selectedIndex = -1;
     private final int SEARCH_TIMEOUT = 1000;
 
     private PublishSubject<String> queryDebouncerSubject;
     private Subscription queryDebouncerSubscription;
 
-    public final static String SOURCE_ID = "source_id";
-
-    public static CatalogueFragment newInstance(int sourceId) {
-        CatalogueFragment fragment = new CatalogueFragment();
-        Bundle args = new Bundle();
-        args.putInt(SOURCE_ID, sourceId);
-        fragment.setArguments(args);
-        return fragment;
+    public static CatalogueFragment newInstance() {
+        return new CatalogueFragment();
     }
 
     @Override
@@ -78,13 +82,43 @@ public class CatalogueFragment extends BaseRxFragment<CataloguePresenter> {
         gridView.setAdapter(adapter);
         gridView.setOnScrollListener(scrollListener);
 
-        int sourceId = getArguments().getInt(SOURCE_ID, -1);
+        // Create toolbar spinner
+        Context themedContext = getBaseActivity().getSupportActionBar() != null ?
+                getBaseActivity().getSupportActionBar().getThemedContext() : getActivity();
+        spinner = new Spinner(themedContext);
+        CatalogueSpinnerAdapter spinnerAdapter = new CatalogueSpinnerAdapter(themedContext,
+                android.R.layout.simple_spinner_item, getPresenter().getEnabledSources());
+        spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        spinner.setAdapter(spinnerAdapter);
+        spinner.setSelection(savedState == null ? spinnerAdapter.getEmptyIndex() : selectedIndex);
+        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                Source source = spinnerAdapter.getItem(position);
+                // We add an empty source with id -1 that acts as a placeholder to show a hint
+                // that asks to select a source
+                if (source.getId() != -1 && selectedIndex != position) {
+                    // Set previous selection if it's not a valid source and notify the user
+                    if (!getPresenter().isValidSource(source)) {
+                        spinner.setSelection(selectedIndex != -1 ? selectedIndex :
+                                spinnerAdapter.getEmptyIndex());
+                        ToastUtil.showShort(getActivity(), R.string.source_requires_login);
+                    } else {
+                        selectedIndex = position;
+                        showProgressBar();
+                        getPresenter().startRequesting(source);
+                    }
+                }
+            }
 
-        showProgressBar();
-        if (savedState == null)
-            getPresenter().startRequesting(sourceId);
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {}
+        });
+
+        setToolbarTitle("");
+        toolbar = ((MainActivity)getActivity()).getToolbar();
+        toolbar.addView(spinner);
 
-        setToolbarTitle(getPresenter().getSource().getName());
         return view;
     }
 
@@ -128,6 +162,12 @@ public class CatalogueFragment extends BaseRxFragment<CataloguePresenter> {
         super.onStop();
     }
 
+    @Override
+    public void onDestroyView() {
+        toolbar.removeView(spinner);
+        super.onDestroyView();
+    }
+
     @Override
     public void onSaveInstanceState(Bundle outState) {
         Icepick.saveInstanceState(this, outState);

+ 18 - 3
app/src/main/java/eu/kanade/mangafeed/ui/catalogue/CataloguePresenter.java

@@ -13,6 +13,7 @@ import javax.inject.Inject;
 import eu.kanade.mangafeed.data.cache.CoverCache;
 import eu.kanade.mangafeed.data.database.DatabaseHelper;
 import eu.kanade.mangafeed.data.database.models.Manga;
+import eu.kanade.mangafeed.data.preference.PreferencesHelper;
 import eu.kanade.mangafeed.data.source.SourceManager;
 import eu.kanade.mangafeed.data.source.base.Source;
 import eu.kanade.mangafeed.data.source.model.MangasPage;
@@ -30,6 +31,7 @@ public class CataloguePresenter extends BasePresenter<CatalogueFragment> {
     @Inject SourceManager sourceManager;
     @Inject DatabaseHelper db;
     @Inject CoverCache coverCache;
+    @Inject PreferencesHelper prefs;
 
     private Source source;
 
@@ -85,8 +87,8 @@ public class CataloguePresenter extends BasePresenter<CatalogueFragment> {
         super.onDestroy();
     }
 
-    public void startRequesting(int sourceId) {
-        source = sourceManager.get(sourceId);
+    public void startRequesting(Source source) {
+        this.source = source;
         restartRequest(null);
     }
 
@@ -123,7 +125,7 @@ public class CataloguePresenter extends BasePresenter<CatalogueFragment> {
     }
 
     private Manga networkToLocalManga(Manga networkManga) {
-        List<Manga> dbResult = db.getManga(networkManga.url, source.getSourceId()).executeAsBlocking();
+        List<Manga> dbResult = db.getManga(networkManga.url, source.getId()).executeAsBlocking();
         Manga localManga = !dbResult.isEmpty() ? dbResult.get(0) : null;
         if (localManga == null) {
             PutResult result = db.insertManga(networkManga).executeAsBlocking();
@@ -152,4 +154,17 @@ public class CataloguePresenter extends BasePresenter<CatalogueFragment> {
         return lastMangasPage != null && lastMangasPage.nextPageUrl != null;
     }
 
+    public boolean isValidSource(Source source) {
+        if (!source.isLoginRequired() || source.isLogged())
+            return true;
+
+        return !(prefs.getSourceUsername(source).equals("")
+                || prefs.getSourcePassword(source).equals(""));
+    }
+
+    public List<Source> getEnabledSources() {
+        // TODO filter by enabled source
+        return sourceManager.getSources();
+    }
+
 }

+ 120 - 0
app/src/main/java/eu/kanade/mangafeed/ui/catalogue/CatalogueSpinnerAdapter.java

@@ -0,0 +1,120 @@
+package eu.kanade.mangafeed.ui.catalogue;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import org.jsoup.nodes.Document;
+
+import java.util.List;
+
+import eu.kanade.mangafeed.R;
+import eu.kanade.mangafeed.data.database.models.Chapter;
+import eu.kanade.mangafeed.data.database.models.Manga;
+import eu.kanade.mangafeed.data.source.base.Source;
+import eu.kanade.mangafeed.data.source.model.MangasPage;
+
+public class CatalogueSpinnerAdapter extends ArrayAdapter<Source> {
+
+    public CatalogueSpinnerAdapter(Context context, int resource, List<Source> sources) {
+        super(context, resource, sources);
+        sources.add(new SimpleSource());
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+
+        View v = super.getView(position, convertView, parent);
+        if (position == getCount()) {
+            ((TextView)v.findViewById(android.R.id.text1)).setText("");
+            ((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount()).getName());
+        }
+
+        return v;
+    }
+
+    @Override
+    public int getCount() {
+        return super.getCount()-1; // you dont display last item. It is used as hint.
+    }
+
+    public int getEmptyIndex() {
+        return getCount();
+    }
+
+    private class SimpleSource extends Source {
+
+        @Override
+        public String getName() {
+            return getContext().getString(R.string.select_source);
+        }
+
+        @Override
+        public int getId() {
+            return -1;
+        }
+
+        @Override
+        public String getBaseUrl() {
+            return null;
+        }
+
+        @Override
+        public boolean isLoginRequired() {
+            return false;
+        }
+
+        @Override
+        protected String getInitialPopularMangasUrl() {
+            return null;
+        }
+
+        @Override
+        protected String getInitialSearchUrl(String query) {
+            return null;
+        }
+
+        @Override
+        protected List<Manga> parsePopularMangasFromHtml(Document parsedHtml) {
+            return null;
+        }
+
+        @Override
+        protected String parseNextPopularMangasUrl(Document parsedHtml, MangasPage page) {
+            return null;
+        }
+
+        @Override
+        protected List<Manga> parseSearchFromHtml(Document parsedHtml) {
+            return null;
+        }
+
+        @Override
+        protected String parseNextSearchUrl(Document parsedHtml, MangasPage page, String query) {
+            return null;
+        }
+
+        @Override
+        protected Manga parseHtmlToManga(String mangaUrl, String unparsedHtml) {
+            return null;
+        }
+
+        @Override
+        protected List<Chapter> parseHtmlToChapters(String unparsedHtml) {
+            return null;
+        }
+
+        @Override
+        protected List<String> parseHtmlToPageUrls(String unparsedHtml) {
+            return null;
+        }
+
+        @Override
+        protected String parseHtmlToImageUrl(String unparsedHtml) {
+            return null;
+        }
+    }
+
+}

+ 0 - 69
app/src/main/java/eu/kanade/mangafeed/ui/catalogue/SourceFragment.java

@@ -1,69 +0,0 @@
-package eu.kanade.mangafeed.ui.catalogue;
-
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ListView;
-import android.widget.Toast;
-
-import java.util.List;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import butterknife.OnItemClick;
-import eu.kanade.mangafeed.R;
-import eu.kanade.mangafeed.data.source.base.Source;
-import eu.kanade.mangafeed.ui.main.MainActivity;
-import eu.kanade.mangafeed.ui.base.fragment.BaseRxFragment;
-import nucleus.factory.RequiresPresenter;
-import uk.co.ribot.easyadapter.EasyAdapter;
-
-@RequiresPresenter(SourcePresenter.class)
-public class SourceFragment extends BaseRxFragment<SourcePresenter> {
-
-    @Bind(R.id.catalogue_list) ListView source_list;
-
-    private EasyAdapter<Source> adapter;
-
-    public static SourceFragment newInstance() {
-        return new SourceFragment();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // Inflate the layout for this fragment
-        View view = inflater.inflate(R.layout.fragment_source, container, false);
-        ButterKnife.bind(this, view);
-
-        setToolbarTitle(R.string.label_catalogues);
-
-        createAdapter();
-
-        return view;
-    }
-
-    @OnItemClick(R.id.catalogue_list)
-    public void onSourceClick(int position) {
-        Source source = adapter.getItem(position);
-        MainActivity activity = (MainActivity) getActivity();
-
-        if (getPresenter().isValidSource(source)) {
-            CatalogueFragment fragment = CatalogueFragment.newInstance(source.getSourceId());
-            activity.setFragment(fragment);
-        } else {
-            Toast.makeText(getActivity(), R.string.source_requires_login, Toast.LENGTH_SHORT).show();
-        }
-    }
-
-    private void createAdapter() {
-        adapter = new EasyAdapter<>(getActivity(), SourceHolder.class);
-        source_list.setAdapter(adapter);
-    }
-
-    public void setItems(List<Source> items) {
-        adapter.setItems(items);
-    }
-
-}

+ 0 - 28
app/src/main/java/eu/kanade/mangafeed/ui/catalogue/SourceHolder.java

@@ -1,28 +0,0 @@
-package eu.kanade.mangafeed.ui.catalogue;
-
-import android.view.View;
-import android.widget.TextView;
-
-import eu.kanade.mangafeed.R;
-import eu.kanade.mangafeed.data.source.base.Source;
-import uk.co.ribot.easyadapter.ItemViewHolder;
-import uk.co.ribot.easyadapter.PositionInfo;
-import uk.co.ribot.easyadapter.annotations.LayoutId;
-import uk.co.ribot.easyadapter.annotations.ViewId;
-
-
-@LayoutId(R.layout.item_source)
-public class SourceHolder extends ItemViewHolder<Source> {
-
-    @ViewId(R.id.source_name)
-    TextView source_name;
-
-    public SourceHolder(View view) {
-        super(view);
-    }
-
-    @Override
-    public void onSetValues(Source item, PositionInfo positionInfo) {
-        source_name.setText(item.getName());
-    }
-}

+ 0 - 30
app/src/main/java/eu/kanade/mangafeed/ui/catalogue/SourcePresenter.java

@@ -1,30 +0,0 @@
-package eu.kanade.mangafeed.ui.catalogue;
-
-import javax.inject.Inject;
-
-import eu.kanade.mangafeed.data.preference.PreferencesHelper;
-import eu.kanade.mangafeed.data.source.SourceManager;
-import eu.kanade.mangafeed.data.source.base.Source;
-import eu.kanade.mangafeed.ui.base.presenter.BasePresenter;
-
-
-public class SourcePresenter extends BasePresenter<SourceFragment> {
-
-    @Inject SourceManager sourceManager;
-    @Inject PreferencesHelper prefs;
-
-    @Override
-    protected void onTakeView(SourceFragment view) {
-        super.onTakeView(view);
-
-        view.setItems(sourceManager.getSources());
-    }
-
-    public boolean isValidSource(Source source) {
-        if (!source.isLoginRequired() || source.isLogged())
-            return true;
-
-        return !(prefs.getSourceUsername(source).equals("")
-                || prefs.getSourcePassword(source).equals(""));
-    }
-}

+ 6 - 2
app/src/main/java/eu/kanade/mangafeed/ui/main/MainActivity.java

@@ -14,7 +14,7 @@ import butterknife.Bind;
 import butterknife.ButterKnife;
 import eu.kanade.mangafeed.R;
 import eu.kanade.mangafeed.ui.base.activity.BaseActivity;
-import eu.kanade.mangafeed.ui.catalogue.SourceFragment;
+import eu.kanade.mangafeed.ui.catalogue.CatalogueFragment;
 import eu.kanade.mangafeed.ui.download.DownloadFragment;
 import eu.kanade.mangafeed.ui.library.LibraryFragment;
 import eu.kanade.mangafeed.ui.setting.SettingsActivity;
@@ -80,7 +80,7 @@ public class MainActivity extends BaseActivity {
                                     case R.id.nav_drawer_recent_updates:
                                         break;
                                     case R.id.nav_drawer_catalogues:
-                                        setFragment(SourceFragment.newInstance());
+                                        setFragment(CatalogueFragment.newInstance());
                                         break;
                                     case R.id.nav_drawer_downloads:
                                         setFragment(DownloadFragment.newInstance());
@@ -111,4 +111,8 @@ public class MainActivity extends BaseActivity {
         fragmentStack.replace(fragment);
     }
 
+    public Toolbar getToolbar() {
+        return toolbar;
+    }
+
 }

+ 1 - 1
app/src/main/java/eu/kanade/mangafeed/ui/reader/ReaderPresenter.java

@@ -128,7 +128,7 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> {
         EventBus.getDefault().removeStickyEvent(event);
         manga = event.getManga();
         source = event.getSource();
-        sourceId = source.getSourceId();
+        sourceId = source.getId();
         loadChapter(event.getChapter());
     }
 

+ 0 - 13
app/src/main/res/layout/fragment_source.xml

@@ -1,13 +0,0 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context="eu.kanade.mangafeed.ui.catalogue.SourceFragment">
-
-
-    <ListView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:id="@+id/catalogue_list" />
-
-</LinearLayout>

+ 0 - 16
app/src/main/res/layout/item_source.xml

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <TextView
-        android:layout_width="match_parent"
-        android:layout_height="50dp"
-        tools:text="New Text"
-        android:id="@+id/source_name"
-        android:gravity="center_vertical"
-        android:paddingLeft="15dp"/>
-
-</LinearLayout>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -90,6 +90,7 @@
 
     <!-- Catalogue fragment -->
     <string name="source_requires_login">This source requires login</string>
+    <string name="select_source">Select a source</string>
 
     <!-- Manga info fragment -->
     <string name="manga_detail_tab">Info</string>