1 /**
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy
6  * 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, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations
14  * under the License.
15  */
16 
17 package com.android.settings.applications;
18 
19 import android.app.Fragment;
20 import android.app.FragmentManager;
21 import android.os.Bundle;
22 import android.preference.PreferenceFrameLayout;
23 import android.support.v13.app.FragmentPagerAdapter;
24 import android.support.v4.view.PagerTabStrip;
25 import android.support.v4.view.ViewPager;
26 import android.view.LayoutInflater;
27 import android.view.View;
28 import android.view.ViewGroup;
29 
30 import com.android.settings.R;
31 
32 public class AppOpsSummary extends Fragment {
33     // layout inflater object used to inflate views
34     private LayoutInflater mInflater;
35 
36     private ViewGroup mContentContainer;
37     private View mRootView;
38     private ViewPager mViewPager;
39 
40     CharSequence[] mPageNames;
41     static AppOpsState.OpsTemplate[] sPageTemplates = new AppOpsState.OpsTemplate[] {
42         AppOpsState.LOCATION_TEMPLATE,
43         AppOpsState.PERSONAL_TEMPLATE,
44         AppOpsState.MESSAGING_TEMPLATE,
45         AppOpsState.MEDIA_TEMPLATE,
46         AppOpsState.DEVICE_TEMPLATE
47     };
48 
49     int mCurPos;
50 
51     class MyPagerAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {
52 
MyPagerAdapter(FragmentManager fm)53         public MyPagerAdapter(FragmentManager fm) {
54             super(fm);
55         }
56 
57         @Override
getItem(int position)58         public Fragment getItem(int position) {
59             return new AppOpsCategory(sPageTemplates[position]);
60         }
61 
62         @Override
getCount()63         public int getCount() {
64             return sPageTemplates.length;
65         }
66 
67         @Override
getPageTitle(int position)68         public CharSequence getPageTitle(int position) {
69             return mPageNames[position];
70         }
71 
72         @Override
onPageScrolled(int position, float positionOffset, int positionOffsetPixels)73         public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
74         }
75 
76         @Override
onPageSelected(int position)77         public void onPageSelected(int position) {
78             mCurPos = position;
79         }
80 
81         @Override
onPageScrollStateChanged(int state)82         public void onPageScrollStateChanged(int state) {
83             if (state == ViewPager.SCROLL_STATE_IDLE) {
84                 //updateCurrentTab(mCurPos);
85             }
86         }
87     }
88 
89     @Override
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)90     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
91         // initialize the inflater
92         mInflater = inflater;
93 
94         View rootView = mInflater.inflate(R.layout.app_ops_summary,
95                 container, false);
96         mContentContainer = container;
97         mRootView = rootView;
98 
99         mPageNames = getResources().getTextArray(R.array.app_ops_categories);
100 
101         mViewPager = (ViewPager) rootView.findViewById(R.id.pager);
102         MyPagerAdapter adapter = new MyPagerAdapter(getChildFragmentManager());
103         mViewPager.setAdapter(adapter);
104         mViewPager.setOnPageChangeListener(adapter);
105         PagerTabStrip tabs = (PagerTabStrip) rootView.findViewById(R.id.tabs);
106         tabs.setTabIndicatorColorResource(R.color.theme_accent);
107 
108         // We have to do this now because PreferenceFrameLayout looks at it
109         // only when the view is added.
110         if (container instanceof PreferenceFrameLayout) {
111             ((PreferenceFrameLayout.LayoutParams) rootView.getLayoutParams()).removeBorders = true;
112         }
113 
114         return rootView;
115     }
116 }
117