OSDN Git Service

Add a more user friendly prompt, and an option to turn it off for advanced users
authorAdam Shanks <chainsdd@gmail.com>
Sun, 20 Nov 2011 15:24:11 +0000 (15:24 +0000)
committerAdam Shanks <chainsdd@gmail.com>
Sun, 20 Nov 2011 15:24:11 +0000 (15:24 +0000)
res/layout-land/activity_request.xml
res/layout-land/activity_request_pin.xml
res/layout-port/activity_request.xml
res/layout-port/activity_request_pin.xml
res/layout/request_details.xml
res/values/strings.xml
res/xml/preferences.xml
src/com/noshufou/android/su/SuRequestActivity.java
src/com/noshufou/android/su/preferences/Preferences.java

index 67b59dc..8f9031a 100644 (file)
         android:scaleType="fitXY"
         android:src="@drawable/dialog_divider" />
 
-    <TextView android:id="@+id/message"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center_horizontal"
-        android:text="@string/request_message" />
-
-    <LinearLayout android:id="@+id/details_layout"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingTop="5dip"
-        android:paddingBottom="10dip"
-        android:paddingLeft="15dip"
-        android:paddingRight="15dip"
-        android:orientation="vertical">
-
-        <include layout="@layout/request_details" />
-
-    </LinearLayout>
+    <include layout="@layout/request_details" />
 
     <include layout="@layout/request_buttons" />
 </LinearLayout>
index b025f76..110418b 100644 (file)
             android:scaleType="fitXY"
             android:src="@drawable/dialog_divider" />
 
-        <TextView android:id="@+id/message"
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content"
-            android:gravity="center_horizontal"
-            android:text="@string/request_message" />
-
-        <LinearLayout android:id="@+id/details_layout"
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content"
-            android:paddingTop="5dip"
-            android:paddingBottom="10dip"
-            android:paddingLeft="15dip"
-            android:paddingRight="15dip"
-            android:orientation="vertical">
-
-            <include layout="@layout/request_details" />
-
-        </LinearLayout>
+        <include layout="@layout/request_details" />
 
         <CheckBox android:id="@+id/check_remember"
             android:layout_width="fill_parent"
index 2650cfd..9044ba7 100644 (file)
         android:scaleType="fitXY"
         android:src="@drawable/dialog_divider" />
 
-    <TextView android:id="@+id/message"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center_horizontal"
-        android:text="@string/request_message" />
-
-    <LinearLayout android:id="@+id/details_layout"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:paddingTop="5dip"
-        android:paddingBottom="10dip"
-        android:paddingLeft="15dip"
-        android:paddingRight="15dip"
-        android:orientation="vertical">
-
-        <include layout="@layout/request_details" />
-
-    </LinearLayout>
+    <include layout="@layout/request_details" />
 
     <include layout="@layout/request_buttons" />
 
index 0db4833..49fec82 100644 (file)
         android:scaleType="fitXY"
         android:src="@drawable/dialog_divider" />
 
-    <TextView android:id="@+id/message"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center_horizontal"
-        android:text="@string/request_message" />
-
-    <LinearLayout android:id="@+id/details_layout"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:paddingTop="5dip"
-        android:paddingBottom="10dip"
-        android:paddingLeft="15dip"
-        android:paddingRight="15dip"
-        android:orientation="vertical">
-
-        <include  layout="@layout/request_details" />
-
-    </LinearLayout>
+    <include layout="@layout/request_details" />
 
     <include layout="@layout/pin_layout" />
 
