void tree_draw_node_element(struct tree *tree, struct node_element *element) { return; #if 0 /* add element to listbrowser list */ struct Node *lbnode; struct treeview_window *twin = tree->handle; struct node *tempnode; int generation=1; BOOL edit = FALSE; tempnode = element->parent; edit = tempnode->editable; while(tempnode) { tempnode = tempnode->parent; generation++; } switch (element->type) { case NODE_ELEMENT_TEXT_PLUS_SPRITE: case NODE_ELEMENT_TEXT: if (lbnode = AllocListBrowserNode(3, // LBNA_UserData,nodetime, LBNA_Generation,1, LBNA_Column, 0, LBNCA_CopyText,TRUE, LBNCA_Text, element->text, LBNCA_Editable,edit, LBNA_Column, 1, LBNCA_CopyText,TRUE, LBNCA_Text, "", LBNA_Column, 2, LBNCA_CopyText,TRUE, LBNCA_Text, "", TAG_DONE)) { AddTail(twin->listbrowser_list, lbnode); } break; } #endif }
static struct List *BrowserNodes2(char **labels1, char **labels2) { struct List *list; list = AllocVec(sizeof(struct List), MEMF_PUBLIC|MEMF_CLEAR); if(list != NULL) { struct Node *node; NewList(list); while (*labels1 && *labels2) { node = AllocListBrowserNode(2, LBNA_Column, 0, LBNCA_Text, *labels1, LBNA_Column, 1, LBNCA_Text, *labels2, TAG_DONE ); if (node != NULL ) { AddTail(list, node); } else { FreeBrowserNodes2(list); list = NULL; break; } labels1++; labels2++; } } return list; }
static uint32 myStringSearch( Class *cl, Object *obj ) { struct myStringClassData *data; struct Window *win; struct Node *node; struct Node *n; uint32 found; uint32 bufpos; STRPTR searchString; STRPTR compString; found = 0; data = INST_DATA( cl, obj ); win = data->Window; // Remove List and Free Nodes SetGadgetAttrs( (struct Gadget *)data->ListviewObject, win, NULL, LISTBROWSER_Labels, ~0, TAG_END ); while(( node = RemHead( &data->ListviewHeader ))) { FreeListBrowserNode( node ); } GetAttr( STRINGA_BufferPos, obj, &bufpos ); if ( bufpos == 0 ) { goto bailout; } //------------- searchString = strstr(data->SearchBuffer, "://"); if(searchString) { searchString += 3; if (bufpos >= searchString - data->SearchBuffer) bufpos -= searchString - data->SearchBuffer; } else searchString = data->SearchBuffer; node = GetHead( data->SearchHeader ); while( node ) { uint32 srcpos; BOOL possible; possible = FALSE; srcpos = 0; compString = strstr(node->ln_Name, "://"); if(compString) compString += 3; else compString = node->ln_Name; if( 0 == strncasecmp( compString, searchString, bufpos ) ) { // found match after protocol possible = TRUE; } else { // no match after protocol, see if there's a match after www if( 0 == strncasecmp( compString, "www.", 4) ) { // got www, compare it! if( 0 == strncasecmp( &compString[4], searchString, bufpos ) ) possible = TRUE; } } if ( possible == TRUE ) { n = AllocListBrowserNode( 1, LBNA_Column, 0, LBNCA_CopyText, TRUE, LBNCA_Text, node->ln_Name, TAG_END ); if ( n ) { AddTail( &data->ListviewHeader, n ); found++; } } node = GetSucc( node ); } //------------- bailout: data->ListviewCount = found; data->ListviewSelected = -1; // Add List Again RefreshSetGadgetAttrs( (struct Gadget *)data->ListviewObject, win, NULL, LISTBROWSER_Labels, &data->ListviewHeader, LISTBROWSER_Selected, data->ListviewSelected, LISTBROWSER_MakeVisible, 0, TAG_END ); return( found ); }
void ami_add_elements(struct treeview_window *twin,struct node *root,WORD *gen) { struct Node *lbnode; struct tree *tree = twin->tree; struct node *tempnode; int generation=1; BOOL edit = FALSE; struct node_element *element=NULL,*element2=NULL,*element3=NULL; struct node *node; ULONG flags = 0; STRPTR text1 = "",text2 = "",text3 = ""; *gen = *gen + 1; for (node = root; node; node = node->next) { element = tree_find_element(node, TREE_ELEMENT_NAME); if(!element) element = tree_find_element(node, TREE_ELEMENT_TITLE); if(!element) element = tree_find_element(node, TREE_ELEMENT_SSL); if(element && element->text) { text1 = (char *)element->text; } /* Really, the second column needs axing - relevant data should appear in an area below the listview when items are selected */ element2 = tree_find_element(node, TREE_ELEMENT_URL); if(!element2) element2 = tree_find_element(node, TREE_ELEMENT_VALUE); if(!element2) element2 = tree_find_element(node, TREE_ELEMENT_COMMENT); if(element2 && element2->text) { text2 = (char *)element2->text; } else { text2 = ""; } // element = tree_find_element(node, TREE_ELEMENT_VISITS); flags = 0; /*if(node->expanded) */ flags = LBFLG_SHOWCHILDREN; if(node->folder) flags |= LBFLG_HASCHILDREN; if(!node->parent) flags |= LBFLG_HIDDEN; switch (element->type) { case NODE_ELEMENT_TEXT_PLUS_SPRITE: case NODE_ELEMENT_TEXT: if (lbnode = AllocListBrowserNode(3, LBNA_UserData,node, LBNA_Generation,*gen - 1, LBNA_Selected,node->selected, LBNA_Flags,flags, LBNA_Column, 0, LBNCA_CopyText,TRUE, LBNCA_MaxChars,256, LBNCA_Text, text1, LBNCA_Editable,node->editable, LBNA_Column, 1, LBNCA_CopyText,TRUE, LBNCA_MaxChars,256, LBNCA_Text, text2, LBNCA_Editable,FALSE, TAG_DONE)) { AddTail(twin->listbrowser_list, lbnode); if(node == selectednode2) selectednode = lbnode; } break; } if (node->child) { ami_add_elements(twin,node->child,gen); } } *gen = *gen - 1; }