fix start/stop/pause
[Sak.git] / saksubwidget.cpp
bloba5caca90352a1e9d4893a2c43e1cda1876b70d0c
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);
24 if (editable) {
25 ((QLineEdit*)b)->setText(message);
26 ((QLineEdit*)b)->setAlignment(Qt::AlignCenter);
27 #ifdef Q_WS_WIN
28 } else { // !editable -> button: fix XP "style"
29 b->setStyle(new QWindowsStyle());
30 #endif
32 setWidget(b);
33 b->setPalette(m_palette);
35 QFont f(font());
36 f.setBold(true);
37 f.setPixelSize(20);
38 b->setFont(f);
40 b->setEnabled(true);
41 setAcceptsHoverEvents(true);
44 SakSubWidget::~SakSubWidget()
46 //delete m_text;
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 )
62 if (m_editable)
63 ((QLineEdit*)widget())->setSelection(0, 99999);
64 setPalette(m_palette);
65 QGraphicsProxyWidget::focusInEvent(event);
66 emit focused();
70 QString SakSubWidget::getMeaningfulText()
72 QString text;
73 text = m_editable ? ((QLineEdit*)widget())->text() : ((QPushButton*)widget())->text();
74 text = text == message ? "" : text;
75 return text;
78 void SakSubWidget::keyPressEvent ( QKeyEvent * event ) {
79 if (event->key() == Qt::Key_Return && ( (event->modifiers() & Qt::ControlModifier) || (event->modifiers() & Qt::ShiftModifier)) ) {
80 event->accept();
81 emit clicked(m_task.title, getMeaningfulText());
82 } else if (!m_editable && event->key() == Qt::Key_Space) {
83 event->accept();
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);