Hi,all

I think we should give user a hint when he/she adds a application which
already exists in quicklaunch, so I made this patch.


Regards

-- 
潘卫平(Peter Pan)
Red Flag Software Co., Ltd
Index: quicklaunchApplet.cpp
===================================================================
--- quicklaunchApplet.cpp	(revision 1010790)
+++ quicklaunchApplet.cpp	(working copy)
@@ -21,6 +21,7 @@
 
 #include <KConfigDialog>
 #include <KDesktopFile>
+#include <KMessageBox>
 #include <QGraphicsSceneDragDropEvent>
 #include <QGraphicsWidget>
 #include <QDrag>
@@ -670,10 +671,32 @@
     }
 
     foreach (const KUrl &url, urls) {
-        if (KDesktopFile::isDesktopFile(url.toLocalFile())) {
-            addProgram(pos, url.toLocalFile(), true);
+        bool found = false;
+        foreach (QuicklaunchIcon *icon, m_icons) {
+            if (icon->url().url() == url.url()) {
+                found = true;
+                if (KMessageBox::warningContinueCancel(
+                        0, 
+                        i18n("\"%1\" is already in quicklaunch!\nCancel or Continue?", icon->url().pathOrUrl()), 
+                        i18n("Warning") 
+                    ) == KMessageBox::Continue) {
+                    if (KDesktopFile::isDesktopFile(url.toLocalFile())) {
+                        addProgram(pos, url.toLocalFile(), true);
+                        break;
+                    }
+                } else {
+                    break;
+                }
+            }
         }
+
+        if (!found) {
+            if (KDesktopFile::isDesktopFile(url.toLocalFile())) {
+                addProgram(pos, url.toLocalFile(), true);
+            }
+        }
     }
+
     return true;
 }
 
@@ -697,6 +720,21 @@
 
 void QuicklaunchApplet::addAccepted()
 {
+    foreach (QuicklaunchIcon *icon, m_icons) {
+        if (icon->url().url() == addUi.urlIcon->url().url()) {
+            if (KMessageBox::warningContinueCancel(
+                0, 
+                i18n("\"%1\" is already in quicklaunch!\nCancel or Continue?", icon->url().pathOrUrl()), 
+                i18n("Warning")) == KMessageBox::Continue) {
+                int insertplace = m_rightClickedIcon ? m_icons.indexOf(m_rightClickedIcon) : m_icons.size();
+                addProgram(insertplace, addUi.urlIcon->url().url(), true);
+                performUiRefactor();
+            } 
+
+            return;
+        }
+    }
+
     int insertplace = m_rightClickedIcon ? m_icons.indexOf(m_rightClickedIcon) : m_icons.size();
     addProgram(insertplace, addUi.urlIcon->url().url(), true);
     performUiRefactor();
_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel

Reply via email to