diff options
Diffstat (limited to 'kverbos/kverbos/kverbos.cpp')
-rw-r--r-- | kverbos/kverbos/kverbos.cpp | 757 |
1 files changed, 757 insertions, 0 deletions
diff --git a/kverbos/kverbos/kverbos.cpp b/kverbos/kverbos/kverbos.cpp new file mode 100644 index 00000000..2a5198cf --- /dev/null +++ b/kverbos/kverbos/kverbos.cpp @@ -0,0 +1,757 @@ +/*************************************************************************** + kverbos.cpp - description + ------------------- + begin : Fre Dez 14 19:28:09 CET 2001 + copyright : (C) 2001 by Arnold Kraschinski + email : arnold.k67@gmx.de + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +// include files for QT +#include <qprinter.h> +#include <qcheckbox.h> +#include <qradiobutton.h> + +// include files for KDE +#include <kfiledialog.h> +#include <kinputdialog.h> +#include "kstartuplogo.h" +#include <kstandarddirs.h> +#include <kstatusbar.h> + +// application specific includes +#include "kverbos.h" +#include "kverbosview.h" + +// my includes +#include "kerfassen.h" +#include "kverbedit.h" +#include "kverbosoptions.h" +#include "kresult.h" +#include "kfeedercontrol.h" +#include "prefs.h" + +// ID Nummern für die Statuszeile +#define ID_STATUS_MSG 1 +#define ID_TRAINED_MSG 2 +#define ID_CORRECT_MSG 3 +#define ID_VERBS_MSG 4 +#define ID_USERNAME_MSG 5 + +int KVerbosApp::kverbosCounter = 0; + +KVerbosApp::KVerbosApp(QWidget* , const char* name):KMainWindow (0, name) +{ + // als erstes das Logo starten + KStartupLogo* start_logo = new KStartupLogo(0); + start_logo->show(); + start_logo->raise(); + + // die Instanzen von kverbos zählen + kverbosCounter++; + + config=kapp->config(); + + /////////////////////////////////////////////////////////////////// + // call inits to invoke all other construction parts + initStatusBar(); + initActions(); + initDocument(); + initView(); + + readOptions(); + + /////////////////////////////////////////////////////////////////// + // disable actions at startup + // Mir ist nicht klar, warum die Autoren des Frameworks diese + // Menuoptionen deaktivieren. + // Ich werde hier jedenfalls gleich einmal einige auskommentieren. + // fileSave->setEnabled(false); + // fileSaveAs->setEnabled(false); + filePrint->setEnabled(false); + editCut->setEnabled(false); + editCopy->setEnabled(false); + editPaste->setEnabled(false); + userResults->setEnabled(false); + + // El programa ha leído las opciones del programa. Entonces puedo iniciar el objeto + // por la control de KFeeder. + if (useKFeeder) + { + kfeederControl = new KFeederControl(kverbosCounter, showKFeederSplash, automaticKFeeder); + useKFeeder = kfeederControl->isActive(); + if (!useKFeeder) + { + // the KFeeder didn't start so it isn't installed. Delete the control object + delete kfeederControl; + kfeederControl = 0; + }; + } + else + kfeederControl = 0; + + // das Logo wieder löschen + delete start_logo; +} + +KVerbosApp::~KVerbosApp() +{ + // den Instanzenzähler zurücksetzen + kverbosCounter--; + if (kfeederControl) + { + disconnect(view, SIGNAL(informKFeeder(int)), this, SLOT(slotFeedIt(int))); + delete kfeederControl; + kfeederControl = 0; + }; +} + +void KVerbosApp::initActions() +{ + fileNewWindow = new KAction(i18n("New &Window"), "window_new.png", 0, this, SLOT(slotFileNewWindow()), actionCollection(),"file_new_window"); + fileNew = KStdAction::openNew(this, SLOT(slotFileNew()), actionCollection()); + fileOpen = KStdAction::open(this, SLOT(slotFileOpen()), actionCollection()); + fileOpenRecent = KStdAction::openRecent(this, SLOT(slotFileOpenRecent(const KURL&)), actionCollection()); + fileOpenStandard = new KAction(i18n("Open &Standard Verb File"), "fileopen.png", 0, this, SLOT(slotFileOpenStandard()), actionCollection(),"file_open_standard"); + fileSave = KStdAction::save(this, SLOT(slotFileSave()), actionCollection()); + fileSaveAs = KStdAction::saveAs(this, SLOT(slotFileSaveAs()), actionCollection()); + fileClose = KStdAction::close(this, SLOT(slotFileClose()), actionCollection()); + filePrint = KStdAction::print(this, SLOT(slotFilePrint()), actionCollection()); + fileQuit = KStdAction::quit(this, SLOT(slotFileQuit()), actionCollection()); + editCut = KStdAction::cut(this, SLOT(slotEditCut()), actionCollection()); + editCopy = KStdAction::copy(this, SLOT(slotEditCopy()), actionCollection()); + editPaste = KStdAction::paste(this, SLOT(slotEditPaste()), actionCollection()); + editErfassen = new KAction(i18n("E&nter New Verb..."), 0, 0, this, SLOT(slotEditErfassen()), actionCollection(),"edit_erfassen"); + editBearbeiten = new KAction(i18n("&Edit Verb List..."), 0, 0, this, SLOT(slotEditBearbeiten()), actionCollection(), "edit_bearbeiten"); + + settingOptions = new KAction(i18n("&Configure KVerbos..."), 0, 0, this, SLOT(slotSettingsOptions()), actionCollection(), "settings_options"); + userUsername = new KAction(i18n("&Username..."), 0, 0, this, SLOT(slotSettingsUsername()), actionCollection(), "user_username"); + userResults = new KAction(i18n("&Results"), 0, 0, this, SLOT(slotUserResults()), actionCollection(), "user_results"); + + fileNewWindow->setToolTip(i18n("Opens a new application window")); + fileOpenStandard->setToolTip(i18n("Opens the standard KVerbos verb file")); + fileNew->setToolTip(i18n("Creates a new document")); + fileOpen->setToolTip(i18n("Opens an existing document")); + fileOpenRecent->setToolTip(i18n("Opens a recently used file")); + fileSave->setToolTip(i18n("Saves the actual document")); + fileSaveAs->setToolTip(i18n("Saves the actual document as...")); + fileClose->setToolTip(i18n("Closes the actual document")); + filePrint ->setToolTip(i18n("Prints out the actual document")); + fileQuit->setToolTip(i18n("Quits the application")); + editCut->setToolTip(i18n("Cuts the selected section and puts it to the clipboard")); + editCopy->setToolTip(i18n("Copies the selected section to the clipboard")); + editPaste->setToolTip(i18n("Pastes the clipboard contents to actual position")); + editErfassen->setToolTip(i18n("Add new verbs.")); + editBearbeiten->setToolTip(i18n("Edit the list of verbs.")); + settingOptions->setToolTip(i18n("Change some options of the program")); + userUsername->setToolTip(i18n("Enter your name as the username")); + userResults->setToolTip(i18n("These are your latest results.")); + + // icons + editBearbeiten->setIcon("edit.png"); + editErfassen->setIcon("editclear.png"); + settingOptions->setIcon("configure.png"); + userUsername->setIcon("kverbosuser.png"); + userResults->setIcon("kverbosuser.png"); + + setupGUI(); +} + + +void KVerbosApp::initStatusBar() +{ + /////////////////////////////////////////////////////////////////// + // STATUSBAR + // TODO: add your own items you need for displaying current application status. + statusBar()->insertItem(i18n("Ready."), ID_STATUS_MSG); + statusBar()->insertItem(i18n("Trained: 0"), ID_TRAINED_MSG); + statusBar()->insertItem(i18n("Correct: 0"), ID_CORRECT_MSG); + statusBar()->insertItem(i18n("Number of verbs: 0"), ID_VERBS_MSG); + statusBar()->insertItem(i18n("User: nobody"), ID_USERNAME_MSG); +} + +void KVerbosApp::initDocument() +{ + doc = new KVerbosDoc(this); + doc->newDocument(); + connect(doc, SIGNAL(anzahlVerbenGeaendert(int)), this, SLOT(slotStatusVerbMsg(int))); + connect(this, SIGNAL(testAnzahl(int)), this, SLOT(slotStatusVerbMsg(int))); +} + +void KVerbosApp::initView() +{ + //////////////////////////////////////////////////////////////////// + // create the main widget here that is managed by KTMainWindow's view-region and + // connect the widget to your document to display document contents. + + view = new KVerbosView(this); + doc->addView(view); + setCentralWidget(view); + setCaption(doc->URL().fileName(),false); + // + connect(view, SIGNAL(numberTrainedChanged(int)), this, SLOT(slotStatusTrainedMsg(int))); + connect(view, SIGNAL(numberCorrectChanged(int)), this, SLOT(slotStatusCorrectMsg(int))); + connect(view, SIGNAL(informKFeeder(int)), this, SLOT(slotFeedIt(int))); +} + +void KVerbosApp::openDocumentFile(const KURL& url) +{ + slotStatusMsg(i18n("Opening file...")); + + doc->openDocument( url); + fileOpenRecent->addURL( url ); + slotStatusMsg(i18n("Ready.")); +} + + +KVerbosDoc* KVerbosApp::getDocument() const +{ + return doc; +} + +void KVerbosApp::saveOptions() +{ + fileOpenRecent->saveEntries(config,"Recent Files"); + + // Meine eigenen Optionen + // Die zum Lernen ausgewählten Zeiten + config->setGroup("tiempos"); + QString key; + for (int i = presente; i<MAX_TIEMPOS; i++) + { + key.setNum(i); + QString options = timeOptions[i][0] ? "true " : "false "; + options = timeOptions[i][1] ? options + "true " : options + "false "; + options = timeOptions[i][2] ? options + "true" : options + "false"; + config->writeEntry(key, options); + }; + // den Korrekturmodus abspeichern + config->setGroup("correction mode"); + config->writeEntry("strict", correctStrict); + // Abspeichern, ob der KFeeder benutzt werden soll + config->setGroup("use of KFeeder"); + config->writeEntry("kfeeder", useKFeeder); + config->writeEntry("kfeederSplash", showKFeederSplash); + config->writeEntry("kfeederAutomatic", automaticKFeeder); +} + + +void KVerbosApp::readOptions() +{ + // initialize the recent file list + fileOpenRecent->loadEntries(config,"Recent Files"); + + // Meine eigenen Optionen + // Die zum Lernen ausgewählten Zeiten + config->setGroup("tiempos"); + QString key; + for (int i = presente; i<MAX_TIEMPOS; i++) + { + key.setNum(i); + QString options = config->readEntry ( key, "true false false"); + int pos1 = 0; + int pos2 = options.find (' ', pos1, false); + timeOptions[i][0] = (options.left(pos2) == "true") ? true : false; + pos1 = pos2 + 1; + pos2 = options.find (' ', pos1, false); + timeOptions[i][1] = (options.mid(pos1,pos2-pos1) == "true") ? true : false; + timeOptions[i][2] = (options.right(options.length()-pos2-1) == "true") ? true : false; + }; + // Solange einige Zeiten nicht fertig sind werden die hier auf false gesetzt. + /*TODO*/ + for (int i = subPresente; i<MAX_TIEMPOS; i++) + { + timeOptions[i][0] = false; + timeOptions[i][1] = false; + timeOptions[i][2] = false; + }; + // Korrekturmodus + config->setGroup("correction mode"); + correctStrict = config->readBoolEntry("strict", false); + // Nutzung des KFeeders + config->setGroup("use of KFeeder"); + useKFeeder = config->readBoolEntry("kfeeder", true); + showKFeederSplash = config->readBoolEntry("kfeederSplash", false); + automaticKFeeder = config->readBoolEntry("kfeederAutomatic", true); +} + +void KVerbosApp::saveProperties(KConfig *_cfg) +{ + if(doc->URL().fileName()!=i18n("Untitled") && !doc->isModified()) + { + // saving to tempfile not necessary + + } + else + { + KURL url=doc->URL(); + _cfg->writePathEntry("filename", url.url()); + _cfg->writeEntry("modified", doc->isModified()); + QString tempname = kapp->tempSaveName(url.url()); + QString tempurl= KURL::encode_string(tempname); + KURL _url(tempurl); + doc->saveDocument(_url); + } +} + + +void KVerbosApp::readProperties(KConfig* _cfg) +{ + QString filename = _cfg->readPathEntry("filename"); + KURL url(filename); + bool modified = _cfg->readBoolEntry("modified", false); + if(modified) + { + bool canRecover; + QString tempname = kapp->checkRecoverFile(filename, canRecover); + KURL _url(tempname); + if(canRecover) + { + doc->openDocument(_url); + doc->setModified(); + setCaption(_url.fileName(),true); + QFile::remove(tempname); + } + } + else + { + if(!filename.isEmpty()) + { + doc->openDocument(url); + setCaption(url.fileName(),false); + } + } +} + +bool KVerbosApp::queryClose() +{ + return doc->saveModified(); +} + +bool KVerbosApp::queryExit() +{ + saveOptions(); + return true; +} + +///////////////////////////////////////////////////////////////////// +// SLOT IMPLEMENTATION +///////////////////////////////////////////////////////////////////// + +void KVerbosApp::slotFileNewWindow() +{ + slotStatusMsg(i18n("Opening a new application window...")); + + KVerbosApp *new_window= new KVerbosApp(); + new_window->show(); + + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotFileNew() +{ + slotStatusMsg(i18n("Creating new document...")); + + if(!doc->saveModified()) + { + // here saving wasn't successful + + } + else + { + doc->newDocument(); + setCaption(doc->URL().fileName(), false); + } + + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotFileOpen() +{ + slotStatusMsg(i18n("Opening file...")); + + if(!doc->saveModified()) + { + // here saving wasn't successful + + } + else + { + KURL url=KFileDialog::getOpenURL(QString::null, + i18n("*|All Files"), this, i18n("Open File")); + if(!url.isEmpty()) + { + doc->openDocument(url); + // Die zu bearbeitende Datei in dem Dokument setzen + doc->setURL(url); + setCaption(url.fileName(), false); + fileOpenRecent->addURL( url ); + } + } + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotFileOpenRecent(const KURL& url) +{ + slotStatusMsg(i18n("Opening file...")); + + if(!doc->saveModified()) + { + // here saving wasn't successful + } + else + { + doc->openDocument(url); + doc->setURL(url); + setCaption(url.fileName(), false); + } + + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotFileOpenStandard() +{ + slotStatusMsg(i18n("Opening file...")); + QString userLanguage = Prefs::userLanguage(); + if(!doc->saveModified()) + { + // here saving wasn't successful + + } + else + { + KURL url(locate("appdata", "data/"+userLanguage+"/verbos.verbos")); + if(!url.isEmpty()) + { + doc->openDocument(url); + // Die zu bearbeitende Datei in dem Dokument setzen + doc->setURL(url); + setCaption(url.fileName(), false); + fileOpenRecent->addURL( url ); + } + } + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotFileSave() +{ + slotStatusMsg(i18n("Saving file...")); + if (doc->URL().fileName() == i18n("Untitled")) + { + // Hier liegt ein Fall vor, der zu "Save as ... " gehört. + slotFileSaveAs(); + } + else + { + doc->saveDocument(doc->URL()); + }; + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotFileSaveAs() +{ + slotStatusMsg(i18n("Saving file with a new filename...")); + + KURL url=KFileDialog::getSaveURL(QDir::currentDirPath(), + i18n("*|All Files"), this, i18n("Save As")); + if(!url.isEmpty()) + { + doc->saveDocument(url); + fileOpenRecent->addURL(url); + setCaption(url.fileName(),doc->isModified()); + } + + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotFileClose() +{ + slotStatusMsg(i18n("Closing file...")); + + close(); + + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotFilePrint() +{ + slotStatusMsg(i18n("Printing...")); + + QPrinter printer; + if (printer.setup(this)) + { + view->print(&printer); + } + + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotFileQuit() +{ + slotStatusMsg(i18n("Exiting...")); + saveOptions(); + // close the first window, the list makes the next one the first again. + // This ensures that queryClose() is called on each window to ask for closing + KMainWindow* w; + // In der Dokumentation konnte ich leider nicht finden, wozu diese memberliste gut ist. + if(memberList) + { + for(w=memberList->first(); w!=0; w=memberList->next()) + { + // only close the window if the closeEvent is accepted. If the user presses Cancel on the saveModified() dialog, + // the window and the application stay open. + if(!w->close()) + break; + } + } + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotEditCut() +{ + slotStatusMsg(i18n("Cutting selection...")); + + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotEditCopy() +{ + slotStatusMsg(i18n("Copying selection to clipboard...")); + + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotEditPaste() +{ + slotStatusMsg(i18n("Inserting clipboard contents...")); + + slotStatusMsg(i18n("Ready.")); +} + +void KVerbosApp::slotStatusMsg(const QString &text) +{ + /////////////////////////////////////////////////////////////////// + // change status message permanently + statusBar()->clear(); + statusBar()->changeItem(text, ID_STATUS_MSG); +} + +// Gibt die Anzahl der Verben in der Statuszeile aus +void KVerbosApp::slotStatusVerbMsg(int n) +{ + QString s; + s.setNum(n,10); + s = i18n("Number of verbs: ") + s; + statusBar()->changeItem(s, ID_VERBS_MSG); +} + +// Gibt die Anzahl der geübten Verben in der Statuszeile aus. +void KVerbosApp::slotStatusTrainedMsg(int n) +{ + QString s; + s.setNum(n,10); + s = i18n("Trained: ") + s; + statusBar()->changeItem(s, ID_TRAINED_MSG); +} + +// Gibt die Anzahl der richtig geübten Verben aus. +void KVerbosApp::slotStatusCorrectMsg(int n) +{ + QString s; + s.setNum(n,10); + s = i18n("Correct: ") + s; + statusBar()->changeItem(s, ID_CORRECT_MSG); +} + +// öffnet einen Dialog mit dem neue Verben erfasst werden können. +void KVerbosApp::slotEditErfassen() +{ + spanishVerbList* pList = getDocument()->getList(); + KErfassen* pDlgErfassen = new KErfassen(*pList, -1, this, "erfassen", true); + pDlgErfassen->exec(); + if (pDlgErfassen->wasChanged()) + { + *pList = pDlgErfassen->getList(); + doc->setModified(); + }; + delete pDlgErfassen; + pDlgErfassen = 0; + // Anzahl in der Statuszeile anpassen + emit testAnzahl(doc->getAnzahl()); +} + +// öffnet einen Dialog mit dem die Verbliste bearbeitet werden kann. +void KVerbosApp::slotEditBearbeiten() +{ + KVerbEdit* pDlgEdit = new KVerbEdit(*(getDocument()->getList()), this, "edit the verbs", true); + pDlgEdit->exec(); + if (pDlgEdit->wasChanged()) + { + doc->setModified(true); + *(getDocument()->getList()) = pDlgEdit->getList(); + } + delete pDlgEdit; + pDlgEdit = 0; + // Anzahl in der Statuszeile anpassen + emit testAnzahl(doc->getAnzahl()); +} + +void KVerbosApp::slotSettingsOptions() +{ + KVerbosOptions* pDlgEdit = new KVerbosOptions(this, "bearbeiten", true); + pDlgEdit->CheckBox1_1->setChecked(timeOptions[presente][0]); + pDlgEdit->CheckBox2_1->setChecked(timeOptions[presente][1]); + pDlgEdit->CheckBox3_1->setChecked(timeOptions[presente][2]); + // + pDlgEdit->CheckBox1_2->setChecked(timeOptions[1][0]); + pDlgEdit->CheckBox2_2->setChecked(timeOptions[1][1]); + pDlgEdit->CheckBox3_2->setChecked(timeOptions[1][2]); + // + pDlgEdit->CheckBox1_3->setChecked(timeOptions[2][0]); + pDlgEdit->CheckBox2_3->setChecked(timeOptions[2][1]); + // + pDlgEdit->CheckBox1_4->setChecked(timeOptions[3][0]); + pDlgEdit->CheckBox2_4->setChecked(timeOptions[3][1]); + pDlgEdit->CheckBox3_4->setChecked(timeOptions[3][2]); + // + pDlgEdit->CheckBox1_5->setChecked(timeOptions[4][0]); + pDlgEdit->CheckBox2_5->setChecked(timeOptions[4][1]); + pDlgEdit->CheckBox3_5->setChecked(timeOptions[4][2]); + // + pDlgEdit->CheckBox1_6->setChecked(timeOptions[5][0]); + pDlgEdit->CheckBox2_6->setChecked(timeOptions[5][1]); + pDlgEdit->CheckBox3_6->setChecked(timeOptions[5][2]); + // + pDlgEdit->CheckBox1_7->setChecked(timeOptions[6][0]); + pDlgEdit->CheckBox2_7->setChecked(timeOptions[6][1]); + pDlgEdit->CheckBox3_7->setChecked(timeOptions[6][2]); + // + pDlgEdit->CheckBox1_8->setChecked(timeOptions[subFuturo][0]); + pDlgEdit->CheckBox2_8->setChecked(timeOptions[subFuturo][1]); + pDlgEdit->CheckBox3_8->setChecked(timeOptions[subFuturo][2]); + // + pDlgEdit->CheckBox1_9->setChecked(timeOptions[imperativo][0]); + // + pDlgEdit->RadioStrictCorr->setChecked(correctStrict); + pDlgEdit->RadioIgnoreAcc->setChecked(!correctStrict); + // + pDlgEdit->CheckBoxKFeeder->setChecked(useKFeeder); + if (!useKFeeder) + { + pDlgEdit->CheckBoxSplash->setDisabled(true); + pDlgEdit->CheckBoxMode->setDisabled(true); + }; + pDlgEdit->CheckBoxSplash->setChecked(showKFeederSplash); + pDlgEdit->CheckBoxMode->setChecked(automaticKFeeder); + // + if (pDlgEdit->exec() == 1) + { + timeOptions[presente][0] = pDlgEdit->CheckBox1_1->isChecked(); + timeOptions[presente][1] = pDlgEdit->CheckBox2_1->isChecked(); + timeOptions[presente][2] = pDlgEdit->CheckBox3_1->isChecked(); + // + timeOptions[1][0] = pDlgEdit->CheckBox1_2->isChecked(); + timeOptions[1][1] = pDlgEdit->CheckBox2_2->isChecked(); + timeOptions[1][2] = pDlgEdit->CheckBox3_2->isChecked(); + // + timeOptions[2][0] = pDlgEdit->CheckBox1_3->isChecked(); + timeOptions[2][1] = pDlgEdit->CheckBox2_3->isChecked(); + // + timeOptions[3][0] = pDlgEdit->CheckBox1_4->isChecked(); + timeOptions[3][1] = pDlgEdit->CheckBox2_4->isChecked(); + timeOptions[3][2] = pDlgEdit->CheckBox3_4->isChecked(); + // + timeOptions[4][0] = pDlgEdit->CheckBox1_5->isChecked(); + timeOptions[4][1] = pDlgEdit->CheckBox2_5->isChecked(); + timeOptions[4][2] = pDlgEdit->CheckBox3_5->isChecked(); + // + timeOptions[5][0] = pDlgEdit->CheckBox1_6->isChecked(); + timeOptions[5][1] = pDlgEdit->CheckBox2_6->isChecked(); + timeOptions[5][2] = pDlgEdit->CheckBox3_6->isChecked(); + // + timeOptions[6][0] = pDlgEdit->CheckBox1_7->isChecked(); + timeOptions[6][1] = pDlgEdit->CheckBox2_7->isChecked(); + timeOptions[6][2] = pDlgEdit->CheckBox3_7->isChecked(); + // + timeOptions[subFuturo][0] = pDlgEdit->CheckBox1_8->isChecked(); + timeOptions[subFuturo][1] = pDlgEdit->CheckBox2_8->isChecked(); + timeOptions[subFuturo][2] = pDlgEdit->CheckBox3_8->isChecked(); + // + timeOptions[imperativo][0] = pDlgEdit->CheckBox1_9->isChecked(); + // + correctStrict = pDlgEdit->RadioStrictCorr->isChecked(); + // + showKFeederSplash = pDlgEdit->CheckBoxSplash->isChecked(); + // testen ob die Art der Futteranimationen geändert werden soll. Diese soll nur geändert + // werden, wenn der KFeeder läuft und auch weiterhin laufen soll. + + if ((automaticKFeeder != pDlgEdit->CheckBoxMode->isChecked()) && useKFeeder && + (pDlgEdit->CheckBoxKFeeder->isChecked() == true)) + { + kfeederControl->setAutomatic(pDlgEdit->CheckBoxMode->isChecked()); + }; + automaticKFeeder = pDlgEdit->CheckBoxMode->isChecked(); + // prüfen, ob der KFeeder angehalten oder gestartet werden soll. + if ((pDlgEdit->CheckBoxKFeeder->isChecked() == true) && (!useKFeeder)) + { + // kfeeder starten + if (kfeederControl == 0) + kfeederControl = new KFeederControl(kverbosCounter, showKFeederSplash, automaticKFeeder); + } + else + if ((pDlgEdit->CheckBoxKFeeder->isChecked() == false) && (useKFeeder)) + { + // kfeeder anhalten + disconnect(view, SIGNAL(informKFeeder(int)), this, SLOT(slotFeedIt(int))); + delete kfeederControl; + kfeederControl = 0; + }; + useKFeeder = pDlgEdit->CheckBoxKFeeder->isChecked(); + }; + delete pDlgEdit; + pDlgEdit = 0; +} + +void KVerbosApp::getTimeOptions(bool op[][3]) +{ + for (int i=0; i<MAX_TIEMPOS; i++) + for (int j=0; j<MAX_SUBTYPES; j++) + op[i][j] = timeOptions[i][j]; +} + +void KVerbosApp::slotSettingsUsername() +{ + bool ok; + QString n = KInputDialog::getText(i18n("Enter User Name"), i18n("Please enter your name:"), + QString::null , &ok, this).simplifyWhiteSpace(); + if (ok) + { + statusBar()->changeItem(i18n("user: ") + n, ID_USERNAME_MSG); + doc->setNewUser(n); + userResults->setEnabled(true); + if (kfeederControl != 0) + kfeederControl->reset(); + } +} + +void KVerbosApp::slotUserResults() +{ + KResult* pDlgResult = new KResult(doc->getUser(), this, "username", true); + pDlgResult->exec(); +} + +void KVerbosApp::slotFeedIt(int n) +{ + if (useKFeeder && (kfeederControl != 0)) + kfeederControl->addN(n); +} + +#include "kverbos.moc" |