Debian

Available patches from Ubuntu

To see Ubuntu differences wrt. to Debian, write down a grep-dctrl query identifying the packages you're interested in:
grep-dctrl -n -sPackage Sources.Debian
(e.g. -FPackage linux-ntfs or linux-ntfs)

Modified packages are listed below:

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: ksudoku

ksudoku (4:19.12.1-0ubuntu1) focal; urgency=medium * New upstream release (19.12.1) -- Rik Mills <rikmills@kde.org> Thu, 09 Jan 2020 14:58:00 +0000 ksudoku (4:19.12.0-0ubuntu1) focal; urgency=medium * New upstream release (19.12.0) -- Rik Mills <rikmills@kde.org> Thu, 12 Dec 2019 10:51:41 +0000 ksudoku (4:19.08.3-0ubuntu1) focal; urgency=medium * New upstream release (19.08.0) * New upstream release (19.08.1) * New upstream release (19.08.2) * New upstream release (19.08.3) -- Rik Mills <rikmills@kde.org> Thu, 07 Nov 2019 13:36:21 +0000 ksudoku (4:19.04.3-0ubuntu1) eoan; urgency=medium * New upstream release (19.04.3) -- Rik Mills <rikmills@kubuntu.org> Thu, 11 Jul 2019 14:17:58 +0100 ksudoku (4:19.04.2-0ubuntu1) eoan; urgency=medium * New upstream release (19.04.2) -- Rik Mills <rikmills@kubuntu.org> Sat, 08 Jun 2019 15:11:21 +0100 ksudoku (4:19.04.1-0ubuntu1) eoan; urgency=medium * New upstream release (19.04.1) -- Rik Mills <rikmills@kubuntu.org> Sun, 12 May 2019 21:01:37 +0100 ksudoku (4:19.04.0-0ubuntu1) eoan; urgency=medium * New upstream release (19.04.0) -- Rik Mills <rikmills@kubuntu.org> Fri, 26 Apr 2019 20:47:13 +0100 ksudoku (4:18.12.3-0ubuntu1) disco; urgency=medium * New upstream release (18.12.3) -- Rik Mills <rikmills@kubuntu.org> Thu, 07 Mar 2019 13:32:19 +0000 ksudoku (4:18.12.2-0ubuntu1) disco; urgency=medium * New upstream release (18.12.2) -- Rik Mills <rikmills@kubuntu.org> Sun, 17 Feb 2019 13:19:25 +0000 ksudoku (4:18.12.1-0ubuntu1) disco; urgency=medium * New upstream release (18.12.1) -- Rik Mills <rikmills@kubuntu.org> Thu, 10 Jan 2019 14:13:27 +0000 ksudoku (4:18.12.0-0ubuntu1) disco; urgency=medium * New upstream beta release (18.11.80) * New upstream release (18.12.0) -- Rik Mills <rikmills@kubuntu.org> Sat, 05 Jan 2019 16:51:40 +0000 ksudoku (4:18.08.3-0ubuntu1) disco; urgency=medium * New upstream release (18.08.3). * Merge Debian changes. Remaining changes: - Kubuntu Vcs fields. - debian/rules: l10npkgs_firstversion_ok := 4:17.03.90-0~ - Bumped build depends. - Don't exclude armhf from mesa builds deps, to avoid FTBFS. - AUTHORS doc file removed upstream. -- Rik Mills <rikmills@kubuntu.org> Sun, 09 Dec 2018 10:25:34 +0000 ksudoku (4:18.04.3-0ubuntu1) cosmic; urgency=medium * New upstream release (18.03.80) * New upstream release (18.04.0) * New upstream release (18.04.1) * New upstream release (18.04.3) -- Rik Mills <rikmills@kubuntu.org> Fri, 10 Aug 2018 09:20:59 +0100

