//
//	Legato Code Examples
//	--------------------
//
//	Dialog Examples -- Combo Box Controls
//
//	Group:		Dialog
//	Title:		Combo Box Controls B (Drop Style)
//	Description:	Example of coding combo box style controls exhibiting various combo box features.
//	Revised:	12/16/2014
//
//	(c) Novaworks/PSG
//


								/************************************************/

									/****************************************/
#include "Combobox Controls 02.rc"

								/************************************************/

									/****************************************/
									/* ** Prototypes			*/
	int 		combo_update			();		/* Our Support for Dialog Status	*/
									/*					*/
									/* ** Static Data			*/
	int		s_ix;						/* Persistent Select Index		*/
        int		drop;						/* Drop Toggle Flag			*/


								/************************************************/

									/****************************************/
									/* Program Entry			*/
									/****************************************/

int main () {
	DialogBox("ComboBoxTest01", "combo_");
	}


								/************************************************/

									/****************************************/
									/* Dialog Service - Load		*/
									/****************************************/

int combo_load() {
	ComboBoxAddItem(CB_LIST, "Item 1 - Cats");
	ComboBoxAddItem(CB_LIST, "Item 2 - Dogs");
	ComboBoxAddItem(CB_LIST, "Item 3 - Farrets");
	ComboBoxAddItem(CB_LIST, "Item 4 - Mouses");
	combo_update();
	ComboBoxSetEditText(CB_LIST, "Set Text Test");
    	}
        
									/****************************************/
									/* Dialog Service - Action		*/
									/****************************************/
int combo_action(int c_id, int c_ac) {
    	string		s1;
        int		rc, width;


	if (c_id == CB_LIST) {						// Combo Box
	  if (c_ac == CBN_SELCHANGE) {
	    combo_update();
	    return 0;
	    }          
	  return 0;
          }
	if (c_id == CB_LOAD) {						// Load
	  s1 = ComboBoxGetEditText(CB_LIST);
	  if (s1 == "") {
	    s1 = "A1, A2 B, A3 CC, A4 DDD, A5 E E E, A6 END";
            }
          ComboBoxReset(CB_LIST);
	  ComboBoxLoadList(CB_LIST, s1);
	  combo_update();
	  EditSetText(CB_CONTENT, s1);
	  return 0;
          }
	if (c_id == CB_FOLDER) {					// Load Folder
	  s1 = ComboBoxGetEditText(CB_LIST);
	  if (s1 == "") {
	    s1 = "C:\\Windows\\*.*";
            }
          ComboBoxReset(CB_LIST);
	  ComboBoxLoadFolder(CB_LIST, s1, DDL_ARCHIVE);
	  combo_update();
	  EditSetText(CB_CONTENT, s1);
	  return 0;
          }
	if (c_id == CB_GET_WIDTH) {					// Get Width
	  width = ComboBoxGetDropWidth(CB_LIST);
	  s1 = FormatString("Drop Width = %d / %08X", width, width);
	  EditSetText(CB_CONTENT, s1);
	  return 0;
          }
	if (c_id == CB_SET_WIDTH) {					// Set Width
	  width = ComboBoxGetDropWidth(CB_LIST);
	  width += width / 2;
          ComboBoxSetDropWidth(CB_LIST, width);
	  return 0;
          }
	if (c_id == CB_SHOW_HIDE) {					// Drop Up/Down
	  rc = 0;
	  while (rc < 10) {
	    drop ^= 1;
            ComboBoxShowDropDown(CB_LIST, drop);
            rc++;
	    s1 = FormatString("Floppy = %d of 10", rc);
	    EditSetText(CB_CONTENT, s1);
	    Sleep(500);
            }
	  EditSetText(CB_CONTENT, "Done");
	  return 0;
          }
	if (c_id == CB_RESET) {						// Reset
          ComboBoxReset(CB_LIST);
	  combo_update();
	  return 0;
          }
	if (c_id == CB_INSERT) {					// Insert
          ComboBoxInsertItem(CB_LIST, 1, "Inserted at Position 1");
	  combo_update();
	  return 0;
          }
	if (c_id == CB_DELETE) {					// Delete
	  s_ix = ComboBoxGetSelectIndex(CB_LIST);
	  if (s_ix < 0) {
            MessageBox('X', "Nothing selected");
            }
          ComboBoxDeleteItem(CB_LIST, s_ix);
	  combo_update();
	  return 0;
          }
	if (c_id == CB_SELECT) {					// Select
          ComboBoxSelectItem(CB_LIST, s_ix);
	  s_ix++;
	  combo_update();
	  return 0;
          }
	if (c_id == CB_SEL_RESET) {					// Select Reset
	  s_ix = -1;
          ComboBoxSelectItem(CB_LIST, s_ix);
	  combo_update();
	  return 0;
          }
    	}

									/****************************************/
									/* Dialog Support 			*/
									/****************************************/
int combo_update() {
	string		s1;
	int		ix, ic;

	ix = ComboBoxGetSelectIndex(CB_LIST);
	ic = ComboBoxGetItemCount(CB_LIST);
        if (ix < 0) {
          EditSetText(CB_INDEX, "(not selected)");
	  EditSetText(CB_CONTENT, "(no data)");
	  ControlDisable(CB_DELETE);
          }
        else {
          EditSetText(CB_INDEX, ix);
	  s1 = ComboBoxGetItemText(CB_LIST, ix);
	  EditSetText(CB_CONTENT, s1);
	  ControlEnable(CB_DELETE);
          }
        EditSetText(CB_TOTAL_ITEMS, ic);
    	}
