per page config param

This commit is contained in:
jorenchik
2024-10-27 13:26:45 +02:00
parent d2159d7f33
commit 95854dda5a
3 changed files with 53 additions and 38 deletions

View File

@@ -85,6 +85,7 @@ QVBoxLayout *hMdemScroll;
QSpacerItem *mdemSpacer;
ErrorView *errorView;
Pagination *pagination;
int perPage;
// Editor
QsciScintilla *editor;
@@ -189,15 +190,16 @@ std::string outputMdem(std::vector<Question*> questions, time_t time = 0) {
void makePages() {
pagination->pages.clear();
auto len = currentMdemBuffer->questions.size();
auto pageAmount = len / PER_PAGE;
if (len % PER_PAGE != 0) {
perPage = settings->value(SETTING_PER_PAGE).toInt();
auto pageAmount = len / perPage;
if (len % perPage != 0) {
pageAmount += 1;
}
for (size_t i = 0; i < pageAmount; i++) {
size_t startingIndex = PER_PAGE * i ;
size_t amount = PER_PAGE;
if (i == currentMdemBuffer->questions.size() / PER_PAGE) {
amount = currentMdemBuffer->questions.size() % PER_PAGE;
size_t startingIndex = perPage * i ;
size_t amount = perPage;
if (i == currentMdemBuffer->questions.size() / perPage) {
amount = currentMdemBuffer->questions.size() % perPage;
}
pagination->pages.push_back(
Page{startingIndex, startingIndex + amount}
@@ -420,12 +422,14 @@ void CreateMdems(std::vector<Question*>& questions) {
}
}
if (questions.size() > mdems.size()) {
auto amount = questions.size() - mdems.size();
for (size_t i = 0; i < amount; ++i) {
auto mdem = makeMdem();
mdems.push_back(mdem);
hMdemScroll->addWidget(&mdem->wMdem);
perPage = settings->value(SETTING_PER_PAGE).toInt();
if (perPage > mdems.size()) {
for (size_t i = mdems.size(); i < perPage; i++) {
if (i >= mdems.size()) {
auto mdem = makeMdem();
mdems.push_back(mdem);
hMdemScroll->addWidget(&mdem->wMdem);
}
}
}
@@ -462,7 +466,7 @@ void switchPage(int pageIdx) {
snprintf(buffer, sizeof(buffer), "Page: %d", pageIdx + 1);
pagination->paginationLabel.setText(buffer);
// Hide widgets in mdems
// Adjust mdem amount, hide widgets in mdems
for (auto& mdem : mdems) {
if (mdem->wBack.isVisible()) {
mdem->wBack.hide();
@@ -1042,6 +1046,7 @@ QMainWindow *initMdemListWindow() {
auto wPagination = new QWidget();
auto hPagination = new QHBoxLayout();
wPagination->setLayout(hPagination);
pagination->firstButton.setText(QString::fromStdString("<<"));
@@ -1062,7 +1067,8 @@ QMainWindow *initMdemListWindow() {
}
});
for (size_t i = 0; i < PER_PAGE; i++) {
perPage = settings->value(SETTING_PER_PAGE).toInt();
for (size_t i = 0; i < perPage; i++) {
auto elButton = new QToolButton();
elButton->setText(QString("%1").arg(i+1));
hPagination->addWidget(elButton);
@@ -1107,12 +1113,12 @@ QMainWindow *initMdemListWindow() {
});
};
addShortcut("Ctrl+S", []() {
saveMdem();
});
addShortcut("Ctrl+,", [settingsWindow]() {
settingsWindow->show();
});
addShortcut("Ctrl+S", [toolbar]() {
toolbar->btnSave.click();
});
addShortcut("Ctrl+P", [toolbar]() {
toolbar->btnPractice.click();
});