BasicColors: add `noexcept`
[ncmpc-debian.git] / src / TextPage.hxx
index 9df8497..6310047 100644 (file)
@@ -1,5 +1,5 @@
 /* ncmpc (Ncurses MPD Client)
- * (c) 2004-2018 The Music Player Daemon Project
+ * (c) 2004-2019 The Music Player Daemon Project
  * Project homepage: http://musicpd.org
  *
  * This program is free software; you can redistribute it and/or modify
@@ -21,6 +21,7 @@
 #define TEXT_PAGE_HXX
 
 #include "ListPage.hxx"
+#include "ListText.hxx"
 
 #include <vector>
 #include <string>
 struct mpdclient;
 class ScreenManager;
 
-class TextPage : public ListPage {
+class TextPage : public ListPage, ListText {
 protected:
        ScreenManager &screen;
 
+       /**
+        * Strings are UTF-8.
+        */
        std::vector<std::string> lines;
 
 public:
        TextPage(ScreenManager &_screen,
-                WINDOW *w, Size size)
+                WINDOW *w, Size size) noexcept
                :ListPage(w, size), screen(_screen) {
-               lw.hide_cursor = true;
+               lw.DisableCursor();
        }
 
 protected:
-       bool IsEmpty() const {
+       bool IsEmpty() const noexcept {
                return lines.empty();
        }
 
-       void Clear();
+       void Clear() noexcept;
 
-       void Append(const char *str);
+       /**
+        * @param str a UTF-8 string
+        */
+       void Append(const char *str) noexcept;
 
-       void Set(const char *str) {
+       /**
+        * @param str a UTF-8 string
+        */
+       void Set(const char *str) noexcept {
                Clear();
                Append(str);
        }
@@ -58,26 +68,20 @@ protected:
        /**
         * Repaint and update the screen.
         */
-       void Repaint() {
+       void Repaint() noexcept {
                Paint();
-               wrefresh(lw.w);
-       }
-
-private:
-       const char *ListCallback(unsigned idx) const;
-
-       static const char *ListCallback(unsigned idx, void *data) {
-               const auto &p = *(const TextPage *)data;
-               return p.ListCallback(idx);
+               lw.Refresh();
        }
 
 public:
        /* virtual methods from class Page */
-       void Paint() const override {
-               lw.Paint(ListCallback, const_cast<TextPage *>(this));
-       }
+       void Paint() const noexcept override;
+       bool OnCommand(struct mpdclient &c, Command cmd) override;
 
-       bool OnCommand(struct mpdclient &c, command_t cmd) override;
+private:
+       /* virtual methods from class ListText */
+       const char *GetListItemText(char *buffer, size_t size,
+                                   unsigned i) const noexcept override;
 };
 
 #endif