/*
* Funambol is a mobile platform developed by Funambol, Inc.
* Copyright (C) 2010 Funambol, Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by
* the Free Software Foundation with the addition of the following permission
* added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
* WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE
* WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* 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.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program; if not, see http://www.gnu.org/licenses or write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA.
*
* You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite
* 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License
* version 3, these Appropriate Legal Notices must retain the display of the
* "Powered by Funambol" logo. If the display of the logo is not reasonably
* feasible for technical reasons, the Appropriate Legal Notices must display
* the words "Powered by Funambol".
*/
package de.chbosync.android.syncmlclient.activities.settings;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TabHost;
import com.funambol.client.configuration.Configuration;
import com.funambol.client.controller.Controller;
import com.funambol.client.customization.Customization;
import com.funambol.client.localization.Localization;
import de.chbosync.android.syncmlclient.R;
import de.chbosync.android.syncmlclient.controller.AndroidController;
/**
* Represents a generic settings tab.
*/
public abstract class AndroidSettingsTab extends ScrollView implements TabHost.TabContentFactory {
protected Configuration configuration;
protected Controller controller;
protected Localization localization;
protected Customization customization;
protected Activity activity;
public AndroidSettingsTab(Activity activity, Bundle savedInstanceState) {
super(activity);
this.activity = activity;
// Init the configuration and localization
controller = AndroidController.getInstance();
configuration = controller.getConfiguration();
localization = controller.getLocalization();
customization = controller.getCustomization();
// Set the correct View id
setId(getLayoutId());
}
/**
* Added for ChBoSync
*
*/
public Activity getActivity() {
return this.activity;
}
/**
* Add a divider View to a ViewGroup object
* @param vg
*/
protected void addDivider(ViewGroup vg) {
ImageView divider = new ImageView(activity);
divider.setBackgroundResource(R.drawable.divider_shape);
LinearLayout.LayoutParams dl = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
vg.addView(divider, dl);
}
public View createTabContent(String tag) {
if(getTag().equals(tag)) {
return this;
}
return null;
}
/**
* @return the Tab specific tag
*/
@Override
public abstract String getTag();
/**
* @return the layout id for this tab
*/
public abstract int getLayoutId();
/**
* @return true if there is changes on these tab settings
*/
public abstract boolean hasChanges();
/**
* Save the tab settings
* @param callback used to send back the result
*/
public abstract void saveSettings(SaveSettingsCallback callback);
/**
* Cancel the tab settings
*/
public abstract void cancelSettings();
/**
* @return the tab indicator icon
*/
public abstract Drawable getIndicatorIcon();
/**
* @return the tab indicator string
*/
public abstract String getIndicatorLabel();
}