⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sliderwidgetdemo_old.c

📁 高通brew平台上的BUIW控件中的slider的示例程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/*===========================================================================
FILE: SliderWidgetDemo.c
===========================================================================*/


/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "AEEModGen.h"          // Module interface definitions
#include "AEEAppGen.h"          // Applet interface definitions
#include "AEEShell.h"           // Shell interface definitions
#include "AEEForm.h"
#include "AEERootForm.h"

//#include "AEEDialog.h"
#include "AEERootForm.h"
#include "AEEWProperties.h"
#include "AEEXYContainer.h"
#include "AEEPropContainer.h"
#include "AEEStaticWidget.h"
#include "AEEStdLib.h"
#include "AEESliderWidget.h"

#include "SliderWidgetDemo.bid"		// class ID文件
#include "SliderWidgetDemo.brh"		// 资源文件


#define SLIDERWIDGETDEMO_RES_FILE "SliderWidgetDemo.bar"

//define applet structure
typedef struct _sliderDemo_1App {
	AEEApplet a; 
	IRootForm* rootForm;
	IForm* mainForm;
} sliderDemo_1App;


// app form structure
typedef struct sliderDemo_1AppForm sliderDemo_1AppForm;

struct sliderDemo_1AppForm {
	IShell*			piShell;
	IRootForm*		rootForm;
	
	IForm*			mainForm;
	HandlerDesc		mainFormHandler;
	
	IXYContainer*	mainContainer;
	IWidget*		numberStatic;

	IWidget*		sliderDemo_1;
	IWidget*		sliderDemo_2;
	IWidget*		sliderDemo_3;
};




/*-------------------------------------------------------------------
Function Prototypes
-------------------------------------------------------------------*/
static boolean		sliderDemo_1_HandleEvent (IApplet * pi, AEEEvent eCode,uint16 wParam, uint32 dwParam);
static int			sliderDemo_1_InitAppData (sliderDemo_1App* pMe);
static void			sliderDemo_1_FreeAppData (sliderDemo_1App* pMe);
static int			sliderDemo_1AppForm_New (IForm** ppo, IShell *piShell, IRootForm *pRootForm);
static int			sliderDemo_1AppForm_PopulateMainContainer (sliderDemo_1AppForm* pMe);
static boolean		sliderDemo_1AppForm_HandleEvent (void *po, AEEEvent evt, uint16 wParam, uint32 dwParam);
static void			sliderDemo_1AppForm_Delete (sliderDemo_1AppForm* pMe);

/*===============================================================================
FUNCTION DEFINITIONS
=============================================================================== */


//=====================================================================================
//
//=====================================================================================
void sliderDemo_1AppForm_Delete(sliderDemo_1AppForm* pMe)
{
	if(pMe->mainForm)
		IFORM_Release(pMe->mainForm);
	if(pMe->mainContainer)
		IXYCONTAINER_Release(pMe->mainContainer);
	if(pMe->numberStatic)
		IWIDGET_Release(pMe->numberStatic);
	if(pMe)
		FREE(pMe);
}


