Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

void Impala::Application::VideoExcel::TableDataSource::SortAndFilter (  )  [inline]

Definition at line 283 of file TableDataSource.h.

References Impala::Application::VideoExcel::compare_double(), Impala::Application::VideoExcel::compare_int(), Impala::Application::VideoExcel::compare_string_nocase(), DoUpdateRowsEvent(), DoUpdateSelectionEvent(), DoUpdateSortEvent(), GetDoubleDataByID(), GetIntDataByID(), GetNormalizedDataByID(), GetTextDataByID(), GetTotalRows(), ILOG_DEBUG, IsFiltered(), mFilteredRows, mSortAscending, mSortColumn, mSortSequence, mSortType, mVisibleRows, TYPE_DOUBLE, TYPE_INT, TYPE_NORMALIZEDVALUE, and TYPE_TEXT.

Referenced by ApplyFilters(), and SetSortColumn().

00284     {
00285         ILOG_DEBUG("re-sorting to " << mSortColumn << "/" << mSortAscending);
00286         mVisibleRows.clear();
00287         if (mSortType == TYPE_TEXT)
00288         {
00289             std::list < std::pair <String, int> > sortthis;
00290             for (int i=0; i<GetTotalRows();i++)
00291             {
00292                 if (!IsFiltered(i))
00293                 {
00294                     String txt = GetTextDataByID(mSortColumn, i);
00295                     sortthis.push_back( std::make_pair(txt, i) );
00296                     mVisibleRows[i] = true;
00297                 }
00298                 else
00299                     mVisibleRows[i] = false;
00300             }
00301             mFilteredRows = sortthis.size();
00302             sortthis.sort(compare_string_nocase);
00303             ILOG_DEBUG("filtered # of rows: " << mFilteredRows);
00304 
00305             if (!mSortAscending)
00306                 sortthis.reverse();
00307             mSortSequence.clear();
00308 
00309             std::list<std::pair <String, int> >::iterator it;
00310             for (it=sortthis.begin(); it!=sortthis.end(); ++it)
00311                 mSortSequence.push_back(it->second);
00312         }
00313         if (mSortType == TYPE_NORMALIZEDVALUE || mSortType == TYPE_DOUBLE)
00314         {
00315             std::list < std::pair <double, int> > sortthis;
00316             for (int i=0; i<GetTotalRows();i++)
00317             {
00318                 if (!IsFiltered(i))
00319                 {
00320                         double dVal;
00321                     if (mSortType == TYPE_NORMALIZEDVALUE)
00322                         dVal = GetNormalizedDataByID(mSortColumn, i);
00323                     else
00324                         dVal = GetDoubleDataByID(mSortColumn, i);
00325                     sortthis.push_back( std::make_pair(dVal, i) );
00326                     mVisibleRows[i] = true;
00327                 }
00328                 else
00329                     mVisibleRows[i] = false;
00330             }
00331             mFilteredRows = sortthis.size();
00332             sortthis.sort(compare_double);
00333             ILOG_DEBUG("filtered # of rows: " << mFilteredRows);
00334 
00335             if (mSortAscending)
00336                 sortthis.reverse();
00337             mSortSequence.clear();
00338 
00339             std::list<std::pair <double, int> >::iterator it;
00340             for (it=sortthis.begin(); it!=sortthis.end(); ++it)
00341                 mSortSequence.push_back(it->second);
00342         }
00343         if (mSortType == TYPE_INT)
00344         {
00345             std::list < std::pair <int, int> > sortthis;
00346             for (int i=0; i<GetTotalRows();i++)
00347             {
00348                 if (!IsFiltered(i))
00349                 {
00350                     int iVal = GetIntDataByID(mSortColumn, i);
00351                     sortthis.push_back( std::make_pair(iVal, i) );
00352                     mVisibleRows[i] = true;
00353                 }
00354                 else
00355                     mVisibleRows[i] = false;
00356             }
00357             mFilteredRows = sortthis.size();
00358             sortthis.sort(compare_int);
00359             ILOG_DEBUG("filtered # of rows: " << mFilteredRows);
00360 
00361             if (mSortAscending)
00362                 sortthis.reverse();
00363             mSortSequence.clear();
00364 
00365             std::list<std::pair <int, int> >::iterator it;
00366             for (it=sortthis.begin(); it!=sortthis.end(); ++it)
00367                 mSortSequence.push_back(it->second);
00368         }
00369         ILOG_DEBUG("sorting completed.");
00370         DoUpdateSortEvent();
00371         DoUpdateSelectionEvent();
00372         DoUpdateRowsEvent();
00373     }

Here is the call graph for this function:


Generated on Fri Mar 19 10:53:57 2010 for ImpalaSrc by  doxygen 1.5.1