/*
* Zirco Browser for Android
*
* Copyright (C) 2010 J. Devauchelle and contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 3 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
package org.zirco.controllers;
import java.util.ArrayList;
import java.util.List;
import org.zirco.model.DbAdapter;
import org.zirco.model.items.DownloadItem;
import org.zirco.ui.components.CustomWebView;
import android.content.Context;
import android.content.SharedPreferences;
/**
* Controller implementation.
*/
public final class Controller {
private SharedPreferences mPreferences;
private List<CustomWebView> mWebViewList;
private List<DownloadItem> mDownloadList;
private List<String> mAdBlockWhiteList = null;
private List<String> mMobileViewUrlList = null;
/**
* Holder for singleton implementation.
*/
private static final class ControllerHolder {
private static final Controller INSTANCE = new Controller();
/**
* Private Constructor.
*/
private ControllerHolder() { }
}
/**
* Get the unique instance of the Controller.
* @return The instance of the Controller
*/
public static Controller getInstance() {
return ControllerHolder.INSTANCE;
}
/**
* Private Constructor.
*/
private Controller() {
mDownloadList = new ArrayList<DownloadItem>();
}
/**
* Get the list of current WebViews.
* @return The list of current WebViews.
*/
public List<CustomWebView> getWebViewList() {
return mWebViewList;
}
/**
* Set the list of current WebViews.
* @param list The list of current WebViews.
*/
public void setWebViewList(List<CustomWebView> list) {
mWebViewList = list;
}
/**
* Get a SharedPreferences instance.
* @return The SharedPreferences instance.
*/
public SharedPreferences getPreferences() {
return mPreferences;
}
/**
* Set the SharedPreferences instance.
* @param preferences The SharedPreferences instance.
*/
public void setPreferences(SharedPreferences preferences) {
this.mPreferences = preferences;
}
/**
* Get the current download list.
* @return The current download list.
*/
public List<DownloadItem> getDownloadList() {
return mDownloadList;
}
/**
* Add an item to the download list.
* @param item The new item.
*/
public void addToDownload(DownloadItem item) {
mDownloadList.add(item);
}
public synchronized void clearCompletedDownloads() {
List<DownloadItem> newList = new ArrayList<DownloadItem>();
for (DownloadItem item : mDownloadList) {
if (!item.isFinished()) {
newList.add(item);
}
}
mDownloadList.clear();
mDownloadList = newList;
}
/**
* Get the list of white-listed url for the AdBlocker.
* @param context The current context.
* @return A list of String url.
*/
public List<String> getAdBlockWhiteList(Context context) {
if (mAdBlockWhiteList == null) {
DbAdapter db = new DbAdapter(context);
db.open();
mAdBlockWhiteList = db.getWhiteList();
db.close();
}
return mAdBlockWhiteList;
}
/**
* Reset the AdBlock white list, so that it will be reloaded.
*/
public void resetAdBlockWhiteList() {
mAdBlockWhiteList = null;
}
/**
* Get the list of mobile view urls.
* @param context The current context.
* @return A list of String url.
*/
public List<String> getMobileViewUrlList(Context context) {
if (mMobileViewUrlList == null) {
DbAdapter db = new DbAdapter(context);
db.open();
mMobileViewUrlList = db.getMobileViewUrlList();
db.close();
}
return mMobileViewUrlList;
}
/**
* Reset the mobile view url list, so that it will be reloaded.
*/
public void resetMobileViewUrlList() {
mMobileViewUrlList = null;
}
}