OSDN Git Service

multiuser all working
[android-x86/external-koush-Superuser.git] / Superuser / src / com / koushikdutta / superuser / MainActivity.java
1 package com.koushikdutta.superuser;
2
3 import java.util.ArrayList;
4
5 import android.content.res.Configuration;
6 import android.graphics.drawable.Drawable;
7 import android.os.Bundle;
8 import android.os.Handler;
9 import android.support.v4.app.DialogFragment;
10 import android.text.format.DateFormat;
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;
16
17 import com.koushikdutta.superuser.db.SuDatabaseHelper;
18 import com.koushikdutta.superuser.db.UidPolicy;
19 import com.koushikdutta.widgets.BetterListActivity;
20 import com.koushikdutta.widgets.BetterListFragment;
21 import com.koushikdutta.widgets.ListContentFragment;
22 import com.koushikdutta.widgets.ListItem;
23
24 public class MainActivity extends BetterListActivity {
25     public MainActivity() {
26         super(ListContentFragment.class);
27     }
28
29     public ListContentFragment getFragment() {
30         return (ListContentFragment)super.getFragment();
31     }
32     
33     void showAllLogs() {
34         setContent(null, null);
35         getFragment().getListView().clearChoices();
36     }
37     
38     public boolean onCreateOptionsMenu(android.view.Menu menu) {
39         MenuInflater mi = new MenuInflater(this);
40         mi.inflate(R.menu.main, menu);
41         MenuItem log = menu.findItem(R.id.logs);
42         log.setOnMenuItemClickListener(new OnMenuItemClickListener() {
43             @Override
44             public boolean onMenuItemClick(MenuItem item) {
45                 showAllLogs();
46                 return true;
47             }
48         });
49         
50         MenuItem settings = menu.findItem(R.id.settings);
51         settings.setOnMenuItemClickListener(new OnMenuItemClickListener() {
52             @Override
53             public boolean onMenuItemClick(final MenuItem item) {
54                 getFragment().setContent(new SettingsFragment() {
55                     @Override
56                     public void onConfigurationChanged(Configuration newConfig) {
57                         super.onConfigurationChanged(newConfig);
58                         onMenuItemClick(item);
59                     }
60                 }, true);
61                 return true;
62             }
63         });
64         return super.onCreateOptionsMenu(menu);
65     }
66     
67     BetterListFragment mContent;
68     @Override
69     public void onCreate(Bundle savedInstanceState, View view) {
70         super.onCreate(savedInstanceState, view);
71
72         getFragment().setEmpty(R.string.no_apps);
73         
74         load();
75
76         ImageView watermark = (ImageView)view.findViewById(R.id.watermark);
77         if (watermark != null)
78             watermark.setImageResource(R.drawable.clockwork512);
79         if (!getFragment().isPaged())
80             showAllLogs();
81     }
82     
83     public void onBackPressed() {
84         if (getFragment().onBackPressed())
85             return;
86         super.onBackPressed();
87     };
88     
89     void setContent(final ListItem li, final UidPolicy up) {
90         mContent = new LogFragment() {
91             @Override
92             void onDelete() {
93                 super.onDelete();
94                 getFragment().removeItem(li);
95                 showAllLogs();
96             }
97
98             @Override
99             public void onConfigurationChanged(Configuration newConfig) {
100                 super.onConfigurationChanged(newConfig);
101                 setContent(li, up);
102             }
103         }
104         .setUidPolicy(up);
105         getFragment().setContent(mContent, up == null);
106     }
107
108     void addPolicy(final UidPolicy up) {
109         java.text.DateFormat df = DateFormat.getLongDateFormat(MainActivity.this);
110         String date = df.format(up.getLastDate());
111         if (up.last == 0)
112             date = null;
113         ListItem li = addItem(up.getPolicyResource(), new ListItem(getFragment(), up.name, date) {
114             public void onClick(View view) {
115                 super.onClick(view);
116
117                 setContent(this, up);
118             };
119         });
120         Drawable icon = Helper.loadPackageIcon(this, up.packageName);
121         if (icon == null)
122             li.setIcon(R.drawable.ic_launcher);
123         else
124             li.setDrawable(icon);
125     }
126     
127     Handler mHandler = new Handler();
128     void load() {
129         final ArrayList<UidPolicy> policies = SuDatabaseHelper.getPolicies(MainActivity.this);
130         
131         for (UidPolicy up: policies) {
132             addPolicy(up);
133         }
134     }
135 }