static void post_insert(struct avl_tree *tree, struct avl_node *node) { struct avl_node *parent = node->parent; if (parent == NULL) return; if (node == parent->left) { parent->balance--; if (parent->balance == 0) return; if (parent->balance == -1) { post_insert(tree, parent); return; } if (node->balance == -1) { avl_rotate_right(tree, parent); return; } avl_rotate_left(tree, node); avl_rotate_right(tree, node->parent->parent); return; } parent->balance++; if (parent->balance == 0) return; if (parent->balance == 1) { post_insert(tree, parent); return; } if (node->balance == 1) { avl_rotate_left(tree, parent); return; } avl_rotate_right(tree, node); avl_rotate_left(tree, node->parent->parent); }
void Cdlg_make_torrent::OnDropFiles(HDROP hDropInfo) { int c_files = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0); for (int i = 0; i < c_files; i++) { char name[MAX_PATH]; DragQueryFile(hDropInfo, i, name, MAX_PATH); insert(name); } ETSLayoutDialog::OnDropFiles(hDropInfo); post_insert(); }
BOOL Cdlg_make_torrent::OnInitDialog() { m_tracker = AfxGetApp()->GetProfileString(m_strRegStore, "tracker"); m_trackers = AfxGetApp()->GetProfileString(m_strRegStore, "trackers"); m_use_merkle = AfxGetApp()->GetProfileInt(m_strRegStore, "use_merkle", false); ETSLayoutDialog::OnInitDialog(); CreateRoot(VERTICAL) << (pane(HORIZONTAL, ABSOLUTE_VERT) << item(IDC_NAME_STATIC, NORESIZE) << item(IDC_NAME, GREEDY) ) << (pane(HORIZONTAL, ABSOLUTE_VERT) << item(IDC_TRACKER_STATIC, NORESIZE) << item(IDC_TRACKER, GREEDY) ) << (pane(HORIZONTAL, ABSOLUTE_VERT) << item(IDC_TRACKERS_STATIC, NORESIZE) << item(IDC_TRACKERS, GREEDY) ) << item(IDC_LIST, GREEDY) << (pane(HORIZONTAL, ABSOLUTE_VERT) << item(IDC_SEED_AFTER_MAKING, NORESIZE) << item(IDC_USE_MERKLE, NORESIZE) << itemGrowing(HORIZONTAL) << item(IDC_LOAD_TRACKERS, NORESIZE) << item(IDC_SAVE, NORESIZE) ) ; UpdateLayout(); m_list.InsertColumn(0, "Name"); m_list.InsertColumn(1, "Size", LVCFMT_RIGHT); m_list.InsertColumn(2, ""); m_sort_column = 0; m_sort_reverse = false; for (t_map::const_iterator i = m_map.begin(); i != m_map.end(); i++) m_list.InsertItemData(i->first); post_insert(); return true; }