Changeset e662750 for src


Ignore:
Timestamp:
01/21/10 10:49:41 (13 years ago)
Author:
timkoma <timkoma@…>
Branches:
master, qt5
Children:
72cd3af
Parents:
842f5f9
Message:

first working version of the search

Location:
src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • src/gui/mainwindow.cpp

    r842f5f9 re662750  
    7171    trackTreeView->setItemDelegate(new Delegate(trackTreeView));
    7272
    73     // DAY EVENTS View
     73    // SEARCH EVENTS View
    7474        searchTreeView->setHeaderHidden(true);
    7575        searchTreeView->setRootIsDecorated(false);
     
    112112        trackDayNavigator->setDates(aStartDate, aEndDate);
    113113        favouriteDayNavigator->setDates(aStartDate, aEndDate);
     114        searchDayNavigator->setDates(aStartDate, aEndDate);
    114115    }
    115116
     
    275276        columns.append( "abstract" );
    276277
     278    searchTreeView->reset();
    277279    if( mSqlEngine->searchEvent( confId, columns, searchEdit->text() ) > 0 ){
    278         searchTreeView->setVisible(true);
    279         searchDayNavigator->setVisible(true);
    280     }
    281 }
    282 
     280        static_cast<EventModel*>(searchTreeView->model())->loadSearchResultEvents(Conference::getById(confId).start(),confId);
     281        searchDayNavigator->show();
     282        searchTreeView->show();
     283    }
     284}
     285
  • src/gui/mainwindow.ui

    r842f5f9 re662750  
    9191       </layout>
    9292      </widget>
    93       <widget class="QWidget" name="searchTab" >
    94        <attribute name="title" >
     93      <widget class="QWidget" name="searchTab">
     94       <attribute name="title">
    9595        <string>Search</string>
    9696       </attribute>
    97        <layout class="QVBoxLayout" name="verticalLayout_3" >
    98         <item>
    99          <layout class="QFormLayout" name="formLayout" >
    100           <property name="fieldGrowthPolicy" >
    101            <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
    102           </property>
    103           <item row="0" column="0" >
    104            <widget class="QCheckBox" name="searchTitle" >
    105             <property name="text" >
    106              <string>Title</string>
    107             </property>
    108            </widget>
    109           </item>
    110           <item row="0" column="1" >
    111            <layout class="QHBoxLayout" name="horizontalLayout" >
    112             <item>
    113              <widget class="QLineEdit" name="searchEdit" >
    114               <property name="enabled" >
    115                <bool>true</bool>
    116               </property>
    117               <property name="toolTip" >
    118                <string>type a keyword to search</string>
    119               </property>
    120              </widget>
    121             </item>
    122             <item>
    123              <widget class="QPushButton" name="searchButton" >
    124               <property name="text" >
    125                <string>Search</string>
    126               </property>
    127               <property name="checkable" >
    128                <bool>false</bool>
    129               </property>
    130               <property name="autoDefault" >
    131                <bool>false</bool>
    132               </property>
    133               <property name="default" >
    134                <bool>true</bool>
    135               </property>
    136               <property name="flat" >
    137                <bool>false</bool>
    138               </property>
    139              </widget>
    140             </item>
    141            </layout>
    142           </item>
    143           <item row="1" column="0" >
    144            <widget class="QCheckBox" name="searchAbstract" >
    145             <property name="text" >
    146              <string>Abstract</string>
    147             </property>
    148            </widget>
    149           </item>
    150          </layout>
    151         </item>
    152         <item>
    153          <widget class="DayNavigatorWidget" native="1" name="searchDayNavigator" >
    154           <property name="maximumSize" >
    155            <size>
    156             <width>16777215</width>
    157             <height>16777215</height>
    158            </size>
    159           </property>
    160          </widget>
    161         </item>
    162         <item>
    163          <widget class="TreeView" name="searchTreeView" >
    164           <property name="maximumSize" >
    165            <size>
    166             <width>16777215</width>
    167             <height>16777215</height>
    168            </size>
    169           </property>
    170          </widget>
    171         </item>
    172        </layout>
     97       <layout class="QVBoxLayout" name="verticalLayout_3">
     98         <item>
     99          <layout class="QFormLayout" name="formLayout">
     100           <property name="fieldGrowthPolicy">
     101            <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
     102           </property>
     103           <item row="0" column="0">
     104            <widget class="QCheckBox" name="searchTitle">
     105             <property name="text">
     106              <string>Title</string>
     107             </property>
     108            </widget>
     109           </item>
     110           <item row="0" column="1">
     111            <layout class="QHBoxLayout" name="horizontalLayout">
     112             <item>
     113              <widget class="QLineEdit" name="searchEdit">
     114               <property name="enabled">
     115                <bool>true</bool>
     116               </property>
     117               <property name="toolTip">
     118                <string>type a keyword to search</string>
     119               </property>
     120              </widget>
     121             </item>
     122             <item>
     123              <widget class="QPushButton" name="searchButton">
     124               <property name="text">
     125                <string>Search</string>
     126               </property>
     127               <property name="checkable">
     128                <bool>false</bool>
     129               </property>
     130               <property name="autoDefault">
     131                <bool>false</bool>
     132               </property>
     133               <property name="default">
     134                <bool>true</bool>
     135               </property>
     136               <property name="flat">
     137                <bool>false</bool>
     138               </property>
     139              </widget>
     140             </item>
     141            </layout>
     142           </item>
     143           <item row="1" column="0">
     144            <widget class="QCheckBox" name="searchAbstract">
     145             <property name="text">
     146              <string>Abstract</string>
     147             </property>
     148            </widget>
     149           </item>
     150          </layout>
     151         </item>
     152         <item>
     153          <widget class="DayNavigatorWidget" name="searchDayNavigator" native="true">
     154           <property name="maximumSize">
     155            <size>
     156             <width>16777215</width>
     157             <height>16777215</height>
     158            </size>
     159           </property>
     160          </widget>
     161         </item>
     162         <item>
     163          <widget class="TreeView" name="searchTreeView">
     164           <property name="maximumSize">
     165            <size>
     166             <width>16777215</width>
     167             <height>16777215</height>
     168            </size>
     169           </property>
     170          </widget>
     171         </item>
     172        </layout>
    173173      </widget>
    174174      <widget class="QWidget" name="mapTab" >
  • src/mvc/event.cpp

    r842f5f9 re662750  
    114114}
    115115
     116QList<Event> Event::getSearchResultByDate(const QDate& date, int conferenceId, QString orderBy)
     117{
     118
     119    QString strQuery = QString("SELECT %1 FROM EVENT INNER JOIN VIRTUAL_EVENT USING (xid_conference, id) "
     120        "INNER JOIN SEARCH_EVENT USING (xid_conference, id) ").arg( columnsForSelectJoin2T() );
     121    strQuery += QString(
     122        "WHERE %1.xid_conference = :conf AND %1.start >= :start AND %1.start < :end ORDER BY %1.%2").arg(sTable1Name, orderBy);
     123    qDebug() << strQuery;
     124    QSqlQuery query;
     125    query.prepare( strQuery );
     126    query.bindValue(":conf", conferenceId);
     127    query.bindValue(":start", convertToDb(date, QVariant::DateTime));
     128    query.bindValue(":end", convertToDb(date.addDays(1), QVariant::DateTime));
     129
     130    return load(query);
     131}
     132
  • src/mvc/event.h

    r842f5f9 re662750  
    2828    static QList<Event> getByDate(const QDate & date, int conferenceId, QString orderBy);
    2929    static QList<Event> getFavByDate(const QDate & date, int conferenceId); // get Favourities by Date
     30    static QList<Event> getSearchResultByDate(const QDate& date, int conferenceId, QString orderBy);
    3031public:
    3132    // Table 1
  • src/mvc/eventmodel.cpp

    r842f5f9 re662750  
    183183}
    184184
     185void EventModel::loadSearchResultEvents(const QDate &aDate, int aConferenceId)
     186{
     187    clearModel();
     188    // check for existence of the conference in the DB
     189    if(Conference::getAll().count())
     190    {
     191        qDebug() << "Loading search result Data: [" << Conference::getById(aConferenceId).title() << "] " << aDate;
     192        mEvents = Event::getSearchResultByDate(QDate(aDate.year(), aDate.month(), aDate.day()), aConferenceId, "start");
     193    }
     194    createTimeGroups();
     195}
     196
    185197void EventModel::loadEventsByTrack(const QDate &aDate, int aConferenceId)
    186198{
  • src/mvc/eventmodel.h

    r842f5f9 re662750  
    2020    void loadFavEvents(const QDate &aDate, int aConferenceId); // loads Favourite events from the DB
    2121    void loadEventsByTrack(const QDate &aDate, int aConferenceId); // loads Events grouped by Track from the DB
     22    void loadSearchResultEvents(const QDate &aDate, int aConferenceId);
    2223    // a method to force 'EventModel' emit signal 'dataChanged()'
    2324    // a 'view', eg. 'TreeView' listens for this signal and redraws changed items(indexes)
  • src/orm/ormrecord.h

    r842f5f9 re662750  
    143143            throw new OrmSqlException(query.lastError().text());
    144144        }
     145        else
     146        {
     147            qDebug() << "SQL OK";
     148        }
    145149    }
    146150
     
    150154        objects << hydrate(query.record());
    151155    }
    152 
     156    qDebug() << "Fetch done";
    153157    return objects;
    154158}
  • src/sql/sqlengine.cpp

    r842f5f9 re662750  
    3838        result = createTables(database);
    3939    }
    40 
    41     database.open();
     40    else
     41    {
     42        database.open();
     43    }
    4244
    4345    //LOG_INFO(QString("Opening '%1' database '%2'").arg(aDatabaseType).arg(aDatabaseName));
     
    318320        return -1;
    319321
    320     QString query = QString(
    321         "DROP TABLE IF EXISTS SEARCH_EVENT;"
    322         "CREATE TEMP TABLE SEARCH_EVENT ( xid_conference INTEGER  NOT NULL, id INTEGER NOT NULL );"
    323         "INSERT INTO SEARCH_EVENT ( xid_conference, id) "
    324             "SELECT xid_conference, id FROM EVENT AS e INNER JOIN VIRTUAL_EVENT AS ve USING (xid_conference, id) "
    325             "WHERE xid_conference = %1 AND (").arg( aConferenceId );
    326 
     322
     323    // DROP
     324    execQuery( db, "DROP TABLE IF EXISTS SEARCH_EVENT;");
     325    // CREATE
     326    execQuery( db, "CREATE TABLE SEARCH_EVENT ( xid_conference INTEGER  NOT NULL, id INTEGER NOT NULL );");
     327    // INSERT
     328    QString query = QString("INSERT INTO SEARCH_EVENT ( xid_conference, id) "
     329                "SELECT xid_conference, id FROM EVENT AS e INNER JOIN VIRTUAL_EVENT AS ve USING (xid_conference, id) "
     330                "WHERE xid_conference = %1 AND (").arg( aConferenceId );
    327331    int i = 0;
    328332    foreach (QString str, aColumns){
     
    332336    query += QString(");");
    333337
    334     qDebug() << "\nSQL: " << query;
    335 
    336     db.exec();
    337 
    338     if( db.lastError().isValid() && db.lastError().number() != 0 ){
    339         qDebug() << "SQL ERR: " << db.lastError().number() << ", " << db.lastError().text();
    340         return 0;
     338    execQuery( db, query );
     339
     340    //TODO: retun number of rows from SEARCH_EVENT
     341    return 1;
     342}
     343
     344bool SqlEngine::execQuery(QSqlDatabase &aDatabase, const QString &aQuery)
     345{
     346    qDebug() << "\nSQL: " << aQuery;
     347
     348    QSqlQuery sqlQuery(aDatabase);
     349    if( !sqlQuery.exec(aQuery) ){
     350       qDebug() << "SQL ERR: " << sqlQuery.lastError().number() << ", " << sqlQuery.lastError().text();
     351       return false;
    341352    }
    342353    else{
    343         qDebug() << "SQL OK.\n";
    344         return 1;
    345     }
    346 
    347 }
     354       qDebug() << "SQL OK.\n";
     355       return true;
     356    }
     357}
  • src/sql/sqlengine.h

    r842f5f9 re662750  
    2525        QString login(const QString &aDatabaseType, const QString &aDatabaseName);
    2626        bool createTables(QSqlDatabase &aDatabase);
     27        bool execQuery(QSqlDatabase &aDatabase, const QString &aQuery);
    2728};
    2829
Note: See TracChangeset for help on using the changeset viewer.