Hey all,
Stefan Knorr notified me of the following whiteboard item from the
design team [1], and I have created the following patch that should
implement the desired behavior. I haven't done any of the cleanup for
this because I'd like to dig a little deeper but there are definitely
src and hrc entries that can be removed, as well as simplying the
logic a little bit in the select handler in
cui/source/options/treeopt.cxx. Ideally I'd like to clean things up to
the point where I can remove the switch statement and glean the
default page to display from information in treeopt.[src|hrc].
[1] http://wiki.documentfoundation.org/Whiteboards/KillOptions#Filler_Pages
August Sodora
aug...@gmail.com
(201) 280-8138
From d00daca6dec8f9cbef08bc095e8d92394816caaa Mon Sep 17 00:00:00 2001
From: August Sodora aug...@gmail.com
Date: Fri, 16 Dec 2011 00:14:03 -0500
Subject: [PATCH 2/2] Automatically select an option page if a user clicks on
a category
---
cui/source/options/treeopt.cxx | 56
1 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx
index 66210b7..5fdb53a 100644
--- a/cui/source/options/treeopt.cxx
+++ b/cui/source/options/treeopt.cxx
@@ -1028,6 +1028,62 @@ IMPL_LINK( OfaTreeOptionsDialog, SelectHdl_Impl, Timer*, EMPTYARG )
return 0;
//#111938# lock the SelectHdl_Impl to prevent multiple executes
FlagSet_Impl aFlag(bInSelectHdl_Impl);
+
+// If the user has selected a category, automatically switch to a suitable
+// default sub-page instead.
+if (!pParent)
+{
+OptionsGroupInfo* pGroupInfo = static_castOptionsGroupInfo*(pEntry-GetUserData());
+
+if(!pGroupInfo)
+return 0;
+
+switch(pGroupInfo-m_nDialogId)
+{
+case SID_GENERAL_OPTIONS:
+ActivatePage(RID_SFXPAGE_GENERAL);
+break;
+case SID_LANGUAGE_OPTIONS:
+ActivatePage(OFA_TP_LANGUAGES);
+break;
+case SID_INET_DLG:
+ActivatePage(RID_SVXPAGE_INET_PROXY);
+break;
+case SID_SW_EDITOPTIONS:
+ActivatePage(RID_SW_TP_OPTLOAD_PAGE);
+break;
+case SID_SW_ONLINEOPTIONS:
+ActivatePage(RID_SW_TP_HTML_CONTENT_OPT);
+break;
+case SID_SC_EDITOPTIONS:
+ActivatePage(SID_SC_TP_LAYOUT);
+break;
+case SID_SD_EDITOPTIONS:
+ActivatePage(SID_SI_TP_MISC);
+break;
+case SID_SD_GRAPHIC_OPTIONS:
+ActivatePage(SID_SD_TP_MISC);
+break;
+case SID_SM_EDITOPTIONS:
+ActivatePage(SID_SM_TP_PRINTOPTIONS);
+break;
+case SID_SCH_EDITOPTIONS:
+ActivatePage(RID_OPTPAGE_CHART_DEFCOLORS);
+break;
+case SID_SB_STARBASEOPTIONS:
+ActivatePage(SID_SB_CONNECTIONPOOLING);
+break;
+case SID_FILTER_DLG:
+ActivatePage(RID_SFXPAGE_SAVE);
+break;
+default:
+SAL_WARN(cui, Unrecognized options category pGroupInfo-m_nDialogId);
+break;
+}
+
+return 0;
+}
+
TabPage* pOldPage = NULL;
TabPage* pNewPage = NULL;
OptionsPageInfo* pOptPageInfo = ( pCurrentPageEntry aTreeLB.GetParent( pCurrentPageEntry ) )
--
1.7.5.4
___
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice