summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei@openoffice.org>2009-08-22 03:13:19 +0000
committerKohei Yoshida <kohei@openoffice.org>2009-08-22 03:13:19 +0000
commitaa18040a8e2db3b1c51e6de4ea34f73efa96a447 (patch)
tree34eb5eec60a26c7bc05cc2dadd9e224c8fccb793
parent514d004f7422f4103d8574b7339c22345a5e6c7c (diff)
code cleanup.
-rw-r--r--sc/inc/AccessibleFilterMenu.hxx14
-rw-r--r--sc/source/ui/Accessibility/AccessibleFilterMenu.cxx86
-rw-r--r--sc/source/ui/cctrl/dpcontrol.cxx10
-rw-r--r--sc/source/ui/inc/dpcontrol.hxx3
4 files changed, 30 insertions, 83 deletions
diff --git a/sc/inc/AccessibleFilterMenu.hxx b/sc/inc/AccessibleFilterMenu.hxx
index 12faa7e848e3..c5049045d672 100644
--- a/sc/inc/AccessibleFilterMenu.hxx
+++ b/sc/inc/AccessibleFilterMenu.hxx
@@ -61,16 +61,7 @@ class ScAccessibleFilterMenu :
public ScAccessibleFilterMenu_BASE
{
public:
- struct MenuItem
- {
- ::com::sun::star::uno::Reference<
- ::com::sun::star::accessibility::XAccessible > mxAccessible;
- bool mbSelected;
-
- MenuItem();
- };
-
- ScAccessibleFilterMenu(
+ explicit ScAccessibleFilterMenu(
const ::com::sun::star::uno::Reference<
::com::sun::star::accessibility::XAccessible>& rxParent,
ScMenuFloatingWindow* pWin, const ::rtl::OUString& rName, size_t nMenuPos, ScDocument* pDoc);
@@ -194,7 +185,7 @@ private:
void updateStates();
private:
- ::std::vector<MenuItem> maMenuItems;
+ ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > maMenuItems;
::std::set<sal_Int16> maStates;
size_t mnMenuPos;
@@ -202,7 +193,6 @@ private:
ScDocument* mpDoc;
bool mbEnabled:1;
- bool mbSelected:1;
};
#endif
diff --git a/sc/source/ui/Accessibility/AccessibleFilterMenu.cxx b/sc/source/ui/Accessibility/AccessibleFilterMenu.cxx
index 9df813886dc5..5a1253181a8f 100644
--- a/sc/source/ui/Accessibility/AccessibleFilterMenu.cxx
+++ b/sc/source/ui/Accessibility/AccessibleFilterMenu.cxx
@@ -74,18 +74,18 @@ using ::std::set;
namespace {
-class AddRemoveEventListener : public ::std::unary_function<void, ScAccessibleFilterMenu::MenuItem>
+class AddRemoveEventListener : public ::std::unary_function<void, Reference<XAccessible> >
{
public:
explicit AddRemoveEventListener(const Reference<XAccessibleEventListener>& rListener, bool bAdd) :
mxListener(rListener), mbAdd(bAdd) {}
- void operator() (ScAccessibleFilterMenu::MenuItem& rItem) const
+ void operator() (const Reference<XAccessible>& xAccessible) const
{
- if (!rItem.mxAccessible.is())
+ if (!xAccessible.is())
return;
- Reference<XAccessibleEventBroadcaster> xBc(rItem.mxAccessible, UNO_QUERY);
+ Reference<XAccessibleEventBroadcaster> xBc(xAccessible, UNO_QUERY);
if (xBc.is())
{
if (mbAdd)
@@ -99,45 +99,6 @@ private:
bool mbAdd;
};
-class CountSelectedMenuItem : public ::std::unary_function<void, ScAccessibleFilterMenu::MenuItem>
-{
-public:
- explicit CountSelectedMenuItem() : mnCount(0) {}
-
- CountSelectedMenuItem(const CountSelectedMenuItem& r) :
- mnCount(r.mnCount) {}
-
- void operator() (ScAccessibleFilterMenu::MenuItem& rItem)
- {
- {
- ScAccessibleFilterMenuItem* p = dynamic_cast<ScAccessibleFilterMenuItem*>(
- rItem.mxAccessible.get());
- if (p && p->isSelected())
- ++mnCount;
- }
-
- {
- ScAccessibleFilterMenu* p = dynamic_cast<ScAccessibleFilterMenu*>(
- rItem.mxAccessible.get());
- if (p && p->isSelected())
- ++mnCount;
- }
- }
-
- size_t getCount() const { return mnCount; }
-
-private:
- size_t mnCount;
-};
-
-}
-
-// ============================================================================
-
-ScAccessibleFilterMenu::MenuItem::MenuItem() :
- mxAccessible(NULL),
- mbSelected(false)
-{
}
// ============================================================================
@@ -147,8 +108,7 @@ ScAccessibleFilterMenu::ScAccessibleFilterMenu(const Reference<XAccessible>& rxP
mnMenuPos(nMenuPos),
mpWindow(pWin),
mpDoc(pDoc),
- mbEnabled(true),
- mbSelected(false)
+ mbEnabled(true)
{
SetName(rName);
}
@@ -167,7 +127,7 @@ Reference<XAccessible> ScAccessibleFilterMenu::getAccessibleAtPoint( const ::com
sal_Bool ScAccessibleFilterMenu::isVisible() throw (RuntimeException)
{
- return true;
+ return mpWindow->IsVisible();
}
void ScAccessibleFilterMenu::grabFocus()
@@ -206,7 +166,7 @@ Reference<XAccessible> ScAccessibleFilterMenu::getAccessibleChild(sal_Int32 nInd
if (maMenuItems.size() <= static_cast<size_t>(nIndex))
throw IndexOutOfBoundsException();
- return maMenuItems[nIndex].mxAccessible;
+ return maMenuItems[nIndex];
}
Reference<XAccessibleStateSet> ScAccessibleFilterMenu::getAccessibleStateSet()
@@ -219,7 +179,7 @@ Reference<XAccessibleStateSet> ScAccessibleFilterMenu::getAccessibleStateSet()
OUString ScAccessibleFilterMenu::getImplementationName()
throw (RuntimeException)
{
- return OUString::createFromAscii("ScAccessibleFilterMenu name");
+ return OUString::createFromAscii("ScAccessibleFilterMenu");
}
// XAccessibleEventBroadcaster
@@ -246,20 +206,17 @@ void ScAccessibleFilterMenu::removeEventListener(
sal_Bool ScAccessibleFilterMenu::isEmpty() throw (RuntimeException)
{
- updateStates();
return maStates.empty();
}
sal_Bool ScAccessibleFilterMenu::contains(sal_Int16 nState) throw (RuntimeException)
{
- updateStates();
return maStates.count(nState) > 0;
}
sal_Bool ScAccessibleFilterMenu::containsAll(const Sequence<sal_Int16>& aStateSet)
throw (RuntimeException)
{
- updateStates();
sal_Int32 n = aStateSet.getLength();
for (sal_Int32 i = 0; i < n; ++i)
{
@@ -292,7 +249,6 @@ void ScAccessibleFilterMenu::selectAccessibleChild(sal_Int32 nChildIndex)
if (static_cast<size_t>(nChildIndex) >= maMenuItems.size())
throw IndexOutOfBoundsException();
- maMenuItems[nChildIndex].mbSelected = true;
mpWindow->setSelectedMenuItem(nChildIndex, false, true);
}
@@ -302,7 +258,7 @@ sal_Bool ScAccessibleFilterMenu::isAccessibleChildSelected(sal_Int32 nChildIndex
if (static_cast<size_t>(nChildIndex) >= maMenuItems.size())
throw IndexOutOfBoundsException();
- return maMenuItems[nChildIndex].mbSelected;
+ return mpWindow->isMenuItemSelected(static_cast<size_t>(nChildIndex));
}
void ScAccessibleFilterMenu::clearAccessibleSelection() throw (RuntimeException)
@@ -317,8 +273,8 @@ void ScAccessibleFilterMenu::selectAllAccessibleChildren() throw (RuntimeExcepti
sal_Int32 ScAccessibleFilterMenu::getSelectedAccessibleChildCount() throw (RuntimeException)
{
- sal_Int32 n = for_each(maMenuItems.begin(), maMenuItems.end(), CountSelectedMenuItem()).getCount();
- return n;
+ // Since this is a menu, either one menu item is selected, or none at all.
+ return mpWindow->getSelectedMenuItem() == ScMenuFloatingWindow::MENU_NOT_SELECTED ? 0 : 1;
}
Reference<XAccessible> ScAccessibleFilterMenu::getSelectedAccessibleChild(sal_Int32 nChildIndex)
@@ -327,7 +283,7 @@ Reference<XAccessible> ScAccessibleFilterMenu::getSelectedAccessibleChild(sal_In
if (static_cast<size_t>(nChildIndex) >= maMenuItems.size())
throw IndexOutOfBoundsException();
- return maMenuItems[nChildIndex].mxAccessible;
+ return maMenuItems[nChildIndex];
}
void ScAccessibleFilterMenu::deselectAccessibleChild(sal_Int32 nChildIndex) throw (IndexOutOfBoundsException, RuntimeException)
@@ -373,23 +329,23 @@ void ScAccessibleFilterMenu::appendMenuItem(const OUString& rName, bool bEnabled
{
// Check weather this menu item is a sub menu or a regular menu item.
ScMenuFloatingWindow* pSubMenu = mpWindow->getSubMenuWindow(nMenuPos);
- MenuItem aItem;
+ Reference<XAccessible> xAccessible;
if (pSubMenu)
{
- aItem.mxAccessible = pSubMenu->CreateAccessible();
- ScAccessibleFilterMenu* p = static_cast<ScAccessibleFilterMenu*>(
- aItem.mxAccessible.get());
+ xAccessible = pSubMenu->CreateAccessible();
+ ScAccessibleFilterMenu* p =
+ static_cast<ScAccessibleFilterMenu*>(xAccessible.get());
p->setEnabled(bEnabled);
p->setMenuPos(nMenuPos);
}
else
{
- aItem.mxAccessible.set(new ScAccessibleFilterMenuItem(this, mpWindow, rName, nMenuPos));
- ScAccessibleFilterMenuItem* p = static_cast<ScAccessibleFilterMenuItem*>(
- aItem.mxAccessible.get());
+ xAccessible.set(new ScAccessibleFilterMenuItem(this, mpWindow, rName, nMenuPos));
+ ScAccessibleFilterMenuItem* p =
+ static_cast<ScAccessibleFilterMenuItem*>(xAccessible.get());
p->setEnabled(bEnabled);
}
- maMenuItems.push_back(aItem);
+ maMenuItems.push_back(xAccessible);
}
void ScAccessibleFilterMenu::setMenuPos(size_t nMenuPos)
@@ -410,8 +366,6 @@ bool ScAccessibleFilterMenu::isFocused()
bool ScAccessibleFilterMenu::isSelected()
{
// Check to see if any of the child menu items is selected.
-// size_t nSelectCount = for_each(maMenuItems.begin(), maMenuItems.end(), CountSelectedMenuItem()).getCount();
-// return nSelectCount == 0;
return mpWindow->isMenuItemSelected(mnMenuPos);
}
diff --git a/sc/source/ui/cctrl/dpcontrol.cxx b/sc/source/ui/cctrl/dpcontrol.cxx
index ab3123718d40..ce45f0c1b504 100644
--- a/sc/source/ui/cctrl/dpcontrol.cxx
+++ b/sc/source/ui/cctrl/dpcontrol.cxx
@@ -48,8 +48,6 @@
#include <com/sun/star/accessibility/XAccessible.hpp>
-#define MENU_NOT_SELECTED 999
-
using ::com::sun::star::uno::Reference;
using ::com::sun::star::accessibility::XAccessible;
using ::rtl::OUString;
@@ -280,6 +278,8 @@ IMPL_LINK( ScMenuFloatingWindow::SubMenuItemData, TimeoutHdl, void*, EMPTYARG )
// ----------------------------------------------------------------------------
+size_t ScMenuFloatingWindow::MENU_NOT_SELECTED = 999;
+
ScMenuFloatingWindow::ScMenuFloatingWindow(Window* pParent, ScDocument* pDoc, USHORT nMenuStackLevel) :
FloatingWindow(pParent, (WB_SYSTEMFLOATWIN|WB_SYSTEMWINDOW|WB_NOBORDER)),
maOpenTimer(this),
@@ -537,7 +537,7 @@ void ScMenuFloatingWindow::setSelectedMenuItem(size_t nPos, bool bSubMenuTimer,
mnSelectedMenu = nPos;
}
-size_t ScMenuFloatingWindow::getSelectedMenuPos() const
+size_t ScMenuFloatingWindow::getSelectedMenuItem() const
{
return mnSelectedMenu;
}
@@ -1177,7 +1177,7 @@ void ScDPFieldPopupWindow::MouseMove(const MouseEvent& rMEvt)
{
ScMenuFloatingWindow::MouseMove(rMEvt);
- size_t nSelectedMenu = getSelectedMenuPos();
+ size_t nSelectedMenu = getSelectedMenuItem();
if (nSelectedMenu == MENU_NOT_SELECTED)
queueCloseSubMenu();
}
@@ -1240,6 +1240,8 @@ void ScDPFieldPopupWindow::setMemberSize(size_t n)
void ScDPFieldPopupWindow::addMember(const OUString& rName, bool bVisible)
{
+ fprintf(stdout, "ScDPFieldPopupWindow::addMember: name = '%s' visible = %d\n",
+ rtl::OUStringToOString(rName, RTL_TEXTENCODING_UTF8).getStr(), bVisible);
Member aMember;
aMember.maName = rName;
aMember.mbVisible = bVisible;
diff --git a/sc/source/ui/inc/dpcontrol.hxx b/sc/source/ui/inc/dpcontrol.hxx
index 55afc0470c64..dbbbcb55ed49 100644
--- a/sc/source/ui/inc/dpcontrol.hxx
+++ b/sc/source/ui/inc/dpcontrol.hxx
@@ -103,6 +103,7 @@ private:
class ScMenuFloatingWindow : public FloatingWindow
{
public:
+ static size_t MENU_NOT_SELECTED;
/**
* Action to perform when an event takes place. Create a sub-class of
* this to implement the desired action.
@@ -133,6 +134,7 @@ public:
::rtl::OUString getMenuItemName(size_t nPos) const;
bool isMenuItemEnabled(size_t nPos) const;
bool isMenuItemSelected(size_t nPos) const;
+ size_t getSelectedMenuItem() const;
void setName(const ::rtl::OUString& rName);
const ::rtl::OUString& getName() const;
@@ -145,7 +147,6 @@ protected:
void drawAllMenuItems();
const Font& getLabelFont() const;
- size_t getSelectedMenuPos() const;
void queueLaunchSubMenu(size_t nPos, ScMenuFloatingWindow* pMenu);
void queueCloseSubMenu();
void launchSubMenu(bool bSetMenuPos);