diff demos/browser/bookmarks.d @ 73:7bfd46c330dc

more porting
author mandel
date Fri, 22 May 2009 10:59:00 +0000
parents b149ef2cb18b
children 37caa90ce503
line wrap: on
line diff
--- a/demos/browser/bookmarks.d	Wed May 20 22:44:31 2009 +0000
+++ b/demos/browser/bookmarks.d	Fri May 22 10:59:00 2009 +0000
@@ -75,744 +75,743 @@
 
 
 /*!
-    Bookmark manager, owner of the bookmarks, loads, saves and basic tasks
-  */
-
+Bookmark manager, owner of the bookmarks, loads, saves and basic tasks
+*/
 class BookmarksManager : public QObject
 {
-	
-   mixin Signal!("entryAdded", BookmarkNode item);
-     mixin Signal!("entryRemoved", BookmarkNode parent, int row, BookmarkNode item);
-     mixin Signal!("entryChanged", BookmarkNode item);
+	mixin Signal!("entryAdded", BookmarkNode item);
+	mixin Signal!("entryRemoved", BookmarkNode parent, int row, BookmarkNode item);
+	mixin Signal!("entryChanged", BookmarkNode item);
 
 public:
-    BookmarksManager(QObject parent = null)
-{
-	super(parent);
-	m_loaded = false;
-	m_saveTimer = new AutoSaver(this);
-	m_bookmarkRootNode = null;
-	m_bookmarkModel = null;
-    this.entryAdded.connect(&m_saveTimer.changeOccurred);
-    this.entryRemoved.connect(&m_saveTimer.changeOccurred);
-    this.entryChanged.connect(&m_saveTimer.changeOccurred);
-}
+
+	this(QObject parent = null)
+	{
+		super(parent);
+		m_loaded = false;
+		m_saveTimer = new AutoSaver(this);
+		m_bookmarkRootNode = null;
+		m_bookmarkModel = null;
+		this.entryAdded.connect(&m_saveTimer.changeOccurred);
+		this.entryRemoved.connect(&m_saveTimer.changeOccurred);
+		this.entryChanged.connect(&m_saveTimer.changeOccurred);
+	}
 
+	~this()
+	{
+		m_saveTimer.saveIfNeccessary();
+	}
 
-    ~this()
-{
-    m_saveTimer.saveIfNeccessary();
-}
+	void addBookmark(BookmarkNode parent, BookmarkNode node, int row = -1)
+	{
+		if (!m_loaded)
+			return;
+		assert(parent);
+		InsertBookmarksCommand command = new InsertBookmarksCommand(this, parent, node, row);
+		m_commands.push(command);
+	}
 
 
-    void addBookmark(BookmarkNode parent, BookmarkNode node, int row = -1)
-{
-    if (!m_loaded)
-        return;
-    assert(parent);
-    InsertBookmarksCommand command = new InsertBookmarksCommand(this, parent, node, row);
-    m_commands.push(command);
-}
+	void removeBookmark(BookmarkNode node);
+	{
+		if (!m_loaded)
+			return;
+
+		assert(node);
+		BookmarkNode parent = node.parent();
+		int row = parent.children().indexOf(node);
+		RemoveBookmarksCommand command = new RemoveBookmarksCommand(this, parent, row);
+		m_commands.push(command);
+	}
+
+	void setTitle(BookmarkNode node, QString newTitle);
+	{
+		if (!m_loaded)
+			return;
+
+		assert(node);
+		ChangeBookmarkCommand command = new ChangeBookmarkCommand(this, node, newTitle, true);
+		m_commands.push(command);
+	}
 
 
-    void removeBookmark(BookmarkNode node);
-{
-    if (!m_loaded)
-        return;
-
-    assert(node);
-    BookmarkNode parent = node.parent();
-    int row = parent.children().indexOf(node);
-    RemoveBookmarksCommand command = new RemoveBookmarksCommand(this, parent, row);
-    m_commands.push(command);
-}
+	void setUrl(BookmarkNode node, QString newUrl);
+	{
+		if (!m_loaded)
+			return;
 
-    void setTitle(BookmarkNode node, QString newTitle);
-{
-    if (!m_loaded)
-        return;
-
-    assert(node);
-    ChangeBookmarkCommand command = new ChangeBookmarkCommand(this, node, newTitle, true);
-    m_commands.push(command);
-}
-
-
-    void setUrl(BookmarkNode node, QString newUrl);
-{
-    if (!m_loaded)
-        return;
-
-    assert(node);
-    ChangeBookmarkCommand command = new ChangeBookmarkCommand(this, node, newUrl, false);
-    m_commands.push(command);
-}
+		assert(node);
+		ChangeBookmarkCommand command = new ChangeBookmarkCommand(this, node, newUrl, false);
+		m_commands.push(command);
+	}
 
 
-void changeExpanded()
-{
-    m_saveTimer.changeOccurred();
-}
+	void changeExpanded()
+	{
+		m_saveTimer.changeOccurred();
+	}
 
-    BookmarkNode bookmarks();
-{
-    if (!m_loaded)
-        load();
-    return m_bookmarkRootNode;
-}
+	BookmarkNode bookmarks();
+	{
+		if (!m_loaded)
+			load();
+		return m_bookmarkRootNode;
+	}
 
-    BookmarkNode menu();
-{
-    if (!m_loaded)
-        load();
+	BookmarkNode menu();
+	{
+		if (!m_loaded)
+			load();
 
-    for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) {
-        BookmarkNode node = m_bookmarkRootNode.children().at(i);
-        if (node.title == tr(BOOKMARKMENU))
-            return node;
-    }
-    assert(false);
-    return 0;
-}
+		for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) {
+			BookmarkNode node = m_bookmarkRootNode.children().at(i);
+			if (node.title == tr(BOOKMARKMENU))
+				return node;
+		}
+		assert(false);
+		return 0;
+	}
 
-    BookmarkNode toolbar();
-{
-    if (!m_loaded)
-        load();
+	BookmarkNode toolbar();
+	{
+		if (!m_loaded)
+			load();
 
-    for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) {
-        BookmarkNode node = m_bookmarkRootNode.children().at(i);
-        if (node.title == tr(BOOKMARKBAR))
-            return node;
-    }
-    assert(false);
-    return 0;
-}
+		for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) {
+			BookmarkNode node = m_bookmarkRootNode.children().at(i);
+			if (node.title == tr(BOOKMARKBAR))
+				return node;
+		}
+		assert(false);
+		return 0;
+	}
 
-BookmarksModel bookmarksModel()
-{
-    if (!m_bookmarkModel)
-        m_bookmarkModel = new BookmarksModel(this, this);
-    return m_bookmarkModel;
-}
+	BookmarksModel bookmarksModel()
+	{
+		if (!m_bookmarkModel)
+			m_bookmarkModel = new BookmarksModel(this, this);
+		return m_bookmarkModel;
+	}
 
-    QUndoStack undoRedoStack() { return m_commands; };
+	QUndoStack undoRedoStack() { return m_commands; };
 
-public slots:
-    void importBookmarks()
-{
-    QString fileName = QFileDialog.getOpenFileName(0, tr("Open File"),
-                                                     QString(),
-                                                     tr("XBEL (*.xbel *.xml)"));
-    if (fileName.isEmpty())
-        return;
+public:
+
+	void importBookmarks()
+	{
+		QString fileName = QFileDialog.getOpenFileName(0, tr("Open File"), QString(), tr("XBEL (*.xbel *.xml)"));
+		if (fileName.isEmpty())
+			return;
 
-    XbelReader reader;
-    BookmarkNode importRootNode = reader.read(fileName);
-    if (reader.error() != QXmlStreamReader.NoError) {
-        QMessageBox.warning(0, QLatin1String("Loading Bookmark"),
-            tr("Error when loading bookmarks on line %1, column %2:\n"
-               "%3").arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.errorString()));
-    }
+		XbelReader reader;
+		BookmarkNode importRootNode = reader.read(fileName);
+		if (reader.error() != QXmlStreamReader.NoError) {
+			QMessageBox.warning(0, QLatin1String("Loading Bookmark"),
+				tr("Error when loading bookmarks on line %1, column %2:\n"
+				"%3").arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.errorString()));
+		}
 
