use of ar.rulosoft.mimanganu.componentes.Manga in project MiMangaNu by raulhaag.
the class MangaEden method getMangasFromSource.
private ArrayList<Manga> getMangasFromSource(String source) {
Pattern pattern = Pattern.compile("<tr>[^<]*<td>[^<]*<a href=\"/" + lang_2l + "/" + lang_2l + "-manga/(.+?)\" class=\"(.+?)\">(.+?)</a>", Pattern.DOTALL);
Matcher matcher = pattern.matcher(source);
ArrayList<Manga> mangas = new ArrayList<>();
while (matcher.find()) {
Manga manga = new Manga(getServerID(), matcher.group(3), HOST + "/" + lang_2l + "/" + lang_2l + "-manga/" + matcher.group(1), matcher.group(2).contains("close"));
mangas.add(manga);
}
return mangas;
}
use of ar.rulosoft.mimanganu.componentes.Manga in project MiMangaNu by raulhaag.
the class MangasRecAdapterText method onBindViewHolder.
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
final Manga m = mangas.get(position);
MangasHolder mHolder = (MangasHolder) holder;
mHolder.title.setText(m.getTitle());
mHolder.v.setTag(position);
mHolder.v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mangaClickListener != null) {
mangaClickListener.onMangaClick(m);
}
}
});
if (position == getItemCount() - 1 && lastItemListener != null)
lastItemListener.onRequestedLastItem();
}
use of ar.rulosoft.mimanganu.componentes.Manga in project MiMangaNu by raulhaag.
the class DownloadPoolService method initPool.
private void initPool() {
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "DPS_wakelock");
try {
wakeLock.acquire();
} catch (Exception e) {
e.printStackTrace();
}
Util.getInstance().createNotificationWithProgressbar(getApplicationContext(), mNotifyID, getResources().getString(R.string.downloading), "");
Manga manga = null;
ServerBase s = null;
String path = "";
int lcId = -1;
int n = -1;
errors = 0;
while (hasDownloadsPending()) {
if (slots > 0) {
slots--;
ChapterDownload dc = null;
int sig = 1;
int idx = 0;
while (idx < chapterDownloads.size()) {
ChapterDownload d = chapterDownloads.get(idx);
idx++;
// start notification code
if (n > chapterDownloads.size())
n = idx;
if (n < idx)
n = idx;
if (resetN) {
n = 0;
resetN = false;
}
if (resetE) {
errors = 0;
resetE = false;
}
// end notification code
if (d.chapter.getPages() == 0) {
if (d.status != DownloadStatus.ERROR && d.status != DownloadStatus.PAUSED)
try {
ServerBase server;
Manga m = Database.getManga(getApplicationContext(), d.chapter.getMangaID());
server = ServerBase.getServer(m.getServerId(), getApplicationContext());
server.chapterInit(d.chapter);
d.reset();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (d.chapter.getPages() == 0)
d.status = DownloadStatus.ERROR;
}
Database.updateChapter(getApplicationContext(), d.chapter);
}
if (d.getPagesStatusLength() == 0) {
d.reset();
}
if (d.status != DownloadStatus.ERROR && d.status != DownloadStatus.PAUSED) {
sig = d.getNext();
if (sig > -1) {
dc = d;
break;
}
}
}
if (dc != null) {
if (manga == null || manga.getId() != dc.chapter.getMangaID()) {
try {
manga = Database.getManga(actual.getApplicationContext(), dc.chapter.getMangaID());
s = ServerBase.getServer(manga.getServerId(), getApplicationContext());
} catch (Exception e) {
dc.status = DownloadStatus.ERROR;
}
}
if (lcId != dc.chapter.getId()) {
try {
lcId = dc.chapter.getId();
path = generateBasePath(s, manga, dc.chapter, getApplicationContext());
new File(path).mkdirs();
} catch (Exception e) {
dc.status = DownloadStatus.ERROR;
}
}
try {
if (errors < 1)
Util.getInstance().changeNotificationWithProgressbar(dc.getChapter().getPages(), sig, mNotifyID, getResources().getString(R.string.x_of_y_chapters_downloaded, (n - 1), chapterDownloads.size()), getResources().getString(R.string.downloading) + " " + dc.getChapter().getTitle(), true);
else {
Util.getInstance().changeNotificationWithProgressbar(dc.getChapter().getPages(), sig, mNotifyID, getResources().getString(R.string.x_of_y_chapters_downloaded, (n - 1), chapterDownloads.size()), "(" + getResources().getString(R.string.chapter_download_errors) + " " + errors + ")\n" + getResources().getString(R.string.downloading) + " " + dc.getChapter().getTitle(), true);
}
String source_file = s.getImageFrom(dc.chapter, sig);
String save_file = path + "/" + sig + ".jpg";
SingleDownload des;
des = new SingleDownload(getApplicationContext(), source_file, save_file, sig - 1, dc.chapter.getId(), dc, s.needRefererForImages());
des.setChangeListener(dc);
dc.setChangeListener(this);
new Thread(des).start();
} catch (Exception e) {
dc.setErrorIdx(sig - 1);
slots++;
}
} else if (slots == 1) {
break;
} else {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
slots++;
}
} else {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Util.getInstance().cancelNotification(mNotifyID);
actual = null;
stopSelf();
try {
if (wakeLock.isHeld())
wakeLock.release();
} catch (Exception e) {
e.printStackTrace();
}
}
use of ar.rulosoft.mimanganu.componentes.Manga in project MiMangaNu by raulhaag.
the class MainFragment method onContextItemSelected.
@Override
public boolean onContextItemSelected(MenuItem item) {
final Manga manga = ((MangasRecAdapter) recyclerView.getAdapter()).getItem(lastContextMenuIndex);
if (item.getItemId() == R.id.delete) {
new AlertDialog.Builder(getContext()).setTitle(R.string.app_name).setMessage(getString(R.string.manga_delete_confirm, manga.getTitle())).setNegativeButton(getString(android.R.string.no), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).setPositiveButton(getString(android.R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
DownloadPoolService.forceStop(manga.getId());
ServerBase serverBase = ServerBase.getServer(manga.getServerId(), getContext());
String path = Paths.generateBasePath(serverBase, manga, getActivity());
Util.getInstance().deleteRecursive(new File(path));
Database.deleteManga(getActivity(), manga.getId());
mMAdapter.remove(manga);
Util.getInstance().showFastSnackBar(getResources().getString(R.string.deleted, manga.getTitle()), getView(), getContext());
dialog.dismiss();
}
}).show();
} else if (item.getItemId() == R.id.noupdate) {
if (manga.isFinished()) {
manga.setFinished(false);
Database.setUpgradable(getActivity(), manga.getId(), false);
} else {
manga.setFinished(true);
Database.setUpgradable(getActivity(), manga.getId(), true);
}
} else if (item.getItemId() == R.id.download_all_chapters) {
ArrayList<Chapter> chapters = Database.getChapters(getActivity(), manga.getId(), Database.COL_CAP_DOWNLOADED + " != 1", true);
for (Chapter chapter : chapters) {
try {
DownloadPoolService.addChapterDownloadPool(getActivity(), chapter, false);
} catch (Exception e) {
Log.e(TAG, "Download add pool error", e);
}
}
if (chapters.size() > 1)
Util.getInstance().showFastSnackBar(getString(R.string.downloading) + " " + chapters.size() + " " + getString(R.string.chapters), getView(), getContext());
else
Util.getInstance().showFastSnackBar(getString(R.string.downloading) + " " + chapters.size() + " " + getString(R.string.chapter), getView(), getContext());
}
return super.onContextItemSelected(item);
}
use of ar.rulosoft.mimanganu.componentes.Manga in project MiMangaNu by raulhaag.
the class MainFragment method setListManga.
public void setListManga(boolean force) {
if (recyclerView != null) {
ArrayList<Manga> mangaList = new ArrayList<>();
/*
* sort_val: 0,1 = last_read (default), 2,3 = title, 4,5 = author
* all odd numbers are asc, even numbers are desc
*
* feel free to add more sort type */
int sort_val = PreferenceManager.getDefaultSharedPreferences(getContext()).getInt("manga_view_sort_by", 0);
String sort_by;
boolean sort_ord = sort_val % 2 == 0;
switch(sort_val) {
case 2:
case 3:
sort_by = Database.COL_NAME;
break;
case 4:
case 5:
sort_by = Database.COL_AUTHOR;
break;
case 6:
case 7:
sort_by = Database.COL_IS_FINISHED;
sort_ord = !sort_ord;
break;
case 8:
case 9:
sort_by = Database.COL_ID;
sort_ord = !sort_ord;
break;
case 0:
case 1:
default:
sort_by = Database.COL_LAST_READ;
sort_ord = !sort_ord;
}
int value = PreferenceManager.getDefaultSharedPreferences(getContext()).getInt(SELECT_MODE, MODE_SHOW_ALL);
switch(value) {
case MODE_SHOW_ALL:
mangaList = Database.getMangas(getContext(), sort_by, sort_ord);
break;
case MODE_HIDE_READ:
mangaList = Database.getMangasCondition(getContext(), "id IN (" + "SELECT manga_id " + "FROM capitulos " + "WHERE estado != 1 GROUP BY manga_id)", sort_by, sort_ord);
break;
default:
break;
}
if (mMAdapter == null || sort_val < 2 || mangaList.size() > mMAdapter.getItemCount() || force) {
mMAdapter = new MangasRecAdapter(mangaList, getContext(), MainActivity.darkTheme, MainFragment.this);
mMAdapter.setMangaClickListener(MainFragment.this);
recyclerView.setAdapter(mMAdapter);
}
} else {
Log.i(TAG, "rec_view was null");
}
}
Aggregations