]> git.deb.at Git - pkg/abook.git/blobdiff - ui.c
launch_mutt() update
[pkg/abook.git] / ui.c
diff --git a/ui.c b/ui.c
index 25c6ba1146448eb5b6e84177caeb36adb108ba1b..c706963f86e550e26adaf18edcecb7e08257742c 100644 (file)
--- a/ui.c
+++ b/ui.c
 #      include <sys/ioctl.h>
 #endif
 
-#ifdef USE_ASCII_ONLY
-#      define UI_HLINE_CHAR            '-'
-#else
-#      define UI_HLINE_CHAR            ACS_HLINE
-#endif
-
-
 /*
  * external variables
  */
@@ -472,11 +465,16 @@ get_commands()
                        case 'Z': move_curitem(MOVE_ITEM_DOWN);
                                break;
 
-                       case 'm': launch_mutt(); break;
+                       case 'm': launch_mutt(selected_items() ?
+                                                 -1 : list_current_item());
+                                 refresh_screen();
+                                 break;
 
                        case 'p': ui_print_database(); break;
 
-                       case 'u': launch_lynx(); break;
+                       case 'u': launch_wwwbrowser(list_current_item());
+                                 refresh_screen();
+                                 break;
                }
        }
 }
@@ -509,6 +507,7 @@ ui_find(int next)
 {
        int item;
        static char findstr[81];
+       int search_fields[] = {NAME, EMAIL, NICK, -1};
 
        if(next) {
                if( !*findstr )
@@ -520,7 +519,8 @@ ui_find(int next)
                clear_statusline();
        }
 
-       if( (item = find_item(findstr, next ? curitem+1 : curitem)) >= 0 ) {
+       if( (item = find_item(findstr, next ? curitem+1 : curitem,
+                                       search_fields )) >= 0 ) {
                curitem = item;
                refresh_list();
        }
@@ -556,14 +556,35 @@ ui_print_database()
 {
        FILE *handle;
        char *command = options_get_str("print_command");
+       int mode;
 
-       if(!statusline_ask_boolean("Print addressbook", FALSE))
+       if( list_is_empty() )
                return;
 
+       statusline_addstr("Print All/Selected/Cancel (a/s/C)?");
+
+       switch( tolower(getch()) ) {
+               case 'a':
+                       mode = ENUM_ALL;
+                       break;
+               case 's':
+                       if( !selected_items() ) {
+                               statusline_msg("No selected items");
+                               return;
+                       }
+                       mode = ENUM_SELECTED;
+                       break;
+               default:
+                       clear_statusline();
+                       return;
+       }
+
+       clear_statusline();
+
        if( ! *command || (handle = popen(command, "w")) == NULL)
                return;
 
-       fexport("text", handle);
+       fexport("text", handle, mode);
        
        pclose(handle);
 }