/* Message handler for when a header is clicked. */ void CMultiColumnSortListCtrl::OnHeaderClicked(NMHDR* pNMHDR, LRESULT* pResult) { HD_NOTIFY *pHDN = (HD_NOTIFY *) pNMHDR; if( pHDN->iButton == 0 ) { if( IsControlPressed() ) SortColumn( pHDN->iItem, MULTI_COLUMN_SORT ); else SortColumn( pHDN->iItem, SINGLE_COLUMN_SORT ); } *pResult = 0; }
BOOL CListCtrl_Sortable::OnHeaderClick(NMHDR* pNMHDR, LRESULT* pResult) { NMLISTVIEW* pLV = reinterpret_cast<NMLISTVIEW*>(pNMHDR); SetFocus(); // Ensure other controls gets kill-focus int colIndex = pLV->iSubItem; if (m_SortCol==colIndex) { m_Ascending = !m_Ascending; } else { m_SortCol = colIndex; m_Ascending = true; } if (SortColumn(m_SortCol, m_Ascending)) SetSortArrow(m_SortCol, m_Ascending); *pResult = 0; return FALSE; // Let parent-dialog get chance }
void BaseSqlTableModel::setSort(int column, Qt::SortOrder order) { if (sDebug) { qDebug() << this << "setSort()" << column << order << m_tableColumns; } int trackSourceColumnCount = m_trackSource ? m_trackSource->columnCount() : 0; if (column < 0 || column >= trackSourceColumnCount + m_sortColumns.size() - 1) { // -1 because id column is in both tables qWarning() << "BaseSqlTableModel::setSort invalid column:" << column; return; } // There's no item to sort already, load from Settings last sort if (m_sortColumns.isEmpty()) { QString val = getModelSetting(COLUMNS_SORTING); QTextStream in(&val); while (!in.atEnd()) { int ordI = -1; QString name; in >> name >> ordI; int col = fieldIndex(name); if (col < 0) continue; Qt::SortOrder ord; ord = ordI > 0 ? Qt::AscendingOrder : Qt::DescendingOrder; m_sortColumns << SortColumn(col, ord); } }
void wxExListViewFile::OnIdle(wxIdleEvent& event) { event.Skip(); if ( !IsShown() || GetItemCount() == 0 || !wxConfigBase::Get()->ReadBool("AllowSync", true)) { return; } if (m_ItemNumber < GetItemCount()) { wxExListItem item(this, m_ItemNumber); if ( item.GetFileName().FileExists() && (item.GetFileName().GetStat().GetModificationTime() != GetItemText(m_ItemNumber, _("Modified")) || item.GetFileName().GetStat().IsReadOnly() != item.IsReadOnly()) ) { item.Update(); wxExLogStatus(item.GetFileName(), STAT_SYNC | STAT_FULLPATH); m_ItemUpdated = true; } m_ItemNumber++; } else { m_ItemNumber = 0; if (m_ItemUpdated) { if (wxConfigBase::Get()->ReadBool("List/SortSync", true)) { SortColumn(_("Modified"), SORT_KEEP); } m_ItemUpdated = false; } } if ( IsShown() && GetItemCount() > 0) { CheckSync(); } }
void wxExListViewFile::AddItems() { int flags = 0; if (wxConfigBase::Get()->ReadBool(m_TextAddFiles, true)) { flags |= wxDIR_FILES; } if (wxConfigBase::Get()->ReadBool(m_TextAddRecursive, true)) { flags |= wxDIR_DIRS; } wxExDirWithListView dir( this, wxExConfigFirstOf(m_TextInFolder), wxExConfigFirstOf(m_TextAddWhat), flags); const int old_count = GetItemCount(); dir.FindFiles(); const int added = GetItemCount() - old_count; if (added > 0) { m_ContentsChanged = true; if (wxConfigBase::Get()->ReadBool("List/SortSync", true)) { SortColumn(_("Modified"), SORT_KEEP); } } const wxString text = _("Added") + wxString::Format(" %d ", added) + _("file(s)"); wxLogStatus(text); }
int main(){ string str = "data.txt"; ATTRIBUTE_REC attriRec; strcpy(attriRec.attributeName,"Attribute1"); attriRec.tableID = 12; attriRec.attributeID = 5; attriRec.dataType = INT; attriRec.dataLength = sizeof(int); attriRec.primary = false; attriRec.isCompress = true; attriRec.isSort = false; cout << "AttriRec DATA:" << endl; cout << attriRec.attributeName << " : " << attriRec.tableID << " : " << attriRec.attributeID << endl; SortColumn SC = SortColumn(str, attriRec); SC.exec(); }
void BaseSqlTableModel::setSort(int column, Qt::SortOrder order) { if (sDebug) { qDebug() << this << "setSort()" << column << order; } int trackSourceColumnCount = m_trackSource ? m_trackSource->columnCount() : 0; if (column < 0 || column >= trackSourceColumnCount + m_sortColumns.size() - 1) { // -1 because id column is in both tables qWarning() << "BaseSqlTableModel::setSort invalid column:" << column; return; } if (m_sortColumns.size() > 0 && m_sortColumns.at(0).m_column == column) { // Only the order has changed m_sortColumns.replace(0, SortColumn(column, order)); } else { // Remove column if already in history // As reverse loop to not skip an entry when removing the previous for (int i = m_sortColumns.size() - 1; i >= 0; --i) { if (m_sortColumns.at(i).m_column == column) { m_sortColumns.removeAt(i); break; } } // set new sort as head and shift out old sort m_sortColumns.prepend(SortColumn(column, order)); if (m_sortColumns.size() > kMaxSortColumns) { m_sortColumns.removeLast(); } } // we have two selects for sorting, since keeping the select history // across the two selects is hard, we do this only for the trackSource // this is OK, because the colums of the table are virtual in case of // preview column or individual like playlist track number so that we // do not need the history anyway. // reset the old order by clauses m_trackSourceOrderBy.clear(); m_tableOrderBy.clear(); m_trackSourceSortColumn = 0; m_trackSourceSortOrder = Qt::AscendingOrder; if (column > 0 && column < m_tableColumns.size()) { // Table sorting, no history m_tableOrderBy.append("ORDER BY "); QString field = m_tableColumns[column]; QString sort_field = QString("%1.%2").arg(m_tableName, field); m_tableOrderBy.append(sort_field); #ifdef __SQLITE3__ m_tableOrderBy.append(" COLLATE localeAwareCompare"); #endif m_tableOrderBy.append((order == Qt::AscendingOrder) ? " ASC" : " DESC"); m_sortColumns.clear(); } else if (m_trackSource) { for (int i = 0; i < m_sortColumns.size(); ++i) { SortColumn sc = m_sortColumns.at(i); // TrackSource Sorting, current sort + two from history if (i == 0) { m_trackSourceOrderBy.append("ORDER BY "); } else { // second cycle m_trackSourceOrderBy.append(", "); } QString sort_field; if (sc.m_column == kIdColumn) { sort_field = m_trackSource->columnSortForFieldIndex(kIdColumn); } else { // + 1 to skip id column int ccColumn = sc.m_column - m_tableColumns.size() + 1; sort_field = m_trackSource->columnSortForFieldIndex(ccColumn); if (i == 0) { // first cycle: main sort criteria m_trackSourceSortColumn = ccColumn; m_trackSourceSortOrder = sc.m_order; } } m_trackSourceOrderBy.append(sort_field); #ifdef __SQLITE3__ m_trackSourceOrderBy.append(" COLLATE localeAwareCompare"); #endif m_trackSourceOrderBy.append((sc.m_order == Qt::AscendingOrder) ? " ASC" : " DESC"); //qDebug() << m_trackSourceOrderBy; } } }