You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ksystemlog/ksystemlog/src/ksystemlog.h

296 lines
6.7 KiB

/***************************************************************************
* Copyright (C) 2005 by Nicolas Ternisien *
* nicolas.ternisien@gmail.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#ifndef KSYSTEM_LOG_H
#define KSYSTEM_LOG_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
//TQt includes
#include <tqlistview.h>
#include <tqvaluevector.h>
//KDE includes
#include <kapplication.h>
#include <kmainwindow.h>
#include <kconfig.h>
#include <ktabwidget.h>
#include <kactionclasses.h>
#include <kpopupmenu.h>
//For compatibility with old versions of KDE
#include <kdeversion.h>
//Project includes
#include "detailDialog.h"
#include "logLevel.h"
#include "logManager.h"
#include "loadingDialog.h"
#include "findManager.h"
#include "globals.h"
//Include the right header for the management of Log Action clicking, depending of the version of KDE
#if defined(KDE_MAKE_VERSION) && (TDE_VERSION >= KDE_MAKE_VERSION(3,4,0))
#include "slotLogAction.h"
#else
#include "slotLogActionCompatibility.h"
#endif
#define STATUS_BAR_LINE_COUNT 1
#define STATUS_BAR_LAST_MODIFICATION 2
class LogFile;
typedef TQValueList<LogFile*> LogFiles;
class KPrinter;
class KToggleAction;
class KURL;
/**
* This class serves as the main window for ksystemlog. It handles the
* menus, toolbars, and status bars.
*
* @short Main window class
* @author Nicolas Ternisien <nicolas.ternisien@gmail.com>
* @version 0.1
*/
class KSystemLog : public KMainWindow {
Q_OBJECT
TQ_OBJECT
public:
/**
* Default Constructor
*/
KSystemLog();
/**
* Default Destructor
*/
virtual ~KSystemLog();
groupByType getGroupBy(int& column);
int getIndex(LogManager* manager);
/**
* Specialized methods about LogManagers
* TODO Maybe move them to a dedicated LogManagers class
* (which can subclass TQValueList<LogManager*>)
*/
LogManager* activeLogManager();
void setCurrentLogManager(LogManager* view);
#if defined(KDE_MAKE_VERSION) && TDE_VERSION >= KDE_MAKE_VERSION(3,4,0)
//Actual KDE method
void logActionClicked(const TQObject* sender, KAction::ActivationReason reason, TQt::ButtonState state);
#else
//Method for old versions of KDE
void logActionClicked(const TQObject* sender);
#endif
void load(LogMode* logMode, LogManager* manager);
protected:
/**
* Overridden virtuals for TQt drag'n drop (XDND)
*/
virtual void dragEnterEvent(TQDragEnterEvent *event);
virtual void dropEvent(TQDropEvent *event);
protected:
/**
* This function is called when it is time for the app to save its
* properties for session management purposes.
*/
void saveProperties(KConfig *);
/**
* This function is called when this app is restored. The KConfig
* object points to the session management config file that was saved
* with @ref saveProperties
*/
void readProperties(KConfig *);
void setupLogLevels();
private slots:
void fileOpen();
void filePrint();
void slotOptions();
public slots:
void changeStatusbar(const TQString& text);
void changeCaption(const TQString& text);
void changeTab(View* view, const TQString& label);
void changeTab(View* view, const TQIconSet& icon, const TQString& label);
void updateStatusBar();
void updateGUI();
void logUpdated(int lines);
void slotSelectAll();
void slotToggleFilterBar();
void slotLogMessage();
void reloadCurrent();
void reloadAll();
LogManager* newTab();
LogManager* duplicateTab();
void closeTab();
void moveTabLeft();
void moveTabRight();
void logManagerReloaded();
void currentTabChanged(TQWidget* view);
void slotTooltipEnabled(bool enabled);
void slotNewLinesDisplayed(bool displayed);
void slotSelectionChanged(); //replace void logListSelectionChanged();
void slotDetails();
void groupByChanged(int group);
void pauseParsing();
void resumeParsing();
void quit();
private:
//Object managing the signals come from the selection of a Log Mode
SlotLogAction* slotLogAction;
/**
* Get the Log Action called name from actionCollection()
*/
KToggleAction* getLogAction(const char* name);
KToggleAction* getCorrespondingLogAction(LogMode* mode);
void setupStatusBar();
void setupTabBar();
void setupProgressDialog();
void setupGroupBy();
void setupActions();
void setupLogActions();
void readConfig();
void saveConfig();
void deactiveLogActions();
void updateGroupBy();
LogManagers logManagers;
KPrinter* printer;
KAction* newTabAction;
KAction* closeTabAction;
KAction* duplicateTabAction;
KAction* moveTabLeftAction;
KAction* moveTabRightAction;
KAction* saveAction;
KAction* copyAction;
KAction* sendMailAction;
KAction* logMessageAction;
KToggleAction* filterBarAction;
KAction* reloadAction;
KAction* expandAllAction;
KAction* collapseAllAction;
KAction* resumeParsingAction;
KAction* pauseParsingAction;
KAction* detailAction;
KToggleAction* tooltipEnabledAction;
KToggleAction* newLinesDisplayedAction;
/**
* The Group By Action Menu
*/
KActionMenu* groupBy;
/**
* A pointer to the Detail dialog
*/
DetailDialog* detailDialog;
/**
* Loading Dialog
*/
LoadingDialog* loadingDialog;
/**
* Find Manager
*/
FindManager* findManager;
/**
* The tab widget managing different views
*/
KTabWidget* tabs;
TQMap<KToggleAction*, LogMode*> mapActionLogModes;
};
#endif //KSYSTEM_LOG_H