Description row fits to content when screen size change

Already expanded description row will now adjust with respect to any window size changes to fit the content.
This commit is contained in:
ShaopengLin 2024-06-09 04:43:51 -04:00
parent ef7645ec67
commit fa2d42554d
4 changed files with 30 additions and 0 deletions

View File

@ -21,6 +21,7 @@ ContentManagerView::ContentManagerView(QWidget *parent)
connect(mp_ui->m_view, &QTreeView::clicked, this, &ContentManagerView::onClicked);
connect(mp_ui->m_view, &QTreeView::expanded, this, &ContentManagerView::onExpanded);
connect(this, &ContentManagerView::sizeHintChanged, managerDelegate, &QStyledItemDelegate::sizeHintChanged);
}
ContentManagerView::~ContentManagerView()
@ -56,3 +57,21 @@ void ContentManagerView::onExpanded(QModelIndex index)
if (!mp_ui->m_view->isFirstColumnSpanned(0, index))
mp_ui->m_view->setFirstColumnSpanned(0, index, true);
}
/**
* @brief Notify delegate to update size hint of the visible description rows.
*/
void ContentManagerView::updateSizeHint()
{
auto view = this->getView();
if (!view->isVisible())
return;
auto visibleIndex = view->indexAt(view->rect().topLeft());
while (visibleIndex.isValid())
{
if (isDescriptionIndex(visibleIndex))
emit sizeHintChanged(visibleIndex);
visibleIndex = view->indexBelow(visibleIndex);
}
}

View File

@ -22,6 +22,10 @@ public slots:
void showLoader(bool show);
void onClicked(QModelIndex index);
void onExpanded(QModelIndex index);
void updateSizeHint();
signals:
void sizeHintChanged(const QModelIndex& index);
private:
Ui::contentmanagerview *mp_ui;

View File

@ -125,6 +125,12 @@ void MainWindow::closeEvent(QCloseEvent *event)
QMainWindow::closeEvent(event);
}
void MainWindow::resizeEvent(QResizeEvent *event)
{
QMainWindow::resizeEvent(event);
KiwixApp::instance()->getContentManager()->getView()->updateSizeHint();
}
void MainWindow::readingListToggled(bool state)
{
if (state) {

View File

@ -29,6 +29,7 @@ public:
protected:
bool eventFilter(QObject* object, QEvent* event) override;
void closeEvent(QCloseEvent *event) override;
void resizeEvent(QResizeEvent *event) override;
private slots:
void toggleFullScreen();