mirror of
https://github.com/kiwix/kiwix-desktop.git
synced 2025-09-22 19:46:12 -04:00
Add a filtering by Category.
Categories are static for now.
This commit is contained in:
parent
8ab7ee70bf
commit
ceab9780a4
@ -214,16 +214,19 @@ QTabBar::close-button {
|
||||
show-decoration-selected: 0;
|
||||
}
|
||||
|
||||
#categorySelector QScrollBar,
|
||||
#languageSelector QScrollBar {
|
||||
width: 5px;
|
||||
border: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#categorySelector QScrollBar::handle,
|
||||
#languageSelector QScrollBar::handle {
|
||||
background-color: grey;
|
||||
}
|
||||
|
||||
#categorySelector::item:selected,
|
||||
#languageSelector::item:selected {
|
||||
background-color: white;
|
||||
color: black;
|
||||
|
@ -215,6 +215,12 @@ void ContentManager::setCurrentLanguage(QString language)
|
||||
emit(remoteParamsChanged());
|
||||
}
|
||||
|
||||
void ContentManager::setCurrentCategoryFilter(QString category)
|
||||
{
|
||||
m_categoryFilter = category.toLower();
|
||||
emit(remoteParamsChanged());
|
||||
}
|
||||
|
||||
#define CATALOG_HOST "library.kiwix.org"
|
||||
#define CATALOG_PORT 80
|
||||
#define CATALOG_URL "library.kiwix.org"
|
||||
@ -224,6 +230,9 @@ void ContentManager::updateRemoteLibrary() {
|
||||
query.addQueryItem("lang", m_currentLanguage);
|
||||
}
|
||||
query.addQueryItem("count", QString::number(0));
|
||||
if (m_categoryFilter != "all") {
|
||||
query.addQueryItem("tag", m_categoryFilter);
|
||||
}
|
||||
QUrl url;
|
||||
url.setScheme("http");
|
||||
url.setHost(CATALOG_HOST);
|
||||
|
@ -23,6 +23,8 @@ public:
|
||||
void setLocal(bool local);
|
||||
QStringList getDownloadIds();
|
||||
void setCurrentLanguage(QString language);
|
||||
void setCurrentCategoryFilter(QString category);
|
||||
|
||||
private:
|
||||
Library* mp_library;
|
||||
kiwix::Library m_remoteLibrary;
|
||||
@ -31,6 +33,7 @@ private:
|
||||
bool m_local = true;
|
||||
QString m_currentLanguage;
|
||||
QString m_searchQuery;
|
||||
QString m_categoryFilter = "all";
|
||||
|
||||
|
||||
QStringList getBookIds();
|
||||
|
@ -21,10 +21,15 @@ ContentManagerSide::ContentManagerSide(QWidget *parent) :
|
||||
this, [=](bool checked) { mp_ui->localFileButton->setStyleSheet(
|
||||
checked ?"*{font-weight: bold}" : "");});
|
||||
mp_ui->localFileButton->setStyleSheet("*{font-weight: bold}");
|
||||
|
||||
mp_languageButton = mp_ui->languageButton;
|
||||
mp_languageSelector = mp_ui->languageSelector;
|
||||
connect(mp_languageButton, &QCheckBox::toggled, this, [=](bool checked) { mp_languageSelector->setHidden(!checked); });
|
||||
mp_languageSelector->setHidden(true);
|
||||
mp_categoryButton = mp_ui->categoryButton;
|
||||
mp_categorySelector = mp_ui->categorySelector;
|
||||
connect(mp_categoryButton, &QCheckBox::toggled, this, [=](bool checked) { mp_categorySelector->setHidden(!checked); });
|
||||
mp_categorySelector->setHidden(true);
|
||||
|
||||
|
||||
for (auto lang:
|
||||
@ -198,12 +203,43 @@ ContentManagerSide::ContentManagerSide(QWidget *parent) :
|
||||
}
|
||||
}
|
||||
|
||||
for (auto category: {
|
||||
"All",
|
||||
"Gutenberg",
|
||||
"Other",
|
||||
"Phet",
|
||||
"Psiram",
|
||||
"Stack_exchange",
|
||||
"Ted",
|
||||
"Vikidia",
|
||||
"Wikibooks",
|
||||
"Wikinews",
|
||||
"Wikipedia",
|
||||
"Wikiquote",
|
||||
"Wikisource",
|
||||
"Wikispecies",
|
||||
"Wikiversity",
|
||||
"Wikivoyage",
|
||||
"Wiktionary"
|
||||
})
|
||||
{
|
||||
auto c = QString(category);
|
||||
auto item = new KListWidgetItem(c);
|
||||
mp_categorySelector->addItem(item);
|
||||
if (c == "All")
|
||||
{
|
||||
item->setSelected(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ContentManagerSide::~ContentManagerSide()
|
||||
{
|
||||
delete mp_ui;
|
||||
}
|
||||
|
||||
|
||||
void ContentManagerSide::setContentManager(ContentManager *contentManager)
|
||||
{
|
||||
mp_contentManager = contentManager;
|
||||
@ -217,5 +253,13 @@ void ContentManagerSide::setContentManager(ContentManager *contentManager)
|
||||
return;
|
||||
}
|
||||
auto locale = QLocale(QLocale::Language(item->data(Qt::UserRole).toInt()));
|
||||
mp_contentManager->setCurrentLanguage(locale.name().split("_").at(0));});
|
||||
mp_contentManager->setCurrentLanguage(locale.name().split("_").at(0));
|
||||
});
|
||||
connect(mp_categorySelector, &QListWidget::itemSelectionChanged,
|
||||
this, [=]() {
|
||||
auto item = mp_categorySelector->selectedItems().at(0);
|
||||
if (!item) return;
|
||||
auto category = item->text();
|
||||
mp_contentManager->setCurrentCategoryFilter(category);
|
||||
});
|
||||
}
|
||||
|
@ -25,6 +25,8 @@ private:
|
||||
ContentManager* mp_contentManager;
|
||||
QCheckBox* mp_languageButton;
|
||||
QListWidget* mp_languageSelector;
|
||||
QCheckBox* mp_categoryButton;
|
||||
QListWidget* mp_categorySelector;
|
||||
};
|
||||
|
||||
#endif // CONTENTMANAGERSIDE_H
|
||||
|
@ -43,7 +43,7 @@
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,0,0,0,0,1">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,0,0,0,0,0,1">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
@ -94,9 +94,6 @@
|
||||
<verstretch>1</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="cursor" stdset="0">
|
||||
<cursorShape>ArrowCursor</cursorShape>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
@ -115,24 +112,43 @@
|
||||
<property name="sizeAdjustPolicy">
|
||||
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectItems</enum>
|
||||
</property>
|
||||
<property name="verticalScrollMode">
|
||||
<enum>QAbstractItemView::ScrollPerPixel</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="categoryButton">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Browse By Category</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListWidget" name="categorySelector">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>1</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="horizontalScrollBarPolicy">
|
||||
<enum>Qt::ScrollBarAlwaysOff</enum>
|
||||
</property>
|
||||
<property name="sizeAdjustPolicy">
|
||||
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="contentTypeButton">
|
||||
<property name="enabled">
|
||||
|
@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>836</width>
|
||||
<height>519</height>
|
||||
<width>1024</width>
|
||||
<height>576</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
Loading…
x
Reference in New Issue
Block a user