tsutils.h

Go to the documentation of this file.
00001 // OSB library ************************************************ -*- C++ -*-
00006 /*
00007   AUTHOR(S): Stephan Broennimann (vb)
00008 
00009   RCS information
00010    $Name: OSB_060808 $
00011    $Revision: 1.24 $
00012 
00013   License
00014    OSB rating and billing library for communication networks
00015    Copyright (C) 2004, 2005, 2006  OSB systems
00016 
00017    This file may be distributed and/or modify under the terms of the
00018    GNU General Public License (GPL) as published by the Free Software
00019    Foundation which is provided in the file LICENSE.GPL included in the
00020    packaging of this file.
00021 
00022    The file is distributed in the hope that it will be useful, but WITHOUT
00023    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00024    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00025    for more details.
00026 
00027    Holders of a OSB Commercial License may use this file under the terms
00028    and conditions of this commercial license.
00029  */
00030 #ifndef _TSUTILS_H_
00031 #define _TSUTILS_H_
00032 
00033 // ************************************************************************
00034 // included header files
00035 // + standard includes
00036 #include <map>
00037 
00038 // + libraries
00039 #include <osbid.h>
00040 #include <qtabwidget.h>
00041 #include <qlistview.h>
00042 
00043 // + local headers
00044 #include "osbcombos.h"
00045 #include "osbdlgbase.h"
00046 #include "tautils.h"
00047 
00048 // ************************************************************************
00049 // class declarations
00050 namespace OSB_LIB {
00051     class TariffSystem;
00052     class TsVersion;
00053     class ScSystem;
00054 
00055     class ServiceClass;
00056     class TcSystem;
00057     typedef std::map< Id<ServiceClass>, Id<TcSystem> > ScTcsCfg;
00058 
00059     class TariffClass;
00060     class TpSystem;
00061     typedef std::map< Id<TariffClass>, Id<TpSystem> > TcTpsCfg;
00062 
00063     class TariffPeriod;
00064     class Tariff;
00065     typedef std::pair< Id<TariffClass>, Id<TariffPeriod> > TcTp;
00066     typedef std::map< TcTp, Id<Tariff> > TcTpTariff;
00067 }
00068 namespace OSB_GUI {
00069     class ToVsHead;
00070 }
00071 // Qt
00072 class QCheckBox;
00073 class QFrame;
00074 class QHBoxLayout;
00075 class QLabel;
00076 class QListView;
00077 class QPushButton;
00078 class QSpacerItem;
00079 class QVBoxLayout;
00080 
00081 // ************************************************************************
00082 // namespace extensions
00083 namespace OSB_GUI {
00084 
00085 // ************************************************************************
00086 // forward declarations
00087     class TsVsGeneral;
00088     class TsScCfg;
00089     class TsTcCfg;
00090     class TsTfCfg;
00091 
00092 // ************************************************************************
00093 // type definitions
00094 
00095 // ************************************************************************
00096 // class definitions
00100     class TsVsCfg : public QTabWidget {
00101         Q_OBJECT                        // for vim ->;
00102     public:
00104         explicit TsVsCfg(
00105                   QWidget* parent,
00106             const char*    name   = "tsVsCfg_",
00107                   WFlags   flags  = 0
00108         );
00110         void languageChange();
00112         void addGeneralInfo(
00113             ToVsHead* generalInfo
00114         );
00121         void display(
00122             const OSB_LIB::TsVersion& tsVs,
00123                   bool                showOnly
00124         );
00130         void setEditedTsVs(OSB_LIB::TsVersion* tsVs);
00132         bool tsVsModified() const;
00133     private slots:
00135         void refreshCurrent();
00137         void bundledToggled(bool on);
00139         void setScs(
00140             const OSB_LIB::Id<OSB_LIB::ScSystem>& scsId
00141         );
00143         void setTcs(
00144             const OSB_LIB::ScTcsCfg& scTcsCfg
00145         );
00147         void setTps(
00148             const OSB_LIB::TcTpsCfg& tcTpsCfg
00149         );
00151         void setFlatTf(
00152             const OSB_LIB::TcTpTariff& tfCfg
00153         );
00155         void setBundledTf(
00156             const OSB_LIB::TcTpTariff& tfCfg
00157         );
00158     private:
00160         OSB_LIB::TsVersion* tsVs_;
00162         bool tsVsModified_;
00164         TsVsGeneral* general_;
00166         TsScCfg* scCfg_;
00168         TsTcCfg* tcCfg_;
00170         TsTfCfg* flatCfg_;
00172         TsTfCfg* bundledCfg_;
00173     };                                  // class TsVsCfg
00174 
00179     class TsVsGeneral : public QWidget {
00181         friend class TsVsCfg;
00182     public:
00184         explicit TsVsGeneral(
00185                   QWidget* parent,
00186             const char*    name,
00187                   WFlags   flags   = 0
00188         );
00189     public:
00191         void languageChange();
00197         void setup(bool showOnly);
00203         void display(
00204             const OSB_LIB::TsVersion& tsVs
00205         );
00206     private:
00208         QCheckBox* cbBundled_;
00210         QFrame* lineBundled_;
00212         QSpacerItem* spGeneral_;
00214         QVBoxLayout* layout_;
00215     };                                  // class TsVsGeneral
00216 
00221     class LvTsScCfg : public QListView {
00222         Q_OBJECT                        // for vim ->;
00223         // listview item to use: declaration below
00224         class Item;
00225     public:
00227         explicit LvTsScCfg(
00228                   QWidget* parent,
00229             const char*    name   = "lvTsScCfg_",
00230                   WFlags   flags  = 0
00231         );
00232     public:
00234         void languageChange();
00236         void display(
00237             const OSB_LIB::ScTcsCfg& scCfg
00238         );
00240         void setEditable(bool on);
00248         int selectedCfgs();
00249     signals:
00256         void tcsChanged(
00257             const OSB_LIB::ScTcsCfg& scTcsCfg
00258         );
00259     private slots:
00261         void selectTcs();
00262     private:
00269         Item* selectedCfg();
00271         void setTcs(
00272             const OSB_LIB::TcSystem& tcs
00273         );
00274         void clearTcs();
00275     private:
00277         bool editable_;
00278     };                                  // class LvTsScCfg
00279 
00284     class LvTsScCfg::Item : public QListViewItem {
00285     private:
00287         typedef OSB_LIB::Id<OSB_LIB::ServiceClass> ScId;
00289         typedef OSB_LIB::Id<OSB_LIB::TcSystem> TcsId;
00290     public:
00292         Item(
00293                   QListView*             parent,
00294             const OSB_LIB::ServiceClass& sc
00295         );
00300         Item(
00301                   QListView*             parent,
00302             const OSB_LIB::ServiceClass& sc,
00303             const OSB_LIB::TcSystem&     tcs
00304         );
00306         const OSB_LIB::Id<OSB_LIB::ServiceClass> scId() const;
00312         const OSB_LIB::Id<OSB_LIB::TcSystem> tcsId() const;
00314         void setTcs(
00315             const OSB_LIB::TcSystem& tcs
00316         );
00318         void clearTcs();
00319     private:
00321         int compare(
00322             QListViewItem* item,
00323             int            col,
00324             bool           asc
00325         ) const;
00326     private:
00328         ScId scId_;
00330         TcsId tcsId_;
00331     };                                  // class LvTsScCfg::Item
00332 
00337     class TsScCfg : public QWidget {
00338         Q_OBJECT                        // for vim ->;
00340         friend class TsVsCfg;
00341     public:
00343         explicit TsScCfg(
00344                   QWidget* parent,
00345             const char*    name,
00346                   WFlags   flags   = 0
00347         );
00348     public:
00350         void languageChange();
00356         void setup(bool showOnly);
00362         void display(
00363             const OSB_LIB::TsVersion& tsVs
00364         );
00365     signals:
00371         void scsChanged(const OSB_LIB::Id<OSB_LIB::ScSystem>& scsId);
00372     private slots:
00378         void selectScs();
00383         void setPbTcs();
00384     private:
00386         OSB_LIB::Id<OSB_LIB::ScSystem> scsId_;
00388         QLabel* tlScs_;
00390         QLineEdit* leScs_;
00392         LvTsScCfg* lvScTcs_;
00394         QPushButton* pbScs_;
00396         QPushButton* pbTcs_;
00398         QSpacerItem* spPb_;
00400         QHBoxLayout* loScs_;
00402         QHBoxLayout* loPb_;
00404         QVBoxLayout* layout_;
00405     };                                  // class TsScCfg
00406 
00411     class LvTsTcCfg : public QListView {
00412         Q_OBJECT                        // for vim ->;
00413         // listview item to use: declaration below
00414         class Item;
00415     public:
00417         explicit LvTsTcCfg(
00418                   QWidget* parent,
00419             const char*    name   = "lvTsTcCfg_",
00420                   WFlags   flags  = 0
00421         );
00422     public:
00424         void languageChange();
00426         void display(
00427             const OSB_LIB::TcTpsCfg& tcCfg
00428         );
00430         void setEditable(bool on);
00432         int selectedCfgs();
00433     signals:
00440         void tpsChanged(
00441             const OSB_LIB::TcTpsCfg& tcTpsCfg
00442         );
00443     private slots:
00445         void selectTps();
00446     private:
00453         Item* selectedCfg();
00455         void setTps(
00456             const OSB_LIB::TpSystem& tps
00457         );
00458         void clearTps();
00459     private:
00461         bool editable_;
00462     };                                  // class LvTsTcCfg
00463 
00468     class LvTsTcCfg::Item : public QListViewItem {
00469     private:
00471         typedef OSB_LIB::Id<OSB_LIB::TariffClass> TcId;
00473         typedef OSB_LIB::Id<OSB_LIB::TpSystem> TpsId;
00474     public:
00476         Item(
00477                   QListView*            parent,
00478             const OSB_LIB::TariffClass& tc
00479         );
00484         Item(
00485                   QListView*            parent,
00486             const OSB_LIB::TariffClass& tc,
00487             const OSB_LIB::TpSystem&    tps
00488         );
00490         const OSB_LIB::Id<OSB_LIB::TariffClass> tcId() const;
00496         const OSB_LIB::Id<OSB_LIB::TpSystem> tpsId() const;
00498         void setTps(
00499             const OSB_LIB::TpSystem& tps
00500         );
00502         void clearTps();
00503     private:
00505         int compare(
00506             QListViewItem* item,
00507             int            col,
00508             bool           asc
00509         ) const;
00510     private:
00512         TcId tcId_;
00514         TpsId tpsId_;
00515     };                                  // class LvTsTcCfg::Item
00516 
00521     class TsTcCfg : public QWidget {
00522         Q_OBJECT                        // for vim ->;
00524         friend class TsVsCfg;
00525     public:
00527         explicit TsTcCfg(
00528                   QWidget* parent,
00529             const char*    name,
00530                   WFlags   flags   = 0
00531         );
00533         void languageChange();
00539         void setup(bool showOnly);
00545         void display(
00546             const OSB_LIB::TsVersion& tsVs
00547         );
00548     private slots:
00553         void setPbTps();
00554     private:
00556         LvTsTcCfg* lvTcTps_;
00558         QPushButton* pbTps_;
00560         QSpacerItem* spPb_;
00562         QHBoxLayout* loPb_;
00564         QVBoxLayout* layout_;
00565     };                                  // class TsTcCfg
00566 
00571     class LvTsTfCfg : public QListView {
00572         Q_OBJECT                        // for vim ->;
00573         // listview item to use: declaration below
00574         class Item;
00575     public:
00577         explicit LvTsTfCfg(
00578                   QWidget* parent,
00579             const char*    name   = "lvTsTfCfg_",
00580                   WFlags   flags  = 0
00581         );
00582     public:
00584         void languageChange();
00586         void display(
00587             const OSB_LIB::TcTpTariff& tfCfg
00588         );
00590         void setEditable(bool on);
00592         int selectedCfgs();
00593     signals:
00600         void tfChanged(
00601             const OSB_LIB::TcTpTariff& tfCfg
00602         );
00603     private slots:
00605         void selectTf();
00606     private:
00613         Item* selectedCfg();
00615         void setTf(
00616             const OSB_LIB::Tariff& tf
00617         );
00618         void clearTf();
00619     private:
00621         bool editable_;
00622     };                                  // class LvTsTfCfg
00623 
00628     class LvTsTfCfg::Item : public QListViewItem {
00629     private:
00631         typedef OSB_LIB::Id<OSB_LIB::TariffClass> TcId;
00633         typedef OSB_LIB::Id<OSB_LIB::TariffPeriod> TpId;
00635         typedef OSB_LIB::Id<OSB_LIB::Tariff> TfId;
00636     public:
00638         Item(
00639                   QListView*             parent,
00640             const OSB_LIB::TariffClass&  tc,
00641             const OSB_LIB::TariffPeriod& tp
00642         );
00647         Item(
00648                   QListView*             parent,
00649             const OSB_LIB::TariffClass&  tc,
00650             const OSB_LIB::TariffPeriod& tp,
00651             const OSB_LIB::Tariff&       tf
00652         );
00654         const OSB_LIB::Id<OSB_LIB::TariffClass> tcId() const;
00656         const OSB_LIB::Id<OSB_LIB::TariffPeriod> tpId() const;
00662         const OSB_LIB::Id<OSB_LIB::Tariff> tfId() const;
00664         void setTf(
00665             const OSB_LIB::Tariff& tf
00666         );
00668         void clearTf();
00669     private:
00671         int compare(
00672             QListViewItem* item,
00673             int            col,
00674             bool           asc
00675         ) const;
00676     private:
00678         TcId tcId_;
00680         TpId tpId_;
00682         TfId tfId_;
00683     };                                  // class LvTsTfCfg::Item
00684 
00689     class TsTfCfg : public QWidget {
00690         Q_OBJECT                        // for vim ->;
00692         friend class TsVsCfg;
00693     public:
00695         explicit TsTfCfg(
00696                   QWidget* parent,
00697             const char*    name,
00698                   WFlags   flags   = 0
00699         );
00701         void languageChange();
00707         void setup(bool showOnly);
00713         void display(
00714             const OSB_LIB::TcTpTariff& tfCfg
00715         );
00716     private slots:
00721         void setPbTf();
00722     private:
00724         LvTsTfCfg* lvTfCfg_;
00726         QPushButton* pbTf_;
00728         QSpacerItem* spPb_;
00730         QHBoxLayout* loPb_;
00732         QVBoxLayout* layout_;
00733     };                                  // class TsTfCfg
00734 
00738     class LvScSystem : public QListView {
00739         // Listview item.
00740         class Item;
00741     public:
00743         explicit LvScSystem(
00744                   QWidget* parent,
00745             const char*    name  = "lvScSystem_",
00746                   WFlags   flags = 0
00747         );
00749         void languageChange();
00751         void populate();
00758         const OSB_LIB::Id<OSB_LIB::ScSystem> scsId() const;
00765         void setScs(const OSB_LIB::Id<OSB_LIB::ScSystem>& scsId);
00766     };                                  // class LvScSystem
00767 
00771     class LvScSystem::Item : public QListViewItem {
00772     public:
00774         Item(
00775                   QListView*         parent,
00776             const OSB_LIB::ScSystem& scs
00777         );
00779         const OSB_LIB::Id<OSB_LIB::ScSystem> scsId() const;
00780     private:
00782         OSB_LIB::Id<OSB_LIB::ScSystem> scsId_;
00783     };
00784 
00788     class DlgScsSelect : public DlgBase {
00789     public:
00791         DlgScsSelect(
00792                   QWidget* parent,
00793             const char*    name  = "DlgScsSelect",
00794                   bool     modal = false,
00795                   WFlags   flags = 0
00796         );
00797     public:
00799         void languageChange();
00806         int exec(const OSB_LIB::Id<OSB_LIB::ScSystem> scsId);
00813         const OSB_LIB::Id<OSB_LIB::ScSystem> scsId() const;
00814     private:
00816         LvScSystem* lv_;
00817     };                                  // class DlgScsSelect
00818 
00822     class LvTcSystem : public QListView {
00823         // Listview item.
00824         class Item;
00825     public:
00827         explicit LvTcSystem(
00828                   QWidget* parent,
00829             const char*    name  = "lvTcSystem_",
00830                   WFlags   flags = 0
00831         );
00833         void languageChange();
00835         void populate();
00842         const OSB_LIB::Id<OSB_LIB::TcSystem> tcsId() const;
00849         void setTcs(const OSB_LIB::Id<OSB_LIB::TcSystem>& tcsId);
00850     };                                  // class LvTcSystem
00851 
00855     class LvTcSystem::Item : public QListViewItem {
00856     public:
00858         Item(
00859                   QListView*         parent,
00860             const OSB_LIB::TcSystem& tcs
00861         );
00863         const OSB_LIB::Id<OSB_LIB::TcSystem> tcsId() const;
00864     private:
00866         OSB_LIB::Id<OSB_LIB::TcSystem> tcsId_;
00867     };
00868 
00872     class DlgTcsSelect : public DlgBase {
00873     public:
00875         DlgTcsSelect(
00876                   QWidget* parent,
00877             const char*    name  = "DlgTcsSelect",
00878                   bool     modal = false,
00879                   WFlags   flags = 0
00880         );
00881     public:
00883         void languageChange();
00890         int exec(const OSB_LIB::Id<OSB_LIB::TcSystem> tcsId);
00897         const OSB_LIB::Id<OSB_LIB::TcSystem> tcsId() const;
00898     private:
00900         LvTcSystem* lv_;
00901     };                                  // class DlgTcsSelect
00902 
00906     class LvTpSystem : public QListView {
00907         // Listview item.
00908         class Item;
00909     public:
00911         explicit LvTpSystem(
00912                   QWidget* parent,
00913             const char*    name  = "lvTpSystem_",
00914                   WFlags   flags = 0
00915         );
00917         void languageChange();
00919         void populate();
00926         const OSB_LIB::Id<OSB_LIB::TpSystem> tpsId() const;
00933         void setTps(const OSB_LIB::Id<OSB_LIB::TpSystem>& tpsId);
00934     };                                  // class LvTpSystem
00935 
00939     class LvTpSystem::Item : public QListViewItem {
00940     public:
00942         Item(
00943                   QListView*         parent,
00944             const OSB_LIB::TpSystem& tps
00945         );
00947         const OSB_LIB::Id<OSB_LIB::TpSystem> tpsId() const;
00948     private:
00950         OSB_LIB::Id<OSB_LIB::TpSystem> tpsId_;
00951     };
00952 
00956     class DlgTpsSelect : public DlgBase {
00957     public:
00959         DlgTpsSelect(
00960                   QWidget* parent,
00961             const char*    name  = "DlgTpsSelect",
00962                   bool     modal = false,
00963                   WFlags   flags = 0
00964         );
00965     public:
00967         void languageChange();
00974         int exec(const OSB_LIB::Id<OSB_LIB::TpSystem> tpsId);
00981         const OSB_LIB::Id<OSB_LIB::TpSystem> tpsId() const;
00982     private:
00984         LvTpSystem* lv_;
00985     };                                  // class DlgTpsSelect
00986 
00990     class LvTariff : public QListView {
00991         // Listview item.
00992         class Item;
00993     public:
00995         explicit LvTariff(
00996                   QWidget* parent,
00997             const char*    name  = "lvTariff_",
00998                   WFlags   flags = 0
00999         );
01001         void languageChange();
01003         void populate();
01010         const OSB_LIB::Id<OSB_LIB::Tariff> tfId() const;
01017         void setTf(const OSB_LIB::Id<OSB_LIB::Tariff>& tfId);
01018     };                                  // class LvTariff
01019 
01023     class LvTariff::Item : public QListViewItem {
01024     public:
01026         Item(
01027                   QListView*         parent,
01028             const OSB_LIB::Tariff& tf
01029         );
01031         const OSB_LIB::Id<OSB_LIB::Tariff> tfId() const;
01032     private:
01034         OSB_LIB::Id<OSB_LIB::Tariff> tfId_;
01035     };
01036 
01040     class DlgTfSelect : public DlgBase {
01041     public:
01043         DlgTfSelect(
01044                   QWidget* parent,
01045             const char*    name  = "DlgTfSelect",
01046                   bool     modal = false,
01047                   WFlags   flags = 0
01048         );
01049     public:
01051         void languageChange();
01058         int exec(const OSB_LIB::Id<OSB_LIB::Tariff> tfId);
01065         const OSB_LIB::Id<OSB_LIB::Tariff> tfId() const;
01066     private:
01068         LvTariff* lv_;
01069     };                                  // class DlgTfSelect
01070 
01072     typedef ValueCombo< OSB_LIB::Id2<OSB_LIB::TsVersion> > CmbTsVsBase;
01073 
01077     class CmbTsVersion : public CmbTsVsBase {
01078     public:
01080         explicit CmbTsVersion(
01081                   QWidget* parent,
01082             const char*    name = "cmbTs_"
01083         );
01084     public:
01093         void populate(
01094             const OSB_LIB::Id<OSB_LIB::TariffSystem>& tsId
01095         );
01096     };
01097 
01102     class TsVsStatusProxy : public ToCfgTsStatusProxy {
01103     public:
01109         explicit TsVsStatusProxy(
01110             OSB_LIB::TsVersion& tsVs
01111         );
01113         TsVsStatusProxy& operator=(const TsVsStatusProxy&);
01114     public:
01116         OSB_LIB::ToCfgTsBase& toCfgTs();
01121         void setStatus(
01122             OSB_LIB::CfgStatus  newStatus,
01123             OSB_LIB::OsbErrors& errors
01124         );
01125         // documentation from base
01126         bool setReleaseTs(
01127             const OSB_LIB::DateTime&  ts,
01128                   OSB_LIB::OsbErrors& errors
01129         );
01130     private:
01132         OSB_LIB::TsVersion& tsVs_;
01133     };                                  // class TsVsStatusProxy
01134 
01135 }                                       // namespace OSB_GUI
01136 
01137 // ************************************************************************
01138 // inline definitions
01139 namespace OSB_GUI {
01140 }                                       // namespace OSB_GUI
01141 #endif                                  // #ifndef _TSUTILS_H_

Generated on Sat Sep 2 14:17:37 2006 for OSB Library by  doxygen 1.4.7