/**
* Copyright 2012 Neurowork Consulting S.L.
*
* This file is part of eMobc.
*
* CoverActivityGenerator.java
* eMobc Android Framework
*
* eMobc is free software: you can redistribute it and/or modify
* it under the terms of the Affero GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* eMobc 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 Affero GNU General Public License
* along with eMobc. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.emobc.android.activities.generators;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.emobc.android.AppButton;
import com.emobc.android.activities.R;
import com.emobc.android.utils.ImagesUtils;
import com.emobc.android.utils.InvalidFileException;
import com.emobc.android.utils.Utils;
/**
* Screen generator, responsible for specific components to initialize the
* display type "COVER".
*
* @author Jonatan Alcocer Luna
* @author Jorge E. Villaverde
* @version 0.1
* @since 0.1
*/
public class CoverActivityGenerator extends AbstractActivtyGenerator {
/**
*
*/
private static final long serialVersionUID = -1094440374180322643L;
private String backgroundFileName;
private String titleFileName;
private String facebookUrl;
private String twitterUrl;
private String facebookImage;
private String twitterImage;
private String wwwUrl;
private List<AppButton> buttons;
public CoverActivityGenerator() {
super();
}
public String getBackgroundFileName() {
return backgroundFileName;
}
public void setBackgroundFileName(String backgroundFileName) {
this.backgroundFileName = backgroundFileName;
}
private void initializeButton(RelativeLayout mainLayout, final Activity activity, final AppButton button,int id){
Button childButton = (Button)mainLayout.findViewById(id);
Drawable imageButton;
try {
imageButton = ImagesUtils.getDrawable(activity, button.getFileName());
if(imageButton != null){
childButton.setBackgroundDrawable(imageButton);
}else{
childButton.setText(button.getTitle());
}
childButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showNextLevel(activity, button.getNextLevel());
}
});
} catch (InvalidFileException e) {
Log.e("ImageUtils", "Image Fail: " + e);
}
}
@Override
protected void intializeSubActivity(final Activity activity) {
activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout mainLayout = (RelativeLayout)activity.findViewById(R.id.MainLayout);
//rotateScreen(activity);
if(Utils.hasLength(backgroundFileName)){
Drawable backgroundDrawable;
try {
backgroundDrawable = ImagesUtils.getDrawable(activity, backgroundFileName);
mainLayout.setBackgroundDrawable(backgroundDrawable);
} catch (InvalidFileException e) {
Log.e("AppCoverData", e.getLocalizedMessage());
Toast.makeText(activity, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
ImageView titleImage = (ImageView) activity.findViewById(R.id.CoverTitle);
if(Utils.hasLength(titleFileName)){
Drawable titleDrawable;
try {
titleDrawable = ImagesUtils.getDrawable(activity, titleFileName);
if (titleDrawable != null)
titleImage.setImageDrawable(titleDrawable);
} catch (InvalidFileException e) {
Log.e("AppCoverData", e.getLocalizedMessage());
Toast.makeText(activity, e.getMessage(), Toast.LENGTH_SHORT).show();
}
} else {
titleImage.setVisibility(View.GONE);
}
if(buttons != null && buttons.size() > 0){
if(buttons.size() > 0){
final AppButton button1 = buttons.get(0);
if(button1 != null){
initializeButton(mainLayout, activity, button1, R.id.firstButton);
}
}
if(buttons.size() > 1){
final AppButton button2 = buttons.get(1);
if(button2 != null){
initializeButton(mainLayout, activity, button2, R.id.secondButton);
}
}
if(buttons.size() > 2){
final AppButton button3 = buttons.get(2);
if(button3 != null){
initializeButton(mainLayout, activity, button3, R.id.thirdButton);
}
}
if(buttons.size() > 3){
final AppButton button4 = buttons.get(3);
if(button4 != null){
if(button4 != null){
initializeButton(mainLayout, activity, button4, R.id.fourthButton);
}
}
}
if(buttons.size() > 4){
final AppButton button5 = buttons.get(4);
if(button5 != null){
if(button5 != null){
initializeButton(mainLayout, activity, button5, R.id.fifthButton);
}
}
}
if(buttons.size() > 5){
final AppButton button6 = buttons.get(5);
if(button6 != null){
if(button6 != null){
initializeButton(mainLayout, activity, button6, R.id.sixthButton);
}
}
}
}
/*
* Add Web, Facebook & Twitter links
*/
ImageButton wwwButton = (ImageButton)mainLayout.findViewById(R.id.wwwButton);
if(Utils.hasLength(wwwUrl)){
if(wwwButton != null){
wwwButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
launchUrl(activity, wwwUrl);
}
});
}
} else {
if(wwwButton != null)
wwwButton.setVisibility(View.GONE);
}
ImageButton facebookButton = (ImageButton)mainLayout.findViewById(R.id.facebookButton);
if(Utils.hasLength(facebookUrl)){
if(facebookButton != null){
facebookButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// If we place the user id of facebook, we can open the facebook app.
if(facebookUrl.startsWith("http://www.facebook.com/"))
launchUrl(activity, facebookUrl);
else
launchFacebookUrl(activity, facebookUrl);
}
});
if(Utils.hasLength(facebookImage)){
Drawable facebookDrawable;
try {
facebookDrawable = ImagesUtils.getDrawable(activity, facebookImage);
if (facebookDrawable != null)
facebookButton.setImageDrawable(facebookDrawable);
} catch (InvalidFileException e) {
Log.e("CoverActivityGenerator", e.getLocalizedMessage());
}
}
}
} else {
if(facebookButton != null)
facebookButton.setVisibility(View.GONE);
}
ImageButton twitterButton = (ImageButton)mainLayout.findViewById(R.id.twitterButton);
if(Utils.hasLength(twitterUrl)){
if(twitterButton != null){
twitterButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
launchUrl(activity, twitterUrl);
}
});
if(Utils.hasLength(twitterImage)){
Drawable twitterDrawable;
try {
twitterDrawable = ImagesUtils.getDrawable(activity, twitterImage);
if (twitterDrawable != null)
twitterButton.setImageDrawable(twitterDrawable);
} catch (InvalidFileException e) {
Log.e("CoverActivityGenerator", e.getLocalizedMessage());
}
}
}
} else {
if(twitterButton != null)
twitterButton.setVisibility(View.GONE);
}
}
public void setTitleFileName(String titleFileName) {
this.titleFileName = titleFileName;
}
public String getTitleFileName() {
return titleFileName;
}
public void setButtons(List<AppButton> buttons) {
this.buttons = buttons;
}
public List<AppButton> getButtons() {
return buttons;
}
@Override
protected int getContentViewResourceId(final Activity activity) {
return R.layout.main;
}
public void setFacebookUrl(String facebookUrl) {
this.facebookUrl = facebookUrl;
}
public String getFacebookUrl() {
return facebookUrl;
}
public void setTwitterUrl(String twitterUrl) {
this.twitterUrl = twitterUrl;
}
public String getTwitterUrl() {
return twitterUrl;
}
public void setWwwUrl(String wwwUrl) {
this.wwwUrl = wwwUrl;
}
public String getWwwUrl() {
return wwwUrl;
}
public String getFacebookImage() {
return facebookImage;
}
public void setFacebookImage(String facebookImage) {
this.facebookImage = facebookImage;
}
public String getTwitterImage() {
return twitterImage;
}
public void setTwitterImage(String twitterImage) {
this.twitterImage = twitterImage;
}
}