-    importRootNode.setType(BookmarkNode.Folder);
-    importRootNode.title = (tr("Imported %1").arg(QDate.currentDate().toString(Qt.SystemLocaleShortDate)));
-    addBookmark(menu(), importRootNode);
-}
+		importRootNode.setType(BookmarkNode.Folder);
+		importRootNode.title = (tr("Imported %1").arg(QDate.currentDate().toString(Qt.SystemLocaleShortDate)));
+		addBookmark(menu(), importRootNode);
+	}
 
 
-    void exportBookmarks()
-{
-    QString fileName = QFileDialog.getSaveFileName(0, tr("Save File"),
-                                tr("%1 Bookmarks.xbel").arg(QCoreApplication.applicationName()),
-                                tr("XBEL (*.xbel *.xml)"));
-    if (fileName.isEmpty())
-        return;
+	void exportBookmarks()
+	{
+		QString fileName = QFileDialog.getSaveFileName(0, tr("Save File"),
+				tr("%1 Bookmarks.xbel").arg(QCoreApplication.applicationName()),
+				tr("XBEL (*.xbel *.xml)"));
+		if (fileName.isEmpty())
+			return;
 
-    XbelWriter writer;
-    if (!writer.write(fileName, m_bookmarkRootNode))
-        QMessageBox.critical(0, tr("Export error"), tr("error saving bookmarks"));
-}
+		XbelWriter writer;
+		if (!writer.write(fileName, m_bookmarkRootNode))
+			QMessageBox.critical(0, tr("Export error"), tr("error saving bookmarks"));
+	}
 
-private slots:
-    void save()
-{
-    if (!m_loaded)
-        return;
+private:
+
+	void save()
+	{
+		if (!m_loaded)
+			return;
 
-    XbelWriter writer;
-    QString dir = QDesktopServices.storageLocation(QDesktopServices.DataLocation);
-    QString bookmarkFile = dir + QLatin1String("/bookmarks.xbel");
-    if (!writer.write(bookmarkFile, m_bookmarkRootNode))
-        qWarning() << "BookmarkManager: error saving to" << bookmarkFile;
-}
+		XbelWriter writer;
+		QString dir = QDesktopServices.storageLocation(QDesktopServices.DataLocation);
+		QString bookmarkFile = dir + QLatin1String("/bookmarks.xbel");
+		if (!writer.write(bookmarkFile, m_bookmarkRootNode))
+			qWarning() << "BookmarkManager: error saving to" << bookmarkFile;
+	}
 
 private:
-    void load()
-{
-    if (m_loaded)
-        return;
-    m_loaded = true;
+	
+	void load()
+	{
+		if (m_loaded)
+			return;
+		m_loaded = true;
 
-    QString dir = QDesktopServices.storageLocation(QDesktopServices.DataLocation);
-    QString bookmarkFile = dir + QLatin1String("/bookmarks.xbel");
-    if (!QFile.exists(bookmarkFile))
-        bookmarkFile = QLatin1String(":defaultbookmarks.xbel");
+		QString dir = QDesktopServices.storageLocation(QDesktopServices.DataLocation);
+		QString bookmarkFile = dir + QLatin1String("/bookmarks.xbel");
+		if (!QFile.exists(bookmarkFile))
+			bookmarkFile = QLatin1String(":defaultbookmarks.xbel");
 
-    XbelReader reader;
-    m_bookmarkRootNode = reader.read(bookmarkFile);
-    if (reader.error() != QXmlStreamReader.NoError) {
-        QMessageBox.warning(0, QLatin1String("Loading Bookmark"),
-            tr("Error when loading bookmarks on line %1, column %2:\n"
-               "%3").arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.errorString()));
-    }
+		XbelReader reader;
+		m_bookmarkRootNode = reader.read(bookmarkFile);
+		if (reader.error() != QXmlStreamReader.NoError) {
+			QMessageBox.warning(0, QLatin1String("Loading Bookmark"),
+			tr("Error when loading bookmarks on line %1, column %2:\n"
+			"%3").arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.errorString()));
+		}
 
-    BookmarkNode toolbar = null;
-    BookmarkNode menu = null;
-    QList<BookmarkNode> others;
-    for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) {
-        BookmarkNode node = m_bookmarkRootNode.children().at(i);
-        if (node.type() == BookmarkNode.Folder) {
-            // Automatically convert
-            if (node.title == tr("Toolbar Bookmarks") && !toolbar) {
-                node.title = tr(BOOKMARKBAR);
-            }
-            if (node.title == tr(BOOKMARKBAR) && !toolbar) {
-                toolbar = node;
-            }
+		BookmarkNode toolbar = null;
+		BookmarkNode menu = null;
+		QList<BookmarkNode> others;
+		for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) {
+			BookmarkNode node = m_bookmarkRootNode.children().at(i);
+			if (node.type() == BookmarkNode.Folder) {
+				// Automatically convert
+				if (node.title == tr("Toolbar Bookmarks") && !toolbar) {
+					node.title = tr(BOOKMARKBAR);
+				}
+				if (node.title == tr(BOOKMARKBAR) && !toolbar) {
+					toolbar = node;
+				}
 
-            // Automatically convert
-            if (node.title == tr("Menu") && !menu) {
-                node.title = tr(BOOKMARKMENU);
-            }
-            if (node.title == tr(BOOKMARKMENU) && !menu) {
-                menu = node;
-            }
-        } else {
-            others.append(node);
-        }
-        m_bookmarkRootNode.remove(node);
-    }
-    assert(m_bookmarkRootNode.children().count() == 0);
-    if (!toolbar) {
-        toolbar = new BookmarkNode(BookmarkNode.Folder, m_bookmarkRootNode);
-        toolbar.title = tr(BOOKMARKBAR);
-    } else {
-        m_bookmarkRootNode.add(toolbar);
-    }
+				// Automatically convert
+				if (node.title == tr("Menu") && !menu) {
+					node.title = tr(BOOKMARKMENU);
+				}
+				if (node.title == tr(BOOKMARKMENU) && !menu) {
+					menu = node;
+				}
+			} else {
+				others.append(node);
+			}
+			m_bookmarkRootNode.remove(node);
+		}
+		assert(m_bookmarkRootNode.children().count() == 0);
+		if (!toolbar) {
+			toolbar = new BookmarkNode(BookmarkNode.Folder, m_bookmarkRootNode);
+			toolbar.title = tr(BOOKMARKBAR);
+		} else {
+			m_bookmarkRootNode.add(toolbar);
+		}
 
-    if (!menu) {
-        menu = new BookmarkNode(BookmarkNode.Folder, m_bookmarkRootNode);
-        menu.title = tr(BOOKMARKMENU);
-    } else {
-        m_bookmarkRootNode.add(menu);
-    }
+		if (!menu) {
+			menu = new BookmarkNode(BookmarkNode.Folder, m_bookmarkRootNode);
+			menu.title = tr(BOOKMARKMENU);
+		} else {
+			m_bookmarkRootNode.add(menu);
+		}
 
-    for (int i = 0; i < others.count(); ++i)
-        menu.add(others.at(i));
-}
-
+		for (int i = 0; i < others.count(); ++i)
+			menu.add(others.at(i));
+	}
 
