summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/abtable.cpp26
-rw-r--r--core/pim/addressbook/abtable.h2
-rw-r--r--core/pim/addressbook/addressbook.cpp12
-rw-r--r--core/pim/addressbook/addressbook.h3
-rw-r--r--core/pim/addressbook/addressbook.pro6
-rw-r--r--core/pim/addressbook/picker.cpp234
-rw-r--r--core/pim/addressbook/picker.h65
7 files changed, 344 insertions, 4 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp
index 17277b4..759cb48 100644
--- a/core/pim/addressbook/abtable.cpp
+++ b/core/pim/addressbook/abtable.cpp
@@ -152,2 +152,3 @@ void AbTable::init()
{
+ showChar = '\0';
setNumRows( 0 );
@@ -454,3 +455,3 @@ void AbTable::addEntry( const Contact &newCnt )
void AbTable::resizeRows( int size ) {
-
+/*
if (numRows()) {
@@ -459,3 +460,4 @@ void AbTable::resizeRows( int size ) {
}
- }
+ }*/
+ updateVisible();
}
@@ -1010,2 +1012,9 @@ void AbTable::setShowCategory( const QString &c )
+void AbTable::setShowByLetter( char c )
+{
+ showChar = tolower(c);
+ qDebug( "AbTable::setShowByLetter %c", showChar);
+ updateVisible();
+}
+
QString AbTable::showCategory() const
@@ -1034,2 +1043,4 @@ void AbTable::updateVisible()
Contact *cnt;
+ QString fileAsName;
+ QString tmpStr;
visible = 0;
@@ -1045,2 +1056,3 @@ void AbTable::updateVisible()
cats = cnt->categories();
+ fileAsName = cnt->fileAs();
hide = false;
@@ -1064,2 +1076,12 @@ void AbTable::updateVisible()
}
+ if ( showChar != '\0' ) {
+ tmpStr = fileAsName.left(1);
+ tmpStr = tmpStr.lower();
+ qDebug( "updateVisible ");
+ qDebug( tmpStr );
+ qDebug( "updateVisible2 %c", showChar );
+ if ( tmpStr != QString(QChar(showChar)) ) {
+ hide = true;
+ }
+ }
if ( hide ) {
diff --git a/core/pim/addressbook/abtable.h b/core/pim/addressbook/abtable.h
index 53635ee..d5ff279 100644
--- a/core/pim/addressbook/abtable.h
+++ b/core/pim/addressbook/abtable.h
@@ -86,2 +86,3 @@ public:
void setShowCategory( const QString &c );
+ void setShowByLetter( char c );
QString showCategory() const;
@@ -132,2 +133,3 @@ private:
bool asc;
+ char showChar;
QMap<AbTableItem*, Contact> contactList;
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 360aa7e..e502cf6 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -65,2 +65,3 @@
+#include "picker.h"
static QString addressbookOldXMLFilename()
@@ -100,2 +101,3 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
+ QBoxLayout *vb = new QVBoxLayout( this, 0, 0 );
// Create Toolbars
@@ -191,2 +193,3 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
abList = new AbTable( &orderedFields, this, "table" );
+ vb->insertWidget(0,abList);
abList->setHScrollBarMode( QScrollView::AlwaysOff );
@@ -207,2 +210,5 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
+ pLabel = new LetterPicker( abList );
+ connect(pLabel, SIGNAL(letterClicked(char)), this, SLOT(slotSetLetter(char)));
+ vb->insertWidget(1,pLabel);
catMenu = new QPopupMenu( this );
@@ -886,2 +892,8 @@ void AddressbookWindow::slotSetCategory( int c )
+void AddressbookWindow::slotSetLetter( char c ) {
+
+ abList->setShowByLetter( c );
+
+}
+
void AddressbookWindow::populateCategories()
diff --git a/core/pim/addressbook/addressbook.h b/core/pim/addressbook/addressbook.h
index e2a7100..31c4660 100644
--- a/core/pim/addressbook/addressbook.h
+++ b/core/pim/addressbook/addressbook.h
@@ -33,2 +33,3 @@ class Ir;
class QAction;
+class LetterPicker;
@@ -71,2 +72,3 @@ private slots:
void slotSetCategory( int );
+ void slotSetLetter( char );
void slotUpdateToolbar();
@@ -87,2 +89,3 @@ private:
AbLabel *mView;
+ LetterPicker *pLabel;
AbTable *abList;
diff --git a/core/pim/addressbook/addressbook.pro b/core/pim/addressbook/addressbook.pro
index 53cf030..0d65c74 100644
--- a/core/pim/addressbook/addressbook.pro
+++ b/core/pim/addressbook/addressbook.pro
@@ -7,3 +7,4 @@ HEADERS = addressbook.h \
abtable.h \
- addresssettings.h
+ addresssettings.h \
+ picker.h
SOURCES = main.cpp \
@@ -13,3 +14,4 @@ SOURCES = main.cpp \
abtable.cpp \
- addresssettings.cpp
+ addresssettings.cpp \
+ picker.cpp
INTERFACES = addresssettingsbase.ui
diff --git a/core/pim/addressbook/picker.cpp b/core/pim/addressbook/picker.cpp
new file mode 100644
index 0000000..06dcc7d
--- a/dev/null
+++ b/core/pim/addressbook/picker.cpp
@@ -0,0 +1,234 @@
+#include "picker.h"
+
+#include <qfont.h>
+#include <qstring.h>
+#include <qtimer.h>
+#include <qlayout.h>
+
+char PickerLabel::lastLetter = '\0';
+
+PickerLabel::PickerLabel( QWidget *parent, const char *name )
+ : QLabel ( parent, name )
+{
+ currentLetter = 0;
+ //lastLetter = 0;
+
+ letter1 = '\0';
+ letter2 = '\0';
+ letter3 = '\0';
+
+ setFont( QFont( "smallsmooth", 9 ) );
+ setTextFormat( Qt::RichText );
+
+}
+
+PickerLabel::~PickerLabel()
+{
+
+}
+
+void PickerLabel::setLetters( char ch1, char ch2, char ch3 )
+{
+ QString tmpStr;
+
+ if (ch1 != '\0')
+ letter1 = ch1;
+ else
+ letter1 = ' ';
+
+ if (ch2 != '\0')
+ letter2 = ch2;
+ else
+ letter2 = ' ';
+
+ if (ch3 != '\0')
+ letter3 = ch3;
+ else
+ letter3 = ' ';
+
+ tmpStr = "<qt>";
+ tmpStr += letter1;
+ tmpStr += letter2;
+ tmpStr += letter3;
+ tmpStr += "</qt>";
+
+ setText(tmpStr);
+
+ currentLetter = 0;
+
+}
+
+void PickerLabel::clearLetter()
+{
+
+ QString tmpStr;
+
+ tmpStr = "<qt>";
+ tmpStr += letter1;
+ tmpStr += letter2;
+ tmpStr += letter3;
+ tmpStr += "</qt>";
+
+ setText(tmpStr);
+
+ currentLetter = 0;
+
+}
+
+void PickerLabel::mouseReleaseEvent( QMouseEvent *e )
+{
+ QString tmpStr;
+
+ if (lastLetter != letter1 && lastLetter != letter2 && lastLetter != letter3)
+ QTimer::singleShot( 0, this, SLOT(emitClearSignal()) );
+
+ qDebug( "a" );
+ switch (currentLetter) {
+ case 0:
+ tmpStr = "<qt><font color=\"#7F0000\">";
+ tmpStr += letter1;
+ tmpStr += "</font>";
+ tmpStr += letter2;
+ tmpStr += letter3;
+ tmpStr += "</qt>";
+
+ setText(tmpStr);
+
+ currentLetter++;
+ lastLetter = letter1;
+ emit selectedLetter( letter1 );
+ qDebug( "PickerLabel::mouseReleaseEvent %c", letter1 );
+ break;
+
+ case 1:
+ tmpStr = "<qt>";
+ tmpStr += letter1;
+ tmpStr += "<font color=\"#7F0000\">";
+ tmpStr += letter2;
+ tmpStr += "</font>";
+ tmpStr += letter3;
+ tmpStr += "</qt>";
+
+ setText(tmpStr);
+
+ currentLetter++;
+ lastLetter = letter2;
+ emit selectedLetter( letter2 );
+ qDebug( "PickerLabel::mouseReleaseEvent %c", letter2 );
+ break;
+
+ case 2:
+ tmpStr = "<qt>";
+ tmpStr += letter1;
+ tmpStr += letter2;
+ tmpStr += "<font color=\"#7F0000\">";
+ tmpStr += letter3;
+ tmpStr += "</font></qt>";
+
+ setText(tmpStr);
+
+ currentLetter++;
+ lastLetter = letter3;
+ emit selectedLetter( letter3 );
+ qDebug( "PickerLabel::mouseReleaseEvent %c", letter3 );
+ break;
+
+ default:
+ clearLetter();
+ lastLetter = '\0';
+ emit selectedLetter( '\0' );
+
+
+ }
+}
+
+void PickerLabel::emitClearSignal() {
+ emit clearAll();
+}
+
+LetterPicker::LetterPicker( QWidget *parent, const char *name )
+ : QFrame( parent, name )
+{
+ QHBoxLayout *l = new QHBoxLayout(this);
+
+ lblABC = new PickerLabel( this );
+ l->addWidget( lblABC );
+
+ lblDEF = new PickerLabel( this );
+ l->addWidget( lblDEF );
+
+ lblGHI = new PickerLabel( this );
+ l->addWidget( lblGHI );
+
+ lblJKL = new PickerLabel( this );
+ l->addWidget( lblJKL );
+
+ lblMNO = new PickerLabel( this );
+ l->addWidget( lblMNO );
+
+ lblPQR = new PickerLabel( this );
+ l->addWidget( lblPQR );
+
+ lblSTU = new PickerLabel( this );
+ l->addWidget( lblSTU );
+
+ lblVWX = new PickerLabel( this );
+ l->addWidget( lblVWX );
+
+ lblYZ = new PickerLabel( this );
+ l->addWidget( lblYZ );
+
+ lblABC->setLetters( 'A', 'B', 'C' );
+ lblDEF->setLetters( 'D', 'E', 'F' );
+ lblGHI->setLetters( 'G', 'H', 'I' );
+ lblJKL->setLetters( 'J', 'K', 'L' );
+ lblMNO->setLetters( 'M', 'N', 'O' );
+ lblPQR->setLetters( 'P', 'Q', 'R' );
+ lblSTU->setLetters( 'S', 'T', 'U' );
+ lblVWX->setLetters( 'V', 'W', 'X' );
+ lblYZ->setLetters( 'Y', 'Z', '#' );
+
+ connect(lblABC, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
+ connect(lblDEF, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
+ connect(lblGHI, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
+ connect(lblJKL, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
+ connect(lblMNO, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
+ connect(lblPQR, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
+ connect(lblSTU, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
+ connect(lblVWX, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
+ connect(lblYZ, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
+ connect(lblABC, SIGNAL(clearAll()), this, SLOT(clear()));
+ connect(lblDEF, SIGNAL(clearAll()), this, SLOT(clear()));
+ connect(lblGHI, SIGNAL(clearAll()), this, SLOT(clear()));
+ connect(lblJKL, SIGNAL(clearAll()), this, SLOT(clear()));
+ connect(lblMNO, SIGNAL(clearAll()), this, SLOT(clear()));
+ connect(lblPQR, SIGNAL(clearAll()), this, SLOT(clear()));
+ connect(lblSTU, SIGNAL(clearAll()), this, SLOT(clear()));
+ connect(lblVWX, SIGNAL(clearAll()), this, SLOT(clear()));
+ connect(lblYZ, SIGNAL(clearAll()), this, SLOT(clear()));
+
+}
+
+LetterPicker::~LetterPicker()
+{
+}
+
+void LetterPicker::clear()
+{
+ lblABC->clearLetter();
+ lblDEF->clearLetter();
+ lblGHI->clearLetter();
+ lblJKL->clearLetter();
+ lblMNO->clearLetter();
+ lblPQR->clearLetter();
+ lblSTU->clearLetter();
+ lblVWX->clearLetter();
+ lblYZ->clearLetter();
+}
+
+void LetterPicker::newLetter( char letter )
+{
+ qDebug( "LetterPicker::newLetter %c", letter );
+ emit letterClicked( letter );
+
+}
diff --git a/core/pim/addressbook/picker.h b/core/pim/addressbook/picker.h
new file mode 100644
index 0000000..de5bd9d
--- a/dev/null
+++ b/core/pim/addressbook/picker.h
@@ -0,0 +1,65 @@
+/*
+ * Letter Chooser Widget.
+ *
+ * (c) 2002 Mike Crawford
+ *
+ * This file is FREE SOFTWARE covered under the GUN General Public License.
+ *
+ *
+*/
+#ifndef PICKER_H
+#define PICKER_H
+
+#include <qlabel.h>
+#include <qframe.h>
+#include <qevent.h>
+
+class PickerLabel: public QLabel {
+Q_OBJECT
+ public:
+ PickerLabel( QWidget *parent = 0, const char *name = 0 );
+ ~PickerLabel();
+
+ void setLetters( char ch1, char ch2, char ch3 );
+ void clearLetter();
+
+ signals:
+
+ void selectedLetter( char );
+ void clearAll();
+
+ protected:
+
+ void mouseReleaseEvent( QMouseEvent *e );
+
+ private:
+
+ int currentLetter;
+ static char lastLetter;
+ char letter1, letter2, letter3;
+
+ private slots:
+
+ void emitClearSignal();
+
+};
+class LetterPicker: public QFrame {
+Q_OBJECT
+ public:
+ LetterPicker( QWidget *parent = 0, const char *name = 0 );
+ ~LetterPicker();
+
+ public slots:
+ void clear();
+
+ signals:
+ void letterClicked( char );
+
+ private:
+ PickerLabel *lblABC, *lblDEF, *lblGHI, *lblJKL, *lblMNO, *lblPQR, *lblSTU, *lblVWX, *lblYZ;
+
+ private slots:
+ void newLetter( char letter );
+};
+
+#endif