Added "Dictionary Order Sorting".

Signed-off-by: Vincent Reher <tde@4reher.org>
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/196/head
Vincent Reher 3 years ago committed by Michele Calgaro
parent 7ad5265f88
commit f44b373d38
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -29,6 +29,7 @@
<Action name="group_hidden_first"/>
<Separator/>
<Action name="sort_caseinsensitive"/>
<Action name="dictionary_order_sorting"/>
<Separator/>
<Action name="alternate_sort_order"/>
<Action name="reverse_sort_order"/>

@ -29,6 +29,7 @@
<Action name="group_hidden_first"/>
<Separator/>
<Action name="sort_caseinsensitive"/>
<Action name="dictionary_order_sorting"/>
<Separator/>
<Action name="alternate_sort_order"/>
<Action name="reverse_sort_order"/>

@ -268,10 +268,6 @@ KonqListView::KonqListView( TQWidget *parentWidget, TQObject *parent, const char
m_mimeTypeResolver = new KMimeTypeResolver<KonqBaseListViewItem,KonqListView>(this);
setXMLFile( xmlFile );
m_displayDirectoriesFirst = true;
m_displayHiddenFirst = true;
m_sortColumnNamePrimary = i18n("FileName");
m_sortColumnIndexPrimary = 0;
m_sortColumnIndexAlternate = 1;
@ -645,17 +641,21 @@ void KonqListView::slotSortReverse()
void KonqListView::slotToggleDisplayDirectoriesFirst()
{
m_displayDirectoriesFirst = !m_displayDirectoriesFirst;
m_pProps->setDirsFirst( m_displayDirectoriesFirst );
m_pProps->setDirsFirst( m_paDisplayDirectoriesFirst->isChecked() );
m_pListView->updateListContents();
m_pListView->sort();
}
void KonqListView::slotToggleDisplayHiddenFirst()
{
m_displayHiddenFirst = !m_displayHiddenFirst;
m_pProps->setHiddenFirst(m_displayHiddenFirst);
m_pProps->setHiddenFirst( m_paDisplayHiddenFirst->isChecked() );
m_pListView->updateListContents();
m_pListView->sort();
}
void KonqListView::slotToggleSortDictionaryOrder()
{
m_pProps->setDictionaryOrder( m_paSortDictionaryOrder->isChecked() );
m_pListView->updateListContents();
m_pListView->sort();
}
@ -813,11 +813,15 @@ void KonqListView::setupActions()
m_paDisplayDirectoriesFirst = new TDEToggleAction( i18n("Group &Directories First"), 0, this,
TQT_SLOT(slotToggleDisplayDirectoriesFirst()), actionCollection(), "group_directories_first");
m_paDisplayDirectoriesFirst->setChecked(true);
m_paDisplayDirectoriesFirst->setChecked(m_pProps->isHiddenFirst());
m_paDisplayHiddenFirst = new TDEToggleAction( i18n("Group &Hidden First"), 0, this,
TQT_SLOT(slotToggleDisplayHiddenFirst()), actionCollection(), "group_hidden_first");
m_paDisplayHiddenFirst->setChecked(true);
m_paDisplayHiddenFirst->setChecked(m_pProps->isHiddenFirst());
m_paSortDictionaryOrder = new TDEToggleAction( i18n("Dictionary Order Sort"), 0, this,
TQT_SLOT(slotToggleSortDictionaryOrder()), actionCollection(), "dictionary_order_sorting");
m_paSortDictionaryOrder->setChecked(m_pProps->isDictionaryOrder());
newIconSize( TDEIcon::SizeSmall /* default size */ );
}

