kexi
KexiTableDesignerView Class Reference
#include <kexitabledesignerview.h>

Detailed Description
Design view of the Table Designer.Contains a spreadsheet-like space for entering field definitions. Property editor is provided for altering field definitions.
The view also supports Undo and Redo operations. These are connected to a factility creating a list of actions used by AlterTableHandler to perform required operation of altering the table.
Altering itself is performed upon design saving (storeData()). Saving unstored designs just creates a new table. Saving changes made to empty (not filled with data) table is performed by physically deleting the previous table schema and recreating it TODO: this will be not quite when we have db relationships supported.
Saving changes made to table containing data requires use of the AlterTableHandler functionality.
Definition at line 56 of file kexitabledesignerview.h.
Public Slots | |
virtual tristate | executeRealAlterTable () |
Public Member Functions | |
KexiTableDesignerView (KexiMainWindow *win, QWidget *parent) | |
KexiTablePart::TempData * | tempData () const |
virtual void | clearRow (int row, bool addCommand=false) |
virtual void | insertField (int row, const QString &caption, bool addCommand=false) |
virtual void | insertField (int row, KoProperty::Set &set, bool addCommand=false) |
virtual void | insertEmptyRow (int row, bool addCommand=false) |
virtual void | deleteRow (int row, bool addCommand=false) |
virtual void | changeFieldPropertyForRow (int row, const QCString &propertyName, const QVariant &newValue, KoProperty::Property::ListData *const listData, bool addCommand) |
void | changeFieldProperty (int fieldUID, const QCString &propertyName, const QVariant &newValue, KoProperty::Property::ListData *const listData=0, bool addCommand=false) |
void | changePropertyVisibility (int fieldUID, const QCString &propertyName, bool visible) |
KexiDB::Field * | buildField (const KoProperty::Set &set) const |
virtual QString | debugStringForCurrentTableSchema (tristate &result) |
virtual tristate | simulateAlterTableExecution (QString *debugTarget) |
Protected Slots | |
void | updateActions () |
virtual void | slotUpdateRowActions (int row) |
void | slotAboutToShowContextMenu () |
void | slotBeforeCellChanged (KexiTableItem *item, int colnum, QVariant &newValue, KexiDB::ResultInfo *result) |
void | slotRowUpdated (KexiTableItem *item) |
void | slotRowInserted () |
void | slotAboutToDeleteRow (KexiTableItem &item, KexiDB::ResultInfo *result, bool repaint) |
void | slotPropertyChanged (KoProperty::Set &set, KoProperty::Property &property) |
void | slotTogglePrimaryKey () |
void | slotUndo () |
void | slotRedo () |
void | slotCommandExecuted (KCommand *command) |
void | slotSimulateAlterTableExecution () |
Protected Member Functions | |
virtual void | updateActions (bool activated) |
void | initData () |
KoProperty::Set * | createPropertySet (int row, const KexiDB::Field &field, bool newOne=false) |
virtual tristate | beforeSwitchTo (int mode, bool &dontStore) |
virtual tristate | afterSwitchFrom (int mode) |
virtual KoProperty::Set * | propertySet () |
virtual KexiDB::SchemaData * | storeNewData (const KexiDB::SchemaData &sdata, bool &cancel) |
virtual tristate | storeData (bool dontAsk=false) |
tristate | buildSchema (KexiDB::TableSchema &schema, bool beSilent=false) |
tristate | buildAlterTableActions (KexiDB::AlterTableHandler::ActionList &actions) |
void | switchPrimaryKey (KoProperty::Set &propertySet, bool set, bool aWasPKey=false, CommandGroup *commandGroup=0) |
void | getSubTypeListData (KexiDB::Field::TypeGroup fieldTypeGroup, QStringList &stringsList, QStringList &namesList) |
void | addHistoryCommand (KCommand *command, bool execute) |
void | updateUndoRedoActions () |
void | insertFieldInternal (int row, KoProperty::Set *set, const QString &caption, bool addCommand) |
virtual void | propertySetSwitched () |
bool | isPhysicalAlteringNeeded () |
Constructor & Destructor Documentation
KexiTableDesignerView::KexiTableDesignerView | ( | KexiMainWindow * | win, | |
QWidget * | parent | |||
) |
Creates a new alter table dialog.
Definition at line 107 of file kexitabledesignerview.cpp.
Member Function Documentation
void KexiTableDesignerView::clearRow | ( | int | row, | |
bool | addCommand = false | |||
) | [virtual] |
Clears field information entered for row. This is performed by removing values from caption and data type columns. Used by InsertFieldCommand to undo inserting a new field.
Implements KexiTableDesignerInterface.
Definition at line 1682 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::insertField | ( | int | row, | |
const QString & | caption, | |||
bool | addCommand = false | |||
) | [virtual] |
Inserts a new field with caption for row. Property set is also created.
Implements KexiTableDesignerInterface.
Definition at line 1707 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::insertField | ( | int | row, | |
KoProperty::Set & | set, | |||
bool | addCommand = false | |||
) | [virtual] |
Inserts a new field for row. Property set is also created. set will be deeply-copied into the new set. Used by InsertFieldCommand to insert a new field.
Implements KexiTableDesignerInterface.
Definition at line 1712 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::insertEmptyRow | ( | int | row, | |
bool | addCommand = false | |||
) | [virtual] |
Inserts a new empty row at position row. Used by RemoveFieldCommand as a part of undo inserting a new field; also used by InsertEmptyRowCommand.
Implements KexiTableDesignerInterface.
Definition at line 1764 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::deleteRow | ( | int | row, | |
bool | addCommand = false | |||
) | [virtual] |
Deletes row from the table view. Property set is also deleted. All the subsequent fields are moved up. Used for undoing InsertEmptyRowCommand and by RemoveFieldCommand to remove a field.
Implements KexiTableDesignerInterface.
Definition at line 1782 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::changeFieldPropertyForRow | ( | int | row, | |
const QCString & | propertyName, | |||
const QVariant & | newValue, | |||
KoProperty::Property::ListData *const | listData, | |||
bool | addCommand | |||
) | [virtual] |
Deletes a field for row. Property set is also deleted. Used by RemoveFieldCommand to remove a field.
Changes property propertyName to newValue for a field at row row. If listData is not NULL and not empty, a deep copy of it is passed to Property::setListData(). If listData nlist if not NULL but empty, Property::setListData(0) is called.
Implements KexiTableDesignerInterface.
Definition at line 1798 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::changeFieldProperty | ( | int | fieldUID, | |
const QCString & | propertyName, | |||
const QVariant & | newValue, | |||
KoProperty::Property::ListData *const | listData = 0 , |
|||
bool | addCommand = false | |||
) |
Changes property propertyName to newValue. Works exactly like changeFieldPropertyForRow() except the field is pointed by fieldUID. Used by ChangeFieldPropertyCommand to change field's property.
Definition at line 1871 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::changePropertyVisibility | ( | int | fieldUID, | |
const QCString & | propertyName, | |||
bool | visible | |||
) |
Changes visibility of property propertyName to visible for a field pointed by fieldUID. Used by ChangePropertyVisibilityCommand.
Definition at line 1884 of file kexitabledesignerview.cpp.
KexiDB::Field * KexiTableDesignerView::buildField | ( | const KoProperty::Set & | set | ) | const |
Builds table field's schema by looking at the set.
Definition at line 1168 of file kexitabledesignerview.cpp.
QString KexiTableDesignerView::debugStringForCurrentTableSchema | ( | tristate & | result | ) | [virtual] |
Creates temporary table for the current design and returns debug string for it.
Implements KexiTableDesignerInterface.
Definition at line 1669 of file kexitabledesignerview.cpp.
tristate KexiTableDesignerView::simulateAlterTableExecution | ( | QString * | debugTarget | ) | [virtual] |
Simulates execution of alter table, and puts debug into debugTarget. A case when debugTarget is not 0 is true for the alter table test suite.
Implements KexiTableDesignerInterface.
Definition at line 1520 of file kexitabledesignerview.cpp.
tristate KexiTableDesignerView::executeRealAlterTable | ( | ) | [virtual, slot] |
Real execution of the Alter Table. For debugging of the real alter table.
- Returns:
- true on success, false on failure and cancelled if user has cancelled execution.
Implements KexiTableDesignerInterface.
Definition at line 1556 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::updateActions | ( | ) | [protected, slot] |
Equivalent to updateActions(false). Called on row insert/delete in a KexiDataAwarePropertySet.
Definition at line 916 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::slotAboutToShowContextMenu | ( | ) | [protected, slot] |
void KexiTableDesignerView::slotBeforeCellChanged | ( | KexiTableItem * | item, | |
int | colnum, | |||
QVariant & | newValue, | |||
KexiDB::ResultInfo * | result | |||
) | [protected, slot] |
Called before cell change in tableview.
forceAddCommand
- Todo:
- maybe this is good for other data types as well?
forceAddCommand
rememberOldValue
forceAddCommand
rememberOldValue
- Todo:
- should we display (passive?) dialog informing about cleared pkey?
rememberOldValue
Definition at line 657 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::slotRowUpdated | ( | KexiTableItem * | item | ) | [protected, slot] |
void KexiTableDesignerView::slotRowInserted | ( | ) | [protected, slot] |
Called before row inserting in tableview.
Definition at line 1136 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::slotAboutToDeleteRow | ( | KexiTableItem & | item, | |
KexiDB::ResultInfo * | result, | |||
bool | repaint | |||
) | [protected, slot] |
void KexiTableDesignerView::slotPropertyChanged | ( | KoProperty::Set & | set, | |
KoProperty::Property & | property | |||
) | [protected, slot] |
Called after any property has been changed in the current property set, to perform some actions (like updating other dependent properties)
- Todo:
- indicate invalid definitions of lookup columns as well using a special icon (e.g. due to missing data source)
- Todo:
- perhaps show a hint in help panel telling what happens?
- Todo:
- : add setting for this: "Integer PKeys have autonumber set by default"
set PK to false
Definition at line 921 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::slotTogglePrimaryKey | ( | ) | [protected, slot] |
Toggles primary key for currently selected field. Does nothing for empty row.
Definition at line 485 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::slotUndo | ( | ) | [protected, slot] |
Undoes the recently performed action.
Definition at line 1624 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::slotRedo | ( | ) | [protected, slot] |
Redoes the recently undoed action.
Definition at line 1635 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::slotCommandExecuted | ( | KCommand * | command | ) | [protected, slot] |
Reaction on command execution from the command history
Definition at line 1646 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::slotSimulateAlterTableExecution | ( | ) | [protected, slot] |
Simulates real execution of the Alter Table. For debugging.
Definition at line 1551 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::updateActions | ( | bool | activated | ) | [protected, virtual] |
Updates actions (e.g. availability). Reimplement it, if needed (you must call superclass impelmentation at the end!). This implementation does nothing for this view but calls updateActions() for every child-view of this view. called by KexiDialogBase on dialog's activation (activated is true) or deactivation.
Reimplemented from KexiDataAwareView.
Definition at line 466 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::initData | ( | ) | [protected] |
called whenever data should be reloaded (on switching to this view mode)
Definition at line 211 of file kexitabledesignerview.cpp.
KoProperty::Set * KexiTableDesignerView::createPropertySet | ( | int | row, | |
const KexiDB::Field & | field, | |||
bool | newOne = false | |||
) | [protected] |
Creates a new property set for field. The property set will be asigned to row, and owned by this dialog. If newOne is true, the property set will be marked as newly created.
- Returns:
- newly created property set.
- Todo:
- add table_field icon
- Todo:
- this should be retrieved from KexiDB::Field when BLOB supports many different mimetypes
- Todo:
- set reasonable default for column width
- Todo:
- use "Variant" type here when supported by KoProperty
- Todo:
- this is backward-compatible code for "single visible column" implementation for multiple columns, only the first is displayed, so there is a data loss is GUI is used -- special koproperty editor needed
- Todo:
- support columnWidths(), columnHeadersVisible(), maximumListRows(), limitToList(), displayWidget()
Definition at line 305 of file kexitabledesignerview.cpp.
tristate KexiTableDesignerView::beforeSwitchTo | ( | int | mode, | |
bool & | dontStore | |||
) | [protected, virtual] |
called by KexiDialogBase::switchToViewMode() right before dialog is switched to new mode By default does nothing. Reimplement this if you need to do something before switching to this view.
- Returns:
- true if you accept or false if a error occupied and view shouldn't change If there is no error but switching should be just cancelled (probably after showing some info messages), you need to return cancelled. Set dontStore to true (it's false by default) if you want to avoid data storing by storeData() or storeNewData().
Reimplemented from KexiViewBase.
Definition at line 580 of file kexitabledesignerview.cpp.
tristate KexiTableDesignerView::afterSwitchFrom | ( | int | mode | ) | [protected, virtual] |
called by KexiDialogBase::switchToViewMode() right after dialog is switched to new mode By default does nothing. Reimplement this if you need to do something after switching to this view.
- Returns:
- true if you accept or false if a error occupied and view shouldn't change If there is no error but switching should be just cancelled (probably after showing some info messages), you need to return cancelled.
Reimplemented from KexiViewBase.
Definition at line 628 of file kexitabledesignerview.cpp.
KoProperty::Set * KexiTableDesignerView::propertySet | ( | ) | [protected, virtual] |
- Returns:
- property set associated with currently selected row (i.e. field) or 0 if current row is empty.
Reimplemented from KexiViewBase.
Definition at line 636 of file kexitabledesignerview.cpp.
KexiDB::SchemaData * KexiTableDesignerView::storeNewData | ( | const KexiDB::SchemaData & | sdata, | |
bool & | cancel | |||
) | [protected, virtual] |
Reimplemented from KexiViewBase, because tables creation is more complex. No table schema altering is required, so just buildSchema() is used to create a new schema.
Reimplemented from KexiViewBase.
Definition at line 1389 of file kexitabledesignerview.cpp.
tristate KexiTableDesignerView::storeData | ( | bool | dontAsk = false |
) | [protected, virtual] |
Reimplemented from KexiViewBase, because table storage is more complex. Table schema altering may be required, so just buildSchema() is used to create a new schema.
<
- Todo:
- this is temporary flag before we switch entirely to real alter table
- Todo:
- temp; remove this case:
Reimplemented from KexiViewBase.
Definition at line 1425 of file kexitabledesignerview.cpp.
tristate KexiTableDesignerView::buildSchema | ( | KexiDB::TableSchema & | schema, | |
bool | beSilent = false | |||
) | [protected] |
Builds table schema by looking at the current design. Used in storeNewData() and storeData(). If beSilent is true, no message boxes are used to show questions or warnings. This is used in the altertable test suite (kexi/tests/altertable).
- Returns:
- true on successful schema creating, false on failure and cancelled when there was a problem with user's design (and user has been informed about it).
- Todo:
- for "names hidden" mode we won't get this error because user is unable to change names
- Todo:
- this is backward-compatible code for "single visible column" implementation for multiple columns, only the first is displayed, so there is a data loss is GUI is used -- special koproperty editor needed
- Todo:
- support columnWidths(), columnHeadersVisible(), maximumListRows(), limitToList(), displayWidget()
Definition at line 1198 of file kexitabledesignerview.cpp.
tristate KexiTableDesignerView::buildAlterTableActions | ( | KexiDB::AlterTableHandler::ActionList & | actions | ) | [protected] |
Builds action list usable for KexiDB::AlterTableHandler by looking at undo buffer of commands' history. Used in storeData()
Definition at line 1378 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::switchPrimaryKey | ( | KoProperty::Set & | propertySet, | |
bool | set, | |||
bool | aWasPKey = false , |
|||
CommandGroup * | commandGroup = 0 | |||
) | [protected] |
Helper, used for slotTogglePrimaryKey() and slotPropertyChanged(). Assigns primary key icon and value for property set propertySet, and deselects it from previous pkey's row. aWasPKey is internal. If commandGroup is not 0, it is used as parent group for storing actions' history.
Definition at line 509 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::getSubTypeListData | ( | KexiDB::Field::TypeGroup | fieldTypeGroup, | |
QStringList & | stringsList, | |||
QStringList & | namesList | |||
) | [protected] |
Gets subtype strings and names for type fieldType.
Definition at line 286 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::addHistoryCommand | ( | KCommand * | command, | |
bool | execute | |||
) | [protected] |
Adds history command command to the undo/redo buffer. If execute is true, the command is executed afterwards.
Definition at line 1605 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::updateUndoRedoActions | ( | ) | [protected] |
Updates undo/redo shared actions availability by looking at command history's action.
Definition at line 1616 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::insertFieldInternal | ( | int | row, | |
KoProperty::Set * | set, | |||
const QString & | caption, | |||
bool | addCommand | |||
) | [protected] |
Inserts a new field for row. Property set is also created. If set is not 0 (the default), it will be copied into the new set. Used by insertField().
Definition at line 1717 of file kexitabledesignerview.cpp.
void KexiTableDesignerView::propertySetSwitched | ( | ) | [protected, virtual] |
Reimplemented to pass the information also to the "Lookup" tab.
Reimplemented from KexiViewBase.
Definition at line 1909 of file kexitabledesignerview.cpp.
bool KexiTableDesignerView::isPhysicalAlteringNeeded | ( | ) | [protected] |
- Returns:
- true if physical altering is needed for the current list of actions. Used in KexiTableDesignerView::beforeSwitchTo() to avoid warning about removinf table data if table recreating is not needed. True is also returned if there is any trouble with getting the answer.
Definition at line 1920 of file kexitabledesignerview.cpp.
The documentation for this class was generated from the following files: