---------------------------TODO List--------------------------- Cat By Description By 4.1: B+ 4.1 Global shortcut keys are busted http://bugs.kde.org/show_bug.cgi?id=132476 B+ 4.1 Display Field Preferences are not updated until you restart kiten F 4.1 Sort by "Exact Match" R+ 4.1 Profile the linear vs indexed EDICT back-ends By 4.2: B 4.2 Investigate crash with kinput2, long ago... http://bugs.kde.org/show_bug.cgi?id=115579 B 4.2 Investigate http://bugs.kde.org/show_bug.cgi?id=115579 , this is probably dated B 4.2 Make radselect hilight colors noticeable (use current theme) F+ 4.2 GHNS support (including dictionary "updates") http://bugs.kde.org/show_bug.cgi?id=110541 F 4.2 Do a new Deinflection dictionary or system (the current one can't even handle kuru/suru) F- 4.2 Search Beginning/Search End options? R+ 4.2 Trim data/edict down to "common entries only" to help distros/svn users R 4.2 Correct radselect license/move some of radselect into libkiten R 4.2 DBUS Interface + Documentation R 4.2 Doublecheck README, AUTHORS, etc (RECURRENT) R 4.2 Be EBN-clean and dashboard-clean (RECURRENT) R 4.2 Update Help Files (RECURRENT) Unscheduled: B - Handle searches that don't include Word, Reading or Meaning in a sane way B- - Can't search for kanji readings B- - Searching is duplicated from input box, atm F+ - Radical decomposition in radselect (including in drag and drop) F+ - Heisig "primitive" set in radselect F+ - Mouse-over kanji information in radselect F+ - Greatly expand the radkfile, to include pronunciation, alternatives, etc F+ - Multi-thread the app, so the interface doesn't wait for the results F+ - Handle JMDict files F+ - Handle fpwing files F+ - "Quick-Select" widget to adjust which dictionaries a given query will use F+ - Export to various types of flashcard programs (Learn mode replacement) F - Widget to select field types to search by ("strokes:","grade:",etc) F - New Icons (radselect launch, filter rare, match beginning/exact/any) F - Add "drawn kanji" support somewhere (kanjidic synthetic output field?) F - Add sub-program to support mouse/tablet drawn kanji for lookup F - Search by word type F - Opening radselect while looking at a 1 kanji search displays radicals F- - Add popup menus to Forward/Back history buttons F- - Nicely format output fields (word type in particular) F- - Links directly from things like word type to Help File F- - Verify Dicitionary format (to some extent) in "add dictionary" selector F- - Support search ranges(G:1-3) and selections (G:1,3,5) in Extended field searches F- - Seperate Project: Screensaver to display random entries http://bugs.kde.org/show_bug.cgi?id=63296 F- - Can we omit/seperate name readings? http://bugs.kde.org/show_bug.cgi?id=46511 C - Move display to an MVC system C - Preferences Framework ? - Case sensitive non-japanese searches? ? - Look carefully at EDICT2 format... note the multiple kanji/kana given ? - Input Filters? ? - Search within results? (F3/"/") ? - Add widget to select "Grade X kanji" ? - Implement Multi-search? ? - Sequential lists? ? - Dictionary Editor? (Version and upload changes?) ? - Custom Dictionaries? (Open flashcard decks as dictionaries?) Category: (F)eature, (B)ug, (R)elease Requirement, (C)ode Organizaion, (?)Investigate as possible (+/- indicate relative importance IMNSHO) (RECURRENT) = After a release, move this to the next planned release ---------------------------TODO Details--------------------------- MVC: Primary advantages of moving to a model-view system are that we would be able to offer things like "right click on the entry, and see a list of other fields that could be displayed". Mouse-over kanji writing and such would be easy Disadvantages: the current CSS code is fairly easy to work with and understand Preferences Framework: At the moment, the lib and app preference files need to be exactly in sync, or a crash will occur. We probably need to make our own layer on top of the general preferences code. Connections: Select Dictionary File: Currently handled entirely between app and .kcfg (lib is just a server here) Select Display Fields: List of widgets is returned from DictionaryManager, plugged into a KTabWidget by the app. Requires app to include space in .kcfg if supporting a dict type. Display Field includes things like "--NewLine--" Sort Order: DictionaryManager is asked for a complete -> QMap. Uses the keys from this. Multi-search; This capability would allow you to select, for example, all words that contain any of a list of kanji. Alternatively, it would allow you select all words that contain at least one of the listed kanji, and no kanji that are not on the list. The interface for this might be tricky. Sequential Lists Be able to generate sequential learning lists, given a list of known kanji The Layered method is either very time intensive, or very memory intensive pick one and try implementing. Provided we limit the lists to containing only the resultant kanji, even the memory intensive version will only be a few (~20) megs for fairly large lists. Even on modern hardware, a perl implementation with ~40 kanji on each list takes about 10-15 seconds to run. Split into a separate app. This is the optimal time for a complete rewrite "inspired by learn mode". Other Formats: (Potential) other formats to look into: (fre)epwing: http://www.sra.co.jp/people/m-kasahr/freepwing/ using libeb? Using it would allow "accessing EB, EBG, EBXA and EPWING CD-ROM dictionaries" jdictionary: http://jdictionary.info/ stardict: http://stardict.sourceforge.net DICT: http://www.dict.org/ English -> English mainly, but networked ... would be cool to see. Check out kdict for a client in action. JMDict: http://www.csse.monash.edu.au/~jwb/j_jmdict.html ---------------------------Design Notes--------------------------- Search String Design: Add some complex search capabilities (space seperated or symbol seperated) Search String BNF: []* ::= ::= ::= ::= : ::= either a single character or code for one of the dictionaries ::= a value that the key has to match The Search list is "and"ed together logically, to determine results This can be modified with the match-type setting, which is evaluated seperately for each field Code Audit Checklist: Static Variables (avoid them)... use KStaticDeleter with pointers if needed Static Methods (use them if possible) Forward Declarations (eliminate header includes from header files) Iterators (Cache an Iterator.end() object instead of using end() in the loop) Iterators (Use const interators whenever possible) Iterators (foreach) Review the Initialization chain for using Delayed Init Double check the QCString usage for termination (in the indexer code) Use QString.isNull() and isEmpty()... not comparison to QString(""), "" or QString::null Use deleteLater() as a shortcut instead of manually implementing QTimer::oneShot() code Check ALL files for i18n strings that are not inside of i18n() or tr() methods Look through and get rid of redundant headers (particularly in the lib files)