Exemple #1
0
void DrawTable(DmOpenRef db, Int16 category)
{
	FormPtr form = FrmGetActiveForm();
	if (FormIsNot(form, FormMain)) return;
	TablePtr table = (TablePtr) GetObjectPtr(form, SMSTable);
	if (table == NULL) return;
	if (category >= 0) g_SelectedCategory = category;
	
	for (int c = 0; c < TABLE_NUM_COLUMNS; ++c) {
		TblSetCustomDrawProcedure(table, c, PrivDrawCell);
		TblSetColumnUsable(table, c, true);
		TblSetColumnWidth(table, c, COLUMN_WIDTHS[c]);
	}
	
	
	for (int r = 0; r < TABLE_PAGE_SIZE; ++r) {
		UInt32 cursor = g_CurrentPage * TABLE_PAGE_SIZE + r;
		if (cursor >= GetSMSCount(db, g_SelectedCategory)) {
			TblSetRowUsable(table, r, false);
		} else {
			TblSetRowSelectable(table, r, true);
			TblSetRowUsable(table, r, true);
			for(int c = 0; c < TABLE_NUM_COLUMNS; c++ )
				TblSetItemStyle(table, r, c, customTableItem);
		}
	}
	
	TblDrawTable(table);
	UpdateScrollbar(db);
	
	UpdateUnread(db);	
	UpdatePos(db);
}
Exemple #2
0
void UpdatePostsTable(FormPtr pForm, UInt16 numberOfRows)
{
    UInt16 rowsToDraw;
    UInt16 obj = FrmGetObjectIndex(pForm, PostListTable);
    TablePtr table = (TablePtr)FrmGetObjectPtr(pForm, obj);
    char* icon[PostListMaxRows] = { "*", "*", "*", "*", "*", "*", "*", "*", "*", "*" };
    char* userName[PostListMaxRows] = { "Sam", "Max", "Jess", "Polly", "Pete", "Ken", "Ello", "Brian", "Oli", "Test" };
    char* postPreview[PostListMaxRows] = { "This is a post preview...",
        "This is a post preview...",
        "This is a post preview...",
        "This is a post preview...",
        "This is a post preview...",
        "This is a post preview...",
        "This is a post preview...",
        "This is a post preview...",
        "This is a post preview...",
        "This is a post preview..." };
    register int i;

    if (numberOfRows > PostListMaxRows) {
        AlertPrintf3(
            "Number of posts exceeded the limit. Reducing to 10.",
            NULL, NULL);
        rowsToDraw = PostListMaxRows;
    } else {
        rowsToDraw = numberOfRows;
    }

    for (i = 0; i < rowsToDraw; i++) {
        TblSetItemStyle(table, i, 0, labelTableItem);
        TblSetItemStyle(table, i, 1, labelTableItem);
        TblSetItemStyle(table, i, 2, labelTableItem);
        TblSetItemPtr(table, i, 0, icon[i]);
        TblSetItemPtr(table, i, 1, userName[i]);
        TblSetItemPtr(table, i, 2, postPreview[i]);
        TblSetRowUsable(table, i, true);
        //OS3.5:		TblSetRowMasked(table, i, ((i%2) == 0) ? true : false);
        //		TblSetRowSelectable(table, i, ((i%2) == 0) ? false : true);
        TblMarkRowInvalid(table, i);
    }

    for (i = 0; i < PostListColumns; i++) {
        TblSetColumnUsable(table, i, true);
    }
    //	TblSetRowUsable(table, 0, false);
    //	TblRedrawTable(table);
    //	FrmUpdateForm (Table, 0);
    TblRedrawTable(table);
}
Exemple #3
0
static void
ExamsTableInit(void)
{
  TableType *table=GetObjectPtr(TABLE_exams);
  UInt16 i, j;
  MemHandle m;
  UInt16 index=0;

  gExamsSelRow = 0;  
  
  for (i=0; i < TblGetNumberOfRows(table); ++i) {
    TblSetItemStyle(table, i, EXCOL_DONE, checkboxTableItem);
    TblSetItemStyle(table, i, EXCOL_COURSE, customTableItem);
    TblSetItemStyle(table, i, EXCOL_NOTE, customTableItem);
    TblSetItemStyle(table, i, EXCOL_DATE, customTableItem);
    TblSetItemStyle(table, i, EXCOL_TIME, customTableItem);
    TblSetItemStyle(table, i, EXCOL_SELI, customTableItem);
  }

  TblSetColumnSpacing(table, EXCOL_DONE, 2);
  TblSetColumnSpacing(table, EXCOL_COURSE, 1);
  TblSetColumnSpacing(table, EXCOL_NOTE, 3);
  TblSetColumnSpacing(table, EXCOL_DATE, 1);
  TblSetColumnSpacing(table, EXCOL_TIME, 3);

  TblSetColumnUsable(table, EXCOL_DONE, true);
  TblSetColumnUsable(table, EXCOL_COURSE, true);
  TblSetColumnUsable(table, EXCOL_NOTE, true);
  TblSetColumnUsable(table, EXCOL_DATE, true);
  TblSetColumnUsable(table, EXCOL_TIME, true);
  TblSetColumnUsable(table, EXCOL_SELI, true);

  for (i=0; i < TblGetNumberOfRows(table); ++i) {
    TblSetRowUsable(table, i, false);
  }

  TblSetCustomDrawProcedure(table, EXCOL_COURSE, TableDrawData);
  TblSetCustomDrawProcedure(table, EXCOL_NOTE, TableDrawData);
  TblSetCustomDrawProcedure(table, EXCOL_DATE, TableDrawData);
  TblSetCustomDrawProcedure(table, EXCOL_TIME, TableDrawData);
  TblSetCustomDrawProcedure(table, EXCOL_SELI, TableDrawSelection);

  i = 0; j = 0;
  while ((i < EX_MAX_ROWS) && (m = DmQueryNextInCategory(DatabaseGetRefN(DB_MAIN), &index, DatabaseGetCat()))) {
    UInt32 uid=0;
    ExamDBRecord *ex;

    DmRecordInfo(DatabaseGetRefN(DB_MAIN), index, NULL, &uid, NULL);
    ex = MemHandleLock(m);
    if (ex->type == TYPE_EXAM) {
      // We have an exam, insert if above current offset
      if (j >= gExamsOffset) {
        UInt16 done = ex->flags & EX_FLAG_DONE;
        TblInsertRow(table, i);
        TblSetRowID(table, i, index);
        TblSetRowData(table, i, uid);
        if (uid == gExamsLastSelRowUID)  gExamsSelRow = i;
        TblSetRowUsable(table, i, true);
        TblMarkRowInvalid(table, i);
        TblSetItemInt(table, i, EXCOL_DONE, done);
        i += 1;
      }
      j += 1;
    }
    MemHandleUnlock(m);
    index += 1;
  }

  // Check if there are displayed exams. If there are not, hide the
  // buttons for edit/delete/beam, otherwise show
  if (i > 0) {
    CtlShowControl(GetObjectPtr(BUTTON_ex_edit));
    CtlShowControl(GetObjectPtr(BUTTON_ex_del));
    CtlShowControl(GetObjectPtr(BUTTON_ex_beam));
    CtlShowControl(GetObjectPtr(BUTTON_ex_note));
  } else {
    CtlHideControl(GetObjectPtr(BUTTON_ex_edit));
    CtlHideControl(GetObjectPtr(BUTTON_ex_del));
    CtlHideControl(GetObjectPtr(BUTTON_ex_beam));
    CtlHideControl(GetObjectPtr(BUTTON_ex_note));
  }

  // decide and (show/hide) whether to have enabled or disabled down button
  // There must be another record, otherwise our course we assigned this exam to would
  // not exist, that should never happen. But to cover my future mistakes
  // index has been increased one in the loop.
  if ( (m = DmQueryNextInCategory(DatabaseGetRefN(DB_MAIN), &index, DatabaseGetCat())) != NULL) {
    // We have more records, are there exams?
    Char *s;
    s = MemHandleLock(m);
    // Since the DB is sorted we do not need to search for exams but just check the next
    // record. If it is not an exam record there won't be any later!
    if (s[0] == TYPE_EXAM) {
      CtlHideControl(GetObjectPtr(REPEAT_ex_down_dis));
      CtlShowControl(GetObjectPtr(REPEAT_ex_down));
    } else {
      CtlHideControl(GetObjectPtr(REPEAT_ex_down));
      CtlShowControl(GetObjectPtr(REPEAT_ex_down_dis));
    }
    MemHandleUnlock(m);
  } else {
    CtlHideControl(GetObjectPtr(REPEAT_ex_down));
    CtlShowControl(GetObjectPtr(REPEAT_ex_down_dis));
  }

  // decide (and show/hide) whether to have enabled or disabled up button
  if (gExamsOffset > 0) {
    CtlHideControl(GetObjectPtr(REPEAT_ex_up_dis));
    CtlShowControl(GetObjectPtr(REPEAT_ex_up));
  } else {
    CtlHideControl(GetObjectPtr(REPEAT_ex_up));
    CtlShowControl(GetObjectPtr(REPEAT_ex_up_dis));
  }
}