189 lines
5.1 KiB
C++
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
|