1 /* ============================================================
2  *
3  * This file is a part of digiKam project
4  * https://www.digikam.org
5  *
6  * Date        : 20013-07-03
7  * Description : Tag Properties widget to display tag properties
8  *               when a tag or multiple tags are selected
9  *
10  * Copyright (C) 2013 by Veaceslav Munteanu <veaceslav dot munteanu90 at gmail dot com>
11  *
12  * This program is free software; you can redistribute it
13  * and/or modify it under the terms of the GNU General
14  * Public License as published by the Free Software Foundation;
15  * either version 2, or (at your option)
16  * any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU General Public License for more details.
22  *
23  * ============================================================ */
24 
25 #ifndef DIGIKAM_TAG_PROP_WIDGET_H
26 #define DIGIKAM_TAG_PROP_WIDGET_H
27 
28 // Qt includes
29 
30 #include <QWidget>
31 
32 // Local includes
33 
34 #include "digikam_config.h"
35 
36 namespace Digikam
37 {
38 
39 class Album;
40 
41 class TagPropWidget : public QWidget
42 {
43     Q_OBJECT
44 
45 public:
46 
47     enum ItemsEnable
48     {
49         DisabledAll,
50         EnabledAll,
51         IconOnly
52     };
53 
54 public:
55 
56     explicit TagPropWidget(QWidget* const parent);
57     ~TagPropWidget() override;
58 
59 Q_SIGNALS:
60 
61     void signalTitleEditReady();
62 
63 public Q_SLOTS:
64 
65     void slotSelectionChanged(const QList<Album*>& albums);
66     void slotFocusTitleEdit();
67 
68 private Q_SLOTS:
69 
70     void slotIconResetClicked();
71     void slotIconChanged();
72     void slotDataChanged();
73     void slotSaveChanges();
74     void slotDiscardChanges();
75     void slotReturnPressed();
76 
77 private:
78 
79     /**
80      * @brief enableItems - enable items based on selection.
81      *                      If no item is selected, disable all,
82      *                      if one item selected, enable all,
83      *                      if multiple selected, enable icon & icon button
84      */
85     void enableItems(ItemsEnable value);
86 
87 private:
88 
89     class Private;
90     Private* const d;
91 };
92 
93 } // namespace Digikam
94 
95 #endif // DIGIKAM_TAG_PROP_WIDGET_H
96