package com.alorma.github.ui.activity; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewCompat; import android.widget.Switch; import com.alorma.github.GitskariosApplication; import com.alorma.github.R; import com.alorma.github.injector.component.ApplicationComponent; import com.alorma.github.injector.component.DaggerNotificationsComponent; import com.alorma.github.injector.component.NotificationsComponent; import com.alorma.github.injector.module.NotificationsModule; import com.alorma.github.notifications.AppNotificationsManager; import com.alorma.github.ui.activity.base.BackActivity; import com.alorma.github.ui.fragment.NotificationsFragment; import javax.inject.Inject; public class NotificationsActivity extends BackActivity { private Switch notificationsSwitch; public static Intent launchIntent(Context context) { return new Intent(context, NotificationsActivity.class); } public static Intent launchIntent(Context context, String token) { Intent intent = launchIntent(context); intent.putExtra(EXTRA_WITH_TOKEN, token); return intent; } @Inject AppNotificationsManager appNotificationsManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.notifications_activity); injectComponent(); notificationsSwitch = (Switch) findViewById(R.id.notificationsSwitch); if (notificationsSwitch != null) { notificationsSwitch.setChecked(appNotificationsManager.areNotificationsEnabled()); changeSwitchText(appNotificationsManager.areNotificationsEnabled()); notificationsSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> { changeSwitchText(isChecked); appNotificationsManager.setNotificationsEnabled(isChecked); }); } NotificationsFragment notificationsFragment = NotificationsFragment.newInstance(); notificationsFragment.setArguments(getIntent().getExtras()); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content, notificationsFragment); ft.commit(); if (getToolbar() != null) { ViewCompat.setElevation(getToolbar(), 4); } NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancelAll(); } private void changeSwitchText(boolean enabled) { if (enabled) { notificationsSwitch.setText(R.string.notifications_enabled); } else { notificationsSwitch.setText(R.string.notifications_disabled); } } private void injectComponent() { GitskariosApplication application = (GitskariosApplication) getApplication(); ApplicationComponent applicationComponent = application.getApplicationComponent(); NotificationsComponent notificationsComponent = DaggerNotificationsComponent.builder() .applicationComponent(applicationComponent) .notificationsModule(new NotificationsModule()) .build(); notificationsComponent.inject(this); } @Override protected int getAppDarkTheme() { return R.style.AppTheme_Dark_Notifications; } @Override protected int getAppLightTheme() { return R.style.AppTheme_Notifications; } @Override protected void close(boolean navigateUp) { if (navigateUp) { Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); finish(); } else { finish(); } } }