aboutsummaryrefslogtreecommitdiff
path: root/c/episodelistview.cpp
AgeCommit message (Collapse)Author
2022-09-02Use global Window object.John Ankarström
This makes it easier to control initialization and maintain RAII.
2022-08-28Use reference instead of copy.John Ankarström
2022-08-26Use FunctionW names explicitly instead of macros.John Ankarström
It's uglier, but it makes Visual Studio show better tooltips.
2022-08-25Fix MSVC compatibility.John Ankarström
2022-08-24Remove Prolog dependency.John Ankarström
The only thing left to reimplement is the tracking of watched episodes in MPC-HC.
2022-08-24Re-enable screenwriter limit.John Ankarström
2022-08-24Add FetchScreenwriters. Improve thread communication.John Ankarström
2022-08-23Reimplement SelectUnwatched.John Ankarström
2022-08-22Open episodes without Prolog.John Ankarström
2022-08-18Move file views out of EpisodeListView and DataListView.John Ankarström
2022-08-17Add FileView::Initialized constructor.John Ankarström
2022-08-17Minor cleanup.John Ankarström
2022-08-17Add CfgA.John Ankarström
2022-08-17Make FileView more type-safe.John Ankarström
2022-08-16EpisodeListView: Use FileView consistently.John Ankarström
2022-08-16Add data migration test.John Ankarström
2022-08-15Start moving data into C++.John Ankarström
This is the first step in the process of getting rid of the SWI Prolog dependency. We'll see how it goes.
2022-08-10Improve structure.John Ankarström
2022-08-06Use Swprintf instead of swprintf_s.John Ankarström
2022-08-06Update Hungarian notation for buffer sizes.John Ankarström
For string lengths EXCLUDING NUL, I use len, whereas cb and cch are used for string lengths INCLUDING NUL. cb = byte count = sizeof(a) = narrow string length cch = character count = sizeof(a)/sizeof(*a) = string length cb and cch are equivalent for narrow strings. I prefer cch.
2022-08-04Use C++ casts, nullptr.John Ankarström
2022-08-04Add comments.John Ankarström
2022-08-03Minor changes.John Ankarström
2022-08-03Use Pascal case for all functions.John Ankarström
2022-08-03Split common.h to util.h, wcharptr.h and win.h.John Ankarström
2022-08-02Improve wstring_owner, rename to wchar_ptr.John Ankarström
The user-defined conversion function makes the interface a lot simpler AND safer.
2022-07-31Limit use of Hungarian notation.John Ankarström
I don't hate Hungarian notation. It has some very nice qualities. But it also adds a lot of typing. That said, not using it feels a bit... unsafe. I might go back on this decision. We'll see.
2022-07-31Improve initial scroll position.John Ankarström
(When the focused episode is near the end of the list.)
2022-07-30Simplify EpisodeListView::UpdateItem, remove m_lviFocus.John Ankarström
2022-07-30Add wstring_owner, replacing std::wstring.John Ankarström
std::basic_string is nice, but it is not very ergonomic if everything you really need is to automatically free C strings at end of scope. I suppose I could have used std::unique_ptr for this, but I suspect the ergonomics would be worse.
2022-07-30Formatting.John Ankarström
This style is more compact and quicker to read once you know what the first two member in LVITEM are (mask and iItem).
2022-07-29Add ListView::FindNextItem.John Ankarström
This makes it much more ergonomic and less error-prone to look up list view items.
2022-07-27Fix remaining memory bugs.John Ankarström
See f7534e2.
2022-07-27Fix memory bug.John Ankarström
swprintf_s excepts the NUMBER of characters, not the SIZE of the buffer. The argument is named sizeOfBuffer in the documentation, but don't let that fool you (like it did me). Interestingly enough, this bug causes a crash ONLY when compiling WITHOUT optimizations (at least on my system). The crash was introduced in 3a133c4, where I removed the `static' attribute from tszRating. I guess the optimizer moves the memory around such that the memory after the string happens to be unimportant.
2022-07-26Rewrite WM_MENUSELECT handling.John Ankarström
2022-07-26Use 's' instead of 'str' for as prefix for managed strings.John Ankarström
2022-07-26Remove ANSI compatibility.John Ankarström
Even though it is a fun challange in many ways, I think that, realistically, it is probably not worth the complexity. The Prolog backend isn't ANSI-compatible either.
2022-07-24Use Query object in DataListView::ShowEpisode.John Ankarström
2022-07-24Reorganize EpisodeListView::Update.John Ankarström
2022-07-24Use std::vector for tracking selected episodes.John Ankarström
This also fixes an off-by-one error leading to an out-of-bounds write.
2022-07-24Improve window layout.John Ankarström
This reverts much of 97f0a27. 1. It turns out not to be a good idea to resize the list view columns based on the list view window's own rectangle, as it will change depending on whether a scrollbar is visible. The problem is that resizing the columns may add a horizontal scrollbar -- which in turn may add a vertical scrollbar. 2. The WS_EX_CLIENTEDGE style does not look very good in "modern" (non-classic) themes. In 97f0a27, I tried solving this by extending the dimensions of the child windows such that their edges were hidden. However, this type of overlapping causes problems with the status bar. My new solution is to instead *reduce* the child windows' dimensions. This achieves a visual impression similar to the thicker (more well-designed) edges of the "classically themed" list view control. To make it look even better, the main window background is changed from COLOR_WINDOWFRAME (white) to COLOR_WINDOW (light gray).
2022-07-23Fix display of Unicode text.John Ankarström
Turns out that SWI-Prolog's wide string functions, which I started using in 03fe361, do not convert between narrow Prolog atoms and wide C strings, as I mistakenly thought. Instead, they work with wide Prolog atoms. In hindsight, it is not surprising.
2022-07-23Improve UpdateLayout and ResizeColumns.John Ankarström
This incidentally removes the need for the variable template introduced by 21e96c6. I'm sure it will be needed at some point, though.
2022-07-22Cache GetSystemMetrics values with variable template.John Ankarström
The variable template could be generalized like this: template <auto F, auto... A> const auto cache = F(A...); and instantiated like: cache<GetSystemMetrics, SM_CXVSCROLL> It would still be limited to constant function arguments, which usually isn't a problem for GetSystemMetrics, but might be for other functions.
2022-07-20Simplify UpdateLayout.John Ankarström
2022-07-20Simplify require, prefer.John Ankarström
2022-07-20Fix ANSI compatibility.John Ankarström
It's not very useful, but it's a fun exercise.
2022-07-20Fix bug in and rename throw_nil, warn_nil.John Ankarström
In warn_nil, the return value was undefined on exception -- I think. While informative, the names throw_nil and warn_nil don't work very well in conditionals: if (warn_nil<f>(...)) g(); sounds like g should be called if f returns nil and a warning is issued. But it is actually the other way around; g is called if f is successful. if (prefer<f>(...)) g(); sounds less like that.
2022-07-19Check Windows API calls for errors more consistently.John Ankarström
Some of the checks are likely redundant, but the Windows API documentation rarely makes it clear WHICH errors may be returned (and under which circumstances) rather than simply WHETHER errors may be returned (under any circumstances, including those that do not apply in the given case).
2022-07-19Use static member function instead of friend function.John Ankarström