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