---------------------------------------------------------
 Kexi Development CHANGELOG / TODO Document
 From js's Point of View
 
 Also includes: win32 porting and multiplatform 
  features improving details
 
 Copyright (C) 2003 Jaroslaw Staniek js at iidea dot pl
 (C) OpenOffice Polska 2003
 Kexi home page: http://www.kexi-project.org/
---------------------------------------------------

[JK] - fix proposed by Jakub Kubica
[KUBA] - fix proposed by Jakub Koscielak
"TODO(js)" is my TODO indicatior in the code

TODO: kexiprojectwizard: don't allow user to use the wizard when no db drivers are available
FIXME: Shorcuts conf dialog: two sections with the same name "Kexi"

TODO: Translate datatypes (visible eg. at alter table), but types set need simplification
      and unification (with optional advanced view)

TODO: rename KexiDBConnection to KexiDBConnectionData and use it inside KexiDB

TODO: rename KexiTabBrowser to KexiProjectWindow
TODO: rename KexiBrowser to KexiProjectListView
TODO: rename KexiBrowserItem to KexiProjectListViewItem
TODO: rename KexiDialogBase to KexiWindowBase

TODO: KexiTableView loads all data from the table: very slow and consumes a lot of memory:
	(e.g. for each record with 3 fields: 1 integer, 1 text and 1 float ic consumed ~350B)
  - add an option: for bigger tables load only part of the table data
  - optimize MySQL record size

TODO: Kexi can use database as only medium for storing _all_ project's data
	and then can treat .kexi files as:
	 -just export/import format for Kexi projects
	 -medium for storing projects that use sqlite driver
	 -simply: shortcut to project stored in database

HINT: DO NOT USE signals/slots for lowlevel data manipulation (e.g. loading data for tableviews)!

TODO: add kexiinclude_HEADERS and kexiincludedir to Makefile.ams to install headers, see:
http://developer.kde.org/documentation/other/makefile_am_howto.html

TODO: after kexi main window is activated again (from minimized state), 
     always 1st opened subwindow is activated
TODO: when editor in table cell is active: after click outside of it, editor should be closed (accepted)

TODO: FIX: QMetaObject::findSignal:KexiQueryPart: Conflict 
	with KexiProjectHandler::itemListChanged(KexiProjectHandler*) in KexiView

TODO: FIX vertical alignment in table view's cells based on corrent QFontMetrics (make tests for 
    different font sizes and names)

TODO: change texts in projectwizard to more descriptive:
"Authentication" --> "Database server's user authentication"
"Database Location" --> "Database Server Location"

TODO: [complexity=small] add dynamic resize for dict members like Connection::m_tables
TODO: [complexity=big] make KexiDB really ASYNC, multithreaded!
TODO: [complexity=big] add command line kexi tools

TODO: install kexi-specific icons in apps/kexi/icons not is global

TODO(GUI):
-add "Change data source" button in project wizard
-after pressing this button, show "connections selection dialog"
-create "connections selection dialog" instead of project wizard:
--add "Always show me this advanced dialog" checkbox to connections selection dialog
--add "Set selected connection as default" checkbox to connections selection dialog
-old project wizard is now "connection wizard" (for creating new connection);
 "connection" created by user stores full info needed to get databases list
-connection data is a mime type of local xml file, so it can be used to create shortcuts
-kexi project is just connection extended with providing database name and user (local)
 settings for this given database
-on startup: by default offer:
--creating empty temporary db on startup with name "New database"
--creating new database using database wizard
--opening existing Kexi projects
--importing existing non-kexi databases

TODO: implement better references (foreign key information) between tables + storage
TODO: implement WHERE clause + storage
TODO: implement GROUP BY clause + storage
TODO: add kexi driver version info
TODO: add server version info retrieval
TODO: add schema to kexi__* tables on createTable()
TODO: add support for creation temporary databases
TODO: Connection::selectStatement( KexiDB::QuerySchema& querySchema ) :
		--add WHERE and other sql parts


TODO: use KShared and KSharedPtr for Transaction and DriverManger class instead
TODO: add kexi's global.h 
TODO: add Q_LLONG to kexi global.h is not exists

TODO: add to field's properties list: input mask, validation rule, column width

FIX: corrupted database can be created sometimes (eg. for tests/newapi sqlite dbcreation)
        --reason: maybe file was not flushed and app too early exited?

TODO: improove Expression class, add code for generating expression 
 strings in Connection::queryStatement()

<SQLITE>
from: http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html

TODO: 
"Although SQLite parses named transactions, the names are ignored. 
SQLite does not support nested transactions. If you split the SQL statements in a transaction 
over several sqlite_exec() calls, you must be prepared to handle failure in each of these calls. 
If a failure occurs SQLite will return a non-zero value. After that, SQLite will revert to the 
default behavior of giving each SQL statement its own transaction until a new transaction is started."
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
---so: check if any sqlite_exec() failed and if so - update connection state as if rollback has been done.

TODO: use callbacks for fetching data (to avoid data copying)
TODO: "The SQLite library includes functions sqlite_encode_binary() and sqlite_decode_binary() 
in "encode.c". They can be used to safely encode binary data in a string form suitable for storing 
in SQLite, and safe for use in SQL queries. These functions are an "addition" to the SQLite library. 
They are not compiled into the library by default, and are not present in the precompiled binaries 
distributed on the download page."

TODO: add possibility in cursor: "Operating in-place on data returned by sqlite_get_table()"

TODO: for import data from native-sqlite databases: use "pragma table_info"
TODO: maybe also use "pragma table_info" for sanity checking, or more in kexidb driver??
</SQLITE>

<RENAME_PROPOSALS>
Introduce KexiProject namespace for all components that are specially developed for Kexi project

1. KexiProjectHandler --> KexiPart ( this is a baseclass for project 
  parts like: queries, tables, forms, reports)
It seems to be ok, since classes like KexiTablePart already inherits from KexiProjectPart 
(formerly KexiProjectHandler)
[DONE]

2. KexiProjectHandlerProxy --> KexiPart::Proxy
..thus it could be consistently named. This also indicated that the class is used 
as a helper for KexiProjectPart. More, there are already classes like KexiTablePartProxy
so new name for KexiProjectHandlerProxy is ok. Proxy class should be declared 
inside KexiProjectPart.
[DONE] - removed

3. KexiProjectHandlerItem -> KexiPart::Item 
(or KexiProjectPart::Data but Im voting for the former)
This gives us the idea that this class is just an instance of well-defined part.
[DONE]

ALSO TODO: move all simple widget classes (e.g. KexiSettings, KexiTabBrowser) 
from core, to more detailed dirs,
and projectWizard/ to wizards/ (there will be more wizards soon)

ALSO TODO: 
Jowenn's KexiDataProvider class functionality seems to be something like kexidb now offers.

</RENAME_PROPOSALS>

TODO:
- add kexi__parts (p_id integer, p_type) table and appropriate part objects in kexi__objects

TODO: (tableview):
- add top-left putton that allow select all rows
- enable clicked vheader button to select given row
- enable column dragging
- add action "restore original column order"
- enable up/down moving even when cell editor is activated

TODO:
- In mysql and pgsql drivers ConnectionData::fileName() is reused for socket names.
  It's not ok. Add another member: localSocketFileName(), because fileName() 
  is for file-based engines only.

TODO:  CURSOR
- m_readAhead: in Cursor::open():
	if (!m_readAhead) // jowenn: to ensure before first state, without cluttering implementation code
		m_readAhead = drv_getNextRecord(); //true if any record in this query
  ---FIX THIS for other drivers than SQLITE

TODO: add sorting projects information using KexiProjectData::lastOpened
TODO: also add this info as "Database>Open Recent" menu subentry

TODO: add permissions information to connection : and - for sqlite - check if file is RO
   and then set RO flag

MOST RECENT TODO:
- port old ProjectWizard as ConnectionWizard and plug it to "Add connection" action
  or add "Edit connection dialog" [difficulty: 3]
