KTp/Components/Chat Window/Plugin API Draft: Difference between revisions

From KDE Community Wiki
No edit summary
No edit summary
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{:KTp/Header}}
Making an API to create plugins for the chat window.  
Making an API to create plugins for the chat window.  
These should be able to handle the following usecases:  
These should be able to handle the following usecases:  
Line 6: Line 6:
*Grammar correction - a plugin that replaces "wont" with "won't" on messages to be sent
*Grammar correction - a plugin that replaces "wont" with "won't" on messages to be sent
*Youtube embed - embeds a youtube video in a chat
*Youtube embed - embeds a youtube video in a chat
The stakeholders (components) are as follows:
*UI - telepathy-kde-text-ui and chat-widget etc.
*Plugin Manager
*Plugin
*Core (Telepathy)
<nowiki><I'll upload the diagram for how they interact later></nowiki>
The interactions between the components:
*Plugin Manager and Plugin
**Process Message
**Return Message
**Initialize
**Loading
**Destroy
**Send-Message //still not sure about this
*Plugin Manager and Ui
**Display Message
**Display Final Message
**Send New Message //to be processed BEFORE being sent
*Plugin Manager and Core
**New Message Received
**Send New Message
It will consist of the following classes
*Interface Class : ReceivingPlugin
**
**virtual methods:
***ProcessReceivedMessage(Message message);
**methods:
***PreProcessReceivedMessage(Message); maybe have method like this, which PluginManager will call, that will check that that message hasn't already been processed before calling ProcessReceivedMessage().
*Interface Class : SendingPlugin
**
*Plugin Manager - Every client that wants to use the plugin system will have a single, global, static instance of this.
**signal: displayMessage(bool final);
**slot: processAndSendNewMessage(QString message);
**slot: processReceivedMessage(Tp::Message message);
**QList<SendingPlugin>
**QList<ReceivingPlugin>
**

Latest revision as of 01:14, 10 November 2012

Project logo Welcome to the
KDE Telepathy Development Wiki
Current Version: 23.07.70

Open Hub project report for KDE Telepathy

Making an API to create plugins for the chat window. These should be able to handle the following usecases:

  • Translator plugin - when messages are sent or received, it will translate them before they are displayed (or actually sent)
  • Image Embed plugin - when a URL of an image is received, it will display the image under the text
  • Grammar correction - a plugin that replaces "wont" with "won't" on messages to be sent
  • Youtube embed - embeds a youtube video in a chat


The stakeholders (components) are as follows:

  • UI - telepathy-kde-text-ui and chat-widget etc.
  • Plugin Manager
  • Plugin
  • Core (Telepathy)

<I'll upload the diagram for how they interact later>

The interactions between the components:

  • Plugin Manager and Plugin
    • Process Message
    • Return Message
    • Initialize
    • Loading
    • Destroy
    • Send-Message //still not sure about this
  • Plugin Manager and Ui
    • Display Message
    • Display Final Message
    • Send New Message //to be processed BEFORE being sent
  • Plugin Manager and Core
    • New Message Received
    • Send New Message

It will consist of the following classes

  • Interface Class : ReceivingPlugin
    • virtual methods:
      • ProcessReceivedMessage(Message message);
    • methods:
      • PreProcessReceivedMessage(Message); maybe have method like this, which PluginManager will call, that will check that that message hasn't already been processed before calling ProcessReceivedMessage().
  • Interface Class : SendingPlugin
  • Plugin Manager - Every client that wants to use the plugin system will have a single, global, static instance of this.
    • signal: displayMessage(bool final);
    • slot: processAndSendNewMessage(QString message);
    • slot: processReceivedMessage(Tp::Message message);
    • QList<SendingPlugin>
    • QList<ReceivingPlugin>