summaryrefslogtreecommitdiff
path: root/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicFragment.java
blob: ded84f227403e860079dd98556f766c74af884a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package org.fox.ttcomics2;


import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.github.chrisbanes.photoview.OnViewTapListener;
import com.github.chrisbanes.photoview.PhotoView;

import org.fox.ttcomics2.archive.ComicArchive;

import java.io.IOException;

import androidx.appcompat.app.ActionBar;
import icepick.State;

public class ComicFragment extends StateSavedFragment {
	private final String TAG = this.getClass().getSimpleName();
	
	private SharedPreferences m_prefs;
	@State protected int m_page;
	private ViewComicActivity m_activity;
    @State protected ComicArchive m_archive;
    private PhotoView m_image;
	
	public ComicFragment() {
		super();
	}

    public void initialize(ComicArchive archive, int page) {
        m_archive = archive;
        m_page = page;
    }

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {    	
		
		View view = inflater.inflate(R.layout.fragment_comic, container, false);

		m_image = view.findViewById(R.id.comic_image);

		try {
			Glide.with(getContext())
                .load(m_archive.getByteArray(m_page))
				.dontAnimate()
				.dontTransform()
				.diskCacheStrategy(DiskCacheStrategy.NONE)
				.skipMemoryCache(true)
                .into(m_image);
		} catch (IOException e) {
			m_image.setImageResource(R.drawable.badimage);
			e.printStackTrace();
		}

		if (m_prefs.getBoolean("fit_to_width", false)) {
			m_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
		}

		m_image.setOnViewTapListener(new OnViewTapListener() {
			@Override
			public void onViewTap(View view, float x, float y) {
				int width = view.getWidth();
				boolean fullScreenMode = m_prefs.getBoolean("use_full_screen", false);

				if (x <= width / 10) {
					m_activity.selectPreviousComic();
				} else if (x > width-(width/10)) {
					m_activity.selectNextComic();
				} else {
					ActionBar bar = m_activity.getSupportActionBar();

					if (bar.isShowing()) {
						bar.hide();
						m_activity.hideSeekBar(true);

						if (fullScreenMode) {
							m_activity.hideSystemUI(true);
						}

					} else {
						m_activity.hideSeekBar(false);

						if (fullScreenMode) {
							m_activity.hideSystemUI(false);
						}

						bar.show();
					}
				}
			}
		});

		return view;
		
	}

	@Override
	public void setUserVisibleHint(boolean isVisibleToUser) {
		super.setUserVisibleHint(isVisibleToUser);
	}
	
	@Override
	public void onAttach(Activity activity) {
		super.onAttach(activity);
		
		m_prefs = PreferenceManager.getDefaultSharedPreferences(activity.getApplicationContext());
		m_activity = (ViewComicActivity) activity;
	}

}