mirror of
https://github.com/strongswan/strongswan.git
synced 2025-11-30 00:00:23 -05:00
android: Automatically reload certificates if manager is reset
No need to manually reset the fragments anymore.
This commit is contained in:
parent
01bade451f
commit
b9f79bc431
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2012-2014 Tobias Brunner
|
* Copyright (C) 2012-2015 Tobias Brunner
|
||||||
* Hochschule fuer Technik Rapperswil
|
* Hochschule fuer Technik Rapperswil
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
@ -15,11 +15,10 @@
|
|||||||
|
|
||||||
package org.strongswan.android.ui;
|
package org.strongswan.android.ui;
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.ListFragment;
|
import android.support.v4.app.ListFragment;
|
||||||
import android.support.v4.app.LoaderManager;
|
import android.support.v4.app.LoaderManager.LoaderCallbacks;
|
||||||
import android.support.v4.content.AsyncTaskLoader;
|
import android.support.v4.content.AsyncTaskLoader;
|
||||||
import android.support.v4.content.Loader;
|
import android.support.v4.content.Loader;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@ -43,8 +42,10 @@ import java.util.Collections;
|
|||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Observable;
|
||||||
|
import java.util.Observer;
|
||||||
|
|
||||||
public class TrustedCertificateListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<List<TrustedCertificateEntry>>, OnQueryTextListener
|
public class TrustedCertificateListFragment extends ListFragment implements LoaderCallbacks<List<TrustedCertificateEntry>>, OnQueryTextListener
|
||||||
{
|
{
|
||||||
public static final String EXTRA_CERTIFICATE_SOURCE = "certificate_source";
|
public static final String EXTRA_CERTIFICATE_SOURCE = "certificate_source";
|
||||||
private OnTrustedCertificateSelectedListener mListener;
|
private OnTrustedCertificateSelectedListener mListener;
|
||||||
@ -88,13 +89,13 @@ public class TrustedCertificateListFragment extends ListFragment implements Load
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Activity activity)
|
public void onAttach(Context context)
|
||||||
{
|
{
|
||||||
super.onAttach(activity);
|
super.onAttach(context);
|
||||||
|
|
||||||
if (activity instanceof OnTrustedCertificateSelectedListener)
|
if (context instanceof OnTrustedCertificateSelectedListener)
|
||||||
{
|
{
|
||||||
mListener = (OnTrustedCertificateSelectedListener)activity;
|
mListener = (OnTrustedCertificateSelectedListener)context;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,18 +125,6 @@ public class TrustedCertificateListFragment extends ListFragment implements Load
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reset the loader of this list fragment
|
|
||||||
*/
|
|
||||||
public void reset()
|
|
||||||
{
|
|
||||||
if (isResumed())
|
|
||||||
{
|
|
||||||
setListShown(false);
|
|
||||||
}
|
|
||||||
getLoaderManager().restartLoader(0, null, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Loader<List<TrustedCertificateEntry>> onCreateLoader(int id, Bundle args)
|
public Loader<List<TrustedCertificateEntry>> onCreateLoader(int id, Bundle args)
|
||||||
{ /* we don't need the id as we have only one loader */
|
{ /* we don't need the id as we have only one loader */
|
||||||
@ -176,6 +165,7 @@ public class TrustedCertificateListFragment extends ListFragment implements Load
|
|||||||
{
|
{
|
||||||
private List<TrustedCertificateEntry> mData;
|
private List<TrustedCertificateEntry> mData;
|
||||||
private final TrustedCertificateSource mSource;
|
private final TrustedCertificateSource mSource;
|
||||||
|
private TrustedCertificateManagerObserver mObserver;
|
||||||
|
|
||||||
public CertificateListLoader(Context context, TrustedCertificateSource source)
|
public CertificateListLoader(Context context, TrustedCertificateSource source)
|
||||||
{
|
{
|
||||||
@ -205,9 +195,11 @@ public class TrustedCertificateListFragment extends ListFragment implements Load
|
|||||||
if (mData != null)
|
if (mData != null)
|
||||||
{ /* if we have data ready, deliver it directly */
|
{ /* if we have data ready, deliver it directly */
|
||||||
deliverResult(mData);
|
deliverResult(mData);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
forceLoad();
|
if (takeContentChanged() || mData == null)
|
||||||
|
{
|
||||||
|
forceLoad();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -221,6 +213,11 @@ public class TrustedCertificateListFragment extends ListFragment implements Load
|
|||||||
if (isStarted())
|
if (isStarted())
|
||||||
{ /* if it is started we deliver the data directly,
|
{ /* if it is started we deliver the data directly,
|
||||||
* otherwise this is handled in onStartLoading */
|
* otherwise this is handled in onStartLoading */
|
||||||
|
if (mObserver == null)
|
||||||
|
{
|
||||||
|
mObserver = new TrustedCertificateManagerObserver();
|
||||||
|
TrustedCertificateManager.getInstance().addObserver(mObserver);
|
||||||
|
}
|
||||||
super.deliverResult(data);
|
super.deliverResult(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -228,7 +225,34 @@ public class TrustedCertificateListFragment extends ListFragment implements Load
|
|||||||
@Override
|
@Override
|
||||||
protected void onReset()
|
protected void onReset()
|
||||||
{
|
{
|
||||||
|
if (mObserver != null)
|
||||||
|
{
|
||||||
|
TrustedCertificateManager.getInstance().deleteObserver(mObserver);
|
||||||
|
mObserver = null;
|
||||||
|
}
|
||||||
mData = null;
|
mData = null;
|
||||||
|
super.onReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onAbandon()
|
||||||
|
{
|
||||||
|
if (mObserver != null)
|
||||||
|
{
|
||||||
|
TrustedCertificateManager.getInstance().deleteObserver(mObserver);
|
||||||
|
mObserver = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class TrustedCertificateManagerObserver implements Observer
|
||||||
|
{
|
||||||
|
private ForceLoadContentObserver mContentObserver = new ForceLoadContentObserver();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Observable observable, Object data)
|
||||||
|
{
|
||||||
|
mContentObserver.onChange(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -182,12 +182,6 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
|
|||||||
private void reloadCertificates()
|
private void reloadCertificates()
|
||||||
{
|
{
|
||||||
TrustedCertificateManager.getInstance().reset();
|
TrustedCertificateManager.getInstance().reset();
|
||||||
for (int i = 0; i < getSupportActionBar().getTabCount(); i++)
|
|
||||||
{
|
|
||||||
ActionBar.Tab tab = getSupportActionBar().getTabAt(i);
|
|
||||||
TrustedCertificatesTabListener listener = (TrustedCertificatesTabListener)tab.getTag();
|
|
||||||
listener.reset();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TrustedCertificatesTabListener implements ActionBar.TabListener
|
public static class TrustedCertificatesTabListener implements ActionBar.TabListener
|
||||||
@ -243,13 +237,5 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
|
|||||||
{
|
{
|
||||||
/* nothing to be done */
|
/* nothing to be done */
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reset()
|
|
||||||
{
|
|
||||||
if (mFragment != null)
|
|
||||||
{
|
|
||||||
((TrustedCertificateListFragment)mFragment).reset();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user