- reuse recent project tab as separate window for "More projects..." menu action [difficulty: 1]
- implement contents update for "recentprojects" menu action [difficulty: 2]
- implement starting a new Kexi process for "open" and "new" actions, when there 
  is already project opened in Kexi [difficulty: 2]
- start using .xml files for recent connections and recent projects
- implement use of xml .kexis file [difficulty: 2]
- implement: drag-and-drop of the project file to the outside of Kexi, [difficulty: 2]
- saveas== saving another shortcut to a project if it is server-based [difficulty: 2]

TODO: improove security for password information in .kexis files
TODO: for .kexis files' conenction data - if password attr. is not present - ask for password
IDEA: integrate password information in .kexis files with KWallet

TODO RELATED TO CELL EDITORS AND TABLEVIEWS:
- signal on situaltion when user e.g. pressed alpha key when only numeric chars is allowed
- signal when null/empty value forcell isn't permitted
- signal when repeated value isn't permitted
- add support for cut, copy & paste of cell's contents (get shortcuts from KStdAccel)

TODO: pass Field* to KexiInputTableEdit, and there - check if value may be null 
(using appropriate Field's method -- add these methods to Field; add i18n'd messages on errors), etc.
TODO: on Connection::updateRow(): pass field's name together with error message 
    -additional mapping is needed, eg QMap<QString,QString> err;
    err["KexiDB::Field::name"]="ID";

TODO: win32: Fix saving config files via KConfig (now the files are ugly overwritten)

TODO: add toolbar for toggling views (design-textedit-dataview)

TABLE VIEW TODO:
- fix not-db-aware mode
- add SpreadSheet mode (eg. for alter table, and query editor)
- add support for enums (combo boxes)
- shrink viewport area after each row removing (so scrollbars can be updated)

TODO:
- KMdiChildArea::getCaptionColors - change to KGlobalSettings::inactiveTextColor(), etc.
  (for win32 - reimpl. KGlobalSettings::inactiveTextColor() with code from getCaptionColors())

HINT: removing Qt::WStaticContents from KExiTableView ctor fixed repaint problem
  the problem was with repainting when hscrollbar disapperars....


FIXIT::::::::::::::
	js: Do you have repaint / resize problems of the document views in tabbed or ideal mode too ?
js^	jowenn: you can publish a screenshot of one? i cant tell if i have the same problem as you
jowenn	one moment
jowenn	http://www.jowenn.at/tmp/img.png
jowenn	after chaning view or resizing the window is works. Only a small part (the top left tables gets repainted otherwise)
js^	jowenn: ah i see - this is because empty TVs and these not-db-aware are not finished yet
js^	and query shows empty
jowenn	happens with a table with data too, there it only loses one repaint event though, when the project navigator collapses
js^	jowenn: i agree, will be fixed, thx, btw - i've fixed one crash on main window now. 
:::::::::::FIXIT::::::::::::::


FIXIT::: CRASH!! in kexidb
lucijan	#2 <signal handler called>
lucijan	#3 0x414dbf54 in strdup () from /lib/tls/libc.so.6
lucijan	js^: yes simply add a new kexi__object but o_caption as NULL
::FIXIT

TODO: Put Conenction::dropTable() and Conenction::dropQuery() INSIDE TRANSACTION!!!!!!!

2004-01-19
RESIZING HELL RESOLVED
- KexiDialogBase resizing fixed for maximize state: only resize a dialog if it is in normal state
- KexiMainWindow: for dialogs in normal state: decrease dialog's height if it exceeds area contents
- KexiViewBase: 
   -preferred size hint introduced;
   -parentDialog() convenience method added for getting view's dialog parent.

- KexiDB::Connection:
  -tableNames() return only tables that have valid names
  -the same for any other objects
- actions in 'Create' menu work
- PropertyEditor has cell borders' color like this used in table view
- closing() signal added to KexiViewBase - it works like in KexiDialogBase.
  Effect: table view's data is saved on closing if editing is in progress

- table view, kexidb: after row inserting, autoincremented fields have displayed values
- query removing works

2004-01-17
- KexiDialogBase: minimum height fixed: added height of its caption
- KexiTableView: repainting of bottom contents FINALLY FIXED
- ALTER TABLE Dialog impl. started
- query part: crashes removed when no sql string defined for query; by default "visible" column is true
- relation view: 
   -for global db relations -all tables are shown (will be customized later)
   -open table/design table actions fixed
- bool Kexi::isIdentifier(QString) added for convenience
- KexiDB: Tables and queries with invalid names (that are not valid identifiers) are skipped on lookup
- KexiProject: The same for any objects and KexiProject level

2004-01-14
CORE API CHANGED:
- Kexi Dialogs : view modes functionality added -- KexiViewBase, and integrated with KexiMainWindow 
   and KexiDialogBase
- KexiDockBase removed because if KexiViewBase existence
- If a dialog is already opened in given mode and user have dbl-clicked on the Navigator, 
  the dialog is not switched to other mode

- InternalParts and dialogs without multiple modes FIXED
- KexiTableView: when cursor is moved down and navigator covers the cursor's area, 
 area is scrolled up.

2004-01-13
KexiActionProxy:
 -	isSupported(const char* action_name) added -returns true, if action is supported by the proxy
 -	isAvailable() now lookups also in the childrens actions, if actual action proxy does 
  	 not support a given action
- Relation View:
	some action availability updates

- more icon sizes added: state_sql, table; state_text added for future "text view" mode

- KexiMainWindow: actions are invalidated more accurate on dialogs switching/closing
- KexiDialogBase: added flags t ocheck if given dialog's implementation accepts given view mode
  (data/design/sql modes)
- Kexi::ViewMode introduced - view modes for kexi dialogs (i.e. data/design/sql)

