/*******************************************************************************
* Software Name : RCS IMS Stack
*
* Copyright (C) 2010 France Telecom S.A.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.orangelabs.rcs.provisioning.local;
import static com.orangelabs.rcs.provisioning.local.Provisioning.saveCheckBoxParameter;
import static com.orangelabs.rcs.provisioning.local.Provisioning.saveEditTextParameter;
import static com.orangelabs.rcs.provisioning.local.Provisioning.setCheckBoxParameter;
import static com.orangelabs.rcs.provisioning.local.Provisioning.setEditTextParameter;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import com.orangelabs.rcs.R;
import com.orangelabs.rcs.provider.settings.RcsSettings;
import com.orangelabs.rcs.provider.settings.RcsSettingsData;
/**
* Service parameters provisioning
*
* @author jexa7410
*/
public class ServiceProvisioning extends Activity {
/**
* IM session start modes
*/
private static final String[] IM_SESSION_START_MODES = { "0", "1", "2" };
private boolean isInFront;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
// Set layout
setContentView(R.layout.rcs_provisioning_service);
// Set buttons callback
Button btn = (Button) findViewById(R.id.save_btn);
btn.setOnClickListener(saveBtnListener);
updateView(bundle);
isInFront = true;
}
@Override
public void onResume() {
super.onResume();
if (isInFront == false) {
isInFront = true;
// Update UI (from DB)
updateView(null);
}
}
@Override
protected void onPause() {
super.onPause();
isInFront = false;
}
/**
* Update view
* @param bundle
*/
private void updateView(Bundle bundle) {
// Display UI parameters
setEditTextParameter(this, R.id.MaxPhotoIconSize, RcsSettingsData.MAX_PHOTO_ICON_SIZE, bundle);
setEditTextParameter(this, R.id.MaxFreetextLength, RcsSettingsData.MAX_FREETXT_LENGTH, bundle);
setEditTextParameter(this, R.id.MaxChatParticipants, RcsSettingsData.MAX_CHAT_PARTICIPANTS, bundle);
setEditTextParameter(this, R.id.MaxChatMessageLength, RcsSettingsData.MAX_CHAT_MSG_LENGTH, bundle);
setEditTextParameter(this, R.id.MaxGroupChatMessageLength, RcsSettingsData.MAX_GROUPCHAT_MSG_LENGTH, bundle);
setEditTextParameter(this, R.id.ChatIdleDuration, RcsSettingsData.CHAT_IDLE_DURATION, bundle);
setEditTextParameter(this, R.id.MaxFileTransferSize, RcsSettingsData.MAX_FILE_TRANSFER_SIZE, bundle);
setEditTextParameter(this, R.id.WarnFileTransferSize, RcsSettingsData.WARN_FILE_TRANSFER_SIZE, bundle);
setEditTextParameter(this, R.id.MaxImageShareSize, RcsSettingsData.MAX_IMAGE_SHARE_SIZE, bundle);
setEditTextParameter(this, R.id.MaxVideoShareDuration, RcsSettingsData.MAX_VIDEO_SHARE_DURATION, bundle);
setEditTextParameter(this, R.id.MaxChatSessions, RcsSettingsData.MAX_CHAT_SESSIONS, bundle);
setEditTextParameter(this, R.id.MaxFileTransferSessions, RcsSettingsData.MAX_FILE_TRANSFER_SESSIONS, bundle);
setEditTextParameter(this, R.id.MaxIpCallSessions, RcsSettingsData.MAX_IP_CALL_SESSIONS, bundle);
setEditTextParameter(this, R.id.MaxChatLogEntries, RcsSettingsData.MAX_CHAT_LOG_ENTRIES, bundle);
setEditTextParameter(this, R.id.MaxRichcallLogEntries, RcsSettingsData.MAX_RICHCALL_LOG_ENTRIES, bundle);
setEditTextParameter(this, R.id.MaxIpcallLogEntries, RcsSettingsData.MAX_IPCALL_LOG_ENTRIES, bundle);
setEditTextParameter(this, R.id.DirectoryPathPhotos, RcsSettingsData.DIRECTORY_PATH_PHOTOS, bundle);
setEditTextParameter(this, R.id.DirectoryPathVideos, RcsSettingsData.DIRECTORY_PATH_VIDEOS, bundle);
setEditTextParameter(this, R.id.DirectoryPathFiles, RcsSettingsData.DIRECTORY_PATH_FILES, bundle);
setEditTextParameter(this, R.id.MaxGeolocLabelLength, RcsSettingsData.MAX_GEOLOC_LABEL_LENGTH, bundle);
setEditTextParameter(this, R.id.GeolocExpirationTime, RcsSettingsData.GEOLOC_EXPIRATION_TIME, bundle);
Spinner spinner = (Spinner) findViewById(R.id.ImSessionStart);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, IM_SESSION_START_MODES);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Provisioning.setSpinnerParameter(spinner, RcsSettingsData.IM_SESSION_START, bundle, IM_SESSION_START_MODES);
setCheckBoxParameter(this, R.id.SmsFallbackService, RcsSettingsData.SMS_FALLBACK_SERVICE, bundle);
setCheckBoxParameter(this, R.id.StoreForwardServiceWarning, RcsSettingsData.WARN_SF_SERVICE, bundle);
setCheckBoxParameter(this, R.id.AutoAcceptFileTransfer, RcsSettingsData.AUTO_ACCEPT_FILE_TRANSFER, bundle);
setCheckBoxParameter(this, R.id.AutoAcceptChat, RcsSettingsData.AUTO_ACCEPT_CHAT, bundle);
setCheckBoxParameter(this, R.id.AutoAcceptGroupChat, RcsSettingsData.AUTO_ACCEPT_GROUP_CHAT, bundle);
}
@Override
protected void onSaveInstanceState(Bundle bundle) {
super.onSaveInstanceState(bundle);
saveInstanceState(bundle);
}
/**
* Save parameters either in bundle or in RCS settings
*/
private void saveInstanceState(Bundle bundle) {
saveEditTextParameter(this, R.id.MaxPhotoIconSize, RcsSettingsData.MAX_PHOTO_ICON_SIZE, bundle);
saveEditTextParameter(this, R.id.MaxFreetextLength, RcsSettingsData.MAX_FREETXT_LENGTH, bundle);
saveEditTextParameter(this, R.id.MaxChatParticipants, RcsSettingsData.MAX_CHAT_PARTICIPANTS, bundle);
saveEditTextParameter(this, R.id.MaxChatMessageLength, RcsSettingsData.MAX_CHAT_MSG_LENGTH, bundle);
saveEditTextParameter(this, R.id.MaxGroupChatMessageLength, RcsSettingsData.MAX_GROUPCHAT_MSG_LENGTH, bundle);
saveEditTextParameter(this, R.id.ChatIdleDuration, RcsSettingsData.CHAT_IDLE_DURATION, bundle);
saveEditTextParameter(this, R.id.MaxFileTransferSize, RcsSettingsData.MAX_FILE_TRANSFER_SIZE, bundle);
saveEditTextParameter(this, R.id.WarnFileTransferSize, RcsSettingsData.WARN_FILE_TRANSFER_SIZE, bundle);
saveEditTextParameter(this, R.id.MaxImageShareSize, RcsSettingsData.MAX_IMAGE_SHARE_SIZE, bundle);
saveEditTextParameter(this, R.id.MaxVideoShareDuration, RcsSettingsData.MAX_VIDEO_SHARE_DURATION, bundle);
saveEditTextParameter(this, R.id.MaxChatSessions, RcsSettingsData.MAX_CHAT_SESSIONS, bundle);
saveEditTextParameter(this, R.id.MaxFileTransferSessions, RcsSettingsData.MAX_FILE_TRANSFER_SESSIONS, bundle);
saveEditTextParameter(this, R.id.MaxIpCallSessions, RcsSettingsData.MAX_IP_CALL_SESSIONS, bundle);
saveEditTextParameter(this, R.id.MaxChatLogEntries, RcsSettingsData.MAX_CHAT_LOG_ENTRIES, bundle);
saveEditTextParameter(this, R.id.MaxRichcallLogEntries, RcsSettingsData.MAX_RICHCALL_LOG_ENTRIES, bundle);
saveEditTextParameter(this, R.id.MaxIpcallLogEntries, RcsSettingsData.MAX_IPCALL_LOG_ENTRIES, bundle);
saveEditTextParameter(this, R.id.MaxGeolocLabelLength, RcsSettingsData.MAX_GEOLOC_LABEL_LENGTH, bundle);
saveEditTextParameter(this, R.id.GeolocExpirationTime, RcsSettingsData.GEOLOC_EXPIRATION_TIME, bundle);
saveEditTextParameter(this, R.id.DirectoryPathPhotos, RcsSettingsData.DIRECTORY_PATH_PHOTOS, bundle);
saveEditTextParameter(this, R.id.DirectoryPathVideos, RcsSettingsData.DIRECTORY_PATH_VIDEOS, bundle);
saveEditTextParameter(this, R.id.DirectoryPathFiles, RcsSettingsData.DIRECTORY_PATH_FILES, bundle);
Spinner spinner = (Spinner) findViewById(R.id.ImSessionStart);
if (bundle != null) {
bundle.putInt(RcsSettingsData.IM_SESSION_START, spinner.getSelectedItemPosition());
} else {
RcsSettings.getInstance().writeParameter(RcsSettingsData.IM_SESSION_START, "" + spinner.getSelectedItemPosition());
}
saveCheckBoxParameter(this, R.id.SmsFallbackService, RcsSettingsData.SMS_FALLBACK_SERVICE, bundle);
saveCheckBoxParameter(this, R.id.StoreForwardServiceWarning, RcsSettingsData.WARN_SF_SERVICE, bundle);
saveCheckBoxParameter(this, R.id.AutoAcceptFileTransfer, RcsSettingsData.AUTO_ACCEPT_FILE_TRANSFER, bundle);
saveCheckBoxParameter(this, R.id.AutoAcceptChat, RcsSettingsData.AUTO_ACCEPT_CHAT, bundle);
saveCheckBoxParameter(this, R.id.AutoAcceptGroupChat, RcsSettingsData.AUTO_ACCEPT_GROUP_CHAT, bundle);
}
/**
* Save button listener
*/
private OnClickListener saveBtnListener = new OnClickListener() {
public void onClick(View v) {
// Save parameters
saveInstanceState(null);
}
};
}