X-Git-Url: https://git.mdrn.pl/wl-app.git/blobdiff_plain/48b2fe9f7c2dc3d9aeaaa6dbfb27c7da4f3235ff..269195b3729c1bdc22e9053ee4ebca667ea8549d:/Android/app/src/main/java/com/moiseum/wolnelektury/base/AbstractActivity.java diff --git a/Android/app/src/main/java/com/moiseum/wolnelektury/base/AbstractActivity.java b/Android/app/src/main/java/com/moiseum/wolnelektury/base/AbstractActivity.java new file mode 100644 index 0000000..a4c3695 --- /dev/null +++ b/Android/app/src/main/java/com/moiseum/wolnelektury/base/AbstractActivity.java @@ -0,0 +1,161 @@ +package com.moiseum.wolnelektury.base; + +import android.content.ComponentName; +import android.content.Intent; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import android.net.Uri; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.customtabs.CustomTabsClient; +import android.support.customtabs.CustomTabsIntent; +import android.support.customtabs.CustomTabsServiceConnection; +import android.support.v4.content.ContextCompat; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.MenuItem; +import android.widget.Toast; + +import com.moiseum.wolnelektury.R; +import com.moiseum.wolnelektury.connection.RestClient; +import com.moiseum.wolnelektury.utils.SharedPreferencesUtils; +import com.moiseum.wolnelektury.view.login.LoginActivity; + +import java.util.List; + +import butterknife.ButterKnife; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.disposables.Disposable; + +public abstract class AbstractActivity extends AppCompatActivity { + + private static final String CHROME_PACKAGE_ID = "com.android.chrome"; + + private CompositeDisposable disposables = new CompositeDisposable(); + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // ActionBar actionBar = getSupportActionBar(); + // if (actionBar != null) { + // actionBar.setElevation(0); + // } + + setContentView(getLayoutResourceId()); + ButterKnife.bind(this); + prepareView(savedInstanceState); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + onHomeClicked(); + return true; + } + return super.onOptionsItemSelected(item); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + disposables.dispose(); + } + + protected void addDisposable(Disposable disposable) { + this.disposables.add(disposable); + } + + protected void onHomeClicked() { + finish(); + } + + protected void setBackButtonEnable(boolean enable) { + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setDisplayHomeAsUpEnabled(enable); + } + } + + protected void hideToolbar() { + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.hide(); + } + } + + protected void setupToolbar(Toolbar toolbar) { + if (toolbar != null) { + setSupportActionBar(toolbar); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayShowHomeEnabled(true); + } + } + + protected void showPayPalForm() { + SharedPreferencesUtils preferences = WLApplication.getInstance().getPreferences(); + if (preferences.isUserLoggedIn()) { + showBrowserView(Uri.parse(RestClient.WEB_PAYPAL_FORM_URL)); + } else { + startActivity(new LoginActivity.LoginIntent(this)); + } + } + + protected void showBrowserView(Uri uri) { + if (checkForPackageExistance(CHROME_PACKAGE_ID)) { + CustomTabsServiceConnection connection = new CustomTabsServiceConnection() { + @Override + public void onCustomTabsServiceConnected(ComponentName componentName, CustomTabsClient client) { + CustomTabsIntent intent = new CustomTabsIntent.Builder() + .setToolbarColor(ContextCompat.getColor(AbstractActivity.this, R.color.colorAccent)) + .build(); + + client.warmup(0L); + intent.launchUrl(AbstractActivity.this, uri); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + + } + }; + CustomTabsClient.bindCustomTabsService(this, CHROME_PACKAGE_ID, connection); + } else { + Intent intent = new Intent(Intent.ACTION_VIEW, uri); + if (intent.resolveActivity(getPackageManager()) != null) { + startActivity(intent); + } else { + Toast.makeText(this, R.string.install_chrome, Toast.LENGTH_LONG).show(); + } + } + } + + private boolean checkForPackageExistance(String targetPackage) { + List packages; + PackageManager pm; + + pm = getPackageManager(); + packages = pm.getInstalledApplications(0); + for (ApplicationInfo packageInfo : packages) { + if (packageInfo.packageName.equals(targetPackage)) { + return true; + } + } + return false; + } + + /** + * Providing layout resource ID for inflating. + * + * @return layout resource ID. + */ + public abstract int getLayoutResourceId(); + + /** + * Method called from @link{{@link AbstractActivity}#onCreate}. This will be the place to setup view stuff. + * + * @param savedInstanceState Bundle with current instance state. + */ + public abstract void prepareView(Bundle savedInstanceState); +}