summaryrefslogtreecommitdiffstats
path: root/konq-plugins/dirfilter
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit84da08d7b7fcda12c85caeb5a10b4903770a6f69 (patch)
tree2a6aea76f2dfffb4cc04bb907c4725af94f70e72 /konq-plugins/dirfilter
downloadtdeaddons-84da08d7b7fcda12c85caeb5a10b4903770a6f69.tar.gz
tdeaddons-84da08d7b7fcda12c85caeb5a10b4903770a6f69.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeaddons@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'konq-plugins/dirfilter')
-rw-r--r--konq-plugins/dirfilter/Makefile.am19
-rw-r--r--konq-plugins/dirfilter/dirfilterplugin.cpp492
-rw-r--r--konq-plugins/dirfilter/dirfilterplugin.desktop125
-rw-r--r--konq-plugins/dirfilter/dirfilterplugin.h132
-rw-r--r--konq-plugins/dirfilter/dirfilterplugin.rc13
5 files changed, 781 insertions, 0 deletions
diff --git a/konq-plugins/dirfilter/Makefile.am b/konq-plugins/dirfilter/Makefile.am
new file mode 100644
index 0000000..fe81189
--- /dev/null
+++ b/konq-plugins/dirfilter/Makefile.am
@@ -0,0 +1,19 @@
+kde_module_LTLIBRARIES = libdirfilterplugin.la
+
+AM_CPPFLAGS = $(all_includes)
+METASOURCES = AUTO
+
+libdirfilterplugin_la_SOURCES = dirfilterplugin.cpp
+libdirfilterplugin_la_LIBADD = -lkonq
+libdirfilterplugin_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries)
+
+iconviewdir = $(kde_datadir)/konqiconview/kpartplugins
+iconview_DATA = dirfilterplugin.rc dirfilterplugin.desktop
+listviewdir = $(kde_datadir)/konqlistview/kpartplugins
+listview_DATA = dirfilterplugin.rc dirfilterplugin.desktop
+
+appsdir = $(kde_appsdir)/.hidden
+apps_DATA = dirfilterplugin.desktop
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp *.h -o $(podir)/dirfilterplugin.pot
diff --git a/konq-plugins/dirfilter/dirfilterplugin.cpp b/konq-plugins/dirfilter/dirfilterplugin.cpp
new file mode 100644
index 0000000..0966f19
--- /dev/null
+++ b/konq-plugins/dirfilter/dirfilterplugin.cpp
@@ -0,0 +1,492 @@
+/*
+ Copyright (C) 2000, 2001, 2002 Dawit Alemayehu <adawit@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include <unistd.h>
+#include <sys/types.h>
+
+#include <qtimer.h>
+#include <qapplication.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qhbox.h>
+#include <qwhatsthis.h>
+#include <qiconview.h>
+#include <klistview.h>
+
+#include <kdebug.h>
+#include <klocale.h>
+#include <kinstance.h>
+
+#include <kaction.h>
+#include <kpopupmenu.h>
+#include <kmessagebox.h>
+#include <kiconloader.h>
+
+#include <kdirlister.h>
+#include <klistviewsearchline.h>
+#include <kiconviewsearchline.h>
+#include <konq_dirpart.h>
+#include <konq_propsview.h>
+#include <kstaticdeleter.h>
+#include <kgenericfactory.h>
+#include <kparts/browserextension.h>
+
+#include "dirfilterplugin.h"
+
+SessionManager* SessionManager::m_self = 0;
+static KStaticDeleter<SessionManager> dirfiltersd;
+
+SessionManager *SessionManager::self ()
+{
+ if (!m_self)
+ m_self = dirfiltersd.setObject(m_self, new SessionManager);
+
+ return m_self;
+}
+
+SessionManager::SessionManager()
+{
+ m_bSettingsLoaded = false;
+ loadSettings ();
+}
+
+SessionManager::~SessionManager()
+{
+ saveSettings();
+ m_self = 0;
+}
+
+QString SessionManager::generateKey (const KURL& url) const
+{
+ QString key;
+
+ key = url.protocol ();
+ key += ':';
+
+ if (!url.host ().isEmpty ())
+ {
+ key += url.host ();
+ key += ':';
+ }
+
+ key += url.path ();
+ key += ':';
+ key += QString::number (m_pid);
+
+ return key;
+}
+
+QStringList SessionManager::restoreMimeFilters (const KURL& url) const
+{
+ QString key(generateKey(url));
+ return m_filters[key];
+}
+
+QString SessionManager::restoreTypedFilter (const KURL& url) const
+{
+ QString key(generateKey(url));
+ return m_typedFilter[key];
+}
+
+void SessionManager::save (const KURL& url, const QStringList& filters)
+{
+ QString key = generateKey(url);
+ m_filters[key] = filters;
+}
+
+void SessionManager::save (const KURL& url, const QString& typedFilter)
+{
+ QString key = generateKey(url);
+ m_typedFilter[key] = typedFilter;
+}
+
+void SessionManager::saveSettings()
+{
+ KConfig cfg ("dirfilterrc", false, false);
+ cfg.setGroup ("General");
+
+ cfg.writeEntry ("ShowCount", showCount);
+ cfg.writeEntry ("UseMultipleFilters", useMultipleFilters);
+ cfg.sync();
+}
+
+void SessionManager::loadSettings()
+{
+ if (m_bSettingsLoaded)
+ return;
+
+ KConfig cfg ("dirfilterrc", false, false);
+ cfg.setGroup ("General");
+
+ showCount = cfg.readBoolEntry ("ShowCount", false);
+ useMultipleFilters = cfg.readBoolEntry ("UseMultipleFilters", true);
+ m_pid = getpid ();
+ m_bSettingsLoaded = true;
+}
+
+
+
+DirFilterPlugin::DirFilterPlugin (QObject* parent, const char* name,
+ const QStringList&)
+ :KParts::Plugin (parent, name),
+ m_pFilterMenu(0),
+ m_searchWidget(0)
+{
+ m_part = ::qt_cast<KonqDirPart*>(parent);
+
+ if ( !m_part || !m_part->scrollWidget() )
+ return;
+
+ m_pFilterMenu = new KActionMenu (i18n("View F&ilter"), "filter",
+ actionCollection(), "filterdir");
+ m_pFilterMenu->setDelayed (false);
+ m_pFilterMenu->setWhatsThis(i18n("Allow to filter the currently displayed items by filetype."));
+
+ connect (m_pFilterMenu->popupMenu(), SIGNAL (aboutToShow()),
+ SLOT (slotShowPopup()));
+
+ connect (m_part, SIGNAL (itemRemoved(const KFileItem*)),
+ SLOT( slotItemRemoved (const KFileItem*)));
+ connect (m_part, SIGNAL (itemsAdded(const KFileItemList&)),
+ SLOT (slotItemsAdded(const KFileItemList&)));
+ connect (m_part, SIGNAL (itemsFilteredByMime(const KFileItemList&)),
+ SLOT (slotItemsAdded(const KFileItemList&)));
+ connect (m_part, SIGNAL(aboutToOpenURL()), SLOT(slotOpenURL()));
+
+ // add a searchline filter for konqis icons/list views
+ QHBox *hbox = new QHBox(m_part->widget());
+ hbox->hide();
+
+ KAction *clear = new KAction(i18n("Clear Filter Field"),
+ QApplication::reverseLayout() ? "clear_left" : "locationbar_erase",
+ 0, 0, 0, actionCollection(), "clear_filter");
+
+ clear->setWhatsThis(i18n("Clear filter field<p>Clears the content of the filter field."));
+
+ if ( ::qt_cast<KListView*>(m_part->scrollWidget()) )
+ {
+ m_searchWidget = new KListViewSearchLine(hbox);
+ static_cast<KListViewSearchLine*>(m_searchWidget)->setListView(static_cast<KListView*>(m_part->scrollWidget()));
+ }
+ else if ( ::qt_cast<QIconView*>(m_part->scrollWidget()) )
+ {
+ m_searchWidget = new KIconViewSearchLine(hbox);
+ static_cast<KIconViewSearchLine*>(m_searchWidget)->setIconView(static_cast<QIconView*>(m_part->scrollWidget()));
+ }
+
+
+ if ( m_searchWidget )
+ {
+ QWhatsThis::add(m_searchWidget, i18n("Enter here a text which an item in the view must contain anywhere to be shown."));
+ connect(clear, SIGNAL(activated()), m_searchWidget, SLOT(clear()));
+ }
+
+ KWidgetAction *filterAction = new KWidgetAction(hbox, i18n("Filter Field"),
+ 0, 0, 0, actionCollection(), "toolbar_filter_field");
+ filterAction->setShortcutConfigurable(false);
+}
+
+DirFilterPlugin::~DirFilterPlugin()
+{
+ delete m_pFilterMenu;
+}
+
+void DirFilterPlugin::slotOpenURL ()
+{
+ KURL url = m_part->url();
+
+ //kdDebug(90190) << "DirFilterPlugin: New URL : " << url.url() << endl;
+ //kdDebug(90190) << "DirFilterPlugin: Current URL: " << m_pURL.url() << endl;
+
+ if (m_pURL != url)
+ {
+ //Clears the hidden list which is by now outdated...
+ if (m_searchWidget)
+ {
+ SessionManager::self()->save(m_pURL, m_searchWidget->text());
+ m_searchWidget->clear();
+
+ QString typedFilter(SessionManager::self()->restoreTypedFilter(url));
+ m_searchWidget->completionObject()->addItem(typedFilter);
+ m_searchWidget->setText(typedFilter);
+ }
+
+ m_pURL = url;
+ m_pMimeInfo.clear();
+ m_part->setMimeFilter (SessionManager::self()->restoreMimeFilters(url));
+ }
+}
+
+void DirFilterPlugin::slotShowPopup()
+{
+ if (!m_part)
+ {
+ m_pFilterMenu->setEnabled (false);
+ return;
+ }
+
+ int id = 0;
+ uint enableReset = 0;
+
+ QString label;
+ QStringList inodes;
+
+ m_pFilterMenu->popupMenu()->clear();
+ m_pFilterMenu->popupMenu()->insertTitle (i18n("Only Show Items of Type"));
+
+ MimeInfoIterator it = m_pMimeInfo.begin();
+ const MimeInfoIterator end = m_pMimeInfo.end();
+ for (; it != end ; ++it)
+ {
+ if (it.key().startsWith("inode"))
+ {
+ inodes << it.key();
+ continue;
+ }
+
+ if (!SessionManager::self()->showCount)
+ label = it.data().mimeComment;
+ else
+ {
+ label = it.data().mimeComment;
+ label += " (";
+ label += QString::number (it.data().filenames.size ());
+ label += ")";
+ }
+
+ m_pMimeInfo[it.key()].id = m_pFilterMenu->popupMenu()->insertItem (
+ SmallIconSet(it.data().iconName), label,
+ this, SLOT(slotItemSelected(int)), 0, ++id);
+
+ if (it.data().useAsFilter)
+ {
+ m_pFilterMenu->popupMenu()->setItemChecked (id, true);
+ enableReset++;
+ }
+ }
+
+ // Add all the items that have mime-type of "inode/*" here...
+ if (!inodes.isEmpty())
+ {
+ m_pFilterMenu->popupMenu()->insertSeparator ();
+
+ QStringList::Iterator it = inodes.begin();
+ QStringList::Iterator end = inodes.end();
+
+ for (; it != end; ++it)
+ {
+ if (!SessionManager::self()->showCount)
+ label = m_pMimeInfo[(*it)].mimeComment;
+ else
+ {
+ label = m_pMimeInfo[(*it)].mimeComment;
+ label += " (";
+ label += QString::number (m_pMimeInfo[(*it)].filenames.size ());
+ label += ")";
+ }
+
+ m_pMimeInfo[(*it)].id = m_pFilterMenu->popupMenu()->insertItem (
+ SmallIconSet(m_pMimeInfo[(*it)].iconName), label,
+ this, SLOT(slotItemSelected(int)), 0, ++id);
+
+ if (m_pMimeInfo[(*it)].useAsFilter)
+ {
+ m_pFilterMenu->popupMenu()->setItemChecked (id, true);
+ enableReset ++;
+ }
+ }
+ }
+
+ m_pFilterMenu->popupMenu()->insertSeparator ();
+ id = m_pFilterMenu->popupMenu()->insertItem (i18n("Use Multiple Filters"),
+ this, SLOT(slotMultipleFilters()));
+ m_pFilterMenu->popupMenu()->setItemEnabled (id, enableReset <= 1);
+ m_pFilterMenu->popupMenu()->setItemChecked (id, SessionManager::self()->useMultipleFilters);
+
+ id = m_pFilterMenu->popupMenu()->insertItem (i18n("Show Count"), this,
+ SLOT(slotShowCount()));
+ m_pFilterMenu->popupMenu()->setItemChecked (id, SessionManager::self()->showCount);
+
+ id = m_pFilterMenu->popupMenu()->insertItem (i18n("Reset"), this,
+ SLOT(slotReset()));
+
+ m_pFilterMenu->popupMenu()->setItemEnabled (id, enableReset);
+}
+
+void DirFilterPlugin::slotItemSelected (int id)
+{
+ if (!m_part)
+ return;
+
+ MimeInfoIterator it = m_pMimeInfo.begin();
+ while (it != m_pMimeInfo.end () && id != it.data().id)
+ it++;
+
+ if (it != m_pMimeInfo.end())
+ {
+ QStringList filters;
+
+ if (it.data().useAsFilter)
+ {
+ it.data().useAsFilter = false;
+ filters = m_part->mimeFilter ();
+ if (filters.remove (it.key()))
+ m_part->setMimeFilter (filters);
+ }
+ else
+ {
+ m_pMimeInfo[it.key()].useAsFilter = true;
+
+ if (SessionManager::self()->useMultipleFilters)
+ {
+ filters = m_part->mimeFilter ();
+ filters << it.key();
+ }
+ else
+ {
+ filters << it.key();
+
+ MimeInfoIterator item = m_pMimeInfo.begin();
+ while ( item != m_pMimeInfo.end() )
+ {
+ if ( item != it )
+ item.data().useAsFilter = false;
+ item++;
+ }
+ }
+
+ m_part->setMimeFilter (filters);
+ }
+
+ KURL url = m_part->url();
+ m_part->openURL (url);
+ SessionManager::self()->save (url, filters);
+ }
+}
+
+void DirFilterPlugin::slotItemsAdded (const KFileItemList& list)
+{
+ KURL url = m_part->url();
+
+ if (list.count() == 0 || !m_part || !m_part->nameFilter().isEmpty())
+ {
+ m_pFilterMenu->setEnabled (m_part->nameFilter().isEmpty());
+ return;
+ }
+
+ // Make sure the filter menu is enabled once a named
+ // filter is removed.
+ if (!m_pFilterMenu->isEnabled())
+ m_pFilterMenu->setEnabled (true);
+
+ for (KFileItemListIterator it (list); it.current (); ++it)
+ {
+ QString name = it.current()->name();
+ KMimeType::Ptr mime = it.current()->mimeTypePtr(); // don't resolve mimetype if unknown
+ if (!mime)
+ continue;
+ QString mimeType = mime->name();
+
+ if (!m_pMimeInfo.contains (mimeType))
+ {
+ MimeInfo& mimeInfo = m_pMimeInfo[mimeType];
+ QStringList filters = m_part->mimeFilter ();
+ mimeInfo.useAsFilter = (!filters.isEmpty () &&
+ filters.contains (mimeType));
+ mimeInfo.mimeComment = mime->comment();
+ mimeInfo.iconName = mime->icon(KURL(), false);
+ mimeInfo.filenames.insert(name, false);
+ }
+ else
+ {
+ m_pMimeInfo[mimeType].filenames.insert(name, false);
+ }
+ }
+}
+
+void DirFilterPlugin::slotItemRemoved (const KFileItem* item)
+{
+ if (!item || !m_part)
+ return;
+
+ QString mimeType = item->mimetype().stripWhiteSpace();
+
+ if (m_pMimeInfo.contains (mimeType))
+ {
+ MimeInfo info = m_pMimeInfo [mimeType];
+
+ if (info.filenames.size () > 1)
+ m_pMimeInfo [mimeType].filenames.remove (item->name ());
+ else
+ {
+ if (info.useAsFilter)
+ {
+ QStringList filters = m_part->mimeFilter ();
+ filters.remove (mimeType);
+ m_part->setMimeFilter (filters);
+ SessionManager::self()->save (m_part->url(), filters);
+ QTimer::singleShot( 0, this, SLOT(slotTimeout()) );
+ }
+ m_pMimeInfo.remove (mimeType);
+ }
+ }
+}
+
+void DirFilterPlugin::slotReset()
+{
+ if (!m_part)
+ return;
+
+ MimeInfoIterator it = m_pMimeInfo.begin();
+ for (; it != m_pMimeInfo.end(); ++it)
+ it.data().useAsFilter = false;
+
+ QStringList filters;
+ KURL url = m_part->url();
+
+ m_part->setMimeFilter (filters);
+ SessionManager::self()->save (url, filters);
+ m_part->openURL (url);
+}
+
+void DirFilterPlugin::slotShowCount()
+{
+ if (SessionManager::self()->showCount)
+ SessionManager::self()->showCount = false;
+ else
+ SessionManager::self()->showCount = true;
+}
+
+void DirFilterPlugin::slotMultipleFilters()
+{
+ if (SessionManager::self()->useMultipleFilters)
+ SessionManager::self()->useMultipleFilters = false;
+ else
+ SessionManager::self()->useMultipleFilters = true;
+}
+
+void DirFilterPlugin::slotTimeout()
+{
+ if (m_part)
+ m_part->openURL (m_part->url());
+}
+
+typedef KGenericFactory<DirFilterPlugin> DirFilterFactory;
+K_EXPORT_COMPONENT_FACTORY (libdirfilterplugin, DirFilterFactory("dirfilterplugin"))
+
+#include "dirfilterplugin.moc"
diff --git a/konq-plugins/dirfilter/dirfilterplugin.desktop b/konq-plugins/dirfilter/dirfilterplugin.desktop
new file mode 100644
index 0000000..31dfcf0
--- /dev/null
+++ b/konq-plugins/dirfilter/dirfilterplugin.desktop
@@ -0,0 +1,125 @@
+[Desktop Entry]
+Type=Service
+X-KDE-PluginInfo-Author=Dawit Alemayehu,Martin Koller
+X-KDE-PluginInfo-Email=adawit@kde.org,m.koller@surfeu.at
+X-KDE-PluginInfo-Name=DirFilter
+X-KDE-PluginInfo-Version=3.4
+X-KDE-PluginInfo-Website=
+X-KDE-PluginInfo-Category=Tools
+X-KDE-PluginInfo-Depends=
+X-KDE-PluginInfo-License=GPL
+X-KDE-PluginInfo-EnabledByDefault=true
+Name=Directory Filter Plugin
+Name[bg]=Приставка за филтриране на директории
+Name[br]=Lugent sil ar renkelloù
+Name[bs]=Plugin za filtriranje direktorija
+Name[ca]=Connector filtre del directori
+Name[cs]=Modul pro filtrování adresářů
+Name[da]=Mappefilter-plugin
+Name[de]=Ordnerfilter-Modul
+Name[el]=Πρόσθετο φίλτρου καταλόγων
+Name[eo]=Dosierujfiltrila kromaĵo
+Name[es]=Complemento de filtrado de carpetas
+Name[et]=Kataloogifiltri plugin
+Name[eu]=Direktorioen iragazki plugina
+Name[fa]=وصلۀ پالایۀ فهرست راهنما
+Name[fi]=Hakemistosuodinsovelma
+Name[fr]=Module de filtrage de dossiers
+Name[fy]=Mappenfilterplugin
+Name[gl]=Plugin de Filtraxe de Cartafoles
+Name[he]=תוסף מסנן ספריות
+Name[hi]=डिरेक्ट्री फ़िल्टर प्लगइन
+Name[hr]=Dodatak filtra mapa
+Name[hu]=Könyvtárszűrő bővítőmodul
+Name[is]=Íforrit sem síar möppur
+Name[it]=Plugin per il filtro delle directory
+Name[ja]=ディレクトリ フィルタ プラグイン
+Name[ka]=დირექტორიის ფილტრის მოდული
+Name[kk]=Каталог сүзгісі
+Name[km]=កម្មវិធី​ជំនួយ​តម្រង​ថត
+Name[lt]=Aplanko filtro priedas
+Name[mk]=Приклучок за филтирање папки
+Name[ms]=Plugin Penapis Direktori
+Name[nb]=Programtillegg til mappefilter
+Name[nds]=Ornerfilter-Moduul
+Name[ne]=डाइरेक्टरी फिल्टर प्लगइन
+Name[nl]=Mappenfilterplugin
+Name[nn]=Progamtillegg for katalogfilter
+Name[pa]=ਡਾਇਰੈਕਟਰੀ ਫਿਲਟਰ ਪਲੱਗਇਨ
+Name[pl]=Wtyczka filtrowania katalogów
+Name[pt]='Plugin' de Filtragem de Directorias
+Name[pt_BR]=Pasta do Plug-in de Filtro
+Name[ru]=Фильтр папок
+Name[sk]=Modul adresárového filtra
+Name[sl]=Vstavek za filtriranje imenikov
+Name[sr]=Прикључак за филтрирање директоријума
+Name[sr@Latn]=Priključak za filtriranje direktorijuma
+Name[sv]=Insticksprogram för katalogfilter
+Name[ta]=அகராதி வடிகட்டி சொருகுப் பொருள்
+Name[tg]=Филтри каталогҳо
+Name[tr]=Dizin Filtre Eklentisi
+Name[uk]=Втулок фільтра каталогів
+Name[vi]=Bổ sung lọc thư mục
+Name[zh_CN]=目录过滤器插件
+Name[zh_TW]=目錄過濾器外掛程式
+Comment=Directory filter plugin
+Comment[af]=Gids filter inplak
+Comment[ar]=ملحق تنقية المجلدات
+Comment[az]=Qovluq filtr əlavəsi
+Comment[bg]=Приставка за филтриране на директории
+Comment[br]=Lugent sil ar renkelloù
+Comment[bs]=Plugin za filtriranje direktorija
+Comment[ca]=Connector filtre del directori
+Comment[cs]=Modul pro filtrování adresářů
+Comment[cy]=Ategyn hidl cyfeiriadur
+Comment[da]=Mappefilter-plugin
+Comment[de]=Ein Modul zum Filtern von Ordnerinhalten
+Comment[el]=Πρόσθετο φίλτρου καταλόγου
+Comment[eo]=Dosierujfiltrila kromaĵo
+Comment[es]=Complemento de filtrado de carpetas
+Comment[et]=Kataloogifiltri plugin
+Comment[eu]=Direktorioen iragazki plugina
+Comment[fa]=وصلۀ پالایۀ فهرست راهنما
+Comment[fi]=Hakemistosuodinsovelma
+Comment[fr]=Module de filtrage de dossiers
+Comment[fy]=Mappenfilterplugin
+Comment[gl]=Plugin de filtraxe de cartafoles
+Comment[he]=תוסף מסנן ספריות
+Comment[hi]=डिरेक्ट्री फ़िल्टर प्लगइन
+Comment[hr]=Dodatak filtra mapa
+Comment[hu]=Könyvtárszűrő modul
+Comment[is]=Íforrit sem síar möppur
+Comment[it]=Plugin per il filtro delle directory
+Comment[ja]=ディレクトリフィルタプラグイン
+Comment[ka]=დირექტორიის ფილტრის მოდული
+Comment[kk]=Каталог сүзгі плагин модулі
+Comment[km]=កម្មវិធី​ជំនួយ​តម្រង​ថត
+Comment[lt]=Aplanko filtro priedas
+Comment[mk]=Приклучок за филтирање папки
+Comment[nb]=Programtillegg til mappefilter
+Comment[nds]=Ornerfilter-Moduul
+Comment[ne]=डाइरेक्टरी फिल्टर प्लगइन
+Comment[nl]=Mappenfilterplugin
+Comment[nn]=Progamtillegg for katalogfilter
+Comment[pa]=ਡਾਇਰੈਕਟਰੀ ਫਿਲਟਰ ਪਲੱਗਇਨ
+Comment[pl]=Wtyczka filtrowania katalogów
+Comment[pt]='Plugin' de filtragem de directorias
+Comment[pt_BR]=Pasta de plug-in de filtragem
+Comment[ro]=Modul de filtrare a directoarelor de afişat
+Comment[ru]=Модуль фильтра папок
+Comment[sk]=Modul adresárového filtra
+Comment[sl]=Vstavek za filtriranje imenikov
+Comment[sr]=Прикључак за филтрирање директоријума
+Comment[sr@Latn]=Priključak za filtriranje direktorijuma
+Comment[sv]=Insticksprogram för katalogfilter
+Comment[ta]= அகராதி வடிகட்டி சொருகுப்பொருள்
+Comment[tg]=Модули филтри каталогҳо
+Comment[tr]=Dizin filtre eklentisi
+Comment[uk]=Втулок фільтра каталогів
+Comment[vi]=Bổ sung lọc thư mục
+Comment[xh]=Isilawulo secebo lokucoca ulwelo seplagi yangaphakathi
+Comment[zh_CN]=目录过滤器插件
+Comment[zh_TW]=目錄過濾器外掛程式
+Icon=filter
+X-KDE-ParentApp=konqueror
+DocPath=konq-plugins/dirfilter/index.html
diff --git a/konq-plugins/dirfilter/dirfilterplugin.h b/konq-plugins/dirfilter/dirfilterplugin.h
new file mode 100644
index 0000000..f1c5b44
--- /dev/null
+++ b/konq-plugins/dirfilter/dirfilterplugin.h
@@ -0,0 +1,132 @@
+/*
+ Copyright (C) 2000, 2001, 2002 Dawit Alemayehu <adawit@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef __DIR_FILTER_PLUGIN_H
+#define __DIR_FILTER_PLUGIN_H
+
+#include <qmap.h>
+#include <qstringlist.h>
+
+
+#include <kurl.h>
+#include <kfileitem.h>
+#include <klibloader.h>
+#include <kparts/plugin.h>
+
+class KActionMenu;
+class KonqDirPart;
+class KLineEdit;
+
+
+namespace KParts
+{
+ struct URLArgs;
+}
+
+namespace KIO
+{
+ class Job;
+}
+
+class SessionManager
+{
+public:
+
+ ~SessionManager ();
+ static SessionManager* self ();
+ QStringList restoreMimeFilters (const KURL& url) const;
+ QString restoreTypedFilter(const KURL& url) const;
+ void save (const KURL& url, const QStringList& filters);
+ void save (const KURL& url, const QString& typedFilter);
+
+ bool showCount;
+ bool useMultipleFilters;
+
+protected:
+
+ QString generateKey (const KURL& url) const;
+ void loadSettings ();
+ void saveSettings ();
+
+private:
+
+ SessionManager ();
+
+private:
+
+ int m_pid;
+ bool m_bSettingsLoaded;
+ static SessionManager* m_self;
+ QMap<QString,QStringList> m_filters;
+ QMap<QString,QString> m_typedFilter;
+};
+
+
+class DirFilterPlugin : public KParts::Plugin
+{
+ Q_OBJECT
+
+public:
+
+ DirFilterPlugin (QObject* parent, const char* name, const QStringList &);
+ ~DirFilterPlugin ();
+
+protected:
+
+ struct MimeInfo
+ {
+ MimeInfo()
+ {
+ id = 0;
+ useAsFilter = false;
+ }
+
+ int id;
+ bool useAsFilter;
+
+ QString mimeType;
+ QString iconName;
+ QString mimeComment;
+
+ QMap<QString, bool> filenames;
+ };
+
+ void loadSettings();
+ void saveSettings();
+
+private slots:
+ void slotReset();
+ void slotTimeout();
+ void slotOpenURL();
+ void slotShowPopup();
+ void slotShowCount();
+ void slotMultipleFilters();
+ void slotItemSelected(int);
+ void slotItemRemoved(const KFileItem *);
+ void slotItemsAdded(const KFileItemList &);
+
+private:
+ KURL m_pURL;
+ KonqDirPart* m_part;
+ KActionMenu* m_pFilterMenu;
+
+ KLineEdit *m_searchWidget;
+ QMap<QString,MimeInfo> m_pMimeInfo;
+ typedef QMap<QString,MimeInfo>::Iterator MimeInfoIterator;
+};
+#endif
diff --git a/konq-plugins/dirfilter/dirfilterplugin.rc b/konq-plugins/dirfilter/dirfilterplugin.rc
new file mode 100644
index 0000000..80f60eb
--- /dev/null
+++ b/konq-plugins/dirfilter/dirfilterplugin.rc
@@ -0,0 +1,13 @@
+<!DOCTYPE kpartplugin>
+<kpartplugin name="DirFilter" library="libdirfilterplugin" version = "4">
+<MenuBar>
+ <Menu name="tools"><Text>&amp;Tools</Text>
+ <Action name="filterdir"/>
+ </Menu>
+</MenuBar>
+<ToolBar name="extraToolBar"><text>Extra Toolbar</text>
+ <Action name="filterdir"/>
+</ToolBar>
+<ToolBar fullWidth="true" name="locationToolBar" newline="true"><text>Filter Toolbar</text>
+</ToolBar>
+</kpartplugin>