/***************************************************************************
kuninstaller.cpp - Source file of class KUninstallerApp
------------------------------------------------------------------------
begin : Wed Mar 10 08:47:08 MET 1999
copyright : (C) 1999 by Geri House
email : ge_ha@yahoo.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. *
* *
***************************************************************************/
#include <qlabel.h>
#include <qlistbox.h>
#include <qcombo.h>
#include <kseparator.h>
#include "kuninstaller.h"
#include "kuninstalleroption.h"
KUninstallerApp::KUninstallerApp()
{
setCaption("KUninstaller " VERSION);
///////////////////////////////////////////////////////////////////
// read the config file options
readOptions();
///////////////////////////////////////////////////////////////////
// call inits to invoke all other construction parts
initMenuBar();
initToolBar();
initStatusBar();
initView();
if (view->isSaveUninstalling()==true)
enableCommand(ID_BACKUP);
///////////////////////////////////////////////////////////////////
// enable bars dependend on config file setups
if (!bViewToolbar)
enableToolBar(KToolBar::Hide,0);
if (!bViewStatusbar)
enableStatusBar(KStatusBar::Hide);
menuBar()->setMenuBarPos(menu_bar_pos);
toolBar()->setBarPos(tool_bar_pos);
///////////////////////////////////////////////////////////////////
// disable menu and toolbar items at startup
// resize( 400, 460 );
}
KUninstallerApp::~KUninstallerApp()
{
}
void KUninstallerApp::enableCommand(int id_)
{
///////////////////////////////////////////////////////////////////
// enable menu and toolbar functions by their ID's
menuBar()->setItemEnabled(id_,true);
toolBar()->setItemEnabled(id_,true);
}
void KUninstallerApp::disableCommand(int id_)
{
///////////////////////////////////////////////////////////////////
// disable menu and toolbar functions by their ID's
menuBar()->setItemEnabled(id_,false);
toolBar()->setItemEnabled(id_,false);
}
void KUninstallerApp::initMenuBar()
{
///////////////////////////////////////////////////////////////////
// MENUBAR
///////////////////////////////////////////////////////////////////
// menuBar entry file_menu
file_menu = new QPopupMenu();
file_menu->insertItem(Icon("mini/kuninstallerapp.xpm"), i18n("New &Window"), ID_FILE_NEW_WINDOW );
file_menu->insertSeparator();
file_menu->insertItem(Icon("fileprint.xpm"), i18n("&Print"), ID_FILE_PRINT );
file_menu->insertSeparator();
file_menu->insertItem(i18n("C&lose Window"), ID_FILE_CLOSE_WINDOW);
file_menu->insertSeparator();
file_menu->insertItem(Icon("exit.xpm"), i18n("E&xit"), ID_FILE_QUIT );
// file_menu key accelerators
file_menu->setAccel(CTRL+Key_P, ID_FILE_PRINT);
file_menu->setAccel(CTRL+Key_Q, ID_FILE_QUIT);
///////////////////////////////////////////////////////////////////
// menuBar entry edit_menu
edit_menu = new QPopupMenu();
edit_menu->insertItem(Icon("search.xpm"), i18n("&Search"), ID_SEARCH);
edit_menu->insertItem(Icon("stop.xpm"), i18n("S&top"), ID_STOP);
edit_menu->insertItem(Icon("delete.xpm"), i18n("&Remove"), ID_REMOVE);
edit_menu->insertItem(Icon("reload.xpm"), i18n("&Wipe off"), ID_NEW);
edit_menu->insertSeparator();
edit_menu->insertItem(Icon("undo.xpm"), i18n("&Undo Remove"), ID_UNDO);
edit_menu->insertSeparator();
edit_menu->insertItem(Icon("configure.xpm"), i18n("&Configuration"), ID_CONFIGURE);
edit_menu->insertItem(Icon("mini/kfm_fulltrash.xpm"), i18n("&Delete Backups"), ID_BACKUP);
edit_menu->setItemEnabled(ID_REMOVE, FALSE);
edit_menu->setItemEnabled(ID_NEW, FALSE);
edit_menu->setItemEnabled(ID_UNDO, FALSE);
edit_menu->setItemEnabled(ID_STOP, FALSE);
edit_menu->setItemEnabled(ID_BACKUP, FALSE);
///////////////////////////////////////////////////////////////////
// menuBar entry view_menu
view_menu = new QPopupMenu();
view_menu->setCheckable(true);
view_menu->insertItem(i18n("&Toolbar"), ID_VIEW_TOOLBAR);
view_menu->insertItem(i18n("&Statusbar"), ID_VIEW_STATUSBAR );
view_menu->setItemChecked(ID_VIEW_TOOLBAR, bViewToolbar);
view_menu->setItemChecked(ID_VIEW_STATUSBAR, bViewStatusbar);
///////////////////////////////////////////////////////////////////
// EDIT YOUR APPLICATION SPECIFIC MENUENTRIES HERE
///////////////////////////////////////////////////////////////////
// menuBar entry help_menu
help_menu = new QPopupMenu();
help_menu = kapp->getHelpMenu(true, i18n(IDS_APP_ABOUT));
///////////////////////////////////////////////////////////////////
// MENUBAR CONFIGURATION
// set menuBar() the current menuBar and the position due to config file
menuBar()->insertItem(i18n("&File"), file_menu);
menuBar()->insertItem(i18n("&Commands"), edit_menu);
menuBar()->insertItem(i18n("&View"), view_menu);
///////////////////////////////////////////////////////////////////
// INSERT YOUR APPLICATION SPECIFIC MENUENTRIES HERE
menuBar()->insertSeparator();
menuBar()->insertItem(i18n("&Help"), help_menu);
///////////////////////////////////////////////////////////////////
// CONNECT THE SUBMENU SLOTS WITH SIGNALS
CONNECT_CMD(file_menu);
CONNECT_CMD(edit_menu);
CONNECT_CMD(view_menu);
}
void KUninstallerApp::initToolBar()
{
///////////////////////////////////////////////////////////////////
// TOOLBAR
// set toolBar() the current toolBar and the position due to config file
toolBar()->insertButton(Icon("fileprint.xpm"), ID_FILE_PRINT, true, i18n("Print the List"));
toolBar()->insertLineSeparator();
toolBar()->insertButton(Icon("search.xpm"), ID_SEARCH, true, i18n("Search for Application"));
toolBar()->insertButton(Icon("stop.xpm"), ID_STOP, false, i18n("Stop searching"));
toolBar()->insertButton(Icon("delete.xpm"), ID_REMOVE, false, i18n("Remove Application"));
toolBar()->insertButton(Icon("reload.xpm"), ID_NEW, false, i18n("Wipe of search results"));
toolBar()->insertButton(Icon("undo.xpm"), ID_UNDO, false, i18n("Undo last Uninstalling"));
toolBar()->insertLineSeparator();
toolBar()->insertButton(Icon("configure.xpm"), ID_CONFIGURE, true, i18n("Configure application"));
toolBar()->insertButton(Icon("mini/kfm_fulltrash.xpm"), ID_BACKUP, false, i18n("Delete Backups"));
toolBar()->insertButton(Icon("exit.xpm"), ID_FILE_QUIT, true, i18n("Exit the Application"));
toolBar()->insertLineSeparator();
toolBar()->insertButton(Icon("help.xpm"), ID_HELP, SIGNAL(pressed()), kapp, SLOT(appHelpActivated()), true, i18n("Help"));
toolBar()->alignItemRight(ID_HELP);
toolBar()->alignItemRight(ID_FILE_QUIT);
///////////////////////////////////////////////////////////////////
// CONNECT THE TOOLBAR SLOTS WITH SIGNALS - add new created toolbars
CONNECT_TOOLBAR(toolBar());
}
void KUninstallerApp::initStatusBar()
{
///////////////////////////////////////////////////////////////////
//STATUSBAR
statusBar()->insertItem(IDS_DEFAULT, ID_STATUS_MSG );
statusBar()->setInsertOrder(KStatusBar::RightToLeft);
}
void KUninstallerApp::initView()
{
////////////////////////////////////////////////////////////////////
// set the main widget here
view = new KUninstallerView(kapp,this);
setView(view);
}
bool KUninstallerApp::queryExit()
{
int exit=KMsgBox::yesNo(this, i18n("Exit"), i18n("Really Quit ?"), KMsgBox::QUESTION);
if(exit==1)
return TRUE;
else
return FALSE;
}
void KUninstallerApp::resizeEvent( QResizeEvent *e) {
view->resizeEvent(e);
KTMainWindow::resizeEvent(e);
}
void KUninstallerApp::saveOptions()
{
KConfig *config = kapp->getConfig();
config->setGroup("APPEARANCE");
config->writeEntry("ShowToolbar",toolBar()->isVisible());
config->writeEntry("ShowStatusbar",statusBar()->isVisible());
config->writeEntry("MenuBarPos", (int)menuBar()->menuBarPos());
config->writeEntry("ToolBar_Pos", (int)toolBar()->barPos());
config->writeEntry("WindowSize", size());
view->saveOptions(config);
}
void KUninstallerApp::readOptions()
{
///////////////////////////////////////////////////////////////////
// read the config file entries
KConfig *config = kapp->getConfig();
config->setGroup("APPEARANCE");
bViewToolbar = config->readBoolEntry("ShowToolbar", true);
bViewStatusbar = config->readBoolEntry("ShowStatusbar", true);
menu_bar_pos = (KMenuBar::menuPosition)config->readNumEntry("MenuBarPos", KMenuBar::Top);
tool_bar_pos = (KToolBar::BarPosition)config->readNumEntry("ToolBar_Pos", KToolBar::Top);
QSize *s=new QSize(400,460);
resize(config->readSizeEntry("WindowSize", s));
view->readOptions(config);
}
/////////////////////////////////////////////////////////////////////
// SLOT IMPLEMENTATION
/////////////////////////////////////////////////////////////////////
void KUninstallerApp::slotFileNewWindow()
{
slotStatusMsg(i18n("Opening a new Application window..."));
(new KUninstallerApp)->show();
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotFilePrint()
{
slotStatusMsg(i18n("Printing..."));
QPrinter printer;
QStrList *strList=view->getTextForPrinting();
if (strList!=0 && printer.setup(this)) {
QPainter painter;
///////////////////////////////////////////////////////////////////
// TODO: Define printing by using the QPainter methods here
painter.begin( &printer );
painter.setFont( QFont("times", 12, QFont::Bold) );
char *str=strList->first();
painter.drawText( 50,30, str );
painter.setFont( QFont("times", 12) );
int i=1;
str=strList->next();
while(str!=0) {
painter.drawText( 70,30+i*20, str );
str=strList->next();
i++;
}
painter.end();
delete strList;
}
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotFileCloseWindow()
{
close();
}
void KUninstallerApp::slotFileQuit()
{
///////////////////////////////////////////////////////////////////
// exits the Application
if(queryExit()==TRUE) {
saveOptions();
KTMainWindow::deleteAll();
kapp->quit();
}
else
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotSearch() {
slotStatusMsg(i18n("Searching for Application parts..."));
enableCommand(ID_STOP);
disableCommand(ID_SEARCH);
if (view->search()!=0) {
enableCommand(ID_REMOVE);
enableCommand(ID_NEW);
}
disableCommand(ID_STOP);
enableCommand(ID_SEARCH);
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotNew() {
slotStatusMsg(i18n("Wipe off the Application parts..."));
view->wipeOff();
disableCommand(ID_REMOVE);
disableCommand(ID_NEW);
if (view->isSaveUninstalling()==true)
disableCommand(ID_UNDO);
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotUndo() {
slotStatusMsg(i18n("Undos the last removing Action..."));
view->undo();
if (view->isSaveUninstalling()==true)
disableCommand(ID_UNDO);
enableCommand(ID_NEW);
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotStop() {
slotStatusMsg(i18n("Stops searching for Application parts..."));
view->stop();
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotRemove() {
slotStatusMsg(i18n("Removing the Application parts..."));
if (view->remove()!=0) {
disableCommand(ID_REMOVE);
disableCommand(ID_NEW);
if (view->isSaveUninstalling()==true)
enableCommand(ID_UNDO);
}
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotConfigure() {
KUninstallerOption *dialog = new KUninstallerOption(0,"configure", true);
if (dialog->exec()==QDialog::Accepted) {
printf("QDialog::Accepted pressed \n");
KConfig *config = kapp->getConfig();
view->readOptions(config);
view->showBackupBox();
if (view->isSaveUninstalling()==true)
enableCommand(ID_BACKUP);
else
disableCommand(ID_BACKUP);
}
}
void KUninstallerApp::slotBackup() {
slotStatusMsg(i18n("Removing all Application Backups..."));
view->removeAllBackups();
disableCommand(ID_UNDO);
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotViewToolBar()
{
///////////////////////////////////////////////////////////////////
// turn Toolbar on or off
bViewToolbar=!bViewToolbar;
menuBar()->setItemChecked(ID_VIEW_TOOLBAR, bViewToolbar);
enableToolBar(KToolBar::Toggle,0);
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotViewStatusBar()
{
///////////////////////////////////////////////////////////////////
//turn Statusbar on or off
bViewStatusbar=!bViewStatusbar;
menuBar()->setItemChecked(ID_VIEW_STATUSBAR, bViewStatusbar);
enableStatusBar();
slotStatusMsg(IDS_DEFAULT);
}
void KUninstallerApp::slotStatusMsg(const char *text)
{
///////////////////////////////////////////////////////////////////
// change status message permanently
statusBar()->clear();
statusBar()->changeItem(text, ID_STATUS_MSG );
}
void KUninstallerApp::slotStatusHelpMsg(const char *text)
{
///////////////////////////////////////////////////////////////////
// change status message of whole statusbar temporary (text, msec)
statusBar()->message(text, 2000);
}
void KUninstallerApp::commandCallback(int id_){
switch (id_){
ON_CMD(ID_FILE_NEW_WINDOW, slotFileNewWindow())
ON_CMD(ID_FILE_PRINT, slotFilePrint())
ON_CMD(ID_FILE_CLOSE_WINDOW, slotFileCloseWindow())
ON_CMD(ID_FILE_QUIT, slotFileQuit())
ON_CMD(ID_SEARCH, slotSearch())
ON_CMD(ID_STOP, slotStop())
ON_CMD(ID_REMOVE, slotRemove())
ON_CMD(ID_NEW, slotNew())
ON_CMD(ID_UNDO, slotUndo())
ON_CMD(ID_CONFIGURE, slotConfigure())
ON_CMD(ID_BACKUP, slotBackup())
ON_CMD(ID_VIEW_TOOLBAR, slotViewToolBar())
ON_CMD(ID_VIEW_STATUSBAR, slotViewStatusBar())
}
}
void KUninstallerApp::statusCallback(int id_){
switch (id_){
ON_STATUS_MSG(ID_FILE_NEW_WINDOW, i18n("Opens a new application window"))
ON_STATUS_MSG(ID_FILE_PRINT, i18n("Prints the application list"))
ON_STATUS_MSG(ID_FILE_CLOSE_WINDOW, i18n("Closes the current window"))
ON_STATUS_MSG(ID_FILE_QUIT, i18n("Exits the program"))
ON_STATUS_MSG(ID_SEARCH, i18n("Searches for all application parts"))
ON_STATUS_MSG(ID_STOP, i18n("Stops searching for application"))
ON_STATUS_MSG(ID_REMOVE, i18n("Removes all selected application parts"))
ON_STATUS_MSG(ID_NEW, i18n("Wipes off the searching results"))
ON_STATUS_MSG(ID_UNDO, i18n("Undos the last Uninstalling action"))
ON_STATUS_MSG(ID_CONFIGURE, i18n("Configuration of the application"))
ON_STATUS_MSG(ID_BACKUP, i18n("Delete all Application Backups"))
ON_STATUS_MSG(ID_VIEW_TOOLBAR, i18n("Enables / disables the actual Toolbar"))
ON_STATUS_MSG(ID_VIEW_STATUSBAR, i18n("Enables / disables the Statusbar"))
}
}
Documentation generated by haeusler@stiegl on Fri Apr 16 09:31:32 MET DST 1999