[python] add onDatabaseScanStarted to xbmc.Monitor() class
authoramet <amet.nospam@gmail.com>
Sun, 3 Feb 2013 19:05:14 +0000 (23:05 +0400)
committeramet <amet.nospam@gmail.com>
Sun, 3 Feb 2013 19:05:14 +0000 (23:05 +0400)
xbmc/interfaces/legacy/Monitor.h
xbmc/interfaces/python/XBPython.cpp
xbmc/interfaces/python/XBPython.h

index 33a2cf3..b1c17d8 100644 (file)
@@ -44,6 +44,7 @@ namespace XBMCAddon
       inline void    OnScreensaverActivated() { TRACE; invokeCallback(new CallbackFunction<Monitor>(this,&Monitor::onScreensaverActivated)); }
       inline void    OnScreensaverDeactivated() { TRACE; invokeCallback(new CallbackFunction<Monitor>(this,&Monitor::onScreensaverDeactivated)); }
       inline void    OnDatabaseUpdated(const String &database) { TRACE; invokeCallback(new CallbackFunction<Monitor,const String>(this,&Monitor::onDatabaseUpdated,database)); }
+      inline void    OnDatabaseScanStarted(const String &database) { TRACE; invokeCallback(new CallbackFunction<Monitor,const String>(this,&Monitor::onDatabaseScanStarted,database)); }
       inline void    OnAbortRequested() { TRACE; invokeCallback(new CallbackFunction<Monitor>(this,&Monitor::onAbortRequested)); }
 #endif
 
@@ -78,6 +79,15 @@ namespace XBMCAddon
       virtual void    onDatabaseUpdated(const String database) { TRACE; }
 
       /**
+       * onDatabaseScanStarted(database) -- onDatabaseScanStarted method.
+       *
+       * database - video/music as string
+       *
+       * Will be called when database update starts and return video or music to indicate which DB is being updated
+       */
+      virtual void    onDatabaseScanStarted(const String database) { TRACE; }
+      
+      /**
        * onAbortRequested() -- onAbortRequested method.
        * 
        * Will be called when XBMC requests Abort
index 500d5d7..c8a718e 100644 (file)
@@ -101,11 +101,15 @@ void XBPython::Announce(AnnouncementFlag flag, const char *sender, const char *m
   {
    if (strcmp(message, "OnScanFinished") == 0)
      OnDatabaseUpdated("video");
+   else if (strcmp(message, "OnScanStarted") == 0)
+     OnDatabaseScanStarted("video");
   }
   else if (flag & AudioLibrary)
   {
    if (strcmp(message, "OnScanFinished") == 0)
      OnDatabaseUpdated("music");
+   else if (strcmp(message, "OnScanStarted") == 0)
+     OnDatabaseScanStarted("music");
   }
   else if (flag & GUI)
   {
@@ -346,6 +350,21 @@ void XBPython::OnDatabaseUpdated(const std::string &database)
  }  
 } 
 
+void XBPython::OnDatabaseScanStarted(const std::string &database)
+{
+  TRACE;
+  CSingleLock lock(m_critSection);
+  if (m_bInitialized)
+  {
+    MonitorCallbackList::iterator it = m_vecMonitorCallbackList.begin();
+    while (it != m_vecMonitorCallbackList.end())
+    {
+      ((XBMCAddon::xbmc::Monitor*)(*it))->OnDatabaseScanStarted(database);
+      it++;
+    }
+  }  
+}
+
 void XBPython::OnAbortRequested(const CStdString &ID)
 {
   TRACE;
index 00d10a6..a914643 100644 (file)
@@ -79,6 +79,7 @@ public:
   void OnScreensaverActivated();
   void OnScreensaverDeactivated();
   void OnDatabaseUpdated(const std::string &database);
+  void OnDatabaseScanStarted(const std::string &database);
   void OnAbortRequested(const CStdString &ID="");
   void Initialize();
   void FinalizeScript();