Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Slots | Signals | Public Member Functions | Private Member Functions | Private Attributes
omni::ui::RecentSessions Class Reference

Data structure and menu to store default sessions. More...

#include <RecentSessions.h>

Inheritance diagram for omni::ui::RecentSessions:
Inheritance graph
[legend]
Collaboration diagram for omni::ui::RecentSessions:
Collaboration graph
[legend]

Public Slots

void clear ()
 Clear list of recent files. More...
 
void addFile (QString const &)
 Add a new file to list. More...
 
void setNumberOfFiles (int)
 Set maximum number of files. More...
 
void setActionStates ()
 Disable action for which file does not exists. More...
 

Signals

void fileToBeLoaded (QString const &)
 

Public Member Functions

 RecentSessions (QObject *=nullptr)
 
 ~RecentSessions ()
 
QMenu * menu ()
 Return pointer to menu. More...
 
void readFromSettings ()
 Read recent files from settings. More...
 
void writeToSettings () const
 Write recent files to settings. More...
 
int numberOfFiles () const
 Return maximum number of files. More...
 

Private Member Functions

void addFile (QString const &, bool _regenerateMenu)
 Add file and optionally regenerate menu. More...
 
int fileInList (QString const &) const
 Return index of file if in list, return -1 if not. More...
 
void generateMenu ()
 Generate menu from recent files, create new menu if necessary. More...
 

Private Attributes

std::deque< QString > recentFiles_
 
std::vector< RecentFileAction * > actions_
 
QUniquePtr< QMenu > menu_
 
int numberOfFiles_ = 16
 

Detailed Description

Data structure and menu to store default sessions.

Constructor & Destructor Documentation

omni::ui::RecentSessions::RecentSessions ( QObject *  _parent = nullptr)
52  : QObject(_parent) {
53  generateMenu();
54  }
void generateMenu()
Generate menu from recent files, create new menu if necessary.
Definition: RecentSessions.cpp:140
omni::ui::RecentSessions::~RecentSessions ( )
56 {}

Member Function Documentation

void omni::ui::RecentSessions::addFile ( QString const &  _file)
slot

Add a new file to list.

67  {
68  addFile(_file,true);
69  }
void addFile(QString const &)
Add a new file to list.
Definition: RecentSessions.cpp:67
void omni::ui::RecentSessions::addFile ( QString const &  _file,
bool  _regenerateMenu 
)
private

Add file and optionally regenerate menu.

71  {
72  int _index = fileInList(_file);
73 
74  if (_index != -1) {
75  recentFiles_.erase(recentFiles_.begin() + _index);
76  }
77 
78  recentFiles_.push_front(_file);
79 
80  if (recentFiles_.size() > numberOfFiles_) {
81  recentFiles_.pop_back();
82  }
83 
84  if (_regenerateMenu) {
85  generateMenu();
86  }
87  }
void generateMenu()
Generate menu from recent files, create new menu if necessary.
Definition: RecentSessions.cpp:140
std::deque< QString > recentFiles_
Definition: RecentSessions.h:99
int numberOfFiles_
Definition: RecentSessions.h:102
int fileInList(QString const &) const
Return index of file if in list, return -1 if not.
Definition: RecentSessions.cpp:89
void omni::ui::RecentSessions::clear ( )
slot

Clear list of recent files.

129  {
130  recentFiles_.clear();
131  generateMenu();
132  }
void generateMenu()
Generate menu from recent files, create new menu if necessary.
Definition: RecentSessions.cpp:140
std::deque< QString > recentFiles_
Definition: RecentSessions.h:99
int omni::ui::RecentSessions::fileInList ( QString const &  _file) const
private

Return index of file if in list, return -1 if not.

89  {
90  int _index = 0;
91 
92  for (auto& _sessionFile : recentFiles_) {
93  if (_sessionFile == _file) return _index;
94 
95  ++_index;
96  }
97  return -1;
98  }
std::deque< QString > recentFiles_
Definition: RecentSessions.h:99
void omni::ui::RecentSessions::fileToBeLoaded ( QString const &  )
signal
void omni::ui::RecentSessions::generateMenu ( )
private