//=====================================================================================
//
//=====================================================================================
static boolean sliderDemo_1AppForm_HandleEvent(void *po, AEEEvent evt, uint16 wParam, uint32 dwParam)
{
	sliderDemo_1AppForm* pMe = (sliderDemo_1AppForm*) po;
	
	if(evt== EVT_KEY) {
		if (wParam == AVK_STAR) {
			IValueModel* zjz_ValueModel;
			uint16 nn;
			IWIDGET_GetModel(pMe->sliderDemo_1, AEEIID_VALUEMODEL, (IModel**)&zjz_ValueModel);
			nn = 15;
			IVALUEMODEL_SetValue(zjz_ValueModel, (void*)nn, 10, NULL);
			nn = (int)IVALUEMODEL_GetValue(zjz_ValueModel,NULL);//&nPos2);
			return TRUE;
		}
	}
	
	if ((wParam == AVK_UP) || (wParam == AVK_DOWN)){
		int result;
		int focusSlider;
		IWidget* containerWidget = NULL;
		//set WID_FORM to the container
		result = IXYCONTAINER_QueryInterface(pMe->mainContainer, AEEIID_WIDGET, (void**)&containerWidget);
		if(result ==0) {
			IFORM_SetWidget(pMe->mainForm, WID_FORM, containerWidget);
			focusSlider = IWIDGET_MoveFocus(containerWidget, pMe->sliderDemo_1);
			IWIDGET_Release(containerWidget);
		}
		
		if (focusSlider == 0) {
			IValueModel* zjz_ValueModel;
			uint16 nn;
			
			IWIDGET_GetModel(pMe->sliderDemo_1, AEEIID_VALUEMODEL, (IModel**)&zjz_ValueModel);
			nn = 15;
			//   IVALUEMODEL_SetValue(zjz_ValueModel, (void*)nn, 10, NULL);
			nn = (int)IVALUEMODEL_GetValue(zjz_ValueModel,NULL);//&nPos2);
			
			//nn = SliderWidget_GetPos(pMe->sliderDemo_1);
			IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_ACTIVE_BGCOLOR,MAKE_RGB(nn*2, nn, 255-nn));
			{
				IValueModel *pivm = 0;
				char ach[12];
				AECHAR awch[12];
				
				SNPRINTF(ach, sizeof(ach)-1, "%lu", (uint32)nn);
				STRTOWSTR(ach, awch, sizeof(awch));
				
				if(SUCCESS == IWIDGET_GetModel(pMe->numberStatic, AEEIID_VALUEMODEL, (IModel**) &pivm)) {
					IVALUEMODEL_SetText(pivm, awch, -1);
					IVALUEMODEL_Release(pivm);
				}
			}
			
		}
		return TRUE;
	}
	//the  default form handler is swapped with the sliderDemo_1AppForm handler
	// calling this allows the default form handler to handle the event
	return HANDLERDESC_Call(&pMe->mainFormHandler, evt, wParam, dwParam);
}