2004-01-12
- Relation View:
  - tables focusing fixed
  - actions 'remove table', 'remove relation' work (not impl)
  - "relation view" widget extracted and moved from relations/ plugin to widget/relations/
   (because it's used also in queries)
  - KexiRelationDialog renamed to KexiRelationWidget to avoid mistakes
  - actions moved from KexiRelationView up to KexiRelationDialog (simplicity)
  - added new actions: "open table", "design table"
- KexiActionProxy:
	new plugSharedAction() overload added for easy creating alternative action names. 

2004-01-10
- KexiDB::Field::isIntegerType() added. Now It's easier to detect if a field is integer.
- Fixed loading and saving values of type Float or Double in database tables.
- Row updating/inserting: Fixed converting decimal symbol from locale back to db backend format

2004-01-09
- PartManager: Parts are sorted using definition stored in kexirc 
  (code taken from the old API)
- .ui files can be now translated

2004-01-08
- KexiInternalPart introduced (as generalized KexiRelationPart): 
  produces internal Kexi dialogs and widgets ON DEMAND
  (so: KexiRelationPart is removed)
- Kexi Relations (widget and dialog) is now produced by KexiInternalPart
- Tables in relation view: sizes fixed

2004-01-07
- Build fixes for gcc2.95 on kde3.1
- Relations View: connection and viewtable focusing fixed and some actions added

2004-01-06
- KexiTableView: 
  -rowEditStarted(int) signal is emitted when row editing is started
    (for updating or inserting)
  -rowEditTerminated(int) emmited when row editing is terminated 
    (no matter if accepted or not)
  -proper availability updates for "edit_delete_row" (disabled when tv is
   readonly) and "data_save_row" (enabled only on row editing)
- KexiDialogBase/KexiPart : fixed caption icons setting for dialogs created by
  parts
- Shared Actions:
  - KexiSharedActionHost introduced - it's "action sharing" functionality   extracted from KexiMainWindow.
  - global default KexiSharedActionHost added for convenience
  - KexiActionProxy now uses KexiSharedActionHost as it's host instead of explicity pointed KexiMainWindow
  - on destruction, KexiSharedAction object is taken out of its KexiSharedActionHost 
  - int KexiMainWindow::generatePrivateDocID() added, so we can use this when we want to get unique doc id e.g. for KexiDialogBase.
  - generatePrivateDocID() is used in Relations dialog

- KexiMainWindow: fixed bug in virtual function
- KexiSharedActionHost: fixed behaviour on destruction

-KMDI:
  -caption's icon is resized on setIcon() when needed
  -default icon changed to SmallIcon("filenew"), 
   if not found - filenew.xpm is used

2004-01-05
- QueryAsterisk: 
  -setTable() added - a must for parser to work
  -debug improoved
- Connection: dropTable() added
- Query Part ported to win32
- KexiBrowser: nice title added for popup under part item
- KexiTableView: 
  -navigator showing/hiding implemented
  -cursor setting a bit fixed for empty view
  -cell's text has now proper color for read-only column
- KMDI: fixed bad QWidget filter lookup and unsafe identifier hiding in childview's eventfilter
- kexipropertyeditor ported to win32, kexiproperty and kexipropertybuffer moved from core

2004-01-04
- KexiActionProxy: "action" term in methods substituted by more readable: "sharedAction"
- some actions (in browser) marked as KEXI_UNFINISHED
- KexiMainWindow: KStdActions are now also acceptable as shared actions
- copy/cut/paste actions are shared now; added to edit menu
- "relations" action reintroduced
- closing() convenient signal added to KexiDialogBase
- on Table closing - any edits that are in progress are accepted (thx to lucijan for report)
- KexiTableView: 
  -fixed crash while counting minimum size for columnless tableview
  -preventing from crash when no data is set before constructing is finished
- KexiProject: openObject() and removeObject() added so we will be able to catch kexidb errors

- KexiPart items are now removable! (both from GUI and db backend)
- Kexi Browser is items are removed if required
- KexiDialog: now has itemIcon() possible for reimpl. and Kexi Relation View reimpl this, since 
  it has no KexiPart
- Kexi Relation View: small crash fixed

2004-01-03
- KexiDB, core:
	-ConnectionData and KexiProjectData now inherit QObject 
	 (useful for QGuardedPtr, sharing and for notifications about changes)
	-project_caption, project_desc properties are now created and stored in projects
	-some utility functions added in kexidb/utils.cpp
- KexiMainWindow: application's caption now also contain current project's caption (or name)
  (this also works ok for maximized windows)
- mysql driver reenabled (may not work correctly)

- ConnectionData
  -conflict with QObject fixed
  -"name" member is now: "connName"

2004-01-02
- table view:
	-in key event - we give up with executing actions that are shared with main window, because
	these actions are executed at main window's level. These actions are declared using plugSharedAction().
	-row deleting works
	-rows number is updated in tv navigator after row deletion
- actions: MSA-like "Delete Record" substituted by "Delete Row"

TODO: show posible errors (as well as for INSERTs and UPDATEs)!!!


2003-12-30
** Many cleanups and behavioral fixes
- KexiMainWindow: 
  -focusing fixed again (now menubar doesn't grab move focus from navigator)
  -shared action set is now simplified, generalized
  -getlogin() used at least on win32, cause lack of KUser :)
- KexiDockBase added as a base for docked widgets hat offer shared actions. 
  Now it is a pair with KexiDialogBase class (both inherit KexiActionProxy).
- "Data" menu entry introduced
- KexiTableView:
  -added action for current cell removing
  -added popup menu
  -cell focus-marker is not grayed when popup menu is executed
  -Key_Space pressing fixed
  -added possibility for plugging shared actions to table view (using plugSharedAction()),
   e.g. "data_save_row" action, so shortcuts are properly handled
  -deleting row while new row is edited just cancels editing
  -vscrollbar tooltip is not visible when corliing is dont using keyboard instead of a mouse
  -stranger's key events (e.g. pressing up arrow in navigator's line edit) 
   aren't processed by table view (in keyPressEvent())

2003-12-22
- KexiTableView most keyboard events are now only accesible without key modifiers (eg. CTRL+Key_Up now doesn't work)

2003-12-21
- KexiActionProxy introduced
- New terms introduced: part's gui client and part instance's gui client. 
  The latter is removed from main window's guifactory when part instance is deactivated 
  e.g. "Filter" action of tablepart is hidden when needed),
  while the former is premanent in main window (e.g. "New Table" action is always visible).

- KexiMainWindow: 
  -dockwidgets' (like e.g. browser) focusing on main window's activate/deactivate 
   and on menu bar popups - fixed.
  -removed toolbar item's fileckering when we're closing one kexidialog and another kexidialog 
   of the same type (guiclient) has to be activated (solution: guiclients are removed not 
   on kexidialog closing but before activating another, it new activated dialog has different client.

- Global Action availability updates: 1) KexiMainWindow updates its actions on dialog switching, 
  or even on focusing dockwidget, like e.g. browser; 2) from dialog point of view - when required, 
  action availiability (true/false) is signalled from currently focused dialog to main window
- Browser: popup menu re-added, (there is also example how to plug 
  both custom and global actions to the popup)
- Opening part instances in design mode prepared (openInstance())

2003-12-20
- KexiDialogBase remembers its creator (a KexiPart::Part object)
- KMdiChildFrm's icon is scaled when needed (e.g. when detached/attached)

- KexiPart's classes: some methods are now protected
- Toolbar buttons are now flicker-free, because gui clients are now attached 
   to parts instead of part instances


2003-12-19
- KexiDB::Field:
  -many properties of type int are now of type uint
  -WIDTH property added
  -NOTEMPTY property added
  -canBeEmpty(), typeGroup(), isDateTimeType() added

- KexiDBTableViewColumn merged with KexiTableViewColumn, now column properties are always reused 
  from KexiDB::Field's properties

- KexiTableView: full handling of NULL or EMPTY values on editor accepting, e.g.:
   * cells are displayed as empty EVEN for numeric types, if null values are allowed
   * cell value is forced to NULL if empty values are not allowed (e.g.: for numeric types)

- Updating with NULL values fixed, and it's done only when needed.
- KexiTableView editors: pressing "left arrow" key at begginning of cell's text moves 
  to cell on the left hand; the same for end of text+right arrow key

- Finally: new row inserting works (no data integrity checking or warnings added though).

- KexiTableView: cells: fixed displaying of text (and text selection) longer than cell's width
- KexiDB: 
	-escapeString() and valueToSQL() moved from Connection to Driver
	-escaping ' and " chars fixed

2003-12-18
2003-12-17
2003-12-16
2003-12-15
- tableview: changes in keys behaviour: 
  -Ctrl+home moves to 1st row, Ctrl+end - to last row,
   Home -to 1st col., End -to last col.
   Ctrl+Shift+home moves to 1st row and col, Ctrl+Shift+end - to last row and col,
  -Key_BackTab is also used to navigate cells
  -row editing improoved: buffer containing changes for current 
    edited row introduced (KexiDB::RowEditBuffer)
- tableview cell editors / items:
  -KexiTableItem simply inherits from KexiDB::RowData
  -Tab and Shift+tab, Up, Down, Home, End, etc. keys work also when cell editor is visible
- FINALLY: row editing fully working: data is updated @ the backend using KexiDB

- keximainwindow:
  -Tab key pressed on navigator activates current child window
  -Mainwindow's caption now contains (for Childframe Mode) child window's caption 
   as the prefix if the child is attached and maximized. This works well with attaching/detaching 
   and deactivating child windows.

- KMdiChildArea: 2x crash fix for childframe mode
  -when KMdiChildArea::setTopChild(0) is called and m_pZ is empty, pMaximizedChild is 0
  -in KMdiChildArea::manageChild(), first - we need to take old references to childwindow 
   that is added to m_pZ (crash reproduction: detach one childwindow, attach it, detach again)

-KexiDB:
 -IndexSchema's pkey retrieving for loaded project -fixed
 -RowEditBuffer class introduced
 -Object::debugError() shows more error info
 -Connection::updateRow() and Cursor::updateRow() inttroduced for row updating
 -some metods goes inline
 -expanded list (obtained from QuerySchema::fieldsExpanded()) 
    of Cursor's all query fields is cached within cursor
 -FieldList - fields lookup is now case insensitive
 -results of QuerySchema::fieldsExpanded() is cached inside QuerySchema
 -QuerySchema::pkeyFieldsOrder(), QuerySchema::fieldsOrder() methods introduced (results are cached)

