Skip to content
Snippets Groups Projects
Commit 6c31f5fe authored by Joe Donofry's avatar Joe Donofry
Browse files

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.
parent 22a08ba6
No related branches found
No related tags found
No related merge requests found
......@@ -282,6 +282,9 @@ include_directories(SYSTEM ${TWEENY_INCLUDE_DIR})
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${Boost_INCLUDE_DIRS})
# local inclue directory
include_directories(includes)
qt5_wrap_cpp(MOC_HEADERS
# Dialogs
src/dialogs/CreateRoom.h
......
#ifndef JDENTICONINTERFACE_H
#define JDENTICONINTERFACE_H
#include <QString>
class JdenticonInterface
{
public:
virtual ~JdenticonInterface() {}
virtual QString generate(const QString &message, uint16_t size) = 0;
};
#define JdenticonInterface_iid "redsky17.Qt.JdenticonInterface"
Q_DECLARE_INTERFACE(JdenticonInterface, JdenticonInterface_iid)
#endif // JDENTICONINTERFACE_H
......@@ -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
......@@ -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;
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment