PCManFM-Qt
 All Classes
tabpage.h
1 /*
2 
3  Copyright (C) 2013 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License along
16  with this program; if not, write to the Free Software Foundation, Inc.,
17  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 
20 
21 #ifndef FM_TABPAGE_H
22 #define FM_TABPAGE_H
23 
24 #include <QWidget>
25 #include <QVBoxLayout>
26 #include <libfm/fm.h>
27 #include "browsehistory.h"
28 #include "view.h"
29 #include "path.h"
30 
31 namespace Fm {
32  class FileLauncher;
33  class FolderModel;
34  class ProxyFolderModel;
35  class CachedFolderModel;
36 };
37 
38 namespace PCManFM {
39 
40 class Settings;
41 class Launcher;
42 
43 class TabPage : public QWidget {
44 Q_OBJECT
45 
46 public:
47  enum StatusTextType {
48  StatusTextNormal,
49  StatusTextSelectedFiles,
50  StatusTextFSInfo,
51  StatusTextNum
52  };
53 
54 public:
55  explicit TabPage(FmPath* path, QWidget* parent = 0);
56  virtual ~TabPage();
57 
58  void chdir(FmPath* newPath, bool addHistory = true);
59 
60  Fm::FolderView::ViewMode viewMode() {
61  return folderView_->viewMode();
62  }
63 
64  void setViewMode(Fm::FolderView::ViewMode mode) {
65  folderView_->setViewMode(mode);
66  }
67 
68  void sort(int col, Qt::SortOrder order = Qt::AscendingOrder) {
69  // if(folderModel_)
70  // folderModel_->sort(col, order);
71  if(proxyModel_)
72  proxyModel_->sort(col, order);
73  }
74 
75  int sortColumn() {
76  return proxyModel_->sortColumn();
77  }
78 
79  Qt::SortOrder sortOrder() {
80  return proxyModel_->sortOrder();
81  }
82 
83  bool sortFolderFirst() {
84  return proxyModel_->folderFirst();
85  }
86  void setSortFolderFirst(bool value) {
87  proxyModel_->setFolderFirst(value);
88  }
89 
90  bool sortCaseSensitive() {
91  return proxyModel_->sortCaseSensitivity();
92  }
93  void setSortCaseSensitive(bool value) {
94  proxyModel_->setSortCaseSensitivity(value ? Qt::CaseSensitive : Qt::CaseInsensitive);
95  }
96 
97  bool showHidden() {
98  return proxyModel_->showHidden();
99  }
100 
101  void setShowHidden(bool showHidden) {
102  proxyModel_->setShowHidden(showHidden);
103  }
104 
105  FmPath* path() {
106  return folder_ ? fm_folder_get_path(folder_) : NULL;
107  }
108 
109  QString pathName();
110 
111  FmFolder* folder() {
112  return folder_;
113  }
114 
115  Fm::FolderModel* folderModel() {
116  return reinterpret_cast<Fm::FolderModel*>(folderModel_);
117  }
118 
119  View* folderView() {
120  return folderView_;
121  }
122 
123  Fm::BrowseHistory& browseHistory() {
124  return history_;
125  }
126 
127  FmFileInfoList* selectedFiles() {
128  return folderView_->selectedFiles();
129  }
130 
131  FmPathList* selectedFilePaths() {
132  return folderView_->selectedFilePaths();
133  }
134 
135  void selectAll();
136 
137  void invertSelection();
138 
139  void reload() {
140  if(folder_)
141  fm_folder_reload(folder_);
142  }
143 
144  QString title() const {
145  return title_;
146  }
147 
148  QString statusText(StatusTextType type = StatusTextNormal) const {
149  return statusText_[type];
150  }
151 
152  bool canBackward() {
153  return history_.canBackward();
154  }
155 
156  void backward();
157 
158  bool canForward() {
159  return history_.canForward();
160  }
161 
162  void forward();
163 
164  void jumpToHistory(int index);
165 
166  bool canUp();
167 
168  void up();
169 
170  void updateFromSettings(Settings& settings);
171 
172  void setFileLauncher(Fm::FileLauncher* launcher) {
173  folderView_->setFileLauncher(launcher);
174  }
175 
176  Fm::FileLauncher* fileLauncher() {
177  return folderView_->fileLauncher();
178  }
179 
180 Q_SIGNALS:
181  void statusChanged(int type, QString statusText);
182  void titleChanged(QString title);
183  void openDirRequested(FmPath* path, int target);
184  void sortFilterChanged();
185 
186 protected Q_SLOTS:
187  void onOpenDirRequested(FmPath* path, int target);
188  void onModelSortFilterChanged();
189  void onSelChanged(int numSel);
190  void restoreScrollPos();
191 
192 private:
193  void freeFolder();
194  QString formatStatusText();
195 
196  static void onFolderStartLoading(FmFolder* _folder, TabPage* pThis);
197  static void onFolderFinishLoading(FmFolder* _folder, TabPage* pThis);
198  static FmJobErrorAction onFolderError(FmFolder* _folder, GError* err, FmJobErrorSeverity severity, TabPage* pThis);
199  static void onFolderFsInfo(FmFolder* _folder, TabPage* pThis);
200  static void onFolderRemoved(FmFolder* _folder, TabPage* pThis);
201  static void onFolderUnmount(FmFolder* _folder, TabPage* pThis);
202  static void onFolderContentChanged(FmFolder* _folder, TabPage* pThis);
203 
204 private:
205  View* folderView_;
206  Fm::CachedFolderModel* folderModel_;
207  Fm::ProxyFolderModel* proxyModel_;
208  QVBoxLayout* verticalLayout;
209  FmFolder* folder_;
210  QString title_;
211  QString statusText_[StatusTextNum];
212  Fm::BrowseHistory history_; // browsing history
213  bool overrideCursor_;
214 };
215 
216 }
217 
218 #endif // FM_TABPAGE_H
Definition: appchoosercombobox.cpp:26
Definition: settings.h:33
Definition: foldermodel.h:37
Definition: view.h:35
Definition: tabpage.h:43
Definition: browsehistory.h:85
Definition: proxyfoldermodel.h:43
Definition: application.h:38
Definition: cachedfoldermodel.h:29
Definition: filelauncher.h:30