File indexing completed on 2024-05-05 11:56:11
0001 /* 0002 SPDX-License-Identifier: GPL-2.0-or-later 0003 SPDX-FileCopyrightText: 2012 Martin Kuettler <martin.kuettler@gmail.com> 0004 */ 0005 0006 #include "actionbar.h" 0007 #include "worksheet.h" 0008 #include "worksheetentry.h" 0009 #include "worksheettoolbutton.h" 0010 #include "worksheetview.h" 0011 0012 #include <QGraphicsProxyWidget> 0013 0014 ActionBar::ActionBar(WorksheetEntry* parent) 0015 : QGraphicsObject(parent) 0016 { 0017 m_pos = 0; 0018 m_height = 0; 0019 QPointF p = worksheet()->worksheetView()->viewRect().topRight(); 0020 qreal w = qMin(parent->size().width() - WorksheetEntry::RightMargin, 0021 parent->mapFromScene(p).x()); 0022 setPos(w, 0); 0023 connect(worksheet()->worksheetView(), SIGNAL(viewRectChanged(QRectF)), 0024 this, SLOT(updatePosition())); 0025 } 0026 0027 WorksheetToolButton* ActionBar::addButton(const QIcon& icon, const QString& toolTip, 0028 QObject* receiver, const char* method ) 0029 { 0030 WorksheetToolButton* button = new WorksheetToolButton(this); 0031 button->setIcon(icon); 0032 button->setIconScale(worksheet()->renderer()->scale()); 0033 button->setToolTip(toolTip); 0034 if (receiver && method) 0035 connect(button, SIGNAL(clicked()), receiver, method); 0036 m_pos -= button->width() + 2; 0037 m_height = (m_height > button->height()) ? m_height : button->height(); 0038 button->setPos(m_pos, 4); 0039 m_buttons.append(button); 0040 return button; 0041 } 0042 0043 void ActionBar::addSpace() 0044 { 0045 m_pos -= 8; 0046 } 0047 0048 void ActionBar::updatePosition() 0049 { 0050 if (!parentEntry()) 0051 return; 0052 QPointF p = worksheet()->worksheetView()->viewRect().topRight(); 0053 qreal w = qMin(parentEntry()->size().width() - WorksheetEntry::RightMargin, 0054 parentEntry()->mapFromScene(p).x()); 0055 setPos(w, 0); 0056 const qreal scale = worksheet()->renderer()->scale(); 0057 foreach(WorksheetToolButton* button, m_buttons) { 0058 button->setIconScale(scale); 0059 } 0060 } 0061 0062 WorksheetEntry* ActionBar::parentEntry() 0063 { 0064 return qobject_cast<WorksheetEntry*>(parentObject()); 0065 } 0066 0067 QRectF ActionBar::boundingRect() const 0068 { 0069 return QRectF(m_pos, 0, -m_pos, m_height); 0070 } 0071 0072 void ActionBar::paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) 0073 { 0074 } 0075 0076 Worksheet* ActionBar::worksheet() 0077 { 0078 return qobject_cast<Worksheet*>(scene()); 0079 }