/*
- * Copyright (C) 2005-2008 Team XBMC
+ * Copyright (C) 2005-2012 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- * http://www.gnu.org/copyleft/gpl.html
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
*
*/
#include "threads/SystemClock.h"
#include "system.h"
#include "GUIWindowPictures.h"
+#include "URL.h"
#include "Util.h"
-#include "Picture.h"
#include "Application.h"
#include "GUIPassword.h"
#include "dialogs/GUIDialogMediaSource.h"
#include "GUIDialogPictureInfo.h"
+#include "addons/GUIDialogAddonInfo.h"
#include "dialogs/GUIDialogProgress.h"
#include "playlists/PlayListFactory.h"
#include "PictureInfoLoader.h"
#include "utils/log.h"
#include "utils/URIUtils.h"
#include "Autorun.h"
+#include "interfaces/AnnouncementManager.h"
#define CONTROL_BTNVIEWASICONS 2
#define CONTROL_BTNSORTBY 3
: CGUIMediaWindow(WINDOW_PICTURES, "MyPics.xml")
{
m_thumbLoader.SetObserver(this);
+ m_slideShowStarted = false;
+}
+
+void CGUIWindowPictures::OnInitWindow()
+{
+ CGUIMediaWindow::OnInitWindow();
+ if (m_slideShowStarted)
+ {
+ CGUIWindowSlideShow* wndw = (CGUIWindowSlideShow*)g_windowManager.GetWindow(WINDOW_SLIDESHOW);
+ CStdString path;
+ if (wndw && wndw->GetCurrentSlide())
+ URIUtils::GetDirectory(wndw->GetCurrentSlide()->GetPath(),path);
+ if (path.Equals(m_vecItems->GetPath()))
+ {
+ if (wndw && wndw->GetCurrentSlide())
+ m_viewControl.SetSelectedItem(wndw->GetCurrentSlide()->GetPath());
+ m_iSelectedItem = m_viewControl.GetSelectedItem();
+ }
+ m_slideShowStarted = false;
+ }
}
CGUIWindowPictures::~CGUIWindowPictures(void)
m_dlgProgress->Close();
}
-bool CGUIWindowPictures::Update(const CStdString &strDirectory)
+bool CGUIWindowPictures::Update(const CStdString &strDirectory, bool updateFilterPath /* = true */)
{
if (m_thumbLoader.IsLoading())
m_thumbLoader.StopThread();
- if (!CGUIMediaWindow::Update(strDirectory))
+ if (!CGUIMediaWindow::Update(strDirectory, updateFilterPath))
return false;
- m_vecItems->SetThumbnailImage("");
+ m_vecItems->SetArt("thumb", "");
if (g_guiSettings.GetBool("pictures.generatethumbs"))
m_thumbLoader.Load(*m_vecItems);
- m_vecItems->SetThumbnailImage(CPictureThumbLoader::GetCachedThumb(*m_vecItems));
+ m_vecItems->SetArt("thumb", CPictureThumbLoader::GetCachedImage(*m_vecItems, "thumb"));
return true;
}
if (startSlideShow)
pSlideShow->StartSlideShow(false);
+ else
+ {
+ CVariant param;
+ param["player"]["speed"] = 1;
+ param["player"]["playerid"] = PLAYLIST_PICTURE;
+ ANNOUNCEMENT::CAnnouncementManager::Announce(ANNOUNCEMENT::Player, "xbmc", "OnPlay", pSlideShow->GetCurrentSlide(), param);
+ }
+ m_slideShowStarted = true;
g_windowManager.ActivateWindow(WINDOW_SLIDESHOW);
return true;
m_guiState->GetSortMethod(),
m_guiState->GetSortOrder());
if (pSlideShow->NumSlides())
+ {
+ m_slideShowStarted = true;
g_windowManager.ActivateWindow(WINDOW_SLIDESHOW);
+ }
}
}
strExtensions = viewState->GetExtensions();
delete viewState;
}
+ m_slideShowStarted = true;
pSlideShow->RunSlideShow(strPicture, true,
g_guiSettings.GetBool("slideshow.shuffle"),false,
m_guiState->GetSortMethod(),
strExtensions = viewState->GetExtensions();
delete viewState;
}
+ m_slideShowStarted = true;
pSlideShow->RunSlideShow(strPicture, false ,false, false,
m_guiState->GetSortMethod(),
m_guiState->GetSortOrder(),
}
else
{
- if (item)
+ if (item && !item->GetPath().Left(14).Equals("addons://more/"))
{
- if (!(item->m_bIsFolder || item->IsZIP() || item->IsRAR() || item->IsCBZ() || item->IsCBR()))
+ if (!m_vecItems->IsPlugin() && (item->IsPlugin() || item->IsScript()))
+ buttons.Add(CONTEXT_BUTTON_INFO, 24003); // Add-on info
+ if (!(item->m_bIsFolder || item->IsZIP() || item->IsRAR() || item->IsCBZ() || item->IsCBR() || item->IsScript()))
+ {
buttons.Add(CONTEXT_BUTTON_INFO, 13406); // picture info
- buttons.Add(CONTEXT_BUTTON_VIEW_SLIDESHOW, item->m_bIsFolder ? 13317 : 13422); // View Slideshow
+ buttons.Add(CONTEXT_BUTTON_VIEW_SLIDESHOW, item->m_bIsFolder ? 13317 : 13422); // View Slideshow
+ }
if (item->m_bIsFolder)
buttons.Add(CONTEXT_BUTTON_RECURSIVE_SLIDESHOW, 13318); // Recursive Slideshow
if (item->IsPlugin() || item->IsScript() || m_vecItems->IsPlugin())
buttons.Add(CONTEXT_BUTTON_PLUGIN_SETTINGS, 1045);
-
- buttons.Add(CONTEXT_BUTTON_GOTO_ROOT, 20128);
- buttons.Add(CONTEXT_BUTTON_SWITCH_MEDIA, 523);
+ else
+ {
+ buttons.Add(CONTEXT_BUTTON_GOTO_ROOT, 20128);
+ buttons.Add(CONTEXT_BUTTON_SWITCH_MEDIA, 523);
+ }
}
}
CGUIMediaWindow::GetContextButtons(itemNumber, buttons);
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())
+ 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)