diff options
Diffstat (limited to 'konqueror/listview')
21 files changed, 595 insertions, 199 deletions
diff --git a/konqueror/listview/CMakeLists.txt b/konqueror/listview/CMakeLists.txt index dd60407da..01fc5f0ec 100644 --- a/konqueror/listview/CMakeLists.txt +++ b/konqueror/listview/CMakeLists.txt @@ -45,10 +45,10 @@ install( FILES konq_listview.kcfg DESTINATION ${KCFG_INSTALL_DIR} ) set( target konq_listview ) set( ${target}_SRCS - konq_listview.cc konq_listviewwidget.cc konq_listviewitems.cc - konq_treeviewwidget.cc konq_treeviewitem.cc konq_textviewwidget.cc - konq_textviewitem.cc konq_infolistviewwidget.cc - konq_infolistviewitem.cc konq_listviewsettings.kcfgc + konq_listview.cpp konq_listviewwidget.cpp konq_listviewitems.cpp + konq_treeviewwidget.cpp konq_treeviewitem.cpp konq_textviewwidget.cpp + konq_textviewitem.cpp konq_infolistviewwidget.cpp + konq_infolistviewitem.cpp konq_listviewsettings.kcfgc ) tde_add_kpart( ${target} AUTOMOC diff --git a/konqueror/listview/Makefile.am b/konqueror/listview/Makefile.am index 91dd33a10..c190de7df 100644 --- a/konqueror/listview/Makefile.am +++ b/konqueror/listview/Makefile.am @@ -5,11 +5,11 @@ kde_module_LTLIBRARIES = konq_listview.la METASOURCES = AUTO -konq_listview_la_SOURCES = konq_listview.cc \ - konq_listviewwidget.cc konq_listviewitems.cc \ - konq_treeviewwidget.cc konq_treeviewitem.cc \ - konq_textviewwidget.cc konq_textviewitem.cc \ - konq_infolistviewwidget.cc konq_infolistviewitem.cc \ +konq_listview_la_SOURCES = konq_listview.cpp \ + konq_listviewwidget.cpp konq_listviewitems.cpp \ + konq_treeviewwidget.cpp konq_treeviewitem.cpp \ + konq_textviewwidget.cpp konq_textviewitem.cpp \ + konq_infolistviewwidget.cpp konq_infolistviewitem.cpp \ konq_listviewsettings.kcfgc konq_listview_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module diff --git a/konqueror/listview/konq_detailedlistview.rc b/konqueror/listview/konq_detailedlistview.rc index 593e7f027..06c9bc318 100644 --- a/konqueror/listview/konq_detailedlistview.rc +++ b/konqueror/listview/konq_detailedlistview.rc @@ -1,5 +1,5 @@ <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> -<kpartgui name="KonqDetailedListView" version="11"> +<kpartgui name="KonqDetailedListView" version="13"> <MenuBar> <Menu name="edit"><text>&Edit</text> <Menu name="selection"><text>Selection</text> @@ -24,8 +24,17 @@ </Menu> <Separator/> <Action name="show_dot"/> - <Action name="sort_caseinsensitive"/> - <!--<Action name="sort_directoriesfirst" /> TODO --> + <Menu name="sort"><text>&Sort</text> + <Action name="order_unicode_based"/> + <Action name="order_unicode_based_case_insensitive"/> + <Action name="order_locale_based"/> + <Separator/> + <Action name="group_directories_first"/> + <Action name="group_hidden_first"/> + <Separator/> + <Action name="alternate_sort_order"/> + <Action name="reverse_sort_order"/> + </Menu> <Menu name="listview_show"><text>Show Details</text> <TearOffHandle /> <Action name="show_size"/> diff --git a/konqueror/listview/konq_infolistview.rc b/konqueror/listview/konq_infolistview.rc index 280b2d0ce..60f511b1f 100644 --- a/konqueror/listview/konq_infolistview.rc +++ b/konqueror/listview/konq_infolistview.rc @@ -1,5 +1,5 @@ <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> -<kpartgui name="KonqInfoListView" version="12"> +<kpartgui name="KonqInfoListView" version="14"> <MenuBar> <Menu name="edit"><text>&Edit</text> <Menu name="selection"><text>Selection</text> @@ -24,8 +24,17 @@ </Menu> <Separator/> <Action name="show_dot"/> - <Action name="sort_caseinsensitive"/> - <!--<Action name="sort_directoriesfirst" /> TODO --> + <Menu name="sort"><text>&Sort</text> + <Action name="order_unicode_based"/> + <Action name="order_unicode_based_case_insensitive"/> + <Action name="order_locale_based"/> + <Separator/> + <Action name="group_directories_first"/> + <Action name="group_hidden_first"/> + <Separator/> + <Action name="alternate_sort_order"/> + <Action name="reverse_sort_order"/> + </Menu> <Action name="view_as"/> <Separator/> <Action name="bgsettings"/> diff --git a/konqueror/listview/konq_infolistviewitem.cc b/konqueror/listview/konq_infolistviewitem.cpp index 18efb3f8f..f945333b8 100644 --- a/konqueror/listview/konq_infolistviewitem.cc +++ b/konqueror/listview/konq_infolistviewitem.cpp @@ -218,7 +218,7 @@ void KonqInfoListViewItem::paintCell( TQPainter *_painter, const TQColorGroup & cg.setColor( TQColorGroup::Text, m_pListViewWidget->itemColor() ); TDEListView *lv = static_cast< TDEListView* >( listView() ); - const TQPixmap *pm = TQT_TQPIXMAP_CONST(lv->viewport()->paletteBackgroundPixmap()); + const TQPixmap *pm = lv->viewport()->paletteBackgroundPixmap(); if ( _column == 0 && isSelected() && !lv->allColumnsShowFocus() ) { int newWidth = width( lv->fontMetrics(), lv, _column ); diff --git a/konqueror/listview/konq_infolistviewwidget.cc b/konqueror/listview/konq_infolistviewwidget.cpp index e835f1cb3..8ec62c79a 100644 --- a/konqueror/listview/konq_infolistviewwidget.cc +++ b/konqueror/listview/konq_infolistviewwidget.cpp @@ -37,8 +37,8 @@ KonqInfoListViewWidget::KonqInfoListViewWidget( KonqListView* parent, { m_metaInfoJob = 0; - m_mtSelector = new TDESelectAction(i18n("View &As"), 0, TQT_TQOBJECT(this), - TQT_SLOT(slotSelectMimeType()), + m_mtSelector = new TDESelectAction(i18n("View &As"), 0, this, + TQ_SLOT(slotSelectMimeType()), parent->actionCollection(), "view_as" ); kdDebug(1203) << "created info list view\n"; @@ -237,10 +237,10 @@ void KonqInfoListViewWidget::slotNewItems( const KFileItemList& list) else { m_metaInfoJob = TDEIO::fileMetaInfo(list); - connect( m_metaInfoJob, TQT_SIGNAL( gotMetaInfo( const KFileItem*)), - this, TQT_SLOT( slotMetaInfo( const KFileItem*))); - connect( m_metaInfoJob, TQT_SIGNAL( result( TDEIO::Job*)), - this, TQT_SLOT( slotMetaInfoResult())); + connect( m_metaInfoJob, TQ_SIGNAL( gotMetaInfo( const KFileItem*)), + this, TQ_SLOT( slotMetaInfo( const KFileItem*))); + connect( m_metaInfoJob, TQ_SIGNAL( result( TDEIO::Job*)), + this, TQ_SLOT( slotMetaInfoResult())); } } @@ -257,10 +257,10 @@ void KonqInfoListViewWidget::slotRefreshItems( const KFileItemList& list) else { m_metaInfoJob = TDEIO::fileMetaInfo(list); - connect( m_metaInfoJob, TQT_SIGNAL( gotMetaInfo( const KFileItem*)), - this, TQT_SLOT( slotMetaInfo( const KFileItem*))); - connect( m_metaInfoJob, TQT_SIGNAL( result( TDEIO::Job*)), - this, TQT_SLOT( slotMetaInfoResult())); + connect( m_metaInfoJob, TQ_SIGNAL( gotMetaInfo( const KFileItem*)), + this, TQ_SLOT( slotMetaInfo( const KFileItem*))); + connect( m_metaInfoJob, TQ_SIGNAL( result( TDEIO::Job*)), + this, TQ_SLOT( slotMetaInfoResult())); } KonqBaseListViewWidget::slotRefreshItems(list); } @@ -313,10 +313,10 @@ void KonqInfoListViewWidget::slotMetaInfoResult() else { m_metaInfoJob = TDEIO::fileMetaInfo(m_metaInfoTodo); - connect( m_metaInfoJob, TQT_SIGNAL( gotMetaInfo( const KFileItem*)), - this, TQT_SLOT( slotMetaInfo( const KFileItem*))); - connect( m_metaInfoJob, TQT_SIGNAL( result( TDEIO::Job*)), - this, TQT_SLOT( slotMetaInfoResult())); + connect( m_metaInfoJob, TQ_SIGNAL( gotMetaInfo( const KFileItem*)), + this, TQ_SLOT( slotMetaInfo( const KFileItem*))); + connect( m_metaInfoJob, TQ_SIGNAL( result( TDEIO::Job*)), + this, TQ_SLOT( slotMetaInfoResult())); m_metaInfoTodo.clear(); } } diff --git a/konqueror/listview/konq_infolistviewwidget.h b/konqueror/listview/konq_infolistviewwidget.h index 258a20090..07cede196 100644 --- a/konqueror/listview/konq_infolistviewwidget.h +++ b/konqueror/listview/konq_infolistviewwidget.h @@ -35,7 +35,7 @@ class TDESelectAction; class KonqInfoListViewWidget : public KonqBaseListViewWidget { // friend class KonqTextViewItem; - Q_OBJECT + TQ_OBJECT public: KonqInfoListViewWidget( KonqListView *parent, TQWidget *parentWidget ); ~KonqInfoListViewWidget(); diff --git a/konqueror/listview/konq_listview.cc b/konqueror/listview/konq_listview.cpp index 67da49c6d..6a0d58973 100644 --- a/konqueror/listview/konq_listview.cc +++ b/konqueror/listview/konq_listview.cpp @@ -48,6 +48,8 @@ #include <unistd.h> #include <kinstance.h> +#include <konq_sort_constants.h> + KonqListViewFactory::KonqListViewFactory() { s_instance = 0; @@ -268,6 +270,8 @@ KonqListView::KonqListView( TQWidget *parentWidget, TQObject *parent, const char m_mimeTypeResolver = new KMimeTypeResolver<KonqBaseListViewItem,KonqListView>(this); setXMLFile( xmlFile ); + m_sortColumnIndexPrimary = 0; + m_sortColumnIndexAlternate = 1; setupActions(); @@ -285,21 +289,20 @@ KonqListView::KonqListView( TQWidget *parentWidget, TQObject *parent, const char // Note: File Type is in fact the mimetype comment. We use UDS_FILE_TYPE but that's not what we show in fact :/ m_pListView->confColumns[10].setData(I18N_NOOP("File Type"),"Type",TDEIO::UDS_FILE_TYPE,m_paShowType); + connect( m_pListView, TQ_SIGNAL( selectionChanged() ), + m_extension, TQ_SLOT( updateActions() ) ); + connect( m_pListView, TQ_SIGNAL( selectionChanged() ), + this, TQ_SLOT( slotSelectionChanged() ) ); - connect( m_pListView, TQT_SIGNAL( selectionChanged() ), - m_extension, TQT_SLOT( updateActions() ) ); - connect( m_pListView, TQT_SIGNAL( selectionChanged() ), - this, TQT_SLOT( slotSelectionChanged() ) ); - - connect( m_pListView, TQT_SIGNAL( currentChanged(TQListViewItem*) ), - m_extension, TQT_SLOT( updateActions() ) ); - connect(m_pListView->header(),TQT_SIGNAL(indexChange(int,int,int)),this,TQT_SLOT(headerDragged(int,int,int))); - connect(m_pListView->header(),TQT_SIGNAL(clicked(int)),this,TQT_SLOT(slotHeaderClicked(int))); - connect(m_pListView->header(),TQT_SIGNAL(sizeChange(int,int,int)),TQT_SLOT(slotHeaderSizeChanged())); + connect( m_pListView, TQ_SIGNAL( currentChanged(TQListViewItem*) ), + m_extension, TQ_SLOT( updateActions() ) ); + connect(m_pListView->header(),TQ_SIGNAL(indexChange(int,int,int)),this,TQ_SLOT(headerDragged(int,int,int))); + connect(m_pListView->header(),TQ_SIGNAL(clicked(int)),this,TQ_SLOT(slotHeaderClicked(int))); + connect(m_pListView->header(),TQ_SIGNAL(sizeChange(int,int,int)),TQ_SLOT(slotHeaderSizeChanged())); // signals from konqdirpart (for BC reasons) - connect( this, TQT_SIGNAL( findOpened( KonqDirPart * ) ), TQT_SLOT( slotKFindOpened() ) ); - connect( this, TQT_SIGNAL( findClosed( KonqDirPart * ) ), TQT_SLOT( slotKFindClosed() ) ); + connect( this, TQ_SIGNAL( findOpened( KonqDirPart * ) ), TQ_SLOT( slotKFindOpened() ) ); + connect( this, TQ_SIGNAL( findClosed( KonqDirPart * ) ), TQ_SLOT( slotKFindClosed() ) ); loadPlugins( this, this, instance() ); } @@ -538,6 +541,9 @@ void KonqListView::slotColumnToggled() // Update column sizes slotHeaderSizeChanged(); + + // Columns may have been rearranged, so do this to be safe: + resetSortConfig(); } void KonqListView::slotHeaderClicked(int sec) @@ -560,21 +566,230 @@ void KonqListView::slotHeaderClicked(int sec) m_pListView->setAscending(TRUE); } else + { m_pListView->setAscending(!m_pListView->ascending()); + } + checkSortConfig() ; KonqListViewSettings config( m_pListView->url().protocol() ); config.readConfig(); + + if (sec == m_sortColumnIndexPrimary) { + kdDebug(1202)<<"Changing sort order on primary sort column"<<endl; + m_sortColumnOrderPrimary = m_pListView->ascending(); + config.setPrimarySortOrder(m_pListView->ascending()); + } + else if (sec == m_sortColumnIndexAlternate) { + kdDebug(1202)<<"Changing sort order on alternate sort column"<<endl; + m_sortColumnOrderAlternate = m_pListView->ascending(); + config.setAlternateSortOrder(m_pListView->ascending()); + } + else if ( toggleColumnAlternate ) { + kdDebug(1202)<<"Setting new alternate sort column"<<endl; + m_sortColumnNameAlternate = nameOfSortColumn; + m_sortColumnIndexAlternate = sec; + m_sortColumnOrderAlternate = true; + config.setAlternateSortCol(nameOfSortColumn); + config.setAlternateSortIndex(sec); + config.setAlternateSortOrder(true); + toggleColumnAlternate = false; + } + else { + kdDebug(1202)<<"Setting new primary sort column"<<endl; + m_sortColumnNamePrimary = nameOfSortColumn; + m_sortColumnIndexPrimary = sec; + m_sortColumnOrderPrimary = true; + config.setPrimarySortCol(nameOfSortColumn); + config.setPrimarySortIndex(sec); + config.setPrimarySortOrder(true); + toggleColumnAlternate = true; + } + config.setSortBy( nameOfSortColumn ); config.setSortOrder( m_pListView->ascending() ); config.writeConfig(); } +void KonqListView::resetSortConfig() +{ + int defaultVisibleColumn; + int columnNumber; + + defaultVisibleColumn = 0; // First visible column from left + columnNumber = -1; + for (uint i = 0; i < m_pListView->NumberOfAtoms; i++) { + if (m_pListView->confColumns[i].displayInColumn == defaultVisibleColumn) { + columnNumber = i; + } + } + if (columnNumber == -1) { + // This should not happen! + kdDebug() << "We did not find columnNumber" <<endl; + m_sortColumnIndexPrimary = 0; + m_sortColumnNamePrimary = "FileName"; + } + else { + m_sortColumnIndexPrimary = defaultVisibleColumn; + m_sortColumnNamePrimary = m_pListView->confColumns[columnNumber].desktopFileName; + } + + defaultVisibleColumn = 1 ; // Second visible column from left + columnNumber = -1; + for (uint i = 0; i < m_pListView->NumberOfAtoms; i++) { + if (m_pListView->confColumns[i].displayInColumn == defaultVisibleColumn) { + columnNumber = i; + } + } + if (columnNumber == -1) { + // This should not happen! + kdDebug() << "We did not find columnNumber" <<endl; + m_sortColumnIndexAlternate = 0; + m_sortColumnNameAlternate = "FileName"; + } + else { + m_sortColumnIndexAlternate = defaultVisibleColumn; + m_sortColumnNameAlternate=m_pListView->confColumns[columnNumber].desktopFileName; + } + + m_sortColumnOrderPrimary = true ; + m_sortColumnOrderAlternate = true ; + + kdDebug(1202) << "Initialized m_sortColumnIndexPrimary to " <<m_sortColumnIndexPrimary <<endl; + kdDebug(1202) << "Initialized m_sortColumnNamePrimary to " <<m_sortColumnNamePrimary <<endl; + kdDebug(1202) << "Initialized m_sortColumnIndexAlternate to " <<m_sortColumnIndexAlternate <<endl; + kdDebug(1202) << "Initialized m_sortColumnNameAlternate to " <<m_sortColumnNameAlternate <<endl; + + KonqListViewSettings config( m_pListView->url().protocol() ); + config.setPrimarySortCol(m_sortColumnNamePrimary); + config.setPrimarySortIndex(m_sortColumnIndexPrimary); + config.setPrimarySortOrder(m_sortColumnOrderPrimary); + config.setAlternateSortCol(m_sortColumnNameAlternate); + config.setAlternateSortIndex(m_sortColumnIndexAlternate); + config.setAlternateSortOrder(m_sortColumnOrderAlternate); + config.writeConfig() ; +} + +void KonqListView::checkSortConfig() +{ + KonqListViewSettings config( m_pListView->url().protocol() ); + config.readConfig(); + + m_sortColumnIndexPrimary = config.primarySortIndex(); + m_sortColumnNamePrimary = config.primarySortCol(); + m_sortColumnOrderPrimary = config.primarySortOrder(); + + m_sortColumnIndexAlternate = config.alternateSortIndex(); + m_sortColumnNameAlternate = config.alternateSortCol(); + m_sortColumnOrderAlternate = config.alternateSortOrder(); + + if (m_sortColumnIndexPrimary >= 0 && m_sortColumnIndexAlternate >= 0) + return ; + + resetSortConfig(); +} + +#define LV_SORT_CHANGE_COLUMN 1 +#define LV_SORT_CHANGE_ORDER 2 + +void KonqListView::sortListView(uint which) +{ + TQString sortColumnNameCurrent = m_pListView->sortedByColumn; + if (sortColumnNameCurrent == "" ) { + sortColumnNameCurrent = "FileName" ; + m_pListView->sortedByColumn = sortColumnNameCurrent ; + } + TQString sortColumnNameNext; + int sortColumnIndex; + bool sortOrder; + + checkSortConfig() ; + KonqListViewSettings config( m_pListView->url().protocol() ); + config.readConfig(); + + switch (which) + { + case LV_SORT_CHANGE_COLUMN: + if (m_sortColumnNamePrimary == sortColumnNameCurrent) + { + sortColumnNameNext = m_sortColumnNameAlternate; + sortColumnIndex = m_sortColumnIndexAlternate; + sortOrder = m_sortColumnOrderAlternate; + kdDebug(1202) << "Changing sort column to alternate"<<endl ; + } + else + { + sortColumnNameNext = m_sortColumnNamePrimary; + sortColumnIndex = m_sortColumnIndexPrimary; + sortOrder = m_sortColumnOrderPrimary; + kdDebug(1202) << "Changing sort column to primary"<<endl ; + } + m_pListView->setSorting( sortColumnIndex, sortOrder ); + m_pListView->sortedByColumn = sortColumnNameNext; + config.setSortBy( sortColumnNameNext ); + break; + + case LV_SORT_CHANGE_ORDER: + sortOrder = !m_pListView->ascending(); + + if ( m_sortColumnNamePrimary == sortColumnNameCurrent ) + { + sortColumnIndex = m_sortColumnIndexPrimary; + m_sortColumnOrderPrimary = sortOrder; + config.setPrimarySortOrder( sortOrder ); + kdDebug(1202) << "Changing sort order of primary"<<endl ; + } + else + { + sortColumnIndex = m_sortColumnIndexAlternate; + m_sortColumnOrderAlternate = sortOrder ; + config.setAlternateSortOrder( sortOrder ) ; + kdDebug(1202) << "Changing sort order of alternate"<<endl ; + } + m_pListView->setAscending(sortOrder) ; + config.setSortOrder(sortOrder); + m_pListView->setSorting( sortColumnIndex, sortOrder ); + break; + + default: + // Do nothing in case of invalid call + return; + } + + m_pListView->sort(); + + config.writeConfig(); +} + +void KonqListView::slotSortAlternate() +{ + KonqListView::sortListView(LV_SORT_CHANGE_COLUMN); +} + +void KonqListView::slotSortReverse() +{ + KonqListView::sortListView(LV_SORT_CHANGE_ORDER); +} + +void KonqListView::slotToggleDisplayDirectoriesFirst() +{ + m_pProps->setDirsFirst( m_paDisplayDirectoriesFirst->isChecked() ); + m_pListView->updateListContents(); + m_pListView->sort(); +} + +void KonqListView::slotToggleDisplayHiddenFirst() +{ + m_pProps->setHiddenFirst( m_paDisplayHiddenFirst->isChecked() ); + m_pListView->updateListContents(); + m_pListView->sort(); +} + void KonqListView::headerDragged(int sec, int from, int to) { kdDebug(1202)<<"section: "<<sec<<" fromIndex: "<<from<<" toIndex "<<to<<endl; //at this point the columns aren't moved yet, so I let the listview //rearrange the stuff and use a single shot timer - TQTimer::singleShot(200,this,TQT_SLOT(slotSaveAfterHeaderDrag())); + TQTimer::singleShot(200,this,TQ_SLOT(slotSaveAfterHeaderDrag())); } const KFileItem * KonqListView::currentItem() @@ -609,6 +824,9 @@ void KonqListView::slotSaveAfterHeaderDrag() // Update column sizes slotHeaderSizeChanged(); + + // Columns were rearranged, so do this to be safe: + resetSortConfig(); } void KonqListView::slotSaveColumnWidths() @@ -645,7 +863,7 @@ void KonqListView::slotHeaderSizeChanged() if ( !m_headerTimer ) { m_headerTimer = new TQTimer( this ); - connect( m_headerTimer, TQT_SIGNAL( timeout() ), this, TQT_SLOT( slotSaveColumnWidths() ) ); + connect( m_headerTimer, TQ_SIGNAL( timeout() ), this, TQ_SLOT( slotSaveColumnWidths() ) ); } else m_headerTimer->stop(); @@ -667,33 +885,33 @@ void KonqListView::slotKFindClosed() void KonqListView::setupActions() { - m_paShowTime=new TDEToggleAction(i18n("Show &Modification Time"), 0,this, TQT_SLOT(slotColumnToggled()), actionCollection(), "show_time" ); + m_paShowTime=new TDEToggleAction(i18n("Show &Modification Time"), 0,this, TQ_SLOT(slotColumnToggled()), actionCollection(), "show_time" ); m_paShowTime->setCheckedState(i18n("Hide &Modification Time")); - m_paShowType=new TDEToggleAction(i18n("Show &File Type"), 0, this, TQT_SLOT(slotColumnToggled()),actionCollection(), "show_type" ); + m_paShowType=new TDEToggleAction(i18n("Show &File Type"), 0, this, TQ_SLOT(slotColumnToggled()),actionCollection(), "show_type" ); m_paShowType->setCheckedState(i18n("Hide &File Type")); - m_paShowMimeType=new TDEToggleAction(i18n("Show MimeType"), 0, this, TQT_SLOT(slotColumnToggled()),actionCollection(), "show_mimetype" ); + m_paShowMimeType=new TDEToggleAction(i18n("Show MimeType"), 0, this, TQ_SLOT(slotColumnToggled()),actionCollection(), "show_mimetype" ); m_paShowMimeType->setCheckedState(i18n("Hide MimeType")); - m_paShowAccessTime=new TDEToggleAction(i18n("Show &Access Time"), 0, this, TQT_SLOT(slotColumnToggled()),actionCollection(), "show_access_time" ); + m_paShowAccessTime=new TDEToggleAction(i18n("Show &Access Time"), 0, this, TQ_SLOT(slotColumnToggled()),actionCollection(), "show_access_time" ); m_paShowAccessTime->setCheckedState(i18n("Hide &Access Time")); - m_paShowCreateTime=new TDEToggleAction(i18n("Show &Creation Time"), 0, this, TQT_SLOT(slotColumnToggled()),actionCollection(), "show_creation_time" ); + m_paShowCreateTime=new TDEToggleAction(i18n("Show &Creation Time"), 0, this, TQ_SLOT(slotColumnToggled()),actionCollection(), "show_creation_time" ); m_paShowCreateTime->setCheckedState(i18n("Hide &Creation Time")); - m_paShowLinkDest=new TDEToggleAction(i18n("Show &Link Destination"), 0, this, TQT_SLOT(slotColumnToggled()),actionCollection(), "show_link_dest" ); + m_paShowLinkDest=new TDEToggleAction(i18n("Show &Link Destination"), 0, this, TQ_SLOT(slotColumnToggled()),actionCollection(), "show_link_dest" ); m_paShowLinkDest->setCheckedState(i18n("Hide &Link Destination")); - m_paShowSize=new TDEToggleAction(i18n("Show Filesize"), 0, this, TQT_SLOT(slotColumnToggled()),actionCollection(), "show_size" ); + m_paShowSize=new TDEToggleAction(i18n("Show Filesize"), 0, this, TQ_SLOT(slotColumnToggled()),actionCollection(), "show_size" ); m_paShowSize->setCheckedState(i18n("Hide Filesize")); - m_paShowOwner=new TDEToggleAction(i18n("Show Owner"), 0, this, TQT_SLOT(slotColumnToggled()),actionCollection(), "show_owner" ); + m_paShowOwner=new TDEToggleAction(i18n("Show Owner"), 0, this, TQ_SLOT(slotColumnToggled()),actionCollection(), "show_owner" ); m_paShowOwner->setCheckedState(i18n("Hide Owner")); - m_paShowGroup=new TDEToggleAction(i18n("Show Group"), 0, this, TQT_SLOT(slotColumnToggled()),actionCollection(), "show_group" ); + m_paShowGroup=new TDEToggleAction(i18n("Show Group"), 0, this, TQ_SLOT(slotColumnToggled()),actionCollection(), "show_group" ); m_paShowGroup->setCheckedState(i18n("Hide Group")); - m_paShowPermissions=new TDEToggleAction(i18n("Show Permissions"), 0, this, TQT_SLOT(slotColumnToggled()),actionCollection(), "show_permissions" ); + m_paShowPermissions=new TDEToggleAction(i18n("Show Permissions"), 0, this, TQ_SLOT(slotColumnToggled()),actionCollection(), "show_permissions" ); m_paShowPermissions->setCheckedState(i18n("Hide Permissions")); - m_paShowURL=new TDEToggleAction(i18n("Show URL"), 0, this, TQT_SLOT(slotColumnToggled()),actionCollection(), "show_url" ); + m_paShowURL=new TDEToggleAction(i18n("Show URL"), 0, this, TQ_SLOT(slotColumnToggled()),actionCollection(), "show_url" ); - m_paSelect = new TDEAction( i18n( "Se&lect..." ), CTRL+Key_Plus, this, TQT_SLOT( slotSelect() ), actionCollection(), "select" ); - m_paUnselect = new TDEAction( i18n( "Unselect..." ), CTRL+Key_Minus, this, TQT_SLOT( slotUnselect() ), actionCollection(), "unselect" ); - m_paSelectAll = KStdAction::selectAll( this, TQT_SLOT( slotSelectAll() ), actionCollection(), "selectall" ); - m_paUnselectAll = new TDEAction( i18n( "Unselect All" ), CTRL+Key_U, this, TQT_SLOT( slotUnselectAll() ), actionCollection(), "unselectall" ); - m_paInvertSelection = new TDEAction( i18n( "&Invert Selection" ), CTRL+Key_Asterisk, this, TQT_SLOT( slotInvertSelection() ), actionCollection(), "invertselection" ); + m_paSelect = new TDEAction( i18n( "Se&lect..." ), CTRL+Key_Plus, this, TQ_SLOT( slotSelect() ), actionCollection(), "select" ); + m_paUnselect = new TDEAction( i18n( "Unselect..." ), CTRL+Key_Minus, this, TQ_SLOT( slotUnselect() ), actionCollection(), "unselect" ); + m_paSelectAll = KStdAction::selectAll( this, TQ_SLOT( slotSelectAll() ), actionCollection(), "selectall" ); + m_paUnselectAll = new TDEAction( i18n( "Unselect All" ), CTRL+Key_U, this, TQ_SLOT( slotUnselectAll() ), actionCollection(), "unselectall" ); + m_paInvertSelection = new TDEAction( i18n( "&Invert Selection" ), CTRL+Key_Asterisk, this, TQ_SLOT( slotInvertSelection() ), actionCollection(), "invertselection" ); // These 2 actions are 'fake' actions. They are defined so that the keyboard shortcuts // can be set from the 'Configure Shortcuts..." dialog. @@ -711,9 +929,53 @@ void KonqListView::setupActions() m_paRenameMovePrev->setToolTip( i18n("Complete rename operation and move the previous item")); m_paRenameMovePrev->setEnabled(false); - m_paShowDot = new TDEToggleAction( i18n( "Show &Hidden Files" ), 0, this, TQT_SLOT( slotShowDot() ), actionCollection(), "show_dot" ); + m_paShowDot = new TDEToggleAction( i18n( "Show &Hidden Files" ), 0, this, TQ_SLOT( slotShowDot() ), actionCollection(), "show_dot" ); // m_paShowDot->setCheckedState(i18n("Hide &Hidden Files")); - m_paCaseInsensitive = new TDEToggleAction(i18n("Case Insensitive Sort"), 0, this, TQT_SLOT(slotCaseInsensitive()),actionCollection(), "sort_caseinsensitive" ); + + m_paCaseInsensitive = new TDEToggleAction(i18n("Case Insensitive Sort"), 0, this, TQ_SLOT(slotCaseInsensitive()),actionCollection(), "sort_caseinsensitive" ); + + m_paSortAlternate = new TDEAction( i18n( "&Alternate Sort Order" ), CTRL+Key_S, this, + TQ_SLOT( slotSortAlternate() ), actionCollection(), "alternate_sort_order"); + m_paSortAlternate->setToolTip( i18n( "Sort by PREVIOUS sort column" ) ); + m_paSortReverse = new TDEAction( i18n( "&Reverse Sort Order" ), CTRL+Key_R, this, + TQ_SLOT( slotSortReverse() ), actionCollection(), "reverse_sort_order"); + m_paSortReverse->setToolTip( i18n( "Reverse sort order of current sort column" ) ); + + /* + Build View->Sort submenu interface to properties + SortOrder, SortDirsFirst & SortHiddenFirst + */ + TextSortOrder initialOrder = m_pProps->getSortOrder(); + + m_paOrderUnicodeUnmodified = new TDEToggleAction( i18n( "&Unicode based" ), ALT+Key_1, this, + TQ_SLOT( slotOrderUnicodeUnmodified() ), actionCollection(), "order_unicode_based" ); + m_paOrderUnicodeUnmodified->setToolTip( i18n( "Strict numeric Unicode based order" ) ); + m_paOrderUnicodeUnmodified->setChecked( initialOrder == UNICODE_UNMODIFIED ); + + m_paOrderUnicodeCaseInsensitive = new TDEToggleAction( i18n( "Unicode based, &case insensitive" ), ALT+Key_2, this, + TQ_SLOT( slotOrderUnicodeCaseInsensitive() ), actionCollection(), "order_unicode_based_case_insensitive" ); + m_paOrderUnicodeCaseInsensitive->setToolTip( i18n( "Unicode based order but with lower/upper case ASCII letters adjacent" ) ); + m_paOrderUnicodeCaseInsensitive->setChecked(initialOrder == UNICODE_CASEINSENSITIVE); + + m_paOrderLocale = new TDEToggleAction( i18n( "&Locale based" ), ALT+Key_3, this, + TQ_SLOT( slotOrderLocale() ), actionCollection(), "order_locale_based" ); + m_paOrderLocale->setToolTip( i18n( "Locale based order, usually \"friendly\"" ) ); + m_paOrderLocale->setChecked(initialOrder == LOCALE_UNMODIFIED); + + // Convert above 3 checkbox menu items into single 3-way radio button menu item + m_paOrderUnicodeUnmodified->setExclusiveGroup( "sortOrder" ); + m_paOrderUnicodeCaseInsensitive->setExclusiveGroup( "sortOrder" ); + m_paOrderLocale->setExclusiveGroup( "sortOrder" ); + + m_paDisplayDirectoriesFirst = new TDEToggleAction( i18n("Group &Directories First"), CTRL+SHIFT+Key_F, this, + TQ_SLOT(slotToggleDisplayDirectoriesFirst()), actionCollection(), "group_directories_first"); + m_paDisplayDirectoriesFirst->setToolTip( i18n( "Always display directories before non-directories" ) ); + m_paDisplayDirectoriesFirst->setChecked(m_pProps->isDirsFirst()); + + m_paDisplayHiddenFirst = new TDEToggleAction( i18n("Group &Hidden First"), CTRL+SHIFT+Key_H, this, + TQ_SLOT(slotToggleDisplayHiddenFirst()), actionCollection(), "group_hidden_first"); + m_paDisplayHiddenFirst->setToolTip( i18n( "Always display hidden files before non-hidden files" ) ); + m_paDisplayHiddenFirst->setChecked(m_pProps->isHiddenFirst()); newIconSize( TDEIcon::SizeSmall /* default size */ ); } @@ -726,6 +988,32 @@ void KonqListView::slotSelectionChanged() // m_paInvertSelection->setEnabled( itemSelected ); } -#include "konq_listview.moc" +void KonqListView::slotOrderUnicodeUnmodified() +{ + TextSortOrder sortOrder = UNICODE_UNMODIFIED ; + kdDebug(1202) << "Setting name order = " << sortOrder << endl; + m_pProps->setSortOrder( sortOrder ); + m_pListView->m_sortOrder = sortOrder; + m_pListView->sort(); +} + +void KonqListView::slotOrderUnicodeCaseInsensitive() +{ + TextSortOrder sortOrder = UNICODE_CASEINSENSITIVE; + kdDebug(1202) << "Setting name order = " << sortOrder << endl; + m_pProps->setSortOrder( sortOrder ); + m_pListView->m_sortOrder = sortOrder; + m_pListView->sort(); +} +void KonqListView::slotOrderLocale() +{ + TextSortOrder sortOrder = LOCALE_UNMODIFIED; + kdDebug(1202) << "Setting name order = " << sortOrder << endl; + m_pProps->setSortOrder( sortOrder ); + m_pListView->m_sortOrder = sortOrder; + m_pListView->sort(); +} + +#include "konq_listview.moc" diff --git a/konqueror/listview/konq_listview.h b/konqueror/listview/konq_listview.h index 4c3719bd0..bcd2ec0a1 100644 --- a/konqueror/listview/konq_listview.h +++ b/konqueror/listview/konq_listview.h @@ -63,8 +63,10 @@ class KonqListView : public KonqDirPart { friend class KonqBaseListViewWidget; friend class ListViewBrowserExtension; - Q_OBJECT + + TQ_OBJECT TQ_PROPERTY( bool supportsUndo READ supportsUndo ) + public: KonqListView( TQWidget *parentWidget, TQObject *parent, const char *name, const TQString& mode ); virtual ~KonqListView(); @@ -128,6 +130,15 @@ protected slots: void slotSaveColumnWidths(); // delayed void slotHeaderClicked(int sec); + void slotOrderUnicodeUnmodified(); + void slotOrderUnicodeCaseInsensitive(); + void slotOrderLocale(); + void slotToggleDisplayDirectoriesFirst(); + void slotToggleDisplayHiddenFirst(); + + void slotSortAlternate(); + void slotSortReverse(); + // This comes from KonqDirPart, it's for the "Find" feature virtual void slotStarted() { m_pListView->slotStarted(); } virtual void slotCanceled() { m_pListView->slotCanceled(); } @@ -148,12 +159,27 @@ private: KMimeTypeResolver<KonqBaseListViewItem,KonqListView> *m_mimeTypeResolver; TQTimer *m_headerTimer; + bool toggleColumnAlternate = true; + TQString m_sortColumnNamePrimary; + int m_sortColumnIndexPrimary; + int m_sortColumnOrderPrimary; + TQString m_sortColumnNameAlternate; + int m_sortColumnIndexAlternate; + int m_sortColumnOrderAlternate; + + void resetSortConfig(); + void checkSortConfig(); + void sortListView(uint which); + TDEAction *m_paSelect; TDEAction *m_paUnselect; TDEAction *m_paSelectAll; TDEAction *m_paUnselectAll; TDEAction *m_paInvertSelection; + TDEAction *m_paSortAlternate; + TDEAction *m_paSortReverse; + // These 2 actions are 'fake' actions. They are defined so that the keyboard shortcuts // can be set from the 'Configure Shortcuts..." dialog. // The real actions are performed in the TDEListViewLineEdit::keyPressEvent() in tdeui @@ -174,11 +200,18 @@ private: TDEToggleAction *m_paShowGroup; TDEToggleAction *m_paShowPermissions; TDEToggleAction *m_paShowURL; + + TDEToggleAction *m_paOrderUnicodeUnmodified; + TDEToggleAction *m_paOrderUnicodeCaseInsensitive; + TDEToggleAction *m_paOrderLocale; + + TDEToggleAction *m_paDisplayDirectoriesFirst; + TDEToggleAction *m_paDisplayHiddenFirst; }; class ListViewBrowserExtension : public KonqDirPartBrowserExtension { - Q_OBJECT + TQ_OBJECT friend class KonqListView; friend class KonqBaseListViewWidget; public: diff --git a/konqueror/listview/konq_listview.kcfg b/konqueror/listview/konq_listview.kcfg index bce9798a6..5c31c5cea 100644 --- a/konqueror/listview/konq_listview.kcfg +++ b/konqueror/listview/konq_listview.kcfg @@ -7,7 +7,6 @@ <kcfgfile name="konquerorrc"> <parameter name="Protocol" /> </kcfgfile> - <group name="ListView_$(Protocol)"> <entry key="SortBy" type="String"> <default>FileName</default> @@ -19,6 +18,36 @@ <label>Sort Order</label> <whatsthis></whatsthis> </entry> + <entry key="PrimarySortCol" type="String"> + <default>TBD</default> + <label>Primary sort column name</label> + <whatsthis></whatsthis> + </entry> + <entry key="PrimarySortIndex" type="Int"> + <default>-1</default> + <label>Primary sort column offset</label> + <whatsthis></whatsthis> + </entry> + <entry key="PrimarySortOrder" type="Bool"> + <default>true</default> + <label>Primary sort column sorting order</label> + <whatsthis></whatsthis> + </entry> + <entry key="AlternateSortCol" type="String"> + <default>TBD</default> + <label>Alternate sort column name</label> + <whatsthis></whatsthis> + </entry> + <entry key="AlternateSortIndex" type="Int"> + <default>-1</default> + <label>Alternate sort column offset</label> + <whatsthis></whatsthis> + </entry> + <entry key="AlternateSortOrder" type="Bool"> + <default>true</default> + <label>Alternate sort column sorting order</label> + <whatsthis></whatsthis> + </entry> <entry key="FileNameColumnWidth" type="Int"> <default code="true">25 * TDEApplication::kApplication()->fontMetrics().width( "m" )</default> <label>Width of the FileName Column</label> @@ -33,5 +62,4 @@ <whatsthis></whatsthis> </entry> </group> - </kcfg>
\ No newline at end of file diff --git a/konqueror/listview/konq_listviewitems.cc b/konqueror/listview/konq_listviewitems.cpp index 45ff99c1c..3910095f9 100644 --- a/konqueror/listview/konq_listviewitems.cc +++ b/konqueror/listview/konq_listviewitems.cpp @@ -19,6 +19,7 @@ #include "konq_listview.h" #include <konq_settings.h> +#include "konq_string_compare.h" #include <kdebug.h> #include <tdelocale.h> #include <assert.h> @@ -84,10 +85,18 @@ void KonqListViewItem::updateContents() // Set the text of each column setText( 0, m_fileitem->text() ); - // The order is: .dir (0), dir (1), .file (2), file (3) - sortChar = S_ISDIR( m_fileitem->mode() ) ? 1 : 3; - if ( m_fileitem->text()[0] == '.' ) - --sortChar; + bool m_groupDirectoriesFirst = m_pListViewWidget->props()->isDirsFirst(); + bool m_groupHiddenFirst = m_pListViewWidget->props()->isHiddenFirst(); + + // The default TDE order is: .dir (0), dir (1), .file (2), file (3) + + if ( m_groupDirectoriesFirst ) + sortChar = S_ISDIR( m_fileitem->mode() ) ? 1 : 3; + else + sortChar = 3; + + if ( m_groupHiddenFirst && m_fileitem->text()[0] == '.' ) + --sortChar; //now we have the first column, so let's do the rest @@ -152,7 +161,7 @@ void KonqListViewItem::updateContents() const TQString entryStr = retrieveExtraEntry( m_fileitem, numExtra ); if ( tmpColumn->type == TQVariant::DateTime ) { - TQDateTime dt = TQT_TQDATETIME_OBJECT(TQDateTime::fromString( entryStr, Qt::ISODate )); + TQDateTime dt = TQDateTime::fromString( entryStr, TQt::ISODate ); setText(tmpColumn->displayInColumn, TDEGlobal::locale()->formatDateTime(dt)); } @@ -283,9 +292,9 @@ int KonqBaseListViewItem::compare( TQListViewItem* item, int col, bool ascending { if ( cInfo->type & TQVariant::DateTime ) { const TQString entryStr1 = retrieveExtraEntry( m_fileitem, numExtra ); - TQDateTime dt1 = TQT_TQDATETIME_OBJECT(TQDateTime::fromString( entryStr1, Qt::ISODate )); + TQDateTime dt1 = TQDateTime::fromString( entryStr1, TQt::ISODate ); const TQString entryStr2 = retrieveExtraEntry( k->m_fileitem, numExtra ); - TQDateTime dt2 = TQT_TQDATETIME_OBJECT(TQDateTime::fromString( entryStr2, Qt::ISODate )); + TQDateTime dt2 = TQDateTime::fromString( entryStr2, TQt::ISODate ); return ( dt1 > dt2 ) ? 1 : ( dt1 < dt2 ) ? -1 : 0; } } @@ -295,11 +304,10 @@ int KonqBaseListViewItem::compare( TQListViewItem* item, int col, bool ascending break; } } - if ( m_pListViewWidget->caseInsensitiveSort() ) - return text( col ).lower().localeAwareCompare( k->text( col ).lower() ); - else { - return m_pListViewWidget->m_pSettings->caseSensitiveCompare( text( col ), k->text( col ) ); - } + + /* If we reach here, we are comparing text columns (e.g file name). */ + + return stringCompare( m_pListViewWidget->m_sortOrder, text( col ), k->text( col ) ); } void KonqListViewItem::paintCell( TQPainter *_painter, const TQColorGroup & _cg, int _column, int _width, int _alignment ) @@ -314,7 +322,7 @@ void KonqListViewItem::paintCell( TQPainter *_painter, const TQColorGroup & _cg, cg.setColor( TQColorGroup::Text, m_pListViewWidget->itemColor() ); TDEListView *lv = static_cast< TDEListView* >( listView() ); - const TQPixmap *pm = TQT_TQPIXMAP_CONST(lv->viewport()->paletteBackgroundPixmap()); + const TQPixmap *pm = lv->viewport()->paletteBackgroundPixmap(); if ( _column == 0 && isSelected() && !lv->allColumnsShowFocus() ) { int newWidth = width( lv->fontMetrics(), lv, _column ); diff --git a/konqueror/listview/konq_listviewwidget.cc b/konqueror/listview/konq_listviewwidget.cpp index 4c1198325..a41cf6367 100644 --- a/konqueror/listview/konq_listviewwidget.cc +++ b/konqueror/listview/konq_listviewwidget.cpp @@ -100,6 +100,7 @@ KonqBaseListViewWidget::KonqBaseListViewWidget( KonqListView *parent, TQWidget * ,m_bAscending(true) ,m_itemFound(false) ,m_restored(false) + ,m_sortOrder(0) ,m_filenameColumn(0) ,m_itemToGoTo("") ,m_backgroundTimer(0) @@ -120,61 +121,61 @@ KonqBaseListViewWidget::KonqBaseListViewWidget( KonqListView *parent, TQWidget * initConfig(); #if 0 - connect( this, TQT_SIGNAL(rightButtonPressed(TQListViewItem*,const TQPoint&,int)), - this, TQT_SLOT(slotRightButtonPressed(TQListViewItem*,const TQPoint&,int))); + connect( this, TQ_SIGNAL(rightButtonPressed(TQListViewItem*,const TQPoint&,int)), + this, TQ_SLOT(slotRightButtonPressed(TQListViewItem*,const TQPoint&,int))); #endif - connect( this, TQT_SIGNAL(returnPressed( TQListViewItem * )), - this, TQT_SLOT(slotReturnPressed( TQListViewItem * )) ); - connect( this, TQT_SIGNAL(mouseButtonClicked( int, TQListViewItem *, const TQPoint&, int )), - this, TQT_SLOT(slotMouseButtonClicked2( int, TQListViewItem *, const TQPoint&, int )) ); - connect( this, TQT_SIGNAL(executed( TQListViewItem * )), - this, TQT_SLOT(slotExecuted( TQListViewItem * )) ); - connect( this, TQT_SIGNAL(currentChanged( TQListViewItem * )), - this, TQT_SLOT(slotCurrentChanged( TQListViewItem * )) ); - connect( this, TQT_SIGNAL(itemRenamed( TQListViewItem *, const TQString &, int )), - this, TQT_SLOT(slotItemRenamed( TQListViewItem *, const TQString &, int )) ); - connect( this, TQT_SIGNAL(contextMenuRequested( TQListViewItem *, const TQPoint&, int )), - this, TQT_SLOT(slotPopupMenu( TQListViewItem *, const TQPoint&, int )) ); - connect( this, TQT_SIGNAL(renameNext( TQListViewItem *, int )), - this, TQT_SLOT(slotRenameNextItem( TQListViewItem*, int)) ); - connect( this, TQT_SIGNAL(renamePrev( TQListViewItem *, int )), - this, TQT_SLOT(slotRenamePrevItem( TQListViewItem*, int)) ); - connect( this, TQT_SIGNAL(selectionChanged()), this, TQT_SLOT(slotSelectionChanged()) ); - - connect( horizontalScrollBar(), TQT_SIGNAL(valueChanged( int )), - this, TQT_SIGNAL(viewportAdjusted()) ); - connect( verticalScrollBar(), TQT_SIGNAL(valueChanged( int )), - this, TQT_SIGNAL(viewportAdjusted()) ); + connect( this, TQ_SIGNAL(returnPressed( TQListViewItem * )), + this, TQ_SLOT(slotReturnPressed( TQListViewItem * )) ); + connect( this, TQ_SIGNAL(mouseButtonClicked( int, TQListViewItem *, const TQPoint&, int )), + this, TQ_SLOT(slotMouseButtonClicked2( int, TQListViewItem *, const TQPoint&, int )) ); + connect( this, TQ_SIGNAL(executed( TQListViewItem * )), + this, TQ_SLOT(slotExecuted( TQListViewItem * )) ); + connect( this, TQ_SIGNAL(currentChanged( TQListViewItem * )), + this, TQ_SLOT(slotCurrentChanged( TQListViewItem * )) ); + connect( this, TQ_SIGNAL(itemRenamed( TQListViewItem *, const TQString &, int )), + this, TQ_SLOT(slotItemRenamed( TQListViewItem *, const TQString &, int )) ); + connect( this, TQ_SIGNAL(contextMenuRequested( TQListViewItem *, const TQPoint&, int )), + this, TQ_SLOT(slotPopupMenu( TQListViewItem *, const TQPoint&, int )) ); + connect( this, TQ_SIGNAL(renameNext( TQListViewItem *, int )), + this, TQ_SLOT(slotRenameNextItem( TQListViewItem*, int)) ); + connect( this, TQ_SIGNAL(renamePrev( TQListViewItem *, int )), + this, TQ_SLOT(slotRenamePrevItem( TQListViewItem*, int)) ); + connect( this, TQ_SIGNAL(selectionChanged()), this, TQ_SLOT(slotSelectionChanged()) ); + + connect( horizontalScrollBar(), TQ_SIGNAL(valueChanged( int )), + this, TQ_SIGNAL(viewportAdjusted()) ); + connect( verticalScrollBar(), TQ_SIGNAL(valueChanged( int )), + this, TQ_SIGNAL(viewportAdjusted()) ); // Connect the directory lister - connect( m_dirLister, TQT_SIGNAL(started( const KURL & )), - this, TQT_SLOT(slotStarted()) ); - connect( m_dirLister, TQT_SIGNAL(completed()), this, TQT_SLOT(slotCompleted()) ); - connect( m_dirLister, TQT_SIGNAL(canceled()), this, TQT_SLOT(slotCanceled()) ); - connect( m_dirLister, TQT_SIGNAL(clear()), this, TQT_SLOT(slotClear()) ); - connect( m_dirLister, TQT_SIGNAL(newItems( const KFileItemList & ) ), - this, TQT_SLOT(slotNewItems( const KFileItemList & )) ); - connect( m_dirLister, TQT_SIGNAL(deleteItem( KFileItem * )), - this, TQT_SLOT(slotDeleteItem( KFileItem * )) ); - connect( m_dirLister, TQT_SIGNAL(refreshItems( const KFileItemList & )), - this, TQT_SLOT( slotRefreshItems( const KFileItemList & )) ); - connect( m_dirLister, TQT_SIGNAL(redirection( const KURL & )), - this, TQT_SLOT(slotRedirection( const KURL & )) ); - connect( m_dirLister, TQT_SIGNAL(itemsFilteredByMime( const KFileItemList & )), - m_pBrowserView, TQT_SIGNAL(itemsFilteredByMime( const KFileItemList & )) ); - - connect( m_dirLister, TQT_SIGNAL(infoMessage( const TQString& )), - m_pBrowserView->extension(), TQT_SIGNAL(infoMessage( const TQString& )) ); - connect( m_dirLister, TQT_SIGNAL(percent( int )), - m_pBrowserView->extension(), TQT_SIGNAL(loadingProgress( int )) ); - connect( m_dirLister, TQT_SIGNAL(speed( int )), - m_pBrowserView->extension(), TQT_SIGNAL(speedProgress( int )) ); - - connect( header(), TQT_SIGNAL(sizeChange( int, int, int )), TQT_SLOT(slotUpdateBackground()) ); + connect( m_dirLister, TQ_SIGNAL(started( const KURL & )), + this, TQ_SLOT(slotStarted()) ); + connect( m_dirLister, TQ_SIGNAL(completed()), this, TQ_SLOT(slotCompleted()) ); + connect( m_dirLister, TQ_SIGNAL(canceled()), this, TQ_SLOT(slotCanceled()) ); + connect( m_dirLister, TQ_SIGNAL(clear()), this, TQ_SLOT(slotClear()) ); + connect( m_dirLister, TQ_SIGNAL(newItems( const KFileItemList & ) ), + this, TQ_SLOT(slotNewItems( const KFileItemList & )) ); + connect( m_dirLister, TQ_SIGNAL(deleteItem( KFileItem * )), + this, TQ_SLOT(slotDeleteItem( KFileItem * )) ); + connect( m_dirLister, TQ_SIGNAL(refreshItems( const KFileItemList & )), + this, TQ_SLOT( slotRefreshItems( const KFileItemList & )) ); + connect( m_dirLister, TQ_SIGNAL(redirection( const KURL & )), + this, TQ_SLOT(slotRedirection( const KURL & )) ); + connect( m_dirLister, TQ_SIGNAL(itemsFilteredByMime( const KFileItemList & )), + m_pBrowserView, TQ_SIGNAL(itemsFilteredByMime( const KFileItemList & )) ); + + connect( m_dirLister, TQ_SIGNAL(infoMessage( const TQString& )), + m_pBrowserView->extension(), TQ_SIGNAL(infoMessage( const TQString& )) ); + connect( m_dirLister, TQ_SIGNAL(percent( int )), + m_pBrowserView->extension(), TQ_SIGNAL(loadingProgress( int )) ); + connect( m_dirLister, TQ_SIGNAL(speed( int )), + m_pBrowserView->extension(), TQ_SIGNAL(speedProgress( int )) ); + + connect( header(), TQ_SIGNAL(sizeChange( int, int, int )), TQ_SLOT(slotUpdateBackground()) ); viewport()->setMouseTracking( true ); - viewport()->setFocusPolicy( TQ_WheelFocus ); - setFocusPolicy( TQ_WheelFocus ); + viewport()->setFocusPolicy( TQWidget::WheelFocus ); + setFocusPolicy( TQWidget::WheelFocus ); setAcceptDrops( true ); //looks better with the statusbar @@ -236,9 +237,9 @@ void KonqBaseListViewWidget::readProtocolConfig( const KURL & url ) lstColumns << column; const TQString type = (*extraFieldsIt).type; // ## TODO use when sorting TQVariant::Type t = TQVariant::Invalid; - if ( type.lower() == TQString(TQSTRING_OBJECT_NAME_STRING).lower() ) + if ( type.lower() == TQString("TQString").lower() ) t = TQVariant::String; - else if ( type.lower() == TQString(TQDATETIME_OBJECT_NAME_STRING).lower() ) + else if ( type.lower() == TQString("TQDateTime").lower() ) t = TQVariant::DateTime; else kdWarning() << "Unsupported ExtraType '" << type << "'" << endl; @@ -425,13 +426,13 @@ void KonqBaseListViewWidget::contentsMousePressEvent( TQMouseEvent *e ) { TDEListView::contentsMousePressEvent( e ); } else { - if ( e->button() == Qt::LeftButton ) { + if ( e->button() == TQt::LeftButton ) { m_rubber = new TQRect( e->x(), e->y(), 0, 0 ); clearSelection(); emit selectionChanged(); m_fileTip->setItem( 0 ); } - if ( e->button() != Qt::RightButton ) { + if ( e->button() != TQt::RightButton ) { TQListView::contentsMousePressEvent( e ); } } @@ -452,7 +453,7 @@ void KonqBaseListViewWidget::contentsMouseReleaseEvent( TQMouseEvent *e ) { } if ( m_scrollTimer ) { - disconnect( m_scrollTimer, TQT_SIGNAL( timeout() ), this, TQT_SLOT( slotAutoScroll() ) ); + disconnect( m_scrollTimer, TQ_SIGNAL( timeout() ), this, TQ_SLOT( slotAutoScroll() ) ); m_scrollTimer->stop(); delete m_scrollTimer; m_scrollTimer = 0; @@ -524,28 +525,37 @@ void KonqBaseListViewWidget::contentsWheelEvent( TQWheelEvent *e ) void KonqBaseListViewWidget::contentsMouseDoubleClickEvent(TQMouseEvent *e) { - if (m_rubber) { - TQRect r(m_rubber->normalize()); - delete m_rubber; - m_rubber = NULL; - repaintContents(r, false); - } - - TQPoint vp = contentsToViewport(e->pos()); - KonqBaseListViewItem* item = isExecuteArea(vp) ? - static_cast<KonqBaseListViewItem*>(itemAt(vp)) : NULL; + if (m_rubber) + { + TQRect r(m_rubber->normalize()); + delete m_rubber; + m_rubber = NULL; + repaintContents(r, false); + } + + TQPoint vp = contentsToViewport(e->pos()); + KonqBaseListViewItem* item = isExecuteArea(vp) ? + static_cast<KonqBaseListViewItem*>(itemAt(vp)) : NULL; - if (item) { + if (item) + { TDEListView::contentsMouseDoubleClickEvent(e); - } - else { + } + else if (m_pSettings->doubleClickMoveToParent()) + { KParts::URLArgs args; args.trustedSource = true; - KURL upURL = m_dirLister->url().upURL(); - if (!upURL.isEmpty()) { - m_pBrowserView->extension()->openURLRequest(upURL, args); - } - } + KURL baseURL(m_dirLister->url().internalReferenceURL()); + if (baseURL.isEmpty()) + { + baseURL = m_dirLister->url(); + } + KURL upURL = baseURL.upURL(); + if (!upURL.isEmpty()) + { + m_pBrowserView->extension()->openURLRequest(upURL, args); + } + } } void KonqBaseListViewWidget::leaveEvent( TQEvent *e ) @@ -575,7 +585,7 @@ void KonqBaseListViewWidget::drawRubber( TQPainter *p ) TQPoint pt( m_rubber->x(), m_rubber->y() ); pt = contentsToViewport( pt ); - style().tqdrawPrimitive( TQStyle::PE_RubberBand, p, + style().drawPrimitive( TQStyle::PE_RubberBand, p, TQRect( pt.x(), pt.y(), m_rubber->width(), m_rubber->height() ), colorGroup(), TQStyle::Style_Default, colorGroup().base() ); } @@ -752,15 +762,15 @@ void KonqBaseListViewWidget::slotAutoScroll() { m_scrollTimer = new TQTimer( this ); - connect( m_scrollTimer, TQT_SIGNAL( timeout() ), - this, TQT_SLOT( slotAutoScroll() ) ); + connect( m_scrollTimer, TQ_SIGNAL( timeout() ), + this, TQ_SLOT( slotAutoScroll() ) ); m_scrollTimer->start( 100, false ); } } else if ( m_scrollTimer ) { - disconnect( m_scrollTimer, TQT_SIGNAL( timeout() ), - this, TQT_SLOT( slotAutoScroll() ) ); + disconnect( m_scrollTimer, TQ_SIGNAL( timeout() ), + this, TQ_SLOT( slotAutoScroll() ) ); m_scrollTimer->stop(); delete m_scrollTimer; m_scrollTimer = 0; @@ -962,7 +972,7 @@ void KonqBaseListViewWidget::slotSelectionChanged() void KonqBaseListViewWidget::slotMouseButtonClicked2( int _button, TQListViewItem *_item, const TQPoint& pos, int ) { - if ( _button == Qt::MidButton ) + if ( _button == TQt::MidButton ) { if ( _item && isExecuteArea( viewport()->mapFromGlobal(pos) ) ) m_pBrowserView->mmbClicked( static_cast<KonqBaseListViewItem *>(_item)->item() ); @@ -1206,11 +1216,7 @@ bool KonqBaseListViewWidget::openURL( const KURL &url ) { m_pBrowserView->newIconSize( m_pBrowserView->m_pProps->iconSize() ); m_pBrowserView->m_paShowDot->setChecked( m_pBrowserView->m_pProps->isShowingDotFiles() ); - if ( m_pBrowserView->m_paCaseInsensitive->isChecked() != m_pBrowserView->m_pProps->isCaseInsensitiveSort() ) { - m_pBrowserView->m_paCaseInsensitive->setChecked( m_pBrowserView->m_pProps->isCaseInsensitiveSort() ); - // This is in case openURL returned all items synchronously. - sort(); - } + m_sortOrder = m_pBrowserView->m_pProps->getSortOrder(); // It has to be "viewport()" - this is what KonqDirPart's slots act upon, // and otherwise we get a color/pixmap in the square between the scrollbars. @@ -1484,7 +1490,7 @@ KonqBaseListViewWidget::iterator KonqBaseListViewWidget::iterator::operator++(in void KonqBaseListViewWidget::paintEmptyArea( TQPainter *p, const TQRect &r ) { - const TQPixmap *pm = TQT_TQPIXMAP_CONST(viewport()->paletteBackgroundPixmap()); + const TQPixmap *pm = viewport()->paletteBackgroundPixmap(); if (!pm || pm->isNull()) p->fillRect(r, viewport()->backgroundColor()); @@ -1557,7 +1563,7 @@ void KonqBaseListViewWidget::slotUpdateBackground() if ( !m_backgroundTimer ) { m_backgroundTimer = new TQTimer( this ); - connect( m_backgroundTimer, TQT_SIGNAL( timeout() ), viewport(), TQT_SLOT( update() ) ); + connect( m_backgroundTimer, TQ_SIGNAL( timeout() ), viewport(), TQ_SLOT( update() ) ); } else m_backgroundTimer->stop(); @@ -1566,11 +1572,6 @@ void KonqBaseListViewWidget::slotUpdateBackground() } } -bool KonqBaseListViewWidget::caseInsensitiveSort() const -{ - return m_pBrowserView->m_pProps->isCaseInsensitiveSort(); -} - // based on isExecuteArea from tdelistview.cpp int KonqBaseListViewWidget::executeArea( TQListViewItem *_item ) { diff --git a/konqueror/listview/konq_listviewwidget.h b/konqueror/listview/konq_listviewwidget.h index 613f012b3..ebae4c389 100644 --- a/konqueror/listview/konq_listviewwidget.h +++ b/konqueror/listview/konq_listviewwidget.h @@ -79,7 +79,7 @@ class KonqBaseListViewWidget : public TDEListView friend class KonqListView; friend class ListViewBrowserExtension; - Q_OBJECT + TQ_OBJECT public: KonqBaseListViewWidget( KonqListView *parent, TQWidget *parentWidget ); @@ -137,7 +137,6 @@ public: void setAscending( bool b ) { m_bAscending = b; } bool ascending() const { return m_bAscending; } - bool caseInsensitiveSort() const; virtual void paintEmptyArea( TQPainter *p, const TQRect &r ); @@ -260,6 +259,8 @@ protected: bool m_itemFound:1; bool m_restored:1; + TextSortOrder m_sortOrder; + int m_filenameColumn; int m_filenameColumnWidth; diff --git a/konqueror/listview/konq_textview.rc b/konqueror/listview/konq_textview.rc index 612deb5cb..e29a0293b 100644 --- a/konqueror/listview/konq_textview.rc +++ b/konqueror/listview/konq_textview.rc @@ -1,5 +1,5 @@ <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> -<kpartgui name="KonqTextView" version="5"> +<kpartgui name="KonqTextView" version="7"> <MenuBar> <Menu name="edit"><text>&Edit</text> <Menu name="selection"><text>Selection</text> @@ -13,7 +13,17 @@ </Menu> <Menu name="view"><text>&View</text> <Action name="show_dot" /> - <Action name="sort_caseinsensitive"/> + <Menu name="sort"><text>&Sort</text> + <Action name="order_unicode_based"/> + <Action name="order_unicode_based_case_insensitive"/> + <Action name="order_locale_based"/> + <Separator/> + <Action name="group_directories_first"/> + <Action name="group_hidden_first"/> + <Separator/> + <Action name="alternate_sort_order"/> + <Action name="reverse_sort_order"/> + </Menu> <Menu name="listview_show"><text>Show Details</text> <TearOffHandle /> <Action name="show_size"/> diff --git a/konqueror/listview/konq_textviewitem.cc b/konqueror/listview/konq_textviewitem.cpp index 1076e10af..625e10f79 100644 --- a/konqueror/listview/konq_textviewitem.cc +++ b/konqueror/listview/konq_textviewitem.cpp @@ -210,7 +210,7 @@ void KonqTextViewItem::paintCell( TQPainter *_painter, const TQColorGroup & _cg, cg.setColor(TQColorGroup::Text, static_cast<KonqTextViewWidget *>(listView())->colors[type]); // Don't do that! Keep things readable whatever the selection background color is // cg.setColor(TQColorGroup::HighlightedText, static_cast<KonqTextViewWidget *>(listView())->highlight[type]); -// cg.setColor(TQColorGroup::Highlight, Qt::darkGray); +// cg.setColor(TQColorGroup::Highlight, TQt::darkGray); TDEListViewItem::paintCell( _painter, cg, _column, _width, _alignment ); } @@ -223,7 +223,7 @@ void KonqTextViewItem::paintCell( TQPainter *_painter, const TQColorGroup & _cg, TQPixmap pix( _r.width(), _r.height() ); bitBlt( &pix, 0, 0, _p->device(), _r.left(), _r.top(), _r.width(), _r.height() ); TQImage im = pix.convertToImage(); - im = KImageEffect::fade( im, 0.25, Qt::black ); + im = KImageEffect::fade( im, 0.25, TQt::black ); _p->drawImage( _r.topLeft(), im ); }*/ diff --git a/konqueror/listview/konq_textviewwidget.cc b/konqueror/listview/konq_textviewwidget.cpp index ab227899a..d814d2fbc 100644 --- a/konqueror/listview/konq_textviewwidget.cc +++ b/konqueror/listview/konq_textviewwidget.cpp @@ -43,17 +43,17 @@ KonqTextViewWidget::KonqTextViewWidget( KonqListView *parent, TQWidget *parentWi setAllColumnsShowFocus(TRUE); setRootIsDecorated(false); - colors[KTVI_REGULAR]=Qt::black; + colors[KTVI_REGULAR]=TQt::black; colors[KTVI_EXEC]=TQColor(0,170,0); - colors[KTVI_REGULARLINK]=Qt::black; - colors[KTVI_DIR]=Qt::black; - colors[KTVI_DIRLINK]=Qt::black; - colors[KTVI_BADLINK]=Qt::red; - colors[KTVI_SOCKET]=Qt::magenta; - colors[KTVI_FIFO]=Qt::magenta; - colors[KTVI_UNKNOWN]=Qt::red; - colors[KTVI_CHARDEV]=Qt::blue; - colors[KTVI_BLOCKDEV]=Qt::blue; + colors[KTVI_REGULARLINK]=TQt::black; + colors[KTVI_DIR]=TQt::black; + colors[KTVI_DIRLINK]=TQt::black; + colors[KTVI_BADLINK]=TQt::red; + colors[KTVI_SOCKET]=TQt::magenta; + colors[KTVI_FIFO]=TQt::magenta; + colors[KTVI_UNKNOWN]=TQt::red; + colors[KTVI_CHARDEV]=TQt::blue; + colors[KTVI_BLOCKDEV]=TQt::blue; m_showIcons=FALSE; } diff --git a/konqueror/listview/konq_textviewwidget.h b/konqueror/listview/konq_textviewwidget.h index 06a5cbbb5..d42014ba1 100644 --- a/konqueror/listview/konq_textviewwidget.h +++ b/konqueror/listview/konq_textviewwidget.h @@ -32,7 +32,7 @@ class KonqTextViewItem; class KonqTextViewWidget : public KonqBaseListViewWidget { friend class KonqTextViewItem; - Q_OBJECT + TQ_OBJECT public: KonqTextViewWidget( KonqListView *parent, TQWidget *parentWidget ); ~KonqTextViewWidget(); diff --git a/konqueror/listview/konq_treeview.rc b/konqueror/listview/konq_treeview.rc index 7f8981779..9ef045785 100644 --- a/konqueror/listview/konq_treeview.rc +++ b/konqueror/listview/konq_treeview.rc @@ -1,5 +1,5 @@ <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> -<kpartgui name="KonqTreeView" version="10"> +<kpartgui name="KonqTreeView" version="12"> <MenuBar> <Menu name="edit"><text>&Edit</text> <Menu name="selection"><text>Selection</text> @@ -24,8 +24,17 @@ </Menu> <Separator/> <Action name="show_dot"/> - <Action name="sort_caseinsensitive"/> - <!--<Action name="sort_directoriesfirst" /> TODO --> + <Menu name="sort"><text>&Sort</text> + <Action name="order_unicode_based"/> + <Action name="order_unicode_based_case_insensitive"/> + <Action name="order_locale_based"/> + <Separator/> + <Action name="group_directories_first"/> + <Action name="group_hidden_first"/> + <Separator/> + <Action name="alternate_sort_order"/> + <Action name="reverse_sort_order"/> + </Menu> <Menu name="listview_show"><text>Show Details</text> <TearOffHandle /> <Action name="show_size"/> diff --git a/konqueror/listview/konq_treeviewitem.cc b/konqueror/listview/konq_treeviewitem.cpp index 12953c401..12953c401 100644 --- a/konqueror/listview/konq_treeviewitem.cc +++ b/konqueror/listview/konq_treeviewitem.cpp diff --git a/konqueror/listview/konq_treeviewwidget.cc b/konqueror/listview/konq_treeviewwidget.cpp index 77adc4b61..02c297c88 100644 --- a/konqueror/listview/konq_treeviewwidget.cc +++ b/konqueror/listview/konq_treeviewwidget.cpp @@ -35,12 +35,12 @@ KonqTreeViewWidget::KonqTreeViewWidget( KonqListView *parent, TQWidget *parentWi setRootIsDecorated( true ); setTreeStepSize( 20 ); - connect( m_dirLister, TQT_SIGNAL( completed( const KURL & ) ), - this, TQT_SLOT( slotCompleted( const KURL & ) ) ); - connect( m_dirLister, TQT_SIGNAL( clear( const KURL & ) ), - this, TQT_SLOT( slotClear( const KURL & ) ) ); - connect( m_dirLister, TQT_SIGNAL( redirection( const KURL &, const KURL & ) ), - this, TQT_SLOT( slotRedirection( const KURL &, const KURL & ) ) ); + connect( m_dirLister, TQ_SIGNAL( completed( const KURL & ) ), + this, TQ_SLOT( slotCompleted( const KURL & ) ) ); + connect( m_dirLister, TQ_SIGNAL( clear( const KURL & ) ), + this, TQ_SLOT( slotClear( const KURL & ) ) ); + connect( m_dirLister, TQ_SIGNAL( redirection( const KURL &, const KURL & ) ), + this, TQ_SLOT( slotRedirection( const KURL &, const KURL & ) ) ); } KonqTreeViewWidget::~KonqTreeViewWidget() diff --git a/konqueror/listview/konq_treeviewwidget.h b/konqueror/listview/konq_treeviewwidget.h index 01b85ddf6..0f16240db 100644 --- a/konqueror/listview/konq_treeviewwidget.h +++ b/konqueror/listview/konq_treeviewwidget.h @@ -32,7 +32,7 @@ class KonqTreeViewWidget : public KonqBaseListViewWidget { friend class KonqListViewDir; - Q_OBJECT + TQ_OBJECT public: KonqTreeViewWidget( KonqListView *parent, TQWidget *parentWidget ); virtual ~KonqTreeViewWidget(); |