/** * Copyright (c) 2013-2014. Francisco Contreras, Holland Salazar. * Copyright (c) 2015. Tobias Strebitzer, Francisco Contreras, Holland Salazar. * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of * conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * Neither the name of the Baker Framework nor the names of its contributors may be used to * endorse or promote products derived from this software without specific prior written * permission. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **/ package com.bakerframework.baker.activity; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.AnimationUtils; import com.bakerframework.baker.BakerApplication; import com.bakerframework.baker.R; import com.bakerframework.baker.events.IssueCollectionErrorEvent; import com.bakerframework.baker.events.IssueCollectionLoadedEvent; import com.bakerframework.baker.model.IssueCollection; import com.bakerframework.baker.play.LicenceManagerDelegate; import de.greenrobot.event.EventBus; public class SplashActivity extends Activity implements LicenceManagerDelegate { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash_activity); // Animate logo animateLogo(); // Register as event listener EventBus.getDefault().register(this); // Licence check if(getResources().getBoolean(R.bool.enable_licence_check)) { // Check for valid application licence (loadIssueCollection will be called afterwards BakerApplication.getInstance().getLicenceManager().setDelegate(this); BakerApplication.getInstance().getLicenceManager().checkAccess(); }else{ loadIssueCollection(); } // Plugin Callback BakerApplication.getInstance().getPluginManager().onSplashActivityCreated(this); } private void animateLogo() { Animation bounceAnimation = AnimationUtils.loadAnimation(SplashActivity.this, R.anim.bounce); Animation fadeInAnimation = AnimationUtils.loadAnimation(SplashActivity.this, R.anim.logo_fade_in); AnimationSet animationSet = new AnimationSet(false); animationSet.addAnimation(bounceAnimation); animationSet.addAnimation(fadeInAnimation); findViewById(R.id.spash_logo).startAnimation(animationSet); } public void loadIssueCollection() { final IssueCollection issueCollection = BakerApplication.getInstance().getIssueCollection(); issueCollection.load(); } @Override protected void onDestroy() { // Register as event listener EventBus.getDefault().unregister(this); super.onDestroy(); } // Licensing @Override public void onLicenceValid(int reason) { loadIssueCollection(); } @Override public void onLicenceInvalid(int reason) { // Invalid licence Log.i("LICENSING", "Invalid licence: " + reason); new AlertDialog.Builder(SplashActivity.this) .setTitle(getString(R.string.msg_exit)) .setMessage(getString(R.string.err_application_license_problem)) .setPositiveButton(getString(android.R.string.ok), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { SplashActivity.this.finish(); } }) .show(); } @Override public void onLicenceRetry(int reason) { new AlertDialog.Builder(SplashActivity.this) .setTitle(getString(R.string.msg_exit)) .setMessage(getString(R.string.err_application_no_internet)) .setPositiveButton(getString(android.R.string.ok), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { SplashActivity.this.finish(); } }) .show(); } @SuppressWarnings("UnusedDeclaration") public void onEventMainThread(IssueCollectionLoadedEvent event) { // Unregister event listener EventBus.getDefault().unregister(this); // Launch shelf activity Intent i = new Intent(SplashActivity.this, ShelfActivity.class); startActivity(i); // Close Splash SplashActivity.this.finish(); } @SuppressWarnings("UnusedDeclaration") public void onEventMainThread(IssueCollectionErrorEvent event) { // No internet connection and no cached file new AlertDialog.Builder(this) .setTitle(this.getString(R.string.msg_exit)) .setMessage(this.getString(R.string.err_application_no_internet)) .setPositiveButton(this.getString(android.R.string.ok), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { SplashActivity.this.finish(); } }) .show(); } }