defuze.me  Client
status.cpp
00001 /**************************************************************************
00002 ** defuze.me Epitech Innovative Project
00003 **
00004 ** Copyright 2010-2011
00005 **   Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard
00006 **   Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier
00007 **
00008 ** All rights reserved.
00009 **************************************************************************/
00010 
00011 #include "status.hpp"
00012 
00013 using namespace Notification;
00014 
00015 Status  *Status::instance = 0;
00016 QList<QPair<QString, QString> > Status::waitList;
00017 
00018 Status::Status() : lastMessage(0)
00019 {
00020     instance = this;
00021     widget = new StatusWidget(this);
00022     uiModule = Gui::ModuleFactory::create("Status", QPoint(2, 1), widget);
00023     uiModule->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
00024     uiModule->submitForDisplay();
00025     connect(this, SIGNAL(forwardMessage(QString,QString)), SLOT(message(QString,QString)));
00026     while (!waitList.empty())
00027     {
00028         QPair<QString, QString> &elem = waitList.first();
00029         emit forwardMessage(elem.first, elem.second);
00030         waitList.pop_front();
00031     }
00032 }
00033 
00034 Status::~Status()
00035 {
00036     delete widget;
00037 }
00038 
00039 void    Status::init()
00040 {
00041 }
00042 
00043 void    Status::aboutToQuit()
00044 {
00045 }
00046 
00047 Message*    Status::message(const QString &msg, const QString& pix)
00048 {
00049     if (lastMessage && lastMessage->message == msg)
00050     {
00051         // Message already exists, just increment count
00052         lastMessage->incrementCount();
00053         return lastMessage;
00054     }
00055     else
00056     {
00057         Message*    message = new Message(widget);
00058         QPixmap     pixmap(pix);
00059 
00060         message->setMessage(msg);
00061         if (!pixmap.isNull())
00062             message->setIcon(pixmap);
00063         widget->addMessage(message);
00064         lastMessage = message;
00065         return message;
00066     }
00067 }
00068 
00069 void    Status::gMessage(const QString &msg, const QString& pix)
00070 {
00071     if (instance)
00072         emit instance->forwardMessage(msg, pix);
00073     else
00074         waitList << QPair<QString, QString>(msg, pix);
00075 }