Update of /cvsroot/mahogany/M/src/gui
In directory usw-pr-cvs1:/tmp/cvs-serv10182/src/gui

Modified Files:
        wxFolderTree.cpp wxOptionsDlg.cpp 
Log Message:
added the home folder option and implemented it

Index: wxFolderTree.cpp
===================================================================
RCS file: /cvsroot/mahogany/M/src/gui/wxFolderTree.cpp,v
retrieving revision 1.188
retrieving revision 1.189
diff -b -u -2 -r1.188 -r1.189
--- wxFolderTree.cpp    17 Mar 2002 15:39:14 -0000      1.188
+++ wxFolderTree.cpp    18 Mar 2002 14:20:06 -0000      1.189
@@ -96,4 +96,5 @@
 extern const MOption MP_FOLDER_TREEINDEX;
 extern const MOption MP_FTREE_FORMAT;
+extern const MOption MP_FTREE_HOME;
 extern const MOption MP_FTREE_NEVER_UNREAD;
 extern const MOption MP_FTREE_PROPAGATE;
@@ -316,4 +317,14 @@
    bool GoToNextUnreadFolder(wxFolderTreeNode *nodeStart, bool next = true);
 
+      // go to the home folder, if any
+   bool GoToHomeFolder();
+
+      // go to the given tree item: select it and ensure it is visible
+   void GoToItem(wxTreeItemId id)
+   {
+      SelectItem(id);
+      EnsureVisible(id);
+   }
+
       // change the currently opened (in the main frame) folder name: we need
       // it to notify the main frame if this folder is deleted
@@ -732,6 +743,5 @@
 
       // select the item and also scroll to it
-      m_tree->SelectItem(item);
-      m_tree->EnsureVisible(item);
+      m_tree->GoToItem(item);
 
       return true;
@@ -2095,8 +2105,26 @@
    }
 
-   SelectItem(id);
-   EnsureVisible(id);
+   GoToItem(id);
+
+   return true;
+}
+
+bool wxFolderTreeImpl::GoToHomeFolder()
+{
+   String folderHome = READ_APPCONFIG_TEXT(MP_FTREE_HOME);
+   if ( !folderHome.empty() )
+   {
+      wxTreeItemId id = GetTreeItemFromName(folderHome);
+      if ( id.IsOk() )
+      {
+         GoToItem(id);
 
    return true;
+      }
+   }
+
+   wxLogStatus(GetFrame(this), _("No home folder configured."));
+
+   return false;
 }
 
@@ -2515,15 +2543,24 @@
    {
       int keycode = evtKey.GetKeyCode();
-      if ( keycode == WXK_DOWN || keycode == WXK_UP )
+      switch ( keycode )
       {
+         case WXK_DOWN:
+         case WXK_UP:
          // do go to next or previous folder
          (void)GoToNextUnreadFolder(GetSelection(), keycode == WXK_DOWN);
+            break;
 
-         // skip Skip() below
-         return;
+         case WXK_HOME:
+            (void)GoToHomeFolder();
+            break;
+
+         default:
+            event.Skip();
       }
    }
-
+   else
+   {
    event.Skip();
+   }
 }
 

Index: wxOptionsDlg.cpp
===================================================================
RCS file: /cvsroot/mahogany/M/src/gui/wxOptionsDlg.cpp,v
retrieving revision 1.323
retrieving revision 1.324
diff -b -u -2 -r1.323 -r1.324
--- wxOptionsDlg.cpp    18 Mar 2002 00:25:37 -0000      1.323
+++ wxOptionsDlg.cpp    18 Mar 2002 14:20:06 -0000      1.324
@@ -435,5 +435,8 @@
    ConfigField_FolderTreeOpenOnClick,
    ConfigField_FolderTreeShowHiddenFolders,
-   ConfigField_FolderTreeLast = ConfigField_FolderTreeShowHiddenFolders,
+   ConfigField_FolderTreeHomeHelp,
+   ConfigField_FolderTreeHomeFolder,
+   ConfigField_FolderTreeIsHome,
+   ConfigField_FolderTreeLast = ConfigField_FolderTreeIsHome,
 
    // autocollecting and address books options
