From 5159fa88b14795f5585072d6448429440cace1a6 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Wed, 16 Jul 2014 00:24:00 +0200 Subject: [PATCH] Added certificate listing with colors to MainActivity. --- .../CertificateAdapterTest.java | 43 +++++++++++++++++++ .../MainActivityTest.java | 37 +++++++++++++--- .../java/com/nutomic/zertman/Certificate.java | 5 ++- .../nutomic/zertman/CertificateAdapter.java | 36 ++++++++++++++++ .../nutomic/zertman/CertificateManager.java | 3 ++ .../com/nutomic/zertman/MainActivity.java | 22 ++++++++-- app/src/main/res/layout/activity_main.xml | 7 --- app/src/main/res/values/colors.xml | 5 +++ 8 files changed, 142 insertions(+), 16 deletions(-) create mode 100644 app/src/androidTest/java/com.nutomic.zertman.test/CertificateAdapterTest.java create mode 100644 app/src/main/java/com/nutomic/zertman/CertificateAdapter.java delete mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/values/colors.xml diff --git a/app/src/androidTest/java/com.nutomic.zertman.test/CertificateAdapterTest.java b/app/src/androidTest/java/com.nutomic.zertman.test/CertificateAdapterTest.java new file mode 100644 index 0000000..a34daed --- /dev/null +++ b/app/src/androidTest/java/com.nutomic.zertman.test/CertificateAdapterTest.java @@ -0,0 +1,43 @@ +package com.nutomic.zertman.test; + +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.SmallTest; +import android.widget.TextView; + +import com.nutomic.zertman.Certificate; +import com.nutomic.zertman.CertificateAdapter; + +import java.util.ArrayList; + +public class CertificateAdapterTest extends AndroidTestCase { + + private CertificateAdapter mCertificateAdapter; + + private ArrayList mTestCertificates = new ArrayList(); + + @Override + protected void setUp() throws Exception { + super.setUp(); + + mCertificateAdapter = new CertificateAdapter(getContext()); + mTestCertificates.add(new Certificate("first", false)); + mTestCertificates.add(new Certificate("second", true)); + mCertificateAdapter.addAll(mTestCertificates); + } + + @SmallTest + public void testAdapter() { + for (int i = 0; i < mTestCertificates.size(); i++) { + TextView tv1 = (TextView) mCertificateAdapter.getView(i, null, null) + .findViewById(android.R.id.text1); + assertTrue(tv1.getText().equals(mTestCertificates.get(i).getFile().getName())); + } + } + + @SmallTest + public void testColors() { + assertNotSame(mCertificateAdapter.getView(0, null, null).getBackground(), + mCertificateAdapter.getView(1, null, null).getBackground()); + } + +} diff --git a/app/src/androidTest/java/com.nutomic.zertman.test/MainActivityTest.java b/app/src/androidTest/java/com.nutomic.zertman.test/MainActivityTest.java index 67884e9..45ed03e 100644 --- a/app/src/androidTest/java/com.nutomic.zertman.test/MainActivityTest.java +++ b/app/src/androidTest/java/com.nutomic.zertman.test/MainActivityTest.java @@ -1,19 +1,46 @@ package com.nutomic.zertman.test; +import android.content.pm.ActivityInfo; +import android.test.ActivityInstrumentationTestCase2; import android.test.ActivityUnitTestCase; import android.test.suitebuilder.annotation.SmallTest; +import android.util.Log; import com.nutomic.zertman.MainActivity; -public class MainActivityTest extends ActivityUnitTestCase { +public class MainActivityTest extends ActivityInstrumentationTestCase2 { + + private static final String TAG = "MainActivityTest"; + + private MainActivity mActivity; public MainActivityTest() { super(MainActivity.class); } - @SmallTest - public void testBlah() { - // TODO: test for showing ListView with all cert files + @Override + protected void setUp() throws Exception { + super.setUp(); + + setActivityInitialTouchMode(false); + + mActivity = getActivity(); + getInstrumentation().waitForIdleSync(); } -} \ No newline at end of file + @SmallTest + public void testOrientation() { + try { + mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + Thread.sleep(50); + assertTrue(true); + mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + Thread.sleep(50); + assertTrue(true); + } + catch (InterruptedException e) { + Log.w(TAG, "Sleep failed", e); + } + } + +} diff --git a/app/src/main/java/com/nutomic/zertman/Certificate.java b/app/src/main/java/com/nutomic/zertman/Certificate.java index 3e22d2f..1d7e45c 100644 --- a/app/src/main/java/com/nutomic/zertman/Certificate.java +++ b/app/src/main/java/com/nutomic/zertman/Certificate.java @@ -33,5 +33,8 @@ public class Certificate { ? new File(CertificateManager.SYSTEM_CERTIFICATES_DIR, mFilename) : new File(CertificateManager.USER_CERTIFICATES_DIR, mFilename); } + public boolean isSystemCertificate() { + return mIsSystemCertificate; + } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nutomic/zertman/CertificateAdapter.java b/app/src/main/java/com/nutomic/zertman/CertificateAdapter.java new file mode 100644 index 0000000..7e67d79 --- /dev/null +++ b/app/src/main/java/com/nutomic/zertman/CertificateAdapter.java @@ -0,0 +1,36 @@ +package com.nutomic.zertman; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; + +/** + * List Adapter for {@link Certificate}. + */ +public class CertificateAdapter extends ArrayAdapter { + + public CertificateAdapter(Context context) { + super(context, android.R.layout.simple_list_item_1); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + if (convertView == null) { + LayoutInflater inflater = (LayoutInflater) getContext() + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + convertView = inflater.inflate(android.R.layout.simple_list_item_1, parent, false); + } + + TextView title = (TextView) convertView.findViewById(android.R.id.text1); + title.setText(getItem(position).getFile().getName()); + convertView.setBackgroundColor(getContext().getResources().getColor( + (getItem(position).isSystemCertificate()) + ? R.color.background_system_certificate + : R.color.background_user_certificate)); + return convertView; + } + +} diff --git a/app/src/main/java/com/nutomic/zertman/CertificateManager.java b/app/src/main/java/com/nutomic/zertman/CertificateManager.java index 36314b5..224ac1f 100644 --- a/app/src/main/java/com/nutomic/zertman/CertificateManager.java +++ b/app/src/main/java/com/nutomic/zertman/CertificateManager.java @@ -8,6 +8,9 @@ import java.util.List; import eu.chainfire.libsuperuser.Shell; +/** + * Provides functions to handle system and user certificates using root. + */ public class CertificateManager { private static final String TAG = "CertificateManager"; diff --git a/app/src/main/java/com/nutomic/zertman/MainActivity.java b/app/src/main/java/com/nutomic/zertman/MainActivity.java index ae8715e..33f422f 100644 --- a/app/src/main/java/com/nutomic/zertman/MainActivity.java +++ b/app/src/main/java/com/nutomic/zertman/MainActivity.java @@ -1,15 +1,31 @@ package com.nutomic.zertman; -import android.app.Activity; +import android.app.ListActivity; import android.os.Bundle; +import android.widget.ListView; -public class MainActivity extends Activity { +public class MainActivity extends ListActivity { + private ListView mListView; + + private CertificateAdapter mCertificateAdapter; + + private CertificateManager mCertificateManager; + + /** + * Sets up ListView showing all certificates. + */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); + + mListView = getListView(); + mCertificateAdapter = new CertificateAdapter(this); + mCertificateManager = new CertificateManager(); + mCertificateAdapter.addAll(mCertificateManager.getCertificates(false)); + mCertificateAdapter.addAll(mCertificateManager.getCertificates(true)); + mListView.setAdapter(mCertificateAdapter); } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 3cb73f9..0000000 --- a/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..63d8683 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #ffe2f0b6 + #ffffcaca +