File indexing completed on 2024-05-12 05:47:30

0001 /*
0002  * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "kitemlistrubberband.h"
0008 
0009 KItemListRubberBand::KItemListRubberBand(QObject *parent)
0010     : QObject(parent)
0011     , m_active(false)
0012     , m_startPos()
0013     , m_endPos()
0014 {
0015 }
0016 
0017 KItemListRubberBand::~KItemListRubberBand()
0018 {
0019 }
0020 
0021 void KItemListRubberBand::setStartPosition(const QPointF &pos)
0022 {
0023     if (m_startPos != pos) {
0024         const QPointF previous = m_startPos;
0025         m_startPos = pos;
0026         Q_EMIT startPositionChanged(m_startPos, previous);
0027     }
0028 }
0029 
0030 QPointF KItemListRubberBand::startPosition() const
0031 {
0032     return m_startPos;
0033 }
0034 
0035 void KItemListRubberBand::setEndPosition(const QPointF &pos)
0036 {
0037     if (m_endPos != pos) {
0038         const QPointF previous = m_endPos;
0039         m_endPos = pos;
0040 
0041         if (m_startPos.x() == m_endPos.x()) {
0042             if (previous.x() < m_startPos.x()) {
0043                 m_endPos.rx() = m_startPos.x() - 1.0;
0044             } else {
0045                 m_endPos.rx() = m_startPos.x() + 1.0;
0046             }
0047         }
0048         if (m_startPos.y() == m_endPos.y()) {
0049             if (previous.y() < m_startPos.y()) {
0050                 m_endPos.ry() = m_startPos.y() - 1.0;
0051             } else {
0052                 m_endPos.ry() = m_startPos.y() + 1.0;
0053             }
0054         }
0055 
0056         Q_EMIT endPositionChanged(m_endPos, previous);
0057     }
0058 }
0059 
0060 QPointF KItemListRubberBand::endPosition() const
0061 {
0062     return m_endPos;
0063 }
0064 
0065 void KItemListRubberBand::setActive(bool active)
0066 {
0067     if (m_active != active) {
0068         m_active = active;
0069         Q_EMIT activationChanged(active);
0070     }
0071 }
0072 
0073 bool KItemListRubberBand::isActive() const
0074 {
0075     return m_active;
0076 }
0077 
0078 #include "moc_kitemlistrubberband.cpp"