* Style update. Don't know what to do about the licence headers though
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32272 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -4,36 +4,35 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <PopUpMenu.h>
|
|
||||||
#include <Bitmap.h>
|
#include <Bitmap.h>
|
||||||
#include <Rect.h>
|
#include <Deskbar.h>
|
||||||
#include <MenuItem.h>
|
|
||||||
#include <Window.h>
|
|
||||||
#include <Messenger.h>
|
|
||||||
#include <Roster.h>
|
|
||||||
#include <Resources.h>
|
|
||||||
#include <Entry.h>
|
|
||||||
#include <Path.h>
|
|
||||||
#include <NodeMonitor.h>
|
|
||||||
#include <VolumeRoster.h>
|
|
||||||
#include <Directory.h>
|
#include <Directory.h>
|
||||||
|
#include <Entry.h>
|
||||||
#include <FindDirectory.h>
|
#include <FindDirectory.h>
|
||||||
#include <IconUtils.h>
|
#include <IconUtils.h>
|
||||||
#include <Query.h>
|
|
||||||
#include <SymLink.h>
|
|
||||||
#include <NodeInfo.h>
|
|
||||||
#include <kernel/fs_info.h>
|
#include <kernel/fs_info.h>
|
||||||
#include <kernel/fs_index.h>
|
#include <kernel/fs_index.h>
|
||||||
#include <Deskbar.h>
|
#include <MenuItem.h>
|
||||||
|
#include <Messenger.h>
|
||||||
|
#include <NodeInfo.h>
|
||||||
|
#include <NodeMonitor.h>
|
||||||
|
#include <Path.h>
|
||||||
|
#include <PopUpMenu.h>
|
||||||
|
#include <Query.h>
|
||||||
|
#include <Rect.h>
|
||||||
|
#include <Resources.h>
|
||||||
|
#include <Roster.h>
|
||||||
#include <String.h>
|
#include <String.h>
|
||||||
|
#include <SymLink.h>
|
||||||
|
#include <VolumeRoster.h>
|
||||||
|
#include <Window.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
#include <E-mail.h>
|
#include <E-mail.h>
|
||||||
#include <MailSettings.h>
|
|
||||||
#include <MailDaemon.h>
|
#include <MailDaemon.h>
|
||||||
|
#include <MailSettings.h>
|
||||||
#include <MDRLanguage.h>
|
#include <MDRLanguage.h>
|
||||||
|
|
||||||
#include "DeskbarView.h"
|
#include "DeskbarView.h"
|
||||||
@@ -86,6 +85,7 @@ DeskbarView::DeskbarView(BRect frame)
|
|||||||
_InitBitmaps();
|
_InitBitmaps();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DeskbarView::DeskbarView(BMessage *message)
|
DeskbarView::DeskbarView(BMessage *message)
|
||||||
:
|
:
|
||||||
BView(message),
|
BView(message),
|
||||||
@@ -94,6 +94,7 @@ DeskbarView::DeskbarView(BMessage *message)
|
|||||||
_InitBitmaps();
|
_InitBitmaps();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DeskbarView::~DeskbarView()
|
DeskbarView::~DeskbarView()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < kStatusCount; i++)
|
for (int i = 0; i < kStatusCount; i++)
|
||||||
@@ -103,6 +104,7 @@ DeskbarView::~DeskbarView()
|
|||||||
delete ((BQuery *)(fNewMailQueries.ItemAt(i)));
|
delete ((BQuery *)(fNewMailQueries.ItemAt(i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DeskbarView::AttachedToWindow()
|
void DeskbarView::AttachedToWindow()
|
||||||
{
|
{
|
||||||
BView::AttachedToWindow();
|
BView::AttachedToWindow();
|
||||||
@@ -114,14 +116,15 @@ void DeskbarView::AttachedToWindow()
|
|||||||
SetLowColor(ViewColor());
|
SetLowColor(ViewColor());
|
||||||
|
|
||||||
if (be_roster->IsRunning("application/x-vnd.Be-POST")) {
|
if (be_roster->IsRunning("application/x-vnd.Be-POST")) {
|
||||||
RefreshMailQuery();
|
_RefreshMailQuery();
|
||||||
} else {
|
} else {
|
||||||
BDeskbar deskbar;
|
BDeskbar deskbar;
|
||||||
deskbar.RemoveItem("mail_daemon");
|
deskbar.RemoveItem("mail_daemon");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeskbarView::RefreshMailQuery()
|
|
||||||
|
void DeskbarView::_RefreshMailQuery()
|
||||||
{
|
{
|
||||||
for (int32 i = 0; i < fNewMailQueries.CountItems(); i++)
|
for (int32 i = 0; i < fNewMailQueries.CountItems(); i++)
|
||||||
delete ((BQuery *)(fNewMailQueries.ItemAt(i)));
|
delete ((BQuery *)(fNewMailQueries.ItemAt(i)));
|
||||||
@@ -150,9 +153,10 @@ void DeskbarView::RefreshMailQuery()
|
|||||||
newMailQuery->Fetch();
|
newMailQuery->Fetch();
|
||||||
|
|
||||||
BEntry entry;
|
BEntry entry;
|
||||||
while (newMailQuery->GetNextEntry(&entry) == B_OK)
|
while (newMailQuery->GetNextEntry(&entry) == B_OK) {
|
||||||
if (entry.InitCheck() == B_OK)
|
if (entry.InitCheck() == B_OK)
|
||||||
fNewMessages++;
|
fNewMessages++;
|
||||||
|
}
|
||||||
|
|
||||||
fNewMailQueries.AddItem(newMailQuery);
|
fNewMailQueries.AddItem(newMailQuery);
|
||||||
}
|
}
|
||||||
@@ -161,6 +165,7 @@ void DeskbarView::RefreshMailQuery()
|
|||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DeskbarView* DeskbarView::Instantiate(BMessage *data)
|
DeskbarView* DeskbarView::Instantiate(BMessage *data)
|
||||||
{
|
{
|
||||||
if (!validate_instantiation(data, "DeskbarView"))
|
if (!validate_instantiation(data, "DeskbarView"))
|
||||||
@@ -169,6 +174,7 @@ DeskbarView* DeskbarView::Instantiate(BMessage *data)
|
|||||||
return new DeskbarView(data);
|
return new DeskbarView(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t DeskbarView::Archive(BMessage *data,bool deep) const
|
status_t DeskbarView::Archive(BMessage *data,bool deep) const
|
||||||
{
|
{
|
||||||
BView::Archive(data, deep);
|
BView::Archive(data, deep);
|
||||||
@@ -177,6 +183,7 @@ status_t DeskbarView::Archive(BMessage *data,bool deep) const
|
|||||||
return B_NO_ERROR;
|
return B_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DeskbarView::Draw(BRect /*updateRect*/)
|
void DeskbarView::Draw(BRect /*updateRect*/)
|
||||||
{
|
{
|
||||||
if (fBitmaps[fStatus] == NULL)
|
if (fBitmaps[fStatus] == NULL)
|
||||||
@@ -187,6 +194,7 @@ void DeskbarView::Draw(BRect /*updateRect*/)
|
|||||||
SetDrawingMode(B_OP_COPY);
|
SetDrawingMode(B_OP_COPY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t OpenFolder(const char* end)
|
status_t OpenFolder(const char* end)
|
||||||
{
|
{
|
||||||
BPath path;
|
BPath path;
|
||||||
@@ -194,9 +202,11 @@ status_t OpenFolder(const char* end)
|
|||||||
path.Append(end);
|
path.Append(end);
|
||||||
|
|
||||||
entry_ref ref;
|
entry_ref ref;
|
||||||
if (get_ref_for_path(path.Path(),&ref) != B_OK) return B_NAME_NOT_FOUND;
|
if (get_ref_for_path(path.Path(),&ref) != B_OK)
|
||||||
if (!BEntry(&ref).Exists()) return B_NAME_NOT_FOUND;
|
return B_NAME_NOT_FOUND;
|
||||||
|
|
||||||
|
if (!BEntry(&ref).Exists())
|
||||||
|
return B_NAME_NOT_FOUND;
|
||||||
|
|
||||||
BMessage open_mbox(B_REFS_RECEIVED);
|
BMessage open_mbox(B_REFS_RECEIVED);
|
||||||
open_mbox.AddRef("refs",&ref);
|
open_mbox.AddRef("refs",&ref);
|
||||||
@@ -208,7 +218,7 @@ status_t OpenFolder(const char* end)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
DeskbarView::MessageReceived(BMessage *message)
|
DeskbarView::MessageReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
switch(message->what)
|
switch(message->what)
|
||||||
{
|
{
|
||||||
@@ -226,7 +236,7 @@ DeskbarView::MessageReceived(BMessage *message)
|
|||||||
|
|
||||||
case MD_OPEN_NEW:
|
case MD_OPEN_NEW:
|
||||||
{
|
{
|
||||||
char *argv[] = {"New Message", "mailto:"};
|
char* argv[] = {"New Message", "mailto:"};
|
||||||
be_roster->Launch("text/x-email",2,argv);
|
be_roster->Launch("text/x-email",2,argv);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -235,7 +245,7 @@ DeskbarView::MessageReceived(BMessage *message)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MD_REFRESH_QUERY:
|
case MD_REFRESH_QUERY:
|
||||||
RefreshMailQuery();
|
_RefreshMailQuery();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case B_QUERY_UPDATE:
|
case B_QUERY_UPDATE:
|
||||||
@@ -258,7 +268,8 @@ DeskbarView::MessageReceived(BMessage *message)
|
|||||||
BMailDaemon::Quit();
|
BMailDaemon::Quit();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case B_REFS_RECEIVED: // open received files in the standard mail application
|
// open received files in the standard mail application
|
||||||
|
case B_REFS_RECEIVED:
|
||||||
{
|
{
|
||||||
BMessage argv(B_ARGV_RECEIVED);
|
BMessage argv(B_ARGV_RECEIVED);
|
||||||
argv.AddString("argv", "E-mail");
|
argv.AddString("argv", "E-mail");
|
||||||
@@ -267,14 +278,13 @@ DeskbarView::MessageReceived(BMessage *message)
|
|||||||
BPath path;
|
BPath path;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
while (message->FindRef("refs",i++,&ref) == B_OK && path.SetTo(&ref) == B_OK)
|
while (message->FindRef("refs", i++, &ref) == B_OK
|
||||||
{
|
&& path.SetTo(&ref) == B_OK) {
|
||||||
//fprintf(stderr,"got %s\n", path.Path());
|
//fprintf(stderr,"got %s\n", path.Path());
|
||||||
argv.AddString("argv", path.Path());
|
argv.AddString("argv", path.Path());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i > 1)
|
if (i > 1) {
|
||||||
{
|
|
||||||
argv.AddInt32("argc", i);
|
argv.AddInt32("argc", i);
|
||||||
be_roster->Launch("text/x-email", &argv);
|
be_roster->Launch("text/x-email", &argv);
|
||||||
}
|
}
|
||||||
@@ -333,9 +343,9 @@ void
|
|||||||
DeskbarView::MouseUp(BPoint pos)
|
DeskbarView::MouseUp(BPoint pos)
|
||||||
{
|
{
|
||||||
if (fLastButtons & B_PRIMARY_MOUSE_BUTTON) {
|
if (fLastButtons & B_PRIMARY_MOUSE_BUTTON) {
|
||||||
if (OpenFolder("mail/mailbox") != B_OK)
|
if (OpenFolder("mail/mailbox") != B_OK
|
||||||
if (OpenFolder("mail/in") != B_OK)
|
&& OpenFolder("mail/in") != B_OK
|
||||||
if (OpenFolder("mail/INBOX") != B_OK)
|
&& OpenFolder("mail/INBOX") != B_OK)
|
||||||
OpenFolder("mail");
|
OpenFolder("mail");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -353,7 +363,7 @@ DeskbarView::MouseDown(BPoint pos)
|
|||||||
if (fLastButtons & B_SECONDARY_MOUSE_BUTTON) {
|
if (fLastButtons & B_SECONDARY_MOUSE_BUTTON) {
|
||||||
ConvertToScreen(&pos);
|
ConvertToScreen(&pos);
|
||||||
|
|
||||||
BPopUpMenu *menu = BuildMenu();
|
BPopUpMenu* menu = _BuildMenu();
|
||||||
if (menu) {
|
if (menu) {
|
||||||
menu->Go(pos, true, true, BRect(pos.x - 2, pos.y - 2,
|
menu->Go(pos, true, true, BRect(pos.x - 2, pos.y - 2,
|
||||||
pos.x + 2, pos.y + 2), true);
|
pos.x + 2, pos.y + 2), true);
|
||||||
@@ -363,7 +373,7 @@ DeskbarView::MouseDown(BPoint pos)
|
|||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeskbarView::CreateMenuLinks(BDirectory &directory,BPath &path)
|
DeskbarView::_CreateMenuLinks(BDirectory& directory, BPath& path)
|
||||||
{
|
{
|
||||||
status_t status = directory.SetTo(path.Path());
|
status_t status = directory.SetTo(path.Path());
|
||||||
if (status == B_OK)
|
if (status == B_OK)
|
||||||
@@ -406,7 +416,7 @@ DeskbarView::CreateMenuLinks(BDirectory &directory,BPath &path)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
DeskbarView::CreateNewMailQuery(BEntry &query)
|
DeskbarView::_CreateNewMailQuery(BEntry& query)
|
||||||
{
|
{
|
||||||
BFile file(&query, B_READ_WRITE | B_CREATE_FILE);
|
BFile file(&query, B_READ_WRITE | B_CREATE_FILE);
|
||||||
if (file.InitCheck() != B_OK)
|
if (file.InitCheck() != B_OK)
|
||||||
@@ -421,21 +431,21 @@ DeskbarView::CreateNewMailQuery(BEntry &query)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BPopUpMenu *
|
BPopUpMenu*
|
||||||
DeskbarView::BuildMenu()
|
DeskbarView::_BuildMenu()
|
||||||
{
|
{
|
||||||
BPopUpMenu *menu = new BPopUpMenu(B_EMPTY_STRING, false, false);
|
BPopUpMenu* menu = new BPopUpMenu(B_EMPTY_STRING, false, false);
|
||||||
menu->SetFont(be_plain_font);
|
menu->SetFont(be_plain_font);
|
||||||
|
|
||||||
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE (
|
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE (
|
||||||
"Create New Message","N) 新規メッセージ作成")B_UTF8_ELLIPSIS,
|
"Create New Message", "N) 新規メッセージ作成")B_UTF8_ELLIPSIS,
|
||||||
new BMessage(MD_OPEN_NEW)));
|
new BMessage(MD_OPEN_NEW)));
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
|
|
||||||
BMessenger tracker(kTrackerSignature);
|
BMessenger tracker(kTrackerSignature);
|
||||||
BNavMenu *navMenu;
|
BNavMenu* navMenu;
|
||||||
BMenuItem *item;
|
BMenuItem* item;
|
||||||
BMessage *msg;
|
BMessage* msg;
|
||||||
entry_ref ref;
|
entry_ref ref;
|
||||||
|
|
||||||
BPath path;
|
BPath path;
|
||||||
@@ -443,7 +453,7 @@ DeskbarView::BuildMenu()
|
|||||||
path.Append("Mail/Menu Links");
|
path.Append("Mail/Menu Links");
|
||||||
|
|
||||||
BDirectory directory;
|
BDirectory directory;
|
||||||
if (CreateMenuLinks(directory, path)) {
|
if (_CreateMenuLinks(directory, path)) {
|
||||||
int32 count = 0;
|
int32 count = 0;
|
||||||
|
|
||||||
while (directory.GetNextRef(&ref) == B_OK) {
|
while (directory.GetNextRef(&ref) == B_OK) {
|
||||||
@@ -466,11 +476,12 @@ DeskbarView::BuildMenu()
|
|||||||
BNode node(&entry);
|
BNode node(&entry);
|
||||||
BNodeInfo info(&node);
|
BNodeInfo info(&node);
|
||||||
if (info.GetType(mimeString) == B_OK
|
if (info.GetType(mimeString) == B_OK
|
||||||
&& strcmp(mimeString, "application/x-vnd.Be-query") == 0)
|
&& strcmp(mimeString, "application/x-vnd.Be-query")
|
||||||
|
== 0)
|
||||||
useNavMenu = true;
|
useNavMenu = true;
|
||||||
}
|
}
|
||||||
// clobber the existing ref only if the symlink derefernces completely,
|
// clobber the existing ref only if the symlink derefernces
|
||||||
// otherwise we'll stick with what we have
|
// completely, otherwise we'll stick with what we have
|
||||||
entry.GetRef(&ref);
|
entry.GetRef(&ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -514,7 +525,7 @@ DeskbarView::BuildMenu()
|
|||||||
|
|
||||||
BEntry query(path.Path());
|
BEntry query(path.Path());
|
||||||
if (!query.Exists())
|
if (!query.Exists())
|
||||||
CreateNewMailQuery(query);
|
_CreateNewMailQuery(query);
|
||||||
query.GetRef(&ref);
|
query.GetRef(&ref);
|
||||||
|
|
||||||
item = new BMenuItem(navMenu = new BNavMenu(string.String(),
|
item = new BMenuItem(navMenu = new BNavMenu(string.String(),
|
||||||
@@ -541,9 +552,9 @@ DeskbarView::BuildMenu()
|
|||||||
chainMenu->SetFont(&font);
|
chainMenu->SetFont(&font);
|
||||||
|
|
||||||
for (int32 i = 0; i < list.CountItems(); i++) {
|
for (int32 i = 0; i < list.CountItems(); i++) {
|
||||||
BMailChain *chain = (BMailChain *)list.ItemAt(i);
|
BMailChain* chain = (BMailChain*)list.ItemAt(i);
|
||||||
|
|
||||||
BMessage *message = new BMessage(MD_CHECK_FOR_MAILS);
|
BMessage* message = new BMessage(MD_CHECK_FOR_MAILS);
|
||||||
message->AddString("account", chain->Name());
|
message->AddString("account", chain->Name());
|
||||||
|
|
||||||
chainMenu->AddItem(new BMenuItem(chain->Name(), message));
|
chainMenu->AddItem(new BMenuItem(chain->Name(), message));
|
||||||
@@ -573,12 +584,12 @@ DeskbarView::BuildMenu()
|
|||||||
|
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
menu->AddItem(new BMenuItem(
|
menu->AddItem(new BMenuItem(
|
||||||
MDR_DIALECT_CHOICE ("Edit Preferences","P) メール環境設定") B_UTF8_ELLIPSIS,
|
MDR_DIALECT_CHOICE ("Edit Preferences", "P) メール環境設定") B_UTF8_ELLIPSIS,
|
||||||
new BMessage(MD_OPEN_PREFS)));
|
new BMessage(MD_OPEN_PREFS)));
|
||||||
|
|
||||||
if (modifiers() & B_SHIFT_KEY) {
|
if (modifiers() & B_SHIFT_KEY) {
|
||||||
menu->AddItem(new BMenuItem(
|
menu->AddItem(new BMenuItem(
|
||||||
MDR_DIALECT_CHOICE ("Shutdown Mail Services","Q) 終了"),
|
MDR_DIALECT_CHOICE ("Shutdown Mail Services", "Q) 終了"),
|
||||||
new BMessage(B_QUIT_REQUESTED)));
|
new BMessage(B_QUIT_REQUESTED)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -595,4 +606,3 @@ DeskbarView::BuildMenu()
|
|||||||
}
|
}
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,24 +34,24 @@ class BPath;
|
|||||||
class _EXPORT DeskbarView : public BView {
|
class _EXPORT DeskbarView : public BView {
|
||||||
public:
|
public:
|
||||||
DeskbarView (BRect frame);
|
DeskbarView (BRect frame);
|
||||||
DeskbarView (BMessage *data);
|
DeskbarView (BMessage* data);
|
||||||
|
|
||||||
virtual ~DeskbarView();
|
virtual ~DeskbarView();
|
||||||
|
|
||||||
virtual void Draw(BRect updateRect);
|
virtual void Draw(BRect updateRect);
|
||||||
virtual void AttachedToWindow();
|
virtual void AttachedToWindow();
|
||||||
static DeskbarView *Instantiate(BMessage *data);
|
static DeskbarView* Instantiate(BMessage* data);
|
||||||
virtual status_t Archive(BMessage *data, bool deep = true) const;
|
virtual status_t Archive(BMessage* data, bool deep = true) const;
|
||||||
virtual void MouseDown(BPoint);
|
virtual void MouseDown(BPoint);
|
||||||
virtual void MouseUp(BPoint);
|
virtual void MouseUp(BPoint);
|
||||||
virtual void MessageReceived(BMessage *message);
|
virtual void MessageReceived(BMessage *message);
|
||||||
virtual void Pulse();
|
virtual void Pulse();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void RefreshMailQuery();
|
void _RefreshMailQuery();
|
||||||
bool CreateMenuLinks(BDirectory &,BPath &);
|
bool _CreateMenuLinks(BDirectory&, BPath&);
|
||||||
void CreateNewMailQuery(BEntry &);
|
void _CreateNewMailQuery(BEntry&);
|
||||||
BPopUpMenu *BuildMenu();
|
BPopUpMenu* _BuildMenu();
|
||||||
void _InitBitmaps();
|
void _InitBitmaps();
|
||||||
|
|
||||||
BBitmap* fBitmaps[kStatusCount];
|
BBitmap* fBitmaps[kStatusCount];
|
||||||
|
|||||||
Reference in New Issue
Block a user