if (params.size())
{
AddonPtr addon;
- if (CAddonMgr::Get().GetAddon(params[0],addon) && addon)
+ CStdString cmd;
+ if (CAddonMgr::Get().GetAddon(params[0],addon,ADDON_PLUGIN))
{
PluginPtr plugin = boost::dynamic_pointer_cast<CPluginSource>(addon);
- CStdString cmd;
- if (plugin && addon->Type() == ADDON_PLUGIN)
+ CStdString addonid = params[0];
+ CStdString urlParameters;
+ CStdStringArray parameters;
+ if (params.size() == 2 &&
+ (StringUtils::StartsWith(params[1], "/") || StringUtils::StartsWith(params[1], "?")))
+ urlParameters = params[1];
+ else if (params.size() > 1)
{
- CStdString addonid = params[0];
- CStdString urlParameters;
- CStdStringArray parameters;
- if (params.size() == 2 &&
- (StringUtils::StartsWith(params[1], "/") || StringUtils::StartsWith(params[1], "?")))
- urlParameters = params[1];
- else if (params.size() > 1)
- {
- parameters.insert(parameters.begin(), params.begin() + 1, params.end());
- urlParameters = "?" + StringUtils::JoinString(parameters, "&");
- }
- else
- {
- // Add '/' if addon is run without params (will be removed later so it's safe)
- // Otherwise there are 2 entries for the same plugin in ViewModesX.db
- urlParameters = "/";
- }
-
- if (plugin->Provides(CPluginSource::VIDEO))
- cmd = StringUtils::Format("ActivateWindow(Videos,plugin://%s%s,return)", addonid.c_str(), urlParameters.c_str());
- else if (plugin->Provides(CPluginSource::AUDIO))
- cmd = StringUtils::Format("ActivateWindow(Music,plugin://%s%s,return)", addonid.c_str(), urlParameters.c_str());
- else if (plugin->Provides(CPluginSource::EXECUTABLE))
- cmd = StringUtils::Format("ActivateWindow(Programs,plugin://%s%s,return)", addonid.c_str(), urlParameters.c_str());
- else if (plugin->Provides(CPluginSource::IMAGE))
- cmd = StringUtils::Format("ActivateWindow(Pictures,plugin://%s%s,return)", addonid.c_str(), urlParameters.c_str());
- else
- // Pass the script name (params[0]) and all the parameters
- // (params[1] ... params[x]) separated by a comma to RunPlugin
- cmd = StringUtils::Format("RunPlugin(%s)", StringUtils::JoinString(params, ",").c_str());
+ parameters.insert(parameters.begin(), params.begin() + 1, params.end());
+ urlParameters = "?" + StringUtils::JoinString(parameters, "&");
+ }
+ else
+ {
+ // Add '/' if addon is run without params (will be removed later so it's safe)
+ // Otherwise there are 2 entries for the same plugin in ViewModesX.db
+ urlParameters = "/";
}
- else if (addon->Type() >= ADDON_SCRIPT && addon->Type() <= ADDON_SCRIPT_LYRICS)
- // Pass the script name (params[0]) and all the parameters
- // (params[1] ... params[x]) separated by a comma to RunScript
- cmd = StringUtils::Format("RunScript(%s)", StringUtils::JoinString(params, ",").c_str());
- return Execute(cmd);
+ if (plugin->Provides(CPluginSource::VIDEO))
+ cmd = StringUtils::Format("ActivateWindow(Videos,plugin://%s%s,return)", addonid.c_str(), urlParameters.c_str());
+ else if (plugin->Provides(CPluginSource::AUDIO))
+ cmd = StringUtils::Format("ActivateWindow(Music,plugin://%s%s,return)", addonid.c_str(), urlParameters.c_str());
+ else if (plugin->Provides(CPluginSource::EXECUTABLE))
+ cmd = StringUtils::Format("ActivateWindow(Programs,plugin://%s%s,return)", addonid.c_str(), urlParameters.c_str());
+ else if (plugin->Provides(CPluginSource::IMAGE))
+ cmd = StringUtils::Format("ActivateWindow(Pictures,plugin://%s%s,return)", addonid.c_str(), urlParameters.c_str());
+ else
+ // Pass the script name (params[0]) and all the parameters
+ // (params[1] ... params[x]) separated by a comma to RunPlugin
+ cmd = StringUtils::Format("RunPlugin(%s)", StringUtils::JoinString(params, ",").c_str());
}
+ else if (CAddonMgr::Get().GetAddon(params[0], addon, ADDON_SCRIPT) ||
+ CAddonMgr::Get().GetAddon(params[0], addon, ADDON_SCRIPT_WEATHER) ||
+ CAddonMgr::Get().GetAddon(params[0], addon, ADDON_SCRIPT_LYRICS))
+ // Pass the script name (params[0]) and all the parameters
+ // (params[1] ... params[x]) separated by a comma to RunScript
+ cmd = StringUtils::Format("RunScript(%s)", StringUtils::JoinString(params, ",").c_str());
+
+ return Execute(cmd);
}
else
{
CFileItemList items;
CStdString extensions = g_advancedSettings.m_videoExtensions + "|" + g_advancedSettings.m_musicExtensions;
CDirectory::GetDirectory(item.GetPath(),items,extensions);
-
+
bool containsMusic = false, containsVideo = false;
for (int i = 0; i < items.Size(); i++)
{
if (containsMusic && containsVideo)
break;
}
-
+
+ CGUIViewState *state = CGUIViewState::GetViewState(containsVideo ? WINDOW_VIDEO_NAV : WINDOW_MUSIC, items);
+ if (state)
+ items.Sort(state->GetSortMethod());
+ else
+ items.Sort(SortByLabel, SortOrderAscending);
+
int playlist = containsVideo? PLAYLIST_VIDEO : PLAYLIST_MUSIC;;
if (containsMusic && containsVideo) //mixed content found in the folder
{