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

This commit is contained in:
inorichi
2015-12-14 16:51:12 +01:00
parent 8dca7fe79a
commit 4630a5ed1a
20 changed files with 233 additions and 205 deletions

View File

@@ -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();
}

View File

@@ -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());
}
}

View File

@@ -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();
}
}

View File

@@ -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() {

View File

@@ -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"));

View File

@@ -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();

View File

@@ -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();

View File

@@ -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();