added: Files node to the video library.
authorJonathan Marshall <jmarshall@never.you.mind>
Thu, 3 Feb 2011 01:46:41 +0000 (14:46 +1300)
committerJonathan Marshall <jmarshall@never.you.mind>
Tue, 8 Mar 2011 09:41:12 +0000 (22:41 +1300)
language/English/strings.xml
xbmc/video/GUIViewStateVideo.cpp
xbmc/video/windows/GUIWindowVideoNav.cpp

index 6698976..3570c7b 100644 (file)
   <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>
index d8cbc23..42b413a 100644 (file)
@@ -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();
 }
 
index 83d8ca5..55a7433 100644 (file)
@@ -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);
 }