Skip to content

Commit

Permalink
Give user more control over time (#585)
Browse files Browse the repository at this point in the history
1. Allow user to filter for exact datetime ranges.
2. Show user in status bar also the exact time of the last modification.
  • Loading branch information
tobiolo authored Jan 7, 2024
1 parent 7f817ee commit eb18020
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 26 deletions.
69 changes: 44 additions & 25 deletions src/document.h
Original file line number Diff line number Diff line change
Expand Up @@ -1262,37 +1262,56 @@ struct Document {
: _(L"1:1 scale restored.");

case A_FILTERRANGE: {
wxDialog *dtr = new wxDialog(sys->frame, wxID_ANY, _(L"Date range filter"), wxDefaultPosition, wxSize(0, 0), wxRESIZE_BORDER | wxDEFAULT_DIALOG_STYLE);
wxStaticText *introtext = new wxStaticText(dtr, wxID_ANY, _(L"Please select the date range."));
wxStaticText *starttext = new wxStaticText(dtr, wxID_ANY, _(L"Start date"));
wxStaticText *endtext = new wxStaticText(dtr, wxID_ANY, _(L"End date"));
wxDatePickerCtrl *start = new wxDatePickerCtrl(dtr, wxID_ANY, wxDefaultDateTime);
wxDatePickerCtrl *end = new wxDatePickerCtrl(dtr, wxID_ANY, wxDefaultDateTime);
wxButton* okbtn = new wxButton(dtr, wxID_OK, _(L"Filter"));
wxButton* cancelbtn = new wxButton(dtr, wxID_CANCEL, _(L"Cancel"));

wxFlexGridSizer *gridsizer = new wxFlexGridSizer(2, wxSize(10, 10));
gridsizer->Add(starttext);
gridsizer->Add(endtext);
gridsizer->Add(start);
gridsizer->Add(end);
gridsizer->Add(okbtn);
gridsizer->Add(cancelbtn);

wxSizerFlags topsizerflags(1);
topsizerflags.Expand().Border(wxALL, 10);

wxFlexGridSizer *topsizer = new wxFlexGridSizer(1);
topsizer->Add(introtext, topsizerflags);
topsizer->Add(gridsizer, topsizerflags);
wxDialog *dtr = new wxDialog(sys->frame, wxID_ANY, _(L"Date range filter"), wxDefaultPosition, wxSize(0, 0), wxRESIZE_BORDER | wxDEFAULT_DIALOG_STYLE);
wxStaticText *introtext = new wxStaticText(dtr, wxID_ANY, _(L"Please select the datetime range."));
wxStaticText *starttext = new wxStaticText(dtr, wxID_ANY, _(L"Start date and time"));
wxStaticText *endtext = new wxStaticText(dtr, wxID_ANY, _(L"End date and time"));
wxDatePickerCtrl *startdate = new wxDatePickerCtrl(dtr, wxID_ANY, wxDefaultDateTime);
wxTimePickerCtrl *starttime = new wxTimePickerCtrl(dtr, wxID_ANY, wxDefaultDateTime);
wxDatePickerCtrl *enddate = new wxDatePickerCtrl(dtr, wxID_ANY, wxDefaultDateTime);
wxTimePickerCtrl *endtime = new wxTimePickerCtrl(dtr, wxID_ANY, wxDefaultDateTime);
wxButton* okbtn = new wxButton(dtr, wxID_OK, _(L"Filter"));
wxButton* cancelbtn = new wxButton(dtr, wxID_CANCEL, _(L"Cancel"));

wxSizerFlags sizerflags(1);
sizerflags.Expand().Border(wxALL, 10);

wxFlexGridSizer *startsizer = new wxFlexGridSizer(2, wxSize(10, 10));
startsizer->Add(startdate);
startsizer->Add(starttime);

wxFlexGridSizer *endsizer = new wxFlexGridSizer(2, wxSize(10, 10));
endsizer->Add(enddate);
endsizer->Add(endtime);

wxFlexGridSizer *btnsizer = new wxFlexGridSizer(2, wxSize(10, 10));
btnsizer->Add(okbtn);
btnsizer->Add(cancelbtn);

wxFlexGridSizer *topsizer = new wxFlexGridSizer(1);
topsizer->Add(introtext);
topsizer->Add(starttext);
topsizer->Add(startsizer, sizerflags);
topsizer->Add(endtext);
topsizer->Add(endsizer, sizerflags);
topsizer->Add(btnsizer, sizerflags);

dtr->SetSizerAndFit(topsizer);

if (dtr->ShowModal() != wxID_OK) {
return nullptr;
}
wxDateTime beginrange = start->GetValue();
wxDateTime endrange = end->GetValue().Add(wxTimeSpan(23, 59, 59, 999));

int starthour, startmin, startsec;
starttime->GetTime(&starthour, &startmin, &startsec);
wxTimeSpan starttimespan(starthour, startmin, startsec);

int endhour, endmin, endsec;
endtime->GetTime(&endhour, &endmin, &endsec);
wxTimeSpan endtimespan(endhour, endmin, endsec);

wxDateTime beginrange = startdate->GetValue() + starttimespan;
wxDateTime endrange = enddate->GetValue() + endtimespan;
ApplyEditRangeFilter(beginrange, endrange);
return nullptr;
}
Expand Down
1 change: 1 addition & 0 deletions src/stdafx.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@

#include <wx/srchctrl.h>
#include <wx/datectrl.h>
#include <wx/timectrl.h>
#include <wx/sizer.h>

#include <wx/aui/aui.h>
Expand Down
2 changes: 1 addition & 1 deletion src/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ struct System {
frame->SetStatusText(wxString::Format(_(L"Size %d"), -c->text.relsize), 3);
frame->SetStatusText(wxString::Format(_(L"Width %d"), s.g->colwidths[s.x]), 2);
frame->SetStatusText(
wxString::Format(_(L"Edited %s"), c->text.lastedit.FormatDate().c_str()), 1);
wxString::Format(_(L"Edited %s %s"), c->text.lastedit.FormatDate().c_str(), c->text.lastedit.FormatTime().c_str()), 1);
}
}
}
Expand Down

0 comments on commit eb18020

Please sign in to comment.