Add initial support for QtIndenticon
Add initial loading of qt jdenticon plugin:
https://github.com/redsky17/qt-jdenticon
Currently, the library's functionality has not been integrated
into the rest of nheko. Next step is to add a configuration
item in the User Settings and use the plugin to generate
avatars for users without their own picture. These avatars
should be cached in the Cache object.
2 files changed, 35 insertions, 0 deletions
diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index 2e062c0c..8da7d659 100644
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -19,6 +19,7 @@
#include <QLayout>
#include <QSettings>
#include <QShortcut>
+#include <QPluginLoader>
#include <mtx/requests.hpp>
@@ -166,6 +167,10 @@ MainWindow::MainWindow(QWidget *parent)
showChatPage();
}
+
+ if (loadJdenticonPlugin()) {
+ nhlog::ui()->info("loaded jdenticon.");
+ }
}
void
@@ -479,3 +484,27 @@ MainWindow::showDialog(QWidget *dialog)
dialog->raise();
dialog->show();
}
+
+bool
+MainWindow::loadJdenticonPlugin()
+{
+ QDir pluginsDir(qApp->applicationDirPath());
+
+ bool plugins = pluginsDir.cd("plugins");
+ if (plugins) {
+ foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
+ QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
+ QObject *plugin = pluginLoader.instance();
+ if (plugin) {
+ jdenticonInteface_ = qobject_cast<JdenticonInterface *>(plugin);
+ if (jdenticonInteface_) {
+ nhlog::ui()->info("Found jdenticon plugin.");
+ return true;
+ }
+ }
+ }
+ }
+
+ nhlog::ui()->info("jdenticon plugin not found.");
+ return false;
+}
\ No newline at end of file
diff --git a/src/MainWindow.h b/src/MainWindow.h
index 2336a929..1aadbf4d 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -31,6 +31,8 @@
#include "dialogs/UserProfile.h"
#include "ui/OverlayModal.h"
+#include "jdenticoninterface.h"
+
class ChatPage;
class LoadingIndicator;
class OverlayModal;
@@ -129,6 +131,8 @@ private slots:
void removeOverlayProgressBar();
private:
+ bool loadJdenticonPlugin();
+
void showDialog(QWidget *dialog);
bool hasActiveUser();
void restoreWindowSize();
@@ -158,4 +162,6 @@ private:
//! Overlay modal used to project other widgets.
OverlayModal *modal_ = nullptr;
LoadingIndicator *spinner_ = nullptr;
+
+ JdenticonInterface *jdenticonInteface_ = nullptr;
};
|