1 /* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2009-03-25
7 * Description : Tree View for album models
8 *
9 * Copyright (C) 2009-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * Copyright (C) 2010-2011 by Andi Clemens <andi dot clemens at gmail dot com>
11 * Copyright (C) 2014 by Mohamed_Anwer <m_dot_anwer at gmx dot com>
12 * Copyright (C) 2014 by Michael G. Hansen <mike at mghansen dot de>
13 * Copyright (C) 2009-2021 by Gilles Caulier <caulier dot gilles at gmail dot com>
14 *
15 * This program is free software; you can redistribute it
16 * and/or modify it under the terms of the GNU General
17 * Public License as published by the Free Software Foundation;
18 * either version 2, or (at your option)
19 * any later version.
20 *
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * ============================================================ */
27
28 #include "searchtreeview.h"
29
30 // Local includes
31
32 #include "abstractalbumtreeview_p.h"
33
34 namespace Digikam
35 {
36
SearchTreeView(QWidget * const parent,Flags flags)37 SearchTreeView::SearchTreeView(QWidget* const parent, Flags flags)
38 : AbstractCheckableAlbumTreeView(parent, flags),
39 m_filteredModel (nullptr)
40 {
41 setRootIsDecorated(false);
42
43 if (flags & CreateDefaultModel)
44 {
45 setAlbumModel(new SearchModel(this));
46 }
47
48 if (flags & CreateDefaultFilterModel) // must set again!
49 {
50 setAlbumFilterModel(new SearchFilterModel(this), albumFilterModel());
51 }
52 }
53
~SearchTreeView()54 SearchTreeView::~SearchTreeView()
55 {
56 }
57
setAlbumModel(SearchModel * const model)58 void SearchTreeView::setAlbumModel(SearchModel* const model)
59 {
60 AbstractCheckableAlbumTreeView::setAlbumModel(model);
61
62 if (m_filteredModel)
63 {
64 m_filteredModel->setSourceSearchModel(model);
65 }
66 }
67
albumModel() const68 SearchModel* SearchTreeView::albumModel() const
69 {
70 return static_cast<SearchModel*>(m_albumModel);
71 }
72
setAlbumFilterModel(SearchFilterModel * const filteredModel,CheckableAlbumFilterModel * const filterModel)73 void SearchTreeView::setAlbumFilterModel(SearchFilterModel* const filteredModel, CheckableAlbumFilterModel* const filterModel)
74 {
75 m_filteredModel = filteredModel;
76 AbstractCheckableAlbumTreeView::setAlbumFilterModel(filterModel);
77
78 // hook in: source album model -> filtered model -> album filter model
79
80 albumFilterModel()->setSourceFilterModel(m_filteredModel);
81 }
82
filteredModel() const83 SearchFilterModel* SearchTreeView::filteredModel() const
84 {
85 return m_filteredModel;
86 }
87
currentAlbum() const88 SAlbum* SearchTreeView::currentAlbum() const
89 {
90 return dynamic_cast<SAlbum*> (m_albumFilterModel->albumForIndex(currentIndex()));
91 }
92
setCurrentAlbums(const QList<Album * > & albums,bool selectInAlbumManager)93 void SearchTreeView::setCurrentAlbums(const QList<Album*>& albums, bool selectInAlbumManager)
94 {
95 AbstractCheckableAlbumTreeView::setCurrentAlbums(albums, selectInAlbumManager);
96 }
97
setCurrentAlbum(int albumId,bool selectInAlbumManager)98 void SearchTreeView::setCurrentAlbum(int albumId, bool selectInAlbumManager)
99 {
100 SAlbum* const album = AlbumManager::instance()->findSAlbum(albumId);
101 setCurrentAlbums(QList<Album*>() << album, selectInAlbumManager);
102 }
103
104 } // namespace Digikam
105