Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

hk_kdeclasses/hk_kdeclasses/hk_kdetabledesign.h

Go to the documentation of this file.
00001 // ****************************************************************************
00002 // copyright (c) 2000-2005 Horst Knorr <hk_classes@knoda.org>  
00003 // This file is part of the hk_kdeclasses library.
00004 // This file may be distributed and/or modified under the terms of the
00005 // GNU Library Public License version 2 as published by the Free Software
00006 // Foundation and appearing in the file LGPL included in the
00007 // packaging of this file.
00008 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00009 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00010 // ****************************************************************************
00011 
00012 #ifndef HK_KDETABLEDESIGN_H
00013 #define HK_KDETABLEDESIGN_H
00014 #include <hk_dsgrid.h>
00015 #include <hk_dsvisible.h>
00016 #include <qvariant.h>
00017 #include <qwidget.h>
00018 #include <hk_column.h>
00019 #include <qstring.h>
00020 #include <qstringlist.h>
00021 #include <list>
00022 class QVBoxLayout;
00023 class QHBoxLayout;
00024 class QGridLayout;
00025 class QButtonGroup;
00026 class QCheckBox;
00027 class QComboBox;
00028 class QLabel;
00029 class QLineEdit;
00030 class QListView;
00031 class QListViewItem;
00032 class QPushButton;
00033 class QSpinBox;
00034 class QToolButton;
00035 class hk_kdeindexwindow;
00047 class hk_kdetabledesign : public QWidget ,public hk_dsvisible
00048 {
00049     Q_OBJECT
00050 
00051         public:
00052         hk_kdetabledesign( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
00053         virtual    ~hk_kdetabledesign();
00054 
00055         virtual void set_datasource(hk_datasource* d);
00056         hk_datasource* datasource(void);
00057         bool has_changed() const;
00058         signals:
00059         void signal_has_changed();
00060         void signal_tablename_changed();
00061     public slots:
00065         virtual bool alter_table(bool ask=true);
00066         virtual void load_fieldinfo();
00067         void set_designmode();
00068         virtual void alterbutton_clicked();
00069     protected slots:
00070         virtual void delete_clicked();
00071         virtual void index_clicked();
00072         virtual void name_changed();
00073         virtual void new_clicked();
00074         virtual void primary_changed();
00075         virtual void notnull_changed();
00076         virtual void selection_changed();
00077         virtual void indexselection_changed();
00078         virtual void size_changed();
00079         virtual void type_changed();
00080         virtual void new_index();
00081         virtual void alter_index();
00082         virtual void delete_index();
00083         virtual void set_indexlist(void);
00084 
00085     protected:
00086 
00087         virtual void showEvent(QShowEvent* e);
00088         virtual void    list_changes(listtype type);
00089         void set_fields_enabled(void);
00090         QGridLayout* hk_kdetabledesignLayout;
00091         QHBoxLayout* Layoutindexwindow;
00092         QVBoxLayout* buttonlayout;
00093         QHBoxLayout* Layout8;
00094         QHBoxLayout* Layout7;
00095         QVBoxLayout* Layout22;
00096         QHBoxLayout* Layout25;
00097         QVBoxLayout* Layout24;
00098         QHBoxLayout* Layout23;
00099         QVBoxLayout* editlayout;
00100         QVBoxLayout* fieldbuttonlayout;
00101         QHBoxLayout* fieldtoplayout;
00102 
00103         QListView* fieldlist;
00104         QPushButton* newbutton;
00105         QPushButton* deletebutton;
00106         QPushButton* alterbutton;
00107         QPushButton* indexdeletebutton;
00108         QPushButton* indexnewbutton;
00109         QPushButton* indexalterbutton;
00110         QLabel* fieldnamelabel;
00111         QLabel* columntypelabel;
00112         QLabel* sizelabel;
00113         QLabel* notnulllabel;
00114         QLabel* primaryindexlabel;
00115         QLineEdit* namefield;
00116         QComboBox* typefield;
00117         QSpinBox* sizefield;
00118         QCheckBox* primaryfield;
00119         QCheckBox* notnullfield;
00120         QListView* indexwindow;
00121 
00122         void create_columntypelist(void);
00123     private :
00124         void structure_changes(bool c);
00125         void clear_fieldlist(void);
00126         hk_column::enum_columntype ftype(const QString&);
00127         enum enum_state {unchanged,delfield,newfield,altered};
00128         int fieldname_count(const hk_string&);
00132         //bool is_keyword(const QString&);
00133         typedef  class  fieldstruct
00134         {
00135             public:
00136                 hk_string oldname;
00137                 bool   oldprimary;
00138                 bool   oldnotnull;
00139                 hk_column::enum_columntype oldtype;
00140                 long    oldsize;
00141                 hk_string newname;
00142                 bool   newprimary;
00143                 bool   newnotnull;
00144                 hk_column::enum_columntype newtype;
00145                 long    newsize;
00146                 enum_state state;
00147         };
00148         typedef class dictclass
00149         {
00150             public:
00151                 QString name;
00152                 hk_column::enum_columntype type;
00153         };
00154         void show_fieldinfos(fieldstruct*);
00155         list<dictclass>   columntype_dictionary;
00156         list<fieldstruct> fields;
00157         list<fieldstruct>::iterator actualfieldit;
00158         QListViewItem* lastmarkedItem;
00159         bool p_fieldlist_created;
00160         bool p_has_changed;
00161         bool fieldnamecheck;
00162 //        QStringList p_keywordlist;
00163 };
00164 #endif                                            // HK_KDETABLEdesign_H

Generated on Thu Mar 9 18:40:41 2006 for hk_classes by  doxygen 1.4.1