@@ -1389,4 +1392,8 @@
    { gettext_noop("Open folder on single &click"), Field_Bool | Field_AppWide | 
Field_Global, -1 },
    { gettext_noop("Show &hidden folders in the folder tree"), Field_Bool | 
Field_AppWide | Field_Global,-1 },
+   { gettext_noop("When you press Ctrl-Home in the tree Mahogany will go to\n"
+                  "the home folder (usually Inbox or NewMail) if any."), 
+Field_Message, -1 },
+   { gettext_noop("&Home folder"), Field_Folder | Field_AppWide, -1 },
+   { gettext_noop("Is &home folder"), Field_Bool | Field_NotApp, -1 },
 
    // adb: autocollect and bbdb options
@@ -1826,4 +1833,7 @@
    CONFIG_ENTRY(MP_OPEN_ON_CLICK),
    CONFIG_ENTRY(MP_SHOW_HIDDEN_FOLDERS),
+   CONFIG_NONE(), // home help
+   CONFIG_ENTRY(MP_FTREE_HOME),
+   CONFIG_NONE(), // is home checkbox
 
    // addresses
@@ -1963,4 +1973,19 @@
 }
 
+String wxOptionsPage::GetFolderName() const
+{
+   String name;
+   if ( !m_Profile->GetName().StartsWith
+                              (
+                                 String(M_PROFILE_CONFIG_SECTION) + '/',
+                                 &name
+                              ) )
+   {
+      FAIL_MSG( "unexpected profile name!" );
+   }
+
+   return name;
+}
+
 void wxOptionsPage::CreateControls()
 {
@@ -3072,4 +3097,56 @@
 }
 
+bool wxOptionsPageFolderTree::TransferDataToWindow()
+{
+   if ( !wxOptionsPageStandard::TransferDataToWindow() )
+      return false;
+
+   wxControl *control = GetControl(ConfigField_FolderTreeIsHome);
+   if ( control )
+   {
+      wxCheckBox *check = wxStaticCast(control, wxCheckBox);
+      CHECK( check, true, "folder tree is home control is not a checkbox?" );
+
+      String folderHome = READ_APPCONFIG_TEXT(MP_FTREE_HOME);
+      m_isHomeOrig = !folderHome.empty() && folderHome == GetFolderName();
+
+      check->SetValue(m_isHomeOrig);
+   }
+   //else: ok, we could be editing the global options
+
+   return true;
+}
+
+bool wxOptionsPageFolderTree::TransferDataFromWindow()
+{
+   if ( !wxOptionsPageStandard::TransferDataFromWindow() )
+      return false;
+
+   wxControl *control = GetControl(ConfigField_FolderTreeIsHome);
+   if ( control )
+   {
+      wxCheckBox *check = wxStaticCast(control, wxCheckBox);
+      CHECK( check, true, "folder tree is home control is not a checkbox?" );
+
+      // only do something if the value really changed
+      if ( check->GetValue() != m_isHomeOrig )
+      {
+         Profile *profile = mApplication->GetProfile();
+         if ( m_isHomeOrig )
+         {
+            // the checkbox was unchecked, we're not the home folder any more
+            profile->DeleteEntry(MP_FTREE_HOME);
+         }
+         else // we're the new home folder
+         {
+            profile->writeEntry(MP_FTREE_HOME, GetFolderName());
+         }
+      }
+   }
+   //else: ok, we could be editing the global options
+
+   return true;
+}
+
 // ----------------------------------------------------------------------------
 // wxOptionsPageIdent
@@ -3184,13 +3261,5 @@
    CHECK( !m_folder, true, "creating the folder twice" );
 
-   String name;
-   if ( m_Profile->GetName().StartsWith
-                             (
-                              String(M_PROFILE_CONFIG_SECTION) + '/',
-                              &name
-                             ) )
-   {
-      m_folder = MFolder::Get(name);
-   }
+   m_folder = MFolder::Get(GetFolderName());
 
    return m_folder != NULL;


_______________________________________________
Mahogany-cvsupdates mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/mahogany-cvsupdates

Reply via email to