예제 #1
0
void    MakeGaps(void)
{
    uchar   i;
    uint    j;

    if (GetGapSize() == 0)
    {
        for (j=0; j<sizeof(mpbGaps); j++)
            mpbGaps[j] = 0;
    }
    else
    {
        GetGapDate(0);
        for (j=0; j<365; j++)
            mpbGaps[j] = tiGap.bSecond;

        for (i=0; i<GetGapSize(); i++)
        {
            GetGapDate(GetGapSize()-1-i);

            for (j=0; j<=GetDayIndexMD(tiGap.bMonth, tiGap.bDay); j++)
                mpbGaps[j] = tiGap.bSecond;
        }
    }
}
예제 #2
0
void    ShowGap(uchar  ibGap)
{
  if (GetGapSize() > 0)
  {
    GetGapDate(ibGap);

    sprintf(szLo,"%2u.%02u", tiGap.bDay, tiGap.bMonth);
    ShowGapName(tiGap.bSecond);
    sprintf(szHi+11,"%2u/%-2u", ibGap+1, GetGapSize());
  }
  else ShowLo(szNoGaps);
}
예제 #3
0
// добавление нового излома в список и сортировка
bool    AddGap(void)
{
uchar   i,j;
uint    k;

  // проверяем на наличие этого излома в списке
  for (i=0; i<GetGapSize(); i++)
  {
    GetGapDate(i);
    if ((tiGap.bMonth == tiT.bMonth) && (tiGap.bDay == tiT.bDay))
    {
      // заменяем тип излома, не добавляя его в список
      SetGapDate(i);

      SaveCache(&chGaps);
      return(0);
    }
  }


  // записываем излом в конец списка
  tiGap = tiT; SetGapDate(ibX);

  // сортировка
  for(i=0; i<=GetGapSize(); i++)
  {
    for(j=0; j<=GetGapSize(); j++)
    {
      GetGapDate(i);
      k = GetDayIndexMD(tiGap.bMonth, tiGap.bDay);

      GetGapDate(j); 
      if (k < GetDayIndexMD(tiGap.bMonth, tiGap.bDay))
      {
        GetGapDate(i);
        time ti = tiGap;

        GetGapDate(j);
        SetGapDate(i);

        tiGap = ti;
        SetGapDate(j);
      }
    }
  }

  // увеличиваем размер списка
  SetGapSize(GetGapSize() + 1);

  SaveCache(&chGaps);
  return(1);
}
예제 #4
0
// удаление излома из списка
void    DelGap(void)
{
uchar  i;

  // если удаляем не последний излом
  if (ibX < GetGapSize() - 1)
  {
    // сдвигаем последующие изломи вверх
    for (i=ibX; i<GetGapSize() - 1; i++)
    {
      GetGapDate(i + 1);
      SetGapDate(i);
    }
  }
  // иначе уменьшаем индекс текущего излома
  else if (ibX != 0) 
    ibX--;        

  // уменьшаем количество изломов
  if (GetGapSize() != 0)
    SetGapSize(GetGapSize() - 1);

  SaveCache(&chGaps);
}
예제 #5
0
// просмотр списка изломов
void    key_GetGaps(void)
{
  if (bKey == bKEY_ENTER)
  {
    if (enKeyboard == KBD_ENTER)
    {
      if (boGapsFlag == false)
      { BlockProgram2(wSET_GAPS_FLAG, 1); return; }
      else
      {
        enKeyboard = KBD_POSTENTER;   
        ShowHi(szGaps); 
        
        ibX = 0;                
        ShowGap(ibX);
      }
    }
    else if (enKeyboard == KBD_POSTENTER)
    {  
      if (++ibX >= GetGapSize()) ibX = 0;
      ShowGap(ibX);
    }
  }
}
예제 #6
0
// задание списка изломов
void    key_SetGaps(void)
{
  if (bKey == bKEY_ENTER)
  {
    if (enKeyboard == KBD_ENTER)
    {                                  
      if (boGapsFlag == false)
      { BlockProgram2(wSET_GAPS_FLAG, 1); return; }
      else
      {
        enKeyboard = KBD_POSTINPUT1;    // начинаем просмотр списка изломов
        ShowHi(szGaps);       
      }
    }     
    else if (enKeyboard == KBD_POSTINPUT2)              
    {                                   
      tiT.bDay = GetCharLo(0,1);
      if ((tiT.bDay > 0) && (tiT.bDay <= 31))
      {
        enKeyboard = KBD_INPUT3;
        szLo[2] = '.';
      }
      else Beep();
    }      
    else if (enKeyboard == KBD_POSTINPUT3)              
    {                                  
      tiT.bMonth = GetCharLo(3,4);
      tiT.bYear  = 0;

      if ((tiT.bMonth == 0) || (tiT.bMonth > 12))
        Beep();
      else if (tiT.bDay > GetDaysInMonthM(tiT.bMonth))
      {
        enKeyboard = KBD_INPUT2; 
        LongBeep();

        ShowLo(szMaskGap); 
      }     
      else
      {
        enKeyboard = KBD_INPUT4;
        tiT.bSecond = 0;              // тип излома (режим работы)

        ShowGapName(tiT.bSecond);
        szLo[6] = '.';
      }
    }
    else if (enKeyboard == KBD_INPUT4)              
    {
      enKeyboard = KBD_POSTENTER;       // переходим в режим ввода

      if (AddGap() == 1)                // добавляем новый излома в список
      {                               
        if (++ibX == bGAPS)             // если список заполнен
        {
          ibX = 0;                      // переходим на начало
          enKeyboard = KBD_SHOW;        // переходим в режим просмотра
        }
      }
      else Beep();                      // такой излом есть в списке
    }                                                            
    else if (enKeyboard == KBD_SHOW)    // режим проcмотра
    {                                   
      ibX++;                            // переходим на следующий излом
      if (ibX == GetGapSize())          // дошли до конца списка
      {                                 
        if (GetGapSize() == bGAPS) 
          ibX = 0;                      // если список заполнен - продолжаем просмотр с начала
        else 
          enKeyboard = KBD_POSTENTER;   // если в списке есть свободное место - переходим в режим ввода
      }
    }


    if ((enKeyboard == KBD_POSTINPUT1) || (enKeyboard == KBD_INPUT2))
    {                                   // начинаем или продолжаем просмотр списка изломов
      ibX = 0;                          // переходим на начало
      if (GetGapSize() == 0) 
        enKeyboard = KBD_POSTENTER;     // если список пустой - переходим в режим ввода
      else                  
        enKeyboard = KBD_SHOW;          // если список не пустой - переходим в режим просмотра
    }


    if (enKeyboard == KBD_POSTENTER)    // режим ввода
    {
      enKeyboard = KBD_INPUT2;          // подготовка к вводу излома
      ShowLo(szMaskGap);
    }
    else if (enKeyboard == KBD_SHOW)    // режим просмотра
      ShowGap(ibX);                     // просмотр текущего излома
  }


  else if (bKey < 10)
  {
    if ((enKeyboard == KBD_INPUT2) || (enKeyboard == KBD_POSTINPUT2))
    {
      enKeyboard = KBD_POSTINPUT2;
      ShiftLo(0,1);
    }
    else 
    if ((enKeyboard == KBD_INPUT3) || (enKeyboard == KBD_POSTINPUT3))
    {
      enKeyboard = KBD_POSTINPUT3;
      ShiftLo(3,4);
    }
  }


  else if (bKey == bKEY_MINUS)
  {    
    if (enKeyboard == KBD_SHOW)         // в режиме просмотра
    {
      DelGap();                         // удаляем излом из списка
      LongBeep();

      if (GetGapSize() == 0)
      {
        enKeyboard = KBD_INPUT2; 

        ShowHi(szGaps); 
        ShowLo(szMaskGap);
      }
      else ShowGap(ibX);
    }
    else Beep();
  }


  else if (bKey == bKEY_POINT)
  {    
    if (enKeyboard == KBD_POSTINPUT2)              
    {                                   
      tiT.bDay = GetCharLo(0,1);
      if ((tiT.bDay > 0) && (tiT.bDay <= 31))
      {
        enKeyboard = KBD_INPUT3;
        szLo[2] = '.';
      }       
      else Beep();
    }      
    else if (enKeyboard == KBD_INPUT4)   
    {
      if (++tiT.bSecond >= 12) tiT.bSecond = 0;

      ShowGapName(tiT.bSecond);
      szLo[6] = '.';
    }
    else Beep();
  }
  else Beep();
}