/**
* Wire
* Copyright (C) 2016 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.waz.zclient.controllers;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import com.waz.zclient.controllers.accentcolor.AccentColorController;
import com.waz.zclient.controllers.accentcolor.IAccentColorController;
import com.waz.zclient.controllers.background.BackgroundController;
import com.waz.zclient.controllers.background.DialogBackgroundImageController;
import com.waz.zclient.controllers.background.IBackgroundController;
import com.waz.zclient.controllers.background.IDialogBackgroundImageController;
import com.waz.zclient.controllers.calling.CallingController;
import com.waz.zclient.controllers.calling.ICallingController;
import com.waz.zclient.controllers.camera.CameraController;
import com.waz.zclient.controllers.camera.ICameraController;
import com.waz.zclient.controllers.confirmation.ConfirmationController;
import com.waz.zclient.controllers.confirmation.IConfirmationController;
import com.waz.zclient.controllers.conversationlist.ConversationListController;
import com.waz.zclient.controllers.conversationlist.IConversationListController;
import com.waz.zclient.controllers.currentfocus.FocusController;
import com.waz.zclient.controllers.currentfocus.IFocusController;
import com.waz.zclient.controllers.deviceuser.DeviceUserController;
import com.waz.zclient.controllers.deviceuser.IDeviceUserController;
import com.waz.zclient.controllers.drawing.DrawingController;
import com.waz.zclient.controllers.drawing.IDrawingController;
import com.waz.zclient.controllers.giphy.GiphyController;
import com.waz.zclient.controllers.giphy.IGiphyController;
import com.waz.zclient.controllers.globallayout.GlobalLayoutController;
import com.waz.zclient.controllers.globallayout.IGlobalLayoutController;
import com.waz.zclient.controllers.loadtimelogger.ILoadTimeLoggerController;
import com.waz.zclient.controllers.location.ILocationController;
import com.waz.zclient.controllers.location.LocationController;
import com.waz.zclient.controllers.mentioning.IMentioningController;
import com.waz.zclient.controllers.mentioning.MentioningController;
import com.waz.zclient.controllers.navigation.INavigationController;
import com.waz.zclient.controllers.navigation.NavigationController;
import com.waz.zclient.controllers.onboarding.IOnboardingController;
import com.waz.zclient.controllers.onboarding.OnboardingController;
import com.waz.zclient.controllers.orientation.IOrientationController;
import com.waz.zclient.controllers.orientation.OrientationController;
import com.waz.zclient.controllers.password.IPasswordController;
import com.waz.zclient.controllers.password.PasswordController;
import com.waz.zclient.controllers.permission.IRequestPermissionsController;
import com.waz.zclient.controllers.permission.RequestPermissionsController;
import com.waz.zclient.controllers.sharing.ISharingController;
import com.waz.zclient.controllers.sharing.SharingController;
import com.waz.zclient.controllers.singleimage.ISingleImageController;
import com.waz.zclient.controllers.singleimage.SingleImageController;
import com.waz.zclient.controllers.theme.IThemeController;
import com.waz.zclient.controllers.theme.ThemeController;
import com.waz.zclient.controllers.usernames.IUsernamesController;
import com.waz.zclient.controllers.usernames.UsernamesController;
import com.waz.zclient.controllers.userpreferences.IUserPreferencesController;
import com.waz.zclient.controllers.userpreferences.UserPreferencesController;
import com.waz.zclient.controllers.verification.IVerificationController;
import com.waz.zclient.controllers.verification.VerificationController;
import com.waz.zclient.controllers.vibrator.IVibratorController;
import com.waz.zclient.controllers.vibrator.VibratorController;
import com.waz.zclient.pages.main.conversation.controller.ConversationScreenController;
import com.waz.zclient.pages.main.conversation.controller.IConversationScreenController;
import com.waz.zclient.pages.main.conversationpager.controller.ISlidingPaneController;
import com.waz.zclient.pages.main.conversationpager.controller.SlidingPaneController;
import com.waz.zclient.pages.main.pickuser.controller.IPickUserController;
import com.waz.zclient.pages.main.pickuser.controller.PickUserController;
public abstract class Base$$ControllerFactory implements IControllerFactory {
protected IAccentColorController accentColorController;
protected IBackgroundController backgroundController;
protected IDialogBackgroundImageController dialogBackgroundImageController;
protected ICallingController callingController;
protected ICameraController cameraController;
protected IConfirmationController confirmationController;
protected IConversationListController conversationListController;
protected IFocusController focusController;
protected IDeviceUserController deviceUserController;
protected IDrawingController drawingController;
protected IGiphyController giphyController;
protected IGlobalLayoutController globalLayoutController;
protected ILoadTimeLoggerController loadTimeLoggerController;
protected ILocationController locationController;
protected IMentioningController mentioningController;
protected INavigationController navigationController;
protected IOnboardingController onboardingController;
protected IOrientationController orientationController;
protected IPasswordController passwordController;
protected IRequestPermissionsController requestPermissionsController;
protected ISharingController sharingController;
protected ISingleImageController singleImageController;
protected IThemeController themeController;
protected IUserPreferencesController userPreferencesController;
protected IVerificationController verificationController;
protected IVibratorController vibratorController;
protected IConversationScreenController conversationScreenController;
protected ISlidingPaneController slidingPaneController;
protected IPickUserController pickUserController;
protected IUsernamesController usernamesController;
protected boolean isTornDown;
protected Context context;
public Base$$ControllerFactory(Context context) {
this.context = context;
this.isTornDown = false;
}
@Override
public ISharingController getSharingController() {
verifyLifecycle();
if (sharingController == null) {
sharingController = new SharingController();
}
return sharingController;
}
@Override
public IPasswordController getPasswordController() {
verifyLifecycle();
if (passwordController == null) {
passwordController = new PasswordController();
}
return passwordController;
}
@Override
public ISlidingPaneController getSlidingPaneController() {
verifyLifecycle();
if (slidingPaneController == null) {
slidingPaneController = new SlidingPaneController();
}
return slidingPaneController;
}
@Override
public void tearDown() {
this.isTornDown = true;
if (accentColorController != null) {
accentColorController.tearDown();
accentColorController = null;
}
if (backgroundController != null) {
backgroundController.tearDown();
backgroundController = null;
}
if (dialogBackgroundImageController != null) {
dialogBackgroundImageController.tearDown();
dialogBackgroundImageController = null;
}
if (callingController != null) {
callingController.tearDown();
callingController = null;
}
if (cameraController != null) {
cameraController.tearDown();
cameraController = null;
}
if (confirmationController != null) {
confirmationController.tearDown();
confirmationController = null;
}
if (conversationListController != null) {
conversationListController.tearDown();
conversationListController = null;
}
if (focusController != null) {
focusController.tearDown();
focusController = null;
}
if (deviceUserController != null) {
deviceUserController.tearDown();
deviceUserController = null;
}
if (drawingController != null) {
drawingController.tearDown();
drawingController = null;
}
if (giphyController != null) {
giphyController.tearDown();
giphyController = null;
}
if (globalLayoutController != null) {
globalLayoutController.tearDown();
globalLayoutController = null;
}
if (loadTimeLoggerController != null) {
loadTimeLoggerController.tearDown();
loadTimeLoggerController = null;
}
if (locationController != null) {
locationController.tearDown();
locationController = null;
}
if (mentioningController != null) {
mentioningController.tearDown();
mentioningController = null;
}
if (navigationController != null) {
navigationController.tearDown();
navigationController = null;
}
if (onboardingController != null) {
onboardingController.tearDown();
onboardingController = null;
}
if (orientationController != null) {
orientationController.tearDown();
orientationController = null;
}
if (passwordController != null) {
passwordController.tearDown();
passwordController = null;
}
if (requestPermissionsController != null) {
requestPermissionsController.tearDown();
requestPermissionsController = null;
}
if (sharingController != null) {
sharingController.tearDown();
sharingController = null;
}
if (singleImageController != null) {
singleImageController.tearDown();
singleImageController = null;
}
if (themeController != null) {
themeController.tearDown();
themeController = null;
}
if (userPreferencesController != null) {
userPreferencesController.tearDown();
userPreferencesController = null;
}
if (verificationController != null) {
verificationController.tearDown();
verificationController = null;
}
if (vibratorController != null) {
vibratorController.tearDown();
vibratorController = null;
}
if (conversationScreenController != null) {
conversationScreenController.tearDown();
conversationScreenController = null;
}
if (slidingPaneController != null) {
slidingPaneController.tearDown();
slidingPaneController = null;
}
if (pickUserController != null) {
pickUserController.tearDown();
pickUserController = null;
}
if (usernamesController != null) {
usernamesController.tearDown();
usernamesController = null;
}
this.context = null;
}
@Override
public void setGlobalLayout(View globalLayoutView) {
getGlobalLayoutController().setGlobalLayout(globalLayoutView);
}
@Override
public IFocusController getFocusController() {
verifyLifecycle();
if (focusController == null) {
focusController = new FocusController();
}
return focusController;
}
@Override
public IOrientationController getOrientationController() {
verifyLifecycle();
if (orientationController == null) {
orientationController = new OrientationController(this.context);
}
return orientationController;
}
@Override
public IMentioningController getMentioningController() {
verifyLifecycle();
if (mentioningController == null) {
mentioningController = new MentioningController();
}
return mentioningController;
}
@Override
public INavigationController getNavigationController() {
verifyLifecycle();
if (navigationController == null) {
navigationController = new NavigationController(this.context);
}
return navigationController;
}
@Override
public boolean isTornDown() {
return isTornDown;
}
@Override
public IConversationListController getConversationListController() {
verifyLifecycle();
if (conversationListController == null) {
conversationListController = new ConversationListController();
}
return conversationListController;
}
@Override
public IVerificationController getVerificationController() {
verifyLifecycle();
if (verificationController == null) {
verificationController = new VerificationController(getUserPreferencesController());
}
return verificationController;
}
@Override
public IThemeController getThemeController() {
verifyLifecycle();
if (themeController == null) {
themeController = new ThemeController(this.context);
}
return themeController;
}
@Override
public IUserPreferencesController getUserPreferencesController() {
verifyLifecycle();
if (userPreferencesController == null) {
userPreferencesController = new UserPreferencesController(this.context);
}
return userPreferencesController;
}
@Override
public IPickUserController getPickUserController() {
verifyLifecycle();
if (pickUserController == null) {
pickUserController = new PickUserController(this.context);
}
return pickUserController;
}
@Override
public ICallingController getCallingController() {
verifyLifecycle();
if (callingController == null) {
callingController = new CallingController();
}
return callingController;
}
@Override
public IRequestPermissionsController getRequestPermissionsController() {
verifyLifecycle();
if (requestPermissionsController == null) {
requestPermissionsController = new RequestPermissionsController();
}
return requestPermissionsController;
}
@Override
public IVibratorController getVibratorController() {
verifyLifecycle();
if (vibratorController == null) {
vibratorController = new VibratorController(this.context);
}
return vibratorController;
}
@Override
public IGiphyController getGiphyController() {
verifyLifecycle();
if (giphyController == null) {
giphyController = new GiphyController();
}
return giphyController;
}
@Override
public IConfirmationController getConfirmationController() {
verifyLifecycle();
if (confirmationController == null) {
confirmationController = new ConfirmationController();
}
return confirmationController;
}
@Override
public IGlobalLayoutController getGlobalLayoutController() {
verifyLifecycle();
if (globalLayoutController == null) {
globalLayoutController = new GlobalLayoutController();
}
return globalLayoutController;
}
@Override
public ILocationController getLocationController() {
verifyLifecycle();
if (locationController == null) {
locationController = new LocationController();
}
return locationController;
}
@Override
public IDialogBackgroundImageController getDialogBackgroundImageController() {
verifyLifecycle();
if (dialogBackgroundImageController == null) {
dialogBackgroundImageController = new DialogBackgroundImageController();
}
return dialogBackgroundImageController;
}
@Override
public ICameraController getCameraController() {
verifyLifecycle();
if (cameraController == null) {
cameraController = new CameraController();
}
return cameraController;
}
@Override
public IConversationScreenController getConversationScreenController() {
verifyLifecycle();
if (conversationScreenController == null) {
conversationScreenController = new ConversationScreenController();
}
return conversationScreenController;
}
protected final void verifyLifecycle() {
if (isTornDown) {
throw new IllegalStateException("ControllerFactory is already torn down");
}
}
@Override
public void setActivity(Activity activity) {
getGlobalLayoutController().setActivity(activity);
getOrientationController().setActivity(activity);
getUsernameController().setActivity(activity);
}
@Override
public IOnboardingController getOnboardingController() {
verifyLifecycle();
if (onboardingController == null) {
onboardingController = new OnboardingController(this.context);
}
return onboardingController;
}
@Override
public IBackgroundController getBackgroundController() {
verifyLifecycle();
if (backgroundController == null) {
backgroundController = new BackgroundController();
}
return backgroundController;
}
protected abstract void initLoadTimeLoggerController();
@Override
public IDeviceUserController getDeviceUserController() {
verifyLifecycle();
if (deviceUserController == null) {
deviceUserController = new DeviceUserController(this.context);
}
return deviceUserController;
}
@Override
public IDrawingController getDrawingController() {
verifyLifecycle();
if (drawingController == null) {
drawingController = new DrawingController();
}
return drawingController;
}
@Override
public ILoadTimeLoggerController getLoadTimeLoggerController() {
verifyLifecycle();
initLoadTimeLoggerController();
return loadTimeLoggerController;
}
@Override
public ISingleImageController getSingleImageController() {
verifyLifecycle();
if (singleImageController == null) {
singleImageController = new SingleImageController();
}
return singleImageController;
}
@Override
public IAccentColorController getAccentColorController() {
verifyLifecycle();
if (accentColorController == null) {
accentColorController = new AccentColorController(this.context, getUserPreferencesController());
}
return accentColorController;
}
@Override
public IUsernamesController getUsernameController() {
verifyLifecycle();
if (usernamesController == null) {
usernamesController = new UsernamesController();
}
return usernamesController;
}
}