mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 15:23:00 +00:00 
			
		
		
		
	WIP: Correctly initialize NewPlayerViewModel
We need to pass the viewModel to the view after inflating our player for the UI to render.
This commit is contained in:
		| @@ -56,8 +56,6 @@ import androidx.preference.PreferenceManager; | |||||||
|  |  | ||||||
| import com.google.android.material.bottomsheet.BottomSheetBehavior; | import com.google.android.material.bottomsheet.BottomSheetBehavior; | ||||||
|  |  | ||||||
| import net.newpipe.newplayer.NewPlayer; |  | ||||||
|  |  | ||||||
| import org.schabi.newpipe.databinding.ActivityMainBinding; | import org.schabi.newpipe.databinding.ActivityMainBinding; | ||||||
| import org.schabi.newpipe.databinding.DrawerHeaderBinding; | import org.schabi.newpipe.databinding.DrawerHeaderBinding; | ||||||
| import org.schabi.newpipe.databinding.DrawerLayoutBinding; | import org.schabi.newpipe.databinding.DrawerLayoutBinding; | ||||||
| @@ -106,9 +104,6 @@ public class MainActivity extends AppCompatActivity { | |||||||
|     @SuppressWarnings("ConstantConditions") |     @SuppressWarnings("ConstantConditions") | ||||||
|     public static final boolean DEBUG = !BuildConfig.BUILD_TYPE.equals("release"); |     public static final boolean DEBUG = !BuildConfig.BUILD_TYPE.equals("release"); | ||||||
|  |  | ||||||
|     @Inject |  | ||||||
|     NewPlayer newPlayer; |  | ||||||
|  |  | ||||||
|     private ActivityMainBinding mainBinding; |     private ActivityMainBinding mainBinding; | ||||||
|     private DrawerHeaderBinding drawerHeaderBinding; |     private DrawerHeaderBinding drawerHeaderBinding; | ||||||
|     private DrawerLayoutBinding drawerLayoutBinding; |     private DrawerLayoutBinding drawerLayoutBinding; | ||||||
|   | |||||||
| @@ -54,6 +54,9 @@ import androidx.appcompat.widget.Toolbar; | |||||||
| import androidx.coordinatorlayout.widget.CoordinatorLayout; | import androidx.coordinatorlayout.widget.CoordinatorLayout; | ||||||
| import androidx.core.content.ContextCompat; | import androidx.core.content.ContextCompat; | ||||||
| import androidx.fragment.app.Fragment; | import androidx.fragment.app.Fragment; | ||||||
|  | import androidx.lifecycle.LifecycleOwnerKt; | ||||||
|  | import androidx.lifecycle.ViewModelProvider; | ||||||
|  | import androidx.media3.common.util.UnstableApi; | ||||||
| import androidx.preference.PreferenceManager; | import androidx.preference.PreferenceManager; | ||||||
|  |  | ||||||
| import com.evernote.android.state.State; | import com.evernote.android.state.State; | ||||||
| @@ -65,6 +68,10 @@ import com.google.android.material.tabs.TabLayout; | |||||||
|  |  | ||||||
| import net.newpipe.newplayer.NewPlayer; | import net.newpipe.newplayer.NewPlayer; | ||||||
| import net.newpipe.newplayer.data.PlayMode; | import net.newpipe.newplayer.data.PlayMode; | ||||||
|  | import net.newpipe.newplayer.ui.ContentScale; | ||||||
|  | import net.newpipe.newplayer.ui.NewPlayerView; | ||||||
|  | import net.newpipe.newplayer.uiModel.NewPlayerViewModel; | ||||||
|  | import net.newpipe.newplayer.uiModel.NewPlayerViewModelImpl; | ||||||
|  |  | ||||||
| import org.schabi.newpipe.App; | import org.schabi.newpipe.App; | ||||||
| import org.schabi.newpipe.R; | import org.schabi.newpipe.R; | ||||||
| @@ -138,7 +145,9 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; | |||||||
| import io.reactivex.rxjava3.disposables.CompositeDisposable; | import io.reactivex.rxjava3.disposables.CompositeDisposable; | ||||||
| import io.reactivex.rxjava3.disposables.Disposable; | import io.reactivex.rxjava3.disposables.Disposable; | ||||||
| import io.reactivex.rxjava3.schedulers.Schedulers; | import io.reactivex.rxjava3.schedulers.Schedulers; | ||||||
|  | import kotlinx.coroutines.CoroutineScopeKt; | ||||||
|  |  | ||||||
|  | @UnstableApi | ||||||
| @AndroidEntryPoint | @AndroidEntryPoint | ||||||
| public final class VideoDetailFragment | public final class VideoDetailFragment | ||||||
|         extends BaseStateFragment<StreamInfo> |         extends BaseStateFragment<StreamInfo> | ||||||
| @@ -238,6 +247,7 @@ public final class VideoDetailFragment | |||||||
| //    private Player player; | //    private Player player; | ||||||
|     @Inject |     @Inject | ||||||
|     NewPlayer newPlayer; |     NewPlayer newPlayer; | ||||||
|  |     NewPlayerViewModel newPlayerViewModel; | ||||||
| //    private final PlayerHolder playerHolder = PlayerHolder.getInstance(); | //    private final PlayerHolder playerHolder = PlayerHolder.getInstance(); | ||||||
|  |  | ||||||
| //    /*////////////////////////////////////////////////////////////////////////// | //    /*////////////////////////////////////////////////////////////////////////// | ||||||
| @@ -314,6 +324,10 @@ public final class VideoDetailFragment | |||||||
|     public void onCreate(final Bundle savedInstanceState) { |     public void onCreate(final Bundle savedInstanceState) { | ||||||
|         super.onCreate(savedInstanceState); |         super.onCreate(savedInstanceState); | ||||||
|  |  | ||||||
|  |         newPlayerViewModel = new ViewModelProvider(this).get(NewPlayerViewModelImpl.class); | ||||||
|  |         newPlayerViewModel.setNewPlayer(this.newPlayer); | ||||||
|  |         newPlayerViewModel.setContentFitMode(ContentScale.FIT_INSIDE); | ||||||
|  |  | ||||||
|         final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); |         final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); | ||||||
|         showComments = prefs.getBoolean(getString(R.string.show_comments_key), true); |         showComments = prefs.getBoolean(getString(R.string.show_comments_key), true); | ||||||
|         showRelatedItems = prefs.getBoolean(getString(R.string.show_next_video_key), true); |         showRelatedItems = prefs.getBoolean(getString(R.string.show_next_video_key), true); | ||||||
| @@ -1250,8 +1264,10 @@ public final class VideoDetailFragment | |||||||
|             // setup the surface view height, so that it fits the video correctly |             // setup the surface view height, so that it fits the video correctly | ||||||
|             setHeightThumbnail(); |             setHeightThumbnail(); | ||||||
|  |  | ||||||
|             getLayoutInflater().inflate( |             final View v = getLayoutInflater().inflate( | ||||||
|                     R.layout.fragment_newplayer_view, binding.playerPlaceholder); |                     R.layout.fragment_newplayer_view, binding.playerPlaceholder); | ||||||
|  |             final NewPlayerView npv = v.findViewById(R.id.embedded_player_newplayer); | ||||||
|  |             npv.setViewModel(newPlayerViewModel); | ||||||
|  |  | ||||||
| //            player.UIs().get(MainPlayerUi.class).ifPresent(playerUi -> { | //            player.UIs().get(MainPlayerUi.class).ifPresent(playerUi -> { | ||||||
| //                // sometimes binding would be null here, even though getView() != null above u.u | //                // sometimes binding would be null here, even though getView() != null above u.u | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Profpatsch
					Profpatsch