Revision: 7211
http://svn.sourceforge.net/mahogany/?rev=7211&view=rev
Author: vadz
Date: 2007-01-09 17:22:12 -0800 (Tue, 09 Jan 2007)
Log Message:
-----------
show the message subject in the composer window title bar
Modified Paths:
--------------
trunk/M/CHANGES
trunk/M/include/gui/wxComposeView.h
trunk/M/src/gui/wxComposeView.cpp
Modified: trunk/M/CHANGES
===================================================================
--- trunk/M/CHANGES 2007-01-08 23:32:01 UTC (rev 7210)
+++ trunk/M/CHANGES 2007-01-10 01:22:12 UTC (rev 7211)
@@ -9,6 +9,7 @@
Release 0.68 '' September xx, 2006
---------------------------------------
+2007-01-10 VZ: Show the message subject in the composer window title bar
2007-01-08 VZ: Added support for "subject" parameter of mailto: URLs
2006-12-25 VZ: Added "Remove attachments" command
2006-09-05 NB: Mahogany can now be compiled with wxWine
Modified: trunk/M/include/gui/wxComposeView.h
===================================================================
--- trunk/M/include/gui/wxComposeView.h 2007-01-08 23:32:01 UTC (rev 7210)
+++ trunk/M/include/gui/wxComposeView.h 2007-01-10 01:22:12 UTC (rev 7211)
@@ -312,6 +312,16 @@
*/
bool ConfigureInReplyTo();
+
+ /**
+ Update the composer frame title.
+
+ This should be called whenever the subject (shown in the title bar) or
+ the external editor status (shown too) changes and is only used
+ internally.
+ */
+ void UpdateTitle();
+
protected:
/** quasi-Constructor
@param parent parent window
@@ -396,6 +406,9 @@
/// Launch the external editor
bool StartExternalEditor();
+ /// Return true if the external editor is currently running
+ bool IsExternalEditorRunning() const { return m_procExtEdit != NULL; }
+
/**
Return a SendMessage object filled with all data we have. It must be
deleted by the caller (presumably after calling its Send() or
Modified: trunk/M/src/gui/wxComposeView.cpp
===================================================================
--- trunk/M/src/gui/wxComposeView.cpp 2007-01-08 23:32:01 UTC (rev 7210)
+++ trunk/M/src/gui/wxComposeView.cpp 2007-01-10 01:22:12 UTC (rev 7211)
@@ -184,9 +184,6 @@
#define GEOMETRY_MAXIMIZED _T("M")
#define GEOMETRY_FORMAT _T("%dx%d-%dx%d")
-// the composer frame title
-#define COMPOSER_TITLE _("Message Composition")
-
// separate multiple addresses with commas
#define CANONIC_ADDRESS_SEPARATOR _T(", ")
@@ -487,12 +484,29 @@
class wxSubjectTextCtrl : public wxTextCtrlProcessingEnter
{
public:
- wxSubjectTextCtrl(wxWindow *parent) : wxTextCtrlProcessingEnter(parent) { }
+ wxSubjectTextCtrl(wxWindow *parent, wxComposeView *composeView)
+ : wxTextCtrlProcessingEnter(parent)
+ {
+ m_composeView = composeView;
+ }
private:
+ void OnChange(wxCommandEvent& WXUNUSED(event))
+ {
+ // update the subject shown in the title bar
+ m_composeView->UpdateTitle();
+ }
+
+ wxComposeView *m_composeView;
+
+ DECLARE_EVENT_TABLE()
DECLARE_NO_COPY_CLASS(wxSubjectTextCtrl)
};
+BEGIN_EVENT_TABLE(wxSubjectTextCtrl, wxTextCtrlProcessingEnter)
+ EVT_TEXT(wxID_ANY, wxSubjectTextCtrl::OnChange)
+END_EVENT_TABLE()
+
// ----------------------------------------------------------------------------
// IconButton: class used for small buttons in the header
// ----------------------------------------------------------------------------
@@ -1482,7 +1496,7 @@
);
cv->SetTemplate(params.templ);
- cv->SetTitle(COMPOSER_TITLE);
+ cv->UpdateTitle();
cv->Create(parent, profile);
return cv;
@@ -1776,6 +1790,8 @@
m_editor = NULL;
m_encoding = wxFONTENCODING_SYSTEM;
+
+ m_txtSubject = NULL;
}
bool wxComposeView::IsReplyTo(const Message& original) const
@@ -1996,7 +2012,7 @@
0, wxALIGN_CENTRE_VERTICAL);
wxSizer *sizerSubj = new wxBoxSizer(wxHORIZONTAL);
- m_txtSubject = new wxSubjectTextCtrl(m_panel);
+ m_txtSubject = new wxSubjectTextCtrl(m_panel, this);
sizerSubj->Add(m_txtSubject, 1, wxALIGN_CENTRE_VERTICAL);
SetTextAppearance(m_txtSubject);
@@ -2315,6 +2331,23 @@
ResetDirty();
}
+void wxComposeView::UpdateTitle()
+{
+ String title(_("Composer"));
+ if ( m_txtSubject && !m_txtSubject->IsEmpty() )
+ {
+ title << _(" - ") << m_txtSubject->GetValue();
+ }
+
+ if ( IsExternalEditorRunning() )
+ title << _(" (frozen: external editor running)");
+
+ wxFrame *frame = GetFrame();
+ CHECK_RET( frame, _T("composer without frame?") );
+ if ( title != frame->GetTitle() )
+ frame->SetTitle(title);
+}
+
// ----------------------------------------------------------------------------
// wxComposeView address headers stuff
// ----------------------------------------------------------------------------
@@ -3613,20 +3646,8 @@
EnableEditing(false);
// and reflect it in the title
- wxFrame *frame = GetFrame();
- if ( frame )
- {
- wxString title;
- title << COMPOSER_TITLE
- << _(" (frozen: external editor running)");
+ UpdateTitle();
- frame->SetTitle(title);
- }
- else
- {
- FAIL_MSG( _T("composer without frame?") );
- }
-
launchedOk = true;
}
}
@@ -3678,16 +3699,6 @@
// reenable editing the text in the built-in editor
EnableEditing(true);
- wxFrame *frame = GetFrame();
- if ( frame )
- {
- frame->SetTitle(COMPOSER_TITLE);
- }
- else
- {
- FAIL_MSG( _T("composer without frame?") );
- }
-
bool ok = false;
// check the return code of the editor process
@@ -3748,6 +3759,9 @@
delete m_procExtEdit;
m_procExtEdit = NULL;
+
+ UpdateTitle();
+
// show the frame which might had been obscured by the other windows
Raise();
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Mahogany-cvsupdates mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mahogany-cvsupdates