index 39c887c..b08e199 100644 (file)
   limitations under the License.
 -->
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
-    <LinearLayout
+    <ViewFlipper android:id="@+id/flipper"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
-        <TextView android:id="@+id/app_name_label"
-            style="@style/DetailsLabel"
-            android:layout_width="wrap_content"
-            android:paddingRight="3dp"
-            android:text="@string/request_app_name" />
-        <TextView android:id="@+id/app_name"
-            style="@style/DetailsInfo"
-            android:singleLine="true"
-            android:ellipsize="middle" />
-    </LinearLayout>
+        android:layout_height="wrap_content">
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
-        <TextView android:id="@+id/package_name_label"
-            style="@style/DetailsLabel"
-            android:layout_width="wrap_content"
-            android:paddingRight="3dp"
-            android:text="@string/detail_package" />
-        <TextView android:id="@+id/package_name"
-            style="@style/DetailsInfo"
-            android:singleLine="true"
-            android:ellipsize="middle" />
-    </LinearLayout>
+        <TextView android:id="@+id/message"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_horizontal"
+            android:text="@string/request_message" />
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
-        <TextView android:id="@+id/request_detail_label"
-            style="@style/DetailsLabel"
-            android:layout_width="wrap_content"
-            android:paddingRight="3dp"
-            android:text="@string/detail_request" />
-        <TextView android:id="@+id/request_detail"
-            style="@style/DetailsInfo"
-            android:singleLine="true"
-            android:ellipsize="middle" />
-    </LinearLayout>
+        <LinearLayout android:id="@+id/details_layout"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:paddingTop="5dip"
+            android:paddingBottom="10dip"
+            android:paddingLeft="15dip"
+            android:paddingRight="15dip"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+                <TextView android:id="@+id/app_name_label"
+                    style="@style/DetailsLabel"
+                    android:layout_width="wrap_content"
+                    android:paddingRight="3dp"
+                    android:text="@string/request_app_name" />
+                <TextView android:id="@+id/app_name"
+                    style="@style/DetailsInfo"
+                    android:singleLine="true"
+                    android:ellipsize="middle" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+                <TextView android:id="@+id/package_name_label"
+                    style="@style/DetailsLabel"
+                    android:layout_width="wrap_content"
+                    android:paddingRight="3dp"
+                    android:text="@string/detail_package" />
+                <TextView android:id="@+id/package_name"
+                    style="@style/DetailsInfo"
+                    android:singleLine="true"
+                    android:ellipsize="middle" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+                <TextView android:id="@+id/request_detail_label"
+                    style="@style/DetailsLabel"
+                    android:layout_width="wrap_content"
+                    android:paddingRight="3dp"
+                    android:text="@string/detail_request" />
+                <TextView android:id="@+id/request_detail"
+                    style="@style/DetailsInfo"
+                    android:singleLine="true"
+                    android:ellipsize="middle" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+                <TextView android:id="@+id/command_label"
+                    style="@style/DetailsLabel"
+                    android:layout_width="wrap_content"
+                    android:paddingRight="3dp"
+                    android:text="@string/detail_command" />
+                <TextView android:id="@+id/command"
+                    style="@style/DetailsInfo"
+                    android:singleLine="true"
+                    android:ellipsize="middle" />
+            </LinearLayout>
+
+        </LinearLayout>
+
+    </ViewFlipper>
 
-    <LinearLayout
+    <TextView android:id="@+id/more_info"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:orientation="horizontal">
-        <TextView android:id="@+id/command_label"
-            style="@style/DetailsLabel"
-            android:layout_width="wrap_content"
-            android:paddingRight="3dp"
-            android:text="@string/detail_command" />
-        <TextView android:id="@+id/command"
-            style="@style/DetailsInfo"
-            android:singleLine="true"
-            android:ellipsize="middle" />
-    </LinearLayout>
+        android:gravity="right"
+        android:text="@string/request_more_info" />
 </merge>
\ No newline at end of file
index ed49a41..c03cec7 100644 (file)
@@ -76,7 +76,9 @@
     <string name="detail_command">Command</string>
     <string name="detail_status">Status</string>
 
-    <string name="request_message">The following app is requesting superuser access:</string>
+    <string name="request_message">%1$s is requesting Superuser access.\n\nWarning: If you did not initiate this action, or if you do not understand this request, it\'s generally a good idea to deny it.</string>
+    <string name="request_more_info">Tap for more info</string>
+    <string name="request_less_info">Tap for less info</string>
     <string name="request_app_name">App</string>
 
     <string name="pref_title">Preferences</string>
         <item quantity="one">One app and preferences restored</item>
         <item quantity="other">%1$d apps and preferences restored</item>
     </plurals>
-    <string name="pref_category_info_title">Superuser information</string>
+    <string name="pref_category_info_title">General</string>
     <string name="pref_version_title">Superuser v%1$s (%2$d)</string>
     <string name="pref_version_summary">Database version %s</string>
     <string name="pref_bin_version_title_loading">Loading su binary version</string>
     <string name="pref_outdated_notification_title">Outdated binary notification</string>
     <string name="pref_outdated_notification_summary_on">Show notification when binary is outdated</string>
     <string name="pref_outdated_notification_summary_off">Do not show notification when binary is outdated</string>
