aboutsummaryrefslogtreecommitdiff
path: root/brep/page
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-09-13 22:46:48 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-09-24 11:23:30 +0200
commit75825230abcc5f303a29f1f74b29c36e6140a064 (patch)
tree00083fcb5bc44706fdaf85153f2a115f70a5c8c3 /brep/page
parent7747dde9fa64fe0b5838d730a1d892f3f49d2d5d (diff)
Implement package details page
Diffstat (limited to 'brep/page')
-rw-r--r--brep/page52
1 files changed, 52 insertions, 0 deletions
diff --git a/brep/page b/brep/page
new file mode 100644
index 0000000..81b6da8
--- /dev/null
+++ b/brep/page
@@ -0,0 +1,52 @@
+// file : brep/page -*- C++ -*-
+// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+#ifndef BREP_PAGE
+#define BREP_PAGE
+
+#include <string>
+#include <cstddef> // size_t
+#include <functional>
+
+#include <xml/forward>
+
+namespace brep
+{
+ // Page common building blocks.
+ //
+
+ // Generates paging element block.
+ //
+ class pager
+ {
+ public:
+ using get_url_type = std::function<std::string(std::size_t page)>;
+
+ pager (std::size_t current_page,
+ std::size_t item_count,
+ std::size_t item_per_page,
+ std::size_t page_number_count,
+ get_url_type get_url);
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ std::size_t current_page_;
+ std::size_t item_count_;
+ std::size_t item_per_page_;
+ std::size_t page_number_count_;
+ get_url_type get_url_;
+ };
+
+ // Default pager element block style.
+ //
+ struct pager_style
+ {
+ void
+ operator() (xml::serializer& s) const;
+ };
+}
+
+#endif // BREP_PAGE