diff --git a/CMakeLists.txt b/CMakeLists.txt index 97e3226..dcf5c70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,73 +1,73 @@ # KTouch CMakeLists.txt file # # KDE Application Version, managed by release script set (KDE_APPLICATIONS_VERSION_MAJOR "19") -set (KDE_APPLICATIONS_VERSION_MINOR "03") +set (KDE_APPLICATIONS_VERSION_MINOR "07") set (KDE_APPLICATIONS_VERSION_MICRO "70") set (KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}") cmake_minimum_required(VERSION 3.0) project(ktouch VERSION ${KDE_APPLICATIONS_VERSION}) find_package(ECM 1.0.0 REQUIRED NO_MODULE) find_package(KF5DocTools) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) include(KDEInstallDirs) include(ECMAddTests) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) include(ECMInstallIcons) include(ECMOptionalAddSubdirectory) include(ECMSetupVersion) include(FeatureSummary) find_package(Qt5 5.9 REQUIRED COMPONENTS Gui Qml Quick QuickWidgets QuickControls2 Sql Widgets X11Extras Xml XmlPatterns ) find_package(Qt5 CONFIG QUIET OPTIONAL_COMPONENTS QuickCompiler) find_package(KF5 REQUIRED COMPONENTS Completion Config ConfigWidgets CoreAddons Declarative DocTools I18n ItemViews KCMUtils TextWidgets WidgetsAddons WindowSystem XmlGui IconThemes ) # enable QML debugging for debug builds set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG") # subdirectories to build ecm_optional_add_subdirectory(data) ecm_optional_add_subdirectory(doc) ecm_optional_add_subdirectory(src) # ecm_optional_add_subdirectory(sounds) ecm_optional_add_subdirectory(images) ecm_optional_add_subdirectory(icons) # files to install in the ktouch project root directory install( PROGRAMS org.kde.ktouch.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) install(FILES org.kde.ktouch.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/org.kde.ktouch.appdata.xml b/org.kde.ktouch.appdata.xml index 4a58c46..714b76d 100644 --- a/org.kde.ktouch.appdata.xml +++ b/org.kde.ktouch.appdata.xml @@ -1,128 +1,130 @@ org.kde.ktouch.desktop CC0-1.0 GPL-2.0+ KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch KTouch Ktouch KTouch KTouch xxKTouchxx KTouch 打字練習_KTouch Touch Typing Tutor Intruktor kucanja na tastaturi Tutor de mecanografia Tutor de mecanografia Výuka psaní na stroji Schreibmaschinenkurs Touch Typing Tutor Lernilo por la tajpado Tutor de mecanografía al tacto Klaviatuuri treening Konekirjoituksen harjoitteluohjelma Formateur en dactylographie KTouch Titor de mecanografía Tutorial Pengetikan Setuh Istruttore di dattilografia 타자 연습 Treniruoklė aklajam teksto rinkimui Schriefmaschien öven Typcursus Tastaturøving Nauczyciel bezwzrokowego pisania Professor de Dactilografia Aulas de digitação Клавиатурный тренажёр Výuka písania na stroji Učenje slepega tipkanja Maskinskrivningsträning On Parmak Öğretici Навчання комп’ютерного набору xxTouch Typing Tutorxx 触摸打字教程 觸摸輸入輔助教學

KTouch is a typewriter trainer for learning to touch type. It provides you with text to train on and adjusts to different levels depending on how good you are. It displays your keyboard and indicates which key to press next and which is the correct finger to use. You learn typing with all fingers, step by step, without having to look down at the keyboard to find your keys. It is convenient for all ages and the perfect typing tutor for schools, universities, and personal use. KTouch ships with dozens of different courses in many languages and a comfortable course editor. Different keyboard layouts are supported and new user-defined layouts can be created. During training, KTouch collects comprehensive statistical information to help you or your teacher to analyze your progress.

KTouch je trener za učenje kucanja na pisaćoj mašini. On vam pruža tekst za trenirati i prilagođava na različite nivoe zavisno od toga koliko ste dobri. On prikazuje tastaturu i ukazuje na to koji taster pritisnuti sljedeći i koji je ispravan prst za korištenje. Učite kucanje sa svim prstima, korak po korak, bez da pogledom dolje na tastaturi pronađete svoje tastere. On je pogodan za sve uzraste i savršen učitelj kucanja za škole, univerzitete i osobnu upotrebu. KTouch dolazi s desecima različitih kurseva za mnoge jezike i udobnim urednikom kurseva. Različite tastature su podržane i novi korisnički definirani rasporedi mogu biti kreirani. Tokom treninga, KTouch prikuplja sveobuhvatne statističke podatke koji će pomoći vama ili vašem učitelj da analizirate vaš napredak.

