summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMavridis Philippe <mavridisf@gmail.com>2021-01-14 19:18:24 +0200
committerMavridis Philippe <mavridisf@gmail.com>2021-01-14 19:18:24 +0200
commitc30d5e78ea9e1ed4374535ec90b988d150186272 (patch)
treeff2318614495a2596cd20dbfbeafd6a5f8debfcd
parentea73c1340c6e79b8366d0a5e3e6276781b9281f9 (diff)
downloadklamav-c30d5e78ea9e1ed4374535ec90b988d150186272.tar.gz
klamav-c30d5e78ea9e1ed4374535ec90b988d150186272.zip
Implemented slots in Tabs menu and reworked tab mechanism.
The idea is to make some tabs closeable by the user (e.g. one may not need the Virus Browser tab all the time!). The state is stored in the program's configuration file. Some tabs are supposed to be always open (Scan and Update), that is why a way to close them is not programmatically implemented. Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
-rw-r--r--src/klamav.cpp108
-rw-r--r--src/klamav.h7
2 files changed, 100 insertions, 15 deletions
diff --git a/src/klamav.cpp b/src/klamav.cpp
index e204169..1783f4d 100644
--- a/src/klamav.cpp
+++ b/src/klamav.cpp
@@ -85,12 +85,12 @@ Klamav::Klamav()
scanner_menu->insertItem( i18n("&Schedule scan..."), this, SLOT(slotScheduleScan()) );
scanner_menu->insertItem( i18n("&Options..."), this, SLOT(slotOptions()) );
- TDEPopupMenu *tabs_menu = new TDEPopupMenu(this);
+ tabs_menu = new TDEPopupMenu(this);
tabs_menu->setCheckable(true);
- tabs_menu->insertItem( i18n("Show &Welcome tab"), this, SLOT(slotToggleWelcome()) );
- tabs_menu->insertItem( i18n("Show &Quarantine tab"), this, SLOT(slotToggleWelcome()) );
- tabs_menu->insertItem( i18n("Show &Virus Browser tab"), this, SLOT(slotToggleDBViewer()) );
- tabs_menu->insertItem( i18n("Show &Events tab"), this, SLOT(slotToggleEvents()) );
+ showWelcomeTab = tabs_menu->insertItem( i18n("Show &Welcome tab"), this, SLOT(slotToggleWelcome()) );
+ showQuarantineTab = tabs_menu->insertItem( i18n("Show &Quarantine tab"), this, SLOT(slotToggleQuarantine()) );
+ showDBViewerTab = tabs_menu->insertItem( i18n("Show &Virus Browser tab"), this, SLOT(slotToggleDBViewer()) );
+ showEventsTab = tabs_menu->insertItem( i18n("Show &Events tab"), this, SLOT(slotToggleEvents()) );
// Menu bar
@@ -104,7 +104,7 @@ Klamav::Klamav()
activityviewer = new Activityviewer(this);
aboutklamav = new Aboutklamav(this);
- tab->addTab(aboutklamav, i18n("Welcome"));
+ updateTabState(0, true); // Welcome tab
klamscan = new Klamscan(this);
tab->addTab(klamscan, i18n("&Scan"));
@@ -120,14 +120,12 @@ Klamav::Klamav()
kuarantine = new Kuarantine(this);
- tab->addTab(kuarantine, i18n("&Quarantine"));
+ updateTabState(1, true); // Quarantine tab
klamdb = new KlamDB(this);
- tab->addTab(klamdb, i18n("Virus Browser"));
+ updateTabState(2, true); // Virus Browser tab
- tab->addTab(activityviewer, i18n("Events"));
-
-
+ updateTabState(3, true); // Events tab
top->addWidget(tab);
@@ -189,6 +187,62 @@ void Klamav::clamdStopped() {
_tray->setPixmap(KSystemTray::loadIcon("klamav_on_acc_disabled"));
}
+void Klamav::updateTabState( int tabId, bool init ) {
+ if( config->group() != "Tabs" )
+ config->setGroup("Tabs");
+
+ TQString optionName, tabName;
+ TQWidget* tabWidget;
+ int itemId;
+
+ switch(tabId) {
+ case 0: // Welcome tab
+ optionName="ShowWelcomeTab";
+ tabName="Welcome";
+ tabWidget=aboutklamav;
+ itemId=showWelcomeTab;
+ break;
+
+ case 1: // Quarantine tab
+ optionName="ShowQuarantineTab";
+ tabName="Quarantine";
+ tabWidget=kuarantine;
+ itemId=showQuarantineTab;
+ break;
+
+ case 2: // DBViewer tab
+ optionName="ShowDBViewerTab";
+ tabName="Virus Browser";
+ tabWidget=klamdb;
+ itemId=showDBViewerTab;
+ break;
+
+ case 3: // Events tab
+ optionName="ShowEventsTab";
+ tabName="Events";
+ tabWidget=activityviewer;
+ itemId=showEventsTab;
+ break;
+ }
+
+ if( config->readBoolEntry(optionName, true) ) {
+ tab->insertTab(tabWidget, i18n(tabName));
+ tabWidget->show();
+
+ if(!init) tab->setCurrentPage( tab->indexOf(tabWidget) );
+ } else {
+ if( tab->currentPageIndex() == tabId )
+ tab->setCurrentPage(0);
+
+ if( tab->indexOf( tabWidget ) != -1 ) {
+ tab->removePage( tabWidget );
+ }
+ tabWidget->hide();
+ }
+
+ tabs_menu->setItemChecked(itemId, config->readBoolEntry(optionName, true) );
+}
+
// Menu slots
void Klamav::slotScanFile() {}
void Klamav::slotScanDir() {}
@@ -197,10 +251,34 @@ void Klamav::slotOptions() {
slotConfigKlamav("Archive Limits");
}
-void Klamav::slotToggleWelcome() {}
-void Klamav::slotToggleQuarantine() {}
-void Klamav::slotToggleDBViewer() {}
-void Klamav::slotToggleEvents() {}
+void Klamav::slotToggleWelcome() {
+ bool newState = ! config->readBoolEntry("ShowWelcomeTab", true);
+ config->writeEntry("ShowWelcomeTab", newState);
+ config->sync();
+
+ updateTabState(0, false);
+}
+void Klamav::slotToggleQuarantine() {
+ bool newState = ! config->readBoolEntry("ShowQuarantineTab", true);
+ config->writeEntry("ShowQuarantineTab", newState);
+ config->sync();
+
+ updateTabState(1, false);
+}
+void Klamav::slotToggleDBViewer() {
+ bool newState = ! config->readBoolEntry("ShowDBViewerTab", true);
+ config->writeEntry("ShowDBViewerTab", newState);
+ config->sync();
+
+ updateTabState(2, false);
+}
+void Klamav::slotToggleEvents() {
+ bool newState = ! config->readBoolEntry("ShowEventsTab", true);
+ config->writeEntry("ShowEventsTab", newState);
+ config->sync();
+
+ updateTabState(3, false);
+}
void Klamav::contextUpdateFK() {
diff --git a/src/klamav.h b/src/klamav.h
index 8c0858c..e539f85 100644
--- a/src/klamav.h
+++ b/src/klamav.h
@@ -17,6 +17,7 @@
class KPrinter;
class TDEToggleAction;
+class TDEPopupMenu;
class KURL;
class TQLineEdit;
class TQComboBox;
@@ -124,6 +125,7 @@ private:
void firstRunWizard();
void createDefaultKlamAVDir(TQString type);
void checkDir(TQString path);
+ void updateTabState(int tabId, bool init);
private:
//KlamavView *m_view;
@@ -156,6 +158,11 @@ private:
Sigtool *sigtool;
Aboutklamav *aboutklamav;
+ TDEPopupMenu *tabs_menu;
+ int showWelcomeTab;
+ int showQuarantineTab;
+ int showDBViewerTab;
+ int showEventsTab;
};
extern Klamav *tdemain;