#include "filesystem/PluginDirectory.h"
#include "filesystem/SpecialProtocol.h"
#include "guilib/GUIImage.h"
+#include "guilib/GUIKeyboardFactory.h"
+#include "guilib/Key.h"
#include "settings/MediaSettings.h"
#include "settings/Settings.h"
#include "settings/VideoSettings.h"
#define CONTROL_SUBSEXIST 130
#define CONTROL_SUBSTATUS 140
#define CONTROL_SERVICELIST 150
+#define CONTROL_MANUALSEARCH 160
/*! \brief simple job to retrieve a directory and store a string (language)
*/
bool CGUIDialogSubtitles::OnMessage(CGUIMessage& message)
{
- if (message.GetMessage() == GUI_MSG_CLICKED)
+ if (message.GetMessage() == GUI_MSG_CLICKED &&
+ (message.GetParam1() == ACTION_SELECT_ITEM ||
+ message.GetParam1() == ACTION_MOUSE_LEFT_CLICK))
{
int iControl = message.GetSenderId();
return true;
}
+ else if (iControl == CONTROL_MANUALSEARCH)
+ {
+ //manual search
+ if (CGUIKeyboardFactory::ShowAndGetInput(m_strManualSearch, g_localizeStrings.Get(24121), true))
+ {
+ Search(m_strManualSearch);
+ return true;
+ }
+ }
}
else if (message.GetMessage() == GUI_MSG_WINDOW_DEINIT)
{
}
std::string defaultService;
- const CFileItem &item = g_application.CurrentFileItem();
+ const CFileItem &item = g_application.CurrentUnstackedItem();
if (item.GetVideoContentType() == VIDEODB_CONTENT_TVSHOWS ||
item.GetVideoContentType() == VIDEODB_CONTENT_EPISODES)
// Set default service for tv shows
return CFileItemPtr();
}
-void CGUIDialogSubtitles::Search()
+void CGUIDialogSubtitles::Search(const std::string &search/*=""*/)
{
if (m_currentService.empty())
return; // no services available
ClearSubtitles();
CURL url("plugin://" + m_currentService + "/");
- url.SetOption("action", "search");
+ if (!search.empty())
+ {
+ url.SetOption("action", "manualsearch");
+ url.SetOption("searchstring", search);
+ }
+ else
+ url.SetOption("action", "search");
const CSetting *setting = CSettings::Get().GetSetting("subtitles.languages");
if (setting)
const CURL &url = ((CSubtitlesJob *)job)->GetURL();
const CFileItemList *items = ((CSubtitlesJob *)job)->GetItems();
const std::string &language = ((CSubtitlesJob *)job)->GetLanguage();
- if (url.GetOption("action") == "search")
+ if (url.GetOption("action") == "search" || url.GetOption("action") == "manualsearch")
OnSearchComplete(items);
else
OnDownloadComplete(items, language);
CStdString strFileName;
CStdString strDestPath;
+#if 0
+ // TODO: Code to download all subtitles for all stack items in one run
if (g_application.CurrentFileItem().IsStack())
{
for (int i = 0; i < items->Size(); i++)
// CLog::Log(LOGDEBUG, "Stack Subs [%s} Found", vecItems[i]->GetLabel().c_str());
}
}
- else if (StringUtils::StartsWith(g_application.CurrentFile(), "http://"))
+#endif
+
+ // Get (unstacked) path
+ const CStdString &strCurrentFile = g_application.CurrentUnstackedItem().GetPath();
+
+ if (StringUtils::StartsWith(strCurrentFile, "http://"))
{
strFileName = "TemporarySubs";
strDestPath = "special://temp/";
}
else
{
- strFileName = URIUtils::GetFileName(g_application.CurrentFile());
+ strFileName = URIUtils::GetFileName(strCurrentFile);
if (CSettings::Get().GetBool("subtitles.savetomoviefolder"))
{
- strDestPath = URIUtils::GetDirectory(g_application.CurrentFile());
+ strDestPath = URIUtils::GetDirectory(strCurrentFile);
if (!CUtil::SupportsWriteFileOperations(strDestPath))
strDestPath.clear();
}