//=====================================================================================
//
//=====================================================================================
int sliderDemo_1AppForm_PopulateMainContainer(sliderDemo_1AppForm* pMe)
{
#define	SLIDER_DEMO_MAX_POS_1		100			// Slider #1的最大值 (最小值总为0)
#define	SLIDER_DEMO_MAX_POS_2		10			// Slider #2的最大值 (最小值总为0)
#define	SLIDER_DEMO_MAX_POS_3		30			// Slider #3的最大值 (最小值总为0)

//#define SLIDER_DEMO_
//#define	

	int					result = 0;
	IWidget*			containerWidget = NULL;
	IPropContainer*		propContainer = NULL;
	
	WExtent				we;
	WidgetProp			wp;
	WidgetPos			wpos;
	
	WExtent				zjz_we;
	WidgetProp			zjz_wp;
	WidgetPos			zjz_wpos;
	
	// zjz [5/16/2006]
	uint16				zjz_uint16;
	uint16				nPos = 100,nPos2,nPos3;
	IValueModel*		zjz_ValueModel = NULL;
	
	// ===
	
	// 创建容器(Container)与控件(widget)的实例
	result =  ISHELL_CreateInstance(pMe->piShell, AEECLSID_XYCONTAINER, (void**) &pMe->mainContainer);	// 创建坐标容器的实例,这个是Container
	result += ISHELL_CreateInstance(pMe->piShell, AEECLSID_PROPCONTAINER, (void**) &propContainer);		// 创建比例容器(列表容器)的实例,这个是Container
	result += ISHELL_CreateInstance(pMe->piShell, AEECLSID_STATICWIDGET, (void**)&pMe->numberStatic);	// 创建静态文本的实例,这个是widget
	result += ISHELL_CreateInstance(pMe->piShell, AEECLSID_SLIDERWIDGET, (void**)&pMe->sliderDemo_1);	// 创建Slider1的实例,这个是widget
	result += ISHELL_CreateInstance(pMe->piShell, AEECLSID_SLIDERWIDGET, (void**)&pMe->sliderDemo_2);	// 创建Slider2的实例,这个是widget
	result += ISHELL_CreateInstance(pMe->piShell, AEECLSID_SLIDERWIDGET, (void**)&pMe->sliderDemo_3);	// 创建Slider3的实例,这个是widget

	if(result != 0)	// 至少有一个实例创建失败
		return EFAILED;
		

	// 设置各个Slider的最大值 (宏PROP_SLIDER_MAXPOS)
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_SLIDER_MAXPOS,SLIDER_DEMO_MAX_POS_1);
	IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_SLIDER_MAXPOS,SLIDER_DEMO_MAX_POS_2);
	IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_SLIDER_MAXPOS,SLIDER_DEMO_MAX_POS_3);
	// 设置最大值的另一种方式	IWIDGET_SetSliderMaxPos(pMe->sliderDemo_1,最大值);


	// 注:Slider的滑杆边框由Border继承而来,针对Border的操作如宽度颜色等,一般都可用于Slider的滑杆
	// 设置Slider滑杆的边框宽度 (宏PROP_BORDERWIDTH)
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BORDERWIDTH,2);
	IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_BORDERWIDTH,1);
	IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_BORDERWIDTH,3);
	// 设置滑杆边框宽度的另一种方式 IWIDGET_SetBorderWidth(pMe->sliderDemo_1, 宽度);

	
	// 设置Slider手柄的颜色 (宏PROP_SLIDER_HANDLEBORDERCOLOR)
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB(  0, 255,   0));
	IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB(255,   0,   0));
	IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB(  0,   0, 255));
	// 设置手柄颜色的另一种方式 IWIDGET_SetSliderHandleBorderColor(pMe->sliderDemo_1,MAKE_RGB(红, 绿, 蓝));
	
	
	// 设置Slider滑杆边框的颜色
	// PROP_INACTIVE_BORDERCOLOR:	当Slider处于非活动状态时的色彩
	// PROP_ACTIVE_BORDERCOLOR:		当Slider处于活动状态时的色彩
	// PROP_BORDERCOLOR:			直接指定所有状态下的边框颜色(各状态颜色一起指定为同一色)
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_INACTIVE_BORDERCOLOR,MAKE_RGB(0, 0,255));
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_ACTIVE_BORDERCOLOR,MAKE_RGB(0, 255, 50));
	IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_INACTIVE_BORDERCOLOR,MAKE_RGB(0, 0,255));
	IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_ACTIVE_BORDERCOLOR,MAKE_RGB(0, 255, 50));
	IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_INACTIVE_BORDERCOLOR,MAKE_RGB(0, 0,255));
	IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_ACTIVE_BORDERCOLOR,MAKE_RGB(0, 255, 50));
	////....////....////....////....////
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BORDERCOLOR,MAKE_RGB(0, 0,255));
	IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_BORDERCOLOR,MAKE_RGB(0, 255, 50));
	IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_BORDERCOLOR,MAKE_RGB(0, 255, 50));
	////....////....////....////....////

	// 设置Slider滑杆杆体的颜色(滑杆底色)
	// PROP_BGCOLOR:				指定所有状态的颜色为同一色
	// PROP_ACTIVE_BGCOLOR          指定活动状态时的底色
	// PROP_INACTIVE_BGCOLOR        指定非活动状态时的底色
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BGCOLOR,MAKE_RGB(255,0 , 255));
	//IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BORDERCOLOR,MAKE_RGB(0, 0, 0));
	//IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BGCOLOR,MAKE_RGB(255,0 , 255));
	#define PROP_BGCOLOR                   0x130 // Set (only) all bgcolors to same value
#define PROP_ACTIVE_BGCOLOR            0x131 // Get/Set bgcolor when widget is active
#define PROP_INACTIVE_BGCOLOR          0x132 // Get/Set bgcolor when widget is inactive 

	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_LAYOUTSTYLE,LAYOUT_VERT);
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BORDERSTYLE,BORDERSTYLE_BEVELED);
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB(0, 200, 0));
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB(0, 200, 0));
	IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB(0, 200, 0));
	
	
	
	
	
	
	//   {
	//      IModel* zjzViewModel = NULL;
	//      IWIDGET_GetViewModel(pMe->sliderDemo_1, &zjzViewModel);
	//      IMODEL_AddListenerEx(zjzViewModel, &pMe->zjzSliderListener, (PFNLISTENER)SliderWidget_ViewModelHandler, pMe);
	//      IMODEL_Release(zjzViewModel);
	//   }
	
	
	
	
	
	zjz_we.height = 10;
	zjz_we.width = 60;
	IWIDGET_SetExtent(pMe->sliderDemo_1,&zjz_we);
	
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -