CLog::Log(LOGERROR, "XBMC.SlideShow called with empty parameter");
return -2;
}
+ std::string beginSlidePath;
// leave RecursiveSlideShow command as-is
unsigned int flags = 0;
if (execute.Equals("RecursiveSlideShow"))
flags |= 1;
- // SlideShow(dir[,recursive][,[not]random])
+ // SlideShow(dir[,recursive][,[not]random][,pause][,beginslide="/path/to/start/slide.jpg"])
+ // the beginslide value need be escaped (for '"' or '\' in it, by backslash)
+ // and then quoted, or not. See CUtil::SplitParams()
else
{
- if ((params.size() > 1 && params[1] == "recursive") || (params.size() > 2 && params[2] == "recursive"))
- flags |= 1;
- if ((params.size() > 1 && params[1] == "random") || (params.size() > 2 && params[2] == "random"))
- flags |= 2;
- if ((params.size() > 1 && params[1] == "notrandom") || (params.size() > 2 && params[2] == "notrandom"))
- flags |= 4;
+ for (unsigned int i = 1 ; i < params.size() ; i++)
+ {
+ if (params[i].Equals("recursive"))
+ flags |= 1;
+ else if (params[i].Equals("random")) // set fullscreen or windowed
+ flags |= 2;
+ else if (params[i].Equals("notrandom"))
+ flags |= 4;
+ else if (params[i].Equals("pause"))
+ flags |= 8;
+ else if (params[i].Left(11).Equals("beginslide="))
+ beginSlidePath = params[i].Mid(11);
+ }
}
CGUIMessage msg(GUI_MSG_START_SLIDESHOW, 0, 0, flags);
- msg.SetStringParam(params[0]);
+ vector<CStdString> strParams;
+ strParams.push_back(params[0]);
+ strParams.push_back(beginSlidePath);
+ msg.SetStringParams(strParams);
CGUIWindow *pWindow = g_windowManager.GetWindow(WINDOW_SLIDESHOW);
if (pWindow) pWindow->OnMessage(msg);
}
{
CStdString strFolder = message.GetStringParam();
unsigned int iParams = message.GetParam1();
+ std::string beginSlidePath = message.GetStringParam(1);
//decode params
bool bRecursive = false;
bool bRandom = false;
bool bNotRandom = false;
+ bool bPause = false;
if (iParams > 0)
{
if ((iParams & 1) == 1)
bRandom = true;
if ((iParams & 4) == 4)
bNotRandom = true;
+ if ((iParams & 8) == 8)
+ bPause = true;
}
- RunSlideShow(strFolder, bRecursive, bRandom, bNotRandom);
+ RunSlideShow(strFolder, bRecursive, bRandom, bNotRandom, SORT_METHOD_LABEL, SortOrderAscending, "", beginSlidePath, !bPause);
}
break;
void CGUIWindowSlideShow::RunSlideShow(const CStdString &strPath,
bool bRecursive /* = false */, bool bRandom /* = false */,
bool bNotRandom /* = false */, SORT_METHOD method /* = SORT_METHOD_LABEL */,
- SortOrder order /* = SortOrderAscending */, const CStdString &strExtensions)
+ SortOrder order /* = SortOrderAscending */, const CStdString &strExtensions /* = "" */,
+ const CStdString &beginSlidePath /* = "" */, bool startSlideShow /* = true */)
{
// stop any video
if (g_application.IsPlayingVideo())
AddFromPath(strPath, bRecursive, method, order, strExtensions);
+ if (!NumSlides())
+ return;
+
// mutually exclusive options
// if both are set, clear both and use the gui setting
if (bRandom && bNotRandom)
if ((!bNotRandom && g_guiSettings.GetBool("slideshow.shuffle")) || bRandom)
Shuffle();
- StartSlideShow();
- if (NumSlides())
- g_windowManager.ActivateWindow(WINDOW_SLIDESHOW);
+ if (!beginSlidePath.IsEmpty())
+ Select(beginSlidePath);
+
+ if (startSlideShow)
+ StartSlideShow();
+ else
+ {
+ CVariant param;
+ param["player"]["speed"] = 0;
+ param["player"]["playerid"] = PLAYLIST_PICTURE;
+ ANNOUNCEMENT::CAnnouncementManager::Announce(ANNOUNCEMENT::Player, "xbmc", "OnPlay", GetCurrentSlide(), param);
+ }
+
+ g_windowManager.ActivateWindow(WINDOW_SLIDESHOW);
}
void CGUIWindowSlideShow::AddItems(const CStdString &strPath, path_set *recursivePaths, SORT_METHOD method, SortOrder order)
void RunSlideShow(const CStdString &strPath, bool bRecursive = false,
bool bRandom = false, bool bNotRandom = false,
SORT_METHOD method = SORT_METHOD_LABEL,
- SortOrder order = SortOrderAscending, const CStdString &strExtensions="");
+ SortOrder order = SortOrderAscending, const CStdString &strExtensions="",
+ const CStdString &beginSlidePath="", bool startSlideShow = true);
void AddFromPath(const CStdString &strPath, bool bRecursive,
SORT_METHOD method=SORT_METHOD_LABEL,
SortOrder order = SortOrderAscending, const CStdString &strExtensions="");