Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef XSHROWVIEWER_H
Toshihiro Shimizu 890ddd
#define XSHROWVIEWER_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include <qwidget></qwidget>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// forward declaration
Toshihiro Shimizu 890ddd
class XsheetViewer;
Toshihiro Shimizu 890ddd
class QMenu;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace XsheetGUI {
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class DragTool;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// RowArea
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
//! La classe si occupa della visualizzazione dell'area che gestisce le righe.
Shinya Kitaoka d1f6c4
class RowArea final : public QWidget {
Shinya Kitaoka 120a6e
  Q_OBJECT
Shinya Kitaoka 120a6e
  XsheetViewer *m_viewer;
Shinya Kitaoka 120a6e
  int m_row;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  enum ShowOnionToSetFlag {
Shinya Kitaoka 120a6e
    None = 0,
Shinya Kitaoka 120a6e
    Fos,
shun-iwasawa 2b24e8
    Mos,
shun-iwasawa 2b24e8
    ShiftTraceGhost
shun-iwasawa 2b24e8
  } m_showOnionToSet;
Shinya Kitaoka 120a6e
jabarrera eb0a56
  enum Direction { up = 0, down };
jabarrera eb0a56
Shinya Kitaoka 120a6e
  // Play ranges
Shinya Kitaoka 120a6e
  int m_r0;
Shinya Kitaoka 120a6e
  int m_r1;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  QPoint m_pos;
Shinya Kitaoka 120a6e
  bool m_playRangeActiveInMousePress;
Shinya Kitaoka 120a6e
  int m_mousePressRow;
Shinya Kitaoka 120a6e
  QString m_tooltip;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  // panning by middle-drag
Shinya Kitaoka 120a6e
  bool m_isPanning;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void drawRows(QPainter &p, int r0, int r1);
manongjohn a21b06
  void drawPlayRangeBackground(QPainter &p, int r0, int r1);
Shinya Kitaoka 120a6e
  void drawPlayRange(QPainter &p, int r0, int r1);
Shinya Kitaoka 120a6e
  void drawCurrentRowGadget(QPainter &p, int r0, int r1);
manongjohn d44297
  void drawOnionSkinBackground(QPainter &p, int r0, int r1);
Shinya Kitaoka 120a6e
  void drawOnionSkinSelection(QPainter &p);
Shinya Kitaoka 120a6e
  void drawPinnedCenterKeys(QPainter &p, int r0, int r1);
manongjohn 1be264
  void drawCurrentTimeIndicator(QPainter &p);
manongjohn 1be264
  void drawCurrentTimeLine(QPainter &p);
shun-iwasawa 2b24e8
  void drawShiftTraceMarker(QPainter &p);
Shinya Kitaoka 120a6e
shun-iwasawa 31accf
#if defined(x64)
Jeremy Bullock f15907
  void drawStopMotionCameraIndicator(QPainter &p);
Jeremy Bullock f15907
#endif
Jeremy Bullock f15907
Shinya Kitaoka 120a6e
  DragTool *getDragTool() const;
Shinya Kitaoka 120a6e
  void setDragTool(DragTool *dragTool);
Toshihiro Shimizu 890ddd
jabarrera eb0a56
  // Return when the item-menu setAutoMarkers can be enabled.
jabarrera eb0a56
  bool canSetAutoMarkers();
luz paz 5d417b
  // Return the number of the last non-empty cell found. You can set the
jabarrera eb0a56
  // direction of the search.
jabarrera eb0a56
  int getNonEmptyCell(int row, int column, Direction);
jabarrera eb0a56
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
#if QT_VERSION >= 0x050500
Shinya Kitaoka 120a6e
  RowArea(XsheetViewer *parent, Qt::WindowFlags flags = 0);
Toshihiro Shimizu 890ddd
#else
Shinya Kitaoka 120a6e
  RowArea(XsheetViewer *parent, Qt::WFlags flags = 0);
Toshihiro Shimizu 890ddd
#endif
Shinya Kitaoka 120a6e
  ~RowArea();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 473e70
  void paintEvent(QPaintEvent *) override;
Shinya Kitaoka 473e70
Shinya Kitaoka 473e70
  void mousePressEvent(QMouseEvent *event) override;
Shinya Kitaoka 473e70
  void mouseMoveEvent(QMouseEvent *event) override;
Shinya Kitaoka 473e70
  void mouseReleaseEvent(QMouseEvent *event) override;
Shinya Kitaoka 473e70
  void contextMenuEvent(QContextMenuEvent *event) override;
Shinya Kitaoka 473e70
  void mouseDoubleClickEvent(QMouseEvent *event) override;
Shinya Kitaoka 473e70
  bool event(QEvent *event) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setMarker(int index);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void onSetStartMarker();
Shinya Kitaoka 120a6e
  void onSetStopMarker();
Shinya Kitaoka 120a6e
  void onRemoveMarkers();
Toshihiro Shimizu 890ddd
jabarrera eb0a56
  // Set start and end marker automatically respect the current row and column.
jabarrera eb0a56
  void onSetAutoMarkers();
jabarrera eb0a56
Shinya Kitaoka 120a6e
  // set both the from and to markers at the specified row
Shinya Kitaoka 120a6e
  void onPreviewThis();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
shun-iwasawa 6bac0f
}  // namespace XsheetGUI
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
#endif  // XSHROWVIEWER_H