|
|
|
@ -95,7 +95,7 @@ auto FileIterator::iterate(bool show_hidden) -> bool { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FileIteratorSorted::FileIteratorSorted(std::string filepath, bool showHidden) |
|
|
|
|
: files_(), offset_(-1) { |
|
|
|
|
: offset_(-1) { |
|
|
|
|
|
|
|
|
|
FileIterator iter(filepath, showHidden); |
|
|
|
|
|
|
|
|
@ -103,7 +103,6 @@ FileIteratorSorted::FileIteratorSorted(std::string filepath, bool showHidden) |
|
|
|
|
iter.next(); |
|
|
|
|
std::optional<FileEntry> res = iter.value(); |
|
|
|
|
if (res) { |
|
|
|
|
auto file = *res; |
|
|
|
|
files_.push_back(*res); |
|
|
|
|
} else { |
|
|
|
|
break; |
|
|
|
@ -112,8 +111,19 @@ FileIteratorSorted::FileIteratorSorted(std::string filepath, bool showHidden) |
|
|
|
|
|
|
|
|
|
std::sort(files_.begin(), files_.end(), |
|
|
|
|
[](const auto& lhs, const auto& rhs) { |
|
|
|
|
if (lhs.isDirectory > rhs.isDirectory) { |
|
|
|
|
return true; |
|
|
|
|
} else if (lhs.isDirectory < rhs.isDirectory) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return lhs.name < rhs.name; |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// reindex the files
|
|
|
|
|
for(size_t i = 0; i != files_.size(); i++) { |
|
|
|
|
files_[i].index = i + 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
FileIteratorSorted::~FileIteratorSorted() { |
|
|
|
@ -127,15 +137,18 @@ auto FileIteratorSorted::value() const -> const std::optional<FileEntry> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
auto FileIteratorSorted::next() -> void { |
|
|
|
|
if (offset_ < files_.size()) { |
|
|
|
|
if (offset_ < (int) files_.size()) { |
|
|
|
|
offset_++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
auto FileIteratorSorted::prev() -> void { |
|
|
|
|
if (offset_ >= 0) { |
|
|
|
|
offset_--; |
|
|
|
|
if (offset_ <= 0) { |
|
|
|
|
offset_ = -1; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
offset_--; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|