defuze.me  Client
queuebreak.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 "queuebreak.hpp"
00012 
00013 using namespace Queue;
00014 
00015 QueueBreak::QueueBreak()
00016 {
00017 }
00018 
00019 QueueBreak::QueueBreak(int duration)
00020 {
00021     setDuration(duration);
00022 }
00023 
00024 QueueBreak::QueueBreak(QDateTime end)
00025 {
00026     setEnd(end);
00027 }
00028 
00029 QueueBreak::~QueueBreak()
00030 {
00031 }
00032 
00033 int         QueueBreak::duration() const
00034 {
00035     if (attributes.contains("duration"))
00036         return attributes["duration"].toInt();
00037     else
00038         return -1;
00039 }
00040 
00041 QDateTime   QueueBreak::end() const
00042 {
00043     if (attributes.contains("end"))
00044         return attributes["end"].toDateTime();
00045     else
00046         return QDateTime();
00047 }
00048 
00049 void        QueueBreak::setDuration(int duration)
00050 {
00051     attributes["duration"] = duration;
00052     saveQueueAttributes();
00053 }
00054 
00055 void        QueueBreak::setEnd(QDateTime end)
00056 {
00057     attributes["end"] = end;
00058     saveQueueAttributes();
00059 }
00060 
00061 QString     QueueBreak::message() const
00062 {
00063     if (end().isValid())
00064         return QString(tr("Break until %1").arg(end().toString(tr("dddd hh:mm ap"))));
00065     else
00066         return QString(tr("Break during %1").arg(textDuration()));
00067 }
00068 
00069 bool        QueueBreak::queueIsFinite() const
00070 {
00071     return (duration() > 0 || end().isValid());
00072 }
00073 
00074 int         QueueBreak::queueDuration(QDateTime from) const
00075 {
00076     if (end().isValid())
00077         if (from.secsTo(end()) > 0)
00078             return from.secsTo(end());
00079         else
00080             return 0;
00081     else
00082         return duration();
00083 }
00084 
00085 QString     QueueBreak::queueType() const
00086 {
00087     return "QueueBreak";
00088 }
00089 
00090 QString     QueueBreak::name() const
00091 {
00092     return QString("QueueBreak(%1s)").arg(attributes["duration"].toString());
00093 }
00094 
00095 Queueable*  QueueBreak::clone() const
00096 {
00097     QueueBreak  *instance = new QueueBreak();
00098     instance->attributes = attributes;
00099     return instance;
00100 }