From b390bcd32e188fc3c9fd7067bfc41b60b5e84ad4 Mon Sep 17 00:00:00 2001
From: eilers <eilers>
Date: Thu, 24 Mar 2005 16:23:51 +0000
Subject: In table view: Clicking on column 0 changes the sortorder.

Version of ths app was changed to 1.2.0
Requested by #1591
---
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp
index 49e66ad..60f3177 100644
--- a/core/pim/addressbook/abtable.cpp
+++ b/core/pim/addressbook/abtable.cpp
@@ -124,7 +124,8 @@ AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name
 	//	odebug << "C'tor start" << oendl;
 	setSelectionMode( NoSelection );
 	init();
-	setSorting( TRUE );
+	setSorting( false ); // The table should not sort by itself!
+
 	connect( this, SIGNAL(clicked(int,int,int,const QPoint&)),
 		 this, SLOT(itemClicked(int,int)) );
 
@@ -156,17 +157,10 @@ void AbTable::setContacts( const Opie::OPimContactAccess::List& viewList )
 	clear();
 	m_viewList = viewList;
 
-	setSorting( false );
 	setPaintingEnabled( FALSE );
 
 	setNumRows( m_viewList.count() );
-//	int row = 0;
-// 	for ( it = m_viewList.begin(); it != m_viewList.end(); ++it )
-// 		insertIntoTable( *it, row++ );
-
-// 	setSorting( true );
 
-// 	resort();
 
 	updateVisible();
 
@@ -208,65 +202,22 @@ bool AbTable::selectContact( int UID )
 	return true;
 }
 
-#if 0
-void AbTable::insertIntoTable( const Opie::OPimContact& cnt, int row )
-{
-	odebug << "void AbTable::insertIntoTable( const Opie::OPimContact& cnt, "
-					<< row << " )" << oendl;
-	QString strName;
-	ContactItem contactItem;
-
-	strName = findContactName( cnt );
-	contactItem = findContactContact( cnt, row );
-
-	AbTableItem *ati;
-	ati = new AbTableItem( this, QTableItem::Never, strName, contactItem.value );
-	contactList.insert( ati, cnt );
-	setItem( row, 0, ati );
-	ati = new AbTableItem( this, QTableItem::Never, contactItem.value, strName);
-	if ( !contactItem.icon.isNull() )
-		ati->setPixmap( contactItem.icon );
-	setItem( row, 1, ati );
-
-	//### cannot do this; table only has two columns at this point
-	//    setItem( row, 2, new AbPickItem( this ) );
-
-}
-#endif
-
 
 void AbTable::columnClicked( int col )
 {
-	if ( !sorting() )
-		return;
-
-	if ( lastSortCol == -1 )
-		lastSortCol = col;
+	odebug << "columClicked(" << col << ")" << oendl;
 
-	if ( col == lastSortCol ) {
+	if ( col == 0 ){
+		odebug << "Change sort order: " << asc << oendl;
 		asc = !asc;
-	} else {
-		lastSortCol = col;
-		asc = TRUE;
+		emit signalSortOrderChanged( asc );
 	}
-	//QMessageBox::information( this, "resort", "columnClicked" );
-	resort();
 }
 
 void AbTable::resort()
 {
 	owarn << "void AbTable::resort() NOT POSSIBLE !!" << oendl;
-#if 0
-	setPaintingEnabled( FALSE );
-	if ( sorting() ) {
-		if ( lastSortCol == -1 )
-			lastSortCol = 0;
-		sortColumn( lastSortCol, asc, TRUE );
-		//QMessageBox::information( this, "resort", "resort" );
-		updateVisible();
-	}
-	setPaintingEnabled( TRUE );
-#endif
+
 }
 
 Opie::OPimContact AbTable::currentEntry()
@@ -357,36 +308,6 @@ void AbTable::moveTo( char /*c*/ )
 {
 	odebug << "void AbTable::moveTo( char c ) NOT IMPLEMENTED !!" << oendl;
 
-#if 0
-	int rows = numRows();
-	QString value;
-	AbTableItem *abi;
-	int r;
-	if ( asc ) {
-		r = 0;
-		while ( r < rows-1) {
-			abi = static_cast<AbTableItem*>( item(r, 0) );
-			QChar first = abi->key()[0];
-			//### is there a bug in QChar to char comparison???
-			if ( first.row() || first.cell() >= c )
-				break;
-			r++;
-		}
-	} else {
-		//### should probably disable reverse sorting instead
-		r = rows - 1;
-		while ( r > 0 ) {
-			abi = static_cast<AbTableItem*>( item(r, 0) );
-			QChar first = abi->key()[0];
-			//### is there a bug in QChar to char comparison???
-			if ( first.row() || first.cell() >= c )
-				break;
-			r--;
-		}
-	}
-	setCurrentCell( r, currentColumn() );
-
-#endif
 }
 
 #if 0
diff --git a/core/pim/addressbook/abtable.h b/core/pim/addressbook/abtable.h
index 927a5a9..7d2818b 100644
--- a/core/pim/addressbook/abtable.h
+++ b/core/pim/addressbook/abtable.h
@@ -120,6 +120,7 @@ signals:
     void signalEditor();
     void signalKeyDown();
     void signalKeyUp();
+    void signalSortOrderChanged( bool order );
 
 protected:
     virtual void keyPressEvent( QKeyEvent *e );
diff --git a/core/pim/addressbook/abview.cpp b/core/pim/addressbook/abview.cpp
index 8a2db96..9f7f71f 100644
--- a/core/pim/addressbook/abview.cpp
+++ b/core/pim/addressbook/abview.cpp
@@ -42,6 +42,7 @@ AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ):
 	mCat(0),
 	m_inSearch( false ),
 	m_inPersonal( false ),
