[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdebase/kappfinder
From:       Waldo Bastian <bastian () kde ! org>
Date:       2004-01-14 18:16:30
Message-ID: 20040114181630.7C6D2907E () office ! kde ! org
[Download RAW message or body]

CVS commit by waba: 

Don't show already installed applications. (BR57413)
CCMAIL: 57413-done@bugs.kde.org


  M +31 -2     toplevel.cpp   1.17


--- kdebase/kappfinder/toplevel.cpp  #1.16:1.17
@@ -30,4 +30,5 @@
 #include <kmessagebox.h>
 #include <kprogress.h>
+#include <kservice.h>
 #include <kservicegroup.h>
 #include <kstandarddirs.h>
@@ -64,7 +65,10 @@ TopLevel::TopLevel( const QString &destD
   mListView->setMinimumSize( 300, 300 );
   mListView->setRootIsDecorated( true );
+  mListView->setAllColumnsShowFocus( true );
+  mListView->setSelectionMode(QListView::NoSelection);
   layout->addWidget( mListView );
 
   mProgress = new KProgress( this );
+  mProgress->setPercentageVisible( false );
   layout->addWidget( mProgress );
 
@@ -167,4 +171,5 @@ void TopLevel::slotScan()
 
   mScanButton->setEnabled( false );
+  mProgress->setPercentageVisible( true );
   mProgress->setTotalSteps( count );
   mProgress->setValue( 0 );
@@ -174,9 +179,29 @@ void TopLevel::slotScan()
   QStringList::Iterator it;
   for ( it = mTemplates.begin(); it != mTemplates.end(); ++it ) {
-    KDesktopFile desktop( *it, true );
-
     // eye candy
     mProgress->setProgress( mProgress->progress() + 1 );
 
+    QString desktopName = *it;
+    int i = desktopName.findRev('/');
+    desktopName = desktopName.mid(i+1);
+    i = desktopName.findRev('.');
+    if (i != -1)
+       desktopName = desktopName.left(i);
+
+    bool found;
+    found = KService::serviceByDesktopName(desktopName);
+    if (found)
+       continue;
+
+    found = KService::serviceByMenuId("kde-"+desktopName+".desktop");
+    if (found)
+       continue; 
+
+    found = KService::serviceByMenuId("gnome-"+desktopName+".desktop");
+    if (found)
+       continue; 
+
+    KDesktopFile desktop( *it, true );
+
     // copy over the desktop file, if exists
     if ( scanDesktopFile( mAppCache, *it, mDestDir ) ) {
@@ -223,4 +248,6 @@ void TopLevel::slotScan()
   // stop scanning
   mProgress->setValue( 0 );
+  mProgress->setPercentageVisible( false );
+
   mScanButton->setEnabled( true );
 
@@ -255,4 +282,6 @@ void TopLevel::slotCreate()
   decorateDirs( mDestDir );
 
+  KService::rebuildKSycoca(this);
+
   QString message( i18n( "%n application was added to the KDE menu system.",
                          "%n applications were added to the KDE menu system.", mAdded ) );


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic