Add option to auto hide zero status filters
[qBittorrent.git] / src / gui / CMakeLists.txt
blob52657d84ac905498fd1ad0d3e1e6ea2a09236aa3
1 if (QT6)
2     find_package(Qt6 ${minQt6Version} REQUIRED COMPONENTS Widgets Svg)
3 else()
4     find_package(Qt5 ${minQt5Version} REQUIRED COMPONENTS Widgets Svg)
5     if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
6         find_package(Qt5 ${minQt5Version} REQUIRED COMPONENTS WinExtras)
7     endif()
8 endif()
10 # CMAKE_AUTO_UI causes unnecessary rebuilds
11 qt_wrap_ui(UI_HEADERS
12     aboutdialog.ui
13     addnewtorrentdialog.ui
14     autoexpandabledialog.ui
15     banlistoptionsdialog.ui
16     cookiesdialog.ui
17     deletionconfirmationdialog.ui
18     downloadfromurldialog.ui
19     executionlogwidget.ui
20     ipsubnetwhitelistoptionsdialog.ui
21     mainwindow.ui
22     optionsdialog.ui
23     previewselectdialog.ui
24     properties/peersadditiondialog.ui
25     properties/propertieswidget.ui
26     properties/trackersadditiondialog.ui
27     rss/automatedrssdownloader.ui
28     rss/rsswidget.ui
29     search/pluginselectdialog.ui
30     search/pluginsourcedialog.ui
31     search/searchjobwidget.ui
32     search/searchwidget.ui
33     shutdownconfirmdialog.ui
34     speedlimitdialog.ui
35     statsdialog.ui
36     torrentcategorydialog.ui
37     torrentcreatordialog.ui
38     torrentoptionsdialog.ui
39     torrenttagsdialog.ui
40     trackerentriesdialog.ui
41     uithemedialog.ui
42     watchedfolderoptionsdialog.ui
45 add_library(qbt_gui STATIC
46     # headers
47     aboutdialog.h
48     addnewtorrentdialog.h
49     advancedsettings.h
50     autoexpandabledialog.h
51     banlistoptionsdialog.h
52     color.h
53     cookiesdialog.h
54     cookiesmodel.h
55     deletionconfirmationdialog.h
56     desktopintegration.h
57     downloadfromurldialog.h
58     executionlogwidget.h
59     flowlayout.h
60     fspathedit.h
61     fspathedit_p.h
62     guiapplicationcomponent.h
63     hidabletabwidget.h
64     interfaces/iguiapplication.h
65     ipsubnetwhitelistoptionsdialog.h
66     lineedit.h
67     log/logfiltermodel.h
68     log/loglistview.h
69     log/logmodel.h
70     mainwindow.h
71     optionsdialog.h
72     powermanagement/powermanagement.h
73     previewlistdelegate.h
74     previewselectdialog.h
75     progressbarpainter.h
76     properties/downloadedpiecesbar.h
77     properties/peerlistsortmodel.h
78     properties/peerlistwidget.h
79     properties/peersadditiondialog.h
80     properties/pieceavailabilitybar.h
81     properties/piecesbar.h
82     properties/propertieswidget.h
83     properties/proptabbar.h
84     properties/speedplotview.h
85     properties/speedwidget.h
86     properties/trackerlistwidget.h
87     properties/trackersadditiondialog.h
88     raisedmessagebox.h
89     rss/articlelistwidget.h
90     rss/automatedrssdownloader.h
91     rss/feedlistwidget.h
92     rss/htmlbrowser.h
93     rss/rsswidget.h
94     search/pluginselectdialog.h
95     search/pluginsourcedialog.h
96     search/searchjobwidget.h
97     search/searchsortmodel.h
98     search/searchwidget.h
99     shutdownconfirmdialog.h
100     speedlimitdialog.h
101     statsdialog.h
102     statusbar.h
103     torrentcategorydialog.h
104     torrentcontentfiltermodel.h
105     torrentcontentitemdelegate.h
106     torrentcontentmodel.h
107     torrentcontentmodelfile.h
108     torrentcontentmodelfolder.h
109     torrentcontentmodelitem.h
110     torrentcontentwidget.h
111     torrentcreatordialog.h
112     torrentoptionsdialog.h
113     torrenttagsdialog.h
114     trackerentriesdialog.h
115     transferlistdelegate.h
116     transferlistfilters/basefilterwidget.h
117     transferlistfilters/categoryfiltermodel.h
118     transferlistfilters/categoryfilterproxymodel.h
119     transferlistfilters/categoryfilterwidget.h
120     transferlistfilters/statusfilterwidget.h
121     transferlistfilters/tagfiltermodel.h
122     transferlistfilters/tagfilterproxymodel.h
123     transferlistfilters/tagfilterwidget.h
124     transferlistfilters/trackersfilterwidget.h
125     transferlistfilterswidget.h
126     transferlistmodel.h
127     transferlistsortmodel.h
128     transferlistwidget.h
129     tristateaction.h
130     tristatewidget.h
131     uithemecommon.h
132     uithemedialog.h
133     uithememanager.h
134     uithemesource.h
135     utils.h
136     watchedfolderoptionsdialog.h
137     watchedfoldersmodel.h
138     windowstate.h
140     # sources
141     aboutdialog.cpp
142     addnewtorrentdialog.cpp
143     advancedsettings.cpp
144     autoexpandabledialog.cpp
145     banlistoptionsdialog.cpp
146     cookiesdialog.cpp
147     cookiesmodel.cpp
148     deletionconfirmationdialog.cpp
149     desktopintegration.cpp
150     downloadfromurldialog.cpp
151     executionlogwidget.cpp
152     flowlayout.cpp
153     fspathedit.cpp
154     fspathedit_p.cpp
155     guiapplicationcomponent.cpp
156     hidabletabwidget.cpp
157     ipsubnetwhitelistoptionsdialog.cpp
158     lineedit.cpp
159     log/logfiltermodel.cpp
160     log/loglistview.cpp
161     log/logmodel.cpp
162     mainwindow.cpp
163     optionsdialog.cpp
164     powermanagement/powermanagement.cpp
165     previewlistdelegate.cpp
166     previewselectdialog.cpp
167     progressbarpainter.cpp
168     properties/downloadedpiecesbar.cpp
169     properties/peerlistsortmodel.cpp
170     properties/peerlistwidget.cpp
171     properties/peersadditiondialog.cpp
172     properties/pieceavailabilitybar.cpp
173     properties/piecesbar.cpp
174     properties/propertieswidget.cpp
175     properties/proptabbar.cpp
176     properties/speedplotview.cpp
177     properties/speedwidget.cpp
178     properties/trackerlistwidget.cpp
179     properties/trackersadditiondialog.cpp
180     raisedmessagebox.cpp
181     rss/articlelistwidget.cpp
182     rss/automatedrssdownloader.cpp
183     rss/feedlistwidget.cpp
184     rss/htmlbrowser.cpp
185     rss/rsswidget.cpp
186     search/pluginselectdialog.cpp
187     search/pluginsourcedialog.cpp
188     search/searchjobwidget.cpp
189     search/searchsortmodel.cpp
190     search/searchwidget.cpp
191     shutdownconfirmdialog.cpp
192     speedlimitdialog.cpp
193     statsdialog.cpp
194     statusbar.cpp
195     torrentcategorydialog.cpp
196     torrentcontentfiltermodel.cpp
197     torrentcontentitemdelegate.cpp
198     torrentcontentmodel.cpp
199     torrentcontentmodelfile.cpp
200     torrentcontentmodelfolder.cpp
201     torrentcontentmodelitem.cpp
202     torrentcontentwidget.cpp
203     torrentcreatordialog.cpp
204     torrentoptionsdialog.cpp
205     torrenttagsdialog.cpp
206     trackerentriesdialog.cpp
207     transferlistdelegate.cpp
208     transferlistfilters/basefilterwidget.cpp
209     transferlistfilters/categoryfiltermodel.cpp
210     transferlistfilters/categoryfilterproxymodel.cpp
211     transferlistfilters/categoryfilterwidget.cpp
212     transferlistfilters/statusfilterwidget.cpp
213     transferlistfilters/tagfiltermodel.cpp
214     transferlistfilters/tagfilterproxymodel.cpp
215     transferlistfilters/tagfilterwidget.cpp
216     transferlistfilters/trackersfilterwidget.cpp
217     transferlistfilterswidget.cpp
218     transferlistmodel.cpp
219     transferlistsortmodel.cpp
220     transferlistwidget.cpp
221     tristateaction.cpp
222     tristatewidget.cpp
223     uithemedialog.cpp
224     uithememanager.cpp
225     uithemesource.cpp
226     utils.cpp
227     watchedfolderoptionsdialog.cpp
228     watchedfoldersmodel.cpp
230     # generated .ui headers
231     ${UI_HEADERS}
234 target_sources(qbt_gui INTERFACE about.qrc)
236 # UI headers will be generated in ${CMAKE_CURRENT_BINARY_DIR}
237 target_include_directories(qbt_gui PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
239 target_link_libraries(qbt_gui
240     PRIVATE
241         qbt_base
242     PUBLIC
243         Qt::Gui Qt::Widgets
246 if (DBUS)
247     target_sources(qbt_gui PRIVATE
248         notifications/dbusnotifier.h
249         notifications/dbusnotifier.cpp
250         notifications/dbusnotificationsinterface.h
251         notifications/dbusnotificationsinterface.cpp
252         powermanagement/powermanagement_x11.h
253         powermanagement/powermanagement_x11.cpp
254     )
255 endif()
257 if (STACKTRACE)
258     qt_wrap_ui(STACKTRACE_UI_HEADERS stacktracedialog.ui)
260     target_sources(qbt_gui PRIVATE
261         stacktracedialog.h
262         stacktracedialog.cpp
263         ${STACKTRACE_UI_HEADERS}
264     )
265 endif()
267 if ((CMAKE_SYSTEM_NAME STREQUAL "Windows") OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin"))
268     target_sources(qbt_gui PRIVATE
269         programupdater.h
270         programupdater.cpp
271     )
272 endif()
274 if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
275     target_link_libraries(qbt_gui PRIVATE PowrProf)
276     if (NOT QT6)
277         target_link_libraries(qbt_gui PRIVATE Qt5::WinExtras)
278     endif()
279 endif()
281 if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
282     target_sources(qbt_gui PRIVATE
283         macutilities.h
284         macutilities.mm
285     )
286     target_link_libraries(qbt_gui PRIVATE objc)
287 endif()