зеркало из https://github.com/mozilla/gecko-dev.git
299 строки
8.7 KiB
C
299 строки
8.7 KiB
C
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|||
|
*
|
|||
|
* The contents of this file are subject to the Netscape Public License
|
|||
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|||
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|||
|
* http://www.mozilla.org/NPL/
|
|||
|
*
|
|||
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|||
|
* for the specific language governing rights and limitations under the
|
|||
|
* NPL.
|
|||
|
*
|
|||
|
* The Initial Developer of this code under the NPL is Netscape
|
|||
|
* Communications Corporation. Portions created by Netscape are
|
|||
|
* Copyright (C) 1997 Netscape Communications Corporation. All Rights
|
|||
|
* Reserved.
|
|||
|
*/
|
|||
|
|
|||
|
// CAddressBookWindows.h
|
|||
|
|
|||
|
#pragma once
|
|||
|
#include "abcom.H"
|
|||
|
#ifdef MOZ_NEWADDR
|
|||
|
class CComposeAddressTableView;
|
|||
|
/*====================================================================================*/
|
|||
|
#pragma mark INCLUDE FILES
|
|||
|
/*====================================================================================*/
|
|||
|
|
|||
|
#include "CMailNewsWindow.h"
|
|||
|
#include "CMailNewsContext.h"
|
|||
|
#include "LGADialogBox.h"
|
|||
|
#include "MailNewsCallbacks.h"
|
|||
|
|
|||
|
|
|||
|
class CSearchEditField;
|
|||
|
class LBroadcasterEditField;
|
|||
|
class CNamePropertiesWindow;
|
|||
|
class CListPropertiesWindow;
|
|||
|
class CMailingListTableView;
|
|||
|
class CAddressBookController;
|
|||
|
#pragma mark -
|
|||
|
/*====================================================================================*/
|
|||
|
#pragma mark TYPEDEFS
|
|||
|
/*====================================================================================*/
|
|||
|
typedef struct DIR_Server DIR_Server;
|
|||
|
typedef struct _XP_List XP_List;
|
|||
|
typedef UInt32 ABID;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#pragma mark -
|
|||
|
/*====================================================================================*/
|
|||
|
#pragma mark CONSTANTS
|
|||
|
/*====================================================================================*/
|
|||
|
|
|||
|
// Save window status version
|
|||
|
|
|||
|
static const UInt16 cAddressSaveWindowStatusVersion = 0x0219;
|
|||
|
static const UInt16 cNamePropertiesSaveWindowStatusVersion = 0x0202;
|
|||
|
static const UInt16 cListPropertiesSaveWindowStatusVersion = 0x0202;
|
|||
|
|
|||
|
#pragma mark -
|
|||
|
|
|||
|
extern "C"
|
|||
|
{
|
|||
|
int MacFe_ShowModelessPropertySheetForAB2( MSG_Pane * pane, MWContext* inContext);
|
|||
|
int MacFE_ShowPropertySheetForDir(
|
|||
|
DIR_Server* server, MWContext* context, MSG_Pane * srcPane, XP_Bool newDirectory );
|
|||
|
}
|
|||
|
class CAddressBookWindow;
|
|||
|
|
|||
|
|
|||
|
class CAddressBookManager
|
|||
|
{
|
|||
|
public:
|
|||
|
|
|||
|
// Should be called when the application starts up
|
|||
|
static void OpenAddressBookManager(void);
|
|||
|
// Should be called when the application closes
|
|||
|
static void CloseAddressBookManager(void);
|
|||
|
|
|||
|
static void ImportLDIF(const FSSpec& inSpec);
|
|||
|
|
|||
|
static CAddressBookWindow* ShowAddressBookWindow(void);
|
|||
|
|
|||
|
static XP_List *GetDirServerList(void);
|
|||
|
static void SetDirServerList(XP_List *inList, Boolean inSavePrefs = true);
|
|||
|
static DIR_Server *GetPersonalBook(void);
|
|||
|
|
|||
|
static void FailAddressError(Int32 inError);
|
|||
|
|
|||
|
|
|||
|
private:
|
|||
|
|
|||
|
static void RegisterAddressBookClasses(void);
|
|||
|
static int DirServerListChanged(const char*, void*)
|
|||
|
{
|
|||
|
CAddressBookManager::sDirServerListChanged = true;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
// Instance variables
|
|||
|
|
|||
|
static XP_List *sDirServerList;
|
|||
|
static Boolean sDirServerListChanged;
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
class CAddressBookWindow : public CMailNewsWindow
|
|||
|
{
|
|||
|
private:
|
|||
|
typedef CMailNewsWindow Inherited;
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
enum { class_ID = 'AbWn', pane_ID = class_ID, res_ID = 8900 };
|
|||
|
|
|||
|
// IDs for panes in associated view, also messages that are broadcast to this object
|
|||
|
enum {
|
|||
|
paneID_DirServers = 'DRSR' // CDirServersPopupMenu *, this
|
|||
|
, paneID_Search = 'SRCH' // MSG_Pane *, search button
|
|||
|
, paneID_Stop = 'STOP' // nil, stop button
|
|||
|
, paneID_AddressBookTable = 'Tabl' // Address book table
|
|||
|
, paneID_TypedownName = 'TYPE' // Typedown name search edit field in window
|
|||
|
, paneID_SearchEnclosure = 'SCHE' // Enclosure for search items
|
|||
|
, paneID_AddressBookController = 'AbCn'
|
|||
|
};
|
|||
|
|
|||
|
// Stream creator method
|
|||
|
|
|||
|
CAddressBookWindow(LStream *inStream) :
|
|||
|
CMailNewsWindow(inStream, WindowType_Address),
|
|||
|
mAddressBookController(nil)
|
|||
|
{
|
|||
|
SetPaneID(pane_ID);
|
|||
|
SetRefreshAllWhenResized(false);
|
|||
|
}
|
|||
|
virtual ~CAddressBookWindow();
|
|||
|
|
|||
|
virtual ResIDT GetStatusResID() const { return res_ID; }
|
|||
|
|
|||
|
static MWContext *GetMailContext();
|
|||
|
virtual CNSContext* CreateContext() const;
|
|||
|
virtual CMailFlexTable* GetActiveTable();
|
|||
|
|
|||
|
CAddressBookController* GetAddressBookController() const { return mAddressBookController; }
|
|||
|
protected:
|
|||
|
|
|||
|
// Overriden methods
|
|||
|
|
|||
|
virtual void FinishCreateSelf();
|
|||
|
|
|||
|
// Utility methods
|
|||
|
|
|||
|
virtual void ReadWindowStatus(LStream *inStatusData);
|
|||
|
virtual void WriteWindowStatus(LStream *outStatusData);
|
|||
|
virtual UInt16 GetValidStatusVersion() const { return cAddressSaveWindowStatusVersion; }
|
|||
|
|
|||
|
protected:
|
|||
|
CAddressBookController *mAddressBookController;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
class CAddressBookChildWindow : public LGADialogBox
|
|||
|
{
|
|||
|
private:
|
|||
|
typedef LGADialogBox Inherited;
|
|||
|
|
|||
|
public:
|
|||
|
CAddressBookChildWindow(LStream *inStream) :
|
|||
|
Inherited (inStream), mMSGPane( NULL )
|
|||
|
{
|
|||
|
SetRefreshAllWhenResized(false);
|
|||
|
}
|
|||
|
|
|||
|
virtual void UpdateBackendToUI() = 0L;
|
|||
|
virtual void UpdateUIToBackend( MSG_Pane* inPane ) = 0L;
|
|||
|
|
|||
|
protected:
|
|||
|
// Overriden methods
|
|||
|
virtual void ListenToMessage(MessageT inMessage, void *ioParam = nil);
|
|||
|
virtual void UpdateTitle()=0;
|
|||
|
// Instance variables
|
|||
|
MSG_Pane* mMSGPane;
|
|||
|
};
|
|||
|
|
|||
|
class CListPropertiesWindow : public CAddressBookChildWindow {
|
|||
|
|
|||
|
private:
|
|||
|
typedef CAddressBookChildWindow Inherited;
|
|||
|
|
|||
|
public:
|
|||
|
enum { class_ID = 'LpWn', pane_ID = class_ID, res_ID = 8940 };
|
|||
|
|
|||
|
// IDs for panes in associated view, also messages that are broadcast to this object
|
|||
|
enum {
|
|||
|
paneID_Name = 'NAME'
|
|||
|
, paneID_Nickname = 'NICK'
|
|||
|
, paneID_Description = 'DESC'
|
|||
|
, paneID_AddressBookListTable = 'Tabl' // Address book list table
|
|||
|
};
|
|||
|
|
|||
|
CListPropertiesWindow(LStream *inStream);
|
|||
|
virtual ~CListPropertiesWindow();
|
|||
|
|
|||
|
virtual void UpdateBackendToUI();
|
|||
|
virtual void UpdateUIToBackend( MSG_Pane* inPane );
|
|||
|
|
|||
|
protected:
|
|||
|
virtual void FinishCreateSelf();
|
|||
|
virtual void DrawSelf();
|
|||
|
virtual void UpdateTitle();
|
|||
|
|
|||
|
// Instance variables
|
|||
|
CMailingListTableView *mAddressBookListTable;
|
|||
|
CSearchEditField *mTitleField;
|
|||
|
};
|
|||
|
|
|||
|
class CMailWindowCallbackListener: public CMailCallbackListener
|
|||
|
{
|
|||
|
void CMailWindowCallBackListener( LWindow* inWindow )
|
|||
|
{
|
|||
|
mWindow = inWindow;
|
|||
|
}
|
|||
|
private:
|
|||
|
virtual void PaneChanged(
|
|||
|
MSG_Pane* inPane,
|
|||
|
MSG_PANE_CHANGED_NOTIFY_CODE inNotifyCode,
|
|||
|
int32 value);
|
|||
|
LWindow *mWindow;
|
|||
|
};
|
|||
|
|
|||
|
//------------------------------------------------------------------------------
|
|||
|
// <09> CNamePropertiesWindow
|
|||
|
//------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
class CNamePropertiesWindow : public CAddressBookChildWindow
|
|||
|
{
|
|||
|
private:
|
|||
|
typedef CAddressBookChildWindow Inherited;
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
enum { class_ID = 'NpWn', pane_ID = class_ID, res_ID = 8930 };
|
|||
|
|
|||
|
// IDs for panes in associated view, also messages that are broadcast to this object
|
|||
|
enum {
|
|||
|
paneID_GeneralView = 'GNVW' // General preferences view
|
|||
|
, paneID_FirstName = 'FNAM'
|
|||
|
, paneID_LastName = 'LNAM'
|
|||
|
, paneID_DisplayName = 'DNAM'
|
|||
|
, paneID_EMail = 'EMAL'
|
|||
|
, paneID_Nickname = 'NICK'
|
|||
|
, paneID_Notes = 'NOTE'
|
|||
|
, paneID_PrefersHTML = 'HTML'
|
|||
|
, paneID_ContactView = 'CNVW' // Contact preferences view
|
|||
|
, paneID_Company = 'COMP'
|
|||
|
, paneID_Title = 'TITL'
|
|||
|
, paneID_Department = 'DPRT'
|
|||
|
, paneID_Address = 'ADDR'
|
|||
|
, paneID_City = 'CITY'
|
|||
|
, paneID_State = 'STAT'
|
|||
|
, paneID_ZIP = 'ZIP '
|
|||
|
, paneID_Country = 'Coun'
|
|||
|
, paneID_WorkPhone = 'WPHO'
|
|||
|
, paneID_FaxPhone = 'FPHO'
|
|||
|
, paneID_PagerPhone = 'PPHO'
|
|||
|
, paneID_HomePhone = 'HPHO'
|
|||
|
, paneID_CelluarPhone = 'CPHO'
|
|||
|
, paneID_SecurityView = 'SCVW' // Security preferences view
|
|||
|
, paneID_CooltalkView = 'CLVW' // Cooltalk preferences view
|
|||
|
, paneID_ConferenceAddress = 'CAED'
|
|||
|
, paneID_ConferenceServer = 'CnPu'
|
|||
|
, paneID_None = 'NONE'
|
|||
|
};
|
|||
|
|
|||
|
enum { // Broadcast messages
|
|||
|
paneID_ConferencePopup ='CoPU' // conference pop up button
|
|||
|
};
|
|||
|
|
|||
|
CNamePropertiesWindow(LStream *inStream);
|
|||
|
virtual void UpdateBackendToUI();
|
|||
|
void UpdateUIToBackend( MSG_Pane *inPane );
|
|||
|
void SetConferenceText( );
|
|||
|
|
|||
|
protected:
|
|||
|
virtual void FinishCreateSelf();
|
|||
|
virtual void ListenToMessage(MessageT inMessage, void *ioParam = nil);
|
|||
|
virtual void UpdateTitle();
|
|||
|
|
|||
|
private:
|
|||
|
int32 GetPaneAndAttribID( TableIndexT index, PaneIDT& outPaneID, AB_AttribID &outAttrib );
|
|||
|
PaneIDT FindPaneForAttribute ( AB_AttribID inAttrib );
|
|||
|
protected:
|
|||
|
CMailWindowCallbackListener mCallBackListener;
|
|||
|
LBroadcasterEditField *mFirstNameField;
|
|||
|
LBroadcasterEditField *mLastNameField;
|
|||
|
};
|
|||
|
#endif // NEWADDR
|