Modifications :
  1. Download patch po/bg/ksudoku.po
  2. Download patch src/gui/views/valuelistwidget.h

    --- 4:18.04.1-1/src/gui/views/valuelistwidget.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/views/valuelistwidget.h 2019-09-17 11:38:40.000000000 +0000 @@ -36,7 +36,7 @@ class ValueListWidget : public QGraphics Q_OBJECT friend class SymbolItem; public: - ValueListWidget(QWidget* parent = 0); + explicit ValueListWidget(QWidget* parent = 0); ~ValueListWidget(); // SymbolTable* currentTable() const;
  3. Download patch po/sl/ksudoku.po
  4. Download patch po/pl/ksudoku.po
  5. Download patch po/es/ksudoku.po
  6. Download patch src/gui/org.kde.ksudoku.appdata.xml

    --- 4:18.04.1-1/src/gui/org.kde.ksudoku.appdata.xml 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/org.kde.ksudoku.appdata.xml 2019-09-17 11:38:40.000000000 +0000 @@ -8,7 +8,6 @@ SentUpstream: 2014-09-24 <id>org.kde.ksudoku.desktop</id> <metadata_license>CC0-1.0</metadata_license> <name>KSudoku</name> - <name xml:lang="ast">KSudoku</name> <name xml:lang="ca">KSudoku</name> <name xml:lang="ca-valencia">KSudoku</name> <name xml:lang="cs">KSudoku</name> @@ -18,7 +17,9 @@ SentUpstream: 2014-09-24 <name xml:lang="fi">KSudoku</name> <name xml:lang="fr">KSudoku</name> <name xml:lang="gl">KSudoku</name> + <name xml:lang="id">KSudoku</name> <name xml:lang="it">KSudoku</name> + <name xml:lang="ko">KSudoku</name> <name xml:lang="nl">KSudoku</name> <name xml:lang="nn">KSudoku</name> <name xml:lang="pl">KSudoku</name> @@ -36,9 +37,10 @@ SentUpstream: 2014-09-24 <name xml:lang="uk">KSudoku</name> <name xml:lang="x-test">xxKSudokuxx</name> <name xml:lang="zh-CN">KSudoku</name> + <name xml:lang="zh-TW">KSudoku</name> <summary>Complete a numeric puzzle with the numbers from one to nine</summary> - <summary xml:lang="ca">Completeu un puzle numèric puzzle amb nombres des de l'u al nou.</summary> - <summary xml:lang="ca-valencia">Completeu un puzle numèric puzzle amb nombres des de l'u al nou.</summary> + <summary xml:lang="ca">Completeu un puzle numèric amb nombres des de l'u al nou.</summary> + <summary xml:lang="ca-valencia">Completeu un puzle numèric amb nombres des de l'u al nou.</summary> <summary xml:lang="cs">Vyplňte číselné puzzle čísly od jedné do devíti</summary> <summary xml:lang="de">Vervollständigen Sie ein Zahlenrätsel mit Zahlen von eins bis neun</summary> <summary xml:lang="en-GB">Complete a numeric puzzle with the numbers from one to nine</summary> @@ -47,7 +49,9 @@ SentUpstream: 2014-09-24 <summary xml:lang="fi">Täydennä lukupalapeli numeroin yhdestä yhdeksään</summary> <summary xml:lang="fr">Réalisez un casse-tête numérique avec des chiffres compris entre un et neuf</summary> <summary xml:lang="gl">Complete un quebracabezas numérico cos números do 1 ao 9</summary> + <summary xml:lang="id">Melengkapi sebuah teka-teki penomoran dengan angka dari satu sampai sembilan</summary> <summary xml:lang="it">Completa un rompicapo numerico con le cifra da uno a nove</summary> + <summary xml:lang="ko">1부터 9까지 숫자를 채워 넣는 수학 퍼즐 게임</summary> <summary xml:lang="nl">Maak een numerieke puzzel met de cijfers vanaf één tot en met negen</summary> <summary xml:lang="nn">Fullfør eit slags talpuslespel med siffera 1 til 9</summary> <summary xml:lang="pl">Uzupełnij układankę numeryczną cyframi od jeden do dziwięciu</summary> @@ -77,8 +81,10 @@ SentUpstream: 2014-09-24 <p xml:lang="es">KSudoku es una versión libre del popular juego de lógica Sudoku desarrollado por la comunidad KDE. El juego consiste en rellenar una rejilla de nueve por nueve celdas con los números del uno al nueve rellenando las filas, las columnas y los cuadros de tres por tres celdas sin repetir ningún valor en estos elementos.</p> <p xml:lang="fi">KSudoku on KDE-yhteisön vapaa versio suositusta logiikkapelistä sudokusta. Ajatuksena on täyttää 9 × 9 ruudun ruudukko numeroin yhdestä yhdeksään toistamatta numeroita 3 × 3 ruudun lohkoissa.</p> <p xml:lang="fr">KSudoku est une version libre et développée par la communauté KDE du célèbre jeu de logique Sudoku. Le jeu consiste à remplir une grille de neuf cases par neuf avec des chiffres allant de un à neuf de manière à ce que les lignes, les colonnes et les carrés de trois cases par trois ne contiennent pas deux fois la même valeur.</p> - <p xml:lang="gl">KSudoku é unha versión libre do popular xogo de lóxica Sudoku desenvolvido pola comunidade KDE. O xogo consiste en encher as celas dunha grade de 9x9 cos números do 1 ao 9, enchendo as filas, columnas e bloques de 3x3 con valores que non se repitan.</p> + <p xml:lang="gl">KSudoku é unha versión libre do popular xogo de lóxica Sudoku desenvolvido pola comunidade KDE. O xogo consiste en encher a grade de 9x9 cos números do 1 ao 9, enchendo as filas, columnas e bloques de 3x3 con valores que non se repitan.</p> + <p xml:lang="id">KSudoku adalah versi gratis permainan Sudoku permainan logika populer yang dikembangkan oleh komunitas KDE. Permainan ini adalah untuk mengisi kisi sembilan demi sembilan dengan angka dari satu sampai smbilan mengisi deretan, kolom, dan tiga demi tiga kotak tanpa mengulangi nilai-nilainya.</p> <p xml:lang="it">KSudoku è una versione libera del popolare gioco di logica Sudoku sviluppato dalla comunità KDE. Il gioco consiste nel riempire una griglia nove per nove con le cifre da uno a nove. facendo in modo che nelle righe, nelle colonne e nei quadrati di dimensione tre per tre non si ripetano gli stessi valori.</p> + <p xml:lang="ko">KSudoku는 KDE 커뮤니티에서 개발한 자유 소프트웨어 스도쿠 논리 게임입니다. 게임의 목표는 9x9 그리드를 1부터 9까지의 숫자로 채우는 것으로, 특정한 행이나 열에는 중복되는 숫자가 있으면 안 됩니다.</p> <p xml:lang="nl">KSudoku is een vrije versie van het populaire logische spel Sudoku ontwikkeld door de KDE gemeenschap. Het spel gaat over het vullen van een negen bij negen raster met de cijfers vanaf één tot en met negen door het vullen van de rijen, de kolommen en drie bij drie vierkantjes zonder een waarde daarin te herhalen.</p> <p xml:lang="nn">KSudoku er ein fri versjon av det klassiske logikkspelet sudoku, laga av KDE-fellesskapet. Målet med spelet er å fylla eit 9 × 9-rutenett med siffera 1 til 9 slik at alle rader, alle kolonnar og alle markerte 3 × 3-felt inneheld alle siffera.</p> <p xml:lang="pl">KSudoku jest darmową wersją popularnej gry logicznej Sudoku stworzoną przez społeczność KDE. Gra polega na wypełnieniu siatki o rozmiarze dziewięć na dziewięć kratek, cyframi od jeden do dziewięciu wypełniającymi wiersze, kolumny i kwadraty o rozmiarze trzy na trzy bez uzywania ponownie tej samej wartości w żadnym z nich.</p> @@ -94,11 +100,13 @@ SentUpstream: 2014-09-24 <p xml:lang="tr">KSudoku, KDE topluluğu tarafından geliştirilen popüler mantık oyunu Sudoku'nun ücretsiz bir sürümüdür. Oyun, satırları, sütunları ve üçe üç olan kareleri, değerleri tekrarlamadan doldurma üzerine kuruludur.</p> <p xml:lang="uk">KSudoku — вільна версія популярної логічної гри, судоку, яку розроблено спільнотою KDE. Гра полягає у заповненні таблиці дев’ять на дев’ять клітинок числами від одного до дев’яти так, щоб у кожному блоці таблиці розміром три на три клітинки ці числа не повторювалися.</p> <p xml:lang="x-test">xxKSudoku is a free version of the popular logic game Sudoku developed by the KDE community. The game is to fill a nine by nine grid with the numbers from one to nine filling the rows, columns and three by three squares without repeating a value on them.xx</p> + <p xml:lang="zh-CN">KSudoku 是由 KDE 社区开发的自由版本的数独——一种流行的逻辑游戏。游戏需要用一到九的数字不重复地填满九乘九的格子。</p> </description> <url type="homepage">https://games.kde.org/game.php?game=ksudoku</url> + <url type="donation">https://www.kde.org/community/donations/?app=ksudoku&amp;source=appdata</url> <screenshots> <screenshot type="default"> - <image>http://games.kde.org/games/ksudoku/screenshots/originals/ksudoku01.jpg</image> + <image>https://cdn.kde.org/screenshots/ksudoku/ksudoku.png</image> </screenshot> </screenshots> </component>
  7. Download patch po/sr/ksudoku.po
  8. Download patch po/lt/ksudoku.po
  9. Download patch po/bs/ksudoku.po
  10. Download patch po/ja/ksudoku.po
  11. Download patch po/it/ksudoku.po
  12. Download patch src/generator/mathdokugenerator.h

    --- 4:18.04.1-1/src/generator/mathdokugenerator.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/generator/mathdokugenerator.h 2019-09-17 11:38:40.000000000 +0000 @@ -34,7 +34,7 @@ class SKGraph; class MathdokuGenerator { public: - MathdokuGenerator (SKGraph * graph); + explicit MathdokuGenerator (SKGraph * graph); /** * Generate a Mathdoku or Killer Sudoku puzzle.
  13. Download patch po/fi/ksudoku.po
  14. Download patch po/it/docs/ksudoku/index.docbook

    --- 4:18.04.1-1/po/it/docs/ksudoku/index.docbook 2018-05-08 00:16:38.000000000 +0000 +++ 4:19.12.1-0ubuntu1/po/it/docs/ksudoku/index.docbook 2020-01-07 01:47:21.000000000 +0000 @@ -924,8 +924,7 @@ >Traduzione di Federico Zenith<email >federico.zenith@member.fsf.org</email ></para -> -&underFDL; &underGPL; </chapter> +> &underFDL; &underGPL; </chapter> <appendix id="installation"> <title @@ -936,8 +935,8 @@ <sect1 id="Compilation"> <title ->Compilazione e installazione</title> -&install.compile.documentation; </sect1> +>Compilazione e installazione</title +>&install.compile.documentation; </sect1> </appendix> &documentation.index;
  15. Download patch po/sv/docs/ksudoku/index.docbook

    --- 4:18.04.1-1/po/sv/docs/ksudoku/index.docbook 2018-05-08 00:16:38.000000000 +0000 +++ 4:19.12.1-0ubuntu1/po/sv/docs/ksudoku/index.docbook 2020-01-07 01:47:35.000000000 +0000 @@ -886,8 +886,7 @@ >Översättning Stefan Asserhäll <email >stefan.asserhall@bredband.net</email ></para -> -&underFDL; &underGPL; </chapter> +> &underFDL; &underGPL; </chapter> <appendix id="installation"> <title @@ -898,8 +897,8 @@ <sect1 id="Compilation"> <title ->Kompilering och installation</title> -&install.compile.documentation; </sect1> +>Kompilering och installation</title +>&install.compile.documentation; </sect1> </appendix> &documentation.index;
  16. Download patch debian/ksudoku.docs

    --- 4:18.04.1-1/debian/ksudoku.docs 2018-05-23 22:15:39.000000000 +0000 +++ 4:19.12.1-0ubuntu1/debian/ksudoku.docs 2020-01-09 14:58:00.000000000 +0000 @@ -1,2 +1 @@ -AUTHORS README
  17. Download patch src/gui/serializer.cpp
  18. Download patch po/fr/ksudoku.po
  19. Download patch po/ca@valencia/ksudoku.po
  20. Download patch src/gui/gamevariants.cpp

    --- 4:18.04.1-1/src/gui/gamevariants.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/gamevariants.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -18,8 +18,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include "ksudoku_logging.h" #include "gamevariants.h" +#include "ksudoku_logging.h" #include "ksudokugame.h" #include "serializer.h" @@ -261,18 +261,23 @@ bool GameVariantDelegate::eventFilter(QO /////////////////////////////////////////////////////////////////////////////// SudokuGame::SudokuGame(const QString& name, uint order, GameVariantCollection* collection) - : GameVariant(name, collection), m_order(order), m_graph(0) + : GameVariant(name, collection), m_order(order), m_graph(nullptr) { // TODO load from settings m_symmetry = 0; } +SudokuGame::~SudokuGame() +{ + delete m_graph; +} + bool SudokuGame::canConfigure() const { return true; } bool SudokuGame::configure() { - KMessageBox::information(0, i18n("Configuration not yet implemented"), ""); + KMessageBox::information(nullptr, i18n("Configuration not yet implemented"), QLatin1String("")); return false; } @@ -306,7 +311,7 @@ Game SudokuGame::createGame(int difficul KsView* SudokuGame::createView(const Game& /*game*/) const { qCDebug(KSudokuLog) << "KsView* ksudoku::SudokuGame::createView()"; - return 0; + return nullptr; } /////////////////////////////////////////////////////////////////////////////// @@ -314,17 +319,22 @@ KsView* SudokuGame::createView(const Gam /////////////////////////////////////////////////////////////////////////////// RoxdokuGame::RoxdokuGame(const QString& name, uint order, GameVariantCollection* collection) - : GameVariant(name, collection), m_order(order), m_graph(0) + : GameVariant(name, collection), m_order(order), m_graph(nullptr) { m_symmetry = 0; } +RoxdokuGame::~RoxdokuGame() +{ + delete m_graph; +} + bool RoxdokuGame::canConfigure() const { return true; } bool RoxdokuGame::configure() { - KMessageBox::information(0, i18n("Configuration not yet implemented"), ""); + KMessageBox::information(nullptr, i18n("Configuration not yet implemented"), QLatin1String("")); return false; } @@ -367,11 +377,16 @@ KsView* RoxdokuGame::createView(const Ga CustomGame::CustomGame(const QString& name, const QUrl& url, GameVariantCollection* collection) - : GameVariant(name, collection), m_url(url), m_graph(0) + : GameVariant(name, collection), m_url(url), m_graph(nullptr) { m_symmetry = 0; } +CustomGame::~CustomGame() +{ + delete m_graph; +} + bool CustomGame::canConfigure() const { return false; }
  21. Download patch src/generator/mathdokugenerator.cpp

    --- 4:18.04.1-1/src/generator/mathdokugenerator.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/generator/mathdokugenerator.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -15,8 +15,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * ****************************************************************************/ -#include "ksudoku_logging.h" #include "mathdokugenerator.h" +#include "ksudoku_logging.h" #include "skgraph.h" #include "cagegenerator.h" @@ -83,4 +83,3 @@ int MathdokuGenerator::solveMathdokuType return result; } -#include "mathdokugenerator.moc"
  22. Download patch debian/rules

    --- 4:18.04.1-1/debian/rules 2018-05-23 22:15:39.000000000 +0000 +++ 4:19.12.1-0ubuntu1/debian/rules 2020-01-09 14:58:00.000000000 +0000 @@ -1,6 +1,6 @@ #!/usr/bin/make -f -l10npkgs_firstversion_ok := 4:16.04.3-2~ +l10npkgs_firstversion_ok := 4:17.08.3~ include /usr/share/pkg-kde-tools/qt-kde-team/3/debian-qt-kde.mk include /usr/share/pkg-kde-tools/qt-kde-team/2/l10n-packages.mk
  23. Download patch src/logic/skgraph.cpp

    --- 4:18.04.1-1/src/logic/skgraph.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/logic/skgraph.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -46,7 +46,7 @@ SKGraph::~SKGraph() void SKGraph::initSudoku() { - m_name = "PlainSudoku"; + m_name = QStringLiteral("PlainSudoku"); m_specificType = Plain; m_sizeX = m_order; @@ -89,7 +89,7 @@ void SKGraph::initSudokuGroups(int pos, void SKGraph::initRoxdoku() { - m_name = "Roxdoku"; + m_name = QStringLiteral("Roxdoku"); m_specificType = Roxdoku; m_sizeX = m_base; @@ -131,14 +131,14 @@ void SKGraph::initRoxdokuGroups(int pos) } } -void SKGraph::addCliqueStructure(QVector<int> data) { +void SKGraph::addCliqueStructure(const QVector<int> &data) { m_structures << Clique << m_cliques.count() << 0; addClique(data); } -void SKGraph::addClique(QVector<int> data) { +void SKGraph::addClique(const QVector<int> &data) { // Add to the cliques (groups) list. m_cliques << data; for (int n = 0; n < data.size(); n++) { @@ -147,7 +147,7 @@ void SKGraph::addClique(QVector<int> dat } } -void SKGraph::addCage(const QVector<int> cage, CageOperator cageOperator, +void SKGraph::addCage(const QVector<int> &cage, CageOperator cageOperator, int cageValue) { // Add to the cages list.
  24. Download patch src/gui/ksudokugame.h

    --- 4:18.04.1-1/src/gui/ksudokugame.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/ksudokugame.h 2019-09-17 11:38:40.000000000 +0000 @@ -114,6 +114,11 @@ public: Game& operator=(const Game& game); public: + /** + * Restarts the game and marks it as unfinished + */ + void restart(); + int order() const; int value(int index) const; @@ -132,7 +137,7 @@ public: * Sets one marker in a cell * @param[in] index The index of the cell * @param[in] val The value of the marker - * @param[in] state Whether the marker shoudl be set or unset + * @param[in] state Whether the marker should be set or unset * @return Whether this function was executed successfully */ bool setMarker(int index, int val, bool state); @@ -213,7 +218,7 @@ public: bool userHadHelp() const; /** - * Returns whether the game was allready solved. + * Returns whether the game was already solved. */ bool wasFinished() const; @@ -240,7 +245,7 @@ public: int historyLength() const; /** - * Returns the hitory event at position @p i + * Returns the history event at position @p i */ HistoryEvent historyEvent(int i) const; @@ -250,6 +255,12 @@ public: void setMessageParent (QWidget * messageParent); QWidget * messageParent(); + /* + * Returns true if all values are filled in (not empty) + * and in usable areas (as in Samurai); false otherwise + */ + bool allValuesSetAndUsable() const; + private: /** * When the game was finished this function emits a @c completed()
  25. Download patch po/ug/ksudoku.po
  26. Download patch po/nl/ksudoku.po
  27. Download patch src/main.cpp

    --- 4:18.04.1-1/src/main.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/main.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -49,19 +49,19 @@ int main(int argc, char **argv) QApplication app(argc, argv); KLocalizedString::setApplicationDomain("ksudoku"); - KAboutData about("ksudoku", + KAboutData about(QStringLiteral("ksudoku"), i18n("KSudoku"), version, i18n(description), KAboutLicense::GPL_V2, i18n("(c) 2005-2007 The KSudoku Authors"), - QString(), "https://games.kde.org/game.php?game=ksudoku"); - about.addAuthor( i18n("Francesco Rossi"), i18n("KSudoku Author"), "redsh@email.it" ); - about.addAuthor( i18n("Johannes Bergmeier"), i18n("Maintainer"), "Johannes.Bergmeier@gmx.net" ); - about.addAuthor( i18n("Ian Wadham"), i18n("New puzzle generator and solver"), "iandw.au@gmail.com" ); - about.addAuthor( i18n("Mick Kappenburg"), i18n("Printing and export of 0.4"), "ksudoku@kappendburg.net"); - about.addAuthor( i18n("Thanks to NeHe for OpenGL tutorials"), QString(), "nehe.gamedev.net"); - about.addCredit( i18n("David Bau"), i18n("Algorithms for new puzzle generator and solver at davidbau.com/archives/2006/09/04/sudoku_generator.html"), ""); + QString(), QStringLiteral("https://games.kde.org/game.php?game=ksudoku")); + about.addAuthor( i18n("Francesco Rossi"), i18n("KSudoku Author"), QStringLiteral("redsh@email.it") ); + about.addAuthor( i18n("Johannes Bergmeier"), i18n("Maintainer"), QStringLiteral("Johannes.Bergmeier@gmx.net") ); + about.addAuthor( i18n("Ian Wadham"), i18n("New puzzle generator and solver"), QStringLiteral("iandw.au@gmail.com") ); + about.addAuthor( i18n("Mick Kappenburg"), i18n("Printing and export of 0.4"), QStringLiteral("ksudoku@kappendburg.net")); + about.addAuthor( i18n("Thanks to NeHe for OpenGL tutorials"), QString(), QStringLiteral("nehe.gamedev.net")); + about.addCredit( i18n("David Bau"), i18n("Algorithms for new puzzle generator and solver at davidbau.com/archives/2006/09/04/sudoku_generator.html"), QLatin1String("")); KAboutData::setApplicationData(about); app.setOrganizationDomain(QStringLiteral("kde.org")); @@ -69,7 +69,7 @@ int main(int argc, char **argv) QCommandLineParser parser; about.setupCommandLine(&parser); - parser.addPositionalArgument(QLatin1String("[URL]"), i18n( "Document to open" )); + parser.addPositionalArgument(QStringLiteral("[URL]"), i18n( "Document to open" )); parser.process(app); about.processCommandLine(&parser); @@ -79,7 +79,7 @@ int main(int argc, char **argv) // register ourselves as a dcop client // app.dcopClient()->registerAs(app.name(), false); //TODO PORT - KConfigDialogManager::changedMap()->insert("ksudoku::SymbolConfigListWidget", SIGNAL(itemChanged(QListWidgetItem*))); + KConfigDialogManager::changedMap()->insert(QStringLiteral("ksudoku::SymbolConfigListWidget"), SIGNAL(itemChanged(QListWidgetItem*))); // see if we are starting with session management /*if (app.isRestored())
  28. Download patch src/generator/cagegenerator.h

    --- 4:18.04.1-1/src/generator/cagegenerator.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/generator/cagegenerator.h 2019-09-17 11:38:40.000000000 +0000 @@ -60,7 +60,7 @@ class CageGenerator : public QObject { Q_OBJECT public: - CageGenerator (const BoardContents & solution); + explicit CageGenerator (const BoardContents & solution); virtual ~CageGenerator(); /** @@ -154,23 +154,23 @@ private: QVector<int> makeOneCage (int seedCell, int requiredSize); // Choose an operator for the cage and calculate the cage's value. - void setCageTarget (QVector<int> cage, CageOperator & cageOperator, + void setCageTarget (const QVector<int> &cage, CageOperator & cageOperator, int & cageValue); // Check whether a generated cage is within parameter requirements. - bool cageIsOK (const QVector<int> cage, CageOperator cageOperator, + bool cageIsOK (const QVector<int> &cage, CageOperator cageOperator, int cageValue); // Set all possible values for the cells of a cage (used by the solver). - void setAllPossibilities (const QVector<int> cage, int nDigits, + void setAllPossibilities (const QVector<int> &cage, int nDigits, CageOperator cageOperator, int cageValue); // Set all possible values for one operator in a cage (used by the solver). - void setPossibilities (const QVector<int> cage, CageOperator cageOperator, + void setPossibilities (const QVector<int> &cage, CageOperator cageOperator, int cageValue); // Set all possible values for a cage that has a multiply or add operator. - void setPossibleAddsOrMultiplies (const QVector<int> cage, + void setPossibleAddsOrMultiplies (const QVector<int> &cage, CageOperator cageOperator, int cageValue); // Check if a cage contains duplicate digits (not allowed in Killer Sudoku). @@ -178,7 +178,7 @@ private: // Check if a combo of digits in a cage satisfies Sudoku rules (a Mathdoku // cage can contain a digit more than once, but not in the same row/column). - bool isSelfConsistent (const QVector<int> cage, int nDigits, int digits[]); + bool isSelfConsistent (const QVector<int> &cage, int nDigits, int digits[]); // Initialise the cage generator for a particular size and type of puzzle. void init (SKGraph * graph, bool hiddenOperators);
  29. Download patch po/km/ksudoku.po
  30. Download patch debian/control

    --- 4:18.04.1-1/debian/control 2018-05-28 11:50:53.000000000 +0000 +++ 4:19.12.1-0ubuntu1/debian/control 2020-01-09 14:58:00.000000000 +0000 @@ -12,8 +12,8 @@ Uploaders: Daniel Schepler <schepler@deb Build-Depends: cmake (>= 2.8.12~), debhelper (>= 11), extra-cmake-modules (>= 5.31.0~), - libgl1-mesa-dev [!armhf] | libgl-dev [!armhf], - libglu1-mesa-dev [!armhf], + libgl1-mesa-dev | libgl-dev, + libglu1-mesa-dev, libkf5archive-dev (>= 5.31.0~), libkf5config-dev (>= 5.31.0~), libkf5configwidgets-dev (>= 5.31.0~), @@ -24,7 +24,7 @@ Build-Depends: cmake (>= 2.8.12~), libkf5i18n-dev (>= 5.31.0~), libkf5iconthemes-dev (>= 5.31.0~), libkf5jobwidgets-dev (>= 5.31.0~), - libkf5kdegames-dev (>= 4.9.0~), + libkf5kdegames-dev (>= 4:19.12.1~), libkf5kio-dev (>= 5.31.0~), libkf5widgetsaddons-dev (>= 5.31.0~), libkf5xmlgui-dev (>= 5.31.0~), @@ -35,8 +35,8 @@ Build-Depends: cmake (>= 2.8.12~), qtdeclarative5-dev (>= 5.7.0~), Standards-Version: 4.1.4 Homepage: http://games.kde.org/ -Vcs-Browser: https://salsa.debian.org/qt-kde-team/kde/ksudoku -Vcs-Git: https://salsa.debian.org/qt-kde-team/kde/ksudoku.git +Vcs-Browser: https://code.launchpad.net/~kubuntu-packagers/kubuntu-packaging/+git/ksudoku +Vcs-Git: git://git.launchpad.net/~kubuntu-packagers/kubuntu-packaging/+git/ksudoku Package: ksudoku Architecture: any
  31. Download patch src/logic/skgraph.h

    --- 4:18.04.1-1/src/logic/skgraph.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/logic/skgraph.h 2019-09-17 11:38:40.000000000 +0000 @@ -77,7 +77,7 @@ * * For example, the XSudoku puzzle type has order 9 and 29 groups (or cliques) * of 9 cells each: 9 rows, 9 columns and 9 blocks 3x3 square, plus 2 diagonals, - * which must also comtain the numbers 1 to 9 in that type of Sudoku. A Roxdoku + * which must also contain the numbers 1 to 9 in that type of Sudoku. A Roxdoku * puzzle of order 16 has a cubic grid containing 12 planes, each 4x4 cells * square and each having 16 cells to be filled with the letters A to P. There * are three sets of 4 planes, which are perpendicular to the X, Y and Z @@ -168,10 +168,10 @@ public: { return m_structures.at(n*3 + 2); } // Add a special or irregularly-shaped group to the list of structures. - void addCliqueStructure(QVector<int> data); + void addCliqueStructure(const QVector<int> &data); // Add a cage (applicable to Mathdoku or Killer Sudoku puzzles only). - void addCage(const QVector<int> cage, CageOperator cageOperator, + void addCage(const QVector<int> &cage, CageOperator cageOperator, int cageValue); // Remove a cage (when keying in a Mathdoku or Killer Sudoku puzzle). @@ -243,7 +243,7 @@ protected: BoardContents m_emptyBoard; private: - void addClique(QVector<int> data); + void addClique(const QVector<int> &data); // For efficiency, make an index from cells to the groups (cliques) // where they belong.
  32. Download patch po/ar/ksudoku.po
  33. Download patch po/pa/ksudoku.po
  34. Download patch src/gui/puzzleprinter.cpp

    --- 4:18.04.1-1/src/gui/puzzleprinter.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/puzzleprinter.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -21,9 +21,9 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ +#include "puzzleprinter.h" #include "globals.h" -#include <QPrinter> #include <QPrintDialog> #include <QPainter> #include <QLine> @@ -34,7 +34,6 @@ #include "puzzle.h" #include "skgraph.h" #include "ksudokugame.h" -#include "puzzleprinter.h" #include "settings.h" @@ -166,10 +165,10 @@ bool PuzzlePrinter::setupOutputDevices ( m_light.setColor (QColor("#888888")); m_light.setWidth (thin); - m_heavy.setColor (QColor(QString("black"))); + m_heavy.setColor (QColor(QStringLiteral("black"))); m_heavy.setWidth (thick); m_heavy.setCapStyle (Qt::RoundCap); - m_dashes.setColor (QColor(QString("black"))); + m_dashes.setColor (QColor(QStringLiteral("black"))); m_dashes.setWidth (thin); m_dashes.setStyle (Qt::DashLine); @@ -405,7 +404,7 @@ void PuzzlePrinter::drawCageLabel (const QString cLabel = QString::number (graph->cageValue (n)); if (! killerStyle) { // No operator is shown in KillerSudoku. - cLabel = cLabel + QString(" /-x+").mid(graph->cageOperator (n), 1); + cLabel = cLabel + QStringLiteral(" /-x+").mid(graph->cageOperator (n), 1); } QFont f = m_p->font(); @@ -413,9 +412,9 @@ void PuzzlePrinter::drawCageLabel (const f.setBold (true); m_p->setFont(f); QFontMetrics fm(f); - int w = fm.width(cLabel); + int w = fm.boundingRect(cLabel).width(); int a = fm.ascent(); - int m = (fm.width(QChar('1'))+1)/3; // Left margin = 1/3 width of '1'. + int m = (fm.boundingRect(QChar('1')).width()+1)/3; // Left margin = 1/3 width of '1'. if (killerStyle) { // Cover part of the dashed line, to make a background for the text. @@ -425,4 +424,3 @@ void PuzzlePrinter::drawCageLabel (const m_p->drawText (cellX + m, cellY + a, cLabel); } -#include "puzzleprinter.moc"
  35. Download patch po/es/docs/ksudoku/index.docbook

    --- 4:18.04.1-1/po/es/docs/ksudoku/index.docbook 2018-05-08 00:16:37.000000000 +0000 +++ 4:19.12.1-0ubuntu1/po/es/docs/ksudoku/index.docbook 2020-01-07 01:47:15.000000000 +0000 @@ -950,8 +950,7 @@ > y Kira J. Fernández <email >kirajfdez@gmail.com</email >.</para -> -&underFDL; &underGPL; </chapter> +> &underFDL; &underGPL; </chapter> <appendix id="installation"> <title @@ -962,8 +961,8 @@ <sect1 id="Compilation"> <title ->Compilación e instalación</title> -&install.compile.documentation; </sect1> +>Compilación e instalación</title +>&install.compile.documentation; </sect1> </appendix> &documentation.index;
  36. Download patch src/gui/serializer.h

    --- 4:18.04.1-1/src/gui/serializer.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/serializer.h 2019-09-17 11:38:40.000000000 +0000 @@ -48,15 +48,15 @@ public: private: // TODO - IDW. Maybe there should be shared methods for file handling. // And do all these methods need to be static? - static Game deserializeGame(QDomElement element); - static Puzzle* deserializePuzzle(QDomElement element) ; - static SKGraph* deserializeGraph(QDomElement element); + static Game deserializeGame(const QDomElement &element); + static Puzzle* deserializePuzzle(const QDomElement &element) ; + static SKGraph* deserializeGraph(const QDomElement &element); static bool deserializeClique(SKGraph * graph, const QString & size, const QString & text); static bool deserializeCage(SKGraph * graph, const QDomElement & e); - static QList<HistoryEvent> deserializeHistory(QDomElement element); - static HistoryEvent deserializeSimpleHistoryEvent(QDomElement element); - static HistoryEvent deserializeComplexHistoryEvent(QDomElement element); + static QList<HistoryEvent> deserializeHistory(const QDomElement &element); + static HistoryEvent deserializeSimpleHistoryEvent(const QDomElement &element); + static HistoryEvent deserializeComplexHistoryEvent(const QDomElement &element);
  37. Download patch src/gui/ksudoku.h

    --- 4:18.04.1-1/src/gui/ksudoku.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/ksudoku.h 2019-09-17 11:38:40.000000000 +0000 @@ -34,7 +34,6 @@ #define USE_UNSTABLE_LIBKDEGAMESPRIVATE_API #include <libkdegamesprivate/kgamedifficulty.h> -class QPrinter; namespace ksudoku { class KsView; @@ -46,7 +45,6 @@ class Game; class Puzzle; } -class SKGraph; class PuzzlePrinter; /** @@ -86,9 +84,9 @@ public: * Default Destructor */ virtual ~KSudoku(); - + void loadGame(const QUrl& url); - + public: void updateShapesList(); void createCustomShape(); @@ -102,20 +100,21 @@ protected: public slots: void onCompleted(bool isCorrect, const QTime& required, bool withHelp = false); - + void showWelcomeScreen(); void startGame(const ::ksudoku::Game& game); void endCurrentGame(); bool queryClose() override; - + private slots: void difficultyChanged (KGameDifficulty::standardLevel difficulty); void difficultyChanged (int difficulty); // IDW test. void symmetryChanged (int symmetry); void gameNew(); + void gameRestart(); void gameOpen(); void gameSave(); void gameSaveAs(); @@ -153,16 +152,16 @@ private: private: QWidget* wrapper; - + QAction* m_gameSave; QAction* m_gameSaveAs; ksudoku::GameVariantCollection* m_gameVariants; ksudoku::WelcomeScreen* m_welcomeScreen; - + QWidget* m_gameWidget; ksudoku::ValueListWidget* m_valueListWidget; - + ksudoku::KsView* m_gameUI; ksudoku::GameActions* m_gameActions;
  38. Download patch CMakeLists.txt

    --- 4:18.04.1-1/CMakeLists.txt 2018-05-08 00:16:38.000000000 +0000 +++ 4:19.12.1-0ubuntu1/CMakeLists.txt 2020-01-07 01:47:38.000000000 +0000 @@ -1,8 +1,8 @@ project(ksudoku) -cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR) -set (QT_MIN_VERSION "5.7.0") -set (KF5_MIN_VERSION "5.31.0") +cmake_minimum_required (VERSION 3.5 FATAL_ERROR) +set (QT_MIN_VERSION "5.11.0") +set (KF5_MIN_VERSION "5.46.0") find_package(ECM ${KF5_MIN_VERSION} REQUIRED CONFIG) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) @@ -27,7 +27,7 @@ find_package(KF5 ${KF5_MIN_VERSION} REQU find_package(KF5KDEGames 4.9.0 REQUIRED) find_package(OpenGL) -set_package_properties(OpenGL PROPERTIES DESCRIPTION "API for developing portable, interactive 2D and 3Dgraphics applications" TYPE OPTIONAL PURPOSE "Kubrick will not be built and KSudoku will not have Roxdoku support without OpenGL.") +set_package_properties(OpenGL PROPERTIES DESCRIPTION "API for developing portable, interactive 2D and 3Dgraphics applications" TYPE OPTIONAL PURPOSE "KSudoku will not have Roxdoku support without OpenGL.") include(FeatureSummary) include(ECMAddAppIcon) @@ -36,6 +36,9 @@ include(ECMInstallIcons) include(KDEInstallDirs) include(KDECompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) +if (EXISTS "${CMAKE_SOURCE_DIR}/.git") + add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x060000) +endif() if (OPENGL_FOUND) set(OPENGL_SUPPORT true) @@ -61,7 +64,10 @@ if(OPENGL_SUPPORT) endif(OPENGL_SUPPORT) add_definitions(-DQT_NO_URL_CAST_FROM_STRING) - +if (${KF5Config_VERSION} STRGREATER "5.56.0") + add_definitions(-DQT_NO_FOREACH) + MESSAGE(STATUS "compile without foreach") +endif() add_subdirectory(src) add_subdirectory(doc)
  39. Download patch po/fa/ksudoku.po
  40. Download patch po/et/ksudoku.po
  41. Download patch po/ca/ksudoku.po
  42. Download patch po/sv/ksudoku.po
  43. Download patch src/shapes/4x4.desktop

    --- 4:18.04.1-1/src/shapes/4x4.desktop 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/shapes/4x4.desktop 2019-09-17 11:38:40.000000000 +0000 @@ -1,6 +1,5 @@ [KSudokuVariant] Name=4x4 -Name[ast]=4x4 Name[be]=4x4 Name[bs]=4x4 Name[ca]=4x4 @@ -59,7 +58,6 @@ Name[x-test]=xx4x4xx Name[zh_CN]=4x4 Name[zh_TW]=4x4 Description=4x4 shape puzzle -Description[ast]=Frañetiestes en forma de 4x4 Description[bs]=4x4 oblik slagalice Description[ca]=Trencaclosques amb forma de 4x4 Description[ca@valencia]=Trencaclosques amb forma de 4x4
  44. Download patch .gitignore

    --- 4:18.04.1-1/.gitignore 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/.gitignore 2019-09-17 11:38:40.000000000 +0000 @@ -1,3 +1,4 @@ .kdev4/ -build/ +/build*/ *.kdev4 +CMakeLists.txt.user*
  45. Download patch src/gui/puzzleprinter.h

    --- 4:18.04.1-1/src/gui/puzzleprinter.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/puzzleprinter.h 2019-09-17 11:38:40.000000000 +0000 @@ -25,6 +25,7 @@ #define _PUZZLEPRINTER_H_ #include <QPen> +#include <QPrinter> namespace ksudoku { class Game; @@ -42,7 +43,7 @@ public: /** * Default Constructor */ - PuzzlePrinter (QWidget * parent); + explicit PuzzlePrinter (QWidget * parent); /** * Default Destructor
  46. Download patch src/gui/history.cpp

    --- 4:18.04.1-1/src/gui/history.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/history.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -85,7 +85,7 @@ bool HistoryEvent::applyTo(PuzzleState& } bool HistoryEvent::undoOn(PuzzleState& puzzle) const { - if(m_cellsBefore.size() == 0 || m_cellsBefore.size() != m_cellsIndex.size()) + if(m_cellsBefore.isEmpty() || m_cellsBefore.size() != m_cellsIndex.size()) return false; for(int i = 0; i < m_cellsIndex.count(); ++i) { @@ -95,7 +95,7 @@ bool HistoryEvent::undoOn(PuzzleState& p } bool HistoryEvent::redoOn(PuzzleState& puzzle) const { - if(m_cellsBefore.size() == 0 || m_cellsBefore.size() != m_cellsIndex.size()) + if(m_cellsBefore.isEmpty() || m_cellsBefore.size() != m_cellsIndex.size()) return false; for(int i = 0; i < m_cellsIndex.count(); ++i) {
  47. Download patch po/tr/ksudoku.po
  48. Download patch po/cs/ksudoku.po
  49. Download patch src/gui/ksudokugame.cpp

    --- 4:18.04.1-1/src/gui/ksudokugame.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/ksudokugame.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -20,8 +20,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include "ksudoku_logging.h" #include "ksudokugame.h" +#include "ksudoku_logging.h" #include "puzzle.h" @@ -35,6 +35,7 @@ #include <QDebug> #include <QList> #include <QUrl> +#include <QElapsedTimer> class QWidget; @@ -78,7 +79,7 @@ public: bool wasFinished : 1; Puzzle* puzzle; - QTime time; + QElapsedTimer time; int accumTime; QUrl url; QList<HistoryEvent> history; @@ -198,6 +199,15 @@ bool Game::simpleCheck() const { // IDW // IDW test. Eliminated optimized[] arrays and xxxConnection() functions. } +void Game::restart() { + while (canUndo()) { + interface()->undo(); + } + m_private->history.clear(); // otherwise we could do redo + m_private->wasFinished = false; + m_private->emitModified(true); // e.g. to update undo/redo action state +} + int Game::order() const { if(!m_private) return 0; return m_private->puzzle->order(); @@ -366,7 +376,7 @@ bool Game::addToCage (int pos, int val) KMessageBox::information (messageParent(), i18n("In Killer Sudoku, the operator is always + or none " "and KSudoku automatically sets the correct choice."), - i18n("Killer Sudoku Cage"), QString("KillerCageInfo")); + i18n("Killer Sudoku Cage"), QStringLiteral("KillerCageInfo")); } // Set the operator to none or Add, depending on the cage-size. cageOp = (m_private->m_cage.size() > 1) ? Add : NoOperator; @@ -527,7 +537,7 @@ void Game::deleteCageAt (int pos, SKGrap if(KMessageBox::questionYesNo (messageParent(), i18n("Do you wish to delete this cage?"), i18n("Delete Cage"), KStandardGuiItem::del(), - KStandardGuiItem::cancel(), QString("CageDelConfirm")) + KStandardGuiItem::cancel(), QStringLiteral("CageDelConfirm")) == KMessageBox::No) { return; } @@ -553,7 +563,7 @@ void Game::deleteCageAt (int pos, SKGrap KMessageBox::information (messageParent(), i18n("The cell you have selected is not in any cage, " "so the Delete action will not delete anything."), - i18n("Delete Cage"), QString("CageDelMissed")); + i18n("Delete Cage"), QStringLiteral("CageDelMissed")); } } else { @@ -566,14 +576,23 @@ void Game::deleteCageAt (int pos, SKGrap } } +bool Game::allValuesSetAndUsable() const { + for (int i = 0; i < size(); i++) { + if (value(i) == 0) { + return false; + } + } + + return true; +} + void Game::checkCompleted() { if(!m_private || !m_private->puzzle->hasSolution()) return; - // Find cells that are empty and not in unusable areas (as in Samurai). - for(int i = 0; i < size(); i++) - if((value(i) == 0) && (solution(i) > 0)) - return; - + if (!allValuesSetAndUsable()) { + return; + } + for(int i = 0; i < size(); i++) { if(value(i) != solution(i)) { m_private->emitCompleted(false, time(), m_private->hadHelp);
  50. Download patch src/gui/ksudoku.cpp
  51. Download patch src/gui/views/gameactions.cpp

    --- 4:18.04.1-1/src/gui/views/gameactions.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/views/gameactions.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -22,27 +22,20 @@ #include <QAction> #include <QKeySequence> -#include <QSignalMapper> #include <KActionCollection> #include <KLocalizedString> namespace ksudoku { -GameActions::GameActions(KActionCollection* collection) { +GameActions::GameActions(KActionCollection* collection, QObject *parent) + : QObject(parent) +{ m_collection = collection; } void GameActions::init() { - m_selectValueMapper = new QSignalMapper(this); - connect(m_selectValueMapper, SIGNAL(mapped(int)), SIGNAL(selectValue(int))); - m_enterValueMapper = new QSignalMapper(this); - connect(m_enterValueMapper, SIGNAL(mapped(int)), SIGNAL(enterValue(int))); - m_markValueMapper = new QSignalMapper(this); - connect(m_markValueMapper, SIGNAL(mapped(int)), SIGNAL(markValue(int))); - - // NOTE: Qt::Key_Asterisk cannot be used for Multiply, because it // clashes with Shift+8, used for cancelling '8' or 'h' marker. // Instead, we use 'x' for Multiply, which is OK because Mathdoku @@ -57,14 +50,13 @@ void GameActions::init() { for(int i = 0; i < 31; ++i) { shortcuts.clear(); a = new QAction(this); - m_collection->addAction(QString("val-select%1").arg(i+1,2,10,QChar('0')), a); + m_collection->addAction(QStringLiteral("val-select%1").arg(i+1,2,10,QChar('0')), a); a->setText(i18n("Select %1 (%2)", QChar('a'+i), i+1)); - m_selectValueMapper->setMapping(a, i+1); - connect(a, SIGNAL(triggered(bool)), m_selectValueMapper, SLOT(map())); + connect(a, &QAction::triggered, this, [this, i] { selectValue(i + 1); }); m_actions << a; a = new QAction(this); - m_collection->addAction(QString("val-enter%1").arg(i+1,2,10,QChar('0')), a); + m_collection->addAction(QStringLiteral("val-enter%1").arg(i+1,2,10,QChar('0')), a); a->setText(i18n("Enter %1 (%2)", QChar('a'+i), i+1)); if (i < 25) { // Keys A to Y, for Sudoku puzzles. @@ -79,8 +71,7 @@ void GameActions::init() { shortcuts << QKeySequence(Qt::Key_1 + i); } m_collection->setDefaultShortcuts(a, shortcuts); - m_enterValueMapper->setMapping(a, i+1); - connect(a, SIGNAL(triggered(bool)), m_enterValueMapper, SLOT(map())); + connect(a, &QAction::triggered, this, [this, i] { enterValue(i + 1); }); m_actions << a; if (i >= 25) { continue; @@ -88,53 +79,52 @@ void GameActions::init() { shortcuts.clear(); a = new QAction(this); - m_collection->addAction(QString("val-mark%1").arg(i+1,2,10,QChar('0')), a); + m_collection->addAction(QStringLiteral("val-mark%1").arg(i+1,2,10,QChar('0')), a); a->setText(i18n("Mark %1 (%2)", QChar('a'+i), i+1)); shortcuts << QKeySequence(Qt::ShiftModifier | (Qt::Key_A + i)); if(i < 9) { shortcuts << QKeySequence(Qt::ShiftModifier | (Qt::Key_1 + i)); } m_collection->setDefaultShortcuts(a, shortcuts); - m_markValueMapper->setMapping(a, i+1); - connect(a, SIGNAL(triggered(bool)), m_markValueMapper, SLOT(map())); + connect(a, &QAction::triggered, this, [this, i] { markValue(i + 1); }); m_actions << a; } a = new QAction(this); - m_collection->addAction("move_up", a); + m_collection->addAction(QStringLiteral("move_up"), a); a->setText(i18n("Move Up")); m_collection->setDefaultShortcut(a, Qt::Key_Up); - connect(a, SIGNAL(triggered(bool)), SLOT(moveUp())); + connect(a, &QAction::triggered, this, &GameActions::moveUp); m_actions << a; a = new QAction(this); - m_collection->addAction("move_down", a); + m_collection->addAction(QStringLiteral("move_down"), a); a->setText(i18n("Move Down")); m_collection->setDefaultShortcut(a, Qt::Key_Down); - connect(a, SIGNAL(triggered(bool)), SLOT(moveDown())); + connect(a, &QAction::triggered, this, &GameActions::moveDown); m_actions << a; a = new QAction(this); - m_collection->addAction("move_left", a); + m_collection->addAction(QStringLiteral("move_left"), a); a->setText(i18n("Move Left")); m_collection->setDefaultShortcut(a, Qt::Key_Left); - connect(a, SIGNAL(triggered(bool)), SLOT(moveLeft())); + connect(a, &QAction::triggered, this, &GameActions::moveLeft); m_actions << a; a = new QAction(this); - m_collection->addAction("move_right", a); + m_collection->addAction(QStringLiteral("move_right"), a); a->setText(i18n("Move Right")); m_collection->setDefaultShortcut(a, Qt::Key_Right); - connect(a, SIGNAL(triggered(bool)), SLOT(moveRight())); + connect(a, &QAction::triggered, this, &GameActions::moveRight); m_actions << a; a = new QAction(this); - m_collection->addAction("move_clear_cell", a); + m_collection->addAction(QStringLiteral("move_clear_cell"), a); a->setText(i18n("Clear Cell")); m_collection->setDefaultShortcuts(a, QList<QKeySequence>() << QKeySequence(Qt::Key_Backspace) << QKeySequence(Qt::Key_Delete)); - connect(a, SIGNAL(triggered(bool)), SLOT(clearValue())); + connect(a, &QAction::triggered, this, &GameActions::clearValue); m_actions << a; }
  52. Download patch po/zh_CN/ksudoku.po
  53. Download patch src/gui/org.kde.ksudoku.desktop

    --- 4:18.04.1-1/src/gui/org.kde.ksudoku.desktop 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/org.kde.ksudoku.desktop 2019-09-17 11:38:40.000000000 +0000 @@ -1,6 +1,5 @@ [Desktop Entry] Name=KSudoku -Name[ast]=KSudoku Name[bs]=KSudoku Name[ca]=KSudoku Name[ca@valencia]=KSudoku @@ -55,7 +54,6 @@ Icon=ksudoku Type=Application X-DocPath=ksudoku/index.html GenericName=Sudoku Game -GenericName[ast]=Xuegu de Sudoku GenericName[bs]=Sudoku igra GenericName[ca]=Joc de Sudoku GenericName[ca@valencia]=Joc de Sudoku @@ -118,11 +116,13 @@ Comment[fi]=KDE:n KSudoku, Sudoku-peli j Comment[fr]=KSudoku, jeu de Sodoku et plus par KDE Comment[gl]=KSudoku, o xogo do Sudoku e outros por KDE Comment[it]=KSudoku, gioco del Sudoku ed altri da KDE +Comment[ko]=KSudoku, KDE의 스도쿠 게임과 그 이상 Comment[nl]=KSudoku, sudoku-spel en meer door KDE Comment[nn]=KSudoku – omfattande sudoku-spel frå KDE Comment[pl]=KSudoku, gra Sudoku i więcej w ramach KDE Comment[pt]=KSudoku, um jogo de Sudoku & mais do KDE Comment[pt_BR]=KSudoku, Jogo Sudoku e mais do KDE +Comment[ru]=KSudoku — судоку и другие игры от KDE Comment[sk]=KSudoku, Sudoku hra a ďalšie pre KDE Comment[sl]=KSudoku - Sudoku in več s strani KDE Comment[sr]=К‑судоку, судоку и још штошта из КДЕ‑а @@ -133,6 +133,7 @@ Comment[sv]=Ksudoku, Sudoku-spel med mer Comment[tr]=KSudoku, KDE için sudoku oyunu & fazlası Comment[uk]=KSudoku, гра у судоку і інше від KDE Comment[x-test]=xxKSudoku, Sudoku game & more by KDExx +Comment[zh_CN]=KSudoku,KDE 的增强型数独游戏 Comment[zh_TW]=KSudoku,數獨遊戲與更多由 KDE 製作 Terminal=false Categories=Qt;KDE;Game;LogicGame;
  54. Download patch po/gl/ksudoku.po
  55. Download patch src/gui/views/view2d.h

    --- 4:18.04.1-1/src/gui/views/view2d.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/views/view2d.h 2019-09-17 11:38:40.000000000 +0000 @@ -39,7 +39,7 @@ class GameActions; class View2DScene : public QGraphicsScene { Q_OBJECT public: - View2DScene(GameActions* gameActions); + explicit View2DScene(GameActions* gameActions); ~View2DScene(); public: void init(const Game& game);
  56. Download patch src/generator/dlxsolver.h

    --- 4:18.04.1-1/src/generator/dlxsolver.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/generator/dlxsolver.h 2019-09-17 11:38:40.000000000 +0000 @@ -22,6 +22,7 @@ #include <QObject> #include "globals.h" +#include "skgraph.h" struct DLXNode // Represents a 1 in a sparse matrix // containing only ones and zeroes. @@ -59,7 +60,7 @@ class DLXSolver : public QObject { Q_OBJECT public: - DLXSolver (QObject * parent); + explicit DLXSolver (QObject * parent); virtual ~DLXSolver(); /**
  57. Download patch po/uk/ksudoku.po
  58. Download patch po/pt_BR/ksudoku.po
  59. Download patch po/en_GB/ksudoku.po
  60. Download patch INSTALL

    --- 4:18.04.1-1/INSTALL 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/INSTALL 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -Build instructions can be found at -http://techbase.kde.org/Getting_Started/Build/KDE4 -
  61. Download patch src/gui/views/ksview.h

    --- 4:18.04.1-1/src/gui/views/ksview.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/views/ksview.h 2019-09-17 11:38:40.000000000 +0000 @@ -64,7 +64,7 @@ class KsView : public QObject Q_OBJECT private: // prevent copy constructor (not implemented) - KsView(KsView const& other); + explicit KsView(KsView const& other); // prevent assignment (not implemented) KsView& operator=(KsView const& other);
  62. Download patch src/gui/views/roxdokuview.cpp

    --- 4:18.04.1-1/src/gui/views/roxdokuview.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/views/roxdokuview.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -62,7 +62,7 @@ Matrix3fT ThisRot = {{ {1.0f}, {0. {0.0f}, {0.0f}, {1.0f} }}; -RoxdokuView::RoxdokuView(ksudoku::Game game, GameActions * gameActions, +RoxdokuView::RoxdokuView(const ksudoku::Game &game, GameActions * gameActions, QWidget * parent) : QGLWidget(parent) { @@ -76,9 +76,9 @@ RoxdokuView::RoxdokuView(ksudoku::Game g m_height = m_graph->sizeY(); m_depth = m_graph->sizeZ(); - connect(m_game.interface(), SIGNAL(cellChange(int)), this, SLOT(updateGL())); - connect(m_game.interface(), SIGNAL(fullChange()), this, SLOT(updateGL())); - connect(gameActions, SIGNAL(enterValue(int)), SLOT(enterValue(int))); + connect(m_game.interface(), &GameIFace::cellChange, this, &QGLWidget::updateGL); + connect(m_game.interface(), &GameIFace::fullChange, this, &QGLWidget::updateGL); + connect(gameActions, &GameActions::enterValue, this, &RoxdokuView::enterValue); // IDW test. m_wheelmove = 0.0f; m_wheelmove = -5.0f; // IDW test. Makes the viewport bigger, can see more. @@ -96,7 +96,7 @@ RoxdokuView::RoxdokuView(ksudoku::Game g m_highlights.fill(0, m_size); m_timeDelay = false; m_delayTimer = new QTimer(this); - connect(m_delayTimer, SIGNAL(timeout()), SLOT(delayOver())); + connect(m_delayTimer, &QTimer::timeout, this, &RoxdokuView::delayOver); } RoxdokuView::~RoxdokuView()
  63. Download patch src/gui/gamevariants.h

    --- 4:18.04.1-1/src/gui/gamevariants.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/gamevariants.h 2019-09-17 11:38:40.000000000 +0000 @@ -102,7 +102,7 @@ public: }; public: - GameVariantDelegate(QObject* parent = 0, QWidget * viewport = 0); + explicit GameVariantDelegate(QObject* parent = 0, QWidget * viewport = 0); public: QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override; void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; @@ -130,6 +130,7 @@ private: class SudokuGame : public GameVariant { public: SudokuGame(const QString& name, uint order, GameVariantCollection* collection=0); + ~SudokuGame(); public: bool canConfigure() const override; @@ -149,6 +150,7 @@ private: class RoxdokuGame : public GameVariant { public: RoxdokuGame(const QString& name, uint order, GameVariantCollection* collection=0); + ~RoxdokuGame(); public: bool canConfigure() const override; @@ -168,6 +170,7 @@ private: class CustomGame : public GameVariant { public: CustomGame(const QString& name, const QUrl& url, GameVariantCollection* collection=0); + ~CustomGame(); public: bool canConfigure() const override;
  64. Download patch src/gui/welcomescreen.cpp

    --- 4:18.04.1-1/src/gui/welcomescreen.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/welcomescreen.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -72,7 +72,7 @@ WelcomeScreen::WelcomeScreen(QWidget* pa Qt::QueuedConnection, Q_ARG (int, m_selectedPuzzle)); - connect(gameListWidget->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(onCurrentVariantChange())); + connect(gameListWidget->selectionModel(), &QItemSelectionModel::currentChanged, this, &WelcomeScreen::onCurrentVariantChange); connect(getNewGameButton, &QPushButton::clicked, this, &WelcomeScreen::getNewVariant); // TODO disabled due to missing per-game config dialog @@ -131,7 +131,7 @@ void WelcomeScreen::onCurrentVariantChan } void WelcomeScreen::getNewVariant() { - KMessageBox::information(this, i18n("GetNewVariant not implemented"), ""); + KMessageBox::information(this, i18n("GetNewVariant not implemented"), QLatin1String("")); } void WelcomeScreen::configureVariant() {
  65. Download patch src/generator/cagegenerator.cpp

    --- 4:18.04.1-1/src/generator/cagegenerator.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/generator/cagegenerator.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -15,11 +15,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * ****************************************************************************/ +#include "cagegenerator.h" #include "ksudoku_logging.h" #include "globals.h" #include "skgraph.h" #include "dlxsolver.h" -#include "cagegenerator.h" #include <QDebug> @@ -388,7 +388,7 @@ QVector<int> CageGenerator::makeOneCage return cage; } -void CageGenerator::setCageTarget (QVector<int> cage, +void CageGenerator::setCageTarget (const QVector<int> &cage, CageOperator & cageOperator, int & cageValue) { @@ -483,7 +483,7 @@ void CageGenerator::setCageTarget (QVect cageValue = value; } -bool CageGenerator::cageIsOK (const QVector<int> cage, +bool CageGenerator::cageIsOK (const QVector<int> &cage, CageOperator cageOperator, int cageValue) { // TODO - Is it worth checking for duplicate digits in Mathdoku, before @@ -537,7 +537,7 @@ bool CageGenerator::cageIsOK (const QVec return isOK; } -void CageGenerator::setAllPossibilities (const QVector<int> cage, int nDigits, +void CageGenerator::setAllPossibilities (const QVector<int> &cage, int nDigits, CageOperator cageOperator, int cageValue) { @@ -556,7 +556,7 @@ void CageGenerator::setAllPossibilities } } -void CageGenerator::setPossibilities (const QVector<int> cage, +void CageGenerator::setPossibilities (const QVector<int> &cage, CageOperator cageOperator, int cageValue) { // Generate sets of possible solution-values from the range 1 to mOrder. @@ -590,7 +590,7 @@ void CageGenerator::setPossibilities (co } void CageGenerator::setPossibleAddsOrMultiplies - (const QVector<int> cage, CageOperator cageOperator, int requiredValue) + (const QVector<int> &cage, CageOperator cageOperator, int requiredValue) { int digits[MaxMathOrder]; // Maximum order of maths-based puzzles == 9. int maxDigit = mOrder; @@ -691,7 +691,7 @@ bool CageGenerator::hasDuplicates (int n return false; } -bool CageGenerator::isSelfConsistent (const QVector<int> cage, +bool CageGenerator::isSelfConsistent (const QVector<int> &cage, int nDigits, int digits[]) { QVector<int> usedGroups; @@ -768,4 +768,3 @@ void CageGenerator::init (SKGraph * grap #endif } -#include "cagegenerator.moc"
  66. Download patch po/nl/docs/ksudoku/index.docbook

    --- 4:18.04.1-1/po/nl/docs/ksudoku/index.docbook 2018-05-08 00:16:38.000000000 +0000 +++ 4:19.12.1-0ubuntu1/po/nl/docs/ksudoku/index.docbook 2020-01-07 01:47:24.000000000 +0000 @@ -900,8 +900,7 @@ >iandw.au@gmail.com</email ></para> -&meld.fouten;&vertaling.freek;&vertaling.ronald;&nagelezen.freek; -&underFDL; &underGPL; </chapter> +&meld.fouten;&vertaling.freek;&vertaling.ronald;&nagelezen.freek; &underFDL; &underGPL; </chapter> <appendix id="installation"> <title @@ -912,8 +911,8 @@ <sect1 id="Compilation"> <title ->Compilatie en installatie</title> -&install.compile.documentation; </sect1> +>Compilatie en installatie</title +>&install.compile.documentation; </sect1> </appendix> &documentation.index;
  67. Download patch po/kk/ksudoku.po
  68. Download patch po/ast/ksudoku.po
  69. Download patch po/ro/ksudoku.po
  70. Download patch po/ru/ksudoku.po
  71. Download patch src/gui/views/renderer.cpp

    --- 4:18.04.1-1/src/gui/views/renderer.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/views/renderer.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -18,8 +18,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include "ksudoku_logging.h" #include "renderer.h" +#include "ksudoku_logging.h" #include <QDebug> #include <QPainter> @@ -360,10 +360,10 @@ QPixmap Renderer::renderCageLabelOn(QPix p.setFont(f); QFontMetrics fm(f); - int w = fm.width(cageLabel); // Width of text. + int w = fm.boundingRect(cageLabel).width(); // Width of text. int h = fm.height(); // Total height of font. int a = fm.ascent(); // Height from baseline of font. - int m = fm.width(QChar('1'))/2; // Left-right margin = 1/2 width of '1'. + int m = fm.boundingRect(QChar('1')).width()/2; // Left-right margin = 1/2 width of '1'. // Paint background rect: text must be visible in light and dark themes. p.fillRect(size/6 - m, (size + 3)/4 - a, w + 2*m, h, Qt::darkGray);
  72. Download patch po/el/ksudoku.po
  73. Download patch po/sk/ksudoku.po
  74. Download patch po/eo/ksudoku.po
  75. Download patch po/nds/ksudoku.po
  76. Download patch po/eu/ksudoku.po
  77. Download patch src/gui/views/valuelistwidget.cpp

    --- 4:18.04.1-1/src/gui/views/valuelistwidget.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/views/valuelistwidget.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -181,7 +181,7 @@ void ValueListWidget::selectValueItem(in } void ValueListWidget::wheelEvent (QWheelEvent* e) { - int value = (m_selectedValue - e->delta()/120) % m_maxValue; + int value = (m_selectedValue - e->angleDelta().y()/120) % m_maxValue; if(value <= 0) value = m_maxValue - value; selectValueItem(value); }
  78. Download patch po/lv/ksudoku.po
  79. Download patch po/is/ksudoku.po
  80. Download patch po/pt/ksudoku.po
  81. Download patch AUTHORS

    --- 4:18.04.1-1/AUTHORS 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/AUTHORS 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Francesco Rossi <redsh@email.it>
  82. Download patch src/generator/sudokuboard.cpp

    --- 4:18.04.1-1/src/generator/sudokuboard.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/generator/sudokuboard.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -17,10 +17,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * ****************************************************************************/ +#include "sudokuboard.h" + #include "debug.h" #include "ksudoku_logging.h" -#include "sudokuboard.h" #include "state.h" #include "mathdokugenerator.h" @@ -30,7 +31,7 @@ #include <QDebug> #include <QMultiMap> -#include <QTime> +#include <QElapsedTimer> #include <cstdio> #include <ctime> @@ -134,7 +135,7 @@ bool SudokuBoard::generateSudokuRoxdokuT BoardContents currPuzzle; BoardContents currSolution; - QTime t; + QElapsedTimer t; t.start(); if (m_graph->sizeZ() > 1) { symmetry = NONE; // Symmetry not implemented in 3-D. @@ -195,14 +196,15 @@ bool SudokuBoard::generateSudokuRoxdokuT // Exit after max attempts? QWidget owner; int ans = KMessageBox::questionYesNo (&owner, - i18n("After %1 tries, the best difficulty level achieved " + i18n("After %1 tries, the best difficulty level achieved by the generator " "is %2, with internal difficulty rating %3, but you " - "requested difficulty level %4. Do you wish to try " - "again or accept the puzzle as is?\n" + "requested difficulty level %4.\n" + "\n" + "Do you wish to let the generator try again or accept the puzzle as is?\n" "\n" - "If you accept the puzzle, it may help to change to " - "No Symmetry or some low symmetry type, then use " - "Game->New and try generating another puzzle.", + "Hint: you can try to increase the difficulty rating by doing the following: " + "Continue with the 'Accept' button, choose Game -> New, then change the Symmetry setting " + "to 'No Symmetry' or some low symmetry type and then use 'Generate A Puzzle' again.", maxTries, bestDifficulty, ratingStr, difficultyRequired), i18n("Difficulty Level"), @@ -397,7 +399,7 @@ BoardContents & SudokuBoard::tryGuesses if ((n >= guesses.count()) || (guesses.at (0) == -1)) { dbo2 "POP: Out of guesses at level %d\n", m_states.count()); delete m_states.pop(); - if (m_states.count() > 0) { + if (!m_states.isEmpty()) { m_moves.clear(); m_moveTypes.clear(); m_moves = m_states.top()->moves();
  83. Download patch src/gui/views/gameactions.h

    --- 4:18.04.1-1/src/gui/views/gameactions.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/views/gameactions.h 2019-09-17 11:38:40.000000000 +0000 @@ -25,14 +25,13 @@ class QAction; class KActionCollection; -class QSignalMapper; namespace ksudoku { class GameActions : public QObject { Q_OBJECT -public: - GameActions(KActionCollection* collection); +public: + explicit GameActions(KActionCollection* collection, QObject *parent); void init(); void associateWidget(QWidget* widget); signals: @@ -48,9 +47,6 @@ private slots: void moveRight(); private: KActionCollection* m_collection; - QSignalMapper* m_selectValueMapper; - QSignalMapper* m_enterValueMapper; - QSignalMapper* m_markValueMapper; QVector<QAction *> m_actions; };
  84. Download patch po/mr/ksudoku.po
  85. Download patch po/ga/ksudoku.po
  86. Download patch src/generator/dlxsolver.cpp

    --- 4:18.04.1-1/src/generator/dlxsolver.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/generator/dlxsolver.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -15,10 +15,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * ****************************************************************************/ +#include "dlxsolver.h" #include "ksudoku_logging.h" #include "globals.h" -#include "skgraph.h" -#include "dlxsolver.h" #include <QDebug> @@ -775,4 +774,3 @@ void DLXSolver::deleteAll() mRows.clear(); } -#include "dlxsolver.moc"
  87. Download patch po/nb/ksudoku.po
  88. Download patch po/da/ksudoku.po
  89. Download patch po/nn/ksudoku.po
  90. Download patch po/zh_TW/ksudoku.po
  91. Download patch po/de/ksudoku.po
  92. Download patch src/generator/sudokuboard.h

    --- 4:18.04.1-1/src/generator/sudokuboard.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/generator/sudokuboard.h 2019-09-17 11:38:40.000000000 +0000 @@ -127,7 +127,7 @@ public: * the grouping of cells into rows, columns and blocks, * as required by the type of puzzle being played. */ - SudokuBoard (SKGraph * graph); + explicit SudokuBoard (SKGraph * graph); /** * Generate a puzzle and its solution (see details in the class-header doc). @@ -319,7 +319,7 @@ private: * Clear a board-vector and insert values into it from a solved board. As * each value is inserted, it is copied into a parallel board along with * cells that can now be deduced logically. The positions of values to be - * inserted are chosen at random. The procees finishes when the parallel + * inserted are chosen at random. The process finishes when the parallel * board is filled, leaving a puzzle board that is only partly filled but * for which the solution can be entirely deduced without any need to guess * or backtrack. However this could still be a difficult puzzle for a human
  93. Download patch po/hi/ksudoku.po
  94. Download patch src/gui/views/view2d.cpp

    --- 4:18.04.1-1/src/gui/views/view2d.cpp 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/views/view2d.cpp 2019-09-17 11:38:40.000000000 +0000 @@ -18,10 +18,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include "ksudoku_logging.h" - #include "view2d.h" +#include "ksudoku_logging.h" + #include <QDebug> #include <QGraphicsPixmapItem> #include <QGraphicsSceneEvent> @@ -49,9 +49,9 @@ public: QPoint pos() const { return m_pos; } void showCursor(QGraphicsItem* cursor); void setType(SpecialType type); - void setCageLabel (const QString cageLabel); + void setCageLabel (const QString &cageLabel); - void setValues(QVector<ColoredValue> values); + void setValues(const QVector<ColoredValue> &values); protected: void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override; void mousePressEvent(QGraphicsSceneMouseEvent* event) override; @@ -116,13 +116,13 @@ void CellGraphicsItem::setType(SpecialTy updatePixmap(); } -void CellGraphicsItem::setValues(QVector<ColoredValue> values) { +void CellGraphicsItem::setValues(const QVector<ColoredValue> &values) { m_values = values; updatePixmap(); } -void CellGraphicsItem::setCageLabel(const QString cageLabel) { +void CellGraphicsItem::setCageLabel(const QString &cageLabel) { m_cageLabel = cageLabel; } @@ -135,12 +135,12 @@ void CellGraphicsItem::updatePixmap() { switch(m_type) { case SpecialCell: case SpecialCellMistake: - if(m_values.size() > 0) { + if(!m_values.isEmpty()) { pic = Renderer::instance()->renderSymbolOn(pic, m_values[0].value, m_values[0].color, m_range, SymbolEdited); } break; case SpecialCellPreset: - if(m_values.size() > 0) { + if(!m_values.isEmpty()) { pic = Renderer::instance()->renderSymbolOn(pic, m_values[0].value, 0, m_range, SymbolPreset); } break; @@ -169,7 +169,7 @@ struct GroupGraphicItemSegment { class GroupGraphicsItem : public QGraphicsItemGroup { public: - GroupGraphicsItem(QVector<QPoint> cells, bool isCage = false); + GroupGraphicsItem(const QVector<QPoint> &cells, bool isCage = false); ~GroupGraphicsItem(); void hideBlockBorder (bool visible); public: @@ -190,7 +190,7 @@ private: }; -GroupGraphicsItem::GroupGraphicsItem(QVector<QPoint> cells, bool isCage) { +GroupGraphicsItem::GroupGraphicsItem(const QVector<QPoint> &cells, bool isCage) { m_cells = cells; m_isCage = isCage; m_borderVisible = true; @@ -483,11 +483,11 @@ void View2DScene::init(const Game& game) connect(m_game.interface(), SIGNAL(cellChange(int)), this, SLOT(update(int))); connect(m_game.interface(), SIGNAL(fullChange()), this, SLOT(update())); - connect(m_game.interface(), SIGNAL(cageChange(int,bool)), this, SLOT(updateCage(int,bool))); - connect(m_gameActions, SIGNAL(selectValue(int)), this, SLOT(selectValue(int))); + connect(m_game.interface(), &GameIFace::cageChange, this, &View2DScene::updateCage); + connect(m_gameActions, &GameActions::selectValue, this, &View2DScene::selectValue); connect(m_gameActions, SIGNAL(enterValue(int)), this, SLOT(enterValue(int))); connect(m_gameActions, SIGNAL(markValue(int)), this, SLOT(flipMarkValue(int))); - connect(m_gameActions, SIGNAL(move(int,int)), this, SLOT(moveCursor(int,int))); + connect(m_gameActions, &GameActions::move, this, &View2DScene::moveCursor); // Fix bug 188162 by ensuring that all markers, as well as cells, are // updated and displayed after a Load action. update(-1); @@ -513,7 +513,7 @@ void View2DScene::initCageGroup (int cag else if (drawLabel || (g->cage(cageNum).size() > 1)) { QString str = QString::number(g->cageValue(cageNum)); if (g->specificType() == Mathdoku) { // No op shown in KillerSudoku. - str = str + QString(" /-x+").mid(g->cageOperator(cageNum), 1); + str = str + QStringLiteral(" /-x+").mid(g->cageOperator(cageNum), 1); } m_cells[g->cageTopLeft(cageNum)]->setCageLabel(str); } @@ -779,7 +779,7 @@ View2D::View2D(QWidget *parent, const Ga gameActions->associateWidget(this); - connect(m_scene, SIGNAL(valueSelected(int)), this, SIGNAL(valueSelected(int))); + connect(m_scene, &View2DScene::valueSelected, this, &View2D::valueSelected); } View2D::~View2D() {
  95. Download patch src/gui/views/roxdokuview.h

    --- 4:18.04.1-1/src/gui/views/roxdokuview.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/views/roxdokuview.h 2019-09-17 11:38:40.000000000 +0000 @@ -41,7 +41,6 @@ class SKGraph; namespace ksudoku{ class Game; -class Symbols; class GameActions; /** @@ -51,7 +50,7 @@ class RoxdokuView : public QGLWidget, pu { Q_OBJECT public: - RoxdokuView(ksudoku::Game game, GameActions * gameActions, QWidget * parent = 0); + RoxdokuView(const ksudoku::Game &game, GameActions * gameActions, QWidget * parent = 0); ~RoxdokuView(); virtual QString status() const; @@ -87,7 +86,7 @@ protected: void mouseMoveEvent(QMouseEvent* e) override; void mouseDoubleClickEvent(QMouseEvent* e) override; void wheelEvent (QWheelEvent* e)override { - m_wheelmove += e->delta() * .02; + m_wheelmove += e->angleDelta().y() * .02; updateGL(); }
  96. Download patch po/ko/ksudoku.po
  97. Download patch src/gui/ksudokuui.rc

    --- 4:18.04.1-1/src/gui/ksudokuui.rc 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/ksudokuui.rc 2019-09-17 11:38:40.000000000 +0000 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <gui name="ksudoku" - version="6" + version="7" xmlns="http://www.kde.org/standards/kxmlgui/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kxmlgui/1.0 @@ -9,6 +9,7 @@ <MenuBar> <Menu noMerge="1" name="game" ><text>&amp;Game</text> <Action group="game_merge" name="game_new" /> + <Action group="game_merge" name="game_restart" /> <Action group="game_merge" name="game_load" /> <Separator group="game_merge" /> <Action group="save_merge" name="game_save" /> @@ -44,6 +45,7 @@ <ToolBar name="mainToolBar"> <text>Main Toolbar</text> <Action name="game_new" /> + <Action name="game_restart" /> <Action name="game_print" /> </ToolBar>
  98. Download patch po/hr/ksudoku.po
  99. Download patch src/gui/history.h

    --- 4:18.04.1-1/src/gui/history.h 2018-05-06 04:08:27.000000000 +0000 +++ 4:19.12.1-0ubuntu1/src/gui/history.h 2019-09-17 11:38:40.000000000 +0000 @@ -183,7 +183,7 @@ class HistoryEvent { public: HistoryEvent(); HistoryEvent(int index, const CellInfo& changedCell); - HistoryEvent(const PuzzleState& newState); + explicit HistoryEvent(const PuzzleState& newState); bool applyTo(PuzzleState& puzzle); bool undoOn(PuzzleState& puzzle) const;
  100. Download patch po/hu/ksudoku.po
  101. ...

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: lxqt-sudo

lxqt-sudo (0.14.1-0ubuntu1) disco; urgency=medium * New upstream release. * Run wrap-and-sort. -- Simon Quigley <tsimonq2@ubuntu.com> Sat, 09 Mar 2019 13:20:31 -0600 lxqt-sudo (0.14.0-0ubuntu1) disco; urgency=medium * New upstream release. - Bump build dependencies. - Remove reverse-applicable patches. * Bump Standards-version to 4.3.0, no changes needed. * Bump debhelper compat to 12, no changes needed. * Add a new lxqt-sudo-l10n package. -- Simon Quigley <tsimonq2@ubuntu.com> Sat, 26 Jan 2019 00:55:00 -0600 lxqt-sudo (0.13.0-0ubuntu2) cosmic; urgency=medium * Change Uploaders to Ubuntu uploaders. * Bump Standards-version to 4.2.0, no changes needed. * Run wrap-and-sort. * Fix the layout and line break so text isn't cut off. -- Simon Quigley <tsimonq2@ubuntu.com> Mon, 20 Aug 2018 23:47:43 -0500 lxqt-sudo (0.13.0-0ubuntu1) cosmic; urgency=medium * New upstream release. * Update Vcs-* and Maintainer to Lubuntu values. * Update build dependencies. * Update copyright. -- Simon Quigley <tsimonq2@ubuntu.com> Tue, 22 May 2018 23:52:43 -0500

Modifications :
  1. Download patch debian/upstream/metadata

    --- 0.14.1-1/debian/upstream/metadata 2019-02-24 21:17:50.000000000 +0000 +++ 0.14.1-0ubuntu1/debian/upstream/metadata 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -Name: lxqt-sudo -Bug-Database: https://github.com/lxqt/lxqt-sudo/issues -Bug-Submit: https://github.com/lxqt/lxqt-sudo/issues/new -Changelog: https://github.com/lxqt/lxqt-sudo/blob/master/CHANGELOG -Repository: https://github.com/lxqt/lxqt-sudo -Repository-Browser: https://github.com/lxqt/lxqt-sudo -
  2. Download patch debian/rules

    --- 0.14.1-1/debian/rules 2019-02-24 21:17:50.000000000 +0000 +++ 0.14.1-0ubuntu1/debian/rules 2019-03-09 19:19:49.000000000 +0000 @@ -8,10 +8,8 @@ export DEB_BUILD_MAINT_OPTIONS = hardeni %: dh ${@} --buildsystem cmake -override_dh_missing: - dh_missing --fail-missing - override_dh_auto_configure: dh_auto_configure -- \ + -DPULL_TRANSLATIONS=OFF \ -DUPDATE_TRANSLATIONS=OFF \ -DCMAKE_BUILD_TYPE=RelWithDebInfo
  3. Download patch debian/compat

    --- 0.14.1-1/debian/compat 1970-01-01 00:00:00.000000000 +0000 +++ 0.14.1-0ubuntu1/debian/compat 2019-03-09 19:19:49.000000000 +0000 @@ -0,0 +1 @@ +12
  4. Download patch debian/control

    --- 0.14.1-1/debian/control 2019-02-24 21:21:49.000000000 +0000 +++ 0.14.1-0ubuntu1/debian/control 2019-03-09 19:20:24.000000000 +0000 @@ -1,30 +1,29 @@ Source: lxqt-sudo -Maintainer: LXQt Packaging Team <pkg-lxqt-devel@lists.alioth.debian.org> -Uploaders: Alf Gaida <agaida@siduction.org>, - ChangZhuo Chen (陳昌倬) <czchen@debian.org>, - Andrew Lee (李健秋) <ajqlee@debian.org> +Maintainer: Lubuntu Developers <lubuntu-devel@lists.ubuntu.com> +XSBC-Original-Maintainer: LXQt Packaging Team <pkg-lxqt-devel@lists.alioth.debian.org> +Uploaders: Simon Quigley <tsimonq2@ubuntu.com> Section: x11 Priority: optional -Build-Depends: debhelper-compat (= 12), +Build-Depends: debhelper (>= 12), libkf5windowsystem-dev, - liblxqt0-dev (>= 0.14.1~), + liblxqt0-dev (>= 0.14.0), libqt5svg5-dev, libqt5x11extras5-dev, libx11-dev Standards-Version: 4.3.0 -Vcs-Browser: https://salsa.debian.org/cgit/pkg-team/lxqt-sudo -Vcs-Git: https://salsa.debian.org/lxqt-team/lxqt-sudo.git +Vcs-Browser: https://phab.lubuntu.me/source/lxqt-sudo/ +Vcs-Git: https://phab.lubuntu.me/source/lxqt-sudo.git +XS-Debian-Vcs-Browser: https://salsa.debian.org/cgit/pkg-team/lxqt-sudo +XS-Debian-Vcs-Git: https://salsa.debian.org/lxqt-team/lxqt-sudo.git Homepage: https://github.com/lxqt/lxqt-sudo Package: lxqt-sudo Architecture: any -Depends: ${misc:Depends}, - ${shlibs:Depends} -Recommends: lxqt-sudo-l10n, - lxqt-qtplugin -Description: Graphical QT frontend for plain sudo - lxqt-sudo is a graphical QT frontend for plain sudo(8) (for requesting - optional password in GUI fashion). When invoked it simply spawns child sudo +Depends: ${misc:Depends}, ${shlibs:Depends} +Recommends: lxqt-qtplugin, lxqt-sudo-l10n +Description: Graphical Qt frontend for plain sudo + lxqt-sudo is a graphical Qt frontend for plain sudo(8) (for requesting + optional password in GUI fashion). When invoked it simply spawns child sudo process with requested command (and arguments). If sudo requests user's password, the GUI password dialog is shown and (after submit) the password is provided to sudo. @@ -33,15 +32,8 @@ Package: lxqt-sudo-l10n Architecture: all Multi-Arch: foreign Section: localization -Depends: ${misc:Depends}, - qttranslations5-l10n +Depends: qttranslations5-l10n, ${misc:Depends} Breaks: lxqt-sudo (<< 0.11.0) Replaces: lxqt-sudo (<< 0.11.0) Description: Language package for lxqt-sudo - lxqt-sudo is a graphical QT frontend for plain sudo(8) (for requesting - optional password in GUI fashion). When invoked it simply spawns child sudo - process with requested command (and arguments). If sudo requests user's - password, the GUI password dialog is shown and (after submit) the password is - provided to sudo. - . - This package contains the l10n files needed by the lxqt-sudo. + This package contains the l10n files needed by lxqt-sudo.
  5. Download patch debian/lxqt-sudo.install

    --- 0.14.1-1/debian/lxqt-sudo.install 2019-02-24 21:17:50.000000000 +0000 +++ 0.14.1-0ubuntu1/debian/lxqt-sudo.install 2019-03-09 19:20:24.000000000 +0000 @@ -1,6 +1,6 @@ -usr/share/man/man1/lxsu.1 -usr/share/man/man1/lxsudo.1 -usr/share/man/man1/lxqt-sudo.1 +usr/bin/lxqt-sudo usr/bin/lxsu usr/bin/lxsudo -usr/bin/lxqt-sudo +usr/share/man/man1/lxqt-sudo.1 +usr/share/man/man1/lxsu.1 +usr/share/man/man1/lxsudo.1
  6. Download patch debian/copyright

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: sudo

sudo (1.8.29-1ubuntu1) focal; urgency=medium * Merge from Debian unstable. Remaining changes: - debian/rules, debian/sudo.service, debian/sudo.sudo.init: stop shipping init script and service file, as they are no longer necessary. - debian/rules: + compile with --without-lecture --with-tty-tickets --enable-admin-flag + install man/man8/sudo_root.8 in both flavours + install apport hooks - debian/source_sudo.py, debian/sudo-ldap.dirs, debian/sudo.dirs: + add usr/share/apport/package-hooks - debian/sudo.pam: + Use pam_env to read /etc/environment and /etc/default/locale environment files. Reading ~/.pam_environment is not permitted due to security reasons. - debian/sudoers: + also grant admin group sudo access + include /snap/bin in the secure_path - debian/control, debian/rules: + use dh-autoreconf * Removed patches included in new version: - debian/patches/CVE-2019-14287.patch - debian/patches/CVE-2019-14287-2.patch -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Tue, 26 Nov 2019 13:13:21 -0500

Modifications :
  1. Download patch debian/sudo_root.8

    --- 1.8.29-1/debian/sudo_root.8 1970-01-01 00:00:00.000000000 +0000 +++ 1.8.29-1ubuntu1/debian/sudo_root.8 2019-11-26 18:13:09.000000000 +0000 @@ -0,0 +1,138 @@ +.TH sudo_root 8 "February 8, 2006" + +.SH NAME +sudo_root \- How to run administrative commands + +.SH SYNOPSIS + +.B sudo +.I command + +.B sudo \-i + +.SH INTRODUCTION + +By default, the password for the user "root" (the system +administrator) is locked. This means you cannot login as root or use +su. Instead, the installer will set up sudo to allow the user that is +created during install to run all administrative commands. + +This means that in the terminal you can use sudo for commands that +require root privileges. All programs in the menu will use a graphical +sudo to prompt for a password. When sudo asks for a password, it needs +.B your password, +this means that a root password is not needed. + +To run a command which requires root privileges in a terminal, simply +prepend +.B sudo +in front of it. To get an interactive root shell, use +.B sudo \-i\fR. + +.SH ALLOWING OTHER USERS TO RUN SUDO + +By default, only the user who installed the system is permitted to run +sudo. To add more administrators, i. e. users who can run sudo, you +have to add these users to the group 'sudo' by doing one of the +following steps: + +.IP * 2 +In a shell, do + +.RS 4 +.B sudo adduser +.I username +.B sudo +.RE + +.IP * 2 +Use the graphical "Users & Groups" program in the "System settings" +menu to add the new user to the +.B sudo +group. + +.SH BENEFITS OF USING SUDO + +The benefits of leaving root disabled by default include the following: + +.IP * 2 +Users do not have to remember an extra password, which they are likely to forget. +.IP * 2 +The installer is able to ask fewer questions. +.IP * 2 +It avoids the "I can do anything" interactive login by default \- you +will be prompted for a password before major changes can happen, which +should make you think about the consequences of what you are doing. +.IP * 2 +Sudo adds a log entry of the command(s) run (in \fB/var/log/auth.log\fR). +.IP * 2 +Every attacker trying to brute\-force their way into your box will +know it has an account named root and will try that first. What they +do not know is what the usernames of your other users are. +.IP * 2 +Allows easy transfer for admin rights, in a short term or long term +period, by adding and removing users from the sudo group, while not +compromising the root account. +.IP * 2 +sudo can be set up with a much more fine\-grained security policy. +.IP * 2 +On systems with more than one administrator using sudo avoids sharing +a password amongst them. + +.SH DOWNSIDES OF USING SUDO + +Although for desktops the benefits of using sudo are great, there are +possible issues which need to be noted: + +.IP * 2 +Redirecting the output of commands run with sudo can be confusing at +first. For instance consider + +.RS 4 +.B sudo ls > /root/somefile +.RE + +.RS 2 +will not work since it is the shell that tries to write to that file. You can use +.RE + +.RS 4 +.B ls | sudo tee /root/somefile +.RE + +.RS 2 +to get the behaviour you want. +.RE + +.IP * 2 +In a lot of office environments the ONLY local user on a system is +root. All other users are imported using NSS techniques such as +nss\-ldap. To setup a workstation, or fix it, in the case of a network +failure where nss\-ldap is broken, root is required. This tends to +leave the system unusable. An extra local user, or an enabled root +password is needed here. + +.SH GOING BACK TO A TRADITIONAL ROOT ACCOUNT + +.B This is not recommended! + +To enable the root account (i.e. set a password) use: + +.RS 4 +.B sudo passwd root +.RE + +Afterwards, edit the sudo configuration with +.B sudo visudo +and comment out the line + +.RS 4 +%sudo ALL=(ALL) ALL +.RE + +to disable sudo access to members of the sudo group. + +.SH SEE ALSO +.BR sudo (8), +.B https://wiki.ubuntu.com/RootSudo +
  2. Download patch debian/sudo.pam

    --- 1.8.29-1/debian/sudo.pam 2019-10-29 01:27:42.000000000 +0000 +++ 1.8.29-1ubuntu1/debian/sudo.pam 2019-11-26 18:13:09.000000000 +0000 @@ -1,5 +1,7 @@ #%PAM-1.0 +session required pam_env.so readenv=1 user_readenv=0 +session required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0 @include common-auth @include common-account @include common-session-noninteractive
  3. Download patch debian/sudoers

    --- 1.8.29-1/debian/sudoers 2019-10-29 01:27:42.000000000 +0000 +++ 1.8.29-1ubuntu1/debian/sudoers 2019-11-26 18:13:09.000000000 +0000 @@ -8,7 +8,7 @@ # Defaults env_reset Defaults mail_badpass -Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" +Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" # Host alias specification @@ -19,6 +19,9 @@ Defaults secure_path="/usr/local/sbin:/u # User privilege specification root ALL=(ALL:ALL) ALL +# Members of the admin group may gain root privileges +%admin ALL=(ALL) ALL + # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
  4. Download patch debian/rules

    --- 1.8.29-1/debian/rules 2019-10-29 01:27:42.000000000 +0000 +++ 1.8.29-1ubuntu1/debian/rules 2019-11-26 18:13:09.000000000 +0000 @@ -15,9 +15,8 @@ ifeq ($(DEB_HOST_ARCH_OS),linux) endif reconf-stamp: - cp -f /usr/share/misc/config.sub config.sub - cp -f /usr/share/misc/config.guess config.guess - autoconf -I m4 + dh_testdir + dh_autoreconf touch $@ configure: configure-stamp @@ -42,7 +41,9 @@ configure-stamp: reconf-stamp --with-timeout=15 \ --with-password-timeout=0 \ --with-passprompt="[sudo] password for %p: " \ + --without-lecture --with-tty-tickets \ --disable-root-mailer \ + --enable-admin-flag \ --with-sendmail=/usr/sbin/sendmail \ --with-rundir=/run/sudo \ --libexecdir=/usr/lib \ @@ -66,7 +67,9 @@ configure-stamp: reconf-stamp --with-timeout=15 \ --with-password-timeout=0 \ --with-passprompt="[sudo] password for %p: " \ + --without-lecture --with-tty-tickets \ --disable-root-mailer \ + --enable-admin-flag \ --disable-setresuid \ --with-sendmail=/usr/sbin/sendmail \ --with-rundir=/run/sudo \ @@ -98,6 +101,7 @@ clean: rm -f configure-stamp build-stamp rm -rf build-simple build-ldap rm -f config.cache + dh_autoreconf_clean dh_clean install: build-stamp @@ -140,6 +144,16 @@ install: build-stamp install -o root -g root -m 0644 debian/sudo-ldap.lintian \ debian/sudo-ldap/usr/share/lintian/overrides/sudo-ldap + install -o root -g root -m 0644 debian/sudo_root.8 \ + debian/sudo/usr/share/man/man8/sudo_root.8 + install -o root -g root -m 0644 debian/sudo_root.8 \ + debian/sudo-ldap/usr/share/man/man8/sudo_root.8 + + install -o root -g root -m 0644 $(CURDIR)/debian/source_sudo.py \ + debian/sudo/usr/share/apport/package-hooks/source_sudo.py + install -o root -g root -m 0644 $(CURDIR)/debian/source_sudo.py \ + debian/sudo-ldap/usr/share/apport/package-hooks/source_sudo.py + install -o root -g root -m 0440 debian/sudoers \ debian/sudo/etc/sudoers install -o root -g root -m 0440 debian/sudoers \ @@ -162,8 +176,6 @@ binary-arch: build install dh_testdir dh_testroot dh_installdocs -A - dh_installinit -psudo --name=sudo - dh_installinit -psudo-ldap --name=sudo-ldap dh_installman -A dh_installinfo -A dh_installchangelogs ChangeLog
  5. Download patch debian/control

    --- 1.8.29-1/debian/control 2019-10-29 01:27:42.000000000 +0000 +++ 1.8.29-1ubuntu1/debian/control 2019-11-26 18:13:09.000000000 +0000 @@ -1,8 +1,10 @@ Source: sudo Section: admin Priority: optional -Maintainer: Bdale Garbee <bdale@gag.com> -Build-Depends: debhelper (>= 10), libpam0g-dev, libldap2-dev, libsasl2-dev, libselinux1-dev [linux-any], autoconf, bison, flex, libaudit-dev [linux-any], mandoc +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> +XSBC-Original-Maintainer: Bdale Garbee <bdale@gag.com> +Build-Depends: debhelper (>= 10), libpam0g-dev, libldap2-dev, libsasl2-dev, libselinux1-dev [linux-any], autoconf, autotools-dev, bison, flex, libaudit-dev [linux-any], mandoc, + dh-autoreconf, Standards-Version: 4.1.1 Vcs-Git: https://salsa.debian.org/debian/sudo.git Vcs-Browser: https://salsa.debian.org/debian/sudo
  6. Download patch debian/sudo-ldap.dirs

    --- 1.8.29-1/debian/sudo-ldap.dirs 2019-10-29 01:27:42.000000000 +0000 +++ 1.8.29-1ubuntu1/debian/sudo-ldap.dirs 2019-11-26 18:13:09.000000000 +0000 @@ -7,3 +7,4 @@ usr/share/man/man5 usr/sbin usr/share/doc/sudo-ldap usr/share/lintian/overrides +usr/share/apport/package-hooks
  7. Download patch debian/sudo.dirs

    --- 1.8.29-1/debian/sudo.dirs 2019-10-29 01:27:42.000000000 +0000 +++ 1.8.29-1ubuntu1/debian/sudo.dirs 2019-11-26 18:13:09.000000000 +0000 @@ -7,3 +7,4 @@ usr/share/man/man5 usr/sbin usr/share/doc/sudo usr/share/lintian/overrides +usr/share/apport/package-hooks
  8. Download patch debian/source_sudo.py

    --- 1.8.29-1/debian/source_sudo.py 1970-01-01 00:00:00.000000000 +0000 +++ 1.8.29-1ubuntu1/debian/source_sudo.py 2019-11-26 18:13:09.000000000 +0000 @@ -0,0 +1,33 @@ +#!/usr/bin/python + +'''Apport package hook for sudo + +(c) 2010 Canonical Ltd. +Contributors: +Marc Deslauriers <marc.deslauriers@canonical.com> + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. See http://www.gnu.org/copyleft/gpl.html for +the full text of the license. +''' + +from apport.hookutils import * + +def add_info(report, ui): + + response = ui.yesno("The contents of your /etc/sudoers file may help developers diagnose your bug more quickly, however, it may contain sensitive information. Do you want to include it in your bug report?") + + if response == None: #user cancelled + raise StopIteration + + elif response == True: + # This needs to be run as root + report['Sudoers'] = root_command_output(['/bin/cat', '/etc/sudoers']) + report['VisudoCheck'] = root_command_output(['/usr/sbin/visudo', '-c']) + + elif response == False: + ui.information("The contents of your /etc/sudoers will NOT be included in the bug report.") + +
  1. ksudoku
  2. lxqt-sudo
  3. sudo