1 #include "saksubwidget.h"
4 static const char * message
= "<insert a new, meaningful, subtask title here>";
7 SakSubWidget::SakSubWidget(const Task
& task
, Task::SubTask subtask
, bool editable
) : m_task(task
), m_subtask(subtask
)
10 m_editable
= editable
;
12 QColor bgColor
= subtask
.bgColor
.isValid() ? subtask
.bgColor
: task
.bgColor
;
13 QColor fgColor
= subtask
.fgColor
.isValid() ? subtask
.fgColor
: task
.fgColor
;
15 m_palette
.setColor(QPalette::Inactive
, QPalette::Button
, fgColor
);
16 m_palette
.setColor(QPalette::Active
, QPalette::Button
, bgColor
);
18 m_palette
.setColor(QPalette::Inactive
, QPalette::ButtonText
, bgColor
);
19 m_palette
.setColor(QPalette::Active
, QPalette::ButtonText
, fgColor
);
21 m_showingDetails
=false;
23 QWidget
* b
= editable
? (QWidget
*)new QLineEdit(subtask
.title
) : (QWidget
*)new QPushButton(subtask
.title
);
25 ((QLineEdit
*)b
)->setText(message
);
26 ((QLineEdit
*)b
)->setAlignment(Qt::AlignCenter
);
28 } else { // !editable -> button: fix XP "style"
29 b
->setStyle(new QWindowsStyle());
33 b
->setPalette(m_palette
);
41 setAcceptsHoverEvents(true);
44 SakSubWidget::~SakSubWidget()
50 void SakSubWidget::showDetails(bool show
)
54 void SakSubWidget::focusOutEvent ( QFocusEvent
* event
)
56 setPalette(m_palette
);
57 QGraphicsProxyWidget::focusOutEvent(event
);
60 void SakSubWidget::focusInEvent ( QFocusEvent
* event
)
63 ((QLineEdit
*)widget())->setSelection(0, 99999);
64 setPalette(m_palette
);
65 QGraphicsProxyWidget::focusInEvent(event
);
70 QString
SakSubWidget::getMeaningfulText()
73 text
= m_editable
? ((QLineEdit
*)widget())->text() : ((QPushButton
*)widget())->text();
74 text
= text
== message
? "" : text
;
78 void SakSubWidget::keyPressEvent ( QKeyEvent
* event
) {
79 if (event
->key() == Qt::Key_Return
&& ( (event
->modifiers() & Qt::ControlModifier
) || (event
->modifiers() & Qt::ShiftModifier
)) ) {
81 emit
clicked(m_task
.title
, getMeaningfulText());
82 } else if (!m_editable
&& event
->key() == Qt::Key_Space
) {
84 showDetails(!m_showingDetails
);
85 } else QGraphicsProxyWidget::keyPressEvent(event
);
89 void SakSubWidget::mouseDoubleClickEvent(QGraphicsSceneMouseEvent
* e
)
91 emit
clicked(m_task
.title
, getMeaningfulText());
92 QGraphicsProxyWidget::mouseDoubleClickEvent(e
);