1 /* ============================================================
2  *
3  * This file is a part of digiKam project
4  * https://www.digikam.org
5  *
6  * Date        : 2009-12-05
7  * Description : Side Bar Widget for the date folder view.
8  *
9  * Copyright (C) 2009-2010 by Johannes Wienke <languitar at semipol dot de>
10  * Copyright (C) 2010-2021 by Gilles Caulier <caulier dot gilles at gmail dot com>
11  * Copyright (C) 2012      by Andi Clemens <andi dot clemens at gmail dot com>
12  * Copyright (C) 2014      by Mohamed_Anwer <m_dot_anwer at gmx dot com>
13  * Copyright (C) 2010      by Aditya Bhatt <adityabhatt1991 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 "datefolderviewsidebarwidget.h"
29 
30 // Qt includes
31 
32 #include <QApplication>
33 #include <QStyle>
34 #include <QIcon>
35 
36 // KDE includes
37 
38 #include <kconfiggroup.h>
39 #include <klocalizedstring.h>
40 
41 // Local includes
42 
43 #include "digikam_debug.h"
44 #include "albumpointer.h"
45 #include "applicationsettings.h"
46 #include "datefolderview.h"
47 
48 namespace Digikam
49 {
50 
51 class Q_DECL_HIDDEN DateFolderViewSideBarWidget::Private
52 {
53 public:
54 
Private()55     explicit Private()
56       : dateFolderView(nullptr)
57     {
58     }
59 
60     DateFolderView* dateFolderView;
61 };
62 
DateFolderViewSideBarWidget(QWidget * const parent,DateAlbumModel * const model,ItemAlbumFilterModel * const imageFilterModel)63 DateFolderViewSideBarWidget::DateFolderViewSideBarWidget(QWidget* const parent,
64                                                          DateAlbumModel* const model,
65                                                          ItemAlbumFilterModel* const imageFilterModel)
66     : SidebarWidget(parent),
67       d            (new Private)
68 {
69     setObjectName(QLatin1String("DateFolderView Sidebar"));
70     setProperty("Shortcut", Qt::CTRL + Qt::SHIFT + Qt::Key_F4);
71 
72     const int spacing         = QApplication::style()->pixelMetric(QStyle::PM_DefaultLayoutSpacing);
73 
74     QVBoxLayout* const layout = new QVBoxLayout(this);
75 
76     d->dateFolderView         = new DateFolderView(this, model);
77     d->dateFolderView->setConfigGroup(getConfigGroup());
78     d->dateFolderView->setItemModel(imageFilterModel);
79 
80     layout->addWidget(d->dateFolderView);
81     layout->setContentsMargins(0, 0, spacing, 0);
82 }
83 
~DateFolderViewSideBarWidget()84 DateFolderViewSideBarWidget::~DateFolderViewSideBarWidget()
85 {
86     delete d;
87 }
88 
setActive(bool active)89 void DateFolderViewSideBarWidget::setActive(bool active)
90 {
91     d->dateFolderView->setActive(active);
92 }
93 
doLoadState()94 void DateFolderViewSideBarWidget::doLoadState()
95 {
96     d->dateFolderView->loadState();
97 }
98 
doSaveState()99 void DateFolderViewSideBarWidget::doSaveState()
100 {
101     d->dateFolderView->saveState();
102 }
103 
applySettings()104 void DateFolderViewSideBarWidget::applySettings()
105 {
106 }
107 
changeAlbumFromHistory(const QList<Album * > & album)108 void DateFolderViewSideBarWidget::changeAlbumFromHistory(const QList<Album*>& album)
109 {
110     d->dateFolderView->changeAlbumFromHistory(dynamic_cast<DAlbum*>(album.first()));
111 }
112 
currentAlbum() const113 AlbumPointer<DAlbum> DateFolderViewSideBarWidget::currentAlbum() const
114 {
115     return d->dateFolderView->currentAlbum();
116 }
117 
gotoDate(const QDate & date)118 void DateFolderViewSideBarWidget::gotoDate(const QDate& date)
119 {
120     d->dateFolderView->gotoDate(date);
121 }
122 
getIcon()123 const QIcon DateFolderViewSideBarWidget::getIcon()
124 {
125     return QIcon::fromTheme(QLatin1String("view-calendar-list"));
126 }
127 
getCaption()128 const QString DateFolderViewSideBarWidget::getCaption()
129 {
130     return i18n("Dates");
131 }
132 
133 } // namespace Digikam
134