gnu: Add tipp10 touch typing tutor.
* gnu/packages/education.scm (touch10): New variable. * gnu/packages/patches/tipp10-fix-compiling.patch, gnu/packages/patches/tipp10-remove-license-code.patch: New files. * gnu/local.mk (dist_patch_DATA): Register them.
This commit is contained in:
		
							parent
							
								
									ed824a36c4
								
							
						
					
					
						commit
						b84257c0ff
					
				
					 4 changed files with 605 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -896,6 +896,8 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/texi2html-i18n.patch			\
 | 
			
		||||
  %D%/packages/patches/tidy-CVE-2015-5522+5523.patch		\
 | 
			
		||||
  %D%/packages/patches/tinyxml-use-stl.patch			\
 | 
			
		||||
  %D%/packages/patches/tipp10-fix-compiling.patch		\
 | 
			
		||||
  %D%/packages/patches/tipp10-remove-license-code.patch		\
 | 
			
		||||
  %D%/packages/patches/tk-find-library.patch			\
 | 
			
		||||
  %D%/packages/patches/ttf2eot-cstddef.patch			\
 | 
			
		||||
  %D%/packages/patches/ttfautohint-source-date-epoch.patch	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 | 
			
		||||
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
			
		||||
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -138,3 +139,60 @@ of categories with some of the activities available in that category.
 | 
			
		|||
@end enumerate
 | 
			
		||||
