Changeset c790268
- Timestamp:
- 01/17/10 17:22:03 (13 years ago)
- Branches:
- master, qt5
- Children:
- 6f39595
- Parents:
- 680a4da
- Location:
- src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/mvc/delegate.cpp
r680a4da rc790268 137 137 138 138 // draw title 139 QPointF titlePointF(option.rect.x(),option.rect.y()+option.rect.height()-10); 140 QString text = qVariantValue<QString>(index.data()); 139 QPointF titlePointF(option.rect.x()+SPACER,option.rect.y()+option.rect.height()-10); 140 QString text; 141 if(index.parent().isValid()) // event 142 text = qVariantValue<QString>(index.data()) + ": " + static_cast<Event*>(index.internalPointer())->title(); 143 else // group 144 text = qVariantValue<QString>(index.data()); 141 145 painter->drawText(titlePointF,text); 142 146 -
src/mvc/event.cpp
r680a4da rc790268 1 1 #include "event.h" 2 2 3 // 'event' record is splitted into two separate tables 'event' and 'virtual_event' 4 // for the FTS (Full-Text-Search) support and so, it is necessary to provide/use 5 // two table names + corresponding parameters/methods, see bellow 6 QString const Event::sTable1Name = QString("event"); 7 QString const Event::sTable2Name = QString("virtual_event"); 8 int const Event::sTable1ColCount = 8; // see 'toRecord()' for more details 9 int const Event::sTable2ColCount = 5; // see 'toRecord()' for more details 10 3 11 QSqlRecord const Event::sColumns = Event::toRecord(QList<QSqlField>() 12 /* 'columns from Table 1 */ 4 13 << QSqlField("id", QVariant::Int) 5 14 << QSqlField("xid_conference", QVariant::Int) … … 9 18 << QSqlField("type", QVariant::String) 10 19 << QSqlField("language", QVariant::String) 11 << QSqlField("favourite", QVariant::Bool)); 20 << QSqlField("favourite", QVariant::Bool) 21 /* 'columns' from Table2 */ 22 << QSqlField("tag", QVariant::String) 23 << QSqlField("title", QVariant::String) 24 << QSqlField("subtitle", QVariant::String) 25 << QSqlField("abstract", QVariant::String) 26 << QSqlField("description", QVariant::String)); 12 27 13 QString const Event::sTableName = QString("event");14 28 15 29 Event Event::getById(int id, int conferenceId) 16 30 { 17 31 QSqlQuery query; 18 query.prepare(selectQuery () + "WHERE id = :id ANDxid_conference = :conf");32 query.prepare(selectQueryJoin2T("id") + "WHERE event.id = :id AND event.xid_conference = :conf"); 19 33 query.bindValue(":id", id); 20 34 query.bindValue(":conf", conferenceId); 35 21 36 return loadOne(query); 22 37 } … … 25 40 { 26 41 QSqlQuery query; 27 query.prepare(selectQuery () + "WHERE xid_conference = :conf AND start >= :start AND start < :end ORDER BYstart");42 query.prepare(selectQueryJoin2T("id") + "WHERE event.xid_conference = :conf AND event.start >= :start AND event.start < :end ORDER BY event.start"); 28 43 query.bindValue(":conf", conferenceId); 29 44 query.bindValue(":start", convertToDb(date, QVariant::DateTime)); -
src/mvc/event.h
r680a4da rc790268 19 19 public: 20 20 static QSqlRecord const sColumns; 21 static QString const sTableName; 21 //static QString const sTableName; 22 static QString const sTable1Name; 23 static QString const sTable2Name; 24 static int const sTable1ColCount; 25 static int const sTable2ColCount; 22 26 23 27 public: … … 26 30 27 31 public: 32 // Table 1 28 33 int id() const { return value("id").toInt(); } 29 34 int conferenceId() const { return value("xid_conference").toInt(); } … … 34 39 QString language() const { return value("language").toString(); } 35 40 bool isFavourite() const { return value("favourite").toBool(); } 41 // Table 2 : virtual table for FTS (Full Text Search) 42 QString tag() const { return value("tag").toString(); } 43 QString title() const { return value("title").toString(); } 44 QString subtitle() const { return value("subtitle").toString(); } 45 QString abstract() const { return value("abstract").toString(); } 46 QString description() const { return value("description").toString(); } 36 47 48 // Table 1 37 49 void setId(int id) { setValue("id", id); } 38 50 void setConferenceId(int conferenceId) { setValue("xid_conference", conferenceId); } … … 43 55 void setLanguage(const QString& language) { setValue("language", language); } 44 56 void setFavourite(bool favourite) { setValue("favourite", favourite); } 57 // Table 2 : virtual table for FTS (Full Text Search) 58 void setTag(const QString& tag) { setValue("tag", tag); } 59 void setTitle(const QString& title) { setValue("title", title); } 60 void setSubtitle(const QString& subtitle) { setValue("subtitle", subtitle); } 61 void setAbstract(const QString& abstract) { setValue("abstract", abstract); } 62 void setDescription(const QString& description) { setValue("description", description); } 45 63 46 64 friend class EventTest; -
src/orm/ormrecord.h
r680a4da rc790268 10 10 #include <QDebug> 11 11 12 // INFO: 13 // all record items/columns may be defined in one table (1.), or 14 // they can be splitted in two separate tables (2.) (eg. for FTS support) 15 // 1.) you have to define "static QString const sTableName" 16 // 2.) you have to define two table names: 17 // "static QString const sTable1Name" 18 // "static QString const sTable2Name" 19 // and since all record items/columns are handled by one QSqlRecord, 20 // you have to also define number of columns that belongs to table 1 (1.), and table 2 (2.) 21 // 1.) "static int const sTable1ColCount" 22 // 2.) "static int const sTable2ColCount" 23 // there are also defined auxiliary methods for 1-Table/2-Tables approach, see bellow 24 12 25 class OrmException 13 26 { … … 44 57 45 58 // auxiliary methods 59 static QSqlRecord toRecord(const QList<QSqlField> & columnList); 60 // all record items/columns are in one table 46 61 static QString columnsForSelect(const QString& prefix = QString()); 47 62 static QString selectQuery(); 48 63 static QString updateQuery(); 49 static QSqlRecord toRecord(const QList<QSqlField> & columnList); 64 // record items/columns are stored in two tables 65 static QString columnsForSelectJoin2T(); // for joining two tables 66 static QString selectQueryJoin2T(const QString &key); // for joining two tables 50 67 51 68 static QVariant convertToC(QVariant value, QVariant::Type colType); … … 150 167 151 168 template <typename T> 169 QString OrmRecord<T>::columnsForSelectJoin2T() 170 { 171 Q_ASSERT((T::sTable1ColCount+T::sTable2ColCount) == T::sColumns.count()); 172 173 QStringList prefixedColumns; 174 for (int i=0; i<T::sTable1ColCount; i++) 175 { 176 prefixedColumns.append(QString("%1.%2").arg(T::sTable1Name, T::sColumns.field(i).name())); 177 } 178 for (int j=0; j<T::sTable2ColCount; j++) 179 { 180 prefixedColumns.append(QString("%1.%2").arg(T::sTable2Name, T::sColumns.field(T::sTable1ColCount+j).name())); 181 } 182 return prefixedColumns.join(","); 183 } 184 185 template <typename T> 152 186 QString OrmRecord<T>::selectQuery() 153 187 { … … 156 190 157 191 template <typename T> 192 QString OrmRecord<T>::selectQueryJoin2T(const QString &key) 193 { 194 return QString("SELECT %1 FROM %2 INNER JOIN %3 ON %4.%5 = %6.%7 ").arg( 195 columnsForSelectJoin2T(), 196 T::sTable1Name, 197 T::sTable2Name, 198 T::sTable1Name, 199 key, 200 T::sTable2Name, 201 key); 202 } 203 204 template <typename T> 158 205 QString OrmRecord<T>::updateQuery() 159 206 { 160 return QString("UPDATE %1 ").arg(T::sTable Name);207 return QString("UPDATE %1 ").arg(T::sTable1Name); 161 208 } 162 209 … … 198 245 199 246 #endif // ORMRECORD_H 247
Note: See TracChangeset
for help on using the changeset viewer.