int action_list_move_item_up_level() { Pw* curpw; PWList *curpwl, *iter; int i; char str[STRING_LONG]; char answer[STRING_MEDIUM]; switch(uilist_get_highlighted_type()){ case PW_ITEM: curpw = uilist_get_highlighted_item(); if(curpw && current_pw_sublist->parent){ pwlist_detach_pw(current_pw_sublist, curpw); pwlist_add_ptr(current_pw_sublist->parent, curpw); uilist_refresh(); } break; case PW_SUBLIST: curpwl = uilist_get_highlighted_sublist(); if(curpwl && current_pw_sublist->parent){ pwlist_detach_sublist(current_pw_sublist, curpwl); pwlist_add_sublist(current_pw_sublist->parent, curpwl); uilist_refresh(); } break; case PW_UPLEVEL: case PW_NULL: default: /* do nothing */ break; } }
int action_list_move_item() { Pw* curpw; PWList *curpwl, *iter; int i; char str[STRING_LONG]; char answer[STRING_MEDIUM]; switch(uilist_get_highlighted_type()){ case PW_ITEM: curpw = uilist_get_highlighted_item(); if(curpw){ while(1){ snprintf(str, STRING_LONG, "Move \"%s\" to where?", curpw->name); ui_statusline_ask_str(str, answer, STRING_MEDIUM); /* if user just enters nothing do nothing */ if(answer[0] == 0){ return 0; } for(iter = current_pw_sublist->sublists; iter != NULL; iter = iter->next){ if( strcmp(iter->name, answer) == 0 ){ pwlist_detach_pw(current_pw_sublist, curpw); pwlist_add_ptr(iter, curpw); uilist_refresh(); return 0; } } ui_statusline_msg("Sublist does not exist, try again"); getch(); } } break; case PW_SUBLIST: curpwl = uilist_get_highlighted_sublist(); if(curpwl){ while(1){ snprintf(str, STRING_LONG, "Move sublist \"%s\" to where?", curpwl->name); ui_statusline_ask_str(str, answer, STRING_MEDIUM); /* if user just enters nothing, do nothing */ if(answer[0] == 0){ return 0; } if( strcmp(answer, curpwl->name) == 0 ){ return 0; } for(iter = current_pw_sublist->sublists; iter != NULL; iter = iter->next){ if( strcmp(iter->name, answer) == 0 ){ pwlist_detach_sublist(current_pw_sublist, curpwl); pwlist_add_sublist(iter, curpwl); uilist_refresh(); return 0; } } ui_statusline_msg("Sublist does not exist, try again"); getch(); } } break; case PW_UPLEVEL: case PW_NULL: default: /* do nothing */ break; } }
int action_list_add_pw() { Pw *pw; InputField fields[] = { {"Name:\t", NULL, STRING_MEDIUM, STRING}, {"Host:\t", NULL, STRING_MEDIUM, STRING}, {"User:\t", NULL, STRING_MEDIUM, STRING}, {"Password:\t", NULL, STRING_SHORT, STRING, pwgen_ask}, {"Launch Command:\t", NULL, STRING_LONG, STRING} }; int i, x; pw = pwlist_new_pw(); ui_statusline_ask_str(fields[0].name, pw->name, STRING_MEDIUM); ui_statusline_ask_str(fields[1].name, pw->host, STRING_MEDIUM); ui_statusline_ask_str(fields[2].name, pw->user, STRING_MEDIUM); /* int x = strlen(msg) + 5; if(input == NULL){ input = malloc(len); } statusline_clear(); statusline_msg(msg); echo(); show_cursor(); mvwgetnstr(bottom, 1, x, input, len); noecho(); hide_cursor(); statusline_clear();*/ ui_statusline_ask_str_with_autogen(fields[3].name, pw->passwd, STRING_SHORT, fields[3].autogen, 0x07); /* statusline_msg(fields[3].name); x = strlen(fields[3].name) + 5; if((i = getch()) == 0x07){ pw->passwd = fields[3].autogen(); } else { echo(); show_cursor(); mvwgetnstr(bottom, 1, x, pw->passwd, PASS_LEN); mvwaddch(bottom, 1, x, i); wmove(bottom, 1, x+1); noecho(); hide_cursor(); statusline_clear(); }*/ ui_statusline_ask_str(fields[4].name, pw->launch, STRING_LONG); fields[0].value = pw->name; fields[1].value = pw->host; fields[2].value = pw->user; fields[3].value = pw->passwd; fields[4].value = pw->launch; i = action_yes_no_dialog(fields, (sizeof(fields)/sizeof(InputField)), NULL, "Add this entry"); if(i){ pwlist_add_ptr(current_pw_sublist, pw); ui_statusline_msg("New password added"); } else { pwlist_free_pw(pw); ui_statusline_msg("New password cancelled"); } uilist_refresh(); }