SHARE
TWEET

Untitled

a guest Feb 22nd, 2019 59 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.MemDerPack.Fragments;
  2.  
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.content.SharedPreferences;
  7. import android.graphics.Picture;
  8. import android.net.Uri;
  9. import android.os.Build;
  10. import android.os.Bundle;
  11. import android.os.Handler;
  12. import android.os.VibrationEffect;
  13. import android.os.Vibrator;
  14. import android.support.annotation.NonNull;
  15. import android.support.annotation.Nullable;
  16. import android.support.v4.app.Fragment;
  17. import android.support.v4.widget.DrawerLayout;
  18. import android.support.v7.util.DiffUtil;
  19. import android.text.Layout;
  20. import android.util.Log;
  21. import android.view.KeyEvent;
  22. import android.view.LayoutInflater;
  23. import android.view.View;
  24. import android.view.ViewGroup;
  25. import android.widget.BaseAdapter;
  26. import android.widget.FrameLayout;
  27. import android.widget.ImageView;
  28. import android.widget.TextView;
  29.  
  30. import com.MemDerPack.ChatsActivity;
  31. import com.MemDerPack.LoadActivity;
  32. import com.MemDerPack.Logic.PictureLogic;
  33. import com.MemDerPack.Logic.UserLogic;
  34. import com.MemDerPack.R;
  35. import com.MemDerPack.StartActivity;
  36. import com.MemDerPack.Swipes.CardStackAdapter;
  37. import com.MemDerPack.Swipes.Methods;
  38. import com.MemDerPack.Swipes.Spot;
  39. import com.MemDerPack.Swipes.SpotDiffCallback;
  40. import com.bumptech.glide.Glide;
  41. import com.google.android.gms.tasks.OnCompleteListener;
  42. import com.google.android.gms.tasks.OnSuccessListener;
  43. import com.google.android.gms.tasks.Task;
  44. import com.google.android.gms.tasks.Tasks;
  45. import com.google.firebase.auth.AuthResult;
  46. import com.google.firebase.auth.FirebaseAuth;
  47. import com.google.firebase.auth.FirebaseUser;
  48. import com.google.firebase.database.DataSnapshot;
  49. import com.google.firebase.database.DatabaseError;
  50. import com.google.firebase.database.DatabaseReference;
  51. import com.google.firebase.database.FirebaseDatabase;
  52. import com.google.firebase.database.ValueEventListener;
  53. import com.google.firebase.firestore.DocumentSnapshot;
  54. import com.google.firebase.firestore.FirebaseFirestore;
  55. import com.google.firebase.firestore.SetOptions;
  56. import com.google.gson.Gson;
  57. import com.lorentzos.flingswipe.SwipeFlingAdapterView;
  58. import com.yuyakaido.*;
  59. import com.yuyakaido.android.cardstackview.CardStackLayoutManager;
  60. import com.yuyakaido.android.cardstackview.CardStackListener;
  61. import com.yuyakaido.android.cardstackview.CardStackView;
  62. import com.yuyakaido.android.cardstackview.Direction;
  63. import com.yuyakaido.android.cardstackview.StackFrom;
  64.  
  65. import java.io.File;
  66. import java.util.ArrayList;
  67. import java.util.Collections;
  68. import java.util.HashMap;
  69. import java.util.List;
  70. import java.util.Map;
  71. import java.util.concurrent.ExecutionException;
  72. import java.util.concurrent.FutureTask;
  73. import java.util.concurrent.LinkedBlockingQueue;
  74. import java.util.concurrent.ThreadPoolExecutor;
  75. import java.util.concurrent.TimeUnit;
  76.  
  77. import static android.content.Context.MODE_PRIVATE;
  78. import static com.MemDerPack.LoadActivity.memeFolder;
  79. import static com.MemDerPack.LoadActivity.numberOfMemesInBuffer;
  80. import static com.MemDerPack.Logic.JSONConverter.convertToJSON;
  81.  
  82. public class MemesFragment extends Fragment implements CardStackListener {
  83.  
  84.     // Arraylist of memes.
  85.     public ArrayList<PictureLogic.Picture> pictureList;
  86.  
  87.  
  88.  
  89.     Direction d;
  90.  
  91.     Integer ind = 0;
  92.  
  93.     // Categories array.
  94.     public static ArrayList<String> categories;
  95.  
  96.     // Counter for current meme.
  97.     public Integer counter;
  98.  
  99.     // Initializing firebase elements.
  100.     FirebaseUser firebaseUser;
  101.     DatabaseReference reference;
  102.     FirebaseFirestore firebaseFirestore;
  103.  
  104.     // Initializing swipes elements.
  105.     public DrawerLayout drawerLayout;
  106.     public CardStackView cardStackView;
  107.     public CardStackLayoutManager manager;
  108.     public CardStackAdapter adapter;
  109.  
  110.     // Initializing a picture element for adding new pics.
  111.     public PictureLogic.Picture pictureToLoad = new PictureLogic.Picture();
  112.  
  113.     // Making swipes elements with "by lazy".
  114.     public synchronized DrawerLayout getlayout(View view) {
  115.         drawerLayout = view.findViewById(R.id.drawer_layout);
  116.         return drawerLayout;
  117.     }
  118.  
  119.     public synchronized CardStackView getCardStackView(View view) {
  120.         cardStackView = view.findViewById(R.id.card_stack_view);
  121.         return cardStackView;
  122.     }
  123.  
  124.     public synchronized CardStackLayoutManager getManager() {
  125.         manager = new CardStackLayoutManager(getContext(), this);
  126.         return manager;
  127.     }
  128.  
  129.     public synchronized CardStackAdapter getAdapter() {
  130.         adapter = new CardStackAdapter(LoadActivity.pictureList);
  131.         return adapter;
  132.     }
  133.  
  134.  
  135.  
  136.  
  137.  
  138.     @Override
  139.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  140.                              Bundle savedInstanceState) {
  141.         View view = inflater.inflate(R.layout.fragment_memes, container, false);
  142.  
  143.         // Attaching swipes elements.
  144.         drawerLayout = getlayout(view);
  145.         cardStackView = getCardStackView(view);
  146.         manager = getManager();
  147.         adapter = getAdapter();
  148.  
  149.         // Initializing swipes cards.
  150.         setupCardStackView();
  151.  
  152.         // Associating firebase variables
  153.         firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
  154.         reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid());
  155.         firebaseFirestore = FirebaseFirestore.getInstance();
  156.  
  157.         // Taking picturelist array from load activity.
  158.         pictureList = LoadActivity.pictureList;
  159.         categories = new ArrayList<>();
  160.  
  161.         // Getting the counter of meme to display.
  162.         SharedPreferences preferences = getContext().getSharedPreferences("Picturelist", Activity.MODE_PRIVATE);
  163.         String counter_string = preferences.getString("current_elem", "0");
  164.         counter = Integer.parseInt(counter_string);
  165.         manager.setTopPosition(counter);
  166.  
  167.         // Creating reference for the list of categories..
  168.         DatabaseReference reference = FirebaseDatabase.getInstance().getReference(memeFolder);
  169.         reference.addListenerForSingleValueEvent(new ValueEventListener() {
  170.             @Override
  171.             public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  172.  
  173.                 // Filling the categories array.
  174.                 for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
  175.  
  176.                     // Filling categories array.
  177.                     categories.add(snapshot.getKey().toString());
  178.  
  179.                     // Filling buffer array with zeros.
  180.                     numberOfMemesInBuffer.put(snapshot.getKey().toString(), 0);
  181.                 }
  182.  
  183.                 // Filling the local buffer.
  184.                 for (PictureLogic.Picture pic : pictureList) {
  185.  
  186.                     int category = pic.Category;
  187.  
  188.                     // Defining the category of current meme.
  189.                     String categoryNext = categories.get(category);
  190.  
  191.                     // Adding a point to local buffer.
  192.                     numberOfMemesInBuffer.put(categoryNext, numberOfMemesInBuffer.get(categoryNext) + 1);
  193.                 }
  194.             }
  195.  
  196.             @Override
  197.             public void onCancelled(@NonNull DatabaseError databaseError) {
  198.  
  199.             }
  200.         });
  201.  
  202.         return view;
  203.     }
  204.  
  205.     @Override
  206.     public void onCardDragging(Direction direction, float ratio) {
  207.  
  208.     }
  209.  
  210.     @Override
  211.     public void onCardSwiped(Direction direction) {
  212.  
  213.         d = direction;
  214.         // Choose a picture to add to list of memes.
  215.         ChooseMeme(direction);
  216.         //PictureLogic.Picture picture = ChooseMeme(direction);
  217.  
  218. //        // Adding picture to the picturelist.
  219. //        paginate(picture);
  220.     }
  221.  
  222.     @Override
  223.     public void onCardRewound() {
  224.  
  225.     }
  226.  
  227.     @Override
  228.     public void onCardCanceled() {
  229.  
  230.     }
  231.  
  232.     @Override
  233.     public void onCardAppeared(View view, int position) {
  234.  
  235.     }
  236.  
  237.     @Override
  238.     public void onCardDisappeared(View view, int position) {
  239.  
  240.     }
  241.  
  242.     // Setting the cards.
  243.     private void setupCardStackView() {
  244.         initialize();
  245.     }
  246.  
  247.     // Setting the cards.
  248.     private void initialize() {
  249.         manager.setStackFrom(StackFrom.Top);
  250.         manager.setVisibleCount(3);
  251.         manager.setTranslationInterval(10.0f);
  252.         manager.setScaleInterval(0.95f);
  253.         manager.setSwipeThreshold(0.30f);
  254.         manager.setMaxDegree(30.0f);
  255.         manager.setDirections(Direction.FREEDOM);
  256.         manager.setCanScrollHorizontal(true);
  257.         manager.setCanScrollVertical(true);
  258.  
  259.         cardStackView.setLayoutManager(manager);
  260.         cardStackView.setAdapter(adapter);
  261.  
  262.         //ToDo: разобраться, влияет ли это на свайпы.
  263. //        cardStackView.itemAnimator.apply {
  264. //            if (this is DefaultItemAnimator){
  265. //                supportsChangeAnimations = false
  266. //            }
  267. //        }
  268.     }
  269.  
  270.     Gson json = new Gson();
  271.  
  272.     // Adding a picture to picturelist.
  273.     private void paginate(final PictureLogic.Picture picture) {
  274.  
  275.         List<PictureLogic.Picture> old = adapter.getSpots();
  276.         List<PictureLogic.Picture> old_new = old;
  277.  
  278.         if (!IScontains(old, picture)) {
  279.  
  280.  
  281.             old_new.add(picture);
  282.             SpotDiffCallback callback = new SpotDiffCallback(old, old_new);
  283.             DiffUtil.DiffResult result = DiffUtil.calculateDiff(callback);
  284.             adapter.setSpots(old_new);
  285.             result.dispatchUpdatesTo(adapter);
  286.             counter++;
  287.         } else {
  288.  
  289.             final List<PictureLogic.Picture> old2283221488 = adapter.getSpots();
  290.  
  291.             Task<DocumentSnapshot> task1 =
  292.                     FirebaseFirestore.getInstance().document("Users/" + firebaseUser.getUid()).get();
  293.             task1.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
  294.                 @Override
  295.                 public void onSuccess(DocumentSnapshot documentSnapshot) {
  296.  
  297.                     // Initializing local user.
  298.                     final UserLogic.User fireUser = documentSnapshot.toObject(UserLogic.User.class);
  299.  
  300.                     final Map<String, Object> map1 = fireUser.getCategories_seen();
  301.  
  302.                     int intCategory = picture.Category;
  303.  
  304.                     String category = categories.get(intCategory);
  305.  
  306.                     // Current meme number.
  307.                     final Integer memeNumber = Integer.parseInt(map1.get(category).toString());
  308.  
  309.                     FirebaseFirestore.getInstance().document("Users/" + firebaseUser.getUid()).update("Categories_seen." + category, memeNumber + 1);
  310.  
  311.                     ind++;
  312.                     String s = json.toJson(picture);
  313.                     Log.d("ELSE", "curr pic "+s);
  314.                     Log.d("ELSE", "repeat counter "+ind.toString());
  315.                     Log.d("ELSE", "swipe direction "+ d.toString());
  316.                     Log.d("ELSE", "counter "+counter.toString());
  317.                     Log.d("ELSE", "stack size "+String.valueOf(old2283221488.size()));
  318.  
  319.                     ChooseMeme(d);
  320.  
  321.                 }
  322.             });
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.         }
  331.  
  332.  
  333.     }
  334.  
  335.     private boolean IScontains (List<PictureLogic.Picture> pictureList, PictureLogic.Picture picturere) {
  336.         for (PictureLogic.Picture pic : pictureList
  337.              ) {
  338.             if (pic.ImagePath.equals(picturere.ImagePath))
  339.             return true;
  340.  
  341.         }
  342.         return false;
  343.     }
  344.  
  345.     // Returns a picture to add depends on direction.
  346.     public void ChooseMeme(Direction direction) {
  347.  
  348.         Log.d("ELSE", direction.toString());
  349.         if (direction == Direction.Left) {
  350.             ChangePreferenceAndLoadImage("dislike");
  351.         } else if (direction == Direction.Right) {
  352.             ChangePreferenceAndLoadImage("like");
  353.         } else if (direction == Direction.Top) {
  354.             ChangePreferenceAndLoadImage("superlike");
  355.         } else if (direction == Direction.Bottom) {
  356.             ChangePreferenceAndLoadImage("superdislike");
  357.         }
  358.  
  359.  
  360.     }
  361.  
  362.  
  363.     // Receive a degree of how much liked, changes user preferences and returns a picture to add.
  364.     public void ChangePreferenceAndLoadImage(final String forHowMuchLiked) {
  365.  
  366.         Task<DocumentSnapshot> task =
  367.                 FirebaseFirestore.getInstance().document("Users/" + firebaseUser.getUid()).get();
  368.  
  369.         task.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
  370.             @Override
  371.             public void onComplete(@NonNull Task<DocumentSnapshot> task) {
  372.                 if (task.isSuccessful()) {
  373.                     DocumentSnapshot documentSnapshot = task.getResult();
  374.  
  375.                     /*
  376.                      * Changing preferences.
  377.                      */
  378.  
  379.                     // Creating new reference.
  380.                     DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  381.  
  382.                     // Initializing local user.
  383.                     final UserLogic.User fireUser = documentSnapshot.toObject(UserLogic.User.class);
  384.  
  385.                     // Changing preferences.
  386.                     PictureLogic.PictureMethods.ChangePreference(fireUser, pictureList.get(counter), forHowMuchLiked);
  387.  
  388.                     // Sending them to sever.
  389.                     HashMap map = new HashMap<>();
  390.                     map.put("preferences", fireUser.getPreferencesList().toString());
  391.                     FirebaseFirestore.getInstance().document("Users/" + firebaseUser.getUid()).set(map, SetOptions.merge());
  392.  
  393.                     //databaseReference.child("Users").child(firebaseUser.getUid()).child("preferences").setValue(fireUser.getPreferencesList().toString());
  394.  
  395.                     /*
  396.                      * Adding a point to number of meme.
  397.                      */
  398.  
  399.                     // String of current category.
  400.                     final String category = categories.get(pictureList.get(counter).Category);
  401.  
  402.  
  403.                     Task<DocumentSnapshot> task1 =
  404.                             FirebaseFirestore.getInstance().document("Users/" + firebaseUser.getUid()).get();
  405.                     task1.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
  406.                         @Override
  407.                         public void onSuccess(DocumentSnapshot documentSnapshot) {
  408.  
  409.                             // Initializing local user.
  410.                             final UserLogic.User fireUser = documentSnapshot.toObject(UserLogic.User.class);
  411.  
  412.                             final Map<String, Object> map1 = fireUser.getCategories_seen();
  413.  
  414.  
  415.                             // Current meme number.
  416.                             final Integer memeNumber = Integer.parseInt(map1.get(category).toString());
  417.  
  418.  
  419.                             Task<DocumentSnapshot> task =
  420.                                     FirebaseFirestore.getInstance().document("MEMES/" + category).get();
  421.                             task.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
  422.                                 @Override
  423.                                 public void onSuccess(DocumentSnapshot documentSnapshot) {
  424.  
  425.  
  426.                                     // Getting the hasmap of memes.
  427.                                     Map<String, Object> td = documentSnapshot.getData();
  428.  
  429.                                     if (memeNumber >= td.size()) {
  430.                                         System.out.println("Закончились мемесы.");
  431.                                         //numberOfMemesInBuffer.put(category, 0);
  432.  
  433.                                     } else {
  434.  
  435.  
  436.                                         FirebaseFirestore.getInstance().document("Users/" + firebaseUser.getUid()).update("Categories_seen." + category, memeNumber + 1);
  437.                                         //Decrease number of meme of this category in buffer.
  438.                                         numberOfMemesInBuffer.put(category, numberOfMemesInBuffer.get(category) - 1);
  439.                                     }
  440.  
  441.                                     // Defining the category of next meme.
  442.                                     final String categoryNext = categories.get(UserLogic.UserMethods.getCategory(fireUser.getPreferencesList()));
  443.  
  444.  
  445.                                     Task<DocumentSnapshot> task =
  446.                                             FirebaseFirestore.getInstance().document("MEMES/" + categoryNext).get();
  447.                                     task.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
  448.                                         @Override
  449.                                         public void onSuccess(DocumentSnapshot documentSnapshot) {
  450.  
  451.  
  452.                                             final Map<String, Object> td = documentSnapshot.getData();
  453.  
  454.                                             // Getting and sorting the keys.
  455.                                             final ArrayList<String> keys = new ArrayList<>(td.keySet());
  456.                                             Collections.sort(keys);
  457.  
  458.  
  459.                                             Task<DocumentSnapshot> task =
  460.                                                     FirebaseFirestore.getInstance().document("Users/" + firebaseUser.getUid()).get();
  461.                                             task.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
  462.                                                 @Override
  463.                                                 public void onSuccess(DocumentSnapshot documentSnapshot) {
  464.  
  465.                                                     // Initializing local user.
  466.                                                     final UserLogic.User fireUser = documentSnapshot.toObject(UserLogic.User.class);
  467.  
  468.                                                     final Map<String, Object> map1 = fireUser.getCategories_seen();
  469.  
  470.                                                     // Current meme number.
  471.                                                     Integer memeNumber = Integer.parseInt(map1.get(categoryNext).toString());
  472.  
  473.  
  474.                                                     String memeUrl;
  475.  
  476.  
  477.                                                     numberOfMemesInBuffer.put(categoryNext, numberOfMemesInBuffer.get(categoryNext) + 1);
  478.                                                     memeNumber = memeNumber + numberOfMemesInBuffer.get(categoryNext);
  479.  
  480.                                                     if (memeNumber < td.size()) {
  481.                                                         memeUrl = td.get(keys.get(memeNumber)).toString();
  482.                                                     } else {
  483.                                                         memeUrl = td.get(keys.get(keys.size() - 1)).toString();
  484.                                                     }
  485.  
  486.  
  487.                                                     // Making a Picture element (attaching category to a picture).
  488.                                                     pictureToLoad = new PictureLogic.Picture(memeUrl, categories.indexOf(categoryNext));
  489.  
  490.  
  491.                                                     // Adding picture to the picturelist.
  492.                                                     paginate(pictureToLoad);
  493.  
  494.                                                 }
  495.  
  496.  
  497.                                             });
  498.  
  499.  
  500.                                         }
  501.                                     });
  502.  
  503.  
  504.                                 }
  505.                             });
  506.  
  507.  
  508.                         }
  509.                     });
  510.                 }
  511.             }
  512.  
  513.  
  514.         });
  515.  
  516.  
  517. //        // Database synchronization.
  518. //        reference.addListenerForSingleValueEvent(new ValueEventListener() {
  519. //            @Override
  520. //            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  521. //
  522. //                /*
  523. //                 * Changing preferences.
  524. //                 */
  525. //
  526. //                // Creating new reference.
  527. //                DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  528. //
  529. //                // Initializing local user.
  530. //                final UserLogic.User fireUser = dataSnapshot.getValue(UserLogic.User.class);
  531. //
  532. //                // Changing preferences.
  533. //                PictureLogic.PictureMethods.ChangePreference(fireUser, pictureList.get(counter), forHowMuchLiked);
  534. //
  535. //                // Sending them to sever.
  536. //                databaseReference.child("Users").child(firebaseUser.getUid()).child("preferences").setValue(fireUser.getPreferencesList().toString());
  537. //
  538. //                /*
  539. //                 * Adding a point to number of meme.
  540. //                 */
  541. //
  542. //                // String of current category.
  543. //                final String category = categories.get(pictureList.get(counter).Category);
  544. //
  545. //                // Number of meme in category.
  546. //
  547. //                // Adding point to a category of current meme.
  548. //                final DatabaseReference currentMemeCategory = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid())
  549. //                        .child("Categories_seen").child(category);
  550. //                currentMemeCategory.addListenerForSingleValueEvent(new ValueEventListener() {
  551. //                    @Override
  552. //                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  553. //
  554. //                        // Current meme number.
  555. //                        final Integer memeNumber = Integer.parseInt(dataSnapshot.getValue().toString());
  556. //
  557. //                        // Creating reference for subfolder (selecting subfolder by choosing the prefered category).
  558. //                        final DatabaseReference memeReference = FirebaseDatabase.getInstance().getReference(memeFolder).child(category);
  559. //                        memeReference.addListenerForSingleValueEvent(new ValueEventListener() {
  560. //                            @Override
  561. //                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  562. //
  563. //                                // Getting the hasmap of memes.
  564. //                                Map<String, Object> td = (HashMap<String, Object>) dataSnapshot.getValue();
  565. //
  566. //                                if (memeNumber >= td.size()) {
  567. //                                    System.out.println("Закончились мемесы.");
  568. //                                    //numberOfMemesInBuffer.put(category, 0);
  569. //
  570. //                                } else {
  571. //                                    currentMemeCategory.setValue(memeNumber + 1);
  572. //                                    //Decrease number of meme of this category in buffer.
  573. //                                    numberOfMemesInBuffer.put(category, numberOfMemesInBuffer.get(category) - 1);
  574. //                                }
  575. //
  576. //                                // Defining the category of next meme.
  577. //                                final String categoryNext = categories.get(UserLogic.UserMethods.getCategory(fireUser.getPreferencesList()));
  578. //
  579. //                                // Creating reference for subfolder (selecting subfolder by choosing the prefered category).
  580. //                                DatabaseReference memeReference = FirebaseDatabase.getInstance().getReference(memeFolder).child(categoryNext);
  581. //                                memeReference.addListenerForSingleValueEvent(new ValueEventListener() {
  582. //                                    @Override
  583. //                                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  584. //
  585. //                                        // Getting the list of meme values (links).
  586. //                                        final Map<String, Object> td = (HashMap<String, Object>) dataSnapshot.getValue();
  587. //
  588. //                                        // Getting and sorting the keys.
  589. //                                        final ArrayList<String> keys = new ArrayList<>(td.keySet());
  590. //                                        Collections.sort(keys);
  591. //
  592. //                                        // Taking the number of the meme to pick.
  593. //                                        DatabaseReference memeCategory = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid()).child("Categories_seen").child(categoryNext);
  594. //                                        memeCategory.addListenerForSingleValueEvent(new ValueEventListener() {
  595. //                                            @Override
  596. //                                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  597. //
  598. //                                                String memeUrl;
  599. //                                                // Current meme number.
  600. //                                                Integer memeNumber;
  601. //                                                numberOfMemesInBuffer.put(categoryNext, numberOfMemesInBuffer.get(categoryNext) + 1);
  602. //                                                memeNumber = Integer.parseInt(dataSnapshot.getValue().toString()) + numberOfMemesInBuffer.get(categoryNext);
  603. //                                                if (memeNumber < td.size()) {
  604. //                                                    memeUrl = td.get(keys.get(memeNumber)).toString();
  605. //                                                } else {
  606. //                                                    memeUrl = td.get(keys.get(keys.size() - 1)).toString();
  607. //                                                }
  608. //
  609. //
  610. //                                                // Making a Picture element (attaching category to a picture).
  611. //                                                pictureToLoad = new PictureLogic.Picture(memeUrl, categories.indexOf(categoryNext));
  612. //                                                counter++;
  613. //
  614. //
  615. ////                                        // Add it to pic list.
  616. ////                                        pictureList.add(picture);
  617. //                                            }
  618. //
  619. //                                            @Override
  620. //                                            public void onCancelled(@NonNull DatabaseError databaseError) {
  621. //
  622. //                                            }
  623. //                                        });
  624. //                                    }
  625. //
  626. //                                    @Override
  627. //                                    public void onCancelled(@NonNull DatabaseError databaseError) {
  628. //
  629. //                                    }
  630. //                                });
  631. //                            }
  632. //
  633. //                            @Override
  634. //                            public void onCancelled(@NonNull DatabaseError databaseError) {
  635. //
  636. //                            }
  637. //                        });
  638. //
  639. //                    }
  640. //
  641. //                    @Override
  642. //                    public void onCancelled(@NonNull DatabaseError databaseError) {
  643. //
  644. //                    }
  645. //                });
  646. //
  647. //            }
  648. //
  649. //            @Override
  650. //            public void onCancelled(@NonNull DatabaseError databaseError) {
  651. //
  652. //            }
  653. //        });
  654.  
  655.         // Vibration.
  656.         Vibrator v = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
  657.         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
  658.  
  659.         {
  660.             v.vibrate(VibrationEffect.createOneShot(30, VibrationEffect.DEFAULT_AMPLITUDE));
  661.         } else
  662.  
  663.         {
  664.             v.vibrate(30);
  665.         }
  666.  
  667.         // return pictureToLoad;
  668.     }
  669.  
  670.     // Clearing cache.
  671.     public static void deleteCache(Context context) {
  672.         try {
  673.             File dir = context.getCacheDir();
  674.             deleteDir(dir);
  675.         } catch (Exception e) {
  676.             e.printStackTrace();
  677.         }
  678.     }
  679.  
  680.     // Method to support cache clear.
  681.     public static boolean deleteDir(File dir) {
  682.         if (dir != null && dir.isDirectory()) {
  683.             String[] children = dir.list();
  684.             for (int i = 0; i < children.length; i++) {
  685.                 boolean success = deleteDir(new File(dir, children[i]));
  686.                 if (!success) {
  687.                     return false;
  688.                 }
  689.             }
  690.             return dir.delete();
  691.         } else if (dir != null && dir.isFile()) {
  692.             return dir.delete();
  693.         } else {
  694.             return false;
  695.         }
  696.     }
  697.  
  698.     @Override
  699.     public void onStop() {
  700.         super.onStop();
  701.  
  702.         // Saving the position of current picture to phone to load it whether we change activity and go back.
  703.         SharedPreferences.Editor editor = getContext().getSharedPreferences("Picturelist", MODE_PRIVATE).edit();
  704.         editor.putString("current_elem", counter.toString());
  705.         editor.apply();
  706.  
  707.         // Saving the picturelist to shared preferences.
  708.         String jsonString = convertToJSON(pictureList, counter);
  709.         SharedPreferences.Editor editor1 = getContext().getSharedPreferences("Buffer", MODE_PRIVATE).edit();
  710.         editor1.putString("pictures", jsonString);
  711.         editor1.apply();
  712.  
  713.         // Deleting cache.
  714.         deleteCache(getActivity().getApplicationContext());
  715.     }
  716.  
  717. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top