@ -134,6 +134,7 @@ protected slots:
void slotToggleDisplayDirectoriesFirst();
void slotToggleDisplayHiddenFirst();
void slotToggleSortDictionaryOrder();
void slotSortAlternate();
void slotSortReverse();
@ -162,10 +163,6 @@ private:
TQString m_sortColumnNameAlternate;
int m_sortColumnIndexAlternate;
// Default sorting order is .hidden_dirs < dirs < .hidden_files < files
// These variables are used to allow user control over these groupings
bool m_displayDirectoriesFirst;
bool m_displayHiddenFirst;
void sortListView(uint which);
@ -201,6 +198,7 @@ private:
TDEToggleAction *m_paDisplayDirectoriesFirst;
TDEToggleAction *m_paDisplayHiddenFirst;
TDEToggleAction *m_paSortDictionaryOrder;
};
class ListViewBrowserExtension : public KonqDirPartBrowserExtension

@ -84,8 +84,9 @@ void KonqListViewItem::updateContents()
// Set the text of each column
setText( 0, m_fileitem->text() );
bool m_displayDirectoriesFirst = m_pListViewWidget->m_pBrowserView->m_displayDirectoriesFirst;
bool m_displayHiddenFirst = m_pListViewWidget->m_pBrowserView->m_displayHiddenFirst;
bool m_displayDirectoriesFirst = m_pListViewWidget->m_pBrowserView->m_pProps->isDirsFirst();
bool m_displayHiddenFirst = m_pListViewWidget->m_pBrowserView->m_pProps->isHiddenFirst();
bool m_sortDictionaryOrder = m_pListViewWidget->m_pBrowserView->m_pProps->isDictionaryOrder();
// The original TDE order is: .dir (0), dir (1), .file (2), file (3)
@ -97,6 +98,24 @@ void KonqListViewItem::updateContents()
if ( m_displayHiddenFirst && m_fileitem->text()[0] == '.' )
--sortChar;
sortString = text(0);
if (m_sortDictionaryOrder)
{
/*
* Objective is to ignore non-alphnumeric leading characters
* but append them as trailing characters to ensure that there
* is a predictable collation of what might be otherwise end up
* being identical strings. Example: a, " a" b, +a, ~a will end
* up sorting to a, +a, " a", ~a, b
*/
TQChar our1stChar = sortString[0];
if (!our1stChar.isLetterOrNumber() && sortString.length() > 1)
{
sortString.append(our1stChar);
sortString.remove(0, 1);
}
}
//now we have the first column, so let's do the rest
int numExtra = 1;
@ -304,9 +323,9 @@ int KonqBaseListViewItem::compare( TQListViewItem* item, int col, bool ascending
}
}
if ( m_pListViewWidget->caseInsensitiveSort() )
return text( col ).lower().localeAwareCompare( k->text( col ).lower() );
return sortString.lower().localeAwareCompare( k->sortString.lower() );
else {
return m_pListViewWidget->m_pSettings->caseSensitiveCompare( text( col ), k->text( col ) );
return m_pListViewWidget->m_pSettings->caseSensitiveCompare( sortString, k->sortString );
}
}

@ -68,6 +68,7 @@ class KonqBaseListViewItem : public TDEListViewItem
protected:
short int sortChar;
TQString sortString;
bool m_bDisabled;
bool m_bActive;

@ -18,6 +18,7 @@
<Action name="group_hidden_first"/>
<Separator/>
<Action name="sort_caseinsensitive"/>
<Action name="dictionary_order_sorting"/>
<Separator/>
<Action name="alternate_sort_order"/>
<Action name="reverse_sort_order"/>

@ -29,6 +29,7 @@
<Action name="group_hidden_first"/>
<Separator/>
<Action name="sort_caseinsensitive"/>
<Action name="dictionary_order_sorting"/>
<Separator/>
<Action name="alternate_sort_order"/>
<Action name="reverse_sort_order"/>

