Search in sources :

Example 26 with Manga

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;
}
Also used : Pattern(java.util.regex.Pattern) Matcher(java.util.regex.Matcher) ArrayList(java.util.ArrayList) Manga(ar.rulosoft.mimanganu.componentes.Manga)

Example 27 with Manga

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();
}
Also used : RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) View(android.view.View) Manga(ar.rulosoft.mimanganu.componentes.Manga)

Example 28 with Manga

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();
    }
}
Also used : PowerManager(android.os.PowerManager) ServerBase(ar.rulosoft.mimanganu.servers.ServerBase) File(java.io.File) Manga(ar.rulosoft.mimanganu.componentes.Manga)

Example 29 with Manga

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);
}
Also used : AlertDialog(android.app.AlertDialog) ServerBase(ar.rulosoft.mimanganu.servers.ServerBase) DialogInterface(android.content.DialogInterface) Chapter(ar.rulosoft.mimanganu.componentes.Chapter) MangasRecAdapter(ar.rulosoft.mimanganu.adapters.MangasRecAdapter) File(java.io.File) Manga(ar.rulosoft.mimanganu.componentes.Manga)

Example 30 with Manga

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");
    }
}
Also used : ArrayList(java.util.ArrayList) MangasRecAdapter(ar.rulosoft.mimanganu.adapters.MangasRecAdapter) Manga(ar.rulosoft.mimanganu.componentes.Manga)

Aggregations

Manga (ar.rulosoft.mimanganu.componentes.Manga)61 ArrayList (java.util.ArrayList)48 Matcher (java.util.regex.Matcher)40 Pattern (java.util.regex.Pattern)40 JSONObject (org.json.JSONObject)6 View (android.view.View)5 Navigator (ar.rulosoft.navegadores.Navigator)5 Chapter (ar.rulosoft.mimanganu.componentes.Chapter)4 AsyncAddManga (ar.rulosoft.mimanganu.utils.AsyncAddManga)4 JSONArray (org.json.JSONArray)4 MenuInflater (android.view.MenuInflater)3 ServerBase (ar.rulosoft.mimanganu.servers.ServerBase)3 List (java.util.List)3 Bundle (android.os.Bundle)2 RecyclerView (android.support.v7.widget.RecyclerView)2 OnClickListener (android.view.View.OnClickListener)2 AdapterView (android.widget.AdapterView)2 OnItemClickListener (android.widget.AdapterView.OnItemClickListener)2 ListView (android.widget.ListView)2 MangasRecAdapter (ar.rulosoft.mimanganu.adapters.MangasRecAdapter)2