Merge pull request #4676 from jmarshallnz/dont_set_scraper_on_tvshow_on_nfo
[vuplus_xbmc] / xbmc / addons / AddonCallbacks.cpp
1 /*
2  *      Copyright (C) 2012-2013 Team XBMC
3  *      http://xbmc.org
4  *
5  *  This Program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2, or (at your option)
8  *  any later version.
9  *
10  *  This Program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with XBMC; see the file COPYING.  If not, see
17  *  <http://www.gnu.org/licenses/>.
18  *
19  */
20
21 #include "Addon.h"
22 #include "AddonCallbacks.h"
23 #include "AddonCallbacksAddon.h"
24 #include "AddonCallbacksCodec.h"
25 #include "AddonCallbacksGUI.h"
26 #include "AddonCallbacksPVR.h"
27 #include "filesystem/SpecialProtocol.h"
28 #include "utils/log.h"
29
30 namespace ADDON
31 {
32
33 CAddonCallbacks::CAddonCallbacks(CAddon* addon)
34 {
35   m_addon       = addon;
36   m_callbacks   = new AddonCB;
37   m_helperAddon = NULL;
38   m_helperGUI   = NULL;
39   m_helperPVR   = NULL;
40   m_helperCODEC = NULL;
41
42   m_callbacks->libBasePath           = strdup(CSpecialProtocol::TranslatePath("special://xbmcbin/addons"));
43   m_callbacks->addonData             = this;
44   m_callbacks->AddOnLib_RegisterMe   = CAddonCallbacks::AddOnLib_RegisterMe;
45   m_callbacks->AddOnLib_UnRegisterMe = CAddonCallbacks::AddOnLib_UnRegisterMe;
46   m_callbacks->CODECLib_RegisterMe   = CAddonCallbacks::CODECLib_RegisterMe;
47   m_callbacks->CODECLib_UnRegisterMe = CAddonCallbacks::CODECLib_UnRegisterMe;
48   m_callbacks->GUILib_RegisterMe     = CAddonCallbacks::GUILib_RegisterMe;
49   m_callbacks->GUILib_UnRegisterMe   = CAddonCallbacks::GUILib_UnRegisterMe;
50   m_callbacks->PVRLib_RegisterMe     = CAddonCallbacks::PVRLib_RegisterMe;
51   m_callbacks->PVRLib_UnRegisterMe   = CAddonCallbacks::PVRLib_UnRegisterMe;
52 }
53
54 CAddonCallbacks::~CAddonCallbacks()
55 {
56   delete m_helperAddon;
57   m_helperAddon = NULL;
58   delete m_helperCODEC;
59   m_helperCODEC = NULL;
60   delete m_helperGUI;
61   m_helperGUI = NULL;
62   delete m_helperPVR;
63   m_helperPVR = NULL;
64   free((char*)m_callbacks->libBasePath);
65   delete m_callbacks;
66   m_callbacks = NULL;
67 }
68
69 CB_AddOnLib* CAddonCallbacks::AddOnLib_RegisterMe(void *addonData)
70 {
71   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
72   if (addon == NULL)
73   {
74     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
75     return NULL;
76   }
77
78   addon->m_helperAddon = new CAddonCallbacksAddon(addon->m_addon);
79   return addon->m_helperAddon->GetCallbacks();
80 }
81
82 void CAddonCallbacks::AddOnLib_UnRegisterMe(void *addonData, CB_AddOnLib *cbTable)
83 {
84   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
85   if (addon == NULL)
86   {
87     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
88     return;
89   }
90
91   delete addon->m_helperAddon;
92   addon->m_helperAddon = NULL;
93 }
94
95 CB_CODECLib* CAddonCallbacks::CODECLib_RegisterMe(void *addonData)
96 {
97   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
98   if (addon == NULL)
99   {
100     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
101     return NULL;
102   }
103
104   addon->m_helperCODEC = new CAddonCallbacksCodec(addon->m_addon);
105   return addon->m_helperCODEC->GetCallbacks();
106 }
107
108 void CAddonCallbacks::CODECLib_UnRegisterMe(void *addonData, CB_CODECLib *cbTable)
109 {
110   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
111   if (addon == NULL)
112   {
113     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
114     return;
115   }
116
117   delete addon->m_helperCODEC;
118   addon->m_helperCODEC = NULL;
119 }
120
121 CB_GUILib* CAddonCallbacks::GUILib_RegisterMe(void *addonData)
122 {
123   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
124   if (addon == NULL)
125   {
126     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
127     return NULL;
128   }
129
130   addon->m_helperGUI = new CAddonCallbacksGUI(addon->m_addon);
131   return addon->m_helperGUI->GetCallbacks();
132 }
133
134 void CAddonCallbacks::GUILib_UnRegisterMe(void *addonData, CB_GUILib *cbTable)
135 {
136   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
137   if (addon == NULL)
138   {
139     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
140     return;
141   }
142
143   delete addon->m_helperGUI;
144   addon->m_helperGUI = NULL;
145 }
146
147 CB_PVRLib* CAddonCallbacks::PVRLib_RegisterMe(void *addonData)
148 {
149   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
150   if (addon == NULL)
151   {
152     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
153     return NULL;
154   }
155
156   addon->m_helperPVR = new CAddonCallbacksPVR(addon->m_addon);
157   return addon->m_helperPVR->GetCallbacks();
158 }
159
160 void CAddonCallbacks::PVRLib_UnRegisterMe(void *addonData, CB_PVRLib *cbTable)
161 {
162   CAddonCallbacks* addon = (CAddonCallbacks*) addonData;
163   if (addon == NULL)
164   {
165     CLog::Log(LOGERROR, "CAddonCallbacks - %s - called with a null pointer", __FUNCTION__);
166     return;
167   }
168
169   delete addon->m_helperPVR;
170   addon->m_helperPVR = NULL;
171 }
172
173 }; /* namespace ADDON */