presenter console: add 'Switch monitors' button to help get setup
For years, we've been carefully detecting the laptop display, and choosing
it as the default display to project to - thus many of our users have
configured around this. Provide a way for them to undo the folly, and any
subsequent mis-detections easily.
Initial Artwork is clearly in need of some bug-fixing.
Cleanup hyper-pre-optimised madness in ProtocolHandler.cxx too, called
a few dozen times - and has nested switch statements on characters.
diff --git a/sdext/source/presenter/PresenterProtocolHandler.cxx b/sdext/source/presenter/PresenterProtocolHandler.cxx
index 1c19fc4..f5be51f 100644
--- a/sdext/source/presenter/PresenterProtocolHandler.cxx
+++ b/sdext/source/presenter/PresenterProtocolHandler.cxx
@@ -109,6 +109,19 @@ namespace {
rtl::Reference<PresenterController> mpPresenterController;
};
class SwitchMonitorCommand : public Command
{
public:
SwitchMonitorCommand (
const rtl::Reference<PresenterController>& rpPresenterController);
virtual ~SwitchMonitorCommand (void) {}
virtual void Execute (void);
virtual bool IsEnabled (void) const;
virtual Any GetState (void) const;
private:
rtl::Reference<PresenterController> mpPresenterController;
};
class SetNotesViewCommand : public Command
{
public:
@@ -426,76 +439,31 @@ Command* PresenterProtocolHandler::Dispatch::CreateCommand (
{
if (rsURLPath.getLength() <= 5)
return NULL;
switch (rsURLPath[0])
{
case sal_Char('C') :
switch (rsURLPath[5])
{
case sal_Char('N'):
if (rsURLPath == A2S("CloseNotes"))
return new SetNotesViewCommand(false, rpPresenterController);
break;
case sal_Char('S'):
if (rsURLPath == A2S("CloseSlideSorter"))
return new SetSlideSorterCommand(false, rpPresenterController);
break;
case sal_Char('H'):
if (rsURLPath == A2S("CloseHelp"))
return new SetHelpViewCommand(false, rpPresenterController);
break;
}
break;
case sal_Char('G') :
if (rsURLPath == A2S("GrowNotesFont"))
return new NotesFontSizeCommand(rpPresenterController, +1);
break;
case sal_Char('N') :
switch (rsURLPath[4])
{
case sal_Char('E'):
if (rsURLPath == A2S("NextEffect"))
return new GotoNextEffectCommand(rpPresenterController);
case sal_Char('S'):
if (rsURLPath == A2S("NextSlide"))
return new GotoNextSlideCommand(rpPresenterController);
break;
}
break;
case sal_Char('P') :
if (rsURLPath == A2S("PrevSlide"))
return new GotoPreviousSlideCommand(rpPresenterController);
break;
case sal_Char('S') :
switch (rsURLPath[4])
{
case sal_Char('N'):
if (rsURLPath == A2S("ShowNotes"))
return new SetNotesViewCommand(true, rpPresenterController);
break;
case sal_Char('S'):
if (rsURLPath == A2S("ShowSlideSorter"))
return new SetSlideSorterCommand(true, rpPresenterController);
break;
case sal_Char('H'):
if (rsURLPath == A2S("ShowHelp"))
return new SetHelpViewCommand(true, rpPresenterController);
break;
case sal_Char('n'):
if (rsURLPath == A2S("ShrinkNotesFont"))
return new NotesFontSizeCommand(rpPresenterController, -1);
break;
}
break;
default:
break;
}
if (rsURLPath == A2S("CloseNotes"))
return new SetNotesViewCommand(false, rpPresenterController);
if (rsURLPath == A2S("CloseSlideSorter"))
return new SetSlideSorterCommand(false, rpPresenterController);
if (rsURLPath == A2S("CloseHelp"))
return new SetHelpViewCommand(false, rpPresenterController);
if (rsURLPath == A2S("GrowNotesFont"))
return new NotesFontSizeCommand(rpPresenterController, +1);
if (rsURLPath == A2S("NextEffect"))
return new GotoNextEffectCommand(rpPresenterController);
if (rsURLPath == A2S("NextSlide"))
return new GotoNextSlideCommand(rpPresenterController);
if (rsURLPath == A2S("PrevSlide"))
return new GotoPreviousSlideCommand(rpPresenterController);
if (rsURLPath == A2S("SwitchMonitor"))
return new SwitchMonitorCommand(rpPresenterController);
if (rsURLPath == A2S("ShowNotes"))
return new SetNotesViewCommand(true, rpPresenterController);
if (rsURLPath == A2S("ShowSlideSorter"))
return new SetSlideSorterCommand(true, rpPresenterController);
if (rsURLPath == A2S("ShowHelp"))
return new SetHelpViewCommand(true, rpPresenterController);
if (rsURLPath == A2S("ShrinkNotesFont"))
return new NotesFontSizeCommand(rpPresenterController, -1);
return NULL;
}
@@ -686,7 +654,6 @@ Any GotoPreviousSlideCommand::GetState (void) const
//===== GotoNextEffect ========================================================
GotoNextEffectCommand::GotoNextEffectCommand (
@@ -771,6 +738,29 @@ Any GotoNextSlideCommand::GetState (void) const
}
//===== SwitchMonitorCommand ==============================================
SwitchMonitorCommand::SwitchMonitorCommand (
const rtl::Reference<PresenterController>& rpPresenterController)
: mpPresenterController(rpPresenterController)
{
}
void SwitchMonitorCommand::Execute (void)
{
fprintf (stderr, "Switch monitor !\n");
}
bool SwitchMonitorCommand::IsEnabled (void) const
{
fprintf (stderr, "FIXME - check me !\n");
return true;
}
Any SwitchMonitorCommand::GetState (void) const
{
return Any(sal_False);
}
//===== SetNotesViewCommand ===================================================
diff --git a/sdext/source/presenter/bitmaps/ButtonSwitchMonitorDisabled.png b/sdext/source/presenter/bitmaps/ButtonSwitchMonitorDisabled.png
new file mode 100644
index 0000000..653dffe
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSwitchMonitorDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSwitchMonitorMouseOver.png b/sdext/source/presenter/bitmaps/ButtonSwitchMonitorMouseOver.png
new file mode 100644
index 0000000..f567516
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSwitchMonitorMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSwitchMonitorNormal.png b/sdext/source/presenter/bitmaps/ButtonSwitchMonitorNormal.png
new file mode 100644
index 0000000..3ca0f6f
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSwitchMonitorNormal.png
Binary files differ
diff --git a/sdext/source/presenter/makefile.mk b/sdext/source/presenter/makefile.mk
index e1d15a5..a0d8d0f 100644
--- a/sdext/source/presenter/makefile.mk
+++ b/sdext/source/presenter/makefile.mk
@@ -190,6 +190,8 @@ COMPONENT_BITMAPS= \
$(ZIP1DIR)$/bitmaps$/ButtonNotesMouseOver.png \
$(ZIP1DIR)$/bitmaps$/ButtonNotesSelected.png \
$(ZIP1DIR)$/bitmaps$/ButtonNotesDisabled.png \
$(ZIP1DIR)$/bitmaps$/ButtonSwitchMonitorNormal.png \
$(ZIP1DIR)$/bitmaps$/ButtonSwitchMonitorMouseOver.png \
$(ZIP1DIR)$/bitmaps$/ButtonSlideSorterNormal.png \
$(ZIP1DIR)$/bitmaps$/ButtonSlideSorterMouseOver.png \
$(ZIP1DIR)$/bitmaps$/ButtonSlideSorterSelected.png \
diff --git a/sdext/source/presenter/registry/data/org/openoffice/Office/extension/PresenterScreen.xcu b/sdext/source/presenter/registry/data/org/openoffice/Office/extension/PresenterScreen.xcu
index 2231639..069cc3b 100644
--- a/sdext/source/presenter/registry/data/org/openoffice/Office/extension/PresenterScreen.xcu
+++ b/sdext/source/presenter/registry/data/org/openoffice/Office/extension/PresenterScreen.xcu
@@ -222,6 +222,44 @@
</node>
</node>
<node oor:name="l" oor:op="replace">
<prop oor:name="Name"><value>SwitchMonitor</value></prop>
<prop oor:name="Type"><value>Button</value></prop>
<node oor:name="Normal">
<prop oor:name="Text"><value xml:lang="en-US">Exchange</value></prop>
<node oor:name="Icon">
<prop oor:name="NormalFileName"><value>bitmaps/ButtonSwitchMonitorNormal.png</value></prop>
</node>
<prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:SwitchMonitor</value></prop>
<node oor:name="Font">
<prop oor:name="Size"><value>12</value></prop>
<prop oor:name="Style"><value>Bold</value></prop>
<prop oor:name="Color"><value>B3B7BC</value></prop>
<prop oor:name="Anchor"><value>Center</value></prop>
</node>
</node>
<node oor:name="MouseOver">
<node oor:name="Icon">
<prop oor:name="NormalFileName"><value>bitmaps/ButtonSwitchMonitorMouseOver.png</value></prop>
</node>
<node oor:name="Font">
<prop oor:name="Color"><value>FFFFFF</value></prop>
</node>
</node>
<node oor:name="Disabled">
<node oor:name="Icon">
<prop oor:name="NormalFileName"><value>bitmaps/ButtonSwitchMonitorDisabled.png</value></prop>
</node>
</node>
</node>
<node oor:name="m" oor:op="replace">
<prop oor:name="Type"><value>VerticalSeparator</value></prop>
<node oor:name="Normal">
<node oor:name="Font">
<prop oor:name="Color"><value>76797C</value></prop>
</node>
</node>
</node>
<node oor:name="n" oor:op="replace">
<prop oor:name="Name"><value>Help</value></prop>
<prop oor:name="Type"><value>Button</value></prop>
<node oor:name="Normal">