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