commit 5e1430bb8c675fb1358e8a3dd9d92e1fee9dad49
parent 7ec8511215316630b263a09de29fbddabc223398
Author: cfillion <cfillion@users.noreply.github.com>
Date: Mon, 17 Jul 2017 22:03:19 -0400
browser: refactoring – extract sort callbacks
Diffstat:
2 files changed, 38 insertions(+), 32 deletions(-)
diff --git a/src/browser.cpp b/src/browser.cpp
@@ -93,40 +93,10 @@ void Browser::onInit()
m_list->onContextMenu(bind(&Browser::fillContextMenu,
this, placeholders::_1, placeholders::_2));
+ m_list->setSortCallback(3, bind(&Browser::sortByVersion, this, _1, _2));
+ m_list->setSortCallback(7, bind(&Browser::sortByLastUpdate, this, _1, _2));
m_list->sortByColumn(1);
- m_list->setSortCallback(3 /* version */, [&] (const int ai, const int bi) {
- const Entry &a = m_entries[m_visibleEntries[ai]];
- const Entry &b = m_entries[m_visibleEntries[bi]];
-
- const VersionName *l = nullptr;
- const VersionName *r = nullptr;
-
- if(a.test(InstalledFlag))
- l = &a.regEntry.version;
- else
- l = &a.latest->name();
-
- if(b.test(InstalledFlag))
- r = &b.regEntry.version;
- else
- r = &b.latest->name();
-
- return l->compare(*r);
- });
-
- m_list->setSortCallback(7 /* last update */, [&] (const int ai, const int bi) {
- const Entry &a = m_entries[m_visibleEntries[ai]];
- const Entry &b = m_entries[m_visibleEntries[bi]];
-
- if(!a.latest)
- return -1;
- else if(!b.latest)
- return 1;
-
- return a.latest->time().compare(b.latest->time());
- });
-
Dialog::onInit();
setMinimumSize({600, 250});
@@ -297,6 +267,40 @@ void Browser::onSelection()
startTimer(100, TIMER_ABOUT);
}
+int Browser::sortByVersion(const int ai, const int bi) const
+{
+ const Entry &a = m_entries[m_visibleEntries[ai]];
+ const Entry &b = m_entries[m_visibleEntries[bi]];
+
+ const VersionName *l = nullptr;
+ const VersionName *r = nullptr;
+
+ if(a.test(InstalledFlag))
+ l = &a.regEntry.version;
+ else
+ l = &a.latest->name();
+
+ if(b.test(InstalledFlag))
+ r = &b.regEntry.version;
+ else
+ r = &b.latest->name();
+
+ return l->compare(*r);
+}
+
+int Browser::sortByLastUpdate(const int ai, const int bi) const
+{
+ const Entry &a = m_entries[m_visibleEntries[ai]];
+ const Entry &b = m_entries[m_visibleEntries[bi]];
+
+ if(!a.latest)
+ return -1;
+ else if(!b.latest)
+ return 1;
+
+ return a.latest->time().compare(b.latest->time());
+}
+
bool Browser::fillContextMenu(Menu &menu, const int index)
{
m_currentIndex = index;
diff --git a/src/browser.hpp b/src/browser.hpp
@@ -111,6 +111,8 @@ private:
Entry makeEntry(const Package *, const Registry::Entry &, const IndexPtr &) const;
void onSelection();
+ int sortByVersion(int l, int r) const;
+ int sortByLastUpdate(int l, int r) const;
bool fillContextMenu(Menu &, int index);
void populate(const std::vector<IndexPtr> &);
void transferActions();