• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.example.android.pdfrendererbasic;
18 
19 import android.app.Activity;
20 import android.os.Bundle;
21 import android.view.LayoutInflater;
22 import android.view.View;
23 import android.view.ViewGroup;
24 import android.widget.Button;
25 import android.widget.ImageView;
26 
27 import androidx.annotation.NonNull;
28 import androidx.fragment.app.Fragment;
29 import androidx.lifecycle.LifecycleOwner;
30 import androidx.lifecycle.ViewModelProviders;
31 
32 /**
33  * This fragment has a big {@link ImageView} that shows PDF pages, and 2
34  * {@link android.widget.Button}s to move between pages.
35  */
36 public class PdfRendererBasicFragment extends Fragment {
37 
38     private PdfRendererBasicViewModel mViewModel;
39 
40     private final View.OnClickListener mOnClickListener = (view) -> {
41         switch (view.getId()) {
42             case R.id.previous:
43                 if (mViewModel != null) {
44                     mViewModel.showPrevious();
45                 }
46                 break;
47             case R.id.next:
48                 if (mViewModel != null) {
49                     mViewModel.showNext();
50                 }
51                 break;
52         }
53     };
54 
55     @Override
onCreateView(@onNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)56     public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
57                              Bundle savedInstanceState) {
58         return inflater.inflate(R.layout.pdf_renderer_basic_fragment, container, false);
59     }
60 
61     @Override
onViewCreated(@onNull View view, Bundle savedInstanceState)62     public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
63         // View references.
64         final ImageView image = view.findViewById(R.id.image);
65         final Button buttonPrevious = view.findViewById(R.id.previous);
66         final Button buttonNext = view.findViewById(R.id.next);
67 
68         // Bind data.
69         mViewModel = ViewModelProviders.of(this).get(PdfRendererBasicViewModel.class);
70         final LifecycleOwner viewLifecycleOwner = getViewLifecycleOwner();
71         mViewModel.getPageInfo().observe(viewLifecycleOwner, pageInfo -> {
72             if (pageInfo == null) {
73                 return;
74             }
75             final Activity activity = getActivity();
76             if (activity != null) {
77                 activity.setTitle(getString(R.string.app_name_with_index,
78                         pageInfo.index + 1, pageInfo.count));
79             }
80         });
81         mViewModel.getPageBitmap().observe(viewLifecycleOwner, image::setImageBitmap);
82         mViewModel.getPreviousEnabled().observe(viewLifecycleOwner, buttonPrevious::setEnabled);
83         mViewModel.getNextEnabled().observe(viewLifecycleOwner, buttonNext::setEnabled);
84 
85         // Bind events.
86         buttonPrevious.setOnClickListener(mOnClickListener);
87         buttonNext.setOnClickListener(mOnClickListener);
88     }
89 
90 }
91