Java tutorial
/* The contents of this file are subject to the Mozilla Public License Version 1.1 (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.mozilla.org/MPL/ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Original Code is collection of files collectively known as Open Camera. The Initial Developer of the Original Code is Almalence Inc. Portions created by Initial Developer are Copyright (C) 2013 by Almalence Inc. All Rights Reserved. */ /* <!-- +++ package com.almalence.opencam_plus.ui; +++ --> */ // <!-- -+- package com.almalence.opencam.ui; //-+- --> import java.util.ArrayList; import java.util.HashMap; import java.util.List; /* <!-- +++ import com.almalence.opencam_plus.ApplicationInterface; import com.almalence.opencam_plus.MainScreen; import com.almalence.opencam_plus.PluginManager; import com.almalence.opencam_plus.R; import com.almalence.opencam_plus.cameracontroller.CameraController; +++ --> */ // <!-- -+- import com.almalence.opencam.ApplicationInterface; import com.almalence.opencam.MainScreen; import com.almalence.opencam.PluginManager; import com.almalence.opencam.R; import com.almalence.opencam.cameracontroller.CameraController; //-+- --> import com.almalence.ui.RotateImageView; import android.content.SharedPreferences; import android.os.CountDownTimer; import android.preference.PreferenceManager; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.webkit.WebView; import android.widget.GridView; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; public class AlmalenceStore { // store grid adapter private ElementAdapter storeAdapter; private List<View> storeViews; private HashMap<View, Integer> buttonStoreViewAssoc; private View guiView; private static final int STORE_ELEMENTS_NUMBER = 6; AlmalenceStore(View gui) { guiView = gui; storeAdapter = new ElementAdapter(); storeViews = new ArrayList<View>(); buttonStoreViewAssoc = new HashMap<View, Integer>(); } public void showStore() { LayoutInflater inflater = LayoutInflater.from(MainScreen.getInstance()); List<RelativeLayout> pages = new ArrayList<RelativeLayout>(); // <!-- -+- final boolean unlocked = false; //-+- --> /* <!-- +++ final boolean unlocked = true; +++ --> */ // page 1 RelativeLayout page = (RelativeLayout) inflater.inflate(R.layout.gui_almalence_pager_fragment, null); initStoreList(); RelativeLayout store = (RelativeLayout) inflater.inflate(R.layout.gui_almalence_store, null); final ImageView imgStoreNext = (ImageView) store.findViewById(R.id.storeWhatsNew); GridView gridview = (GridView) store.findViewById(R.id.storeGrid); gridview.setAdapter(storeAdapter); if (!unlocked) { page.addView(store); pages.add(page); } // page 2 page = (RelativeLayout) inflater.inflate(R.layout.gui_almalence_pager_fragment, null); RelativeLayout features = (RelativeLayout) inflater.inflate(R.layout.gui_almalence_features, null); final ImageView imgFeaturesPrev = (ImageView) features.findViewById(R.id.storeWhatsNew); imgFeaturesPrev.setVisibility(View.INVISIBLE); WebView wv = (WebView) features.findViewById(R.id.text_features); wv.loadUrl("file:///android_asset/www/features.html"); page.addView(features); pages.add(page); SamplePagerAdapter pagerAdapter = new SamplePagerAdapter(pages); final ViewPager viewPager = new ViewPager(MainScreen.getInstance()); viewPager.setAdapter(pagerAdapter); if (!unlocked) viewPager.setCurrentItem(0); else viewPager.setCurrentItem(1); viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { switch (position) { case 0: // 0 imgStoreNext.setVisibility(View.VISIBLE); // 1 imgFeaturesPrev.setVisibility(View.INVISIBLE); break; case 1: // 0 imgStoreNext.setVisibility(View.INVISIBLE); // 1 if (!unlocked) imgFeaturesPrev.setVisibility(View.VISIBLE); else imgFeaturesPrev.setVisibility(View.INVISIBLE); break; default: break; } } }); imgStoreNext.setOnClickListener(new OnClickListener() { public void onClick(View v) { viewPager.setCurrentItem(1); } }); imgFeaturesPrev.setOnClickListener(new OnClickListener() { public void onClick(View v) { viewPager.setCurrentItem(0); } }); guiView.findViewById(R.id.buttonGallery).setEnabled(false); guiView.findViewById(R.id.buttonShutter).setEnabled(false); guiView.findViewById(R.id.buttonSelectMode).setEnabled(false); PluginManager.getInstance().sendMessage(ApplicationInterface.MSG_BROADCAST, ApplicationInterface.MSG_CONTROL_LOCKED); MainScreen.getGUIManager().lockControls = true; // <!-- -+- if (MainScreen.getInstance().showPromoRedeemed) { Toast.makeText(MainScreen.getInstance(), "The promo code has been successfully redeemed. All PRO-Features are unlocked", Toast.LENGTH_LONG).show(); MainScreen.getInstance().showPromoRedeemed = false; } if (MainScreen.getInstance().showPromoRedeemedJulius) { Toast.makeText(MainScreen.getInstance(), MainScreen.getInstance().getResources().getString(R.string.promoRedeemedJulius), Toast.LENGTH_LONG).show(); MainScreen.getInstance().showPromoRedeemedJulius = false; } //-+- --> final RelativeLayout pagerLayout = ((RelativeLayout) guiView.findViewById(R.id.viewPagerLayout)); pagerLayout.addView(viewPager); final RelativeLayout pagerLayoutMain = ((RelativeLayout) guiView.findViewById(R.id.viewPagerLayoutMain)); pagerLayoutMain.setVisibility(View.VISIBLE); pagerLayoutMain.bringToFront(); // We need this timer, to show store on top, after we return from google // play. // In MainScreen there is timer, which brings main buttons on top, // after MainScreen activity resumed. // So this timer "blocks" timer from MainScreen if we want to show // store. new CountDownTimer(600, 10) { public void onTick(long millisUntilFinished) { pagerLayoutMain.bringToFront(); } public void onFinish() { pagerLayoutMain.bringToFront(); } }.start(); } public void hideStore() { ((RelativeLayout) guiView.findViewById(R.id.viewPagerLayoutMain)).setVisibility(View.INVISIBLE); guiView.findViewById(R.id.buttonGallery).setEnabled(true); guiView.findViewById(R.id.buttonShutter).setEnabled(true); guiView.findViewById(R.id.buttonSelectMode).setEnabled(true); PluginManager.getInstance().sendMessage(ApplicationInterface.MSG_BROADCAST, ApplicationInterface.MSG_CONTROL_UNLOCKED); MainScreen.getGUIManager().lockControls = false; } private void initStoreList() { storeViews.clear(); buttonStoreViewAssoc.clear(); // <!-- -+- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainScreen.getMainContext()); boolean bOnSale = prefs.getBoolean("bOnSale", false); for (int i = 0; i < STORE_ELEMENTS_NUMBER; i++) { LayoutInflater inflator = MainScreen.getInstance().getLayoutInflater(); View item = inflator.inflate(R.layout.gui_almalence_store_grid_element, null, false); ImageView icon = (ImageView) item.findViewById(R.id.storeImage); TextView description = (TextView) item.findViewById(R.id.storeText); TextView price = (TextView) item.findViewById(R.id.storePriceText); switch (i) { case 0: // unlock all icon.setImageDrawable(MainScreen.getAppResources().getDrawable(R.drawable.store_all)); description .setText(MainScreen.getAppResources().getString(R.string.Pref_Upgrde_All_Preference_Title)); if (MainScreen.getInstance().isPurchasedAll()) price.setText(R.string.already_unlocked); else { if (MainScreen.getInstance().isCouponSale()) { price.setText(MainScreen.getInstance().titleUnlockAllCoupon); ((ImageView) item.findViewById(R.id.storeSaleImage)).setVisibility(View.VISIBLE); } else { price.setText(MainScreen.getInstance().titleUnlockAll); if (bOnSale) ((ImageView) item.findViewById(R.id.storeSaleImage)).setVisibility(View.VISIBLE); } } break; case 1: // Super icon.setImageDrawable(MainScreen.getAppResources().getDrawable(R.drawable.store_super)); description.setText( MainScreen.getAppResources().getString(R.string.Pref_Upgrde_Super_Preference_Title)); if (MainScreen.getInstance().isPurchasedSuper() || MainScreen.getInstance().isPurchasedAll()) price.setText(R.string.already_unlocked); else { if (CameraController.isSuperModePossible()) price.setText(MainScreen.getInstance().titleUnlockSuper); else price.setText( MainScreen.getAppResources().getString(R.string.Pref_Upgrde_SuperNotSupported)); } break; case 2: // HDR icon.setImageDrawable(MainScreen.getAppResources().getDrawable(R.drawable.store_hdr)); description .setText(MainScreen.getAppResources().getString(R.string.Pref_Upgrde_HDR_Preference_Title)); if (MainScreen.getInstance().isPurchasedHDR() || MainScreen.getInstance().isPurchasedAll()) price.setText(R.string.already_unlocked); else price.setText(MainScreen.getInstance().titleUnlockHDR); break; case 3: // Panorama icon.setImageDrawable(MainScreen.getAppResources().getDrawable(R.drawable.store_panorama)); description.setText( MainScreen.getAppResources().getString(R.string.Pref_Upgrde_Panorama_Preference_Title)); if (MainScreen.getInstance().isPurchasedPanorama() || MainScreen.getInstance().isPurchasedAll()) price.setText(R.string.already_unlocked); else price.setText(MainScreen.getInstance().titleUnlockPano); break; case 4: // multishot icon.setImageDrawable(MainScreen.getAppResources().getDrawable(R.drawable.store_moving)); description.setText( MainScreen.getAppResources().getString(R.string.Pref_Upgrde_Moving_Preference_Title)); if (MainScreen.getInstance().isPurchasedMoving() || MainScreen.getInstance().isPurchasedAll()) price.setText(R.string.already_unlocked); else price.setText(MainScreen.getInstance().titleUnlockMoving); break; case 5: // Promo code icon.setImageDrawable(MainScreen.getAppResources().getDrawable(R.drawable.store_promo)); description.setText( MainScreen.getAppResources().getString(R.string.Pref_Upgrde_PromoCode_Preference_Title)); if (MainScreen.getInstance().isPurchasedAll()) price.setText(R.string.already_unlocked); else price.setText(""); break; default: break; } item.setOnClickListener(new OnClickListener() { public void onClick(View v) { // get inapp associated with pressed button purchasePressed(v); } }); buttonStoreViewAssoc.put(item, i); storeViews.add(item); } //-+- --> storeAdapter.Elements = storeViews; } private void purchasePressed(View v) { // <!-- -+- // get inapp associated with pressed button Integer id = buttonStoreViewAssoc.get(v); if (id == null) return; switch (id) { case 0:// unlock all MainScreen.getInstance().purchaseAll(); break; case 1:// HDR if (CameraController.isSuperModePossible()) MainScreen.getInstance().purchaseSuper(); else Toast.makeText(MainScreen.getMainContext(), "Not supported", Toast.LENGTH_LONG).show(); break; case 2:// HDR MainScreen.getInstance().purchaseHDR(); break; case 3:// Panorama MainScreen.getInstance().purchasePanorama(); break; case 4:// multishot MainScreen.getInstance().purchaseMultishot(); break; case 5:// Promo if (!MainScreen.getInstance().isPurchasedAll()) MainScreen.getInstance().enterPromo(); break; default: break; } //-+- --> } //-+- --> public void ShowUnlockControl() { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainScreen.getMainContext()); boolean bOnSale = prefs.getBoolean("bOnSale", false); final RotateImageView unlock = ((RotateImageView) guiView.findViewById(R.id.Unlock)); unlock.setImageDrawable( MainScreen.getAppResources().getDrawable(bOnSale ? R.drawable.unlock_sale : R.drawable.unlock)); unlock.setAlpha(1.0f); unlock.setVisibility(View.VISIBLE); Animation invisible_alpha = new AlphaAnimation(1, 0.4f); invisible_alpha.setDuration(7000); invisible_alpha.setRepeatCount(0); invisible_alpha.setAnimationListener(new AnimationListener() { @Override public void onAnimationEnd(Animation animation) { unlock.clearAnimation(); unlock.setImageDrawable(MainScreen.getAppResources().getDrawable(R.drawable.unlock_gray)); unlock.setAlpha(0.4f); } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationStart(Animation animation) { } }); unlock.startAnimation(invisible_alpha); } public void ShowGrayUnlockControl() { final RotateImageView unlock = ((RotateImageView) guiView.findViewById(R.id.Unlock)); if (unlock.getVisibility() == View.VISIBLE) return; unlock.setImageDrawable(MainScreen.getAppResources().getDrawable(R.drawable.unlock_gray)); unlock.setAlpha(0.4f); unlock.setVisibility(View.VISIBLE); } public void HideUnlockControl() { final RotateImageView unlock = ((RotateImageView) guiView.findViewById(R.id.Unlock)); unlock.setVisibility(View.GONE); } public void setOrientation() { ((RotateImageView) guiView.findViewById(R.id.Unlock)).setOrientation(AlmalenceGUI.mDeviceOrientation); } }