package com.appsimobile.appsii.dagger; import android.content.Context; import android.content.SharedPreferences; import android.view.LayoutInflater; import android.view.WindowManager; import com.appsimobile.appsii.AbstractHotspotHelper; import com.appsimobile.appsii.AnalyticsManager; import com.appsimobile.appsii.Appsi; import com.appsimobile.appsii.HotspotHelperImpl; import com.appsimobile.appsii.LoaderManager; import com.appsimobile.appsii.LoaderManagerImpl; import com.appsimobile.appsii.PopupLayer; import com.appsimobile.appsii.R; import com.appsimobile.appsii.Sidebar; import com.appsimobile.appsii.SidebarContext; import com.appsimobile.appsii.compat.LauncherAppsCompat; import com.appsimobile.appsii.module.apps.AppPageLoader; import com.appsimobile.appsii.permissions.PermissionUtils; import java.lang.ref.WeakReference; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; /** * Created by nmartens on 24/11/15. */ @Module public class AppsiModule extends ApplicationModule { final Context mThemedContext; private WeakReference<Appsi> mAppsi; public AppsiModule(Appsi appsi, Context themedContext) { super(appsi.getApplication()); mAppsi = new WeakReference<>(appsi); mThemedContext = themedContext; } @Singleton @Provides SidebarContext provideSidebarContext(AnalyticsManager analyticsManager, LoaderManager loaderManager) { return new SidebarContext(mThemedContext, analyticsManager, loaderManager); } @Singleton @Provides Appsi provideAppsi() { return mAppsi.get(); } @Provides @Singleton AppPageLoader provideAppPageLoader(LauncherAppsCompat lac) { return new AppPageLoader(mThemedContext, lac); } @Provides @Singleton LoaderManager provideLoaderManager(LoaderManagerImpl loaderManager) { return loaderManager; } @Provides @Singleton PopupLayer providePopupLayer() { LayoutInflater inflater = LayoutInflater.from(mThemedContext); return (PopupLayer) inflater.inflate(R.layout.popup_layer, null); } @Provides @Singleton Sidebar provideSidebar() { LayoutInflater inflater = LayoutInflater.from(mThemedContext); return (Sidebar) inflater.inflate(R.layout.sidebar, null); } @Provides @Singleton AbstractHotspotHelper provideHotspotHelper(Context context, SharedPreferences sharedPreferences, PermissionUtils permissionUtils, WindowManager windowManager, PopupLayer popupLayer) { return new HotspotHelperImpl( context, sharedPreferences, permissionUtils, windowManager, popupLayer); } }