/*
- * Copyright (C) 2012-2014 Tobias Brunner
+ * Copyright (C) 2012-2015 Tobias Brunner
* Hochschule fuer Technik Rapperswil
*
* This program is free software; you can redistribute it and/or modify it
package org.strongswan.android.ui;
-import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
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.Loader;
import android.text.TextUtils;
import java.util.Hashtable;
import java.util.List;
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";
private OnTrustedCertificateSelectedListener mListener;
}
@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;
}
}
return true;
}
- /**
- * Reset the loader of this list fragment
- */
- public void reset()
- {
- if (isResumed())
- {
- setListShown(false);
- }
- getLoaderManager().restartLoader(0, null, this);
- }
-
@Override
public Loader<List<TrustedCertificateEntry>> onCreateLoader(int id, Bundle args)
{ /* we don't need the id as we have only one loader */
{
private List<TrustedCertificateEntry> mData;
private final TrustedCertificateSource mSource;
+ private TrustedCertificateManagerObserver mObserver;
public CertificateListLoader(Context context, TrustedCertificateSource source)
{
if (mData != null)
{ /* if we have data ready, deliver it directly */
deliverResult(mData);
- return;
}
- forceLoad();
+ if (takeContentChanged() || mData == null)
+ {
+ forceLoad();
+ }
}
@Override
if (isStarted())
{ /* if it is started we deliver the data directly,
* otherwise this is handled in onStartLoading */
+ if (mObserver == null)
+ {
+ mObserver = new TrustedCertificateManagerObserver();
+ TrustedCertificateManager.getInstance().addObserver(mObserver);
+ }
super.deliverResult(data);
}
}
@Override
protected void onReset()
{
+ if (mObserver != null)
+ {
+ TrustedCertificateManager.getInstance().deleteObserver(mObserver);
+ mObserver = 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);
+ }
}
}
}