El KTouch és un entrenador mecanogràfic per aprendre mecanografia. Proporciona text per entrenar i s'ajusta a diferents nivells en funció del vostre nivell. Mostra el teclat i indica la tecla següent a prémer i quin és el dit correcte a utilitzar. Aprendreu mecanografia amb tots els dits, pas a pas, sense haver de mirar el teclat per cercar les tecles. És apropiat per a totes les edats i és el tutor de mecanografia perfecte per escoles, universitats i ús personal. El KTouch es distribueix amb dotzenes de cursos diferents en molts idiomes i un editor còmode de cursos. S'accepten diferents disposicions de teclat i es poden crear noves disposicions definides per l'usuari. Durant l'entrenament, el KTouch acumula informació estadística global per ajudar-vos a analitzar el progrés.

El KTouch és un entrenador mecanogràfic per aprendre mecanografia. Proporciona text per entrenar i s'ajusta a diferents nivells en funció del vostre nivell. Mostra el teclat i indica la tecla següent a prémer i quin és el dit correcte a utilitzar. Aprendreu mecanografia amb tots els dits, pas a pas, sense haver de mirar el teclat per cercar les tecles. És apropiat per a totes les edats i és el tutor de mecanografia perfecte per escoles, universitats i ús personal. El KTouch es distribueix amb dotzenes de cursos diferents en molts idiomes i un editor còmode de cursos. S'accepten diferents disposicions de teclat i es poden crear noves disposicions definides per l'usuari. Durant l'entrenament, el KTouch acumula informació estadística global per ajudar-vos a analitzar el progrés.

KTouch is a typewriter trainer for learning to touch type. It provides you with text to train on and adjusts to different levels depending on how good you are. It displays your keyboard and indicates which key to press next and which is the correct finger to use. You learn typing with all fingers, step by step, without having to look down at the keyboard to find your keys. It is convenient for all ages and the perfect typing tutor for schools, universities, and personal use. KTouch ships with dozens of different courses in many languages and a comfortable course editor. Different keyboard layouts are supported and new user-defined layouts can be created. During training, KTouch collects comprehensive statistical information to help you or your teacher to analyse your progress.

KTouch estas trejnilo por lerni tajpadon. Ĝi enhavas diversajn tekstojn por trejni per malsamaj niveloj laŭ via sperto. Ĝi montras vian klavaron kaj indikas kiun klavon premi kaj kiun fingron uzi. Vi lernas tajpi per ĉiuj fingroj, paŝo post paŝo, sen rigardi la klavaron por trovi vian klavon. Ĝi estas oportuna por ĉiuj aĝoj kaj ĝi estas perfekta lernilo por infanoj, plenkreskuloj, por lerneja celo, universitata celo kaj por persona uzo. KTouch disponeblas kun dekoj da malsamaj kursoj en multaj lingvoj kaj facile uzeblan redaktilon. Diversaj klavaranĝoj estas apogitaj kaj novaj aranĝoj kreeblas. Dum trejnado, KTouch kolektas multampleksajn statistikojn por helpi vin analizi vian progreson.

KTouch es un entrenador de mecanografía para aprender a mecanografiar al tacto. Proporciona texto para entrenar y se adapta a diferentes niveles dependiendo del que tenga el usuario. Muestra el teclado actual e indica qué tecla hay que pulsar a continuación y cuál es el dedo que hay que utilizar para hacerlo. Se aprende a mecanografiar con todos los dedos, paso a paso, sin tener que mirar el teclado para encontrar las teclas. Es adecuado para todas las edades y el tutor de mecanografía perfecto para los colegios, universidades y uso personal. KTouch viene con docenas de cursos diferentes en muchos idiomas y un cómodo editor de cursos. Admite varias disposiciones de teclado y se pueden definir más. Durante el entrenamiento, KTouch recopila información estadística exhaustiva para ayudar al usuario o a su profesor a analizar el progreso.

KTouch on rakendus, mis aitab omandada masinkirjaoskust. See pakub harjutamiseks tekste ning kohandab tasemeid vastavalt sellele, millised on sinu oskused. Rakendus näitab klaviatuuri ning vihjab, millist klahvi ja millise sõrmega järgmisena vajutada. Tasapisi omandad rakenduse abil oskuse kirjutada kõigi kümne sõrmega, ilma et peaksid klaviatuurile vaatamagi. KTouch sobib igas vanuses õppurile ning sobib ühtmoodi hästi kasutada nii koolides, ülikoolides kui ka kodus. Rakendusega on kaasa kümneid kursuseid paljudes keeltes ning mugav kursuseredaktor. Toetatud on paljud klaviatuuripaigutused ja luua saab ka uusi, kasutaja enda määratud paigutusi. Harjutamise käigus kogub KTouch põhjaliku statistika, mis aitab sul endal või su õpetajal edenemist hinnata ja analüüsida.

KTouch on ohjelma kymmensormijärjestelmän harjoittelemiseen. Se tarjoaa harjoitustekstiä ja säätää vaikeustason riippuen käyttäjän taidoista. Se näyttää näppäimistö ja ilmaisee, mitä näppäintä painaa seuraavaksi ja millä sormella. Opit kirjoittamaan kaikilla sormilla, vaihe vaiheelta, katsomatta näppäimistöön etsimään näppäimiä. KTouch sopii kaikenikäisille omaan, koulujen ja yliopistojen käyttöön. KTouchin mukana tulee kymmeniä kursseja eri kielille ja kurssimuokkain, jota on mukava käyttää. Se tukee useita näppäimistöasetteluita ja käyttäjä voi luoda uusia. Harjoituksen aikana KTouch kerää kattavat tilastot, jotka auttavat harjoittelijaa tai hänen opettajaansa analysoimaan edistymistä.

