15#include <QApplication>
17#include <QFontMetrics>
22#include <QStandardItem>
23#include <QStandardItemModel>
24#include <QStringLiteral>
31#include "../../backend/config/btconfig.h"
32#include "../../backend/btinstallbackend.h"
33#include "../../util/btconnect.h"
41#pragma GCC diagnostic push
42#pragma GCC diagnostic ignored "-Wextra-semi"
43#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
45#include <installmgr.h>
48#pragma GCC diagnostic pop
72 m_model =
new QStandardItemModel(
this);
75 this, &QWizardPage::completeChanged);
79 setTitle(QApplication::translate(
"BookshelfWizard",
80 "Choose Remote Libraries"));
81 setSubTitle(QApplication::translate(
83 "Choose one or more remote libraries to install works from."));
95 QStringList saveSources;
97 saveSources <<
btConfig().
value<QStringList>(SourcesKey, QStringList{});
98 if (saveSources.empty())
99 saveSources << initialSelection;
114 for (
int row = 0; row <
m_model->rowCount(); ++row) {
115 QStandardItem *
const item =
m_model->item(row,0);
116 if (sources.contains(item->text()))
117 item->setCheckState(Qt::Checked);
126 auto const addButton = [
this](
int row,
int column,
127 QString
const & text,
bool const tag) {
128 QPushButton *
const button =
new QPushButton(text,
this);
129 button->setProperty(buttonPropertyName, tag);
134 QString
const removeText = tr(
"Remove");
135 for (
auto const & source : sourceList) {
136 auto *
const item =
new QStandardItem(source);
137 item->setCheckable(
true);
139 int const row =
m_model->rowCount() - 1;
140 QPushButton * button = addButton(row, 1, removeText, ButtonTagRemove);
145 m_model->appendRow(
new QStandardItem(tr(
"< Add new remote library >")));
146 int const row =
m_model->rowCount() - 1;
147 QString
const addText = tr(
"Add");
148 QPushButton *
const button = addButton(row, 1, addText, ButtonTagAdd);
153 m_sourcesTableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
160 qMax(fontMetrics.horizontalAdvance(removeText),
161 fontMetrics.horizontalAdvance(addText)) + 60);
165 for (
int row = 0; row <
m_model->rowCount(); ++row)
166 if (
m_model->item(row, 0)->checkState() == Qt::Checked)
173 for (
int row = 0; row <
m_model->rowCount(); ++row) {
174 QStandardItem *
const item =
m_model->item(row, 0);
175 if (item->checkState() == Qt::Checked)
176 sources << item->text();
182 QModelIndex
const index =
m_model->index(row, 1);
183 if (
static_cast<QPushButton *
>(
185 buttonPropertyName).toBool() == ButtonTagRemove)
187 if (QMessageBox::warning(
190 tr(
"Do you really want to delete this source?"),
191 QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
193 m_model->item(index.row(), 0)->text());
202 if (dlg.exec() != QDialog::Accepted)
209 sword::InstallSource newSource = dlg.
getSource();
210 if (*(newSource.type.c_str()) !=
'\0')
BtConfig & btConfig()
This is a shortchand for BtConfig::getInstance().
void initializeLanguages()
void slotButtonClicked(int row)
void selectSourcesInModel(QStringList const &sources)
QStandardItemModel * m_model
void initializePage() final override
BtBookshelfSourcesPage(QWidget *parent=nullptr)
void updateSourcesModel()
bool isComplete() const final override
QStringList selectedSources() const
QTableView * m_sourcesTableView
QVBoxLayout * m_verticalLayout
int nextId() const final override
BtBookshelfWizard & btWizard() const noexcept
BtBookshelfLanguagesPage & languagesPage() const noexcept
T value(QString const &key, T const &defaultValue=T()) const
Returns the settings value for the given global key.
bool wasRemoteListAdded()
sword::InstallSource getSource()
bool deleteSource(const QString &name)
bool addSource(sword::InstallSource &source)
QStringList sourceNameList()
QStringList const initialSelection
constexpr bool const ButtonTagRemove
char const buttonPropertyName[]
constexpr bool const ButtonTagAdd