diff options
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | TelepathyQt4Yell/CMakeLists.txt | 3 | ||||
-rw-r--r-- | TelepathyQt4Yell/ConnectionCapabilities | 13 | ||||
-rw-r--r-- | TelepathyQt4Yell/connection-capabilities.cpp | 152 | ||||
-rw-r--r-- | TelepathyQt4Yell/connection-capabilities.h | 61 |
5 files changed, 231 insertions, 1 deletions
@@ -3,9 +3,10 @@ telepathy-qt4-yell 0.1.x Enhancements: * All model classes, with the exception of the conversation-related classes, have been removed from the repository + * Added id and presence roles to conversation model Fixes: - * + * telepathy-qt4-yell 0.1.6 (2011-06-06) ====================================== diff --git a/TelepathyQt4Yell/CMakeLists.txt b/TelepathyQt4Yell/CMakeLists.txt index 3f0be28..9547e1e 100644 --- a/TelepathyQt4Yell/CMakeLists.txt +++ b/TelepathyQt4Yell/CMakeLists.txt @@ -14,6 +14,7 @@ set(telepathy_qt4_yell_SRCS channel.cpp channel-class-spec.cpp channel-factory.cpp + connection-capabilities.cpp contact-capabilities.cpp requestable-channel-class-spec.cpp types.cpp) @@ -27,6 +28,7 @@ set(telepathy_qt4_yell_HEADERS ChannelClassSpec ChannelFactory ChannelInterfaceCredentialsStorageInterface + ConnectionCapabilities Constants ContactCapabilities Global @@ -37,6 +39,7 @@ set(telepathy_qt4_yell_HEADERS channel.h channel-class-spec.h channel-factory.h + connection-capabilities.h constants.h contact-capabilities.h global.h diff --git a/TelepathyQt4Yell/ConnectionCapabilities b/TelepathyQt4Yell/ConnectionCapabilities new file mode 100644 index 0000000..b028843 --- /dev/null +++ b/TelepathyQt4Yell/ConnectionCapabilities @@ -0,0 +1,13 @@ +#ifndef _TelepathyQt4Yell_ConnectionCapabilities_HEADER_GUARD_ +#define _TelepathyQt4Yell_ConnectionCapabilities_HEADER_GUARD_ + +#ifndef IN_TELEPATHY_QT4_YELL_HEADER +#define IN_TELEPATHY_QT4_YELL_HEADER +#endif + +#include <TelepathyQt4Yell/connection-capabilities.h> + +#undef IN_TELEPATHY_QT4_YELL_HEADER + +#endif +// vim:set ft=cpp: diff --git a/TelepathyQt4Yell/connection-capabilities.cpp b/TelepathyQt4Yell/connection-capabilities.cpp new file mode 100644 index 0000000..5678507 --- /dev/null +++ b/TelepathyQt4Yell/connection-capabilities.cpp @@ -0,0 +1,152 @@ +/** + * This file is part of TelepathyQt4Yell + * + * @copyright Copyright (C) 2011 Collabora Ltd. <http://www.collabora.co.uk/> + * @license LGPL 2.1 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <TelepathyQt4Yell/Constants> +#include <TelepathyQt4Yell/ConnectionCapabilities> +#include <TelepathyQt4Yell/RequestableChannelClassSpec> + +namespace Tpy +{ + +/** + * \class ConnectionCapabilities + * \ingroup clientconn + * \headerfile TelepathyQt4Yell/connection-capabilities.h <TelepathyQt4Yell/ConnectionCapabilities> + * + * \brief The ConnectionCapabilities class provides an object representing the + * capabilities of a Connection. + */ + +/** + * Construct a new ConnectionCapabilities object. + */ +ConnectionCapabilities::ConnectionCapabilities() + : Tp::ConnectionCapabilities() +{ +} + +/** + * Construct a new ConnectionCapabilities object using the give \a rccs. + * + * \param rccs RequestableChannelClassList representing the capabilities of a + * contact. + */ +ConnectionCapabilities::ConnectionCapabilities(const Tp::RequestableChannelClassList &rccs) + : Tp::ConnectionCapabilities(rccs) +{ +} + +/** + * Construct a new ConnectionCapabilities object using the give \a rccSpecs. + * + * \param rccSpecs RequestableChannelClassList representing the capabilities of a + * contact. + */ +ConnectionCapabilities::ConnectionCapabilities(const Tp::RequestableChannelClassSpecList &rccSpecs) + : Tp::ConnectionCapabilities(rccSpecs) +{ +} + +/** + * Construct a new ConnectionCapabilities object using the other \a rccSpecs. + * + * \param rccSpecs RequestableChannelClassList representing the capabilities of a + * contact. + */ +ConnectionCapabilities::ConnectionCapabilities(const Tp::ConnectionCapabilities &other) + : Tp::ConnectionCapabilities(other.allClassSpecs()) +{ +} + +/** + * Class destructor. + */ +ConnectionCapabilities::~ConnectionCapabilities() +{ +} + +bool ConnectionCapabilities::mediaCalls() const +{ + foreach (const Tp::RequestableChannelClassSpec &rccSpec, allClassSpecs()) { + if (rccSpec.supports(Tpy::RequestableChannelClassSpec::mediaCall())) { + return true; + } + } + return false; +} + +bool ConnectionCapabilities::audioCalls() const +{ + foreach (const Tp::RequestableChannelClassSpec &rccSpec, allClassSpecs()) { + if (rccSpec.supports(Tpy::RequestableChannelClassSpec::audioCallAllowed()) || + rccSpec.supports(Tpy::RequestableChannelClassSpec::audioCallFixed()) ) { + return true; + } + } + return false; +} + +bool ConnectionCapabilities::videoCalls() const +{ + foreach (const Tp::RequestableChannelClassSpec &rccSpec, allClassSpecs()) { + if (rccSpec.supports(Tpy::RequestableChannelClassSpec::videoCallAllowed()) || + rccSpec.supports(Tpy::RequestableChannelClassSpec::videoCallFixed())) { + return true; + } + } + return false; +} + +bool ConnectionCapabilities::videoCallsWithAudio() const +{ + foreach (const Tp::RequestableChannelClassSpec &rccSpec, allClassSpecs()) { + if (rccSpec.supports(Tpy::RequestableChannelClassSpec::videoCallAllowedWithAudioAllowed()) || + rccSpec.supports(Tpy::RequestableChannelClassSpec::videoCallAllowedWithAudioFixed()) || + rccSpec.supports(Tpy::RequestableChannelClassSpec::videoCallFixedWithAudioAllowed()) || + rccSpec.supports(Tpy::RequestableChannelClassSpec::videoCallFixedWithAudioFixed())) { + return true; + } + } + return false; +} + +bool ConnectionCapabilities::upgradingCalls() const +{ + foreach (const Tp::RequestableChannelClassSpec &rccSpec, allClassSpecs()) { + if (rccSpec.channelType() == TP_QT4_YELL_IFACE_CHANNEL_TYPE_CALL && + rccSpec.allowsProperty(TP_QT4_YELL_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".MutableContents"))) { + return true; + } + } + return false; +} + +bool ConnectionCapabilities::fileTransfers() const +{ + foreach (const Tp::RequestableChannelClassSpec &rccSpec, allClassSpecs()) { + if (rccSpec.supports(Tp::RequestableChannelClassSpec::fileTransfer())) { + return true; + } + } + return false; +} + +} // Tpy diff --git a/TelepathyQt4Yell/connection-capabilities.h b/TelepathyQt4Yell/connection-capabilities.h new file mode 100644 index 0000000..568de37 --- /dev/null +++ b/TelepathyQt4Yell/connection-capabilities.h @@ -0,0 +1,61 @@ +/** + * This file is part of TelepathyQt4Yell + * + * @copyright Copyright (C) 2011 Collabora Ltd. <http://www.collabora.co.uk/> + * @license LGPL 2.1 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef _TelepathyQt4Yell_connection_capabilities_h_HEADER_GUARD_ +#define _TelepathyQt4Yell_connection_capabilities_h_HEADER_GUARD_ + +#ifndef IN_TELEPATHY_QT4_YELL_HEADER +#error IN_TELEPATHY_QT4_YELL_HEADER +#endif + +#include <TelepathyQt4/ConnectionCapabilities> +#include <TelepathyQt4/Types> +#include <TelepathyQt4Yell/Types> + +namespace Tpy +{ + +class TELEPATHY_QT4_YELL_EXPORT ConnectionCapabilities : public Tp::ConnectionCapabilities +{ +public: + ConnectionCapabilities(); + ConnectionCapabilities(const Tp::ConnectionCapabilities &other); + virtual ~ConnectionCapabilities(); + + bool mediaCalls() const; + bool audioCalls() const; + bool videoCalls() const; + bool videoCallsWithAudio() const; + bool upgradingCalls() const; + bool fileTransfers() const; + +protected: + friend class AccountsModelItem; + + ConnectionCapabilities(const Tp::RequestableChannelClassList &rccs); + ConnectionCapabilities(const Tp::RequestableChannelClassSpecList &rccSpecs); +}; + +} // Tpy + +Q_DECLARE_METATYPE(Tpy::ConnectionCapabilities); + +#endif |