+    <string name="pref_advanced_prompt_title">Use advanced prompt</string>
+    <string name="pref_advanced_prompt_summary_on">Do not show warning on request prompts</string>
+    <string name="pref_advanced_prompt_summary_off">Show warning on request prompts</string>
     <string name="pref_changelog_title">Changelog</string>
     <string name="pref_changelog_summary">Display the changelog</string>
     <string name="pref_get_elite_title">Go Elite!</string>
index 2fdbcf1..4f8479a 100644 (file)
             android:summaryOn="@string/pref_outdated_notification_summary_on"
             android:summaryOff="@string/pref_outdated_notification_summary_off"
             android:defaultValue="true" />
+        <CheckBoxPreference
+            android:key="pref_advanced_prompt"
+            android:title="@string/pref_advanced_prompt_title"
+            android:summaryOn="@string/pref_advanced_prompt_summary_on"
+            android:summaryOff="@string/pref_advanced_prompt_summary_off"
+            android:defaultValue="false" />
         <Preference
             android:key="pref_changelog"
             android:title="@string/pref_changelog_title"
index 91ebae3..3a61200 100644 (file)
@@ -46,6 +46,7 @@ import android.widget.Button;
 import android.widget.CheckBox;
 import android.widget.EditText;
 import android.widget.TextView;
+import android.widget.ViewFlipper;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -68,6 +69,8 @@ public class SuRequestActivity extends Activity implements OnClickListener {
 
     private CheckBox mRememberCheckBox;
     private EditText mPinText;
+    private ViewFlipper mFlipper;
+    private TextView mMoreInfo;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -80,8 +83,6 @@ public class SuRequestActivity extends Activity implements OnClickListener {
             return;
         }
 
-        this.setContentView(R.layout.activity_request);
-
         mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
 
         Intent intent = this.getIntent();
@@ -129,6 +130,9 @@ public class SuRequestActivity extends Activity implements OnClickListener {
             Util.showOutdatedNotification(this);
         }
 
+        TextView message = (TextView) findViewById(R.id.message);
+        message.setText(getString(R.string.request_message, Util.getAppName(this, mCallerUid, false)));
+
         TextView appNameView = (TextView) findViewById(R.id.app_name);
         appNameView.setText(Util.getAppName(this, mCallerUid, true));
 
@@ -143,6 +147,17 @@ public class SuRequestActivity extends Activity implements OnClickListener {
 
         mRememberCheckBox = (CheckBox) findViewById(R.id.check_remember);
         mRememberCheckBox.setChecked(mPrefs.getBoolean("last_remember_value", true));
+
+        mFlipper = (ViewFlipper) findViewById(R.id.flipper);
+        mMoreInfo = (TextView)findViewById(R.id.more_info);
+
+        if (mPrefs.getBoolean(Preferences.ADVANCED_PROMPT, false)) {
+            mFlipper.setDisplayedChild(1);
+            mMoreInfo.setVisibility(View.GONE);
+        } else {
+            mFlipper.setOnClickListener(this);
+            mMoreInfo.setOnClickListener(this);
+        }
     }
 
     @Override
@@ -208,6 +223,18 @@ public class SuRequestActivity extends Activity implements OnClickListener {
         case R.id.pin_cancel:
             sendResult(false, mRememberCheckBox.isChecked());
             break;
+        case R.id.flipper:
+        case R.id.more_info:
+            flipInfo();
+        }
+    }
+
+    private void flipInfo() {
+        mFlipper.showNext();
+        if (mFlipper.getDisplayedChild() == 0) {
+            mMoreInfo.setText(R.string.request_more_info);
+        } else {
+            mMoreInfo.setText(R.string.request_less_info);
         }
     }
     
index 29ef85d..2915f56 100644 (file)
@@ -29,6 +29,7 @@ public class Preferences {
     public static final String VERSION = "pref_version";
     public static final String BIN_VERSION = "pref_bin_version";
     public static final String OUTDATED_NOTIFICATION = "pref_outdated_notification";
+    public static final String ADVANCED_PROMPT = "pref_advanced_prompt";
     public static final String CHANGELOG = "pref_changelog";
     public static final String GET_ELITE = "pref_get_elite";