21 #ifndef PCMANFM_DESKTOPWINDOW_H
22 #define PCMANFM_DESKTOPWINDOW_H
26 #include <unordered_map>
34 #include <libfm-qt/core/folder.h>
37 class CachedFolderModel;
38 class ProxyFolderModel;
39 class FolderViewListView;
63 void setForeground(
const QColor& color);
64 void setShadow(
const QColor& color);
65 void setBackground(
const QColor& color);
66 void setDesktopFolder();
67 void setWallpaperFile(QString filename);
68 void setWallpaperMode(WallpaperMode mode = WallpaperStretch);
69 void setLastSlide(QString filename);
70 void setWallpaperDir(QString dirname);
71 void setSlideShowInterval(
int interval);
72 void setWallpaperRandomize(
bool randomize);
75 void updateWallpaper();
78 void updateFromSettings(
Settings& settings,
bool changeSlide =
true);
80 void queueRelayout(
int delay = 0);
82 int screenNum()
const {
86 void setScreenNum(
int num);
88 QScreen* getDesktopScreen()
const;
91 virtual void prepareFolderMenu(Fm::FolderMenu* menu)
override;
92 virtual void prepareFileMenu(Fm::FileMenu* menu)
override;
93 virtual void resizeEvent(QResizeEvent* event)
override;
94 virtual void onFileClicked(
int type,
const std::shared_ptr<const Fm::FileInfo>& fileInfo)
override;
96 void loadItemPositions();
97 void saveItemPositions();
99 QImage loadWallpaperFile(QSize requiredSize);
101 virtual bool event(QEvent* event)
override;
102 virtual bool eventFilter(QObject* watched, QEvent* event)
override;
104 virtual void childDragMoveEvent(QDragMoveEvent* e)
override;
105 virtual void childDropEvent(QDropEvent* e)
override;
106 virtual void closeEvent(QCloseEvent* event)
override;
107 virtual void paintEvent(QPaintEvent* event)
override;
110 void onOpenDirRequested(
const Fm::FilePath& path,
int target);
111 void onDesktopPreferences();
113 void toggleDesktop();
115 void onRowsAboutToBeRemoved(
const QModelIndex& parent,
int start,
int end);
116 void onRowsInserted(
const QModelIndex& parent,
int start,
int end);
117 void onLayoutChanged();
118 void onModelSortFilterChanged();
119 void onDataChanged(
const QModelIndex& topLeft,
const QModelIndex& bottomRight);
120 void onFolderStartLoading();
121 void onFolderFinishLoading();
122 void onFilesAdded(
const Fm::FileInfoList files);
124 void relayoutItems();
125 void onStickToCurrentPos(
bool toggled);
130 void onCutActivated();
131 void onCopyActivated();
132 void onCopyFullPathActivated();
133 void onPasteActivated();
134 void onRenameActivated();
135 void onBulkRenameActivated();
136 void onDeleteActivated();
137 void onFilePropertiesActivated();
139 void updateTrashIcon();
142 void removeBottomGap();
143 void addDesktopActions(QMenu* menu);
144 void paintBackground(QPaintEvent* event);
145 void paintDropIndicator();
146 bool stickToPosition(
const std::string& file, QPoint& pos,
const QRect& workArea,
const QSize& grid,
bool reachedLastCell =
false);
147 static void alignToGrid(QPoint& pos,
const QPoint& topLeft,
const QSize& grid,
const int spacing);
149 void updateShortcutsFromSettings(
Settings& settings);
150 void createTrashShortcut(
int items);
151 void createHomeShortcut();
152 void createComputerShortcut();
153 void createNetworkShortcut();
156 static void onTrashChanged(GFileMonitor* monitor, GFile* gf, GFile* other, GFileMonitorEvent evt,
DesktopWindow* pThis);
157 void trustOurDesktopShortcut(std::shared_ptr<const Fm::FileInfo> file);
158 bool isTrashCan(std::shared_ptr<const Fm::FileInfo> file);
161 Fm::ProxyFolderModel* proxyModel_;
162 Fm::CachedFolderModel* model_;
163 std::shared_ptr<Fm::Folder> folder_;
164 Fm::FolderViewListView* listView_;
169 QString wallpaperFile_;
170 WallpaperMode wallpaperMode_;
172 QString wallpaperDir_;
173 int slideShowInterval_;
174 QTimer* wallpaperTimer_;
175 bool wallpaperRandomize_;
176 QPixmap wallpaperPixmap_;
179 bool desktopHideItems_;
182 std::unordered_map<std::string, QPoint> customItemPos_;
183 QHash<QModelIndex, QString> displayNames_;
184 QTimer* relayoutTimer_;
185 QTimer* selectionTimer_;
189 QTimer* trashUpdateTimer_;
190 GFileMonitor* trashMonitor_;
195 #endif // PCMANFM_DESKTOPWINDOW_H