performance optimization: don't retrieve the meta information immediately when changing the item selection, wait 300 ms until no selection change has been done

svn path=/trunk/KDE/kdebase/apps/; revision=666342
This commit is contained in:
Peter Penz 2007-05-19 14:42:11 +00:00
parent 574f83da8d
commit 72f0ffa77b
2 changed files with 9 additions and 10 deletions

View file

@ -52,7 +52,6 @@
InfoSidebarPage::InfoSidebarPage(QWidget* parent) :
SidebarPage(parent),
m_multipleSelection(false), //TODO: check if I'm needed
m_pendingPreview(false),
m_timer(0),
m_preview(0),
@ -63,6 +62,7 @@ InfoSidebarPage::InfoSidebarPage(QWidget* parent) :
const int spacing = KDialog::spacingHint();
m_timer = new QTimer(this);
m_timer->setSingleShot(true);
connect(m_timer, SIGNAL(timeout()),
this, SLOT(slotTimeout()));
@ -110,7 +110,7 @@ InfoSidebarPage::~InfoSidebarPage()
void InfoSidebarPage::setUrl(const KUrl& url)
{
if (!m_shownUrl.equals(url, KUrl::CompareWithoutTrailingSlash)) {
if (url.isValid() && !m_shownUrl.equals(url, KUrl::CompareWithoutTrailingSlash)) {
cancelRequest();
m_shownUrl = url;
showItemInfo();
@ -119,20 +119,17 @@ void InfoSidebarPage::setUrl(const KUrl& url)
void InfoSidebarPage::setSelection(const KFileItemList& selection)
{
cancelRequest();
SidebarPage::setSelection(selection);
m_multipleSelection = (selection.size() > 1);
showItemInfo();
m_timer->start(TimerDelay);
}
void InfoSidebarPage::requestDelayedItemInfo(const KUrl& url)
{
cancelRequest();
if (!url.isEmpty() && !m_multipleSelection) {
if (!url.isEmpty() && (selection().size() <= 1)) {
m_urlCandidate = url;
m_timer->setSingleShot(true);
m_timer->start(300);
m_timer->start(TimerDelay);
}
}
@ -166,12 +163,13 @@ void InfoSidebarPage::showItemInfo()
const KFileItemList& selectedItems = selection();
KUrl file;
const int itemCount = selectedItems.count();
if (selectedItems.count() == 0) {
file = m_shownUrl;
} else {
file = selectedItems[0]->url();
}
if (m_multipleSelection) {
if (itemCount > 1) {
KIconLoader iconLoader;
QPixmap icon = iconLoader.loadIcon("exec",
K3Icon::NoGroup,

View file

@ -107,6 +107,8 @@ private slots:
void showPreview(const KFileItem& item, const QPixmap& pixmap);
private:
enum { TimerDelay = 300 };
/**
* Checks whether the an URL is repesented by a bookmark. If yes,
* then the bookmark icon and name are shown instead of a preview.
@ -133,7 +135,6 @@ private:
bool showMetaInfo(const QString& key) const;
private:
bool m_multipleSelection;
bool m_pendingPreview;
QTimer* m_timer;
KUrl m_shownUrl;