示例#1
0
LRESULT
CDeskBand::OnCopyData(PCOPYDATASTRUCT copy_data)
{
  TRACE_ENTER("CDeskBand::OnCopyData");
  m_LastCopyData = time(NULL);
  if (copy_data->dwData == APPLET_MESSAGE_MENU
      && copy_data->cbData == sizeof(AppletMenuData))
    {
      m_AppletMenu = *((AppletMenuData *) copy_data->lpData);
      m_HasAppletMenu = TRUE;
    }
  else if (m_TimerBox != NULL
           && copy_data->dwData == APPLET_MESSAGE_HEARTBEAT
           && copy_data->cbData == sizeof(AppletHeartbeatData))
    {
      AppletHeartbeatData *data = (AppletHeartbeatData *) copy_data->lpData;
      m_TimerBox->set_enabled(data->enabled);
      for (int s = 0; s < BREAK_ID_SIZEOF; s++)
        {
          m_TimerBox->set_slot(s, (BreakId) data->slots[s]);
        }
      for (int b = 0; b < BREAK_ID_SIZEOF; b++)
        {
          TimeBar *bar = m_TimerBox->get_time_bar(BreakId(b));
          if (bar != NULL)
            {
              bar->set_text(data->bar_text[b]);
              bar->set_bar_color((ITimeBar::ColorId) data->bar_primary_color[b]);
              bar->set_secondary_bar_color((ITimeBar::ColorId) data->bar_secondary_color[b]);
              bar->set_progress(data->bar_primary_val[b], data->bar_primary_max[b]);
              bar->set_secondary_progress(data->bar_secondary_val[b], data->bar_secondary_max[b]);
            }
        }

      m_TimerBox->update(false);
    }
  TRACE_EXIT();
  return 0;
}