87 lines
2.3 KiB
C++
Executable File
87 lines
2.3 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* replaces the original header of the view - offers a user-movable position mark
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
* Created by Mike Wille, SLSE, 2014-10-01
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "EventTools.h"
|
|
|
|
#include <QHeaderView>
|
|
|
|
|
|
class QPainter;
|
|
|
|
namespace LtsTimelineClassic
|
|
{
|
|
|
|
/**
|
|
* @brief replaces the original header of the view - offers a user-movable position mark
|
|
* since Qt does NOT provide delegates for QHeaderViews (although it inherits from QAbstractItemView),
|
|
* we must reimplement this class and use paintSection(..) instead
|
|
*/
|
|
class TimelineHeaderView : public QHeaderView
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit TimelineHeaderView(QWidget *parent = nullptr);
|
|
|
|
/**
|
|
* @brief refreshes the header view data, which triggers all views to refresh also
|
|
*/
|
|
void refreshData();
|
|
void setLiveTime(qint64 time);
|
|
|
|
private:
|
|
qint64 m_posMarkTime; // posMarkTime is set exactly ONE time when clicked on the header > then the time will be et'd so that posMarkPos can vary
|
|
QRect m_paintingRange; // seen from the widget itself (so y is 0!)
|
|
// double posMark; DO NOT USE POSMARK INSTEAD OF POSMARKTIME !
|
|
qint64 m_liveTime;
|
|
|
|
protected:
|
|
/**
|
|
* @brief paints the coherant section with a position mark (if set)
|
|
* @param painter painter which draws on the coherant section
|
|
* @param rect boundaries to draw in
|
|
* @param logicalIndex which section to draw on
|
|
*/
|
|
void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const;
|
|
|
|
signals:
|
|
/**
|
|
* @brief gives new position mark pixel position to the view
|
|
* @param pos pixel position of new position mark
|
|
*/
|
|
void signalSetPosMarkPos(int pos); // header clicked -> new position mark position
|
|
|
|
public slots:
|
|
|
|
/**
|
|
* @brief sets new values to this class
|
|
* @param index affected column
|
|
* @param oldSize old width of column
|
|
* @param newSize new width of column
|
|
*/
|
|
void slotSectionResized(int logicalIndex, int oldSize, int newSize);
|
|
|
|
/**
|
|
* @brief setPosMarkTime sets m_posMarkTime - should be called if posMarker was set manually, not with mouse in header!
|
|
* @param time time to set the posMarker's position to
|
|
*/
|
|
void setPosMarkTime(qint64 time);
|
|
|
|
private:
|
|
|
|
/**
|
|
* @brief sets new position of the position mark in all necessary classes
|
|
*/
|
|
void setPosMarkPos();
|
|
};
|
|
|
|
}
|