-Drivers:
 -SQLite driver updated for current API
 -MySQL driver just compiles


2003-12-13
- browser: focusing fixed: doesn't lose focus when clicked

2003-12-12
- added caching to KexiProject::items() and KexiPartInfo
- objects lookup-and-opening functionality moved from navigator (KexiBrowser) to keximainwindow
- "-open" CLO reintroduced
- KexiMainWindow: error messaging generalized a bit
- KexiTableView - editors API and behaviour improoved

- KexiPart::Part objects are cached
- pointers to KexiPart::Item are used instead of values
- KexiStartupFileDialog's file selection works on win32


2003-12-11
- Cursor::movePrev() impl. updated
- DriverManager: result names are available for KParts::ComponentFactory::ComponentLoadingError errors

- Detached KexiDialogBase windows now have proper icons
- KexiTableView:
  - size hint and minimum size hint fixed
	- better widths for text fields in navigator
	- cell redrawing & colors fixed
- KexiDataTable: size hint and minimum size hint is reused from KexiTableView
- Some fixes for KMDI taskbar
- KexiInputTableEdit:
	- fixed adding first char on starting edit
	- numeric field == 0 is cleared on edit
- KexiDialogBase, KexiPart::Part: creating part instances and registering generalized
- KexiMainWindow: foxusing improoved, added action for focusing navigator
- KexiMainWindow: members moved to d-pointer
- KexiPart::GUIClient is created by KexiPart on demand, if GUI window available

2003-12-10
- KexiMainWindow: 
  * "show navigator" action is auto-handled by kmdi
  * fixed : pointer to current xmlgui is now cleared before closing kexidialog
- KexiTableView::paintRow() fixed crash when col number was ==-1

2003-12-08
- Kexi MainWindows' settings are now stored and restored:
  - toolbars, docks positions
  - MDI mode
  - added workaround for TaskBar positioning problem

2003-12-06
- sources synced with win32 target, again
- Kexi:: singletons are now accessed via functions, eg. Kexi::connset()

2003-12-03
- KMDI modes enabled
- KexiStatusBar introduced

2003-11-30
- KexiDB::Field::isFPNumericType() added
- KexiTableView now entirely uses KexiDB::Field::Type for types checking, not QVariant
- KexiTableView::paintCell() simplified

2003-11-28
- KexiStartupDialog: existing file opening fixed (problem with autocompletion);
   "accept" aborting when no filename entered
- some minor fixes and TODOs
   
2003-11-25
Finally commited again
General:
- PostgreSQL-based projects: tables are now visible in Kexi
- KexiProjectSelectorWidget for "projectopen" action reused with KexiProjectSelectorDialog
- most KexiDB errors are connected to message boxes, even driver loading failures

- after unsuccessfull Cursor::moveFirst() eof() and bof() now return true
- '..' substituted with ".." for message strings

- pqxx driver: 
  - cursor's internal transaction is now destroyed on error in drv_open()
  - cursor's internal transaction has an unique name for easy debugging
 
- Kexi::detectProjectData() added for detecting file type both on startup and after
    filename is selected in Kexi's file dialog
- KexiPart::Manager is now shared between project sessions
- KexiPart:: classes' implementation a bit refreshed
- QValidator and helper functions for identifiers added

- Main Window:
  - "Open Existing Project" action works both for file- and server-based projects
  - "New Project" action works both for file- and server-based projects
  - above actions now work also after startup, from toolbar

- KexiPart::dbAvailable signal not needed since openProject() function returns boolean

- KexiStartupDialog:
  - KexiConnSelectorWidget reused
  - if single page is configured, no tabs are visible, 
    so KexiStartupDialog is reused for projectopen and projectnew actions

- KexiStartupFileDialog introduced as embeddable widget, 
    reusable for different file types (e.g. .kexi and .kexis)
- KexiNewProjectWizard introduced for creating empty projects (both file and server based)
    it will be also reused for "project templates wizards"
  
2003-11-24
2003-11-23
- KexiDB: Connection::databaseExists() now works correctly with file-based drivers
	- just file existence is checked

- KexiDB::Connection 
   - creating or dropping system database is not permitted
   - databaseExists(): full file paths are compared for file-based drivers
- KexiDB::Driver i18n fix, thanks for Malcolm Hunter
CCMAIL: malcolm.hunter@gmx.co.uk

- KexiPart::Manager is now shared
- KexiPart::  classes' implementation a bit refreshed

TODO: keep ownership properly in KexiPart namespace!!!!!!


2003-11-22
2003-11-21
- drivermanager cleanup hack
- some improovements in kexidb clases
- KexiDB:
  - Driver::isSystemDatabaseName() added
  - some methods converted to const
  - Connection::databaseNames() now has parameter for skipping system database names
  - Driver::isValid()
    - now checks driver's major version and compares against kexidb library major version
    - now is called on createConnection() instead of Connection::connect() so errors 
	  can be catch earlier
  - KEXIDB_DRIVER (like Q_OBJECT) in driver.h and KEXIDB_DRIVER_INFO in driver_p.h macros 
    introduced for ease driver development and decrease error count
  

2003-11-19
- KexiNewProjectWizard added
- KexiStartupFileDialog convenient KFileDialog subclass added/reused
   
2003-11-17
- KexiDB: buffered cursors: the first record was shown 2 times
- KexiDB::Connection: some internal query fixes
- newapi tests: -buffered-cursors switch added, non-internal cursor for all tests
   are now unbuffered by default; fixed buggy behaviour on nonsuccessful t.v. test
   
2003-11-15
- small compiler issues fixed in pqxxconnection
   
2003-11-14
- Field: inlines fixed for newer compilers
- DriverManagerInternal::slotAppQuits() used to destroy all drivers
  on QApplication quit, so even if there are DriverManager's static
  instances that are destroyed on program "static destruction", 
  drivers are not kept after QApplication death.

2003-11-12
2003-11-13
- Kexi startup procedure for both files and db connections introduced
- startup dialog integrated
- projectdata redesigned
- menu items improoved, polished; e.g. Changed "File" menu entry to "Database"
- ConnectionData:
  -added id for connectiondata
  -some const added

2003-11-10
- added global kexi version info, like in koffice
- configure.in.in: added checking for qextmdi if required

2003-11-07
2003-11-06
2003-11-05
- KexiTableView: 
 - Navigation bar added
 - cell's focus indicator frame is now also visible after focusout
 - before entering to  edit mode, we ensure that current cell is visible
 - vscrollbar tooltip added
- Cursor: some members made private or protected
- Cursor: m_beforeFirst is probably not needed anymore; m_at==0 is enough
- Field: isNumericType(), isTextType() added, etc.;  
   type names are now i18n'd in an array;
   some methods inlined

TODO: void KexiTableView::cancelRowEdit() still dont repaint properly!!
TODO: update on lostfocus

- SQLiteConnection:: sqlite_freemem() used to free error message when needed;
	do the same for SQLiteCursor
- serverResult(), etc. methods aded also to Cursor class, so finer grained error 
  info is available

  
2003-11-04
- Documentation added for few newer and older methods.

2003-10-31
- KexiDB::Cursor: many code like drv_getNextRecord() moved from SQLiteCursor down 
  to Cursor class

2003-10-29
2003-10-30
- KexiStartupDialog added. Now, although it is project-and-connection-oriented, 
   it is designed to be still consistent with conventional document-driver startup 
   dialogs used for other KOffice apps.
- KexiProjectSelectorWidget introduced
- KexiProjectData structure added
- KexiProjectSet structure added
- Test for new KexiStartupDialog. Code written here will be reused for
  "fileopen" and "filenew" Kexi actions.

