2 Situare - A location system for Facebook
3 Copyright (C) 2010 Ixonos Plc. Authors:
5 Jussi Laitinen - jussi.laitinen@ixonos.com
7 Situare is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License
9 version 2 as published by the Free Software Foundation.
11 Situare is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with Situare; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
25 #include <QListWidget>
31 * @brief View for ListItems.
33 * ListView is used to show ListItems in list view. Items can be added, removed or
36 * @author Jussi Laitinen - jussi.laitinen (at) ixonos.com
38 class ListView : public QListWidget
46 * @param parent QWidget
48 ListView(QWidget *parent = 0);
53 * Calls ListView::clearList().
57 /******************************************************************************
58 * MEMBER FUNCTIONS AND SLOTS
59 ******************************************************************************/
62 * @brief Add item to view and item list.
65 * @param item item to add to view and list
67 void addListItem(const QString &key, ListItem *item);
70 * @brief Adds item to view.
72 * @param item FriendListItem
74 void addListItemToView(ListItem *item);
77 * @brief Clear unused items from view.
79 * Clears items which are not in item ID's list from the view and items list.
81 * @param itemIDs list of item ID's to keep in list view
83 void clearUnused(const QStringList &itemIDs);
86 * @brief Clears filtering from list.
88 * Clears m_filteredItemIDs and shows all items.
93 * @brief Deselects all selected items.
95 void clearItemSelection();
100 * Items are removed from view and item list.
105 * @brief Checks if view contains item with userID.
107 * @param userID user's ID
108 * @return true if view contains item, false otherwise
110 bool contains(const QString &userID);
113 * @brief Filters list by item IDs.
115 * Hide all items that are not in the itemIDs list.
117 * @param itemIDs item ID's for items that are shown
119 void filter(const QList<QString> &itemIDs);
122 * @brief Filters list by text pattern.
124 * Filtering uses item names. If filtering by item IDs is on, filters only those items.
126 * @param pattern text pattern to filter
128 void filter(const QString &pattern);
131 * @brief Takes item from view.
133 * Item is not deleted.
135 * @param itemID item's ID
138 ListItem *takeListItemFromView(const QString &itemID);
141 * @brief Returns ListItem with itemID.
143 * @param itemID item's ID
146 ListItem *listItem(const QString &itemID);
149 * @brief Returns ListItem by index.
151 * @param index item's index
154 ListItem *listItemAt(int index);
157 * @brief Returns selected ListItem.
159 * @return ListItem if there is selected, 0 otherwise
161 ListItem *selectedItem();
164 * @brief Sets selected item.
166 * @param item ListItem to select
168 void setSelectedItem(ListItem *item);
172 * @brief Slot for list item clicked.
174 * Toggles items selection state and emits listItemClicked signal.
175 * @param clickedItem clicked ListItem
176 * @return true if item was selected, false otherwise
178 virtual bool listItemClicked(ListItem *clickedItem);
182 * @brief Slot for list item clicked.
184 * Calls listItemClicked(ListItem *item)
185 * @param item QListWidgetItem
187 void listItemClicked(QListWidgetItem *item);
190 void listItemSelectionChanged();
192 /*******************************************************************************
194 ******************************************************************************/
196 QHash<QString, ListItem *> m_listItems; ///< List of items in this view. Key = user ID
198 QList<QString> m_filteredItemIDs; ///< List of filtered item IDs
200 ListItem *m_currentItem; ///< Previously selected item