mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-19 16:31:21 +00:00
kill two singletons, and add unittest for creating folder, 2 items, and moving the items with dnd.
svn path=/trunk/KDE/kdebase/apps/; revision=1112106
This commit is contained in:
parent
8a5c3c0788
commit
daedcbb6ac
|
@ -23,6 +23,7 @@
|
|||
#include "globalbookmarkmanager.h"
|
||||
|
||||
#include "toplevel.h" // for KEBApp
|
||||
#include "bookmarkmodel.h"
|
||||
#include "commands.h"
|
||||
#include "commandhistory.h"
|
||||
#include "importers.h"
|
||||
|
@ -60,14 +61,12 @@
|
|||
#include <kbookmarkimporter_ns.h>
|
||||
#include <kbookmarkexporter.h>
|
||||
|
||||
ActionsImpl* ActionsImpl::s_self = 0;
|
||||
|
||||
// decoupled from resetActions in toplevel.cpp
|
||||
// as resetActions simply uses the action groups
|
||||
// specified in the ui.rc file
|
||||
void KEBApp::createActions() {
|
||||
|
||||
ActionsImpl *actn = ActionsImpl::self();
|
||||
m_actionsImpl = new ActionsImpl(this, GlobalBookmarkManager::self()->model());
|
||||
|
||||
// save and quit should probably not be in the toplevel???
|
||||
(void) KStandardAction::quit(
|
||||
|
@ -78,175 +77,175 @@ void KEBApp::createActions() {
|
|||
|
||||
if (m_browser) {
|
||||
(void) KStandardAction::open(
|
||||
actn, SLOT( slotLoad() ), actionCollection());
|
||||
m_actionsImpl, SLOT( slotLoad() ), actionCollection());
|
||||
(void) KStandardAction::saveAs(
|
||||
actn, SLOT( slotSaveAs() ), actionCollection());
|
||||
m_actionsImpl, SLOT( slotSaveAs() ), actionCollection());
|
||||
}
|
||||
|
||||
(void) KStandardAction::cut(actn, SLOT( slotCut() ), actionCollection());
|
||||
(void) KStandardAction::copy(actn, SLOT( slotCopy() ), actionCollection());
|
||||
(void) KStandardAction::paste(actn, SLOT( slotPaste() ), actionCollection());
|
||||
(void) KStandardAction::cut(m_actionsImpl, SLOT( slotCut() ), actionCollection());
|
||||
(void) KStandardAction::copy(m_actionsImpl, SLOT( slotCopy() ), actionCollection());
|
||||
(void) KStandardAction::paste(m_actionsImpl, SLOT( slotPaste() ), actionCollection());
|
||||
|
||||
// actions
|
||||
KAction* actnDelete = actionCollection()->addAction("delete");
|
||||
actnDelete->setIcon(KIcon("edit-delete"));
|
||||
actnDelete->setText(i18n("&Delete"));
|
||||
actnDelete->setShortcut(Qt::Key_Delete);
|
||||
connect(actnDelete, SIGNAL( triggered() ), actn, SLOT( slotDelete() ));
|
||||
KAction* m_actionsImplDelete = actionCollection()->addAction("delete");
|
||||
m_actionsImplDelete->setIcon(KIcon("edit-delete"));
|
||||
m_actionsImplDelete->setText(i18n("&Delete"));
|
||||
m_actionsImplDelete->setShortcut(Qt::Key_Delete);
|
||||
connect(m_actionsImplDelete, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotDelete() ));
|
||||
|
||||
KAction* actnRename = actionCollection()->addAction("rename");
|
||||
actnRename->setIcon(KIcon("edit-rename"));
|
||||
actnRename->setText(i18n("Rename"));
|
||||
actnRename->setShortcut(Qt::Key_F2);
|
||||
connect(actnRename, SIGNAL( triggered() ), actn, SLOT( slotRename() ));
|
||||
KAction* m_actionsImplRename = actionCollection()->addAction("rename");
|
||||
m_actionsImplRename->setIcon(KIcon("edit-rename"));
|
||||
m_actionsImplRename->setText(i18n("Rename"));
|
||||
m_actionsImplRename->setShortcut(Qt::Key_F2);
|
||||
connect(m_actionsImplRename, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotRename() ));
|
||||
|
||||
KAction* actnChangeURL = actionCollection()->addAction("changeurl");
|
||||
actnChangeURL->setIcon(KIcon("edit-rename"));
|
||||
actnChangeURL->setText(i18n("C&hange Location"));
|
||||
actnChangeURL->setShortcut(Qt::Key_F3);
|
||||
connect(actnChangeURL, SIGNAL( triggered() ), actn, SLOT( slotChangeURL() ));
|
||||
KAction* m_actionsImplChangeURL = actionCollection()->addAction("changeurl");
|
||||
m_actionsImplChangeURL->setIcon(KIcon("edit-rename"));
|
||||
m_actionsImplChangeURL->setText(i18n("C&hange Location"));
|
||||
m_actionsImplChangeURL->setShortcut(Qt::Key_F3);
|
||||
connect(m_actionsImplChangeURL, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotChangeURL() ));
|
||||
|
||||
KAction* actnChangeComment = actionCollection()->addAction("changecomment");
|
||||
actnChangeComment->setIcon(KIcon("edit-rename"));
|
||||
actnChangeComment->setText(i18n("C&hange Comment"));
|
||||
actnChangeComment->setShortcut(Qt::Key_F4);
|
||||
connect(actnChangeComment, SIGNAL( triggered() ), actn, SLOT( slotChangeComment() ));
|
||||
KAction* m_actionsImplChangeComment = actionCollection()->addAction("changecomment");
|
||||
m_actionsImplChangeComment->setIcon(KIcon("edit-rename"));
|
||||
m_actionsImplChangeComment->setText(i18n("C&hange Comment"));
|
||||
m_actionsImplChangeComment->setShortcut(Qt::Key_F4);
|
||||
connect(m_actionsImplChangeComment, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotChangeComment() ));
|
||||
|
||||
KAction* actnChangeIcon = actionCollection()->addAction("changeicon");
|
||||
actnChangeIcon->setIcon(KIcon("preferences-desktop-icons"));
|
||||
actnChangeIcon->setText(i18n("Chan&ge Icon..."));
|
||||
connect(actnChangeIcon, SIGNAL( triggered() ), actn, SLOT( slotChangeIcon() ));
|
||||
KAction* m_actionsImplChangeIcon = actionCollection()->addAction("changeicon");
|
||||
m_actionsImplChangeIcon->setIcon(KIcon("preferences-desktop-icons"));
|
||||
m_actionsImplChangeIcon->setText(i18n("Chan&ge Icon..."));
|
||||
connect(m_actionsImplChangeIcon, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotChangeIcon() ));
|
||||
|
||||
KAction* actnUpdateFavIcon = actionCollection()->addAction("updatefavicon");
|
||||
actnUpdateFavIcon->setText(i18n("Update Favicon"));
|
||||
connect(actnUpdateFavIcon, SIGNAL( triggered() ), actn, SLOT( slotUpdateFavIcon() ));
|
||||
KAction* m_actionsImplUpdateFavIcon = actionCollection()->addAction("updatefavicon");
|
||||
m_actionsImplUpdateFavIcon->setText(i18n("Update Favicon"));
|
||||
connect(m_actionsImplUpdateFavIcon, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotUpdateFavIcon() ));
|
||||
|
||||
KAction* actnRecursiveSort = actionCollection()->addAction("recursivesort");
|
||||
actnRecursiveSort->setText(i18n("Recursive Sort"));
|
||||
connect(actnRecursiveSort, SIGNAL( triggered() ), actn, SLOT( slotRecursiveSort() ));
|
||||
KAction* m_actionsImplRecursiveSort = actionCollection()->addAction("recursivesort");
|
||||
m_actionsImplRecursiveSort->setText(i18n("Recursive Sort"));
|
||||
connect(m_actionsImplRecursiveSort, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotRecursiveSort() ));
|
||||
|
||||
KAction* actnNewFolder = actionCollection()->addAction("newfolder");
|
||||
actnNewFolder->setIcon(KIcon("folder-new"));
|
||||
actnNewFolder->setText(i18n("&New Folder..."));
|
||||
actnNewFolder->setShortcut(Qt::CTRL+Qt::Key_N);
|
||||
connect(actnNewFolder, SIGNAL( triggered() ), actn, SLOT( slotNewFolder() ));
|
||||
KAction* m_actionsImplNewFolder = actionCollection()->addAction("newfolder");
|
||||
m_actionsImplNewFolder->setIcon(KIcon("folder-new"));
|
||||
m_actionsImplNewFolder->setText(i18n("&New Folder..."));
|
||||
m_actionsImplNewFolder->setShortcut(Qt::CTRL+Qt::Key_N);
|
||||
connect(m_actionsImplNewFolder, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotNewFolder() ));
|
||||
|
||||
KAction* actnNewBookmark = actionCollection()->addAction("newbookmark");
|
||||
actnNewBookmark->setIcon(KIcon("bookmark-new"));
|
||||
actnNewBookmark->setText(i18n("&New Bookmark"));
|
||||
connect(actnNewBookmark, SIGNAL( triggered() ), actn, SLOT( slotNewBookmark() ));
|
||||
KAction* m_actionsImplNewBookmark = actionCollection()->addAction("newbookmark");
|
||||
m_actionsImplNewBookmark->setIcon(KIcon("bookmark-new"));
|
||||
m_actionsImplNewBookmark->setText(i18n("&New Bookmark"));
|
||||
connect(m_actionsImplNewBookmark, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotNewBookmark() ));
|
||||
|
||||
KAction* actnInsertSeparator = actionCollection()->addAction("insertseparator");
|
||||
actnInsertSeparator->setText(i18n("&Insert Separator"));
|
||||
actnInsertSeparator->setShortcut(Qt::CTRL+Qt::Key_I);
|
||||
connect(actnInsertSeparator, SIGNAL( triggered() ), actn, SLOT( slotInsertSeparator() ));
|
||||
KAction* m_actionsImplInsertSeparator = actionCollection()->addAction("insertseparator");
|
||||
m_actionsImplInsertSeparator->setText(i18n("&Insert Separator"));
|
||||
m_actionsImplInsertSeparator->setShortcut(Qt::CTRL+Qt::Key_I);
|
||||
connect(m_actionsImplInsertSeparator, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotInsertSeparator() ));
|
||||
|
||||
KAction* actnSort = actionCollection()->addAction("sort");
|
||||
actnSort->setText(i18n("&Sort Alphabetically"));
|
||||
connect(actnSort, SIGNAL( triggered() ), actn, SLOT( slotSort() ));
|
||||
KAction* m_actionsImplSort = actionCollection()->addAction("sort");
|
||||
m_actionsImplSort->setText(i18n("&Sort Alphabetically"));
|
||||
connect(m_actionsImplSort, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotSort() ));
|
||||
|
||||
KAction* actnSetAsToolbar = actionCollection()->addAction("setastoolbar");
|
||||
actnSetAsToolbar->setIcon(KIcon("bookmark-toolbar"));
|
||||
actnSetAsToolbar->setText(i18n("Set as T&oolbar Folder"));
|
||||
connect(actnSetAsToolbar, SIGNAL( triggered() ), actn, SLOT( slotSetAsToolbar() ));
|
||||
KAction* m_actionsImplSetAsToolbar = actionCollection()->addAction("setastoolbar");
|
||||
m_actionsImplSetAsToolbar->setIcon(KIcon("bookmark-toolbar"));
|
||||
m_actionsImplSetAsToolbar->setText(i18n("Set as T&oolbar Folder"));
|
||||
connect(m_actionsImplSetAsToolbar, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotSetAsToolbar() ));
|
||||
|
||||
KAction* actnExpandAll = actionCollection()->addAction("expandall");
|
||||
actnExpandAll->setText(i18n("&Expand All Folders"));
|
||||
connect(actnExpandAll, SIGNAL( triggered() ), actn, SLOT( slotExpandAll() ));
|
||||
KAction* m_actionsImplExpandAll = actionCollection()->addAction("expandall");
|
||||
m_actionsImplExpandAll->setText(i18n("&Expand All Folders"));
|
||||
connect(m_actionsImplExpandAll, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExpandAll() ));
|
||||
|
||||
KAction* actnCollapseAll = actionCollection()->addAction("collapseall");
|
||||
actnCollapseAll->setText(i18n("Collapse &All Folders"));
|
||||
connect(actnCollapseAll, SIGNAL( triggered() ), actn, SLOT( slotCollapseAll() ));
|
||||
KAction* m_actionsImplCollapseAll = actionCollection()->addAction("collapseall");
|
||||
m_actionsImplCollapseAll->setText(i18n("Collapse &All Folders"));
|
||||
connect(m_actionsImplCollapseAll, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotCollapseAll() ));
|
||||
|
||||
KAction* actnOpenLink = actionCollection()->addAction("openlink");
|
||||
actnOpenLink->setIcon(KIcon("document-open"));
|
||||
actnOpenLink->setText(i18n("&Open in Konqueror"));
|
||||
connect(actnOpenLink, SIGNAL( triggered() ), actn, SLOT( slotOpenLink() ));
|
||||
KAction* m_actionsImplOpenLink = actionCollection()->addAction("openlink");
|
||||
m_actionsImplOpenLink->setIcon(KIcon("document-open"));
|
||||
m_actionsImplOpenLink->setText(i18n("&Open in Konqueror"));
|
||||
connect(m_actionsImplOpenLink, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotOpenLink() ));
|
||||
|
||||
KAction* actnTestSelection = actionCollection()->addAction("testlink");
|
||||
actnTestSelection->setIcon(KIcon("bookmarks"));
|
||||
actnTestSelection->setText(i18n("Check &Status"));
|
||||
connect(actnTestSelection, SIGNAL( triggered() ), actn, SLOT( slotTestSelection() ));
|
||||
KAction* m_actionsImplTestSelection = actionCollection()->addAction("testlink");
|
||||
m_actionsImplTestSelection->setIcon(KIcon("bookmarks"));
|
||||
m_actionsImplTestSelection->setText(i18n("Check &Status"));
|
||||
connect(m_actionsImplTestSelection, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotTestSelection() ));
|
||||
|
||||
KAction* actnTestAll = actionCollection()->addAction("testall");
|
||||
actnTestAll->setText(i18n("Check Status: &All"));
|
||||
connect(actnTestAll, SIGNAL( triggered() ), actn, SLOT( slotTestAll() ));
|
||||
KAction* m_actionsImplTestAll = actionCollection()->addAction("testall");
|
||||
m_actionsImplTestAll->setText(i18n("Check Status: &All"));
|
||||
connect(m_actionsImplTestAll, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotTestAll() ));
|
||||
|
||||
KAction* actnUpdateAllFavIcons = actionCollection()->addAction("updateallfavicons");
|
||||
actnUpdateAllFavIcons->setText(i18n("Update All &Favicons"));
|
||||
connect(actnUpdateAllFavIcons, SIGNAL( triggered() ), actn, SLOT( slotUpdateAllFavIcons() ));
|
||||
KAction* m_actionsImplUpdateAllFavIcons = actionCollection()->addAction("updateallfavicons");
|
||||
m_actionsImplUpdateAllFavIcons->setText(i18n("Update All &Favicons"));
|
||||
connect(m_actionsImplUpdateAllFavIcons, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotUpdateAllFavIcons() ));
|
||||
|
||||
KAction* actnCancelAllTests = actionCollection()->addAction("canceltests");
|
||||
actnCancelAllTests->setText(i18n("Cancel &Checks"));
|
||||
connect(actnCancelAllTests, SIGNAL( triggered() ), actn, SLOT( slotCancelAllTests() ));
|
||||
KAction* m_actionsImplCancelAllTests = actionCollection()->addAction("canceltests");
|
||||
m_actionsImplCancelAllTests->setText(i18n("Cancel &Checks"));
|
||||
connect(m_actionsImplCancelAllTests, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotCancelAllTests() ));
|
||||
|
||||
KAction* actnCancelFavIconUpdates = actionCollection()->addAction("cancelfaviconupdates");
|
||||
actnCancelFavIconUpdates->setText(i18n("Cancel &Favicon Updates"));
|
||||
connect(actnCancelFavIconUpdates, SIGNAL( triggered() ), actn, SLOT( slotCancelFavIconUpdates() ));
|
||||
KAction* m_actionsImplCancelFavIconUpdates = actionCollection()->addAction("cancelfaviconupdates");
|
||||
m_actionsImplCancelFavIconUpdates->setText(i18n("Cancel &Favicon Updates"));
|
||||
connect(m_actionsImplCancelFavIconUpdates, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotCancelFavIconUpdates() ));
|
||||
|
||||
KAction* actnImportNS = actionCollection()->addAction("importNS");
|
||||
actnImportNS->setObjectName("NS");
|
||||
actnImportNS->setIcon(KIcon("netscape"));
|
||||
actnImportNS->setText(i18n("Import &Netscape Bookmarks..."));
|
||||
connect(actnImportNS, SIGNAL( triggered() ), actn, SLOT( slotImport() ));
|
||||
KAction* m_actionsImplImportNS = actionCollection()->addAction("importNS");
|
||||
m_actionsImplImportNS->setObjectName("NS");
|
||||
m_actionsImplImportNS->setIcon(KIcon("netscape"));
|
||||
m_actionsImplImportNS->setText(i18n("Import &Netscape Bookmarks..."));
|
||||
connect(m_actionsImplImportNS, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() ));
|
||||
|
||||
KAction* actnImportOpera = actionCollection()->addAction("importOpera");
|
||||
actnImportOpera->setObjectName("Opera");
|
||||
actnImportOpera->setIcon(KIcon("opera"));
|
||||
actnImportOpera->setText(i18n("Import &Opera Bookmarks..."));
|
||||
connect(actnImportOpera, SIGNAL( triggered() ), actn, SLOT( slotImport() ));
|
||||
KAction* m_actionsImplImportOpera = actionCollection()->addAction("importOpera");
|
||||
m_actionsImplImportOpera->setObjectName("Opera");
|
||||
m_actionsImplImportOpera->setIcon(KIcon("opera"));
|
||||
m_actionsImplImportOpera->setText(i18n("Import &Opera Bookmarks..."));
|
||||
connect(m_actionsImplImportOpera, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() ));
|
||||
|
||||
KAction* actnImportCrashes = actionCollection()->addAction("importCrashes");
|
||||
actnImportCrashes->setObjectName("Crashes");
|
||||
actnImportCrashes->setText(i18n("Import All &Crash Sessions as Bookmarks..."));
|
||||
connect(actnImportCrashes, SIGNAL( triggered() ), actn, SLOT( slotImport() ));
|
||||
KAction* m_actionsImplImportCrashes = actionCollection()->addAction("importCrashes");
|
||||
m_actionsImplImportCrashes->setObjectName("Crashes");
|
||||
m_actionsImplImportCrashes->setText(i18n("Import All &Crash Sessions as Bookmarks..."));
|
||||
connect(m_actionsImplImportCrashes, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() ));
|
||||
|
||||
KAction* actnImportGaleon = actionCollection()->addAction("importGaleon");
|
||||
actnImportGaleon->setObjectName("Galeon");
|
||||
actnImportGaleon->setText(i18n("Import &Galeon Bookmarks..."));
|
||||
connect(actnImportGaleon, SIGNAL( triggered() ), actn, SLOT( slotImport() ));
|
||||
KAction* m_actionsImplImportGaleon = actionCollection()->addAction("importGaleon");
|
||||
m_actionsImplImportGaleon->setObjectName("Galeon");
|
||||
m_actionsImplImportGaleon->setText(i18n("Import &Galeon Bookmarks..."));
|
||||
connect(m_actionsImplImportGaleon, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() ));
|
||||
|
||||
KAction* actnImportKDE2 = actionCollection()->addAction("importKDE2");
|
||||
actnImportKDE2->setObjectName("KDE2");
|
||||
actnImportKDE2->setIcon(KIcon("kde"));
|
||||
actnImportKDE2->setText(i18n("Import &KDE 2 or KDE 3 Bookmarks..."));
|
||||
KAction* m_actionsImplImportKDE2 = actionCollection()->addAction("importKDE2");
|
||||
m_actionsImplImportKDE2->setObjectName("KDE2");
|
||||
m_actionsImplImportKDE2->setIcon(KIcon("kde"));
|
||||
m_actionsImplImportKDE2->setText(i18n("Import &KDE 2 or KDE 3 Bookmarks..."));
|
||||
|
||||
connect(actnImportKDE2, SIGNAL( triggered() ), actn, SLOT( slotImport() ));
|
||||
connect(m_actionsImplImportKDE2, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() ));
|
||||
|
||||
KAction* actnImportIE = actionCollection()->addAction("importIE");
|
||||
actnImportIE->setObjectName("IE");
|
||||
actnImportIE->setText(i18n("Import &Internet Explorer Bookmarks..."));
|
||||
connect(actnImportIE, SIGNAL( triggered() ), actn, SLOT( slotImport() ));
|
||||
KAction* m_actionsImplImportIE = actionCollection()->addAction("importIE");
|
||||
m_actionsImplImportIE->setObjectName("IE");
|
||||
m_actionsImplImportIE->setText(i18n("Import &Internet Explorer Bookmarks..."));
|
||||
connect(m_actionsImplImportIE, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() ));
|
||||
|
||||
KAction* actnImportMoz = actionCollection()->addAction("importMoz");
|
||||
actnImportMoz->setObjectName("Moz");
|
||||
actnImportMoz->setIcon(KIcon("mozilla"));
|
||||
actnImportMoz->setText(i18n("Import &Mozilla Bookmarks..."));
|
||||
connect(actnImportMoz, SIGNAL( triggered() ), actn, SLOT( slotImport() ));
|
||||
KAction* m_actionsImplImportMoz = actionCollection()->addAction("importMoz");
|
||||
m_actionsImplImportMoz->setObjectName("Moz");
|
||||
m_actionsImplImportMoz->setIcon(KIcon("mozilla"));
|
||||
m_actionsImplImportMoz->setText(i18n("Import &Mozilla Bookmarks..."));
|
||||
connect(m_actionsImplImportMoz, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() ));
|
||||
|
||||
KAction* actnExportNS = actionCollection()->addAction("exportNS");
|
||||
actnExportNS->setIcon(KIcon("netscape"));
|
||||
actnExportNS->setText(i18n("Export &Netscape Bookmarks"));
|
||||
connect(actnExportNS, SIGNAL( triggered() ), actn, SLOT( slotExportNS() ));
|
||||
KAction* m_actionsImplExportNS = actionCollection()->addAction("exportNS");
|
||||
m_actionsImplExportNS->setIcon(KIcon("netscape"));
|
||||
m_actionsImplExportNS->setText(i18n("Export &Netscape Bookmarks"));
|
||||
connect(m_actionsImplExportNS, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExportNS() ));
|
||||
|
||||
KAction* actnExportOpera = actionCollection()->addAction("exportOpera");
|
||||
actnExportOpera->setIcon(KIcon("opera"));
|
||||
actnExportOpera->setText(i18n("Export &Opera Bookmarks..."));
|
||||
connect(actnExportOpera, SIGNAL( triggered() ), actn, SLOT( slotExportOpera() ));
|
||||
KAction* m_actionsImplExportOpera = actionCollection()->addAction("exportOpera");
|
||||
m_actionsImplExportOpera->setIcon(KIcon("opera"));
|
||||
m_actionsImplExportOpera->setText(i18n("Export &Opera Bookmarks..."));
|
||||
connect(m_actionsImplExportOpera, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExportOpera() ));
|
||||
|
||||
KAction* actnExportHTML = actionCollection()->addAction("exportHTML");
|
||||
actnExportHTML->setIcon(KIcon("text-html"));
|
||||
actnExportHTML->setText(i18n("Export &HTML Bookmarks..."));
|
||||
connect(actnExportHTML, SIGNAL( triggered() ), actn, SLOT( slotExportHTML() ));
|
||||
KAction* m_actionsImplExportHTML = actionCollection()->addAction("exportHTML");
|
||||
m_actionsImplExportHTML->setIcon(KIcon("text-html"));
|
||||
m_actionsImplExportHTML->setText(i18n("Export &HTML Bookmarks..."));
|
||||
connect(m_actionsImplExportHTML, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExportHTML() ));
|
||||
|
||||
KAction* actnExportIE = actionCollection()->addAction("exportIE");
|
||||
actnExportIE->setText(i18n("Export &Internet Explorer Bookmarks..."));
|
||||
connect(actnExportIE, SIGNAL( triggered() ), actn, SLOT( slotExportIE() ));
|
||||
KAction* m_actionsImplExportIE = actionCollection()->addAction("exportIE");
|
||||
m_actionsImplExportIE->setText(i18n("Export &Internet Explorer Bookmarks..."));
|
||||
connect(m_actionsImplExportIE, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExportIE() ));
|
||||
|
||||
KAction* actnExportMoz = actionCollection()->addAction("exportMoz");
|
||||
actnExportMoz->setIcon(KIcon("mozilla"));
|
||||
actnExportMoz->setText(i18n("Export &Mozilla Bookmarks..."));
|
||||
connect(actnExportMoz, SIGNAL( triggered() ), actn, SLOT( slotExportMoz() ));
|
||||
KAction* m_actionsImplExportMoz = actionCollection()->addAction("exportMoz");
|
||||
m_actionsImplExportMoz->setIcon(KIcon("mozilla"));
|
||||
m_actionsImplExportMoz->setText(i18n("Export &Mozilla Bookmarks..."));
|
||||
connect(m_actionsImplExportMoz, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExportMoz() ));
|
||||
}
|
||||
|
||||
void ActionsImpl::slotLoad()
|
||||
|
@ -328,7 +327,7 @@ void ActionsImpl::slotCut() {
|
|||
KEBApp::self()->bkInfo()->commitChanges();
|
||||
slotCopy();
|
||||
DeleteManyCommand *mcmd = new DeleteManyCommand( i18n("Cut Items"), KEBApp::self()->selectedBookmarks() );
|
||||
CommandHistory::self()->addCommand(mcmd);
|
||||
commandHistory()->addCommand(mcmd);
|
||||
|
||||
}
|
||||
|
||||
|
@ -353,7 +352,7 @@ void ActionsImpl::slotPaste() {
|
|||
addr = bk.address();
|
||||
|
||||
KEBMacroCommand *mcmd = CmdGen::insertMimeSource( i18n("Paste"), QApplication::clipboard()->mimeData(), addr);
|
||||
CommandHistory::self()->addCommand(mcmd);
|
||||
commandHistory()->addCommand(mcmd);
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
|
@ -370,7 +369,7 @@ void ActionsImpl::slotNewFolder()
|
|||
CreateCommand *cmd = new CreateCommand(
|
||||
KEBApp::self()->insertAddress(),
|
||||
str, "bookmark_folder", /*open*/ true);
|
||||
CommandHistory::self()->addCommand(cmd);
|
||||
commandHistory()->addCommand(cmd);
|
||||
}
|
||||
|
||||
void ActionsImpl::slotNewBookmark()
|
||||
|
@ -380,14 +379,14 @@ void ActionsImpl::slotNewBookmark()
|
|||
CreateCommand * cmd = new CreateCommand(
|
||||
KEBApp::self()->insertAddress(),
|
||||
QString(), "www", KUrl("http://"));
|
||||
CommandHistory::self()->addCommand(cmd);
|
||||
commandHistory()->addCommand(cmd);
|
||||
}
|
||||
|
||||
void ActionsImpl::slotInsertSeparator()
|
||||
{
|
||||
KEBApp::self()->bkInfo()->commitChanges();
|
||||
CreateCommand * cmd = new CreateCommand(KEBApp::self()->insertAddress());
|
||||
CommandHistory::self()->addCommand(cmd);
|
||||
commandHistory()->addCommand(cmd);
|
||||
}
|
||||
|
||||
void ActionsImpl::slotImport() {
|
||||
|
@ -398,7 +397,7 @@ void ActionsImpl::slotImport() {
|
|||
= ImportCommand::performImport(sender()->objectName(), KEBApp::self());
|
||||
if (!import)
|
||||
return;
|
||||
CommandHistory::self()->addCommand(import);
|
||||
commandHistory()->addCommand(import);
|
||||
//FIXME select import->groupAddress
|
||||
}
|
||||
|
||||
|
@ -496,7 +495,7 @@ void ActionsImpl::slotRecursiveSort() {
|
|||
for (QList<KBookmark>::ConstIterator it = bookmarks.constBegin(); it != bookmarks.constEnd(); ++it) {
|
||||
new SortCommand("", (*it).address(), mcmd);
|
||||
}
|
||||
CommandHistory::self()->addCommand(mcmd);
|
||||
commandHistory()->addCommand(mcmd);
|
||||
}
|
||||
|
||||
void ActionsImpl::slotSort() {
|
||||
|
@ -504,7 +503,7 @@ void ActionsImpl::slotSort() {
|
|||
KBookmark bk = KEBApp::self()->firstSelected();
|
||||
Q_ASSERT(bk.isGroup());
|
||||
SortCommand *cmd = new SortCommand(i18n("Sort Alphabetically"), bk.address());
|
||||
CommandHistory::self()->addCommand(cmd);
|
||||
commandHistory()->addCommand(cmd);
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
|
@ -512,7 +511,7 @@ void ActionsImpl::slotSort() {
|
|||
void ActionsImpl::slotDelete() {
|
||||
KEBApp::self()->bkInfo()->commitChanges();
|
||||
DeleteManyCommand *mcmd = new DeleteManyCommand(i18n("Delete Items"), KEBApp::self()->selectedBookmarks());
|
||||
CommandHistory::self()->addCommand(mcmd);
|
||||
commandHistory()->addCommand(mcmd);
|
||||
}
|
||||
|
||||
void ActionsImpl::slotOpenLink()
|
||||
|
@ -550,7 +549,7 @@ void ActionsImpl::slotSetAsToolbar() {
|
|||
KBookmark bk = KEBApp::self()->firstSelected();
|
||||
Q_ASSERT(bk.isGroup());
|
||||
KEBMacroCommand *mcmd = CmdGen::setAsToolbar(bk);
|
||||
CommandHistory::self()->addCommand(mcmd);
|
||||
commandHistory()->addCommand(mcmd);
|
||||
}
|
||||
|
||||
void ActionsImpl::slotChangeIcon() {
|
||||
|
@ -561,7 +560,7 @@ void ActionsImpl::slotChangeIcon() {
|
|||
return;
|
||||
EditCommand *cmd = new EditCommand(bk.address(), -1, newIcon);
|
||||
|
||||
CommandHistory::self()->addCommand(cmd);
|
||||
commandHistory()->addCommand(cmd);
|
||||
}
|
||||
|
||||
void ActionsImpl::slotExpandAll()
|
||||
|
@ -574,4 +573,9 @@ void ActionsImpl::slotCollapseAll()
|
|||
KEBApp::self()->collapseAll();
|
||||
}
|
||||
|
||||
CommandHistory* ActionsImpl::commandHistory()
|
||||
{
|
||||
return m_model->commandHistory();
|
||||
}
|
||||
|
||||
#include "actionsimpl.moc"
|
||||
|
|
|
@ -22,12 +22,16 @@
|
|||
#define __actionsimpl_h
|
||||
|
||||
#include <QtCore/QObject>
|
||||
class CommandHistory;
|
||||
class KBookmarkModel;
|
||||
|
||||
class ActionsImpl : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ActionsImpl(QObject* parent, KBookmarkModel* model) : QObject(parent), m_model(model) { }
|
||||
~ActionsImpl();
|
||||
bool save();
|
||||
|
||||
public Q_SLOTS:
|
||||
|
@ -62,15 +66,9 @@ public Q_SLOTS:
|
|||
void slotExportIE();
|
||||
void slotExportNS();
|
||||
void slotExportMoz();
|
||||
|
||||
static ActionsImpl* self() { if (!s_self) { s_self = new ActionsImpl(); }; return s_self; }
|
||||
|
||||
public:
|
||||
~ActionsImpl();
|
||||
|
||||
private:
|
||||
ActionsImpl() { }
|
||||
static ActionsImpl *s_self;
|
||||
CommandHistory* commandHistory();
|
||||
KBookmarkModel* m_model;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -152,7 +152,7 @@ void BookmarkInfoWidget::slotTextChangedTitle(const QString &str)
|
|||
else
|
||||
{
|
||||
titlecmd = new EditCommand(m_bk.address(), 0, str);
|
||||
CommandHistory::self()->addCommand(titlecmd);
|
||||
m_model->commandHistory()->addCommand(titlecmd);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -179,7 +179,7 @@ void BookmarkInfoWidget::slotTextChangedURL(const QString &str) {
|
|||
else
|
||||
{
|
||||
urlcmd = new EditCommand(m_bk.address(), 1, str);
|
||||
CommandHistory::self()->addCommand(urlcmd);
|
||||
m_model->commandHistory()->addCommand(urlcmd);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -206,7 +206,7 @@ void BookmarkInfoWidget::slotTextChangedComment(const QString &str) {
|
|||
else
|
||||
{
|
||||
commentcmd = new EditCommand(m_bk.address(), 2, str);
|
||||
CommandHistory::self()->addCommand(commentcmd);
|
||||
m_model->commandHistory()->addCommand(commentcmd);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -222,8 +222,8 @@ void BookmarkInfoWidget::slotUpdate()
|
|||
showBookmark( KBookmark() );
|
||||
}
|
||||
|
||||
BookmarkInfoWidget::BookmarkInfoWidget(BookmarkListView * lv, QWidget *parent)
|
||||
: QWidget(parent), mBookmarkListView(lv) {
|
||||
BookmarkInfoWidget::BookmarkInfoWidget(BookmarkListView * lv, KBookmarkModel* model, QWidget *parent)
|
||||
: QWidget(parent), m_model(model), mBookmarkListView(lv) {
|
||||
|
||||
connect(mBookmarkListView->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
|
||||
SLOT( slotUpdate()));
|
||||
|
@ -233,8 +233,7 @@ BookmarkInfoWidget::BookmarkInfoWidget(BookmarkListView * lv, QWidget *parent)
|
|||
|
||||
timer = new QTimer(this);
|
||||
timer->setSingleShot(true);
|
||||
connect(timer, SIGNAL( timeout() ), SLOT( commitChanges()));
|
||||
|
||||
connect(timer, SIGNAL(timeout()), SLOT(commitChanges()));
|
||||
|
||||
titlecmd = 0;
|
||||
urlcmd = 0;
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <kbookmark.h>
|
||||
#include <QtGui/QWidget>
|
||||
|
||||
class KBookmarkModel;
|
||||
class BookmarkListView;
|
||||
class EditCommand;
|
||||
|
||||
|
@ -33,8 +34,8 @@ class QTimer;
|
|||
class BookmarkInfoWidget : public QWidget {
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit BookmarkInfoWidget(BookmarkListView * lv, QWidget * = 0);
|
||||
|
||||
explicit BookmarkInfoWidget(BookmarkListView * lv, KBookmarkModel* model, QWidget * = 0);
|
||||
|
||||
KBookmark bookmark() { return m_bk; }
|
||||
void updateStatus(); //FIXME where was this called?
|
||||
|
||||
|
@ -59,6 +60,7 @@ private:
|
|||
KLineEdit *m_visitdate_le, *m_credate_le,
|
||||
*m_visitcount_le;
|
||||
KBookmark m_bk;
|
||||
KBookmarkModel* m_model;
|
||||
BookmarkListView * mBookmarkListView;
|
||||
};
|
||||
|
||||
|
|
|
@ -36,8 +36,8 @@
|
|||
class KBookmarkModel::Private
|
||||
{
|
||||
public:
|
||||
Private(const KBookmark& root, KBookmarkManager* manager)
|
||||
: mRoot(root), mManager(manager), mInsertionData(0)
|
||||
Private(const KBookmark& root, CommandHistory* commandHistory, KBookmarkManager* manager)
|
||||
: mRoot(root), mCommandHistory(commandHistory), mManager(manager), mInsertionData(0)
|
||||
{
|
||||
mRootItem = new TreeItem(root, 0);
|
||||
}
|
||||
|
@ -48,6 +48,7 @@ public:
|
|||
}
|
||||
TreeItem * mRootItem;
|
||||
KBookmark mRoot;
|
||||
CommandHistory* mCommandHistory;
|
||||
KBookmarkManager* mManager;
|
||||
|
||||
class InsertionData {
|
||||
|
@ -68,8 +69,8 @@ public:
|
|||
InsertionData* mInsertionData;
|
||||
};
|
||||
|
||||
KBookmarkModel::KBookmarkModel(const KBookmark& root, KBookmarkManager* manager, QObject* parent)
|
||||
: QAbstractItemModel(parent), d(new Private(root, manager))
|
||||
KBookmarkModel::KBookmarkModel(const KBookmark& root, CommandHistory* commandHistory, KBookmarkManager* manager, QObject* parent)
|
||||
: QAbstractItemModel(parent), d(new Private(root, commandHistory, manager))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -96,8 +97,8 @@ QVariant KBookmarkModel::data(const QModelIndex &index, int role) const
|
|||
//Text
|
||||
if (index.isValid() && (role == Qt::DisplayRole || role == Qt::EditRole)) {
|
||||
const KBookmark bk = bookmarkForIndex(index);
|
||||
if(bk.address().isEmpty()) {
|
||||
if(index.column() == NameColumnId)
|
||||
if (bk.address().isEmpty()) {
|
||||
if (index.column() == NameColumnId)
|
||||
return QVariant(i18nc("name of the container of all browser bookmarks", "Bookmarks"));
|
||||
else
|
||||
return QVariant();
|
||||
|
@ -119,15 +120,15 @@ QVariant KBookmarkModel::data(const QModelIndex &index, int role) const
|
|||
return QVariant( text1 + " -- " + text2 );
|
||||
}
|
||||
default:
|
||||
return QVariant( QString() ); //can't happen
|
||||
return QVariant(); //can't happen
|
||||
}
|
||||
}
|
||||
|
||||
//Icon
|
||||
if(index.isValid() && role == Qt::DecorationRole && index.column() == NameColumnId)
|
||||
if (index.isValid() && role == Qt::DecorationRole && index.column() == NameColumnId)
|
||||
{
|
||||
KBookmark bk = bookmarkForIndex(index);
|
||||
if(bk.address().isEmpty())
|
||||
if (bk.address().isEmpty())
|
||||
return KIcon("bookmarks");
|
||||
return KIcon(bk.icon());
|
||||
}
|
||||
|
@ -179,10 +180,10 @@ Qt::ItemFlags KBookmarkModel::flags(const QModelIndex &index) const
|
|||
|
||||
bool KBookmarkModel::setData(const QModelIndex &index, const QVariant &value, int role)
|
||||
{
|
||||
if(index.isValid() && role == Qt::EditRole)
|
||||
if (index.isValid() && role == Qt::EditRole)
|
||||
{
|
||||
kDebug() << value.toString();
|
||||
CommandHistory::self()->addCommand(new EditCommand(bookmarkForIndex(index).address(), index.column(), value.toString()));
|
||||
d->mCommandHistory->addCommand(new EditCommand(bookmarkForIndex(index).address(), index.column(), value.toString()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -190,7 +191,7 @@ bool KBookmarkModel::setData(const QModelIndex &index, const QVariant &value, in
|
|||
|
||||
QVariant KBookmarkModel::headerData(int section, Qt::Orientation orientation, int role) const
|
||||
{
|
||||
if(role == Qt::DisplayRole && orientation == Qt::Horizontal)
|
||||
if (role == Qt::DisplayRole && orientation == Qt::Horizontal)
|
||||
{
|
||||
QString result;
|
||||
switch(section)
|
||||
|
@ -220,53 +221,46 @@ QVariant KBookmarkModel::headerData(int section, Qt::Orientation orientation, in
|
|||
|
||||
QModelIndex KBookmarkModel::index(int row, int column, const QModelIndex &parent) const
|
||||
{
|
||||
if( ! parent.isValid())
|
||||
if (!parent.isValid())
|
||||
return createIndex(row, column, d->mRootItem);
|
||||
|
||||
TreeItem * item = static_cast<TreeItem *>(parent.internalPointer());
|
||||
if(row == item->childCount()) {// Received drop below last row, simulate drop on last row
|
||||
if (row == item->childCount()) {// Received drop below last row, simulate drop on last row
|
||||
return createIndex(row-1, column, item->child(row-1));
|
||||
}
|
||||
|
||||
return createIndex(row, column, item->child(row));
|
||||
}
|
||||
|
||||
|
||||
|
||||
QModelIndex KBookmarkModel::parent(const QModelIndex &index) const
|
||||
{
|
||||
if(!index.isValid())
|
||||
{
|
||||
if (!index.isValid()) {
|
||||
// qt asks for the parent of an invalid parent
|
||||
// either we are in a inconsistent case or more likely
|
||||
// we are dragging and dropping and qt didn't check
|
||||
// what itemAt() returned
|
||||
return index;
|
||||
|
||||
}
|
||||
KBookmark bk = bookmarkForIndex(index);;
|
||||
const QString rootAddress = d->mRoot.address();
|
||||
|
||||
if(bk.address() == rootAddress)
|
||||
if (bk.address() == rootAddress)
|
||||
return QModelIndex();
|
||||
|
||||
KBookmarkGroup parent = bk.parentGroup();
|
||||
KBookmarkGroup parent = bk.parentGroup();
|
||||
TreeItem * item = static_cast<TreeItem *>(index.internalPointer());
|
||||
if(parent.address() != rootAddress)
|
||||
// TODO replace first argument with parent.positionInParent()
|
||||
return createIndex( KBookmark::positionInParent(parent.address()) , 0, item->parent());
|
||||
if (parent.address() != rootAddress)
|
||||
return createIndex(parent.positionInParent(), 0, item->parent());
|
||||
else //parent is root
|
||||
return createIndex( 0, 0, item->parent());
|
||||
return createIndex(0, 0, item->parent());
|
||||
}
|
||||
|
||||
int KBookmarkModel::rowCount(const QModelIndex &parent) const
|
||||
{
|
||||
if(parent.isValid())
|
||||
if (parent.isValid())
|
||||
return static_cast<TreeItem *>(parent.internalPointer())->childCount();
|
||||
else //root case
|
||||
{
|
||||
return 1; // Only one child: "Bookmarks"
|
||||
}
|
||||
}
|
||||
|
||||
int KBookmarkModel::columnCount(const QModelIndex &) const
|
||||
|
@ -283,29 +277,29 @@ void KBookmarkModel::emitDataChanged(const KBookmark& bk)
|
|||
{
|
||||
QModelIndex idx = indexForBookmark(bk);
|
||||
kDebug() << idx;
|
||||
emit dataChanged(idx, idx.sibling(idx.row(), columnCount()-1) );
|
||||
emit dataChanged(idx, idx.sibling(idx.row(), columnCount()-1));
|
||||
}
|
||||
|
||||
QMimeData * KBookmarkModel::mimeData( const QModelIndexList & indexes ) const
|
||||
static const char* s_mime_bookmark_addresses = "application/x-kde-bookmarkaddresses";
|
||||
|
||||
QMimeData * KBookmarkModel::mimeData(const QModelIndexList & indexes) const
|
||||
{
|
||||
QMimeData *mimeData = new QMimeData;
|
||||
KBookmark::List bookmarks;
|
||||
QByteArray addresses;
|
||||
|
||||
QModelIndexList::const_iterator it, end;
|
||||
end = indexes.constEnd();
|
||||
for( it = indexes.constBegin(); it!= end; ++it)
|
||||
if( it->column() == NameColumnId)
|
||||
{
|
||||
bookmarks.push_back( bookmarkForIndex(*it) );
|
||||
if(!addresses.isEmpty())
|
||||
Q_FOREACH(const QModelIndex& it, indexes) {
|
||||
if (it.column() == NameColumnId) {
|
||||
bookmarks.push_back(bookmarkForIndex(it));
|
||||
if (!addresses.isEmpty())
|
||||
addresses.append(';');
|
||||
addresses.append( bookmarkForIndex(*it).address().toLatin1() );
|
||||
kDebug()<<"appended"<<bookmarkForIndex(*it).address().toLatin1();
|
||||
addresses.append(bookmarkForIndex(it).address().toLatin1());
|
||||
kDebug() << "appended" << bookmarkForIndex(it).address();
|
||||
}
|
||||
}
|
||||
|
||||
bookmarks.populateMimeData(mimeData);
|
||||
mimeData->setData( "application/x-keditbookmarks", addresses);
|
||||
mimeData->setData(s_mime_bookmark_addresses, addresses);
|
||||
return mimeData;
|
||||
}
|
||||
|
||||
|
@ -321,31 +315,24 @@ QStringList KBookmarkModel::mimeTypes() const
|
|||
|
||||
bool KBookmarkModel::dropMimeData(const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent)
|
||||
{
|
||||
//FIXME this only works for internal drag and drops
|
||||
//FIXME Moving is *very* buggy
|
||||
QModelIndex dropDestIndex;
|
||||
bool isInsertBetweenOp = false;
|
||||
if(row == -1)
|
||||
{
|
||||
if (row == -1) {
|
||||
dropDestIndex = parent;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
isInsertBetweenOp = true;
|
||||
dropDestIndex= index(row, column, parent);
|
||||
dropDestIndex = index(row, column, parent);
|
||||
}
|
||||
|
||||
KBookmark dropDestBookmark = bookmarkForIndex(dropDestIndex);
|
||||
if (dropDestBookmark.isNull())
|
||||
{
|
||||
if (dropDestBookmark.isNull()) {
|
||||
// Presumably an invalid index: assume we want to place this in the root bookmark
|
||||
// folder.
|
||||
dropDestBookmark = d->mRoot;
|
||||
}
|
||||
|
||||
QString addr = dropDestBookmark.address();
|
||||
if(dropDestBookmark.isGroup() && !isInsertBetweenOp)
|
||||
{
|
||||
if (dropDestBookmark.isGroup() && !isInsertBetweenOp) {
|
||||
addr += "/0";
|
||||
}
|
||||
// bookmarkForIndex(...) does not distinguish between the last item in the folder
|
||||
|
@ -357,34 +344,25 @@ bool KBookmarkModel::dropMimeData(const QMimeData * data, Qt::DropAction action,
|
|||
addr = KBookmark::nextAddress(addr);
|
||||
}
|
||||
|
||||
if(action == Qt::CopyAction)
|
||||
{
|
||||
if (action == Qt::CopyAction) {
|
||||
KEBMacroCommand * cmd = CmdGen::insertMimeSource("Copy", data, addr);
|
||||
CommandHistory::self()->addCommand(cmd);
|
||||
}
|
||||
else if(action == Qt::MoveAction)
|
||||
{
|
||||
if(data->hasFormat("application/x-keditbookmarks"))
|
||||
{
|
||||
d->mCommandHistory->addCommand(cmd);
|
||||
} else if (action == Qt::MoveAction) {
|
||||
if (data->hasFormat(s_mime_bookmark_addresses)) {
|
||||
KBookmark::List bookmarks;
|
||||
QList<QByteArray> addresses = data->data("application/x-keditbookmarks").split(';');
|
||||
QList<QByteArray>::const_iterator it, end;
|
||||
end = addresses.constEnd();
|
||||
for(it = addresses.constBegin(); it != end; ++it)
|
||||
{
|
||||
KBookmark bk = d->mManager->findByAddress(QString::fromLatin1(*it));
|
||||
kDebug()<<"Extracted bookmark xxx to list: "<<bk.address();
|
||||
QList<QByteArray> addresses = data->data(s_mime_bookmark_addresses).split(';');
|
||||
Q_FOREACH(const QByteArray& address, addresses) {
|
||||
KBookmark bk = d->mManager->findByAddress(QString::fromLatin1(address));
|
||||
kDebug() << "Extracted bookmark:" << bk.address();
|
||||
bookmarks.push_back(bk);
|
||||
}
|
||||
|
||||
KEBMacroCommand * cmd = CmdGen::itemsMoved(bookmarks, addr, false);
|
||||
CommandHistory::self()->addCommand(cmd);
|
||||
}
|
||||
else
|
||||
{
|
||||
d->mCommandHistory->addCommand(cmd);
|
||||
} else {
|
||||
kDebug()<<"NO FORMAT";
|
||||
KEBMacroCommand * cmd = CmdGen::insertMimeSource("Copy", data, addr);
|
||||
CommandHistory::self()->addCommand(cmd);
|
||||
d->mCommandHistory->addCommand(cmd);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -454,4 +432,9 @@ void KBookmarkModel::removeBookmark(KBookmark bookmark)
|
|||
endRemoveRows();
|
||||
}
|
||||
|
||||
CommandHistory* KBookmarkModel::commandHistory()
|
||||
{
|
||||
return d->mCommandHistory;
|
||||
}
|
||||
|
||||
#include "bookmarkmodel.moc"
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include <QtCore/QAbstractItemModel>
|
||||
|
||||
class CommandHistory;
|
||||
class KBookmarkGroup;
|
||||
class KBookmarkManager;
|
||||
class KBookmark;
|
||||
|
@ -43,11 +44,13 @@ class KBookmarkModel : public QAbstractItemModel
|
|||
};
|
||||
|
||||
public:
|
||||
KBookmarkModel(const KBookmark& root, KBookmarkManager* manager, QObject* parent = 0);
|
||||
KBookmarkModel(const KBookmark& root, CommandHistory* commandHistory, KBookmarkManager* manager, QObject* parent = 0);
|
||||
void setRoot(const KBookmark& root);
|
||||
|
||||
virtual ~KBookmarkModel();
|
||||
|
||||
CommandHistory* commandHistory();
|
||||
|
||||
//reimplemented functions
|
||||
virtual QVariant data(const QModelIndex &index, int role) const;
|
||||
virtual Qt::ItemFlags flags(const QModelIndex &index) const;
|
||||
|
|
|
@ -24,14 +24,13 @@
|
|||
#include <QAction>
|
||||
#include <QUndoCommand>
|
||||
|
||||
CommandHistory* CommandHistory::s_self = 0;
|
||||
|
||||
CommandHistory::CommandHistory(KActionCollection *actionCollection)
|
||||
: m_commandHistory()
|
||||
CommandHistory::CommandHistory(QObject* parent)
|
||||
: QObject(parent), m_commandHistory()
|
||||
{
|
||||
Q_ASSERT(!s_self);
|
||||
s_self = this; // this is hacky
|
||||
}
|
||||
|
||||
void CommandHistory::createActions(KActionCollection *actionCollection)
|
||||
{
|
||||
// TODO use QUndoView?
|
||||
QAction* undoAction = m_commandHistory.createUndoAction(actionCollection);
|
||||
connect(undoAction, SIGNAL(triggered()), this, SLOT(undo()));
|
||||
|
@ -39,12 +38,6 @@ CommandHistory::CommandHistory(KActionCollection *actionCollection)
|
|||
connect(redoAction, SIGNAL(triggered()), this, SLOT(redo()));
|
||||
}
|
||||
|
||||
CommandHistory* CommandHistory::self()
|
||||
{
|
||||
Q_ASSERT(s_self);
|
||||
return s_self;
|
||||
}
|
||||
|
||||
void CommandHistory::undo()
|
||||
{
|
||||
const int idx = m_commandHistory.index();
|
||||
|
|
|
@ -24,11 +24,14 @@
|
|||
class QUndoCommand;
|
||||
class KActionCollection;
|
||||
|
||||
// TODO namespacing
|
||||
class CommandHistory : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
CommandHistory(KActionCollection *collection);
|
||||
CommandHistory(QObject* parent = 0);
|
||||
void createActions(KActionCollection *collection);
|
||||
|
||||
virtual ~CommandHistory() {}
|
||||
|
||||
void notifyDocSaved();
|
||||
|
@ -36,8 +39,6 @@ public:
|
|||
void clearHistory();
|
||||
void addCommand(QUndoCommand *);
|
||||
|
||||
static CommandHistory *self();
|
||||
|
||||
Q_SIGNALS:
|
||||
void notifyCommandExecuted();
|
||||
|
||||
|
@ -51,7 +52,6 @@ private:
|
|||
private:
|
||||
// Ported from K3Command/K3CommandHistory to QUndoCommand/KUndoStack for KDE-4.4.0
|
||||
KUndoStack m_commandHistory;
|
||||
static CommandHistory *s_self;
|
||||
};
|
||||
|
||||
#endif /* COMMANDHISTORY_H */
|
||||
|
|
|
@ -54,7 +54,7 @@ void GlobalBookmarkManager::saveAs(const QString &fileName) { mgr()->saveAs(file
|
|||
void GlobalBookmarkManager::setUpdate(bool update) { mgr()->setUpdate(update); }
|
||||
QString GlobalBookmarkManager::path() const { return mgr()->path(); }
|
||||
|
||||
void GlobalBookmarkManager::createManager(const QString &filename, const QString &dbusObjectName) {
|
||||
void GlobalBookmarkManager::createManager(const QString &filename, const QString &dbusObjectName, CommandHistory* commandHistory) {
|
||||
if (m_mgr) {
|
||||
kDebug()<<"createManager called twice";
|
||||
disconnect(m_mgr, 0, 0, 0);
|
||||
|
@ -67,7 +67,7 @@ void GlobalBookmarkManager::createManager(const QString &filename, const QString
|
|||
if ( m_model ) {
|
||||
m_model->setRoot(root());
|
||||
} else {
|
||||
m_model = new KBookmarkModel(root(), m_mgr, this);
|
||||
m_model = new KBookmarkModel(root(), commandHistory, m_mgr, this);
|
||||
}
|
||||
|
||||
connect(m_mgr, SIGNAL( changed(const QString &, const QString &) ),
|
||||
|
@ -83,7 +83,7 @@ void GlobalBookmarkManager::slotBookmarksChanged(const QString &, const QString
|
|||
|
||||
m_model->setRoot(m_mgr->root());
|
||||
|
||||
CommandHistory::self()->clearHistory();
|
||||
m_model->commandHistory()->clearHistory();
|
||||
}
|
||||
|
||||
void GlobalBookmarkManager::notifyManagers(const KBookmarkGroup& grp)
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <kbookmark.h>
|
||||
#include <QObject>
|
||||
|
||||
class CommandHistory;
|
||||
class KBookmarkModel;
|
||||
class KBookmark;
|
||||
class KBookmarkManager;
|
||||
|
@ -42,7 +43,7 @@ public:
|
|||
KBookmarkManager* mgr() const { return m_mgr; }
|
||||
QString path() const;
|
||||
|
||||
void createManager(const QString &filename, const QString &dbusObjectName);
|
||||
void createManager(const QString &filename, const QString &dbusObjectName, CommandHistory* commandHistory);
|
||||
void notifyManagers(const KBookmarkGroup& grp);
|
||||
void notifyManagers();
|
||||
bool managerSave();
|
||||
|
|
|
@ -274,7 +274,7 @@ public:
|
|||
|
||||
/**
|
||||
* Creates the search line. This can be useful to reimplement in cases where
|
||||
* a K3ListViewSearchLine subclass is used.
|
||||
* a KViewSearchLine subclass is used.
|
||||
*/
|
||||
virtual KViewSearchLine *createSearchLine(QAbstractItemView *view);
|
||||
|
||||
|
|
|
@ -140,7 +140,7 @@ extern "C" KDE_EXPORT int kdemain(int argc, char **argv) {
|
|||
: KStandardDirs::locateLocal("data", QLatin1String("konqueror/bookmarks.xml"));
|
||||
|
||||
if (!isGui) {
|
||||
GlobalBookmarkManager::self()->createManager(filename, QString());
|
||||
GlobalBookmarkManager::self()->createManager(filename, QString(), 0 /*no command history*/);
|
||||
GlobalBookmarkManager::ExportType exportType = GlobalBookmarkManager::MozillaExport; // uumm.. can i just set it to -1 ?
|
||||
int got = 0;
|
||||
const char *arg, *arg2 = 0, *importType = 0;
|
||||
|
|
|
@ -19,34 +19,41 @@
|
|||
*/
|
||||
|
||||
#include <kstandarddirs.h>
|
||||
#include <globalbookmarkmanager.h>
|
||||
#include <kdebug.h>
|
||||
#include <qtest_kde.h>
|
||||
#include <kbookmarkmanager.h>
|
||||
|
||||
#include "globalbookmarkmanager.h"
|
||||
#include "commandhistory.h"
|
||||
#include "bookmarkmodel.h"
|
||||
#include "commands.h"
|
||||
|
||||
// Return a list of bookmark addresses in KBookmarkManager.
|
||||
// Return a list of all bookmark addresses or urls in a KBookmarkManager.
|
||||
class BookmarkLister : public KBookmarkGroupTraverser
|
||||
{
|
||||
public:
|
||||
BookmarkLister(const KBookmarkGroup& root) {
|
||||
traverse(root);
|
||||
}
|
||||
static QStringList list(KBookmarkManager* mgr) {
|
||||
static QStringList addressList(KBookmarkManager* mgr) {
|
||||
BookmarkLister lister(mgr->root());
|
||||
return lister.m_list;
|
||||
return lister.m_addressList;
|
||||
}
|
||||
static QStringList urlList(KBookmarkManager* mgr) {
|
||||
BookmarkLister lister(mgr->root());
|
||||
return lister.m_urlList;
|
||||
}
|
||||
virtual void visit(const KBookmark& bk) {
|
||||
m_list.append(bk.address());
|
||||
m_addressList.append(bk.address());
|
||||
m_urlList.append(bk.url().url());
|
||||
}
|
||||
virtual void visitEnter(const KBookmarkGroup& /*group*/) {
|
||||
//m_list.append(group.address());
|
||||
virtual void visitEnter(const KBookmarkGroup& group) {
|
||||
m_addressList.append(group.address() + '/');
|
||||
}
|
||||
|
||||
private:
|
||||
QStringList m_list;
|
||||
QStringList m_addressList;
|
||||
QStringList m_urlList;
|
||||
};
|
||||
|
||||
class KBookmarkModelTest : public QObject
|
||||
|
@ -62,9 +69,15 @@ private Q_SLOTS:
|
|||
// TODO port away from that GlobalBookmarkManager singleton
|
||||
const QString filename = KStandardDirs::locateLocal("data", QLatin1String("konqueror/bookmarks.xml"));
|
||||
QFile::remove(filename);
|
||||
GlobalBookmarkManager::self()->createManager(filename, QString());
|
||||
m_cmdHistory = new CommandHistory;
|
||||
GlobalBookmarkManager::self()->createManager(filename, QString(), m_cmdHistory);
|
||||
m_bookmarkManager = GlobalBookmarkManager::self()->mgr();
|
||||
QCOMPARE(BookmarkLister::list(m_bookmarkManager), QStringList());
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList());
|
||||
m_model = GlobalBookmarkManager::self()->model();
|
||||
QCOMPARE(m_model->rowCount(), 1); // the toplevel "Bookmarks" toplevel item
|
||||
m_rootIndex = m_model->index(0, 0);
|
||||
QVERIFY(m_rootIndex.isValid());
|
||||
QCOMPARE(m_model->rowCount(m_rootIndex), 0);
|
||||
}
|
||||
|
||||
// The commands modify the model, so the test code uses the commands
|
||||
|
@ -72,9 +85,12 @@ private Q_SLOTS:
|
|||
{
|
||||
CreateCommand* cmd = new CreateCommand("/0", "test_bk", "www", KUrl("http://www.kde.org"));
|
||||
cmd->redo();
|
||||
QCOMPARE(BookmarkLister::list(m_bookmarkManager), QStringList() << "/0");
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList() << "/0");
|
||||
QCOMPARE(BookmarkLister::urlList(m_bookmarkManager), QStringList() << "http://www.kde.org");
|
||||
QCOMPARE(m_model->rowCount(m_rootIndex), 1);
|
||||
cmd->undo();
|
||||
QCOMPARE(BookmarkLister::list(m_bookmarkManager), QStringList());
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList());
|
||||
QCOMPARE(m_model->rowCount(m_rootIndex), 0);
|
||||
delete cmd;
|
||||
}
|
||||
|
||||
|
@ -82,24 +98,70 @@ private Q_SLOTS:
|
|||
{
|
||||
CreateCommand* cmd = new CreateCommand("/0", "test_bk", "www", KUrl("http://www.kde.org"));
|
||||
cmd->redo();
|
||||
QCOMPARE(BookmarkLister::list(m_bookmarkManager), QStringList() << "/0");
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList() << "/0");
|
||||
DeleteCommand* deleteCmd = new DeleteCommand("/0");
|
||||
deleteCmd->redo();
|
||||
QCOMPARE(BookmarkLister::list(m_bookmarkManager), QStringList());
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList());
|
||||
deleteCmd->undo();
|
||||
QCOMPARE(BookmarkLister::list(m_bookmarkManager), QStringList() << "/0");
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList() << "/0");
|
||||
deleteCmd->redo();
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList());
|
||||
|
||||
delete cmd;
|
||||
delete deleteCmd;
|
||||
}
|
||||
|
||||
void testCreateFolder()
|
||||
{
|
||||
CreateCommand folderCmd("/0", "folder", "folder", true /*open*/);
|
||||
folderCmd.redo();
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList() << "/0/");
|
||||
QCOMPARE(m_model->rowCount(m_rootIndex), 1);
|
||||
|
||||
const QString kde = "http://www.kde.org";
|
||||
CreateCommand cmd("/0/0", "test_bk", "www", KUrl(kde));
|
||||
cmd.redo();
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList() << "/0/" << "/0/0");
|
||||
|
||||
// Insert before this bookmark
|
||||
const QString first = "http://first.example.com";
|
||||
CreateCommand cmdFirstBk("/0/0", "first_bk", "www", KUrl(first));
|
||||
cmdFirstBk.redo();
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList() << "/0/" << "/0/0" << "/0/1");
|
||||
QCOMPARE(BookmarkLister::urlList(m_bookmarkManager), QStringList() << first << kde);
|
||||
|
||||
// Move the kde bookmark before the first bookmark
|
||||
KBookmark kdeBookmark = m_bookmarkManager->findByAddress("/0/1");
|
||||
QCOMPARE(kdeBookmark.url().url(), kde);
|
||||
QModelIndex kdeIndex = m_model->indexForBookmark(kdeBookmark);
|
||||
QCOMPARE(kdeIndex.row(), 1);
|
||||
QCOMPARE(m_model->rowCount(kdeIndex.parent()), 2);
|
||||
|
||||
QMimeData* mimeData = m_model->mimeData(QModelIndexList() << kdeIndex);
|
||||
bool ok = m_model->dropMimeData(mimeData, Qt::MoveAction, 0, 0, kdeIndex.parent());
|
||||
QVERIFY(ok);
|
||||
QCOMPARE(BookmarkLister::addressList(m_bookmarkManager), QStringList() << "/0/" << "/0/0" << "/0/1");
|
||||
QCOMPARE(BookmarkLister::urlList(m_bookmarkManager), QStringList() << kde << first);
|
||||
delete mimeData;
|
||||
|
||||
// Move the kde bookmark after the bookmark called 'first'
|
||||
kdeBookmark = m_bookmarkManager->findByAddress("/0/0");
|
||||
kdeIndex = m_model->indexForBookmark(kdeBookmark);
|
||||
QCOMPARE(kdeIndex.row(), 0);
|
||||
mimeData = m_model->mimeData(QModelIndexList() << kdeIndex);
|
||||
ok = m_model->dropMimeData(mimeData, Qt::MoveAction, 2, 0, kdeIndex.parent());
|
||||
QVERIFY(ok);
|
||||
QCOMPARE(BookmarkLister::urlList(m_bookmarkManager), QStringList() << first << kde);
|
||||
delete mimeData;
|
||||
}
|
||||
|
||||
private:
|
||||
KBookmarkManager* m_bookmarkManager;
|
||||
KBookmarkModel* m_model;
|
||||
CommandHistory* m_cmdHistory;
|
||||
QModelIndex m_rootIndex; // the index of the "Bookmarks" root
|
||||
};
|
||||
|
||||
QTEST_KDEMAIN( KBookmarkModelTest, NoGUI )
|
||||
|
||||
#include "kmimefileparsertest.moc"
|
||||
|
||||
|
||||
|
||||
#include "kbookmarkmodeltest.moc"
|
||||
|
|
|
@ -67,7 +67,8 @@ KEBApp::KEBApp(
|
|||
QDBusConnection::sessionBus().registerObject("/keditbookmarks", this, QDBusConnection::ExportScriptableSlots);
|
||||
Q_UNUSED(address);//FIXME sets the current item
|
||||
|
||||
m_cmdHistory = new CommandHistory(actionCollection());
|
||||
m_cmdHistory = new CommandHistory(this);
|
||||
m_cmdHistory->createActions(actionCollection());
|
||||
connect(m_cmdHistory, SIGNAL(notifyCommandExecuted()), this, SLOT(notifyCommandExecuted()));
|
||||
|
||||
s_topLevel = this;
|
||||
|
@ -85,7 +86,7 @@ KEBApp::KEBApp(
|
|||
|
||||
m_canPaste = false;
|
||||
|
||||
GlobalBookmarkManager::self()->createManager(m_bookmarksFilename, m_dbusObjectName);
|
||||
GlobalBookmarkManager::self()->createManager(m_bookmarksFilename, m_dbusObjectName, m_cmdHistory);
|
||||
|
||||
mBookmarkListView = new BookmarkListView();
|
||||
mBookmarkListView->setModel( GlobalBookmarkManager::self()->model() );
|
||||
|
@ -104,7 +105,7 @@ KEBApp::KEBApp(
|
|||
listLayout->addWidget(searchline);
|
||||
listLayout->addWidget(mBookmarkListView);
|
||||
|
||||
m_bkinfo = new BookmarkInfoWidget(mBookmarkListView);
|
||||
m_bkinfo = new BookmarkInfoWidget(mBookmarkListView, GlobalBookmarkManager::self()->model());
|
||||
|
||||
listLayout->addWidget(m_bkinfo);
|
||||
|
||||
|
@ -150,7 +151,7 @@ void KEBApp::reset(const QString & caption, const QString & bookmarksFileName)
|
|||
//FIXME check this code, probably should be model()->setRoot instead of resetModel()
|
||||
m_caption = caption;
|
||||
m_bookmarksFilename = bookmarksFileName;
|
||||
GlobalBookmarkManager::self()->createManager(m_bookmarksFilename, m_dbusObjectName); //FIXME this is still a memory leak (iff called by slotLoad)
|
||||
GlobalBookmarkManager::self()->createManager(m_bookmarksFilename, m_dbusObjectName, m_cmdHistory); //FIXME this is still a memory leak (iff called by slotLoad)
|
||||
GlobalBookmarkManager::self()->model()->resetModel();
|
||||
updateActions();
|
||||
}
|
||||
|
@ -419,7 +420,7 @@ KEBApp::~KEBApp() {
|
|||
|
||||
s_topLevel = 0;
|
||||
delete m_cmdHistory;
|
||||
delete ActionsImpl::self();
|
||||
delete m_actionsImpl;
|
||||
delete mBookmarkListView;
|
||||
delete GlobalBookmarkManager::self();
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <kxmlguifactory.h>
|
||||
#include "bookmarklistview.h"
|
||||
|
||||
class ActionsImpl;
|
||||
class CommandHistory;
|
||||
class KBookmarkModel;
|
||||
class KBookmarkManager;
|
||||
|
@ -94,6 +95,7 @@ public:
|
|||
KBookmark::List selectedBookmarks() const;
|
||||
KBookmark::List selectedBookmarksExpanded() const;
|
||||
KBookmark::List allBookmarks() const;
|
||||
|
||||
public Q_SLOTS:
|
||||
void notifyCommandExecuted();
|
||||
|
||||
|
@ -119,6 +121,7 @@ private:
|
|||
|
||||
static KEBApp *s_topLevel;
|
||||
|
||||
ActionsImpl* m_actionsImpl;
|
||||
CommandHistory *m_cmdHistory;
|
||||
QString m_bookmarksFilename;
|
||||
QString m_caption;
|
||||
|
|
Loading…
Reference in a new issue