1 package com.koushikdutta.superuser;
3 import java.util.ArrayList;
5 import android.content.res.Configuration;
6 import android.graphics.drawable.Drawable;
7 import android.os.Bundle;
8 import android.support.v4.app.FragmentActivity;
9 import android.text.format.DateFormat;
10 import android.view.Menu;
11 import android.view.MenuInflater;
12 import android.view.MenuItem;
13 import android.view.MenuItem.OnMenuItemClickListener;
14 import android.view.View;
15 import android.widget.ImageView;
17 import com.koushikdutta.superuser.db.SuDatabaseHelper;
18 import com.koushikdutta.superuser.db.UidPolicy;
19 import com.koushikdutta.widgets.FragmentInterfaceWrapper;
20 import com.koushikdutta.widgets.ListContentFragmentInternal;
21 import com.koushikdutta.widgets.ListItem;
23 public class PolicyFragmentInternal extends ListContentFragmentInternal {
24 public PolicyFragmentInternal(FragmentInterfaceWrapper fragment) {
29 setContent(null, null);
30 getListView().clearChoices();
34 final ArrayList<UidPolicy> policies = SuDatabaseHelper.getPolicies(getActivity());
36 for (UidPolicy up: policies) {
41 FragmentInterfaceWrapper mContent;
45 public void onCreate(Bundle savedInstanceState, View view) {
46 super.onCreate(savedInstanceState, view);
48 getFragment().setHasOptionsMenu(true);
50 setEmpty(R.string.no_apps);
54 ImageView watermark = (ImageView)view.findViewById(R.id.watermark);
55 if (watermark != null)
56 watermark.setImageResource(R.drawable.clockwork512);
62 void addPolicy(final UidPolicy up) {
63 java.text.DateFormat df = DateFormat.getLongDateFormat(getActivity());
64 String date = df.format(up.getLastDate());
67 ListItem li = addItem(up.getPolicyResource(), new ListItem(this, up.name, date) {
68 public void onClick(View view) {
74 .setTheme(R.style.Superuser_PolicyIcon);
75 Drawable icon = Helper.loadPackageIcon(getActivity(), up.packageName);
77 li.setIcon(R.drawable.ic_launcher);
82 public void onConfigurationChanged(Configuration newConfig) {
85 FragmentInterfaceWrapper setContentNative(final ListItem li, final UidPolicy up) {
86 LogNativeFragment l = new LogNativeFragment();
96 // public void onConfigurationChanged(Configuration newConfig) {
97 // super.onConfigurationChanged(newConfig);
98 // setContent(li, up);
101 l.getInternal().setUidPolicy(up);
103 Bundle args = new Bundle();
104 args.putString("command", up.command);
105 args.putInt("uid", up.uid);
106 args.putInt("desiredUid", up.desiredUid);
107 l.setArguments(args);
112 void setContent(final ListItem li, final UidPolicy up) {
113 if (getActivity() instanceof FragmentActivity) {
114 LogFragment l = new LogFragment() {
123 public void onConfigurationChanged(Configuration newConfig) {
124 super.onConfigurationChanged(newConfig);
128 l.getInternal().setUidPolicy(up);
132 mContent = setContentNative(li, up);
135 setContent(mContent, up == null, up == null ? getString(R.string.logs) : up.getName());
139 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
140 super.onCreateOptionsMenu(menu, inflater);
141 MenuInflater mi = new MenuInflater(getActivity());
142 mi.inflate(R.menu.main, menu);
143 MenuItem log = menu.findItem(R.id.logs);
144 log.setOnMenuItemClickListener(new OnMenuItemClickListener() {
146 public boolean onMenuItemClick(MenuItem item) {
152 MenuItem settings = menu.findItem(R.id.settings);
153 settings.setOnMenuItemClickListener(new OnMenuItemClickListener() {
154 void openSettingsNative(final MenuItem item) {
155 setContent(new SettingsNativeFragment() {
157 public void onConfigurationChanged(Configuration newConfig) {
158 super.onConfigurationChanged(newConfig);
159 onMenuItemClick(item);
161 }, true, getString(R.string.settings));
165 public boolean onMenuItemClick(final MenuItem item) {
166 if (getActivity() instanceof FragmentActivity) {
167 setContent(new SettingsFragment() {
169 public void onConfigurationChanged(Configuration newConfig) {
170 super.onConfigurationChanged(newConfig);
171 onMenuItemClick(item);
173 }, true, getString(R.string.settings));
176 openSettingsNative(item);