]> git.deb.at Git - pkg/abook.git/blobdiff - ui.c
wrap searches
[pkg/abook.git] / ui.c
diff --git a/ui.c b/ui.c
index ceb61dbd45fcab29d2edd834a6a6bb25f7b7264d..aa49d48d5e23b6f92d002a91dc7ee267315dd09e 100644 (file)
--- a/ui.c
+++ b/ui.c
@@ -59,7 +59,6 @@ bool can_resize = FALSE;
 WINDOW *top = NULL, *bottom = NULL;
 
 
-
 static void
 init_windows()
 {
@@ -384,7 +383,8 @@ get_commands()
                can_resize = FALSE; /* it's not safe to resize anymore */
                switch( ch ) {
                        case 'q': return;
-                       case 'Q': print_stderr(selected_items() ?
+                       case 'Q': quit_abook(QUIT_DONTSAVE);    break;
+                       case 'P': print_stderr(selected_items() ?
                                                  -1 : list_current_item());
                                  return;
                        case '?':
@@ -396,6 +396,7 @@ get_commands()
                        case KEY_DC:
                        case 'd':
                        case 'r': ui_remove_items();    break;
+                       case 'D': duplicate_item();     break;
                        case 12: refresh_screen();      break;
 
                        case 'k':
@@ -421,8 +422,9 @@ get_commands()
 
                        case 'o': ui_open_datafile();   break;
 
-                       case 's': sort_database();      break;
+                       case 's': sort_by_field(NAME);  break;
                        case 'S': sort_surname();       break;
+                       case 'F': sort_by_field(-1);    break;
 
                        case '/': ui_find(0);           break;
                        case '\\': ui_find(1);          break;
@@ -487,10 +489,12 @@ ui_clear_database()
 void
 ui_find(int next)
 {
-       int item;
+       int item = -1;
        static char findstr[MAX_FIELD_LEN];
        int search_fields[] = {NAME, EMAIL, NICK, -1};
 
+       clear_statusline();
+
        if(next) {
                if( !*findstr )
                        return;
@@ -502,12 +506,15 @@ ui_find(int next)
                refresh_screen();
        }
 
-       if( (item = find_item(findstr, curitem + !!next,
-                                       search_fields )) >= 0 ) {
+       if( (item = find_item(findstr, curitem + !!next, search_fields)) < 0)
+               if((item = find_item(findstr, 0, search_fields)) >= 0)
+                       statusline_addstr(
+                               "Search hit bottom, continuing at top");
+
+       if(item >= 0) {
                curitem = item;
                refresh_list();
        }
-
 }