2003-10-28
- KexiStartupDialog introduced
- KexiDB::ConnectionData: now offers (optional) driverName info
- KexiDB::Driver::Info (short usefull structure) is now offered by DriverManager
- ConnectionData::localSocketFileName optional attribute added
 
2003-10-23
- new icons for few kexi-specific contexts;
- most icons are installed into Kexi app dir

2003-10-22
- KexiTableView: 
 - sorting works again
 - before sorting, row editing is cancelled
 - better "ensure visible" code when scrolling on small area
 - inserting rows code completed
 - vheader repaint fixed

2003-10-21
- tests/newapi : Now all test types accept <db_name>
- KexiTableView: 
 - page down key also move cursor to "insert row" if one is present
 - double clicking on cell (opening cell editor) fixed
 - fixed cell's repaint when autoscroll is performed after clicking cell at different row
 - sorting by column enabled, full set of methods added for this
 - new feature: empty row is appended right after start of editing new row (like in MSA), 
 to allow user to move to a next row
- KexiDB driver services' properties updated:
   - X-Kexi-DriverType=[File|Network]
   - and X-Kexi-FileDBDriverMime (for file-based drivers only; 
      for sqlite it is: application/x-sqlite)
   -MimeType property removed
- startup speed improoved: drivers lookup in KexiDB::DriverManager is now on demand.
- Driver name now reuses QObject::name()
- Connection::lastInsertedAutoIncValue() introduced

2003-10-19
- Connection::useTemporaryDatabaseIfNeeded() now is also reused 
  for databaseExists() and databaseNames(), so these methods work when engine 
  needs used any database before asking for info
- ConnectionPrivate::m_skip_databaseExists_check_in_useDatabase used
	to avoid endless recursion between useDatabase() and databaseExists()
	when useTemporaryDatabaseIfNeeded() is working
- Connection::setupKexiDBSystemSchema() added check to prevent creating 
 system tables schema more that once per connection

- Connection: reomved default values from useDatabase() and createDatabase()
	because this might be confusing to use first-found database name here; (thanks piggz!)
- FieldList: cached string == comma-separated list of fields added
- Connection: valueToSQL() overload added, insertRecord() overload added so we can omit 
	some fields from inserting; this is also internally used when kexi__* tables are 
	filled what improoves backward compatibility
- FieldList now offers lookup by field name, list of field names, it can create 
  subLists, usable to define list of fields for data inserting
- fixed compiler-dependent bug in insertRecord()

2003-10-18  
- Connection:
  - useTemporaryDatabaseIfNeeded() added - Because some engines need to have
   opened any database before executing administrative sql statements 
   like "create database" or "drop database",
   this method is used to use appropriate, existing database for this connection.
  - above method is now used in createDatabase() and dropDatabase() if needed.
  - QString anyAvailableDatabaseName() - returns name of any (e.g. first found) 
   database for this connection, eg. "template1" for PostgreSQL.
  - DriverBehaviour::ALWAYS_AVAILABLE_DATABASE_NAME added when hardcoded value 
   for above is enough.
  - setAvailableDatabaseName(const QString& dbName) - This is option that e.g. 
   application that make use of KexiDB library can set to tune connection 
   behaviour when it need to temporary connect to any database
   in the server to do some work (e.g. DROP DATABASE).
 - Connection cleaning up bug fixed a bit.
 - Naming Conventions document added
 - drv_isDatabaseUsed() introduced for additional state-checks

2003-10-17
- Driver developers should not change values of several important Connection
  class members, so these are now private.

2003-10-16
- KexiTableView:
 - maany repainting, updating, resizing improoved, code simplifications
 - editing row session introduced: edits for the same row is not accepted until move to another row
  This allows multiple fields editing before row editing accept.

2003-10-15
- missing QuerySchema::addAsterisk(QueryAsterisk *asterisk) added
- KexiTableView headers and cells repainting improoved
- for mysql driver: beh->ROW_ID_FIELD_NAME="_ROWID", is this ok?

2003-10-14
- DriverBehaviour::ROW_ID_FIELD_NAME added
- bool Driver::isValid() invented, it is so clever that obsolete or bad driver 
 can not be easily harmfull for application.
- KexiTableView and KexiDataTableView reimplemented for new KexiDB API.
- few classes renamed, e.g. KexiTableViewData is here now instead KexiTableList
- KexiTableViewData is now mostly data structure, special rows like "inserter" will be handled 
 by KexiTableView code. 
- KexiDataTableView now uses Cursor (a bit not efficient yet).

2003-10-13
- Cursor has now two ways for definition: 1) use raw statement 2) use QuerySchema
- Conenction: prepareQuery() accepting QuerySchema overload added 
- TableSchema::query() convenience function added
- tableview: QuerySchema is now used a bit
- QuerySchema(TableSchema* tableSchema) is created by defining 
 "all-tables query asterisk" (see QueryAsterisk) item. 
- Connection: implemented and selectStatement() replaced queryStatement() because 
 not only "select" queries will be implemented.
- QuerySchema::fieldsExpanded() convenient function added to expand query asterisks
- KexiDataTableView uses QuerySchema even smarter
- kexi/kexidb/tests moved to kexi/ to avoid curcular deps

2003-10-12
- Connection::isDatabaseUsed() fixed
- Connection: isConnected() is substituted with isDatabaseUsed() in some cases
	and checkIsDatabaseUsed() is substituted with checkConnected() in many cases.
- kexidb/tests/newapi tableview now uses KexiDataTableView
- Connection:: many overloads like queryStatement( KexiDB::QuerySchema& querySchema ) or
   executeQuery( QuerySchema& query, uint cursor_options = 0 ) added
- KexiDataTableView: simplified: setDataSet() -> setData(); record -> cursor

2003-10-11
- Transaction::isNull() fixed 
- now tables creation seems to be ok ('tests/newapi sqlite tables' works)
- sources synced again with win32 target
- kexidb/parser and kexidb/tests/parser ported to win32
- KexiDB::Expression introduced
- isSystemObjectName() now checks for "kexi__" prefixes
- checks on create table: if name is not system, if table is not empty, if fields are not system
- KexiDB::Reference introduced
- KexiDB::IndexSchema now contains informations about multiple related Reference objects
- kexidb/tests/newapi : now tests are functions, so can be called as subtests if needed;
   gui tests group added; tableview gui test introduced

2003-10-10
- FIX: creating kexidb system tables schema objects on useDatabase()
- KexiDB::Object::debugError() added for convenience
- Object: serverErrorMsg(), serverResult(), serverResultName(),
	drv_clearServerResult() added
- virtual Q_ULLONG Connection::drv_lastInsertRowID() added - returns unique
   identifier of last inserted row. 
- DriverBehaviour::AUTO_INCREMENT_FIELD_OPTION added; autoinc field's option is now 
	used in "CREATE TABLE" statement building; bool SPECIAL_AUTO_INCREMENT_DEF added
- fixed crash on mass transactions closing during closeDatabase()
- added tables creation subtest to kexidb/tests/newapi
- SQLite* classes: last operation's result is now stored for later checking

2003-10-09
KexiDB::Connection: 
- "select * from ..." substituted by "select <field name(s)> from ..."
  where possible, so after future kexi_* tables change it will still work.
- list of internally used kexi__* tables available with new static method
- bool TableSchema::isKexiDBSystem() added for tables that are internal for KexiDB
- bool SchemaData::isNative() added for objects that are native, ie. not contain additional
   metadata information.

- Connection::destroy() instead of Connection::disconnect() should be called 
  from xxxxConnection subclasses.
- ~TableSchema calls Connection::removeMe() so it is removed from tables list if needed
- ordering in Field object added
- quite hacky and thus effective insertRecord() overloads added
- some schema is added to kexi__* tables on createTable()
  
2003-10-07
- KexiDB::QueryAsterisk class introduced to define select queries with asterisks, like
 "staff.*" in "SELECT staff.*, cars.model from staff, cars WHERE staff.car = cars.number"
 (1st ttype) or "*" in "SELECT * from staff, cars WHERE staff.car = cars.number" (2nd type)
