summaryrefslogtreecommitdiff
path: root/src/ToolFactory.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/ToolFactory.cc')
-rw-r--r--src/ToolFactory.cc34
1 files changed, 7 insertions, 27 deletions
diff --git a/src/ToolFactory.cc b/src/ToolFactory.cc
index c5cb895..84184eb 100644
--- a/src/ToolFactory.cc
+++ b/src/ToolFactory.cc
@@ -66,7 +66,7 @@ private:
66 Toolbar &m_tbar; 66 Toolbar &m_tbar;
67}; 67};
68 68
69}; 69}
70 70
71ToolFactory::ToolFactory(BScreen &screen):m_screen(screen), 71ToolFactory::ToolFactory(BScreen &screen):m_screen(screen),
72 m_clock_theme(screen.screenNumber(), "toolbar.clock", "Toolbar.Clock"), 72 m_clock_theme(screen.screenNumber(), "toolbar.clock", "Toolbar.Clock"),
@@ -101,36 +101,17 @@ ToolbarItem *ToolFactory::create(const std::string &name, const FbTk::FbWindow &
101 item = new SystemTray(parent, dynamic_cast<ButtonTheme &>(*m_systray_theme), screen()); 101 item = new SystemTray(parent, dynamic_cast<ButtonTheme &>(*m_systray_theme), screen());
102 } else if (name == "clock") { 102 } else if (name == "clock") {
103 item = new ClockTool(parent, m_clock_theme, screen(), tbar.menu()); 103 item = new ClockTool(parent, m_clock_theme, screen(), tbar.menu());
104 } else if (name == "nextworkspace" ||
105 name == "prevworkspace") {
106
107 FbTk::RefCount<FbTk::Command<void> > cmd(FbTk::CommandParser<void>::instance().parse(name));
108 if (*cmd == 0) // we need a command
109 return 0;
110
111 // TODO maybe direction of arrows should depend on toolbar layout ?
112 FbTk::FbDrawable::TriangleType arrow_type = FbTk::FbDrawable::LEFT;
113 if (name == "nextworkspace")
114 arrow_type = FbTk::FbDrawable::RIGHT;
115
116 ArrowButton *win = new ArrowButton(arrow_type, parent,
117 0, 0,
118 button_size, button_size);
119 win->setOnClick(cmd);
120 item = new ButtonTool(win, ToolbarItem::SQUARE,
121 dynamic_cast<ButtonTheme &>(*m_button_theme),
122 screen().imageControl());
123
124 } else { 104 } else {
125
126 FbTk::RefCount<FbTk::Command<void> > cmd(FbTk::CommandParser<void>::instance().parse(name)); 105 FbTk::RefCount<FbTk::Command<void> > cmd(FbTk::CommandParser<void>::instance().parse(name));
127 if (*cmd == 0) // we need a command 106 if (*cmd == 0) // we need a command
128 return 0; 107 return 0;
129 108
130 FbTk::FbDrawable::TriangleType arrow_type = FbTk::FbDrawable::LEFT; 109 // TODO maybe direction of arrows should depend on toolbar layout ?
131 if (name == "nextwindow") 110 FbTk::FbDrawable::TriangleType arrow_type = FbTk::FbDrawable::RIGHT;
132 arrow_type = FbTk::FbDrawable::RIGHT; 111 const char *tmp = name.c_str();
133 112 if (FbTk::StringUtil::strcasestr(tmp, "prev"))
113 arrow_type = FbTk::FbDrawable::LEFT;
114
134 ArrowButton *win = new ArrowButton(arrow_type, parent, 115 ArrowButton *win = new ArrowButton(arrow_type, parent,
135 0, 0, 116 0, 0,
136 button_size, button_size); 117 button_size, button_size);
@@ -138,7 +119,6 @@ ToolbarItem *ToolFactory::create(const std::string &name, const FbTk::FbWindow &
138 item = new ButtonTool(win, ToolbarItem::SQUARE, 119 item = new ButtonTool(win, ToolbarItem::SQUARE,
139 dynamic_cast<ButtonTheme &>(*m_button_theme), 120 dynamic_cast<ButtonTheme &>(*m_button_theme),
140 screen().imageControl()); 121 screen().imageControl());
141
142 } 122 }
143 123
144 if (item) 124 if (item)