| 77 | } |
| 78 | #include <QDebug> |
| 79 | void SideSlideAnimator::slideIn() |
| 80 | { |
| 81 | // |
| 82 | // Прерываем выполнение, если клиент хочет повторить его |
| 83 | // |
| 84 | if (isAnimated() && isAnimatedForward()) return; |
| 85 | setAnimatedForward(); |
| 86 | |
| 87 | // |
| 88 | // Прячем виджет для анимирования |
| 89 | // |
| 90 | widgetForSlide()->lower(); |
| 91 | widgetForSlide()->move(-widgetForSlide()->width(), -widgetForSlide()->height()); |
| 92 | widgetForSlide()->show(); |
| 93 | widgetForSlide()->resize(widgetForSlide()->sizeHint()); |
| 94 | |
| 95 | // |
| 96 | // Определим самый верхний виджет |
| 97 | // |
| 98 | QWidget* topWidget = widgetForSlide()->parentWidget(); |
| 99 | while (topWidget->parentWidget() != 0 && !topWidget->inherits("QDialog")) { |
| 100 | topWidget = topWidget->parentWidget(); |
| 101 | } |
| 102 | |
| 103 | // |
| 104 | // Определим финальный размер и положение выезжающего виджета |
| 105 | // |
| 106 | // TODO: скорректировать размер, если конфликтует с размером приложения |
| 107 | // |
| 108 | QSize finalSize = widgetForSlide()->size(); |
| 109 | QPoint startPosition, finalPosition; |
| 110 | switch (m_side) { |
| 111 | case WAF::LeftSide: { |
| 112 | finalSize.setHeight(topWidget->height()); |
| 113 | startPosition = QPoint(-finalSize.width(), 0); |
| 114 | finalPosition = QPoint(0, 0); |
| 115 | break; |
| 116 | } |
| 117 | |
| 118 | case WAF::TopSide: { |
| 119 | finalSize.setWidth(topWidget->width()); |
| 120 | startPosition = QPoint(0, -finalSize.height()); |
| 121 | finalPosition = QPoint(0, 0); |
| 122 | break; |
| 123 | } |
| 124 | |
| 125 | case WAF::RightSide: { |
| 126 | finalSize.setHeight(topWidget->height()); |
| 127 | startPosition = QPoint(topWidget->width(), 0); |
| 128 | finalPosition = QPoint(topWidget->width() - finalSize.width(), 0); |
| 129 | break; |
| 130 | } |
| 131 | |
| 132 | case WAF::BottomSide: { |
| 133 | finalSize.setWidth(topWidget->width()); |
| 134 | startPosition = QPoint(0, topWidget->height()); |
| 135 | finalPosition = QPoint(0, topWidget->height() - finalSize.height()); |
| 136 | break; |
nothing calls this directly
no test coverage detected