- Query schemas storage added
- using include path returned by 'mysql_config --mysql_config' as 
  is instead of eating mysql suffix
- Transaction::null and isNull() added
- Connection: Simulated AutoCommit feature implemented,
   createTable() added - it uses autocommit if enabled.
- Driver: DriverBehaviour member added - Detailed definition 
  of driver's default behaviour.

2003-10-06
-KexiDB::QuerySchema: 
 - field aliases added and checking if there is alias
 - list of tables used in query added
 - debug() updated

2003-10-05
-KexiDB:: 
 - fields() now offered by fieldlist
 - Field::Field( ) args order fixed (compiler didn't complain..)
 - TableSchema: primary idx setting added
 - TableSchema: autogenerated indices are added implicity on addField()
 - IndexSchema: unique flag added, primary flag is now dependend on this

2003-10-04
-KexiDB:: addedd better access to creating schemas

2003-10-03
-KexiDB:: API extended for db transactions
 - Transaction is now implicity shared container for storing transaction handle,
    TransactionData is used as internal driver-dependent storage
 - former Transaction class is now TransactionGuard
 - "default transaction" added to Conenction
 - SingleTransactions, MultipleTransactions and NestedTransactions added to KexiDB::Driver::Features
 - autoCommit option added to Connection (can use both driver-specific feature ans simulate),
    (not fully implemented yet)
 - active transactions are rolled back on database close
 - heavily commented :)
 - index.* moved to indexschema.*
 
2003-10-02
-KexiDB::
 - IndexSchema now inherits also from SchemaData (its additional 
    properties will be used at least in gui)
 - IndexSchema now points to a table that contains it, not connection
 - fixed owning rules for FieldList: not only TableSchema owns its fileds,
 	while QuerySchema, IndexSchema not
 - more methods moved to const 
 - QueryData offers now information about its parent table 

 - some record inserting introduced in Connection
 - yet more methods moved to const 
 - KexiDB version info added (both as functions and defines)
 - global definitions file added

2003-10-01
-KexiDB::
 - Table and query schemas now can be looked up using its id or name using Connection::tableSchema()
	and Connection::querySchema()
 - Connection::querySingleRecord() added for easy retrieval single (first) record 
	from query's result set
 - Cursor::storeCurrentRecord(RecordData &data) added: Puts current record's data into data
 	(makes a deep copy).
 - update after moving query.*, table.* file to queryschema.*, tableschema.*
 - Cursor buffering-related members moved from SQLiteCursor to Cursor
 - Cursor::moveFirst() fixed for buffered cursors - reopen() is now not needed
 - SQLiteCursor::drv_getNextRecord() we don't try to fetch records when 
    we know that buffer is already fully loaded.
- Uff, It is first time since ~3 moths I can see kexi main window after kexiDB change

2003-09-28
- KexiDB:
  - Table, Query and Index classes renamed to TableSchema, QuerySchema and IndexSchema
  - query schemas storage introduced
  - kexi__table 'system table' renamed to kexi__objects and for it now will be used for 
  storing also other types of objects, eg. queries. Some properties added to this table.
  - kexi__querydata added for query schemas
  - kexi__db added for storing database properties, e.g. kexidb version

2003-09-26
- new kexidb/newapi test added: dbcreation
- KexiDB::Connection::databaseExists() has now arg. that allows ignoring error messages (deflt)
- params for createDatabase() and useDatabase() are now optional for more convenient 
   use file-based drivers

2003-09-24
bool buffering_completed added to SQLiteCursor: true if we have already all
 records stored in the buffer

2003-09-18
- Buffered KexiDB::Cursor type introduced, for this type KexiDB::Cursor::isBuferred() is true;
	this is "test" implementation for SQLiteConnection only [INCOMPLETE]. 
	Cursor options introduced (Cursor::options()). Cursor's buffered flag if one these options.
	Options are now optional parameters both for protected Coursor's constructor and for 
	Conenction::executeQuery() and Conenction::prepareQuery()
- virtual bool Connection::drv_databaseExists( const QString &dbName ) added for optional 
	reimplementation. It is a pair with drv_getDatabasesList(), both are used in databaseExists() now.
	See comments for details.
- Connection::useDatabase(dbName) now do not allows dbName that do not exists, 
	while for single-db-per-connection-engines (eg. file-based engines) Connection::databaseExists()
	returns true only for single db name (eventually URL).
- for file drivers: file existence checks moved to databaseExists()
- in Conenction::useDatabase(dbName): closeDatabase() is called before other database should be used, 
	if there already was opened database.
- Connection::drv_getDatabasesList() has now default implementation that returns empty list.
- sources in drivers/mySQL/ updated just to work with kexidb API changes
- Connection::drv_databaseExists(dbName) is now by default just checking if dbName 
	is on the db names list
- Some code for bufering added - forward moving with buffered cursors looks
	better.

2003-09-17
- KexiDB::Query introduced: Table::name() and Query::name() moved to FieldList.
- Field::ListIterator FieldList::fieldsIterator(), Field::FieldList::debug() and clear() added
- ERR_CURSOR_RECORD_FETCHING added

TODO: add 
-static cursor types
-scrollable cursor types

2003-09-16
- KexiDB::DriverManager: driver names accepted by KexiDB::DriverManager::driver(name) 
   and KexiDB::DriverManager::serviceInfo(name) methods are now case insensitive.
- 3rdparty/kexisql: added files needed by win32 target
- removed kexidb/drivers/sqlite/driver directory: now we include sqlite.h from 3rdparty/kexisql/src/
- MySqlDriver's service name is "kexidb_mysqldriver", export macro is KEXIDB_MYSQL_DRIVER_EXPORT;
  win32 compilation fixed.

2003-09-15
- KexiDB::Cursor:
  - movePrev(), bof() added;
  - drv_getRecord() splitted to drv_getNextRecord(), drv_getPrevRecord()
  - fieldCount() added, not fully works yet
  - on open() we have always bof()==true and eof()==false
  - simplification: now bof() is computed as m_at==0
  - we are internally counting records from 1 and externally from 0
     (what is visible using at()).
  - m_at and thus at() has now Q_LLONG type

2003-09-14
- KexiDB::Object::setErrorMsg renamed to setError
- KexiDB::DriverManager is now just a container for one reference 
  to Internal Library's Driver Manager, so all you are expected to do is to remember
  about deleting KexiDB::DriverManager instance in your app.
  You can create many KexiDB::DriverManager objects.
- KexiDB lib now handles automatic deletion of drivers after last 
  KexiDB::DriverManager object deletion (thus refcount==0).
- tests/newapi now looks more simply at the end of main.cpp file :)
TODO: do the same with DriverManager as Driver
- KexiDB::Connection::tableSchema() updated for new KexiDB::Connection::executeQuery() semantic.
- DriverManager::self() no longer needed
TODO: add fieldCount() to Cursor

2003-09-13
KexiDB:
- Connection::prepareQuery() added for creating not opened cursors.
- Connection::executeQuery() now automatically opens the query with created cursor.
- Connection::destroy() convenient method added for obligatory use 
  in Conenction subclasses' dctors. destroy() just disconnets() and takes the Connection 
  object out of parent (Driver).
- SQLiteConnection updated for above requirements
- cursors and tabledefs are now deleted not in ~Connection but 
   on every Connection::disconnect().
- kexidb/tests/newapi also compiles with qmake and runs on unix
TODO: add auto removing Drivers on DriverManager deletion.

2003-09-12
Great day for KexiDB in cvs:
- Old KexiDB moved with actual Kexi version to non-default old_db_api branch.
- Current (HEAD) now contains new kexidb/ dir for with API
- kexidb/tests/ added to cvs with one 'newapi' test

2003-09-11
- Index::List and Field::List are now QPrrList<Field>, so Field objects are now stored as a pointers, 
	no as a values. These are owned by Table objects.

