/*
* Copyright 2015 Priyesh Patel
*
* 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.chromium.fontinstaller.ui.common;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import com.chromium.fontinstaller.BuildConfig;
import com.chromium.fontinstaller.R;
import com.chromium.fontinstaller.ui.settings.SettingsFragment;
import com.chromium.fontinstaller.util.ViewUtils;
import com.chromium.fontinstaller.util.billing.IabHelper;
import com.chromium.fontinstaller.util.billing.Inventory;
import com.crashlytics.android.answers.Answers;
import com.crashlytics.android.answers.ContentViewEvent;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import butterknife.Bind;
import butterknife.ButterKnife;
import timber.log.Timber;
public class BaseActivity extends AppCompatActivity {
@Bind(R.id.app_bar)
protected Toolbar mToolbar;
private IabHelper mBillingHelper;
private final Handler mHandler = new Handler();
@Override public void setContentView(int layoutResId) {
super.setContentView(layoutResId);
ButterKnife.bind(this);
mBillingHelper = new IabHelper(this, BuildConfig.GOOGLE_PLAY_LICENSE_KEY);
setSupportActionBar(mToolbar);
final ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
@Override public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
protected void initializeAd(AdView adView) {
mBillingHelper.startSetup(result -> {
if (result.isSuccess()) {
Timber.i("Billing setup");
mBillingHelper.queryInventoryAsync((queriedResult, inventory) -> {
Timber.i("User Donated: " + userDonated(inventory));
if (userDonated(inventory)) hideAd(adView);
else displayAd(adView);
});
}
});
}
private boolean userDonated(Inventory inventory) {
return inventory != null && (inventory.hasPurchase(SettingsFragment.DONATE_SKU_SMALL) ||
inventory.hasPurchase(SettingsFragment.DONATE_SKU_MED) ||
inventory.hasPurchase(SettingsFragment.DONATE_SKU_LARGE));
}
private void displayAd(AdView adView) {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(getResources().getString(R.string.nexus_5_device_id))
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
adView.loadAd(adRequest);
}
protected void delay(Runnable runnable, long delay) {
mHandler.postDelayed(runnable, delay);
}
private void hideAd(AdView adView) {
adView.setVisibility(View.GONE);
}
public void setToolbarTitle(String title) {
mToolbar.setTitle(title);
}
protected void disableToolbarElevation() {
if (ViewUtils.isLollipop()) mToolbar.setElevation(0);
}
protected void showToolbarBackButton() {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
protected void show(View view) {
view.setVisibility(View.VISIBLE);
}
protected void hide(View view) {
view.setVisibility(View.INVISIBLE);
}
protected void hideGone(View view) {
view.setVisibility(View.GONE);
}
protected boolean isVisible(View view) {
return view.getVisibility() == View.VISIBLE;
}
protected void sendToCrashlytics(String message) {
Answers.getInstance().logContentView(new ContentViewEvent().putContentName(message));
}
}