+	m_sortOrder( true ),
 	m_curr_category( 0 ),
 	m_curr_View( TableView ),
 	m_prev_View( TableView ),
@@ -80,6 +81,8 @@ AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ):
 	// Connect views to me
 	connect ( m_abTable, SIGNAL( signalSwitch(void) ),
 		  this, SLOT( slotSwitch(void) ) );
+	connect ( m_abTable, SIGNAL( signalSortOrderChanged( bool ) ),
+		  this, SLOT( slotSetSortOrder( bool ) ) );
 	connect ( m_ablabel, SIGNAL( signalOkPressed(void) ),
 		  this, SLOT( slotSwitch(void) ) );
 
@@ -161,15 +164,15 @@ void AbView::load()
 	
 	if ( m_curr_category == -1 ) {
 		// Show just unfiled contacts
-		m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, 
+		m_list = m_contactdb->sorted( m_sortOrder, Opie::OPimContactAccess::SortFileAsName, 
 					      Opie::OPimContactAccess::DoNotShowWithCategory, 0 );
 	} else	if ( m_curr_category == 0 ){
 		// Just show all contacts
-		m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, 
+		m_list = m_contactdb->sorted( m_sortOrder, Opie::OPimContactAccess::SortFileAsName, 
 					      Opie::OPimBase::FilterOff, 0 );
 	} else {
 		// Show contacts with given categories
-		m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, 
+		m_list = m_contactdb->sorted( m_sortOrder, Opie::OPimContactAccess::SortFileAsName, 
 					      Opie::OPimBase::FilterCategory, m_curr_category );
 	}
 
@@ -416,6 +419,11 @@ void AbView::slotSwitch(){
 
 }
 
+void AbView::slotSetSortOrder( bool order ){
+	m_sortOrder = order;
+	reload();
+}
+
 // END: Slots
 
 void AbView::clearForCategory()
diff --git a/core/pim/addressbook/abview.h b/core/pim/addressbook/abview.h
index b8c8a08..07b6b28 100644
--- a/core/pim/addressbook/abview.h
+++ b/core/pim/addressbook/abview.h
@@ -58,6 +58,7 @@ public slots:
     void slotDoFind( const QString &str, bool caseSensitive, bool useRegExp,
 		     bool backwards, QString category = QString::null );
     void slotSwitch();
+    void slotSetSortOrder( bool order );
 
 private:
     void updateListinViews();
@@ -70,6 +71,7 @@ private:
     Categories mCat;
     bool m_inSearch;
     bool m_inPersonal;
+    bool m_sortOrder;
     int m_curr_category;
     Views m_curr_View;
     Views m_prev_View;
diff --git a/core/pim/addressbook/version.h b/core/pim/addressbook/version.h
index 7ce9752..8aafc85 100644
--- a/core/pim/addressbook/version.h
+++ b/core/pim/addressbook/version.h
@@ -2,8 +2,8 @@
 #define _VERSION_H_
 
 #define MAINVERSION  "1"
-#define SUBVERSION   "1"
-#define PATCHVERSION "1"
+#define SUBVERSION   "2"
+#define PATCHVERSION "0"
 
 #define APPNAME "OPIE_ADDRESSBOOK"
 
--
cgit v0.9.0.2