Connection Manager Developer's Reference - TelepathyIM/telepathy-qt GitHub Wiki
Reference project layout:
cmake/modules/Find<Libname>.cmake
rpm/telepathy-<name>.spec
src/<name>.manager
src/CMakeLists.txt
src/connection.cpp
src/connection.hpp
src/dbus-service.in
src/main.cpp
src/protocol.cpp
src/protocol.hpp
CMakeLists.txt
README.md
COPYING
It is recommended to follow the KDE/Qt coding conventions.
A typical Connection class definition starts like this:
class <Name>Connection : public Tp::BaseConnection
{
Q_OBJECT
public:
<Name>Connection(const QDBusConnection &dbusConnection,
const QString &cmName, const QString &protocolName,
const QVariantMap ¶meters);
~<Name>Connection() override;
static Tp::AvatarSpec getAvatarSpec();
static Tp::SimpleStatusSpecMap getSimpleStatusSpecMap();
static Tp::RequestableChannelClassSpecList getRequestableChannelList();
void doConnect(Tp::DBusError *error);
void doDisconnect();
Tp::BaseChannelPtr createChannelCB(const QVariantMap &request, Tp::DBusError *error);
QStringList inspectHandles(uint handleType, const Tp::UIntList &handles, Tp::DBusError *error);
Tp::UIntList requestHandles(uint handleType, const QStringList &identifiers, Tp::DBusError *error);
Possible Connection Manager features (including trivial things):
- Contact presence
- Contact alias (first/last name)
- Contact avatars
- Contact info (names, phone)
- Text messaging (1-1 chat)
- Text messaging (group chat)
- Chat state (typing status)
- File Transfers
- Registration (a user can create a new account via Telepathy)
- An option to add a contact
- An option to create a group chat
- An option to set own avatar
- An option to set own alias
- An option to set own contact info