www.pudn.com > tinywidget.rar > playlist.c
#include#include "../include/tnWidgets.h" #include #include #include #include struct dirent **namelist; DIR *fdir; int n,dirs=0,files=0; int pid; char path[500]="/"; char currpath[500]="/"; TN_WIDGET *main_widget,*listbox2,*scrollbar2; struct stat stbuf; int getdir(char *dir) { n = scandir(dir, &namelist, 0, alphasort); if (n < 0) return -1; else return 1; } void freedir(void) { int i; for(i=0; i < n; i++) free(namelist[i]); free(namelist); return; } void freelist(char **str,int m) { int i; for(i=0;i d_name); if((fdir=opendir(currpath))!=NULL) { closedir(fdir); tnAddItemToListBox(listbox,namelist[i]->d_name); dirs++; } else if(strstr(namelist[i]->d_name,"mp3")|| strstr(namelist[i]->d_name,"MP3")) { tnAddItemToListBox(listbox2,namelist[i]->d_name); files++; } } tnSetScrollRange(scrollbar,0,dirs < 15?0:dirs-15); tnSetScrollRange(scrollbar2,0,files < 15?0:files-15); return; } void scrollfunc(TN_WIDGET *scrollbar,DATA_POINTER dptr) { int position = tnGetThumbPosition (scrollbar); TN_WIDGET *lbox = (TN_WIDGET *)dptr; int currtop = tnGetListTop(lbox); if(position < currtop) tnListItemsLineDown(lbox,currtop-position); if(position > currtop) tnListItemsLineUp(lbox,position-currtop); return; } void buttonfunc1(TN_WIDGET *button,DATA_POINTER dptr) { printf("%d\n",pid); if(pid!=0) kill(pid,SIGKILL); return; } int main(int argc,char **argv) { TN_WIDGET *window,*listbox1,*scrollbar1,*listbox3,*scrollbar3,*button1,*button2; int i; main_widget=tnAppInitialize(argc,argv); window=tnCreateWidget(TN_WINDOW,main_widget,0,0,TN_HEIGHT,400,TN_WIDTH,480,TN_CAPTION,"Listbox demo",TN_END); listbox1=tnCreateWidget(TN_LISTBOX,window,50,50,TN_RESIZE,GR_FALSE,TN_HEIGHT,200,TN_WIDTH,80,TN_END); scrollbar1=tnCreateWidget(TN_SCROLLBAR,window,130,50,TN_HEIGHT,200,TN_WIDTH,20,TN_ORIENTATION,TN_VERTICAL,TN_END); listbox2=tnCreateWidget(TN_LISTBOX,window,200,50,TN_RESIZE,GR_FALSE,TN_HEIGHT,200,TN_WIDTH,80,TN_END); scrollbar2=tnCreateWidget(TN_SCROLLBAR,window,280,50,TN_HEIGHT,200,TN_WIDTH,20,TN_ORIENTATION,TN_VERTICAL,TN_END); listbox3=tnCreateWidget(TN_LISTBOX,window,350,50,TN_RESIZE,GR_FALSE,TN_HEIGHT,200,TN_WIDTH,80,TN_ENABLED,GR_FALSE,TN_END); scrollbar3=tnCreateWidget(TN_SCROLLBAR,window,430,50,TN_HEIGHT,200,TN_WIDTH,20,TN_ORIENTATION,TN_VERTICAL,TN_END); button1 = tnCreateWidget(TN_BUTTON,window,170,50,TN_WIDTH,20,TN_HEIGHT,20,TN_CAPTION,">",TN_END); button2 = tnCreateWidget(TN_BUTTON,window,170,90,TN_WIDTH,20,TN_HEIGHT,20,TN_CAPTION,"S",TN_END); getdir("/"); for(i=0;i d_name); if((fdir=opendir(currpath))!=NULL) { closedir(fdir); tnAddItemToListBox(listbox1,namelist[i]->d_name); dirs++; } else if(strstr(namelist[i]->d_name,"mp3") || strstr(namelist[i]->d_name,"MP3")) { tnAddItemToListBox(listbox2,namelist[i]->d_name); files++; } strcpy(currpath,path); } tnSetScrollRange(scrollbar1,0,dirs<15?0:dirs-15); tnSetScrollRange(scrollbar2,0,files<15?0:files-15); tnSetScrollRange(scrollbar3,0,0); tnRegisterCallBack(scrollbar1,CLICKED,scrollfunc,listbox1); tnRegisterCallBack(scrollbar2,CLICKED,scrollfunc,listbox2); tnRegisterCallBack(scrollbar3,CLICKED,scrollfunc,listbox3); tnRegisterCallBack(listbox1,CLICKED,listfunc1,scrollbar1); tnRegisterCallBack(button1,CLICKED,buttonfunc,listbox2); tnRegisterCallBack(button2,CLICKED,buttonfunc1,NULL); tnMainLoop(); return 0; }