29 #include "krecentfilesaction_p.h"
31 #include <QtCore/QFile>
32 #include <QtGui/QDesktopWidget>
34 #include <QtCore/QDir>
75 void KRecentFilesActionPrivate::init()
79 q->setMenu(
new KMenu());
81 m_noEntriesAction = q->menu()->addAction(
i18n(
"No Entries"));
82 m_noEntriesAction->setEnabled(
false);
83 clearSeparator = q->menu()->addSeparator();
84 clearSeparator->setVisible(
false);
85 clearAction = q->menu()->addAction(
i18n(
"Clear List"), q, SLOT(
clear()));
86 clearAction->setVisible(
false);
88 q->connect(q, SIGNAL(triggered(
QAction*)), SLOT(_k_urlSelected(
QAction*)));
95 void KRecentFilesActionPrivate::_k_urlSelected(
QAction* action )
98 emit q->urlSelected(m_urls[action]);
104 return d->m_maxItems;
124 const QDesktopWidget desktopWidget;
125 int maxWidthForTitles = INT_MAX;
126 for (
int i = 0; i < desktopWidget.screenCount(); ++i) {
127 maxWidthForTitles = qMin(maxWidthForTitles, desktopWidget.availableGeometry(i).width() * 3 / 4);
129 const QFontMetrics fontMetrics = QFontMetrics(
QFont());
131 QString title = nameValue +
" [" + value +
']';
132 if (fontMetrics.width(title) > maxWidthForTitles){
135 const int nameValueMaxWidth = maxWidthForTitles * 3 / 4;
136 const int nameWidth = fontMetrics.width(nameValue);
137 QString cutNameValue, cutValue;
138 if (nameWidth > nameValueMaxWidth) {
139 cutNameValue = fontMetrics.elidedText(nameValue, Qt::ElideMiddle, nameValueMaxWidth);
140 cutValue = fontMetrics.elidedText(value, Qt::ElideMiddle, maxWidthForTitles - nameValueMaxWidth);
142 cutNameValue = nameValue;
143 cutValue = fontMetrics.elidedText(value, Qt::ElideMiddle, maxWidthForTitles - nameWidth);
145 title = cutNameValue +
" [" + cutValue +
']';
158 const KUrl url( _url );
173 const QString tmpFileName = url.
isLocalFile() ? QDir::toNativeSeparators( d->m_urls[action].pathOrUrl() ) : d->m_urls[action].pathOrUrl();
174 if ( tmpFileName.endsWith(file) )
176 if ( d->m_urls[action].pathOrUrl().endsWith(file) )
190 d->m_noEntriesAction->setVisible(
false);
191 d->clearSeparator->setVisible(
true);
192 d->clearAction->setVisible(
true);
209 button->insertAction(button->actions().value(0),
action);
211 foreach (
KComboBox* comboBox, d->m_comboBoxes)
212 comboBox->insertAction(comboBox->actions().value(0),
action);
214 menu()->insertAction(menu()->
actions().value(0), action);
216 d->m_shortNames.insert( action, name );
217 d->m_urls.insert( action, url );
225 d->m_shortNames.remove( action );
226 d->m_urls.remove( action );
235 if (it.value() == url) {
244 return d->m_urls.values ();
253 void KRecentFilesAction::clearEntries()
257 d->m_shortNames.clear();
259 d->m_noEntriesAction->setVisible(
true);
260 d->clearSeparator->setVisible(
false);
261 d->clearAction->setVisible(
false);
278 if ( cg.
name().isEmpty())
281 bool thereAreEntries=
false;
283 for(
int i = 1 ; i <= d->m_maxItems ; i++ )
285 key =
QString(
"File%1" ).arg( i );
287 if (value.isEmpty())
continue;
295 if (d->m_urls.values().contains(url))
301 value = QDir::toNativeSeparators( value );
304 nameKey =
QString(
"Name%1" ).arg( i );
309 thereAreEntries=
true;
315 d->m_noEntriesAction->setVisible(
false);
316 d->clearSeparator->setVisible(
true);
317 d->clearAction->setVisible(
true);
330 if (cg.
name().isEmpty())
338 key =
QString(
"File%1" ).arg( i );
342 key =
QString(
"Name%1" ).arg( i );
352 #include "krecentfilesaction.moc"