void DeskbarView::AttachedToWindow() { BView::AttachedToWindow(); if (Parent()) SetViewColor(Parent()->ViewColor()); else SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); SetLowColor(ViewColor()); if (be_roster->IsRunning("application/x-vnd.Be-POST")) { _RefreshMailQuery(); } else { BDeskbar deskbar; deskbar.RemoveItem("mail_daemon"); } }
void DeskbarView::AttachedToWindow() { BView::AttachedToWindow(); if (Parent()) SetViewColor(Parent()->ViewColor()); else SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); SetLowColor(ViewColor()); if (be_roster->IsRunning(B_MAIL_DAEMON_SIGNATURE)) { _RefreshMailQuery(); } else { BDeskbar deskbar; deskbar.RemoveItem("mail_daemon"); } }
void DeskbarView::MessageReceived(BMessage* message) { switch(message->what) { case MD_CHECK_SEND_NOW: // also happens in DeskbarView::MouseUp() with // B_TERTIARY_MOUSE_BUTTON pressed BMailDaemon::CheckAndSendQueuedMail(); break; case MD_CHECK_FOR_MAILS: BMailDaemon::CheckMail(message->FindInt32("account")); break; case MD_SEND_MAILS: BMailDaemon::SendQueuedMail(); break; case MD_OPEN_NEW: { char* argv[] = {(char *)"New Message", (char *)"mailto:"}; be_roster->Launch("text/x-email", 2, argv); break; } case MD_OPEN_PREFS: be_roster->Launch("application/x-vnd.Haiku-Mail"); break; case MD_REFRESH_QUERY: _RefreshMailQuery(); break; case B_QUERY_UPDATE: { int32 what; dev_t device; ino_t directory; const char *name; entry_ref ref; message->FindInt32("opcode", &what); message->FindInt32("device", &device); message->FindInt64("directory", &directory); switch (what) { case B_ENTRY_CREATED: if (message->FindString("name", &name) == B_OK) { ref.device = device; ref.directory = directory; ref.set_name(name); if (!_EntryInTrash(&ref)) fNewMessages++; } break; case B_ENTRY_REMOVED: node_ref node; node.device = device; node.node = directory; BDirectory dir(&node); BEntry entry(&dir, NULL); entry.GetRef(&ref); if (!_EntryInTrash(&ref)) fNewMessages--; break; } fStatus = (fNewMessages > 0) ? kStatusNewMail : kStatusNoMail; Invalidate(); break; } case B_QUIT_REQUESTED: BMailDaemon::Quit(); break; // open received files in the standard mail application case B_REFS_RECEIVED: { BMessage argv(B_ARGV_RECEIVED); argv.AddString("argv", "E-mail"); entry_ref ref; BPath path; int i = 0; while (message->FindRef("refs", i++, &ref) == B_OK && path.SetTo(&ref) == B_OK) { //fprintf(stderr,"got %s\n", path.Path()); argv.AddString("argv", path.Path()); } if (i > 1) { argv.AddInt32("argc", i); be_roster->Launch("text/x-email", &argv); } break; } default: BView::MessageReceived(message); } }