Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
cmake_minimum_required(VERSION 3.21)

set(QNAPI_VERSION "0.4.0")
if(EXISTS "${CMAKE_SOURCE_DIR}/debian/control")
file(STRINGS "${CMAKE_SOURCE_DIR}/debian/control" _debian_version_line
REGEX "^Version:[ \t]*")
if(_debian_version_line)
string(REGEX REPLACE "^Version:[ \t]*([0-9]+\\.[0-9]+\\.[0-9]+).*$" "\\1"
QNAPI_VERSION "${_debian_version_line}")
endif()
endif()

project(qnapi VERSION ${QNAPI_VERSION} LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

option(QNAPI_BUILD_GUI "Build GUI app" ON)
option(QNAPI_BUILD_CLI "Build CLI app" ON)

find_package(Qt6 REQUIRED COMPONENTS Core Network Xml)

add_subdirectory(libqnapi)

if(QNAPI_BUILD_CLI)
add_subdirectory(cli)
endif()

if(QNAPI_BUILD_GUI)
add_subdirectory(gui)
endif()
18 changes: 18 additions & 0 deletions cli/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
find_package(Qt6 REQUIRED COMPONENTS Core Network Xml)

set(CLI_SOURCES
src/main.cpp
src/clisubtitlesdownloader.cpp
src/climain.cpp
res/resources.qrc)

add_executable(qnapic ${CLI_SOURCES})

target_include_directories(qnapic PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/src")

target_link_libraries(qnapic PRIVATE
qnapi::libqnapi
Qt6::Core
Qt6::Network
Qt6::Xml)
10 changes: 9 additions & 1 deletion debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
qnapi (0.4.0-1) unstable; urgency=medium

* Przejście projektu na Qt6.
* Dodanie systemu budowania CMake (obok dotychczasowego układu źródeł).
* Migracja kodu pod nowsze API Qt (QRegularExpression, QRandomGenerator,
QStringConverter, itp.).

-- mskpluk <mskpluk@users.noreply.github.com> Sun, 19 Apr 2026 12:00:00 +0000

qnapi (0.3.2-1) unstable; urgency=medium

* Merge desktop notifications improvements:
Expand Down Expand Up @@ -37,4 +46,3 @@ qnapi (0.2.2-1) xenial; urgency=medium
* Initial release

-- Piotr Krzemiński <pio.krzeminski@gmail.com> Wed, 05 Nov 2016 16:56:00 +0100

5 changes: 3 additions & 2 deletions debian/control
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
Package: qnapi
Version: 0.3.2
Version: 0.4.0
Section: video
Priority: optional
Architecture: amd64
Installed-Size: 1300
Depends: libc6 (>= 2.17), libgcc1 (>= 1:3.0), libqt5core5a (>= 5.5.0), libqt5gui5 (>= 5.0.2), libqt5network5 (>= 5.0.2), libqt5widgets5 (>= 5.0.2), libqt5xml5 (>= 5.0.2), libstdc++6 (>= 5.2), libmediainfo0v5 (>= 0.7.52), libzen0v5 (>= 0.4.31), p7zip-full, xdg-utils
Depends: libc6 (>= 2.17), libgcc1 (>= 1:3.0), libqt6core6 (>= 6.2.0), libqt6gui6 (>= 6.2.0), libqt6network6 (>= 6.2.0), libqt6widgets6 (>= 6.2.0), libqt6xml6 (>= 6.2.0), libstdc++6 (>= 5.2), libmediainfo0v5 (>= 0.7.52), libzen0v5 (>= 0.4.31), p7zip-full, xdg-utils
Maintainer: mskpluk mskpluk <mskpluk@users.noreply.github.com>
Homepage: https://github.com/mskpluk/qnapi
Description: Automatyczne pobieranie napisów do filmów
Expand All @@ -18,6 +18,7 @@ Description: Automatyczne pobieranie napisów do filmów
.
* Poprawione przetwarzanie napisów w formacie UTF-16 LE
* Dodana obsługa linków napiprojekt: (URI scheme handler)
* Przejście na Qt6 i migracja builda na CMake
.
Powyższe zmiany zostały zaimplementowane z wykorzystaniem AI
(Claude Sonnet 4.5 by Anthropic).
Expand Down
56 changes: 56 additions & 0 deletions gui/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
find_package(Qt6 REQUIRED COMPONENTS Core Network Xml Gui Widgets)

if(UNIX AND NOT APPLE)
find_package(Qt6 REQUIRED COMPONENTS DBus)
endif()

file(GLOB_RECURSE GUI_SOURCES CONFIGURE_DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")

set(GUI_FORMS
ui/frmprogress.ui
ui/frmlistsubtitles.ui
ui/frmsummary.ui
ui/frmscan.ui
ui/frmoptions.ui
ui/frmabout.ui
ui/frmconvert.ui
ui/subDataWidget.ui
ui/napiprojekt/frmnapiprojektconfig.ui
ui/opensubtitles/frmopensubtitlesconfig.ui
ui/napisy24/frmnapisy24config.ui)

set(GUI_RESOURCES res/resources.qrc)

if(WIN32)
list(REMOVE_ITEM GUI_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/src/qcumber/qinterprocesschannel.cpp")
else()
list(REMOVE_ITEM GUI_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/src/qcumber/qinterprocesschannel_win32.cpp")
endif()

if(APPLE)
list(APPEND GUI_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/src/utils/infoplistdockicon.cpp")
endif()

add_executable(qnapi
${GUI_SOURCES}
${GUI_FORMS}
${GUI_RESOURCES})

target_include_directories(qnapi PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/src")

target_link_libraries(qnapi PRIVATE
qnapi::libqnapi
Qt6::Core
Qt6::Network
Qt6::Xml
Qt6::Gui
Qt6::Widgets)

if(UNIX AND NOT APPLE)
target_link_libraries(qnapi PRIVATE Qt6::DBus)
endif()
4 changes: 3 additions & 1 deletion gui/src/forms/frmabout.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

#include "frmabout.h"
#include "libqnapi.h"
#include <QGuiApplication>
#include <QScreen>

frmAbout::frmAbout(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f) {
ui.setupUi(this);
Expand All @@ -23,7 +25,7 @@ frmAbout::frmAbout(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f) {
ui.lbQtVersion->setText(QString("Qt version: ") + qVersion());

QRect position = frameGeometry();
position.moveCenter(QDesktopWidget().availableGeometry().center());
position.moveCenter(QGuiApplication::primaryScreen()->availableGeometry().center());
move(position.topLeft());

ui.lbQNapiIcon->setPixmap(QIcon(":/icon/qnapi.png").pixmap(64));
Expand Down
1 change: 0 additions & 1 deletion gui/src/forms/frmabout.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
#define __FRMABOUT__H__

#include <QDesktopServices>
#include <QDesktopWidget>
#include <QUrl>

#include "ui_frmabout.h"
Expand Down
5 changes: 3 additions & 2 deletions gui/src/forms/frmconvert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
#include "qnapiopendialog.h"

#include <QDesktopServices>
#include <QDesktopWidget>
#include <QGuiApplication>
#include <QScreen>
#include <QDir>
#include <QFileDialog>
#include <QFileInfo>
Expand All @@ -38,7 +39,7 @@ frmConvert::frmConvert(QWidget *parent, Qt::WindowFlags f)
setAttribute(Qt::WA_QuitOnClose, false);

QRect position = frameGeometry();
position.moveCenter(QDesktopWidget().availableGeometry().center());
position.moveCenter(QGuiApplication::primaryScreen()->availableGeometry().center());
move(position.topLeft());

ui.lbDetectedFormatValue->setText("");
Expand Down
5 changes: 3 additions & 2 deletions gui/src/forms/frmlistsubtitles.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
#include "frmlistsubtitles.h"
#include "subdatawidget.h"

#include <QDesktopWidget>
#include <QGuiApplication>
#include <QScreen>
#include <QMessageBox>
#include <QtWidgets/QHeaderView>

Expand All @@ -27,7 +28,7 @@ frmListSubtitles::frmListSubtitles(QWidget *parent, Qt::WindowFlags f)
ui.setupUi(this);

QRect position = frameGeometry();
position.moveCenter(QDesktopWidget().availableGeometry().center());
position.moveCenter(QGuiApplication::primaryScreen()->availableGeometry().center());
move(position.topLeft());
}

Expand Down
5 changes: 3 additions & 2 deletions gui/src/forms/frmnapiprojektconfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
*****************************************************************************/

#include <QDesktopServices>
#include <QDesktopWidget>
#include <QGuiApplication>
#include <QScreen>

#include "engines/napiprojektdownloadengine.h"
#include "frmnapiprojektconfig.h"
Expand All @@ -32,7 +33,7 @@ frmNapiProjektConfig::frmNapiProjektConfig(const EngineConfig &config,
connect(ui.pbRegister, SIGNAL(clicked()), this, SLOT(pbRegisterClicked()));

QRect position = frameGeometry();
position.moveCenter(QDesktopWidget().availableGeometry().center());
position.moveCenter(QGuiApplication::primaryScreen()->availableGeometry().center());
move(position.topLeft());
}

Expand Down
5 changes: 3 additions & 2 deletions gui/src/forms/frmnapisy24config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
*****************************************************************************/

#include <QDesktopServices>
#include <QDesktopWidget>
#include <QGuiApplication>
#include <QScreen>

#include "engines/napisy24downloadengine.h"
#include "frmnapisy24config.h"
Expand All @@ -32,7 +33,7 @@ frmNapisy24Config::frmNapisy24Config(const EngineConfig &config,
connect(ui.pbRegister, SIGNAL(clicked()), this, SLOT(pbRegisterClicked()));

QRect position = frameGeometry();
position.moveCenter(QDesktopWidget().availableGeometry().center());
position.moveCenter(QGuiApplication::primaryScreen()->availableGeometry().center());
move(position.topLeft());
}

Expand Down
5 changes: 3 additions & 2 deletions gui/src/forms/frmopensubtitlesconfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
*****************************************************************************/

#include <QDesktopServices>
#include <QDesktopWidget>
#include <QGuiApplication>
#include <QScreen>

#include "engines/opensubtitlesdownloadengine.h"
#include "frmopensubtitlesconfig.h"
Expand All @@ -34,7 +35,7 @@ frmOpenSubtitlesConfig::frmOpenSubtitlesConfig(const EngineConfig &config,
connect(ui.pbRegister, SIGNAL(clicked()), this, SLOT(pbRegisterClicked()));

QRect position = frameGeometry();
position.moveCenter(QDesktopWidget().availableGeometry().center());
position.moveCenter(QGuiApplication::primaryScreen()->availableGeometry().center());
move(position.topLeft());
}

Expand Down
29 changes: 23 additions & 6 deletions gui/src/forms/frmoptions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,12 @@
#include "forms/frmopensubtitlesconfig.h"

#include "libqnapi.h"
#include "utils/encodingutils.h"

#include <QLocale>
#include <algorithm>
#include <QGuiApplication>
#include <QScreen>

#ifdef Q_OS_MAC
#include "utils/infoplistdockicon.h"
Expand Down Expand Up @@ -112,7 +116,7 @@ frmOptions::frmOptions(QWidget *parent, Qt::WindowFlags f)
}

QRect position = frameGeometry();
position.moveCenter(QDesktopWidget().availableGeometry().center());
position.moveCenter(QGuiApplication::primaryScreen()->availableGeometry().center());
move(position.topLeft());
}

Expand Down Expand Up @@ -306,17 +310,30 @@ void frmOptions::showAllEncodingsClicked() {
ui.cbEncTo->addItems(codecs);
}

ui.cbEncFrom->setCurrentIndex(ui.cbEncFrom->findText(encFrom));
ui.cbEncTo->setCurrentIndex(ui.cbEncTo->findText(encTo));
int fromIdx = ui.cbEncFrom->findText(encFrom);
if (fromIdx == -1 && !encFrom.isEmpty()) {
ui.cbEncFrom->addItem(encFrom);
fromIdx = ui.cbEncFrom->findText(encFrom);
}

int toIdx = ui.cbEncTo->findText(encTo);
if (toIdx == -1 && !encTo.isEmpty()) {
ui.cbEncTo->addItem(encTo);
toIdx = ui.cbEncTo->findText(encTo);
}

ui.cbEncFrom->setCurrentIndex(fromIdx);
ui.cbEncTo->setCurrentIndex(toIdx);
}

void frmOptions::showAllEncodings() {
ui.cbEncFrom->clear();
ui.cbEncTo->clear();

QList<QByteArray> codecs = QTextCodec::availableCodecs();
qSort(codecs.begin(), codecs.end());
for (QList<QByteArray>::iterator i = codecs.begin(); i != codecs.end(); i++) {
EncodingUtils encodingUtils;
QStringList codecs = encodingUtils.availableEncodings();
std::sort(codecs.begin(), codecs.end());
Comment on lines +333 to +335

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore full encoding list for “Show all encodings”

Switching this path from QTextCodec::availableCodecs() to EncodingUtils::availableEncodings() silently narrows “show all” to the same short internal codec list used for heuristics, so users lose access to many previously selectable encodings. This also makes existing configs with values outside that shortlist fail findText(...), increasing the chance those settings are unintentionally replaced when options are saved.

Useful? React with 👍 / 👎.

for (QStringList::const_iterator i = codecs.begin(); i != codecs.end(); i++) {
ui.cbEncFrom->addItem(*i);
ui.cbEncTo->addItem(*i);
}
Expand Down
2 changes: 0 additions & 2 deletions gui/src/forms/frmoptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,12 @@
#include "engines/subtitledownloadenginesregistry.h"
#include "subconvert/subtitleformatsregistry.h"

#include <QDesktopWidget>
#include <QDir>
#include <QFileDialog>
#include <QFileInfo>
#include <QList>
#include <QMessageBox>
#include <QSharedPointer>
#include <QTextCodec>

class frmOptions : public QDialog {
Q_OBJECT
Expand Down
7 changes: 4 additions & 3 deletions gui/src/forms/frmprogress.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@

#include "frmprogress.h"
#include <QCloseEvent>
#include <QDesktopWidget>
#include <QGuiApplication>
#include <QScreen>
#include <QDir>
#include <QFile>
#include <QFileInfo>
Expand Down Expand Up @@ -47,7 +48,7 @@ frmProgress::frmProgress(QWidget *parent, Qt::WindowFlags f)
connect(&getThread, SIGNAL(finished()), this, SLOT(downloadFinished()));

QRect position = frameGeometry();
position.moveCenter(QDesktopWidget().availableGeometry().center());
position.moveCenter(QGuiApplication::primaryScreen()->availableGeometry().center());
move(position.topLeft());
}

Expand Down Expand Up @@ -104,7 +105,7 @@ bool frmProgress::download(const QNapiConfig &config) {

if (!isVisible()) {
QRect position = frameGeometry();
position.moveCenter(QDesktopWidget().availableGeometry().center());
position.moveCenter(QGuiApplication::primaryScreen()->availableGeometry().center());
move(position.topLeft());
show();
}
Expand Down
4 changes: 3 additions & 1 deletion gui/src/forms/frmscan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

#include "frmscan.h"
#include "libqnapi.h"
#include <QGuiApplication>
#include <QScreen>

frmScan::frmScan(QWidget *parent, Qt::WindowFlags f)
: QDialog(parent, f), scanConfig(LibQNapi::loadConfig().scanConfig()) {
Expand Down Expand Up @@ -57,7 +59,7 @@ frmScan::frmScan(QWidget *parent, Qt::WindowFlags f)
iconFilm = QIcon(":/ui/film.png");

QRect position = frameGeometry();
position.moveCenter(QDesktopWidget().availableGeometry().center());
position.moveCenter(QGuiApplication::primaryScreen()->availableGeometry().center());
move(position.topLeft());
}

Expand Down
Loading