From 1fd73708b576e668c25c4dc6fb71d5e11108801a Mon Sep 17 00:00:00 2001 From: Lukas Holecek Date: Mon, 14 Mar 2016 20:21:25 +0100 Subject: [PATCH] Load plugins only once --- src/gui/clipboardbrowser.cpp | 6 +-- src/gui/clipboardbrowser.h | 4 +- src/gui/configtabappearance.cpp | 83 ++++++++++++++++++-------------- src/gui/configtabappearance.h | 5 ++ src/gui/configurationmanager.cpp | 2 + src/gui/mainwindow.cpp | 2 +- src/gui/theme.cpp | 2 + src/item/itemdelegate.cpp | 2 +- src/ui/configtabappearance.ui | 18 +------ 9 files changed, 65 insertions(+), 59 deletions(-) diff --git a/src/gui/clipboardbrowser.cpp b/src/gui/clipboardbrowser.cpp index 80fe019a2..358d50f17 100644 --- a/src/gui/clipboardbrowser.cpp +++ b/src/gui/clipboardbrowser.cpp @@ -171,17 +171,17 @@ void ClipboardBrowserShared::loadFromConfiguration() minutesToExpire = appConfig.option(); } -ClipboardBrowser::ClipboardBrowser(QWidget *parent, const ClipboardBrowserSharedPtr &sharedData) +ClipboardBrowser::ClipboardBrowser(const ClipboardBrowserSharedPtr &sharedData, QWidget *parent) : QListView(parent) , m_itemLoader(NULL) , m_tabName() , m_lastFiltered(-1) , m(this) - , d(this, sharedData ? sharedData->itemFactory : NULL) + , d(this, sharedData->itemFactory) , m_invalidateCache(false) , m_expireAfterEditing(false) , m_editor(NULL) - , m_sharedData(sharedData ? sharedData : ClipboardBrowserSharedPtr(new ClipboardBrowserShared)) + , m_sharedData(sharedData) , m_loadButton(NULL) , m_searchProgress(NULL) , m_dragTargetRow(-1) diff --git a/src/gui/clipboardbrowser.h b/src/gui/clipboardbrowser.h index 1bc35da45..6ba408809 100644 --- a/src/gui/clipboardbrowser.h +++ b/src/gui/clipboardbrowser.h @@ -48,7 +48,7 @@ Q_DECLARE_FLAGS(SelectActions, SelectAction) Q_DECLARE_OPERATORS_FOR_FLAGS(SelectActions) struct ClipboardBrowserShared { - explicit ClipboardBrowserShared(ItemFactory *itemFactory = NULL); + explicit ClipboardBrowserShared(ItemFactory *itemFactory); void loadFromConfiguration(); @@ -84,7 +84,7 @@ class ClipboardBrowser : public QListView QPointer c; }; - explicit ClipboardBrowser(QWidget *parent = NULL, const ClipboardBrowserSharedPtr &sharedData = ClipboardBrowserSharedPtr()); + explicit ClipboardBrowser(const ClipboardBrowserSharedPtr &sharedData, QWidget *parent = NULL); /** Close all external editors and save items if needed. */ ~ClipboardBrowser(); /** Load settings. */ diff --git a/src/gui/configtabappearance.cpp b/src/gui/configtabappearance.cpp index 62da82a3f..c17e24abf 100644 --- a/src/gui/configtabappearance.cpp +++ b/src/gui/configtabappearance.cpp @@ -53,43 +53,10 @@ ConfigTabAppearance::ConfigTabAppearance(QWidget *parent) , ui(new Ui::ConfigTabAppearance) , m_theme(ui) , m_editor() + , m_preview(NULL) { ui->setupUi(this); - const QString searchFor = tr("item", "Search expression in preview in Appearance tab."); - - ClipboardBrowser *c = ui->clipboardBrowserPreview; - c->addItems( QStringList() - << tr("Search string is %1.").arg( quoteString(searchFor) ) - << tr("Select an item and\n" - "press F2 to edit.") - << tr("Select items and move them with\n" - "CTRL and up or down key.") - << tr("Remove item with Delete key.") ); - for (int i = 1; i <= 20; ++i) - c->add( tr("Example item %1").arg(i), -1 ); - - QAbstractItemModel *model = c->model(); - QModelIndex index = model->index(0, 0); - QVariantMap dataMap; - dataMap.insert( mimeItemNotes, tr("Some random notes (Shift+F2 to edit)").toUtf8() ); - model->setData(index, dataMap, contentType::updateData); - - // Highlight found text but don't filter out any items. - c->filterItems( QRegExp(QString("|") + searchFor, Qt::CaseInsensitive) ); - - QAction *act; - - act = new QAction(c); - act->setShortcut( QString("Shift+F2") ); - connect(act, SIGNAL(triggered()), c, SLOT(editNotes())); - c->addAction(act); - - act = new QAction(c); - act->setShortcut( QString("F2") ); - connect(act, SIGNAL(triggered()), c, SLOT(editSelected())); - c->addAction(act); - // Connect signals from theme buttons. foreach (QPushButton *button, ui->scrollAreaTheme->findChildren()) { if (button->objectName().endsWith("Font")) @@ -128,6 +95,50 @@ void ConfigTabAppearance::saveTheme(QSettings &settings) updateThemes(); } +void ConfigTabAppearance::createPreview(ItemFactory *itemFactory) +{ + if (m_preview) + return; + + ClipboardBrowserSharedPtr sharedData(new ClipboardBrowserShared(itemFactory)); + ClipboardBrowser *c = new ClipboardBrowser(sharedData, this); + ui->browserParentLayout->addWidget(c); + m_preview = c; + + const QString searchFor = tr("item", "Search expression in preview in Appearance tab."); + + c->addItems( QStringList() + << tr("Search string is %1.").arg( quoteString(searchFor) ) + << tr("Select an item and\n" + "press F2 to edit.") + << tr("Select items and move them with\n" + "CTRL and up or down key.") + << tr("Remove item with Delete key.") ); + for (int i = 1; i <= 20; ++i) + c->add( tr("Example item %1").arg(i), -1 ); + + QAbstractItemModel *model = c->model(); + QModelIndex index = model->index(0, 0); + QVariantMap dataMap; + dataMap.insert( mimeItemNotes, tr("Some random notes (Shift+F2 to edit)").toUtf8() ); + model->setData(index, dataMap, contentType::updateData); + + // Highlight found text but don't filter out any items. + c->filterItems( QRegExp(QString("|") + searchFor, Qt::CaseInsensitive) ); + + QAction *act; + + act = new QAction(c); + act->setShortcut( QString("Shift+F2") ); + connect(act, SIGNAL(triggered()), c, SLOT(editNotes())); + c->addAction(act); + + act = new QAction(c); + act->setShortcut( QString("F2") ); + connect(act, SIGNAL(triggered()), c, SLOT(editSelected())); + c->addAction(act); +} + void ConfigTabAppearance::onFontButtonClicked() { Q_ASSERT(sender() != NULL); @@ -450,6 +461,6 @@ QIcon ConfigTabAppearance::createThemeIcon(const QString &fileName) void ConfigTabAppearance::decoratePreview() { - if ( isVisible() ) - ui->clipboardBrowserPreview->decorate(m_theme); + if ( m_preview && isVisible() ) + m_preview->decorate(m_theme); } diff --git a/src/gui/configtabappearance.h b/src/gui/configtabappearance.h index 4c69e8a80..04b759856 100644 --- a/src/gui/configtabappearance.h +++ b/src/gui/configtabappearance.h @@ -31,6 +31,7 @@ class ConfigTabAppearance; class ClipboardBrowser; class ItemDelegate; +class ItemFactory; class Option; class QAbstractScrollArea; class QSettings; @@ -50,6 +51,8 @@ class ConfigTabAppearance : public QWidget void setEditor(const QString &editor) { m_editor = editor; } + void createPreview(ItemFactory *itemFactory); + protected: void showEvent(QShowEvent *event); @@ -88,6 +91,8 @@ private slots: Ui::ConfigTabAppearance *ui; Theme m_theme; QString m_editor; + + ClipboardBrowser *m_preview; }; #endif // CONFIGTABAPPEARANCE_H diff --git a/src/gui/configurationmanager.cpp b/src/gui/configurationmanager.cpp index 1a2ca289e..b81659202 100644 --- a/src/gui/configurationmanager.cpp +++ b/src/gui/configurationmanager.cpp @@ -108,6 +108,8 @@ ConfigurationManager::ConfigurationManager(ItemFactory *itemFactory, QWidget *pa connect( ui->configTabShortcuts, SIGNAL(openCommandDialogRequest()), this, SIGNAL(openCommandDialogRequest())); + ui->configTabAppearance->createPreview(itemFactory); + loadSettings(); } diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index e90587cf6..bb4c5ab8c 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -998,7 +998,7 @@ ClipboardBrowser *MainWindow::createTab( if (i != -1) return getBrowser(i); - ClipboardBrowser *c = new ClipboardBrowser(this, m_sharedData); + ClipboardBrowser *c = new ClipboardBrowser(m_sharedData, this); c->setTabName(name); c->loadSettings(); diff --git a/src/gui/theme.cpp b/src/gui/theme.cpp index 53d05045b..c12a4c1ab 100644 --- a/src/gui/theme.cpp +++ b/src/gui/theme.cpp @@ -21,6 +21,8 @@ #include "ui_configtabappearance.h" +#include "item/itemdelegate.h" + #include "gui/iconfont.h" #include diff --git a/src/item/itemdelegate.cpp b/src/item/itemdelegate.cpp index 583a3229b..86bc1a628 100644 --- a/src/item/itemdelegate.cpp +++ b/src/item/itemdelegate.cpp @@ -53,7 +53,7 @@ int itemMargin() ItemDelegate::ItemDelegate(QAbstractItemView *view, ItemFactory *itemFactory, QWidget *parent) : QItemDelegate(parent) , m_view(view) - , m_itemFactory(itemFactory ? itemFactory : new ItemFactory(this)) + , m_itemFactory(itemFactory) , m_saveOnReturnKey(true) , m_re() , m_maxSize(2048, 2048 * 8) diff --git a/src/ui/configtabappearance.ui b/src/ui/configtabappearance.ui index 3be4680ef..1ef29ada6 100644 --- a/src/ui/configtabappearance.ui +++ b/src/ui/configtabappearance.ui @@ -34,7 +34,7 @@ 0 0 281 - 488 + 482 @@ -383,7 +383,7 @@ - + 0 @@ -392,27 +392,13 @@ Preview: - - clipboardBrowserPreview - - - - - - - ClipboardBrowser - QListView -
gui/clipboardbrowser.h
-
-
- clipboardBrowserPreview pushButtonColorBg pushButtonColorFg pushButtonFont