]> git.sesse.net Git - vlc/blob - modules/gui/qt4/managers/addons_manager.cpp
Qt: remove unneeded margins and parameters
[vlc] / modules / gui / qt4 / managers / addons_manager.cpp
1 /*****************************************************************************
2  * addons_manager.cpp: Addons manager for Qt
3  ****************************************************************************
4  * Copyright (C) 2013 VideoLAN and authors
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19  *****************************************************************************/
20
21 #include "addons_manager.hpp"
22 #include <QApplication>
23
24 const QEvent::Type AddonManagerEvent::AddedEvent =
25         (QEvent::Type)QEvent::registerEventType();
26 const QEvent::Type AddonManagerEvent::ChangedEvent =
27         (QEvent::Type)QEvent::registerEventType();
28 const QEvent::Type AddonManagerEvent::DiscoveryEndedEvent =
29         (QEvent::Type)QEvent::registerEventType();
30
31 AddonsManager::AddonsManager( intf_thread_t *p_intf )
32 {
33     p_manager = addons_manager_New( VLC_OBJECT(p_intf) );
34     if ( !p_manager ) return;
35
36     vlc_event_manager_t *p_em = p_manager->p_event_manager;
37     vlc_event_attach( p_em, vlc_AddonFound, addonsEventsCallback, this );
38     vlc_event_attach( p_em, vlc_AddonsDiscoveryEnded, addonsEventsCallback, this );
39     vlc_event_attach( p_em, vlc_AddonChanged, addonsEventsCallback, this );
40 }
41
42 AddonsManager::~AddonsManager()
43 {
44     if ( p_manager )
45         addons_manager_Delete( p_manager );
46 }
47
48 void AddonsManager::findNewAddons()
49 {
50     addons_manager_Gather( p_manager, "repo://" );
51 }
52
53 void AddonsManager::findDesignatedAddon( QString uri )
54 {
55     addons_manager_Gather( p_manager, qtu(uri) );
56 }
57
58 void AddonsManager::findInstalled()
59 {
60     addons_manager_LoadCatalog( p_manager );
61 }
62
63 void AddonsManager::install( QByteArray id )
64 {
65     Q_ASSERT( id.size() == sizeof(addon_uuid_t) );
66     addon_uuid_t addonid;
67     memcpy( &addonid, id.constData(), sizeof(addon_uuid_t) );
68     addons_manager_Install( p_manager, addonid );
69 }
70
71 void AddonsManager::remove( QByteArray id )
72 {
73     Q_ASSERT( id.size() == sizeof(addon_uuid_t) );
74     addon_uuid_t addonid;
75     memcpy( &addonid, id.constData(), sizeof(addon_uuid_t) );
76     addons_manager_Remove( p_manager, addonid );
77 }
78
79 QString AddonsManager::getAddonType( int i_type )
80 {
81     switch ( i_type )
82     {
83     case ADDON_SKIN2:
84         return qtr( "Skins" );
85     case ADDON_PLAYLIST_PARSER:
86         return qtr("Playlist parsers");
87     case ADDON_SERVICE_DISCOVERY:
88         return qtr("Service Discovery");
89     case ADDON_EXTENSION:
90         return qtr("Extensions");
91     default:
92         return qtr("Unknown");
93     }
94 }
95
96 void AddonsManager::addonsEventsCallback( const vlc_event_t *event, void *data )
97 {
98     AddonsManager *me = ( AddonsManager * ) data;
99     QEvent *ev = NULL;
100
101     if ( event->type == vlc_AddonFound )
102     {
103         ev = new AddonManagerEvent( AddonManagerEvent::AddedEvent,
104                                     event->u.addon_generic_event.p_entry );
105     }
106     else if ( event->type == vlc_AddonsDiscoveryEnded )
107     {
108         ev = new QEvent( AddonManagerEvent::DiscoveryEndedEvent );
109     }
110     else if ( event->type == vlc_AddonChanged )
111     {
112         ev = new AddonManagerEvent( AddonManagerEvent::ChangedEvent,
113                                     event->u.addon_generic_event.p_entry );
114     }
115
116     if ( ev ) QApplication::postEvent( me, ev );
117 }
118
119 void AddonsManager::customEvent( QEvent *event )
120 {
121     if ( event->type() == AddonManagerEvent::AddedEvent )
122     {
123         AddonManagerEvent *ev = static_cast<AddonManagerEvent *>(event);
124         emit addonAdded( ev->entry() );
125     }
126     else if ( event->type() == AddonManagerEvent::ChangedEvent )
127     {
128         AddonManagerEvent *ev = static_cast<AddonManagerEvent *>(event);
129         emit addonChanged( ev->entry() );
130     }
131     else if ( event->type() == AddonManagerEvent::DiscoveryEndedEvent )
132     {
133         emit discoveryEnded();
134     }
135 }