package com.jahirfiquitiva.paperboard.activities;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import com.afollestad.materialdialogs.MaterialDialog;
import com.jahirfiquitiva.dashboardsample.R;
import com.jahirfiquitiva.paperboard.utils.Preferences;
import com.mikepenz.google_material_typeface_library.GoogleMaterial;
import com.mikepenz.materialdrawer.Drawer;
import com.mikepenz.materialdrawer.accountswitcher.AccountHeader;
import com.mikepenz.materialdrawer.model.DividerDrawerItem;
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
public class Main extends ActionBarActivity {
private static final int PROFILE_SETTING = 1;
public Drawer.Result result = null;
public AccountHeader.Result headerResult = null;
public String thaApp, thaHome, thaPreviews, thaApply, thaWalls, thaRequest, thaCredits;
public String version, drawerVersion;
public int currentItem;
SharedPreferences sharedPreferences;
private boolean firstrun, enable_features;
private Preferences mPrefs;
private boolean withLicenseChecker = true;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
mPrefs = new Preferences(Main.this);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
thaApp = getResources().getString(R.string.app_name);
thaHome = getResources().getString(R.string.section_one);
thaPreviews = getResources().getString(R.string.section_two);
thaApply = getResources().getString(R.string.section_three);
thaWalls = getResources().getString(R.string.section_four);
thaRequest = getResources().getString(R.string.section_five);
thaCredits = getResources().getString(R.string.section_seven);
drawerVersion = "v " + getResources().getString(R.string.current_version);
currentItem = 1;
headerResult = new AccountHeader()
.withActivity(this)
.withHeaderBackground(R.drawable.header)
.withSelectionFirstLine(getResources().getString(R.string.app_long_name))
.withSelectionSecondLine(drawerVersion)
.withSavedInstance(savedInstanceState)
.build();
enable_features = mPrefs.isFeaturesEnabled();
firstrun = mPrefs.isFirstRun();
result = new Drawer()
.withActivity(this)
.withToolbar(toolbar)
.withAccountHeader(headerResult)
.withHeaderDivider(false)
.addDrawerItems(
new PrimaryDrawerItem().withName(thaHome).withIcon(GoogleMaterial.Icon.gmd_home).withIdentifier(1),
new PrimaryDrawerItem().withName(thaPreviews).withIcon(GoogleMaterial.Icon.gmd_palette).withIdentifier(2),
new PrimaryDrawerItem().withName(thaApply).withIcon(GoogleMaterial.Icon.gmd_loyalty).withIdentifier(3),
new DividerDrawerItem(),
new SecondaryDrawerItem().withName(thaCredits).withIdentifier(6)
)
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id, IDrawerItem drawerItem) {
if (drawerItem != null) {
if (drawerItem.getIdentifier() == 1) {
currentItem = 1;
getSupportActionBar().setTitle(thaApp);
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
tx.replace(R.id.main, Fragment.instantiate(Main.this, "com.jahirfiquitiva.paperboard.fragments.Home"));
tx.commit();
} else if (drawerItem.getIdentifier() == 2) {
currentItem = 2;
getSupportActionBar().setTitle(thaPreviews);
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
tx.replace(R.id.main, Fragment.instantiate(Main.this, "com.jahirfiquitiva.paperboard.fragments.Previews"));
tx.commit();
} else if (drawerItem.getIdentifier() == 3) {
currentItem = 3;
getSupportActionBar().setTitle(thaApply);
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
tx.replace(R.id.main, Fragment.instantiate(Main.this, "com.jahirfiquitiva.paperboard.fragments.Apply"));
tx.commit();
} else if (drawerItem.getIdentifier() == 4) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if (isConnected == true) {
currentItem = 4;
getSupportActionBar().setTitle(thaWalls);
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
tx.replace(R.id.main, Fragment.instantiate(Main.this, "com.jahirfiquitiva.paperboard.fragments.Wallpapers"));
tx.commit();
} else {
showNotConnectedDialog();
}
} else if (drawerItem.getIdentifier() == 5) {
currentItem = 5;
getSupportActionBar().setTitle(thaRequest);
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
tx.replace(R.id.main, Fragment.instantiate(Main.this, "com.jahirfiquitiva.paperboard.fragments.Request"));
tx.commit();
} else if (drawerItem.getIdentifier() == 6) {
currentItem = 6;
getSupportActionBar().setTitle(thaCredits);
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
tx.replace(R.id.main, Fragment.instantiate(Main.this, "com.jahirfiquitiva.paperboard.fragments.Credits"));
tx.commit();
}
}
}
})
.withSavedInstance(savedInstanceState)
.build();
result.getListView().setVerticalScrollBarEnabled(false);
runLicenseChecker();
if (savedInstanceState == null) {
result.setSelectionByIdentifier(1);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState = result.saveInstanceState(outState);
super.onSaveInstanceState(outState);
}
@Override
public void onBackPressed() {
if (result != null && result.isDrawerOpen()) {
result.closeDrawer();
} else if (result != null && currentItem != 1) {
result.setSelection(0);
} else if (result != null && currentItem == 1) {
super.onBackPressed();
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.share:
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = "Check out this awesome icon pack by " + getResources().getString(R.string.iconpack_designer) + ". Download Here: " + getResources().getString(R.string.play_store_link);
sharingIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, (getResources().getString(R.string.share_title))));
break;
case R.id.rate:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getResources().getString(R.string.play_store_link)));
startActivity(browserIntent);
break;
case R.id.sendemail:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:" + getResources().getString(R.string.email_id)));
intent.putExtra(Intent.EXTRA_SUBJECT, getResources().getString(R.string.email_subject));
startActivity(Intent.createChooser(intent, (getResources().getString(R.string.send_title))));
break;
case R.id.changelog:
changelog();
break;
}
return true;
}
public void addItemsToDrawer() {
IDrawerItem walls = new PrimaryDrawerItem().withName(thaWalls).withIcon(GoogleMaterial.Icon.gmd_landscape).withIdentifier(4);
IDrawerItem request = new PrimaryDrawerItem().withName(thaRequest).withIcon(GoogleMaterial.Icon.gmd_forum).withIdentifier(5);
if (enable_features) {
result.addItem(walls, 3);
result.addItem(request, 4);
} else {
}
}
private void runLicenseChecker() {
if (firstrun) {
if (withLicenseChecker) {
checkLicense();
} else {
mPrefs.setFeaturesEnabled(true);
addItemsToDrawer();
showChangelogDialog();
}
} else {
if (withLicenseChecker) {
if (!enable_features) {
showNotLicensedDialog();
}
} else {
addItemsToDrawer();
showChangelogDialog();
}
}
}
private void changelog() {
new MaterialDialog.Builder(context)
.title(R.string.changelog_dialog_title)
.content(R.string.changelog_content)
.positiveText(R.string.nice)
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
mPrefs.setNotFirstrun();
}
})
.show();
}
private void showChangelogDialog() {
String launchinfo = getSharedPreferences("PrefsFile", MODE_PRIVATE).getString("version", "0");
if (launchinfo.equals(getResources().getString(R.string.current_version))) {
} else {
changelog();
}
storeSharedPrefs();
}
protected void storeSharedPrefs() {
SharedPreferences sharedPreferences = getSharedPreferences("PrefsFile", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("version", getResources().getString(R.string.current_version));
editor.commit();
}
private void showNotConnectedDialog() {
new MaterialDialog.Builder(this)
.title(R.string.no_conn_title)
.content(R.string.no_conn_content)
.positiveText(R.string.ok)
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
int nSelection = currentItem - 1;
if (result != null) {
result.setSelection(nSelection);
}
}
})
.show();
}
public void checkLicense() {
String installer = getPackageManager().getInstallerPackageName(getPackageName());
try {
if (installer.equals("com.google.android.feedback") ||
installer.equals("com.android.vending")) {
new MaterialDialog.Builder(this)
.title(R.string.license_success_title)
.content(R.string.license_success)
.positiveText(R.string.close)
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
enable_features = true;
mPrefs.setFeaturesEnabled(true);
addItemsToDrawer();
showChangelogDialog();
}
})
.show();
} else {
enable_features = false;
mPrefs.setFeaturesEnabled(false);
MaterialDialog dialog = new MaterialDialog.Builder(this)
.title(R.string.license_failed_title)
.content(R.string.license_failed)
.positiveText(R.string.download)
.negativeText(R.string.exit)
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getResources().getString(R.string.play_store_link)));
startActivity(browserIntent);
}
@Override
public void onNegative(MaterialDialog dialog) {
finish();
}
})
.show();
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
finish();
}
});
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
});
}
} catch (Exception e) {
enable_features = false;
mPrefs.setFeaturesEnabled(false);
MaterialDialog dialog = new MaterialDialog.Builder(this)
.title(R.string.license_failed_title)
.content(R.string.license_failed)
.positiveText(R.string.download)
.negativeText(R.string.exit)
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getResources().getString(R.string.play_store_link)));
startActivity(browserIntent);
}
@Override
public void onNegative(MaterialDialog dialog) {
finish();
}
})
.show();
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
finish();
}
});
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
});
}
}
private void showNotLicensedDialog() {
MaterialDialog dialog = new MaterialDialog.Builder(this)
.title(R.string.license_failed_title)
.content(R.string.license_failed)
.positiveText(R.string.download)
.negativeText(R.string.exit)
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getResources().getString(R.string.play_store_link)));
startActivity(browserIntent);
}
@Override
public void onNegative(MaterialDialog dialog) {
finish();
}
})
.show();
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
finish();
}
});
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
});
}
}