00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "recentmenu.hpp"
00021
00022 using namespace QExtend;
00023
00024 RecentMenu::RecentMenu(const QString &title, QWidget *parent) :
00025 QMenu(title, parent), m_clearItem(true), m_maxSize(10)
00026 {
00027 connect(this, SIGNAL(triggered(QAction*)), this, SLOT(clicked(QAction*)));
00028 update();
00029 }
00030
00031 void RecentMenu::addRecent(const QString &filename)
00032 {
00033 m_filenames.removeAll(filename);
00034 m_filenames.prepend(filename);
00035
00036 while(m_filenames.size() > maxSize())
00037 m_filenames.removeLast();
00038
00039 update();
00040 }
00041
00042 void RecentMenu::clear()
00043 {
00044 m_filenames.clear();
00045 update();
00046 }
00047
00048 void RecentMenu::update()
00049 {
00050 QMenu::clear();
00051 if(m_filenames.isEmpty())
00052 {
00053 setEnabled(false);
00054 }
00055 else
00056 {
00057 setEnabled(true);
00058
00059 foreach(QString filename, m_filenames)
00060 {
00061 addAction(filename);
00062 }
00063
00064 if(clearItem())
00065 {
00066 addSeparator();
00067 QAction* action = addAction(tr("Clear list"));
00068 connect(action, SIGNAL(triggered()), this, SLOT(clear()));
00069 }
00070 }
00071 }
00072
00073 void RecentMenu::clicked(QAction* action)
00074 {
00075 emit openFile(action->text());
00076 }
00077
00078 bool RecentMenu::clearItem() const
00079 {
00080 return m_clearItem;
00081 }
00082
00083 void RecentMenu::setClearItem(const bool value)
00084 {
00085 m_clearItem = value;
00086 }
00087
00088 int RecentMenu::maxSize() const
00089 {
00090 return m_maxSize;
00091 }
00092
00093 void RecentMenu::setMaxSize(const int value)
00094 {
00095 m_maxSize = value;
00096 }
Les sources présentées sur cette page sont libres de droits
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une œuvre intellectuelle protégée par les droits d'auteur.
Copyright © 2010 Developpez LLC.
Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne
peut être faite de ce site ni de l'ensemble de son contenu : textes, documents
et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez
selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.