michael@1: // michael@1: // OSSP asgui - Accounting system graphical user interface michael@3: // Copyright (c) 2002-2008 The OSSP Project (http://www.ossp.org/) michael@3: // Copyright (c) 2002-2008 Ralf S. Engelschall michael@3: // Copyright (c) 2002-2008 Michael Schloh von Bennewitz michael@3: // Copyright (c) 2002-2008 Cable & Wireless Telecommunications Services GmbH michael@1: // michael@1: // This file is part of OSSP asgui, an accounting system graphical user michael@3: // interface which can be found at http://asgui.europalab.com/. michael@1: // michael@1: // Permission to use, copy, modify, and distribute this software for michael@1: // any purpose with or without fee is hereby granted, provided that michael@1: // the above copyright notice and this permission notice appear in all michael@1: // copies. michael@1: // michael@1: // THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED michael@1: // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF michael@1: // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. michael@1: // IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR michael@1: // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, michael@1: // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT michael@1: // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF michael@1: // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND michael@1: // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, michael@1: // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT michael@1: // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF michael@1: // SUCH DAMAGE. michael@1: // michael@1: // as_gui.cpp: ISO C++ implementation michael@1: // michael@1: michael@1: // User interface michael@1: #include "as_gui.h" // Main classes michael@1: #include "as_except.h" // Exception classes michael@1: #include "as_table.h" // Class TiTable michael@1: #include "as_const.h" // Application constants michael@1: #include "as_pref.h" // Class Preferences michael@1: michael@3: //Added by qt3to4: michael@3: #include michael@3: michael@1: michael@1: // michael@1: // Construct a Titraqform which is a child of 'pParent', with the michael@1: // name 'kszName' and widget flags set to 'Flags' michael@1: // michael@3: Titraqform::Titraqform(QWidget *pParent, const char *kszName, Qt::WFlags Flags) : michael@3: Q3MainWindow(pParent, kszName, Flags) michael@1: { michael@1: // Early initializations michael@1: m_pFiletools = NULL; michael@1: m_pEdittools = NULL; michael@1: m_pViewtools = NULL; michael@1: m_pWhatstools = NULL; michael@1: m_szFilename = NULL; michael@1: michael@1: // Atenzione! Order is very important in the following sequence. michael@1: // FIXME: Reorganize this procedural mess into self contained objects michael@1: try { michael@1: setupPrefs(); // Load general preferences michael@1: setupActions(); // Create and initialize actions michael@1: setupMenubar(); // Create and initialize menu bar michael@1: setupToolbars(); // Create and initialize tool bars michael@1: setupCentralwidget(); // Format the layout of related widgets michael@1: setupStatusbar(); // Create and initialize status bar michael@1: setupTable(); // Create and initialize table and cells michael@1: setupEditlay(); // Create and initialize edit controls michael@1: setupColumns(); // Prepare columns for viewing, sorting michael@1: enableIface(false); // Start things off in a empty state michael@1: } michael@1: catch (Genexcept& Genex) { michael@1: Genex.reportErr(); michael@1: exit(1); michael@1: } michael@1: michael@1: // Postsetup manipulations michael@1: m_pMaintable->setDirty(false); michael@1: if (!kszName) michael@1: this->setName(trUtf8("ASGuiapp")); michael@1: this->resize(m_pPrefs->getNumber(TITRAQ_PREFFRAMEWIDTH, TITRAQ_DEFFRAMEWIDTH), michael@1: m_pPrefs->getNumber(TITRAQ_PREFFRAMEHEIGHT, TITRAQ_DEFFRAMEHEIGHT)); michael@1: connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(savePrefs())); michael@1: this->setCaption(QString(TITRAQ_APPTITLE) + ' ' + asgui_version.v_short); michael@1: michael@1: // Rehydrate main window layout and doc positions michael@1: QString Laystring = m_pPrefs->getString(TITRAQ_PREFFRAMELAY, NULL); // FIXME: Handle first case better michael@3: // Q3TextStream Laystream(&Laystring, QIODevice::ReadOnly); michael@3: // Laystream >> *this; michael@1: michael@1: // // Lock down window size michael@1: // setSizePolicy(QSizePolicy((QSizePolicy::SizeType)0, michael@1: // (QSizePolicy::SizeType)0, 0, 0, sizePolicy().hasHeightForWidth())); michael@1: } michael@1: michael@1: // michael@1: // Destroy the object and free any allocated resources michael@1: // michael@1: Titraqform::~Titraqform(void) michael@1: { michael@1: // Qt deletes child widgets for us michael@1: m_pPrefs->flush(); michael@1: delete m_pPrefs; michael@1: }