00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef HK_KDEDBLISTVIEW_H
00014 #define HK_KDEDBLISTVIEW_H
00015 #include <klistview.h>
00016 #include <qdialog.h>
00017 #include <qdragobject.h>
00018
00019 #include <hk_dbvisible.h>
00020
00021 class hk_kdedblistviewprivate;
00022 class QProgressDialog;
00023 class hk_kdeschemadialog;
00024 class QVBoxLayout;
00025 class QHBoxLayout;
00026 class QGridLayout;
00027 class QButtonGroup;
00028 class QLabel;
00029 class QPushButton;
00030 class QRadioButton;
00031 class KAction;
00032 class KActionMenu;
00033 class QPopupMenu;
00034
00035
00036
00037
00038 class hk_dbviewerdrag : public QStoredDrag
00039 {
00040 public:
00041
00042 hk_dbviewerdrag(objecttype type,const QString& object,hk_database* db,QWidget* dragsource=0);
00043 static bool canDecode(const QMimeSource* s);
00044 const char* format(int i) const;
00045
00046 private:
00047 void create_draginfo(objecttype type,const QString& object,hk_database* db);
00048 };
00049
00050
00051 class hk_kdedblistview: public KListView, public hk_dbvisible
00052 {
00053 Q_OBJECT
00054 public:
00055 hk_kdedblistview (QWidget* parent=0L, const char* name=0L);
00056 virtual ~hk_kdedblistview();
00057 void set_database(hk_database*);
00058 bool is_tableitem(QListViewItem*,bool includingheader=false);
00059 bool is_queryitem(QListViewItem*,bool includingheader=false);
00060 bool is_viewitem(QListViewItem*,bool includingheader=false);
00061 bool is_formitem(QListViewItem*,bool includingheader=false);
00062 bool is_reportitem(QListViewItem*,bool includingheader=false);
00063 bool is_databaseitem(QListViewItem*);
00064 bool is_headeritem(QListViewItem*);
00065 bool is_tableitem(bool includingheader=false);
00066 bool is_queryitem(bool includingheader=false);
00067 bool is_viewitem(bool includingheader=false);
00068 bool is_formitem(bool includingheader=false);
00069 bool is_reportitem(bool includingheader=false);
00070 bool is_databaseitem(void);
00071 bool is_headeritem(void);
00072 bool is_tableheader(void);
00073 bool is_queryheader(void);
00074 bool is_viewheader(void);
00075 bool is_formheader(void);
00076 bool is_reportheader(void);
00077 bool is_tableheader(QListViewItem*);
00078 bool is_queryheader(QListViewItem*);
00079 bool is_viewheader(QListViewItem*);
00080 bool is_formheader(QListViewItem*);
00081 bool is_reportheader(QListViewItem*);
00082 bool cancel(void){return p_cancelcopying;}
00083 void reload_lists(void);
00084 enum enum_showmode {sm_all,sm_central,sm_local};
00085
00086 void set_showmode(enum_showmode);
00087 enum_showmode showmode(void) const;
00088
00089 static void set_use_singleclick(bool);
00090 static bool use_singleclick(void) ;
00091
00092
00093
00094 signals:
00095
00096 void signal_new_database(void);
00097 void signal_delete_database(const QString&);
00098 void signal_reload_databases(void);
00099
00100 void signal_new_table(void);
00101 void signal_delete_table(const QString&);
00102 void signal_designmode_table(const QString&);
00103 void signal_viewmode_table(const QString&);
00104
00105 void signal_new_view(void);
00106 void signal_delete_view(const QString&);
00107 void signal_designmode_view(const QString&);
00108 void signal_viewmode_view(const QString&);
00109
00110 void signal_new_query(void);
00111 void signal_delete_query(const QString&);
00112 void signal_designmode_query(const QString&);
00113 void signal_viewmode_query(const QString&);
00114
00115 void signal_new_form(void);
00116 void signal_delete_form(const QString&);
00117 void signal_designmode_form(const QString&);
00118 void signal_viewmode_form(const QString&);
00119
00120 void signal_new_report(void);
00121 void signal_delete_report(const QString&);
00122 void signal_designmode_report(const QString&);
00123 void signal_viewmode_report(const QString&);
00124
00125
00126 public slots:
00127 virtual void new_clicked();
00128 virtual void start_clicked();
00129 virtual void alter_clicked();
00130 virtual void delete_clicked();
00131 void copy(void);
00132 void paste(void);
00133 void copying_cancelled();
00134
00135
00136 protected slots:
00137
00138 void item_clicked(QListViewItem*);
00139 void item_doubleclicked(QListViewItem*);
00140 void slot_drop(QDropEvent*);
00141
00142
00143 protected:
00144 static bool set_progress(long int,long int,const hk_string&);
00145 QDragObject* dragObject ();
00146
00147 void item_selected(QListViewItem* );
00148 virtual void list_changes(listtype type);
00149
00150
00151
00152 virtual bool acceptDrag(QDropEvent*) const;
00153
00154
00155 bool decode_action(QMimeSource* event);
00156 bool copy_presentationfile(void);
00157 bool copy_table(void);
00158 bool copy_view(void);
00159 bool copy_database(void);
00160 hk_connection* find_connection(void);
00161
00162 private:
00163 objecttype current_objecttype();
00164 void init_listview(void);
00165 void set_databasename(void);
00166 void set_tables(void);
00167 void set_views(void);
00168 void set_queries(void);
00169 void set_forms(void);
00170 void set_reports(void);
00171 bool execute_action(void);
00172 hk_kdedblistviewprivate* p_private;
00173 static QProgressDialog* p_progressdialog;
00174 static bool p_cancelcopying;
00175 static bool p_use_singleclick;
00176 };
00177
00178 class hk_kdeschemadialog : public QDialog
00179 {
00180 Q_OBJECT
00181
00182 public:
00183 hk_kdeschemadialog( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
00184 ~hk_kdeschemadialog();
00185
00186 QButtonGroup* ButtonGroup1;
00187 QRadioButton* schemaonlyfield;
00188 QRadioButton* datafield;
00189 QPushButton* buttonOk;
00190 QPushButton* buttonCancel;
00191
00192 protected:
00193 QHBoxLayout* hk_kdeschemadialogLayout;
00194 QVBoxLayout* ButtonGroup1Layout;
00195 QVBoxLayout* Layout2;
00196 };
00197
00198
00199 #endif //HK_KDEDBLISTVIEW_H