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; } }