2
* Copyright (C) 2013 - 2015 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2.1 of the License, or (at your option) any later version.
9
* This library is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Lesser General Public License for more details.
14
* You should have received a copy of the GNU Lesser General Public
15
* License along with this library; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
#ifndef FM_BROWSEHISTORY_H
22
#define FM_BROWSEHISTORY_H
24
#include "libfmqtglobals.h"
30
// class used to story browsing history of folder views
31
// We use this class to replace FmNavHistory provided by libfm since
32
// the original Libfm API is hard to use and confusing.
34
class LIBFM_QT_API BrowseHistoryItem {
42
BrowseHistoryItem(FmPath* path, int scrollPos = 0):
43
path_(fm_path_ref(path)),
44
scrollPos_(scrollPos) {
47
BrowseHistoryItem(const BrowseHistoryItem& other):
48
path_(other.path_ ? fm_path_ref(other.path_) : NULL),
49
scrollPos_(other.scrollPos_) {
52
~BrowseHistoryItem() {
57
BrowseHistoryItem& operator=(const BrowseHistoryItem& other) {
60
path_ = other.path_ ? fm_path_ref(other.path_) : NULL;
61
scrollPos_ = other.scrollPos_;
65
FmPath* path() const {
69
int scrollPos() const {
73
void setScrollPos(int pos) {
80
// TODO: we may need to store current selection as well. reserve room for furutre expansion.
85
class LIBFM_QT_API BrowseHistory : public QVector<BrowseHistoryItem> {
89
virtual ~BrowseHistory();
91
int currentIndex() const {
94
void setCurrentIndex(int index);
96
FmPath* currentPath() const {
97
return at(currentIndex_).path();
100
int currentScrollPos() const {
101
return at(currentIndex_).scrollPos();
104
BrowseHistoryItem& currentItem() {
105
return operator[](currentIndex_);
108
void add(FmPath* path, int scrollPos = 0);
110
bool canForward() const;
112
bool canBackward() const;
118
int maxCount() const {
122
void setMaxCount(int maxCount);
131
#endif // FM_BROWSEHISTORY_H