--- a/src/MessageLog.h Wed Mar 12 16:20:40 2014 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -/* - * LDForge: LDraw parts authoring CAD - * Copyright (C) 2013, 2014 Santeri Piippo - * - * 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 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#pragma once -#include <QObject> -#include <QDate> -#include "Main.h" -#include "Types.h" - -class GLRenderer; -class QTimer; - -//! -//! \brief Manages the list of messages at the top-left of the renderer. -//! -//! The message manager is an object which keeps track of messages that appear -//! on the renderer's screen. Each line is contained in a separate object which -//! contains the text, expiry time and alpha. The message manager is doubly -//! linked to its corresponding renderer. -//! -//! Message manager calls its \c tick() function regularly to update the messages, -//! where each line's expiry is checked for. Lines begin to fade out when nearing -//! their expiry. If the message manager's lines change, the renderer undergoes -//! repainting. -//! -class MessageManager : public QObject -{ - Q_OBJECT - PROPERTY (public, GLRenderer*, renderer, setRenderer, STOCK_WRITE) - - public: - //! \class MessageManager::Line - //! A single line of the message log. - class Line - { - public: - //! Constructs a line with the given \c text - Line (QString text); - - //! Check this line's expiry and update alpha accordingly. - //! \c changed is updated to whether the line has somehow - //! changed since the last update. - //! \returns true if the line is to still stick around, false - //! \returns if it expired. - bool update (bool& changed); - - QString text; - float alpha; - QDateTime expiry; - }; - - //! Constructs the message manager. - explicit MessageManager (QObject* parent = null); - - //! Adds a line with the given \c text to the message manager. - void addLine (QString line); - - //! \returns all active lines in the message manager. - const QList<Line>& getLines() const; - - private: - QList<Line> m_lines; - QTimer* m_ticker; - - private slots: - //! Ticks the manager. This is called by the timer to update - //! the messages. - void tick(); -};