From: Tobias Brunner Date: Tue, 14 Aug 2012 07:15:02 +0000 (+0200) Subject: Changed TrustedCertificateAdapter for use with ListViews and TrustedCertificateEntry X-Git-Tag: 5.0.1~200 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db8bea83119f69fe065fb9d3ee4096c2c91756cf;p=thirdparty%2Fstrongswan.git Changed TrustedCertificateAdapter for use with ListViews and TrustedCertificateEntry --- diff --git a/src/frontends/android/res/layout/trusted_certificates_item.xml b/src/frontends/android/res/layout/trusted_certificates_item.xml index 48d77757d2..609d06a7ad 100644 --- a/src/frontends/android/res/layout/trusted_certificates_item.xml +++ b/src/frontends/android/res/layout/trusted_certificates_item.xml @@ -1,8 +1,6 @@ - + android:layout_height="wrap_content" + android:minHeight="?android:attr/listPreferredItemHeight" + android:background="?android:attr/selectableItemBackground" + android:padding="10dp" > - + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceMedium" /> - \ No newline at end of file + + + diff --git a/src/frontends/android/src/org/strongswan/android/ui/adapter/TrustedCertificateAdapter.java b/src/frontends/android/src/org/strongswan/android/ui/adapter/TrustedCertificateAdapter.java index ae94adc522..a97360d587 100644 --- a/src/frontends/android/src/org/strongswan/android/ui/adapter/TrustedCertificateAdapter.java +++ b/src/frontends/android/src/org/strongswan/android/ui/adapter/TrustedCertificateAdapter.java @@ -1,7 +1,5 @@ /* * Copyright (C) 2012 Tobias Brunner - * Copyright (C) 2012 Giuliano Grassi - * Copyright (C) 2012 Ralf Sager * Hochschule fuer Technik Rapperswil * * This program is free software; you can redistribute it and/or modify it @@ -17,133 +15,57 @@ package org.strongswan.android.ui.adapter; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Hashtable; -import java.util.Map.Entry; +import java.util.List; import org.strongswan.android.R; +import org.strongswan.android.data.TrustedCertificateEntry; import android.content.Context; -import android.net.http.SslCertificate; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.BaseAdapter; +import android.widget.ArrayAdapter; import android.widget.TextView; -public class TrustedCertificateAdapter extends BaseAdapter +public class TrustedCertificateAdapter extends ArrayAdapter { - private final ArrayList mContent; - private final Context mContext; - - public class CertEntry implements Comparable - { - public X509Certificate mCert; - public String mAlias; - public String mDisplayName; - - public CertEntry(String alias, X509Certificate cert) - { - mCert = cert; - mAlias = alias; - } - - public String getDisplayText() - { - if (mDisplayName == null) - { - SslCertificate cert = new SslCertificate(mCert); - String o = cert.getIssuedTo().getOName(); - String ou = cert.getIssuedTo().getUName(); - String cn = cert.getIssuedTo().getCName(); - if (!o.isEmpty()) - { - mDisplayName = o; - if (!cn.isEmpty()) - { - mDisplayName = mDisplayName + ", " + cn; - } - else if (!ou.isEmpty()) - { - mDisplayName = mDisplayName + ", " + ou; - } - } - else if (!cn.isEmpty()) - { - mDisplayName = cn; - } - else - { - mDisplayName = cert.getIssuedTo().getDName(); - } - } - return mDisplayName; - } - - @Override - public int compareTo(CertEntry another) - { - return getDisplayText().compareToIgnoreCase(another.getDisplayText()); - } - } - - public TrustedCertificateAdapter(Context context, - Hashtable content) + public TrustedCertificateAdapter(Context context) { - mContext = context; - mContent = new ArrayList(); - for (Entry entry : content.entrySet()) - { - mContent.add(new CertEntry(entry.getKey(), entry.getValue())); - } - Collections.sort(mContent); - } - - @Override - public int getCount() - { - return mContent.size(); - } - - @Override - public Object getItem(int position) - { - return mContent.get(position); + super(context, R.layout.trusted_certificates_item); } /** - * Returns the position (index) of the entry with the given alias. + * Set new data for this adapter. * - * @param alias alias of the item to find - * @return the position (index) in the list + * @param data the new data (null to clear) */ - public int getItemPosition(String alias) + public void setData(List data) { - for (int i = 0; i < mContent.size(); i++) + clear(); + if (data != null) { - if (mContent.get(i).mAlias.equals(alias)) - { - return i; - } + addAll(data); } - return -1; - } - - @Override - public long getItemId(int position) - { - return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { - LayoutInflater inflater = LayoutInflater.from(mContext); - final View certView = inflater.inflate(R.layout.trusted_certificates_item, null); - final TextView certText = (TextView)certView.findViewById(R.id.certificate_name); - certText.setText(mContent.get(position).getDisplayText()); - return certView; + View view; + if (convertView != null) + { + view = convertView; + } + else + { + LayoutInflater inflater = LayoutInflater.from(getContext()); + view = inflater.inflate(R.layout.trusted_certificates_item, parent, false); + } + TrustedCertificateEntry item = getItem(position); + TextView text = (TextView)view.findViewById(R.id.subject_primary); + text.setText(item.getSubjectPrimary()); + text = (TextView)view.findViewById(R.id.subject_secondary); + text.setText(item.getSubjectSecondary()); + return view; } }