00001 #ifndef NEOVISIONII_NEOANNOTATE_DBMANAGER_QT_H 00002 #define NEOVISIONII_NEOANNOTATE_DBMANAGER_QT_H 00003 00004 #include <Qt/QtCore> 00005 00006 #include <Qt/qdialog.h> 00007 #include <Qt/qlineedit.h> 00008 #include <Qt/qcombobox.h> 00009 #include <Qt/qformlayout.h> 00010 #include <Qt/qpushbutton.h> 00011 #include <Qt/qmessagebox.h> 00012 #include <Qt/qdatetimeedit.h> 00013 #include <Qt/qtreewidget.h> 00014 00015 #include <QtSql/QSqlDatabase> 00016 #include <QtSql/QSqlError> 00017 #include <QtSql/QSqlQuery> 00018 #include <Qt3Support/q3networkprotocol.h> 00019 00020 #define VIDEO_ARCHIVE_LOCATION "/lab/raid2/neo2/neo2data/archive/" 00021 #define VIDEO_WORKING_LOCATION "/lab/neo2data/archive/" 00022 #define VIDEO_INCOMING_LOCATION "/lab/neo2data/incoming/" 00023 00024 class DBManager; 00025 00026 class ConnectionDialog : public QDialog 00027 { 00028 Q_OBJECT 00029 00030 public: 00031 ConnectionDialog(QWidget* parent); 00032 00033 QLineEdit* serverNameEdit; 00034 QLineEdit* dbNameEdit; 00035 QLineEdit* userNameEdit; 00036 QLineEdit* passwordEdit; 00037 }; 00038 00039 class NewDBEntryDialog : public QDialog 00040 { 00041 Q_OBJECT 00042 00043 public: 00044 NewDBEntryDialog(QWidget* parent, DBManager* mgr, QSqlDatabase* _db); 00045 00046 void showEvent(QShowEvent* event); 00047 00048 QString getMgzJFileName() { return itsMgzJFileName; } 00049 QString getSceneUid() { return itsSceneUid; } 00050 00051 public slots: 00052 void fillInCameraOperator(int labComboBoxRow); 00053 void commitNewScene(); 00054 void browse(); 00055 void copyFinished(int exitCode, QProcess::ExitStatus exitStatus); 00056 00057 signals: 00058 void closeProgressDialog(); 00059 00060 00061 private: 00062 DBManager *itsDBManager; 00063 00064 QLabel* filenameLabel; 00065 QComboBox* labComboBox; 00066 QComboBox* cameraComboBox; 00067 QComboBox* operatorComboBox; 00068 QComboBox* weatherComboBox; 00069 QLineEdit* startFrameEdit; 00070 QLineEdit* numFramesEdit; 00071 QLineEdit* frameRateEdit; 00072 QLineEdit* sceneNameEdit; 00073 QLabel* fileNameLabel; 00074 QDateTimeEdit* startDateTimeEdit; 00075 QDateTimeEdit* endDateTimeEdit; 00076 QComboBox* timeZoneBox; 00077 00078 QString itsMgzJFileName; 00079 00080 QSqlDatabase* db; 00081 00082 QString itsSceneUid; 00083 00084 }; 00085 00086 class OpenDBEntryDialog : public QDialog 00087 { 00088 Q_OBJECT 00089 00090 public: 00091 OpenDBEntryDialog(QWidget* parent, DBManager *mgr, QSqlDatabase* _db); 00092 00093 QString getMgzJFileName() { return itsMgzJFileName; } 00094 QString getSceneUid() { return itsSceneUid; } 00095 00096 void showEvent(QShowEvent* event); 00097 00098 00099 public slots: 00100 void openEntry(); 00101 00102 private: 00103 DBManager *itsDBManager; 00104 QTreeWidget* itsSceneTree; 00105 QString itsMgzJFileName; 00106 QString itsSceneUid; 00107 QSqlDatabase* db; 00108 }; 00109 00110 class SelectAnnotationSourceDialog: public QDialog 00111 { 00112 Q_OBJECT 00113 public: 00114 SelectAnnotationSourceDialog(QWidget* parent, QSqlDatabase* _db); 00115 00116 QString getSourceUid() { return itsSourceUid; } 00117 00118 void showEvent(QShowEvent* event); 00119 00120 public slots: 00121 void selectSource(); 00122 00123 private: 00124 QTreeWidget* itsSourceTree; 00125 QString itsSourceUid; 00126 QSqlDatabase* db; 00127 }; 00128 00129 class DBManager : public QWidget 00130 { 00131 Q_OBJECT; 00132 public: 00133 DBManager(QWidget* parent) : 00134 QWidget(parent), 00135 itsSelectAnnotationSourceDialog(parent, &db), 00136 itsNewDBEntryDialog(parent, this, &db), 00137 itsOpenDBEntryDialog(parent, this, &db), 00138 itsConnDialog(parent), 00139 connected(false), 00140 itsSceneUid("-1") 00141 { 00142 itsArchiveLoc = "/lab/raid2/neo2/neo2data/archive/"; 00143 itsWorkingLoc = "/lab/neo2data/archive/"; 00144 itsIncomingLoc = "/lab/neo2data/incoming/"; 00145 } 00146 00147 void saveAnnotation(); 00148 00149 void createDBEntry() 00150 { 00151 if(!connected) connectToDb(); 00152 if(!connected) return; 00153 00154 if(itsNewDBEntryDialog.exec()) 00155 { 00156 itsSceneUid = itsNewDBEntryDialog.getSceneUid(); 00157 emit openVideo(itsNewDBEntryDialog.getMgzJFileName()); 00158 } 00159 } 00160 00161 00162 void openAnnotation(); 00163 00164 bool isConnected() { return connected; } 00165 00166 QMap<int, QString> getObjCategories(); 00167 00168 00169 void updateSettings(QSettings *settings); 00170 QString itsArchiveLoc; 00171 QString itsWorkingLoc; 00172 QString itsIncomingLoc; 00173 signals: 00174 void openVideo(QString fileName); 00175 00176 public slots: 00177 void connectToDb(); 00178 void chooseAnnotationSource(); 00179 00180 00181 private: 00182 QSqlDatabase db; 00183 SelectAnnotationSourceDialog itsSelectAnnotationSourceDialog; 00184 NewDBEntryDialog itsNewDBEntryDialog; 00185 OpenDBEntryDialog itsOpenDBEntryDialog; 00186 ConnectionDialog itsConnDialog; 00187 bool connected; 00188 QString itsSceneUid; 00189 00190 }; 00191 00192 #endif // NEOVISIONII_NEOANNOTATE_DBMANAGER_QT_H 00193