Files
cdesktop/cde/programs/dtmail/dtmail/MsgScrollingList.hh

233 lines
6.5 KiB
C++

/*
*+SNOTICE
*
* $TOG: MsgScrollingList.hh /main/12 1998/10/22 19:56:25 mgreess $
*
* RESTRICTED CONFIDENTIAL INFORMATION:
*
* The information in this document is subject to special
* restrictions in a confidential disclosure agreement between
* HP, IBM, Sun, USL, SCO and Univel. Do not distribute this
* document outside HP, IBM, Sun, USL, SCO, or Univel without
* Sun's specific written approval. This document and all copies
* and derivative works thereof must be returned or destroyed at
* Sun's request.
*
* Copyright 1993 Sun Microsystems, Inc. All rights reserved.
*
*+ENOTICE
*/
#ifndef MSGSCROLLINGLIST_H
#define MSGSCROLLINGLIST_H
#ifdef DEAD_WOOD
#include "Image.h"
#endif /* DEAD_WOOD */
#include "MsgHndArray.hh"
#include "RoamCmds.h"
#include "ScrollingList.h"
#include "UIComponent.h"
#include "XmStrCollector.h"
#include "XtArgCollector.h"
//#include "UndeleteMessageFromListDialog.h"
extern "C" {
#include <X11/Intrinsic.h>
#include <X11/Xatom.h>
}
#include <Xm/Xm.h>
/* MSGLIST_* msgid 200 -299
*/
#define MSGLIST_SELMV 200
#define MSGLIST_SELCP 201
#define MSGLIST_NORC 202
#define MSGLIST_NOBOX 203
#define MSGLIST_NOOPEN 204
#define MSGLIST_MSGMV 205
#define MSGLIST_MSGSMV 206
#define MSGLIST_MSGCP 207
#define MSGLIST_MSGSCP 208
#define MSGLIST_NOSEL 209
#define MSGLIST_RAISE 210
#define MSGLIST_EXIT 211
#define MSGLIST_OKBUT 212
#define MSGLIST_DLGTTL 213
class Sort;
class MsgScrollingList : public ScrollingList {
public:
MsgScrollingList ( RoamMenuWindow *, Widget, char * );
~MsgScrollingList ();
// Accesors
int selected_item_position() { return _selected_item_position; }
RoamMenuWindow *parent() { return _parent; }
#ifdef DEAD_WOOD
void addChooseCommand( ChooseCmd * );
void addDeleteCommand( DeleteCmd * );
#endif /* DEAD_WOOD */
void select_next_item();
void select_prev_item();
DtMailMessageHandle msgno(int index);
MsgStruct* get_message_struct(int index);
DtMailMessageHandle current_msg_handle();
int position(DtMailMessageHandle msgno);
#ifdef DEAD_WOOD
int position(MsgStruct* a_msg_struct);
#endif /* DEAD_WOOD */
virtual const char *const className() {return ("MsgScrollingList");}
virtual void insertMsg(DtMailMessageHandle);
virtual void insertDeletedMsg(DtMailMessageHandle);
virtual void deleteSelected(Boolean silent = TRUE);
int copySelected(DtMailEnv &, char *, int delete_after_copy, int silent);
void items( XmString [], int );
#ifdef DEAD_WOOD
void appendMsg(DtMailMessageHandle msg_hndl, int sess_num);
void appendMsg(DtMailMessageHandle msgno);
DtMailMessageHandle lastMsg();
#endif /* DEAD_WOOD */
void clearMsgs();
void updateListItems(int current,
Boolean renumber_only = TRUE,
MsgHndArray *selected = NULL);
DtMailBoolean senderIsToHeaderWhenMailFromMe(void);
void checkDisplayProp(void);
XmString formatHeader(DtMailHeaderLine & retrieved,
int sess_num,
DtMailBoolean has_attachments,
DtMailBoolean new_msg);
void visibleItems(int n_vis)
{
XtVaSetValues(_w, XmNvisibleItemCount, n_vis, NULL);
}
int visibleItems(void)
{
int n_vis;
XtVaGetValues(_w, XmNvisibleItemCount, &n_vis, NULL);
return(n_vis);
}
Widget get_scrolling_list();
MsgHndArray *selected();
DtMailBoolean show_with_attachments(DtMailMessageHandle);
DtMailBoolean show_with_attachments(DtMail::Message * msg);
void display_message( DtMailEnv &, DtMailMessageHandle );
void display_and_select_message(DtMailEnv &, DtMailMessageHandle );
// Select all of the messages in the list and display the last one.
void select_all_and_display_last(DtMailEnv &);
//
// Select all of the messages in the array[] of DtMailMessageHandle.
// 'array' is NULL terminated list.
//
void select_all_and_display_last(DtMailEnv &,
DtMailMessageHandle *array,
unsigned int elements);
void display_no_message();
void scroll_to_bottom();
void scroll_to_position( int );
virtual void extended_selection( DtMailEnv &, int );
int get_selected_item();
int get_displayed_item();
int get_num_new_messages() { return num_new_messages; }
int get_num_deleted_messages() { return num_deleted_messages; }
void expunge(void);
int resetIndexNums(void);
int resetSessionNums(void);
void layoutLabels();
void layoutLabels(Widget, Widget, Widget, Widget);
int get_num_messages() { return _msgs->length(); }
MsgHndArray *get_deleted_messages() { return _deleted_messages; }
MsgHndArray *get_messages() { return _msgs; }
void sort_messages();
void viewInSeparateWindow(DtMailEnv &);
void shutdown();
void undelete_messages(MsgHndArray *);
void undelete_last_deleted();
void display_message_summary();
#ifdef DEAD_WOOD
void display_message_selected();
#endif /* DEAD_WOOD */
void display_message(DtMailEnv &, int a_position);
int load_headers(DtMailEnv &);
void load_headers(DtMailEnv &, DtMailMessageHandle last);
void do_list_vis_adjustment();
// Save these to adjust as msg numbers changed ON/OFF.
Widget _sender_lbl;
Widget _subject_lbl;
Widget _date_lbl;
Widget _size_lbl;
protected:
virtual void defaultAction( Widget, XtPointer, XmListCallbackStruct * );
static void extendedSelectionCallback( Widget, XtPointer, XmListCallbackStruct * );
MsgHndArray *_msgs;
DtMailHeaderRequest _header_info;
// Msgs Popup stuff.
Widget _msgsPopupMenu;
MenuBar *_menuPopupMsgs;
private:
#ifdef DEAD_WOOD
Image *_attach_image;
Image *_letter_image;
#endif /* DEAD_WOOD */
RoamMenuWindow *_parent;
ChooseCmd *_choose;
DeleteCmd *_delete;
int _selected_item_position;
int _displayed_item_position;
int session_message_number;
int num_new_messages;
int num_deleted_messages;
MsgHndArray *_deleted_messages;
DtMailBoolean _numbered;
Boolean _selection_on;
Sort *_sorter;
// Collect the arguments to SetValues in load_headers
// This prevents multiple redisplays of the XmList widget
XtArgCollector *_xtarg_collector;
// Collect the XmString items in load_headers
XmStrCollector *_xmstr_collector;
// Save the XmString that was allocated so that we can
// free it later. It would probably be better to add this
// to the XtArgCollector class, but since it's only one
// item it's easier to do it this way.
XmString _selected_items;
};
#endif