@ -67,6 +67,7 @@ struct KonqPropsView::Private
TQStringList* previewsToShow;
bool previewsEnabled:1;
bool caseInsensitiveSort:1;
bool dictionaryorder:1;
bool hiddenfirst:1;
bool dirsfirst:1;
bool descending:1;
@ -91,8 +92,9 @@ KonqPropsView::KonqPropsView( TDEInstance * instance, KonqPropsView * defaultPro
m_iIconSize = config->readNumEntry( "IconSize", 0 );
m_iItemTextPos = config->readNumEntry( "ItemTextPos", TQIconView::Bottom );
d->sortcriterion = config->readEntry( "SortingCriterion", "sort_nci" );
d->dirsfirst = config->readBoolEntry( "SortDirsFirst", true );
d->hiddenfirst = config->readBoolEntry( "SortHiddenFirst", true );
d->dirsfirst = config->readBoolEntry( "GroupDirsFirst", true );
d->hiddenfirst = config->readBoolEntry( "GroupHiddenFirst", true );
d->dictionaryorder = config->readBoolEntry( "DictionaryOrderSort", false );
d->descending = config->readBoolEntry( "SortDescending", false );
m_bShowDot = config->readBoolEntry( "ShowDotFiles", false );
m_bShowDirectoryOverlays = config->readBoolEntry( "ShowDirectoryOverlays", false );
@ -150,6 +152,11 @@ bool KonqPropsView::isHiddenFirst() const
return d->hiddenfirst;
}
bool KonqPropsView::isDictionaryOrder() const
{
return d->dictionaryorder;
}
bool KonqPropsView::isDescending() const
{
return d->descending;
@ -207,6 +214,8 @@ bool KonqPropsView::enterDir( const KURL & dir )
m_iItemTextPos = m_defaultProps->itemTextPos();
d->sortcriterion = m_defaultProps->sortCriterion();
d->dirsfirst = m_defaultProps->isDirsFirst();
d->hiddenfirst = m_defaultProps->isHiddenFirst();
d->dictionaryorder = m_defaultProps->isDictionaryOrder();
d->descending = m_defaultProps->isDescending();
m_bShowDot = m_defaultProps->isShowingDotFiles();
d->caseInsensitiveSort=m_defaultProps->isCaseInsensitiveSort();
@ -225,7 +234,9 @@ bool KonqPropsView::enterDir( const KURL & dir )
m_iIconSize = config->readNumEntry( "IconSize", m_iIconSize );
m_iItemTextPos = config->readNumEntry( "ItemTextPos", m_iItemTextPos );
d->sortcriterion = config->readEntry( "SortingCriterion" , d->sortcriterion );
d->dirsfirst = config->readBoolEntry( "SortDirsFirst", d->dirsfirst );
d->dirsfirst = config->readBoolEntry( "GroupDirsFirst", d->dirsfirst );
d->hiddenfirst = config->readBoolEntry( "GroupHiddenFirst", d->hiddenfirst );
d->dictionaryorder = config->readBoolEntry( "DictionaryOrderSort", d->dictionaryorder );
d->descending = config->readBoolEntry( "SortDescending", d->descending );
m_bShowDot = config->readBoolEntry( "ShowDotFiles", m_bShowDot );
d->caseInsensitiveSort=config->readBoolEntry("CaseInsensitiveSort",d->caseInsensitiveSort);
@ -330,7 +341,7 @@ void KonqPropsView::setDirsFirst( bool first)
else if (currentConfig())
{
TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
currentConfig()->writeEntry( "SortDirsFirst", d->dirsfirst );
currentConfig()->writeEntry( "GroupDirsFirst", d->dirsfirst );
currentConfig()->sync();
}
}
@ -343,7 +354,19 @@ void KonqPropsView::setHiddenFirst(bool first)
else if (currentConfig())
{
TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
currentConfig()->writeEntry( "SortHiddenFirst", d->hiddenfirst );
currentConfig()->writeEntry( "GroupHiddenFirst", d->hiddenfirst );
currentConfig()->sync();
}
}
void KonqPropsView::setDictionaryOrder(bool first)
{
d->dictionaryorder = first;
if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
m_defaultProps->setDictionaryOrder( first );
else if (currentConfig())
{
TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
currentConfig()->writeEntry( "DictionaryOrderSort", d->dictionaryorder );
currentConfig()->sync();
}
}

@ -96,6 +96,9 @@ public:
void setHiddenFirst ( bool first );
bool isHiddenFirst() const;
void setDictionaryOrder ( bool first );
bool isDictionaryOrder() const;
void setDescending (bool descending);
bool isDescending() const;

Loading…
Cancel
Save