/********************************************************************* * * MainTask */ void MainTask(void) { WM_HWIN hTree; TREEVIEW_ITEM_Handle hNode; int xSize, ySize; char acBuffer[(TREEVIEW_DEPTH << 1) + 1]; // // Initialize emWin // WM_SetCreateFlags(WM_CF_MEMDEV); GUI_Init(); xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); // // Set defaults for background and widgets // WM_SetCallback(WM_HBKWIN, _cbBk); SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX); SCROLLBAR_SetDefaultWidth(20); SCROLLBAR_SetThumbSizeMin(25); // // // GUI_SetFont(GUI_FONT_24_ASCII); GUI_DispStringHCenterAt("Customized TREEVIEW widget", 160, 5); // // Create TREEVIEW // hTree = TREEVIEW_CreateEx(0, 35, xSize, ySize - 35, WM_HBKWIN, WM_CF_SHOW | WM_CF_HASTRANS, 0, GUI_ID_TREEVIEW0); TREEVIEW_SetAutoScrollV(hTree, 1); TREEVIEW_SetFont(hTree, GUI_FONT_24_ASCII); TREEVIEW_SetIndent(hTree, 30); TREEVIEW_SetTextIndent(hTree, 20); TREEVIEW_SetImage(hTree, TREEVIEW_BI_PLUS, &bmPlus); TREEVIEW_SetImage(hTree, TREEVIEW_BI_MINUS, &bmMinus); TREEVIEW_SetImage(hTree, TREEVIEW_BI_CLOSED, &bmClosed); TREEVIEW_SetImage(hTree, TREEVIEW_BI_OPEN, &bmOpen); TREEVIEW_SetImage(hTree, TREEVIEW_BI_LEAF, &bmLeaf); TREEVIEW_SetBitmapOffset(hTree, TREEVIEW_BI_PM, -21, -6); TREEVIEW_SetOwnerDraw(hTree, _TREEVIEW_OwnerDraw); TREEVIEW_SetBkColor(hTree, TREEVIEW_CI_SEL, USER_COLOR); TREEVIEW_SetBkColor(hTree, TREEVIEW_CI_UNSEL, GUI_BLACK); TREEVIEW_SetTextColor(hTree, TREEVIEW_CI_SEL, GUI_WHITE); TREEVIEW_SetTextColor(hTree, TREEVIEW_CI_UNSEL, GUI_WHITE); WIDGET_SetEffect(hTree, &WIDGET_Effect_None); // // Fill TREEVIEW // hNode = TREEVIEW_InsertItem(hTree, TREEVIEW_ITEM_TYPE_NODE, 0, 0, "Tree"); _FillNode(hTree, hNode, NUM_CHILD_NODES, NUM_CHILD_ITEMS, TREEVIEW_DEPTH, TREEVIEW_DEPTH, acBuffer, acBuffer); TREEVIEW_ITEM_Expand(hNode); WM_SetFocus(hTree); while (1) { GUI_Delay(100); } }
void StartFsTask(void const * argument) { printf("Fs task started\n"); taskENTER_CRITICAL(); TREEVIEW_Handle filesystem = TREEVIEW_CreateEx( 500, 0, 300, 480, 0, WM_CF_SHOW, TREEVIEW_CF_AUTOSCROLLBAR_V | TREEVIEW_CF_AUTOSCROLLBAR_H | TREEVIEW_CF_ROWSELECT, GUI_ID_TREEVIEW0 ); TREEVIEW_SetFont(filesystem, GUI_FONT_24_ASCII); scan_files("", &filesystem); TREEVIEW_ITEM_ExpandAll(TREEVIEW_GetItem(filesystem, 0, TREEVIEW_GET_FIRST)); WM_SetCallback(WM_HBKWIN, _cbHBKWIN); WM_SetFocus(filesystem); taskEXIT_CRITICAL(); while(1) { osDelay(5000); } }
/********************************************************************* * * _cbPage0 * * Purpose: * Callback routine for the first page of the multipage widget */ static void _cbPage0(WM_MESSAGE * pMsg) { WM_HWIN hItem, hDlg, hTree; int Sel, NCode, Id; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_NOTIFY_PARENT: hTree = WM_GetDialogItem(WM_GetFirstChild(WM_HBKWIN), GUI_ID_TREEVIEW0); Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ hItem = WM_GetDialogItem(hDlg, Id); switch (Id) { case GUI_ID_RADIO0: /* Select the selection mode */ switch (NCode) { case WM_NOTIFICATION_VALUE_CHANGED: Sel = RADIO_GetValue(hItem); TREEVIEW_SetSelMode(hTree, (Sel == 1) ? TREEVIEW_SELMODE_ROW : TREEVIEW_SELMODE_TEXT); break; } break; case GUI_ID_RADIO1: /* Set the visibility of the lines */ switch (NCode) { case WM_NOTIFICATION_VALUE_CHANGED: Sel = RADIO_GetValue(hItem); TREEVIEW_SetHasLines(hTree, (Sel == 1) ? 1 : 0); break; } break; case GUI_ID_RADIO2: /* Manage horizontal scrollbar */ switch (NCode) { case WM_NOTIFICATION_VALUE_CHANGED: Sel = RADIO_GetValue(hItem); if (Sel == 1) { WM_SetScrollbarH(hTree, 0); } TREEVIEW_SetAutoScrollH(hTree, (Sel == 0) ? 1 : 0); if (Sel == 2) { SCROLLBAR_CreateAttached(hTree, 0); } break; } break; case GUI_ID_RADIO3: /* Manage vertical scrollbar */ switch (NCode) { case WM_NOTIFICATION_VALUE_CHANGED: Sel = RADIO_GetValue(hItem); if (Sel == 1) { WM_SetScrollbarV(hTree, 0); } TREEVIEW_SetAutoScrollV(hTree, (Sel == 0) ? 1 : 0); if (Sel == 2) { SCROLLBAR_CreateAttached(hTree, WIDGET_CF_VERTICAL); } break; } break; case GUI_ID_RADIO4: /* Manage font */ switch (NCode) { case WM_NOTIFICATION_VALUE_CHANGED: Sel = RADIO_GetValue(hItem); TREEVIEW_SetFont(hTree, (Sel == 1) ? &GUI_Font24B_1: &GUI_Font13_1); break; } break; } break; case WM_INIT_DIALOG: /* Initialize the items of the dialog */ hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO0); RADIO_SetText(hItem, "Text select", 0); RADIO_SetText(hItem, "Row select", 1); RADIO_SetValue(hItem, 1); hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO1); RADIO_SetText(hItem, "Off", 0); RADIO_SetText(hItem, "On", 1); RADIO_SetValue(hItem, 1); hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO4); RADIO_SetText(hItem, "Small font", 0); RADIO_SetText(hItem, "Large font", 1); break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _cbDialog */ static void _cbDialogBrowser(WM_MESSAGE * pMsg) { TREEVIEW_ITEM_Handle hNode; //结点句柄 TREEVIEW_ITEM_INFO ItemInfo; WM_HWIN hItem; int NCode; int Id; // USER START (Optionally insert additional variables) SCROLLBAR_Handle hScrollbar; // USER END switch (pMsg->MsgId) { case WM_DELETE: ltk_printf("Browserapp delete\n"); record_file=0; _CreateFrame(&_cbIndex); break; case WM_INIT_DIALOG: // // Initialization of 'Browser' // hItem = pMsg->hWin; FRAMEWIN_SetTextColor(hItem,GUI_WHITE); FRAMEWIN_SetFont(hItem, GUI_FONT_20B_ASCII); FRAMEWIN_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER); FRAMEWIN_AddCloseButton(hItem,FRAMEWIN_BUTTON_RIGHT,0); // FRAMEWIN_AddMaxButton(hItem, FRAMEWIN_BUTTON_RIGHT, 1); // FRAMEWIN_AddMinButton(hItem, FRAMEWIN_BUTTON_RIGHT, 2); FRAMEWIN_SetTitleHeight(hItem, 25); // // Initialization of 'FileTree' // GUI_UC_SetEncodeNone(); hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_TREEVIEW0); TREEVIEW_SetFont(hItem,&GUI_FontHZ16); // TREEVIEW_SetAutoScrollH(hItem,1); // TREEVIEW_SetAutoScrollV(hItem,1); hScrollbar = SCROLLBAR_CreateAttached(hItem,SCROLLBAR_CF_VERTICAL); //创建窗口的子控件 SCROLLBAR_SetWidth(hScrollbar,20); //设置滚动条宽度为20 TREEVIEW_SetSelMode(hItem, TREEVIEW_SELMODE_ROW); //使用自动滚动条 hNode = TREEVIEW_InsertItem(hItem, TREEVIEW_ITEM_TYPE_NODE, 0, 0, "SDCard[0:]"); // USER START (Optionally insert additional code for further widget initialization) if( SD_OK != c_sdReader_init()) ltk_printf("sd card init failed\r\n"); Fill_FileList("0:",record_file,hItem,hNode,NULL); TREEVIEW_ITEM_Expand(hNode); // USER END break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case GUI_ID_TREEVIEW0: // Notifications sent by 'FileTree' switch(NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: // USER START (Optionally insert code for reacting on notification message) //printf("\n release\n"); /* 查看选中了哪个项目 */ hNode = TREEVIEW_GetSel(pMsg->hWinSrc); /* 获取该项目的信息 */ TREEVIEW_ITEM_GetInfo(hNode,&ItemInfo); if(ItemInfo.IsNode == 0) //点击的是目录树的叶子(即文件) { //printf("\r\nleaf num =%ld",hNode); OpenFileProcess(hNode,record_file); } // else //结点 // { // printf("\r\nnode num =%ld",hNode); // } // USER END break; case WM_NOTIFICATION_MOVED_OUT: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_SEL_CHANGED: // USER START (Optionally insert code for reacting on notification message) // USER END break; // USER START (Optionally insert additional code for further notification handling) // USER END } break; // USER START (Optionally insert additional code for further Ids) // USER END } break; // USER START (Optionally insert additional message handling) // USER END default: WM_DefaultProc(pMsg); break; } }