void ListLog::setOpMode(RDAirPlayConf::OpMode mode)
{
    if(mode==list_op_mode) {
        return;
    }
    list_op_mode=mode;
    UpdateTimes();
}
void ListLog::setTimeMode(RDAirPlayConf::TimeMode mode)
{
    if(mode==list_time_mode) {
        return;
    }
    list_hour_selector->setTimeMode(mode);
    list_time_mode=mode;
    UpdateTimes();
    RefreshList();
}
void ListLog::logRemovedData(int line,int num,bool moving)
{
    int count;
    RDListViewItem *item=GetItem(line+num);
    while(item!=NULL) {
        if((count=item->text(15).toInt())>=0) {
            item->setText(15,QString().sprintf("%d",count-num));
        }
        item=(RDListViewItem *)item->nextSibling();
    }
    for(int i=line; i<(line+num); i++) {
        delete GetItem(i);
    }
    if(!moving) {
        UpdateTimes(line,num);
    }
}
void ListLog::logStoppedData(int line)
{
    setStatus(line,RDLogLine::Finished);
    UpdateTimes();
}
void ListLog::logPausedData(int line)
{
    setStatus(line,RDLogLine::Paused);
    UpdateTimes();
}
void ListLog::logPlayedData(int line)
{
    setStatus(line,RDLogLine::Playing);
    UpdateTimes();
}
void ListLog::logReloadedData()
{
    RefreshList();
    UpdateTimes();
    selectionChangedData();
}
ListLog::ListLog(LogPlay *log,RDCae *cae,int id,bool allow_pause,
                 QWidget *parent)
    : QWidget(parent)
{
    list_id=id;
    list_log=log;
    list_cae=cae;
    list_op_mode=RDAirPlayConf::LiveAssist;
    list_action_mode=RDAirPlayConf::Normal;
    list_time_mode=RDAirPlayConf::TwentyFourHour;
    list_scroll=true;
    list_pause_allowed=allow_pause;
    list_playbutton_mode=ListLog::ButtonDisabled;
    list_audition_head_playing=false;
    list_audition_tail_playing=false;

    //
    // Create Fonts
    //
    QFont list_font=QFont("Helvetica",12,QFont::Normal);
    list_font.setPixelSize(12);
    setFont(list_font);
    QFont label_font=QFont("Helvetica",12,QFont::Bold);
    label_font.setPixelSize(12);
    QFont font=QFont("Helvetica",14,QFont::Bold);
    font.setPixelSize(14);
    QFont name_font=QFont("Helvetica",18,QFont::Bold);
    name_font.setPixelSize(18);

    //
    // Create Icons
    //
    list_playout_map=new QPixmap(play_xpm);
    list_macro_map=new QPixmap(rml5_xpm);
    list_chain_map=new QPixmap(chain_xpm);
    list_track_cart_map=new QPixmap(track_cart_xpm);
    list_mic16_map=new QPixmap(mic16_xpm);
    list_notemarker_map=new QPixmap(notemarker_xpm);
    list_traffic_map=new QPixmap(traffic_xpm);
    list_music_map=new QPixmap(music_xpm);

    //
    // Create Palettes
    //
    QColor system_button_text_color = palette().active().buttonText();
    QColor system_button_color = palette().active().button();
    QColor system_mid_color = colorGroup().mid();
    list_from_color=
        QPalette(QColor(BUTTON_FROM_BACKGROUND_COLOR),QColor(system_mid_color));
    list_from_color.
    setColor(QColorGroup::ButtonText,QColor(BUTTON_FROM_TEXT_COLOR));

    list_to_color=
        QPalette(QColor(BUTTON_TO_BACKGROUND_COLOR),QColor(system_mid_color));
    list_to_color.
    setColor(QColorGroup::ButtonText,QColor(BUTTON_TO_TEXT_COLOR));
    list_list_to_color=palette();
    list_list_to_color.setColor(QPalette::Active,QColorGroup::Highlight,
                                BUTTON_TO_BACKGROUND_COLOR);
    list_list_to_color.setColor(QPalette::Active,QColorGroup::HighlightedText,
                                BUTTON_TO_TEXT_COLOR);
    list_list_to_color.setColor(QPalette::Inactive,QColorGroup::Highlight,
                                BUTTON_TO_BACKGROUND_COLOR);
    list_list_to_color.setColor(QPalette::Inactive,QColorGroup::HighlightedText,
                                BUTTON_TO_TEXT_COLOR);
    list_list_from_color=palette();
    list_list_from_color.setColor(QPalette::Active,QColorGroup::Highlight,
                                  BUTTON_FROM_BACKGROUND_COLOR);
    list_list_from_color.setColor(QPalette::Active,QColorGroup::HighlightedText,
                                  BUTTON_FROM_TEXT_COLOR);
    list_list_from_color.setColor(QPalette::Inactive,QColorGroup::Highlight,
                                  BUTTON_FROM_BACKGROUND_COLOR);
    list_list_from_color.
    setColor(QPalette::Inactive,QColorGroup::HighlightedText,
             BUTTON_FROM_TEXT_COLOR);
    list_scroll_color[0]=palette();
    list_scroll_color[0].setColor(QPalette::Active,QColorGroup::ButtonText,
                                  BUTTON_LOG_ACTIVE_TEXT_COLOR);
    list_scroll_color[0].setColor(QPalette::Active,QColorGroup::Button,
                                  BUTTON_LOG_ACTIVE_BACKGROUND_COLOR);
    list_scroll_color[0].setColor(QPalette::Active,QColorGroup::Background,
                                  system_mid_color);
    list_scroll_color[0].setColor(QPalette::Inactive,QColorGroup::ButtonText,
                                  BUTTON_LOG_ACTIVE_TEXT_COLOR);
    list_scroll_color[0].setColor(QPalette::Inactive,QColorGroup::Button,
                                  BUTTON_LOG_ACTIVE_BACKGROUND_COLOR);
    list_scroll_color[0].setColor(QPalette::Inactive,QColorGroup::Background,
                                  system_mid_color);
    list_scroll_color[1]=palette();
    list_scroll_color[1].setColor(QPalette::Active,QColorGroup::ButtonText,
                                  system_button_text_color);
    list_scroll_color[1].setColor(QPalette::Active,QColorGroup::Button,
                                  system_button_color);
    list_scroll_color[1].setColor(QPalette::Active,QColorGroup::Background,
                                  system_mid_color);
    list_scroll_color[1].setColor(QPalette::Inactive,QColorGroup::ButtonText,
                                  system_button_text_color);
    list_scroll_color[1].setColor(QPalette::Inactive,QColorGroup::Button,
                                  system_button_color);
    list_scroll_color[1].setColor(QPalette::Inactive,QColorGroup::Background,
                                  system_mid_color);

    //
    // Hour Selector
    //
    list_hour_selector=new HourSelector(this);
    list_hour_selector->setTimeMode(list_time_mode);
    connect(list_hour_selector,SIGNAL(hourSelected(int)),
            this,SLOT(selectHour(int)));
    list_hour_selector->hide();

    //
    // Log List
    //
    list_log_list=new LibListView(this);
    list_log_list->setFont(list_font);
    int y=0;
    int h=sizeHint().height()-60;
    if(rda->airplayConf()->showCounters()) {
        h-=60;
    }
    if(rda->airplayConf()->hourSelectorEnabled()) {
        y+=80;
        h-=80;
        list_hour_selector->setGeometry(0,0,sizeHint().width(),80);
        list_hour_selector->show();
    }
    list_log_list->setGeometry(0,y,sizeHint().width(),h);
    list_log_list->setAllColumnsShowFocus(true);
    list_log_list->setSelectionMode(QListView::Extended);
    list_log_list->setItemMargin(5);
    list_log_list->addColumn("");
    list_log_list->setColumnAlignment(0,Qt::AlignHCenter);
    list_log_list->addColumn(tr("EST TIME"));
    list_log_list->setColumnAlignment(1,Qt::AlignRight);
    list_log_list->addColumn(tr("LEN"));
    list_log_list->setColumnAlignment(2,Qt::AlignRight);
    list_log_list->addColumn(tr("TRANS"));
    list_log_list->setColumnAlignment(3,Qt::AlignHCenter);
    list_log_list->addColumn(tr("CART"));
    list_log_list->setColumnAlignment(4,Qt::AlignHCenter);
    list_log_list->addColumn(tr("TITLE"));
    list_log_list->setColumnAlignment(5,Qt::AlignLeft);
    list_log_list->addColumn(tr("ARTIST"));
    list_log_list->setColumnAlignment(6,Qt::AlignLeft);
    list_log_list->addColumn(tr("GROUP"));
    list_log_list->setColumnAlignment(7,Qt::AlignHCenter);
    list_log_list->addColumn(tr("TIME"));
    list_log_list->setColumnAlignment(8,Qt::AlignHCenter);
    list_log_list->addColumn(tr("ALBUM"));
    list_log_list->setColumnAlignment(9,Qt::AlignLeft);
    list_log_list->addColumn(tr("LABEL"));
    list_log_list->setColumnAlignment(10,Qt::AlignLeft);
    list_log_list->addColumn(tr("CLIENT"));
    list_log_list->setColumnAlignment(11,Qt::AlignLeft);
    list_log_list->addColumn(tr("AGENCY"));
    list_log_list->setColumnAlignment(12,Qt::AlignLeft);
    list_log_list->addColumn(tr("MARKER"));
    list_log_list->setColumnAlignment(13,Qt::AlignHCenter);
    list_log_list->addColumn(tr("LINE ID"));
    list_log_list->setColumnAlignment(14,Qt::AlignHCenter);
    list_log_list->addColumn(tr("COUNT"));
    list_log_list->setColumnAlignment(15,Qt::AlignHCenter);
    list_log_list->addColumn(tr("STATUS"));
    list_log_list->setColumnAlignment(16,Qt::AlignHCenter);
    list_log_list->setHardSortColumn(15);
    list_log_list->setFocusPolicy(QWidget::NoFocus);
    connect(list_log_list,SIGNAL(selectionChanged()),
            this,SLOT(selectionChangedData()));
    connect(list_log_list,
            SIGNAL(doubleClicked(QListViewItem *,const QPoint &,int)),
            this,
            SLOT(doubleclickedData(QListViewItem *,const QPoint &,int)));
    connect(list_log_list,SIGNAL(cartDropped(int,RDLogLine *)),
            this,SLOT(cartDroppedData(int,RDLogLine *)));

    //
    // List Logs Dialog
    //
    list_logs_dialog=new ListLogs(list_log,this);

    //
    // Time Counter Section
    //
    QLabel *label=new QLabel(tr("Run Length"),this);
    label->setGeometry(372,sizeHint().height()-120,75,20);
    label->setFont(label_font);
    label->setAlignment(AlignCenter);
    label->setBackgroundColor(QColor(system_mid_color));
    if(!rda->airplayConf()->showCounters()) {
        label->hide();
    }

    //
    // Stop Time Counter
    //
    list_stoptime_edit=new QLineEdit(this);
    list_stoptime_edit->setGeometry(407,sizeHint().height()-100,70,18);
    list_stoptime_label=new QLabel(list_stoptime_edit,tr("Next Stop:"),this);
    list_stoptime_label->setGeometry(337,sizeHint().height()-100,65,18);
    list_stoptime_label->setFont(label_font);
    list_stoptime_label->setAlignment(AlignRight|AlignVCenter);
    list_stoptime_label->setBackgroundColor(QColor(system_mid_color));
    if(!rda->airplayConf()->showCounters()) {
        list_stoptime_edit->hide();
        list_stoptime_label->hide();
    }

    //
    // End Time Counter
    //
    list_endtime_edit=new QLineEdit(this);
    list_endtime_edit->setGeometry(407,sizeHint().height()-80,70,18);
    list_endtime_label=new QLabel(list_endtime_edit,tr("Log End:"),this);
    list_endtime_label->setGeometry(337,sizeHint().height()-80,65,18);
    list_endtime_label->setFont(label_font);
    list_endtime_label->setAlignment(AlignRight|AlignVCenter);
    list_endtime_label->setBackgroundColor(QColor(system_mid_color));
    if(!rda->airplayConf()->showCounters()) {
        list_endtime_edit->hide();
        list_endtime_label->hide();
    }

    //
    // Select Button
    //
    list_take_button=new QPushButton(this);
    list_take_button->setGeometry(10,sizeHint().height()-55,80,50);
    list_take_button->setFont(font);
    list_take_button->setPalette(QPalette(QColor(system_button_color),QColor(system_mid_color)));
    list_take_button->setText(tr("Select"));
    list_take_button->setFocusPolicy(QWidget::NoFocus);
    connect(list_take_button,SIGNAL(clicked()),this,SLOT(takeButtonData()));
    list_take_button->hide();

    //
    // Audition Head Button
    //
    list_head_button=new QPushButton(this);
    list_head_button->setGeometry(10,sizeHint().height()-113,80,50);
    list_head_button->setFont(font);
    list_head_button->setPalette(QPalette(QColor(system_button_color),QColor(system_mid_color)));
    list_head_button->setText(tr("Audition\nHead"));
    list_head_button->setFocusPolicy(QWidget::NoFocus);
    connect(list_head_button,SIGNAL(clicked()),this,SLOT(headButtonData()));
    if(!rda->airplayConf()->showCounters()) {
        list_head_button->hide();
    }

    //
    // Audition Tail Button
    //
    list_tail_button=new QPushButton(this);
    list_tail_button->setGeometry(90,sizeHint().height()-113,80,50);
    list_tail_button->setFont(font);
    list_tail_button->setPalette(QPalette(QColor(system_button_color),QColor(system_mid_color)));
    list_tail_button->setText(tr("Audition\nTail"));
    list_tail_button->setFocusPolicy(QWidget::NoFocus);
    connect(list_tail_button,SIGNAL(clicked()),this,SLOT(tailButtonData()));
    if(!rda->airplayConf()->showCounters()) {
        list_tail_button->hide();
    }

    //
    // Play Button
    //
    list_play_button=new QPushButton(this);
    list_play_button->setGeometry(10,sizeHint().height()-55,80,50);
    list_play_button->setFont(font);
    list_play_button->setPalette(QPalette(QColor(system_button_color),QColor(system_mid_color)));
    list_play_button->setText(tr("Start"));
    list_play_button->setDisabled(true);
    list_play_button->setFocusPolicy(QWidget::NoFocus);
    connect(list_play_button,SIGNAL(clicked()),this,SLOT(playButtonData()));

    //
    // Next Button
    //
    list_next_button=new QPushButton(this);
    list_next_button->setGeometry(90,sizeHint().height()-55,80,50);
    list_next_button->setFont(font);
    list_next_button->setPalette(QPalette(QColor(system_button_color),QColor(system_mid_color)));
    list_next_button->setText(tr("Make\nNext"));
    list_next_button->setDisabled(true);
    list_next_button->setFocusPolicy(QWidget::NoFocus);
    connect(list_next_button,SIGNAL(clicked()),this,SLOT(nextButtonData()));

    //
    // Modify Button
    //
    list_modify_button=new QPushButton(this);
    list_modify_button->setGeometry(170,sizeHint().height()-55,80,50);
    list_modify_button->setFont(font);
    list_modify_button->setPalette(QPalette(QColor(system_button_color),QColor(system_mid_color)));
    list_modify_button->setText(tr("Modify"));
    list_modify_button->setDisabled(true);
    list_modify_button->setFocusPolicy(QWidget::NoFocus);
    connect(list_modify_button,SIGNAL(clicked()),this,SLOT(modifyButtonData()));

    //
    // Scroll Button
    //
    list_scroll_button=new QPushButton(this);
    list_scroll_button->setGeometry(250,sizeHint().height()-55,80,50);
    list_scroll_button->setFont(font);
    list_scroll_button->setPalette(QPalette(QColor(system_button_color),QColor(system_mid_color)));
    list_scroll_button->setText(tr("Scroll"));
    list_scroll_button->setFocusPolicy(QWidget::NoFocus);
    connect(list_scroll_button,SIGNAL(clicked()),this,SLOT(scrollButtonData()));
    list_scroll_button->setPalette(list_scroll_color[0]);

    //
    // Refresh Button
    //
    list_refresh_button=new QPushButton(this);
    list_refresh_button->setGeometry(330,sizeHint().height()-55,80,50);
    list_refresh_button->setFont(font);
    list_refresh_button->setPalette(QPalette(QColor(system_button_color),QColor(system_mid_color)));
    list_refresh_button->setText(tr("Refresh\nLog"));
    list_refresh_button->setDisabled(true);
    list_refresh_button->setFocusPolicy(QWidget::NoFocus);
    connect(list_refresh_button,SIGNAL(clicked()),
            this,SLOT(refreshButtonData()));

    //
    // Log Load
    //
    list_load_button=new QPushButton(this);
    list_load_button->setGeometry(sizeHint().width()-90,sizeHint().height()-55,
                                  80,50);
    list_load_button->setFont(font);
    list_load_button->setPalette(QPalette(QColor(system_button_color),QColor(system_mid_color)));
    list_load_button->setText(tr("Select\nLog"));
    list_load_button->setFocusPolicy(QWidget::NoFocus);
    connect(list_load_button,SIGNAL(clicked()),this,SLOT(loadButtonData()));

    //
    // Edit Event Dialog
    //
    list_event_edit=new EditEvent(list_log,list_cae,this);

    //
    // Map Slots
    //
    connect(list_log,SIGNAL(reloaded()),this,SLOT(logReloadedData()));
    connect(list_log,SIGNAL(played(int)),this,SLOT(logPlayedData(int)));
    connect(list_log,SIGNAL(paused(int)),this,SLOT(logPausedData(int)));
    connect(list_log,SIGNAL(stopped(int)),this,SLOT(logStoppedData(int)));
    connect(list_log,SIGNAL(inserted(int)),this,SLOT(logInsertedData(int)));
    connect(list_log,SIGNAL(removed(int,int,bool)),
            this,SLOT(logRemovedData(int,int,bool)));
    connect(list_log,SIGNAL(transportChanged()),
            this,SLOT(transportChangedData()));
    connect(list_log,SIGNAL(modified(int)),this,SLOT(modifiedData(int)));
    connect(list_log,SIGNAL(refreshabilityChanged(bool)),
            this,SLOT(refreshabilityChangedData(bool)));
    connect(list_log,SIGNAL(auditionHeadPlayed(int)),
            this,SLOT(auditionHeadData(int)));
    connect(list_log,SIGNAL(auditionTailPlayed(int)),
            this,SLOT(auditionTailData(int)));
    connect(list_log,SIGNAL(auditionStopped(int)),
            this,SLOT(auditionStoppedData(int)));

    setBackgroundColor(QColor(system_mid_color));

    RefreshList();
    UpdateTimes();
}
void ListLog::refresh(int line)
{
    RefreshList(line);
    UpdateTimes();
}
void ListLog::refresh()
{
    RefreshList();
    UpdateTimes();
}
void ListLog::modifiedData(int line)
{
    RefreshList(line);
    UpdateTimes();
}
Exemple #12
0
BOOL FAdWindow::UpdatePosition(IAdPosition& pPos)
{
	//TODO: Find ads matching this position.
	//Hide ad if m_EndPos > pPos.curPos

	DWORD dwPlayState = pPos.m_dwFlags & FLAG_PLAYBACK_MASK; 

	if (m_bAdLoaded)
	{
		if (m_CurrentItem.m_TimeEndMS < pPos.m_PlaybackPosMS)
		{
			//Hide ad if no timeout exists.
			if (m_CurrentItem.m_TimeoutMS == 0 && !(m_CurrentItem.m_dwFlags & AD_FLAG_PERSISTENT))
				OnAdFinished();
		}
	}
	//Still loaded ?
	if (m_bAdLoaded)
	{
		if (dwPlayState == FLAG_PLAYBACK_PAUSED)
		{
			if (m_LastState != FLAG_PLAYBACK_PAUSED)
			{
				//User paused the playback. Compute remaining timeout. 
				KillTimer(1); 
				m_CurrentItem.m_TimeoutMS -= (GetTickCount() - m_TimerStarted);
			}
		}
		else if (dwPlayState == FLAG_PLAYBACK_RUNNING)
		{
				if (m_LastState == FLAG_PLAYBACK_PAUSED)
				{
					if (m_CurrentItem.m_TimeoutMS > 0)
						SetTimer(1, (UINT)m_CurrentItem.m_TimeoutMS); 
				}
		}
	}
	
	m_LastState = dwPlayState;

	//Total duration is 0, this is invalid and we shouldn't 
	//try to locate ads for it; until it becomes > 0
	if (pPos.m_TotalDurationMS == 0)
		return FALSE; 

	for (size_t k = 0; k < m_Ads.size(); k++)
	{
		FAdItem& pItem = m_Ads[k];
		UpdateTimes(pItem, pPos);	//recompute position (if specified in percent)

		//START / END ads can only be shown ONCE
		if (pItem.m_dwFlags & AD_FLAG_AT_START)
		{	
			if ((dwPlayState == FLAG_PLAYBACK_START || 
			   (dwPlayState == FLAG_PLAYBACK_RUNNING && pPos.m_MSPlayed < 5000)) && 
				pItem.m_LastDisplay == 0)
			{
				if (LoadAd(pItem))
					return TRUE; 
			}
			continue; 
		}

		if (pItem.m_dwFlags & AD_FLAG_AT_END)
		{
			if (dwPlayState == FLAG_PLAYBACK_ENDED && pItem.m_LastDisplay == 0)
				if (LoadAd(pItem))
					return TRUE; 

			continue; 
		}

		if (pItem.m_MSPlayed > 0 && pPos.m_MSPlayed > pItem.m_MSPlayed && pItem.m_LastDisplay == 0)
		{
			if (LoadAd(pItem))
				return TRUE; 
		}
		else if (pItem.m_MSPlayed == 0)
		{
			duration_type TimeEndMS = pItem.m_TimeEndMS;

			if (TimeEndMS == 0)
				TimeEndMS = pItem.m_TimeMS + pItem.m_TimeoutMS;

			if (pItem.m_TimeMS <= pPos.m_PlaybackPosMS)
			{
				if (TimeEndMS >= pPos.m_PlaybackPosMS)
				{
					//Good candidate
					if (LoadAd(pItem))
						return TRUE; 
				}
			}
		}
	}
	return FALSE; 
}