Logo Search packages:      
Sourcecode: kmess version File versions


                          contactswidget.h  -  description
    begin                : Thu Jan 16 2003
    copyright            : (C) 2003 by Mike K. Bennett
    email                : mkb137b@hotmail.com

 *                                                                         *
 *   This program 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 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *


#include "contactframe.h"

#include "ui_contactswidget.h"

#include <QList>
#include <QScrollArea>

// Forward declarations
class ContactBase;
class ContactList;

class QBoxLayout;
class QDockWidget;

 * The widget in a chat that contains the little contact information frames.
 * @author Mike K. Bennett
 * @ingroup Chat
00044 class ContactsWidget : public QWidget, private Ui::ContactsWidget

    // The constructor
                               ContactsWidget( QWidget *parent = 0 );
    // The destructor
    virtual                   ~ContactsWidget();
    // A message was received from one of the contacts... notify its frame
    void                       messageReceived(const QString& handle);
    // Enable/disable the frames
    void                       setEnabled( bool isEnabled );
    // Connect the widget to a dock
    void                       setDockWidget( QDockWidget *dockWidget, Qt::DockWidgetArea initialArea );

  public slots: // Public slots
    // A contact was added to the contact list
    void                       contactAdded( Contact *contact );
    // A contact joined the chat
    void                       contactJoined( ContactBase* contact );
    // A contact left the chat
    void                       contactLeft  ( ContactBase*, bool isChatIdle );
    // A contact was removed from the contact list
    void                       contactRemoved( Contact *contact );
    // A contact is typing
    void                       contactTyping( ContactBase* contact );

  private slots:
    // The location of the parent dock widget has changed
    void                       slotLocationChanged( Qt::DockWidgetArea area );
    // The parent dock widget floating status has changed
    void                       slotTopLevelChanged( bool isTopLevel );
    // Update the user's display picture
    void                       slotUpdateDisplayPicture();

    // The user wants to add or remove a contact.
    void                       contactAdded( QString handle, bool isAdded );
    // The user wants to allow a contact to see hi/hers online status.
    void                       contactAllowed( QString handle );
    // Toggle blocked status for a contact
    void                       contactBlocked( QString handle, bool isBlocked );
    // The user wants to start private chat
    void                       startPrivateChat( const QString &handle );

  private: // Private methods
    // Return one new contact frame
    ContactFrame*              createContactFrame();
    // The user picture frame received an event
    bool                       eventFilter( QObject *obj, QEvent *event );
    // Get the most suitable frame size, depending on how many contacts are currently in chat with us
    ContactFrame::DisplayMode  getBestFrameMode();
    // Find the contact frame with the given handle
    ContactFrame*              getContactFrameByHandle(const QString& handle);

  private: // Private attributes
    // The list of frames contained in the widget
    QList<ContactFrame *>      contactFrames_;
    // the layout to put contact frames into
    QBoxLayout                *layout_;
    // Whether or not the widget was visible before being moved
    bool                       wasVisible_;


Generated by  Doxygen 1.6.0   Back to index