TrayIndicator *MainWidget::createTrayObject(QWidget *parent) { TrayFunctionPointer create_tray = NULL; #ifdef Q_OS_LINUX QString desktop = getenv("XDG_CURRENT_DESKTOP"); qDebug() << "Current desktop: " << desktop; if(desktop.toLower() == "kde") { // KDENotifier QLibrary library("/usr/lib/qcma/libqcma_kdenotifier.so"); if(library.load()) create_tray = reinterpret_cast<TrayFunctionPointer>(library.resolve("createTrayIndicator")); else qDebug() << "Cannot load libqcma_kdenotifier plugin"; } else // try to use the appindicator if is available // if(desktop.toLower() == "unity") { // AppIndicator QLibrary library("/usr/lib/qcma/libqcma_appindicator.so"); if(library.load()) create_tray = reinterpret_cast<TrayFunctionPointer>(library.resolve("createTrayIndicator")); else qDebug() << "Cannot load libqcma_appindicator plugin"; } #endif // else QSystemTrayIcon return (create_tray != NULL) ? create_tray(parent) : createTrayIndicator(parent); }
TrayIndicator *MainWidget::createTrayObject(QWidget *obj_parent) { TrayFunctionPointer create_tray = NULL; #ifdef Q_OS_LINUX QString desktop = getenv("XDG_CURRENT_DESKTOP"); qDebug() << "Current desktop: " << desktop; #ifdef QT_DEBUG QString library_path = QApplication::applicationDirPath(); #else QString library_path = "/usr/lib/qcma"; #endif if(desktop.toLower() == "kde") { #ifdef QT_DEBUG library_path += "/../kdenotifier"; #endif // KDENotifier QLibrary library(library_path + "/libqcma_kdenotifier.so"); if(library.load()) create_tray = reinterpret_cast<TrayFunctionPointer>(library.resolve("createTrayIndicator")); else qWarning() << "Cannot load libqcma_kdenotifier plugin from" << library_path; } else // try to use the appindicator if is available // if(desktop.toLower() == "unity") { #ifdef QT_DEBUG library_path += "/../appindicator"; #endif // AppIndicator QLibrary library(library_path + "/libqcma_appindicator.so"); if(library.load()) create_tray = reinterpret_cast<TrayFunctionPointer>(library.resolve("createTrayIndicator")); else qWarning() << "Cannot load libqcma_appindicator plugin from" << library_path; } #endif // else QSystemTrayIcon return (create_tray != NULL) ? create_tray(obj_parent) : createTrayIndicator(obj_parent); }