2003-09-10
- Html Doxygen-generated docs for KexiDB module configured
- KexiDB::Index introduced - definition of single table index (1 or multi-field)
- KexiDB::FieldList introduced - list of fields; base class for KexiDB::Index, KexiDB::Table
TODO: add KexiDB::Query and use this object eg. as argument for Cursor* Connection::executeQuery()

2003-09-09
kexidb:
- Every Connection object stores cursors opened with it. On Connection destruction, 
	cursors are deleted automatically. The same with table schemas within Connection object.
	QPtrDict is used for storing cursor objects.
- Every Driver object stores connection using QPtrDict, not QPtrList.
- Driver::isSystemObjectName(), Driver::isSystemFieldName() are case insensitive.

TODO: PROPOSAL: add compile-time option for kexidb to be kde-independent. 
	This could be quite easy.

2003-09-08
kexidb:
- QStringList Driver::systemNames() is now bool Driver isSystemObjectName() 
		-- Checks system object names, 
		eg. build-in system tables that cannot be used by user,
		and in most cases user even shouldn't see these. Specific for 
		a given driver implementation.
		For SQLITE driver system object names are these with prefix "sqlite_"
- QStringList isSystemFieldName( n ) added: return true if n is a system field names, 
		build-in system fields that cannot be used by user,
		and in most cases user even shouldn't see this. Specific for 
		a given driver implementation. 
		For SQLITE driver this has one system field name: "_ROWID_" (see CHANGELOG-Kexi-SQLITE).
- QString Connection::valueToSQL( const Field::Type ftype, QVariant& v )
		added for encoding values for sql queries
- Connection::createTableStatement(): unique, default and not null flags are now added.

TODO: also fields with UNIQUE flags should cause KexiDB::Table to have appropriate KexiDB::Index

2003-09-06
- new KexiDB is stored in "kexidb" subdir, old api in "kexiDB", on win32 in "kexidb_old"
-	virtual QString escapeString(const QString& str)
	virtual QCString escapeString(const QCString& str) added for Connection
- Field::setDefaultValue(const QCString& d) added. Default values are stored in 'f_default Text'
	field of kexi__fields table and are string-encoded there.

2003-09-04
- kexidb CHANGES FROM JOWENN: No ; after namespac, some d Pointers,
		littlebit different includes, littlebit modified destructors 

2003-09-01
	KexiDB::
	-	Cursor:: moveFirst(), moveLast(), moveNext(), eof(), at(), QVariant value(int i)
TODO: Cursor::value(int i) should use schema information to convert types of values
			(now all values are strings)
	-	Connection::tableSchema() - returns schema of given table retrieved 
			using connection's system kexi__* tables
	-	Connection::deleteCursor()
	-	Driver::sqlTypeName(int id_t) - returns sql type name for given driver
	-	static QString Driver::defaultSQLTypeName(int id_t) - returns sql type name for given driver
			(usable when we do not have Driver instance yet)
	-	Table::debug()
TODO: add default value storage

2003-08-29
- KexiDB::Cursor class, Cursor* KexiDB::Connection::executeQuery(statement) creates cursor
- KexiDB::Connection::drv_executeSQL(): executes query \a statement, but without returning resulting 
		rows (used mostly for functional queries).

2003-08-28
- KexiDB::Transaction helper class introduced, transaction-related methods added for KexiDB::Connection.
- drv_createTable() and createTableStatement() moved up to KexiDB::Connection

2003-08-27
- KexiDB::Table, KexiDB::Field classes introduced. 
	New DB-storage design started: kexi__table, kexi__fields system tables 
	(for db schema storage).

