source: filezilla/trunk/fuentes/src/interface/led.cpp @ 130

Last change on this file since 130 was 130, checked in by jrpelegrina, 4 years ago

First release to xenial

File size: 1.7 KB
Line 
1#include <filezilla.h>
2#include "led.h"
3#include "filezillaapp.h"
4
5#include <wx/dcclient.h>
6
7DEFINE_EVENT_TYPE(fzEVT_UPDATE_LED_TOOLTIP)
8
9BEGIN_EVENT_TABLE(CLed, wxWindow)
10        EVT_PAINT(CLed::OnPaint)
11        EVT_TIMER(wxID_ANY, CLed::OnTimer)
12        EVT_ENTER_WINDOW(CLed::OnEnterWindow)
13END_EVENT_TABLE()
14
15#define LED_OFF 1
16#define LED_ON 0
17
18CLed::CLed(wxWindow *parent, unsigned int index)
19        : m_index(index ? 1 : 0)
20{
21#ifdef __WXGTK__
22        SetBackgroundStyle(wxBG_STYLE_TRANSPARENT);
23#endif
24
25        Create(parent, -1, wxDefaultPosition, wxSize(11, 11));
26
27        m_ledState = LED_OFF;
28
29        m_timer.SetOwner(this);
30
31        wxImage image;
32        if (!image.LoadFile(wxGetApp().GetResourceDir().GetPath() + _T("leds.png"), wxBITMAP_TYPE_PNG))
33                return;
34
35        m_leds[0] = wxBitmap(image.GetSubImage(wxRect(0, index * 11, 11, 11)));
36        m_leds[1] = wxBitmap(image.GetSubImage(wxRect(11, index * 11, 11, 11)));
37
38        m_loaded = true;
39}
40
41void CLed::OnPaint(wxPaintEvent&)
42{
43        wxPaintDC dc(this);
44
45        if (!m_loaded)
46                return;
47
48        dc.DrawBitmap(m_leds[m_ledState], 0, 0, true);
49}
50
51void CLed::Set()
52{
53        if (m_ledState != LED_ON) {
54                m_ledState = LED_ON;
55                Refresh();
56        }
57}
58
59void CLed::Unset()
60{
61        if (m_ledState != LED_OFF) {
62                m_ledState = LED_OFF;
63                Refresh();
64        }
65}
66
67void CLed::OnTimer(wxTimerEvent& event)
68{
69        if (!m_timer.IsRunning())
70                return;
71
72        if (event.GetId() != m_timer.GetId()) {
73                return;
74        }
75
76        if (!CFileZillaEngine::IsActive((enum CFileZillaEngine::_direction)m_index)) {
77                Unset();
78                m_timer.Stop();
79        }
80}
81
82void CLed::OnEnterWindow(wxMouseEvent&)
83{
84        wxCommandEvent requestUpdateEvent(fzEVT_UPDATE_LED_TOOLTIP, GetId());
85        requestUpdateEvent.SetEventObject(this);
86        GetEventHandler()->ProcessEvent(requestUpdateEvent);
87}
88
89void CLed::Ping()
90{
91        if (!m_loaded)
92                return;
93
94        if (m_timer.IsRunning())
95                return;
96
97        Set();
98        m_timer.Start(100);
99}
Note: See TracBrowser for help on using the repository browser.