KTouch est un programme d'entraînement pour la dactylographie. Il vous fournit du texte à recopier et s'adapte à votre niveau. Il affiche votre clavier et indique sur quelle touche appuyer et avec quel doigt. Vous apprenez à taper avec tous les doigts, étape par étape, sans avoir à regarder le clavier pour trouver les touches. Il convient à tous les âges et constitue un formateur parfait pour les écoles, les universités et les particuliers. KTouch est livré avec des dizaines de leçons différentes dans de nombreuses langues, ainsi qu'un éditeur de leçon. Différentes dispositions de clavier sont prises en charge et de nouvelles dispositions peuvent être créées par l'utilisateur. Pendant l'entraînement, KTouch collecte des informations statistiques complètes pour vous aider à analyser vos progrès.

KTouch é un adestrador de mecanografía. Fornécelle texto para adestrar e permite varios niveis dependendo da súa habilidade. Mostra o teclado e indica que tecla ten que premer a continuación e cal é o dedo correcto que debería usar. Aprende a mecanografar con todos os dedos, paso a paso, sen ter que mirar para o teclado para atopar as teclas. Está adaptado para todas as idades, e é perfecto para escolas e universidades, ou para uso persoal. KTouch inclúe ducias de cursos en varios idiomas e un cómodo editor de cursos. Permítese usar varias disposicións de teclado distintas, e pódense crear disposicións de teclado definidas polo usuario. Durante o adestramento, KTouch recolle información estatística para axudalo a vostede ou ao seu mestre a analizar o seu progreso.

KTouch adalah pelatih mesin ketik untuk belajar mengetik. Ini memberimu teks untuk berlatih dan menyesuaikan ke tingkat yang berbeda tergantung pada seberapa baik kamu. Ini menampilkan keyboard-mu dan menunjukkan tombol mana yang harus ditekan berikutnya dan yang merupakan jari yang tepat untuk digunakan. Kamu belajar mengetik dengan semua jari, langkah demi langkah, tanpa harus melihat ke bawah pada keyboard untuk menemukan tutsmu. Ini nyaman untuk segala usia dan tutorial mengetik yang sempurna untuk sekolah, universitas, dan penggunaan pribadi. KTouch memberikan banyak kursus berbeda dalam banyak bahasa dan editor kursus yang nyaman. Tataletak keyboard yang berbeda didukung dan tataletak yang ditentukan pengguna dapat dibuat. Selama pelatihan, KTouch mengumpulkan informasi statistik komprehensif untuk membantumu atau gurumu menganalisis kemajuanmu.

KTouch è un allenatore di dattilografia per imparare a dattilografare. Ti fornisce del testo con cui esercitarti, sceglie il livello adatto alle tue capacità; ti mostra anche il prossimo tasto da premere ed il dito corretto da usare. Ti insegna a scrivere con tutte le dita, passo dopo passo, cosicché non dovrai più guardare la tastiera ogni volta per cercare i tasti giusti: questo rallenta di parecchio la tua velocità di battitura. È utile a tutte le età, ed è un perfetto insegnante di battitura nelle scuole, nelle università e per uso personale. KTouch ti viene fornito con dozzine di corsi diversi in molte lingue, e con un comodo editor di corsi. Supporta diverse mappature di tastiera, ed altre possono essere create dall'utente. Durante l'allenamento KTouch raccoglie delle informazioni statistiche complete, che aiutano te o il tuo insegnante ad analizzare i tuoi progressi.

KTouch is en Programm, mit dat Du Schriefmaschien schrieven lehren kannst. Dat stellt Di de Öövtexten praat un passt de Sworheit dor na an, wo goot Du al büst. Dat wiest Dien Tastatuur, de Tast, de Du drücken schallst un den richtigen Finger dor för. Du lehrst dat Tippen mit all Fingers Schritt för Schritt, un ok, ahn dat Du na nerrn op de Tasten un Dien Fingers kieken muttst. Dat is goot för jünger un ok för öller Lüüd un en goot Tipplehrer för Scholen un Universiteten. Dor sünd KTouch en Barg verscheden Lexen in vele Spraken bi un en kommood Lexeneditor. dat ünnerstütt verscheden Tastanornen, Du kannst ok Dien egen Anornen opstellen. Bi't Öven sammelt KTouch Statistikinformatschonen, mit de Du oder Dien Lehrer Dien Vörankamen bekieken kannst.

