SF.net SVN: mahogany: [7197] trunk/M/src/gui/wxSubfoldersDialog.cpp

[email protected]
Newsgroups gmane.mail.mahogany.cvs
Message-ID <[email protected]>
Revision: 7197
          http://svn.sourceforge.net/mahogany/?rev=7197&view=rev
Author:   vadz
Date:     2006-12-25 13:42:25 -0800 (Mon, 25 Dec 2006)

Log Message:
-----------
don't duplicate registration already done in the base class in ListFolderEventReceiver (this resulted in an assert); added 'Add all' button to the browse subfolders dialog

Modified Paths:
--------------
    trunk/M/src/gui/wxSubfoldersDialog.cpp

Modified: trunk/M/src/gui/wxSubfoldersDialog.cpp
===================================================================
--- trunk/M/src/gui/wxSubfoldersDialog.cpp	2006-12-25 21:18:03 UTC (rev 7196)
+++ trunk/M/src/gui/wxSubfoldersDialog.cpp	2006-12-25 21:42:25 UTC (rev 7197)
@@ -41,9 +41,6 @@
 
 #include "gui/wxDialogLayout.h"
 
-// TODO: this code doesn't work yet, finish it
-//#define USE_SELECT_BUTTONS
-
 // ----------------------------------------------------------------------------
 // options we use here
 // ----------------------------------------------------------------------------
@@ -60,20 +57,15 @@
 // constants
 // ----------------------------------------------------------------------------
 
-#ifdef USE_SELECT_BUTTONS
+// how often to update the progress display?
+static const size_t PROGRESS_THRESHOLD = 10;
 
 // control ids
 enum
 {
-   Button_SelectAll = 100,
-   Button_UnselectAll
+   Button_AddAll = 100
 };
 
-#endif // USE_SELECT_BUTTONS
-
-// how often to update the progress display?
-static const size_t PROGRESS_THRESHOLD = 10;
-
 // ----------------------------------------------------------------------------
 // private functions
 // ----------------------------------------------------------------------------
@@ -259,11 +251,8 @@
    // events from "quick search" text control
    void OnText(wxCommandEvent& event);
 
-#ifdef USE_SELECT_BUTTONS
-   // select/unselect all button handlers
-   void OnSelectAll(wxCommandEvent& event);
-   void OnUnselectAll(wxCommandEvent& event);
-#endif // USE_SELECT_BUTTONS
+   // add all folders and close the dialog
+   void OnAddAll(wxCommandEvent& event);
 
    // called by wxFolderNameTextCtrl (see below)
    bool OnComplete(wxTextCtrl *textctrl);
@@ -293,6 +282,9 @@
    // the folder itself
    MFolder *m_folder;
 
+   // and the underlying mail folder
+   ASMailFolder *m_asmf;
+
    // returns the separator of the folder name components
    wxChar GetFolderNameSeparator() const
    {
@@ -333,15 +325,8 @@
    ListFolderEventReceiver()
    {
       m_progressInfo = NULL;
-
-      m_regCookie = MEventManager::Register(*this, MEventId_ASFolderResult);
    }
 
-   virtual ~ListFolderEventReceiver()
-   {
-      MEventManager::Deregister(m_regCookie);
-   }
-
    // do retrieve all folders and create them
    size_t AddAllFolders(MFolder *folder, ASMailFolder *mailFolder);
 
@@ -350,9 +335,6 @@
    virtual void OnNoMoreFolders();
 
 private:
-   // MEventReceiver cookie for the event manager
-   void *m_regCookie;
-
    // the progress meter
    MProgressInfo *m_progressInfo;
 
@@ -390,10 +372,7 @@
    EVT_TREE_ITEM_EXPANDED(-1, wxSubscriptionDialog::OnTreeExpanded)
    EVT_TREE_SEL_CHANGED(-1, wxSubscriptionDialog::OnTreeSelect)
 
-#ifdef USE_SELECT_BUTTONS
-   EVT_BUTTON(Button_SelectAll, wxSubscriptionDialog::OnSelectAll)
-   EVT_BUTTON(Button_UnselectAll, wxSubscriptionDialog::OnUnselectAll)
-#endif // USE_SELECT_BUTTONS
+   EVT_BUTTON(Button_AddAll, wxSubscriptionDialog::OnAddAll)
 END_EVENT_TABLE()
 
 // ============================================================================
@@ -781,6 +760,8 @@
    m_folder = folder;
    m_folder->IncRef();
    m_folderType = folder->GetType();
+   m_asmf = mailFolder;
+   m_asmf->IncRef();
    m_settingFromProgram = false;
 
    // create controls
@@ -805,9 +786,14 @@
    c->centreY.SameAs(label, wxCentreY);
    m_textFind->SetConstraints(c);
 
-#ifdef USE_SELECT_BUTTONS
-   m_btnSelectAll = new wxButton(this, , _("&Select all"));
-#endif // USE_SELECT_BUTTONS
+   wxButton *btnAddAll = new wxButton(this, Button_AddAll, _("&Add all"));
+   wxWindow *btnOk = FindWindow(wxID_OK);
+   c = new wxLayoutConstraints;
+   c->top.SameAs(btnOk, wxTop);
+   c->height.AsIs();
+   c->width.AsIs();
+   c->right.SameAs(btnOk, wxLeft, 2*LAYOUT_X_MARGIN);
+   btnAddAll->SetConstraints(c);
 
    m_treectrl = new wxSubfoldersTree(this, folder, mailFolder);
    c = new wxLayoutConstraints;
@@ -827,6 +813,7 @@
 wxSubscriptionDialog::~wxSubscriptionDialog()
 {
    m_folder->DecRef();
+   m_asmf->DecRef();
 }
 
 void wxSubscriptionDialog::SelectRecursively(const wxString& path)
@@ -970,37 +957,6 @@
 }
 
 
-#ifdef USE_SELECT_BUTTONS
-
-void wxSubscriptionDialog::OnSelectAll(wxCommandEvent& event)
-{
-   wxTreeItemId root = m_treectrl->GetRootItem();
-   SelectAllUnder(root);
-}
-
-void wxSubscriptionDialog::SelectAllUnder(const wxTreeItemId& item)
-{
-   wxTreeItemId child = m_treectrl->GetFirstChild(item, cookie);
-   while ( child.IsOk() )
-   {
-      m_treectrl->Select(child);
-
-      if ( m_treectrl->ItemHasChildren() )
-      {
-         SelectAllUnder(child);
-      }
-
-      child = m_treectrl->GetNextChild(item, cookie);
-   }
-}
-
-void wxSubscriptionDialog::OnUnselectAll(wxCommandEvent& event)
-{
-   m_treectrl->UnselectAll();
-}
-
-#endif // USE_SELECT_BUTTONS
-
 // update the number of items in the box
 void wxSubscriptionDialog::OnTreeExpanded(wxTreeEvent& event)
 {
@@ -1057,6 +1013,18 @@
    return true;
 }
 
+void wxSubscriptionDialog::OnAddAll(wxCommandEvent& WXUNUSED(event))
+{
+   if ( !AddAllSubfoldersToTree(m_folder, m_asmf) )
+   {
+      wxLogError(_("Failed to add all subfolders to the tree."));
+   }
+   else
+   {
+      EndModal(wxID_OK);
+   }
+}
+
 bool wxSubscriptionDialog::TransferDataFromWindow()
 {
    // will be set to TRUE if we need to refresh the tree


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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.