1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-10-04 01:22:04 +02:00
Files
tomahawk/src/accounts/xmpp/XmppAccount.cpp
2012-08-16 10:03:00 -04:00

137 lines
3.3 KiB
C++

/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* Copyright 2011, Leo Franchi <lfranchi@kde.org>
* Copyright 2010-2011, Jeff Mitchell <jeff@tomahawk-player.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "XmppAccount.h"
#include "XmppConfigWidget.h"
#include "sip/SipPlugin.h"
#include "XmppInfoPlugin.h"
#include <QtCore/QtPlugin>
namespace Tomahawk
{
namespace Accounts
{
Account*
XmppAccountFactory::createAccount( const QString& accountId )
{
return new XmppAccount( accountId.isEmpty() ? Tomahawk::Accounts::generateId( factoryId() ) : accountId );
}
XmppAccount::XmppAccount( const QString &accountId )
: Account( accountId )
{
setAccountServiceName( "Jabber (XMPP)" );
setTypes( SipType );
m_configWidget = QWeakPointer< QWidget >( new XmppConfigWidget( this, 0 ) );
}
XmppAccount::~XmppAccount()
{
delete m_xmppSipPlugin.data();
}
QPixmap
XmppAccount::icon() const
{
if ( connectionState() == Connected )
return QPixmap( ":/xmpp-icon.png" );
return QPixmap( ":/xmpp-offline-icon.png" );
}
void
XmppAccount::authenticate()
{
if ( connectionState() != Account::Connected )
sipPlugin()->connectPlugin();
}
void
XmppAccount::deauthenticate()
{
if ( connectionState() != Account::Disconnected )
sipPlugin()->disconnectPlugin();
}
bool
XmppAccount::isAuthenticated() const
{
return m_xmppSipPlugin.data()->connectionState() == Account::Connected;
}
Account::ConnectionState
XmppAccount::connectionState() const
{
if ( m_xmppSipPlugin.isNull() )
return Account::Disconnected;
return m_xmppSipPlugin.data()->connectionState();
}
void
XmppAccount::saveConfig()
{
if ( !m_configWidget.isNull() )
static_cast< XmppConfigWidget* >( m_configWidget.data() )->saveConfig();
}
InfoSystem::InfoPluginPtr
XmppAccount::infoPlugin()
{
if( !m_xmppSipPlugin.isNull() )
return m_xmppSipPlugin.data()->infoPlugin();
return InfoSystem::InfoPluginPtr();
}
SipPlugin*
XmppAccount::sipPlugin()
{
if ( m_xmppSipPlugin.isNull() )
{
m_xmppSipPlugin = QWeakPointer< XmppSipPlugin >( new XmppSipPlugin( this ) );
connect( m_xmppSipPlugin.data(), SIGNAL( stateChanged( Tomahawk::Accounts::Account::ConnectionState ) ), this, SIGNAL( connectionStateChanged( Tomahawk::Accounts::Account::ConnectionState ) ) );
connect( m_xmppSipPlugin.data(), SIGNAL( error( int, QString ) ), this, SIGNAL( error( int, QString ) ) );
return m_xmppSipPlugin.data();
}
return m_xmppSipPlugin.data();
}
}
}
#ifndef GOOGLE_WRAPPER
Q_EXPORT_PLUGIN2( Tomahawk::Accounts::AccountFactory, Tomahawk::Accounts::XmppAccountFactory )
#endif