diff options
author | Nikola Pajkovsky <npajkovs@redhat.com> | 2009-09-17 12:16:48 +0200 |
---|---|---|
committer | Nikola Pajkovsky <npajkovs@redhat.com> | 2009-09-17 12:16:48 +0200 |
commit | 5a86973be999b43581e814412f0d52885abac5d4 (patch) | |
tree | 1ddbb5af77013dec00b4234ee583aff41eb43cae /src/Applet | |
parent | 9a742f012b9154c34d046dc67ba9ad904512ab60 (diff) | |
download | abrt-5a86973be999b43581e814412f0d52885abac5d4.tar.gz abrt-5a86973be999b43581e814412f0d52885abac5d4.tar.xz abrt-5a86973be999b43581e814412f0d52885abac5d4.zip |
add dbus signalization when quota exceeded
Diffstat (limited to 'src/Applet')
-rw-r--r-- | src/Applet/Applet.cpp | 8 | ||||
-rw-r--r-- | src/Applet/CCApplet.cpp | 25 | ||||
-rw-r--r-- | src/Applet/CCApplet.h | 3 |
3 files changed, 36 insertions, 0 deletions
diff --git a/src/Applet/Applet.cpp b/src/Applet/Applet.cpp index 41fc3b75..cf58c7da 100644 --- a/src/Applet/Applet.cpp +++ b/src/Applet/Applet.cpp @@ -52,6 +52,13 @@ crash_notify_cb(const char* progname) applet->CrashNotify(message, progname); } +static void +quota_exceed_cb(const char* str) +{ + applet->ShowIcon(); + applet->CrashNotify("%s", str); +} + int main(int argc, char **argv) { setlocale(LC_ALL,""); @@ -91,6 +98,7 @@ int main(int argc, char **argv) DBus::Connection conn = DBus::Connection::SystemBus(); applet = new CApplet(conn, session, CC_DBUS_PATH, CC_DBUS_NAME); applet->ConnectCrashHandler(crash_notify_cb); + applet->ConnectQuotaExceedHandler(quota_exceed_cb); if(!conn.has_name(CC_DBUS_NAME)) { std::cout << _("ABRT service is not running") << std::endl; diff --git a/src/Applet/CCApplet.cpp b/src/Applet/CCApplet.cpp index 3893c77a..7b1a7f1b 100644 --- a/src/Applet/CCApplet.cpp +++ b/src/Applet/CCApplet.cpp @@ -193,6 +193,26 @@ void CApplet::Crash(const std::string& progname, const std::string& uid ) } } +void CApplet::QuotaExceed(const char* str) +{ + if (m_pSessionDBus->has_name("com.redhat.abrt.gui")) + { + return; + } + else + { + if(m_pQuotaExceedHandler) + { + m_pQuotaExceedHandler(str); + } + else + { + std::cout << _("This is default handler, you should register your own with ConnectQuotaExceedHandler") << std::endl; + std::cout.flush(); + } + } +} + void CApplet::DaemonStateChange_cb(bool running, void* data) { CApplet *applet = (CApplet *)data; @@ -211,6 +231,11 @@ void CApplet::ConnectCrashHandler(void (*pCrashHandler)(const char *progname)) m_pCrashHandler = pCrashHandler; } +void CApplet::ConnectQuotaExceedHandler(void (*pQuotaExceedHandler)(const char *progname)) +{ + m_pQuotaExceedHandler = pQuotaExceedHandler; +} + void CApplet::SetIconTooltip(const char *format, ...) { va_list args; diff --git a/src/Applet/CCApplet.h b/src/Applet/CCApplet.h index 90a79e26..6c020e16 100644 --- a/src/Applet/CCApplet.h +++ b/src/Applet/CCApplet.h @@ -65,6 +65,7 @@ class CApplet int AddEvent(int pUUID, const std::string& pProgname); int RemoveEvent(int pUUID); void ConnectCrashHandler(void (*pCrashHandler)(const char *progname)); + void ConnectQuotaExceedHandler(void (*pQuotaExeedHandler)(const char *str)); static void DaemonStateChange_cb(bool running, void* data); protected: @@ -79,9 +80,11 @@ class CApplet private: /* dbus stuff */ void Crash(const std::string& progname, const std::string& uid); + void QuotaExceed(const char* str); /* the real signal handler called to handle the signal */ void (*m_pCrashHandler)(const char *progname); + void (*m_pQuotaExceedHandler)(const char *str); }; #endif /*CC_APPLET_H_*/ |