1 /* ============================================================
2  *
3  * This file is a part of digiKam project
4  * https://www.digikam.org
5  *
6  * Date        : 2007-03-05
7  * Description : digiKam light table GUI
8  *
9  * Copyright (C) 2007-2021 by Gilles Caulier <caulier dot gilles at gmail dot com>
10  *
11  * This program is free software; you can redistribute it
12  * and/or modify it under the terms of the GNU General
13  * Public License as published by the Free Software Foundation;
14  * either version 2, or (at your option)
15  * any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU General Public License for more details.
21  *
22  * ============================================================ */
23 
24 #ifndef DIGIKAM_LIGHT_TABLE_WINDOW_PRIVATE_H
25 #define DIGIKAM_LIGHT_TABLE_WINDOW_PRIVATE_H
26 
27 #include "lighttablewindow.h"
28 
29 // Qt includes
30 
31 #include <QApplication>
32 #include <QFrame>
33 #include <QHBoxLayout>
34 #include <QVBoxLayout>
35 #include <QAction>
36 #include <QMenuBar>
37 #include <QStatusBar>
38 #include <QMenu>
39 #include <QSplitter>
40 
41 // KDE includes
42 
43 #include <klocalizedstring.h>
44 #include <kactioncollection.h>
45 #include <kconfiggroup.h>
46 #include <ksharedconfig.h>
47 
48 // Local includes
49 
50 #include "digikam_globals.h"
51 #include "itempropertiessidebardb.h"
52 #include "statusprogressbar.h"
53 #include "dzoombar.h"
54 #include "lighttableview.h"
55 #include "lighttablethumbbar.h"
56 #include "thumbbardock.h"
57 #include "drawdecoder.h"
58 #include "digikam_debug.h"
59 #include "componentsinfodlg.h"
60 #include "digikamapp.h"
61 #include "thememanager.h"
62 #include "dimg.h"
63 #include "dio.h"
64 #include "dmetadata.h"
65 #include "dfileoperations.h"
66 #include "metaenginesettings.h"
67 #include "applicationsettings.h"
68 #include "albummanager.h"
69 #include "loadingcacheinterface.h"
70 #include "deletedialog.h"
71 #include "iccsettings.h"
72 #include "imagewindow.h"
73 #include "itemdescedittab.h"
74 #include "setup.h"
75 #include "syncjob.h"
76 #include "lighttablepreview.h"
77 #include "albummodel.h"
78 #include "albumfiltermodel.h"
79 #include "coredbchangesets.h"
80 #include "collectionscanner.h"
81 #include "scancontroller.h"
82 #include "tagsactionmngr.h"
83 #include "thumbnailsize.h"
84 #include "thumbnailloadthread.h"
85 #include "dexpanderbox.h"
86 #include "dbinfoiface.h"
87 
88 namespace Digikam
89 {
90 
91 class DAdjustableLabel;
92 
93 class Q_DECL_HIDDEN LightTableWindow::Private
94 {
95 
96 public:
97 
Private()98     Private()
99       : autoLoadOnRightPanel        (true),
100         autoSyncPreview             (true),
101         fromLeftPreview             (true),
102         setItemLeftAction           (nullptr),
103         setItemRightAction          (nullptr),
104         clearListAction             (nullptr),
105         editItemAction              (nullptr),
106         removeItemAction            (nullptr),
107         fileDeleteAction            (nullptr),
108         fileDeleteFinalAction       (nullptr),
109         leftZoomPlusAction          (nullptr),
110         leftZoomMinusAction         (nullptr),
111         leftZoomTo100percents       (nullptr),
112         leftZoomFitToWindowAction   (nullptr),
113         rightZoomPlusAction         (nullptr),
114         rightZoomMinusAction        (nullptr),
115         rightZoomTo100percents      (nullptr),
116         rightZoomFitToWindowAction  (nullptr),
117         forwardAction               (nullptr),
118         backwardAction              (nullptr),
119         firstAction                 (nullptr),
120         lastAction                  (nullptr),
121         showBarAction               (nullptr),
122         viewCMViewAction            (nullptr),
123         syncPreviewAction           (nullptr),
124         navigateByPairAction        (nullptr),
125         clearOnCloseAction          (nullptr),
126         leftFileName                (nullptr),
127         rightFileName               (nullptr),
128         hSplitter                   (nullptr),
129         barViewDock                 (nullptr),
130         thumbView                   (nullptr),
131         previewView                 (nullptr),
132         leftZoomBar                 (nullptr),
133         rightZoomBar                (nullptr),
134         statusProgressBar           (nullptr),
135         leftSideBar                 (nullptr),
136         rightSideBar                (nullptr)
137     {
138     }
139 
addPageUpDownActions(LightTableWindow * const q,QWidget * const w)140     void addPageUpDownActions(LightTableWindow* const q, QWidget* const w)
141     {
142         defineShortcut(w, Qt::Key_Down,  q, SLOT(slotForward()));
143         defineShortcut(w, Qt::Key_Right, q, SLOT(slotForward()));
144         defineShortcut(w, Qt::Key_Up,    q, SLOT(slotBackward()));
145         defineShortcut(w, Qt::Key_Left,  q, SLOT(slotBackward()));
146     }
147 
148 public:
149 
150     bool                      autoLoadOnRightPanel;
151     bool                      autoSyncPreview;
152     bool                      fromLeftPreview;
153 
154     QAction*                  setItemLeftAction;
155     QAction*                  setItemRightAction;
156     QAction*                  clearListAction;
157     QAction*                  editItemAction;
158     QAction*                  removeItemAction;
159     QAction*                  fileDeleteAction;
160     QAction*                  fileDeleteFinalAction;
161     QAction*                  leftZoomPlusAction;
162     QAction*                  leftZoomMinusAction;
163     QAction*                  leftZoomTo100percents;
164     QAction*                  leftZoomFitToWindowAction;
165     QAction*                  rightZoomPlusAction;
166     QAction*                  rightZoomMinusAction;
167     QAction*                  rightZoomTo100percents;
168     QAction*                  rightZoomFitToWindowAction;
169 
170     QAction*                  forwardAction;
171     QAction*                  backwardAction;
172     QAction*                  firstAction;
173     QAction*                  lastAction;
174 
175     QAction*                  showBarAction;
176     QAction*                  viewCMViewAction;
177     QAction*                  syncPreviewAction;
178     QAction*                  navigateByPairAction;
179     QAction*                  clearOnCloseAction;
180 
181     DAdjustableLabel*         leftFileName;
182     DAdjustableLabel*         rightFileName;
183 
184     SidebarSplitter*          hSplitter;
185     ThumbBarDock*             barViewDock;
186 
187     LightTableThumbBar*       thumbView;
188 
189     LightTableView*           previewView;
190 
191     DZoomBar*                 leftZoomBar;
192     DZoomBar*                 rightZoomBar;
193 
194     StatusProgressBar*        statusProgressBar;
195 
196     ItemPropertiesSideBarDB*  leftSideBar;
197     ItemPropertiesSideBarDB*  rightSideBar;
198 };
199 
200 } // namespace Digikam
201 
202 #endif // DIGIKAM_LIGHT_TABLE_WINDOW_PRIVATE_H
203