summaryrefslogtreecommitdiff
path: root/core/pim
authoreilers <eilers>2002-11-27 15:21:06 (UTC)
committer eilers <eilers>2002-11-27 15:21:06 (UTC)
commit4b20972da142bbdea42c682025ab5303c35a5a92 (patch) (side-by-side diff)
tree934acaec747a495188a7d3c1e125ecc0776b68c6 /core/pim
parent4d7272423782dc2f9f7dbde36b848f55eb323c79 (diff)
downloadopie-4b20972da142bbdea42c682025ab5303c35a5a92.zip
opie-4b20972da142bbdea42c682025ab5303c35a5a92.tar.gz
opie-4b20972da142bbdea42c682025ab5303c35a5a92.tar.bz2
Extremely improved table update
Diffstat (limited to 'core/pim') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/abtable.cpp55
-rw-r--r--core/pim/addressbook/abtable.h3
-rw-r--r--core/pim/addressbook/abview.cpp72
-rw-r--r--core/pim/addressbook/abview.h3
-rw-r--r--core/pim/addressbook/addressbook.cpp46
5 files changed, 109 insertions, 70 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp
index e333b17..00335ae 100644
--- a/core/pim/addressbook/abtable.cpp
+++ b/core/pim/addressbook/abtable.cpp
@@ -124,5 +124,6 @@ AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name
intFields( order ),
enablePainting( true ),
- columnVisible( true )
+ columnVisible( true ),
+ countNested( 0 )
{
qWarning("C'tor start");
@@ -163,5 +164,5 @@ void AbTable::setContacts( const OContactAccess::List& viewList )
setSorting( false );
- setUpdatesEnabled( FALSE );
+ setPaintingEnabled( FALSE );
OContactAccess::List::Iterator it;
@@ -171,6 +172,4 @@ void AbTable::setContacts( const OContactAccess::List& viewList )
insertIntoTable( *it, row++ );
- setUpdatesEnabled( TRUE );
-
setSorting( true );
@@ -179,4 +178,6 @@ void AbTable::setContacts( const OContactAccess::List& viewList )
updateVisible();
+ setPaintingEnabled( TRUE );
+
}
@@ -189,4 +190,5 @@ bool AbTable::selectContact( int UID )
bool found = false;
+ setPaintingEnabled( FALSE );
for ( int r = 0; r < rows; ++r ) {
abi = static_cast<AbTableItem*>( item(r, 0) );
@@ -205,4 +207,6 @@ bool AbTable::selectContact( int UID )
}
+ setPaintingEnabled( TRUE );
+
return true;
}
@@ -210,5 +214,5 @@ bool AbTable::selectContact( int UID )
void AbTable::insertIntoTable( const OContact& cnt, int row )
{
- // qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row );
+ qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row );
QString strName,
strContact;
@@ -252,4 +256,5 @@ void AbTable::resort()
{
qWarning( "void AbTable::resort()" );
+ setPaintingEnabled( FALSE );
if ( sorting() ) {
if ( lastSortCol == -1 )
@@ -259,4 +264,5 @@ void AbTable::resort()
updateVisible();
}
+ setPaintingEnabled( TRUE );
}
@@ -283,4 +289,6 @@ void AbTable::clear()
qWarning( "void AbTable::clear()" );
contactList.clear();
+
+ setPaintingEnabled( FALSE );
for ( int r = 0; r < numRows(); ++r ) {
for ( int c = 0; c < numCols(); ++c ) {
@@ -291,4 +299,5 @@ void AbTable::clear()
}
setNumRows( 0 );
+ setPaintingEnabled( TRUE );
}
@@ -301,4 +310,5 @@ void AbTable::refresh()
AbTableItem *abi;
+ setPaintingEnabled( FALSE );
for ( int r = 0; r < rows; ++r ) {
abi = static_cast<AbTableItem*>( item(r, 0) );
@@ -307,4 +317,5 @@ void AbTable::refresh()
}
resort();
+ setPaintingEnabled( TRUE );
}
@@ -455,4 +466,6 @@ void AbTable::fitColumns()
// Fix to better value
// contentsWidth = 130;
+
+ setPaintingEnabled( FALSE );
if ( columnVisible == false ){
@@ -467,4 +480,6 @@ void AbTable::fitColumns()
if ( columnWidth(1) < contentsWidth )
setColumnWidth( 1, contentsWidth );
+
+ setPaintingEnabled( TRUE );
}
@@ -534,4 +549,6 @@ QStringList AbTable::choiceSelection(int /*index*/) const
void AbTable::updateVisible()
{
+ qWarning("void AbTable::updateVisible()");
+
int visible,
totalRows,
@@ -541,8 +558,8 @@ void AbTable::updateVisible()
visible = 0;
- realignTable();
-
setPaintingEnabled( FALSE );
+ realignTable();
+
totalRows = numRows();
for ( row = 0; row < totalRows; row++ ) {
@@ -570,15 +587,31 @@ void AbTable::updateVisible()
void AbTable::setPaintingEnabled( bool e )
{
- if ( e != enablePainting ) {
- if ( !enablePainting ) {
+ qWarning("IN void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested );
+
+ if ( e ) {
+ if ( countNested > 0 )
+ --countNested;
+ if ( ! countNested ){
+ setUpdatesEnabled( true );
enablePainting = true;
rowHeightChanged( 0 );
viewport()->update();
- } else {
- enablePainting = false;
}
+ } else {
+ ++countNested;
+ enablePainting = false;
+ setUpdatesEnabled( false );
}
+ qWarning("OUT void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested );
}
+void AbTable::viewportPaintEvent( QPaintEvent* e ) {
+ qWarning(" void AbTable::viewportPaintEvent( QPaintEvent* e ) -> %d", enablePainting);
+ if ( enablePainting )
+ QTable::viewportPaintEvent( e );
+}
+
+
+
void AbTable::rowHeightChanged( int row )
{
diff --git a/core/pim/addressbook/abtable.h b/core/pim/addressbook/abtable.h
index 83bd5a7..9825665 100644
--- a/core/pim/addressbook/abtable.h
+++ b/core/pim/addressbook/abtable.h
@@ -86,4 +86,5 @@ public:
void show();
void setPaintingEnabled( bool e );
+ void viewportPaintEvent( QPaintEvent* e);
// addresspicker mode (What's that ? se)
@@ -128,6 +129,6 @@ private:
QStringList choicenames;
bool enablePainting;
-
bool columnVisible;
+ int countNested;
OContactAccess::List m_viewList;
diff --git a/core/pim/addressbook/abview.cpp b/core/pim/addressbook/abview.cpp
index 8d22129..3af7663 100644
--- a/core/pim/addressbook/abview.cpp
+++ b/core/pim/addressbook/abview.cpp
@@ -1,2 +1,18 @@
+/**********************************************************************
+** Copyright (c) 2002 Stefan Eilers (eilers.stefan@epost.de)
+**
+** This file is part of Qt Palmtop Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+**
+**********************************************************************/
+
#include "abview.h"
@@ -138,7 +154,4 @@ void AbView::load()
clearForCategory();
- // Feed all views with new lists
- updateListinViews();
-
qWarning ("Number of contacts: %d", m_list.count());
@@ -160,18 +173,7 @@ void AbView::clear()
}
-void AbView::setShowByCategory( Views view, const QString& cat )
+void AbView::setShowByCategory( const QString& cat )
{
- qWarning("AbView::setShowCategory( Views view, const QString& cat )");
-
-// if ( view == PersonalView ){
-// if ( ! m_inPersonal )
-// showPersonal( true );
-
-// }else{
-// if ( m_inPersonal )
-// showPersonal( false );
-
-// m_curr_View = view;
-// }
+ qWarning("AbView::setShowCategory( const QString& cat )");
int intCat = 0;
@@ -183,16 +185,8 @@ void AbView::setShowByCategory( Views view, const QString& cat )
intCat = mCat.id("Contacts", cat );
- // If we just change the view, we don't have to reload any data..
- // This speeds up a lot of things !
- if ( intCat == m_curr_category ){
- qWarning ("Just change the View (Category is: %d)", m_curr_category);
- m_prev_View = m_curr_View;
- m_curr_View = view;
-
- updateView();
- }else{
+ // Just do anything if we really change the category
+ if ( intCat != m_curr_category ){
qWarning ("Categories: Selected %s.. Number: %d", cat.latin1(), m_curr_category);
- m_curr_View = view;
m_curr_category = intCat;
emit signalClearLetterPicker();
@@ -202,4 +196,20 @@ void AbView::setShowByCategory( Views view, const QString& cat )
}
+
+void AbView::setShowToView( Views view )
+{
+ qWarning("void AbView::setShowToView( View %d )", view);
+
+ qWarning ("Change the View (Category is: %d)", m_curr_category);
+
+ if ( m_curr_View != view ){
+ m_prev_View = m_curr_View;
+ m_curr_View = view;
+
+ updateView();
+ }
+
+}
+
void AbView::setShowByLetter( char c )
{
@@ -402,4 +412,7 @@ void AbView::updateView()
qWarning("AbView::updateView()");
+ // Feed all views with new lists
+ updateListinViews();
+
if ( m_viewStack -> visibleWidget() ){
m_viewStack -> visibleWidget() -> clearFocus();
@@ -416,8 +429,11 @@ void AbView::updateView()
break;
}
- emit signalViewSwitched ( (int) m_curr_View );
}else
m_curr_Contact = 0;
+ // Inform the world that the view is changed
+ if ( m_curr_View != m_prev_View )
+ emit signalViewSwitched ( (int) m_curr_View );
+
m_prev_View = m_curr_View;
@@ -426,5 +442,4 @@ void AbView::updateView()
case TableView:
m_abTable -> setChoiceSelection( m_orderedFields );
- m_abTable -> setContacts( m_list );
if ( m_curr_Contact != 0 )
m_abTable -> selectContact ( m_curr_Contact );
@@ -432,5 +447,4 @@ void AbView::updateView()
break;
case CardView:
- m_ablabel -> setContacts( m_list );
if ( m_curr_Contact != 0 )
m_ablabel -> selectContact( m_curr_Contact );
diff --git a/core/pim/addressbook/abview.h b/core/pim/addressbook/abview.h
index 201b521..2c10cfa 100644
--- a/core/pim/addressbook/abview.h
+++ b/core/pim/addressbook/abview.h
@@ -30,5 +30,6 @@ public:
void setView( Views view );
void showPersonal( bool personal );
- void setShowByCategory( Views view, const QString& cat );
+ void setShowByCategory( const QString& cat );
+ void setShowToView( Views view );
void setShowByLetter( char c );
void setListOrder( const QValueList<int>& ordered );
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 3b2e4b8..5d588da 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -822,13 +822,16 @@ void AddressbookWindow::slotSetCategory( int c )
return;
- // Checkmark Book Menu Item Selected
+ // Switch view
if ( c < 3 )
- for ( unsigned int i = 1; i < 3; i++ )
- catMenu->setItemChecked( i, c == (int)i );
- // Checkmark Category Menu Item Selected
+ for ( unsigned int i = 1; i < 3; i++ ){
+ if ( catMenu )
+ catMenu->setItemChecked( i, c == (int)i );
+ }
else
+ // Checkmark Category Menu Item Selected
for ( unsigned int i = 3; i < catMenu->count(); i++ )
catMenu->setItemChecked( i, c == (int)i );
+ // Now switch to the selected category
for ( unsigned int i = 1; i < catMenu->count(); i++ ) {
if (catMenu->isItemChecked( i )) {
@@ -853,7 +856,9 @@ void AddressbookWindow::slotSetCategory( int c )
}
+ // Switch to the selected View
slotViewSwitched( view );
- m_abView -> setShowByCategory( view, cat );
+ // Tell the view about the selected category
+ m_abView -> setShowByCategory( cat );
if ( book.isEmpty() )
@@ -869,4 +874,6 @@ void AddressbookWindow::slotViewSwitched( int view )
qWarning( "void AddressbookWindow::slotViewSwitched( %d )", view );
int menu = 0;
+
+ // Switch to selected view
switch ( view ){
case AbView::TableView:
@@ -880,13 +887,4 @@ void AddressbookWindow::slotViewSwitched( int view )
m_cardViewButton->setOn(true);
break;
-// case AbView::PersonalView:
-// menu = 3;
-// break;
-// case AbView::CompanyBook:
-// menu = 3;
-// break;
-// case AbView::EmailBook:
-// menu = 4;
-// break;
}
for ( unsigned int i = 1; i < 3; i++ ){
@@ -894,4 +892,8 @@ void AddressbookWindow::slotViewSwitched( int view )
catMenu->setItemChecked( i, menu == (int)i );
}
+
+ // Tell the view about the selected view
+ m_abView -> setShowToView ( (AbView::Views) view );
+
}
@@ -899,10 +901,10 @@ void AddressbookWindow::slotViewSwitched( int view )
void AddressbookWindow::slotListView()
{
- emit slotSetCategory( AbView::TableView +1 );
+ slotViewSwitched( AbView::TableView );
}
void AddressbookWindow::slotCardView()
{
- emit slotSetCategory( AbView::CardView +1 );
+ slotViewSwitched( AbView::CardView );
}
@@ -938,16 +940,4 @@ void AddressbookWindow::populateCategories()
}
- // :SX
-// if ( abList->showBook().isEmpty() ) {
-// catMenu->setItemChecked( 1, true );
-// } else if ( abList->showBook() == "Phone" ) {
-// catMenu->setItemChecked( 2, true );
-// } else if ( abList->showBook() == "Company" ) {
-// catMenu->setItemChecked( 3, true );
-// } else if ( abList->showBook() == "Email" ) {
-// catMenu->setItemChecked( 4, true );
-// } else if ( abList->showBook() == "Cards" ) {
-// catMenu->setItemChecked( 5, true );
-// }
if ( m_abView -> showCategory().isEmpty() ) {