1 package com.koushikdutta.superuser;
3 import java.util.ArrayList;
5 import android.os.Bundle;
6 import android.text.format.DateFormat;
7 import android.view.Menu;
8 import android.view.MenuInflater;
9 import android.view.MenuItem;
10 import android.view.MenuItem.OnMenuItemClickListener;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.CompoundButton;
14 import android.widget.ImageView;
15 import android.widget.TextView;
17 import com.koushikdutta.superuser.db.LogEntry;
18 import com.koushikdutta.superuser.db.SuDatabaseHelper;
19 import com.koushikdutta.superuser.db.UidPolicy;
20 import com.koushikdutta.superuser.util.Settings;
21 import com.koushikdutta.widgets.BetterListFragmentInternal;
22 import com.koushikdutta.widgets.FragmentInterfaceWrapper;
23 import com.koushikdutta.widgets.ListItem;
25 public class LogFragmentInternal extends BetterListFragmentInternal {
26 public LogFragmentInternal(FragmentInterfaceWrapper fragment) {
31 public LogFragmentInternal setUidPolicy(UidPolicy up) {
40 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
42 inflater.inflate(R.menu.policy, menu);
43 MenuItem delete = menu.findItem(R.id.delete);
44 delete.setOnMenuItemClickListener(new OnMenuItemClickListener() {
46 public boolean onMenuItemClick(MenuItem item) {
48 SuDatabaseHelper.delete(getActivity(), up);
50 SuDatabaseHelper.deleteLogs(getActivity());
58 protected int getListItemResource() {
59 return R.layout.log_item;
63 protected int getListFragmentResource() {
64 return R.layout.policy_fragment;
68 protected void onCreate(Bundle savedInstanceState, View view) {
69 super.onCreate(savedInstanceState, view);
71 getFragment().setHasOptionsMenu(true);
74 Bundle bundle = getFragment().getArguments();
76 String command = bundle.getString("command");
77 int uid = bundle.getInt("uid", -1);
78 int desiredUid = bundle.getInt("desiredUid", -1);
79 if (uid != -1 && desiredUid != -1) {
80 up = SuDatabaseHelper.get(getContext(), uid, desiredUid, command);
85 ArrayList<LogEntry> logs;
86 java.text.DateFormat day = DateFormat.getDateFormat(getActivity());
87 java.text.DateFormat time = DateFormat.getTimeFormat(getActivity());
89 ImageView icon = (ImageView)view.findViewById(R.id.image);
90 icon.setImageDrawable(Helper.loadPackageIcon(getActivity(), up.packageName));
91 TextView name = (TextView)view.findViewById(R.id.name);
92 name.setText(up.name);
94 ((TextView)view.findViewById(R.id.uid_header)).setText(Integer.toString(up.desiredUid));
95 ((TextView)view.findViewById(R.id.command_header)).setText(up.command == null ? getString(R.string.all_commands) : up.command);
96 String app = up.username;
97 if (app == null || app.length() == 0)
98 app = String.valueOf(up.uid);
99 ((TextView)view.findViewById(R.id.app_header)).setText(app);
100 ((TextView)view.findViewById(R.id.package_header)).setText(up.packageName);
102 getListView().setSelector(android.R.color.transparent);
104 logs = SuDatabaseHelper.getLogs(getActivity(), up, -1);
107 view.findViewById(R.id.title_container).setVisibility(View.GONE);
108 logs = SuDatabaseHelper.getLogs(getActivity());
111 setEmpty(R.string.no_logs);
113 for (LogEntry log: logs) {
114 final String date = time.format(log.getDate());
116 String summary = getString(log.getActionResource());
118 title = log.getName();
120 addItem(day.format(log.getDate()), new ListItem(this, title, summary, null) {
122 public View getView(android.content.Context context, View convertView) {
123 View ret = super.getView(context, convertView);
125 ((TextView)ret.findViewById(R.id.extra)).setText(date);
132 final CompoundButton cb = (CompoundButton)view.findViewById(R.id.logging);
133 cb.setOnClickListener(new OnClickListener() {
135 public void onClick(View v) {
137 Settings.setLogging(getActivity(), cb.isChecked());
140 up.logging = cb.isChecked();
141 SuDatabaseHelper.setPolicy(getActivity(), up);
146 cb.setChecked(Settings.getLogging(getActivity()));
149 cb.setChecked(up.logging);