Controller.h

Go to the documentation of this file.
00001 #ifndef CONTROLLER_H
00002 #define CONTROLLER_H
00003 
00004 #include <iostream.h>
00005 #include <qdatastream.h>
00006 #include <qdir.h>
00007 #include <qpe/applnk.h>
00008 #include <qfile.h>
00009 #include <qfileinfo.h>
00010 #include <qobject.h>
00011 #include <qcstring.h>
00012 #include <qstring.h>
00013 #include <qstringlist.h>
00014 #include <qtextcodec.h>
00015 #include <qtextstream.h>
00016 #include <qxml.h>
00017 #include <stdlib.h>
00018 #include "FolderParser.h"
00019 #include "MarkedItemsParser.h"
00020 #include "Preferences.h"
00021 #include "Sequence.h"
00022 #include "Term.h"
00023 #include "TermKey.h"
00024 #include "TermScheduler.h"
00025 #include "VocabParser.h"
00026 #include "Util.h"
00027 #include "Vocabulary.h"
00028 #include "minizip/unzip.h"
00029 #include "minizip/zip.h"
00030 
00031 class Controller : public QObject {
00032 
00033     Q_OBJECT
00034 
00035 public:
00036 
00037     static const QString vocabTreeFilename; // Should be removed in version 0.11.x.
00038 
00039     Controller();
00040 
00041     bool init();
00042 
00043     const QString& getApplicationDirName() const;
00044     Preferences& getPreferences();
00045 
00046     Folder* getVocabTree();
00047 
00048     void startQuiz();
00049     void restartQuiz();
00050     bool isResumableQuizAvailable();
00051     bool resumeQuiz();
00052     void prepareQuiz();
00053 
00054     Term* getCurrentTerm();
00055     bool hasNextTerm() const;
00056     Term* getTerm( const TermKey& termKey );
00057     Term* getNextTerm();
00058  
00059     QString getQuizFirstLanguage() const;
00060     QString getQuizTestLanguage() const;
00061 
00062     bool isQuizInProgress() const;
00063     int getProgress() const;
00064     Sequence& getRevealingSequence();
00065     int getRevealingSequenceStep() const;
00066     void incrementRevealingSequenceStep();
00067         
00068     void rightAnswer();
00069     void wrongAnswer();
00070     void reveal();
00071    
00072     bool saveData();
00073     void loadData();
00074    
00075     bool saveMarkedItems( Folder* folder );
00076     void loadMarkedItems( Folder* folder );
00077 
00078     Vocabulary* addVocabulary( Folder* parentFolder, Vocabulary* vocab = NULL ); 
00079     Folder* addFolder( Folder* parentFolder, Folder* folder = NULL ); 
00080 
00081     void copy( Vocabulary* vocab );
00082     void copy( Folder* folder );
00083 
00084     Vocabulary* loadVocabulary( const QString& parentDir );
00085     Folder* loadFolder( const QString& parentDir );
00086     bool saveFolder( Folder* folder, const QString& parentDir ) const;
00087 
00088     bool saveVocabulary( Vocabulary* vocab, const QString& location ) const;
00089     bool exportData( Vocabulary* vocab, const QString& file, QStringList* languages = NULL ) const;
00090     bool exportData( Folder* folder, const QString& file, QStringList* languages = NULL ) const;
00091     void writeFolderDataInXml( QTextStream& ts, const Folder& folder ) const;
00092     void writeVocabularyInXml( QTextStream& ts, const Vocabulary& vocab, QStringList* languages, bool writeXmlDirective = true, int depth = 0 ) const;
00093 
00094     void loadLegacyVocabulary( Folder* folder );
00095 
00096     QStringList getTranslationLanguagesFromFile( const QString& filename ) const;
00097     Base* importData( Folder* rootFolder, const QString& filename, const QStringList& languages );
00098 
00099     int getInitialTermCount() const;
00100 
00101     void initRevealingSequence();
00102 
00103     void writeVocabulariesInXml( Folder* folder, int depth, QTextStream& ts, QStringList* languages );
00104 
00105     void setClipboardData( const QString& type, const QByteArray& data );
00106     QByteArray getClipboardData() const;
00107     QString getClipboardDataType() const;
00108 
00109     bool isImagePathValid( const QString& path, const Vocabulary& vocab ) const;
00110     QString getResolvedImagePath( const QString& path, const Vocabulary& vocab ) const;
00111 
00112     void clearSearch();
00113     QValueList<TermKey> search( const QString& query, const QString& firstLang = QString::null, const QString& testLang = QString::null );
00114     QValueList<TermKey> getSearchResults() const;
00115     int getSearchResultsCount() const;
00116 
00117 public slots:
00118     
00119     void concludeQuiz();
00120 
00121 signals:
00122 
00123     void progressChanged( int progress );
00124 
00125 private:
00126 
00127     int writeFileIntoZipFile( zipFile outputFile, const char* filename, const char* data, int length ) const; 
00128 
00129     void initMarkedForStudyRec( Folder* folder, IdList& folderIds, IdList& vocabIds, IdListMap& termIds );
00130     void initMarkedForStudyRec( Vocabulary* vocab, IdList& vocabIds, IdListMap& termIds );
00131     
00132     void saveMarkedItemsRec( Folder* folder, IdList& folderIds, IdList& vocabIds, IdListMap& termIds );
00133     void saveMarkedItemsRec( Vocabulary* vocab, IdList& vocabIds, IdListMap& termIds );
00134 
00135     QStringList getVocabularyTranslationLanguagesFromZip( zipFile inputFile ) const;
00136 
00137     bool importFolderFromZip( Folder* folder, const QString& folderLocation, zipFile inputFile );
00138     bool importVocabularyFromZip( Vocabulary* vocab, const QString& vocabLocation, const QStringList& languages, zipFile inputFile );
00139     bool importImageFromZip( const QString& imgPath, zipFile inputFile );
00140     bool exportFolderRecIntoZip( Folder* folder, zipFile outputFile, QString path, QStringList* languages = NULL ) const;
00141     bool exportVocabularyIntoZip( Vocabulary* vocab, zipFile outputFile, QString path, QStringList* languages = NULL ) const;
00142 
00143     bool loadVocabulariesRec( Folder* folder );
00144 
00145     Vocabulary* makeCopy( Vocabulary* vocab, const QString& firstLang, const QString& testLang ) const;
00146     Folder* makeCopy( Folder* folder, const QString& firstLang, const QString& testLang ) const;
00147 
00148     bool deleteItemsMarkedForDeletion( Folder* folder );
00149     bool deleteObsoleteData();
00150 
00151     int findFolderId( const QString& filename ) const;
00152     int findParentFolderId( const QString& dirPath ) const;
00153     int findVocabId( const QString& filename ) const;
00154     QString convertPath( const QString& path, QMap<int,Folder*>& newFolders ) const;
00155 
00156     void searchRec( const QString& query, const QString& firstLang, const QString& testLang, Folder* folder, QValueList<TermKey>& results );
00157     void searchRec( const QString& query, const QString& firstLang, const QString& testLang, Vocabulary* folder, QValueList<TermKey>& results );
00158 
00159     Preferences         prefs;
00160 
00161     Folder*             vocabTree; 
00162 
00163     Sequence            currRevealingSeq;
00164     int                 currRevealingSeqStep;
00165     TermScheduler       scheduler;
00166 
00167     QString             markedXmlFilename;
00168     QString             markedFilename;
00169     QString             applicationDirName; 
00170 
00171     QString             searchQuery;
00172     QValueList<TermKey> searchResults;
00173 
00174     // Custom clipboard because data property is disabled for QMimeSource in Zaurus' Qt.
00175     QByteArray          clipboard; 
00176     QString             clipboardDataType;
00177 
00178 };
00179 
00180 #endif

Generated on Sun Mar 1 17:30:47 2009 for toMOTko by  doxygen 1.5.6