/* * CDDL HEADER START * * The contents of this file are subject to the terms of the Common Development * and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at * src/com/vodafone360/people/VODAFONE.LICENSE.txt or * http://github.com/360/360-Engine-for-Android * See the License for the specific language governing permissions and * limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each file and * include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt. * If applicable, add the following below this CDDL HEADER, with the fields * enclosed by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * Copyright 2010 Vodafone Sales & Services Ltd. All rights reserved. * Use is subject to license terms. */ package com.vodafone360.people.service.interfaces; import java.util.ArrayList; import android.os.Bundle; import android.os.Handler; import com.vodafone360.people.datatypes.Identity; import com.vodafone360.people.datatypes.LoginDetails; import com.vodafone360.people.datatypes.RegistrationDetails; import com.vodafone360.people.datatypes.ContactSummary.OnlineStatus; import com.vodafone360.people.engine.presence.NetworkPresence.SocialNetwork; import com.vodafone360.people.service.PersistSettings.InternetAvail; import com.vodafone360.people.service.agent.NetworkAgentState; /*** * Interface to expose service functionality to the UI classes. */ public interface IPeopleService { /*** * Allows the Activity to register a Handler, so that it can receive new * call back events from the Service layer. * * @param Handler to listen for call back events. */ void addEventCallback(Handler uiHandler); /*** * Allows the Activity to unregister a Handler, so it will no longer receive * call back events from the Service layer. Usually called on an Activity's * onDestroy() method. * * @param Handler to listen for call back events. */ void removeEventCallback(Handler uiHandler); /*** * Called by the UI to determine if the Service is currently logged into the * Vodafone 360 back end. Called by the StartActivity and other key classes, * so the work flow can be diverted back to the Landing page if the user has * been signed out for any reason. * * @return TRUE Service is logged into the back end system, FALSE user must * log in before they can use the Application. */ boolean getLoginRequired(); /*** * Sets a preference that disables the showing of further roaming * notifications. * * @param TRUE show further roaming notifications, FALSE stop showing */ void setShowRoamingNotificationAgain(boolean showAgain); /*** * Gets the type of roaming notification to show to the user * * @return ROAMING_DIALOG_GLOBAL_ON Data roaming is on, * ROAMING_DIALOG_GLOBAL_OFF Data roaming is off */ int getRoamingNotificationType(); /*** * Gets the current IS_ROAMING_ALLOWED value for the device, which is set by * the user in the * "Menu > Settings > Wireless Controls > Mobile network settings > Data roaming" * check box. * * @return TRUE when roaming is permitted, FALSE when roaming is not * permitted. */ boolean getRoamingDeviceSetting(); /*** * Sets the current Data connectivity preference (i.e. connect, connect when * not roaming, or never connect), although this value is ignored during * initial sign up. * * @see com.vodafone360.people.service.PersistSettings.InternetAvail * @param InternetAvail New data Settings changes */ void notifyDataSettingChanged(InternetAvail internetAvail); /*** * Fetched the current Terms of Service information from the Vodafone 360 * back end system. The result is sent to the registered Handler some time * later after the download process has finished. */ void fetchTermsOfService(); /*** * Fetched the current Privacy Statement information from the Vodafone 360 * back end system. The result is sent to the registered Handler some time * later after the download process has finished. */ void fetchPrivacyStatement(); /*** * Log into the Vodafone 360 back end system using the given credentials. * * @param LoginDetails object containing user name, password, etc. */ void logon(LoginDetails loginDetails); /*** * Asks the back end server to check the validity of the given user name. * * @param String User name to check. */ void fetchUsernameState(String username); /*** * Signs up a new user to the Vodafone 360 back end using the given * Registration details. * * @param RegistrationDetails Registration details */ void register(RegistrationDetails details); /*** * Begins the process of synchronising contacts with the Vodafone 360 back * end. This is designed to run in the foreground and be shown to the user * during the initial sign up process. */ void startContactSync(); /** * Pings the service about user activity. */ void pingUserActivity(); /** * * Gets all third party identities and adds the mobile identity * from 360 to them. * * @return A list of all 3rd party identities the user is signed in to plus * the 360 identity mobile. If the retrieval failed the list will * be empty. * */ public ArrayList<Identity> getAvailableThirdPartyIdentities(); /** * * Gets all third party identities the user is currently signed up for. * * @return A list of 3rd party identities the user is signed in to or an * empty list if something went wrong retrieving the identities. * */ public ArrayList<Identity> getMyThirdPartyIdentities(); /** * * Takes all third party identities that have a chat capability set to true. * It also includes the 360 identity mobile. * * @return A list of chattable 3rd party identities the user is signed in to * plus the mobile 360 identity. If the retrieval identities failed the * returned list will be empty. * */ public ArrayList<Identity> getMy360AndThirdPartyChattableIdentities(); /*** * Begins the process of retrieving all Third party Accounts from the * Vodafone 360 back end. The response is sent to any currently registered * Activity handlers. * * @param Bundle filter the kind of identities to return. */ //void fetchAvailableIdentities(Bundle data); /*** * Calls the set identity capability status API * * @param network Social Network Name * @param identityId Social Network Identifier * @param identityCapabilityStatus Social Network capability status Bundle */ void setIdentityStatus(String network, String identityId, boolean identityStatus); /*** * Validate the given Social Network identity * * @param dryRun Set to true to validate credentials without actually * signing the server up. * @param network Social Network Name * @param username Login user name * @param password Login password * @param identityCapabilityStatus Social Network capability status Bundle */ void validateIdentityCredentials(boolean dryRun, String network, String username, String password, Bundle identityCapabilityStatus); /*** * Push the UpdateEngine to immediately check for an updated version of the * client. */ void checkForUpdates(); /*** * Push the UpdateEngine to check if a new update frequency has been set and * to act accordingly. */ void setNewUpdateFrequency(); /*** * Push the ActivitiesEngine Engine to begin synchronising Activities */ void startStatusesSync(); /*** * Returns the current state of the Network Agent. Used for testing only. */ NetworkAgentState getNetworkAgentState(); /*** * Overrides the current state of the Network Agent. Used for testing only. * * @param state A new overriding state. */ void setNetworkAgentState(NetworkAgentState state); /*** * Request a refresh of the currently known Presence information (used for * testing only) * * @param contactId Provide a contactId to receive detailed presence * information for the given contact only * @param contactId Set this to -1 to receive less detailed presence * information but for every contact */ void getPresenceList(long contactId); /** * Change current global (all identities) availability state. * @param status Availability to set for all identities we have. */ void setAvailability(OnlineStatus status); /** * Changes the user's availability. * * @param network - SocialNetwork to set presence on. * @param status - OnlineStatus presence status to set. */ void setAvailability(SocialNetwork network, OnlineStatus status); /*** * Allows an Activity to indicate to the Service that it is ready and able * to handle incoming unsolicited UI events. This should be called in an * Activities onResume() method, to indicate that the activity is currently * on screen. * * @param handler to accept incoming unsolicited UI events from the Service. * @param contactId Provide a contactId to receive updates for the given * contact only. Set this to -1 to receive updates for every * contact. Set this to NULL not to receive contact updates. * @param chat - TRUE if the Handler expects chat messages. */ void subscribe(Handler handler, Long contactId, boolean chat); /*** * Allows the Activity to indicate that it is no longer in the foreground * and will not handle incoming UI events correctly. This should be called * in an Activities onPause() method, to indicate that the Activity is not * on screen. * * @param handler that should no longer receive incoming unsolicited UI * events from the Service */ void unsubscribe(Handler handler); /** * This method should be used to send a message to a contact * * @param to LocalContactIds of ContactSummary/TimelineSummary items the * message is intended for. Current protocol version only * supports a single recipient. * @param body Message text */ void sendMessage(long toLocalContactId, String body, int socialNetworkId); /** * This method should be called to retrieve status updates in * StatusListActivity, @see ActivitiesEngine. */ void getStatuses(); /** * This method should be called to retrieve older timelines in * TimelineListActivity, @see ActivitiesEngine. */ void getMoreTimelines(); /** * This method should be called to retrieve older statuses in * StatusListActivity, @see ActivitiesEngine. */ void getOlderStatuses(); /** * This method triggers the Me Profile upload */ void uploadMeProfile(); /** * This method triggers the Me Profile status text upload * * @param statusText String - new Me Profile status text */ void uploadMyStatus(String statusText); /** * This method triggers the Me Profile download, is currently called by UI */ void downloadMeProfileFirstTime(); /** * This method should be called to update the Chat Notifications. */ void updateChatNotification(long localContactId); /** * This method delete the identity. * @param network Social Network Name * @param identityId Social Network Identifier */ void deleteIdentity(String network, String identityId); /** * This method returns TRUE if the presence status on the passed has not been set yet. * @param network - network name. * @return TRUE if the presence status on the passed has not been set yet. */ boolean isSettingStatusOnNetworkInProgress(String network); }