source: filezilla/trunk/fuentes/src/interface/settings/optionspage_sizeformatting.cpp @ 3185

Last change on this file since 3185 was 3185, checked in by jrpelegrina, 3 years ago

Update new version: 3.15.02

File size: 3.2 KB
Line 
1#include <filezilla.h>
2
3#include "../Options.h"
4#include "settingsdialog.h"
5#include "optionspage.h"
6#include "optionspage_sizeformatting.h"
7
8BEGIN_EVENT_TABLE(COptionsPageSizeFormatting, COptionsPage)
9EVT_RADIOBUTTON(wxID_ANY, COptionsPageSizeFormatting::OnRadio)
10EVT_CHECKBOX(wxID_ANY, COptionsPageSizeFormatting::OnCheck)
11EVT_SPINCTRL(wxID_ANY, COptionsPageSizeFormatting::OnSpin)
12END_EVENT_TABLE()
13
14bool COptionsPageSizeFormatting::LoadPage()
15{
16        bool failure = false;
17
18        const int format = m_pOptions->GetOptionVal(OPTION_SIZE_FORMAT);
19        switch (format)
20        {
21        case 1:
22                SetRCheck(XRCID("ID_SIZEFORMAT_IEC"), true, failure);
23                break;
24        case 2:
25                SetRCheck(XRCID("ID_SIZEFORMAT_SI_BINARY"), true, failure);
26                break;
27        case 3:
28                SetRCheck(XRCID("ID_SIZEFORMAT_SI_DECIMAL"), true, failure);
29                break;
30        default:
31                SetRCheck(XRCID("ID_SIZEFORMAT_BYTES"), true, failure);
32                break;
33        }
34
35        SetCheckFromOption(XRCID("ID_SIZEFORMAT_SEPARATE_THOUTHANDS"), OPTION_SIZE_USETHOUSANDSEP, failure);
36
37        XRCCTRL(*this, "ID_SIZEFORMAT_DECIMALPLACES", wxSpinCtrl)->SetValue(m_pOptions->GetOptionVal(OPTION_SIZE_DECIMALPLACES));
38
39        UpdateControls();
40        UpdateExamples();
41
42        return !failure;
43}
44
45bool COptionsPageSizeFormatting::SavePage()
46{
47        m_pOptions->SetOption(OPTION_SIZE_FORMAT, GetFormat());
48
49        SetOptionFromCheck(XRCID("ID_SIZEFORMAT_SEPARATE_THOUTHANDS"), OPTION_SIZE_USETHOUSANDSEP);
50
51        m_pOptions->SetOption(OPTION_SIZE_DECIMALPLACES, XRCCTRL(*this, "ID_SIZEFORMAT_DECIMALPLACES", wxSpinCtrl)->GetValue());
52
53        return true;
54}
55
56CSizeFormat::_format COptionsPageSizeFormatting::GetFormat() const
57{
58        if (GetRCheck(XRCID("ID_SIZEFORMAT_IEC")))
59                return CSizeFormat::iec;
60        else if (GetRCheck(XRCID("ID_SIZEFORMAT_SI_BINARY")))
61                return CSizeFormat::si1024;
62        else if (GetRCheck(XRCID("ID_SIZEFORMAT_SI_DECIMAL")))
63                return CSizeFormat::si1000;
64
65        return CSizeFormat::bytes;
66}
67
68bool COptionsPageSizeFormatting::Validate()
69{
70        return true;
71}
72
73void COptionsPageSizeFormatting::OnRadio(wxCommandEvent&)
74{
75        UpdateControls();
76        UpdateExamples();
77}
78
79void COptionsPageSizeFormatting::OnCheck(wxCommandEvent&)
80{
81        UpdateExamples();
82}
83
84void COptionsPageSizeFormatting::OnSpin(wxSpinEvent&)
85{
86        UpdateExamples();
87}
88
89void COptionsPageSizeFormatting::UpdateControls()
90{
91        const int format = GetFormat();
92        XRCCTRL(*this, "ID_SIZEFORMAT_DECIMALPLACES", wxSpinCtrl)->Enable(format != 0);
93}
94
95wxString COptionsPageSizeFormatting::FormatSize(int64_t size)
96{
97        const CSizeFormat::_format format = GetFormat();
98        const bool thousands_separator = GetCheck(XRCID("ID_SIZEFORMAT_SEPARATE_THOUTHANDS"));
99        const int num_decimal_places = XRCCTRL(*this, "ID_SIZEFORMAT_DECIMALPLACES", wxSpinCtrl)->GetValue();
100
101        return CSizeFormat::Format(size, false, format, thousands_separator, num_decimal_places);
102}
103
104void COptionsPageSizeFormatting::UpdateExamples()
105{
106        XRCCTRL(*this, "ID_EXAMPLE1", wxStaticText)->SetLabel(FormatSize(12));
107        XRCCTRL(*this, "ID_EXAMPLE2", wxStaticText)->SetLabel(FormatSize(100));
108        XRCCTRL(*this, "ID_EXAMPLE3", wxStaticText)->SetLabel(FormatSize(1234));
109        XRCCTRL(*this, "ID_EXAMPLE4", wxStaticText)->SetLabel(FormatSize(1058817));
110        XRCCTRL(*this, "ID_EXAMPLE5", wxStaticText)->SetLabel(FormatSize(123456789));
111        XRCCTRL(*this, "ID_EXAMPLE6", wxStaticText)->SetLabel(FormatSize(0x39E94F995A72ll));
112
113        GetSizer()->Layout();
114}
Note: See TracBrowser for help on using the repository browser.