-    bool m_loaded;
-    AutoSaver m_saveTimer;
-    BookmarkNode m_bookmarkRootNode;
-    BookmarksModel m_bookmarkModel;
-    QUndoStack m_commands;
-
-    friend class RemoveBookmarksCommand;
-    friend class ChangeBookmarkCommand;
+	bool m_loaded;
+	AutoSaver m_saveTimer;
+	BookmarkNode m_bookmarkRootNode;
+	BookmarksModel m_bookmarkModel;
+	QUndoStack m_commands;
 }
 
 class RemoveBookmarksCommand : public QUndoCommand
 {
+public:
 
-public:
-    this(BookmarksManager m_bookmarkManagaer, BookmarkNode parent, int row)
-{
-	super(BookmarksManager.tr("Remove Bookmark"))
-	m_row = row;
-	m_bookmarkManagaer = m_bookmarkManagaer;
-	m_node = parent.children().value(row);
-	m_parent = parent;
-	m_done = false;
-}
+	this(BookmarksManager m_bookmarkManagaer, BookmarkNode parent, int row)
+	{
+		super(BookmarksManager.tr("Remove Bookmark"))
+		m_row = row;
+		m_bookmarkManagaer = m_bookmarkManagaer;
+		m_node = parent.children().value(row);
+		m_parent = parent;
+		m_done = false;
+	}
 
-~this()
-{
-    if (m_done && !m_node.parent()) {
-        delete m_node;
-    }
-}
+	~this()
+	{
+		if (m_done && !m_node.parent()) {
+			delete m_node;
+		}
+	}
 
-void undo()
-{
-    m_parent.add(m_node, m_row);
-    emit m_bookmarkManagaer.entryAdded(m_node);
-    m_done = false;
-}
+	void undo()
+	{
+		m_parent.add(m_node, m_row);
+		emit m_bookmarkManagaer.entryAdded(m_node);
+		m_done = false;
+	}
 
-void redo()
-{
-    m_parent.remove(m_node);
-    emit m_bookmarkManagaer.entryRemoved(m_parent, m_row, m_node);
-    m_done = true;
-}
+	void redo()
+	{
+		m_parent.remove(m_node);
+		emit m_bookmarkManagaer.entryRemoved(m_parent, m_row, m_node);
+		m_done = true;
+	}
 
 protected:
-    int m_row;
-    BookmarksManager m_bookmarkManagaer;
-    BookmarkNode m_node;
-    BookmarkNode m_parent;
-    bool m_done;
-};
+
+	int m_row;
+	BookmarksManager m_bookmarkManagaer;
+	BookmarkNode m_node;
+	BookmarkNode m_parent;
+	bool m_done;
+}
 
 class InsertBookmarksCommand : public RemoveBookmarksCommand
 {
+public:
+	this(BookmarksManager m_bookmarkManagaer, BookmarkNode parent, BookmarkNode node, int row)
+	{
+		super(m_bookmarkManagaer, parent, row);
 
-public:
-this(BookmarksManager m_bookmarkManagaer,
-                BookmarkNode parent, BookmarkNode node, int row)
-{
-	super(m_bookmarkManagaer, parent, row);
-	
-    setText(BookmarksManager.tr("Insert Bookmark"));
-    m_node = node;
-}
+		setText(BookmarksManager.tr("Insert Bookmark"));
+		m_node = node;
+	}
 
-    void undo() { RemoveBookmarksCommand.redo(); }
-    void redo() { RemoveBookmarksCommand.undo(); }
+	void undo() { RemoveBookmarksCommand.redo(); }
+	void redo() { RemoveBookmarksCommand.undo(); }
 }
 
 class ChangeBookmarkCommand : public QUndoCommand
 {
+public:
 
-public:
-    this(BookmarksManager m_bookmarkManagaer,
-        BookmarkNode node, QString newValue, bool title)
-{
-	super();
-	m_bookmarkManagaer = m_bookmarkManagaer;
-    m_title = title;
-    m_newValue = newValue;
-    m_node = node;
-    if (m_title) {
-        m_oldValue = m_node.title;
-        setText(BookmarksManager.tr("Name Change"));
-    } else {
-        m_oldValue = m_node.url;
-        setText(BookmarksManager.tr("Address Change"));
-    }
-}
+	this(BookmarksManager m_bookmarkManagaer, BookmarkNode node, QString newValue, bool title)
+	{
+		super();
+		m_bookmarkManagaer = m_bookmarkManagaer;
+		m_title = title;
+		m_newValue = newValue;
+		m_node = node;
+		if (m_title) {
+			m_oldValue = m_node.title;
+			setText(BookmarksManager.tr("Name Change"));
+		} else {
+			m_oldValue = m_node.url;
+			setText(BookmarksManager.tr("Address Change"));
+		}
+	}
 
-void undo()
-{
-    if (m_title)
-        m_node.title = m_oldValue;
-    else
-        m_node.url = m_oldValue;
-    emit m_bookmarkManagaer.entryChanged(m_node);
-}
+	void undo()
+	{
+		if (m_title)
+			m_node.title = m_oldValue;
+		else
+			m_node.url = m_oldValue;
+		emit m_bookmarkManagaer.entryChanged(m_node);
+	}
 
-void redo()
-{
-    if (m_title)
-        m_node.title = m_newValue;
-    else
-        m_node.url = m_newValue;
-    emit m_bookmarkManagaer.entryChanged(m_node);
-}
+	void redo()
+	{
+		if (m_title)
+			m_node.title = m_newValue;
+		else
+			m_node.url = m_newValue;
+		emit m_bookmarkManagaer.entryChanged(m_node);
+	}
 
 private:
-    BookmarksManager m_bookmarkManagaer;
-    bool m_title;
-    QString m_oldValue;
-    QString m_newValue;
-    BookmarkNode m_node;
+	
+	BookmarksManager m_bookmarkManagaer;
+	bool m_title;
+	QString m_oldValue;
+	QString m_newValue;
+	BookmarkNode m_node;
 }
 
 /*!
-    BookmarksModel is a QAbstractItemModel wrapper around the BookmarkManager
-  */
+BookmarksModel is a QAbstractItemModel wrapper around the BookmarkManager
+*/
 import qt.gui.QIcon;
 
 class BookmarksModel : public QAbstractItemModel
 {
+public:
 
-public:
-    void entryAdded(BookmarkNode item)
-{
-    assert(item && item.parent());
-    int row = item.parent().children().indexOf(item);
-    BookmarkNode parent = item.parent();
-    // item was already added so remove beore beginInsertRows is called
-    parent.remove(item);
-    beginInsertRows(index(parent), row, row);
-    parent.add(item, row);
-    endInsertRows();
-}
+	void entryAdded(BookmarkNode item)
+	{
+		assert(item && item.parent());
+		int row = item.parent().children().indexOf(item);
+		BookmarkNode parent = item.parent();
+		// item was already added so remove beore beginInsertRows is called
+		parent.remove(item);
+		beginInsertRows(index(parent), row, row);
+		parent.add(item, row);
+		endInsertRows();
+	}
 
 
-    void entryRemoved(BookmarkNode parent, int row, BookmarkNode item);
-{
-    // item was already removed, re-add so beginRemoveRows works
-    parent.add(item, row);
-    beginRemoveRows(index(parent), row, row);
-    parent.remove(item);
-    endRemoveRows();
-}
+	void entryRemoved(BookmarkNode parent, int row, BookmarkNode item);
+	{
+		// item was already removed, re-add so beginRemoveRows works
+		parent.add(item, row);
+		beginRemoveRows(index(parent), row, row);
+		parent.remove(item);
+		endRemoveRows();
+	}
 
-    void entryChanged(BookmarkNode item);
-{
-    QModelIndex idx = index(item);
-    emit dataChanged(idx, idx);
-}
+	void entryChanged(BookmarkNode item);
+	{
+		QModelIndex idx = index(item);
+		emit dataChanged(idx, idx);
+	}
+
 public:
-    enum Roles {
-        TypeRole = Qt.UserRole + 1,
-        UrlRole = Qt.UserRole + 2,
-        UrlStringRole = Qt.UserRole + 3,
-        SeparatorRole = Qt.UserRole + 4
-    }
+
+	enum Roles {
+		TypeRole = Qt.UserRole + 1,
+		UrlRole = Qt.UserRole + 2,
+		UrlStringRole = Qt.UserRole + 3,
+		SeparatorRole = Qt.UserRole + 4
+	}
 
-    BookmarksModel(BookmarksManager bookmarkManager, QObject parent = null)
-{
-	super(parent)
-    m_endMacro = false;
-    m_bookmarksManager = bookmarkManager;
-    bookmarkManager.entryAdded.connect(&this.entryAdded);
-	bookmarkManager.entryRemoved.connect(&this.entryRemoved);
-	bookmarkManager.entryChanged.connect(&this.entryChanged);
-}
+	BookmarksModel(BookmarksManager bookmarkManager, QObject parent = null)
+	{
+		super(parent)
+		m_endMacro = false;
+		m_bookmarksManager = bookmarkManager;
+		bookmarkManager.entryAdded.connect(&this.entryAdded);
+		bookmarkManager.entryRemoved.connect(&this.entryRemoved);
+		bookmarkManager.entryChanged.connect(&this.entryChanged);
+	}
     
     
-    inline BookmarksManager bookmarksManager() { return m_bookmarksManager; }
+	BookmarksManager bookmarksManager() { return m_bookmarksManager; }
 
-    QVariant headerData(int section, Qt.Orientation orientation, int role = Qt.DisplayRole);
-{
-    if (orientation == Qt.Horizontal && role == Qt.DisplayRole) {
-        switch (section) {
-            case 0: return tr("Title");
-            case 1: return tr("Address");
-        }
-    }
-    return QAbstractItemModel.headerData(section, orientation, role);
-}
+	QVariant headerData(int section, Qt.Orientation orientation, int role = Qt.DisplayRole);
+	{
+		if (orientation == Qt.Horizontal && role == Qt.DisplayRole) {
+			switch (section) {
+				case 0: return tr("Title");
+				case 1: return tr("Address");
+			}
+		}
+		return QAbstractItemModel.headerData(section, orientation, role);
+	}
     
     
-    QVariant data(QModelIndex index, int role = Qt.DisplayRole)
-{
-    if (!index.isValid() || index.model() != this)
-        return QVariant();
+	QVariant data(QModelIndex index, int role = Qt.DisplayRole)
+	{
+		if (!index.isValid() || index.model() != this)
+		return QVariant();
 
-    BookmarkNode bookmarkNode = node(index);
-    switch (role) {
-    case Qt.EditRole:
-    case Qt.DisplayRole:
-        if (bookmarkNode.type() == BookmarkNode.Separator) {
-            switch (index.column()) {
-            case 0: return QString(50, 0xB7);
-            case 1: return QString();
-            }
-        }
+		BookmarkNode bookmarkNode = node(index);
+		switch (role) {
+			case Qt.EditRole:
+			case Qt.DisplayRole:
+				if (bookmarkNode.type() == BookmarkNode.Separator) {
+					switch (index.column()) {
+						case 0: return QString(50, 0xB7);
+						case 1: return QString();
+					}
+				}
 
-        switch (index.column()) {
-        case 0: return bookmarkNode.title;
-        case 1: return bookmarkNode.url;
-        }
-        break;
-    case BookmarksModel.UrlRole:
-        return QUrl(bookmarkNode.url);
-        break;
-    case BookmarksModel.UrlStringRole:
-        return bookmarkNode.url;
-        break;
-    case BookmarksModel.TypeRole:
-        return bookmarkNode.type();
-        break;
-    case BookmarksModel.SeparatorRole:
-        return (bookmarkNode.type() == BookmarkNode.Separator);
-        break;
-    case Qt.DecorationRole:
-        if (index.column() == 0) {
-            if (bookmarkNode.type() == BookmarkNode.Folder)
-                return QApplication.style().standardIcon(QStyle.SP_DirIcon);
-            return BrowserApplication.instance().icon(bookmarkNode.url);
-        }
-    }
+				switch (index.column()) {
+					case 0: return bookmarkNode.title;
+					case 1: return bookmarkNode.url;
+				}
+				break;
+			case BookmarksModel.UrlRole:
+				return QUrl(bookmarkNode.url);
+				break;
+			case BookmarksModel.UrlStringRole:
+				return bookmarkNode.url;
+				break;
+			case BookmarksModel.TypeRole:
+				return bookmarkNode.type();
+				break;
+			case BookmarksModel.SeparatorRole:
+				return (bookmarkNode.type() == BookmarkNode.Separator);
+				break;
+			case Qt.DecorationRole:
+				if (index.column() == 0) {
+					if (bookmarkNode.type() == BookmarkNode.Folder)
+						return QApplication.style().standardIcon(QStyle.SP_DirIcon);
+					return BrowserApplication.instance().icon(bookmarkNode.url);
+				}
+		}
 
-    return QVariant();
-}
+		return QVariant();
+	}
+
+	int columnCount(QModelIndex parent = QModelIndex())
+	{
+		return (parent.column() > 0) ? 0 : 2;
+	}
+
+	int rowCount(QModelIndex parent = QModelIndex())
+	{
+		if (parent.column() > 0)
+			return 0;
 
-    int columnCount(QModelIndex parent = QModelIndex())
-{
-    return (parent.column() > 0) ? 0 : 2;
-}
+		if (!parent.isValid())
+			return m_bookmarksManager.bookmarks().children().count();
 
-    int rowCount(QModelIndex parent = QModelIndex())
-{
-    if (parent.column() > 0)
-        return 0;
+		BookmarkNode item = static_cast<BookmarkNode>(parent.internalPointer());
+		return item.children().count();
+	}
+
+	QModelIndex index(int, int, QModelIndex& = QModelIndex())
+	{
+		if (row < 0 || column < 0 || row >= rowCount(parent) || column >= columnCount(parent))
+			return QModelIndex();
 
-    if (!parent.isValid())
-        return m_bookmarksManager.bookmarks().children().count();
+		// get the parent node
+		BookmarkNode parentNode = node(parent);
+		return createIndex(row, column, parentNode.children().at(row));
+	}
 
-    const BookmarkNode item = static_cast<BookmarkNode>(parent.internalPointer());
-    return item.children().count();
-}
+	QModelIndex parent(QModelIndex& index= QModelIndex())
+	{
+		if (!index.isValid())
+			return QModelIndex();
 
-    QModelIndex index(int, int, QModelIndex& = QModelIndex())
-{
-    if (row < 0 || column < 0 || row >= rowCount(parent) || column >= columnCount(parent))
-        return QModelIndex();
+		BookmarkNode itemNode = node(index);
+		BookmarkNode parentNode = (itemNode ? itemNode.parent() : 0);
+		if (!parentNode || parentNode == m_bookmarksManager.bookmarks())
+			return QModelIndex();
 
-    // get the parent node
-    BookmarkNode parentNode = node(parent);
-    return createIndex(row, column, parentNode.children().at(row));
-}
+		// get the parent's row
+		BookmarkNode grandParentNode = parentNode.parent();
+		int parentRow = grandParentNode.children().indexOf(parentNode);
+		assert(parentRow >= 0);
+		return createIndex(parentRow, 0, parentNode);
+	}
 
-    QModelIndex parent(QModelIndex& index= QModelIndex())
-{
-    if (!index.isValid())
-        return QModelIndex();
+	Qt.ItemFlags flags(QModelIndex index)
+	{
+		if (!index.isValid())
+			return Qt.NoItemFlags;
+
+		Qt.ItemFlags flags = Qt.ItemIsSelectable | Qt.ItemIsEnabled;
 
-    BookmarkNode itemNode = node(index);
-    BookmarkNode parentNode = (itemNode ? itemNode.parent() : 0);
-    if (!parentNode || parentNode == m_bookmarksManager.bookmarks())
-        return QModelIndex();
+		BookmarkNode bookmarkNode = node(index);
 
-    // get the parent's row
-    BookmarkNode grandParentNode = parentNode.parent();
-    int parentRow = grandParentNode.children().indexOf(parentNode);
-    assert(parentRow >= 0);
-    return createIndex(parentRow, 0, parentNode);
-}
+		if (bookmarkNode != m_bookmarksManager.menu() && bookmarkNode != m_bookmarksManager.toolbar()) {
+			flags |= Qt.ItemIsDragEnabled;
+			if (bookmarkNode.type() != BookmarkNode.Separator)
+				flags |= Qt.ItemIsEditable;
+		}
+		if (hasChildren(index))
+			flags |= Qt.ItemIsDropEnabled;
+		return flags;
+	}
+
+	Qt.DropActions supportedDropActions ();
+	{
+		return Qt.CopyAction | Qt.MoveAction;
+	}
 
 
-    Qt.ItemFlags flags(QModelIndex index)
-{
-    if (!index.isValid())
-        return Qt.NoItemFlags;
+	bool removeRows(int row, int count, QModelIndex parent = QModelIndex());
+	{
+		if (row < 0 || count <= 0 || row + count > rowCount(parent))
+			return false;
+
+		BookmarkNode bookmarkNode = node(parent);
+		for (int i = row + count - 1; i >= row; --i) {
+			BookmarkNode node = bookmarkNode.children().at(i);
+			if (node == m_bookmarksManager.menu() || node == m_bookmarksManager.toolbar())
+				continue;
 
-    Qt.ItemFlags flags = Qt.ItemIsSelectable | Qt.ItemIsEnabled;
-
-    BookmarkNode bookmarkNode = node(index);
+			m_bookmarksManager.removeBookmark(node);
+		}
+		if (m_endMacro) {
+			m_bookmarksManager.undoRedoStack().endMacro();
+			m_endMacro = false;
+		}
+		return true;
+	}
+    
+	bool setData(QModelIndex index, QVariant value, int role = Qt.EditRole)
+	{
+		if (!index.isValid() || (flags(index) & Qt.ItemIsEditable) == 0)
+			return false;
 
-    if (bookmarkNode != m_bookmarksManager.menu() && bookmarkNode != m_bookmarksManager.toolbar()) {
-        flags |= Qt.ItemIsDragEnabled;
-        if (bookmarkNode.type() != BookmarkNode.Separator)
-            flags |= Qt.ItemIsEditable;
-    }
-    if (hasChildren(index))
-        flags |= Qt.ItemIsDropEnabled;
-    return flags;
-}
+		BookmarkNode item = node(index);
 
-    Qt.DropActions supportedDropActions ();
-{
-    return Qt.CopyAction | Qt.MoveAction;
-}
+		switch (role) {
+			case Qt.EditRole:
+			case Qt.DisplayRole:
+				if (index.column() == 0) {
+					m_bookmarksManager.setTitle(item, value.toString());
+					break;
+				}
+				if (index.column() == 1) {
+					m_bookmarksManager.setUrl(item, value.toString());
+					break;
+				}
+				return false;
+			case BookmarksModel.UrlRole:
+				m_bookmarksManager.setUrl(item, value.toUrl().toString());
+				break;
+			case BookmarksModel.UrlStringRole:
+				m_bookmarksManager.setUrl(item, value.toString());
+				break;
+			default:
+				break;
+				return false;
+		}
+
+		return true;
+	}
 
 
-    bool removeRows(int row, int count, QModelIndex parent = QModelIndex());
-{
-    if (row < 0 || count <= 0 || row + count > rowCount(parent))
-        return false;
-
-    BookmarkNode bookmarkNode = node(parent);
-    for (int i = row + count - 1; i >= row; --i) {
-        BookmarkNode node = bookmarkNode.children().at(i);
-        if (node == m_bookmarksManager.menu()
-            || node == m_bookmarksManager.toolbar())
-            continue;
-
-        m_bookmarksManager.removeBookmark(node);
-    }
-    if (m_endMacro) {
-        m_bookmarksManager.undoRedoStack().endMacro();
-        m_endMacro = false;
-    }
-    return true;
-}
-    
-    bool setData(QModelIndex index, QVariant value, int role = Qt.EditRole)
-{
-    if (!index.isValid() || (flags(index) & Qt.ItemIsEditable) == 0)
-        return false;
-
-    BookmarkNode item = node(index);
-
-    switch (role) {
-    case Qt.EditRole:
-    case Qt.DisplayRole:
-        if (index.column() == 0) {
-            m_bookmarksManager.setTitle(item, value.toString());
-            break;
-        }
-        if (index.column() == 1) {
-            m_bookmarksManager.setUrl(item, value.toString());
-            break;
-        }
-        return false;
-    case BookmarksModel.UrlRole:
-        m_bookmarksManager.setUrl(item, value.toUrl().toString());
-        break;
-    case BookmarksModel.UrlStringRole:
-        m_bookmarksManager.setUrl(item, value.toString());
-        break;
-    default:
-        break;
-        return false;
-    }
-
-    return true;
-}
-
-
-    QMimeData mimeData(QModelIndexList indexes);
-{
-    QMimeData mimeData = new QMimeData();
-    QByteArray data;
-    QDataStream stream(&data, QIODevice.WriteOnly);
-    foreach (QModelIndex index, indexes) {
-        if (index.column() != 0 || !index.isValid())
-            continue;
-        QByteArray encodedData;
-        QBuffer buffer(&encodedData);
-        buffer.open(QBuffer.ReadWrite);
-        XbelWriter writer;
-        const BookmarkNode parentNode = node(index);
-        writer.write(&buffer, parentNode);
-        stream << encodedData;
-    }
-    mimeData.setData(MIMETYPE, data);
-    return mimeData;
-}
+	QMimeData mimeData(QModelIndexList indexes);
+	{
+		QMimeData mimeData = new QMimeData();
+		QByteArray data;
+		auto stream = new QDataStream(&data, QIODevice.WriteOnly);
+		foreach (QModelIndex index, indexes) {
+			if (index.column() != 0 || !index.isValid())
+				continue;
+			QByteArray encodedData;
+			auto buffer = new QBuffer(&encodedData);
+			buffer.open(QBuffer.ReadWrite);
+			XbelWriter writer;
+			const BookmarkNode parentNode = node(index);
+			writer.write(&buffer, parentNode);
+			stream << encodedData;
+		}
+		mimeData.setData(MIMETYPE, data);
+		return mimeData;
+	}
 
 
 const char[] MIMETYPE = QLatin1String("application/bookmarks.xbel")
 
-QStringList mimeTypes()
-{
-    QStringList types;
-    types << MIMETYPE;
-    return types;
-}
+	QStringList mimeTypes()
+	{
+		QStringList types;
+		types << MIMETYPE;
+		return types;
+	}
 
-bool dropMimeData(QMimeData data,  Qt.DropAction action, int row, int column, QModelIndex parent)
-{
-    if (action == Qt.IgnoreAction)
-        return true;
+	bool dropMimeData(QMimeData data,  Qt.DropAction action, int row, int column, QModelIndex parent)
+	{
+		if (action == Qt.IgnoreAction)
+			return true;
 
-    if (!data.hasFormat(MIMETYPE) || column > 0)
-        return false;
+		if (!data.hasFormat(MIMETYPE) || column > 0)
+			return false;
 
-    QByteArray ba = data.data(MIMETYPE);
-    QDataStream stream(&ba, QIODevice.ReadOnly);
-    if (stream.atEnd())
-        return false;
+		QByteArray ba = data.data(MIMETYPE);
+		QDataStream stream(&ba, QIODevice.ReadOnly);
+		if (stream.atEnd())
+			return false;
 
-    QUndoStack undoStack = m_bookmarksManager.undoRedoStack();
-    undoStack.beginMacro(QLatin1String("Move Bookmarks"));
+		QUndoStack undoStack = m_bookmarksManager.undoRedoStack();
+		undoStack.beginMacro(QLatin1String("Move Bookmarks"));
 
-    while (!stream.atEnd()) {
-        QByteArray encodedData;
-        stream >> encodedData;
-        QBuffer buffer(&encodedData);
-        buffer.open(QBuffer.ReadOnly);
+		while (!stream.atEnd()) {
+			QByteArray encodedData;
+			stream >> encodedData;
+			QBuffer buffer(&encodedData);
+			buffer.open(QBuffer.ReadOnly);
 
-        XbelReader reader;
-        BookmarkNode rootNode = reader.read(&buffer);
-        QList<BookmarkNode> children = rootNode.children();
-        for (int i = 0; i < children.count(); ++i) {
-            BookmarkNode bookmarkNode = children.at(i);
-            rootNode.remove(bookmarkNode);
-            row = qMax(0, row);
-            BookmarkNode parentNode = node(parent);
-            m_bookmarksManager.addBookmark(parentNode, bookmarkNode, row);
-            m_endMacro = true;
-        }
-        delete rootNode;
-    }
-    return true;
-}
-
+			XbelReader reader;
+			BookmarkNode rootNode = reader.read(&buffer);
+			QList<BookmarkNode> children = rootNode.children();
+			for (int i = 0; i < children.count(); ++i) {
+				BookmarkNode bookmarkNode = children.at(i);
+				rootNode.remove(bookmarkNode);
+				row = qMax(0, row);
+				BookmarkNode parentNode = node(parent);
+				m_bookmarksManager.addBookmark(parentNode, bookmarkNode, row);
+				m_endMacro = true;
+			}
+			delete rootNode;
+		}
+		return true;
+	}
 
-    bool hasChildren(QModelIndex parent = QModelIndex())
-{
-    if (!parent.isValid())
-        return true;
-    const BookmarkNode parentNode = node(parent);
-    return (parentNode.type() == BookmarkNode.Folder);
-}
+	bool hasChildren(QModelIndex parent = QModelIndex())
+	{
+		if (!parent.isValid())
+			return true;
+		const BookmarkNode parentNode = node(parent);
+		return (parentNode.type() == BookmarkNode.Folder);
+	}
 
-    BookmarkNode node(QModelIndex index)
-{
-    BookmarkNode itemNode = static_cast<BookmarkNode>(index.internalPointer());
-    if (!itemNode)
-        return m_bookmarksManager.bookmarks();
-    return itemNode;
-}
+	BookmarkNode node(QModelIndex index)
+	{
+		BookmarkNode itemNode = static_cast<BookmarkNode>(index.internalPointer());
+		if (!itemNode)
+			return m_bookmarksManager.bookmarks();
+		return itemNode;
+	}
 
-    QModelIndex index(BookmarkNode node)
-{
-    BookmarkNode parent = node.parent();
-    if (!parent)
-        return QModelIndex();
-    return createIndex(parent.children().indexOf(node), 0, node);
-}
+	QModelIndex index(BookmarkNode node)
+	{
+		BookmarkNode parent = node.parent();
+		if (!parent)
+			return QModelIndex();
+		return createIndex(parent.children().indexOf(node), 0, node);
+	}
 
 private:
 
-    bool m_endMacro;
-    BookmarksManager m_bookmarksManager;
+	bool m_endMacro;
+	BookmarksManager m_bookmarksManager;
 }
 
 // Menu that is dynamically populated from the bookmarks
 import modelmenu;
