Apply a nice patch from Taos, just some smaller fixes by myself.
Localize the mail add-ons. The Japanese translation is attached to #7689. Please give a notice when it is in the translation system and the ticket can be closed. Does the B_UTF8_ELLIPSIS comes into the B_TRANSLATE macro? git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42265 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -4,6 +4,9 @@
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <Catalog.h>
|
||||
#include <MenuField.h>
|
||||
#include <PopUpMenu.h>
|
||||
#include <Message.h>
|
||||
@@ -14,7 +17,10 @@
|
||||
#include <FileConfigView.h>
|
||||
#include <MailSettings.h>
|
||||
|
||||
#include <MDRLanguage.h>
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "ConfigView"
|
||||
|
||||
|
||||
const uint32 kMsgActionMoveTo = 'argm';
|
||||
const uint32 kMsgActionDelete = 'argd';
|
||||
@@ -40,7 +46,6 @@ class RuleFilterConfig : public BView {
|
||||
int32 chain;
|
||||
};
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
RuleFilterConfig::RuleFilterConfig(const BMessage *settings)
|
||||
:
|
||||
@@ -48,25 +53,29 @@ RuleFilterConfig::RuleFilterConfig(const BMessage *settings)
|
||||
0), menu(NULL)
|
||||
{
|
||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||
attr = new BTextControl(BRect(5,5,100,20),"attr",MDR_DIALECT_CHOICE ("If","条件:"),MDR_DIALECT_CHOICE ("header (e.g. Subject)","ヘッダ(例えばSubject)"),NULL);
|
||||
attr->SetDivider(be_plain_font->StringWidth(MDR_DIALECT_CHOICE ("If ","条件: "))+ 4);
|
||||
attr = new BTextControl(BRect(5,5,100,20),"attr", B_TRANSLATE("If"),
|
||||
B_TRANSLATE("header (e.g. Subject)"),NULL);
|
||||
attr->SetDivider(be_plain_font->StringWidth(B_TRANSLATE("If "))+ 4);
|
||||
if (settings->HasString("attribute"))
|
||||
attr->SetText(settings->FindString("attribute"));
|
||||
AddChild(attr);
|
||||
|
||||
regex = new BTextControl(BRect(104,5,255,20),"attr",MDR_DIALECT_CHOICE (" has "," が "),MDR_DIALECT_CHOICE ("value (use REGEX: in from of regular expressions like *spam*)","値(正規表現対応)"),NULL);
|
||||
regex->SetDivider(be_plain_font->StringWidth(MDR_DIALECT_CHOICE (" has "," が ")) + 4);
|
||||
regex = new BTextControl(BRect(104,5,255,20),"attr", B_TRANSLATE(" has "),
|
||||
B_TRANSLATE("value (use REGEX: in from of regular expressions like "
|
||||
"*spam*)"), NULL);
|
||||
regex->SetDivider(be_plain_font->StringWidth(B_TRANSLATE(" has ")) + 4);
|
||||
if (settings->HasString("regex"))
|
||||
regex->SetText(settings->FindString("regex"));
|
||||
AddChild(regex);
|
||||
|
||||
arg = new BFileControl(BRect(5,55,255,80),"arg",NULL,MDR_DIALECT_CHOICE ("this field is based on the action","ここは動作によって意味が変わります"));
|
||||
arg = new BFileControl(BRect(5,55,255,80),"arg", NULL,
|
||||
B_TRANSLATE("this field is based on the action"));
|
||||
if (BControl *control = (BControl *)arg->FindView("select_file"))
|
||||
control->SetEnabled(false);
|
||||
if (settings->HasString("argument"))
|
||||
arg->SetText(settings->FindString("argument"));
|
||||
|
||||
outbound = new BPopUpMenu(MDR_DIALECT_CHOICE ("<Choose account>","<アカウントを選択>"));
|
||||
outbound = new BPopUpMenu(B_TRANSLATE("<Choose account>"));
|
||||
|
||||
if (settings->HasInt32("do_what"))
|
||||
staging = settings->FindInt32("do_what");
|
||||
@@ -96,17 +105,23 @@ void RuleFilterConfig::AttachedToWindow() {
|
||||
if (menu != NULL)
|
||||
return; // We switched back from another tab
|
||||
|
||||
menu = new BPopUpMenu(MDR_DIALECT_CHOICE ("<Choose action>","<動作を選択>"));
|
||||
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Move to","移動する"), new BMessage(kMsgActionMoveTo)));
|
||||
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Set flags to","フラグを指定する"), new BMessage(kMsgActionSetTo)));
|
||||
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Delete message","削除する"), new BMessage(kMsgActionDelete)));
|
||||
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Reply with","返事を書く"), new BMessage(kMsgActionReplyWith)));
|
||||
menu->AddItem(new BMenuItem(MDR_DIALECT_CHOICE ("Set as read","既読にする"), new BMessage(kMsgActionSetRead)));
|
||||
menu = new BPopUpMenu(B_TRANSLATE("<Choose action>"));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Move to"),
|
||||
new BMessage(kMsgActionMoveTo)));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Set flags to"),
|
||||
new BMessage(kMsgActionSetTo)));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Delete message"),
|
||||
new BMessage(kMsgActionDelete)));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Reply with"),
|
||||
new BMessage(kMsgActionReplyWith)));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Set as read"),
|
||||
new BMessage(kMsgActionSetRead)));
|
||||
menu->SetTargetForItems(this);
|
||||
|
||||
BMenuField *field = new BMenuField(BRect(5,30,210,50),"do_what",MDR_DIALECT_CHOICE ("Then","ならば"),menu);
|
||||
BMenuField *field = new BMenuField(BRect(5,30,210,50),"do_what",
|
||||
B_TRANSLATE("Then"), menu);
|
||||
field->ResizeToPreferred();
|
||||
field->SetDivider(be_plain_font->StringWidth(MDR_DIALECT_CHOICE ("Then","ならば")) + 8);
|
||||
field->SetDivider(be_plain_font->StringWidth(B_TRANSLATE("Then")) + 8);
|
||||
AddChild(field);
|
||||
|
||||
outbound_field = new BMenuField(BRect(5,55,255,80),"reply","Foo",outbound);
|
||||
|
||||
@@ -5,10 +5,21 @@ UsePublicHeaders [ FDirName add-ons mail_daemon ] ;
|
||||
|
||||
SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
|
||||
|
||||
Addon MatchHeader :
|
||||
Addon MatchHeader
|
||||
:
|
||||
ConfigView.cpp
|
||||
RuleFilter.cpp
|
||||
StringMatcher.cpp ;
|
||||
StringMatcher.cpp
|
||||
;
|
||||
|
||||
LinkAgainst MatchHeader :
|
||||
be libmail.so $(TARGET_LIBSUPC++) ;
|
||||
LinkAgainst MatchHeader
|
||||
:
|
||||
be libmail.so $(TARGET_LIBSUPC++) $(HAIKU_LOCALE_LIBS)
|
||||
;
|
||||
|
||||
DoCatalogs MatchHeader
|
||||
:
|
||||
x-vnd.Haiku-MatchHeader
|
||||
:
|
||||
ConfigView.cpp
|
||||
;
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#include "ConfigView.h"
|
||||
|
||||
#include <Catalog.h>
|
||||
#include <CheckBox.h>
|
||||
#include <PopUpMenu.h>
|
||||
#include <MenuItem.h>
|
||||
@@ -13,11 +14,14 @@
|
||||
#include <String.h>
|
||||
#include <Message.h>
|
||||
|
||||
#include <MDRLanguage.h>
|
||||
|
||||
#include <MailAddon.h>
|
||||
#include <MailSettings.h>
|
||||
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "ConfigView"
|
||||
|
||||
|
||||
const uint32 kMsgNotifyMethod = 'nomt';
|
||||
|
||||
|
||||
@@ -35,19 +39,22 @@ ConfigView::ConfigView()
|
||||
BPopUpMenu *menu = new BPopUpMenu(B_EMPTY_STRING,false,false);
|
||||
|
||||
const char *notifyMethods[] = {
|
||||
MDR_DIALECT_CHOICE ("Beep","音"),
|
||||
MDR_DIALECT_CHOICE ("Alert","窓(メール毎)"),
|
||||
MDR_DIALECT_CHOICE ("Keyboard LEDs","キーボードLED"),
|
||||
MDR_DIALECT_CHOICE ("Central alert","窓(一括)"),
|
||||
"Central beep","Log window"};
|
||||
for (int32 i = 0,j = 1;i < 6;i++,j *= 2)
|
||||
menu->AddItem(new BMenuItem(notifyMethods[i],new BMessage(kMsgNotifyMethod)));
|
||||
B_TRANSLATE("Beep"),
|
||||
B_TRANSLATE("Alert"),
|
||||
B_TRANSLATE("Keyboard LEDs"),
|
||||
B_TRANSLATE("Central alert"),
|
||||
B_TRANSLATE("Central beep"),
|
||||
B_TRANSLATE("Log window")
|
||||
};
|
||||
for (int32 i = 0,j = 1;i < 6;i++,j *= 2) {
|
||||
menu->AddItem(new BMenuItem(notifyMethods[i],
|
||||
new BMessage(kMsgNotifyMethod)));
|
||||
}
|
||||
|
||||
BMenuField *field = new BMenuField(frame,"notify",
|
||||
MDR_DIALECT_CHOICE ("Method:","方法:"),menu);
|
||||
BMenuField *field = new BMenuField(frame,"notify", B_TRANSLATE("Method:"),
|
||||
menu);
|
||||
field->ResizeToPreferred();
|
||||
field->SetDivider(field->StringWidth(
|
||||
MDR_DIALECT_CHOICE ("Method:","方法:")) + 6);
|
||||
field->SetDivider(field->StringWidth(B_TRANSLATE("Method:")) + 6);
|
||||
AddChild(field);
|
||||
|
||||
ResizeToPreferred();
|
||||
|
||||
@@ -9,5 +9,12 @@ Addon NewMailNotification :
|
||||
filter.cpp
|
||||
ConfigView.cpp
|
||||
:
|
||||
be libmail.so $(TARGET_LIBSUPC++)
|
||||
be libmail.so $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSUPC++)
|
||||
;
|
||||
|
||||
DoCatalogs NewMailNotification :
|
||||
x-vnd.Haiku-NewMailNotification
|
||||
:
|
||||
ConfigView.cpp
|
||||
filter.cpp
|
||||
;
|
||||
|
||||
@@ -5,19 +5,23 @@
|
||||
*/
|
||||
|
||||
|
||||
#include <Message.h>
|
||||
#include <String.h>
|
||||
#include <Alert.h>
|
||||
#include <Beep.h>
|
||||
#include <Path.h>
|
||||
#include <Application.h>
|
||||
#include <Beep.h>
|
||||
#include <Catalog.h>
|
||||
#include <Message.h>
|
||||
#include <Path.h>
|
||||
#include <String.h>
|
||||
|
||||
#include <MailAddon.h>
|
||||
#include <MDRLanguage.h>
|
||||
|
||||
#include "ConfigView.h"
|
||||
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "filter"
|
||||
|
||||
|
||||
class NotifyFilter : public MailFilter
|
||||
{
|
||||
public:
|
||||
@@ -64,13 +68,17 @@ NotifyFilter::MailboxSynced(status_t status)
|
||||
|
||||
if (fStrategy & alert) {
|
||||
BString text;
|
||||
MDR_DIALECT_CHOICE (
|
||||
text << "You have " << fNNewMessages << " new message" << ((fNNewMessages != 1) ? "s" : "")
|
||||
<< " for " << fMailProtocol.AccountSettings().Name() << ".",
|
||||
if (fNNewMessages != 1)
|
||||
text << B_TRANSLATE("You have ") << fNNewMessages << B_TRANSLATE(
|
||||
" new messages") << B_TRANSLATE(" for ")
|
||||
<< fMailProtocol.AccountSettings().Name() << ".";
|
||||
else
|
||||
text << B_TRANSLATE("You have ") << fNNewMessages << B_TRANSLATE(
|
||||
" new message") << B_TRANSLATE(" for ")
|
||||
<< fMailProtocol.AccountSettings().Name() << ".";
|
||||
|
||||
text << fMailProtocol.AccountSettings().Name() << "より\n" << fNNewMessages << " 通のメッセージが届きました");
|
||||
|
||||
BAlert *alert = new BAlert(MDR_DIALECT_CHOICE ("New messages","新着メッセージ"), text.String(), "OK", NULL, NULL, B_WIDTH_AS_USUAL);
|
||||
BAlert *alert = new BAlert(B_TRANSLATE("New messages"), text.String(),
|
||||
"OK", NULL, NULL, B_WIDTH_AS_USUAL);
|
||||
alert->SetFeel(B_NORMAL_WINDOW_FEEL);
|
||||
alert->Go(NULL);
|
||||
}
|
||||
@@ -91,7 +99,10 @@ NotifyFilter::MailboxSynced(status_t status)
|
||||
|
||||
if (fStrategy & log_window) {
|
||||
BString message;
|
||||
message << fNNewMessages << " new message" << ((fNNewMessages != 1) ? "s" : "");
|
||||
if (fNNewMessages != 1)
|
||||
message << fNNewMessages << B_TRANSLATE(" new messages");
|
||||
else
|
||||
message << fNNewMessages << B_TRANSLATE(" new message");
|
||||
fMailProtocol.ShowMessage(message.String());
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "IMAPFolderConfig.h"
|
||||
|
||||
#include <Catalog.h>
|
||||
#include <ControlLook.h>
|
||||
#include <ListItem.h>
|
||||
#include <SpaceLayoutItem.h>
|
||||
@@ -18,6 +19,10 @@
|
||||
#include <crypt.h>
|
||||
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "IMAPFolderConfig"
|
||||
|
||||
|
||||
class EditableListItem {
|
||||
public:
|
||||
EditableListItem();
|
||||
@@ -90,7 +95,6 @@ CheckBoxItem::DrawItem(BView* owner, BRect itemRect, bool drawEverything)
|
||||
BRect boxRect(0.0f, 2.0f, ceilf(3.0f + fontHeight.ascent),
|
||||
ceilf(5.0f + fontHeight.ascent));
|
||||
|
||||
|
||||
fBoxRect.left = itemRect.right - boxRect.Width();
|
||||
fBoxRect.top = itemRect.top + (itemRect.Height() - boxRect.Height()) / 2;
|
||||
fBoxRect.right = itemRect.right;
|
||||
@@ -201,7 +205,7 @@ class StatusWindow : public BWindow {
|
||||
public:
|
||||
StatusWindow(const char* text)
|
||||
:
|
||||
BWindow(BRect(0, 0, 10, 10), "status", B_MODAL_WINDOW_LOOK,
|
||||
BWindow(BRect(0, 0, 10, 10), B_TRANSLATE("status"), B_MODAL_WINDOW_LOOK,
|
||||
B_MODAL_APP_WINDOW_FEEL, B_NO_WORKSPACE_ACTIVATION | B_NOT_ZOOMABLE
|
||||
| B_AVOID_FRONT | B_NOT_RESIZABLE)
|
||||
{
|
||||
@@ -230,9 +234,9 @@ const uint32 kMsgInit = '&Ini';
|
||||
|
||||
FolderConfigWindow::FolderConfigWindow(BRect parent, const BMessage& settings)
|
||||
:
|
||||
BWindow(BRect(0, 0, 300, 300), "IMAP Folders", B_TITLED_WINDOW_LOOK,
|
||||
B_MODAL_APP_WINDOW_FEEL, B_NO_WORKSPACE_ACTIVATION | B_NOT_ZOOMABLE
|
||||
| B_AVOID_FRONT),
|
||||
BWindow(BRect(0, 0, 300, 300), B_TRANSLATE("IMAP Folders"),
|
||||
B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL, B_NO_WORKSPACE_ACTIVATION
|
||||
| B_NOT_ZOOMABLE | B_AVOID_FRONT),
|
||||
fSettings(settings)
|
||||
{
|
||||
BView* rootView = new BView(Bounds(), "root", B_FOLLOW_ALL, B_WILL_DRAW);
|
||||
@@ -244,13 +248,14 @@ FolderConfigWindow::FolderConfigWindow(BRect parent, const BMessage& settings)
|
||||
rootView->SetLayout(layout);
|
||||
layout->SetInset(spacing);
|
||||
|
||||
fFolderListView = new EditListView("IMAP Folders");
|
||||
fFolderListView = new EditListView(B_TRANSLATE("IMAP Folders"));
|
||||
fFolderListView->SetExplicitPreferredSize(BSize(B_SIZE_UNLIMITED,
|
||||
B_SIZE_UNLIMITED));
|
||||
fApplyButton = new BButton("Apply", "Apply", new BMessage(kMsgApplyButton));
|
||||
fApplyButton = new BButton("Apply", B_TRANSLATE("Apply"),
|
||||
new BMessage(kMsgApplyButton));
|
||||
|
||||
fQuotaView = new BStringView("quota view",
|
||||
"Failed to fetch available storage.");
|
||||
B_TRANSLATE("Failed to fetch available storage."));
|
||||
fQuotaView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT,
|
||||
B_ALIGN_VERTICAL_CENTER));
|
||||
|
||||
@@ -294,8 +299,8 @@ FolderConfigWindow::MessageReceived(BMessage* message)
|
||||
void
|
||||
FolderConfigWindow::_LoadFolders()
|
||||
{
|
||||
StatusWindow* status = new StatusWindow("Fetching IMAP folders, have "
|
||||
"patience...");
|
||||
StatusWindow* status = new StatusWindow(
|
||||
B_TRANSLATE("Fetching IMAP folders, have patience..."));
|
||||
status->Show();
|
||||
|
||||
BString server;
|
||||
@@ -356,8 +361,8 @@ FolderConfigWindow::_ApplyChanges()
|
||||
if (!haveChanges)
|
||||
return;
|
||||
|
||||
StatusWindow* status = new StatusWindow("Subcribe / Unsuscribe IMAP "
|
||||
"folders, have patience...");
|
||||
StatusWindow* status = new StatusWindow(B_TRANSLATE("Subcribe / Unsuscribe "
|
||||
"IMAP folders, have patience..."));
|
||||
status->Show();
|
||||
|
||||
for (unsigned int i = 0; i < fFolderList.size(); i++) {
|
||||
|
||||
@@ -33,7 +33,7 @@ Addon IMAP
|
||||
:
|
||||
$(sources)
|
||||
:
|
||||
be libmail.so $(TARGET_NETWORK_LIBS) libalm.so
|
||||
be libmail.so $(HAIKU_LOCALE_LIBS) $(TARGET_NETWORK_LIBS) libalm.so
|
||||
libshared.a $(TARGET_LIBSUPC++) $(TARGET_LIBSTDC++)
|
||||
;
|
||||
|
||||
@@ -46,3 +46,10 @@ Package haiku-maildaemon-cvs :
|
||||
IMAP :
|
||||
boot home config add-ons mail_daemon inbound_protocols
|
||||
;
|
||||
|
||||
DoCatalogs IMAP :
|
||||
x-vnd.Haiku-IMAP
|
||||
:
|
||||
imap_config.cpp
|
||||
IMAPFolderConfig.cpp
|
||||
;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
|
||||
#include <Button.h>
|
||||
#include <Catalog.h>
|
||||
#include <TextControl.h>
|
||||
|
||||
#include <MailAddon.h>
|
||||
@@ -16,11 +17,14 @@
|
||||
#include <FileConfigView.h>
|
||||
#include <ProtocolConfigView.h>
|
||||
#include <MailPrivate.h>
|
||||
#include <MDRLanguage.h>
|
||||
|
||||
#include "IMAPFolderConfig.h"
|
||||
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "imap_config"
|
||||
|
||||
|
||||
const uint32 kMsgOpenIMAPFolder = '&OIF';
|
||||
|
||||
|
||||
@@ -70,8 +74,8 @@ IMAPConfig::IMAPConfig(MailAddonSettings& settings,
|
||||
((BControl *)(FindView("delete_remote_when_local")))->SetEnabled(true);
|
||||
((BControl *)(FindView("delete_remote_when_local")))->MoveBy(0, -25);
|
||||
|
||||
fIMAPFolderButton = new BButton(frame, "IMAP Folders", "IMAP Folders",
|
||||
new BMessage(kMsgOpenIMAPFolder));
|
||||
fIMAPFolderButton = new BButton(frame, "IMAP Folders", B_TRANSLATE(
|
||||
"IMAP Folders"), new BMessage(kMsgOpenIMAPFolder));
|
||||
AddChild(fIMAPFolderButton);
|
||||
|
||||
frame.right -= 10;
|
||||
@@ -79,8 +83,8 @@ IMAPConfig::IMAPConfig(MailAddonSettings& settings,
|
||||
BPath defaultFolder = BPrivate::default_mail_directory();
|
||||
defaultFolder.Append(accountSettings.Name());
|
||||
|
||||
fFileView = new BMailFileConfigView("Destination:", "destination",
|
||||
false, defaultFolder.Path());
|
||||
fFileView = new BMailFileConfigView(B_TRANSLATE("Destination:"),
|
||||
"destination", false, defaultFolder.Path());
|
||||
fFileView->SetTo(&settings.Settings(), NULL);
|
||||
AddChild(fFileView);
|
||||
fFileView->MoveBy(0, frame.bottom + 5);
|
||||
|
||||
@@ -7,12 +7,17 @@
|
||||
*/
|
||||
|
||||
|
||||
#include <Catalog.h>
|
||||
#include <FileConfigView.h>
|
||||
#include <MailAddon.h>
|
||||
#include <MailPrivate.h>
|
||||
#include <ProtocolConfigView.h>
|
||||
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "ConfigView"
|
||||
|
||||
|
||||
class POP3ConfigView : public BMailProtocolConfigView {
|
||||
public:
|
||||
POP3ConfigView(MailAddonSettings& settings,
|
||||
@@ -47,8 +52,8 @@ POP3ConfigView::POP3ConfigView(MailAddonSettings& settings,
|
||||
|
||||
SetTo(settings);
|
||||
|
||||
fFileView = new BMailFileConfigView("Destination:", "destination",
|
||||
false, BPrivate::default_mail_in_directory().Path());
|
||||
fFileView = new BMailFileConfigView(B_TRANSLATE("Destination:"),
|
||||
"destination", false, BPrivate::default_mail_in_directory().Path());
|
||||
fFileView->SetTo(&settings.Settings(), NULL);
|
||||
AddChild(fFileView);
|
||||
float w, h;
|
||||
|
||||
@@ -30,11 +30,18 @@ if $(HAIKU_OPENSSL_ENABLED) {
|
||||
|
||||
Addon POP3
|
||||
: $(sources)
|
||||
: be libmail.so $(TARGET_NETWORK_LIBS) $(HAIKU_OPENSSL_LIBS)
|
||||
$(TARGET_LIBSUPC++)
|
||||
: be libmail.so $(HAIKU_LOCALE_LIBS) $(HAIKU_OPENSSL_LIBS)
|
||||
$(TARGET_LIBSUPC++) $(TARGET_NETWORK_LIBS)
|
||||
;
|
||||
|
||||
Package haiku-maildaemon-cvs :
|
||||
POP3 :
|
||||
boot home config add-ons mail_daemon inbound_protocols
|
||||
;
|
||||
|
||||
DoCatalogs POP3 :
|
||||
x-vnd.Haiku-POP3
|
||||
:
|
||||
ConfigView.cpp
|
||||
pop3.cpp
|
||||
;
|
||||
|
||||
@@ -30,9 +30,10 @@
|
||||
#endif
|
||||
|
||||
#include <Alert.h>
|
||||
#include <fs_attr.h>
|
||||
#include <Catalog.h>
|
||||
#include <Debug.h>
|
||||
#include <Directory.h>
|
||||
#include <fs_attr.h>
|
||||
#include <Path.h>
|
||||
#include <String.h>
|
||||
#include <VolumeRoster.h>
|
||||
@@ -42,7 +43,10 @@
|
||||
#include "MailSettings.h"
|
||||
#include "MessageIO.h"
|
||||
|
||||
#include <MDRLanguage.h>
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "pop3"
|
||||
|
||||
|
||||
#define POP3_RETRIEVAL_TIMEOUT 60000000
|
||||
#define CRLF "\r\n"
|
||||
@@ -140,15 +144,14 @@ POP3Protocol::SyncMessages()
|
||||
_ReadManifest();
|
||||
|
||||
SetTotalItems(2);
|
||||
ReportProgress(0, 1, "Connect to server...");
|
||||
ReportProgress(0, 1, B_TRANSLATE("Connect to server" B_UTF8_ELLIPSIS));
|
||||
status_t error = Connect();
|
||||
if (error < B_OK) {
|
||||
ResetProgress();
|
||||
return error;
|
||||
}
|
||||
|
||||
ReportProgress(0, 1, MDR_DIALECT_CHOICE("Getting UniqueIDs...",
|
||||
"固有のIDを取得中..."));
|
||||
ReportProgress(0, 1, B_TRANSLATE("Getting UniqueIDs" B_UTF8_ELLIPSIS));
|
||||
error = _UniqueIDs();
|
||||
if (error < B_OK) {
|
||||
ResetProgress();
|
||||
@@ -326,8 +329,8 @@ POP3Protocol::DeleteMessage(const entry_ref& ref)
|
||||
status_t
|
||||
POP3Protocol::Open(const char *server, int port, int)
|
||||
{
|
||||
ReportProgress(0, 0, MDR_DIALECT_CHOICE("Connecting to POP3 server...",
|
||||
"POP3サーバに接続しています..."));
|
||||
ReportProgress(0, 0, B_TRANSLATE("Connecting to POP3 server"
|
||||
B_UTF8_ELLIPSIS));
|
||||
|
||||
if (port <= 0) {
|
||||
#ifdef USE_SSL
|
||||
@@ -341,8 +344,7 @@ POP3Protocol::Open(const char *server, int port, int)
|
||||
|
||||
// Prime the error message
|
||||
BString error_msg;
|
||||
error_msg << MDR_DIALECT_CHOICE("Error while connecting to server ",
|
||||
"サーバに接続中にエラーが発生しました ") << server;
|
||||
error_msg << B_TRANSLATE("Error while connecting to server ") << server;
|
||||
if (port != 110)
|
||||
error_msg << ":" << port;
|
||||
|
||||
@@ -354,8 +356,7 @@ POP3Protocol::Open(const char *server, int port, int)
|
||||
}
|
||||
|
||||
if (hostIP == 0) {
|
||||
error_msg << MDR_DIALECT_CHOICE(": Connection refused or host not found",
|
||||
": :接続が拒否されたかサーバーが見つかりません");
|
||||
error_msg << B_TRANSLATE(": Connection refused or host not found");
|
||||
ShowError(error_msg.String());
|
||||
|
||||
return B_NAME_NOT_FOUND;
|
||||
@@ -368,7 +369,8 @@ POP3Protocol::Open(const char *server, int port, int)
|
||||
saAddr.sin_family = AF_INET;
|
||||
saAddr.sin_port = htons(port);
|
||||
saAddr.sin_addr.s_addr = hostIP;
|
||||
int result = connect(fSocket, (struct sockaddr *) &saAddr, sizeof(saAddr));
|
||||
int result = connect(fSocket, (struct sockaddr *) &saAddr,
|
||||
sizeof(saAddr));
|
||||
if (result < 0) {
|
||||
close(fSocket);
|
||||
fSocket = -1;
|
||||
@@ -377,7 +379,7 @@ POP3Protocol::Open(const char *server, int port, int)
|
||||
return errno;
|
||||
}
|
||||
} else {
|
||||
error_msg << ": Could not allocate socket.";
|
||||
error_msg << B_TRANSLATE(": Could not allocate socket.");
|
||||
ShowError(error_msg.String());
|
||||
return B_ERROR;
|
||||
}
|
||||
@@ -424,10 +426,10 @@ POP3Protocol::Open(const char *server, int port, int)
|
||||
|
||||
if (strncmp(line.String(), "+OK", 3) != 0) {
|
||||
if (line.Length() > 0) {
|
||||
error_msg << MDR_DIALECT_CHOICE(". The server said:\n",
|
||||
"サーバのメッセージです\n") << line.String();
|
||||
error_msg << B_TRANSLATE(". The server said:\n")
|
||||
<< line.String();
|
||||
} else
|
||||
error_msg << ": No reply.\n";
|
||||
error_msg << B_TRANSLATE(": No reply.\n");
|
||||
|
||||
ShowError(error_msg.String());
|
||||
return B_ERROR;
|
||||
@@ -444,14 +446,13 @@ POP3Protocol::Login(const char *uid, const char *password, int method)
|
||||
status_t err;
|
||||
|
||||
BString error_msg;
|
||||
error_msg << MDR_DIALECT_CHOICE("Error while authenticating user ",
|
||||
"ユーザー認証中にエラーが発生しました ") << uid;
|
||||
error_msg << B_TRANSLATE("Error while authenticating user ") << uid;
|
||||
|
||||
if (method == 1) { //APOP
|
||||
int32 index = fLog.FindFirst("<");
|
||||
if(index != B_ERROR) {
|
||||
ReportProgress(0, 0, MDR_DIALECT_CHOICE(
|
||||
"Sending APOP authentication...", "APOP認証情報を送信中..."));
|
||||
ReportProgress(0, 0, B_TRANSLATE("Sending APOP authentication"
|
||||
B_UTF8_ELLIPSIS));
|
||||
int32 end = fLog.FindFirst(">",index);
|
||||
BString timestamp("");
|
||||
fLog.CopyInto(timestamp, index, end - index + 1);
|
||||
@@ -466,22 +467,19 @@ POP3Protocol::Login(const char *uid, const char *password, int method)
|
||||
|
||||
err = SendCommand(cmd.String());
|
||||
if (err != B_OK) {
|
||||
error_msg << MDR_DIALECT_CHOICE(". The server said:\n",
|
||||
"サーバのメッセージです\n") << fLog;
|
||||
error_msg << B_TRANSLATE(". The server said:\n") << fLog;
|
||||
ShowError(error_msg.String());
|
||||
return err;
|
||||
}
|
||||
|
||||
return B_OK;
|
||||
} else {
|
||||
error_msg << MDR_DIALECT_CHOICE(": The server does not support APOP.",
|
||||
"サーバはAPOPをサポートしていません");
|
||||
error_msg << B_TRANSLATE(": The server does not support APOP.");
|
||||
ShowError(error_msg.String());
|
||||
return B_NOT_ALLOWED;
|
||||
}
|
||||
}
|
||||
ReportProgress(0, 0, MDR_DIALECT_CHOICE("Sending username...",
|
||||
"ユーザーID送信中..."));
|
||||
ReportProgress(0, 0, B_TRANSLATE("Sending username" B_UTF8_ELLIPSIS));
|
||||
|
||||
BString cmd = "USER ";
|
||||
cmd += uid;
|
||||
@@ -489,22 +487,19 @@ POP3Protocol::Login(const char *uid, const char *password, int method)
|
||||
|
||||
err = SendCommand(cmd.String());
|
||||
if (err != B_OK) {
|
||||
error_msg << MDR_DIALECT_CHOICE(". The server said:\n",
|
||||
"サーバのメッセージです\n") << fLog;
|
||||
error_msg << B_TRANSLATE(". The server said:\n") << fLog;
|
||||
ShowError(error_msg.String());
|
||||
return err;
|
||||
}
|
||||
|
||||
ReportProgress(0, 0, MDR_DIALECT_CHOICE("Sending password...",
|
||||
"パスワード送信中..."));
|
||||
ReportProgress(0, 0, B_TRANSLATE("Sending password" B_UTF8_ELLIPSIS));
|
||||
cmd = "PASS ";
|
||||
cmd += password;
|
||||
cmd += CRLF;
|
||||
|
||||
err = SendCommand(cmd.String());
|
||||
if (err != B_OK) {
|
||||
error_msg << MDR_DIALECT_CHOICE(". The server said:\n",
|
||||
"サーバのメッセージです\n") << fLog;
|
||||
error_msg << B_TRANSLATE(". The server said:\n") << fLog;
|
||||
ShowError(error_msg.String());
|
||||
return err;
|
||||
}
|
||||
@@ -516,8 +511,7 @@ POP3Protocol::Login(const char *uid, const char *password, int method)
|
||||
status_t
|
||||
POP3Protocol::Stat()
|
||||
{
|
||||
ReportProgress(0, 0, MDR_DIALECT_CHOICE("Getting mailbox size...",
|
||||
"メールボックスのサイズを取得しています..."));
|
||||
ReportProgress(0, 0, B_TRANSLATE("Getting mailbox size" B_UTF8_ELLIPSIS));
|
||||
|
||||
if (SendCommand("STAT" CRLF) < B_OK)
|
||||
return B_ERROR;
|
||||
@@ -746,10 +740,10 @@ POP3Protocol::RetrieveInternal(const char *command, int32 message,
|
||||
// since that will get mistakenly evaluated again in the
|
||||
// next loop and delete a character by mistake.
|
||||
if (testIndex >= amountInBuffer - 4 && testStr[2] == '.') {
|
||||
printf ("POP3Protocol::RetrieveInternal: Jackpot! You have "
|
||||
"hit the rare situation with an escaped period at the "
|
||||
"end of the buffer. Aren't you happy it decodes it "
|
||||
"correctly?\n");
|
||||
printf ("POP3Protocol::RetrieveInternal: Jackpot! "
|
||||
"You have hit the rare situation with an escaped "
|
||||
"period at the end of the buffer. Aren't you happy"
|
||||
"it decodes it correctly?\n");
|
||||
flushWholeBuffer = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,33 +6,41 @@
|
||||
|
||||
#include "ConfigView.h"
|
||||
|
||||
#include <Catalog.h>
|
||||
#include <TextControl.h>
|
||||
#include <String.h>
|
||||
#include <Message.h>
|
||||
|
||||
#include <FileConfigView.h>
|
||||
|
||||
#include <MDRLanguage.h>
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "ConfigView"
|
||||
|
||||
|
||||
ConfigView::ConfigView()
|
||||
: BView(BRect(0,0,20,20),"fortune_filter",B_FOLLOW_LEFT | B_FOLLOW_TOP,0)
|
||||
:
|
||||
BView(BRect(0, 0, 20, 20), "fortune_filter", B_FOLLOW_LEFT | B_FOLLOW_TOP,
|
||||
0)
|
||||
{
|
||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||
|
||||
// determine font height
|
||||
font_height fontHeight;
|
||||
GetFontHeight(&fontHeight);
|
||||
float itemHeight = (int32)(fontHeight.ascent + fontHeight.descent + fontHeight.leading) + 13;
|
||||
float itemHeight = (int32)(fontHeight.ascent + fontHeight.descent
|
||||
+ fontHeight.leading) + 13;
|
||||
|
||||
BRect rect(5,4,250,25);
|
||||
rect.bottom = rect.top - 2 + itemHeight;
|
||||
BMailFileConfigView *fview = new BMailFileConfigView(MDR_DIALECT_CHOICE ("Fortune file:","予言ファイル:"),"fortune_file",false,"",B_FILE_NODE);
|
||||
BMailFileConfigView *fview = new BMailFileConfigView(
|
||||
B_TRANSLATE("Fortune file:"), "fortune_file", false, "", B_FILE_NODE);
|
||||
AddChild(fview);
|
||||
|
||||
rect.top = rect.bottom + 8;
|
||||
rect.bottom = rect.top - 2 + itemHeight;
|
||||
BTextControl * control = new BTextControl(rect,"tag_line",MDR_DIALECT_CHOICE ("Tag line:","見出し:"),NULL,NULL);
|
||||
BTextControl * control = new BTextControl(rect, "tag_line",
|
||||
B_TRANSLATE("Tag line:"), NULL, NULL);
|
||||
control->SetDivider(control->StringWidth(control->Label()) + 6);
|
||||
AddChild(control);
|
||||
|
||||
@@ -42,8 +50,10 @@ ConfigView::ConfigView()
|
||||
|
||||
void ConfigView::SetTo(const BMessage *archive)
|
||||
{
|
||||
if (BMailFileConfigView *control = (BMailFileConfigView *)FindView("fortune_file"))
|
||||
control->SetTo(archive,NULL);
|
||||
BMailFileConfigView* control = (BMailFileConfigView*)FindView(
|
||||
"fortune_file")
|
||||
if (control != NULL)
|
||||
control->SetTo(archive, NULL);
|
||||
|
||||
BString path = archive->FindString("tag_line");
|
||||
if (!archive->HasString("tag_line"))
|
||||
@@ -57,7 +67,8 @@ void ConfigView::SetTo(const BMessage *archive)
|
||||
|
||||
status_t ConfigView::Archive(BMessage *into,bool) const
|
||||
{
|
||||
if (BMailFileConfigView *control = (BMailFileConfigView *)FindView("fortune_file"))
|
||||
if (BMailFileConfigView *control = (BMailFileConfigView
|
||||
*)FindView("fortune_file"))
|
||||
{
|
||||
control->Archive(into);
|
||||
}
|
||||
@@ -67,8 +78,8 @@ status_t ConfigView::Archive(BMessage *into,bool) const
|
||||
BString line = control->Text();
|
||||
if (line != B_EMPTY_STRING)
|
||||
line << "\n\n";
|
||||
if (into->ReplaceString("tag_line",line.String()) != B_OK)
|
||||
into->AddString("tag_line",line.String());
|
||||
if (into->ReplaceString("tag_line", line.String()) != B_OK)
|
||||
into->AddString("tag_line", line.String());
|
||||
}
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,13 @@ SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
|
||||
|
||||
Addon Fortune :
|
||||
ConfigView.cpp
|
||||
filter.cpp ;
|
||||
filter.cpp
|
||||
:
|
||||
be libmail.so $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSUPC++)
|
||||
;
|
||||
|
||||
LinkAgainst Fortune :
|
||||
be libmail.so $(TARGET_LIBSUPC++) ;
|
||||
DoCatalogs Fortune :
|
||||
x-vnd.Haiku-Fortune
|
||||
:
|
||||
ConfigView.cpp
|
||||
;
|
||||
|
||||
@@ -9,14 +9,18 @@
|
||||
|
||||
#include <TextControl.h>
|
||||
|
||||
#include <Catalog.h>
|
||||
#include <FileConfigView.h>
|
||||
#include <MailAddon.h>
|
||||
#include <MDRLanguage.h>
|
||||
#include <MenuField.h>
|
||||
#include <MailPrivate.h>
|
||||
#include <ProtocolConfigView.h>
|
||||
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "ConfigView"
|
||||
|
||||
|
||||
class SMTPConfigView : public BMailProtocolConfigView {
|
||||
public:
|
||||
SMTPConfigView(MailAddonSettings& settings,
|
||||
@@ -45,12 +49,12 @@ SMTPConfigView::SMTPConfigView(MailAddonSettings& settings,
|
||||
AddFlavor("STARTTLS");
|
||||
#endif
|
||||
|
||||
AddAuthMethod(MDR_DIALECT_CHOICE("None","無し"), false);
|
||||
AddAuthMethod(MDR_DIALECT_CHOICE("ESMTP","ESMTP"));
|
||||
AddAuthMethod(MDR_DIALECT_CHOICE("POP3 before SMTP","送信前に受信する"), false);
|
||||
AddAuthMethod(B_TRANSLATE("None"), false);
|
||||
AddAuthMethod(B_TRANSLATE("ESMTP"));
|
||||
AddAuthMethod(B_TRANSLATE("POP3 before SMTP"), false);
|
||||
|
||||
BTextControl *control = (BTextControl *)(FindView("host"));
|
||||
control->SetLabel(MDR_DIALECT_CHOICE("SMTP server: ","SMTPサーバ: "));
|
||||
control->SetLabel(B_TRANSLATE("SMTP server: "));
|
||||
|
||||
// Reset the dividers after changing one
|
||||
float widestLabel = 0;
|
||||
@@ -68,8 +72,8 @@ SMTPConfigView::SMTPConfigView(MailAddonSettings& settings,
|
||||
|
||||
SetTo(settings);
|
||||
|
||||
fFileView = new BMailFileConfigView("Destination:", "path", false,
|
||||
BPrivate::default_mail_out_directory().Path());
|
||||
fFileView = new BMailFileConfigView(B_TRANSLATE("Destination:"), "path",
|
||||
false, BPrivate::default_mail_out_directory().Path());
|
||||
fFileView->SetTo(&settings.Settings(), NULL);
|
||||
AddChild(fFileView);
|
||||
float w, h;
|
||||
|
||||
@@ -27,5 +27,12 @@ if $(HAIKU_OPENSSL_ENABLED) {
|
||||
Addon SMTP
|
||||
: $(sources)
|
||||
: be libmail.so $(TARGET_NETWORK_LIBS) $(TARGET_LIBSTDC++)
|
||||
$(HAIKU_OPENSSL_LIBS)
|
||||
$(HAIKU_LOCALE_LIBS) $(HAIKU_OPENSSL_LIBS)
|
||||
;
|
||||
|
||||
DoCatalogs SMTP :
|
||||
x-vnd.Haiku-SMTP
|
||||
:
|
||||
ConfigView.cpp
|
||||
smtp.cpp
|
||||
;
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <unistd.h>
|
||||
|
||||
#include <Alert.h>
|
||||
#include <Catalog.h>
|
||||
#include <DataIO.h>
|
||||
#include <Entry.h>
|
||||
#include <File.h>
|
||||
@@ -46,7 +47,9 @@
|
||||
# include "md5.h"
|
||||
#endif
|
||||
|
||||
#include <MDRLanguage.h>
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
#define B_TRANSLATE_CONTEXT "smtp"
|
||||
|
||||
|
||||
#define CRLF "\r\n"
|
||||
@@ -268,7 +271,8 @@ SMTPProtocol::Connect()
|
||||
// to the SMTP server first...
|
||||
status_t status = _POP3Authentication();
|
||||
if (status < B_OK) {
|
||||
error_msg << MDR_DIALECT_CHOICE ("POP3 authentication failed. The server said:\n","POP3認証に失敗しました\n") << fLog;
|
||||
error_msg << B_TRANSLATE("POP3 authentication failed. The server "
|
||||
"said:\n") << fLog;
|
||||
ShowError(error_msg.String());
|
||||
return status;
|
||||
}
|
||||
@@ -277,16 +281,17 @@ SMTPProtocol::Connect()
|
||||
status = Open(fSettingsMessage.FindString("server"),
|
||||
fSettingsMessage.FindInt32("port"), authMethod == 1);
|
||||
if (status < B_OK) {
|
||||
error_msg << MDR_DIALECT_CHOICE ("Error while opening connection to ","接続中にエラーが発生しました") << fSettingsMessage.FindString("server");
|
||||
error_msg << B_TRANSLATE("Error while opening connection to ")
|
||||
<< fSettingsMessage.FindString("server");
|
||||
|
||||
if (fSettingsMessage.FindInt32("port") > 0)
|
||||
error_msg << ":" << fSettingsMessage.FindInt32("port");
|
||||
|
||||
// << strerror(err) - BNetEndpoint sucks, we can't use this;
|
||||
if (fLog.Length() > 0)
|
||||
error_msg << ". The server says:\n" << fLog;
|
||||
error_msg << B_TRANSLATE(". The server says:\n") << fLog;
|
||||
else
|
||||
error_msg << MDR_DIALECT_CHOICE (": Connection refused or host not found.",";接続が拒否されたかサーバーが見つかりません");
|
||||
error_msg << B_TRANSLATE(": Connection refused or host not found.");
|
||||
|
||||
ShowError(error_msg.String());
|
||||
|
||||
@@ -299,8 +304,9 @@ SMTPProtocol::Connect()
|
||||
|
||||
if (status != B_OK) {
|
||||
//-----This is a really cool kind of error message. How can we make it work for POP3?
|
||||
error_msg << MDR_DIALECT_CHOICE ("Error while logging in to ","ログイン中にエラーが発生しました\n") << fSettingsMessage.FindString("server")
|
||||
<< MDR_DIALECT_CHOICE (". The server said:\n","サーバーエラー\n") << fLog;
|
||||
error_msg << B_TRANSLATE("Error while logging in to ")
|
||||
<< fSettingsMessage.FindString("server")
|
||||
<< B_TRANSLATE(". The server said:\n") << fLog;
|
||||
ShowError(error_msg.String());
|
||||
}
|
||||
return B_OK;
|
||||
@@ -350,7 +356,7 @@ SMTPProtocol::SendMessages(const std::vector<entry_ref>& mails,
|
||||
status_t
|
||||
SMTPProtocol::Open(const char *address, int port, bool esmtp)
|
||||
{
|
||||
ReportProgress(0, 0, MDR_DIALECT_CHOICE ("Connecting to server...","接続中..."));
|
||||
ReportProgress(0, 0, B_TRANSLATE("Connecting to server" B_UTF8_ELLIPSIS));
|
||||
|
||||
#ifdef USE_SSL
|
||||
use_ssl = (fSettingsMessage.FindInt32("flavor") == 1);
|
||||
@@ -408,7 +414,8 @@ SMTPProtocol::Open(const char *address, int port, bool esmtp)
|
||||
|
||||
if (SSL_connect(ssl) <= 0) {
|
||||
BString error;
|
||||
error << "Could not connect to SMTP server " << fSettingsMessage.FindString("server");
|
||||
error << "Could not connect to SMTP server "
|
||||
<< fSettingsMessage.FindString("server");
|
||||
if (port != 465)
|
||||
error << ":" << port;
|
||||
error << ". (SSL connection error)";
|
||||
|
||||
Reference in New Issue
Block a user