diff options
Diffstat (limited to 'src/ClockTool.cc')
-rw-r--r-- | src/ClockTool.cc | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/ClockTool.cc b/src/ClockTool.cc index d106408..adc6adc 100644 --- a/src/ClockTool.cc +++ b/src/ClockTool.cc | |||
@@ -134,9 +134,10 @@ public: | |||
134 | }; | 134 | }; |
135 | 135 | ||
136 | ClockTool::ClockTool(const FbTk::FbWindow &parent, | 136 | ClockTool::ClockTool(const FbTk::FbWindow &parent, |
137 | ToolTheme &theme, BScreen &screen, FbTk::Menu &menu): | 137 | FbTk::ThemeProxy<ToolTheme> &theme, BScreen &screen, |
138 | FbTk::Menu &menu): | ||
138 | ToolbarItem(ToolbarItem::FIXED), | 139 | ToolbarItem(ToolbarItem::FIXED), |
139 | m_button(parent, theme.font(), ""), | 140 | m_button(parent, theme->font(), ""), |
140 | m_theme(theme), | 141 | m_theme(theme), |
141 | m_screen(screen), | 142 | m_screen(screen), |
142 | m_pixmap(0), | 143 | m_pixmap(0), |
@@ -164,7 +165,7 @@ ClockTool::ClockTool(const FbTk::FbWindow &parent, | |||
164 | m_timer.setCommand(update_graphic); | 165 | m_timer.setCommand(update_graphic); |
165 | m_timer.start(); | 166 | m_timer.start(); |
166 | 167 | ||
167 | m_button.setGC(m_theme.textGC()); | 168 | m_button.setGC(m_theme->textGC()); |
168 | 169 | ||
169 | // setup menu | 170 | // setup menu |
170 | FbTk::RefCount<FbTk::Command> saverc(FbTk::ObjectRegistry<FbTk::Command>::instance().parse("saverc")); | 171 | FbTk::RefCount<FbTk::Command> saverc(FbTk::ObjectRegistry<FbTk::Command>::instance().parse("saverc")); |
@@ -233,16 +234,13 @@ void ClockTool::update(FbTk::Subject *subj) { | |||
233 | unsigned int new_width = m_button.width(); | 234 | unsigned int new_width = m_button.width(); |
234 | unsigned int new_height = m_button.height(); | 235 | unsigned int new_height = m_button.height(); |
235 | translateSize(orientation(), new_width, new_height); | 236 | translateSize(orientation(), new_width, new_height); |
236 | new_width = m_theme.font().textWidth(text.c_str(), text.size()); | 237 | new_width = m_theme->font().textWidth(text.c_str(), text.size()); |
237 | translateSize(orientation(), new_width, new_height); | 238 | translateSize(orientation(), new_width, new_height); |
238 | if (new_width != m_button.width() || new_height != m_button.height()) { | 239 | if (new_width != m_button.width() || new_height != m_button.height()) { |
239 | resize(new_width, new_height); | 240 | resize(new_width, new_height); |
240 | resizeSig().notify(); | 241 | resizeSig().notify(); |
241 | } | 242 | } |
242 | 243 | ||
243 | if (subj != 0 && typeid(*subj) == typeid(ToolTheme)) | ||
244 | renderTheme(m_button.alpha()); | ||
245 | |||
246 | } | 244 | } |
247 | 245 | ||
248 | unsigned int ClockTool::borderWidth() const { | 246 | unsigned int ClockTool::borderWidth() const { |
@@ -280,7 +278,7 @@ void ClockTool::updateTime() { | |||
280 | 278 | ||
281 | m_button.setText(text); | 279 | m_button.setText(text); |
282 | 280 | ||
283 | unsigned int new_width = m_theme.font().textWidth(time_string, time_string_len) + 2; | 281 | unsigned int new_width = m_theme->font().textWidth(time_string, time_string_len) + 2; |
284 | if (new_width > m_button.width()) { | 282 | if (new_width > m_button.width()) { |
285 | resize(new_width, m_button.height()); | 283 | resize(new_width, m_button.height()); |
286 | resizeSig().notify(); | 284 | resizeSig().notify(); |
@@ -293,7 +291,7 @@ void ClockTool::updateTime() { | |||
293 | 291 | ||
294 | // Just change things that affect the size | 292 | // Just change things that affect the size |
295 | void ClockTool::updateSizing() { | 293 | void ClockTool::updateSizing() { |
296 | m_button.setBorderWidth(m_theme.border().width()); | 294 | m_button.setBorderWidth(m_theme->border().width()); |
297 | // resizes if new timeformat | 295 | // resizes if new timeformat |
298 | update(0); | 296 | update(0); |
299 | } | 297 | } |
@@ -302,25 +300,25 @@ void ClockTool::reRender() { | |||
302 | if (m_pixmap) | 300 | if (m_pixmap) |
303 | m_screen.imageControl().removeImage(m_pixmap); | 301 | m_screen.imageControl().removeImage(m_pixmap); |
304 | 302 | ||
305 | if (m_theme.texture().usePixmap()) { | 303 | if (m_theme->texture().usePixmap()) { |
306 | m_pixmap = m_screen.imageControl().renderImage(width(), height(), | 304 | m_pixmap = m_screen.imageControl().renderImage(width(), height(), |
307 | m_theme.texture(), orientation()); | 305 | m_theme->texture(), orientation()); |
308 | m_button.setBackgroundPixmap(m_pixmap); | 306 | m_button.setBackgroundPixmap(m_pixmap); |
309 | } else { | 307 | } else { |
310 | m_pixmap = 0; | 308 | m_pixmap = 0; |
311 | m_button.setBackgroundColor(m_theme.texture().color()); | 309 | m_button.setBackgroundColor(m_theme->texture().color()); |
312 | } | 310 | } |
313 | } | 311 | } |
314 | 312 | ||
315 | 313 | ||
316 | void ClockTool::renderTheme(unsigned char alpha) { | 314 | void ClockTool::renderTheme(unsigned char alpha) { |
317 | m_button.setAlpha(alpha); | 315 | m_button.setAlpha(alpha); |
318 | m_button.setJustify(m_theme.justify()); | 316 | m_button.setJustify(m_theme->justify()); |
319 | 317 | ||
320 | reRender(); | 318 | reRender(); |
321 | 319 | ||
322 | m_button.setBorderWidth(m_theme.border().width()); | 320 | m_button.setBorderWidth(m_theme->border().width()); |
323 | m_button.setBorderColor(m_theme.border().color()); | 321 | m_button.setBorderColor(m_theme->border().color()); |
324 | m_button.clear(); | 322 | m_button.clear(); |
325 | } | 323 | } |
326 | 324 | ||