www.pudn.com > uC-GUI-V3-98.zip > WIDGET_Dropdown.c


/* 
********************************************************************************************************* 
*                                             uC/GUI V3.98 
*                        Universal graphic software for embedded applications 
* 
*                       (c) Copyright 2002, Micrium Inc., Weston, FL 
*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH 
* 
*              µC/GUI is protected by international copyright laws. Knowledge of the 
*              source code may not be used to write a similar product. This file may 
*              only be used in accordance with a license and should not be redistributed 
*              in any way. We appreciate your understanding and fairness. 
* 
---------------------------------------------------------------------- 
File        : WIDGET_Dropdown.c 
Purpose     : Example demonstrating the DROPDOWN widget 
---------------------------------------------------------------------- 
*/ 
 
#include "GUI.h" 
#include "FRAMEWIN.h" 
#include "DROPDOWN.h" 
#include "LISTBOX.h" 
#include  
 
#define SPEED 1000 
 
/******************************************************************* 
* 
*       static code 
* 
******************************************************************** 
*/ 
/******************************************************************* 
* 
*       _ShowSeveralFunctions 
*/ 
static void _ShowSeveralFunctions(DROPDOWN_Handle hDropDown) { 
  int NumEntries, i, Key = 0, Cnt = 15; 
  char ac[] = "-- sec to play with dropdown control"; 
  /* Set focus */ 
  GUI_DispStringAtCEOL("WM_SetFocus", 5, 55); 
  GUI_Delay(SPEED * 0.9); 
  WM_SetFocus(hDropDown); 
  GUI_Delay(SPEED * 0.7); 
  /* Add strings */ 
  GUI_DispStringAtCEOL("DROPDOWN_AddString", 5, 55); 
  GUI_Delay(SPEED * 0.8); 
  DROPDOWN_AddString(hDropDown, "English"); 
  DROPDOWN_AddString(hDropDown, "Deutsch"); 
  DROPDOWN_AddString(hDropDown, "Français"); 
  DROPDOWN_AddString(hDropDown, "Japanese"); 
  DROPDOWN_AddString(hDropDown, "Italiano"); 
  DROPDOWN_AddString(hDropDown, "Español"); 
  DROPDOWN_AddString(hDropDown, "Other language ..."); 
  GUI_Delay(SPEED * 0.6); 
  /* Increment selection */ 
  GUI_DispStringAtCEOL("DROPDOWN_IncSel", 5, 55); 
  GUI_Delay(SPEED); 
  NumEntries = DROPDOWN_GetNumItems(hDropDown); 
  for (i = 0; i < (NumEntries - 2); i++) { 
    DROPDOWN_IncSel(hDropDown); 
    GUI_Delay(SPEED / 6); 
	} 
  GUI_Delay(SPEED / 4); 
  /* Expand dropdown */ 
  GUI_DispStringAtCEOL("DROPDOWN_Expand", 5, 55); 
  GUI_Delay(SPEED); 
  DROPDOWN_Expand(hDropDown); 
  GUI_Delay(SPEED * 0.75); 
  /* Add scrollbar */ 
  GUI_DispStringAtCEOL("DROPDOWN_SetAutoScroll", 5, 55); 
  GUI_Delay(SPEED); 
  DROPDOWN_SetAutoScroll(hDropDown, 1); 
  GUI_Delay(SPEED * 0.75); 
  /* Set font */ 
  GUI_DispStringAtCEOL("DROPDOWN_SetFont", 5, 55); 
  GUI_Delay(SPEED); 
  DROPDOWN_SetFont(hDropDown, &GUI_Font16B_1); 
  GUI_Delay(SPEED * 0.75); 
  /* Set text color */ 
  GUI_DispStringAtCEOL("DROPDOWN_SetTextColor", 5, 55); 
  GUI_Delay(SPEED); 
  DROPDOWN_SetTextColor(hDropDown, 0, 0x00BB00); 
  DROPDOWN_SetTextColor(hDropDown, 2, GUI_BLACK); 
  GUI_Delay(SPEED * 0.75); 
  /* Set background color */ 
  GUI_DispStringAtCEOL("DROPDOWN_SetBkColor", 5, 55); 
  GUI_Delay(SPEED); 
  DROPDOWN_SetBkColor(hDropDown, 0, GUI_YELLOW); 
  DROPDOWN_SetBkColor(hDropDown, 2, GUI_RED); 
  GUI_Delay(SPEED * 0.75); 
  /* Delete item */ 
  GUI_DispStringAtCEOL("DROPDOWN_DeleteItem", 5, 55); 
  GUI_Delay(SPEED); 
  DROPDOWN_DeleteItem(hDropDown, 5); 
  GUI_Delay(SPEED * 0.75); 
  /* Collapse dropdown */ 
  GUI_DispStringAtCEOL("DROPDOWN_Collapse", 5, 55); 
  GUI_Delay(SPEED); 
  DROPDOWN_Collapse(hDropDown); 
  GUI_Delay(SPEED * 0.75); 
  /* Decrement selection */ 
  GUI_DispStringAtCEOL("DROPDOWN_DecSel", 5, 55); 
  GUI_Delay(SPEED); 
  NumEntries = DROPDOWN_GetNumItems(hDropDown); 
  for (i = 0; i < (NumEntries - 2); i++) { 
    DROPDOWN_DecSel(hDropDown); 
    GUI_Delay(SPEED / 6); 
	} 
  GUI_Delay(SPEED / 4); 
  /* Let user play with dropdown control */ 
  GUI_DispStringAtCEOL("", 5, 55); 
  while (!Key && (Cnt > 0)) { 
    ac[0] = '0' + (Cnt / 10); 
    ac[1] = '0' + (Cnt-- % 10); 
    GUI_DispStringAtCEOL(ac, 5, 40); 
    GUI_Delay(1000); 
    Key = GUI_GetKey(); 
  } 
  /* Delete dropdown widget */ 
  GUI_DispStringAtCEOL("DROPDOWN_Delete", 5, 55); 
  GUI_Delay(SPEED * 1.1); 
  DROPDOWN_Delete(hDropDown); 
  GUI_Delay(SPEED * 0.75); 
} 
 