KTouch is een oefenprogramma voor blindtypen. Het geeft u oefenteksten en past het oefenniveau aan aan uw huidige vaardigheid. Het toetsenbord wordt getoond, en de volgende toets die u moet aanslaan, en met welke vinger. U leert met alle vingers te typen, stap voor stap, zonder dat u op het toetsenbord naar de toetsen kijkt. Het is voor alle leeftijden geschikt, en perfect om te leren typen op school, de universiteit, of thuis. KTouch komt met tientallen verschillende cursussen in vele talen, en bevat een handige cursusbewerker. Diverse toetsenbordindelingen worden ondersteund, en u kunt ook nieuwe zelf aanmaken. Tijdens de oefeningen verzamelt KTouch uitvoerige statistische informatie, voor het beoordelen van uw vorderingen.

KTouch jest trenerem bezwzrokowego pisania na klawiaturze. Dostarcza teksty do ćwiczeń i dostosowuje się do poziomu użytkownika. Wyświetla klawiaturę, wskazuje, które klawisze nacisnąć i jakim palcem. Dzięki programowi uczysz się pisać wszystkimi palcami. Jest wygodny dla użytkowników w różnym wieku i idealny do ćwiczenia pisania w szkołach, uniwersytetach i czasie prywatnym. KTouch jest dostarczany z wieloma kursami w różnych językach oraz wygodnym edytorem kursów. Obsługiwane są różne układy klawiatury, można także dodawać układy stworzone przez użytkownika. Podczas ćwiczeń, KTouch zbiera wiele informacji statystycznych, aby pomóc tobie lub twojemu nauczycielowi analizować twój postęp.

O KTouch é um treinador de dactilografia que o ensina a escrever à máquina. Oferece-lhe algum texto para treinar e ajusta-se a diferentes níveis, dependendo de quão bom você é. Ele mostra o seu teclado e indica a tecla a carregar a seguir e qual o dedo correcto a usar. Você aprende a escrever com todos os dedos, passo-a-passo, sem ter de olhar para baixo para o teclado e descobrir as suas teclas. É conveniente para todas as idades e é o tutor de escrita perfeito para escolas, universidades e uso pessoal. O KTouch vem com dezenas de exercícios diferentes em várias línguas e tem um editor de exercícios confortável. São suportados diferentes formatos de teclado e poderá criar novos formatos definidos pelo utilizador. Durante o exercício, o KTouch recolhe alguma informação estatística completa para o ajudar ou ao seu professor a analisar o seu progresso.

KTouch é um programa que ensina a usar um teclado para digitação. Ele disponibiliza alguns textos para treinar e ajusta-se a diferentes níveis, dependendo da sua habilidade. Ele mostra o seu teclado e indica a próxima tecla a pressionar e qual o dedo correto a ser usado. Você aprende a digitar com todos os dedos, passo a passo, sem precisar olhar para o teclado e encontrar as teclas. É conveniente para todas as idades e é o tutor de digitação perfeito para escolas, universidades e uso pessoal. O KTouch vem com dezenas de exercícios diferentes em vários idiomas e tem um confortável editor de exercícios. São suportados diferentes layouts de teclado e novos layouts podem ser criados pelo usuário. Durante o treino, o KTouch recolhe informações estatísticas para ajudar você ou seu professor a analisar o seu progresso.

KTouch je tréner písacieho stroja na výuku písania na stroji. Poskytuje vám texty na tréning a úpravu na rôzne úrovne v závislosti od vašej pokročilosti. Zobrazuje klávesnicu a ukazuje, ktoré klávesy treba najbližšie stlačiť a ktorý je správny prst na použitie. Naučíte sa písať všetkými prstami, krok za krokom bez nutnosti pozerať sa dolu na klávesnicu, aby ste našli klávesy. Je vhodný pre všetky vekové skupiny a výborný program pre školy, univerzity a osobné použitie. KTouch obsahuje mnoho rôznych kurzov v mnohých jazykoch a komfortný editor kurzov. Podporuje rôzne rozloženia klávesnice a umožňuje vytvoriť vlastné rozloženia. Počas tréningu zbiera štatistické informácie, aby vám pomohol analyzovať váš postup.

KTouch je program za učenje slepega tipkanja. Vključena ima besedila na katerih se lahko učite in jih sproti prilagaja vašim sposobnostim. Prikazuje tudi vašo tipkovnico in na njej označi katero tipko je treba pritisniti naslednjo in s katerim prstom. Korak za korakom se boste naučili tipkati z vsemi prsti, brez da bi morali gledati tipkovnico in na njej iskati tipke. Primeren je za vse starosti in je odlično orodje za učenje tipkanja v šoli, na univerzah ali doma. KTouch vsebuje številne tečaje v raznolikih jezikih in tudi urejevalnik tečajev. Podprte so različne razporeditve tipk, ustvarite pa lahko tudi lastne. Med vadbo KTouch zbira statistične podatke, ki lahko vam oz. vašem učitelju pomagajo pri preučevanju vašega napredka.

