ossp-pkg/as/as-gui/TODO
***************************************
* *
* TODO: OSSP titraq Specification *
* *
***************************************
Must do
-------
Q_CHECK_PTR
public/private
Ensure rethrows from second loadData on upwards
Report errors in all slot code
Rework error handling in prefs
Generally maintain Preference class
Implement missing interface methods
Review destruction of all members, compare with setupPrefs
Some menus are defined QPopupMenu in header, some in code
Memory optimization needed in tidataops
Check all identifiers for undeutig unique scope
Remove magic numbers from cpp files to titconst like TITRAQ_INDEXREMARK
Some signals implemented in Titraqform really belong in satellite classes
Write M4 macro for detecting cuserid, and prefer it in ac_assist
configure soll ueberpruefen ob libqt[-mt] threads braucht,
dann wenn so, soll den LIBS -pthread hardgecodet haben
Read config location from optional --confgen autoconf location
IDs in as_const.h much better choosing, so they make sense
Be consistent with szQString vs QString var names
After every result write a status bar message
On multiple selection, no text should appear in edit ctrls
Make consistent setEdition(), setDirty() default parameters
Use namespace 'AS' or unique identifier 'AS' for all classnames
Unify class mycl = class(), class mycl(), class *pMycl, auto_ptr<class *>
Win32 code in User class is only half written, and incomplete homedir
Verify routine consistently scans all fields on load and new entries
Remove all exception raises from slot code
New doc, new entry, change text in table, close... No verify save!
Might not need classes Amount and Tableitem at all
Mach mal mit den 'autobackup' und 'fextension' Optionen von prefs
Check for outdated config file version
Make status bar message, qWarning, qDebug, and Popup messages consistent
For which purposes do messages go in each category?
Label methods and parameters throughout as const ... const, use &
Yank out all #include from headers, replace with class ...; protos
Check for empty amount field in getWeektotals before Hashtasks[Convstring] +=
Accountlistbox is sorted both in assist and dataops with maps
Verify that unviewable rows are not redrawn cerr << "Rownum" << nRow << endl;
Also, use bool QTable::isRowHidden (int nRow) const
Don't raise the question 'Save before quitting' when no contents were changed
Bugs (? = unverified)
---------------------
Overidden paintCell() might not work when called asynchronously?
Sometimes a click on add or delete toolbar button is ignored?
When multiple new rows are added sometimes wrong row shading?
When sorting rows, sometimes a false extra highlight appears
Disabled actions still show enabled icons in menu popups
Pressing escape on task data cells does not exit edit mode
On win32, all or some file reads and writes probably need IO_Translate?
Method saveData(stream) must write to a new file, otherwise writes data pattern
CRCs are being generated before parsing of "" is finished?
Double click on column separator is broken again
Zeitabzug moeglicherweise falsch wenn 23:00-01:00=?
Statustext soll nicht neben Pixmaps erscheinen
Loesch mal alle Text vom Task Editctrl, dann drueck mal Obentaste
Memory leak in vector<QRadioButton> as_panel
Opendoc, schau amount unten Knopf (ist dimmed)
Reporting only works if event data is sorted by date
After Ctrl-O and closing window, Ctrl Keys ignored
Nice to have
------------
Implement drag and drop selected row swapping
Implement an unlimited and generic undo and redo buffer class
Support pasting into as_gui from other app (like vim)
Add optional automatic file personal data file backup
Make edit control window optional through preferences
Add customizable column ordering by click and drag
Soll mehr intuitive, mit sekondaer/dritte Keycolumn
CRC und Rev sollen nicht in gleiche Methode berechnet
No need to have upd slots for non-changeable upd controls
Before openDoc, closeEvent should be used instead of new code
Align CRC field data to left edge of table items
Make Simplefile class non-Qt specific
Read and write karm format files with file extension detection
Offer general option 'Use vim keymap'
Text revisions
Title case, sentence case, or lower case
Past tense, third person, style, usage...
Make consistent when version is shown in titlebar of all dialogs
Runtime help system should not depend on installtime documentation
App should start even if no accounts file is found
Fully vimize all input widgets by subclassing them (w - back word)
Reload accountlist on startup, but reload during 'Open Doc' as well
Better file validation, instead of just single line validateData op
Freetext field, for copyright or some announcement (this data isn't
accurate enough for billing purposes). Field can be optionally
shown above main table, but always dimmed to avoid accidental edit.
Check for account list updates (checkbox), to allow a local user to
query a CORBA or SOAP server for a new account list via accessors:
U32 Account::getCrc(void)
Acctlist Account::getData(void)
Reimplement void QTable::swapRows, so that rows can be moved easily
Update edit controls only after return from TiTable::createEditor()
Unconditioanlly show splash screen while loadData() runs
Screwey user notes ;-)
----------------------
cs: 'd' should not delete at once but flag the record as deleted. Use '$' to sync (similar to mutt)
cs: first 'TAB' should complete (if possible), second 'TAB' should open selection box (similar to bash)
cs: line numberscould be referenced when entering accounts ala bash history ('!4' = record #4)
mlelstv: 24:00 muss als Valideintrag im Finishfeld erlaubt
thl: / should enable the user to search for something
thl: using = should force a recalculation for a time field
thl: using ~ should round a time field to the next quarter (configurable)
Architectural
-------------
Decouple form, preferences, and RPC classes
Remove common class behaviours (quitApp, close...) to abstract classes
Win32
-----
Rework username, homedir, and confdaten (hive) logic
Preferences
-----------
<option name wert> Hintergrund Functionalitaet
<aspect name wert> Sichtliche Functionalitaet
<session name wert> Automatisch gespeicherte
<rule name expr cond> Amount = Finish - Start (mussen alle da z.B.)
<alias name wert> Nutzbar lange Taskzeilen zu abstrahieren
<macro name = 'Reuse'>
Selectiere aktuelle und 3 vorherige Reihen
Copy
Geh zu letzte Reihe
Paste
</macro name = 'Reuse'>
<macro name = 'Append'>
Geh zu letzte Reihe
Zufug Reihe
</macro name = 'Append'>
Code snippits
-------------
// Portable processes
QProcess *Proc;
Proc = new QProcess;
Proc->setArguments("/usr/local/bin/nada");
bool ok = Proc->start();
> Does anyone know how to set the WhatsThis text for a QPushButton?.
>
> Met vriendelijke groet
Use the static QWhatsThis::add()
Document
--------
Use doxygen for C++ interface documentation.
Project plan
------------
Prototype
Release v0.8 Milestone 1, Alpha
Release v0.9 Milestone 2, Beta
Release v1.0 Milestone 3,
Release v1.2 Milestone 4,
Requirements
------------
Deliverables
------------
Binaries
titraq Verwendung
Designdocs
titraq_design.ps Systemdiagramme
Manpage
titraq.1 Hauptinfo
titraq.conf.5 Beschreibung des Configdatei
Geliefert
titraq.conf Ausgekommentet Beispieldatei
Pseudocode
----------
initialize
parse command line
parse titraq.conf file
load titraq.dat file
show control window
wait for quit
save titraq.dat file
finish
Test case
---------
Pre:
tar zxvf titraq-0.9.tar
cd titraq-0.9
./configure
make
su
make install
Assume:
OS has Qt 3.0.6 or newer multithreaded library
Begin:
$ titraq
Output:
Post:
Procedure:
--- as-gui.html.orig Wed Mar 5 20:48:10 2003
+++ as-gui.html Wed Mar 5 20:47:58 2003
@@ -10,8 +10,8 @@
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
+<h1><a name="top">AS-GUI</a></h1>
<ul>
-
<li><a href="#name">NAME</a></li>
<li><a href="#version">VERSION</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
@@ -28,21 +28,18 @@
</ul>
<!-- INDEX END -->
-<hr />
-<p>
-</p>
-<hr />
-<h1><a name="name">NAME</a></h1>
+<hr /><hr />
+<h2><a name="name">NAME</a></h2>
<p><strong>as-gui</strong> - accounting system graphical client</p>
<p>
</p>
<hr />
-<h1><a name="version">VERSION</a></h1>
-<p>as-gui ASGUI_VERSION_STR</p>
+<h2><a name="version">VERSION</a></h2>
+<p>as-gui 0.6.23 (05-Mar-2003)</p>
<p>
</p>
<hr />
-<h1><a name="synopsis">SYNOPSIS</a></h1>
+<h2><a name="synopsis">SYNOPSIS</a></h2>
<p><strong>as-gui</strong>
[<em>X11_options</em>]
[<em>Qt_options</em>]
@@ -50,7 +47,7 @@
<p>
</p>
<hr />
-<h1><a name="description">DESCRIPTION</a></h1>
+<h2><a name="description">DESCRIPTION</a></h2>
<p>The <strong>as-gui</strong> application tracks the time a person spends on a number of
predefined tasks. This is the graphical client to the <strong>Accounting System</strong>
server (<strong>AS</strong>). Although the two can interact through means of interprocess
@@ -65,7 +62,7 @@
<p>
</p>
<hr />
-<h1><a name="x11_options">X11 OPTIONS</a></h1>
+<h2><a name="x11_options">X11 OPTIONS</a></h2>
<p>The following <em>X11 options</em> are passed directly to the X11 subsystem, and
allow for the typical customization of a X11 application.</p>
<dl>
@@ -74,57 +71,57 @@
<dd>
Sets the X display (host:server.screen). The default value is $DISPLAY.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dgeometry_geometry"><strong>-geometry geometry</strong></a></strong><br />
</dt>
<dd>
Sets the client geometry (width x height + xoffset + yoffset) of the main widget.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dfn_font%2c_%2dfont_font"><strong>-fn font</strong>, <strong>-font font</strong></a></strong><br />
</dt>
<dd>
Defines the application font. The font should be specified using a X logical
font description.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dbg_color%2c_%2dbackground_color"><strong>-bg color</strong>, <strong>-background color</strong></a></strong><br />
</dt>
<dd>
Sets the default background color and an application palette (light and dark
shades are calculated).
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dfg_color%2c_%2dforeground_color"><strong>-fg color</strong>, <strong>-foreground color</strong></a></strong><br />
</dt>
<dd>
Sets the default foreground color.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dbtn_color%2c_%2dbutton_color"><strong>-btn color</strong>, <strong>-button color</strong></a></strong><br />
</dt>
<dd>
Sets the default button color.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dname_name"><strong>-name name</strong></a></strong><br />
</dt>
<dd>
Sets the application name.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dtitle_title"><strong>-title title</strong></a></strong><br />
</dt>
<dd>
Sets the application title (caption).
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dvisual_truecolor"><strong>-visual TrueColor</strong></a></strong><br />
</dt>
<dd>
Forces the application to use a TrueColor visual on an 8-bit display.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dncols_count"><strong>-ncols count</strong></a></strong><br />
</dt>
<dd>
@@ -134,17 +131,17 @@
green, and 6 of blue). For other values, a cube approximately proportional to
a 2x3x1 cube is used.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dcmap"><strong>-cmap</strong></a></strong><br />
</dt>
<dd>
Causes the application to install a private color map on an 8-bit display.
</dd>
-<p></p></dl>
+<br></dl>
<p>
</p>
<hr />
-<h1><a name="qt_options">Qt OPTIONS</a></h1>
+<h2><a name="qt_options">Qt OPTIONS</a></h2>
<p>The following <em>Qt options</em> are used when rendering the graphics of the Qt
widget library. They are not compatible with other X11 or Win32 applications,
unless they were first linked with the Qt widget library.</p>
@@ -156,59 +153,59 @@
platinum. If you compiled Qt with additional styles or have additional styles
as plugins these will be available to the -style command line option.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dsession_session"><strong>-session session</strong></a></strong><br />
</dt>
<dd>
Restores the application from an earlier session.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_%2dwidgetcount"><strong>-widgetcount</strong></a></strong><br />
</dt>
<dd>
Prints debug message at the end about number of widgets left undestroyed and
maximum number of widgets existed at the same time.
</dd>
-<p></p></dl>
+<br></dl>
<p>
</p>
<hr />
-<h1><a name="environment">ENVIRONMENT</a></h1>
+<h2><a name="environment">ENVIRONMENT</a></h2>
<p><code>USER</code> The user name to use when accounting.</p>
<p><code>HOME</code> The full path of the user's home directory.</p>
<p>
</p>
<hr />
-<h1><a name="return_values">RETURN VALUES</a></h1>
+<h2><a name="return_values">RETURN VALUES</a></h2>
<p><code>0</code> The application exited sucessfully.</p>
<p><code>>0 or <0</code> At least one error ocurred.</p>
<p>
</p>
<hr />
-<h1><a name="examples">EXAMPLES</a></h1>
+<h2><a name="examples">EXAMPLES</a></h2>
<p>Try out some of these examples to customize <strong>as-gui</strong> from the command
line. Remember that options can be mixed.</p>
-<p>Initially editing the document 'figo.as':</p>
-<p>$ as-gui figo.as</p>
-<p>Showing lovely blue shades in most widgets:</p>
-<p>$ as-gui -bg lightblue -fg darkblue</p>
-<p>Starting with a title bar that reads 'Yours here':</p>
-<p>$ as-gui -title 'Yours here'</p>
-<p>Displaying graphics output on the host borchert:</p>
-<p>$ as-gui -display borchert:0.0</p>
-<p>A slim window slightly left of the top right corner:</p>
-<p>$ as-gui -geometry 761x347-120+0</p>
+<p>Initially editing the document 'figo.as':
+<br> $ as-gui figo.as</p>
+<p>Showing lovely blue shades in most widgets:
+<br> $ as-gui -bg lightblue -fg darkblue</p>
+<p>Starting with a title bar that reads 'Yours here':
+<br> $ as-gui -title 'Yours here'</p>
+<p>Displaying graphics output on the host borchert:
+<br> $ as-gui -display borchert:0.0</p>
+<p>A slim window slightly left of the top right corner:
+<br> $ as-gui -geometry 761x347-120+0</p>
<p>
</p>
<hr />
-<h1><a name="files">FILES</a></h1>
+<h2><a name="files">FILES</a></h2>
<dl>
<dt><strong><a name="item_%7e%2f%2eas%2dgui">~/.as-gui</a></strong><br />
</dt>
<dd>
User preferences file.
</dd>
-<p></p>
+<br>
<dt><strong><a name="item_as%2dgui%2ehtml">as-gui.html</a></strong><br />
</dt>
<dd>
@@ -218,7 +215,7 @@
<p>
</p>
<hr />
-<h1><a name="bugs">BUGS</a></h1>
+<h2><a name="bugs">BUGS</a></h2>
<p>Sometimes a click on a widget (like a toolbar button) is seemingly ignored.</p>
<p>Consistent row shading is not always maintained. This means that the sharp
colour difference between one row and the next may not correctly follow the
@@ -232,14 +229,15 @@
<p>
</p>
<hr />
-<h1><a name="see_also">SEE ALSO</a></h1>
+<h2><a name="see_also">SEE ALSO</a></h2>
+<p>as-gui(1)</p>
<p>as-gui.conf(5)</p>
<p>
</p>
<hr />
-<h1><a name="author">AUTHOR</a></h1>
+<h2><a name="author">AUTHOR</a></h2>
<p>Michael Schloh von Bennewitz
-(<a href="mailto:michael@schloh.com">michael@schloh.com</a>)</p>
+<br>michael@schloh.com</p>
</body>