BeMail now correctly switches the button bar labels on and off as requested: short story: never use a bool when you need 3 different values.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14093 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2005-08-31 00:18:43 +00:00
parent 69d3d82625
commit 8745360987
4 changed files with 64 additions and 86 deletions

View File

@ -138,7 +138,7 @@ bool header_flag = false;
static bool sWrapMode = true; static bool sWrapMode = true;
bool attachAttributes_mode = true; bool attachAttributes_mode = true;
bool gColoredQuotes = true; bool gColoredQuotes = true;
bool show_buttonbar = true; static uint8 sShowButtonBar = true;
char *gReplyPreamble; char *gReplyPreamble;
char *signature; char *signature;
int32 level = L_BEGINNER; int32 level = L_BEGINNER;
@ -428,26 +428,24 @@ TMailApp::MessageReceived(BMessage *msg)
&gColoredQuotes, &gDefaultChain, &gUseAccountFrom, &gColoredQuotes, &gDefaultChain, &gUseAccountFrom,
&gReplyPreamble, &signature, &gMailCharacterSet, &gReplyPreamble, &signature, &gMailCharacterSet,
&gWarnAboutUnencodableCharacters, &gWarnAboutUnencodableCharacters,
&gStartWithSpellCheckOn, &show_buttonbar); &gStartWithSpellCheckOn, &sShowButtonBar);
fPrefsWindow->Show(); fPrefsWindow->Show();
fPrevBBPref = show_buttonbar; fPreviousShowButtonBar = sShowButtonBar;
} }
break; break;
case PREFS_CHANGED: case PREFS_CHANGED:
{ {
// Do we need to update the state of the button bars? // Do we need to update the state of the button bars?
if (fPrevBBPref != show_buttonbar) if (fPreviousShowButtonBar != sShowButtonBar) {
{
// Notify all BeMail windows // Notify all BeMail windows
TMailWindow *window; TMailWindow *window;
for (int32 i = 0; (window=(TMailWindow *)fWindowList.ItemAt(i)) != NULL; i++) for (int32 i = 0; (window=(TMailWindow *)fWindowList.ItemAt(i)) != NULL; i++) {
{
window->Lock(); window->Lock();
window->UpdateViews(); window->UpdateViews();
window->Unlock(); window->Unlock();
} }
fPrevBBPref = show_buttonbar; fPreviousShowButtonBar = sShowButtonBar;
} }
break; break;
} }
@ -455,8 +453,7 @@ TMailApp::MessageReceived(BMessage *msg)
case M_EDIT_SIGNATURE: case M_EDIT_SIGNATURE:
if (fSigWindow) if (fSigWindow)
fSigWindow->Activate(true); fSigWindow->Activate(true);
else else {
{
fSigWindow = new TSignatureWindow(signature_window); fSigWindow = new TSignatureWindow(signature_window);
fSigWindow->Show(); fSigWindow->Show();
} }
@ -943,8 +940,8 @@ TMailApp::LoadSavePrefs(bool loadThem)
FindWindow::SetFindString(findString); FindWindow::SetFindString(findString);
free(findString); free(findString);
} }
if (prefsFile.Read(&show_buttonbar, sizeof(bool)) <= 0) if (prefsFile.Read(&sShowButtonBar, sizeof(uint8)) <= 0)
show_buttonbar = true; sShowButtonBar = true;
if (prefsFile.Read(&gUseAccountFrom, sizeof(int32)) <= 0 if (prefsFile.Read(&gUseAccountFrom, sizeof(int32)) <= 0
|| gUseAccountFrom < ACCOUNT_USE_DEFAULT || gUseAccountFrom < ACCOUNT_USE_DEFAULT
|| gUseAccountFrom > ACCOUNT_FROM_MAIL) || gUseAccountFrom > ACCOUNT_FROM_MAIL)
@ -1088,10 +1085,11 @@ TMailApp::LoadSavePrefs(bool loadThem)
fieldName = "ShowButtonBar"; fieldName = "ShowButtonBar";
if (loadThem) { if (loadThem) {
if (settingsMsg.FindBool(fieldName, &tempBool) == B_OK) int8 value;
show_buttonbar = tempBool; if (settingsMsg.FindInt8(fieldName, &value) == B_OK)
sShowButtonBar = value;
} else if (errorCode == B_OK) } else if (errorCode == B_OK)
errorCode = settingsMsg.AddBool(fieldName, show_buttonbar); errorCode = settingsMsg.AddInt8(fieldName, sShowButtonBar);
fieldName = "UseAccountFrom"; fieldName = "UseAccountFrom";
if (loadThem) { if (loadThem) {
@ -1503,13 +1501,11 @@ TMailWindow::TMailWindow(BRect rect, const char *title, const entry_ref *ref, co
} }
menu->AddItem(subMenu); menu->AddItem(subMenu);
} } else {
else {
menu->AddItem(fSendNow = new BMenuItem( menu->AddItem(fSendNow = new BMenuItem(
MDR_DIALECT_CHOICE ("Send Message", "M) メッセージを送信"), MDR_DIALECT_CHOICE ("Send Message", "M) メッセージを送信"),
new BMessage(M_SEND_NOW), 'M')); new BMessage(M_SEND_NOW), 'M'));
if (!fResending) if (!fResending) {
{
// We want to make alt-shift-M work to send mail as well as just alt-M // We want to make alt-shift-M work to send mail as well as just alt-M
// Gross hack follows... hey, don't look at me like that... it works. // Gross hack follows... hey, don't look at me like that... it works.
// Create a hidden menu bar with a single "Send Now" item linked to alt-shift-M // Create a hidden menu bar with a single "Send Now" item linked to alt-shift-M
@ -1525,8 +1521,7 @@ TMailWindow::TMailWindow(BRect rect, const char *title, const entry_ref *ref, co
// //
// Enclosures Menu // Enclosures Menu
// //
if (!fIncoming) if (!fIncoming) {
{
menu = new BMenu(MDR_DIALECT_CHOICE ("Enclosures","N) 添付ファイル")); menu = new BMenu(MDR_DIALECT_CHOICE ("Enclosures","N) 添付ファイル"));
menu->AddItem(fAdd = new BMenuItem(MDR_DIALECT_CHOICE ("Add","E) 追加")B_UTF8_ELLIPSIS, new BMessage(M_ADD), 'E')); menu->AddItem(fAdd = new BMenuItem(MDR_DIALECT_CHOICE ("Add","E) 追加")B_UTF8_ELLIPSIS, new BMessage(M_ADD), 'E'));
menu->AddItem(fRemove = new BMenuItem(MDR_DIALECT_CHOICE ("Remove","T) 削除"), new BMessage(M_REMOVE), 'T')); menu->AddItem(fRemove = new BMenuItem(MDR_DIALECT_CHOICE ("Remove","T) 削除"), new BMessage(M_REMOVE), 'T'));
@ -1543,18 +1538,16 @@ TMailWindow::TMailWindow(BRect rect, const char *title, const entry_ref *ref, co
// //
float bbwidth = 0, bbheight = 0; float bbwidth = 0, bbheight = 0;
if (show_buttonbar) if (sShowButtonBar) {
{
BuildButtonBar(); BuildButtonBar();
fButtonBar->ShowLabels(show_buttonbar & 1); fButtonBar->ShowLabels(sShowButtonBar == 1);
fButtonBar->Arrange(/* True for all buttons same size, false to just fit */ fButtonBar->Arrange(/* True for all buttons same size, false to just fit */
MDR_DIALECT_CHOICE (true, true)); MDR_DIALECT_CHOICE (true, true));
fButtonBar->GetPreferredSize(&bbwidth, &bbheight); fButtonBar->GetPreferredSize(&bbwidth, &bbheight);
fButtonBar->ResizeTo(Bounds().right+3, bbheight+1); fButtonBar->ResizeTo(Bounds().right+3, bbheight+1);
fButtonBar->MoveTo(-1, height-1); fButtonBar->MoveTo(-1, height-1);
fButtonBar->Show(); fButtonBar->Show();
} } else
else
fButtonBar = NULL; fButtonBar = NULL;
r.top = r.bottom = height + bbheight + 1; r.top = r.bottom = height + bbheight + 1;
@ -1576,8 +1569,7 @@ TMailWindow::TMailWindow(BRect rect, const char *title, const entry_ref *ref, co
AddChild(fContentView); AddChild(fContentView);
Unlock(); Unlock();
if (to) if (to) {
{
Lock(); Lock();
fHeaderView->fTo->SetText(to); fHeaderView->fTo->SetText(to);
Unlock(); Unlock();
@ -1593,12 +1585,10 @@ TMailWindow::TMailWindow(BRect rect, const char *title, const entry_ref *ref, co
// If auto-signature, add signature to the text here. // If auto-signature, add signature to the text here.
// //
if (!fIncoming && strcmp(signature, SIG_NONE) != 0) if (!fIncoming && strcmp(signature, SIG_NONE) != 0) {
{
if (strcmp(signature, SIG_RANDOM) == 0) if (strcmp(signature, SIG_RANDOM) == 0)
PostMessage(M_RANDOM_SIG); PostMessage(M_RANDOM_SIG);
else else {
{
// //
// Create a query to find this signature // Create a query to find this signature
// //
@ -1616,13 +1606,11 @@ TMailWindow::TMailWindow(BRect rect, const char *title, const entry_ref *ref, co
// If we find the named query, add it to the text. // If we find the named query, add it to the text.
// //
BEntry entry; BEntry entry;
if (query.GetNextEntry(&entry) == B_NO_ERROR) if (query.GetNextEntry(&entry) == B_NO_ERROR) {
{
off_t size; off_t size;
BFile file; BFile file;
file.SetTo(&entry, O_RDWR); file.SetTo(&entry, O_RDWR);
if (file.InitCheck() == B_NO_ERROR) if (file.InitCheck() == B_NO_ERROR) {
{
file.GetSize(&size); file.GetSize(&size);
char *str = (char *)malloc(size); char *str = (char *)malloc(size);
size = file.Read(str, size); size = file.Read(str, size);
@ -1635,8 +1623,7 @@ TMailWindow::TMailWindow(BRect rect, const char *title, const entry_ref *ref, co
if (fStartingText != NULL) if (fStartingText != NULL)
strcpy(fStartingText, fContentView->fTextView->Text()); strcpy(fStartingText, fContentView->fTextView->Text());
} }
} } else {
else {
char tempString [2048]; char tempString [2048];
query.GetPredicate (tempString, sizeof (tempString)); query.GetPredicate (tempString, sizeof (tempString));
printf ("Query failed, was looking for: %s\n", tempString); printf ("Query failed, was looking for: %s\n", tempString);
@ -1703,18 +1690,18 @@ TMailWindow::BuildButtonBar()
} }
void TMailWindow::UpdateViews( void ) void
TMailWindow::UpdateViews()
{ {
float bbwidth = 0, bbheight = 0; float bbwidth = 0, bbheight = 0;
float nextY = fMenuBar->Frame().bottom+1; float nextY = fMenuBar->Frame().bottom+1;
// Show/Hide Button Bar // Show/Hide Button Bar
if (show_buttonbar) if (sShowButtonBar) {
{
// Create the Button Bar if needed // Create the Button Bar if needed
if (!fButtonBar) if (!fButtonBar)
BuildButtonBar(); BuildButtonBar();
fButtonBar->ShowLabels(show_buttonbar & 1); fButtonBar->ShowLabels(sShowButtonBar == 1);
fButtonBar->Arrange(/* True for all buttons same size, false to just fit */ fButtonBar->Arrange(/* True for all buttons same size, false to just fit */
MDR_DIALECT_CHOICE (true, true)); MDR_DIALECT_CHOICE (true, true));
fButtonBar->GetPreferredSize( &bbwidth, &bbheight); fButtonBar->GetPreferredSize( &bbwidth, &bbheight);
@ -1725,15 +1712,13 @@ void TMailWindow::UpdateViews( void )
fButtonBar->Show(); fButtonBar->Show();
else else
fButtonBar->Invalidate(); fButtonBar->Invalidate();
} } else if (fButtonBar)
else if (fButtonBar)
fButtonBar->Hide(); fButtonBar->Hide();
// Arange other views to match // Arange other views to match
fHeaderView->MoveTo(0, nextY); fHeaderView->MoveTo(0, nextY);
nextY = fHeaderView->Frame().bottom; nextY = fHeaderView->Frame().bottom;
if (fEnclosuresView) if (fEnclosuresView) {
{
fEnclosuresView->MoveTo(0, nextY); fEnclosuresView->MoveTo(0, nextY);
nextY = fEnclosuresView->Frame().bottom+1; nextY = fEnclosuresView->Frame().bottom+1;
} }

View File

@ -205,10 +205,8 @@ class TMailApp : public BApplication {
int32 fWindowCount; int32 fWindowCount;
TPrefsWindow *fPrefsWindow; TPrefsWindow *fPrefsWindow;
TSignatureWindow *fSigWindow; TSignatureWindow *fSigWindow;
//BMessenger fTrackerMessenger;
// Talks to tracker window that this was launched from.
bool fPrevBBPref; uint8 fPreviousShowButtonBar;
}; };
//-------------------------------------------------------------------- //--------------------------------------------------------------------

View File

@ -113,7 +113,7 @@ extern BPoint prefs_window;
TPrefsWindow::TPrefsWindow(BRect rect, BFont *font, int32 *level, bool *wrap, TPrefsWindow::TPrefsWindow(BRect rect, BFont *font, int32 *level, bool *wrap,
bool *attachAttributes, bool *cquotes, uint32 *account, int32 *replyTo, bool *attachAttributes, bool *cquotes, uint32 *account, int32 *replyTo,
char **preamble, char **sig, uint32 *encoding, bool *warnUnencodable, char **preamble, char **sig, uint32 *encoding, bool *warnUnencodable,
bool *spellCheckStartOn, bool *buttonBar) bool *spellCheckStartOn, uint8 *buttonBar)
: BWindow(rect, MDR_DIALECT_CHOICE ("BeMail Preferences","BeMailの設定"), B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE) : BWindow(rect, MDR_DIALECT_CHOICE ("BeMail Preferences","BeMailの設定"), B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE)
{ {
BMenuField *menu; BMenuField *menu;
@ -530,13 +530,10 @@ TPrefsWindow::MessageReceived(BMessage *msg)
} }
case P_SIG: case P_SIG:
free(*fNewSignature); free(*fNewSignature);
if (msg->FindString("signature", &signature) == B_NO_ERROR) if (msg->FindString("signature", &signature) == B_NO_ERROR) {
{
*fNewSignature = (char *)malloc(strlen(signature) + 1); *fNewSignature = (char *)malloc(strlen(signature) + 1);
strcpy(*fNewSignature, signature); strcpy(*fNewSignature, signature);
} } else {
else
{
*fNewSignature = (char *)malloc(strlen(SIG_NONE) + 1); *fNewSignature = (char *)malloc(strlen(SIG_NONE) + 1);
strcpy(*fNewSignature, SIG_NONE); strcpy(*fNewSignature, SIG_NONE);
} }
@ -552,7 +549,7 @@ TPrefsWindow::MessageReceived(BMessage *msg)
break; break;
case P_BUTTON_BAR: case P_BUTTON_BAR:
msg->FindInt8("bar", (int8 *)fNewButtonBar); msg->FindInt8("bar", (int8 *)fNewButtonBar);
be_app->PostMessage( PREFS_CHANGED ); be_app->PostMessage(PREFS_CHANGED);
break; break;
default: default:
@ -585,7 +582,6 @@ TPrefsWindow::MessageReceived(BMessage *msg)
BPopUpMenu * BPopUpMenu *
TPrefsWindow::BuildFontMenu(BFont *font) TPrefsWindow::BuildFontMenu(BFont *font)
{ {
font_family def_family; font_family def_family;
font_style def_style; font_style def_style;
font_family f_family; font_family f_family;
@ -594,7 +590,7 @@ TPrefsWindow::BuildFontMenu(BFont *font)
BPopUpMenu *menu = new BPopUpMenu(""); BPopUpMenu *menu = new BPopUpMenu("");
font->GetFamilyAndStyle(&def_family, &def_style); font->GetFamilyAndStyle(&def_family, &def_style);
int32 family_menu_index=0; int32 family_menu_index = 0;
int family_count = count_font_families(); int family_count = count_font_families();
for (int family_loop = 0; family_loop < family_count; family_loop++) { for (int family_loop = 0; family_loop < family_count; family_loop++) {
get_font_family(family_loop, &f_family); get_font_family(family_loop, &f_family);
@ -612,9 +608,9 @@ TPrefsWindow::BuildFontMenu(BFont *font)
BMenuItem *item = new BMenuItem(f_style, msg); BMenuItem *item = new BMenuItem(f_style, msg);
family_menu->AddItem(item); family_menu->AddItem(item);
if ((strcmp(def_family, f_family) == 0) && (strcmp(def_style, f_style) == 0)) { if ((strcmp(def_family, f_family) == 0) && (strcmp(def_style, f_style) == 0))
item->SetMarked(true); item->SetMarked(true);
}
item->SetTarget(this); item->SetTarget(this);
} }
@ -622,10 +618,12 @@ TPrefsWindow::BuildFontMenu(BFont *font)
BMenuItem *item = menu->ItemAt(family_menu_index); BMenuItem *item = menu->ItemAt(family_menu_index);
BMessage *msg = new BMessage(P_FONT); BMessage *msg = new BMessage(P_FONT);
msg->AddString("font", f_family); msg->AddString("font", f_family);
item->SetMessage(msg); item->SetMessage(msg);
item->SetTarget(this); item->SetTarget(this);
if (strcmp(def_family, f_family) == 0) { item->SetMarked(true); } if (strcmp(def_family, f_family) == 0)
item->SetMarked(true);
family_menu_index++; family_menu_index++;
} }
return menu; return menu;
@ -635,9 +633,9 @@ TPrefsWindow::BuildFontMenu(BFont *font)
BPopUpMenu * BPopUpMenu *
TPrefsWindow::BuildLevelMenu(int32 level) TPrefsWindow::BuildLevelMenu(int32 level)
{ {
BMenuItem *item; BMenuItem *item;
BMessage *msg; BMessage *msg;
BPopUpMenu *menu; BPopUpMenu *menu;
menu = new BPopUpMenu(""); menu = new BPopUpMenu("");
msg = new BMessage(P_LEVEL); msg = new BMessage(P_LEVEL);
@ -660,23 +658,20 @@ BPopUpMenu *
TPrefsWindow::BuildAccountMenu(uint32 account) TPrefsWindow::BuildAccountMenu(uint32 account)
{ {
BPopUpMenu *menu = new BPopUpMenu(""); BPopUpMenu *menu = new BPopUpMenu("");
BMenuItem *item; BMenuItem *item;
//menu->SetRadioMode(true); //menu->SetRadioMode(true);
BList chains; BList chains;
if (GetOutboundMailChains(&chains) < B_OK) if (GetOutboundMailChains(&chains) < B_OK) {
{ menu->AddItem(item = new BMenuItem("<no account found>", NULL));
menu->AddItem(item = new BMenuItem("<no account found>",NULL));
item->SetEnabled(false); item->SetEnabled(false);
return menu; return menu;
} }
BMessage *msg; BMessage *msg;
for (int32 i = 0;i < chains.CountItems();i++) for (int32 i = 0; i < chains.CountItems(); i++) {
{
BMailChain *chain = (BMailChain *)chains.ItemAt(i); BMailChain *chain = (BMailChain *)chains.ItemAt(i);
item = new BMenuItem(chain->Name(),msg = new BMessage(P_ACCOUNT)); item = new BMenuItem(chain->Name(), msg = new BMessage(P_ACCOUNT));
msg->AddInt32("id",chain->ID()); msg->AddInt32("id",chain->ID());
@ -928,35 +923,36 @@ TPrefsWindow::BuildWarnUnencodableMenu(bool warnUnencodable)
BPopUpMenu * BPopUpMenu *
TPrefsWindow::BuildSpellCheckStartOnMenu(bool spellCheckStartOn) TPrefsWindow::BuildSpellCheckStartOnMenu(bool spellCheckStartOn)
{ {
return BuildBoolMenu(P_SPELL_CHECK_START_ON,"spellCheckStartOn",spellCheckStartOn); return BuildBoolMenu(P_SPELL_CHECK_START_ON, "spellCheckStartOn", spellCheckStartOn);
} }
BPopUpMenu * BPopUpMenu *
TPrefsWindow::BuildButtonBarMenu(bool show) TPrefsWindow::BuildButtonBarMenu(uint8 show)
{ {
BMenuItem *item; BMenuItem *item;
BMessage *msg; BMessage *msg;
BPopUpMenu *menu; BPopUpMenu *menu;
menu = new BPopUpMenu(""); menu = new BPopUpMenu("");
msg = new BMessage(P_BUTTON_BAR); msg = new BMessage(P_BUTTON_BAR);
msg->AddInt8("bar", 1); msg->AddInt8("bar", 1);
menu->AddItem(item = new BMenuItem(ICON_LABEL_TEXT, msg)); menu->AddItem(item = new BMenuItem(ICON_LABEL_TEXT, msg));
if (show & 1) if (show & 1)
item->SetMarked(true); item->SetMarked(true);
msg = new BMessage(P_BUTTON_BAR); msg = new BMessage(P_BUTTON_BAR);
msg->AddInt8("bar", 2); msg->AddInt8("bar", 2);
menu->AddItem(item = new BMenuItem(ICON_TEXT, msg)); menu->AddItem(item = new BMenuItem(ICON_TEXT, msg));
if (show & 2) if (show & 2)
item->SetMarked(true); item->SetMarked(true);
msg = new BMessage(P_BUTTON_BAR); msg = new BMessage(P_BUTTON_BAR);
msg->AddInt8("bar", 0); msg->AddInt8("bar", 0);
menu->AddItem(item = new BMenuItem(HIDE_TEXT, msg)); menu->AddItem(item = new BMenuItem(HIDE_TEXT, msg));
if (!show) if (!show)
item->SetMarked(true); item->SetMarked(true);
return menu; return menu;
} }

View File

@ -66,17 +66,17 @@ class Button;
//==================================================================== //====================================================================
class TPrefsWindow : public BWindow class TPrefsWindow : public BWindow {
{
public: public:
TPrefsWindow(BRect rect, BFont *font, int32 *level, bool *warp, TPrefsWindow(BRect rect, BFont *font, int32 *level, bool *warp,
bool *attachAttributes, bool *cquotes, uint32 *account, bool *attachAttributes, bool *cquotes, uint32 *account,
int32 *replyTo, char **preamble, char **sig, uint32 *encoding, int32 *replyTo, char **preamble, char **sig, uint32 *encoding,
bool *warnUnencodable, bool *spellCheckStartOn, bool *buttonBar); bool *warnUnencodable, bool *spellCheckStartOn, uint8 *buttonBar);
~TPrefsWindow(); ~TPrefsWindow();
virtual void MessageReceived(BMessage*); virtual void MessageReceived(BMessage *message);
private:
BPopUpMenu *BuildFontMenu(BFont*); BPopUpMenu *BuildFontMenu(BFont*);
BPopUpMenu *BuildLevelMenu(int32); BPopUpMenu *BuildLevelMenu(int32);
BPopUpMenu *BuildAccountMenu(uint32); BPopUpMenu *BuildAccountMenu(uint32);
@ -90,17 +90,16 @@ class TPrefsWindow : public BWindow
BPopUpMenu *BuildEncodingMenu(uint32 encoding); BPopUpMenu *BuildEncodingMenu(uint32 encoding);
BPopUpMenu *BuildWarnUnencodableMenu(bool warnUnencodable); BPopUpMenu *BuildWarnUnencodableMenu(bool warnUnencodable);
BPopUpMenu *BuildSpellCheckStartOnMenu(bool spellCheckStartOn); BPopUpMenu *BuildSpellCheckStartOnMenu(bool spellCheckStartOn);
BPopUpMenu *BuildButtonBarMenu(bool show); BPopUpMenu *BuildButtonBarMenu(uint8 show);
private:
BPopUpMenu *BuildBoolMenu(uint32 msg, const char *boolItem, bool isTrue); BPopUpMenu *BuildBoolMenu(uint32 msg, const char *boolItem, bool isTrue);
bool fWrap; bool fWrap;
bool *fNewWrap; bool *fNewWrap;
bool fAttachAttributes; bool fAttachAttributes;
bool *fNewAttachAttributes; bool *fNewAttachAttributes;
bool fButtonBar; uint8 fButtonBar;
bool *fNewButtonBar; uint8 *fNewButtonBar;
bool fColoredQuotes, *fNewColoredQuotes; bool fColoredQuotes, *fNewColoredQuotes;
uint32 fAccount; uint32 fAccount;
uint32 *fNewAccount; uint32 *fNewAccount;