Mozilla/mozilla/cmd/xfe/src/ComposeAttachFolderView.h
dmose%mozilla.org 83e38c06cc updated license boilerplate to xPL v1.1
git-svn-id: svn://10.0.0.236/trunk@52594 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-02 22:43:10 +00:00

189 lines
5.1 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
/*
ComposeAttachFolderView.h -- class definitions for compose attachment folder
Created: Alastair Gourlay(SGI) c/o Dora Hsu<dora@netscape.com>, 26 Nov 1996
*/
#ifndef _COMPOSE_ATTACH_FOLDER_VIEW_H
#define _COMPOSE_ATTACH_FOLDER_VIEW_H
//
// ComposeAttachFolderView.h
//
// Classes in this file:
// XFE_ComposeAttachFolderView
// XFE_ComposeAttachPanel
// XFE_ComposeAttachDrop
//
#include "MNView.h"
#include "AttachPanel.h"
#include "DragDrop.h"
#include "ComposeAttachDialog.h"
#include "PopupMenu.h"
class XFE_ComposeAttachDrop;
class XFE_ComposeAttachPanel;
class XFE_ComposeAttachLocationDialog;
class XFE_ComposeAttachFileDialog;
//
// XFE_ComposeAttachFolderView
//
class XFE_ComposeAttachFolderView : public XFE_MNView
{
public:
XFE_ComposeAttachFolderView(
XFE_Component *toplevel_component, XFE_View *parent_view,
MSG_Pane *p = NULL, MWContext *context = NULL);
virtual ~XFE_ComposeAttachFolderView();
// widgets
virtual void createWidgets(Widget);
virtual void show();
virtual void hide();
virtual void updateSelectionUI();
// commands
virtual Boolean isCommandEnabled(CommandType,void* calldata=NULL,
XFE_CommandInfo* i = NULL);
virtual Boolean handlesCommand(CommandType,void* calldata=NULL,
XFE_CommandInfo* i = NULL);
virtual void doCommand(CommandType,void* calldata=NULL,
XFE_CommandInfo* i = NULL);
// attachments
void folderVisible(int);
int maxAttachments() { return _maxAttachments; };
int numAttachments() { return _numAttachments; };
int addAttachment(const char*,int pre_existing=FALSE,Boolean attach_binary=FALSE);
int addAttachments(const char**,int,int pre_existing=FALSE,Boolean attach_binary=FALSE);
void deleteAttachment(int);
void updateAttachments();
void addExistingAttachments();
void scrollToItem(int);
char *parseItemLabel(const char*);
// entry point used by XFE_TaskBarDrop for mail+news drops
static int validateAttachment(Widget,const char*);
// entry points for external objects to control attachments
void attachFile();
void attachLocation();
void deleteAttach();
void openAttachment(int);
#if !defined(USE_MOTIF_DND)
// internal drag management
static void AttachDropCb(Widget,void*,fe_dnd_Event,fe_dnd_Source*,XEvent*);
void attachDropCb(fe_dnd_Source*);
#endif /* USE_MOTIF_DND */
private:
XFE_ComposeAttachPanel *_attachPanel;
XFE_ComposeAttachLocationDialog *_attachLocationDialog;
XFE_ComposeAttachFileDialog *_attachFileDialog;
XFE_PopupMenu *_xfePopup;
int _addedExistingAttachments;
MWContext* _context;
int _folderVisible;
int _numAttachments;
struct MSG_AttachmentData *_attachments;
Widget _deleteAttachButton;
static char *_lastAttachmentType;
static const int _maxAttachments;
// internal utilities
int verifySafeToAttach();
#if !defined(USE_MOTIF_DND)
void processBookmarkDrop(fe_dnd_Source*);
void processHistoryDrop(fe_dnd_Source*);
void processMessageDrop(fe_dnd_Source*);
#endif /* USE_MOTIF_DND */
};
//
// XFE_ComposeAttachPanel
//
class XFE_ComposeAttachPanel : public XFE_AttachPanel {
public:
XFE_ComposeAttachPanel(XFE_ComposeAttachFolderView*,MWContext*);
virtual ~XFE_ComposeAttachPanel();
// widgets
void createWidgets(Widget);
void show();
void hide();
void setSensitive(Boolean);
// hooks for XFE_DropAttach
int dropAttachment(const char *);
int dropAttachments(const char**,int);
protected:
XFE_ComposeAttachFolderView *_attachFolder;
Widget _delete;
XFE_ComposeAttachDrop *_dropSite;
// AttachPanel methods
void doubleClickCb(int);
// internal UI management
virtual void updateSelectionUI();
private:
};
//
// XFE_ComposeAttachDrop
//
class XFE_ComposeAttachDrop : public XFE_DropNetscape
{
public:
XFE_ComposeAttachDrop(Widget,XFE_ComposeAttachPanel*);
virtual ~XFE_ComposeAttachDrop();
protected:
XFE_ComposeAttachPanel *_attachPanel;
// base class methods changed
void operations(); // override to set _operations
void targets(); // override to augment XFE_DropFile _targets
int processTargets(Atom*,const char**,int);
private:
};
#endif // _COMPOSE_ATTACH_FOLDER_VIEW_H