/***************************************************************************
                          knutmessagemanager.h  -  description
                             -------------------
    begin                : So led 24 2004
    copyright            : (C) 2004 by Daniel Prynych
    email                : Daniel.Prynych@alo.cz
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef KNUTMESSAGEMANAGER_H
#define KNUTMESSAGEMANAGER_H

#include "knutmessage.h"

#include <qobject.h>

/**
  *@author Daniel Prynych
  */

namespace knc {
  
enum LevelOfMessage {
  infoLevel,    // status RB, TRIM, CAL, TRIM
  lowWarningLevel, // OVER,
  warningLevel, // OB ..
  errorLevel,   // connection error
  criticalLevel // Status BL, OFF
  };

 }

class QString;
            
/**
 * Tato trida slouzi pro ovladani vyskakovacich oken (pop-up)
 * Okno pracuji nezavisle na ostatnich oknech a NEPOZASTAVUJI jejich cinnost.
 *
 * @author Daniel Prynych
 * @short window message manager
 * @version 0.1
  */
class KNutMessageManager : public QObject  {
    Q_OBJECT
  public:
/**
 * Konstruktor - vytvori instanci tridy.
 *
 * @since  0.1
 */
  KNutMessageManager(  QObject *parent=0, const char *name=0);

/**
 * Destruktor.
 *
 * @since  0.1.1
 **/
  ~KNutMessageManager();

/**
 * Pozada o zobrazeni okna. Pokud je zobrazeno okne s vyssi prioritou, neni funkce provedena.
 *
 * @param  text Text zpravy ktera se zobrazi v okne.
 * @param messageLevel urcuje prioritu zpravy.
 * @param useInfoIcon urcuje ktera icona se zobrazi. Pokud je nastaven na true, je vzdy zobrazena icona
 * info, pokud je false je nastavena icona v zavislosti na priorite zpravy.
 *
 * @since  0.1
 **/
  void addMessage (QString text, knc::LevelOfMessage messageLevel = knc::infoLevel, bool useInfoIcon = false);


/**
 * Zrusi okno, pokud existuje;
 *
 * @since  0.1.1
 **/
  void deleteMessage (void);

  
  private slots:

/**
 * @internal
 * Je aktivovan, kdyz bylo pozadano o zruseni okna stsknutim praveho widgetu nebo vnejsimi udalostmi (KDE Logout).
 *
 * @since  0.1.2
 **/
  void slotFinishedMessage (void);

/**
 * @internal
 * Je aktivovan, kdyz bylo pozadano o zruseni okna stsknutim OK nebo vyprsenim casoveho terminu
 *
 * @since  0.1.2
 **/
  void slotEndMessage (void);
  
  private:

  static const long int TimeOfValidity = 600;
  KNutMessage* myMess;
  knc::LevelOfMessage myMessLevel;
  };

#endif


syntax highlighted by Code2HTML, v. 0.9.1