package com.npes87184.s2tdroid.donate;
import android.Manifest;
import android.app.Activity;
import android.app.FragmentManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.ActivityCompat;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatCallback;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.view.ActionMode;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import com.npes87184.s2tdroid.donate.model.ListAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.pedant.SweetAlert.SweetAlertDialog;
public class MainActivity extends Activity implements AppCompatCallback {
private AppCompatDelegate delegate;
private Toolbar toolbar;
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private ListView lvLeftMenu;
private ImageView imageViewMenu;
private ListAdapter adapter;
final private int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124;
final List<String> permissionsList = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//let's create the delegate, passing the activity at both arguments (Activity, AppCompatCallback)
delegate = AppCompatDelegate.create(this, this);
//we need to call the onCreate() of the AppCompatDelegate
delegate.onCreate(savedInstanceState);
//we use the delegate to inflate the layout
delegate.setContentView(R.layout.activity_main);
List<String> permissionsNeeded = new ArrayList<String>();
if (!addPermission(permissionsList, Manifest.permission.READ_EXTERNAL_STORAGE))
permissionsNeeded.add("READ_EXTERNAL_STORAGE");
if (!addPermission(permissionsList, Manifest.permission.WRITE_EXTERNAL_STORAGE))
permissionsNeeded.add("WRITE_EXTERNAL_STORAGE");
if (permissionsList.size() > 0) {
// Need Rationale
new SweetAlertDialog(this)
.setTitleText(getString(R.string.app_name))
.setContentText(getString(R.string.filePermission))
.setConfirmText("OK")
.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sDialog) {
ActivityCompat.requestPermissions(MainActivity.this, permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
sDialog.dismiss();
}
})
.show();
}
findViews();
List<String> lvs = new ArrayList<String>(4);
lvs.add(getString(R.string.home));
lvs.add(getString(R.string.transformBubble));
lvs.add(getString(R.string.setting));
lvs.add(getString(R.string.about));
toolbar.setTitle(getString(R.string.app_name));
toolbar.setTitleTextColor(Color.parseColor("#ffffff"));
delegate.setSupportActionBar(toolbar);
delegate.getSupportActionBar().setHomeButtonEnabled(true);
delegate.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.open, R.string.close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}
};
mDrawerToggle.syncState();
mDrawerLayout.setDrawerListener(mDrawerToggle);
//setting menu
adapter = new ListAdapter(this, lvs);
lvLeftMenu.setAdapter(adapter);
lvLeftMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView arg0, View arg1, final int arg2, long arg3) {
mDrawerLayout.closeDrawers();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
switchFragments(arg2); // your fragment transactions go here
}
}, 200);
}
});
// init
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, HomeFragment.newInstance())
.commit();
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
{
Map<String, Integer> perms = new HashMap<String, Integer>();
// Initial
perms.put(Manifest.permission.READ_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.WRITE_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED);
// Fill with results
for (int i = 0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
// Check for ACCESS_FINE_LOCATION
if (perms.get(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// All Permissions Granted
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
// Permission Denied
new SweetAlertDialog(MainActivity.this, SweetAlertDialog.ERROR_TYPE)
.setTitleText(getString(R.string.oops))
.setContentText(getString(R.string.filePermission))
.setConfirmText("OK")
.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sDialog) {
ActivityCompat.requestPermissions(MainActivity.this, permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
sDialog.dismiss();
}
})
.show();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
if(mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
mDrawerLayout.closeDrawers();
} else {
super.onBackPressed();
}
}
private boolean addPermission(List<String> permissionsList, String permission) {
if (ActivityCompat.checkSelfPermission(MainActivity.this,permission) != PackageManager.PERMISSION_GRANTED) {
permissionsList.add(permission);
// Check for Rationale Option
if (!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,permission))
return false;
}
return true;
}
private void findViews() {
toolbar = (Toolbar) findViewById(R.id.tl_custom);
mDrawerLayout = (DrawerLayout) findViewById(R.id.dl_left);
lvLeftMenu = (ListView) findViewById(R.id.lv_left_menu);
imageViewMenu = (ImageView) findViewById(R.id.imageView_left_menu);
imageViewMenu.setScaleType(ImageView.ScaleType.CENTER_CROP);
}
private void switchFragments(int which) {
FragmentManager fragmentManager = getFragmentManager();
switch (which) {
case 0:
// home
fragmentManager.beginTransaction()
.replace(R.id.container, HomeFragment.newInstance())
.commit();
break;
case 1:
// bubble
fragmentManager.beginTransaction()
.replace(R.id.container, BubbleFragment.newInstance())
.commit();
break;
case 2:
// setting
fragmentManager.beginTransaction()
.replace(R.id.container, SettingFragment.newInstance())
.commit();
break;
case 3:
// about
fragmentManager.beginTransaction()
.replace(R.id.container, AboutFragment.newInstance())
.commit();
break;
}
}
@Override
public void onSupportActionModeStarted(ActionMode mode) {
//let's leave this empty, for now
}
@Override
public void onSupportActionModeFinished(ActionMode mode) {
// let's leave this empty, for now
}
@Override
public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) {
return null;
}
}