00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __RioXMLINPUT_H__
00019 #define __RioXMLINPUT_H__
00020
00021 #include <libxml/xinclude.h>
00022
00023 #include <qdialog.h>
00024 #include <qdom.h>
00025 #include <qwidget.h>
00026 #include <qlineedit.h>
00027 #include <qcombobox.h>
00028 #include <qlistview.h>
00029
00030 #include "RioQt.h"
00031
00032 class RelatedMedia;
00033
00034 class RioXmlInput : public QDialog
00035 {
00036 Q_OBJECT
00037
00038 private:
00039 RioQt * rioQt;
00040
00041
00042 QLineEdit *leTitle;
00043 QLineEdit *leProfessor;
00044 QLineEdit *leCourse;
00045 QLineEdit *leGradProgram;
00046 QLineEdit *leSource;
00047 QLineEdit *leResolutionX, *leResolutionY;
00048 QLineEdit *leBitrate;
00049 QLineEdit *leDuration;
00050 QLineEdit *leFileName;
00051 QLineEdit *leCourseCode;
00052 QLineEdit *leFileSize;
00053
00054 QComboBox *cbObjectType;
00055 QComboBox *cbMediaList;
00056
00057 QWidget *widget;
00058 QListView *lvRMList;
00059
00060 QPushButton *pbAddMedia;
00061 QPushButton *pbRemoveMedia;
00062 QPushButton *pbOK;
00063
00064
00065 QString xmlCode;
00066 bool is_valid_xml;
00067
00068 QString fileName;
00069
00070 QPtrList<RelatedMedia> relatedMediaList;
00071
00072 void initialize( void );
00073 void fillXmlTemplate( void );
00074 bool fillXmlForm( QString, bool = false );
00075 bool verifyInput( void );
00076 bool validateObjectDTD( QString );
00077 int findMediaItem( QString );
00078 QPtrList<QListViewItem> getSelectedRelatedMedia( void );
00079 void removeFromRelatedMediaList( int );
00080
00081 public:
00082 RioXmlInput( QWidget *parent,
00083 QString fileName );
00084
00085 RioXmlInput( QWidget *parent,
00086 QString objectName,
00087 unsigned long long int objectSize );
00088
00089 QString getXmlCode( void );
00090 bool isValidXml( void );
00091
00092
00093 static const int RM_TYPE_BROWSER = 0;
00094 static const int RM_TYPE_TGIF = 1;
00095 static const int RM_TYPE_SLIDES = 2;
00096 static const int RM_TYPE_INDEX = 3;
00097
00098 private slots:
00099 void addRelatedMedia();
00100 void removeRelatedMedia();
00101 void processInput();
00102 void loadXmlFile( void );
00103 void chooseRelatedMedia( const QString& );
00104 void enableRemoveButton();
00105 void enableOKButton( const QString& );
00106 void enableOKButton( bool );
00107 };
00108
00109
00110 static QString xmlTemplate =
00111 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
00112 <!DOCTYPE rio_object SYSTEM \"object.dtd\">\n\
00113 <rio_object>\n\
00114 <obj_filename>${OBJECT_NAME}</obj_filename>\n\
00115 <obj_filesize>${OBJECT_SIZE}</obj_filesize>\n\
00116 <obj_title>${OBJECT_TITLE}</obj_title>\n\
00117 <obj_type>${OBJECT_TYPE}</obj_type>\n\
00118 <professor>${PROFESSOR}</professor>\n\
00119 <course>${COURSE}</course>\n\
00120 <coursecode>${COURSE_CODE}</coursecode>\n\
00121 <grad_program>${PROGRAM}</grad_program>\n\
00122 <source>${SOURCE}</source>\n\
00123 <bitrate>${BIT_RATE}</bitrate>\n\
00124 <duration>${DURATION}</duration>\n\
00125 <resolution>\n\
00126 <r_x>${RESOLUTION_X}</r_x>\n\
00127 <r_y>${RESOLUTION_Y}</r_y>\n\
00128 </resolution>\n\
00129 <related_media>\n\
00130 ${RELATED_MEDIA_ITEMS}\
00131 </related_media>\n\
00132 </rio_object>\n";
00133
00134
00135 static QString mediaItemTemplate =
00136 " <rm_item>\n\
00137 <rm_filename>${FILE_NAME}</rm_filename>\n\
00138 <rm_type>${FILE_TYPE}</rm_type>\n\
00139 </rm_item>\n";
00140
00141
00142 static QString objectDTD =
00143 "<!ELEMENT rio_object\n\
00144 (obj_filename,obj_filesize,obj_title,obj_type,professor,course,coursecode,grad_program,source,bitrate,duration,resolution,related_media) >\n\
00145 <!ELEMENT obj_filename (#PCDATA) >\n\
00146 <!ELEMENT obj_filesize (#PCDATA) >\n\
00147 <!ELEMENT obj_title (#PCDATA) >\n\
00148 <!ELEMENT obj_type (#PCDATA) >\n\
00149 <!ELEMENT professor (#PCDATA) >\n\
00150 <!ELEMENT course (#PCDATA) >\n\
00151 <!ELEMENT coursecode (#PCDATA) >\n\
00152 <!ELEMENT grad_program (#PCDATA) >\n\
00153 <!ELEMENT source (#PCDATA) >\n\
00154 <!ELEMENT bitrate (#PCDATA) >\n\
00155 <!ELEMENT duration (#PCDATA) >\n\
00156 <!ELEMENT resolution (r_x,r_y) >\n\
00157 <!ELEMENT r_x (#PCDATA) >\n\
00158 <!ELEMENT r_y (#PCDATA) >\n\
00159 <!ELEMENT related_media (rm_item*) >\n\
00160 <!ELEMENT rm_item (rm_filename,rm_type) >\n\
00161 <!ELEMENT rm_filename (#PCDATA) >\n\
00162 <!ELEMENT rm_type (#PCDATA) >\n";
00163
00164 void doNothing( void );
00165
00166
00167
00168
00169 class RelatedMedia
00170 {
00171 public:
00172 QString fileName;
00173 int fileType;
00174 };
00175
00176 #endif