// rdmarkerreadout.cpp // // Read-only display for cut marker digital information // // (C) Copyright 2021 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as // published by the Free Software Foundation. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // #include "rdconf.h" #include "rdmarkerreadout.h" #define LABEL_DISABLED_COLOR QString("#888888") RDMarkerReadout::RDMarkerReadout(RDMarkerHandle::PointerRole role, QWidget *parent) : RDPushButton(parent) { d_roles.push_back(role); d_selected_marker=RDMarkerHandle::LastRole; d_label=new QLabel(RDMarkerHandle::pointerRoleText(role),this); d_label->setAlignment(Qt::AlignCenter); d_label->setFont(labelFont()); switch(role) { case RDMarkerHandle::CutStart: case RDMarkerHandle::TalkStart: case RDMarkerHandle::SegueStart: case RDMarkerHandle::HookStart: d_roles.push_back((RDMarkerHandle::PointerRole)(role+1)); for(int i=0;i<3;i++) { d_edits.push_back(new QLabel(this)); d_edits.back()->setFrameShape(QFrame::Box); d_edits.back()->setFrameShadow(QFrame::Sunken); d_edits.back()->setAlignment(Qt::AlignCenter); d_edits.back()->setText("0:00:00"); } break; case RDMarkerHandle::FadeUp: case RDMarkerHandle::FadeDown: for(int i=0;i<2;i++) { d_edits.push_back(new QLabel(this)); d_edits.back()->setFrameShape(QFrame::Box); d_edits.back()->setFrameShadow(QFrame::Sunken); d_edits.back()->setAlignment(Qt::AlignCenter); d_edits.back()->setText("0:00:00"); } break; case RDMarkerHandle::CutEnd: case RDMarkerHandle::TalkEnd: case RDMarkerHandle::LastRole: case RDMarkerHandle::SegueEnd: case RDMarkerHandle::HookEnd: break; } setDisabled(true); } RDMarkerReadout::~RDMarkerReadout() { for(int i=0;i=0) { d_edits.at(i)->setText(RDGetTimeLength(value,true,true)); } else { d_edits.at(i)->setText("0:00:00"); } setEnabled(value>=0); } } switch(d_roles.first()) { case RDMarkerHandle::CutStart: case RDMarkerHandle::TalkStart: case RDMarkerHandle::SegueStart: case RDMarkerHandle::HookStart: if((d_pointers[d_roles.first()]<0)||(d_pointers[d_roles.last()]<0)) { d_edits.last()->setText("0:00:00"); } else { d_edits.last()->setText(RDGetTimeLength(d_pointers[d_roles.last()]-d_pointers[d_roles.first()],true,true)); } break; case RDMarkerHandle::FadeUp: if(d_pointers[d_roles.first()]<0) { d_edits.last()->setText("0:00:00"); } else { d_edits.last()->setText(RDGetTimeLength(d_pointers[d_roles.first()]-d_pointers[RDMarkerHandle::CutStart],true,true)); } break; case RDMarkerHandle::FadeDown: if(d_pointers[d_roles.first()]<0) { d_edits.last()->setText("0:00:00"); } else { d_edits.last()->setText(RDGetTimeLength(d_pointers[RDMarkerHandle::CutEnd]-d_pointers[d_roles.first()],true,true)); } break; case RDMarkerHandle::CutEnd: case RDMarkerHandle::TalkEnd: case RDMarkerHandle::LastRole: case RDMarkerHandle::SegueEnd: case RDMarkerHandle::HookEnd: break; } } } void RDMarkerReadout::setSelectedMarkers(RDMarkerHandle::PointerRole start_role, RDMarkerHandle::PointerRole end_role) { if(d_roles.contains(start_role)||d_roles.contains(end_role)) { for(int i=0;isetFont(labelFont()); d_edits.at(i)->setStyleSheet("background-color:#FFFF00"); } } else { for(int i=0;isetFont(defaultFont()); d_edits.at(i)->setStyleSheet(""); } } } void RDMarkerReadout::setEnabled(bool state) { if(state) { d_label-> setStyleSheet("background-color: "+ RDMarkerHandle:: pointerRoleColor(d_roles.first()).name()+";"+ "color: "+ RDGetTextColor(RDMarkerHandle:: pointerRoleColor(d_roles.first())).name()); setCursor(Qt::PointingHandCursor); } else { d_label->setStyleSheet("background-color: "+LABEL_DISABLED_COLOR); unsetCursor(); } for(int i=0;isetStyleSheet(""); } d_edits.at(i)->setEnabled(state); } QPushButton::setEnabled(state); } void RDMarkerReadout::setDisabled(bool state) { setEnabled(!state); } void RDMarkerReadout::resizeEvent(QResizeEvent *) { int w=size().width(); d_label->setGeometry(1,0,w-2,20); for(int i=0;isetGeometry(0,20+i*18,w,20); } }