📄 sugarmemofont.c
字号:
#include <PalmOS.h>
#include "SugarMemo.h"
#include "SugarMemoRsc.h"
#include "SugarMemoDB.h"
#include "SugarMemoTools.h"
#include "SugarMemoFont.h"
#define FieldNameColumn 0
#define FontColumn 1
#define BlankColumn1 2
#define AlignColumn 3
#define BlankColumn2 4
#define RowsInFontSettingTable (Int16)4
extern WordFields FieldMap[4];
Char* FieldName[4] = {"Word", "Phonetic", "Translation", "Note"};
static void FontFormInit();
static void FontFormLoadTable();
static Int16 FontIDToListIndex(FontID font);
static FontID ListIndexToFontID(Int16 index);
static void FontFormSaveSetting();
static void FontDrawTableCell(void * table, Int16 row, Int16 column, RectanglePtr bounds);
Boolean FontFormHandleEvent(EventType* event){
FormType* frmP = FrmGetActiveForm();
Boolean handled = false;
switch (event->eType){
case frmOpenEvent:
FontFormInit();
FrmDrawForm(frmP);
handled = true;
break;
case ctlSelectEvent:
switch(event->data.ctlSelect.controlID){
case FontOKButton:
FontFormSaveSetting();
FrmGotoForm(Learn2Form);
handled = true;
break;
case FontCancelButton:
FrmGotoForm(Learn2Form);
handled = true;
break;
default:
break;
}
default:
break;
}
return handled;
}
void FontFormInit(){
TableType* table = GetObjectPtr(FontSettingTable);
Int16 row;
for (row = 0; row < RowsInFontSettingTable; row++){
TblSetItemStyle(table, row, FieldNameColumn, customTableItem);
TblSetItemStyle(table, row, FontColumn, popupTriggerTableItem);
TblSetItemStyle(table, row, BlankColumn1, customTableItem);
TblSetItemStyle(table, row, AlignColumn, popupTriggerTableItem);
TblSetItemStyle(table, row, BlankColumn2, customTableItem);
TblSetRowUsable(table, row, false);
}
TblSetColumnUsable(table, FieldNameColumn, true);
TblSetColumnUsable(table, FontColumn, true);
TblSetColumnUsable(table, BlankColumn1, true);
TblSetColumnUsable(table, AlignColumn, true);
TblSetColumnUsable(table, BlankColumn2, true);
TblSetCustomDrawProcedure(table, FieldNameColumn, FontDrawTableCell);
TblSetCustomDrawProcedure(table, BlankColumn1, FontDrawTableCell);
TblSetCustomDrawProcedure(table, BlankColumn2, FontDrawTableCell);
TblSetColumnSpacing(table, FontColumn, 0);
TblSetColumnSpacing(table, AlignColumn, 0);
FontFormLoadTable();
}
void FontFormLoadTable(){
TableType* table = GetObjectPtr(FontSettingTable);
Int16 row;
WordFields field;
SugarAppInfoType* app;
ListType* fontList = GetObjectPtr(FontFontList);
ListType* alignList = GetObjectPtr(FontAlignList);
Int16 index, align;
app = GetAppInfoPtr(CurrentDB);
if (app == NULL) return;
for (row = 0; row< RowsInFontSettingTable; row++){
field = FieldMap[row];
TblSetRowID(table, row, field);
index = FontIDToListIndex(app -> learnFieldFont[field]);
TblSetItemInt(table, row, FontColumn, index);
TblSetItemPtr(table, row, FontColumn, fontList);
align = app -> learnFieldAlignment[field];
TblSetItemInt(table, row, AlignColumn, align);
TblSetItemPtr(table, row, AlignColumn, alignList);
TblSetRowUsable(table, row, true);
}
MemPtrUnlock(app);
TblDrawTable(table);
}
void FontFormSaveSetting(){
TableType* table = GetObjectPtr(FontSettingTable);
SugarAppInfoType* app;
SugarAppInfoType* appHelper = 0;
Int16 row, index;
TextAlignment align;
FontID font;
WordFields field;
app = GetAppInfoPtr(CurrentDB);
if (app == NULL) return;
for (row = 0; row < RowsInFontSettingTable; row++){
field = TblGetRowID(table, row);
index = TblGetItemInt(table, row, FontColumn);
font = ListIndexToFontID(index);
DmWrite(app, (UInt32)&appHelper -> learnFieldFont[field], &font, sizeof(font));
align = (TextAlignment)TblGetItemInt(table, row, AlignColumn);
DmWrite(app, (UInt32)&appHelper -> learnFieldAlignment[field], &align, sizeof(align));
}
MemPtrUnlock(app);
}
Int16 FontIDToListIndex(FontID font){
UInt16 i;
switch(font){
case stdFont:
i = 0;
break;
case boldFont:
i = 1;
break;
case largeFont:
i = 2;
break;
case largeBoldFont:
i = 3;
break;
case OS5_16_Font:
i = 4;
break;
case PhoneticSmallFont:
i = 5;
break;
case PhoneticLargeFont:
i = 6;
break;
case PhoneticHugeFont:
i = 7;
break;
default:
break;
}
return i;
}
FontID ListIndexToFontID(Int16 index){
if (index == 0) return stdFont;
if (index == 1) return boldFont;
if (index == 2) return largeFont;
if (index == 3) return largeBoldFont;
if (index == 4) return OS5_16_Font;
if (index == 5) return PhoneticSmallFont;
if (index == 6) return PhoneticLargeFont;
if (index == 7) return PhoneticHugeFont;
return stdFont;
}
void FontDrawTableCell(void * table, Int16 row, Int16 column, RectanglePtr bounds){
RectangleType rct = *bounds;
switch(column){
case FieldNameColumn:
WinDrawChars(FieldName[row], StrLen(FieldName[row]), bounds -> topLeft.x, bounds -> topLeft.y);
break;
case BlankColumn1:
case BlankColumn2:
rct.topLeft.x--;
WinEraseRectangle(&rct, 0);
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -