diff options
author | Lubos Dolezel <lubos@dolezel.info> | 2015-06-02 22:31:25 +0200 |
---|---|---|
committer | Lubos Dolezel <lubos@dolezel.info> | 2015-06-02 22:31:25 +0200 |
commit | c13aae57cafa35b8f3e5f5aa15c92295134d6b34 (patch) | |
tree | 258e045b685134c83a2a7f81b5ed1680196834c3 | |
parent | 8804957816e222803b8a4014aacc240cc7f301a1 (diff) | |
download | twinkle-c13aae57cafa35b8f3e5f5aa15c92295134d6b34.tar twinkle-c13aae57cafa35b8f3e5f5aa15c92295134d6b34.tar.gz twinkle-c13aae57cafa35b8f3e5f5aa15c92295134d6b34.tar.lz twinkle-c13aae57cafa35b8f3e5f5aa15c92295134d6b34.tar.xz twinkle-c13aae57cafa35b8f3e5f5aa15c92295134d6b34.zip |
Implemented sorting in the address book
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/gui/addresstablemodel.cpp | 25 | ||||
-rw-r--r-- | src/gui/addresstablemodel.h | 1 | ||||
-rw-r--r-- | src/gui/getaddressform.ui | 3 |
4 files changed, 30 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 48a5eab..4a66b76 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,7 @@ cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR) set(PRODUCT_VERSION "1.9.0") set(PRODUCT_DATE "June 1, 2015") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") OPTION(WITH_ZRTP "Enable ZRTP encrypted calls" OFF) OPTION(WITH_SPEEX "Enable the Speex codec" OFF) diff --git a/src/gui/addresstablemodel.cpp b/src/gui/addresstablemodel.cpp index 2e7120c..9fc21fc 100644 --- a/src/gui/addresstablemodel.cpp +++ b/src/gui/addresstablemodel.cpp @@ -101,3 +101,28 @@ void AddressTableModel::modifyAddress(int index, const t_address_card& card) emit dataChanged(createIndex(index, 0), createIndex(index, 2)); } +void AddressTableModel::sort(int column, Qt::SortOrder order) +{ + qSort(m_data.begin(), m_data.end(), [=](const t_address_card& a1, const t_address_card& a2) -> bool { + bool retval = false; + + switch (column) + { + case COL_ADDR_NAME: + retval = QString::fromStdString(a1.get_display_name()) < QString::fromStdString(a2.get_display_name()); + break; + case COL_ADDR_PHONE: + retval = a1.sip_address.compare(a2.sip_address) < 0; + break; + case COL_ADDR_REMARK: + retval = a1.remark.compare(a2.remark) < 0; + break; + } + + if (order == Qt::DescendingOrder) + retval = !retval; + return retval; + }); + + emit dataChanged(createIndex(0, 0), createIndex(m_data.size()-1, 2)); +} diff --git a/src/gui/addresstablemodel.h b/src/gui/addresstablemodel.h index 847ee05..c38b9ac 100644 --- a/src/gui/addresstablemodel.h +++ b/src/gui/addresstablemodel.h @@ -34,6 +34,7 @@ public: virtual int columnCount(const QModelIndex &parent) const; virtual QVariant data(const QModelIndex &index, int role) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const; + virtual void sort(int column, Qt::SortOrder order); void appendAddress(const t_address_card& card); void removeAddress(int index); diff --git a/src/gui/getaddressform.ui b/src/gui/getaddressform.ui index c288384..0682f2a 100644 --- a/src/gui/getaddressform.ui +++ b/src/gui/getaddressform.ui @@ -139,6 +139,9 @@ <property name="selectionBehavior"> <enum>QAbstractItemView::SelectRows</enum> </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> <property name="columnCount" stdset="0"> <number>3</number> </property> |