2003-07-28
- KexiDataTableView::tableSize() removed (wasn't this unnecessary?)

2003-07-26
- KexiRelationViewTableContainer: width is now based on maximum width of
the field name or header name. 
- KexiDataTable do not stores members  like KexiDB or KexiDBRecordSet bu
uses these from KexiDataTableView.

2003-07-25
- KexiDialogBase now also inherits from KXMLGUIClient for easy actions management.
	Do not make KXMLGUIClient subclass but just call setXMLFile() in KexiDialogBase:: subclasses' ctor
	and add actions to KexiDialogBase::actionColection().
- KexiRelationDialog:
	- now uses KXMLGUIClient to better utilize its actions
	- right-click context menus fully works
	- 'hide selected table', 'open selected table' actions added (unimpl.), kexirelationsview.rc added.
- Main Kexi menu bar little more standarized: 'Edit' menu added, 'View' menu moved just after Edit menu.
TODO: implement selected table hiding
TODO: implement selected table opening
TODO: add drag from browser

2003-07-24
- --open command line option added for automatic opening objects at startup, this will help in our 
	testing (see 'kexi --help' or main.cpp for details).
- KexiDialogBase got sizeHint() now that make it fit to qworkspace if it is a in-workspace window.
- virtual QString KexiProjectHandler::groupName() added that offers store plurar form of part name,
	while name() offers singular form.
- KexiRelationViewTable: 
	- list items (fields) without icons are aligned using transparent icons;
	- moving TableViews back from outside of scroll view area automatically shrinks scroll view's 
	area to smallest possible size
	- field that we drag over now is highlighted
TODO: fix KListView::viewportPaintEvent() like in KexiRelationViewTable::drawItemHighlighter()
      and commit to cvs (kdeui)
- KexiRelationViewTableContainer got now focus/unfocus/z-order functionality. Colors of table headers 
	are consistent with focusing and OS settings
TODO: fix connection lines painting

2003-07-23
- KexiTableView:
	- KexiTableViewPrivate d-pointer added with "kexitableview_p.h", "kexitableview_p.cpp"
	- Fixed repainting empty areas (background) in KexiTableView: QColorGroup::Base color is used.
	- editableOnDoubleClick(), setEmptyAreaColor() added
	- For Qt::Key_Menu key, context menu is show below the current cell, if available.
- KexiDialogBase reorganized. Now it offers more generic properties and functionality, 
	so subclasses can be more cleanly written and consistent with API and behaviour.
- Relations window is registered with 'kexi/relations' id, 
	while relations window embedded in query designer has id 'kexi/query/<query_name>/relations'
TODO: implement sizeHint() for KexiDialogBase subclasses
TODO: make open, create, delete and edit functions in KexiProjectHandlerProxy subclasses more generic

2003-07-22
- scrollbars enabled in KexiWorkspaceMDI

2003-07-21
- Kexi project 'kexi_doc' icon added, on win32 it is added to kexi.exe resources (id=1) and registered for 
	.kexi extension on installation.
TODO: add "New document" (empty or from template) command-line option, so it can be registered 
	as "shell/new" in HKCR registry key on win32.
TODO: like above: "Print" and "Print to"

2003-07-18
- " " prepended to Project Browsers' list items' texts for better look (maybe add this feature 
	to KListView or make its generic subclass?)
- Some fixes with text positioning in tableview cells: float and date type y-offset, 
	date type editor frames removed
TODO: maybe optionally use KDateWidget (this needs to extend and improve this class)?
	QDateEdit is good enough (but this need to follow date format for locale or settings 
	using QDateEdit::Order, etc.).
TODO: fix KDatePicker (in kdeui): accepting with Return key or dblclick, and setting focus.
- KexiTableEdit has now QColorGroup::Base (usually: white) background
- KexiInputTableEdit has now some space on the left, so strings look better.
TODO: add default hint for columns widths, based on type of field 

2003-07-17
- actions for Form, Kugar, Relations, Script Parts updated using KexiPartItemAction,
	KexiProjectHandlerProxy::groupContextMenu() and itemContextMenu()
	like in Tables and Queries' Parts
- kexikugarhandlerui.rc moved to kexi/data/
- 'Other Licenses' submenu made in 'Help' menu, 'Report Generator Licensing' 
	entry moved here from Kugar Part's popup menu
TODO: move this submenu after 'Error report' Entry (requires changes to koffice_shell.rc).
- kexirc added
- added option for KexiBrowserItem to be sorted in FIFO order (top level items - by default,
	others are sorted in alpha order). Visible Parts' order is now specified (by library name)
	in the Kexi's main config file "kexirc" ([Parts]/Order), because KTrader sorts parts 
	by name in aplha order. Unspecified Parts are appended at the end of list.
	This order setting is loaded and used on parts loading (KexiProject::loadHandlers()).

2003-07-16
- fixed registering (registerAs) for query designer's windows, 
	query from project browser removing fixed
- project browser's groups items (tables, queries,..) are now non-selectable 
	as these are rather special constant containers
- added convenient hidden(), shown() signals to KexiDialogBase
- added KexiDialogBase::plugToggleAction(KToggleAction *toggle_action) for syncing window
	visibility with toggle action's state

2003-07-15
- Kexi/win32 synced with cvs again after plugins/ rearrangement.
- New Kexi icon updated for win32
- menubar and popupmenu entries in Query Part merged using KexiPartItemAction (new KAction subclass);
  The same for Tables Part. KexiPartPopupMenu now collaborates with KexiPartItemAction to reuse its
	action's information (avoid redundancy).
TODO: add delete_item action icon (equal "button_cancel" in crystalsvg) to the koffice/actions icons
TODO: like above, add "script" icon to kexi/actions ("moc_src" is used)

2003-07-01
- Some table view text positions painting fixes for x11, for dbl and int type, editor's position fixed.
TODO: add left margin for cells' text (at least for x11)

2003-06-28
- Project Wizard: fixed align for big picture, some widgets availability fixes, 
big picture moved to KexiCreateProjectPage superclass.
- KEXI_ADD_EXAMPLE_ENGINES compile-time option added: if set, example engines will be added 
	to the drivers list in the Project wizard

2003-06-22
- Alter Table Window: info about not implemented rows removal added for KEXI_NO_UNFINISHED option
  Redundant label with table name removed from top of the window.
  Double click in KexiTableView reenabled.
  PropertyEditor and KexiTableView size hints little fixed.
- KexiTableView: now clicking outside of a grid do not activates any cell;
   (crash fixed) sorting disabled while in-cell editor is visible
- "Project properties" function disabled for KEXI_NO_UNFINISHED option

2003-06-21
- automatically set focus inside Alter Table Window and show cursor
- fixed crash on entering data in 2nd, 3rd, etc. columns in table added during current session
  (table def struct wasn't created for new table)

2003-06-17
[JK]- (in kofficecore): KoMainWindow::KoMainWindow: KStdAction::configureToolbars disabled:
TODO: enable this when configure window will work
[JK]- "Settings>Configure Kexi" action temporary disabled for KEXI_NO_UNFINISHED option
TODO: reenable this!
[JK]- "Save password" in authorization page of the Project wizard removed for KEXI_NO_UNFINISHED option
TODO: reenable this!
- <ActionList name="toolbarlist"> line removed from koffice_shell.rc (this removed redundant actions)
[JK]- now, after failed db connection Project wizard do not allow moving to DB selection page
- now it's not allowed to close alter table window for a table that do not contain fields
  (message box is displayed then). The same is when user try to delete table (without fields) 
	that is currently opened 
TODO: allow the user to give up and delete this table


2003-06-15
- when KEXI_NO_UNFINISHED option is set, msgbox information is presented for unimplemented actions
- kexidb: added information about if database (given by name) is considered as system db
- projectwizard: only non-system databases are visible on the db list; db icon added
- propertyeditor in altertable window has narrower 2nd column

2003-06-14
- inserting queries into list fixed
- added KEXI_NO_FILTER_DLG compile-time option for incomplete filter dialog in query editor
- added KEXI_NO_UNFINISHED compile-time option for disabling unfinished features
- KexiTableView::DeletionPolicy is now (mostly) used for choose KexiTableView deletion method
TODO: KexiTableView::AskDelete flag is not implemented
TODO: do the same with KexiTableView::AdditionPolicy 
- auto popup menu is added for KexiTableView when KexiTableView::DeletionPolicy != NoDelete
	or the same is for KexiTableView::AdditionPolicy, so no more external (e.g. in KexiDataTable)
	popup menu creation is required for just addition and deletion actions.
- fixed row deletion in query designer's table view
- fixed subwindows sizes: now these are resized to the workspace size
- tableview's cells text positioning fixed, synced with editors, cells size fixed,
  numeric cells' editors are now right-aligned

2003-06-13
- Fixed crash on altering newly created table
- (temporary fix) MySqlRecord is now always set to r-w mode
TODO: MySqlRecord: get readonly flag from the database
TODO: IMPORTANT: Kaxi must automatically add primary key it is not added by user,
  or at least propose this for user before saving altered table. If given table does not conatin
	a PK, then it will be readonly.(or at least removing given row wont be possible if this row 
	is duplicated)
	CURRENT STATE: removing rows works only for table having PK
- data table window's caption fixed
- Control+Delete shortcut added for current record removing
- fixed removing vertical header item after current record removing
- KexiTableEdit now uses layout for proper displaying its Editor
TODO: KexiTableEdit shouldnt have subwidget like KLineEdit but its subclasses should
	inherit also from given editor widget (eg. from KLineEdit)
TODO: KexiTableView's vertical header isn't updated after several actions
- windows now have icons == KexiProjectHandler::itemPixmap()
- normal size for relations dialog's combobox 
TODO: change method for adding tables to relations
- KexiDialogBase subclasses now registers to view with 
	identifier == KexiProjectHandlerItem::fullIdentifier(), not caption or title
- KexiRelationDialog is now registered to view as "kexi/relations", 
	so relations window is unique per view
TODO: disable altering when the same table is opened for data viewing
- avoid opening both alter view and data view for the same table
- avoid creating multiple tables with the same name
TODO: other objects too: move this to common method
TODO: avoid creating/altering table with no fields
	
2003-06-12
- Table View Editor keyboard actions fixed, double type validating fixed,
	fixed Enter, Delete keys, added F2 key, disabled non-printable unused keys
TODO: use QValidator everywhere here!
- after opening KexiDataTable focus is set inside automatically

2003-06-11
- Kexi objects have now titles - user-visible text instead low-level names

2003-06-09
- calling KexiView::finalizeInit() moved to KexiProject, actions for toggling
dock windows visiblity fixed, simplified code
- some icons, actions fixed
- KexiProjectHandlerItem redesign

2003-06-05
- relation view's fixes and redesign

2003-06-04
- projectWizard: double click on dbases list opens selected db
- navigator: KEXI_NO_MULTI_TABS option added for disable showing redundant tabs

2003-05-28
- fixed problem with project window's increased width while clicking on the
  tabs; multitabbar fonts improvements; code cleanups

2003-05-27
- i18n-pl finished for ui and servicenames
- kexi can load and save documents

2003-05-17
- kexi has icon on win32
- kexi installer

2003-05-08
- kexi cvs merge:
  KPath removed (qt/win32 will be patched instead)
- libkexifilters added
- core/kexisettings, core/kexiworkspaceSDI kexiDB/kexidbupdaterecord ported

2003-04-28
- fresh cvs and win32 version merge
- kexifilter added

2003-04-22
- partial (example) polish l18n for GUI

2003-04-15
- keximysqlinterface lib. ported
- updated servicetypes/kexidbdriver.desktop installed
- mysqlinterface.desktop removed: valid is keximysqlinterface.desktop

2003-04-12
- libraries ported: kexipart kexihandler_form kexihandler_query kexihandler_relation
    kexihandler_table kexiprojectwizard

- Kexi running with projectwizard (no db avaliable although)

2003-04-07
- now Kexi has visible menu, toolbar and 'welcome' dialog

2003-04-02
- application's start process is simply hacked inside main() instead of inside KoApplication::start()
  so, Kexi application running on screen for the first time on win32

2003-04-01
- kexi runs but is invisible

2003-03-31
- KEXI_NO_PRINT=1 (temporary) disables printing functionality
- kexiDB/kexidb.h: KexiDBDriver *m_currentDriver moved from public slots section to private
- kexicore and kexidb libs ported
- kexi at least now compiles (but crushes)


2003-03-28
- f