Ktouch är ett program för att lära sig maskinskrivning. Det tillhandahåller en text att öva på, och justeras till olika nivåer, beroende på hur bra du är. Det visar tangentbordet och vilken tangent som ska tryckas ner härnäst, och det riktiga fingret som ska användas. Man lär sig att skriva med alla fingrar, steg för steg, utan att behöva titta ner på tangentbordet hela tiden för att hitta rätt tangenter. Det är bekvämt för alla åldrar och är perfekt för skrivmaskinsövning på skolor, universitet och vid personlig användning. Ktouch levereras med dussintals kurser på många språk och en bekväm kurseditor. Olika tangentbordslayouter stöds och nya användardefinierade layouter kan skapas. Under övningar samlar Ktouch in omfattande statistisk information för att hjälpa dig eller din lärare att analysera dina framsteg.

KTouch, on parmak yazma çalıştıran bir daktilo eğitmenidir. Ne kadar iyi olduğunuza bağlı olarak farklı seviyelerde eğitim almanız için metin hazırlar ve ayarlar. Klavyenizi görüntüler ve bir sonraki tuşa hangi klavye tuşunun kullanılacağını belirtir. Tuşları bulmak için klavyeye bakmanıza gerek kalmadan, adım adım ilerleyerek tüm parmaklarınızla yazmayı öğrenirsiniz. Her yaşa uygun, okullar, üniversiteler ve kişisel kullanım için mükemmel derecede yazmayı öğrenmek için uygundur. KTouch birçok dilde düzinelerce farklı ders ve kolay bir ders düzenleyiciyle birlikte geliyor. Farklı klavye düzenlerini destekler ve yeni kullanıcı tanımlı düzenler oluşturulabilir. Eğitim sırasında, KTouch size veya öğretmeninin ilerlesini analiz etmede size yardımcı olacak kapsamlı istatistiki bilgileri de toplar.

KTouch — програма для навчання машинопису. Ви вводитимете навчальний текст, а програма визначатиме рівень складності цього тексту, залежно від ваших навичок. У вікні програми ви зможете бачити клавіатуру, підсвічування для клавіш, які слід натискати, та рекомендації щодо пальця, яким це слід робити. Ви зможете навчитися десятипальцевому набору, крок за кроком, не дивлячись на клавіатуру і не шукаючи на ній потрібних вам клавіш. Програму пристосовано для користувачів будь-якого віку, вона є чудовим засобом навчання для шкіл, університетів та особистих потреб. Разом з KTouch постачаються десятки різних курсів багатьма мовами, а також зручний редактор курсів. Передбачено підтримку різних розкладок клавіатур та можливість визначення власних розкладок. Під час навчання KTouch збирає статистичні дані, які допоможуть вам та вашому наставнику проаналізувати поступ навчання.

xxKTouch is a typewriter trainer for learning to touch type. It provides you with text to train on and adjusts to different levels depending on how good you are. It displays your keyboard and indicates which key to press next and which is the correct finger to use. You learn typing with all fingers, step by step, without having to look down at the keyboard to find your keys. It is convenient for all ages and the perfect typing tutor for schools, universities, and personal use. KTouch ships with dozens of different courses in many languages and a comfortable course editor. Different keyboard layouts are supported and new user-defined layouts can be created. During training, KTouch collects comprehensive statistical information to help you or your teacher to analyze your progress.xx

KTouch 是一套打字訓練程式。它可以訓練您打字,並依您的程度來調整訓練等級。它會顯示您的鍵盤,並指引您下一個要按下什麼鍵,以及該使用哪個指頭。您可以學習使用所有的指頭來打字,一步步,不需要看鍵盤來找鍵。所有的年齡層、所有程度的學校都適用,包括個人練習也可以。KTouch 中有多種不同的語言課程,並且提供了課程編輯器。它也支援不同的鍵盤佈局,也可以建立使用者自訂的鍵盤佈局。在訓練課程中,KTouch 會收集統計資料,協助您與您的老師分析追蹤您的進度。

