1 /******************************************************************************
2  *
3  *  SPDX-FileCopyrightText: 2008 Szymon Tomasz Stefanek <pragma@kvirc.net>
4  *
5  *  SPDX-License-Identifier: GPL-2.0-or-later
6  *
7  *******************************************************************************/
8 
9 #pragma once
10 
11 namespace MessageList
12 {
13 namespace Core
14 {
15 /**
16  * Pre-selection is the action of automatically selecting a message just after the folder
17  * has finished loading. We may want to select the message that was selected the last
18  * time this folder has been open, or we may want to select the first unread message.
19  * We also may want to do no pre-selection at all (for example, when the user
20  * starts navigating the view before the pre-selection could actually be made
21  * and pre-selecting would confuse him). This member holds the option.
22  *
23  * All the modes except PreSelectNone try to fallback to "PreSelectLastSelected" when the
24  * specified item isn't found.
25  *
26  * See Model::setStorageModel() for more information.
27  */
28 enum PreSelectionMode {
29     PreSelectNone, //< no pre-selection at all
30     PreSelectLastSelected, //< pre-select the last message that was selected in this folder (default)
31     PreSelectFirstUnreadCentered, //< pre-select the first unread message and center it
32     PreSelectNewestCentered, //< pre-select the newest message, by date
33     PreSelectOldestCentered //< pre-select the oldest message, by date
34 };
35 
36 /**
37  * This enum is used in the view message selection functions (for instance View::nextMessageItem()).
38  */
39 enum MessageTypeFilter {
40     MessageTypeAny, //< Select any message
41     MessageTypeUnreadOnly //< Select only unread messages
42 };
43 
44 /**
45  * This enum is used in the view message selection functions (for instance View::selectNextMessage())
46  */
47 enum ExistingSelectionBehaviour {
48     ClearExistingSelection, //< Clear the existing selection before selecting the new item
49     ExpandExistingSelection, //< Preserve the existing selection (grow only)
50     GrowOrShrinkExistingSelection //< Grow or shrink the existing selection depending on what item is actually being selected
51 };
52 }
53 }
54 
55