+
 class BookmarksMenu : public ModelMenu
 {
-    mixin Signal!("openUrl", QUrl url);
+	mixin Signal!("openUrl", QUrl url);
 
 public:
-     BookmarksMenu(QWidget parent = null)
-{
-super(parent);	
-	m_bookmarksManager = 0;
-    this.activated.connect(&this.activated);
-    setMaxRows(-1);
-    setHoverRole(BookmarksModel.UrlStringRole);
-    setSeparatorRole(BookmarksModel.SeparatorRole);
-}
-     void setInitialActions(QList<QAction> actions);
-{
-    m_initialActions = actions;
-    for (int i = 0; i < m_initialActions.count(); ++i)
-        addAction(m_initialActions.at(i));
-}
+
+	BookmarksMenu(QWidget parent = null)
+	{
+		super(parent);	
+		m_bookmarksManager = 0;
+		this.activated.connect(&this.activated);
+		setMaxRows(-1);
+		setHoverRole(BookmarksModel.UrlStringRole);
+		setSeparatorRole(BookmarksModel.SeparatorRole);
+	}
+	
+	void setInitialActions(QList<QAction> actions);
+	{
+		m_initialActions = actions;
+		for (int i = 0; i < m_initialActions.count(); ++i)
+			addAction(m_initialActions.at(i));
+	}
+
 protected:
+
 	bool prePopulated()
-{
-    m_bookmarksManager = BrowserApplication.bookmarksManager();
-    setModel(m_bookmarksManager.bookmarksModel());
-    setRootIndex(m_bookmarksManager.bookmarksModel().index(1, 0));
-    // initial actions
-    for (int i = 0; i < m_initialActions.count(); ++i)
-        addAction(m_initialActions.at(i));
-    if (!m_initialActions.isEmpty())
-        addSeparator();
-    createMenu(model().index(0, 0), 1, this);
-    return true;
-}
-
-private slots:
-    void activated(QModelIndex index)
-{
-    emit openUrl(index.data(BookmarksModel.UrlRole).toUrl());
-}
+	{
+		m_bookmarksManager = BrowserApplication.bookmarksManager();
+		setModel(m_bookmarksManager.bookmarksModel());
+		setRootIndex(m_bookmarksManager.bookmarksModel().index(1, 0));
+		// initial actions
+		for (int i = 0; i < m_initialActions.count(); ++i)
+			addAction(m_initialActions.at(i));
+		if (!m_initialActions.isEmpty())
+			addSeparator();
+		createMenu(model().index(0, 0), 1, this);
+		return true;
+	}
 
 private:
-    BookmarksManager m_bookmarksManager;
-    QList<QAction> m_initialActions;
+
+	void activated(QModelIndex index)
+	{
+		emit openUrl(index.data(BookmarksModel.UrlRole).toUrl());
+	}
+
+private:
+
+	BookmarksManager m_bookmarksManager;
+	QList<QAction> m_initialActions;
 }
 
 /*
@@ -823,85 +822,89 @@
 
 class AddBookmarkProxyModel : public QSortFilterProxyModel
 {
-    Q_OBJECT
 public:
-    this(QObject  parent = null)
-{
-	super(parent);
-}
-    int columnCount(QModelIndex  parent = QModelIndex())
-{
-    return qMin(1, QSortFilterProxyModel.columnCount(parent));
-}
-protected:
-    bool filterAcceptsRow(int source_row, QModelIndex source_parent)
-{
-    QModelIndex idx = sourceModel().index(source_row, 0, source_parent);
-    return sourceModel().hasChildren(idx);
-}
+
+	this(QObject  parent = null)
+	{
+		super(parent);
+	}
+	
+	int columnCount(QModelIndex  parent = QModelIndex())
+	{
+		return qMin(1, QSortFilterProxyModel.columnCount(parent));
+	}
+
+	protected:
+
+	bool filterAcceptsRow(int source_row, QModelIndex source_parent)
+	{
+		QModelIndex idx = sourceModel().index(source_row, 0, source_parent);
+		return sourceModel().hasChildren(idx);
+	}
 }
 
 /*!
-    Add bookmark dialog
- */
+Add bookmark dialog
+*/
 
 import ui_addbookmarkdialog;
 
 class AddBookmarkDialog : public QDialog, public Ui_AddBookmarkDialog
 {
+public:
 
-public:
-    this(QString url, QString title, QWidget parent = null, BookmarksManager bookmarkManager = null)
- : QDialog(parent)
-{
-	m_url = url;
-    m_bookmarksManager = bookmarkManager;
-	
-    setWindowFlags(Qt.Sheet);
-    if (!m_bookmarksManager)
-        m_bookmarksManager = BrowserApplication.bookmarksManager();
-    setupUi(this);
-    QTreeView view = new QTreeView(this);
-    m_proxyModel = new AddBookmarkProxyModel(this);
-    BookmarksModel model = m_bookmarksManager.bookmarksModel();
-    m_proxyModel.setSourceModel(model);
-    view.setModel(m_proxyModel);
-    view.expandAll();
-    view.header().setStretchLastSection(true);
-    view.header().hide();
-    view.setItemsExpandable(false);
-    view.setRootIsDecorated(false);
-    view.setIndentation(10);
-    location.setModel(m_proxyModel);
-    view.show();
-    location.setView(view);
-    BookmarkNode menu = m_bookmarksManager.menu();
-    QModelIndex idx = m_proxyModel.mapFromSource(model.index(menu));
-    view.setCurrentIndex(idx);
-    location.setCurrentIndex(idx.row());
-    name.setText(title);
-}
+	this(QString url, QString title, QWidget parent = null, BookmarksManager bookmarkManager = null)
+	: QDialog(parent)
+	{
+		m_url = url;
+		m_bookmarksManager = bookmarkManager;
+
+		setWindowFlags(Qt.Sheet);
+		if (!m_bookmarksManager)
+			m_bookmarksManager = BrowserApplication.bookmarksManager();
+		setupUi(this);
+		QTreeView view = new QTreeView(this);
+		m_proxyModel = new AddBookmarkProxyModel(this);
+		BookmarksModel model = m_bookmarksManager.bookmarksModel();
+		m_proxyModel.setSourceModel(model);
+		view.setModel(m_proxyModel);
+		view.expandAll();
+		view.header().setStretchLastSection(true);
+		view.header().hide();
+		view.setItemsExpandable(false);
+		view.setRootIsDecorated(false);
+		view.setIndentation(10);
+		location.setModel(m_proxyModel);
+		view.show();
+		location.setView(view);
+		BookmarkNode menu = m_bookmarksManager.menu();
+		QModelIndex idx = m_proxyModel.mapFromSource(model.index(menu));
+		view.setCurrentIndex(idx);
+		location.setCurrentIndex(idx.row());
+		name.setText(title);
+	}
 
 private:
 	
-void accept()
-{
-    QModelIndex index = location.view().currentIndex();
-    index = m_proxyModel.mapToSource(index);
-    if (!index.isValid())
-        index = m_bookmarksManager.bookmarksModel().index(0, 0);
-    BookmarkNode parent = m_bookmarksManager.bookmarksModel().node(index);
-    BookmarkNode bookmark = new BookmarkNode(BookmarkNode.Bookmark);
-    bookmark.url = m_url;
-    bookmark.title = name.text();
-    m_bookmarksManager.addBookmark(parent, bookmark);
-    QDialog.accept();
-}
+	void accept()
+	{
+		QModelIndex index = location.view().currentIndex();
+		index = m_proxyModel.mapToSource(index);
+		if (!index.isValid())
+			index = m_bookmarksManager.bookmarksModel().index(0, 0);
+		BookmarkNode parent = m_bookmarksManager.bookmarksModel().node(index);
+		BookmarkNode bookmark = new BookmarkNode(BookmarkNode.Bookmark);
+		bookmark.url = m_url;
+		bookmark.title = name.text();
+		m_bookmarksManager.addBookmark(parent, bookmark);
+		QDialog.accept();
+	}
 
 private:
-    QString m_url;
-    BookmarksManager m_bookmarksManager;
-    AddBookmarkProxyModel m_proxyModel;
+
+	QString m_url;
+	BookmarksManager m_bookmarksManager;
+	AddBookmarkProxyModel m_proxyModel;
 }
 
 import ui_bookmarks;
