Brings the Qt uploader to parity with the web /manage page and the Android
app. Adds a stacked Manage page (reached from the post page) that lists
posts via GET /api/photos with thumbnails from GET /api/thumb/<slug>, edits
caption/date/tags in a QDialog via POST /api/edit, and deletes to trash via
POST /api/delete with a QMessageBox confirm. As a non-browser client it sends
no Origin and so passes the server's same-origin CSRF check.
Tag autocomplete now backs every tags field (post cards and the edit dialog)
via a per-token TagCompleter (QCompleter subclass, MatchContains) fed from
the unguarded GET /api/tags.json.
New files: managepostwidget.{h,cpp}, tagcompleter.{h,cpp}; network methods
and a RemotePhoto struct added to uploadclient. Built and linked clean; not
yet runtime-tested on a real display.
45 lines
1.3 KiB
CMake
45 lines
1.3 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(photogallery_uploader LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
|
|
find_package(Qt6 REQUIRED COMPONENTS Widgets Network Concurrent)
|
|
find_package(Qt6Keychain REQUIRED)
|
|
|
|
add_executable(uploader
|
|
main.cpp
|
|
mainwindow.cpp
|
|
photoitemwidget.cpp
|
|
managepostwidget.cpp
|
|
tagcompleter.cpp
|
|
settings.cpp
|
|
uploadclient.cpp
|
|
imageprep.cpp
|
|
app.qrc
|
|
)
|
|
|
|
target_link_libraries(uploader PRIVATE
|
|
Qt6::Widgets
|
|
Qt6::Network
|
|
Qt6::Concurrent
|
|
Qt6Keychain::Qt6Keychain
|
|
)
|
|
|
|
# The binary is "photog" (matching the app + package), so `nix run` and the
|
|
# desktop entry find it; the CMake target stays "uploader".
|
|
set_target_properties(uploader PROPERTIES OUTPUT_NAME photog)
|
|
|
|
# Installation — the binary, a desktop entry, and the app icon in the hicolor
|
|
# theme, so `nix profile install ./desktop` puts "Photog" in the app menu.
|
|
include(GNUInstallDirs)
|
|
install(TARGETS uploader RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
install(FILES photog.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
|
foreach(sz 32 128 256 512)
|
|
install(FILES icons/app-${sz}.png
|
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/${sz}x${sz}/apps
|
|
RENAME photog.png)
|
|
endforeach()
|