void CGUIWindowPictures::OnInfo(int itemNumber) { CFileItemPtr item = (itemNumber >= 0 && itemNumber < m_vecItems->Size()) ? m_vecItems->Get(itemNumber) : CFileItemPtr(); if (!item || item->m_bIsFolder || item->IsZIP() || item->IsRAR() || item->IsCBZ() || item->IsCBR() || !item->IsPicture()) return; CGUIDialogPictureInfo *pictureInfo = (CGUIDialogPictureInfo *)g_windowManager.GetWindow(WINDOW_DIALOG_PICTURE_INFO); if (pictureInfo) { pictureInfo->SetPicture(item.get()); pictureInfo->DoModal(); } }
void CGUIWindowPictures::OnInfo(int itemNumber) { CFileItemPtr item = (itemNumber >= 0 && itemNumber < m_vecItems->Size()) ? m_vecItems->Get(itemNumber) : CFileItemPtr(); if (!item) return; if (!m_vecItems->IsPlugin() && (item->IsPlugin() || item->IsScript())) { CGUIDialogAddonInfo::ShowForItem(item); return; } if (item->m_bIsFolder || item->IsZIP() || item->IsRAR() || item->IsCBZ() || item->IsCBR() || !item->IsPicture()) return; CGUIDialogPictureInfo *pictureInfo = (CGUIDialogPictureInfo *)g_windowManager.GetWindow(WINDOW_DIALOG_PICTURE_INFO); if (pictureInfo) { pictureInfo->SetPicture(item.get()); pictureInfo->Open(); } }
void CGUIWindowPictures::OnItemInfo(int itemNumber) { CFileItemPtr item = m_vecItems->Get(itemNumber); if (!item) return; if (!m_vecItems->IsPlugin() && (item->IsPlugin() || item->IsScript())) { CGUIDialogAddonInfo::ShowForItem(item); return; } if (item->m_bIsFolder || item->IsZIP() || item->IsRAR() || item->IsCBZ() || item->IsCBR() || !item->IsPicture()) return; CGUIDialogPictureInfo *pictureInfo = CServiceBroker::GetGUI()->GetWindowManager().GetWindow<CGUIDialogPictureInfo>(WINDOW_DIALOG_PICTURE_INFO); if (pictureInfo) { pictureInfo->SetPicture(item.get()); pictureInfo->Open(); } }
bool CGUIWindowSlideShow::OnAction(const CAction &action) { switch (action.GetID()) { case ACTION_SHOW_INFO: { CGUIDialogPictureInfo *pictureInfo = (CGUIDialogPictureInfo *)g_windowManager.GetWindow(WINDOW_DIALOG_PICTURE_INFO); if (pictureInfo) { // no need to set the picture here, it's done in Render() pictureInfo->Open(); } } break; case ACTION_STOP: if (m_slides.size()) AnnouncePlayerStop(m_slides.at(m_iCurrentSlide)); if (g_application.m_pPlayer->IsPlayingVideo()) g_application.m_pPlayer->CloseFile(); Close(); break; case ACTION_NEXT_PICTURE: ShowNext(); break; case ACTION_PREV_PICTURE: ShowPrevious(); break; case ACTION_MOVE_RIGHT: if (m_iZoomFactor == 1 || !m_Image[m_iCurrentPic].m_bCanMoveHorizontally) ShowNext(); else Move(PICTURE_MOVE_AMOUNT, 0); break; case ACTION_MOVE_LEFT: if (m_iZoomFactor == 1 || !m_Image[m_iCurrentPic].m_bCanMoveHorizontally) ShowPrevious(); else Move( -PICTURE_MOVE_AMOUNT, 0); break; case ACTION_MOVE_DOWN: Move(0, PICTURE_MOVE_AMOUNT); break; case ACTION_MOVE_UP: Move(0, -PICTURE_MOVE_AMOUNT); break; case ACTION_PAUSE: case ACTION_PLAYER_PLAY: if (m_slides.size() == 0) break; if (m_slides.at(m_iCurrentSlide)->IsVideo()) { if (!m_bPlayingVideo) { if (m_bSlideShow) { SetDirection(1); m_bPause = false; } PlayVideo(); } } else if (!m_bSlideShow || m_bPause) { m_bSlideShow = true; m_bPause = false; SetDirection(1); if (m_Image[m_iCurrentPic].IsLoaded()) { CSlideShowPic::DISPLAY_EFFECT effect = GetDisplayEffect(m_iCurrentSlide); if (m_Image[m_iCurrentPic].DisplayEffectNeedChange(effect)) m_Image[m_iCurrentPic].Reset(effect); } AnnouncePlayerPlay(m_slides.at(m_iCurrentSlide)); } else if (action.GetID() == ACTION_PAUSE) { m_bPause = true; AnnouncePlayerPause(m_slides.at(m_iCurrentSlide)); } else if (m_iZoomFactor > 1) Zoom(1); //Back to normal zoom and continue slideshow break; case ACTION_ZOOM_OUT: Zoom(m_iZoomFactor - 1); break; case ACTION_ZOOM_IN: Zoom(m_iZoomFactor + 1); break; case ACTION_GESTURE_SWIPE_UP: case ACTION_GESTURE_SWIPE_DOWN: if (m_iZoomFactor == 1 || !m_Image[m_iCurrentPic].m_bCanMoveVertically) { bool swipeOnLeft = action.GetAmount() < g_graphicsContext.GetWidth() / 2.0f; bool swipeUp = action.GetID() == ACTION_GESTURE_SWIPE_UP; if (swipeUp == swipeOnLeft) Rotate(90.0f); else Rotate(-90.0f); } break; case ACTION_ROTATE_PICTURE_CW: Rotate(90.0f); break; case ACTION_ROTATE_PICTURE_CCW: Rotate(-90.0f); break; case ACTION_ZOOM_LEVEL_NORMAL: case ACTION_ZOOM_LEVEL_1: case ACTION_ZOOM_LEVEL_2: case ACTION_ZOOM_LEVEL_3: case ACTION_ZOOM_LEVEL_4: case ACTION_ZOOM_LEVEL_5: case ACTION_ZOOM_LEVEL_6: case ACTION_ZOOM_LEVEL_7: case ACTION_ZOOM_LEVEL_8: case ACTION_ZOOM_LEVEL_9: Zoom((action.GetID() - ACTION_ZOOM_LEVEL_NORMAL) + 1); break; case ACTION_ANALOG_MOVE: // this action is used and works, when CAction object provides both x and y coordinates Move(action.GetAmount()*PICTURE_MOVE_AMOUNT_ANALOG, -action.GetAmount(1)*PICTURE_MOVE_AMOUNT_ANALOG); break; case ACTION_ANALOG_MOVE_X: // this and following action are used and work, when CAction object provides either x of y coordinate Move(action.GetAmount()*PICTURE_MOVE_AMOUNT_ANALOG, 0.0f); break; case ACTION_ANALOG_MOVE_Y: Move(0.0f, action.GetAmount(0)*PICTURE_MOVE_AMOUNT_ANALOG); break; default: return CGUIDialog::OnAction(action); } return true; }
bool CGUIWindowSlideShow::OnAction(const CAction &action) { if (m_bScreensaver) { g_windowManager.PreviousWindow(); return true; } switch (action.GetID()) { case ACTION_SHOW_CODEC: { CGUIDialogPictureInfo *pictureInfo = (CGUIDialogPictureInfo *)g_windowManager.GetWindow(WINDOW_DIALOG_PICTURE_INFO); if (pictureInfo) { // no need to set the picture here, it's done in Render() pictureInfo->DoModal(); } } break; case ACTION_PREVIOUS_MENU: case ACTION_NAV_BACK: case ACTION_STOP: g_windowManager.PreviousWindow(); break; case ACTION_NEXT_PICTURE: // if (m_iZoomFactor == 1) ShowNext(); break; case ACTION_PREV_PICTURE: // if (m_iZoomFactor == 1) ShowPrevious(); break; case ACTION_MOVE_RIGHT: if (m_iZoomFactor == 1) ShowNext(); else Move(PICTURE_MOVE_AMOUNT, 0); break; case ACTION_MOVE_LEFT: if (m_iZoomFactor == 1) ShowPrevious(); else Move( -PICTURE_MOVE_AMOUNT, 0); break; case ACTION_MOVE_DOWN: Move(0, PICTURE_MOVE_AMOUNT); break; case ACTION_MOVE_UP: Move(0, -PICTURE_MOVE_AMOUNT); break; case ACTION_PAUSE: if (m_bSlideShow) m_bPause = !m_bPause; break; case ACTION_PLAYER_PLAY: if (!m_bSlideShow) { m_bSlideShow = true; m_bPause = false; } else if (m_bPause) m_bPause = false; break; case ACTION_ZOOM_OUT: Zoom(m_iZoomFactor - 1); break; case ACTION_ZOOM_IN: Zoom(m_iZoomFactor + 1); break; case ACTION_ROTATE_PICTURE: Rotate(); break; case ACTION_ZOOM_LEVEL_NORMAL: case ACTION_ZOOM_LEVEL_1: case ACTION_ZOOM_LEVEL_2: case ACTION_ZOOM_LEVEL_3: case ACTION_ZOOM_LEVEL_4: case ACTION_ZOOM_LEVEL_5: case ACTION_ZOOM_LEVEL_6: case ACTION_ZOOM_LEVEL_7: case ACTION_ZOOM_LEVEL_8: case ACTION_ZOOM_LEVEL_9: Zoom((action.GetID() - ACTION_ZOOM_LEVEL_NORMAL) + 1); break; case ACTION_ANALOG_MOVE: Move(action.GetAmount()*PICTURE_MOVE_AMOUNT_ANALOG, -action.GetAmount(1)*PICTURE_MOVE_AMOUNT_ANALOG); break; default: return CGUIWindow::OnAction(action); } return true; }
bool CGUIWindowSlideShow::OnAction(const CAction &action) { switch (action.GetID()) { case ACTION_SHOW_CODEC: { CGUIDialogPictureInfo *pictureInfo = (CGUIDialogPictureInfo *)g_windowManager.GetWindow(WINDOW_DIALOG_PICTURE_INFO); if (pictureInfo) { // no need to set the picture here, it's done in Render() pictureInfo->DoModal(); } } break; case ACTION_PREVIOUS_MENU: case ACTION_NAV_BACK: case ACTION_STOP: if (m_slides->Size()) AnnouncePlayerStop(m_slides->Get(m_iCurrentSlide)); g_windowManager.PreviousWindow(); break; case ACTION_NEXT_PICTURE: ShowNext(); break; case ACTION_PREV_PICTURE: ShowPrevious(); break; case ACTION_MOVE_RIGHT: if (m_iZoomFactor == 1 || !m_Image[m_iCurrentPic].m_bCanMoveHorizontally) ShowNext(); else Move(PICTURE_MOVE_AMOUNT, 0); break; case ACTION_MOVE_LEFT: if (m_iZoomFactor == 1 || !m_Image[m_iCurrentPic].m_bCanMoveHorizontally) ShowPrevious(); else Move( -PICTURE_MOVE_AMOUNT, 0); break; case ACTION_MOVE_DOWN: Move(0, PICTURE_MOVE_AMOUNT); break; case ACTION_MOVE_UP: Move(0, -PICTURE_MOVE_AMOUNT); break; case ACTION_PAUSE: if (m_bSlideShow) { m_bPause = !m_bPause; if (m_slides->Size()) { if (m_bPause) AnnouncePlayerPause(m_slides->Get(m_iCurrentSlide)); else AnnouncePlayerPlay(m_slides->Get(m_iCurrentSlide)); } } break; case ACTION_PLAYER_PLAY: if (!m_bSlideShow) { m_bSlideShow = true; m_bPause = false; } else if (m_bPause) { m_bPause = false; if (m_slides->Size()) AnnouncePlayerPlay(m_slides->Get(m_iCurrentSlide)); } break; case ACTION_ZOOM_OUT: Zoom(m_iZoomFactor - 1); break; case ACTION_ZOOM_IN: Zoom(m_iZoomFactor + 1); break; case ACTION_GESTURE_SWIPE_UP: case ACTION_GESTURE_SWIPE_DOWN: if (m_iZoomFactor == 1 || !m_Image[m_iCurrentPic].m_bCanMoveVertically) { bool swipeOnLeft = action.GetAmount() < g_graphicsContext.GetWidth() / 2; bool swipeUp = action.GetID() == ACTION_GESTURE_SWIPE_UP; if (swipeUp == swipeOnLeft) Rotate(90.0f); else Rotate(-90.0f); } break; case ACTION_ROTATE_PICTURE_CW: Rotate(90.0f); break; case ACTION_ROTATE_PICTURE_CCW: Rotate(-90.0f); break; case ACTION_ZOOM_LEVEL_NORMAL: case ACTION_ZOOM_LEVEL_1: case ACTION_ZOOM_LEVEL_2: case ACTION_ZOOM_LEVEL_3: case ACTION_ZOOM_LEVEL_4: case ACTION_ZOOM_LEVEL_5: case ACTION_ZOOM_LEVEL_6: case ACTION_ZOOM_LEVEL_7: case ACTION_ZOOM_LEVEL_8: case ACTION_ZOOM_LEVEL_9: Zoom((action.GetID() - ACTION_ZOOM_LEVEL_NORMAL) + 1); break; case ACTION_ANALOG_MOVE: Move(action.GetAmount()*PICTURE_MOVE_AMOUNT_ANALOG, -action.GetAmount(1)*PICTURE_MOVE_AMOUNT_ANALOG); break; default: return CGUIWindow::OnAction(action); } return true; }