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 );
172 if ( d->m_urls[action].pathOrUrl().endsWith(file) )
185 d->m_noEntriesAction->setVisible(
false);
186 d->clearSeparator->setVisible(
true);
187 d->clearAction->setVisible(
true);
204 button->insertAction(button->actions().value(0),
action);
206 foreach (
KComboBox* comboBox, d->m_comboBoxes)
207 comboBox->insertAction(comboBox->actions().value(0),
action);
209 menu()->insertAction(menu()->
actions().value(0), action);
211 d->m_shortNames.insert( action, name );
212 d->m_urls.insert( action, url );
220 d->m_shortNames.remove( action );
221 d->m_urls.remove( action );
230 if (it.value() == url) {
239 return d->m_urls.values ();
248 void KRecentFilesAction::clearEntries()
252 d->m_shortNames.clear();
254 d->m_noEntriesAction->setVisible(
true);
255 d->clearSeparator->setVisible(
false);
256 d->clearAction->setVisible(
false);
273 if ( cg.
name().isEmpty())
276 bool thereAreEntries=
false;
278 for(
int i = 1 ; i <= d->m_maxItems ; i++ )
280 key =
QString(
"File%1" ).arg( i );
282 if (value.isEmpty())
continue;
290 if (d->m_urls.values().contains(url))
296 value = QDir::toNativeSeparators( value );
299 nameKey =
QString(
"Name%1" ).arg( i );
304 thereAreEntries=
true;
310 d->m_noEntriesAction->setVisible(
false);
311 d->clearSeparator->setVisible(
true);
312 d->clearAction->setVisible(
true);
325 if (cg.
name().isEmpty())
333 key =
QString(
"File%1" ).arg( i );
337 key =
QString(
"Name%1" ).arg( i );
347 #include "krecentfilesaction.moc"