- Partial downloaded messages are now opened by Mail and not by the mail daemon. Mail request the body fetch and get notified when the daemon is done. During this time the Mail window title is showing "Downloading: subject". This fixes #7256.
- Some cleanup in Mail. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40789 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -195,7 +195,7 @@ public:
|
|||||||
|
|
||||||
void SyncMessages();
|
void SyncMessages();
|
||||||
void FetchBody(const entry_ref& ref,
|
void FetchBody(const entry_ref& ref,
|
||||||
BMessage* launch = NULL);
|
BMessenger* listener = NULL);
|
||||||
void MarkMessageAsRead(const entry_ref& ref,
|
void MarkMessageAsRead(const entry_ref& ref,
|
||||||
read_flags flag = B_READ);
|
read_flags flag = B_READ);
|
||||||
void DeleteMessage(const entry_ref& ref);
|
void DeleteMessage(const entry_ref& ref);
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ const uint32 kMsgSetStatusWindowMode = 'shst';
|
|||||||
const uint32 kMsgCountNewMessages = 'mnum';
|
const uint32 kMsgCountNewMessages = 'mnum';
|
||||||
const uint32 kMsgMarkMessageAsRead = 'mmar';
|
const uint32 kMsgMarkMessageAsRead = 'mmar';
|
||||||
const uint32 kMsgFetchBody = 'mfeb';
|
const uint32 kMsgFetchBody = 'mfeb';
|
||||||
|
const uint32 kMsgBodyFetched = 'mbfe';
|
||||||
|
|
||||||
|
|
||||||
class BMailDaemon {
|
class BMailDaemon {
|
||||||
@@ -32,7 +33,7 @@ public:
|
|||||||
static status_t MarkAsRead(int32 account, const entry_ref& ref,
|
static status_t MarkAsRead(int32 account, const entry_ref& ref,
|
||||||
read_flags flag = B_READ);
|
read_flags flag = B_READ);
|
||||||
static status_t FetchBody(const entry_ref& ref,
|
static status_t FetchBody(const entry_ref& ref,
|
||||||
BMessage* launchMessage = NULL);
|
BMessenger* listener = NULL);
|
||||||
static status_t Quit();
|
static status_t Quit();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+14
-10
@@ -644,9 +644,12 @@ TextRunArray::~TextRunArray()
|
|||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
TContentView::TContentView(BRect rect, bool incoming, BEmailMessage *mail,
|
TContentView::TContentView(BRect rect, bool incoming, BFont* font,
|
||||||
BFont* font, bool showHeader, bool coloredQuotes)
|
bool showHeader, bool coloredQuotes)
|
||||||
: BView(rect, "m_content", B_FOLLOW_ALL, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
|
:
|
||||||
|
BView(rect, "m_content", B_FOLLOW_ALL,
|
||||||
|
B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
|
||||||
|
|
||||||
fFocus(false),
|
fFocus(false),
|
||||||
fIncoming(incoming)
|
fIncoming(incoming)
|
||||||
{
|
{
|
||||||
@@ -662,8 +665,8 @@ TContentView::TContentView(BRect rect, bool incoming, BEmailMessage *mail,
|
|||||||
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, this, font, showHeader,
|
||||||
showHeader, coloredQuotes);
|
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);
|
||||||
}
|
}
|
||||||
@@ -849,16 +852,17 @@ TContentView::FrameResized(float /* width */, float /* height */)
|
|||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
TTextView::TTextView(BRect frame, BRect text, bool incoming,
|
TTextView::TTextView(BRect frame, BRect text, bool incoming, TContentView *view,
|
||||||
BEmailMessage *mail, TContentView *view, BFont *font,
|
BFont *font, bool showHeader, bool coloredQuotes)
|
||||||
bool showHeader, bool coloredQuotes)
|
:
|
||||||
: BTextView(frame, "", text, B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE),
|
BTextView(frame, "", text, B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE),
|
||||||
|
|
||||||
fHeader(showHeader),
|
fHeader(showHeader),
|
||||||
fColoredQuotes(coloredQuotes),
|
fColoredQuotes(coloredQuotes),
|
||||||
fReady(false),
|
fReady(false),
|
||||||
fYankBuffer(NULL),
|
fYankBuffer(NULL),
|
||||||
fLastPosition(-1),
|
fLastPosition(-1),
|
||||||
fMail(mail),
|
fMail(NULL),
|
||||||
fFont(font),
|
fFont(font),
|
||||||
fParent(view),
|
fParent(view),
|
||||||
fStopLoading(false),
|
fStopLoading(false),
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ class TSavePanel;
|
|||||||
|
|
||||||
class TContentView : public BView {
|
class TContentView : public BView {
|
||||||
public:
|
public:
|
||||||
TContentView(BRect, bool incoming, BEmailMessage *mail, BFont*,
|
TContentView(BRect, bool incoming, BFont*,
|
||||||
bool showHeader, bool coloredQuotes);
|
bool showHeader, bool coloredQuotes);
|
||||||
virtual void MessageReceived(BMessage *);
|
virtual void MessageReceived(BMessage *);
|
||||||
void FindString(const char *);
|
void FindString(const char *);
|
||||||
@@ -148,9 +148,10 @@ struct quote_context {
|
|||||||
|
|
||||||
class TTextView : public BTextView {
|
class TTextView : public BTextView {
|
||||||
public:
|
public:
|
||||||
TTextView(BRect, BRect, bool incoming, BEmailMessage *mail,
|
TTextView(BRect, BRect, bool incoming,
|
||||||
TContentView *, BFont *, bool showHeader, bool coloredQuotes);
|
TContentView*, BFont*, bool showHeader,
|
||||||
~TTextView();
|
bool coloredQuotes);
|
||||||
|
~TTextView();
|
||||||
|
|
||||||
virtual void AttachedToWindow();
|
virtual void AttachedToWindow();
|
||||||
virtual void KeyDown(const char*, int32);
|
virtual void KeyDown(const char*, int32);
|
||||||
|
|||||||
@@ -133,9 +133,10 @@ static const float kPlainFontSizeScale = 0.9;
|
|||||||
|
|
||||||
|
|
||||||
THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
||||||
BEmailMessage *mail, bool resending, uint32 defaultCharacterSet,
|
bool resending, uint32 defaultCharacterSet, int32 defaultAccount)
|
||||||
int32 defaultAccount)
|
:
|
||||||
: 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),
|
||||||
fAccountID(defaultAccount),
|
fAccountID(defaultAccount),
|
||||||
@@ -465,8 +466,6 @@ THeaderView::THeaderView(BRect rect, BRect windowRect, bool incoming,
|
|||||||
fDate->SetHighColor(0, 0, 0);
|
fDate->SetHighColor(0, 0, 0);
|
||||||
|
|
||||||
y += controlHeight + 5;
|
y += controlHeight + 5;
|
||||||
|
|
||||||
LoadMessage(mail);
|
|
||||||
}
|
}
|
||||||
ResizeTo(Bounds().Width(), y);
|
ResizeTo(Bounds().Width(), y);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,8 +82,7 @@ class TTextControl;
|
|||||||
class THeaderView : public BBox {
|
class THeaderView : public BBox {
|
||||||
public:
|
public:
|
||||||
THeaderView(BRect, BRect, bool incoming,
|
THeaderView(BRect, BRect, bool incoming,
|
||||||
BEmailMessage *mail, bool resending,
|
bool resending, uint32 defaultCharacterSet,
|
||||||
uint32 defaultCharacterSet,
|
|
||||||
int32 defaultAccount);
|
int32 defaultAccount);
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage*);
|
virtual void MessageReceived(BMessage*);
|
||||||
|
|||||||
+57
-2
@@ -5,6 +5,7 @@ resource app_flags B_SINGLE_LAUNCH;
|
|||||||
|
|
||||||
resource file_types message {
|
resource file_types message {
|
||||||
"types" = "text/x-email",
|
"types" = "text/x-email",
|
||||||
|
"types" = "text/x-partial-email",
|
||||||
"types" = "application/x-person",
|
"types" = "application/x-person",
|
||||||
"types" = "application/x-vnd.Be.URL.mailto",
|
"types" = "application/x-vnd.Be.URL.mailto",
|
||||||
"types" = "text/x-vnd.Be-MailDraft"
|
"types" = "text/x-vnd.Be-MailDraft"
|
||||||
@@ -70,7 +71,62 @@ resource(0, "BEOS:L:text/x-email") #'VICN' array {
|
|||||||
$"000A020105000A03010200"
|
$"000A020105000A03010200"
|
||||||
};
|
};
|
||||||
|
|
||||||
resource(1, "BEOS:L:text/x-vnd.be-maildraft") #'VICN' array {
|
resource(1, "BEOS:L:text/x-partial-email") #'ICON' array {
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFF001B1C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFF003F3F3F1B1C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFF003F3F3F3F3F3F1B1C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFF003F3F3F3F3F3F3F3F3F1B1C0FFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFF003F3F3F3F3F3F3F3F3F3F3F3F0FFF0000FFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFF003F3F3F3F3F3F3F1B1C0F0F0F0F0FFF1B1C0000FFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFF003F3F3F3F3F3F3F3F00000FFFFFFFFFFF1C3F1B1C0000FFFFFFFFFFFF"
|
||||||
|
$"FFFF003F3F3F3F3F3F3F3F001B1C0FFF1B1C1C1C1C3F3F3F1B1C0000FFFFFFFF"
|
||||||
|
$"FF003F3F3F3F3F3F3F001B1C00000FFF00001C1B3F3F3F3F2B7B1B1C0000FFFF"
|
||||||
|
$"001B1C3F3F3F3F3F3F3F0F0F0F0F0FFF1C1C00003F3F3F2B2C2B2B3F1B1C00FF"
|
||||||
|
$"0F00001B1C3F3F3F3F3F0FFFFFFFFFFF1C3F3F1B3F3F2B2C2B2B3F3F1B000FFF"
|
||||||
|
$"FF0F0F00001B1C3F3F3F0FFF1C1C11001B1C3F3F3F3F3F7B2B3F3F1B000F0FFF"
|
||||||
|
$"FFFFFF0F0F00001B1C3F0FFF1C3F3F3F00003F3F3F3F3F3F3F3F1B000F0FFFFF"
|
||||||
|
$"FFFFFFFFFF0F0F0F0F0F0FFF1C3F3F3F1B3F3F3F3F3F3F3F3F1B000F0FFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFF1C3F3F3F3F3F3F3F3F3F3F3F1B000F0FFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFF0F00001B1C3F3F3F3F3F3F3F3F1B000F0FFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFF0F0F00001B1C3F3F3F3F3F1B000F0FFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFF0F0F00001B1C3F3F1B000F0FFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F00001B1C000F0FFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F00000F0FFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F0FFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
};
|
||||||
|
|
||||||
|
resource(1, "BEOS:M:text/x-partial-email") #'MICN' array
|
||||||
|
{
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFFFF001B0000FFFFFFFFFFFFFFFF"
|
||||||
|
$"FFFFFF001B3F1B1B00FFFFFFFFFFFFFF"
|
||||||
|
$"FFFF001B3F3F3F3F1B0FFF00FFFFFFFF"
|
||||||
|
$"FF001B3F3F00000F0F0FFF1B0000FFFF"
|
||||||
|
$"001B3F3F1C1C1C0FFFFFFF2B1B1B0000"
|
||||||
|
$"001B1B3F00001C0FFF1C7B2B2C1B000F"
|
||||||
|
$"0F00001B0F0F0F0FFF1C3F7B1B000FFF"
|
||||||
|
$"FF0F0F000FFFFFFFFF1C3F1B000FFFFF"
|
||||||
|
$"FFFFFF0F0FFF001B1B1C1B000FFFFFFF"
|
||||||
|
$"FFFFFFFFFFFF0F00001B000FFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFF0F0F000FFFFFFFFFFF"
|
||||||
|
$"FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFF"
|
||||||
|
};
|
||||||
|
|
||||||
|
resource(2, "BEOS:L:text/x-vnd.be-maildraft") #'VICN' array {
|
||||||
$"6E636966070500040178020006023A94CE3C078BBE370C3CD1394B9EF949A6E5"
|
$"6E636966070500040178020006023A94CE3C078BBE370C3CD1394B9EF949A6E5"
|
||||||
$"00FFFCACFFE6E27C03A07D3303A0893C02000602B4491E38CD95BCF086B8659B"
|
$"00FFFCACFFE6E27C03A07D3303A0893C02000602B4491E38CD95BCF086B8659B"
|
||||||
$"4B4F4E49909100ECE986FFC9C55C020016023A4998B6DADD38AE423C25DB4932"
|
$"4B4F4E49909100ECE986FFC9C55C020016023A4998B6DADD38AE423C25DB4932"
|
||||||
@@ -81,4 +137,3 @@ resource(1, "BEOS:L:text/x-vnd.be-maildraft") #'VICN' array {
|
|||||||
$"01011001178402040A040103000A050104000A0001061001178200040A060106"
|
$"01011001178402040A040103000A050104000A0001061001178200040A060106"
|
||||||
$"000A020105000A03010200"
|
$"000A020105000A03010200"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -590,10 +590,11 @@ TMailApp::RefsReceived(BMessage *msg)
|
|||||||
if (file.InitCheck() == B_NO_ERROR) {
|
if (file.InitCheck() == B_NO_ERROR) {
|
||||||
BNodeInfo node(&file);
|
BNodeInfo node(&file);
|
||||||
node.GetType(type);
|
node.GetType(type);
|
||||||
if (!strcmp(type, B_MAIL_TYPE)) {
|
if (strcmp(type, B_MAIL_TYPE) == 0
|
||||||
|
|| strcmp(type, B_PARTIAL_MAIL_TYPE) == 0) {
|
||||||
window = NewWindow(&ref, NULL, false, &messenger);
|
window = NewWindow(&ref, NULL, false, &messenger);
|
||||||
window->Show();
|
window->Show();
|
||||||
} else if(!strcmp(type, "application/x-person")) {
|
} else if(strcmp(type, "application/x-person") == 0) {
|
||||||
/* Got a People contact info file, see if it has an Email address. */
|
/* Got a People contact info file, see if it has an Email address. */
|
||||||
BString name;
|
BString name;
|
||||||
BString email;
|
BString email;
|
||||||
@@ -631,8 +632,7 @@ TMailApp::RefsReceived(BMessage *msg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp(type, kDraftType))
|
else if (strcmp(type, kDraftType) == 0) {
|
||||||
{
|
|
||||||
window = NewWindow();
|
window = NewWindow();
|
||||||
|
|
||||||
// If it's a draft message, open it
|
// If it's a draft message, open it
|
||||||
|
|||||||
@@ -145,10 +145,14 @@ BLocker TMailWindow::sWindowListLock;
|
|||||||
|
|
||||||
|
|
||||||
TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
|
TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
|
||||||
const entry_ref* ref, const char* to, const BFont* font, bool resending,
|
const entry_ref* ref, const char* to, const BFont* font, bool resending,
|
||||||
BMessenger* messenger)
|
BMessenger* messenger)
|
||||||
: BWindow(rect, title, B_DOCUMENT_WINDOW, 0),
|
:
|
||||||
|
BWindow(rect, title, B_DOCUMENT_WINDOW, 0),
|
||||||
|
|
||||||
fApp(app),
|
fApp(app),
|
||||||
|
fMail(NULL),
|
||||||
|
fRef(NULL),
|
||||||
fFieldState(0),
|
fFieldState(0),
|
||||||
fPanel(NULL),
|
fPanel(NULL),
|
||||||
fSendButton(NULL),
|
fSendButton(NULL),
|
||||||
@@ -168,7 +172,9 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
|
|||||||
fStartingText(NULL),
|
fStartingText(NULL),
|
||||||
fOriginatingWindow(NULL),
|
fOriginatingWindow(NULL),
|
||||||
fReadButton(NULL),
|
fReadButton(NULL),
|
||||||
fNextButton(NULL)
|
fNextButton(NULL),
|
||||||
|
|
||||||
|
fDownloading(false)
|
||||||
{
|
{
|
||||||
fKeepStatusOnQuit = false;
|
fKeepStatusOnQuit = false;
|
||||||
|
|
||||||
@@ -187,13 +193,9 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
|
|||||||
|
|
||||||
if (ref) {
|
if (ref) {
|
||||||
fRef = new entry_ref(*ref);
|
fRef = new entry_ref(*ref);
|
||||||
fMail = new BEmailMessage(fRef);
|
|
||||||
fIncoming = true;
|
fIncoming = true;
|
||||||
} else {
|
} else
|
||||||
fRef = NULL;
|
|
||||||
fMail = NULL;
|
|
||||||
fIncoming = false;
|
fIncoming = false;
|
||||||
}
|
|
||||||
|
|
||||||
fAutoMarkRead = fApp->AutoMarkRead();
|
fAutoMarkRead = fApp->AutoMarkRead();
|
||||||
BRect r(0, 0, RIGHT_BOUNDARY, 15);
|
BRect r(0, 0, RIGHT_BOUNDARY, 15);
|
||||||
@@ -413,40 +415,6 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
|
|||||||
menu->AddItem(fNextMsg);
|
menu->AddItem(fNextMsg);
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
fSaveAddrMenu = subMenu = new BMenu(B_TRANSLATE("Save address"));
|
fSaveAddrMenu = subMenu = new BMenu(B_TRANSLATE("Save address"));
|
||||||
|
|
||||||
// create the list of addresses
|
|
||||||
|
|
||||||
BList addressList;
|
|
||||||
get_address_list(addressList, fMail->To(), extract_address);
|
|
||||||
get_address_list(addressList, fMail->CC(), extract_address);
|
|
||||||
get_address_list(addressList, fMail->From(), extract_address);
|
|
||||||
get_address_list(addressList, fMail->ReplyTo(), extract_address);
|
|
||||||
|
|
||||||
for (int32 i = addressList.CountItems(); i-- > 0;) {
|
|
||||||
char *address = (char *)addressList.RemoveItem(0L);
|
|
||||||
|
|
||||||
// insert the new address in alphabetical order
|
|
||||||
int32 index = 0;
|
|
||||||
while ((item = subMenu->ItemAt(index)) != NULL) {
|
|
||||||
if (!strcmp(address, item->Label())) {
|
|
||||||
// item already in list
|
|
||||||
goto skip;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp(address, item->Label()) < 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
index++;
|
|
||||||
}
|
|
||||||
|
|
||||||
msg = new BMessage(M_SAVE);
|
|
||||||
msg->AddString("address", address);
|
|
||||||
subMenu->AddItem(new BMenuItem(address, msg), index);
|
|
||||||
|
|
||||||
skip:
|
|
||||||
free(address);
|
|
||||||
}
|
|
||||||
|
|
||||||
menu->AddItem(subMenu);
|
menu->AddItem(subMenu);
|
||||||
fMenuBar->AddItem(menu);
|
fMenuBar->AddItem(menu);
|
||||||
|
|
||||||
@@ -520,7 +488,7 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
|
|||||||
fButtonBar = NULL;
|
fButtonBar = NULL;
|
||||||
|
|
||||||
r.top = r.bottom = height + bbheight + 1;
|
r.top = r.bottom = height + bbheight + 1;
|
||||||
fHeaderView = new THeaderView (r, rect, fIncoming, fMail, resending,
|
fHeaderView = new THeaderView (r, rect, fIncoming, resending,
|
||||||
(resending || !fIncoming)
|
(resending || !fIncoming)
|
||||||
? fApp->MailCharacterSet()
|
? fApp->MailCharacterSet()
|
||||||
// Use preferences setting for composing mail.
|
// Use preferences setting for composing mail.
|
||||||
@@ -531,8 +499,8 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
|
|||||||
r = Frame();
|
r = Frame();
|
||||||
r.OffsetTo(0, 0);
|
r.OffsetTo(0, 0);
|
||||||
r.top = fHeaderView->Frame().bottom - 1;
|
r.top = fHeaderView->Frame().bottom - 1;
|
||||||
fContentView = new TContentView(r, fIncoming, fMail,
|
fContentView = new TContentView(r, fIncoming, const_cast<BFont *>(font),
|
||||||
const_cast<BFont *>(font), false, fApp->ColoredQuotes());
|
false, fApp->ColoredQuotes());
|
||||||
// TContentView needs to be properly const, for now cast away constness
|
// TContentView needs to be properly const, for now cast away constness
|
||||||
|
|
||||||
AddChild(fHeaderView);
|
AddChild(fHeaderView);
|
||||||
@@ -592,8 +560,7 @@ TMailWindow::TMailWindow(BRect rect, const char* title, TMailApp* app,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fRef != NULL)
|
OpenMessage(ref, fHeaderView->fCharacterSetUserSees);
|
||||||
SetTitleForMessage();
|
|
||||||
|
|
||||||
_UpdateSizeLimits();
|
_UpdateSizeLimits();
|
||||||
|
|
||||||
@@ -719,6 +686,7 @@ TMailWindow::~TMailWindow()
|
|||||||
delete fMail;
|
delete fMail;
|
||||||
delete fPanel;
|
delete fPanel;
|
||||||
delete fOriginatingWindow;
|
delete fOriginatingWindow;
|
||||||
|
delete fRef;
|
||||||
|
|
||||||
BAutolock locker(sWindowListLock);
|
BAutolock locker(sWindowListLock);
|
||||||
sWindowList.RemoveItem(this);
|
sWindowList.RemoveItem(this);
|
||||||
@@ -952,6 +920,25 @@ TMailWindow::MessageReceived(BMessage *msg)
|
|||||||
{
|
{
|
||||||
bool wasReadMsg = false;
|
bool wasReadMsg = false;
|
||||||
switch (msg->what) {
|
switch (msg->what) {
|
||||||
|
case kMsgBodyFetched:
|
||||||
|
{
|
||||||
|
status_t status = msg->FindInt32("status");
|
||||||
|
if (status != B_OK) {
|
||||||
|
PostMessage(B_QUIT_REQUESTED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry_ref ref;
|
||||||
|
if (msg->FindRef("ref", &ref) != B_OK)
|
||||||
|
break;
|
||||||
|
if (ref != *fRef)
|
||||||
|
break;
|
||||||
|
|
||||||
|
// reload the current message
|
||||||
|
OpenMessage(&ref, fHeaderView->fCharacterSetUserSees);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case FIELD_CHANGED:
|
case FIELD_CHANGED:
|
||||||
{
|
{
|
||||||
int32 prevState = fFieldState;
|
int32 prevState = fFieldState;
|
||||||
@@ -1479,45 +1466,46 @@ TMailWindow::MessageReceived(BMessage *msg)
|
|||||||
break;
|
break;
|
||||||
case M_READ:
|
case M_READ:
|
||||||
wasReadMsg = true;
|
wasReadMsg = true;
|
||||||
|
SetCurrentMessageRead(B_READ);
|
||||||
|
_UpdateReadButton();
|
||||||
msg->what = M_NEXTMSG;
|
msg->what = M_NEXTMSG;
|
||||||
case M_PREVMSG:
|
case M_PREVMSG:
|
||||||
case M_NEXTMSG:
|
case M_NEXTMSG:
|
||||||
if (fRef != NULL) {
|
{
|
||||||
entry_ref nextRef = *fRef;
|
if (fRef == NULL)
|
||||||
|
break;
|
||||||
if (GetTrackerWindowFile(&nextRef, (msg->what == M_NEXTMSG))) {
|
entry_ref nextRef = *fRef;
|
||||||
TMailWindow *window = static_cast<TMailApp *>(be_app)
|
if (GetTrackerWindowFile(&nextRef, (msg->what == M_NEXTMSG))) {
|
||||||
->FindWindow(nextRef);
|
TMailWindow *window = static_cast<TMailApp *>(be_app)
|
||||||
if (window == NULL) {
|
->FindWindow(nextRef);
|
||||||
BNode node(fRef);
|
if (window == NULL) {
|
||||||
read_flags currentFlag;
|
BNode node(fRef);
|
||||||
if (read_read_attr(node, currentFlag) != B_OK)
|
read_flags currentFlag;
|
||||||
currentFlag = B_UNREAD;
|
if (read_read_attr(node, currentFlag) != B_OK)
|
||||||
if (fAutoMarkRead == true || wasReadMsg)
|
currentFlag = B_UNREAD;
|
||||||
SetCurrentMessageRead(B_READ);
|
if (fAutoMarkRead == true)
|
||||||
else if (currentFlag != B_READ)
|
|
||||||
SetCurrentMessageRead(B_SEEN);
|
|
||||||
|
|
||||||
OpenMessage(&nextRef,
|
|
||||||
fHeaderView->fCharacterSetUserSees, msg);
|
|
||||||
} else {
|
|
||||||
window->Activate();
|
|
||||||
|
|
||||||
if (wasReadMsg)
|
|
||||||
SetCurrentMessageRead(B_READ);
|
|
||||||
PostMessage(B_CLOSE_REQUESTED);
|
|
||||||
}
|
|
||||||
|
|
||||||
SetTrackerSelectionToCurrent();
|
|
||||||
} else {
|
|
||||||
if (wasReadMsg) {
|
|
||||||
SetCurrentMessageRead(B_READ);
|
SetCurrentMessageRead(B_READ);
|
||||||
PostMessage(B_CLOSE_REQUESTED);
|
else if (currentFlag != B_READ && !wasReadMsg)
|
||||||
}
|
SetCurrentMessageRead(B_SEEN);
|
||||||
beep();
|
|
||||||
|
OpenMessage(&nextRef,
|
||||||
|
fHeaderView->fCharacterSetUserSees);
|
||||||
|
} else {
|
||||||
|
window->Activate();
|
||||||
|
|
||||||
|
//fSent = true;
|
||||||
|
PostMessage(B_CLOSE_REQUESTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetTrackerSelectionToCurrent();
|
||||||
|
} else {
|
||||||
|
if (wasReadMsg)
|
||||||
|
PostMessage(B_CLOSE_REQUESTED);
|
||||||
|
beep();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case M_SAVE_POSITION:
|
case M_SAVE_POSITION:
|
||||||
if (fRef != NULL)
|
if (fRef != NULL)
|
||||||
SaveTrackerPosition(fRef);
|
SaveTrackerPosition(fRef);
|
||||||
@@ -2761,6 +2749,9 @@ TMailWindow::SetTitleForMessage()
|
|||||||
else
|
else
|
||||||
title = fMail->Subject();
|
title = fMail->Subject();
|
||||||
|
|
||||||
|
if (fDownloading)
|
||||||
|
title.Prepend("Downloading: ");
|
||||||
|
|
||||||
if (fApp->ShowSpamGUI() && fRef != NULL) {
|
if (fApp->ShowSpamGUI() && fRef != NULL) {
|
||||||
BString classification;
|
BString classification;
|
||||||
BNode node (fRef);
|
BNode node (fRef);
|
||||||
@@ -2783,7 +2774,7 @@ TMailWindow::SetTitleForMessage()
|
|||||||
title << "[" << classification << "] " << oldTitle;
|
title << "[" << classification << "] " << oldTitle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetTitle(title.String());
|
SetTitle(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2794,8 +2785,7 @@ TMailWindow::SetTitleForMessage()
|
|||||||
//
|
//
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
TMailWindow::OpenMessage(entry_ref *ref, uint32 characterSetForDecoding,
|
TMailWindow::OpenMessage(const entry_ref *ref, uint32 characterSetForDecoding)
|
||||||
BMessage* trackerMsg)
|
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Set some references to the email file
|
// Set some references to the email file
|
||||||
@@ -2812,6 +2802,7 @@ TMailWindow::OpenMessage(entry_ref *ref, uint32 characterSetForDecoding,
|
|||||||
|
|
||||||
fContentView->fTextView->StopLoad();
|
fContentView->fTextView->StopLoad();
|
||||||
delete fMail;
|
delete fMail;
|
||||||
|
fMail = NULL;
|
||||||
|
|
||||||
BFile file(fRef, B_READ_ONLY);
|
BFile file(fRef, B_READ_ONLY);
|
||||||
status_t err = file.InitCheck();
|
status_t err = file.InitCheck();
|
||||||
@@ -2823,9 +2814,12 @@ TMailWindow::OpenMessage(entry_ref *ref, uint32 characterSetForDecoding,
|
|||||||
fileInfo.GetType(mimeType);
|
fileInfo.GetType(mimeType);
|
||||||
|
|
||||||
if (strcmp(mimeType, B_PARTIAL_MAIL_TYPE) == 0) {
|
if (strcmp(mimeType, B_PARTIAL_MAIL_TYPE) == 0) {
|
||||||
BMailDaemon::FetchBody(*ref, trackerMsg);
|
BMessenger listener(this);
|
||||||
|
BMailDaemon::FetchBody(*ref, &listener);
|
||||||
fileInfo.GetType(mimeType);
|
fileInfo.GetType(mimeType);
|
||||||
}
|
_SetDownloading(true);
|
||||||
|
} else
|
||||||
|
_SetDownloading(false);
|
||||||
|
|
||||||
// Check if it's a draft file, which contains only the text, and has the
|
// Check if it's a draft file, which contains only the text, and has the
|
||||||
// from, to, bcc, attachments listed as attributes.
|
// from, to, bcc, attachments listed as attributes.
|
||||||
@@ -3215,3 +3209,9 @@ TMailWindow::_UpdateReadButton()
|
|||||||
UpdateViews();
|
UpdateViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
TMailWindow::_SetDownloading(bool downloading)
|
||||||
|
{
|
||||||
|
fDownloading = downloading;
|
||||||
|
}
|
||||||
|
|||||||
@@ -96,10 +96,9 @@ class TMailWindow : public BWindow {
|
|||||||
void CopyMessage(entry_ref* ref, TMailWindow* src);
|
void CopyMessage(entry_ref* ref, TMailWindow* src);
|
||||||
status_t Send(bool);
|
status_t Send(bool);
|
||||||
status_t SaveAsDraft();
|
status_t SaveAsDraft();
|
||||||
status_t OpenMessage(entry_ref* ref,
|
status_t OpenMessage(const entry_ref* ref,
|
||||||
uint32 characterSetForDecoding
|
uint32 characterSetForDecoding
|
||||||
= B_MAIL_NULL_CONVERSION,
|
= B_MAIL_NULL_CONVERSION);
|
||||||
BMessage* trackerMsg = NULL);
|
|
||||||
|
|
||||||
status_t GetMailNodeRef(node_ref &nodeRef) const;
|
status_t GetMailNodeRef(node_ref &nodeRef) const;
|
||||||
BEmailMessage* Mail() const { return fMail; }
|
BEmailMessage* Mail() const { return fMail; }
|
||||||
@@ -130,7 +129,9 @@ class TMailWindow : public BWindow {
|
|||||||
|
|
||||||
void _AddReadButton();
|
void _AddReadButton();
|
||||||
void _UpdateReadButton();
|
void _UpdateReadButton();
|
||||||
|
|
||||||
|
void _SetDownloading(bool downloading);
|
||||||
|
|
||||||
TMailApp* fApp;
|
TMailApp* fApp;
|
||||||
|
|
||||||
BEmailMessage* fMail;
|
BEmailMessage* fMail;
|
||||||
@@ -205,6 +206,8 @@ class TMailWindow : public BWindow {
|
|||||||
BmapButton* fNextButton;
|
BmapButton* fNextButton;
|
||||||
|
|
||||||
bool fKeepStatusOnQuit;
|
bool fKeepStatusOnQuit;
|
||||||
|
|
||||||
|
bool fDownloading;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _MAIL_WINDOW_H
|
#endif // _MAIL_WINDOW_H
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ BMailDaemon::MarkAsRead(int32 account, const entry_ref& ref, read_flags flag)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
BMailDaemon::FetchBody(const entry_ref& ref, BMessage* launchMessage)
|
BMailDaemon::FetchBody(const entry_ref& ref, BMessenger* listener)
|
||||||
{
|
{
|
||||||
BMessenger daemon("application/x-vnd.Be-POST");
|
BMessenger daemon("application/x-vnd.Be-POST");
|
||||||
if (!daemon.IsValid())
|
if (!daemon.IsValid())
|
||||||
@@ -95,7 +95,8 @@ BMailDaemon::FetchBody(const entry_ref& ref, BMessage* launchMessage)
|
|||||||
|
|
||||||
BMessage message(kMsgFetchBody);
|
BMessage message(kMsgFetchBody);
|
||||||
message.AddRef("refs", &ref);
|
message.AddRef("refs", &ref);
|
||||||
message.AddMessage("launch", launchMessage);
|
if (listener != NULL)
|
||||||
|
message.AddMessenger("target", *listener);
|
||||||
|
|
||||||
BMessage reply;
|
BMessage reply;
|
||||||
return daemon.SendMessage(&message, &reply);
|
return daemon.SendMessage(&message, &reply);
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include <mail_util.h>
|
#include <mail_util.h>
|
||||||
#include <MailAddon.h>
|
#include <MailAddon.h>
|
||||||
|
#include <MailDaemon.h>
|
||||||
#include <MailProtocol.h>
|
#include <MailProtocol.h>
|
||||||
#include <MailSettings.h>
|
#include <MailSettings.h>
|
||||||
|
|
||||||
@@ -542,8 +543,6 @@ MailProtocolThread::TriggerFileDeleted(const node_ref& node)
|
|||||||
|
|
||||||
|
|
||||||
const uint32 kMsgSyncMessages = '&SyM';
|
const uint32 kMsgSyncMessages = '&SyM';
|
||||||
const uint32 kMsgFetchBody = '&FeB';
|
|
||||||
const uint32 kMsgMarkMessageAsRead = '&MaR';
|
|
||||||
const uint32 kMsgDeleteMessage = '&DeM';
|
const uint32 kMsgDeleteMessage = '&DeM';
|
||||||
const uint32 kMsgAppendMessage = '&ApM';
|
const uint32 kMsgAppendMessage = '&ApM';
|
||||||
|
|
||||||
@@ -579,20 +578,15 @@ InboundProtocolThread::MessageReceived(BMessage* message)
|
|||||||
entry_ref ref;
|
entry_ref ref;
|
||||||
message->FindRef("ref", &ref);
|
message->FindRef("ref", &ref);
|
||||||
status_t status = fProtocol->FetchBody(ref);
|
status_t status = fProtocol->FetchBody(ref);
|
||||||
if (status != B_OK)
|
|
||||||
|
BMessenger target;
|
||||||
|
if (message->FindMessenger("target", &target) != B_OK)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
BMessage argv;
|
BMessage message(kMsgBodyFetched);
|
||||||
if (message->FindMessage("launch", &argv) != B_OK)
|
message.AddInt32("status", status);
|
||||||
break;
|
message.AddRef("ref", &ref);
|
||||||
argv.RemoveName("argv");
|
target.SendMessage(&message);
|
||||||
argv.RemoveName("argc");
|
|
||||||
|
|
||||||
argv.AddString("argv", "E-mail");
|
|
||||||
BPath path(&ref);
|
|
||||||
argv.AddString("argv", path.Path());
|
|
||||||
argv.AddInt32("argc", 2);
|
|
||||||
be_roster->Launch("text/x-email", &argv);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -635,11 +629,12 @@ InboundProtocolThread::SyncMessages()
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
InboundProtocolThread::FetchBody(const entry_ref& ref, BMessage* launch)
|
InboundProtocolThread::FetchBody(const entry_ref& ref, BMessenger* listener)
|
||||||
{
|
{
|
||||||
BMessage message(kMsgFetchBody);
|
BMessage message(kMsgFetchBody);
|
||||||
message.AddRef("ref", &ref);
|
message.AddRef("ref", &ref);
|
||||||
message.AddMessage("launch", launch);
|
if (listener)
|
||||||
|
message.AddMessenger("target", *listener);
|
||||||
PostMessage(&message);
|
PostMessage(&message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -201,11 +201,11 @@ MailDaemonApp::RefsReceived(BMessage* message)
|
|||||||
if (!protocol)
|
if (!protocol)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
BMessage* launchMessage = message;
|
BMessenger target;
|
||||||
BMessage temp;
|
BMessenger* messenger = ⌖
|
||||||
if (message->FindMessage("launch", &temp) == B_OK)
|
if (message->FindMessenger("target", &target) != B_OK)
|
||||||
launchMessage = &temp;
|
messenger = NULL;
|
||||||
protocol->FetchBody(ref, launchMessage);
|
protocol->FetchBody(ref, messenger);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -638,12 +638,12 @@ MailDaemonApp::MakeMimeTypes(bool remakeMIMETypes)
|
|||||||
// do a full rebuild from nothing, or just add on the new attributes that
|
// do a full rebuild from nothing, or just add on the new attributes that
|
||||||
// we support which the regular BeOS mail daemon didn't have.
|
// we support which the regular BeOS mail daemon didn't have.
|
||||||
|
|
||||||
const char* types[2] = {"text/x-email", "text/x-partial-email"};
|
const uint8 kNTypes = 2;
|
||||||
BMimeType mime;
|
const char* types[kNTypes] = {"text/x-email", "text/x-partial-email"};
|
||||||
BMessage info;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < sizeof(types) / sizeof(types[0]); i++) {
|
for (size_t i = 0; i < kNTypes; i++) {
|
||||||
info.MakeEmpty();
|
BMessage info;
|
||||||
|
BMimeType mime;
|
||||||
mime.SetTo(types[i]);
|
mime.SetTo(types[i]);
|
||||||
if (mime.InitCheck() != B_OK) {
|
if (mime.InitCheck() != B_OK) {
|
||||||
fputs("could not init mime type.\n", stderr);
|
fputs("could not init mime type.\n", stderr);
|
||||||
@@ -682,7 +682,7 @@ MailDaemonApp::MakeMimeTypes(bool remakeMIMETypes)
|
|||||||
} else {
|
} else {
|
||||||
mime.SetShortDescription("Partial E-mail");
|
mime.SetShortDescription("Partial E-mail");
|
||||||
mime.SetLongDescription("A Partially Downloaded E-mail");
|
mime.SetLongDescription("A Partially Downloaded E-mail");
|
||||||
mime.SetPreferredApp("application/x-vnd.Be-POST");
|
mime.SetPreferredApp("application/x-vnd.Be-MAIL");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Just add the e-mail related attribute types we use to the MIME
|
// Just add the e-mail related attribute types we use to the MIME
|
||||||
|
|||||||
@@ -2,10 +2,6 @@ resource app_signature "application/x-vnd.Be-POST";
|
|||||||
|
|
||||||
resource app_flags B_BACKGROUND_APP;
|
resource app_flags B_BACKGROUND_APP;
|
||||||
|
|
||||||
resource(1, "BEOS:FILE_TYPES") message {
|
|
||||||
"types" = "text/x-partial-email"
|
|
||||||
};
|
|
||||||
|
|
||||||
resource app_version {
|
resource app_version {
|
||||||
major = 3,
|
major = 3,
|
||||||
middle = 0,
|
middle = 0,
|
||||||
@@ -90,63 +86,6 @@ resource(3) #'BBMP' archive BBitmap {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
resource(0, "BEOS:L:text/x-partial-email") #'ICON' array {
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFF001B1C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFF003F3F3F1B1C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFF003F3F3F3F3F3F1B1C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFF003F3F3F3F3F3F3F3F3F1B1C0FFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFF003F3F3F3F3F3F3F3F3F3F3F3F0FFF0000FFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFF003F3F3F3F3F3F3F1B1C0F0F0F0F0FFF1B1C0000FFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFF003F3F3F3F3F3F3F3F00000FFFFFFFFFFF1C3F1B1C0000FFFFFFFFFFFF"
|
|
||||||
$"FFFF003F3F3F3F3F3F3F3F001B1C0FFF1B1C1C1C1C3F3F3F1B1C0000FFFFFFFF"
|
|
||||||
$"FF003F3F3F3F3F3F3F001B1C00000FFF00001C1B3F3F3F3F2B7B1B1C0000FFFF"
|
|
||||||
$"001B1C3F3F3F3F3F3F3F0F0F0F0F0FFF1C1C00003F3F3F2B2C2B2B3F1B1C00FF"
|
|
||||||
$"0F00001B1C3F3F3F3F3F0FFFFFFFFFFF1C3F3F1B3F3F2B2C2B2B3F3F1B000FFF"
|
|
||||||
$"FF0F0F00001B1C3F3F3F0FFF1C1C11001B1C3F3F3F3F3F7B2B3F3F1B000F0FFF"
|
|
||||||
$"FFFFFF0F0F00001B1C3F0FFF1C3F3F3F00003F3F3F3F3F3F3F3F1B000F0FFFFF"
|
|
||||||
$"FFFFFFFFFF0F0F0F0F0F0FFF1C3F3F3F1B3F3F3F3F3F3F3F3F1B000F0FFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFF1C3F3F3F3F3F3F3F3F3F3F3F1B000F0FFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFF0F00001B1C3F3F3F3F3F3F3F3F1B000F0FFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFF0F0F00001B1C3F3F3F3F3F1B000F0FFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFF0F0F00001B1C3F3F1B000F0FFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F00001B1C000F0FFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F00000F0FFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F0FFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
};
|
|
||||||
|
|
||||||
resource(0, "BEOS:M:text/x-partial-email") #'MICN' array
|
|
||||||
{
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFF001B0000FFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFF001B3F1B1B00FFFFFFFFFFFFFF"
|
|
||||||
$"FFFF001B3F3F3F3F1B0FFF00FFFFFFFF"
|
|
||||||
$"FF001B3F3F00000F0F0FFF1B0000FFFF"
|
|
||||||
$"001B3F3F1C1C1C0FFFFFFF2B1B1B0000"
|
|
||||||
$"001B1B3F00001C0FFF1C7B2B2C1B000F"
|
|
||||||
$"0F00001B0F0F0F0FFF1C3F7B1B000FFF"
|
|
||||||
$"FF0F0F000FFFFFFFFF1C3F1B000FFFFF"
|
|
||||||
$"FFFFFF0F0FFF001B1B1C1B000FFFFFFF"
|
|
||||||
$"FFFFFFFFFFFF0F00001B000FFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFF0F0F000FFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFF"
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef HAIKU_TARGET_PLATFORM_HAIKU
|
|
||||||
|
|
||||||
resource vector_icon {
|
resource vector_icon {
|
||||||
$"6E6369660A04016A0501020116023D5F72B9240538B7E13CEB504758E9489EE5"
|
$"6E6369660A04016A0501020116023D5F72B9240538B7E13CEB504758E9489EE5"
|
||||||
$"7CFFFDA9020116023C848B3B432FBBCE623CEFF849000048C0007CFF00A90201"
|
$"7CFFFDA9020116023C848B3B432FBBCE623CEFF849000048C0007CFF00A90201"
|
||||||
@@ -173,61 +112,3 @@ resource vector_icon {
|
|||||||
$"03123F34DC0000000000003F3E3A41F7B04381C001178400040A060103000A05"
|
$"03123F34DC0000000000003F3E3A41F7B04381C001178400040A060103000A05"
|
||||||
$"010800"
|
$"010800"
|
||||||
};
|
};
|
||||||
|
|
||||||
#else // HAIKU_TARGET_PLATFORM_HAIKU
|
|
||||||
|
|
||||||
resource large_icon {
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFF000000000000000000000000000000FFFF003FD9D9D90000FFFFFF"
|
|
||||||
$"FFFFFFFF003F3F3F3F3F3F3F3F3F3F3F3F3F3F3F00003FD9D9D9D9D9D90000FF"
|
|
||||||
$"FFFFFFFF003FD9D9D9D9D9D9D9D9D9D9D9D9D9D93F3FAAAAD9D9D9D9D9D98300"
|
|
||||||
$"FFFFFFFF003FD98383000083838383D9D9D9D9D9D9838383AAAAD9D9D983AA00"
|
|
||||||
$"FFFFFFFF11000000003FFD000083838383838383833F3FD93F3FAAAA83AAAA00"
|
|
||||||
$"FFFFFFFFFF1111003F0000FDFD0000008383833F3FD9D9D9D9D93F3FAAAAAA00"
|
|
||||||
$"FFFFFFFFFFFF003F3FFDFD0000FDFD0000838383D9D9D9D93F3FD9D983AA0011"
|
|
||||||
$"FFFFFFFFFF003F3FFDFDFDFDFDFDFDFDFD0000838383D9D93F3FD9D9D9AA0017"
|
|
||||||
$"FFFFFFFF003F3FFDFDFDFDFDFDFDFDFDFDFDFD000083D9D9D9D9D9D9D9830011"
|
|
||||||
$"FFFFFF003F3FFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD0000D9D9D9D9D983AA0011"
|
|
||||||
$"FFFF003F3FFDFDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFD000083838383001111"
|
|
||||||
$"FF00FDFDFDFDFDFDFDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFD000083001111FF"
|
|
||||||
$"FFFF0000FDFDFDFDFDFD0000FDFDFD0000FDFDFDFDFDFDD898D8FD000011FFFF"
|
|
||||||
$"FF1111110000FDFDFDFDFDFD0000FDFDFDFDFDFDFDFDFD2D2D2DFDFD000011FF"
|
|
||||||
$"FFFFFF0083830000FDFDFDFDFDFD0000FDFDFDFDFDFDFDD82DD8FDF8001111FF"
|
|
||||||
$"FFFF003FD98383000000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF8001111FFFF"
|
|
||||||
$"FF003FD98383008383830000FDFDFDFDFDFDFDFDFDFDFDFDFDF8001111FFFFFF"
|
|
||||||
$"003FD98383003FD9D98383000000FDFDFDFDFDFDFDFDFDFDF8001111FFFFFFFF"
|
|
||||||
$"00D983AA003FD9D98383008383830000FDFDFDFDFDFDFDF8001111FFFFFFFFFF"
|
|
||||||
$"FF0000003FD9D983AA003FD9D98383000000FDFDFDFDF8001111FFFFFFFFFFFF"
|
|
||||||
$"FFFF003FD9D983AA003FD9D98383008383830000F8F8001111FFFFFFFFFFFFFF"
|
|
||||||
$"FFFF00D9838300003FD9D983AA003FD98383001100001111FFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFF000000FF00D9D983AA003FD98383001111FFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFF000000003FD98300001111FFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFF000000111111FFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
};
|
|
||||||
|
|
||||||
resource mini_icon {
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFF0000FFFFFF"
|
|
||||||
$"FFFFFF0000000000000000D9D90000FF"
|
|
||||||
$"FFFF00D9D9D9D9D9D9D9D9AAAAD98300"
|
|
||||||
$"FFFF0000000000D9D983833F3FAAAA00"
|
|
||||||
$"FFFF11003F0000D9D9D9D9D9D9D9AA00"
|
|
||||||
$"FFFF003F0011FD0000D9D9D93FD9AA01"
|
|
||||||
$"FF003FFDFDFDFDFDFD0000D9D9830011"
|
|
||||||
$"003FFDFDFD0000FDFDFDFD00000011FF"
|
|
||||||
$"110000FDFDFDFD0000FD982DFD0000FF"
|
|
||||||
$"00D9830000FDFDFDFDFDFDD8F80011FF"
|
|
||||||
$"008300D9830000FDFDFDFDF80011FFFF"
|
|
||||||
$"FF00D98300D9000000FDF80011FFFFFF"
|
|
||||||
$"FFFF00000000008300000011FFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFF0000111111FFFFFFFFFF"
|
|
||||||
$"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // HAIKU_TARGET_PLATFORM_HAIKU
|
|
||||||
|
|||||||
Reference in New Issue
Block a user