File indexing completed on 2024-05-05 16:27:56

0001 /* SPDX-FileCopyrightText: 2003-2010 Jesper K. Pedersen <blackie@kde.org>
0002 
0003    SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "CategoryPage.h"
0007 
0008 #include "BrowserWidget.h"
0009 #include "FlatCategoryModel.h"
0010 #include "ImageViewPage.h"
0011 #include "OverviewPage.h"
0012 #include "TreeCategoryModel.h"
0013 #include "enums.h"
0014 
0015 #include <DB/ImageDB.h>
0016 
0017 #include <KLocalizedString>
0018 
0019 Browser::CategoryPage::CategoryPage(const DB::CategoryPtr &category, const DB::ImageSearchInfo &info, BrowserWidget *browser)
0020     : BrowserPage(info, browser)
0021     , m_category(category)
0022     , m_model(nullptr)
0023 {
0024 }
0025 
0026 void Browser::CategoryPage::activate()
0027 {
0028     delete m_model;
0029     if (m_category->viewType() == DB::Category::TreeView || m_category->viewType() == DB::Category::ThumbedTreeView)
0030         m_model = new TreeCategoryModel(m_category, searchInfo());
0031     else
0032         m_model = new FlatCategoryModel(m_category, searchInfo());
0033 
0034     browser()->setModel(m_model);
0035 }
0036 
0037 Browser::BrowserPage *Browser::CategoryPage::activateChild(const QModelIndex &index)
0038 {
0039     const QString name = m_model->data(index, ItemNameRole).value<QString>();
0040     DB::ImageSearchInfo info = searchInfo();
0041 
0042     info.addAnd(m_category->name(), name);
0043     if (DB::ImageDB::instance()->search(info).size() <= Settings::SettingsData::instance()->autoShowThumbnailView()) {
0044         browser()->addAction(new Browser::OverviewPage(Breadcrumb(name), info, browser()));
0045         return new ImageViewPage(info, browser());
0046     } else
0047         return new Browser::OverviewPage(Breadcrumb(name), info, browser());
0048 }
0049 
0050 DB::CategoryPtr Browser::CategoryPage::category() const
0051 {
0052     return m_category;
0053 }
0054 
0055 DB::Category::ViewType Browser::CategoryPage::viewType() const
0056 {
0057     return m_category->viewType();
0058 }
0059 
0060 bool Browser::CategoryPage::isViewChangeable() const
0061 {
0062     return true;
0063 }
0064 
0065 // vi:expandtab:tabstop=4 shiftwidth=4: