1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/TODO Fri Nov 28 11:21:08 2008 +0100 1.3 @@ -0,0 +1,250 @@ 1.4 + *************************************** 1.5 + * * 1.6 + * TODO: OSSP titraq Specification * 1.7 + * * 1.8 + *************************************** 1.9 + 1.10 +Must do 1.11 +------- 1.12 +Q_CHECK_PTR 1.13 +public/private 1.14 +Ensure rethrows from second loadData on upwards 1.15 +Report errors in all slot code 1.16 +Rework error handling in prefs 1.17 +Generally maintain Preference class 1.18 + Implement missing interface methods 1.19 +Review destruction of all members, compare with setupPrefs 1.20 +Some menus are defined QPopupMenu in header, some in code 1.21 +Memory optimization needed in tidataops 1.22 +Check all identifiers for undeutig unique scope 1.23 +Remove magic numbers from cpp files to titconst like TITRAQ_INDEXREMARK 1.24 +Some signals implemented in Titraqform really belong in satellite classes 1.25 +Write M4 macro for detecting cuserid, and prefer it in ac_assist 1.26 +configure soll ueberpruefen ob libqt[-mt] threads braucht, 1.27 + dann wenn so, soll den LIBS -pthread hardgecodet haben 1.28 +Read config location from optional --confgen autoconf location 1.29 +IDs in as_const.h much better choosing, so they make sense 1.30 +Be consistent with szQString vs QString var names 1.31 +After every result write a status bar message 1.32 +On multiple selection, no text should appear in edit ctrls 1.33 +Make consistent setEdition(), setDirty() default parameters 1.34 +Use namespace 'AS' or unique identifier 'AS' for all classnames 1.35 +Unify class mycl = class(), class mycl(), class *pMycl, auto_ptr<class *> 1.36 +Win32 code in User class is only half written, and incomplete homedir 1.37 +Verify routine consistently scans all fields on load and new entries 1.38 +Remove all exception raises from slot code 1.39 +New doc, new entry, change text in table, close... No verify save! 1.40 +Might not need classes Amount and Tableitem at all 1.41 +Mach mal mit den 'autobackup' und 'fextension' Optionen von prefs 1.42 +Check for outdated config file version 1.43 +Make status bar message, qWarning, qDebug, and Popup messages consistent 1.44 + For which purposes do messages go in each category? 1.45 +Label methods and parameters throughout as const ... const, use & 1.46 +Yank out all #include from headers, replace with class ...; protos 1.47 +Check for empty amount field in getWeektotals before Hashtasks[Convstring] += 1.48 +Accountlistbox is sorted both in assist and dataops with maps 1.49 +Verify that unviewable rows are not redrawn cerr << "Rownum" << nRow << endl; 1.50 +Also, use bool QTable::isRowHidden (int nRow) const 1.51 +Don't raise the question 'Save before quitting' when no contents were changed 1.52 + 1.53 +Bugs (? = unverified) 1.54 +--------------------- 1.55 +Overidden paintCell() might not work when called asynchronously? 1.56 +Sometimes a click on add or delete toolbar button is ignored? 1.57 +When multiple new rows are added sometimes wrong row shading? 1.58 +When sorting rows, sometimes a false extra highlight appears 1.59 +Disabled actions still show enabled icons in menu popups 1.60 +Pressing escape on task data cells does not exit edit mode 1.61 +On win32, all or some file reads and writes probably need IO_Translate? 1.62 +Method saveData(stream) must write to a new file, otherwise writes data pattern 1.63 +CRCs are being generated before parsing of "" is finished? 1.64 +Double click on column separator is broken again 1.65 +Zeitabzug moeglicherweise falsch wenn 23:00-01:00=? 1.66 +Statustext soll nicht neben Pixmaps erscheinen 1.67 +Loesch mal alle Text vom Task Editctrl, dann drueck mal Obentaste 1.68 +Memory leak in vector<QRadioButton> as_panel 1.69 +Opendoc, schau amount unten Knopf (ist dimmed) 1.70 +Reporting only works if event data is sorted by date 1.71 +Press Return then Tab many times to see invalid selections 1.72 +Does not enter edit mode for a cell when double click 1.73 +Some versions (as.de.cw.net:/v/as-old/sw), double click to 1.74 + edit a cell, add two characters, click X to close without 1.75 + leaving the cell. It should ask to save doc, but doesn't. 1.76 + 1.77 +Nice to have 1.78 +------------ 1.79 +Implement drag and drop selected row swapping 1.80 +Implement an unlimited and generic undo and redo buffer class 1.81 +Support pasting into as_gui from other app (like vim) 1.82 +Add optional automatic file personal data file backup 1.83 +Make edit control window optional through preferences 1.84 +Add customizable column ordering by click and drag 1.85 +Soll mehr intuitive, mit sekondaer/dritte Keycolumn 1.86 +CRC und Rev sollen nicht in gleiche Methode berechnet 1.87 +No need to have upd slots for non-changeable upd controls 1.88 +Before openDoc, closeEvent should be used instead of new code 1.89 +Align CRC field data to left edge of table items 1.90 +Make Simplefile class non-Qt specific 1.91 +Read and write karm format files with file extension detection 1.92 +Offer general option 'Use vim keymap' 1.93 +Text revisions 1.94 + Title case, sentence case, or lower case 1.95 + Past tense, third person, style, usage... 1.96 +Make consistent when version is shown in titlebar of all dialogs 1.97 +Runtime help system should not depend on installtime documentation 1.98 +App should start even if no accounts file is found 1.99 +Fully vimize all input widgets by subclassing them (w - back word) 1.100 +Reload accountlist on startup, but reload during 'Open Doc' as well 1.101 +Better file validation, instead of just single line validateData op 1.102 +Freetext field, for copyright or some announcement (this data isn't 1.103 + accurate enough for billing purposes). Field can be optionally 1.104 + shown above main table, but always dimmed to avoid accidental edit. 1.105 +Check for account list updates (checkbox), to allow a local user to 1.106 + query a CORBA or SOAP server for a new account list via accessors: 1.107 + U32 Account::getCrc(void) 1.108 + Acctlist Account::getData(void) 1.109 +Reimplement void QTable::swapRows, so that rows can be moved easily 1.110 +Update edit controls only after return from TiTable::createEditor() 1.111 + 1.112 +Screwey user notes ;-) 1.113 +---------------------- 1.114 +cs: 'd' should not delete at once but flag the record as deleted. Use '$' to sync (similar to mutt) 1.115 +cs: first 'TAB' should complete (if possible), second 'TAB' should open selection box (similar to bash) 1.116 +cs: line numberscould be referenced when entering accounts ala bash history ('!4' = record #4) 1.117 +mlelstv: 24:00 muss als Valideintrag im Finishfeld erlaubt 1.118 +thl: / should enable the user to search for something 1.119 +thl: using = should force a recalculation for a time field 1.120 +thl: using ~ should round a time field to the next quarter (configurable) 1.121 + 1.122 +Architectural 1.123 +------------- 1.124 +Decouple form, preferences, and RPC classes 1.125 +Remove common class behaviours (quitApp, close...) to abstract classes 1.126 + 1.127 +Win32 1.128 +----- 1.129 +Rework username, homedir, and confdaten (hive) logic 1.130 + 1.131 +Preferences 1.132 +----------- 1.133 +<option name wert> Hintergrund Functionalitaet 1.134 +<aspect name wert> Sichtliche Functionalitaet 1.135 +<session name wert> Automatisch gespeicherte 1.136 +<rule name expr cond> Amount = Finish - Start (mussen alle da z.B.) 1.137 +<alias name wert> Nutzbar lange Taskzeilen zu abstrahieren 1.138 +<macro name = 'Reuse'> 1.139 + Selectiere aktuelle und 3 vorherige Reihen 1.140 + Copy 1.141 + Geh zu letzte Reihe 1.142 + Paste 1.143 +</macro name = 'Reuse'> 1.144 +<macro name = 'Append'> 1.145 + Geh zu letzte Reihe 1.146 + Zufug Reihe 1.147 +</macro name = 'Append'> 1.148 + 1.149 +Code snippits 1.150 +------------- 1.151 +// Portable processes 1.152 +QProcess *Proc; 1.153 +Proc = new QProcess; 1.154 +Proc->setArguments("/usr/local/bin/nada"); 1.155 +bool ok = Proc->start(); 1.156 + 1.157 +> Does anyone know how to set the WhatsThis text for a QPushButton?. 1.158 +> 1.159 +> Met vriendelijke groet 1.160 +Use the static QWhatsThis::add() 1.161 + 1.162 +Document 1.163 +-------- 1.164 +Use doxygen for C++ interface documentation. 1.165 + 1.166 +Project plan 1.167 +------------ 1.168 + Prototype 1.169 + Release v0.8 Milestone 1, Alpha 1.170 + Release v0.9 Milestone 2, Beta 1.171 + Release v1.0 Milestone 3, 1.172 + Release v1.2 Milestone 4, 1.173 + 1.174 +Requirements 1.175 +------------ 1.176 + 1.177 +Deliverables 1.178 +------------ 1.179 + Binaries 1.180 + titraq Verwendung 1.181 + 1.182 + Designdocs 1.183 + titraq_design.ps Systemdiagramme 1.184 + 1.185 + Manpage 1.186 + titraq.1 Hauptinfo 1.187 + titraq.conf.5 Beschreibung des Configdatei 1.188 + 1.189 + Geliefert 1.190 + titraq.conf Ausgekommentet Beispieldatei 1.191 + 1.192 +Pseudocode 1.193 +---------- 1.194 + initialize 1.195 + parse command line 1.196 + parse titraq.conf file 1.197 + load titraq.dat file 1.198 + show control window 1.199 + wait for quit 1.200 + save titraq.dat file 1.201 + finish 1.202 + 1.203 +Test case 1.204 +--------- 1.205 + Pre: 1.206 + tar zxvf titraq-0.9.tar 1.207 + cd titraq-0.9 1.208 + ./configure 1.209 + make 1.210 + su 1.211 + make install 1.212 + 1.213 + Assume: 1.214 + OS has Qt 3.0.6 or newer multithreaded library 1.215 + 1.216 + Begin: 1.217 + $ titraq 1.218 + 1.219 + Output: 1.220 + Post: 1.221 + Procedure: 1.222 + 1.223 + 1.224 + **************************** 1.225 + * * 1.226 + * Inadequacies of as-gui * 1.227 + * * 1.228 + **************************** 1.229 + 1.230 +Architecture Inconsistencies 1.231 + o Some custom classes are thinly veiled Qt classes. Others 1.232 + are completely different, but with similar functionality. 1.233 + o Several classes are immense, and should be split into 1.234 + into easier to read pieces. 1.235 + o Some classes should be abstracted and new subclasses built. 1.236 + 1.237 +Implementation 1.238 + o Too procedural for my taste. Many methods should be merged 1.239 + or split and grouped into new classes or such. 1.240 + 1.241 +Naming 1.242 + o Hungarian notation is only used to 90% potential. 1.243 + o Inconsistent length and abbreviations. 1.244 + o Conventions suggested on Qt website not followed. 1.245 + 1.246 +Error handling 1.247 + o No standardized return values. 1.248 + o C++ exceptions used inconsistently. 1.249 + 1.250 +Memory handling 1.251 + o Smart pointers should be used in all exception code blocks. 1.252 + o A consistent policy of automatic versus dynamic pointer 1.253 + variables should be used in all classes.