@@ -909,239 +912,245 @@
 //class TreeProxyModel;
 class BookmarksDialog : public QDialog, public Ui_BookmarksDialog
 {
-	
-    mixin Signal!("openUrl", QUrl url);
+	mixin Signal!("openUrl", QUrl url);
 
 public:
-    this(QWidget parent = null, BookmarksManager manager = null)
-    : QDialog(parent)
-{
-    m_bookmarksManager = manager;
-    if (!m_bookmarksManager)
-        m_bookmarksManager = BrowserApplication.bookmarksManager();
-    setupUi(this);
+
+	this(QWidget parent = null, BookmarksManager manager = null)
+	: QDialog(parent)
+	{
+		m_bookmarksManager = manager;
+		if (!m_bookmarksManager)
+			m_bookmarksManager = BrowserApplication.bookmarksManager();
+		setupUi(this);
 
-    tree.setUniformRowHeights(true);
-    tree.setSelectionBehavior(QAbstractItemView.SelectRows);
-    tree.setSelectionMode(QAbstractItemView.ContiguousSelection);
-    tree.setTextElideMode(Qt.ElideMiddle);
-    m_bookmarksModel = m_bookmarksManager.bookmarksModel();
-    m_proxyModel = new TreeProxyModel(this);
-    search.textChanged.connect(&m_proxyModel.setFilterFixedString);
-    removeButton.clicked.connect(&tree.removeOne);
-    m_proxyModel.setSourceModel(m_bookmarksModel);
-    tree.setModel(m_proxyModel);
-    tree.setDragDropMode(QAbstractItemView.InternalMove);
-    tree.setExpanded(m_proxyModel.index(0, 0), true);
-    tree.setAlternatingRowColors(true);
-   auto fm = new QFontMetrics(font());
-    int header = fm.width(QLatin1Char('m')) * 40;
-    tree.header().resizeSection(0, header);
-    tree.header().setStretchLastSection(true);
-    tree.activated.connect(&this.open);
-    tree.setContextMenuPolicy(Qt.CustomContextMenu);
-    tree.customContextMenuRequested.connect(&this.customContextMenuRequested);
-    addFolderButton.clicked.connect(&this.newFolder);
-    expandNodes(m_bookmarksManager.bookmarks());
-    setAttribute(Qt.WA_DeleteOnClose);
-}
-    ~this()
-{
-    if (saveExpandedNodes(tree.rootIndex()))
-        m_bookmarksManager.changeExpanded();
-}
-
-private slots:
-    void customContextMenuRequested(QPoint pos)
-{
-    QMenu menu;
-    QModelIndex index = tree.indexAt(pos);
-    index = index.sibling(index.row(), 0);
-    if (index.isValid() && !tree.model().hasChildren(index)) {
-        menu.addAction(tr("Open"), this, SLOT(open()));
-        menu.addSeparator();
-    }
-    menu.addAction(tr("Delete"), tree, SLOT(removeOne()));
-    menu.exec(QCursor.pos());
-}
-void open()
-{
-    QModelIndex index = tree.currentIndex();
-    if (!index.parent().isValid())
-        return;
-    emit openUrl(index.sibling(index.row(), 1).data(BookmarksModel.UrlRole).toUrl());
-}
-
-    void newFolder()
-{
-    QModelIndex currentIndex = tree.currentIndex();
-    QModelIndex idx = currentIndex;
-    if (idx.isValid() && !idx.model().hasChildren(idx))
-        idx = idx.parent();
-    if (!idx.isValid())
-        idx = tree.rootIndex();
-    idx = m_proxyModel.mapToSource(idx);
-    BookmarkNode parent = m_bookmarksManager.bookmarksModel().node(idx);
-    BookmarkNode node = new BookmarkNode(BookmarkNode.Folder);
-    node.title = tr("New Folder");
-    m_bookmarksManager.addBookmark(parent, node, currentIndex.row() + 1);
-}
+		tree.setUniformRowHeights(true);
+		tree.setSelectionBehavior(QAbstractItemView.SelectRows);
+		tree.setSelectionMode(QAbstractItemView.ContiguousSelection);
+		tree.setTextElideMode(Qt.ElideMiddle);
+		m_bookmarksModel = m_bookmarksManager.bookmarksModel();
+		m_proxyModel = new TreeProxyModel(this);
+		search.textChanged.connect(&m_proxyModel.setFilterFixedString);
+		removeButton.clicked.connect(&tree.removeOne);
+		m_proxyModel.setSourceModel(m_bookmarksModel);
+		tree.setModel(m_proxyModel);
+		tree.setDragDropMode(QAbstractItemView.InternalMove);
+		tree.setExpanded(m_proxyModel.index(0, 0), true);
+		tree.setAlternatingRowColors(true);
+		auto fm = new QFontMetrics(font());
+		int header = fm.width(QLatin1Char('m')) * 40;
+		tree.header().resizeSection(0, header);
+		tree.header().setStretchLastSection(true);
+		tree.activated.connect(&this.open);
+		tree.setContextMenuPolicy(Qt.CustomContextMenu);
+		tree.customContextMenuRequested.connect(&this.customContextMenuRequested);
+		addFolderButton.clicked.connect(&this.newFolder);
+		expandNodes(m_bookmarksManager.bookmarks());
+		setAttribute(Qt.WA_DeleteOnClose);
+	}
+	
+	~this()
+	{
+		if (saveExpandedNodes(tree.rootIndex()))
+			m_bookmarksManager.changeExpanded();
+	}
 
 private:
-    void expandNodes(BookmarkNode node)
-{
-    for (int i = 0; i < node.children().count(); ++i) {
-        BookmarkNode childNode = node.children()[i];
-        if (childNode.expanded) {
-            QModelIndex idx = m_bookmarksModel.index(childNode);
-            idx = m_proxyModel.mapFromSource(idx);
-            tree.setExpanded(idx, true);
-            expandNodes(childNode);
-        }
-    }
-}
+
+	void customContextMenuRequested(QPoint pos)
+	{
+		QMenu menu;
+		QModelIndex index = tree.indexAt(pos);
+		index = index.sibling(index.row(), 0);
+		if (index.isValid() && !tree.model().hasChildren(index)) {
+			menu.addAction(tr("Open"), this, SLOT(open()));
+			menu.addSeparator();
+		}
+		menu.addAction(tr("Delete"), tree, SLOT(removeOne()));
+		menu.exec(QCursor.pos());
+	}
+	
+	void open()
+	{
+		QModelIndex index = tree.currentIndex();
+		if (!index.parent().isValid())
+			return;
+		emit openUrl(index.sibling(index.row(), 1).data(BookmarksModel.UrlRole).toUrl());
+	}
+
+	void newFolder()
+	{
+		QModelIndex currentIndex = tree.currentIndex();
+		QModelIndex idx = currentIndex;
+		if (idx.isValid() && !idx.model().hasChildren(idx))
+			idx = idx.parent();
+		if (!idx.isValid())
+			idx = tree.rootIndex();
+		idx = m_proxyModel.mapToSource(idx);
+		BookmarkNode parent = m_bookmarksManager.bookmarksModel().node(idx);
+		BookmarkNode node = new BookmarkNode(BookmarkNode.Folder);
+		node.title = tr("New Folder");
+		m_bookmarksManager.addBookmark(parent, node, currentIndex.row() + 1);
+	}
 
-bool saveExpandedNodes(QModelIndex parent)
-{
-    bool changed = false;
-    for (int i = 0; i < m_proxyModel.rowCount(parent); ++i) {
-        QModelIndex child = m_proxyModel.index(i, 0, parent);
-        QModelIndex sourceIndex = m_proxyModel.mapToSource(child);
-        BookmarkNode childNode = m_bookmarksModel.node(sourceIndex);
-        bool wasExpanded = childNode.expanded;
-        if (tree.isExpanded(child)) {
-            childNode.expanded = true;
-            changed |= saveExpandedNodes(child);
-        } else {
-            childNode.expanded = false;
-        }
-        changed |= (wasExpanded != childNode.expanded);
-    }
-    return changed;
-}
+private:
+	void expandNodes(BookmarkNode node)
+	{
+		for (int i = 0; i < node.children().count(); ++i) {
+			BookmarkNode childNode = node.children()[i];
+			if (childNode.expanded) {
+				QModelIndex idx = m_bookmarksModel.index(childNode);
+				idx = m_proxyModel.mapFromSource(idx);
+				tree.setExpanded(idx, true);
+				expandNodes(childNode);
+			}
+		}
+	}
 
-    BookmarksManager m_bookmarksManager;
-    BookmarksModel m_bookmarksModel;
-    TreeProxyModel m_proxyModel;
+	bool saveExpandedNodes(QModelIndex parent)
+	{
+		bool changed = false;
+		for (int i = 0; i < m_proxyModel.rowCount(parent); ++i) {
+			QModelIndex child = m_proxyModel.index(i, 0, parent);
+			QModelIndex sourceIndex = m_proxyModel.mapToSource(child);
+			BookmarkNode childNode = m_bookmarksModel.node(sourceIndex);
+			bool wasExpanded = childNode.expanded;
+			if (tree.isExpanded(child)) {
+				childNode.expanded = true;
+				changed |= saveExpandedNodes(child);
+			} else {
+				childNode.expanded = false;
+			}
+			changed |= (wasExpanded != childNode.expanded);
+		}
+		return changed;
+	}
+
+	BookmarksManager m_bookmarksManager;
+	BookmarksModel m_bookmarksModel;
+	TreeProxyModel m_proxyModel;
 }
 
 import qt.gui.QToolBar;
 
 class BookmarksToolBar : public QToolBar
 {
-    mixin Signal!("openUrl", QUrl url);
+mixin Signal!("openUrl", QUrl url);
 
 public:
-    BookmarksToolBar(BookmarksModel model, QWidget parent = null)
-{
-	super(tr("Bookmark"), parent);
-	m_bookmarksModel = model;
-    this.actionTriggered.connect(&this.triggered);
-    setRootIndex(model.index(0, 0));
-    m_bookmarksModel.modelReset.connect(&this.build);
-    m_bookmarksModel.rowsInserted.connect(&this.build);
-    m_bookmarksModel.rowsRemoved.connect(&this.build);
-    m_bookmarksModel.dataChanged.connect(&this.build);
-    setAcceptDrops(true);
-}
 
-    void setRootIndex(QModelIndex index);
-{
-    m_root = index;
-    build();
-}
+	this(BookmarksModel model, QWidget parent = null)
+	{
+		super(tr("Bookmark"), parent);
+		m_bookmarksModel = model;
+		this.actionTriggered.connect(&this.triggered);
+		setRootIndex(model.index(0, 0));
+		m_bookmarksModel.modelReset.connect(&this.build);
+		m_bookmarksModel.rowsInserted.connect(&this.build);
+		m_bookmarksModel.rowsRemoved.connect(&this.build);
+		m_bookmarksModel.dataChanged.connect(&this.build);
+		setAcceptDrops(true);
+	}
 
-    QModelIndex rootIndex()
-{
-    return m_root;
-}
+	void setRootIndex(QModelIndex index);
+	{
+		m_root = index;
+		build();
+	}
+
+	QModelIndex rootIndex()
+	{
+		return m_root;
+	}
 
 protected:
-    void dragEnterEvent(QDragEnterEvent event)
-{
-    const QMimeData mimeData = event.mimeData();
-    if (mimeData.hasUrls())
-        event.acceptProposedAction();
-    QToolBar.dragEnterEvent(event);
-}
 
-    void dropEvent(QDropEvent event)
-{
-    const QMimeData mimeData = event.mimeData();
-    if (mimeData.hasUrls() && mimeData.hasText()) {
-        QList<QUrl> urls = mimeData.urls();
-        QAction action = actionAt(event.pos());
-        QString dropText;
-        if (action)
-            dropText = action.text();
-        int row = -1;
-        QModelIndex parentIndex = m_root;
-        for (int i = 0; i < m_bookmarksModel.rowCount(m_root); ++i) {
-            QModelIndex idx = m_bookmarksModel.index(i, 0, m_root);
-            QString title = idx.data().toString();
-            if (title == dropText) {
-                row = i;
-                if (m_bookmarksModel.hasChildren(idx)) {
-                    parentIndex = idx;
-                    row = -1;
-                }
-                break;
-            }
-        }
-        BookmarkNode bookmark = new BookmarkNode(BookmarkNode.Bookmark);
-        bookmark.url = urls.at(0).toString();
-        bookmark.title = mimeData.text();
+	void dragEnterEvent(QDragEnterEvent event)
+	{
+		const QMimeData mimeData = event.mimeData();
+		if (mimeData.hasUrls())
+			event.acceptProposedAction();
+		QToolBar.dragEnterEvent(event);
+	}
 
-        BookmarkNode parent = m_bookmarksModel.node(parentIndex);
-        BookmarksManager bookmarksManager = m_bookmarksModel.bookmarksManager();
-        bookmarksManager.addBookmark(parent, bookmark, row);
-        event.acceptProposedAction();
-    }
-    QToolBar.dropEvent(event);
-}
-
-private slots:
-    void triggered(QAction action)
-{
-    QVariant v = action.data();
-    if (v.canConvert<QUrl>()) {
-        emit openUrl(v.toUrl());
-    }
-}
-
-    void activated(QModelIndex index)
-{
-    emit openUrl(index.data(BookmarksModel.UrlRole).toUrl());
-}
-
+	void dropEvent(QDropEvent event)
+	{
+		const QMimeData mimeData = event.mimeData();
+		if (mimeData.hasUrls() && mimeData.hasText()) {
+			QList<QUrl> urls = mimeData.urls();
+			QAction action = actionAt(event.pos());
+			QString dropText;
+			if (action)
+				dropText = action.text();
+			int row = -1;
+			QModelIndex parentIndex = m_root;
+			for (int i = 0; i < m_bookmarksModel.rowCount(m_root); ++i) {
+				QModelIndex idx = m_bookmarksModel.index(i, 0, m_root);
+				QString title = idx.data().toString();
+				if (title == dropText) {
+					row = i;
+					if (m_bookmarksModel.hasChildren(idx)) {
+						parentIndex = idx;
+						row = -1;
+					}
+					break;
+				}
+			}
+			BookmarkNode bookmark = new BookmarkNode(BookmarkNode.Bookmark);
+			bookmark.url = urls.at(0).toString();
+			bookmark.title = mimeData.text();
 
-    void build()
-{
-    clear();
-    for (int i = 0; i < m_bookmarksModel.rowCount(m_root); ++i) {
-        QModelIndex idx = m_bookmarksModel.index(i, 0, m_root);
-        if (m_bookmarksModel.hasChildren(idx)) {
-            QToolButton button = new QToolButton(this);
-            button.setPopupMode(QToolButton.InstantPopup);
-            button.setArrowType(Qt.DownArrow);
-            button.setText(idx.data().toString());
-            ModelMenu menu = new ModelMenu(this);
-            menu.activated.connect(&this.activated);
-            menu.setModel(m_bookmarksModel);
-            menu.setRootIndex(idx);
-            menu.addAction(new QAction(menu));
-            button.setMenu(menu);
-            button.setToolButtonStyle(Qt.ToolButtonTextOnly);
-            QAction a = addWidget(button);
-            a.setText(idx.data().toString());
-        } else {
-            QAction action = addAction(idx.data().toString());
-            action.setData(idx.data(BookmarksModel.UrlRole));
-        }
-    }
-}
+			BookmarkNode parent = m_bookmarksModel.node(parentIndex);
+			BookmarksManager bookmarksManager = m_bookmarksModel.bookmarksManager();
+			bookmarksManager.addBookmark(parent, bookmark, row);
+			event.acceptProposedAction();
+		}
+		QToolBar.dropEvent(event);
+	}
 
 private:
-    BookmarksModel m_bookmarksModel;
-    QPersistentModelIndex m_root;
+
+	void triggered(QAction action)
+	{
+		QVariant v = action.data();
+		if (v.canConvert<QUrl>()) {
+			emit openUrl(v.toUrl());
+		}
+	}
+
+	void activated(QModelIndex index)
+	{
+		emit openUrl(index.data(BookmarksModel.UrlRole).toUrl());
+	}
+
+	void build()
+	{
+		clear();
+		for (int i = 0; i < m_bookmarksModel.rowCount(m_root); ++i) {
+			QModelIndex idx = m_bookmarksModel.index(i, 0, m_root);
+			if (m_bookmarksModel.hasChildren(idx)) {
+				QToolButton button = new QToolButton(this);
+				button.setPopupMode(QToolButton.InstantPopup);
+				button.setArrowType(Qt.DownArrow);
+				button.setText(idx.data().toString());
+				ModelMenu menu = new ModelMenu(this);
+				menu.activated.connect(&this.activated);
+				menu.setModel(m_bookmarksModel);
+				menu.setRootIndex(idx);
+				menu.addAction(new QAction(menu));
+				button.setMenu(menu);
+				button.setToolButtonStyle(Qt.ToolButtonTextOnly);
+				QAction a = addWidget(button);
+				a.setText(idx.data().toString());
+			} else {
+				QAction action = addAction(idx.data().toString());
+				action.setData(idx.data(BookmarksModel.UrlRole));
+			}
+		}
+	}
+
+private:
+
+	BookmarksModel m_bookmarksModel;
+	QPersistentModelIndex m_root;
 }