http://edu.kde.org/ktouch/ https://bugs.kde.org/enter_bug.cgi?format=guided&product=ktouch http://docs.kde.org/stable/en/kdeedu/ktouch/index.html https://www.kde.org/community/donations/?app=ktouch&source=appdata Training with KTouch Entrenant amb el KTouch Entrenant amb el KTouch Übungen mit KTouch Training with KTouch Entrenando con KTouch + Entraînement sur KTouch Adestrando con KTouch Berlatih dengan KTouch + Allenamento con KTouch Oefenen met KTouch Ćwiczenie w KTouch Exercício com o KTouch Treinando com o KTouch Övning med Ktouch Вправляння у KTouch xxTraining with KTouchxx 使用 KTouch 训练 用 KTouch 訓練 http://edu.kde.org/images/screenshots/ktouch.png KDE ktouch
diff --git a/src/core/profile.cpp b/src/core/profile.cpp index a939e09..3af2d9b 100644 --- a/src/core/profile.cpp +++ b/src/core/profile.cpp @@ -1,81 +1,81 @@ /* * Copyright 2012 Sebastian Gottfried * * 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. * * 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, see . */ #include "profile.h" Profile::Profile(QObject* parent) : QObject(parent), m_id(-1), m_skillLevel(Profile::Beginner) { } int Profile::id() const { return m_id; } void Profile::setId(int id) { if (id != m_id) { m_id = id; emit idChanged(); } } QString Profile::name() const { return m_name; } void Profile::setName(const QString &name) { if (name != m_name) { m_name = name; emit nameChanged(); } } Profile::SkillLevel Profile::skillLevel() const { return m_skillLevel; } void Profile::setSkillLevel(SkillLevel skillLevel) { if (skillLevel != m_skillLevel) { m_skillLevel = skillLevel; emit skillLevelChanged(); } } QString Profile::lastUsedCourseId() const { return m_lastUsedCourseId; } -void Profile::setLastUsedCourseId(QString id) +void Profile::setLastUsedCourseId(const QString &id) { if (id != m_lastUsedCourseId) { m_lastUsedCourseId = id; emit lastUsedCourseIdChanged(); } } diff --git a/src/core/profile.h b/src/core/profile.h index 69eb206..22cdd3e 100644 --- a/src/core/profile.h +++ b/src/core/profile.h @@ -1,62 +1,62 @@ /* * Copyright 2012 Sebastian Gottfried * * 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. * * 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, see . */ #ifndef PROFILE_H #define PROFILE_H #include class Profile : public QObject { Q_OBJECT Q_ENUMS(SkillLevel) Q_PROPERTY(int id READ id WRITE setId NOTIFY idChanged) Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) Q_PROPERTY(SkillLevel skillLevel READ skillLevel WRITE setSkillLevel NOTIFY skillLevelChanged) Q_PROPERTY(QString lastUsedCourseId READ lastUsedCourseId WRITE setLastUsedCourseId NOTIFY lastUsedCourseIdChanged) public: enum SkillLevel { Beginner = 1, Advanced }; explicit Profile(QObject* parent = 0); int id() const; void setId(int id); QString name() const; void setName(const QString& name); SkillLevel skillLevel() const; void setSkillLevel(SkillLevel skillLevel); QString lastUsedCourseId() const; - void setLastUsedCourseId(QString id); + void setLastUsedCourseId(const QString &id); signals: void idChanged(); void nameChanged(); void skillLevelChanged(); void lastUsedCourseIdChanged(); private: int m_id; QString m_name; SkillLevel m_skillLevel; QString m_lastUsedCourseId; }; #endif // PROFILE_H diff --git a/src/core/trainingstats.cpp b/src/core/trainingstats.cpp index b68eb33..b4fef23 100644 --- a/src/core/trainingstats.cpp +++ b/src/core/trainingstats.cpp @@ -1,199 +1,199 @@ /* * Copyright 2012 Sebastian Gottfried * * 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. * * 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, see . */ #include "trainingstats.h" #include #include TrainingStats::TrainingStats(QObject* parent) : QObject(parent), m_timeIsRunning(false), m_charactersTyped(0), m_elapsedTime(0), m_errorCount(0), m_isValid(true), m_startTime(0), m_updateTimer(new QTimer(this)) { connect(m_updateTimer, &QTimer::timeout, this, &TrainingStats::update); } int TrainingStats::charactesTyped() const { return m_charactersTyped; } void TrainingStats::setCharactersTyped(int charactesTyped) { if(charactesTyped != m_charactersTyped) { m_charactersTyped = charactesTyped; emit statsChanged(); } } QTime TrainingStats::elapsedTime() const { return QTime(0, 0).addMSecs(m_elapsedTime); } void TrainingStats::setElapsedTime(const QTime& elapsedTime) { quint64 msec = elapsedTime.msec(); if(msec != m_elapsedTime) { m_elapsedTime = msec; emit statsChanged(); } } void TrainingStats::setElapsedTime(const quint64& msec) { if(msec != m_elapsedTime) { m_elapsedTime = msec; emit statsChanged(); } } int TrainingStats::errorCount() const { return m_errorCount; } void TrainingStats::setErrorCount(int errorCount) { if(errorCount != m_errorCount) { m_errorCount = errorCount; emit statsChanged(); } } bool TrainingStats::isValid() const { return m_isValid; } void TrainingStats::setIsValid(bool isValid) { if(isValid != m_isValid) { m_isValid = isValid; emit isValidChanged(); } } QMap< QString, int > TrainingStats::errorMap() const { return m_errorMap; } void TrainingStats::setErrorMap(const QMap< QString, int >& errorMap) { m_errorMap = errorMap; emit errorsChanged(); } bool TrainingStats::timeIsRunning() const { return m_timeIsRunning; } void TrainingStats::startTraining() { if (!m_timeIsRunning) { m_timeIsRunning = true; m_startTime = QDateTime::currentMSecsSinceEpoch() - m_elapsedTime; update(); } } void TrainingStats::stopTraining() { if (m_timeIsRunning) { m_timeIsRunning = false; update(); } } void TrainingStats::reset() { stopTraining(); m_charactersTyped = 0; m_elapsedTime = 0; m_errorCount = 0; m_errorMap.clear(); statsChanged(); } -void TrainingStats::logCharacter(QString character, EventType type) +void TrainingStats::logCharacter(const QString &character, EventType type) { if (type == TrainingStats::CorrectCharacter) { m_charactersTyped++; } else { m_errorCount++; if (m_errorMap.contains(character)) { m_errorMap[character]++; } else { m_errorMap[character] = 1; } emit errorsChanged(); } } float TrainingStats::accuracy() { if (m_charactersTyped == 0) { return m_errorCount == 0? 1.0: 0.0 ; } return 1.0 - float(m_errorCount) / float(m_errorCount + m_charactersTyped); } int TrainingStats::charactersPerMinute() { if (m_elapsedTime == 0) { return 0; } return m_charactersTyped * 60000 / m_elapsedTime; } void TrainingStats::update() { m_updateTimer->stop(); if (m_timeIsRunning) { qint64 now = QDateTime::currentMSecsSinceEpoch(); m_elapsedTime = now - m_startTime; m_updateTimer->start(200); } emit statsChanged(); } diff --git a/src/core/trainingstats.h b/src/core/trainingstats.h index 112f43e..aed1d5e 100644 --- a/src/core/trainingstats.h +++ b/src/core/trainingstats.h @@ -1,84 +1,84 @@ /* * Copyright 2012 Sebastian Gottfried * * 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. * * 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, see . */ #ifndef TRAININGSTATS_H #define TRAININGSTATS_H #include #include #include #include #include class QTimer; class TrainingStats : public QObject { Q_OBJECT Q_ENUMS(EventType) Q_PROPERTY(int charactesTyped READ charactesTyped WRITE setCharactersTyped NOTIFY statsChanged) Q_PROPERTY(QTime elapsedTime READ elapsedTime WRITE setElapsedTime NOTIFY statsChanged) Q_PROPERTY(int errorCount READ errorCount NOTIFY statsChanged) Q_PROPERTY(bool isValid READ isValid WRITE setIsValid NOTIFY isValidChanged) Q_PROPERTY(float accuracy READ accuracy NOTIFY statsChanged) Q_PROPERTY(int charactersPerMinute READ charactersPerMinute NOTIFY statsChanged) Q_PROPERTY(bool timeIsRunning READ timeIsRunning NOTIFY statsChanged) public: enum EventType { CorrectCharacter, IncorrectCharacter }; explicit TrainingStats(QObject* parent = 0); int charactesTyped() const; void setCharactersTyped(int charactesTyped); QTime elapsedTime() const; void setElapsedTime(const QTime& elapsedTime); void setElapsedTime(const quint64& msec); int errorCount() const; void setErrorCount(int errorCount); bool isValid() const; void setIsValid(bool isValid); QMap errorMap() const; void setErrorMap(const QMap& errorMap); bool timeIsRunning() const; Q_INVOKABLE void startTraining(); Q_INVOKABLE void stopTraining(); Q_INVOKABLE void reset(); - Q_INVOKABLE void logCharacter(QString character, EventType type); + Q_INVOKABLE void logCharacter(const QString &character, EventType type); float accuracy(); int charactersPerMinute(); signals: void statsChanged(); void isValidChanged(); void errorsChanged(); private: Q_SLOT void update(); bool m_timeIsRunning; int m_charactersTyped; quint64 m_elapsedTime; int m_errorCount; bool m_isValid; QMap m_errorMap; quint64 m_startTime; QTimer* m_updateTimer; }; #endif // TRAININGSTATS_H diff --git a/src/declarativeitems/griditem.h b/src/declarativeitems/griditem.h index 1d5d41f..d7d7b11 100644 --- a/src/declarativeitems/griditem.h +++ b/src/declarativeitems/griditem.h @@ -1,49 +1,49 @@ /* * Copyright 2012 Sebastian Gottfried * * 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. * * 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, see . */ #ifndef GRIDITEM_H #define GRIDITEM_H #include class GridItem : public QQuickPaintedItem { Q_OBJECT Q_PROPERTY(qreal lineDistance READ lineDistance WRITE setLineDistance NOTIFY lineDistanceChanged) Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY backgroundColorChanged) public: explicit GridItem(QQuickItem* parent = 0); qreal lineDistance() const; void setLineDistance(qreal distance); QColor color() const; void setColor(const QColor& color); QColor backgroundColor() const; void setBackgroundColor(const QColor& backgroundColor); - virtual void paint(QPainter* painter) override; + void paint(QPainter* painter) override; signals: void lineDistanceChanged(); void colorChanged(); void backgroundColorChanged(); private: qreal m_lineDistance; QColor m_color; QColor m_backgroundColor; }; #endif // GRIDITEM_H diff --git a/src/declarativeitems/scalebackgrounditem.h b/src/declarativeitems/scalebackgrounditem.h index 2ebae42..5bb7200 100644 --- a/src/declarativeitems/scalebackgrounditem.h +++ b/src/declarativeitems/scalebackgrounditem.h @@ -1,54 +1,54 @@ /* * Copyright 2012 Sebastian Gottfried * * 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. * * 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, see . */ #ifndef SCALEBACKGROUNDITEM_H #define SCALEBACKGROUNDITEM_H #include class ScaleBackgroundItem: public QQuickPaintedItem { Q_OBJECT Q_PROPERTY(qreal startAngle READ startAngle WRITE setStartAngle NOTIFY startAngleChanged) Q_PROPERTY(qreal stopAngle READ stopAngle WRITE setStopAngle NOTIFY stopAngleChanged) Q_PROPERTY(qreal scaleMarkHeight READ scaleMarkHeight WRITE setScaleMarkHeight NOTIFY scaleMarkHeightChanged) Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) public: explicit ScaleBackgroundItem(QQuickItem* parent = 0); qreal startAngle() const; void setStartAngle(qreal angle); qreal stopAngle() const; void setStopAngle(qreal angle); qreal scaleMarkHeight() const; void setScaleMarkHeight(qreal height); QColor color() const; void setColor(const QColor& color); - virtual void paint(QPainter* painter) override; + void paint(QPainter* painter) override; signals: void startAngleChanged(); void stopAngleChanged(); void scaleMarkHeightChanged(); void colorChanged(); private: qreal m_startAngle; qreal m_stopAngle; qreal m_scaleMarkHeight; QColor m_color; }; #endif // SCALEBACKGROUNDITEM_H diff --git a/src/editor/keyboardlayouteditorview.h b/src/editor/keyboardlayouteditorview.h index 3aab93b..a6db8ec 100644 --- a/src/editor/keyboardlayouteditorview.h +++ b/src/editor/keyboardlayouteditorview.h @@ -1,34 +1,34 @@ /* * Copyright 2012 Sebastian Gottfried * * 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. * * 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, see . */ #ifndef KEYBOARDLAYOUTEDITORVIEW_H #define KEYBOARDLAYOUTEDITORVIEW_H #include class KeyboardLayoutEditorView : public QQuickWidget { Q_OBJECT public: explicit KeyboardLayoutEditorView(QWidget* parent = nullptr); signals: void clicked(); protected: - virtual void mousePressEvent(QMouseEvent* event) override; + void mousePressEvent(QMouseEvent* event) override; }; #endif // KEYBOARDLAYOUTEDITORVIEW_H diff --git a/src/editor/lessontexthighlighter.h b/src/editor/lessontexthighlighter.h index 672d921..adeb336 100644 --- a/src/editor/lessontexthighlighter.h +++ b/src/editor/lessontexthighlighter.h @@ -1,45 +1,45 @@ /* * Copyright 2012 Sebastian Gottfried * * 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. * * 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, see . */ #ifndef LESSONTEXTHIGHLIGHTER_H #define LESSONTEXTHIGHLIGHTER_H #include #include class LessonTextHighlighter : public QSyntaxHighlighter { Q_OBJECT public: explicit LessonTextHighlighter(QObject* parent = nullptr); int maximumLineLength() const; void setMaximumLineLength(int length); QString allowedCharacters() const; void setAllowedCharacters(const QString& characters); protected: - virtual void highlightBlock(const QString& text) override; + void highlightBlock(const QString& text) override; private: int m_maximumLineLength; QString m_allowedCharacters; QTextCharFormat m_overLongLineFormat; QTextCharFormat m_invalidCharFormat; }; #endif // LESSONTEXTHIGHLIGHTER_H diff --git a/src/editor/resourceeditor.h b/src/editor/resourceeditor.h index 776a6ae..2305fc7 100644 --- a/src/editor/resourceeditor.h +++ b/src/editor/resourceeditor.h @@ -1,80 +1,80 @@ /* * Copyright 2012 Sebastian Gottfried * * 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. * * 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, see . */ #ifndef RESOURCEEDITOR_H #define RESOURCEEDITOR_H #include class QUndoGroup; class QTimer; class KAction; class KActionCollection; class KCategorizedView; class CategorizedResourceSortFilterProxyModel; class DataIndex; class ResourceModel; class Resource; class ResourceEditorWidget; class ResourceEditor : public KMainWindow { Q_OBJECT public: explicit ResourceEditor(QWidget* parent = 0); virtual ~ResourceEditor(); protected: - virtual void closeEvent(QCloseEvent* event) override; + void closeEvent(QCloseEvent* event) override; private slots: void newResource(); void deleteResource(); void importResource(); void exportResource(); void onResourceSelected(); void restoreResourceBackup(); void clearResourceBackup(); void save(); void setUndoText(const QString& text); void setRedoText(const QString& text); private: void prepareResourceRestore(Resource* backup); Resource* storeResource(Resource* resource, Resource* dataIndexResource = 0); void selectDataResource(Resource* resource); void selectFirstResource(); bool importCourse(const QString& path); bool importKeyboardLayout(const QString& path); DataIndex* m_dataIndex; ResourceModel* m_resourceModel; CategorizedResourceSortFilterProxyModel* m_categorizedResourceModel; Resource* m_currentResource; Resource* m_backupResource; QUndoGroup* m_undoGroup; KActionCollection* m_actionCollection; QAction* m_newResourceAction; QAction* m_deleteResourceAction; QAction* m_undoAction; QAction* m_redoAction; QAction* m_importResourceAction; QAction* m_exportResourceAction; ResourceEditorWidget* m_editorWidget; QTimer* m_saveTimer; }; #endif // RESOURCEEDITOR_H