/** * @brief Explores disk. * @param hTree: tree view handle * @retval None */ static void ExploreDisks(WM_HWIN hTree) { TREEVIEW_ITEM_Handle hItem = 0; TREEVIEW_ITEM_Handle hUSBItem = 0; TREEVIEW_ITEM_Handle Node = 0; uint32_t Position = 0; Node = TREEVIEW_InsertItem(hTree, TREEVIEW_ITEM_TYPE_NODE, 0, 0, "Local disks"); if(k_StorageGetStatus(MSD_DISK_UNIT) == 1) { hItem = TREEVIEW_InsertItem(hTree, TREEVIEW_ITEM_TYPE_NODE, Node, TREEVIEW_INSERT_FIRST_CHILD, "microSD"); } if(k_StorageGetStatus(USB_DISK_UNIT) == 1) { Position = hItem ? TREEVIEW_INSERT_BELOW : TREEVIEW_INSERT_FIRST_CHILD; hUSBItem = hItem ? hItem : Node; hUSBItem = TREEVIEW_InsertItem(hTree, TREEVIEW_ITEM_TYPE_NODE, hUSBItem, Position, "USB Disk"); } if(k_StorageGetStatus(MSD_DISK_UNIT) == 1) { ShowNodeContent(hTree, hItem, mSDDISK_Drive, pFileList); } if(k_StorageGetStatus(USB_DISK_UNIT) == 1) { ShowNodeContent(hTree, hUSBItem, USBDISK_Drive, pFileList); } TREEVIEW_SetAutoScrollH(hTree, 1); TREEVIEW_SetAutoScrollV(hTree, 1); TREEVIEW_SetIndent(hTree, 22); hItem = TREEVIEW_GetItem(hTree, 0, TREEVIEW_GET_FIRST); TREEVIEW_ITEM_Expand(hItem); hItem = TREEVIEW_GetItem(hTree, hItem, TREEVIEW_GET_FIRST_CHILD); if(hItem != 0) { TREEVIEW_ITEM_Expand(hItem); hItem = TREEVIEW_GetItem(hTree, hItem, TREEVIEW_GET_NEXT_SIBLING); if(hItem != 0) { TREEVIEW_ITEM_Expand(hItem); } } WM_SetFocus(hTree); }
/********************************************************************* * * _InitTreeview * * Purpose: * Adds some data to the treeview widget */ static int _InitTreeview(WM_HWIN hTree) { TREEVIEW_ITEM_Handle hNode; int r; hNode = TREEVIEW_InsertItem(hTree, TREEVIEW_ITEM_TYPE_NODE, 0, 0, "Tree"); r = _FillNode(hTree, hNode, NUM_CHILD_NODES, NUM_CHILD_ITEMS, TREEVIEW_DEPTH, TREEVIEW_DEPTH, NULL); if (r) { // // Error message // WM_DeleteWindow(hTree); GUI_MessageBox("Error", "Not enough memory available!", 0); return 1; // Error } TREEVIEW_SetAutoScrollH(hTree, 1); TREEVIEW_SetAutoScrollV(hTree, 1); TREEVIEW_ITEM_Expand(hNode); return 0; }
/********************************************************************* * * _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); } }