#include <QPainter>
#include <QAction>
#include <QTimer>
+#include <QColor>
HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent) :
QWidget(parent),
m_index(index),
- m_type(info.type)
+ m_type(info.type),
+ m_isSelected(false)
{
setFixedHeight(height);
setupUi(this);
+ QColor col = track_number->palette().color(QPalette::Base);
+ track_number->setStyleSheet(QString("QLineEdit { background-color: transparent;} QLineEdit:hover{ background-color: rgb(%1, %2, %3);} QLineEdit:focus { background-color: rgb(%1, %2, %3);}").arg(col.red()).arg(col.green()).arg(col.blue()));
- QString name = info.trackName.isEmpty() ? QString::number(m_index) : info.trackName;
- track_number->setText(name);
- inputName->setText(name);
- inputName->setHidden(true);
- connect(inputName, SIGNAL(editingFinished()), this, SLOT(slotRenameTrack()));
+ m_name = info.trackName.isEmpty() ? QString::number(m_index) : info.trackName;
+ track_number->setText(m_name);
+ connect(track_number, SIGNAL(editingFinished()), this, SLOT(slotRenameTrack()));
buttonVideo->setChecked(info.isBlind);
buttonVideo->setToolTip(i18n("Hide track"));
//horizontalSpacer;
}
- setContextMenuPolicy(Qt::ActionsContextMenu);
+ setContextMenuPolicy(Qt::DefaultContextMenu); //Qt::ActionsContextMenu);
QAction *insertAction = new QAction(i18n("Insert Track"), this);
- addAction(insertAction);
+ m_menu.addAction(insertAction);
connect(insertAction, SIGNAL(triggered()), this, SLOT(slotAddTrack()));
QAction *removeAction = new QAction(KIcon("edit-delete"), i18n("Delete Track"), this);
- addAction(removeAction);
+ m_menu.addAction(removeAction);
connect(removeAction, SIGNAL(triggered()), this, SLOT(slotDeleteTrack()));
QAction *configAction = new QAction(KIcon("configure"), i18n("Configure Track"), this);
- addAction(configAction);
+ m_menu.addAction(configAction);
connect(configAction, SIGNAL(triggered()), this, SLOT(slotConfigTrack()));
}
// virtual
void HeaderTrack::mousePressEvent(QMouseEvent * event)
{
- emit selectTrack(m_index);
+ if (track_number->hasFocus()) {
+ track_number->clearFocus();
+ return;
+ }
+ if (!m_isSelected) emit selectTrack(m_index);
QWidget::mousePressEvent(event);
}
+// virtual
+void HeaderTrack::contextMenuEvent(QContextMenuEvent * event)
+{
+ if (track_number->hasFocus()) {
+ track_number->clearFocus();
+ return;
+ }
+ m_menu.popup(event->globalPos());
+}
+
void HeaderTrack::mouseDoubleClickEvent(QMouseEvent* event)
{
+ if (track_number->hasFocus()) {
+ track_number->clearFocus();
+ return;
+ }
slotConfigTrack();
QWidget::mouseDoubleClickEvent(event);
}
void HeaderTrack::setSelectedIndex(int ix)
{
- track_number->setHidden(false);
- inputName->setHidden(true);
if (m_index == ix) {
+ m_isSelected = true;
setBackgroundRole(QPalette::Button);
setAutoFillBackground(true);
- track_number->setHidden(true);
- inputName->setHidden(false);
} else if (m_type != VIDEOTRACK) {
+ m_isSelected = false;
setAutoFillBackground(false);
} else {
+ m_isSelected = false;
setBackgroundRole(QPalette::AlternateBase);
}
update();
void HeaderTrack::slotRenameTrack()
{
- emit renameTrack(m_index, inputName->text());
+ if (m_name != track_number->text()) emit renameTrack(m_index, track_number->text());
}
void HeaderTrack::slotConfigTrack()
<x>0</x>
<y>0</y>
<width>86</width>
- <height>38</height>
+ <height>37</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<number>0</number>
</property>
<item row="0" column="0" colspan="4">
- <widget class="QLabel" name="track_number">
+ <widget class="QLineEdit" name="track_number">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="text">
- <string>0</string>
- </property>
- <property name="scaledContents">
+ <property name="frame">
<bool>false</bool>
</property>
- <property name="alignment">
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
- </property>
- </widget>
- </item>
- <item row="2" column="0" colspan="4">
- <widget class="QLineEdit" name="inputName">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
+ <property name="readOnly">
+ <bool>false</bool>
</property>
</widget>
</item>
- <item row="1" column="0" colspan="2">
+ <item row="1" column="1" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
- <height>40</height>
+ <height>1</height>
</size>
</property>
</spacer>
</item>
- <item row="3" column="0">
+ <item row="2" column="0">
<widget class="QToolButton" name="buttonLock">
<property name="maximumSize">
<size>
</property>
</widget>
</item>
- <item row="3" column="1">
+ <item row="2" column="1">
<widget class="QToolButton" name="buttonAudio">
<property name="maximumSize">
<size>
</property>
</widget>
</item>
- <item row="3" column="2">
+ <item row="2" column="2">
<widget class="QToolButton" name="buttonVideo">
<property name="maximumSize">
<size>
</property>
</widget>
</item>
- <item row="3" column="3">
+ <item row="2" column="3">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>