first part of a big cleanup of the Mail code
* separated window, app and context menu code * got rid of all the global variables (which were accessed completely without locking, and the code with regards to the preference window sill needs fixing) * extracted some defines and helper functions to MailSupport.cpp, though I later saw Utilities.cpp... * got rid of the FONT_SIZE define which was used in some (but not all) controls to override the system font size * worked in Header.cpp to get the controls layout font sensitive with correct alignment too, some problems remain when resizing the window git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22122 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1265,7 +1265,7 @@ BComboBox::TextView()
|
|||||||
void
|
void
|
||||||
BComboBox::SetDivider(float divide)
|
BComboBox::SetDivider(float divide)
|
||||||
{
|
{
|
||||||
float diff = fDivider - divide;
|
float diff = fDivider - divide;
|
||||||
fDivider = divide;
|
fDivider = divide;
|
||||||
|
|
||||||
fText->MoveBy(-diff, 0);
|
fText->MoveBy(-diff, 0);
|
||||||
|
|||||||
+18
-28
@@ -32,11 +32,6 @@ names are registered trademarks or trademarks of their respective holders.
|
|||||||
All rights reserved.
|
All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// Content.cpp
|
|
||||||
//
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -72,7 +67,10 @@ All rights reserved.
|
|||||||
|
|
||||||
#include <MDRLanguage.h>
|
#include <MDRLanguage.h>
|
||||||
|
|
||||||
#include "Mail.h"
|
#include "MailApp.h"
|
||||||
|
#include "MailSupport.h"
|
||||||
|
#include "MailWindow.h"
|
||||||
|
#include "Messages.h"
|
||||||
#include "Content.h"
|
#include "Content.h"
|
||||||
#include "Utilities.h"
|
#include "Utilities.h"
|
||||||
#include "FieldMsg.h"
|
#include "FieldMsg.h"
|
||||||
@@ -99,9 +97,6 @@ const rgb_color kQuoteColors[] =
|
|||||||
};
|
};
|
||||||
const int32 kNumQuoteColors = 3;
|
const int32 kNumQuoteColors = 3;
|
||||||
|
|
||||||
extern bool header_flag;
|
|
||||||
extern bool gColoredQuotes;
|
|
||||||
|
|
||||||
void Unicode2UTF8(int32 c, char **out);
|
void Unicode2UTF8(int32 c, char **out);
|
||||||
|
|
||||||
|
|
||||||
@@ -573,15 +568,13 @@ TextRunArray::~TextRunArray()
|
|||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
TContentView::TContentView(BRect rect, bool incoming, BEmailMessage *mail, BFont *font)
|
TContentView::TContentView(BRect rect, bool incoming, BEmailMessage *mail,
|
||||||
: BView(rect, "m_content", B_FOLLOW_ALL, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
|
BFont* font, bool showHeader, bool coloredQuotes)
|
||||||
|
: BView(rect, "m_content", B_FOLLOW_ALL, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
|
||||||
fFocus(false),
|
fFocus(false),
|
||||||
fIncoming(incoming)
|
fIncoming(incoming)
|
||||||
{
|
{
|
||||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
|
|
||||||
BFont v_font = *be_plain_font;
|
|
||||||
v_font.SetSize(FONT_SIZE);
|
|
||||||
fOffset = 12;
|
fOffset = 12;
|
||||||
|
|
||||||
BRect r(rect);
|
BRect r(rect);
|
||||||
@@ -593,7 +586,8 @@ TContentView::TContentView(BRect rect, bool incoming, BEmailMessage *mail, BFont
|
|||||||
text.OffsetTo(0, 0);
|
text.OffsetTo(0, 0);
|
||||||
text.InsetBy(5, 5);
|
text.InsetBy(5, 5);
|
||||||
|
|
||||||
fTextView = new TTextView(r, text, fIncoming, mail, this, font);
|
fTextView = new TTextView(r, text, fIncoming, mail, this, font,
|
||||||
|
showHeader, coloredQuotes);
|
||||||
BScrollView *scroll = new BScrollView("", fTextView, B_FOLLOW_ALL, 0, true, true);
|
BScrollView *scroll = new BScrollView("", fTextView, B_FOLLOW_ALL, 0, true, true);
|
||||||
AddChild(scroll);
|
AddChild(scroll);
|
||||||
}
|
}
|
||||||
@@ -768,12 +762,6 @@ TContentView::Focus(bool focus)
|
|||||||
void
|
void
|
||||||
TContentView::FrameResized(float /* width */, float /* height */)
|
TContentView::FrameResized(float /* width */, float /* height */)
|
||||||
{
|
{
|
||||||
BFont v_font = *be_plain_font;
|
|
||||||
v_font.SetSize(FONT_SIZE);
|
|
||||||
|
|
||||||
font_height fHeight;
|
|
||||||
v_font.GetHeight(&fHeight);
|
|
||||||
|
|
||||||
BRect r(fTextView->Bounds());
|
BRect r(fTextView->Bounds());
|
||||||
r.OffsetTo(0, 0);
|
r.OffsetTo(0, 0);
|
||||||
r.InsetBy(5, 5);
|
r.InsetBy(5, 5);
|
||||||
@@ -785,10 +773,12 @@ TContentView::FrameResized(float /* width */, float /* height */)
|
|||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
TTextView::TTextView(BRect frame, BRect text, bool incoming, BEmailMessage *mail,
|
TTextView::TTextView(BRect frame, BRect text, bool incoming,
|
||||||
TContentView *view, BFont *font)
|
BEmailMessage *mail, TContentView *view, BFont *font,
|
||||||
: BTextView(frame, "", text, B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE),
|
bool showHeader, bool coloredQuotes)
|
||||||
fHeader(header_flag),
|
: BTextView(frame, "", text, B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE),
|
||||||
|
fHeader(showHeader),
|
||||||
|
fColoredQuotes(coloredQuotes),
|
||||||
fReady(false),
|
fReady(false),
|
||||||
fYankBuffer(NULL),
|
fYankBuffer(NULL),
|
||||||
fLastPosition(-1),
|
fLastPosition(-1),
|
||||||
@@ -2355,7 +2345,7 @@ TTextView::Reader::Insert(const char *line, int32 count, bool isHyperLink, bool
|
|||||||
BFont font(fView->Font());
|
BFont font(fView->Font());
|
||||||
TextRunArray style(count / 8 + 8);
|
TextRunArray style(count / 8 + 8);
|
||||||
|
|
||||||
if (gColoredQuotes && !isHeader && !isHyperLink)
|
if (fView->fColoredQuotes && !isHeader && !isHyperLink)
|
||||||
FillInQuoteTextRuns(fView, line, count, font, &style.Array(), style.MaxEntries());
|
FillInQuoteTextRuns(fView, line, count, font, &style.Array(), style.MaxEntries());
|
||||||
else {
|
else {
|
||||||
text_run_array &array = style.Array();
|
text_run_array &array = style.Array();
|
||||||
@@ -3067,7 +3057,7 @@ TTextView::AddQuote(int32 start, int32 finish)
|
|||||||
free(text);
|
free(text);
|
||||||
Delete();
|
Delete();
|
||||||
|
|
||||||
if (gColoredQuotes) {
|
if (fColoredQuotes) {
|
||||||
const BFont *font = Font();
|
const BFont *font = Font();
|
||||||
TextRunArray style(targetLength / 8 + 8);
|
TextRunArray style(targetLength / 8 + 8);
|
||||||
|
|
||||||
@@ -3144,7 +3134,7 @@ TTextView::RemoveQuote(int32 start, int32 finish)
|
|||||||
if (removed) {
|
if (removed) {
|
||||||
Delete();
|
Delete();
|
||||||
|
|
||||||
if (gColoredQuotes) {
|
if (fColoredQuotes) {
|
||||||
const BFont *font = Font();
|
const BFont *font = Font();
|
||||||
TextRunArray style(length / 8 + 8);
|
TextRunArray style(length / 8 + 8);
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,8 @@ class TSavePanel;
|
|||||||
class TContentView : public BView
|
class TContentView : public BView
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TContentView(BRect, bool incoming, BEmailMessage *mail, BFont *);
|
TContentView(BRect, bool incoming, BEmailMessage *mail, BFont*,
|
||||||
|
bool showHeader, bool coloredQuotes);
|
||||||
virtual void MessageReceived(BMessage *);
|
virtual void MessageReceived(BMessage *);
|
||||||
void FindString(const char *);
|
void FindString(const char *);
|
||||||
void Focus(bool);
|
void Focus(bool);
|
||||||
@@ -140,7 +141,8 @@ enum {
|
|||||||
class TTextView : public BTextView
|
class TTextView : public BTextView
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TTextView(BRect, BRect, bool incoming, BEmailMessage *mail, TContentView *,BFont *);
|
TTextView(BRect, BRect, bool incoming, BEmailMessage *mail,
|
||||||
|
TContentView *, BFont *, bool showHeader, bool coloredQuotes);
|
||||||
~TTextView();
|
~TTextView();
|
||||||
|
|
||||||
virtual void AttachedToWindow();
|
virtual void AttachedToWindow();
|
||||||
@@ -175,6 +177,7 @@ class TTextView : public BTextView
|
|||||||
const BFont *Font() const { return &fFont; }
|
const BFont *Font() const { return &fFont; }
|
||||||
|
|
||||||
bool fHeader;
|
bool fHeader;
|
||||||
|
bool fColoredQuotes;
|
||||||
bool fReady;
|
bool fReady;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ All rights reserved.
|
|||||||
// and the view containing the list and handling the messages (TEnclosuresView).
|
// and the view containing the list and handling the messages (TEnclosuresView).
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
|
|
||||||
#include "Mail.h"
|
|
||||||
#include "Enclosures.h"
|
#include "Enclosures.h"
|
||||||
|
|
||||||
#include <Debug.h>
|
#include <Debug.h>
|
||||||
@@ -48,6 +47,7 @@ All rights reserved.
|
|||||||
#include <MenuItem.h>
|
#include <MenuItem.h>
|
||||||
#include <Alert.h>
|
#include <Alert.h>
|
||||||
#include <NodeMonitor.h>
|
#include <NodeMonitor.h>
|
||||||
|
#include <PopUpMenu.h>
|
||||||
|
|
||||||
#include <MailAttachment.h>
|
#include <MailAttachment.h>
|
||||||
#include <MailMessage.h>
|
#include <MailMessage.h>
|
||||||
@@ -58,9 +58,13 @@ All rights reserved.
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "MailApp.h"
|
||||||
|
#include "MailSupport.h"
|
||||||
|
#include "MailWindow.h"
|
||||||
|
#include "Messages.h"
|
||||||
|
|
||||||
//====================================================================
|
|
||||||
|
|
||||||
|
static const float kPlainFontSizeScale = 0.9;
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
GetTrackerIcon(BMimeType &type, BBitmap *icon, icon_size iconSize)
|
GetTrackerIcon(BMimeType &type, BBitmap *icon, icon_size iconSize)
|
||||||
@@ -125,10 +129,10 @@ TEnclosuresView::TEnclosuresView(BRect rect, BRect wind_rect)
|
|||||||
{
|
{
|
||||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
|
|
||||||
BFont font = *be_plain_font;
|
BFont font(be_plain_font);
|
||||||
font.SetSize(FONT_SIZE);
|
font.SetSize(font.Size() * kPlainFontSizeScale);
|
||||||
font_height fHeight;
|
SetFont(&font);
|
||||||
font.GetHeight(&fHeight);
|
|
||||||
fOffset = 12;
|
fOffset = 12;
|
||||||
|
|
||||||
BRect r;
|
BRect r;
|
||||||
@@ -166,16 +170,13 @@ TEnclosuresView::Draw(BRect where)
|
|||||||
{
|
{
|
||||||
BView::Draw(where);
|
BView::Draw(where);
|
||||||
|
|
||||||
BFont font = *be_plain_font;
|
|
||||||
font.SetSize(FONT_SIZE);
|
|
||||||
SetFont(&font);
|
|
||||||
SetHighColor(0, 0, 0);
|
SetHighColor(0, 0, 0);
|
||||||
SetLowColor(ViewColor());
|
SetLowColor(ViewColor());
|
||||||
|
|
||||||
font_height fHeight;
|
font_height fh;
|
||||||
font.GetHeight(&fHeight);
|
GetFontHeight(&fh);
|
||||||
|
|
||||||
MovePenTo(ENCLOSE_TEXT_H, ENCLOSE_TEXT_V + fHeight.ascent);
|
MovePenTo(ENCLOSE_TEXT_H, ENCLOSE_TEXT_V + fh.ascent);
|
||||||
DrawString(ENCLOSE_TEXT);
|
DrawString(ENCLOSE_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -396,8 +397,8 @@ TListView::AttachedToWindow()
|
|||||||
{
|
{
|
||||||
BListView::AttachedToWindow();
|
BListView::AttachedToWindow();
|
||||||
|
|
||||||
BFont font = *be_plain_font;
|
BFont font(be_plain_font);
|
||||||
font.SetSize(FONT_SIZE);
|
font.SetSize(font.Size() * kPlainFontSizeScale);
|
||||||
SetFont(&font);
|
SetFont(&font);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -509,7 +510,7 @@ TListItem::DrawItem(BView *owner, BRect r, bool /* complete */)
|
|||||||
owner->SetHighColor(0, 0, 0);
|
owner->SetHighColor(0, 0, 0);
|
||||||
|
|
||||||
BFont font = *be_plain_font;
|
BFont font = *be_plain_font;
|
||||||
font.SetSize(FONT_SIZE);
|
font.SetSize(font.Size() * kPlainFontSizeScale);
|
||||||
owner->SetFont(&font);
|
owner->SetFont(&font);
|
||||||
owner->MovePenTo(r.left + 24, r.bottom - 4);
|
owner->MovePenTo(r.left + 24, r.bottom - 4);
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,9 @@ All rights reserved.
|
|||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
#include "FindWindow.h"
|
#include "FindWindow.h"
|
||||||
#include "Mail.h"
|
#include "MailApp.h"
|
||||||
|
#include "MailWindow.h"
|
||||||
|
#include "Messages.h"
|
||||||
#include "AutoTextControl.h"
|
#include "AutoTextControl.h"
|
||||||
|
|
||||||
#include <TextView.h>
|
#include <TextView.h>
|
||||||
|
|||||||
+95
-68
@@ -32,7 +32,10 @@ names are registered trademarks or trademarks of their respective holders.
|
|||||||
All rights reserved.
|
All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Mail.h"
|
#include "MailApp.h"
|
||||||
|
#include "MailSupport.h"
|
||||||
|
#include "MailWindow.h"
|
||||||
|
#include "Messages.h"
|
||||||
#include "Header.h"
|
#include "Header.h"
|
||||||
#include "Utilities.h"
|
#include "Utilities.h"
|
||||||
#include "QueryMenu.h"
|
#include "QueryMenu.h"
|
||||||
@@ -46,6 +49,7 @@ All rights reserved.
|
|||||||
#include <CharacterSet.h>
|
#include <CharacterSet.h>
|
||||||
#include <CharacterSetRoster.h>
|
#include <CharacterSetRoster.h>
|
||||||
#include <E-mail.h>
|
#include <E-mail.h>
|
||||||
|
#include <MenuBar.h>
|
||||||
#include <MenuField.h>
|
#include <MenuField.h>
|
||||||
#include <MenuItem.h>
|
#include <MenuItem.h>
|
||||||
#include <PopUpMenu.h>
|
#include <PopUpMenu.h>
|
||||||
@@ -69,13 +73,13 @@ All rights reserved.
|
|||||||
using namespace BPrivate;
|
using namespace BPrivate;
|
||||||
using std::map;
|
using std::map;
|
||||||
|
|
||||||
extern uint32 gDefaultChain;
|
|
||||||
|
|
||||||
const char* kDateLabel = "Date:";
|
const char* kDateLabel = "Date:";
|
||||||
const uint32 kMsgFrom = 'hFrm';
|
const uint32 kMsgFrom = 'hFrm';
|
||||||
const uint32 kMsgEncoding = 'encd';
|
const uint32 kMsgEncoding = 'encd';
|
||||||
const uint32 kMsgAddressChosen = 'acsn';
|
const uint32 kMsgAddressChosen = 'acsn';
|
||||||
|
|
||||||
|
static const float kTextControlDividerOffset = 0;
|
||||||
|
static const float kMenuFieldDividerOffset = 6;
|
||||||
|
|
||||||
class QPopupMenu : public QueryMenu {
|
class QPopupMenu : public QueryMenu {
|
||||||
public:
|
public:
|
||||||
@@ -116,21 +120,26 @@ mail_to_filter(const char* text, int32& length, const text_run_array*& runs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const float kPlainFontSizeScale = 0.9;
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - THeaderView
|
// #pragma mark - THeaderView
|
||||||
|
|
||||||
|
|
||||||
THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
||||||
BEmailMessage *mail, bool resending, uint32 defaultCharacterSet)
|
BEmailMessage *mail, bool resending, uint32 defaultCharacterSet,
|
||||||
|
uint32 defaultChain)
|
||||||
: BBox(rect, "m_header", B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW, B_NO_BORDER),
|
: BBox(rect, "m_header", B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW, B_NO_BORDER),
|
||||||
fAccountMenu(NULL),
|
fAccountMenu(NULL),
|
||||||
fEncodingMenu(NULL),
|
fEncodingMenu(NULL),
|
||||||
fChain(gDefaultChain),
|
fChain(defaultChain),
|
||||||
fAccountTo(NULL),
|
fAccountTo(NULL),
|
||||||
fAccount(NULL),
|
fAccount(NULL),
|
||||||
fBcc(NULL),
|
fBcc(NULL),
|
||||||
fCc(NULL),
|
fCc(NULL),
|
||||||
fSubject(NULL),
|
fSubject(NULL),
|
||||||
fTo(NULL),
|
fTo(NULL),
|
||||||
|
fDateLabel(NULL),
|
||||||
fDate(NULL),
|
fDate(NULL),
|
||||||
fIncoming(incoming),
|
fIncoming(incoming),
|
||||||
fCharacterSetUserSees(defaultCharacterSet),
|
fCharacterSetUserSees(defaultCharacterSet),
|
||||||
@@ -143,13 +152,19 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
BMenuField* field;
|
BMenuField* field;
|
||||||
BMessage* msg;
|
BMessage* msg;
|
||||||
|
|
||||||
BFont font = *be_plain_font;
|
float x = StringWidth( /* The longest title string in the header area */
|
||||||
font.SetSize(FONT_SIZE);
|
|
||||||
SetFont(&font);
|
|
||||||
float x = font.StringWidth( /* The longest title string in the header area */
|
|
||||||
MDR_DIALECT_CHOICE ("Enclosures: ","添付ファイル:")) + 9;
|
MDR_DIALECT_CHOICE ("Enclosures: ","添付ファイル:")) + 9;
|
||||||
float y = TO_FIELD_V;
|
float y = TO_FIELD_V;
|
||||||
|
|
||||||
|
float menuFieldHeight;
|
||||||
|
BMenuBar* dummy = new BMenuBar(BRect(0, 0, 100, 15), "Dummy");
|
||||||
|
AddChild(dummy);
|
||||||
|
float width;
|
||||||
|
dummy->GetPreferredSize(&width, &menuFieldHeight);
|
||||||
|
menuFieldHeight += floorf(be_plain_font->Size() / 1.15);
|
||||||
|
dummy->RemoveSelf();
|
||||||
|
delete dummy;
|
||||||
|
|
||||||
if (!fIncoming) {
|
if (!fIncoming) {
|
||||||
InitEmailCompletion();
|
InitEmailCompletion();
|
||||||
InitGroupCompletion();
|
InitGroupCompletion();
|
||||||
@@ -195,8 +210,8 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
markedCharSet = true;
|
markedCharSet = true;
|
||||||
}
|
}
|
||||||
if (font.StringWidth(name.String()) > widestCharacterSet)
|
if (StringWidth(name.String()) > widestCharacterSet)
|
||||||
widestCharacterSet = font.StringWidth(name.String());
|
widestCharacterSet = StringWidth(name.String());
|
||||||
}
|
}
|
||||||
|
|
||||||
msg = new BMessage(kMsgEncoding);
|
msg = new BMessage(kMsgEncoding);
|
||||||
@@ -226,31 +241,34 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
if (fIncoming && !resending) {
|
if (fIncoming && !resending) {
|
||||||
// Set up the character set pop-up menu on the right of "To" box.
|
// Set up the character set pop-up menu on the right of "To" box.
|
||||||
r.Set (windowRect.Width() - widestCharacterSet -
|
r.Set (windowRect.Width() - widestCharacterSet -
|
||||||
font.StringWidth (DECODING_TEXT) - 2 * SEPARATOR_MARGIN,
|
StringWidth (DECODING_TEXT) - 2 * SEPARATOR_MARGIN, y - 2,
|
||||||
y - 2, windowRect.Width() - SEPARATOR_MARGIN, y + TO_FIELD_HEIGHT + 2);
|
windowRect.Width() - SEPARATOR_MARGIN, y + menuFieldHeight + 2);
|
||||||
field = new BMenuField (r, "decoding", DECODING_TEXT, fEncodingMenu,
|
field = new BMenuField (r, "decoding", DECODING_TEXT, fEncodingMenu,
|
||||||
true /* fixedSize */,
|
true /* fixedSize */,
|
||||||
B_FOLLOW_TOP | B_FOLLOW_RIGHT,
|
B_FOLLOW_TOP | B_FOLLOW_RIGHT,
|
||||||
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
|
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
|
||||||
field->SetFont (&font);
|
field->SetDivider(field->StringWidth(DECODING_TEXT) + 5);
|
||||||
field->SetDivider (font.StringWidth(DECODING_TEXT) + 5);
|
|
||||||
AddChild(field);
|
AddChild(field);
|
||||||
r.Set(x - font.StringWidth(FROM_TEXT) - 11, y,
|
r.Set(SEPARATOR_MARGIN, y,
|
||||||
field->Frame().left - SEPARATOR_MARGIN, y + TO_FIELD_HEIGHT);
|
field->Frame().left - SEPARATOR_MARGIN, y + menuFieldHeight);
|
||||||
sprintf(string, FROM_TEXT);
|
sprintf(string, FROM_TEXT);
|
||||||
} else {
|
} else {
|
||||||
r.Set(x - 11, y, windowRect.Width() - SEPARATOR_MARGIN, y + TO_FIELD_HEIGHT);
|
r.Set(x - 12, y, windowRect.Width() - SEPARATOR_MARGIN,
|
||||||
|
y + menuFieldHeight);
|
||||||
string[0] = 0;
|
string[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
y += FIELD_HEIGHT;
|
y += menuFieldHeight;
|
||||||
fTo = new TTextControl(r, string, new BMessage(TO_FIELD), fIncoming, resending,
|
fTo = new TTextControl(r, string, new BMessage(TO_FIELD), fIncoming,
|
||||||
B_FOLLOW_LEFT_RIGHT);
|
resending, B_FOLLOW_LEFT_RIGHT);
|
||||||
fTo->SetFilter(mail_to_filter);
|
fTo->SetFilter(mail_to_filter);
|
||||||
|
|
||||||
if (!fIncoming || resending) {
|
if (!fIncoming || resending) {
|
||||||
fTo->SetChoiceList(&fEmailList);
|
fTo->SetChoiceList(&fEmailList);
|
||||||
fTo->SetAutoComplete(true);
|
fTo->SetAutoComplete(true);
|
||||||
|
} else {
|
||||||
|
fTo->SetDivider(x - 12 - SEPARATOR_MARGIN);
|
||||||
|
fTo->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
AddChild(fTo);
|
AddChild(fTo);
|
||||||
@@ -259,11 +277,12 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
fTo->SetModificationMessage(msg);
|
fTo->SetModificationMessage(msg);
|
||||||
|
|
||||||
if (!fIncoming || resending) {
|
if (!fIncoming || resending) {
|
||||||
r.right = r.left + 8;
|
r.right = r.left - 5;
|
||||||
r.left = r.right - be_plain_font->StringWidth(TO_TEXT) - 30;
|
r.left = r.right - be_plain_font->StringWidth(TO_TEXT) - 15;
|
||||||
r.top -= 1;
|
r.top -= 1;
|
||||||
fToMenu = new QPopupMenu(TO_TEXT);
|
fToMenu = new QPopupMenu(TO_TEXT);
|
||||||
field = new BMenuField(r, "", "", fToMenu, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
field = new BMenuField(r, "", "", fToMenu,
|
||||||
|
B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
||||||
field->SetDivider(0.0);
|
field->SetDivider(0.0);
|
||||||
field->SetEnabled(true);
|
field->SetEnabled(true);
|
||||||
AddChild(field);
|
AddChild(field);
|
||||||
@@ -273,14 +292,13 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
if (!fIncoming || resending) {
|
if (!fIncoming || resending) {
|
||||||
// Put the character set box on the right of the From field.
|
// Put the character set box on the right of the From field.
|
||||||
r.Set(windowRect.Width() - widestCharacterSet -
|
r.Set(windowRect.Width() - widestCharacterSet -
|
||||||
font.StringWidth(ENCODING_TEXT) - 2 * SEPARATOR_MARGIN,
|
StringWidth(ENCODING_TEXT) - 2 * SEPARATOR_MARGIN,
|
||||||
y - 2, windowRect.Width() - SEPARATOR_MARGIN, y + TO_FIELD_HEIGHT + 2);
|
y - 2, windowRect.Width() - SEPARATOR_MARGIN, y + menuFieldHeight + 2);
|
||||||
field = new BMenuField (r, "encoding", ENCODING_TEXT, fEncodingMenu,
|
field = new BMenuField (r, "encoding", ENCODING_TEXT, fEncodingMenu,
|
||||||
true /* fixedSize */,
|
true /* fixedSize */,
|
||||||
B_FOLLOW_TOP | B_FOLLOW_LEFT,
|
B_FOLLOW_TOP | B_FOLLOW_RIGHT,
|
||||||
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
|
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
|
||||||
field->SetFont(&font);
|
field->SetDivider(field->StringWidth(ENCODING_TEXT) + 5);
|
||||||
field->SetDivider(font.StringWidth(ENCODING_TEXT) + 5);
|
|
||||||
AddChild(field);
|
AddChild(field);
|
||||||
|
|
||||||
// And now the "from account" pop-up menu, on the left side, taking the
|
// And now the "from account" pop-up menu, on the left side, taking the
|
||||||
@@ -303,7 +321,7 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
|
|
||||||
msg->AddInt32("id", chain->ID());
|
msg->AddInt32("id", chain->ID());
|
||||||
|
|
||||||
if (gDefaultChain == chain->ID()) {
|
if (defaultChain == chain->ID()) {
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
marked = true;
|
marked = true;
|
||||||
}
|
}
|
||||||
@@ -322,30 +340,36 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
fChain = ~0UL;
|
fChain = ~0UL;
|
||||||
}
|
}
|
||||||
// default chain is invalid, set to marked
|
// default chain is invalid, set to marked
|
||||||
gDefaultChain = fChain;
|
// TODO: do this differently, no casting and knowledge
|
||||||
|
// of TMailApp here....
|
||||||
|
if (TMailApp* app = dynamic_cast<TMailApp*>(be_app))
|
||||||
|
app->SetDefaultChain(fChain);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
r.Set(x - font.StringWidth(FROM_TEXT) - 11, y - 2,
|
r.Set(SEPARATOR_MARGIN, y - 2,
|
||||||
field->Frame().left - SEPARATOR_MARGIN, y + TO_FIELD_HEIGHT + 2);
|
field->Frame().left - SEPARATOR_MARGIN, y + menuFieldHeight + 2);
|
||||||
field = new BMenuField(r, "account", FROM_TEXT, fAccountMenu,
|
field = new BMenuField(r, "account", FROM_TEXT, fAccountMenu,
|
||||||
true /* fixedSize */,
|
true /* fixedSize */,
|
||||||
B_FOLLOW_TOP | B_FOLLOW_LEFT,
|
B_FOLLOW_TOP | B_FOLLOW_LEFT_RIGHT,
|
||||||
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
|
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
|
||||||
field->SetFont(&font);
|
|
||||||
field->SetDivider(font.StringWidth(FROM_TEXT) + 11);
|
|
||||||
AddChild(field);
|
AddChild(field);
|
||||||
|
field->SetDivider(x - 12 - SEPARATOR_MARGIN + kMenuFieldDividerOffset);
|
||||||
|
field->SetAlignment(B_ALIGN_RIGHT);
|
||||||
|
// field->MenuBar()->SetResizingMode(B_FOLLOW_TOP | B_FOLLOW_LEFT_RIGHT);
|
||||||
|
|
||||||
y += FIELD_HEIGHT;
|
y += menuFieldHeight;
|
||||||
} else {
|
} else {
|
||||||
// To: account
|
// To: account
|
||||||
bool account = count_pop_accounts() > 0;
|
bool account = count_pop_accounts() > 0;
|
||||||
|
|
||||||
r.Set(x - font.StringWidth(TO_TEXT) - 11, y,
|
r.Set(SEPARATOR_MARGIN, y,
|
||||||
windowRect.Width() - SEPARATOR_MARGIN, y + TO_FIELD_HEIGHT);
|
windowRect.Width() - SEPARATOR_MARGIN, y + menuFieldHeight);
|
||||||
if (account)
|
if (account)
|
||||||
r.right -= SEPARATOR_MARGIN + ACCOUNT_FIELD_WIDTH;
|
r.right -= SEPARATOR_MARGIN + ACCOUNT_FIELD_WIDTH;
|
||||||
fAccountTo = new TTextControl(r, TO_TEXT, NULL, fIncoming, false, B_FOLLOW_LEFT_RIGHT);
|
fAccountTo = new TTextControl(r, TO_TEXT, NULL, fIncoming, false, B_FOLLOW_LEFT_RIGHT);
|
||||||
fAccountTo->SetEnabled(false);
|
fAccountTo->SetEnabled(false);
|
||||||
|
fAccountTo->SetDivider(x - 12 - SEPARATOR_MARGIN);
|
||||||
|
fAccountTo->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||||
AddChild(fAccountTo);
|
AddChild(fAccountTo);
|
||||||
|
|
||||||
if (account) {
|
if (account) {
|
||||||
@@ -354,26 +378,27 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
fAccount->SetEnabled(false);
|
fAccount->SetEnabled(false);
|
||||||
AddChild(fAccount);
|
AddChild(fAccount);
|
||||||
}
|
}
|
||||||
y += FIELD_HEIGHT;
|
y += menuFieldHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
--y;
|
--y;
|
||||||
r.Set(x - font.StringWidth(SUBJECT_TEXT) - 11, y,
|
r.Set(SEPARATOR_MARGIN, y,
|
||||||
windowRect.Width() - SEPARATOR_MARGIN, y + TO_FIELD_HEIGHT);
|
windowRect.Width() - SEPARATOR_MARGIN, y + menuFieldHeight);
|
||||||
y += FIELD_HEIGHT;
|
y += menuFieldHeight;
|
||||||
fSubject = new TTextControl(r, SUBJECT_TEXT, new BMessage(SUBJECT_FIELD),
|
fSubject = new TTextControl(r, SUBJECT_TEXT, new BMessage(SUBJECT_FIELD),
|
||||||
fIncoming, false, B_FOLLOW_LEFT_RIGHT);
|
fIncoming, false, B_FOLLOW_LEFT_RIGHT);
|
||||||
AddChild(fSubject);
|
AddChild(fSubject);
|
||||||
(msg = new BMessage(FIELD_CHANGED))->AddInt32("bitmask", FIELD_SUBJECT);
|
(msg = new BMessage(FIELD_CHANGED))->AddInt32("bitmask", FIELD_SUBJECT);
|
||||||
fSubject->SetModificationMessage(msg);
|
fSubject->SetModificationMessage(msg);
|
||||||
|
fSubject->SetDivider(x - 12 - SEPARATOR_MARGIN);
|
||||||
|
fSubject->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||||
if (fResending)
|
if (fResending)
|
||||||
fSubject->SetEnabled(false);
|
fSubject->SetEnabled(false);
|
||||||
|
|
||||||
--y;
|
--y;
|
||||||
|
|
||||||
if (!fIncoming) {
|
if (!fIncoming) {
|
||||||
r.Set(x - 11, y, CC_FIELD_H + CC_FIELD_WIDTH, y + CC_FIELD_HEIGHT);
|
r.Set(x - 12, y, CC_FIELD_H + CC_FIELD_WIDTH, y + menuFieldHeight);
|
||||||
fCc = new TTextControl(r, "", new BMessage(CC_FIELD), fIncoming, false);
|
fCc = new TTextControl(r, "", new BMessage(CC_FIELD), fIncoming, false);
|
||||||
fCc->SetFilter(mail_to_filter);
|
fCc->SetFilter(mail_to_filter);
|
||||||
fCc->SetChoiceList(&fEmailList);
|
fCc->SetChoiceList(&fEmailList);
|
||||||
@@ -382,19 +407,20 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
(msg = new BMessage(FIELD_CHANGED))->AddInt32("bitmask", FIELD_CC);
|
(msg = new BMessage(FIELD_CHANGED))->AddInt32("bitmask", FIELD_CC);
|
||||||
fCc->SetModificationMessage(msg);
|
fCc->SetModificationMessage(msg);
|
||||||
|
|
||||||
r.right = r.left + 9;
|
r.right = r.left - 5;
|
||||||
r.left = r.right - be_plain_font->StringWidth(CC_TEXT) - 30;
|
r.left = r.right - be_plain_font->StringWidth(CC_TEXT) - 15;
|
||||||
r.top -= 1;
|
r.top -= 1;
|
||||||
fCcMenu = new QPopupMenu(CC_TEXT);
|
fCcMenu = new QPopupMenu(CC_TEXT);
|
||||||
field = new BMenuField(r, "", "", fCcMenu, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
field = new BMenuField(r, "", "", fCcMenu,
|
||||||
|
B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
||||||
|
|
||||||
field->SetDivider(0.0);
|
field->SetDivider(0.0);
|
||||||
field->SetEnabled(true);
|
field->SetEnabled(true);
|
||||||
AddChild(field);
|
AddChild(field);
|
||||||
|
|
||||||
r.Set(BCC_FIELD_H + be_plain_font->StringWidth(BCC_TEXT), y,
|
r.Set(BCC_FIELD_H + be_plain_font->StringWidth(BCC_TEXT), y,
|
||||||
windowRect.Width() - SEPARATOR_MARGIN, y + BCC_FIELD_HEIGHT);
|
windowRect.Width() - SEPARATOR_MARGIN, y + menuFieldHeight);
|
||||||
y += FIELD_HEIGHT;
|
y += menuFieldHeight;
|
||||||
fBcc = new TTextControl(r, "", new BMessage(BCC_FIELD),
|
fBcc = new TTextControl(r, "", new BMessage(BCC_FIELD),
|
||||||
fIncoming, false, B_FOLLOW_LEFT_RIGHT);
|
fIncoming, false, B_FOLLOW_LEFT_RIGHT);
|
||||||
fBcc->SetFilter(mail_to_filter);
|
fBcc->SetFilter(mail_to_filter);
|
||||||
@@ -404,26 +430,34 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
(msg = new BMessage(FIELD_CHANGED))->AddInt32("bitmask", FIELD_BCC);
|
(msg = new BMessage(FIELD_CHANGED))->AddInt32("bitmask", FIELD_BCC);
|
||||||
fBcc->SetModificationMessage(msg);
|
fBcc->SetModificationMessage(msg);
|
||||||
|
|
||||||
r.right = r.left + 9;
|
r.right = r.left - 5;
|
||||||
r.left = r.right - be_plain_font->StringWidth(BCC_TEXT) - 30;
|
r.left = r.right - be_plain_font->StringWidth(BCC_TEXT) - 15;
|
||||||
r.top -= 1;
|
r.top -= 1;
|
||||||
fBccMenu = new QPopupMenu(BCC_TEXT);
|
fBccMenu = new QPopupMenu(BCC_TEXT);
|
||||||
field = new BMenuField(r, "", "", fBccMenu, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
field = new BMenuField(r, "", "", fBccMenu,
|
||||||
|
B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
||||||
field->SetDivider(0.0);
|
field->SetDivider(0.0);
|
||||||
field->SetEnabled(true);
|
field->SetEnabled(true);
|
||||||
AddChild(field);
|
AddChild(field);
|
||||||
} else {
|
} else {
|
||||||
r.Set(x - font.StringWidth(kDateLabel) - 10, y + 4,
|
y -= SEPARATOR_MARGIN;
|
||||||
windowRect.Width(), y + TO_FIELD_HEIGHT + 1);
|
r.Set(SEPARATOR_MARGIN, y, x - 12 - 1, y + menuFieldHeight + 1);
|
||||||
y += TO_FIELD_HEIGHT + 5;
|
fDateLabel = new BStringView(r, "", kDateLabel);
|
||||||
|
fDateLabel->SetAlignment(B_ALIGN_RIGHT);
|
||||||
|
AddChild(fDateLabel);
|
||||||
|
fDateLabel->SetHighColor(0, 0, 0);
|
||||||
|
|
||||||
|
r.Set(r.right + 9, y, windowRect.Width() - SEPARATOR_MARGIN,
|
||||||
|
y + menuFieldHeight + 1);
|
||||||
fDate = new BStringView(r, "", "");
|
fDate = new BStringView(r, "", "");
|
||||||
AddChild(fDate);
|
AddChild(fDate);
|
||||||
fDate->SetFont(&font);
|
|
||||||
fDate->SetHighColor(0, 0, 0);
|
fDate->SetHighColor(0, 0, 0);
|
||||||
|
|
||||||
|
y += menuFieldHeight + 5;
|
||||||
|
|
||||||
LoadMessage(mail);
|
LoadMessage(mail);
|
||||||
}
|
}
|
||||||
ResizeTo(Bounds().Width(),y);
|
ResizeTo(Bounds().Width(), y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -656,7 +690,7 @@ THeaderView::LoadMessage(BEmailMessage *mail)
|
|||||||
// Set the date on this message
|
// Set the date on this message
|
||||||
const char *dateField = mail->Date();
|
const char *dateField = mail->Date();
|
||||||
char string[256];
|
char string[256];
|
||||||
sprintf(string, "%s %s", kDateLabel, dateField != NULL ? dateField : "Unknown");
|
sprintf(string, "%s", dateField != NULL ? dateField : "Unknown");
|
||||||
fDate->SetText(string);
|
fDate->SetText(string);
|
||||||
|
|
||||||
// Set contents of header fields
|
// Set contents of header fields
|
||||||
@@ -711,18 +745,11 @@ TTextControl::TTextControl(BRect rect, char *label, BMessage *msg,
|
|||||||
void
|
void
|
||||||
TTextControl::AttachedToWindow()
|
TTextControl::AttachedToWindow()
|
||||||
{
|
{
|
||||||
BFont font = *be_plain_font;
|
|
||||||
BTextView *text;
|
|
||||||
|
|
||||||
SetHighColor(0, 0, 0);
|
SetHighColor(0, 0, 0);
|
||||||
// BTextControl::AttachedToWindow();
|
// BTextControl::AttachedToWindow();
|
||||||
BComboBox::AttachedToWindow();
|
BComboBox::AttachedToWindow();
|
||||||
font.SetSize(FONT_SIZE);
|
|
||||||
SetFont(&font);
|
|
||||||
|
|
||||||
SetDivider(StringWidth(fLabel) + 6);
|
SetDivider(Divider() + kTextControlDividerOffset);
|
||||||
text = (BTextView *)ChildAt(0);
|
|
||||||
text->SetFont(&font);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -56,8 +56,6 @@ All rights reserved.
|
|||||||
#define TO_FIELD_V 7
|
#define TO_FIELD_V 7
|
||||||
#define TO_FIELD_WIDTH 270
|
#define TO_FIELD_WIDTH 270
|
||||||
#define FROM_FIELD_WIDTH 280
|
#define FROM_FIELD_WIDTH 280
|
||||||
#define TO_FIELD_HEIGHT 16
|
|
||||||
#define FIELD_HEIGHT 24
|
|
||||||
|
|
||||||
#define ACCOUNT_TEXT "Account:"
|
#define ACCOUNT_TEXT "Account:"
|
||||||
#define ACCOUNT_FIELD_WIDTH 165
|
#define ACCOUNT_FIELD_WIDTH 165
|
||||||
@@ -91,7 +89,7 @@ class QPopupMenu;
|
|||||||
class THeaderView : public BBox {
|
class THeaderView : public BBox {
|
||||||
public:
|
public:
|
||||||
THeaderView(BRect, BRect, bool incoming, BEmailMessage *mail,
|
THeaderView(BRect, BRect, bool incoming, BEmailMessage *mail,
|
||||||
bool resending, uint32 defaultCharacterSet);
|
bool resending, uint32 defaultCharacterSet, uint32 defaultChain);
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage *);
|
virtual void MessageReceived(BMessage *);
|
||||||
virtual void AttachedToWindow(void);
|
virtual void AttachedToWindow(void);
|
||||||
@@ -106,6 +104,7 @@ class THeaderView : public BBox {
|
|||||||
TTextControl *fCc;
|
TTextControl *fCc;
|
||||||
TTextControl *fSubject;
|
TTextControl *fSubject;
|
||||||
TTextControl *fTo;
|
TTextControl *fTo;
|
||||||
|
BStringView *fDateLabel;
|
||||||
BStringView *fDate;
|
BStringView *fDate;
|
||||||
bool fIncoming;
|
bool fIncoming;
|
||||||
uint32 fCharacterSetUserSees;
|
uint32 fCharacterSetUserSees;
|
||||||
|
|||||||
+11
-1
@@ -1,6 +1,7 @@
|
|||||||
SubDir HAIKU_TOP src apps mail ;
|
SubDir HAIKU_TOP src apps mail ;
|
||||||
|
|
||||||
SetSubDirSupportedPlatformsBeOSCompatible ;
|
SetSubDirSupportedPlatformsBeOSCompatible ;
|
||||||
|
AddSubDirSupportedPlatforms libbe_test ;
|
||||||
|
|
||||||
if $(TARGET_PLATFORM) != haiku {
|
if $(TARGET_PLATFORM) != haiku {
|
||||||
UsePublicHeaders mail ;
|
UsePublicHeaders mail ;
|
||||||
@@ -20,7 +21,10 @@ Application Mail :
|
|||||||
Enclosures.cpp
|
Enclosures.cpp
|
||||||
FindWindow.cpp
|
FindWindow.cpp
|
||||||
Header.cpp
|
Header.cpp
|
||||||
Mail.cpp
|
MailApp.cpp
|
||||||
|
MailPopUpMenu.cpp
|
||||||
|
MailSupport.cpp
|
||||||
|
MailWindow.cpp
|
||||||
Prefs.cpp
|
Prefs.cpp
|
||||||
QueryMenu.cpp
|
QueryMenu.cpp
|
||||||
Signature.cpp
|
Signature.cpp
|
||||||
@@ -35,3 +39,9 @@ LinkAgainst Mail : be tracker $(TARGET_LIBSTDC++) libmail.so libtextencoding.so
|
|||||||
Package haiku-maildaemon-cvs :
|
Package haiku-maildaemon-cvs :
|
||||||
Mail :
|
Mail :
|
||||||
boot beos apps ;
|
boot beos apps ;
|
||||||
|
|
||||||
|
|
||||||
|
if ( $(TARGET_PLATFORM) = libbe_test ) {
|
||||||
|
HaikuInstall install-test-apps : $(HAIKU_APP_TEST_DIR) : Mail
|
||||||
|
: tests!apps ;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,348 +0,0 @@
|
|||||||
/*
|
|
||||||
Open Tracker License
|
|
||||||
|
|
||||||
Terms and Conditions
|
|
||||||
|
|
||||||
Copyright (c) 1991-2001, Be Incorporated. All rights reserved.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
|
||||||
the Software without restriction, including without limitation the rights to
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
||||||
of the Software, and to permit persons to whom the Software is furnished to do
|
|
||||||
so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice applies to all licensees
|
|
||||||
and shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
||||||
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
Except as contained in this notice, the name of Be Incorporated shall not be
|
|
||||||
used in advertising or otherwise to promote the sale, use or other dealings in
|
|
||||||
this Software without prior written authorization from Be Incorporated.
|
|
||||||
|
|
||||||
BeMail(TM), Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
|
|
||||||
of Be Incorporated in the United States and other countries. Other brand product
|
|
||||||
names are registered trademarks or trademarks of their respective holders.
|
|
||||||
All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// Mail.h
|
|
||||||
//
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
|
|
||||||
#ifndef _MAIL_H
|
|
||||||
#define _MAIL_H
|
|
||||||
|
|
||||||
#include <Application.h>
|
|
||||||
#include <Font.h>
|
|
||||||
#include <Menu.h>
|
|
||||||
#include <MenuBar.h>
|
|
||||||
#include <MessageFilter.h>
|
|
||||||
#include <Point.h>
|
|
||||||
#include <PopUpMenu.h>
|
|
||||||
#include <Rect.h>
|
|
||||||
#include <Window.h>
|
|
||||||
#include <Entry.h>
|
|
||||||
|
|
||||||
#include <mail_encoding.h>
|
|
||||||
|
|
||||||
#define MAX_DICTIONARIES 8
|
|
||||||
#define TITLE_BAR_HEIGHT 25
|
|
||||||
#define WIND_WIDTH 457
|
|
||||||
#define WIND_HEIGHT 400
|
|
||||||
#define RIGHT_BOUNDARY 8191
|
|
||||||
#define SEPARATOR_MARGIN 7
|
|
||||||
#define FONT_SIZE 11.0
|
|
||||||
#define QUOTE "> "
|
|
||||||
|
|
||||||
enum MESSAGES {
|
|
||||||
REFS_RECEIVED = 64,
|
|
||||||
LIST_INVOKED,
|
|
||||||
WINDOW_CLOSED,
|
|
||||||
CHANGE_FONT,
|
|
||||||
RESET_BUTTONS,
|
|
||||||
PREFS_CHANGED,
|
|
||||||
CHARSET_CHOICE_MADE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum TEXT {
|
|
||||||
SUBJECT_FIELD = REFS_RECEIVED + 64,
|
|
||||||
TO_FIELD,
|
|
||||||
ENCLOSE_FIELD,
|
|
||||||
CC_FIELD,
|
|
||||||
BCC_FIELD,
|
|
||||||
NAME_FIELD
|
|
||||||
};
|
|
||||||
|
|
||||||
enum MENUS {
|
|
||||||
/* app */
|
|
||||||
M_NEW = SUBJECT_FIELD + 64,
|
|
||||||
M_PREFS,
|
|
||||||
M_EDIT_SIGNATURE,
|
|
||||||
M_FONT,
|
|
||||||
M_STYLE,
|
|
||||||
M_SIZE,
|
|
||||||
M_BEGINNER,
|
|
||||||
M_EXPERT,
|
|
||||||
/* file */
|
|
||||||
M_REPLY,
|
|
||||||
M_REPLY_TO_SENDER,
|
|
||||||
M_REPLY_ALL,
|
|
||||||
M_FORWARD,
|
|
||||||
M_FORWARD_WITHOUT_ATTACHMENTS,
|
|
||||||
M_RESEND,
|
|
||||||
M_COPY_TO_NEW,
|
|
||||||
M_HEADER,
|
|
||||||
M_RAW,
|
|
||||||
M_SEND_NOW,
|
|
||||||
M_SAVE_AS_DRAFT,
|
|
||||||
M_SAVE,
|
|
||||||
M_PRINT_SETUP,
|
|
||||||
M_PRINT,
|
|
||||||
M_DELETE,
|
|
||||||
M_DELETE_PREV,
|
|
||||||
M_DELETE_NEXT,
|
|
||||||
M_CLOSE_READ,
|
|
||||||
M_CLOSE_SAVED,
|
|
||||||
M_CLOSE_SAME,
|
|
||||||
M_CLOSE_CUSTOM,
|
|
||||||
M_STATUS,
|
|
||||||
M_OPEN_MAIL_BOX,
|
|
||||||
M_OPEN_MAIL_FOLDER,
|
|
||||||
/* edit */
|
|
||||||
M_SELECT,
|
|
||||||
M_QUOTE,
|
|
||||||
M_REMOVE_QUOTE,
|
|
||||||
M_CHECK_SPELLING,
|
|
||||||
M_SIGNATURE,
|
|
||||||
M_RANDOM_SIG,
|
|
||||||
M_SIG_MENU,
|
|
||||||
M_FIND,
|
|
||||||
M_FIND_AGAIN,
|
|
||||||
/* encls */
|
|
||||||
M_ADD,
|
|
||||||
M_REMOVE,
|
|
||||||
M_OPEN,
|
|
||||||
M_COPY,
|
|
||||||
/* nav */
|
|
||||||
M_NEXTMSG,
|
|
||||||
M_PREVMSG,
|
|
||||||
M_SAVE_POSITION,
|
|
||||||
/* Spam GUI button and menu items. Order is important. */
|
|
||||||
M_SPAM_BUTTON,
|
|
||||||
M_TRAIN_SPAM_AND_DELETE,
|
|
||||||
M_TRAIN_SPAM,
|
|
||||||
M_UNTRAIN,
|
|
||||||
M_TRAIN_GENUINE,
|
|
||||||
|
|
||||||
M_REDO
|
|
||||||
};
|
|
||||||
|
|
||||||
enum USER_LEVEL {
|
|
||||||
L_BEGINNER = 0,
|
|
||||||
L_EXPERT
|
|
||||||
};
|
|
||||||
|
|
||||||
enum WINDOW_TYPES {
|
|
||||||
MAIL_WINDOW = 0,
|
|
||||||
PREFS_WINDOW,
|
|
||||||
SIG_WINDOW
|
|
||||||
};
|
|
||||||
|
|
||||||
class TMailWindow;
|
|
||||||
class THeaderView;
|
|
||||||
class TEnclosuresView;
|
|
||||||
class TContentView;
|
|
||||||
class TMenu;
|
|
||||||
class TPrefsWindow;
|
|
||||||
class TSignatureWindow;
|
|
||||||
class BMenuItem;
|
|
||||||
class BmapButton;
|
|
||||||
|
|
||||||
class BFile;
|
|
||||||
class BFilePanel;
|
|
||||||
class ButtonBar;
|
|
||||||
class BMenuBar;
|
|
||||||
class Words;
|
|
||||||
class BEmailMessage;
|
|
||||||
|
|
||||||
//====================================================================
|
|
||||||
|
|
||||||
class TMailApp : public BApplication {
|
|
||||||
public:
|
|
||||||
TMailApp();
|
|
||||||
~TMailApp();
|
|
||||||
|
|
||||||
virtual void AboutRequested();
|
|
||||||
virtual void ArgvReceived(int32, char **);
|
|
||||||
virtual void MessageReceived(BMessage *);
|
|
||||||
virtual bool QuitRequested();
|
|
||||||
virtual void ReadyToRun();
|
|
||||||
virtual void RefsReceived(BMessage *);
|
|
||||||
|
|
||||||
TMailWindow *FindWindow(const entry_ref &);
|
|
||||||
void FontChange();
|
|
||||||
TMailWindow *NewWindow(const entry_ref *rec = NULL, const char *to = NULL,
|
|
||||||
bool resend = false, BMessenger *messenger = NULL);
|
|
||||||
|
|
||||||
BFont fFont;
|
|
||||||
|
|
||||||
private:
|
|
||||||
void ClearPrintSettings();
|
|
||||||
void CheckForSpamFilterExistence();
|
|
||||||
|
|
||||||
status_t GetSettingsPath(BPath &path);
|
|
||||||
status_t LoadOldSettings();
|
|
||||||
status_t SaveSettings();
|
|
||||||
status_t LoadSettings();
|
|
||||||
|
|
||||||
BList fWindowList;
|
|
||||||
int32 fWindowCount;
|
|
||||||
TPrefsWindow *fPrefsWindow;
|
|
||||||
TSignatureWindow *fSigWindow;
|
|
||||||
|
|
||||||
uint8 fPreviousShowButtonBar;
|
|
||||||
};
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
|
|
||||||
class BMailMessage;
|
|
||||||
|
|
||||||
class TMailWindow : public BWindow {
|
|
||||||
public:
|
|
||||||
TMailWindow(BRect, const char *, const entry_ref *, const char *,
|
|
||||||
const BFont *font, bool, BMessenger *trackerMessenger);
|
|
||||||
virtual ~TMailWindow();
|
|
||||||
|
|
||||||
virtual void FrameResized(float width, float height);
|
|
||||||
virtual void MenusBeginning();
|
|
||||||
virtual void MessageReceived(BMessage*);
|
|
||||||
virtual bool QuitRequested();
|
|
||||||
virtual void Show();
|
|
||||||
virtual void Zoom(BPoint, float, float);
|
|
||||||
virtual void WindowActivated(bool state);
|
|
||||||
|
|
||||||
void SetTo(const char *mailTo, const char *subject, const char *ccTo = NULL,
|
|
||||||
const char *bccTo = NULL, const BString *body = NULL, BMessage *enclosures = NULL);
|
|
||||||
void AddSignature(BMailMessage *);
|
|
||||||
void Forward(entry_ref *, TMailWindow *, bool includeAttachments);
|
|
||||||
void Print();
|
|
||||||
void PrintSetup();
|
|
||||||
void Reply(entry_ref *, TMailWindow *, uint32);
|
|
||||||
void CopyMessage(entry_ref *ref, TMailWindow *src);
|
|
||||||
status_t Send(bool);
|
|
||||||
status_t SaveAsDraft( void );
|
|
||||||
status_t OpenMessage(entry_ref *ref, uint32 characterSetForDecoding = B_MAIL_NULL_CONVERSION);
|
|
||||||
|
|
||||||
status_t GetMailNodeRef(node_ref &nodeRef) const;
|
|
||||||
BEmailMessage *Mail() const { return fMail; }
|
|
||||||
|
|
||||||
bool GetTrackerWindowFile(entry_ref *, bool dir) const;
|
|
||||||
void SaveTrackerPosition(entry_ref *);
|
|
||||||
void SetOriginatingWindow(BWindow *window);
|
|
||||||
|
|
||||||
void SetCurrentMessageRead();
|
|
||||||
void SetTrackerSelectionToCurrent();
|
|
||||||
TMailWindow* FrontmostWindow();
|
|
||||||
void UpdateViews();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void SetTitleForMessage();
|
|
||||||
void AddEnclosure(BMessage *msg);
|
|
||||||
void BuildButtonBar();
|
|
||||||
status_t TrainMessageAs (const char *CommandWord);
|
|
||||||
|
|
||||||
private:
|
|
||||||
BEmailMessage *fMail;
|
|
||||||
entry_ref *fRef; // Reference to currently displayed file
|
|
||||||
int32 fFieldState;
|
|
||||||
BFilePanel *fPanel;
|
|
||||||
BMenuBar *fMenuBar;
|
|
||||||
BMenuItem *fAdd;
|
|
||||||
BMenuItem *fCut;
|
|
||||||
BMenuItem *fCopy;
|
|
||||||
BMenuItem *fHeader;
|
|
||||||
BMenuItem *fPaste;
|
|
||||||
BMenuItem *fPrint;
|
|
||||||
BMenuItem *fPrintSetup;
|
|
||||||
BMenuItem *fQuote;
|
|
||||||
BMenuItem *fRaw;
|
|
||||||
BMenuItem *fRemove;
|
|
||||||
BMenuItem *fRemoveQuote;
|
|
||||||
BMenuItem *fSendNow;
|
|
||||||
BMenuItem *fSendLater;
|
|
||||||
BMenuItem *fUndo;
|
|
||||||
BMenuItem *fRedo;
|
|
||||||
BMenuItem *fNextMsg;
|
|
||||||
BMenuItem *fPrevMsg;
|
|
||||||
BMenuItem *fDeleteNext;
|
|
||||||
BMenuItem *fSpelling;
|
|
||||||
BMenu *fSaveAddrMenu;
|
|
||||||
ButtonBar *fButtonBar;
|
|
||||||
BmapButton *fSendButton;
|
|
||||||
BmapButton *fSaveButton;
|
|
||||||
BmapButton *fPrintButton;
|
|
||||||
BmapButton *fSigButton;
|
|
||||||
BRect fZoom;
|
|
||||||
TContentView *fContentView;
|
|
||||||
THeaderView *fHeaderView;
|
|
||||||
TEnclosuresView *fEnclosuresView;
|
|
||||||
TMenu *fSignature;
|
|
||||||
BMessenger fTrackerMessenger;
|
|
||||||
// Talks to tracker window that this was launched from.
|
|
||||||
|
|
||||||
entry_ref fPrevRef, fNextRef;
|
|
||||||
bool fPrevTrackerPositionSaved : 1;
|
|
||||||
bool fNextTrackerPositionSaved : 1;
|
|
||||||
|
|
||||||
static BList sWindowList;
|
|
||||||
static BLocker sWindowListLock;
|
|
||||||
|
|
||||||
bool fSigAdded;
|
|
||||||
bool fIncoming;
|
|
||||||
bool fReplying;
|
|
||||||
bool fResending;
|
|
||||||
bool fSent;
|
|
||||||
bool fDraft;
|
|
||||||
bool fChanged;
|
|
||||||
|
|
||||||
char *fStartingText;
|
|
||||||
entry_ref fRepliedMail;
|
|
||||||
BMessenger *fOriginatingWindow;
|
|
||||||
};
|
|
||||||
|
|
||||||
class TMenu: public BPopUpMenu {
|
|
||||||
public:
|
|
||||||
TMenu(const char* name, const char* attribute, int32, bool popup = false,
|
|
||||||
bool addRandom = true);
|
|
||||||
~TMenu();
|
|
||||||
|
|
||||||
virtual BPoint ScreenLocation(void);
|
|
||||||
virtual void AttachedToWindow();
|
|
||||||
|
|
||||||
void BuildMenu();
|
|
||||||
|
|
||||||
private:
|
|
||||||
char* fAttribute;
|
|
||||||
bool fPopup, fAddRandom;
|
|
||||||
int32 fMessage;
|
|
||||||
};
|
|
||||||
|
|
||||||
//====================================================================
|
|
||||||
|
|
||||||
int32 header_len(BFile *);
|
|
||||||
extern Words *gWords[MAX_DICTIONARIES];
|
|
||||||
extern Words *gExactWords[MAX_DICTIONARIES];
|
|
||||||
extern int32 gUserDict;
|
|
||||||
extern BFile *gUserDictFile;
|
|
||||||
extern int32 gDictCount;
|
|
||||||
|
|
||||||
#endif // #ifndef _MAIL_H
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,137 @@
|
|||||||
|
/*
|
||||||
|
Open Tracker License
|
||||||
|
|
||||||
|
Terms and Conditions
|
||||||
|
|
||||||
|
Copyright (c) 1991-2001, Be Incorporated. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice applies to all licensees
|
||||||
|
and shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name of Be Incorporated shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings in
|
||||||
|
this Software without prior written authorization from Be Incorporated.
|
||||||
|
|
||||||
|
BeMail(TM), Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
|
||||||
|
of Be Incorporated in the United States and other countries. Other brand product
|
||||||
|
names are registered trademarks or trademarks of their respective holders.
|
||||||
|
All rights reserved.
|
||||||
|
*/
|
||||||
|
#ifndef _MAIL_APP_H
|
||||||
|
#define _MAIL_APP_H
|
||||||
|
|
||||||
|
#include <Application.h>
|
||||||
|
#include <Entry.h>
|
||||||
|
#include <Font.h>
|
||||||
|
#include <List.h>
|
||||||
|
#include <String.h>
|
||||||
|
|
||||||
|
|
||||||
|
class BFile;
|
||||||
|
class BMessenger;
|
||||||
|
class TMailWindow;
|
||||||
|
class TPrefsWindow;
|
||||||
|
class TSignatureWindow;
|
||||||
|
|
||||||
|
|
||||||
|
class TMailApp : public BApplication {
|
||||||
|
public:
|
||||||
|
TMailApp();
|
||||||
|
virtual ~TMailApp();
|
||||||
|
|
||||||
|
virtual void AboutRequested();
|
||||||
|
virtual void ArgvReceived(int32, char**);
|
||||||
|
virtual void MessageReceived(BMessage*);
|
||||||
|
virtual bool QuitRequested();
|
||||||
|
virtual void ReadyToRun();
|
||||||
|
virtual void RefsReceived(BMessage*);
|
||||||
|
|
||||||
|
TMailWindow* FindWindow(const entry_ref&);
|
||||||
|
void FontChange();
|
||||||
|
TMailWindow* NewWindow(const entry_ref* rec = NULL,
|
||||||
|
const char* to = NULL, bool resend = false,
|
||||||
|
BMessenger* messenger = NULL);
|
||||||
|
|
||||||
|
void SetPrintSettings(const BMessage* settings);
|
||||||
|
bool HasPrintSettings();
|
||||||
|
BMessage PrintSettings();
|
||||||
|
|
||||||
|
void SetLastWindowFrame(BRect frame);
|
||||||
|
|
||||||
|
// TODO: move these into a MailSettings class
|
||||||
|
BString Signature();
|
||||||
|
BString ReplyPreamble();
|
||||||
|
bool WrapMode();
|
||||||
|
void SetShowHeader(bool show);
|
||||||
|
bool ShowHeader();
|
||||||
|
bool AttachAttributes();
|
||||||
|
bool ColoredQuotes();
|
||||||
|
uint8 ShowButtonBar();
|
||||||
|
bool WarnAboutUnencodableCharacters();
|
||||||
|
bool StartWithSpellCheckOn();
|
||||||
|
void SetDefaultChain(uint32 chain);
|
||||||
|
uint32 DefaultChain();
|
||||||
|
int32 UseAccountFrom();
|
||||||
|
uint32 MailCharacterSet();
|
||||||
|
bool ShowSpamGUI() const
|
||||||
|
{ return fShowSpamGUI; }
|
||||||
|
BFont ContentFont();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void _ClearPrintSettings();
|
||||||
|
void _CheckForSpamFilterExistence();
|
||||||
|
|
||||||
|
status_t GetSettingsPath(BPath &path);
|
||||||
|
status_t LoadOldSettings();
|
||||||
|
status_t SaveSettings();
|
||||||
|
status_t LoadSettings();
|
||||||
|
|
||||||
|
BList fWindowList;
|
||||||
|
int32 fWindowCount;
|
||||||
|
TPrefsWindow* fPrefsWindow;
|
||||||
|
TSignatureWindow* fSigWindow;
|
||||||
|
|
||||||
|
uint8 fPreviousShowButtonBar;
|
||||||
|
|
||||||
|
BRect fMailWindowFrame;
|
||||||
|
BRect fLastMailWindowFrame;
|
||||||
|
BRect fSignatureWindowFrame;
|
||||||
|
BPoint fPrefsWindowPos;
|
||||||
|
|
||||||
|
BMessage* fPrintSettings;
|
||||||
|
|
||||||
|
bool fPrintHelpAndExit;
|
||||||
|
|
||||||
|
// TODO: these should go into a settings class
|
||||||
|
char* fSignature;
|
||||||
|
char* fReplyPreamble;
|
||||||
|
bool fWrapMode;
|
||||||
|
bool fShowHeader;
|
||||||
|
bool fAttachAttributes;
|
||||||
|
bool fColoredQuotes;
|
||||||
|
uint8 fShowButtonBar;
|
||||||
|
bool fWarnAboutUnencodableCharacters;
|
||||||
|
bool fStartWithSpellCheckOn;
|
||||||
|
bool fShowSpamGUI;
|
||||||
|
uint32 fDefaultChain;
|
||||||
|
int32 fUseAccountFrom;
|
||||||
|
uint32 fMailCharacterSet;
|
||||||
|
BFont fContentFont;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // #ifndef _MAIL_H
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
/*
|
||||||
|
Open Tracker License
|
||||||
|
|
||||||
|
Terms and Conditions
|
||||||
|
|
||||||
|
Copyright (c) 1991-2001, Be Incorporated. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice applies to all licensees
|
||||||
|
and shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name of Be Incorporated shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings in
|
||||||
|
this Software without prior written authorization from Be Incorporated.
|
||||||
|
|
||||||
|
BeMail(TM), Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
|
||||||
|
of Be Incorporated in the United States and other countries. Other brand product
|
||||||
|
names are registered trademarks or trademarks of their respective holders.
|
||||||
|
All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "MailPopUpMenu.h"
|
||||||
|
|
||||||
|
#include <MenuItem.h>
|
||||||
|
#include <Message.h>
|
||||||
|
|
||||||
|
#include <malloc.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <MDRLanguage.h>
|
||||||
|
|
||||||
|
#include "MailSupport.h"
|
||||||
|
#include "Messages.h"
|
||||||
|
|
||||||
|
|
||||||
|
TMenu::TMenu(const char *name, const char *attribute, int32 message, bool popup,
|
||||||
|
bool addRandom)
|
||||||
|
: BPopUpMenu(name, false, false),
|
||||||
|
fPopup(popup),
|
||||||
|
fAddRandom(addRandom),
|
||||||
|
fMessage(message)
|
||||||
|
{
|
||||||
|
fAttribute = strdup(attribute);
|
||||||
|
BuildMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TMenu::~TMenu()
|
||||||
|
{
|
||||||
|
free(fAttribute);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
TMenu::AttachedToWindow()
|
||||||
|
{
|
||||||
|
BuildMenu();
|
||||||
|
BPopUpMenu::AttachedToWindow();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BPoint
|
||||||
|
TMenu::ScreenLocation(void)
|
||||||
|
{
|
||||||
|
if (fPopup)
|
||||||
|
return BPopUpMenu::ScreenLocation();
|
||||||
|
|
||||||
|
return BMenu::ScreenLocation();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
TMenu::BuildMenu()
|
||||||
|
{
|
||||||
|
RemoveItems(0, CountItems(), true);
|
||||||
|
add_query_menu_items(this, fAttribute, fMessage, NULL, fPopup);
|
||||||
|
|
||||||
|
if (fAddRandom && CountItems() > 0) {
|
||||||
|
AddItem(new BSeparatorItem(), 0);
|
||||||
|
|
||||||
|
BMessage *msg = new BMessage(M_RANDOM_SIG);
|
||||||
|
if (!fPopup) {
|
||||||
|
AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Random","R) 自動決定"), msg,
|
||||||
|
'0'), 0);
|
||||||
|
} else {
|
||||||
|
AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Random","R) 自動決定"), msg),
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
Open Tracker License
|
||||||
|
|
||||||
|
Terms and Conditions
|
||||||
|
|
||||||
|
Copyright (c) 1991-2001, Be Incorporated. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice applies to all licensees
|
||||||
|
and shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name of Be Incorporated shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings in
|
||||||
|
this Software without prior written authorization from Be Incorporated.
|
||||||
|
|
||||||
|
BeMail(TM), Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
|
||||||
|
of Be Incorporated in the United States and other countries. Other brand product
|
||||||
|
names are registered trademarks or trademarks of their respective holders.
|
||||||
|
All rights reserved.
|
||||||
|
*/
|
||||||
|
#ifndef _MAIL_POPUPMENU_H
|
||||||
|
#define _MAIL_POPUPMENU_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <PopUpMenu.h>
|
||||||
|
|
||||||
|
|
||||||
|
class TMenu: public BPopUpMenu {
|
||||||
|
public:
|
||||||
|
TMenu(const char* name, const char* attribute,
|
||||||
|
int32 message, bool popup = false,
|
||||||
|
bool addRandom = true);
|
||||||
|
virtual ~TMenu();
|
||||||
|
|
||||||
|
virtual BPoint ScreenLocation(void);
|
||||||
|
virtual void AttachedToWindow();
|
||||||
|
|
||||||
|
void BuildMenu();
|
||||||
|
|
||||||
|
private:
|
||||||
|
char* fAttribute;
|
||||||
|
bool fPopup;
|
||||||
|
bool fAddRandom;
|
||||||
|
int32 fMessage;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _MAIL_POPUPMENU_H
|
||||||
@@ -0,0 +1,173 @@
|
|||||||
|
/*
|
||||||
|
Open Tracker License
|
||||||
|
|
||||||
|
Terms and Conditions
|
||||||
|
|
||||||
|
Copyright (c) 1991-2001, Be Incorporated. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice applies to all licensees
|
||||||
|
and shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name of Be Incorporated shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings in
|
||||||
|
this Software without prior written authorization from Be Incorporated.
|
||||||
|
|
||||||
|
BeMail(TM), Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
|
||||||
|
of Be Incorporated in the United States and other countries. Other brand product
|
||||||
|
names are registered trademarks or trademarks of their respective holders.
|
||||||
|
All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "MailSupport.h"
|
||||||
|
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <Autolock.h>
|
||||||
|
#include <Clipboard.h>
|
||||||
|
#include <Debug.h>
|
||||||
|
#include <E-mail.h>
|
||||||
|
#include <InterfaceKit.h>
|
||||||
|
#include <Roster.h>
|
||||||
|
#include <Screen.h>
|
||||||
|
#include <StorageKit.h>
|
||||||
|
#include <String.h>
|
||||||
|
#include <TextView.h>
|
||||||
|
#include <UTF8.h>
|
||||||
|
|
||||||
|
#include <fs_index.h>
|
||||||
|
#include <fs_info.h>
|
||||||
|
|
||||||
|
#include <MailMessage.h>
|
||||||
|
#include <MailSettings.h>
|
||||||
|
#include <MailDaemon.h>
|
||||||
|
#include <mail_util.h>
|
||||||
|
#include <MDRLanguage.h>
|
||||||
|
|
||||||
|
#include <CharacterSetRoster.h>
|
||||||
|
|
||||||
|
#include "Utilities.h"
|
||||||
|
|
||||||
|
|
||||||
|
using namespace BPrivate ;
|
||||||
|
|
||||||
|
#ifdef HAIKU_TARGET_PLATFORM_BEOS
|
||||||
|
#include <netdb.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#include "Words.h"
|
||||||
|
|
||||||
|
// global variables
|
||||||
|
Words* gWords[MAX_DICTIONARIES];
|
||||||
|
Words* gExactWords[MAX_DICTIONARIES];
|
||||||
|
|
||||||
|
int32 gUserDict;
|
||||||
|
BFile* gUserDictFile;
|
||||||
|
int32 gDictCount = 0;
|
||||||
|
|
||||||
|
// int32 level = L_BEGINNER;
|
||||||
|
|
||||||
|
const char* kSpamServerSignature = "application/x-vnd.agmsmith.spamdbm";
|
||||||
|
const char* kDraftPath = "mail/draft";
|
||||||
|
const char* kDraftType = "text/x-vnd.Be-MailDraft";
|
||||||
|
const char* kMailFolder = "mail";
|
||||||
|
const char* kMailboxFolder = "mail/mailbox";
|
||||||
|
|
||||||
|
|
||||||
|
int32
|
||||||
|
header_len(BFile *file)
|
||||||
|
{
|
||||||
|
char *buffer;
|
||||||
|
int32 length;
|
||||||
|
int32 result = 0;
|
||||||
|
off_t size;
|
||||||
|
|
||||||
|
if (file->ReadAttr(B_MAIL_ATTR_HEADER, B_INT32_TYPE, 0, &result,
|
||||||
|
sizeof(int32)) != sizeof(int32)) {
|
||||||
|
file->GetSize(&size);
|
||||||
|
buffer = (char *)malloc(size);
|
||||||
|
if (buffer) {
|
||||||
|
file->Seek(0, 0);
|
||||||
|
if (file->Read(buffer, size) == size) {
|
||||||
|
while ((length = linelen(buffer + result, size - result, true)) > 2)
|
||||||
|
result += length;
|
||||||
|
|
||||||
|
result += length;
|
||||||
|
}
|
||||||
|
free(buffer);
|
||||||
|
file->WriteAttr(B_MAIL_ATTR_HEADER, B_INT32_TYPE, 0, &result, sizeof(int32));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int32
|
||||||
|
add_query_menu_items(BMenu* menu, const char* attribute, uint32 what,
|
||||||
|
const char* format, bool popup)
|
||||||
|
{
|
||||||
|
BVolume volume;
|
||||||
|
BVolumeRoster().GetBootVolume(&volume);
|
||||||
|
|
||||||
|
BQuery query;
|
||||||
|
query.SetVolume(&volume);
|
||||||
|
query.PushAttr(attribute);
|
||||||
|
query.PushString("*");
|
||||||
|
query.PushOp(B_EQ);
|
||||||
|
query.Fetch();
|
||||||
|
|
||||||
|
int32 index = 0;
|
||||||
|
BEntry entry;
|
||||||
|
while (query.GetNextEntry(&entry) == B_OK) {
|
||||||
|
BFile file(&entry, B_READ_ONLY);
|
||||||
|
if (file.InitCheck() == B_OK) {
|
||||||
|
BMessage* message = new BMessage(what);
|
||||||
|
|
||||||
|
entry_ref ref;
|
||||||
|
entry.GetRef(&ref);
|
||||||
|
message->AddRef("ref", &ref);
|
||||||
|
|
||||||
|
BString value;
|
||||||
|
if (file.ReadAttrString(attribute, &value) < B_OK)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
message->AddString("attribute", value.String());
|
||||||
|
|
||||||
|
char name[256];
|
||||||
|
if (format != NULL)
|
||||||
|
snprintf(name, sizeof(name), format, value.String());
|
||||||
|
else
|
||||||
|
strlcpy(name, value.String(), sizeof(name));
|
||||||
|
|
||||||
|
if (index < 9 && !popup)
|
||||||
|
menu->AddItem(new BMenuItem(name, message, '1' + index));
|
||||||
|
else
|
||||||
|
menu->AddItem(new BMenuItem(name, message));
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
Open Tracker License
|
||||||
|
|
||||||
|
Terms and Conditions
|
||||||
|
|
||||||
|
Copyright (c) 1991-2001, Be Incorporated. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice applies to all licensees
|
||||||
|
and shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name of Be Incorporated shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings in
|
||||||
|
this Software without prior written authorization from Be Incorporated.
|
||||||
|
|
||||||
|
BeMail(TM), Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
|
||||||
|
of Be Incorporated in the United States and other countries. Other brand product
|
||||||
|
names are registered trademarks or trademarks of their respective holders.
|
||||||
|
All rights reserved.
|
||||||
|
*/
|
||||||
|
#ifndef _MAIL_SUPPORT_H
|
||||||
|
#define _MAIL_SUPPORT_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <SupportDefs.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_DICTIONARIES 8
|
||||||
|
#define TITLE_BAR_HEIGHT 25
|
||||||
|
#define WIND_WIDTH 457
|
||||||
|
#define WIND_HEIGHT 400
|
||||||
|
#define RIGHT_BOUNDARY 8191
|
||||||
|
#define SEPARATOR_MARGIN 7
|
||||||
|
#define QUOTE "> "
|
||||||
|
|
||||||
|
|
||||||
|
enum USER_LEVEL {
|
||||||
|
L_BEGINNER = 0,
|
||||||
|
L_EXPERT
|
||||||
|
};
|
||||||
|
|
||||||
|
enum WINDOW_TYPES {
|
||||||
|
MAIL_WINDOW = 0,
|
||||||
|
PREFS_WINDOW,
|
||||||
|
SIG_WINDOW
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class BFile;
|
||||||
|
class Words;
|
||||||
|
|
||||||
|
|
||||||
|
int32 header_len(BFile*);
|
||||||
|
int32 add_query_menu_items(BMenu* menu, const char* attribute, uint32 what,
|
||||||
|
const char* format, bool popup = false);
|
||||||
|
|
||||||
|
|
||||||
|
extern Words* gWords[MAX_DICTIONARIES];
|
||||||
|
extern Words* gExactWords[MAX_DICTIONARIES];
|
||||||
|
extern int32 gUserDict;
|
||||||
|
extern BFile* gUserDictFile;
|
||||||
|
extern int32 gDictCount;
|
||||||
|
|
||||||
|
extern const char* kSpamServerSignature;
|
||||||
|
extern const char* kDraftPath;
|
||||||
|
extern const char* kDraftType;
|
||||||
|
extern const char* kMailFolder;
|
||||||
|
extern const char* kMailboxFolder;
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _MAIL_SUPPORT_H
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,188 @@
|
|||||||
|
/*
|
||||||
|
Open Tracker License
|
||||||
|
|
||||||
|
Terms and Conditions
|
||||||
|
|
||||||
|
Copyright (c) 1991-2001, Be Incorporated. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice applies to all licensees
|
||||||
|
and shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name of Be Incorporated shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings in
|
||||||
|
this Software without prior written authorization from Be Incorporated.
|
||||||
|
|
||||||
|
BeMail(TM), Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
|
||||||
|
of Be Incorporated in the United States and other countries. Other brand product
|
||||||
|
names are registered trademarks or trademarks of their respective holders.
|
||||||
|
All rights reserved.
|
||||||
|
*/
|
||||||
|
#ifndef _MAIL_WINDOW_H
|
||||||
|
#define _MAIL_WINDOW_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <Entry.h>
|
||||||
|
#include <Font.h>
|
||||||
|
#include <List.h>
|
||||||
|
#include <Locker.h>
|
||||||
|
#include <Messenger.h>
|
||||||
|
#include <Window.h>
|
||||||
|
|
||||||
|
#include <mail_encoding.h>
|
||||||
|
|
||||||
|
|
||||||
|
class TContentView;
|
||||||
|
class TEnclosuresView;
|
||||||
|
class THeaderView;
|
||||||
|
class TMailApp;
|
||||||
|
class TMenu;
|
||||||
|
class TPrefsWindow;
|
||||||
|
class TSignatureWindow;
|
||||||
|
|
||||||
|
class BEmailMessage;
|
||||||
|
class BFile;
|
||||||
|
class BFilePanel;
|
||||||
|
class BMailMessage;
|
||||||
|
class BMenuBar;
|
||||||
|
class BMenuItem;
|
||||||
|
class BmapButton;
|
||||||
|
class ButtonBar;
|
||||||
|
class Words;
|
||||||
|
|
||||||
|
class TMailWindow : public BWindow {
|
||||||
|
public:
|
||||||
|
TMailWindow(BRect frame, const char* title,
|
||||||
|
TMailApp* app, const entry_ref* ref,
|
||||||
|
const char* to, const BFont *font,
|
||||||
|
bool resending,
|
||||||
|
BMessenger* trackerMessenger);
|
||||||
|
virtual ~TMailWindow();
|
||||||
|
|
||||||
|
virtual void FrameResized(float width, float height);
|
||||||
|
virtual void MenusBeginning();
|
||||||
|
virtual void MessageReceived(BMessage*);
|
||||||
|
virtual bool QuitRequested();
|
||||||
|
virtual void Show();
|
||||||
|
virtual void Zoom(BPoint, float, float);
|
||||||
|
virtual void WindowActivated(bool state);
|
||||||
|
|
||||||
|
void SetTo(const char* mailTo, const char* subject,
|
||||||
|
const char* ccTo = NULL,
|
||||||
|
const char* bccTo = NULL,
|
||||||
|
const BString* body = NULL,
|
||||||
|
BMessage* enclosures = NULL);
|
||||||
|
void AddSignature(BMailMessage*);
|
||||||
|
void Forward(entry_ref*, TMailWindow*,
|
||||||
|
bool includeAttachments);
|
||||||
|
void Print();
|
||||||
|
void PrintSetup();
|
||||||
|
void Reply(entry_ref*, TMailWindow*, uint32);
|
||||||
|
void CopyMessage(entry_ref* ref, TMailWindow* src);
|
||||||
|
status_t Send(bool);
|
||||||
|
status_t SaveAsDraft();
|
||||||
|
status_t OpenMessage(entry_ref* ref,
|
||||||
|
uint32 characterSetForDecoding
|
||||||
|
= B_MAIL_NULL_CONVERSION);
|
||||||
|
|
||||||
|
status_t GetMailNodeRef(node_ref &nodeRef) const;
|
||||||
|
BEmailMessage* Mail() const { return fMail; }
|
||||||
|
|
||||||
|
bool GetTrackerWindowFile(entry_ref*,
|
||||||
|
bool dir) const;
|
||||||
|
void SaveTrackerPosition(entry_ref*);
|
||||||
|
void SetOriginatingWindow(BWindow* window);
|
||||||
|
|
||||||
|
void SetCurrentMessageRead();
|
||||||
|
void SetTrackerSelectionToCurrent();
|
||||||
|
TMailWindow* FrontmostWindow();
|
||||||
|
void UpdateViews();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void SetTitleForMessage();
|
||||||
|
void AddEnclosure(BMessage* msg);
|
||||||
|
void BuildButtonBar();
|
||||||
|
status_t TrainMessageAs(const char* commandWord);
|
||||||
|
|
||||||
|
private:
|
||||||
|
TMailApp* fApp;
|
||||||
|
|
||||||
|
BEmailMessage* fMail;
|
||||||
|
entry_ref* fRef;
|
||||||
|
// Reference to currently displayed file
|
||||||
|
int32 fFieldState;
|
||||||
|
BFilePanel* fPanel;
|
||||||
|
BMenuBar* fMenuBar;
|
||||||
|
BMenuItem* fAdd;
|
||||||
|
BMenuItem* fCut;
|
||||||
|
BMenuItem* fCopy;
|
||||||
|
BMenuItem* fHeader;
|
||||||
|
BMenuItem* fPaste;
|
||||||
|
BMenuItem* fPrint;
|
||||||
|
BMenuItem* fPrintSetup;
|
||||||
|
BMenuItem* fQuote;
|
||||||
|
BMenuItem* fRaw;
|
||||||
|
BMenuItem* fRemove;
|
||||||
|
BMenuItem* fRemoveQuote;
|
||||||
|
BMenuItem* fSendNow;
|
||||||
|
BMenuItem* fSendLater;
|
||||||
|
BMenuItem* fUndo;
|
||||||
|
BMenuItem* fRedo;
|
||||||
|
BMenuItem* fNextMsg;
|
||||||
|
BMenuItem* fPrevMsg;
|
||||||
|
BMenuItem* fDeleteNext;
|
||||||
|
BMenuItem* fSpelling;
|
||||||
|
BMenu* fSaveAddrMenu;
|
||||||
|
|
||||||
|
ButtonBar* fButtonBar;
|
||||||
|
BmapButton* fSendButton;
|
||||||
|
BmapButton* fSaveButton;
|
||||||
|
BmapButton* fPrintButton;
|
||||||
|
BmapButton* fSigButton;
|
||||||
|
|
||||||
|
BRect fZoom;
|
||||||
|
TContentView* fContentView;
|
||||||
|
THeaderView* fHeaderView;
|
||||||
|
TEnclosuresView* fEnclosuresView;
|
||||||
|
TMenu* fSignature;
|
||||||
|
BMessenger fTrackerMessenger;
|
||||||
|
// Talks to tracker window that this was launched from.
|
||||||
|
BMessenger fMessengerToSpamServer;
|
||||||
|
|
||||||
|
entry_ref fPrevRef;
|
||||||
|
entry_ref fNextRef;
|
||||||
|
bool fPrevTrackerPositionSaved : 1;
|
||||||
|
bool fNextTrackerPositionSaved : 1;
|
||||||
|
|
||||||
|
entry_ref fOpenFolder;
|
||||||
|
|
||||||
|
bool fSigAdded : 1;
|
||||||
|
bool fIncoming : 1;
|
||||||
|
bool fReplying : 1;
|
||||||
|
bool fResending : 1;
|
||||||
|
bool fSent : 1;
|
||||||
|
bool fDraft : 1;
|
||||||
|
bool fChanged : 1;
|
||||||
|
|
||||||
|
static BList sWindowList;
|
||||||
|
static BLocker sWindowListLock;
|
||||||
|
|
||||||
|
char* fStartingText;
|
||||||
|
entry_ref fRepliedMail;
|
||||||
|
BMessenger* fOriginatingWindow;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _MAIL_WINDOW_H
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
/*
|
||||||
|
Open Tracker License
|
||||||
|
|
||||||
|
Terms and Conditions
|
||||||
|
|
||||||
|
Copyright (c) 1991-2001, Be Incorporated. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice applies to all licensees
|
||||||
|
and shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name of Be Incorporated shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings in
|
||||||
|
this Software without prior written authorization from Be Incorporated.
|
||||||
|
|
||||||
|
BeMail(TM), Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
|
||||||
|
of Be Incorporated in the United States and other countries. Other brand product
|
||||||
|
names are registered trademarks or trademarks of their respective holders.
|
||||||
|
All rights reserved.
|
||||||
|
*/
|
||||||
|
#ifndef _MESSAGES_H
|
||||||
|
#define _MESSAGES_H
|
||||||
|
|
||||||
|
enum MESSAGES {
|
||||||
|
REFS_RECEIVED = 64,
|
||||||
|
LIST_INVOKED,
|
||||||
|
WINDOW_CLOSED,
|
||||||
|
CHANGE_FONT,
|
||||||
|
RESET_BUTTONS,
|
||||||
|
PREFS_CHANGED,
|
||||||
|
CHARSET_CHOICE_MADE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum TEXT {
|
||||||
|
SUBJECT_FIELD = REFS_RECEIVED + 64,
|
||||||
|
TO_FIELD,
|
||||||
|
ENCLOSE_FIELD,
|
||||||
|
CC_FIELD,
|
||||||
|
BCC_FIELD,
|
||||||
|
NAME_FIELD
|
||||||
|
};
|
||||||
|
|
||||||
|
enum MENUS {
|
||||||
|
/* app */
|
||||||
|
M_NEW = SUBJECT_FIELD + 64,
|
||||||
|
M_PREFS,
|
||||||
|
M_EDIT_SIGNATURE,
|
||||||
|
M_FONT,
|
||||||
|
M_STYLE,
|
||||||
|
M_SIZE,
|
||||||
|
M_BEGINNER,
|
||||||
|
M_EXPERT,
|
||||||
|
/* file */
|
||||||
|
M_REPLY,
|
||||||
|
M_REPLY_TO_SENDER,
|
||||||
|
M_REPLY_ALL,
|
||||||
|
M_FORWARD,
|
||||||
|
M_FORWARD_WITHOUT_ATTACHMENTS,
|
||||||
|
M_RESEND,
|
||||||
|
M_COPY_TO_NEW,
|
||||||
|
M_HEADER,
|
||||||
|
M_RAW,
|
||||||
|
M_SEND_NOW,
|
||||||
|
M_SAVE_AS_DRAFT,
|
||||||
|
M_SAVE,
|
||||||
|
M_PRINT_SETUP,
|
||||||
|
M_PRINT,
|
||||||
|
M_DELETE,
|
||||||
|
M_DELETE_PREV,
|
||||||
|
M_DELETE_NEXT,
|
||||||
|
M_CLOSE_READ,
|
||||||
|
M_CLOSE_SAVED,
|
||||||
|
M_CLOSE_SAME,
|
||||||
|
M_CLOSE_CUSTOM,
|
||||||
|
M_STATUS,
|
||||||
|
M_OPEN_MAIL_BOX,
|
||||||
|
M_OPEN_MAIL_FOLDER,
|
||||||
|
/* edit */
|
||||||
|
M_SELECT,
|
||||||
|
M_QUOTE,
|
||||||
|
M_REMOVE_QUOTE,
|
||||||
|
M_CHECK_SPELLING,
|
||||||
|
M_SIGNATURE,
|
||||||
|
M_RANDOM_SIG,
|
||||||
|
M_SIG_MENU,
|
||||||
|
M_FIND,
|
||||||
|
M_FIND_AGAIN,
|
||||||
|
/* encls */
|
||||||
|
M_ADD,
|
||||||
|
M_REMOVE,
|
||||||
|
M_OPEN,
|
||||||
|
M_COPY,
|
||||||
|
/* nav */
|
||||||
|
M_NEXTMSG,
|
||||||
|
M_PREVMSG,
|
||||||
|
M_SAVE_POSITION,
|
||||||
|
/* Spam GUI button and menu items. Order is important. */
|
||||||
|
M_SPAM_BUTTON,
|
||||||
|
M_TRAIN_SPAM_AND_DELETE,
|
||||||
|
M_TRAIN_SPAM,
|
||||||
|
M_UNTRAIN,
|
||||||
|
M_TRAIN_GENUINE,
|
||||||
|
|
||||||
|
M_REDO
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _MESSAGES_H
|
||||||
@@ -32,11 +32,8 @@ names are registered trademarks or trademarks of their respective holders.
|
|||||||
All rights reserved.
|
All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//
|
#include "Prefs.h"
|
||||||
// Prefs.cpp
|
|
||||||
//
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -56,8 +53,10 @@ All rights reserved.
|
|||||||
|
|
||||||
using namespace BPrivate;
|
using namespace BPrivate;
|
||||||
|
|
||||||
#include "Mail.h"
|
#include "MailApp.h"
|
||||||
#include "Prefs.h"
|
#include "MailSupport.h"
|
||||||
|
#include "MailWindow.h"
|
||||||
|
#include "Messages.h"
|
||||||
|
|
||||||
#define BUTTON_WIDTH 70
|
#define BUTTON_WIDTH 70
|
||||||
#define BUTTON_HEIGHT 20
|
#define BUTTON_HEIGHT 20
|
||||||
@@ -304,10 +303,9 @@ TPrefsWindow::TPrefsWindow(BRect rect, BFont *font, int32 *level, bool *wrap,
|
|||||||
|
|
||||||
TPrefsWindow::~TPrefsWindow()
|
TPrefsWindow::~TPrefsWindow()
|
||||||
{
|
{
|
||||||
prefs_window = Frame().LeftTop();
|
|
||||||
|
|
||||||
BMessage msg(WINDOW_CLOSED);
|
BMessage msg(WINDOW_CLOSED);
|
||||||
msg.AddInt32("kind", PREFS_WINDOW);
|
msg.AddInt32("kind", PREFS_WINDOW);
|
||||||
|
msg.AddPoint("window pos", Frame().LeftTop());
|
||||||
be_app->PostMessage(&msg);
|
be_app->PostMessage(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,25 +31,25 @@ of Be Incorporated in the United States and other countries. Other brand product
|
|||||||
names are registered trademarks or trademarks of their respective holders.
|
names are registered trademarks or trademarks of their respective holders.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
#include "Signature.h"
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// Signature.cpp
|
|
||||||
//
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <Clipboard.h>
|
#include <Clipboard.h>
|
||||||
#include <InterfaceKit.h>
|
#include <InterfaceKit.h>
|
||||||
#include <StorageKit.h>
|
#include <StorageKit.h>
|
||||||
|
|
||||||
#include "Mail.h"
|
#include "MailApp.h"
|
||||||
#include "Signature.h"
|
#include "MailPopUpMenu.h"
|
||||||
|
#include "MailSupport.h"
|
||||||
|
#include "MailWindow.h"
|
||||||
|
#include "Messages.h"
|
||||||
|
|
||||||
#include <MDRLanguage.h>
|
#include <MDRLanguage.h>
|
||||||
|
|
||||||
|
|
||||||
extern BRect signature_window;
|
extern BRect signature_window;
|
||||||
extern const char *kUndoStrings[];
|
extern const char *kUndoStrings[];
|
||||||
extern const char *kRedoStrings[];
|
extern const char *kRedoStrings[];
|
||||||
@@ -114,7 +114,6 @@ TSignatureWindow::TSignatureWindow(BRect rect)
|
|||||||
|
|
||||||
TSignatureWindow::~TSignatureWindow()
|
TSignatureWindow::~TSignatureWindow()
|
||||||
{
|
{
|
||||||
signature_window = Frame();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -245,6 +244,7 @@ TSignatureWindow::QuitRequested()
|
|||||||
if (Clear()) {
|
if (Clear()) {
|
||||||
BMessage msg(WINDOW_CLOSED);
|
BMessage msg(WINDOW_CLOSED);
|
||||||
msg.AddInt32("kind", SIG_WINDOW);
|
msg.AddInt32("kind", SIG_WINDOW);
|
||||||
|
msg.AddRect("window frame", Frame());
|
||||||
|
|
||||||
be_app->PostMessage(&msg);
|
be_app->PostMessage(&msg);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -31,9 +31,6 @@ of Be Incorporated in the United States and other countries. Other brand product
|
|||||||
names are registered trademarks or trademarks of their respective holders.
|
names are registered trademarks or trademarks of their respective holders.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "Mail.h"
|
|
||||||
#include "Status.h"
|
#include "Status.h"
|
||||||
|
|
||||||
#include <Button.h>
|
#include <Button.h>
|
||||||
@@ -52,6 +49,10 @@ All rights reserved.
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "MailApp.h"
|
||||||
|
#include "MailWindow.h"
|
||||||
|
#include "Messages.h"
|
||||||
|
|
||||||
|
|
||||||
#define STATUS_TEXT "Status:"
|
#define STATUS_TEXT "Status:"
|
||||||
#define STATUS_FIELD_H 10
|
#define STATUS_FIELD_H 10
|
||||||
|
|||||||
Reference in New Issue
Block a user