diff --git a/app/build.gradle b/app/build.gradle index d04cbbf..f901441 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,15 @@ android { testHandleProfiling true testFunctionalTest true } + + buildTypes { + debug { + applicationIdSuffix ".debug" + debuggable true + } + } } dependencies { compile project(':libsuperuser') -} \ 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 index 7e67d79..c147d99 100644 --- a/app/src/main/java/com/nutomic/zertman/CertificateAdapter.java +++ b/app/src/main/java/com/nutomic/zertman/CertificateAdapter.java @@ -5,6 +5,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.Button; import android.widget.TextView; /** @@ -12,8 +13,15 @@ import android.widget.TextView; */ public class CertificateAdapter extends ArrayAdapter { - public CertificateAdapter(Context context) { - super(context, android.R.layout.simple_list_item_1); + private CertificateManager mCertificateManager; + + private MovedCertificatesStorage mMovedCertificatesStorage; + + public CertificateAdapter(Context context, CertificateManager certificateManager, + MovedCertificatesStorage movedCertificatesStorage) { + super(context, 0); + mCertificateManager = certificateManager; + mMovedCertificatesStorage = movedCertificatesStorage; } @Override @@ -21,15 +29,37 @@ public class CertificateAdapter extends ArrayAdapter { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(android.R.layout.simple_list_item_1, parent, false); + convertView = inflater.inflate(R.layout.certificate_list_item, 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)); + final Certificate cert = getItem(position); + TextView title = (TextView) convertView.findViewById(R.id.title); + title.setText(cert.getFile().getName()); + Button button = (Button) convertView.findViewById(R.id.button); + int colorRes; + if (cert.isSystemCertificate()) { + button.setText(R.string.delete); + button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mCertificateManager.deleteCertificate(cert); + mMovedCertificatesStorage.delete(cert); + } + }); + colorRes = R.color.background_system_certificate; + } + else { + button.setText(R.string.move_to_system); + button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mCertificateManager.moveCertificateToSystem(cert); + mMovedCertificatesStorage.insert(cert); + } + }); + colorRes = R.color.background_user_certificate; + } + convertView.setBackgroundColor(getContext().getResources().getColor(colorRes)); return convertView; } diff --git a/app/src/main/java/com/nutomic/zertman/MainActivity.java b/app/src/main/java/com/nutomic/zertman/MainActivity.java index 5b9d064..f648e2e 100644 --- a/app/src/main/java/com/nutomic/zertman/MainActivity.java +++ b/app/src/main/java/com/nutomic/zertman/MainActivity.java @@ -8,7 +8,6 @@ import android.widget.ListView; import java.util.List; - public class MainActivity extends ListActivity { private ListView mListView; @@ -27,15 +26,21 @@ public class MainActivity extends ListActivity { super.onCreate(savedInstanceState); mListView = getListView(); - mCertificateAdapter = new CertificateAdapter(this); mCertificateManager = new CertificateManager(); mMovedCertificatesStorage = new MovedCertificatesStorage(this); + mCertificateAdapter = + new CertificateAdapter(this, mCertificateManager, mMovedCertificatesStorage); mCertificateAdapter.addAll(mCertificateManager.getCertificates(false)); + // FIXME: nothing listed + // -> db table is empty mCertificateAdapter.addAll(mMovedCertificatesStorage.list()); mListView.setAdapter(mCertificateAdapter); } + /** + * Shows a dialog to move all user certificates to system storage. + */ @Override protected void onResume() { super.onResume(); @@ -48,7 +53,7 @@ public class MainActivity extends ListActivity { @Override public void onClick(DialogInterface dialog, int which) { for (Certificate c : list) { - mCertificateManager.moveCertificateToSystem(c); + c = mCertificateManager.moveCertificateToSystem(c); mMovedCertificatesStorage.insert(c); } } diff --git a/app/src/main/java/com/nutomic/zertman/MovedCertificatesStorage.java b/app/src/main/java/com/nutomic/zertman/MovedCertificatesStorage.java index 2a1c80f..5e381f1 100644 --- a/app/src/main/java/com/nutomic/zertman/MovedCertificatesStorage.java +++ b/app/src/main/java/com/nutomic/zertman/MovedCertificatesStorage.java @@ -9,6 +9,7 @@ import android.provider.BaseColumns; import java.io.Closeable; import java.io.IOException; +import java.security.InvalidParameterException; import java.util.ArrayList; import java.util.List; @@ -32,8 +33,7 @@ public class MovedCertificatesStorage implements Closeable { } public boolean insert(Certificate cert) { - if (!cert.isSystemCertificate()) - return false; + assert(cert.isSystemCertificate()); ContentValues cv = new ContentValues(); cv.put(Table.COLUMN_NAME_FILE_NAME, cert.getFile().getName()); diff --git a/app/src/main/res/layout/certificate_list_item.xml b/app/src/main/res/layout/certificate_list_item.xml new file mode 100644 index 0000000..c78152f --- /dev/null +++ b/app/src/main/res/layout/certificate_list_item.xml @@ -0,0 +1,26 @@ + + + + + + +