88import android .content .res .ColorStateList ;
99import android .database .sqlite .SQLiteDatabase ;
1010import android .os .Bundle ;
11+ import android .view .MotionEvent ;
1112import android .view .View ;
1213import android .widget .ImageView ;
1314import android .widget .LinearLayout ;
1415import android .widget .TextView ;
1516import android .widget .Toast ;
1617
1718import androidx .annotation .NonNull ;
19+ import androidx .constraintlayout .widget .ConstraintLayout ;
1820import androidx .coordinatorlayout .widget .CoordinatorLayout ;
1921import androidx .viewpager .widget .ViewPager ;
2022
2123import com .bumptech .glide .Glide ;
2224import com .bumptech .glide .load .engine .DiskCacheStrategy ;
25+ import com .github .chrisbanes .photoview .OnSingleFlingListener ;
2326import com .google .android .material .floatingactionbutton .FloatingActionButton ;
2427import com .google .android .material .tabs .TabLayout ;
2528
3538import open .furaffinity .client .sqlite .historyContract .historyItemEntry ;
3639import open .furaffinity .client .sqlite .historyDBHelper ;
3740import open .furaffinity .client .utilities .fabCircular ;
41+ import com .github .chrisbanes .photoview .PhotoView ;
3842
3943import static open .furaffinity .client .utilities .sendPm .sendPM ;
4044
4145public class view extends appFragment {
4246 @ SuppressWarnings ("FieldCanBeLocal" )
43- private CoordinatorLayout coordinatorLayout ;
47+ private ConstraintLayout constraintLayout ;
4448
4549 private TextView submissionTitle ;
46- private ImageView submissionImage ;
50+ private PhotoView submissionImage ;
51+ private ConstraintLayout submissionInfo ;
4752 private LinearLayout submissionUserLinearLayout ;
4853 private ImageView submissionUserIcon ;
4954 private TextView submissionUser ;
@@ -55,6 +60,7 @@ public class view extends appFragment {
5560 private FloatingActionButton submissionDownload ;
5661 private FloatingActionButton sendNote ;
5762 private FloatingActionButton shareLink ;
63+ private FloatingActionButton imageInfoSwitch ;
5864
5965 private loginCheck loginCheck ;
6066 private open .furaffinity .client .pages .view page ;
@@ -123,10 +129,11 @@ protected int getLayout() {
123129 }
124130
125131 protected void getElements (View rootView ) {
126- coordinatorLayout = rootView .findViewById (R .id .coordinatorLayout );
132+ constraintLayout = rootView .findViewById (R .id .constraintLayout );
127133
128134 submissionTitle = rootView .findViewById (R .id .submissionTitle );
129135 submissionImage = rootView .findViewById (R .id .submissionImage );
136+ submissionInfo = rootView .findViewById (R .id .submissionInfo );
130137 submissionUserLinearLayout = rootView .findViewById (R .id .submissionUserLinearLayout );
131138 submissionUserIcon = rootView .findViewById (R .id .submissionUserIcon );
132139 submissionUser = rootView .findViewById (R .id .submissionUser );
@@ -138,11 +145,13 @@ protected void getElements(View rootView) {
138145 submissionDownload = new FloatingActionButton (requireContext ());
139146 sendNote = new FloatingActionButton (requireContext ());
140147 shareLink = new FloatingActionButton (requireContext ());
148+ imageInfoSwitch = new FloatingActionButton (requireContext ());
141149
142150 submissionFavorite .setImageResource (R .drawable .ic_menu_favorite );
143151 submissionDownload .setImageResource (R .drawable .ic_menu_download );
144152 sendNote .setImageResource (R .drawable .ic_menu_newmessage );
145153 shareLink .setImageResource (R .drawable .ic_menu_send );
154+ imageInfoSwitch .setImageResource (R .drawable .ic_button_info );
146155
147156 //noinspection deprecation
148157 submissionFavorite .setBackgroundTintList (ColorStateList .valueOf (getResources ().getColor (androidx .cardview .R .color .cardview_dark_background )));
@@ -152,17 +161,21 @@ protected void getElements(View rootView) {
152161 sendNote .setBackgroundTintList (ColorStateList .valueOf (getResources ().getColor (androidx .cardview .R .color .cardview_dark_background )));
153162 //noinspection deprecation
154163 shareLink .setBackgroundTintList (ColorStateList .valueOf (getResources ().getColor (androidx .cardview .R .color .cardview_dark_background )));
164+ //noinspection deprecation
165+ imageInfoSwitch .setBackgroundTintList (ColorStateList .valueOf (getResources ().getColor (androidx .cardview .R .color .cardview_dark_background )));
155166
156- coordinatorLayout .addView (submissionFavorite );
157- coordinatorLayout .addView (submissionDownload );
158- coordinatorLayout .addView (sendNote );
159- coordinatorLayout .addView (shareLink );
167+ constraintLayout .addView (submissionFavorite );
168+ constraintLayout .addView (submissionDownload );
169+ constraintLayout .addView (sendNote );
170+ constraintLayout .addView (shareLink );
171+ constraintLayout .addView (imageInfoSwitch );
160172
161173 submissionFavorite .setVisibility (View .GONE );
162174 sendNote .setVisibility (View .GONE );
163175
164176 fab .addButton (submissionDownload , 1.5f , 270 );
165177 fab .addButton (shareLink , 2.6f , 270 );
178+ fab .addButton (imageInfoSwitch , 3.7f , 270 );
166179 fab .setVisibility (View .GONE );
167180 }
168181
@@ -229,7 +242,31 @@ public void requestFailed(abstractPage abstractPage) {
229242 protected void updateUIElementListeners (View rootView ) {
230243 submissionUserLinearLayout .setOnClickListener (v -> ((mainActivity ) requireActivity ()).setUserPath (page .getSubmissionUserPage ()));
231244
232- submissionImage .setOnTouchListener (new OnSwipeTouchListener (getActivity ()) {
245+ submissionImage .setOnSingleFlingListener (new OnSingleFlingListener () {
246+ @ Override
247+ public boolean onFling (MotionEvent e1 , MotionEvent e2 , float velocityX , float velocityY ) {
248+ int SWIPE_THRESHOLD = 100 ;
249+ int SWIPE_VELOCITY_THRESHOLD = 100 ;
250+ boolean result = false ;
251+ try {
252+ float diffY = e2 .getY () - e1 .getY ();
253+ float diffX = e2 .getX () - e1 .getX ();
254+ if (Math .abs (diffX ) > Math .abs (diffY )) {
255+ if (Math .abs (diffX ) > SWIPE_THRESHOLD && Math .abs (velocityX ) > SWIPE_VELOCITY_THRESHOLD ) {
256+ if (diffX > 0 ) {
257+ onSwipeRight ();
258+ } else {
259+ onSwipeLeft ();
260+ }
261+ result = true ;
262+ }
263+ }
264+ } catch (Exception exception ) {
265+ exception .printStackTrace ();
266+ }
267+ return result ;
268+ }
269+
233270 public void onSwipeRight () {
234271 if (page .getNext () != null ) {
235272 ((mainActivity ) requireActivity ()).setViewPath (page .getNext ());
@@ -268,6 +305,16 @@ public void requestFailed(abstractPage abstractPage) {
268305 sharingIntent .putExtra (Intent .EXTRA_TEXT , open .furaffinity .client .utilities .webClient .getBaseUrl () + page .getPagePath ());
269306 startActivity (Intent .createChooser (sharingIntent , "Share via" ));
270307 });
308+
309+ imageInfoSwitch .setOnClickListener (v -> {
310+ if (submissionImage .getVisibility () != View .GONE ) {
311+ submissionImage .setVisibility (View .GONE );
312+ submissionInfo .setVisibility (View .VISIBLE );
313+ } else {
314+ submissionImage .setVisibility (View .VISIBLE );
315+ submissionInfo .setVisibility (View .GONE );
316+ }
317+ });
271318 }
272319
273320 @ Override
0 commit comments