aseprite/src/app/recent_files.h

61 lines
1.7 KiB
C
Raw Normal View History

2015-02-12 23:16:25 +08:00
// Aseprite
// Copyright (C) 2018-2019 Igara Studio S.A.
// Copyright (C) 2001-2018 David Capello
2015-02-12 23:16:25 +08:00
//
2016-08-27 04:02:58 +08:00
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
2007-09-19 07:57:02 +08:00
#ifndef APP_RECENT_FILES_H_INCLUDED
#define APP_RECENT_FILES_H_INCLUDED
2014-03-30 06:40:17 +08:00
#pragma once
2007-09-19 07:57:02 +08:00
#include "base/paths.h"
#include "obs/signal.h"
#include <string>
2007-09-19 07:57:02 +08:00
namespace app {
2015-02-12 23:16:25 +08:00
class RecentFiles {
enum { kPinnedFiles,
kRecentFiles,
kPinnedFolders,
kRecentFolders,
kCollections };
public:
const base::paths& pinnedFiles() const { return m_paths[kPinnedFiles]; }
const base::paths& recentFiles() const { return m_paths[kRecentFiles]; }
const base::paths& pinnedFolders() const { return m_paths[kPinnedFolders]; }
const base::paths& recentFolders() const { return m_paths[kRecentFolders]; }
2007-09-19 07:57:02 +08:00
RecentFiles(const int limit);
~RecentFiles();
void addRecentFile(const std::string& filename);
void removeRecentFile(const std::string& filename);
void removeRecentFolder(const std::string& dir);
void setLimit(const int newLimit);
void clear();
void setFiles(const base::paths& pinnedFiles,
const base::paths& recentFiles);
void setFolders(const base::paths& pinnedFolders,
const base::paths& recentFolders);
obs::signal<void()> Changed;
private:
std::string normalizePath(const std::string& filename);
void addItem(base::paths& list, const std::string& filename);
void removeItem(base::paths& list, const std::string& filename);
void load();
void save();
base::paths m_paths[kCollections];
int m_limit;
};
} // namespace app
2007-09-19 07:57:02 +08:00
2009-08-18 05:38:00 +08:00
#endif