package typical_if.android.activity; import android.app.Activity; import android.app.AlertDialog; import android.app.NotificationManager; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; import android.os.PowerManager; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.widget.DrawerLayout; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import com.vk.sdk.VKAccessToken; import com.vk.sdk.VKCaptchaDialog; import com.vk.sdk.VKSdk; import com.vk.sdk.VKSdkListener; import com.vk.sdk.VKUIHelper; import com.vk.sdk.api.VKError; import typical_if.android.AudioPlayer; import typical_if.android.AudioPlayerService; import typical_if.android.Constants; import typical_if.android.FloatingToolbar_ButtonHelper; import typical_if.android.ItemDataSetter; import typical_if.android.OfflineMode; import typical_if.android.R; import typical_if.android.TIFApp; import typical_if.android.VKHelper; import typical_if.android.VKRequestListener; import typical_if.android.event.MainActivityAddFragmentEvent; import typical_if.android.fragment.FragmentComments; import typical_if.android.fragment.FragmentFullScreenViewer; import typical_if.android.fragment.FragmentPhotoFromCamera; import typical_if.android.fragment.FragmentWall; import typical_if.android.fragment.NavigationDrawerFragment; import typical_if.android.fragment.PollFragment; public class MainActivity extends DialogActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks, FragmentFullScreenViewer.OnFragmentInteractionListener, FragmentComments.OnFragmentInteractionListener, PollFragment.OnFragmentInteractionListener { private static final int PICK_FROM_CAMERA = 1; private static String sTokenKey = "VK_ACCESS_TOKEN"; public NavigationDrawerFragment mNavigationDrawerFragment; public static Toolbar toolbar; void showAlertChanges() { final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.title_of_alert_main) .setCancelable(false) .setMessage(R.string.сhanges_of_new_version) .setPositiveButton(R.string.positive_button_alert_of_main, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { builder.setCancelable(true); } }); builder.create().show(); } @Override protected void onCreate(final Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); super.onCreate(savedInstanceState); if (OfflineMode.getIsFirstRunMainActivity()) { OfflineMode.setNotFirstRunMainActivity(); showAlertChanges(); } setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.activity_main); // // ensure that the view is available if we add the fragment final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); final DrawerLayout drawer = (DrawerLayout) inflater.inflate(R.layout.decor, null); // "null" is important. final ViewGroup decor = (ViewGroup) getWindow().getDecorView(); final View child = decor.getChildAt(0); decor.removeView(child); final ViewGroup container = (ViewGroup) drawer.findViewById(R.id.drawer_content); // This is the container we defined just now. container.addView(child, 0); drawer.findViewById(R.id.navigation_drawer).setPadding(0, getStatusBarHeight(), 0, 0); decor.addView(drawer); Constants.myIntent = new Intent(this, AudioPlayerService.class); Constants.notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); mNavigationDrawerFragment.setUp(R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout)); try { if (getIntent().getExtras() != null) { onNotificationClick(mNavigationDrawerFragment, getIntent()); } } catch (NullPointerException npe) { } // VK init VKUIHelper.onCreate(this); VKSdk.initialize(sdkListener, Constants.APP_ID, VKAccessToken.tokenFromSharedPreferences(this, sTokenKey)); VKSdk.wakeUpSession(this); ItemDataSetter.fragmentManager = getSupportFragmentManager(); ItemDataSetter.fragmentManager.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { @Override public void onBackStackChanged() { if (getSupportFragmentManager().getBackStackEntryCount() == 0) { try { if (!Constants.isPollFragmentLoaded) { if (Constants.makePostMenu.size() == 3) { } } } catch (NullPointerException e) { } } } }); mNavigationDrawerFragment.refreshNavigationHeader(VKHelper.UserObject.getUserFromShared()); } public int getStatusBarHeight() { int result = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } return result; } @Override protected void onPause() { super.onPause(); PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); boolean isScreenOn = powerManager.isScreenOn(); if (!isScreenOn) { if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean("isClickable")) { onNavigationDrawerItemSelected(5, false); } else onNavigationDrawerItemSelected((int) (long) OfflineMode.loadLong(Constants.VK_GROUP_ID), false); // The screen has been locked // do stuff... } } @Override protected void onResume() { super.onResume(); } @Override protected void onNewIntent(Intent intent) { onNotificationClick(mNavigationDrawerFragment, intent); } private void onNotificationClick(NavigationDrawerFragment mNavigationDrawerFragment, Intent notifIntent) { if (notifIntent.getExtras().getBoolean("isClickable")) { mNavigationDrawerFragment.closeDrawer(); } } public long setGroupId(final int clickedPosition) { switch (clickedPosition) { case 0: return Constants.TF_ID; case 1: return Constants.TZ_ID; case 2: return Constants.FB_ID; case 3: return Constants.FN_ID; case 4: return Constants.ST_ID; case 5: return Constants.ZF_ID; default: return Constants.TF_ID; } } @Override public void onConfigurationChanged(Configuration newConfig) { if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { // setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } super.onConfigurationChanged(newConfig); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { VKUIHelper.onActivityResult(this, requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT_OK) return; if (requestCode == PICK_FROM_CAMERA) { FragmentPhotoFromCamera fragmentPhotoFromCamera = FragmentPhotoFromCamera.newInstance(Constants.tempCameraPhotoFile); addFragment(fragmentPhotoFromCamera); } } private final VKSdkListener sdkListener = new VKSdkListener() { @Override public void onCaptchaError(VKError captchaError) { new VKCaptchaDialog(captchaError).show(); } @Override public void onTokenExpired(VKAccessToken expiredToken) { VKSdk.authorize(Constants.S_MY_SCOPE); } @Override public void onAccessDenied(final VKError authorizationError) { } @Override public void onReceiveNewToken(VKAccessToken newToken) { VKHelper.getMyselfInfo(new VKRequestListener() { @Override public void onSuccess() { VKHelper.UserObject user = VKHelper.getUserFromResponse(vkResponse); if (user.id == 0) { final SharedPreferences sPref = TIFApp.getAppContext().getSharedPreferences("uid", Activity.MODE_PRIVATE); user.id = sPref.getLong("uid", 0); //TODO че делать если нулл? Constants.USER_ID = user.id; return; } Constants.USER_ID = user.id; OfflineMode.saveUserId(Constants.USER_ID); mNavigationDrawerFragment.refreshNavigationHeader(user); // ((FragmentWall) getSupportFragmentManager().getFragments().get(1)).checkFabSuggest(); } // @Override // public void onError() { // showErrorToast(); // } }); } @Override public void onAcceptUserToken(VKAccessToken token) { VKHelper.getMyselfInfo(new VKRequestListener() { @Override public void onSuccess() { VKHelper.UserObject user = VKHelper.getUserFromResponse(vkResponse); if (user.id == 0) { final SharedPreferences sPref = TIFApp.getAppContext().getSharedPreferences("uid", Activity.MODE_PRIVATE); user.id = sPref.getLong("uid", 0); //TODO че делать если нулл? Constants.USER_ID = user.id; return; } Constants.USER_ID = user.id; OfflineMode.saveUserId(Constants.USER_ID); mNavigationDrawerFragment.refreshNavigationHeader(user); // ((FragmentWall) getSupportFragmentManager().getFragments().get(1)).checkFabSuggest(); } // @Override // public void onError() { // showErrorToast(); // } }); } }; Fragment fragment = null; @Override public void onNavigationDrawerItemSelected(int groupPosition, boolean isResume) { FragmentManager fragmentManager = getSupportFragmentManager(); long vkGroupId; switch (groupPosition) { case 0: case 1: case 2: case 3: case 4: case 5: vkGroupId = setGroupId(groupPosition); OfflineMode.saveLong(vkGroupId, Constants.VK_GROUP_ID); FloatingToolbar_ButtonHelper.setToolbarAttachments(groupPosition); fragment = FragmentWall.newInstance(false); break; case 6: finish(); // Log.d("finish"," - ---- -- - - -- - -------------------------- -- - " ); break; case 7: Intent i = new Intent(this, SettingsActivity.class); startActivity(i); } // Log.d("OnNavigationItemSelected", " status: position = " + groupPosition); if (groupPosition != 6) { for (int i = 0; i < fragmentManager.getBackStackEntryCount(); i++) { fragmentManager.popBackStack(); } replaceFragment(fragment); } } @Override public void onFragmentInteraction(Uri uri) { } @Override public void onFragmentInteraction(String id) { } @Override public void onBackPressed() { if (getSupportFragmentManager().getBackStackEntryCount() == 0) { mNavigationDrawerFragment.toggle(); } else { super.onBackPressed(); } } @Override protected void onDestroy() { super.onDestroy(); if (this.isFinishing()) { stopService(new Intent(this, AudioPlayerService.class)); AudioPlayerService.cancelNotification(this, Constants.notifID); AudioPlayer.stop(); } } @SuppressWarnings("unused") // used via EventBus but is Lint undetectable public void onEventMainThread(MainActivityAddFragmentEvent event) { addFragment(event.fragmentVideoView); } }