Generate menu from recent files, create new menu if necessary.

140  {
141  if (!menu_) {
142  menu_.reset(new QMenu());
143  connect(menu_.get(),SIGNAL(aboutToShow()),this,SLOT(setActionStates()));
144  }
145 
146  menu_->clear();
147  actions_.clear();
148 
149  for (auto& _file : recentFiles_) {
150  auto* _action = new RecentFileAction(_file);
151  connect(_action,SIGNAL(fileToBeLoaded(QString const&)),
152  this,SIGNAL(fileToBeLoaded(QString const&)));
153  menu_->addAction(_action);
154  actions_.push_back(_action);
155  }
156 
157  if (!recentFiles_.empty()) {
158  menu_->addSeparator();
159  auto *_clearAction = menu_->addAction("Clear menu");
160  connect(_clearAction, SIGNAL(triggered()), this, SLOT(clear()));
161  } else {
162  auto *_placeholder = menu_->addAction("No recent files");
163  _placeholder->setEnabled(false);
164  }
165  }
std::deque< QString > recentFiles_
Definition: RecentSessions.h:99
std::vector< RecentFileAction * > actions_
Definition: RecentSessions.h:100
QUniquePtr< QMenu > menu_
Definition: RecentSessions.h:101
void clear()
Clear list of recent files.
Definition: RecentSessions.cpp:129
void fileToBeLoaded(QString const &)
void setActionStates()
Disable action for which file does not exists.
Definition: RecentSessions.cpp:134
QMenu * omni::ui::RecentSessions::menu ( )

Return pointer to menu.

100  {
101  return menu_.get();
102  }
QUniquePtr< QMenu > menu_
Definition: RecentSessions.h:101
int omni::ui::RecentSessions::numberOfFiles ( ) const

Return maximum number of files.

63  {
64  return numberOfFiles_;
65  }
int numberOfFiles_
Definition: RecentSessions.h:102
void omni::ui::RecentSessions::readFromSettings ( )

Read recent files from settings.

104  {
105 
106  auto& _settings = Application::settings();
107 
108  int _size = _settings.beginReadArray("recentFiles");
109  for (int i = 0; i < _size; ++i) {
110  _settings.setArrayIndex(i);
111  addFile(_settings.value("file").toString(),false);
112  }
113  _settings.endArray();
114  generateMenu();
115  }
void generateMenu()
Generate menu from recent files, create new menu if necessary.
Definition: RecentSessions.cpp:140
static QSettings & settings()
Application settings to be saved.
Definition: Application.cpp:75
void addFile(QString const &)
Add a new file to list.
Definition: RecentSessions.cpp:67
void omni::ui::RecentSessions::setActionStates ( )
slot

Disable action for which file does not exists.

134  {
135  for (auto& _action : actions_) {
136  _action->setState();
137  }
138  }
std::vector< RecentFileAction * > actions_
Definition: RecentSessions.h:100
void omni::ui::RecentSessions::setNumberOfFiles ( int  _numberOfFiles)
slot

Set maximum number of files.

59  {
60  numberOfFiles_ = _numberOfFiles;
61  }
int numberOfFiles_
Definition: RecentSessions.h:102
void omni::ui::RecentSessions::writeToSettings ( ) const

Write recent files to settings.

117  {
118  auto& _settings = Application::settings();
119 
120  _settings.beginWriteArray("recentFiles");
121  for (int i = 0; i < recentFiles_.size(); ++i) {
122  auto& _file = recentFiles_[i];
123  _settings.setArrayIndex(i);
124  _settings.setValue("file",_file);
125  }
126  _settings.endArray();
127  }
std::deque< QString > recentFiles_
Definition: RecentSessions.h:99
static QSettings & settings()
Application settings to be saved.
Definition: Application.cpp:75

Field Documentation

std::vector<RecentFileAction*> omni::ui::RecentSessions::actions_
private
QUniquePtr<QMenu> omni::ui::RecentSessions::menu_
private
int omni::ui::RecentSessions::numberOfFiles_ = 16
private
std::deque<QString> omni::ui::RecentSessions::recentFiles_
private

The documentation for this class was generated from the following files: