Databasehandlingdialogclasses  0.5.3
hk_kdedbdesigner.h
1 // ****************************************************************************
2 // copyright (c) 2000-2005 Horst Knorr <hk_classes@knoda.org>
3 // This file is part of the hk_kdeclasses library.
4 // This file may be distributed and/or modified under the terms of the
5 // GNU Library Public License version 2 as published by the Free Software
6 // Foundation and appearing in the file LGPL included in the
7 // packaging of this file.
8 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
9 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
10 // ****************************************************************************
11 #ifndef HK_KDEDBDESIGNER
12 #define HK_KDEDBDESIGNER
13 #include <qwidget.h>
14 #include <qlabel.h>
15 #include <qlistbox.h>
16 #include <qframe.h>
17 #include <qpixmap.h>
18 #include <kparts/mainwindow.h>
19 #include <hk_dbvisible.h>
20 #include <hk_referentialintegrity.h>
21 #include <hk_dsdatavisible.h>
22 
23 
24 
25 class hk_presentation;
28 class QVBoxLayout;
29 class QGridLayout;
30 class hk_kdedbrelation;
31 
32 
33 class hk_kdedbdesigner:public QWidget, public hk_dbvisible
34 {
35  Q_OBJECT
36 public:
37 hk_kdedbdesigner(QWidget* parent=0);
38 virtual ~hk_kdedbdesigner();
39 void set_presentation(hk_presentation*);
40 hk_presentation* presentation(void);
41 QScrollView* scrollview(void) const;
42 hk_kdedatasourceframe* get_dsframe(hk_datasource*);
43 hk_kdedbrelation* get_relation(hk_datasource* ds);
44 hk_kdedbrelation* get_relation(hk_datasource* master,hk_datasource* slave);
46 referentialclass* get_referentialintegrity(hk_datasource* master,hk_datasource* slave);
48 hk_kdedbrelation* add_relation(hk_datasource* master,hk_datasource* slave);
49 hk_kdedbrelation* add_referentialintegrity(referentialclass ref, hk_kdedatasourceframe* ds);
50 hk_kdedatasourceframe* add_dsframe(hk_datasource*);
51  void set_all_relations(void);
52 
53 signals:
54 void signal_definition_has_changed(void);
55 void signal_field_doubleclicked(int,const hk_string&);
56 
57 public slots:
58 void clear_datasources();
59 void set_datasources();
60 void relation_clicked(hk_kdedbrelation*);
61 void new_focus(hk_kdedatasourceframe*);
62 void delete_datasource(hk_kdedatasourceframe*);
63 void delete_relation(hk_kdedbrelation*);
64 void add_datasource(void);
65 
66 void slot_field_doubleclicked(int, const hk_string&);
67 
68 private:
69  void raise_datasources(void);
70  hk_datasource* already_added_table(const hk_string&t);
71 void remove_relation(hk_kdedbrelation*);
72 
73 
74 hk_kdedbdesignerprivate* p_private;
75 };
76 
77 
78 
79 
80 
81 
82 
83 class kdedatasourcelabel:public QLabel
84 {
85 public:
86 friend class hk_kdedatasourceframe;
88 protected:
89 void mousePressEvent(QMouseEvent* event);
90 void mouseReleaseEvent(QMouseEvent* event);
91 virtual void mouseMoveEvent(QMouseEvent*);
92 bool p_drag;
93 int p_startx;
94 int p_starty;
95 int p_offsetx;
96 int p_offsety;
97 hk_kdedatasourceframe* p_datasourceframe;
98 };
99 
100 
101 
102 class hk_kdefieldlist:public QListBox
103 {
104 Q_OBJECT
105 public:
107 void setFocus(void);
108 void clearFocus(void);
109 
110 signals:
111 void signal_field_doubleclicked(int,const hk_string&);
112 
113 protected:
114 void mouseMoveEvent(QMouseEvent*);
115 void mouseReleaseEvent(QMouseEvent*);
116 
117 virtual void mouseDoubleClickEvent(QMouseEvent*);
118 void dragEnterEvent(QDragEnterEvent*);
119 void dropEvent(QDropEvent* );
120 virtual void contextMenuEvent(QContextMenuEvent*);
121 
122 private:
123 
124 hk_kdedatasourceframe* p_datasourceframe;
125 QPoint p_dragstartposition;
126 };
127 
128 
129 
130 
131 
132 
133 class hk_kdedatasourceframe :public QFrame, public hk_dsdatavisible
134 {
135 Q_OBJECT
136 public:
137 friend class hk_kdedbdesigner;
138 hk_kdedatasourceframe(hk_kdedbdesigner* designer,QWidget* parent,hk_datasource* ds);
139 void set_fields(void);
140 void set_focus(hk_kdedatasourceframe*);
141 void setFocus(void);
142 void clearFocus(void);
143 void mousePressEvent(QMouseEvent*);
144 hk_kdedbdesigner* designer() const;
145 kdedatasourcelabel* header() const {return p_header;}
146 
147 public slots:
148 void edit(void);
149 void set_header(void);
150 signals:
151 void signal_moved(void);
152 
153 protected:
154 virtual void moveEvent(QMoveEvent*);
155 virtual void resizeEvent(QResizeEvent*);
156 bool eventFilter(QObject* object,QEvent* event);
157 
158 private:
159 void set_new_position(void);
160 hk_kdedbdesigner* p_designer;
161 QListBox* p_listbox;
162 QGridLayout* p_layout;
163 kdedatasourcelabel* p_header;
164 bool p_positionupdate;
165 QPixmap keyicon;
166 
167 }; //end hk_kdedatasourceframe
168 
169 
170 class hk_kdedbrelation:public QWidget,public hk_class
171 {
172 Q_OBJECT
173 public:
174 hk_kdedbrelation(QWidget* parent,bool is_referentialinegrity);
176 void setAutoMask(bool);
177 void set_datasources(hk_kdedatasourceframe* master,hk_kdedatasourceframe* slave);
178 void set_referentialintegrity(referentialclass c,hk_kdedatasourceframe* master,hk_kdedatasourceframe* slave);
179 hk_kdedatasourceframe* masterdatasource(void) const;
180 hk_kdedatasourceframe* slavedatasource(void) const;
181 void setFocus(void);
182 void set_focus(void);
183 hk_string referentialname()const;
184 bool updatecascade()const;
185 bool deletecascade()const;
186 signals:
187 void signal_relation_clicked(hk_kdedbrelation*);
188 
189 public slots:
190 void slot_relation_clicked(hk_kdedbrelation*);
191 void edit(void);
192 
193 
194 protected:
195 void paint_relation(QPainter*);
196 void paintEvent(QPaintEvent*);
197 void keyPressEvent(QKeyEvent*);
198 void updateMask(void);
199 QString tooltipfields(referentialclass* c=NULL);
200 virtual void mouseMoveEvent(QMouseEvent*);
201 virtual void mousePressEvent(QMouseEvent*);
202 virtual void mouseDoubleClickEvent(QMouseEvent*);
203 virtual void contextMenuEvent(QContextMenuEvent*);
204 
205 protected slots:
206 
207 void datasource_moved(void);
208 private:
209 
210 hk_kdedatasourceframe* p_masterdatasource;
211 hk_kdedatasourceframe* p_slavedatasource;
212 int p_fromx,p_fromy,p_tox,p_toy;
213 bool p_is_focused;
214 bool p_is_referentialintegrity;
215 hk_string p_refname;
216 bool p_deletecascade;
217 bool p_updatecascade;
218 };
219 
220 
221 class hk_kdemovewidget: public QWidget
222 {
223 Q_OBJECT
224 public:
225 enum enum_orientation {horizontal,vertical,diagonal};
226 hk_kdemovewidget( enum_orientation orientation, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
228 enum_orientation orientation(void) const {return p_orientation;}
229 protected:
230 void mousePressEvent(QMouseEvent* event);
231 virtual void mouseMoveEvent(QMouseEvent*);
232 
233 private:
234 bool p_drag;
235 int p_startx;
236 int p_starty;
237 int p_offsetx;
238 int p_offsety;
239 enum_orientation p_orientation;
240 
241 };
242 
243 
244 
246 
247 class hk_kdedbdesignerwindow: public KParts::MainWindow
248 {
249 Q_OBJECT
250 public:
251 hk_kdedbdesignerwindow( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
253 hk_kdedbdesigner* designer(void) const;
254 
255 signals:
256 void signal_closed(void);
257 
258 protected:
259 void closeEvent(QCloseEvent*);
260 
261 
262 private:
263 
265 
266 };
267 
268 #endif //HK_KDEDBDESIGNER
Definition: hk_kdedbdesigner.h:83
Definition: hk_kdedbdesigner.h:247
Definition: hk_kdedbdesigner.cpp:78
Definition: hk_kdedbdesigner.h:33
Definition: hk_kdedbdesigner.h:133
Definition: hk_kdedbdesigner.h:102
Definition: hk_kdedbdesigner.cpp:1484
Definition: hk_kdedbdesigner.h:170
Definition: hk_kdedbdesigner.h:221