static char rcsid[] = "@(#)$Id: mailbox.c,v 1.8 2006/04/09 07:37:42 hurtta Exp $";

/******************************************************************************
 *  The Elm (ME+) Mail System  -  $Revision: 1.8 $   $State: Exp $
 *
 *  Author: Kari Hurtta <hurtta+elm@posti.FMI.FI>
 *****************************************************************************/

#include "def_mcommon.h"
#include "s_elm.h"

DEBUG_VAR(Debug,__FILE__,"menu");

#if ANSI_C
#define S_(x) static x;
#else
#define S_(x)
#endif

S_(mc_get_type_common mc_get_type_mbx)
static int mc_get_type_mbx P_((union mcommon_union *u, int idx));
static int mc_get_type_mbx(u,idx)
     union mcommon_union *u; 
     int idx;
{
    /* messages do not have types */

    return 0;
}


S_(mc_setf_status_common mc_setf_status_mbx)
static int mc_setf_status_mbx P_((union mcommon_union *u, int idx, 
				  enum status_x t, int stat));
static int mc_setf_status_mbx(u,idx, t, stat)
     union mcommon_union *u; 
     int idx;
     enum status_x t;
     int stat;
{
    struct MailboxView *mbxview = u->mbx.mw;
    int r = 0;

    if (mbxview) 
	r = setf_status_message(mbxview,idx,t,stat);
	           
    return r;
}

S_(mc_get_current_common mc_get_current_mbx)
static int mc_get_current_mbx P_((union mcommon_union *u));
static int mc_get_current_mbx(u)
     union mcommon_union *u; 
{
    struct MailboxView *mbxview = u->mbx.mw;

    if (!mbxview)
	return 0;

    return get_current(mbxview);
}


S_(mc_ison_status_common mc_ison_status_mbx)
static int mc_ison_status_mbx P_((union mcommon_union *u, int idx, 
				  enum status_x t, int stat));
static int mc_ison_status_mbx(u,idx, t, stat)
     union mcommon_union *u; 
     int idx;
     enum status_x t;
     int stat;
{
    struct MailboxView *mbxview = u->mbx.mw;
    int r = 0;

    if (mbxview) 
	r = ison_status_message(mbxview,idx,t,stat);
    
    return r;
}


S_(mc_clearf_status_common mc_clearf_status_mbx)
static int mc_clearf_status_mbx P_((union mcommon_union *u, int idx, 
				    enum status_x t, int stat));
static int mc_clearf_status_mbx(u,idx, t, stat)
     union mcommon_union *u; 
     int idx;
     enum status_x t;
     int stat;
{
    struct MailboxView *mbxview = u->mbx.mw;
    int r = 0;

    if (mbxview) 
	r = clearf_status_message(mbxview,idx,t,stat);
   
    return r;
}

S_(mc_show_status_common mc_show_status_mbx)
static char * mc_show_status_mbx P_((union mcommon_union *u, int idx));
static char * mc_show_status_mbx(u,idx)
     union mcommon_union *u; 
     int idx;
{
    struct MailboxView *mbxview = u->mbx.mw;
    char * r = "??";

    if (mbxview) 
	r = show_status_message(mbxview,idx);
    
    return r;
}

S_(mc_get_count_common mc_get_count_mbx)
static int mc_get_count_mbx P_((union mcommon_union *u));
static int mc_get_count_mbx(u)
     union mcommon_union *u; 
{
    struct MailboxView *mbxview = u->mbx.mw;

    if (!mbxview)
	return 0;

    return get_message_count(mbxview);
}

S_(mc_get_selected_common mc_get_selected_mbx)
static int mc_get_selected_mbx P_((union mcommon_union *u));
static int mc_get_selected_mbx(u)
     union mcommon_union *u; 
{
    struct MailboxView *mbxview = u->mbx.mw;

    if (!mbxview)
	return 0;

    return get_selected(mbxview);
}

S_(mc_set_current_common mc_set_current_mbx)
static void mc_set_current_mbx P_((union mcommon_union *u, int cur));
static void mc_set_current_mbx(u, cur)
     union mcommon_union *u; 
     int cur;
{
    struct MailboxView *mbxview = u->mbx.mw;

    if (!mbxview)
	return;

    set_current(mbxview,cur);
}


S_(mc_set_selected_common mc_set_selected_mbx)
static void mc_set_selected_mbx P_((union mcommon_union *u, int cur));
static void mc_set_selected_mbx(u, cur)
     union mcommon_union *u; 
     int cur;
{
    struct MailboxView *mbxview = u->mbx.mw;

    if (!mbxview)
	return;

    set_selected(mbxview,cur);
}

S_(mc_title_common mc_title_mbx)
static struct string * mc_title_mbx P_((union mcommon_union *u));
static struct string *  mc_title_mbx(u)
     union mcommon_union *u; 
{
    struct MailboxView *mbxview = u->mbx.mw;
    
    if (!mbxview) 
	return format_string(CATGETS(elm_msg_cat, ElmSet, 
				     ElmShownTitleNoMailbox,
				     "No mailbox"));

    return mailbox_title(mbxview);
}


static struct mcommon_type  mcommon_mbx = {
    MCOMMON_TYPE_magic,
    mc_get_type_mbx,
    mc_setf_status_mbx,
    mc_get_current_mbx,
    mc_ison_status_mbx,
    mc_clearf_status_mbx,
    mc_show_status_mbx,
    mc_get_count_mbx,
    mc_matches_mbx,
    mc_get_selected_mbx,
    mc_set_current_mbx,
    mc_set_selected_mbx,
    mc_limit_helper_mbx,
    mc_limit_print_help_mbx,
    mc_limit_print_result_mbx,
    mc_match_in_text_mbx,
    mc_screen_print_mbx_line,
    mc_give_item_mbx,
    mc_title_mbx
};

void set_mcommon_from_mbxview P_((struct menu_common *m, struct MailboxView *aw));
void set_mcommon_from_mbxview(m,aw)
     struct menu_common *m; 
     struct MailboxView *aw;
{
    union mcommon_union u;
    
    if (sizeof u != sizeof (*m)) {
	panic("MENU COMMON PANIC",__FILE__,__LINE__,"set_mcommon_from_mbxview",
	      "size mismatch",0);
    }

    u.mbx.magic = MENU_COMMON_magic;
    u.mbx.mtype = &mcommon_mbx;
    u.mbx.mw    = aw;

    if (u.gen.mtype != &mcommon_mbx) {
	panic("MENU COMMON PANIC",__FILE__,__LINE__,"set_mcommon_from_mbxview",
	      "pointer error",0);
    }

    *m = u.gen;
}

/*
 * Local Variables:
 *  mode:c
 *  c-basic-offset:4
 *  buffer-file-coding-system: iso-8859-1
 * End:
 */


syntax highlighted by Code2HTML, v. 0.9.1