mirror of
https://github.com/283375/arcaea-offline-pyside-ui.git
synced 2025-04-21 10:10:17 +00:00
48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
from PySide6.QtWidgets import QWidget
|
|
|
|
from ui.navigation.navhost import NavHost, navHost
|
|
from ui.navigation.navitem import NavItem
|
|
from ui.navigation.navitemwidgets import NavItemWidgets
|
|
from ui.widgets.slidingstackedwidget import SlidingStackedWidget
|
|
|
|
|
|
class AnimatedStackedNavItemsWidgets(SlidingStackedWidget):
|
|
def __init__(
|
|
self, navItemWidgets: NavItemWidgets, navHost: NavHost = navHost, parent=None
|
|
):
|
|
super().__init__(parent)
|
|
|
|
self.navItemWidgets = navItemWidgets
|
|
self.navHost = navHost
|
|
|
|
self.navHost.activated.connect(self.__switchTo)
|
|
self.animationFinished.connect(self.endChangingWidget)
|
|
|
|
def __switchTo(self, oldNavItem: NavItem, newNavItem: NavItem):
|
|
oldNavItemDepth = self.navHost.getNavItemDepth(oldNavItem.id)
|
|
newNavItemDepth = self.navHost.getNavItemDepth(newNavItem.id)
|
|
|
|
if oldNavItemDepth != newNavItemDepth:
|
|
slidingDirection = (
|
|
self.slidingDirection.RightToLeft
|
|
if newNavItemDepth > oldNavItemDepth
|
|
else self.slidingDirection.LeftToRight
|
|
)
|
|
else:
|
|
slidingDirection = self.slidingDirection.TopToBottom
|
|
|
|
newWidget = self.navItemWidgets.get(newNavItem.id) or QWidget()
|
|
self.startChangingWidget(newWidget, slidingDirection)
|
|
|
|
def startChangingWidget(self, newWidget: QWidget, slidingDirection):
|
|
newIndex = self.addWidget(newWidget)
|
|
[self.widget(i).setEnabled(False) for i in range(self.count())]
|
|
self.slideInIdx(newIndex, slidingDirection)
|
|
|
|
def endChangingWidget(self):
|
|
oldWidget = self.widget(0)
|
|
self.removeWidget(oldWidget)
|
|
|
|
newWidget = self.widget(0)
|
|
newWidget.setEnabled(True)
|