aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--language/English/strings.xml2
-rw-r--r--xbmc/video/GUIViewStateVideo.cpp115
-rw-r--r--xbmc/video/windows/GUIWindowVideoNav.cpp10
3 files changed, 85 insertions, 42 deletions
diff --git a/language/English/strings.xml b/language/English/strings.xml
index 66989763da..3570c7b01e 100644
--- a/language/English/strings.xml
+++ b/language/English/strings.xml
@@ -706,6 +706,8 @@
<string id="851">Valid port range is 1-65535</string>
<string id="852">Valid port range is 1024-65535</string>
+ <string id="998">Add Music...</string>
+ <string id="999">Add Videos...</string>
<string id="1000">- Preview</string>
<string id="1001">Unable to connect</string>
<string id="1002">XBMC was unable to connect to the network location.</string>
diff --git a/xbmc/video/GUIViewStateVideo.cpp b/xbmc/video/GUIViewStateVideo.cpp
index d8cbc23561..42b413aa6f 100644
--- a/xbmc/video/GUIViewStateVideo.cpp
+++ b/xbmc/video/GUIViewStateVideo.cpp
@@ -340,46 +340,59 @@ CGUIViewStateWindowVideoNav::CGUIViewStateWindowVideoNav(const CFileItemList& it
}
else
{
- AddSortMethod(SORT_METHOD_LABEL, 551, LABEL_MASKS("%F", "%D", "%L", "")); // Filename, Duration | Foldername, empty
- SetSortMethod(SORT_METHOD_LABEL);
-
- SetViewAsControl(DEFAULT_VIEW_LIST);
-
+ if (g_guiSettings.GetBool("filelists.ignorethewhensorting"))
+ AddSortMethod(SORT_METHOD_LABEL_IGNORE_THE, 551, LABEL_MASKS("%L", "%I", "%L", "")); // FileName, Size | Foldername, empty
+ else
+ AddSortMethod(SORT_METHOD_LABEL, 551, LABEL_MASKS("%L", "%I", "%L", "")); // FileName, Size | Foldername, empty
+ AddSortMethod(SORT_METHOD_SIZE, 553, LABEL_MASKS("%L", "%I", "%L", "%I")); // FileName, Size | Foldername, Size
+ AddSortMethod(SORT_METHOD_DATE, 552, LABEL_MASKS("%L", "%J", "%L", "%J")); // FileName, Date | Foldername, Date
+ AddSortMethod(SORT_METHOD_FILE, 561, LABEL_MASKS("%L", "%I", "%L", "")); // Filename, Size | FolderName, empty
+
+ SetSortMethod(g_settings.m_viewStateVideoFiles.m_sortMethod);
+ SetViewAsControl(g_settings.m_viewStateVideoFiles.m_viewMode);
+ SetSortOrder(g_settings.m_viewStateVideoFiles.m_sortOrder);
}
LoadViewState(items.m_strPath, WINDOW_VIDEO_NAV);
}
void CGUIViewStateWindowVideoNav::SaveViewState()
{
- NODE_TYPE NodeType = CVideoDatabaseDirectory::GetDirectoryChildType(m_items.m_strPath);
- switch (NodeType)
+ if (m_items.IsVideoDb())
{
- case NODE_TYPE_ACTOR:
- SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavActors);
- break;
- case NODE_TYPE_YEAR:
- SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavYears);
- break;
- case NODE_TYPE_GENRE:
- SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavGenres);
- break;
- case NODE_TYPE_TITLE_MOVIES:
- SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavTitles);
- break;
- case NODE_TYPE_EPISODES:
- SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavEpisodes);
- break;
- case NODE_TYPE_TITLE_TVSHOWS:
- SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavTvShows);
- break;
- case NODE_TYPE_SEASONS:
- SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavSeasons);
- break;
- case NODE_TYPE_TITLE_MUSICVIDEOS:
- SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavMusicVideos);
- default:
- SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV);
- break;
+ NODE_TYPE NodeType = CVideoDatabaseDirectory::GetDirectoryChildType(m_items.m_strPath);
+ switch (NodeType)
+ {
+ case NODE_TYPE_ACTOR:
+ SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavActors);
+ break;
+ case NODE_TYPE_YEAR:
+ SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavYears);
+ break;
+ case NODE_TYPE_GENRE:
+ SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavGenres);
+ break;
+ case NODE_TYPE_TITLE_MOVIES:
+ SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavTitles);
+ break;
+ case NODE_TYPE_EPISODES:
+ SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavEpisodes);
+ break;
+ case NODE_TYPE_TITLE_TVSHOWS:
+ SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavTvShows);
+ break;
+ case NODE_TYPE_SEASONS:
+ SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavSeasons);
+ break;
+ case NODE_TYPE_TITLE_MUSICVIDEOS:
+ SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoNavMusicVideos);
+ default:
+ SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV);
+ break;
+ }
+ }
+ else
+ {
+ SaveViewToDb(m_items.m_strPath, WINDOW_VIDEO_NAV, &g_settings.m_viewStateVideoFiles);
}
}
@@ -401,14 +414,34 @@ VECSOURCES& CGUIViewStateWindowVideoNav::GetSources()
m_sources.push_back(share);
}
- // Playlists share
- CMediaSource share;
- share.strName=g_localizeStrings.Get(136); // Playlists
- share.strPath = "special://videoplaylists/";
- share.m_strThumbnailImage = CUtil::GetDefaultFolderThumb("DefaultVideoPlaylists.png");
- share.m_iDriveType = CMediaSource::SOURCE_TYPE_LOCAL;
- m_sources.push_back(share);
-
+ if (g_settings.GetSourcesFromType("video")->empty())
+ { // no sources - add the "Add Source" item
+ CMediaSource share;
+ share.strName=g_localizeStrings.Get(999); // "Add Videos"
+ share.strPath = "sources://add/";
+ share.m_strThumbnailImage = CUtil::GetDefaultFolderThumb("DefaultAddSource.png");
+ share.m_iDriveType = CMediaSource::SOURCE_TYPE_LOCAL;
+ m_sources.push_back(share);
+ }
+ else
+ {
+ { // Files share
+ CMediaSource share;
+ share.strName=g_localizeStrings.Get(744); // Files
+ share.strPath = "sources://video/";
+ share.m_strThumbnailImage = CUtil::GetDefaultFolderThumb("DefaultFolder.png");
+ share.m_iDriveType = CMediaSource::SOURCE_TYPE_LOCAL;
+ m_sources.push_back(share);
+ }
+ { // Playlists share
+ CMediaSource share;
+ share.strName=g_localizeStrings.Get(136); // Playlists
+ share.strPath = "special://videoplaylists/";
+ share.m_strThumbnailImage = CUtil::GetDefaultFolderThumb("DefaultVideoPlaylists.png");
+ share.m_iDriveType = CMediaSource::SOURCE_TYPE_LOCAL;
+ m_sources.push_back(share);
+ }
+ }
return CGUIViewStateWindowVideo::GetSources();
}
diff --git a/xbmc/video/windows/GUIWindowVideoNav.cpp b/xbmc/video/windows/GUIWindowVideoNav.cpp
index 83d8ca55d2..55a743310e 100644
--- a/xbmc/video/windows/GUIWindowVideoNav.cpp
+++ b/xbmc/video/windows/GUIWindowVideoNav.cpp
@@ -263,6 +263,8 @@ CStdString CGUIWindowVideoNav::GetQuickpathName(const CStdString& strPath) const
return "RecentlyAddedMusicVideos";
else if (strPath.Equals("special://videoplaylists/"))
return "Playlists";
+ else if (strPath.Equals("sources://video/"))
+ return "Files";
else
{
CLog::Log(LOGERROR, " CGUIWindowVideoNav::GetQuickpathName: Unknown parameter (%s)", strPath.c_str());
@@ -450,12 +452,16 @@ void CGUIWindowVideoNav::UpdateButtons()
CStdString strDummy;
URIUtils::Split(m_vecItems->m_strPath, strDummy, strLabel);
}
+ else if (m_vecItems->m_strPath.Equals("sources://video/"))
+ strLabel = g_localizeStrings.Get(744);
// everything else is from a videodb:// path
- else
+ else if (m_vecItems->IsVideoDb())
{
CVideoDatabaseDirectory dir;
dir.GetLabel(m_vecItems->m_strPath, strLabel);
}
+ else
+ strLabel = URIUtils::GetFileName(m_vecItems->m_strPath);
SET_CONTROL_LABEL(CONTROL_FILTER, strLabel);
@@ -1339,5 +1345,7 @@ CStdString CGUIWindowVideoNav::GetStartFolder(const CStdString &dir)
return "videodb://5/";
else if (dir.Equals("RecentlyAddedMusicVideos"))
return "videodb://6/";
+ else if (dir.Equals("Files"))
+ return "sources://video/";
return CGUIWindowVideoBase::GetStartFolder(dir);
}