")
 | 
			
		||||
    (license license:gpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public tipp10
 | 
			
		||||
  (package
 | 
			
		||||
    (name "tipp10")
 | 
			
		||||
    (version "2.1.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              ;; guix download is not able to handle the download links on the
 | 
			
		||||
              ;; home-page, which use '<meta http-equiv="refresh" …>'
 | 
			
		||||
              (uri (string-append "mirror://debian/pool/main/"
 | 
			
		||||
                                  "t/tipp10/tipp10_2.1.0.orig.tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0d387b404j88gsv6kv0rb7wxr23v5g5vl6s5l7602x8pxf7slbbx"))
 | 
			
		||||
              (patches (search-patches "tipp10-fix-compiling.patch"
 | 
			
		||||
                                       "tipp10-remove-license-code.patch"))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f ; packages has no tests
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'disable-new-version-check
 | 
			
		||||
          (lambda _
 | 
			
		||||
            ;; Make new version check to default to false.
 | 
			
		||||
            ;; TODO: Remove the checkbox from the dialog and the check itself
 | 
			
		||||
            (substitute* '("widget/settingspages.cpp" "widget/mainwindow.cpp")
 | 
			
		||||
              (("settings.value(\"check_new_version\", true)")
 | 
			
		||||
               "settings.value(\"check_new_version\", false)"))))
 | 
			
		||||
         (replace 'configure
 | 
			
		||||
          (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
            (let ((out (assoc-ref outputs "out")))
 | 
			
		||||
              ;; Make program honor $PREFIX
 | 
			
		||||
              (substitute* "tipp10.pro"
 | 
			
		||||
                (("\\.path = /usr/") (string-append ".path = " out "/")))
 | 
			
		||||
              (substitute* "def/defines.h"
 | 
			
		||||
                (("\"/usr/") (string-append "\"" out "/")))
 | 
			
		||||
              ;; Recreate Makefile
 | 
			
		||||
              (zero? (system* "qmake"))))))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("qt4" ,qt-4)
 | 
			
		||||
       ("sqlite" ,sqlite)))
 | 
			
		||||
    (home-page "https://www.tipp10.com/")
 | 
			
		||||
    (synopsis "Touch typing tutor")
 | 
			
		||||
    (description "Tipp10 is a touch typing tutor for Windows, Mac OS and
 | 
			
		||||
Linux.  The ingenious thing about the software is its intelligence feature:
 | 
			
		||||
Characters that are mistyped are repeated more frequently.  Beginners will
 | 
			
		||||
find their way around right away so they can start practicing without a hitch.
 | 
			
		||||
 | 
			
		||||
Useful support functions and an extensive progress tracker, topical lessons
 | 
			
		||||
and the ability to create your own practice lessons make learning to type
 | 
			
		||||
easy.
 | 
			
		||||
 | 
			
		||||
Note: To change the language settings choose Datei (File) →
 | 
			
		||||
Grundeinstellungen (Generell Settings) → Sprache (Language) and change from
 | 
			
		||||
Deutsch to English. The you have restart the program to have the change take
 | 
			
		||||
effect.")
 | 
			
		||||
    (license license:gpl2)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										213
									
								
								gnu/packages/patches/tipp10-fix-compiling.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								gnu/packages/patches/tipp10-fix-compiling.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,213 @@
 | 
			
		|||
Description: Debian patches to make tipp10 compile
 | 
			
		||||
Author: Christoph Martin <chrism@debian.org>
 | 
			
		||||
Last-Update: 2016-07-20
 | 
			
		||||
 | 
			
		||||
https://sources.debian.net/data/main/t/tipp10/2.1.0-2/debian/patches/0001-FixCompiling
 | 
			
		||||
 | 
			
		||||
--- a/widget/tickerboard.cpp
 | 
			
		||||
+++ b/widget/tickerboard.cpp
 | 
			
		||||
@@ -97,7 +97,8 @@ void TickerBoard::startTicker(bool wasPa
 | 
			
		||||
 
 | 
			
		||||
 		if (tickerSpeed == 50) {
 | 
			
		||||
 			scrollOffset = 290;
 | 
			
		||||
-			scroll(-290, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect());
 | 
			
		||||
+			const QRect qr = QRect(10, 15, 590, 35);
 | 
			
		||||
+			scroll(-290, 0, qr); //contentsRect());
 | 
			
		||||
 		}
 | 
			
		||||
 
 | 
			
		||||
 		startFlag = true;
 | 
			
		||||
@@ -153,7 +154,8 @@ void TickerBoard::changeChar() {
 | 
			
		||||
 			scrollOffset = 0;
 | 
			
		||||
 		} else {
 | 
			
		||||
 			scrollOffset = 290;
 | 
			
		||||
-			scroll(-290, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect());
 | 
			
		||||
+			const QRect qr = QRect(10, 15, 590, 35);
 | 
			
		||||
+			scroll(-290, 0, qr); //contentsRect());
 | 
			
		||||
 		}
 | 
			
		||||
 		splitLesson();
 | 
			
		||||
 	}
 | 
			
		||||
@@ -242,7 +244,8 @@ void TickerBoard::progress() {
 | 
			
		||||
 
 | 
			
		||||
 				// Move ticker 1 pixel to left
 | 
			
		||||
 				scrollOffset++;
 | 
			
		||||
-				scroll(-1, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect());
 | 
			
		||||
+				const QRect qr = QRect(10, 15, 590, 35);
 | 
			
		||||
+				scroll(-1, 0, qr); //contentsRect());
 | 
			
		||||
 
 | 
			
		||||
 				if ((lessonOffset - scrollOffset) <= 30) {
 | 
			
		||||
 					setSpeed(tickerSpeed);
 | 
			
		||||
@@ -265,14 +268,16 @@ void TickerBoard::progress() {
 | 
			
		||||
 			// 160 pixels overage (because the user must see at least the next word)
 | 
			
		||||
 			if ((lessonOffset - scrollOffset) > 200) {
 | 
			
		||||
 				scrollOffset += (lessonOffset - scrollOffset) - 200;
 | 
			
		||||
-				scroll(-((lessonOffset - scrollOffset) - 200), 0, QRect::QRect(10, 15, 590, 35)); //contentsRect());
 | 
			
		||||
+				const QRect qr = QRect(10, 15, 590, 35);
 | 
			
		||||
+				scroll(-((lessonOffset - scrollOffset) - 200), 0, qr); //contentsRect());
 | 
			
		||||
 			}
 | 
			
		||||
 		} else {
 | 
			
		||||
 			// If the user types faster than the ticker, move ticker faster after
 | 
			
		||||
 			// 160 pixels overage (because the user must see at least the next word)
 | 
			
		||||
 			if ((lessonOffset - scrollOffset) > 280) {
 | 
			
		||||
 				scrollOffset += 570;
 | 
			
		||||
-				scroll(-570, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect());
 | 
			
		||||
+				const QRect qr = QRect(10, 15, 590, 35);
 | 
			
		||||
+				scroll(-570, 0, qr); //contentsRect());
 | 
			
		||||
 			}
 | 
			
		||||
 
 | 
			
		||||
 		}
 | 
			
		||||
--- a/widget/settingspages.cpp
 | 
			
		||||
+++ b/widget/settingspages.cpp
 | 
			
		||||
@@ -501,7 +501,7 @@ void DatabasePage::writeSettings() {
 | 
			
		||||
 	QSettings settings;
 | 
			
		||||
 	#endif
 | 
			
		||||
 	settings.beginGroup("database");
 | 
			
		||||
-	settings.setValue("pathpro", lineDatabasePath->text() + "/" + QString::QString(APP_USER_DB));
 | 
			
		||||
+	settings.setValue("pathpro", lineDatabasePath->text() + "/" + QString(APP_USER_DB));
 | 
			
		||||
 	settings.endGroup();
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
--- a/widget/lessondialog.cpp
 | 
			
		||||
+++ b/widget/lessondialog.cpp
 | 
			
		||||
@@ -89,7 +89,7 @@ void LessonDialog::updateContent() {
 | 
			
		||||
 			*lessonData = lineLessonContent->toPlainText().split("\n", QString::SkipEmptyParts);
 | 
			
		||||
 			// Delete empty lines
 | 
			
		||||
 			for (int i = 0; i < lessonData->size(); i++) {
 | 
			
		||||
-				if (QString::QString(lessonData->at(i).toLocal8Bit().constData()).simplified() == "") {
 | 
			
		||||
+				if (QString(lessonData->at(i).toLocal8Bit().constData()).simplified() == "") {
 | 
			
		||||
 					lessonData->removeAt(i);
 | 
			
		||||
 				}
 | 
			
		||||
 			}
 | 
			
		||||
@@ -259,7 +259,7 @@ void LessonDialog::clickSave() {
 | 
			
		||||
 	contentList = lineLessonContent->toPlainText().split("\n", QString::SkipEmptyParts);
 | 
			
		||||
 	// Delete empty lines
 | 
			
		||||
 	for (i = 0; i < contentList.size(); i++) {
 | 
			
		||||
-		if (QString::QString(contentList.at(i).toLocal8Bit().constData()).simplified() == "") {
 | 
			
		||||
+		if (QString(contentList.at(i).toLocal8Bit().constData()).simplified() == "") {
 | 
			
		||||
 			contentList.removeAt(i);
 | 
			
		||||
 		}
 | 
			
		||||
 	}
 | 
			
		||||
--- a/sql/chartablesql.cpp
 | 
			
		||||
+++ b/sql/chartablesql.cpp
 | 
			
		||||
@@ -57,7 +57,7 @@ QVariant CharSqlModel::data(const QModel
 | 
			
		||||
 			// Read the unicode value
 | 
			
		||||
 			unicode = value.toInt();
 | 
			
		||||
 			// Convert unicode to a char
 | 
			
		||||
-			unicodeToChar = QString::QString(QChar(unicode)); //"\'" + QString::QString(QChar(unicode)) + "\'";
 | 
			
		||||
+			unicodeToChar = QString(QChar(unicode)); //"\'" + QString::QString(QChar(unicode)) + "\'";
 | 
			
		||||
 			return unicodeToChar;
 | 
			
		||||
 		} else {
 | 
			
		||||
 			// Last column (error weight)
 | 
			
		||||
--- a/sql/startsql.cpp
 | 
			
		||||
+++ b/sql/startsql.cpp
 | 
			
		||||
@@ -344,7 +344,7 @@ bool StartSql::updateOwnLesson(QString l
 | 
			
		||||
 		for (i = 0; i < content.size(); i++) {
 | 
			
		||||
 			//simplifiedContent = QString::QString(
 | 
			
		||||
 			//	content.at(i)).replace(QChar(0x27), "''", Qt::CaseSensitive).simplified();
 | 
			
		||||
-			simplifiedContent = trim(QString::QString(
 | 
			
		||||
+			simplifiedContent = trim(QString(
 | 
			
		||||
 				content.at(i)).replace(QChar(0x27), "''", Qt::CaseSensitive));
 | 
			
		||||
 
 | 
			
		||||
 			if (!query.exec("INSERT INTO own_content VALUES(NULL,'" +
 | 
			
		||||
--- a/def/defines.h
 | 
			
		||||
+++ b/def/defines.h
 | 
			
		||||
@@ -27,9 +27,9 @@ Foundation, Inc., 51 Franklin Street, Fi
 | 
			
		||||
 #define DEFINES_H
 | 
			
		||||
 
 | 
			
		||||
 // OS constants
 | 
			
		||||
-#define APP_WIN						true
 | 
			
		||||
+#define APP_WIN						false
 | 
			
		||||
 #define APP_MAC						false
 | 
			
		||||
-#define APP_X11						false
 | 
			
		||||
+#define APP_X11						true
 | 
			
		||||
 #define APP_PORTABLE				false //at least one of the 3 OS must be true too!
 | 
			
		||||
 
 | 
			
		||||
 // Languages
 | 
			
		||||
@@ -47,6 +47,7 @@ Foundation, Inc., 51 Franklin Street, Fi
 | 
			
		||||
 #define APP_URL 					"http://www.tipp10.com"
 | 
			
		||||
 #define APP_DB 						"tipp10v2.template"
 | 
			
		||||
 #define APP_USER_DB					"tipp10v2.db"
 | 
			
		||||
+#define APP_SHARE_DIR					"/usr/share/tipp10"
 | 
			
		||||
 
 | 
			
		||||
 // Update constants
 | 
			
		||||
 #define UPDATE_URL 					"www.tipp10.com"
 | 
			
		||||
--- a/tipp10.pro
 | 
			
		||||
+++ b/tipp10.pro
 | 
			
		||||
@@ -88,3 +88,15 @@ SOURCES         += 	main.cpp \
 | 
			
		||||
                     sql/startsql.cpp \
 | 
			
		||||
                     games/abcrainwidget.cpp \
 | 
			
		||||
                     games/charball.cpp
 | 
			
		||||
+
 | 
			
		||||
+target.path = /usr/bin/
 | 
			
		||||
+INSTALLS += target
 | 
			
		||||
+share.path = /usr/share/tipp10/
 | 
			
		||||
+share.files = release/* *wav
 | 
			
		||||
+INSTALLS += share
 | 
			
		||||
+desktop.path = /usr/share/applications/
 | 
			
		||||
+desktop.files = tipp10.desktop
 | 
			
		||||
+INSTALLS += desktop
 | 
			
		||||
+pixmap.path = /usr/share/pixmaps/
 | 
			
		||||
+pixmap.files = tipp10.png
 | 
			
		||||
+INSTALLS += pixmap
 | 
			
		||||
--- a/sql/connection.h
 | 
			
		||||
+++ b/sql/connection.h
 | 
			
		||||
@@ -179,11 +179,13 @@ static bool createConnection() {
 | 
			
		||||
 				CANCEL_NO, "Betroffener Pfad:\n" + dbPath);*/
 | 
			
		||||
 			// Try to create new databae in user path
 | 
			
		||||
 			// Exist a database in the program dir?
 | 
			
		||||
-			if (QFile::exists(QCoreApplication::applicationDirPath() + "/" + dbNameTemplate)) {
 | 
			
		||||
+			// if (QFile::exists(QCoreApplication::applicationDirPath() + "/" + dbNameTemplate)) {
 | 
			
		||||
+		  	if (QFile::exists(QString(APP_SHARE_DIR) + "/" + dbNameTemplate)) {
 | 
			
		||||
 			//if (QFile::exists(":/" + dbNameTemplate)) {
 | 
			
		||||
 				// A database exist in the program dir
 | 
			
		||||
 				// -> copy database to user home dir
 | 
			
		||||
-				QFile file(QCoreApplication::applicationDirPath() + "/" + dbNameTemplate);
 | 
			
		||||
+				// QFile file(QCoreApplication::applicationDirPath() + "/" + dbNameTemplate);
 | 
			
		||||
+			  	QFile file(QString(APP_SHARE_DIR) + "/" + dbNameTemplate);
 | 
			
		||||
 				//QFile file(":/" + dbNameTemplate);
 | 
			
		||||
 				if (file.copy(dbPath)) {
 | 
			
		||||
 					QFile::setPermissions(dbPath, QFile::permissions(dbPath) | QFile::WriteUser);
 | 
			
		||||
@@ -229,7 +231,8 @@ static bool createConnection() {
 | 
			
		||||
 		// Exist a database in user's home dir?
 | 
			
		||||
 		if (!QFile::exists(dbPath)) {
 | 
			
		||||
 			// Exist a database template in the program dir?
 | 
			
		||||
-			dbPath = QCoreApplication::applicationDirPath() + "/" + dbNameTemplate;
 | 
			
		||||
+			// dbPath = QCoreApplication::applicationDirPath() + "/" + dbNameTemplate;
 | 
			
		||||
+		  	dbPath = QString(APP_SHARE_DIR) + "/" + dbNameTemplate;
 | 
			
		||||
 			//dbPath = ":/" + dbNameTemplate;
 | 
			
		||||
 			if (QFile::exists(dbPath)) {
 | 
			
		||||
 				// A database template exist in the program dir
 | 
			
		||||
--- a/widget/helpbrowser.cpp
 | 
			
		||||
+++ b/widget/helpbrowser.cpp
 | 
			
		||||
@@ -52,13 +52,15 @@ HelpBrowser::HelpBrowser(QString link, Q
 | 
			
		||||
     textBrowser->setOpenExternalLinks(true);
 | 
			
		||||
 	
 | 
			
		||||
     textBrowser->setSource(QString("file:///") + 
 | 
			
		||||
-    	QCoreApplication::applicationDirPath() + 
 | 
			
		||||
+	// QCoreApplication::applicationDirPath() + 
 | 
			
		||||
+    	APP_SHARE_DIR + 
 | 
			
		||||
     	QString("/help/") + language + QString("/index.html"));
 | 
			
		||||
     	
 | 
			
		||||
     if (link != "") {
 | 
			
		||||
     
 | 
			
		||||
 		textBrowser->setSource(QString("file:///") + 
 | 
			
		||||
-			QCoreApplication::applicationDirPath() + 
 | 
			
		||||
+			// QCoreApplication::applicationDirPath() + 
 | 
			
		||||
+			APP_SHARE_DIR + 
 | 
			
		||||
 			QString("/help/") + language + QString("/content/") + link);
 | 
			
		||||
 			
 | 
			
		||||
 	}
 | 
			
		||||
--- a/tipp10.desktop
 | 
			
		||||
+++ b/tipp10.desktop
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
 [Desktop Entry]
 | 
			
		||||
-Encoding=UTF-8
 | 
			
		||||
 Name=TIPP10
 | 
			
		||||
 Comment=Touch Typing Tutor
 | 
			
		||||
 Comment[de]=10-Finger-Schreibtrainer
 | 
			
		||||
-Exec=tipp10
 | 
			
		||||
+Exec=/usr/bin/tipp10
 | 
			
		||||
 Icon=tipp10.png
 | 
			
		||||
 Terminal=false
 | 
			
		||||
 Type=Application
 | 
			
		||||
 Categories=Education;
 | 
			
		||||
+Keywords=learning;touchtyping
 | 
			
		||||
							
								
								
									
										332
									
								
								gnu/packages/patches/tipp10-remove-license-code.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										332
									
								
								gnu/packages/patches/tipp10-remove-license-code.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,332 @@
 | 
			
		|||
Description: Remove license dialog and license key checking
 | 
			
		||||
 | 
			
		||||
https://sources.debian.net/data/main/t/tipp10/2.1.0-2/debian/patches/0002-RemoveLicenseCode
 | 
			
		||||
 | 
			
		||||
--- a/main.cpp
 | 
			
		||||
+++ b/main.cpp
 | 
			
		||||
@@ -33,7 +33,6 @@ Foundation, Inc., 51 Franklin Street, Fi
 | 
			
		||||
 #include "def/defines.h"
 | 
			
		||||
 #include "sql/connection.h"
 | 
			
		||||
 #include "widget/mainwindow.h"
 | 
			
		||||
-#include "widget/licensedialog.h"
 | 
			
		||||
 #include "widget/illustrationdialog.h"
 | 
			
		||||
 
 | 
			
		||||
 int main(int argc, char *argv[]) {
 | 
			
		||||
@@ -59,7 +58,7 @@ int main(int argc, char *argv[]) {
 | 
			
		||||
 	QSettings settings;
 | 
			
		||||
 	#endif
 | 
			
		||||
 
 | 
			
		||||
-	// Read/write language, license key and show illustration flag
 | 
			
		||||
+	// Read/write language and show illustration flag
 | 
			
		||||
 	settings.beginGroup("general");
 | 
			
		||||
 	QString languageGui = settings.value("language_gui",
 | 
			
		||||
 		QLocale::system().name()).toString();
 | 
			
		||||
@@ -101,7 +100,6 @@ int main(int argc, char *argv[]) {
 | 
			
		||||
 	QString languageLesson = settings.value("language_lesson",
 | 
			
		||||
 		"").toString();
 | 
			
		||||
 
 | 
			
		||||
-	QString licenseKey = settings.value("licensekey", "").toString();
 | 
			
		||||
 	bool showIllustration = settings.value("check_illustration", true).toBool();
 | 
			
		||||
 	bool useNativeStyle = settings.value("check_native_style", false).toBool();
 | 
			
		||||
 	settings.endGroup();
 | 
			
		||||
--- a/tipp10.pro
 | 
			
		||||
+++ b/tipp10.pro
 | 
			
		||||
@@ -43,7 +43,6 @@ HEADERS         += 	def/defines.h \
 | 
			
		||||
                     widget/helpbrowser.h \
 | 
			
		||||
                     widget/companylogo.h \
 | 
			
		||||
                     widget/errormessage.h \
 | 
			
		||||
-                    widget/licensedialog.h \
 | 
			
		||||
                     widget/txtmessagedialog.h \
 | 
			
		||||
                     widget/checkversion.h \
 | 
			
		||||
                     sql/connection.h \
 | 
			
		||||
@@ -78,7 +77,6 @@ SOURCES         += 	main.cpp \
 | 
			
		||||
                     widget/helpbrowser.cpp \
 | 
			
		||||
                     widget/companylogo.cpp \
 | 
			
		||||
                     widget/errormessage.cpp \
 | 
			
		||||
-                    widget/licensedialog.cpp \
 | 
			
		||||
                     widget/txtmessagedialog.cpp \
 | 
			
		||||
                     widget/checkversion.cpp \
 | 
			
		||||
                     sql/lessontablesql.cpp \
 | 
			
		||||
--- a/widget/licensedialog.cpp
 | 
			
		||||
+++ /dev/null
 | 
			
		||||
@@ -1,168 +0,0 @@
 | 
			
		||||
-/*
 | 
			
		||||
-Copyright (c) 2006-2009, Tom Thielicke IT Solutions
 | 
			
		||||
-
 | 
			
		||||
-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.
 | 
			
		||||
-
 | 
			
		||||
-This program is distributed in the hope that it will be useful,
 | 
			
		||||
-but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
-GNU General Public License for more details.
 | 
			
		||||
-
 | 
			
		||||
-You should have received a copy of the GNU General Public License
 | 
			
		||||
-along with this program; if not, write to the Free Software
 | 
			
		||||
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
			
		||||
-02110-1301, USA.
 | 
			
		||||
-*/
 | 
			
		||||
-
 | 
			
		||||
-/****************************************************************
 | 
			
		||||
-**
 | 
			
		||||
-** Implementation of the LicenseDialog class
 | 
			
		||||
-** File name: licensedialog.cpp
 | 
			
		||||
-**
 | 
			
		||||
-****************************************************************/
 | 
			
		||||
-
 | 
			
		||||
-#include <QHBoxLayout>
 | 
			
		||||
-#include <QVBoxLayout>
 | 
			
		||||
-#include <QMessageBox>
 | 
			
		||||
-#include <QSettings>
 | 
			
		||||
-#include <QCoreApplication>
 | 
			
		||||
-
 | 
			
		||||
-#include "licensedialog.h"
 | 
			
		||||
-#include "def/defines.h"
 | 
			
		||||
-
 | 
			
		||||
-LicenseDialog::LicenseDialog(QWidget *parent) : QDialog(parent) {
 | 
			
		||||
-
 | 
			
		||||
-	setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint);
 | 
			
		||||
-
 | 
			
		||||
-	setWindowTitle(tr("Lizenznummer"));
 | 
			
		||||
-	setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME)));
 | 
			
		||||
-
 | 
			
		||||
-	// Create texbox
 | 
			
		||||
-    createLineEdit();
 | 
			
		||||
-
 | 
			
		||||
-	// Create buttons
 | 
			
		||||
-    createButtons();
 | 
			
		||||
-
 | 
			
		||||
-	// Set the layout of all widgets created above
 | 
			
		||||
-	createLayout();
 | 
			
		||||
-
 | 
			
		||||
-	lineLicensing->setFocus();
 | 
			
		||||
-}
 | 
			
		||||
-
 | 
			
		||||
-void LicenseDialog::createButtons() {
 | 
			
		||||
-	//Buttons
 | 
			
		||||
-	buttonOk = new QPushButton(this);
 | 
			
		||||
-	buttonDemo = new QPushButton(this);
 | 
			
		||||
-
 | 
			
		||||
-	buttonOk->setText(tr("&Ok"));
 | 
			
		||||
-	buttonDemo->setText(tr("&Demo starten"));
 | 
			
		||||
-	buttonDemo->setToolTip(tr("Im Demo-Modus koennen pro Lektion nur\n"
 | 
			
		||||
-		"10 Schriftzeichen eingegeben werden"));
 | 
			
		||||
-
 | 
			
		||||
-	buttonOk->setDefault(true);
 | 
			
		||||
-	// Widget connections
 | 
			
		||||
-    connect(buttonOk, SIGNAL(clicked()), this, SLOT(clickOk()));
 | 
			
		||||
-    connect(buttonDemo, SIGNAL(clicked()), this, SLOT(clickDemo()));
 | 
			
		||||
-}
 | 
			
		||||
-
 | 
			
		||||
-void LicenseDialog::createLineEdit() {
 | 
			
		||||
-
 | 
			
		||||
-	lineLicensing = new QLineEdit();
 | 
			
		||||
-	lineLicensing->setInputMask(">NNNNNNNNNNNNNN");
 | 
			
		||||
-
 | 
			
		||||
-	labelLicensing = new QLabel(tr("Bitte geben Sie Ihre Lizenznummer "
 | 
			
		||||
-		"(ohne Leerzeichen) ein, "
 | 
			
		||||
-		"die Sie im Arbeitsbuch (Schulbuch) auf Seite 3 finden:"));
 | 
			
		||||
-
 | 
			
		||||
-	labelLicensing->setWordWrap(true);
 | 
			
		||||
-}
 | 
			
		||||
-
 | 
			
		||||
-void LicenseDialog::createLayout() {
 | 
			
		||||
-	// Button layout horizontal
 | 
			
		||||
-	QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout;
 | 
			
		||||
-    buttonLayoutHorizontal->addStretch(1);
 | 
			
		||||
-    buttonLayoutHorizontal->addWidget(buttonDemo);
 | 
			
		||||
-    buttonLayoutHorizontal->addWidget(buttonOk);
 | 
			
		||||
-	// Full layout of all widgets vertical
 | 
			
		||||
-	QVBoxLayout *mainLayout = new QVBoxLayout;
 | 
			
		||||
-    mainLayout->addSpacing(1);
 | 
			
		||||
-    mainLayout->addWidget(labelLicensing);
 | 
			
		||||
-    mainLayout->addSpacing(1);
 | 
			
		||||
-    mainLayout->addWidget(lineLicensing);
 | 
			
		||||
-    mainLayout->addSpacing(1);
 | 
			
		||||
-    mainLayout->addLayout(buttonLayoutHorizontal);
 | 
			
		||||
-    mainLayout->setMargin(15);
 | 
			
		||||
-    mainLayout->setSpacing(15);
 | 
			
		||||
-    // Pass layout to parent widget (this)
 | 
			
		||||
-	this->setLayout(mainLayout);
 | 
			
		||||
-}
 | 
			
		||||
-
 | 
			
		||||
-void LicenseDialog::clickOk() {
 | 
			
		||||
-
 | 
			
		||||
-	// Check license key
 | 
			
		||||
-	if (!checkLicenseKey(lineLicensing->text())) {
 | 
			
		||||
-
 | 
			
		||||
-		// License key is wrong
 | 
			
		||||
-
 | 
			
		||||
-		// Message to the user
 | 
			
		||||
-		QMessageBox::information(0, APP_NAME,
 | 
			
		||||
-			tr("Die eingegebene Lizenznummer ist leider nicht "
 | 
			
		||||
-			"korrekt.\nBitte ueberpruefen Sie die Schreibweise."));
 | 
			
		||||
-
 | 
			
		||||
-		lineLicensing->setFocus();
 | 
			
		||||
-
 | 
			
		||||
-	} else {
 | 
			
		||||
-
 | 
			
		||||
-		// License key is ok
 | 
			
		||||
-		writeSettings();
 | 
			
		||||
-		accept();
 | 
			
		||||
-	}
 | 
			
		||||
-}
 | 
			
		||||
-
 | 
			
		||||
-void LicenseDialog::clickDemo() {
 | 
			
		||||
-	accept();
 | 
			
		||||
-}
 | 
			
		||||
-
 | 
			
		||||
-bool LicenseDialog::checkLicenseKey(QString licenseKey) {
 | 
			
		||||
-	if (licenseKey.size() == 14 &&
 | 
			
		||||
-		licenseKey[0].isLetter() &&
 | 
			
		||||
-		licenseKey[1].isLetter() &&
 | 
			
		||||
-		(licenseKey.mid(2, 2) == "39" ||
 | 
			
		||||
-		licenseKey.mid(2, 2) == "41" ||
 | 
			
		||||
-		licenseKey.mid(2, 2) == "43" ||
 | 
			
		||||
-		licenseKey.mid(2, 2) == "49" ||
 | 
			
		||||
-		licenseKey.mid(2, 2) == "99") &&
 | 
			
		||||
-		licenseKey[4].isDigit() &&
 | 
			
		||||
-		licenseKey[5].isDigit() &&
 | 
			
		||||
-		licenseKey[6].isDigit() &&
 | 
			
		||||
-		licenseKey[7].isLetter() &&
 | 
			
		||||
-		licenseKey[8].isDigit() &&
 | 
			
		||||
-		licenseKey[9].isDigit() &&
 | 
			
		||||
-		licenseKey[10].isDigit() &&
 | 
			
		||||
-		licenseKey[11].isDigit() &&
 | 
			
		||||
-		licenseKey[12].isLetter() &&
 | 
			
		||||
-		licenseKey[13].isLetter()) {
 | 
			
		||||
-
 | 
			
		||||
-		return true;
 | 
			
		||||
-	}
 | 
			
		||||
-	return false;
 | 
			
		||||
-}
 | 
			
		||||
-
 | 
			
		||||
-void LicenseDialog::writeSettings() {
 | 
			
		||||
-	// Saves settings of the startwiget
 | 
			
		||||
-	// (uses the default constructor of QSettings, passing
 | 
			
		||||
-	// the application and company name see main function)
 | 
			
		||||
-	#if APP_PORTABLE
 | 
			
		||||
-	QSettings settings(QCoreApplication::applicationDirPath() +
 | 
			
		||||
-    	"/portable/settings.ini", QSettings::IniFormat);
 | 
			
		||||
-    #else
 | 
			
		||||
-	QSettings settings;
 | 
			
		||||
-	#endif
 | 
			
		||||
-
 | 
			
		||||
-	settings.beginGroup("general");
 | 
			
		||||
-	settings.setValue("licensekey", lineLicensing->text());
 | 
			
		||||
-	settings.endGroup();
 | 
			
		||||
-}
 | 
			
		||||
--- a/widget/licensedialog.h
 | 
			
		||||
+++ /dev/null
 | 
			
		||||
@@ -1,85 +0,0 @@
 | 
			
		||||
-/*
 | 
			
		||||
-Copyright (c) 2006-2009, Tom Thielicke IT Solutions
 | 
			
		||||
-
 | 
			
		||||
-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.
 | 
			
		||||
-
 | 
			
		||||
-This program is distributed in the hope that it will be useful,
 | 
			
		||||
-but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
-GNU General Public License for more details.
 | 
			
		||||
-
 | 
			
		||||
-You should have received a copy of the GNU General Public License
 | 
			
		||||
-along with this program; if not, write to the Free Software
 | 
			
		||||
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
			
		||||
-02110-1301, USA.
 | 
			
		||||
-*/
 | 
			
		||||
-
 | 
			
		||||
-/****************************************************************
 | 
			
		||||
-**
 | 
			
		||||
-** Definition of the LicenseDialog class
 | 
			
		||||
-** File name: licensedialog.h
 | 
			
		||||
-**
 | 
			
		||||
-****************************************************************/
 | 
			
		||||
-
 | 
			
		||||
-#ifndef LICENSEDIALOG_H
 | 
			
		||||
-#define LICENSEDIALOG_H
 | 
			
		||||
-
 | 
			
		||||
-#include <QDialog>
 | 
			
		||||
-#include <QWidget>
 | 
			
		||||
-#include <QPushButton>
 | 
			
		||||
-#include <QLabel>
 | 
			
		||||
-#include <QLineEdit>
 | 
			
		||||
-#include <QString>
 | 
			
		||||
-
 | 
			
		||||
-//! The LicenseDialog class provides a license input widget.
 | 
			
		||||
-/*!
 | 
			
		||||
-	The LicenseDialog class shows a dialog to enter a license key.
 | 
			
		||||
-
 | 
			
		||||
-	@author Tom Thielicke, s712715
 | 
			
		||||
-	@version 0.0.1
 | 
			
		||||
-	@date 09.09.2008
 | 
			
		||||
-*/
 | 
			
		||||
-class LicenseDialog : public QDialog {
 | 
			
		||||
-	Q_OBJECT
 | 
			
		||||
-
 | 
			
		||||
-	public:
 | 
			
		||||
-
 | 
			
		||||
-		//! Constructor, creates two table objects and provide it in two tabs.
 | 
			
		||||
-		LicenseDialog(QWidget *parent = 0);
 | 
			
		||||
-
 | 
			
		||||
-		bool checkLicenseKey(QString licenseKey);
 | 
			
		||||
-
 | 
			
		||||
-	public slots:
 | 
			
		||||
-
 | 
			
		||||
-	private slots:
 | 
			
		||||
-
 | 
			
		||||
-		//! Start button pressed
 | 
			
		||||
-		void clickOk();
 | 
			
		||||
-
 | 
			
		||||
-		//! Demo button pressed
 | 
			
		||||
-		void clickDemo();
 | 
			
		||||
-
 | 
			
		||||
-	private:
 | 
			
		||||
-
 | 
			
		||||
-		//! Creates a cancel and a ok button.
 | 
			
		||||
-		void createButtons();
 | 
			
		||||
-
 | 
			
		||||
-		//! Creates a textbox.
 | 
			
		||||
-		void createLineEdit();
 | 
			
		||||
-
 | 
			
		||||
-		//! Creates the layout of the complete class.
 | 
			
		||||
-		void createLayout();
 | 
			
		||||
-
 | 
			
		||||
-		//! Writes user settings
 | 
			
		||||
-		void writeSettings();
 | 
			
		||||
-
 | 
			
		||||
-		QPushButton *buttonOk;
 | 
			
		||||
-		QPushButton *buttonDemo;
 | 
			
		||||
-		QLabel *labelLicensing;
 | 
			
		||||
-		QLineEdit *lineLicensing;
 | 
			
		||||
-};
 | 
			
		||||
-
 | 
			
		||||
-#endif //LICENSEDIALOG_H
 | 
			
		||||
--- a/widget/mainwindow.cpp
 | 
			
		||||
+++ b/widget/mainwindow.cpp
 | 
			
		||||
@@ -116,11 +116,6 @@ void MainWindow::closeEvent(QCloseEvent
 | 
			
		||||
 	}
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
-bool MainWindow::checkLicenseKey(QString licenseKey) {
 | 
			
		||||
-
 | 
			
		||||
-    return false;
 | 
			
		||||
-}
 | 
			
		||||
-
 | 
			
		||||
 void MainWindow::createMenu() {
 | 
			
		||||
 	//Mac-Version:
 | 
			
		||||
 	//-----------
 | 
			
		||||
--- a/widget/mainwindow.h
 | 
			
		||||
+++ b/widget/mainwindow.h
 | 
			
		||||
@@ -39,7 +39,6 @@ Foundation, Inc., 51 Franklin Street, Fi
 | 
			
		||||
 #include "trainingwidget.h"
 | 
			
		||||
 #include "evaluationwidget.h"
 | 
			
		||||
 #include "illustrationdialog.h"
 | 
			
		||||
-#include "licensedialog.h"
 | 
			
		||||
 #include "games/abcrainwidget.h"
 | 
			
		||||
 #include "helpbrowser.h"
 | 
			
		||||
 
 | 
			
		||||
		Reference in a new issue