/******************************************************************* 
* 
*       _DemoDropDown 
*/ 
static void _DemoDropDown(void) { 
  LISTBOX_Handle hDropDown; 
  /* Display titel */ 
  GUI_SetBkColor(0xB00000); 
  GUI_SetColor(0xFFFFFF); 
  GUI_SetFont(&GUI_Font24_ASCII); 
  GUI_DispStringHCenterAt("Dropdown - Sample", 160, 5); 
  GUI_Delay(SPEED / 2); 
  /* Create listbox */ 
  GUI_SetFont(&GUI_Font8x16); 
  GUI_SetTextAlign(GUI_TA_LEFT); 
  GUI_DispStringAtCEOL("using", 5, 40); 
  GUI_DispStringAtCEOL("DROPDOWN_CreateEx", 5, 55); 
  GUI_Delay(SPEED * 0.9); 
  hDropDown = DROPDOWN_CreateEx(100, 80, 120, 115-50, WM_HBKWIN, WM_CF_SHOW, 0, 0); 
  GUI_Delay(SPEED * 0.75); 
  /* Show serveral functions of listbox */ 
  _ShowSeveralFunctions(hDropDown); 
  /* Clear display */ 
  GUI_Clear(); 
  GUI_Delay(SPEED * 1.5); 
} 
 
/******************************************************************* 
* 
*       _DemoDropDownAsChild 
*/ 
static void _DemoDropDownAsChild(void) { 
  FRAMEWIN_Handle hFrame; 
  LISTBOX_Handle hDropDown; 
  /* Display titel */ 
  GUI_SetBkColor(0xB00000); 
  GUI_SetColor(0xFFFFFF); 
  GUI_SetFont(&GUI_Font24_ASCII); 
  GUI_DispStringHCenterAt("Dropdown as child - Sample", 160, 5); 
  GUI_Delay(SPEED / 2); 
  /* Create framewin */ 
  GUI_SetFont(&GUI_Font8x16); 
  GUI_SetTextAlign(GUI_TA_LEFT); 
  GUI_DispStringAtCEOL("using", 5, 40); 
  GUI_DispStringAtCEOL("FRAMEWIN_Create", 5, 55); 
  GUI_Delay(SPEED); 
  hFrame = FRAMEWIN_Create("DropDown", NULL, WM_CF_SHOW, 80, 80, 160, 140); 
  FRAMEWIN_SetFont(hFrame, &GUI_Font16B_ASCII); 
  FRAMEWIN_SetActive(hFrame, 1); 
  GUI_Delay(SPEED * 0.75); 
  /* Create listbox */ 
  GUI_DispStringAtCEOL("DROPDOWN_CreateEx", 5, 55); 
  GUI_Delay(SPEED); 
  hDropDown = DROPDOWN_CreateEx(20, 20, 120, 65, WM_GetClientWindow(hFrame), WM_CF_SHOW, 0, 0); 
  GUI_Delay(SPEED * 0.75); 
  /* Show serveral functions of listbox */ 
  _ShowSeveralFunctions(hDropDown); 
  /* Delete framewin widget */ 
  GUI_DispStringAtCEOL("FRAMEWIN_Delete", 5, 55); 
  GUI_Delay(SPEED); 
  FRAMEWIN_Delete(hFrame); 
  GUI_Delay(SPEED * 0.75); 
  /* Clear display */ 
  GUI_Clear(); 
  GUI_Delay(SPEED * 1.5); 
} 
 
/******************************************************************* 
* 
*       MainTask 
* 
*       Demonstrates DROPDOWN widget 
* 
******************************************************************** 
*/ 
 
void MainTask(void) { 
  GUI_Init(); 
  WM_SetDesktopColor(0xB00000); 
  GUI_Exec(); 
  while(1) { 
    _DemoDropDown(); 
    _DemoDropDownAsChild(); 
  } 
}