CUtil::SplitExecFunction(execString, function, parameters);
for (unsigned int i = 0; i < sizeof(commands)/sizeof(BUILT_IN); i++)
{
- if (function.CompareNoCase(commands[i].command) == 0 && (!commands[i].needsParameters || parameters.size()))
+ if (StringUtils::EqualsNoCase(function, commands[i].command) && (!commands[i].needsParameters || parameters.size()))
return true;
}
return false;
void CBuiltins::GetHelp(CStdString &help)
{
- help.Empty();
+ help.clear();
for (unsigned int i = 0; i < sizeof(commands)/sizeof(BUILT_IN); i++)
{
help += commands[i].command;
CStdString execute;
vector<CStdString> params;
CUtil::SplitExecFunction(execString, execute, params);
- execute.ToLower();
+ StringUtils::ToLower(execute);
CStdString parameter = params.size() ? params[0] : "";
CStdString strParameterCaseIntact = parameter;
if (params.size() >= 2)
sync = params[1].Equals("sync");
- if (!strSaveToPath.IsEmpty())
+ if (!strSaveToPath.empty())
{
if (CDirectory::Exists(strSaveToPath))
{
CStdString file = CUtil::GetNextFilename(URIUtils::AddFileToFolder(strSaveToPath, "screenshot%03d.png"), 999);
- if (!file.IsEmpty())
+ if (!file.empty())
{
CScreenShot::TakeScreenshot(file, sync);
}
{
// disable the screensaver
g_application.WakeUpScreenSaverAndDPMS();
-#if defined(TARGET_DARWIN_IOS)
- if (params[0].Equals("shutdownmenu"))
- CBuiltins::Execute("Quit");
-#endif
g_windowManager.ActivateWindow(iWindow, params, !execute.Equals("activatewindow"));
}
else
{
// disable the screensaver
g_application.WakeUpScreenSaverAndDPMS();
-#if defined(TARGET_DARWIN_IOS)
- if (params[0].Equals("shutdownmenu"))
- CBuiltins::Execute("Quit");
-#endif
vector<CStdString> dummy;
g_windowManager.ActivateWindow(iWindow, dummy, !execute.Equals("activatewindowandfocus"));
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)
{
- if (plugin->Provides(CPluginSource::VIDEO))
- cmd.Format("ActivateWindow(Video,plugin://%s,return)",params[0]);
- else if (plugin->Provides(CPluginSource::AUDIO))
- cmd.Format("ActivateWindow(Music,plugin://%s,return)",params[0]);
- else if (plugin->Provides(CPluginSource::EXECUTABLE))
- cmd.Format("ActivateWindow(Programs,plugin://%s,return)",params[0]);
- else if (plugin->Provides(CPluginSource::IMAGE))
- cmd.Format("ActivateWindow(Pictures,plugin://%s,return)",params[0]);
- else
- // Pass the script name (params[0]) and all the parameters
- // (params[1] ... params[x]) separated by a comma to RunPlugin
- cmd.Format("RunPlugin(%s)", StringUtils::JoinString(params, ","));
+ 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.Format("RunScript(%s)", StringUtils::JoinString(params, ","));
- 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
{
askToResume = false;
}
else if (StringUtils::StartsWithNoCase(params[i], "playoffset=")) {
- playOffset = atoi(params[i].Mid(11)) - 1;
+ playOffset = atoi(params[i].substr(11).c_str()) - 1;
item.SetProperty("playlist_starting_track", playOffset);
}
}
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
{
else if (params[i].Equals("pause"))
flags |= 8;
else if (StringUtils::StartsWithNoCase(params[i], "beginslide="))
- beginSlidePath = params[i].Mid(11);
+ beginSlidePath = params[i].substr(11);
}
}
if (parameter.size() == 14)
CLog::Log(LOGERROR,"PlayerControl(seekpercentage(n)) called with no argument");
else if (parameter.size() < 17) // arg must be at least "(N)"
- CLog::Log(LOGERROR,"PlayerControl(seekpercentage(n)) called with invalid argument: \"%s\"", parameter.Mid(14).c_str());
+ CLog::Log(LOGERROR,"PlayerControl(seekpercentage(n)) called with invalid argument: \"%s\"", parameter.substr(14).c_str());
else
{
// Don't bother checking the argument: an invalid arg will do seek(0)
- offset = parameter.Mid(15).TrimRight(")");
+ offset = parameter.substr(15);
+ StringUtils::TrimRight(offset, ")");
float offsetpercent = (float) atof(offset.c_str());
if (offsetpercent < 0 || offsetpercent > 100)
CLog::Log(LOGERROR,"PlayerControl(seekpercentage(n)) argument, %f, must be 0-100", offsetpercent);
context = PARTYMODECONTEXT_VIDEO;
else if (parameter.size() != 16 || !StringUtils::EndsWithNoCase(parameter, "music)"))
{
- strXspPath = parameter.Mid(10).TrimRight(")");
+ strXspPath = parameter.substr(10);
+ StringUtils::TrimRight(strXspPath, ")");
context = PARTYMODECONTEXT_UNKNOWN;
}
}
float seconds = 0;
if (params.size() > 2)
{
- if (params[2].Find(':') == -1)
+ if (params[2].find(':') == std::string::npos)
seconds = static_cast<float>(atoi(params[2].c_str())*60);
else
seconds = (float)StringUtils::TimeStringToSeconds(params[2]);
else
{ // check if shutdown is specified in particular, and get the time for it
CStdString strHeading;
- if (parameter.CompareNoCase("shutdowntimer") == 0)
+ if (StringUtils::EqualsNoCase(parameter, "shutdowntimer"))
strHeading = g_localizeStrings.Get(20145);
else
strHeading = g_localizeStrings.Get(13209);
for (unsigned int i = 3; i < params.size() ; i++)
{
// check "true" for backward comp
- if (params[i].CompareNoCase("true") == 0 || params[i].CompareNoCase("silent") == 0)
+ if (StringUtils::EqualsNoCase(params[i], "true") || StringUtils::EqualsNoCase(params[i], "silent"))
silent = true;
- else if (params[i].CompareNoCase("loop") == 0)
+ else if (StringUtils::EqualsNoCase(params[i], "loop"))
loop = true;
}
else if (execute.Equals("cancelalarm"))
{
bool silent = false;
- if (params.size() > 1 && params[1].CompareNoCase("true") == 0)
+ if (params.size() > 1 && StringUtils::EqualsNoCase(params[1], "true"))
silent = true;
g_alarmClock.Stop(params[0],silent);
}
{
#ifdef HAS_DVD_DRIVE
bool restart = false;
- if (params.size() > 0 && params[0].CompareNoCase("restart") == 0)
+ if (params.size() > 0 && StringUtils::EqualsNoCase(params[0], "restart"))
restart = true;
CAutorun::PlayDisc(g_mediaManager.GetDiscPath(), true, restart);
#endif
if (params.size() > 1)
{
int string = CSkinSettings::Get().TranslateBool(params[0]);
- CSkinSettings::Get().SetBool(string, params[1].CompareNoCase("true") == 0);
+ CSkinSettings::Get().SetBool(string, StringUtils::EqualsNoCase(params[1], "true"));
CSettings::Get().Save();
return 0;
}
// if browsing for addons, required param[1] is addontype string, with optional param[2]
// as contenttype string see IAddon.h & ADDON::TranslateXX
CStdString strMask = (params.size() > 1) ? params[1] : "";
- strMask.ToLower();
+ StringUtils::ToLower(strMask);
ADDON::TYPE type;
if ((type = TranslateType(strMask)) != ADDON_UNKNOWN)
{
url.SetFileName(strMask+"/");
localShares.clear();
CStdString content = (params.size() > 2) ? params[2] : "";
- content.ToLower();
+ StringUtils::ToLower(content);
url.SetPassword(content);
CStdString strMask;
if (type == ADDON_SCRIPT)
else if (execute.Equals("dialog.close") && params.size())
{
bool bForce = false;
- if (params.size() > 1 && params[1].CompareNoCase("true") == 0)
+ if (params.size() > 1 && StringUtils::EqualsNoCase(params[1], "true"))
bForce = true;
- if (params[0].CompareNoCase("all") == 0)
+ if (StringUtils::EqualsNoCase(params[0], "all"))
{
g_windowManager.CloseDialogs(bForce);
}
CStdString path;
VECSOURCES shares;
g_mediaManager.GetLocalDrives(shares);
+ g_mediaManager.GetNetworkLocations(shares);
+ g_mediaManager.GetRemovableDrives(shares);
bool singleFile;
bool thumbs=false;
bool actorThumbs=false;
if (params.size() > 2)
path=params[2];
- if (singleFile || !path.IsEmpty() ||
+ if (singleFile || !path.empty() ||
CGUIDialogFileBrowser::ShowAndGetDirectory(shares,
g_localizeStrings.Get(661), path, true))
{
{
CGUIMessage message(GUI_MSG_NOTIFY_ALL, g_windowManager.GetActiveWindow(), 0, GUI_MSG_UPDATE, 0);
message.SetStringParam(params[0]);
- if (params.size() > 1 && params[1].CompareNoCase("replace") == 0)
+ if (params.size() > 1 && StringUtils::EqualsNoCase(params[1], "replace"))
message.SetParam2(1); // reset the history
g_windowManager.SendMessage(message);
}
{
CApplicationMessenger::Get().StartAndroidActivity(params);
}
- else if (execute.Equals("SetStereoMode") && !parameter.IsEmpty())
+ else if (execute.Equals("SetStereoMode") && !parameter.empty())
{
CAction action = CStereoscopicsManager::Get().ConvertActionCommandToAction(execute, parameter);
if (action.GetID() != ACTION_NONE)